vod do klasickch a modernch metod ifrovn Jaro

  • Slides: 19
Download presentation
Úvod do klasických a moderních metod šifrování Jaro 2012, 10. přednáška

Úvod do klasických a moderních metod šifrování Jaro 2012, 10. přednáška

Generátory pseudonáhodných čísel • V mnoha kryptografických aplikacích je třeba umět generovat náhodně čísla,

Generátory pseudonáhodných čísel • V mnoha kryptografických aplikacích je třeba umět generovat náhodně čísla, proud bitů, atd. • Například vybíráme-li náhodně klíč z prostoru všech možných klíčů v případě blokové šifry. • Nebo když generujeme proud klíče proudovou šifru. • Nebo když generujeme veřejný klíč pro šifru RSA. • Používat fyzikální generátory (např. házení mincí) je pomalé a nákladné. • V praxi se proto místo generátorů náhodných čísel používají generátory pseudonáhodných čísel – algoritmy, které produkují posloupnosti čísel (bitů), které „vypadají náhodně“, nelze je rozlišit od posloupnosti náhodných čísel (bitů). • Špatný je takový generátor pseudonáhodných čísel, který umožňuje ze znalosti k po sobě jdoucích čísel předpovědět s nenulovou pravděpodobností následující číslo. • V příběhu Enigmy jsme viděli, co může způsobit špatný generátor.

Lineární rekurentní posloupnosti • V kryptografických aplikacích jsou jako generátory pseudonáhodných čísel často využívány

Lineární rekurentní posloupnosti • V kryptografických aplikacích jsou jako generátory pseudonáhodných čísel často využívány blokové šifry v CTR nebo OFB módu. • Jiné konstrukce využívají šifru RSA. • Další konstrukce jsou založené na hašovacích funkcích. • Zdaleka nejpopulárnější jsou konstrukce založené na lineárních rekurentních posloupnostech. • Lineární rekurentní posloupnost bitů řádu n dostaneme tak, že zvolíme inicializační vektor (s 0, s 1, …, sn-1) a pro každé nezáporné k definujeme sn+k = L(sk, sk+1, …, sn+k-1) = a 0 sk+a 1 sk+1+a 2 sk+2…. +an-1 sn+k-1 (mod 2), kde a 0, a 1, …, an-1 jsou bity, a 0 různé od 0. • Lineární rekurentní posloupnost je periodická. • Délka periody je menší nebo rovná 2 n-1. • Polynom f(x) = a 0 xn-1 + a 1 xn-2 + …. an-2 x + an-1 se nazývá generující polynom této posloupnosti. • Délka periody závisí na inicializačním vektoru a algebraických vlastnostech generujícího polynomu.

Lineární posuvné registry s 0 s 1 s 2 … sn-1 sn sn+1 sn+2

Lineární posuvné registry s 0 s 1 s 2 … sn-1 sn sn+1 sn+2 • Často se lze také setkat s termínem lineární posuvný registr. • Ten odkazuje na hardwarovou implementaci lineární rekurentní posloupnosti. s 0 s 1 s 2 …… sn-2 sn-1 s 2 s 3 …… sn-1 sn sn= L(s 0, s 1, …, sn-1) s 2 s 3 s 4 …… sn sn+1= L(s 1, s 2, …, sn)

Nevýhody lineárních rekurentních posloupností • Známe-li 2 n po sobě jdoucích bitů LRP řádu

Nevýhody lineárních rekurentních posloupností • Známe-li 2 n po sobě jdoucích bitů LRP řádu n, umíme spočítat koeficienty a 0, a 1, …, an-1 zpětné vazby L, a tedy celou funkci L a celý generující polynom pomocí jednoduché soustavy n lineárních rovnic o n neznámých. • Umíme tak předpovědět všechny další bity této posloupnosti. • Pokud neznáme řád n, ale známe aspoň 2 n po sobě jdoucích bitů, lze rovněž zjistit řád a celou funkci L. • Pomocí Berlekampova-Masseyho algoritmu z počátku 70. let minulého století. • Proto se od té doby nepoužívají lineární posuvné registry jako generátory pseudonáhodných posloupností bitů samostatně, ale přidává se k nim ještě nelineární filtr.

