Šifrovací algoritmy kódování zpsob zápisu informace pomocí znak zvolené abecedy kódu šifrování podtída kód, k jejichž interpretaci je nutné znát dodatenou informaci (klí) Klasifikace šifrovacích algoritm podle zpsobu práce blokové, proudové podle klí s tajným klíem (symetrické), s veejným klíem (asymetrické) Kerckhoffv pedpoklad: Útoník zná všechny aspekty šifrovacího algoritmu s výjimkou použitého klíe. Kryptosystém je trojice (G, E, D) pravdpodobnostních p-time algoritm splující následující kritéria: Algoritmus G (generátor klí) nad vstupen 1 n vytvoí dvojici bitových etzc Pro každý pár (e, d) z oboru hodnot G(1 n ) a pro každé {1, 0} * algoritmus E (šifrování) a D (dešifrování) splují Pr(D(d, E(e, )) = ) = 1 kde pravdpodobnost se bere pes interní náhodná rozhodnutí algoritm E a D. Kryptosystém (G, E, D) je sémanticky bezpený pokud existuje p-time transformace T taková že pro každý polynomiáln velký obvod {C n }, každou posloupnost X n nn kde X n je polynomiáln omezeno, každý pár polynomiálních funkcí f a h: {1, 0} * {1, 0} *, každý polynom p a všechna dostate velká n X X 1 n n Pr CnE n ( Xn),1, hxn fxn PrC' n1, hxn fxn G1(1 ) pn, kde C n = T(C n ) je obvod vytvoený transformací T nad vstupen C n. Funkce h poskytuje parciální informaci o plaintextu X n. Kryptosystém (G, E, D) poskytuje nerozlišitelné šifrování, pokud pro každý polynomiáln velký obvod {C n }, každý polynom p, všechna dostatené velká n, poly n poly n x, y 0, 1 (tj. stejn dlouhá ) a z 0, 1 každé k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 1 / 22
1 n y 1 1 p n 1 1 Pr Cn z, E n x 1 Pr Cn z, E G G 1 Pravdpododbnost se bere pes náhodná rozhodnutí algoritm G a E. Lze ukázat, že ob definice jsou ekvivalentní. Blokové kryptosystémy s tajným klíem stejný klí použit pro šifrování a dešifrování mapují n-bitový plaintext na n-bitovou šifru za použití k-bitového klíe (parametr) lze chápat jako jednoduché substituní šifry s nad obrovskou abecedou každá šifra je soustavou bijekcí definujících permutaci nad n-bitovými vektory, tj. je invertibilní, klí vybírá konkrétní bijekci Hodnocení blokových šifer odhadovaná úrove bezpenosti... dra v historickou bezpenost roste s asem velikost klíe je horním limitem bezpenosti šifry výkon (efektivita) meno potem instrukcí na zašifrovaný byte velikost bloku komplexita kryptografické transformace zvtšení dat šifrováním propagace chyb komplexita expanze klíe (inicializace) mnoho dnešních systém jsou Feistelovy šifry obecný tvar jednoho cyklu Feistelovy sít: k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 2 / 22
R j,i - reversibilní funkce textu a klíe N i - nereversibilní funkce textu a klíe Kryptosystém DES Vyvinula firma IBM na zakázku NBS poátkem 70. let. Pvodní název DEA, v USA DEA1. Jako standard pijat 23. 11. 1976 Dodnes používán v komerní sfée, pro vojenské úely není certifikován ani pro ochranu neklasifikovaných informací. Patrn nejrozsáhleji používaný šifrovací algoritmus všech dob. Norma ANSI X3.92 šifruje 64-bitové bloky oteveného textu na 64-bitové výstupní bloky, délka klíe 64 bit Požadavky zadavatele 1. Alg. musí poskytovat vysoký stupe ochrany 2. Musí být formáln popsatelný a snadno pochopitelný 3. Bezpenost algoritmu nesmí záviset na znalosti i neznalosti samotného algoritmu. 4. Musí být dostupný pro nejširší veejnost. k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 3 / 22
5. Musí být použitelný v nejrznjších aplikacích. 6. Musí být efektivní. 7. Musí být ovitelný. 8. Musí být exportovatelný. Analýza úvodní permutace nemá prakticky žádný vliv íliš krátký klí, navíc efektivn pouze 56-bitový komplementárnost - C E K, P C E K, P existence slabých (weak) klí (E(K) = D(K)) a poloslabých (semiweak) klí (E(K 1 ) E(K 2 )) = Id. nevhodný návrh S-box Možné zpsoby zvýšení bezpenosti 1. vícenásobné šifrování - nestaí dvojnásobné, ke skutenému zvýšení bezpenosti nutno šifrovat C E K D K E K 1 2 1 2. zvtšení délky hesla na 768 bit - nepíliš úinné k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 4 / 22
k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 5 / 22
k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 6 / 22
Pouení z DESu paralelní aplikace malých S-Box je nevhodná pro SW implementaci íliš malý klí permutace a permutaní výbry tžko zvládnutelné v SW Feistelova sí principiáln funguje a vykazuje dobrou odolnost vi analýze nové algoritmy by mly být vhodné pro SW implementaci na bžném HW (výbr operací) je teba zvýšit odolnost vi masivn paralelnímu útoku (drahá key schedule) rozhodn delší klíe, pípadn blok vysokou odolnost vykazují širší S-boxy a na klíi závislé interní struktury algoritmu nahrazení paralelních operací, které jsou neefektivní a mají omezený lavinový efekt sekvenními operacemi Systém Blowfish opt Feistelova šifra, délka bloku 64 bit, promnná délka klíe až 448 bit Subklíe edpoítávají se ped každým šifrováním P-pole = 32 bitové klíe P 1, P 2, P 18 pole S-box, každý 256 32-bitových položek S 1,0, S 1,1, S 1,255 S 2,0, S 2,1, S 2,255 S 3,0, S 3,1, S 3,255 S 4,0, S 4,1, S 4,255 Nereverzibilní funkce F: F 32 32 x S S mod 2 xor S S mod L x L a b c d 1, a 2, b 3, c 4, d 2 k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 7 / 22
Generování podklí 1. Inicializujeme P-pole a všechny S-boxy pevným etzcem 2. xor P 1 s prvními 32 bity klíe, xor P 2 s dalšími 32 bity klíe atd. 3. Zašifrujeme nulový etzec 4. P 1 a P 2 nahradíme výstupem pedchozího kroku 5. zašifrujeme výstup kroku 3. 6. P 3 a P 4 nahradíme výstupem pedchozího kroku 7. stejn pro ostatní položky P-pole a všechny S-boxy Algoritmus provádí 16 cykl nad vstupem délky 64 bit. Pro úely analýzy navrženy jeho zmenšené varianty (MiniBlowfish) pracující nad vstupem 32 popípad 16 bit. k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 8 / 22
k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 9 / 22
Kryptosystém IDEA publikován v roce 1991 pod názvem IPES, autoi X. Lai a J. Massey souasný název akronymem za International Data Encryption Algorithm bloková šifra s délkou bloku 64 bit, pracující s klíem o délce 128 bit algoritmus je patentován, nelze voln používat Blok oteveného textu je rozdlen na tyi ásti, každá o délce šestnáct bit. Poté je provedeno osm kol šifrovacího procesu. k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 10 / 22
16 bit 16 bit 16 bit 16 bit K 1 K 2 K 5 (1) K 3 K 4 1 2 3 4 5 6 (1) (1) (1) (1) 1. kolo dalších 7 kol 7 8 9 10 (1) K 6 11 12 13 14 K 1 K 2 K 3 K 4 (9) (9) (9) (9) Tvorba subklí celkem 52 subklí: 1. klí rozdlen na osm ástí - vznikne prvních osm subklí 2. je provedena rotace klíe vlevo o 25 bit 3. vzniklý etzec je opt rozdlen na osm ástí subklí 4. Opakováním 2 a 3 získáme potebné množství subklí. Dešifrování stejný algoritmus jako pro šifrování, rozdíl pouze v použitých subklíích k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 11 / 22
použijeme-li pro šifrování v i-tém (i = 1,, 8) kole klí K 1 (i), K 2 (i), K 3 (i), K 4 (i), K 5 (i), K 6 (i) a v závrené fázi K 1 (9), K 2 (9), K 3 (9), K 4 (9), pro dešifrování použijeme klí ve tvaru kde (K x (i) ) -1 znamená multiplikativní inverzi mod 2 16 +1, -K x (i) aditivní inverzi mod 2 16 IDEA mže být používána v libovolném pracovním módu pro blokové šifry, zejména v módech ECB, CBC, OFB, CFB lze použít trojnásobné šifrování EDE Triple-IDEA se dvma 128-bitovými klíi, použít 52 nezávislých etzc Analýza Je zajímavé, že pokud bychom algoritmus upravili tím zpsobem, že zvtšíme délku všech etzc, se kterými pracuje na dvojnásobek, dojde ke ztrát bezpenosti. Algoritmus je považován za bezpený. Roku 2007 publikován útok proti algoritmu omezenému na 6 kol. RC5 publikoval v roce 1994 R. Rivest, pináší novou myšlenku použití rotací závislých na datech velmi pružný algoritmus s celou adou parametr délka šifrovacího klíe (0 až 255 byt) poet kol šifrovacího procesu (opt 0 až 255) z hodnot 16, 32, 64, ale i vyšších lze zvolit délku slova, algoritmus zpracovává bloky o délce dvojnásobku slova k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 12 / 22
oznauje bitové XOR, + znaí sítání modulo délka slova, -- odítání, x <- y znamená rotaci etzce x vlevo o y bit a symbol -> rotaci opaným smrem. Šifrování edpokládejme prozatím, že máme k dispozici pole subklí S. Nech se blok oteveného textu skládá ze dvou ástí A a B. Šifrování probíhá dle následujícího edpisu: A = A + S[0]; B = B + S[1]; for i = 1 to <poet_kol> do A = ((A B) <- B) + S[2i]; B = ((B A) <- A) + S[2i + 1]; Dešifrování for i = <poet_kol> downto 1 do B = ((B -- S[2i + 1]) -> A) A); A = ((A -- S[2i]) -> B) B); B = B -- S[1]; A = A -- S[0]; Inicializace pole subklí S, pomocné pole L o velikosti tolik slov, aby se do nj "vešel" klí a dv magická ísla: Pw = Odd((e 2 )2 w ) a Qw = Odd(( 2 )2 w ) kde e je základ pirozeného logaritmu (2,718281...), je tzv. zlatý ez (1,618033...) a w znaí délku slova. Funkce Odd vrací nejbližší liché celé íslo. Do pole L zkopírujeme od zaátku šifrovací klí, a na konci pípadn doplníme nulami. Pole S naplníme dle pedpisu S[0] = P w ; for i = 1 to 2 * (<poet_kol> + 1) -- 1 do S[i] = S[i -- 1 + Q w ]; a proces generování subklí dokoníme promícháním obou polí: i = j = 0; A = B = 0; for k = 1 to 3 * max(s, l) do A = S[i] = (S[i] + A + B) <- 3; B = L[j] = (L[j] + A + B) <- (A + B ); k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 13 / 22
i = (i + 1) mod(s); j = (j + 1) mod(l); kde s resp. l jsou velikosti polí S, resp. L. Velikost slova je rozumné volit v závislosti na velikosti slova používaného procesoru, 128 bit pro hašování. Šest kol pro nenároné aplikace (není bezpené), 32 pro ty nejnárojší. Jako rozumná se jeví volba délka slova 32 bit, 12 kol, 16bajtový klí, což krátce zapíšeme RC5-32/12/16. Pouení z devadesátých let nezbytné zvýšit odolnost vi diferenní a lineární kryptoanalýze (maskování klíem, zvýšení potu kol) nov je teba reagovat na neteoretické fyzikální útoky na procesor realizující šifru (výbr operací ekvivalentn zatžujících procesor) zvýšení efektivity operací využitím plné délky slova procesoru v jednotlivých operacích Kryptosystém Serpent 32 kol SP sí, vstup 128 bit plaintext, výstup 128 bit šifra, klí variabilní délky až 256 bit konzervativní návrh využívající konstantní bitové rotace, substituce, XOR souástí definice algoritmu 8 konstantních S-box S 0 S 7 se vstupem a výstupem o šíi 4 bity Šifrování Provede se 31 kol následujícího procesu, na závr algoritmus provede ješt jedno míchání s klíem, substituci a závrené míchání s klíem k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 14 / 22
Bi + 1 Tonda Beneš Ochrana informace jaro 2011 Bi Ki (32 krát paraleln) Si Si Si X 0 X 1 X 2 X 3 13 3 1 7 7 5 3 22 Bi + 1 Tvorba subklí doplnit klí K na 256 bit (pidáním 1000 0b) 1. K = w -8, w -7, w -6, w -5, w -4, w -3, w -2, w -1 2. w -i = (w i-8 w i-5 w i-3 w -1 i) <<< 11 kde i 0, 1,, 131 3. {k 4i, k 4i+1, k 4i+2, k 4i+3 } = S (i mod 8) + 3 (w 4i, w 4i+1, w 4i+2, w 4i+3 ) kde i 0, 1,, 33 4. K i = {k 4i, k 4i+1, k 4i+2, k 4i+3 } Dešifrování Spote se inverzní hodnota pro všechny S-boxy a algoritmus se spustí pozpátku emž všechny operace se invertují k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 15 / 22
Analýza Algoritmus je navrhován aby byl odolný proti známým metodám analýzy, byl jedním z pti postupujících kandidát pro AES Kryptosystém Rijndael produkní bloková šifra s promnnou délkou bloku 16, 24 nebo 32 bajt a klíem o délce 128, 192, 256 bit založena na pod obném principu jako algoritmus Square Stavem šifry oznaujeme obsah pole a i,j o rozmrech 4 x (délka_bloku / 32) Podobn klí je pole k i,j o rozmrech 4 x (délka_klíe / 32) a 0,0 a 0,1 a 0,2 a 0,3 a 0,4 a 0,5 a 1,0 a 1,1 a 1,2 a 0,3 a 1,4 a 1,5 a 2,0 a 2,0 a 2,2 a 2,3 a 2,4 a 2,5 a 3,0 a 3,1 a 3,2 a 3,3 a 3,4 a 3,5 k 0,0 k 0,1 k 0,2 k 0,3 k 1,0 k 1,1 k 1,2 k 0,3 k 2,0 k 2,0 k 2,2 k 2,3 k 3,0 k 3,1 k 3,2 k 3,3 blok plaintextu je do stavu vkopírován v poadí a 0,0, a 1,0, atd. podobn klí poet kol je závislý na délce bloku a klíe: Klí / 4 6 8 Blok 4 10 12 14 6 12 12 14 8 14 14 14 Šifrování Round(State,RoundKey){ ByteSub(State); ShiftRow(State); MixColumn(State); AddRoundKey(State,RoundKey); } k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 16 / 22
FinalRound(State,RoundKey){ ByteSub(State) ; ShiftRow(State) ; AddRoundKey(State,RoundKey); } Zde: ByteSub(State) a 0,0 a 0,1 a 0,2 a 0,3 a 0,4 a 0,5,0 a 1,1 a 1,2 a 0,3 a 1,4 a 1,5 a 2,0 a 2,0 a 2,2 a 2,3 a 2,4 a 2,5 a 3,0 a 3,1 a 3,2 a 3,3 a 3,4 a 3,5 S-box b 0,0 b 0,1 b 0,2 b 0,3 b 0,4 b 0,5 b 1,0 b 1,1 b 1,2 b 0,3 b 1,4 b 1,5 b 2,0 b 2,0 b 2,2 b 2,3 b 2,4 b 2,5 b 3,0 b 3,1 b 3,2 b 3,3 b 3,4 b 3,5 S-box je nelineární invertibilní transformace definovaná ve dvou krocích provede se invertování (vi násobení) nad GF(2 8 ), 0 je inverzní sama k sob aplikuje se následující transformace ShiftRow (State) provádí rotaci ádk 1, 2 a 3 stavu o pevnou hodnotu závislou na velikosti stavu MixColumn (State) C(x) k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 17 / 22
a 0,0 a 0,1 a 0,2 a 0,3 a 0,4 a 0,5 a 1,0 a 1,1 a 1,2 a 0,3 a 1,4 a 1,5 a 2,0 a 2,0 a 2,2 a 2,3 a 2,4 a 2,5 a 3,0 a 3,1 a 3,2 a 3,3 a 3,4 a 3,5 b 0,0 b 0,1 b 0,2 b 0,3 b 0,4 b 0,5 b 1,0 b 1,1 b 1,2 b 0,3 b 1,4 b 1,5 b 2,0 b 2,0 b 2,2 b 2,3 b 2,4 b 2,5 b 3,0 b 3,1 b 3,2 b 3,3 b 3,4 b 3,5 realizuje násobení sloupce jako polynomu nad GF(2 8 ) konstantním polynomem C(x) = 3x 3 +x 2 +x+2 modulo x 4 +1 AddRoundKey (State, RoundKey) provádí míchání (XOR) stavu s píslušným podklíem Zajímavé je, že celé kolo šifrovacího procesu lze na 32 bitovém procesoru implementovat jako 4 výbry z tabulky a 4 XOR operace Expanze klíe KeyExpansion(byte Key[4*Nk] word W[Nb*(Nr+1)]) { for(i = 0; i < Nk; i++) W[i] = (key[4*i],key[4*i+1],key[4*i+2],key[4*i+3]); for(i = Nk; i < Nb * (Nr + 1); i++) { temp = W[i - 1]; if (i % Nk == 0) temp = SubByte(RotByte(temp)) ^ Rcon[i / Nk]; else if (i % Nk == 4) temp = SubByte(temp); W[i] = W[i - Nk] ^ temp; } } k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 18 / 22
Analýza Algoritmus byl podroben rozsáhlé analýze a zvolen jako nový standard AES V souasnosti není známa jakákoliv podstatná slabina Zvláštností je matematický model provádných transformací Režimy innosti blokových šifer 1. ECB (electronic code book) - pouze šifrování klí C E K, P 2. CBC (cipher block chaining) - vhodný pro šifrování zpráv Cn E K, Pnxor Cn1 3. CFB (cipher feed back) - pro šifrování podobné proudovým šifrám 1 Cn Pnxor E K,shl Regk, left Cn, k 4. OFB (output feed back) - pro aplikace, kdy je teba eliminovat šíení enosových chyb, vysokokapacitní spoje s velkou redundancí (, video) n1 H E K, shl Regk, left H, k n C Pxor H n n n Proudové šifry zpracovávají otevený text po jednotlivých bitech Kryptosystém RC4 (arcfour) proudová šifra od R. Rivesta, velmi jednoduchý a rychlý algoritmus k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 19 / 22
používá stavové pole S velikosti 256 bajt (a ješt jedno pro inicializaci klíe) a dva ítae Inicializace pole S naplníme ísly 0 255 (S[0] = 0, S[1] = 1, ) pomocné pole S2 naplníme klíem S[i] = key[i mod keylen] zamícháme pole S: j = 0; for (i = 0; i < 256; i++) { j += S[i] + S2[i] mod 256; S[i] S[j]; } pole S2 a promnné i, j smažeme Šifrování i = i + 1 mod 256; j = j + S[i] mod 256; S[i] S[j]; output S[ S[i] + S[j] ] mod 256; output se míchá s plaintextem pomocí XOR Analýza Dosud považováno za velmi kvalitní šifru, není znám jakýkoliv zpsob útoku Jediným nedostatkem špatné statistické vlastnosti prvních cca 100 bajt výstupu Systém Fish proudová šifra založená na Fibonacciho generátoru pseudonáhodných ísel Vypouštjící generátory (shrinking generators) edp. dva generátory pseudonáhodných ísel A a S. A generuje posloupnost a 0, a 1, prvk S obdobn posloupnost s 0, s 1, prvk GF GF 2 n A 2, n S k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 20 / 22
n dále budeme používat funkci d: GF2 S GF2 Vypouštjící procedura ponechá k dalšímu zpracování prvky a i a s i pokud d s i 1 aplikací vypouštcí procedury získáme posloupnosti z 0, z 1, z a 0, a 1,, resp. h 0, h 1, z s 0, s 1, Popis algoritmu Fish zvolíme n A, n S rovno 32 jako A i S budeme používat uzavený Fibonacciho generátor a a a i i55 i24 s s s i i52 i19 mod2 32 32 mod2 Samozejm prvky a -55, a -54,, a -1 musí být vhodným zpsobem odvozeny z klíe. Obdobn pro posloupnost s i. Funkce d mapuje 32-bitový vektor na jeho nejmén význaný bit. Není bezpené používat k šifrování pímo posloupnost z 0, z 1, : s pravdpodobností 1/8 totiž trojice a i, a i-55, a i-24 projde celá do posloupnosti {z i } rozdlíme posloupnost z 0, z 1, na páry (z 2i, z 2i+1 ), h 0, h 1, na páry (h 2i, h 2i+1 ) a vypoítáme výsledné hodnoty r 2i, r 2i+1 : c i z i h i h i 2 2 2 2 1 d h c z 2i 2i1 2i 2i1 r2i c2i d2i r z d 2i1 2i1 2i Jako tradi znaí xor, oznauje bitové and. Protože h 2i, h 2i+1 mají nejnižší bit jednikový, je vhodné nastavovat nejnižší bit z 2i, z 2i+1 v závislosti na hodnot r 2i, r 2i+1. Šifrování se provádí nap. xorováním výsledné posloupnosti s oteveným textem. k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 21 / 22
Analýza Algoritmus byl publikován koncem roku 1993, nebyl nikdy šíeji používán, není známo, že by existoval efektivní útok. k samostudiu problematiky. Jeho obsah se nemusí shodovat s rozsahem látky pednášené v konkrétním semestru 22 / 22