Když se člověk připojuje k webovému serveru a zobrazí se mu, že komunikace využívá protokol HTTPS (třeba vidí zámeček u spojení), tak má pocit, že jsou data bezpečně přenášena na server. Ale ono to nemusí být pravda, pokud není server správně nastaven nebo používáme starého klienta. Extrémem je, že může být použita šifra, která vůbec neprovádí šifrování (ač tato věta zní nesmyslně, tak takové skupiny šifer existují). Proto by se každý správce webového serveru měl této oblasti věnovat a informace se mohou hodit i uživatelům (existují různí klienti, kteří podporují novější protokoly, ale mají je defaultně vypnuté).
Druhou otázkou jsou různé zranitelnosti, kterých se v tomto roce objevilo několik velmi závažných. Ty mohou způsobit, že stará zašifrovaná data nejsou bezpečná, aktuální šifrování je prolomitelné nebo i budoucí data nejsou v bezpečí.
Pozn.: Když jsem měl již připraven tento článek, tak byla 14.10. 2014 zveřejněna nová zranitelnost protokolu SSL 3 označená jako POODLE. Doplnil jsem ji do článku, ale nepřepisoval jsem celek. Doporučuje se nyní protokol SSL 3 vypnout jako nebezpečný (ovlivnit by to mělo pouze klienta IE 6). V opačném případě se musí zvážit 3DES, AES (případně další) s CBC (zranitelnost BEAST, POODLE) vs RC4 (zranitelný). Problematiku zmiňuje třeba dokument This POODLE Bites: Exploiting The SSL3.0 Fallback. V souvislosti s POODLE útokem oznámil například Firefox, že nebude podporovat SSL 3 v dalších verzích.
Princip SSL/TLS a používané šifry
SSL/TLS vytváří šifrované stavové spojení (session), na začátku se provádí handshake, kdy si obě strany domluví parametry spojení (včetně šifry). Vždy se využívá certifikát na straně serveru (takže dochází i k ověření identity) a může se použít i klientský certifikát. Klient generuje pre-master secret (tajemství), které zašifruje veřejným klíčem z certifikátu serveru a odešle. Zde se tedy využívá asymetrická kryptografie (šifrování s veřejným klíčem) a rozšifrovat data může pouze server, který vlastní privátní klíč.
Klient i server provedou definovanou sérii kroků nad pre-master secret a tím vytvoří master secret. Na něj aplikují dohodnutou hashovací funkci a vytvoří session key, což je symetrický klíč, který se používá pro šifrování a dešifrování spojení (session). Vlastní komunikace se tedy šifruje pomocí symetrické kryptografie s využitím session key.
Protokoly
RFC v současnosti definuje protokoly SSL 2, SSL 3, TLS 1.0, TLS 1.1, TLS 1.2. SSLv2 obsahuje několik bezpečnostních chyb, takže je již delší dobu považován za nebezpečný. Minimálně se má používat SSLv3 nebo jeho nástupce TLS. Doporučení je využít pouze TLSv1.1 a TLSv1.2, kde nehrozí útok BEAST a další. Jenže většina prohlížečů a aplikací podporuje defaultně nejvýše TLSv1.0. Podpora TLSv1.2 často k dispozici je, ale není zapnutá (třeba IE 9, 10, Java 7), defaultní podpora je až v nejnovějších verzích (IE11, Firefox 32, Android 4.4.2, Java 8, atd.). Novější verze protokolu přidávají podporu novějších šifer a naopak odstraňují ty nebezpečné.
Forward Secrecy
Z pohledu dnešní bezpečnosti je důležité zmínit vlastnost Key Exchange protokolů zvanou Forward Secrecy (FS) nebo Perfect Forward Secrecy (PFS). Jednoduše řečeno zajistí, že z privátního klíče serveru nelze odvodit staré session key. Pro každou session se použijí nové klíče (vytvořené nedeterministickým způsobem) a po ukončení se zahodí. Podrobnější popis třeba v českém článku Perfect forward secrecy.
Z používaných protokolů pro SSL/TLS podporuje Forward Secrecy pouze Diffie-Hellman Ephemeral (DHE) a Elliptic Curve Diffie-Hellman Ephemeral (ECDHE). Použití eliptických křivek je výhodnější, protože je méně výpočetně náročné.
Cipher Suite
Při použití SSL/TLS se používá určitá šifra (cipher), přesněji se domlouvá cipher suite (soubor šifer), tedy pojmenovaná kombinace autentizačních a šifrovacích algoritmů a (hash) autentizační kód (MAC - Message Authentication Code, něco jako hash funkce).
Každý Cipher Suite specifikuje několik algoritmů pro různé operace:
- Key Exchange - výměna (odsouhlasení) šifrovacích klíčů pro další komunikaci, úvodní kryptografie s veřejným klíčem, příklad RSA, Diffie-Hellman (DH, DHE, ECDH, ECDHE), PSK. Větší bezpečnost dosáhneme použitím algoritmu s podporou Forward secrecy, tedy DHE a ECDHE. Pro celkovou bezpečnost také záleží na veřejném klíči u X.509 certifikátu, délka klíče 1024 bitů (u RSA, DSA) se již nedoporučuje, pro podpis by se měl použít bezpečný hashovací algoritmus (ne MD5).
- Authentication - ověřování identity serveru (pokud se používá klientská autentizace, tak také identity klienta), příklad RSA, DSS, ECDSA, v zápisu se používá kombinace autentizace a výměny klíčů, pokud je oboje RSA, tak se zapisuje pouze jednou, například RSA, DH-RSA, ECDHE-RSA, ECDHE-ECDSA, DHE-DSS. Nezáleží pouze na povoleném algoritmu, ale také jaký je serverový certifikát (jeho klíče), to je nejčastěji RSA, pak se pro autentizaci může použít pouze RSA.
- Encryption - symetrické šifrování session, obsahuje také velikost klíče a délku inicializačních vektorů, příklad RC4, DES, 3DES, AES, Camellia, IDEA, RC2
- Message Authentication Code (MAC) - vytvoření hashe pro kontrolu integrity paketů a autentizace, příklad SHA, MD5, MD4, MD2 pro SSL, HMAC-MD5, HMAC-SHA1, HMAC-SHA256 pro TLS
Příklady Cipher Suite:
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_RSA_WITH_RC4_128_MD5 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA TLS_RSA_WITH_RC4_128_MD5 SSL2_RC4_128_WITH_MD5
Seznam všech možných šifer nalezneme na řadě míst, třeba Transport Layer Security (TLS) Parameters - TLS Cipher Suite Registry či TLS and SSL Cipher Suites. Využít můžeme i OpenSSL Ciphers.
Slabé šifry - Weak Ciphers
Šifry se dělí do tří kategorií podle kryptografické síly, jde o slabé (weak), střední (medium) a silné (strong). Jako slabé jsou považovány šifry, u kterých je možnost jejich prolomení v použitelném čase. Patrně neexistuje přesná definice, které šifry jsou slabé, navíc se jejich výčet mění díky novému HW a nacházení chyb. V současnosti se často používají následující pravidla.
Pozn.: V některých materiálech (třeba u Qualys SSL Labs) jsem narazil ještě na čtvrtou kategorii nedůvěryhodný (insecure), ta je ještě pod slabou šifrou.
Jeden z hlavních parametrů rozdělení je velikost šifrovacího klíče v bitech, vše s 64 bity a méně je slabé (protože je možno prolomit pomocí hrubé síly - brute force methods). DES využívá 56 bitový klíč, takže je celkově slabý. SSL verze 2 je považováno za slabé kvůli chybám. RC2 a RC4 mají zneužitelné slabiny, takže jsou slabé. Autentizace RSA s velikostí klíče 1024 bitů je považována za nebezpečnou a tedy slabou (může se využívat větší velikost klíče). Cipher Suites, které obsahují NULL (žádné šifrování) nebo EXPORT (malé klíče kvůli US export rules) jsou slabé.
MD5 se v poslední době přestává používat díky špatné pověsti, ale zatím není považováno za slabé. Nyní se také uvádí, že do budoucna bude minimální velikost šifrovacího klíče 128 bitů, takže i 3DES (používá 112 nebo 108 bitů) bude slabý. Kvůli aktuální zranitelnosti POODLE se začíná označovat celý protokol SSL verze 3 za slabý/nedůvěryhodný. Doporučení do budoucna je používat pouze TLS 1.1 a TLS 1.2 (ale pozor na podporu klientů).
V oblasti bezpečnosti a certifikátů se v září 2014 začalo hodně mluvit o přechodu od SHA-1 na SHA256. Veřejné certifikační autority začínají defaultně vystavovat certifikáty s SHA-2 a certifikát SHA-1 je možné vystavit pouze s omezenou platností. Stručný popis obsahuje článek SHA1 Deprecation: What You Need to Know.
Běžně se na webových serverech používají slabé šifry, je to částečně z důvodu kompatibility, i když dnes již jde o hodně historické aplikace, které to vyžadují. Takže se doporučuje upravit nastavení a slabé šifry blokovat.
Zranitelnosti - vulnerability
Mimo slabých šifer je další nebezpečí ve známých zranitelnostech knihoven či útocích na protokol. Některé slabé stránky algoritmů jsou známé dlouho dobu, ale teprve nedávno bylo objeveno, jak to prakticky využít. Této oblasti se zde příliš nevěnujeme, zde je výčet nejznámějších zranitelností spolu s možností, jak je obejít :
- Heartbleed bug (CVE-2014-0160) - chyba OpenSSL knihovny, aktualizovat na verzi OpenSSL bez této chyby
- OpenSSL CCS vulnerability (CVE-2014-0224) - chyba OpenSSL knihovny, aktualizovat na verzi OpenSSL bez této zranitelnosti
- BEAST (Browser Exploit Against SSL/TLS) - zranitelnost CBC (Cipher Block Chaining) v protokolech SSL a TLSv1.0, ve verzi TLSv1.1 byla odstraněna, postihuje všechny protokoly, které mají v názvu CBC, takže zbývá pouze RC4, řešení používat pouze TLSv1.1 a TLSv1.2 nebo pro SSL a TLSv1.0 použít RC4 (to není považováno za bezpečné), ochrana proti BEAST útoku se dnes nachází ve všech moderních prohlížečích (takže ji pak není tak nutné řešit na serveru)
- CRIME (Compression Ratio Info-leak Made Easy) - obecný útok, nepoužívat SSL kompresi
- BREACH (Browser Reconnaissance and Exfiltration via Adaptive Compression of Hypertext) - obdoba CRIME, možné pouze za speciálních podmínek, řešení nepoužívat HTTP kompresi
- RC4 - v roce 2013 byla objevena slabá místa algoritmu, doporučuje se nepoužívat
- POODLE (Padding Oracle On Downgraded Legacy Encryption - CVE-2014-3566) - obdoba jako BEAST, zranitelnost CBC pouze v SSL 3.0, doporučení je nepoužívat SSL 3, jinak použít pouze RC4
Bezpečnostní standardy
U slabých šifer jsme si uvedli různá doporučení, jak bezpečně nastavit protokol SSL/TLS. Samozřejmě vždy musíme mít v rovnováze bezpečnost a použitelnost, tedy aby se klienti mohli připojit. Existují i obecné standardy, když chceme být s nimi ve shodě, tak musíme dodržet určitá nastavení. Jde o PCI (Payment Card Industry) standardy, které se zaměřují na práci s kreditními kartami, a FIPS 140-2 (Federal Information Processing Standard), což jsou standardy vlády USA, které jsou relativně přísné.
Testování SSL/TLS na použité šifry
O tom, že máme na webovém serveru (nejčastější případ, ale může se jednat i o různé další služby) použity (nabízeny) slabé šifry se můžeme dozvědět z penetračních testů, které jsme si sami provedli (třeba Open Source nástroj OpenVAS) nebo získali od specializované firmy. Můžeme ale využít specializovaných nástrojů, které jsou buď jako aplikace nebo online služba (první dvě v následujícím seznamu), a ty nám provedou otestování. Tyto nástroje se označují různě jako SSL Audit, SSL Scan, SSL Test, apod.
Stručně si uvedeme některé používané aplikace. V tomto článku se zaměřujeme na použití slabých šifer u SSL/TLS protokolu (primárně pro web, ale i další služby). Řada testovacích aplikací provádí více kontrol SSL protokolu a ověřuje také známé zranitelnosti jako je Heartbleed bug, OpenSSL CCS vulnerability, BEAST attack, CRIME attack, RC4 attack.
Pozn.: Pro různé testy SSL a navázání spojení můžeme využít i OpenSSL (množností je mnoho), např. openssl s_client -connect www.google.com:443 -ssl3
Qualys SSL Labs - SSL Server Test
Velmi pěkná a užitečná online služba SSL Server Test nám zdarma otestuje SSL/TLS na web serveru a jeho bezpečnost ohodnotí známkou. Zobrazí informace o certifikátu (včetně toho, zda server poskytuje i certifikát autority), povolené protokoly a šifry (s řadou informací a označením slabých), testuje různé zranitelnosti a bezpečnostní vlastnosti protokolu, provádí emulaci různých prohlížečů a zařízení (dozvíme se, zda se mohou připojit a jaký protokol/šifru použijí).

