Kryptoanalýza Kamil Malinka malinka@fit.vutbr.cz Fakulta informačních technologií 1
Microsoft PPTPv1 zájem o rozšiřování možností op. systémů přináší implementaci konkrétního protokolu pro VPN Co řeší VPN? point-to-point tunneling protocol port 1723 nevyužívá žádné specifické kryptografické algoritmy první verze ve Windows NT (server), Win Me, Win98 2
Autentizace heslo v čisté podobě problém odposlouchávání zanedbatelné bezpečnost poslání hashe hesla pro útočníka totožné jako otevřená forma pouze nutno drobné úpravy výzva/odpověď MS-CHAP (Microsoft Challenge Authentication Protocol) jediná rozumná volba ke skrytí hesla jsou použity dvě jednocestné funkce klient nezasílá autentizační zprávu sám, žádá server o zaslání výzvy 3
MS CHAP úvodní zpráva klienta c0 21 01 00 00 13 03 05 c2 23 80 (2) LCP packet, (1) conf request, (1) ID, (2) length, (1) authentication, (1) CHAP option length, (2) CHAP, (1) MS-CHAP výzva serveru c2 23 01 00 00 0d 08 cf 4f 0e 72 89 04 3b (2) chap packet, (1) challenge, (1) ID, (2) length, (1) challenge length, (8) challenge odpověď c2 23 02 00 00 53 31 41 31 19 0f 01 A d m t o r (2) chap packet, (1) response, (1) ID, (2) length, (24) LANMAN, (24) NT response, (1) NT compatib. flag, (13) account name Poslední zpráva obsahuje 2 dlouhé řetězce jejich základem jsou dva algoritmy Lan Manager Hash Windows NT Hash 4
Lan Manager Hash autentizace založená na hesle síla hesla určuje sílu autentizace Postup: úprava hesla na 14 znaků (oříznutí, doplnění nulami) všechna malá písmena převedena na velké rozdělení hesla na dvě půlky 7 znakovéřetězce zašifrování standardem definované konstanty pomocí DES (jako klíče slouží 7 znak. řetězce) zřetězení výsledků dostáváme LM hash 16 bajtů Postup silně snižuje bezpečnost! Proč? 5
Slovníkový útok lidé volí lehce uhodnutelná hesla pouze velká písmena snížení prostoru klíčů žádná sůl stejná hesla => stejný hash původní heslo rozdělené stačí hádat 2x kratší (podstatné zrychlení útoku) okamžité rozpoznání hesla kratšího 8 znaků NT Hash se snaží vyvarovat těchto chyb. ALE! 6
Windows NT hash 14 znakové heslo zpracovávané v celku heslo je vstupem MD5 => 16B hodnota hashe mnohem silnější jako Lan Manager Hash stále žádná sůl!zachování kompatibility zasílány obě hodnoty hashe! 7
Kryptoanalýza MS-CHAP kromě již zmíněných základních útoku je možná důkladnější a nebezpečnější kryptoanalýza Popis protokolu: 1. klienta posílá výzvu 2. server pošle 8 bajtovou náhodnou výzvu 3. klient spočítá hash (LM nebo NT), hash 0 0 0 0 0 => 21 znaků => 3 x 56b. klíče pro DES 3 klíče využity k trojnému zašifrování 8 bajtové výzvy => 24 bajtů odpovědi 4. server porovná zaslanou odpověď 8
Konvence zápisu P 0 P 13 jednotlivé bajty hesla H 0 H 15 bajty LM nebo NT hashe K 0 K 20 bajty klíčů, kterými se šifruje autentizační výzva S konstanta, která je součástí definice protokolu C výzva, R 0 R 23 odpověď útočník zná C a R, chce najít heslo P 9
Postup útoku Heslo: P 0 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 P 9 P 10 P 11 P 12 P 13 LM hash získaný z hesla: DES (opt.) H 0 H 1 H 2 H 3 H 4 H 5 H 6 H 7 H 8 H 9 H 10 H 11 H 12 H 13 H 14 H 15 získáme 3x DES klíč: K 0 K 1 K 2 K 3 K 4 K 5 K 6 K 7 K 8 K 9 K 10 K 11 K 12 K 13 K 14 K 15 0 16 0 17 0 18 0 19 0 20 challenge - response 3x DES zašifrování 8 bajtové výzvy DES R 0 R 1 R 2 R 3 R 4 R 5 R 6 R 7 R 8 R 9 R 10 R 11 R 12 R 13 R 14 R 15 R 16 R 17 R 18 R 19 R 20 R 21 R 22 R 23 10
Kryptoanalýza MS-CHAP Offline: předpočítané šifrování DES každé možné hodnoty P0 P6 a P7 P13 1. hledáme všechny možné K 14, K 15 kontrola:správná hodnota šifruje C na R 16 R 23 s klíčem K 14, K 15, 0, 0, 0, 0, 0 => průměrně 2 15 operací 2. zkoušíme vhodné hodnoty P 7 P 13, špatné volby eliminujeme šifrováním a srovnáním s K 14, K 15 => pro všechny kandidáty otestujeme všechny možné hodnoty K 7, kontrola: C zašifrujeme na R 8 R 15 N/2 16 možností 3. zkoušíme vhodné hodnoty P 0 P 6, K 7 známe N 1 /2 8 možností 11
MPPE point-to-point encryption předpokládá sdílený klíč RC4 40 nebo 128 bitů kompresní protokol PPP použit k domluvě na parametrech šifrování 1. získání 64-bitového klíče z LM hashe použitím SHA 24 nejvýznamnějších bitů nahrazeno konstantou 0xD1269E 2.NT hash 64 bitů náhodné výzvy z MS-CHAP získání128 bitového klíče použitím SHA po každých 256 zašifrovaných bajtech je vytvořen nový klíč pro RC4 12
Síla klíčů deterministický postup generování klíče => síla klíče je rovna síle hesla RC4 OFB cipher proudové šifry 40bit klíč je stejný, nemění se s novým přihlášením => získání více proudů dat umožňuje rekonstrukci původních dat (xor) nebo pseudonáhodného řetězce bit flipping attack útočník chce způsobit změnu v datech, změny v hlavičkách RC4 je OFB šifra vlastnost MPPE resynchronizace na žádost klienta útočník může podvrhnout žádost o resynch. informace obsažena v bitu dalšího paketu, klient nekontroluje zda o ni žádal útočník může docílit xorování předem zvoleným řetezcem další problémy: pasivní monitorování komunikace, snadný únik citlivých informací z klientského počítače 13
CBC Padding SSL/TLS, IPSEC, WTLS zpráva je nejdříve předformátována po dešifrování je formát opět zkontrolován postranní kanál chybová zpráva chyba při dešifrování chybová zpráva chybný formát složitost útoku O(NbW) N počet bloků, b počet slov v bloku, W počet možných slov (usually 256) 8 kb msg => 1000 blocks * 8 words * 256 CBC Padding: Security flaws in SSL, IPSEC, WTLS,, S. Vaudenay, EUROCrypt 02 14
RFC2040 RC5-CBC-PAD, každý blok má 8 slov o 8 bitech zprává je doplněna n slovy s hodnotou n získáme sekvenci bloků x 1,, x n šifrování y 1 =C(IV x 1 ), y i = C(y i-1 x i ) dešifrování: dešifrování, kontrola paddingu, odstranění paddingu kontrolu korektnosti paddingu použijeme jako věštírnu (z angl. oracle) 15
Nepravděpodobný útok předpokládejme že šifrové bloky y i, y j jsou shodné potom platí y i-1 y j-1 = x i x j dále využijeme redundance v textu k získání x i, x j z y i-1, y j-1 pravděpodobnost narozeninový teorém p 1 e -N.N/(2m) = 1 e -N.N/(2.8^8) rozumnou pravděpodobnost 39% získáme až pro data o délce 32 GB 16
Účinný útok I používáme orákulum O vrací 1, pokud má dešifrovaný text korektní padding, jinak vrací 0 O je definováno šifrovým textem a IV chceme spočítat poslední slovo bloku y nechť r=r 1 r b jsou náhodná slova, podvrhneme šifrovaný text r y pokud O(r y)=1 pak C -1 (y) r skončí s platným paddingem nejpravděpodobnější padding je 1 (odpovída pouze 1 byte), můžeme ověřit použitím r = r 1 r b, r b = r b 17
Účinný útok II O(r y) = 1 => C -1 (y) r = 01 resp. 02 atd.. C -1 (y i ) = (y i-1 ) p i C-1 (y) r = 01 ((y i-1 ) p i ) r = 01 18
Účinný útok III nyní chceme dešifrovat blok block decryption oracle a = a 1 a b <= C -1 (y) použijeme O k získání posledního slova a b co s a b-k? a j začátek je stále náhodný r 1 r j-1, konec je r k =a k (b-j+2) použijeme padělaný šifrovaný text r y pro dešifrování druhý blok je r a, tedy poslední b-j+1 blok je b-j+2 pokud O(r y) = 1 tak víme, že r j a j = b-j+2 => tedy získáme a j 19
Příklad b=8 W=256 y i =C(y i-1 x i ), x i = C -1 (y i ) y i-1 C = 3c 68 74 6d 6c 3e 3c 68 65 61 64 3e 3c 6c 69 6e r = 00 00 00 00 00 00 00 00 = r 1 r 2 r 3 r 4 r 5 r 6 r 7 r 8 zkoušíme O(65 61 64 3e 3c 6c 69 6e 00 00 00 00 00 00 00 r 8 ) kde r 8 běží od 0 -> ff, dostaneme O()=1 pro r 8 = f3 a dešifrování posledního bajtu 6e je s největší pravděpodobností 01 f3 = a 8 další bajt r 8 = a 8 2 a dále zkoušíme všechny hodnoty r 7 O(65 61 64 3e 3c 6c 69 6e 00 00 00 00 00 00 r 7 f2) pokud O()=1 => r 7 a 7 = 2 => a 7 = r 7 2 20
Jiný příklad ŠIFRA: 4D A8 B5 17 64 59 26 B7 FA 0B 47 2C 04 04 62 33 Inicializační vektor: 12 12 12 12 12 12 12 12 r 1 : 4C50585A5F31545C r 2 : 07FDF633645E20B2 p 18 = 12 5C 01 = 4F p 28 = B7 B2 01 = 04 p 17 = 12 54 02 = 44 p 27 = 26 20 02 = 04 p 16 = 12 31 03 = 20 p 26 = 59 5E 03 = 04 p11 = 12 4C 08 = 56 p 21 = 4D 07 08 = 42 VELMI DOBRE! 21
Používání ENIGMY 1. Nastavení do základní konfigurace pro daný den 2. zvolí se 3 písmenná počáteční pozice rotorů (indikátor) od které se zašifruje 3 písmenný klíč zprávy 3. rotory se nastaví na pozici indikátoru, klíč ve zprávě, šifrování 2x za sebou, 4. nastavení rotorů na klíč zprávy, šifrování vlastní zprávy 5. jak preambule (zašifrovaný klíč zprávy), tak zpráva jsou předány operátorovi k přenosu (radio, morseovka) 22
23
24
Picture comes from the book Decrypted Secrets by Friedrich L. Bauer 25
Čtyři rotory Enigmy E a detail rotoru. Pictures shot at Bletchley Park, UK, 2005 26
Německá komunikační stanice během 2. světové války Picture shot at Bletchley Park, UK, 272005
Picture shot at Bletchley Park, UK, 28 2005
Luštění Enigmy Dillwyn Knox a Alan Turing měli repliky Enigmy, které pocházeli z Polska (včetně výsledků dosavadní kryptoanalýzy) možné útoky kryptoanalýza pouze s použitím šifrového textu útok s diskriminanty studium využití opakovaného šifrování tří písmenného diskriminantu útok s použitím pravděpodobné fráze známý či uhodnutý text crib každý znak se po šifrování nutně změní posunování crib po textu, dokud se ani jedno z písmen neshoduje se známým pořadím rotorů a jejich pozicí se hledalo nastavení steckeru, jež by umožnil transformaci šifrovaného textu na otevřený text, počet testovaných možností - 10 20 Graham Ellsbury The Turing Bombe 29
Bomba dešifrovací přístroj přední (vpravo), zadní strana (vlevo) a otevřený (dole) 30 bezpečnost, Kamil Malinka Pictures 2008shot at Bletchley Park, UK, 2005
Lorenz a Colossus Lorenz je rotorový šifrovací stroj používaný německými vysokými důstojníky v Evropě během 2. světové války (nahoře). Colossus je dešifrovací stroj pro Lorenz vytvořen Brity aniž by vůbec někdy původní šifrovací stroj spatřili. 31 bezpečnost, Kamil Malinka Pictures 2008 shot at Bletchley Park, UK, 2005