Úvod do klasických a moderních metod šifrování Jaro 2008, 9. přednáška
Komunikační bezpečnost Kryptografické aplikace zajišťující komunikační bezpečnost. Co je to zabezpečené (komunikační) spojení? Spojení obvykle začíná autentizací partnerů, výměnou veřejných klíčů, a pokračuje autentizovaným protokolem pro dohodu na klíči. Tím se obě strany dohodnou na společném tajném klíči. Z tohoto tajného klíče se pak generuje několika symetrických tajných klíčů. Bezpečnost zpráv, tj. jejich integrita, autentizace a důvěrnost, je pak zajišťována pomocí kódu pro autentizaci zpráv (MAC) a symetrickým šifrováním. Dále je nutné zabezpečit, aby útočník nemohl poslat zabezpečenou zprávu ještě jednou (replay attack), zaměnit ji za jinou zabezpečenou zprávu, případně ji odstranit. To je obvykle zajišťováno synchronizovaným čítačem (counter) zpráv.
Další bezpečnostní požadavky Včasné doručování zpráv. Vzájemná znalost důvodů ukončení komunikace - komunikace byla úspěšně dokončena nebo přerušena. Anonymita – účastník komunikace by si měl být jistý, že jeho identita během komunikace neunikla třetí straně. Nevystopovatelnost (untraceability) – účastník spojení by si měl být jistý, že jeho současný partner v komunikaci nedokáže v budoucnu zjistit jeho identitu v jiné komunikaci. Nepropojitelnost (unlinkability) - účastníci komunikace by si měli být jistí, že nikdo třetí není schopen zjistit, že ve dvou různých spojeních vystupuje stejný partner. Nepřenositelnost (untransferability) – účastník komunikace by si měl být jistý, že jeho partner není falešný a neskrývá skutečnou identitu toho pravého. Atd.
Certifikáty Viděli jsme už, jak se partneři komunikace mohou bezpečně dohodnout na tajném sdíleném symetrickém klíči. Např. za pomoci šifrovacího systému s veřejným klíčem. Používá se např. při komunikace client-server. K tomu je ale potřeba, aby veřejný klíč serveru K p byl ke klientovi doručen kanálem se zabezpečenou autentizací. Tyto autentizační kanály jsou obvykle utvářeny pomocí důvěryhodné třetí strany (trusted third party). Touto důvěryhodnou třetí stranou v současnosti bývá certifikační autorita. Ta vydá podpis σ pro klíč K p, kterým je zajištěna autentizace tohoto klíče. Tím už zbývá pouze zabezpečit přenos klíče K p od serveru do certifikační autority a přenos veřejného klíče certifikační autority K p CA ke klientovi. Klíč certifikační autority klient potřebuje k ověření podpisu σ.
Infrastruktura veřejných klíčů Oskar (Eva) - protivník Alice Šifrovací algoritmus Dešifrovací algoritmus Bob Zdroj klíčů Kanál s autentizací x y x x – otevřený text, y – šifrový text, K p – veřejný klíč K s – tajný (soukromý) klíč KsKs KpKp KpKp Zdroj klíčů CA Podpis Ověření KpKp Autentizovaný kanál Kp,σKp,σ Kp,σKp,σ K p CA KpKp
Autentizované kanály CA Server1 Server 2 Server 3 Klient1 Klient2 Klient3 Kp1Kp1 Kp2Kp2 Kp3Kp3 K p CA
SSH – Secure Shell Vzdálený přístup k serveru. Vytváří bezpečný (důvěrný a autentizovaný) kanál pro komunikaci client-server. SSH2 využívá infrastrukturu veřejných klíčů. Chce-li se klient připojit k serveru, server mu pošle svůj veřejný klíč spolu s certifikátem. Pak nastává klíčový krok – klient si musí autentizovat obdržený veřejný klíč serveru. Například si ověří certifikát u certifikační autority. Může také prostě věřit, že veřejný klíč je v pořádku. Pak si veřejný klíč serveru uloží do nějakého souboru (u něho musí být zajištěna integrita) a při jakékoliv budoucí komunikaci se serverem si může veřejný klíč nově poslaný serverem porovnat s tím původním. Pokud porovnání obou klíčů neprojde, klient dostane varování, že veřejný klíč se změnil. Nicméně klient obvykle odklepne, že je to v pořádku, a pokračuje.
Protokol Diffieho-Hellmana Zajišťuje ustanovení tajného klíče pro symetrickou kryptografii pomocí nezabezpečeného kanálu, který ale musí zajišťovat autentizaci a integritu. Oskar (Eva) - protivník Alice Šifrovací algoritmus Dešifrovací algoritmus Bob Výměna A Kanál s autentizací K – klíč, U,V – zprávy, kroky protokolu Výměna B K K VU Klient se po dohodě na klíči autentizuje serveru pomocí hesla (password).
SSL – Secure Socket Layer Bezpečná on-line komunikace po internetu. Nejpopulárnější je verze 3.0 a její následník TLS 1.0. Typicky se používá v případě, kdy má vyhledávač bezpečně komunikovat s HTTP serverem. Navržený tak, že nezávisí na výběru konkrétních šifrovacích algoritmů. Výběr konkrétních algoritmů se dohodne mezi klientem a serverem na počátku relace – cipher suite. Obsahuje dvě úrovně protokolů. SSL handshake protocol je používán na počátku relace a využívá nákladné kryptografické prostředky jako asymetrickou kryptografii a dohodu na klíči. Během relace může proběhnout několik spojení, které řídí SSL Record Protocol. Tato spojení jsou bezpečné kanály používající rychlou symetrickou kryptografii.
SSL - pokračování Během každé relace klient a server uchovávají vnitřní stav, který obsahuje identifikátor relace, certifikáty účastníků, volbu cipher suite a master secret – symetrický 48-bitový klíč, který je ustanoven na počátku relace. Jedna relace může obsahovat několik různých spojení. Stav spojení obsahuje náhodně zvolená čísla pro jedno použití (nonce) kliemta a serveru, inicializační vektor, čítač zpráv, a čtyři symetrické klíče pro MAC a šifrování, dva pro klienta a dva pro server. Cipher suite obsahuje asymetrické algoritmy použité pro autentizaci účastníků relace a dohodu na klíči v rámci handshake protokolu a symetrické algoritmy pro šifrování a MAC v rámci record protokolu. Speciální SSL Alert Protocol je používán pro chybové hlášky. Ty mohou být buď jednoduchými varováními a nebo fatálními chybami. V případě fatální chyby je přerušeno příslušné spojení, další spojení mohou pokračovat, ale žádné nové spojení už nelze vytvořit.
Handshake Klient na počátku pošle ClientHello obsahující identifikátor relace, seznam všech Cipher Suite, které může přijmout a náhodně zvolené číslo nonce. Server odpoví odesláním ServerHello obsahující identifikátor relace, zvolenou Cipher Suite, a své vlastní náhodné číslo pro jedno použití. Obvykle dále posílá svůj certifikát, aby mohl být autentizován. Certifikát může obsahovat materiál pro Diffie-Hellmanův protokol pro dohodu na klíči. Také může poslat žádost o zaslání klientova certifikátu, pokud chce, aby se klient autentizoval. Klient pak může poslat zpět svůj certifikát, pokud o něj server požádal a zprávu, která je součástí dohody na klíči v závislosti na tom, jaký algoritmus pro dohodu na klíči byl zvolen v Cipher Suite. To je ClientKeyExchange. Oba potom odvodí čtyři symetrické klíče. Klient pak pošle MAC souhrnu všech dosavadních zpráv. Server odpoví svým MACem všech dosavadních zpráv.
Typický průběh Handshake KlientServer ClientHello: acceptable cipher suites, nonce C ServerHello: cipher suite, certificate, nonce S pre_master_secret ClientKeyExchange: RSA_ENC(pre_master_secret) Odvození klíčů MAC(handshake messages) kontrola MAC(handshake messages) kontrola
Odvození klíčů Používá se hašovací algoritmus hash. Na počátku je tajný secret a semínko seed. Z nich se vytvoří posloupnost P_hash(secret,seed) = r 1,r 2,r 3,…., kde r i = HMAC hash ( secret, a i, seed ), a i = HMAC hash ( secret, a i-1 ), a 0 = secret. Dále se definuje posloupnost PRF ( secret, label, seed ) jako P_MD5(S1,label||seed) xor P_SHA1(S2,label||seed), kde S1 a S2 jsou první a druhá polovina secret a label je nějaký řetězec. Funkce PRF se použije k odvození master_secret. K tomu se vezme prvních 48 bitů z PRF( pre_master_secret,`master secret’,nonce S ||nonce C ) a dále k odvození čtyř tajných klíčů a dvou inicializačních vektorů pro blokovou a prodouvou šifru.
PGP – Pretty Good Privacy Používá se pro zabezpečenou internetovou off-line komunikaci. Navrhnul jej Phil Zimmermann na počátku devadesátých let minulého století v USA. V té době bylo v USA a některých dalších zemích ilegální bránit úřadům v přístupu k jakémukoliv otevřenému textu použitím silné kryptografie. Zimmermannův software byl původně nelegální. Dnes už jej lze volně používat. Nevyžaduje žádnou certifikační autoritu, žádné veřejné parametry. Každý si může sám generovat svůj vlastní klíč a používat svůj vlastní šifrovací algoritmus. Nejoblíbenější jsou symetrická šifra IDEA, RSA šifra a podpis a hašovací funkce MD5.