XMPP IM Observatory
Další online služba, která se zaměřuje na bezpečnost Jabber komunikačních serverů (XMPP protokol) a mimo jiné zobrazí nabízené SSL/TLS šifry. Běží na adrese IM Observatory.
Network Mapper
Bezpečnostní skener NMAP, je nativní Linuxový nástroj, který byl portovaný i na Windows. Rychle zjistí základní informace o certifikátu a vypíše nabízené šifry spolu s klasifikací. Pro rychlé otestování jde o super nástroj. Umí testovat nejen HTTPS, ale i třeba SMTP a XMPP.
Pozn.: Výhoda také je, že můžeme použít jeden příkaz pro otestování řady serverů a portů. Oboje můžeme zapisovat pomocí seznamu hodnot či rozsahů (s pomlčkou) oddělených čárkou.
nmap --script ssl-cert,sslv2,ssl-enum-ciphers -p 443 www.google.com Starting Nmap 6.47 ( http://nmap.org ) at 2014-10-02 16:26 Central Europe Daylight Time Nmap scan report for www.google.com (74.125.24.104) Host is up (0.028s latency). Other addresses for www.google.com (not scanned): 74.125.24.105 74.125.24.103 74.125.24.147 74.125.24.99 74.125.24.106 rDNS record for 74.125.24.104: de-in-f104.1e100.net PORT STATE SERVICE 443/tcp open https | ssl-cert: Subject: commonName=www.google.com/organizationName=Google Inc/stateOrProvinceName=California/countryName=US | Issuer: commonName=Google Internet Authority G2/organizationName=Google Inc/countryName=US | Public Key type: rsa | Public Key bits: 2048 | Not valid before: 2014-09-24T09:48:54+00:00 | Not valid after: 2014-12-23T00:00:00+00:00 | MD5: 9aa9 d2b3 a059 fca1 a99d 64df 242d ba51 |_SHA-1: 510d 8d10 ab63 d42b e652 291e fc7f 4b19 7027 38ba | ssl-enum-ciphers: | SSLv3: | ciphers: | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong | TLS_ECDHE_RSA_WITH_RC4_128_SHA - strong | TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong | TLS_RSA_WITH_AES_128_CBC_SHA - strong | TLS_RSA_WITH_AES_256_CBC_SHA - strong | TLS_RSA_WITH_RC4_128_MD5 - strong | TLS_RSA_WITH_RC4_128_SHA - strong | compressors: | NULL | TLSv1.0: | ciphers: | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong ... Nmap done: 1 IP address (1 host up) scanned in 4.09 seconds
TestSSLServer
Nástroj TestSSLServer je maličký, napsaný v Javě a používá se z příkazové řádky. Pracuje rychle, zobrazí seznam podporovaných šifer, ohodnotí nejslabší šifru a testuje zranitelnosti BEAST a CRIME. Pokud se u protokolu píše idem
, znamená to, že hodnoty jsou stejné jako u předchozího. Pro rychlé výpisy seznamu šifer je dobrou volbou, bohužel pracuje pouze s HTTPS.
d:\>java -jar TestSSLServer.jar www.google.com 443 Supported versions: SSLv3 TLSv1.0 TLSv1.1 TLSv1.2 Deflate compression: no Supported cipher suites (ORDER IS NOT SIGNIFICANT): SSLv3 RSA_WITH_RC4_128_MD5 RSA_WITH_RC4_128_SHA RSA_WITH_3DES_EDE_CBC_SHA RSA_WITH_AES_128_CBC_SHA RSA_WITH_AES_256_CBC_SHA TLS_ECDHE_RSA_WITH_RC4_128_SHA TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (TLSv1.0: idem) (TLSv1.1: idem) TLSv1.2 RSA_WITH_RC4_128_MD5 RSA_WITH_RC4_128_SHA RSA_WITH_3DES_EDE_CBC_SHA RSA_WITH_AES_128_CBC_SHA RSA_WITH_AES_256_CBC_SHA RSA_WITH_AES_128_CBC_SHA256 RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_128_GCM_SHA256 TLS_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_RC4_128_SHA TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ---------------------- Server certificate(s): 510d8d10ab63d42be652291efc7f4b19702738ba: CN=www.google.com, O=Google Inc, L=M ountain View, ST=California, C=US ---------------------- Minimal encryption strength: strong encryption (96-bit or more) Achievable encryption strength: strong encryption (96-bit or more) BEAST status: protected CRIME status: protected
SSL Vulnerabilities Analyzer
Zajímavá grafická aplikace pro Windows je SSL Vulnerabilities Analyzer. Provede různé testy SSL, zranitelností a šifer a zobrazí souhrnné výsledky s možností zobrazit detaily.

SSLScan - Fast SSL Scanner
Malý nástroj pro příkazový řádek SSLScan je určený pro Linux, ale existuje i Windows port of SSLScan. Na Windows jde o funkční nástroj, který může skenovat různé porty (podporuje nejen HTTPS, ale i SMTP). Standardně vypisuje všechny šifry, ale můžeme omezit pouze na akceptované. Jeho funkce je ale omezena pouze na zobrazení šifer a neprovádí ani klasifikaci. Navíc podporuje pouze SSL a TLS 1.0 (ani po změně OpenSSL knihoven nepracuje s TLS 1.1 s TLS 1.2).
d:\>SSLScan.exe --no-failed www.google.com _ ___ ___| |___ ___ __ _ _ __ / __/ __| / __|/ __/ _` | '_ \ \__ \__ \ \__ \ (_| (_| | | | | |___/___/_|___/\___\__,_|_| |_| Version 1.8.2-win http://www.titania.co.uk Copyright Ian Ventura-Whiting 2009 Compiled against OpenSSL 0.9.8m 25 Feb 2010 Testing SSL server www.google.com on port 443 Supported Server Cipher(s): Accepted SSLv3 256 bits AES256-SHA Accepted SSLv3 128 bits AES128-SHA Accepted SSLv3 168 bits DES-CBC3-SHA Accepted SSLv3 128 bits RC4-SHA Accepted SSLv3 128 bits RC4-MD5 Accepted TLSv1 256 bits AES256-SHA Accepted TLSv1 128 bits AES128-SHA Accepted TLSv1 168 bits DES-CBC3-SHA Accepted TLSv1 128 bits RC4-SHA Accepted TLSv1 128 bits RC4-MD5 Prefered Server Cipher(s): SSLv3 128 bits RC4-SHA TLSv1 128 bits RC4-SHA SSL Certificate: Version: 2 Serial Number: -4294967295 Signature Algorithm: sha1WithRSAEncryption Issuer: /C=US/O=Google Inc/CN=Google Internet Authority G2 Not valid before: Sep 24 10:48:54 2014 GMT Not valid after: Dec 23 00:00:00 2014 GMT Subject: /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com Public Key Algorithm: rsaEncryption
SSLAudit
SSLAudit je perlový nástroj, který by měl otestovat šifry a ohodnotit je stupněm. Ve staženém zipu se nachází kompilovaný exe pro Windows i samostatný Perl skript, ale nepodařilo se mi tento nástroj zprovoznit, ani po instalaci StrawberryPerl a přidání modulu Encode (cpan / install Encode).
SSL Audit (alpha)
Jiný grafický nástroj pro Windows, který je docela pomalý, skenuje šifry a hodnotí jejich sílu, se jmenuje také SSL Audit.

SSLmap
Další malý testovací nástroj sslmap je napsaný v Pythonu, takže potřebuje jeho interpret. Zobrazí pouze seznam šifer.
$ python sslmap-0.2.0.py --host thesprawl.org _ | | version 0.2.0 ___ ___| |_ __ ___ __ _ _ __ / __/ __| | '_ ` _ \ / _` | '_ \ \__ \__ \ | | | | | | (_| | |_) | |___/___/_|_| |_| |_|\__,_| .__/ | | iphelix@thesprawl.org |_| [*] Scanning thesprawl.org:443 for 229 known cipher suites. [+] TLS_RSA_WITH_AES_128_CBC_SHA (0x00002F) [+] TLS_DHE_RSA_WITH_DES_CBC_SHA (0x000015) ...
CipherScan
Jednoduchý skript pro Linux CipherScan poskytuje také rychlý přehled šifer.
linux $ ./cipherscan www.google.com:443 ................... prio ciphersuite protocols pfs_keysize 1 ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 ECDH,P-256,256bits 2 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 ECDH,P-256,256bits 3 ECDHE-RSA-AES128-SHA TLSv1.1,TLSv1.2 ECDH,P-256,256bits 4 ECDHE-RSA-RC4-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 ECDH,P-256,256bits 5 AES128-GCM-SHA256 TLSv1.2 6 AES128-SHA256 TLSv1.2 7 AES128-SHA TLSv1.1,TLSv1.2 8 RC4-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 9 RC4-MD5 SSLv3,TLSv1,TLSv1.1,TLSv1.2 10 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 ECDH,P-256,256bits 11 ECDHE-RSA-AES256-SHA384 TLSv1.2 ECDH,P-256,256bits 12 ECDHE-RSA-AES256-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 ECDH,P-256,256bits 13 AES256-GCM-SHA384 TLSv1.2 14 AES256-SHA256 TLSv1.2 15 AES256-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 16 ECDHE-RSA-DES-CBC3-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 ECDH,P-256,256bits 17 DES-CBC3-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 18 ECDHE-RSA-AES128-SHA256 TLSv1.2 ECDH,P-256,256bits Certificate: trusted, 2048 bit, sha1WithRSAEncryption signature
Komentáře
Skvela stranka, bolo by mozne informacie na nej aktualizovat? Napr. podpora prehliadacov na TSL vyssich verzii atd.
odpověď na [1]Mikulas Pauco: Bohužel, absolutně není čas