Nelineární filtr • Nelineární filtr je nějaká booleovská funkce f(x 0, x 1, …,

Nelineární filtr • Nelineární filtr je nějaká booleovská funkce f(x 0, x 1, …, xn-1), která přiřazuje n-tici bitů jeden bit. • Je to libovolné zobrazení z množiny 2 n do množiny 2. • LR posloupnost pak generuje proud klíče k 0, k 1, …, km, … pomocí předpisu • k 0=f(s 0, s 1, …, sn-1), • k 1=f(s 1, s 2, …, sn), ……. . , • km=f(sm, sm+1, …, sm+n-1), …. • Vlastnosti a bezpečnost takového proudu klíče pak závisí především na vlastnostech booleovské funkce f. • Špatně navržená nelineární funkce může mít pro bezpečnost příslušné proudové šifry fatální důsledky.

Lineární posuvné registry s nelineárním filtrem k 0 s 1 s 2 …… sn-2

Lineární posuvné registry s nelineárním filtrem k 0 s 1 s 2 …… sn-2 sn-1 k 0=f(s 0, s 1, …, sn-1), sn= L(s 0, s 1, …, sn-1) k 1 s 2 s 3 …… sn-1 sn k 1=f(s 1, s 2, …, sn), sn+1= L(s 1, s 2, …, sn) k 2 s 3 s 4 …… sn sn+1 k 2=f(s 2, …, sn+1),

Karta Mifare Classic je paměťové médium s omezenou možností provádět kryptografické operace. Je rozdělená

Karta Mifare Classic je paměťové médium s omezenou možností provádět kryptografické operace. Je rozdělená do sektorů, každý sektor je tvořen několika bloky, každý blok má kapacitu 16 bytů. klíč A podmínky přístupu klíč B datový blok klíč A datový blok UID Typ karty Data výrobce

Začátek komunikace Přiložíme-li kartu ke čtečce, karta se napřed nabije z elektromagnetického pole čtečky.

Začátek komunikace Přiložíme-li kartu ke čtečce, karta se napřed nabije z elektromagnetického pole čtečky. Poté proběhne antikolizní protokol, ze všech karet, které jsou v dosahu čtečky, si čtečka jednu vybere. Během antikolizního protokolu karta pošle čtečce své identifikační číslo u = UID velikosti 4 bytů. Poté, co si čtečka vybrala kartu s číslem u, zahájí autentizační protokol tím, že požádá o přístup k jednomu ze sektorů. Na to karta reaguje tím, že pošle čtečce náhodnou výzvu n. T velikosti 4 bytů. Tato výzva je generována lineárním posuvným registrem délky 16 se zpětnou vazbou L(x 0, x 1, …, x 15) = x 0+x 2+x 3+x 5 (mod 2). Inicializační vektor je na kartě pevně nahrán. Protože nabití karty a autentizační protokol trvají vždy stejnou dobu, karta pošle pokaždé za stejných podmínek stejnou výzvu.

Autentizace čtečka uid karta žádost o autentizaci, číslo bloku, klíč výzva, 32 bitů n.

Autentizace čtečka uid karta žádost o autentizaci, číslo bloku, klíč výzva, 32 bitů n. T (OT) výzva 32 bitů {n. R}, odpověď 32 bitů {a. R} (ŠT)

Šifrovaná část autentizace • Další část autentizačního protokolu již probíhá šifrovaně. • Na kartě

Šifrovaná část autentizace • Další část autentizačního protokolu již probíhá šifrovaně. • Na kartě je použita proudová šifra CRYPTO 1. • Ta je tvořena lineárním posuvným registrem délky 48 se zpětnou vazbou L(x 0, x 1, …, x 47)=x 0+x 5+x 9+x 10+x 12+x 14+x 17+x 19+x 24+x 25+x 27+ x 29+x 35+x 39+x 41+x 42+x 43 (mod 2). • Inicializační vektor je tvořený klíčem pro příslušný sektor. Ten je známý kartě i čtečce. • Daleko zajímavější je nelineární filtr. Ten je definovaný předpisem f(x 0, x 1, …, x 47)=fc(fa(x 9, x 11, x 13, x 15), fb(x 17, x 19, x 21, x 23), fb(x 25, x 27, x 29, x 31), fa(x 33, x 35, x 37, x 39), fb(x 41, x 43, x 45, x 47)). • Všimněte si, že nelineární filtr závisí pouze na 20 bitech stavového vektoru. • Tyto bity jsou navíc vybrané pravidelně, takže ob jeden krok se hodnota nelineární funkce počítá prakticky ze stejných hodnot stavu, pouze první a poslední bit se liší.

Definice funkcí fa, fb a fc • Vnější funkce fc je definována předpisem fc(y

Definice funkcí fa, fb a fc • Vnější funkce fc je definována předpisem fc(y 0, y 1, y 2, y 3, y 4) = (y 0 or ((y 1 or y 4) and (y 3 xor y 4))) xor ((y 0 xor (y 1 and y 3)) and ((y 2 xor y 3) or (y 1 and y 4)). • Vnitřní funkce fa a fb jsou definovány jako fa(y 0, y 1, y 2, y 3) = ((y 0 or y 1) xor (y 0 and y 3)) xor (y 2 and ((y 0 xor y 1) or y 3)), fb(y 0, y 1, y 2, y 3) = ((y 0 and y 1) or y 2) xor ((y 0 xor y 1) and (y 2 or y 3)). • Takto definovaný nelineární f filtr má řadu slabin. • Například změna posledního bitu na vstupu f změní hodnotu f s pravděpodobností pouze 3/32. • S pravděpodobností 5/8 hodnota f nezávisí na posledních 4 bitech. • atd, atd.

Pokračování autentizačního protokolu • Čtečka na výzvu karty odpoví svojí výzvou n. R a

Pokračování autentizačního protokolu • Čtečka na výzvu karty odpoví svojí výzvou n. R a odpovědí a. R na výzvu karty. • Obě odpovědi jsou poslané šifrovaně, tj. jako {n. R} a {a. R}. • Nakonec karta odpoví na výzvu čtečky vlastní šifrovanou odpovědí • {a. R}. • Současně s příslušnými 4 bytovými výzvami a odpověďmi je po každém bytu posílán kontrolní paritní bit. • Ten je spočítán z otevřeného textu. • Odeslán je ale šifrovaně, což je zásadní chyba. Proč to je chyba si ukážeme později.

Vývoj stavu LFSR 1. 2. 3. 4. • Načtení 48 bitů klíče k 0,

Vývoj stavu LFSR 1. 2. 3. 4. • Načtení 48 bitů klíče k 0, k 1, ……, k 47, do LFSR, si=ki pro i=0, …, 47, si+48=L(si, …, si+47) xor n. T, i xor ui, pro i=0, …, 31, si+80=L(si+32, si+79) xor n. R, i, pro i=0, …, 31, si+112=L(si+64, …, si+111) pro všechna i. Z uvedených formulek vyplývá, že známe-li vnitřní stav šifry (tj. 48 po sobě jdoucích bitů si) v jakémkoliv okamžiku, můžeme z této znalosti a 4 bytových slov odposlechnutých během antikolizního a autentizačního protokolu zpětně dopočítat všechny ostatní hodnoty si, a tím získat klíč k pro daný sektor. • K tomu stačí prohlédnout si důkladněji formulky definující změny stavu v každém kroku. • Cílem útoku na kartu je tedy získat nějakým způsobem stav šifry v jakémkoliv okamžiku.

Proud klíče • Jednotlivé bity klíče jsou definovány jako bi=f(si, …, si+31) pro každé

Proud klíče • Jednotlivé bity klíče jsou definovány jako bi=f(si, …, si+31) pro každé i • Definujeme úseky klíče ksj=(b 32 j, b 32 j+1, …, b 32 j+31), pro j=0, 1, 2, 3. • Výzva n. R je šifrována jako {n. R}=n. R xor ks 1, tj. {n. R, i}=n. R, i xor b 32+I pro i=0, 1, …, 31. • Odpověď a. R je šifrována jako {a. R}=a. R xor ks 2, tj. {a. R, i}=a. R, i xor b 64+i pro i=0, 1, …, 31. • Odpověď a. T je šifrována jako {a. T}=a. T xor ks 3, tj. {a. T, i}=a. T, i xor b 96+i pro i=0, 1, …, 31.

Chyby protokolu • Jde vlastně o postranní kanály. • Již jsme se zmínili o

Chyby protokolu • Jde vlastně o postranní kanály. • Již jsme se zmínili o kontrolních paritních bitech doprovázejících každý odeslaný byte. • Zajímají nás paritní byty doprovázející n. T, {n. R} a {a. R}. • Ty jsou definovány následovně. • pj = n. T, 8 j xor n. T, 8 j+1 xor … xor n. T, 8 j +7 xor 1, pj+4 = n. R, 8 j xor n. R, 8 j+1 xor … xor n. R, 8 j +7 xor 1, pj+8 = a. R, 8 j xor a. R, 8 j+1 xor … xor a. R, 8 j +7 xor 1, vše pro j = 0, 1, 2, 3. • Paritní bity jsou sice počítány z otevřeného textu, posílány jsou ale šifrovaně: {pj} = pj xor b 40+8 j pro j = 0, 1, …, 11. • Tato skutečnost je významnou chybou protokolu.

Chybová hláška • Poté, co karta obdrží výzvu čtečky {n. R}, odpověď {a. R}

Chybová hláška • Poté, co karta obdrží výzvu čtečky {n. R}, odpověď {a. R} na vlastní výzvu n. T a příslušné paritní bity, provede kontrolu. • Nejdříve překontroluje správnost paritních bitů p 4, …, p 11. Nejsou-li správně, karta nereaguje. • Tak tomu má také být. • Jsou-li paritní bity správně, karta dále překontroluje správnost odpovědi a. R. . Pokud je i ta správná, karta odpoví svojí vlastní odpovědí {a. T} a autentizační protokol je dokončen, čtečka získala přístup k příslušnému sektoru na kartě. • Je-li ale odpověď a. R nesprávná, karta odpoví šifrovanou chybovou hláškou 0101. • To je zásadní chyba protokolu, útočník tak získá informace o 4 bitech klíče. Kromě toho získá dalších 8 bitů informace, neboť také ví, že paritní bity {p 4}, …, {p 11} jsou správně. • Z takto získávaných informací lze nakonec zjistit stav šifry a tedy i klíč pro daný sektor.

Strategie útoku • Útočník předstírá, že je čtečka. • Naváže s kartou kontakt a

Strategie útoku • Útočník předstírá, že je čtečka. • Naváže s kartou kontakt a požádá o přístup k sektoru, který jej zajímá. • Na výzvu karty n. T odpoví náhodnými 64 bity {n. R} a {a. R} a čeká, kdy karta zareaguje chybovou hláškou. • Celý postup mnohokrát opakuje. • Po získání dostatečného množství informací o klíči zbytek klíče najde hrubou silou. • Při útoku lze různě využívat další slabiny. • Jde zejména o nekvalitní nelineární filtr. • A také o to, že inicializační vektor generátoru náhodných výzev je na kartě nahrán na pevno a karta tak při různých pokusech vysílá vždy stejnou „náhodnou výzvu“ n. T.

Články ke kartě Mifare Classic • Podrobnější informace lze získat z následujících tří článků.

Články ke kartě Mifare Classic • Podrobnější informace lze získat z následujících tří článků. • Flavio D. Garcia et al. , Dismantling Mifare Classic. • Obsahuje především popis algoritmů implementovaných na kartě, a některé jejich slabiny. • Flavio D. Garcia et al. , Wirelessly pickpocketing a Mifare Classic Card. • V druhém článku jsou popsány další slabiny a jiné typy jejich využití v případě, kdy útočník má přístup pouze ke kartě, nikoliv ke čtečce. • Nicolas T. Courtois, The dark side of security by obscurity. • Poslední článek obsahuje podstatné vylepšení útoků z předchozího článku. • Všechny články jsou přístupné z fakultní adresy.