1 PV157 ­ Autentizace a řízení přístupu Autentizace dat a zpráv Základní pojmy ˇ Integrita dat ­ data nebyla neautorizovaně změněna (vložení dat, smazání dat, přeskupení dat...) od doby vytvoření, přenosu... ˇ Autentizace původu dat ­ potvrzujeme, že data pocházejí od určitého subjektu. Metody autentizace dat a zpráv ˇ Bez použití kryptografie ­ CRC (Cyclic Redundancy Check). ˇ S použitím kryptografie ­ Sdílený tajný symetrický klíč. ­ Získání haše autentizovaným kanálem. ­ Haš s tajným klíčem / MAC (Message Auth. Code) ­ dříve označováno jako digitální pečeť. ­ Digitální podpis. Hašování a autentizace dat ˇ Využití jiného komunikačního kanálu ­ Data pošleme standardním nezabezpečeným kanálem (např. elektronickou poštou). ­ Spočítáme haš dat a tento haš sdělíme příjemci jiným kanálem (např. telefonicky, na vizitce předané při osobním setkání). ­ Příjemce spočítá haš získaných dat a porovná haše. dokument email haš telefon příjemce Elektronický podpis ˇ Zákon o elektronickém podpisu č. 227/2000 Sb. ˇ ,,elektronickým podpisem se rozumí údaje v elektronické podobě, které jsou připojené k datové zprávě nebo jsou s ní logicky spojené a které umožňují ověření totožnosti podepsané osoby ve vztahu k datové zprávě" ˇ Elektronickým podpisem tak může být i pouhé jméno napsané na klávesnici. Zaručený elektronický podpis ˇ je jednoznačně spojen s podepisující osobou; ˇ umožňuje identifikaci podepisující osoby ve vztahu k datové zprávě; ˇ byl vytvořen a připojen k datové zprávě pomocí prostředků, které podepisující osoba může udržet pod svou výhradní kontrolou; ˇ je k datové zprávě, ke které se vztahuje, připojen takovým způsobem, že je možno zjistit jakoukoliv následnou změnu dat; ˇ zaručený elektronický podpis je možné vytvořit pomocí technologie digitálního podpisu. 2 podepisovací algoritmus ověřovací algoritmuszpráva podepsaná zpráva Alice Alicin veřejný klíč Bob Převzato z: Network and Internetwork Security (Stallings) Schéma digitálního podpisu ověřený podpis Alicin privátní klíč Digitální podpis ­ klíče ˇ Každý subjekt má 2 klíče: ­ privátní (soukromý) klíč pro vytváření podpisu; ­ veřejný klíč pro ověření podpisu. ˇ Správný digitální podpis může vytvořit jen ten, kdo má k dispozici soukromý klíč. ˇ Pro ověření podpisu je nutné mít veřejný klíč podepsaného subjektu. ˇ Digitální podpis nedává sám o sobě žádnou záruku o době jeho vytvoření. Digitální podpis ­ co podepisujeme? ˇ Algoritmy digitálního podpisu založené na asymetrické kryptografii jsou relativně pomalé. ˇ V praxi nepodepisujeme celý dokument (velikosti v kB, MB i GB) ale pouze haš (fixní délky řádově stovky bitů). ˇ Není bezpečné rozdělit dokument na několik částí a ty podepsat separátně. ˇ Při kombinaci šifrování veřejným klíčem a podpisu je nutné dokument nejprve podepsat a pak teprve zašifrovat. Digitální podpis ­ bezpečnost ˇ Pro bezpečnou funkčnost digitálního podpisu je nezbytně nutné: ­ udržovat privátní klíč v tajnosti ­ každý, kdo má přístup k privátnímu klíči má možnost vytvářet platné podpisy; ­ zajistit integritu veřejného klíče ­ pokud bychom ověřovali platnost podpisu pomocí nesprávného klíče můžeme dojít k nesprávným závěrům. Digitální podpis ­ integrita VK ˇ Jak zajistit integritu veřejného klíče? ˇ Pomocí certifikátu veřejného klíče! ˇ Certifikát váže veřejný klíč k subjektu (spíše k nějakému identifikátoru subjektu). ˇ Tato vazba je digitálně podepsána důvěryhodnou třetí stranou (certifikační autoritou). ˇ Jak zajistit integritu veřejného klíče certifikační autority? Digitální podpis ­ jak vypadá certifikát? ˇ Certifikát standardu X.509 verze 3 Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } TBSCertificate ::= SEQUENCE { version [0] Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, -- notBefore, notAfter subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, -- algID, bits issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, extensions [3] Extensions OPTIONAL -- sequence of: extnID, crit, value } 3 Digitální podpis ˇ Jak udržovat důvěrnost privátního klíče? ˇ Key recovery ­ obnova klíčů!? ˇ Některé algoritmy asymetrické kryptografie umožňují používat jednu dvojici klíčů pro šifrování i podpis ­ toto však není příliš vhodná kombinace. ˇ Jak se brání zaměstnavatel vůči odchodu zaměstnance? Rozdílný přístup k šifrovacímu a podepisovacímu klíči! Digitální podpis ­ algoritmy ˇ První algoritmy asymetrické kryptografie na začátku 70. let 20. století: ­ Britská tajná služba GCHQ. ­ Veřejné oznámení až koncem 20. století. ­ Aplikaci algoritmů pro autentizaci ­ podpis ­ ,,objevila" později až akademická komunita u svých veřejných algoritmů. ˇ První veřejné algoritmy koncem 70. Let. ˇ Nejznámější algoritmus RSA (Rivest, Shamir, Adelman) publikován v roce 1977, patentován v roce 1983 (v současné době patent již vypršel). Digital Signature Algorithm ˇ V roce 1994 proběhl v USA výběr Digital Signature Standard (DSS) ­ vyhrál DSA (Digital Signature Algorithm) modifikovaný algoritmus ElGamal, založený na diskrétním logaritmu v Zp. ˇ Další algoritmy, mj. založeny i na eliptických křivkách. Digitální podpis ­ délky klíčů ˇ Algoritmus RSA ­ Při jednom z popisů algoritmu (ve ,,Scientific American" v roce 1977) autoři publikovali příklad kryptosystému (prvočísla byla 64 a 65-ti bitová), o kterém věřili že je bezpečný. ­ Tento kryptosystém byl rozlomen v roce 1994. ­ Koncem roku 1999 došlo k prolomení 512 bitového modulo RSA (několik set rychlých počítačů pracovalo přes 4 měsíce). ­ V současné době se používá modulo o délkách 1024 nebo 2048 bitů. Digitální podpis ­ časová náročnost ˇ Algoritmy asymetrické kryptografie jsou relativně časově náročné ­ příklady časů pro čipovou kartu 50 ms160 bitů160 bitůOvěření EC DSA (GF(p)) 24 ms160 bitůPodpis EC DSA (GF(p)) 14,4 s2048 bitůGenerování klíče RSA 1,56 s1024 bitůGenerování klíče RSA 38 ms2048 bitůOvěření RSA 2,8 ms32 bitů1024 bitůOvěření RSA 0,17 s2048 bitů2048 bitůPodpis RSA 25,2 ms1024 bitů1024 bitůPodpis RSA ČasExponentModulusOperace Digitální podpis ­ RSA­ matematika ˇ Násobení prvočísel snadné, ale faktorizace čísel výpočetně náročná. ˇ Velká prvočísla p, q, n = pq, (n) = (p-1)(q-1). ˇ Zvolíme velké d takové, že gcd(d, (n)) = 1. ˇ Spočítáme e = d-1 (mod (n)). ˇ Veřejný klíč: n, e. Neveřejné parametry: p, q, d. ˇ Šifrování: c = we mod n. ˇ Dešifrování: w = cd mod n. 4 Výpočetní bezpečnost ˇ Bezpečnost RSA je založena na nesnadnosti faktorizace čísel. ˇ Je zřejmé, že pouhým ,,vyzkoušením" všech čísel do odmocniny z n se nám podaří n faktorizovat. ˇ Bezpečnost RSA je založena na tom, že faktorizovat velká čísla (tím v současné době myslíme čísla o tisících bitech) v rozumném čase neumíme. ˇ Pokrok v oblasti faktorizace čísel (například nalezení nového algoritmu) však může znamenat, že z veřejného klíče budeme schopni odvodit klíč privátní. ˇ Tento algoritmus je založen na tzv. ,,výpočetní bezpečnosti" (nejen tento algoritmus, ,,výpočetní bezpečnost" je běžně používaný přístup). Digitální podpis ­ RSA­ příklad ˇ Čísla jsou úmyslně příliš malá (takový systém není bezpečný). ˇ Parametry: p = 7927, q = 6997, n = pg = 55465219, (n) = 7926 × 6996 = 55450296. ˇ Alice volí e = 5, řeší rovnici ed = 5d = 1 (mod 55450296), d = 44360237. ˇ Alicin veřejný klíč: (n = 55465219, e = 5), privátní klíč: d = 44360237. ˇ Podpis: m = 31229978; s = 3122997844360237 mod 55465219 = 30729435. ˇ Ověření podpisu: m = 307294355 mod 55465219 = 31229978. ˇ Podpis je ověřen, pokud je přijata zpráva m=31229978. Hašovací funkce ˇ Kryptografická hašovací funkce. ˇ Vstup libovolné délky. ˇ Výstup pevné délky: n bitů (často 128 nebo 192). ˇ Funkce není prostá (vznikají kolize). ˇ Haš slouží jako kompaktní reprezentace vstupu (nazýváme též otisk, anglicky imprint, digital fingerprint nebo message digest). ˇ Hašovací funkce často používáme při zajišťování integrity dat. Spočítáme nejprve haš a pak pracujeme s tímto hašem (například jej podepíšeme). Vlastnosti hašovacích funkcí ˇ Jednosměrnost ­ Pro libovolné x je snadné spočítat h(x). ­ V rozumném čase nejsme schopni pro pevně dané y najít takové x, že h(x) = y. ˇ Bezkoliznost ­ (slabá): pro dané x nejsme schopni v rozumném čase najít x' (x x') takové, že h(x) = h(x'). ­ (silná): v rozumném čase nejsme schopni najít libovolná x, x' taková, že h(x) = h(x'). Příklad hašovací funkce ˇ Uvažujme následující hašovací funkci: ­ Jednoduchý součet bajtů modulo 256 . ­ Fixní osmibitový výstup. ­ Pro text ,,ahoj" získáme 97+104+111+106 mod 256 = 162. ˇ Tuto funkci je sice jednoduché spočítat, není to však dobrá kryptografická hašovací funkce, neboť nemá vlastnost bezkoliznosti. ˇ h(,,ahoj") = h(,,QQ") = h(,,zdarFF") Běžné kryptografické hašovací funkce ˇ MD4: výstup 128 bitů ­ dnes se již nepoužívá ­ byly nalezeny slabiny v algoritmu (umožňující nalezení kolizí, snižující efektivní výstup asi na 20 bitů). ˇ MD5: výstup 128 bitů ­ dnes ještě používána, ačkoliv byly nalezeny slabiny a příklady kolizí ­ 128 bitů se již nepovažuje za dostatečně bezpečnou délku! ˇ SHA-1 (Secure Hash Algorithm): výstup 160 bitů ­ NIST standard, používána v DSS (Digital Signature Standard), považována za bezpečnou do 2010. ˇ ,,SHA-2" ­ SHA-256, SHA-384, SHA-512 (a dodána SHA-224) ­ doporučuje se používat především tyto funkce! Definovány ve standardu (NIST) FIPS 180-2. 5 Hašovací funkce ­ příklady ˇ MD5 ­ Vstup: ,,Autentizace". ­ Výstup: 2445b187f4224583037888511d5411c7 . ­ Výstupem je 128 bitů, zapisujeme hexadecimálně. ­ Vstup: ,,Cutentizace". ­ Výstup: cd99abbba3306584e90270bf015b36a7. ­ Změna jednoho bitu vstupu velká změna výstupu. ˇ SHA-1 ­ Vstup: ,,Autentizace". ­ Výstup: dfcee447d609529f0335e67016557c281fc6eb44 . Hašovací funkce z šifrovacích algoritmů ˇ Hašovací funkci můžeme vytvořit z libovolné blokové symetrické šifry. ˇ Existují postupy pro vytvoření hašovací funkce s délkou haše o velikosti délky bloku či dvojnásobku délky bloku. Matyas-Meyer-Oseas Eg xi Hi Hi-1 Narozeninový paradox ˇ Zajímavé útoky na hašovací funkce vycházejí z tzv. birthday (narozeninového) paradoxu. ˇ Pravděpodobnost, že 2 lidé v sále s 23 lidmi mají narozeniny ve stejný den je více než 50 %. Tato pravděpodobnost je překvapivě vysoká a s počtem lidí v sále dále rychle roste (při 30 lidech v sále je vyšší než 70 %). ˇ Tohoto můžeme využít při hledání kolizí hašovací funkce. Integrita dat ­ CRC ˇ Detekce chyb (error detection) ­ Kontrolní součty ­ paritní bity, aritmetický součet modulo, exkluzivní součet (XOR). ­ CRC (cyclic redundancy check) ­ cyklický kontrolní součet. Např. 16-bitový g(x) = 1+x2+x15+x16 . ­ Slouží k detekci (neúmyslných) chyb při přenosu dat, uložení dat apod. ­ Je snadné spočítat kontrolní součet dat i vytvořit data odpovídající určitému kontrolnímu součtu, proto kontrolní součty neposkytují ochranu před úmyslnou modifikací dat. Integrita dat ­ MAC ˇ Autentizační kódy (též digitální pečetě, message authentication code ­ MAC) ­ Slouží k zajištění integrity dat (ne k důvěrnosti dat). ­ Původce a příjemce dat sdílí tajný klíč k. ­ Původce zprávy spočítá hk(x), které přidá ke zprávě x. ­ Příjemce zprávy spočítá hk(x') z přijaté zprávy x' a srovná s přijatým hk(x). Zpráva MAC Jak získat funkci pro vytváření MAC? ˇ MAC můžeme získat z libovolné symetrické šifry v CBC (cipher block chaining) režimu (kdy zašifrovaná data závisí na všech předchozích datech). ˇ MAC můžeme získat i z hašovací funkce, např. tajný prefix, sufix. HMAC(x) = h(k||p1||h(k||p2||x)) k klíč, p padding (doplnění dat) 6 MAC ˇ Příklad: MAC založený na AES AES AES AES... x1 x2 xt 0 k k k H1 H2 Ht-1 ,,Chaffing and windowing" ˇ Metoda ,,chaffing and windowing" (oddělení zrn od plev). ˇ Použití MAC pro zajištění důvěrnosti. ˇ Zprávu rozdělíme na jednotlivé bity. ˇ Pro každý bit vytvoříme 2 zprávy (obsahující 0 a 1), jednu se správným MAC a jednu s nesprávným MAC. Tyto 2 zprávy v náhodném pořadí odešleme příjemci. ˇ Příjemce dostane 2 zprávy, tu se správným MAC si ponechá a tu druhou zahodí. ˇ Nikdo, kdo nezná tajný sdílený klíč, není schopen odlišit zprávu se správným a nesprávným MAC. ˇ Existují i efektivnější metody než posílání po 1 bitu. Praktická ukázka autentizace dat ˇ Autentizace spustitelných EXE souborů v prostředí Microsoft Windows ­ Proč autentizujeme? ­ Chceme zajistit integritu programů. ­ Chceme znát autora programu. ­ Věříme například jen kódu od firmy Microsoft a chceme mít jistotu, že kód při přenosu někdo nemodifikoval, či nepodstrčil. Microsoft Autenticode ˇ Jak autentizace funguje? ˇ EXE soubor je digitálně podepsaný. ˇ Digitální podpis je ověřen. ˇ Pokud je podpis platný aplikace je automaticky spuštěna. ˇ Je-li podpis neplatný nebo není-li EXE soubor podepsán, je interaktivně dotázán uživatel. Microsoft Autenticode ˇ Toto dialogové okno asi už znáte: Microsoft Autenticode ˇ A tento program není podepsaný vůbec: 7 Microsoft Authenticode ˇ Autentizovaná data ­ Při bezchybné autentizaci dat víme, že data byla získána z uvedeného zdroje (např. od firmy Microsoft) a že nebyla modifikována. ­ Autentizace dat neznamená, že data jsou správná, programy bezchybné, bezpečné apod. Microsoft Autenticode ˇ 100% bezpečnost neexistuje! ˇ V roce 2001 získal neznámý útočník 2 certifikáty veřejného klíče určené pro firmu Microsoft a podepsané firmou Verisign (obě firmy jsou klíčoví hráči ve svém oboru a určitě mají pečlivě propracované bezpečnostní předpisy). ˇ Útočník se úspěšně vydával za zaměstnance firmy Microsoft a získal certifikát podepsaný firmou Verisign. ˇ Jakýkoliv kód podepsaný takto certifikovaným klíčem bude ve Windows spuštěn bez úvodního varování. Otázky? Vítány!!! Příští přednáška 13. 10. 2004 v 18:00 zriha@fi.muni.cz matyas@fi.muni.cz