Asymetrická kryptografie a elektronický podpis Ing. Mgr. Martin Henzl Mgr. Radim Janča ijanca@fit.vutbr.cz
Obsah cvičení Asymetrická, symetrická a hybridní kryptografie Matematické problémy, na kterých je založena asymetrická k. RSA 2
Symetrická kryptografie Symetrické šifry symetrický klíč stejný pro šifrování i dešifrování výrazně rychlejší než asymetrická kryptografie nutnost sdílet stejný klíč problém spolehlivé distribuce doporučená velikost klíče - 128, 256, 512 bitů příklady symetrických šifer - AES, DES, Blowfish, Serpent 3
Asymetrická kryptografie Asymetrické šifry klíčový pár veřejný a soukromý klíč veřejný klíč použití pro šifrování nebo ověření podpisu soukromý klíč použití pro dešifrování nebo vytvoření podpisu doporučená velikost klíče - 1024, 2048, 4096 bitů příklady asymetrických šifer - RSA, Diffie-Hellman, ElGamal 4
Hybridní šifrování Kombinuje výhody symetrické a asymetrické kryptografie Rychlost šifrování vs. jednoduchá distribuce klíčů Symetrické šifry mohou být až 100000x rychlejší než asymetrické Postup šifrování vstupních dat: 1. Vygenerujeme náhodný symetrický klíč (musí sdílet obě strany) 2. Tímto klíčem zašifrujeme vstupní data 3. Pomocí veřejného klíče příjemce zašifrujeme symetrický klíč 4. Odešleme zašifrovaná data a zašifrovaný klíč 5. Příjemce pomocí svého privátního klíče dešifruje symetrický klíč 6. Pomocí symetrického klíče (předán bezpečným způsobem) dešifruje data 5
Elektronický podpis a hašovací funkce Elektronický podpis zajišťuje: integritu autenticitu podepsaného nepopiratelnost na rozdíl od šifrování nic neutajuje Hašovací funkce Asymetrická kryptografie je pomalá, abychom podepisovali celý dokument Podepisuje se pouze haš dokumentu vytvořená hašovací funkcí Typicky se používá hašovací funkce z rodiny SHA (160, 384, 512) Hašovací funkce musí splňovat několik vlastností: jednosměrnost, odolnost proti nalezení vzoru, odolnost 6
Matematické problémy asymetrické kryptografie Problém faktorizace velkých čísel (RSA) násobení čísel je snadné (výpočetně, časově) problém faktorizace velkého čísla je NP problém Disktétní logaritmus (Diffie-Hellman, ElGamal) mějme čísla Y, α, m, k, kde m je prvočíslo a α je generátorem cyklické grupy Y = α k mod m číslo k nazveme diskrétním logaritmem čísla Y při základu α číslo k není tímto vztahem určeno jednoznačně, se vzrůstající hodnotou čísla k se zvyšuje náročnost výpočtu 7
RSA Generování klíčů dvě různá prvočísla p, q n = p*q, φ = (p 1)*(q - 1) volba náhodného přirozeného e, 1 < e < φ, gcd(e, φ ) = 1 vypočteme d tak, že e*d 1 mod φ veřejný klíč je dvojice (n, e), privátní klíč je hodnota d Šifrování a dešifrování zpráva m, 0 m n - 1 šifrovaná zpráva c = m e mod n původní zpráva m = c d mod n 8
Diffie-Hellman Ustavení sdíleného tajemství (klíče) mezi Alicí a Bobem 1. Jeden z účastníků (např. Alice) zveřejní čísla α, m, která jsou společná 2. Každý účastník zvolí vlastní parametr Alice a a Bob b 3. Alice spočte A = α a mod m, Bob spočte B = α b mod m 4. Alice s Bobem si vymění A a B 5. Spočtou si K (klíč). Bob K = A b mod m, Alice K = B a mod m protokol slouží k ustanovení společného tajemství protokol je postaven na problému diskrétních logaritmů protokol je zranitelný útokem typu man-in-the-middle 9
Úvod do Certifikátu a Certifikačních Autorit Mgr. Radim Janča ijanca@fit.vutbr.cz
Certifikáty a Certifikační Autory K čemu asymetrická kryptografie? Vytvoření identity (za předpokladu utajení privátního klíče) Autentizace, el. podpis, šifrování.. Jak zajistit jednoznačnou vazbu mezi osobou(subjektem) a jejím privátním/veřejným klíčem? Zaslání emailem bez autentizace nepoužitelné Vystavení na server bez autentizace nepoužitelné - spoofing Osobní předání použitelné v malé skupině Předání třetí stranou praktické ve velkých skupinách, třetí strana musí být důvěryhodná 11
Certifikát x.509 Jednotný způsob jak ukládat klíče a zajistit pravost Obsah certifikátu (vybrané údaje): Vydavatel Platnost od\do subjekt vlastník veřejného klíče Algoritmus Veřejný klíč Elektronický podpis (podpis certifikátu vydávající CA) 12
Formáty certifikátů.der DER zakódovaný certifikát.pem DER certifikát zakódovaný pomocí base64, uzavřený mezi řádky "-----BEGIN CERTIFICATE-----" a "-----END CERTIFICATE-----".P12 PKCS #12, může obsahovat certifikát(y), veřejné i soukromé klíče (chráněno heslem).crt,.cer přípona ve windows, typicky obsahuje certifikát formátu PKCS #12 13
Certifikační autorita Organizace zajišťující vydávání a distribuci certifikátů Svým privátním klíčem podepisuje vydávané certifikáty Udržuje CRL (Certificate Revocation List) Součástí CA je tzv. Registrační Autorita Stará se o přijímání žádostí o certifikát Ověřuje žádosti (identitu žadatele) Od důkladnosti ověření RA a zabezpečení CA se odvíjí její důvěryhodnost Některé CA mohou požadovat pouze ověření identity přes internet nízká důvěryhodnost certifikátu, ale i cena Komplexní ověření žadatele vyšší důvěryhodnost za vyšší cenu 14
Stromová struktura CA Historie - předpoklad jedné CA distribuující pravomoci Realita celá řada nezávislých CA Hierarchie CA Geografického hledisko Rozložení zátěže Rozložení rizik 15
Příklad žádosti o certifikát Certificate Request: Data: Version: 0 (0x0) Subject: C=CZ, ST=Czech Republic, L=Brno, O=VUT, CN=JohnDoe/emailAddress=JohnDoe@vutbr.cz Subject Public Key Info: Public Key Algorithm: rsaencryption Public-Key: (4096 bit) Modulus: 00:cb:76:51:6e:62:8d:0a:31:50:44:94:2d:37:12: 3d:00:1f:da:7e:54:4b:ab:fb:a9:09:48:b8:d0:7e: Exponent: 65537 (0x10001) Signature Algorithm: sha1withrsaencryption 1d:1f:05:5b:a5:8b:4b:a1:fe:48:61:a7:2f:c7:44:b9:c9:af: fd:97:c9:b9:41:95:b4:f5:cd:ce:f9:20:5b:a1:a4:5b:2c:27: 16
Příklad certifikátu Certificate: Data: Version: 3 (0x2) Serial Number: c2:29:ca:54:c8:c9:ee:41 Signature Algorithm: sha1withrsaencryption Issuer: C=CZ, ST=Czech Republic, O=VUT, OU=testCA, CN=Moje testovaci CA/emailAddress=ijanca@fit.vutbr.cz Validity Not Before: Oct 6 18:01:01 2014 GMT Not After : Oct 6 18:01:01 2015 GMT Subject: C=CZ, ST=Czech Republic, L=Brno, O=VUT, CN=John Doe/emailAddress=JohnDoe@vutbr.cs Subject Public Key Info: Public Key Algorithm: rsaencryption Public-Key: (4096 bit) Modulus: 00:cb:76:51:6e:62:8d:0a:31:50:44:94:2d:37:12: Exponent: 65537 (0x10001) Signature Algorithm: sha1withrsaencryption 65:30:5f:f5:3e:24:d1:12:72:f2:ca:a5:0f:c2:ed:2c:2c:46: 17
Děkuji za pozornost 10/10