symetrická kryptografie princip šifrování Feistelovy sítě DES IDEA GOST AES další symetrické blokové algoritmy Blowfish, Twofish, CAST, FEAL, Skipjack a Kea, MARS, RC6, a další
symetrická jeden tajný klíč stejný pro šifrování i dešifrování Květuše Sýkorová začátek komunikace nutné předat klíč bezpečný důvěryhodný kanál další potřebné informace typ algoritmu, specifikace algoritmu a klíče, atd.
statistika náklady a čas pro dešifrování lze snadno vyčíslit různé matematické metody příklad: rok 2003, DES, luštění klíče klíč=40b, 1200 PC 4 hodiny klíč=128b, 1000PC 3,1 10 22 let Květuše Sýkorová dostačující doba pro zdolání šifry individuální požadavky citlivost a aktuálnost zprávy, určuje časové rozpětí pro změnu klíče
ECB Electronic Code Book krátké zprávy, klíče nedoporučuje se pro dlouhé zprávy» dnes málo používané šifrování blok po bloku každý blok šifrován odděleně stejný blok o.t. je šifrován vždy na stejný blok š.t. Květuše Sýkorová
CBC Cipher Block Chaining šifrování zpráv výstupní blok š.t. na výstup XOR s dalším blokem o.t. před jeho zašifrováním Květuše Sýkorová
CFB Cipher Feed Back mode šifrování zpráv náhodně vygenerovaný blok o.t. XOR s 1.blokem o.t. před jeho zašifrováním výstupní blok š.t. na výstup XOR s dalším blokem o.t. před jeho zašifrováním Květuše Sýkorová
OFB Output Feed Back mode v aplikacích bez tolerance chyb, vysokokapacitní spoje s vysokou redundancí výstupní blok š.t. na výstup pro vytvoření zpětné vazby na blok o.t. Květuše Sýkorová
princip mnoha symetrických šifrových algoritmů postup: blok délky n L i 1 R i 1 rozdělit na polovinu L 0 + R 0 klíč K f(r i 1, K i ) vygenerovat dílčí subklíček i konstrukce iterační šifry L i R i Květuše Sýkorová šifrování, dešifrování,!!! Funkce f nemusí mít inverzní funkci!!! L i R i f(l i, K i ) L i 1 R i 1
příklad blok = 1011 0110 L=1011 R=0110 f + key = permutace 1234 3124 1234 4321 L i 1 R i 1 f(r i 1, K i ) L i R i L i R i Květuše Sýkorová f(l i, K i ) L i 1 R i 1
vlastnosti k funkci f nemusím hledat inverzní funkci inverzní funkce nemusí vůbec existovat pro dešifrování stejný postup jako pro šifrování POZOR: opačné pořadí funkcí používá stejný klíč pro šifrování i dešifrování POZOR: opačné pořadí klíčů pro dešifrování dlouhodobá ověřenost bezpečnosti šifrování základem mnoha šifrových algoritmů DES, GOST, Blowfish, FEAL, CAST, MARS, RC6, Skipjack, Twofish
Data Encryption Standard blokový symetrický šifrovací algoritmus nejznámější a nejrozšířenější symetrický algoritmus na světě vyvinut firmou IBM autoři: Tauchman, Mayer (kryptografové) původní název: Lucifer vývoj: 1973 žádost NBS o nový algoritmus pro šifrování 1975 první publikace 1976 oficiální schválení, federální standard (listopad) publikováno 15.1.1977 2002 nahrazen AES 2005 oficiálně ukončen (19.5.2005, FIPS 46 3)
USA 25 let standard FIPS (Federal Information Processing Standard)» FIPS 46 popisuje jako šifru DEA (Data Encryption Algorithm) vyhovuje také normě ANSI standard X3.92 1981» DEA 1, norma ISO/DP 8227 z roku 1983 konečná fáze vývoje instituce NSA (National Security Agency)» modifikace algoritmu délka klíče, S box» domněnka, že zabudovali skrytý vstup (trap door) NBS (National Bureau of Standards)» dnes NIST (National Institute of Standards and Technology) určen pouze pro civilní sektor nikdy nesloužil pro utajování velmi citlivých dat» vojenství, vládní informace, apod.
vlastnosti bloky = 64b klíč = 64b Feistelovy sítě 16 rund vývoj především HW implementace režimy použití: ECB CBC CFB OFB
vlastnosti klíč = 64b každý 8 bit je paritní zabezpečení integrity klíč pro šifrování = 56b prostor klíčů = 2 56 = 7,2 10 16 původně = 112b (Lucifer)» prostor klíčů = 2 112 = 5,2 10 33 potenciálně slabé klíče (weak keys) nutné vyloučit (bezpečnost algoritmu = síla klíče)» např. key = 111 111000 000
algoritmus počáteční (vstupní) permutace bloku PP na 64b rozdělení bloku na poloviny L 0 a R 0 2 x 32b Květuše Sýkorová výpočet L i a R i expanze (E box) substituce (S box) permutace (P box) 16 rund sloučení L 16 a R 16 do jednoho bloku koncová (výstupní) permutace bloku PP 1 na 64b
vlastnosti blok o.t. = 64b rozdělíme na 2 x 32b (L 0 a R 0 ) v každé rundě (Feistelovy sítě)» i=0,1,,15 R i rozšíříme na 48b (expanzivní permutace, E box) sčítačka: R i + subkey K i substituce na 32b (S box)» S box = 6 vstupů + 4 výstupy po 8b přímá permutace (P box) XOR s L i prohození pozice L i a R i v poslední rundě neprohazovat 32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1 16, 07, 20, 21, 29, 12, 28, 17, 01, 15, 23, 26, 05, 18, 31, 10, 02, 08, 24, 14, 32, 27, 03, 09, 19, 13, 30, 06, 22, 11, 04, 25
algoritmus podrobněji PP = transpozice bloku délky 64b stejná realizace šifrování i dešifrování key = 64b PP 1 je opačná k PP redukce na 56b 58, 50, 42, 34, 26, 18, 10, 02, 60, 52, 44, 36, 28, 20, 12, 04, 62, 54, 46, 38, 30, 22, 14, 06, 64, 56, 48, 40, 32, 24, 16, 08, 57, 49, 41, 33, 25, 17, 09, 01, 59, 51, 43, 35, 27, 19, 11, 03, 61, 53, 45, 37, 29, 21, 13, 05, 63, 55, 47, 39, 31, 23, 15, 07 57, 49, 41, 33, 25, 17, 09, 01, 58, 50, 42, 34, 26, 18, 10, 02, 59, 51, 43, 35, 27, 19, 11, 03, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 07, 62, 54, 46, 38, 30, 22, 14, 06, 61, 53, 45, 37, 29, 21, 13, 05, 28, 20, 12, 04 před každou rundou» posun bitů» rozdělení na 2x28b» postupná rotace o 1b vlevo v závislosti na rundě výběr 48b subkey» kompresní transpozice
vlastnosti PP a PP 1 nemá vliv na bezpečnost souvisí se způsobem implementace PP ( PP 1 ) = I pro komunikaci častá výměna klíče ochrana klíčů šifrování souborů na HD neměnit často klíče master DES key propastný rozdíl mezi HW a SW implementací HW čip je několik set krát rychlejší
prolomení diferenciální a lineární kryptoanalýza útok hrubou silou 1977 Diffie, Hellman jednoúčelový počítací stroj, za 1 den, cena cca 20 mil. $ 1981 3 dny, cena cca 50 mil. $ 1988 vyvinut čip, prověření 1 mil. šifer / sec. 1990 objevení diferenciální kryptoanalýzy 1993 Michael Wiener návrh PC, vyluštění v průměru za 3,5 hod., cena cca 1 mil. $ 1999 luštění kratší než 1 den dnes DES Cracker
zesílení Triple DES (TDEA) EDE dvojnásobný klíč (2TDES, 2TDEA) C = E K1 (D K2 (E K1 (M)) M = D K1 (E K2 (D K1 (C)) EDE trojnásobný klíč (3TDES, 3TDEA) C = E K3 (D K2 (E K1 (M)) M = D K1 (E K2 (D K3 (C)) Květuše Sýkorová mnohem bezpečnější 3 krát pomalejší snadná implementace NIST schválil Triple DES do roku 2030 pro citlivé vládní informace
zesílení DESX společnost RSA Data Security metoda bílení (whitening) před každou rundou, sčítačka MOD2, klíč + další 64b klíč DES s nezávislými podklíči zvětšení klíče na 16 x 48b = 768b Květuše Sýkorová CRYPT implementace pro UNIXové systémy jednosměrná funkce pro generování hesel lehké šifrování
zesílení GDES zobecněný, generalizovaný upraven pro urychlení a posílení (1981 rakouská fa. Schmüller-Bichl) proměnlivý počet najednou zpracovávaných bloků o.t.» neodolal diferenciální kryptoanalýze Květuše Sýkorová RDES na konci každé rundy prohození L a R klíčově závislá» má mnoho slabých klíčů, Nepoužívat! DES s alternativními S boxy možná výměna vnitřních S boxů
International Data Encryption Algorithm bezpečný a rychlý blokový symetrický šifrovací algoritmus odolný vůči diferenciální kryptoanalýze vyvinut v rámci společného projektu SFIT (Swiss Federal Institute of Technology in Zürich) firma Ascom-Tech patentován Evropa i USA nekomerční použití zdarma 2 krát rychlejší než DES větší bezpečnost proti útoku hrubou silou
na veřejnost uveden 1992 součástí systému PGP (Pretty Good Privacy) program pro šifrování, dešifrování, podepisování, správu klíčů» 1. verze Phil Zimmermann, 1991 standardizován OpenPGP, 1997» nejčastěji při šifrování e mailů Květuše Sýkorová režimy použití: ECB CBC CFB OFB
vlastnosti blok = 64b klíč = 128b prostor klíčů = 2 128 = 3,4 10 38 52 subklíčů operace modulární aritmetiky sčítání modulo 2 16 + 1 násobení modulo 2 16 + 1 operace XOR 8 rund
algoritmus generování subklíčů 52 x 16b rozdělení bloku výpočet 4 x 16b modulární operace + XOR 8 rund závěrečná transformace první 4 kroky rundy 4 subkey sloučení do bloku B 1 B 2 B 3 B 4 K 1 K 2 K 3 K 4 K 5 K 6 C 1 C 2 C 3 C 4
algoritmus podrobněji generování subkeys primární 128b klíč rozdělíme na 8 x 16b subkeys posun o 25 bitů doleva opakovat celkem 52 subkeys každá runda 6 x subkeys 8 x 6 = 48 subkeys výstupní transformace 4 x subkeys bloky 16b v rámci celého algoritmu
Gosudarstvěnnyj standart (государственный стандарт) standard GOST 28147 89 blokový symetrický šifrovací algoritmus schválen jako ruský kryptografický standard v roce 1989 pro státní orgány a státní správu SSSR k šifrování všech dokumentů bez ohledu na stupeň utajení po rozpadu SSSR spravován EASC (Euro Asian Council for Standardization) realizace HW i SW rozdíl od DES není standardizována struktura S boxů
vlastnosti blok = 64b klíč = 256b prostor klíčů = 2 256 = 1,15 10 77 rozšiřitelné až na 768b prostor klíčů = 2 768 = 1,5 10 231 generování subkeys 8 x 32b z 256b klíče zajišťuje odolnost proti útoku hrubou silou prodlužuje dobu šifrování Feistelovy sítě 32 rund odolnost proti kryptoanalytickému útoku» dosud pouze útok hrubou silou
algoritmus generování subklíčů 8 x 32b rozdělení bloku na L 0 a R 0 2 x 32b Květuše Sýkorová výpočet L i a R i součet R i + K i mod 2 32 substituce (S box) levotočivý posun (11b) XOR s L i 32 rund sloučení do bloku zdroj: http://www.familytree.ru/en/cipbooks/book011.htm
algoritmus podrobněji generování subkeys primární 256b klíč rozdělíme na 8 x 32b subkeys každá runda 1 x subkeys 64b o.t. rozdělíme na 2 x 32b (L 0 a R 0 ) v každé rundě (i=0,1,,31) součet R i + K i mod 2 32 substituce rozdělení 8 x 4b» 8 různých S boxů, 4 vstupy, 4 výstupy, princip v tajnosti smísení do slova 32b levotočivý posun (11b) XOR s L i v poslední rundě neprohazovat L 32 s R 32
Advanced Encryption Standard iterační symetrická bloková šifra s proměnnou délkou bloku a klíče bloky a klíče = 128b, 192b nebo 256b Rijndael autoři: Vincent Rijmen, Joan Daemen (Belgie) nahradil DES NIST vyhlásil 2.1.1997 veřejnou a otevřenou soutěž říjen 2000 oznámen vítěz schválil jako federální standard USA s platností od 26.5.2002 předpokládá se životnost 20 30 let
NIST soutěž najít silnou blokovou symetrickou šifru pro vládní i komerční využití otevřený jednoduchý algoritmus nechráněný patenty bezpečnost algoritmu důležitější než rychlost červen 1998 15 kandidátů červen 1999 5 finalistů říjen 2000 Mars, RC6, Rijndael, Serpent, Twofish vítěz Rijndael zdrojové kódy ve spoustě programovacích jazyků: http://www.esat.kuleuven.ac.be/~rijmen/rijndael/
vlastnosti blok = 128b, 192b nebo 256b klíč = 128b, 192b nebo 256b 10, 12 nebo 14 rund v závislosti na délce klíče a bloku poslední blok nutné doplnit na odpovídající délku padding (mechanismus doplnění) primitivní» doplnění nulami nedoporučeno složitější = různá schémata» nejčastější mechanizmus podle PKCS #7 (podrobně RFC 2315)» je vestavěn v.net Frameworku
vlastnosti blok, klíč = 128b, 192b nebo 256b matematické základy Galoasovo těleso GF(2 8 ) prvky mají 8 bitů» b 7, b 6,, b 1, b 0 reprezentují polynomy Květuše Sýkorová» b 7.x 7 + b 6.x 6 + + b 1.x + b 0 sčítání» pomocí operace XOR násobení» modulo nerozložitelný polynom m(x) = x 8 + x 4 + x 3 + x + 1
vlastnosti základní datový typ = slovo velikost 4B = 32b šifrový klíč matice 4 řádky x N k sloupců N k = 4 (128b), 6 (192b) nebo 8 (256b) slov Květuše Sýkorová K 0,0 K 0,1 K 0,2 K 0,3 K 1,0 K 1,1 K 1,2 K 1,3 K 2,0 K 2,1 K 2,2 K 2,3 K 3,0 K 3,1 K 3,2 K 3,3 K 0,0 K 0,1 K 0,2 K 0,3 K 0,4 K 0,5 K 0,6 K 0,7 K 1,0 K 1,1 K 1,2 K 1,3 K 1,4 K 1,5 K 1,6 K 1,7 K 2,0 K 2,1 K 2,2 K 2,3 K 2,4 K 2,5 K 2,6 K 2,7 K 3,0 K 3,1 K 3,2 K 3,3 K 3,4 K 3,5 K 3,6 K 3,7
vlastnosti různé transformace mezivýsledek = stav stavy matice 4 řádky x N b sloupců N b = 4 (128b), 6 (192b) nebo 8 (256b) slov» N b = délka bloku / 32b Květuše Sýkorová S 0,0 S 0,1 S 0,2 S 0,3 S 1,0 S 1,1 S 1,2 S 1,3 S 2,0 S 2,1 S 2,2 S 2,3 S 3,0 S 3,1 S 3,2 S 3,3 S 0,0 S 0,1 S 0,2 S 0,3 S 0,4 S 0,5 S 0,6 S 0,7 S 1,0 S 1,1 S 1,2 S 1,3 S 1,4 S 1,5 S 1,6 S 1,7 S 2,0 S 2,1 S 2,2 S 2,3 S 2,4 S 2,5 S 2,6 S 2,7 S 3,0 S 3,1 S 3,2 S 3,3 S 3,4 S 3,5 S 3,6 S 3,7
vlastnosti stavy každý sloupek = jedno slovo aktuální prvky stavu označeny a ij Květuše Sýkorová a 0,0 a 0,1 a 0,2 a 0,3 a 1,0 a 1,1 a 1,2 a 1,3 a 2,0 a 2,1 a 2,2 a 2,3 a 3,0 a 3,1 a 3,2 a 3,3 a 0,0 a 0,1 a 0,2 a 0,3 a 0,4 a 0,5 a 0,6 a 0,7 a 1,0 a 1,1 a 1,2 a 1,3 a 1,4 a 1,5 a 1,6 a 1,7 a 2,0 a 2,1 a 2,2 a 2,3 a 2,4 a 2,5 a 2,6 a 2,7 a 3,0 a 3,1 a 3,2 a 3,3 a 3,4 a 3,5 a 3,6 a 3,7
vlastnosti vstup (o.t., key), výstup (š.t.) 1 rozměrné pole s 8b hodnotami (1B) ozn. 0 až 4*N b 1 namapovat na Bajty pořadí stavů: a 0,0, a 1,0, a 2,0, a 3,0, a 0,1, a 1,1, a 2,1, pořadí klíčů: k 0,0, k 1,0, k 2,0, k 3,0, k 0,1, k 1,1, k 2,1, na konci šifrování z matice zpět do pole Květuše Sýkorová a 0,0 a 0,1 a 0,2 a 0,3 a 1,0 a 1,1 a 1,2 a 1,3 a 2,0 a 2,1 a 2,2 a 2,3 a 3,0 a 3,1 a 3,2 a 3,3
vlastnosti počet rund N r závisí na N k a N b N r =? N b = 4 N b = 6 N b = 8 N k = 4 10 12 14 N k = 6 12 12 14 N k = 8 14 14 14 Květuše Sýkorová standardizovaný AES N k N b N r AES 128 4 4 10 AES 192 6 4 12 AES 256 8 4 14
vlastnosti v každé rundě iterační funkce pro 1 rundu 4 různé bajtově orientované operace SubByte (nelineární operace) ShiftRow (lineární operace) MixColumn (nelineární operace) AddRoundKey (lineární operace) režimy použití: ECB CBC CFB OFB
operace SubByte (nelineární operace) jednoduchá substituce každý byte nahrazen jiným podle předem daného klíče Rijndael S box (8bitů) má zabránit útokům (nelineárnost) založené na jednoduchých algebraických vlastnostech Květuše Sýkorová zdroj: http://en.wikipedia.org/wiki
operace ShiftRow (lineární operace) jednoduchá transpozice dle předpisu přeházení bytů Květuše Sýkorová zdroj: http://en.wikipedia.org/wiki
operace MixColumn (nelineární operace) proházení sloupců a vynásobení stejným polynomem c(x) Květuše Sýkorová zdroj: http://en.wikipedia.org/wiki
operace AddRoundKey (lineární operace) každý byt subklíče zkombinujeme s bytem zprávy Květuše Sýkorová zdroj: http://en.wikipedia.org/wiki
symetrická bloková šifra blok = 64b klíč 32 448b (proměnlivý) autor: kryptolog B. Schneier, 1993 není patentován Feistelovy sítě bezpečnost prověřena mnoha testy jedná se o velmi silný a výpočetně bezpečný šifrovací algoritmus výhody: rychlost, snadná implementace
symetrická bloková šifra blok = 128b klíč = 128b, 192b nebo 256b neúspěšný kandidát na AES kvalitní šifra Feistelovy sítě 16 rund různé operace míchání š.t. + key násobení a aritmetické sčítání substituční boxy (S boxy) pseudo Hardamanovy transformace MDS matice
symetrická bloková šifra blok = 64b klíč 40 128b autoři: Carlisl Adamsen, Stafford Taverns (kanada) velmi podobný algoritmu Blowfish Feistelovy sítě S boxy cyklická rotace bitů 12 nebo 16 rund patentován firmou Entrust Technologies postoupila pro volné užití používán Microsoftem součást PGP
Fast Data Encryption Algorithm symetrická bloková šifra blok = 64b klíč = 64b Feistelovy sítě navržen v Japonsku firmy: Nippon Telegraph a Telephone Corporation, 1986 původní verze neodolala diferenciální a lineární kryptoanalýze zesílení zvýšení počtu rund
symetrická bloková šifra blok = 64b klíč = 80b Feistelovy sítě 32 rund míchání šifrovaných slov s klíčem operace mod, XOR posuvné registry s nelineární zpětnou vazbou výměna klíčů protokol KEA (Key Exchange Algorithm) asymetrický alg. původně pouze HW realizace vyvinut NSA pouze pro USA přísné podmínky použití červen 1998 na nátlak zveřejněn zjištěny zadní vrátka čipy clipper, capstone, keystone (utajení algoritmu, nevýhodou cena)
symetrická bloková šifra blok = 128b klíč = 128b, 192b nebo 256b autoři: ze společnosti IBM neúspěšný kandidát na AES vybrán do užšího kola výběru kvalitní šifra Feistelovy sítě využívá optimalizované S boxy datově závislé rotace operace míchání šifrovaného textu s klíčem XOR vzájemné mísení textu
symetrická bloková šifra blok = 128b klíč = 128b, 192b nebo 256b autoři: z firmy RSA Data Security Inc. neúspěšný kandidát na AES vybrán do užšího kola výběru kvalitní šifra Feistelovy sítě 20 rund RC6 vychází z šifry RC5 - umístěny dvě paralelně využívá operace míchání šifrovaného textu s klíčem násobení, aritmetické sčítání, substituční boxy, cyklická substituce
RC2 RC4 Rivest Cipher 2 symetrická bloková šifra s proměnnou délkou klíče autor: Rivest Rivest Cipher 4 symetrická proudová šifra s proměnnou délkou klíče až 256b autor: Rivest velmi rychlá využívána v SSL, v Microsoft Office, v MS Windows 2000, v ORACLE Secure SQL,
RC5 RC6 symetrická bloková šifra s proměnnou délkou bloku s proměnnou délkou klíče s volitelným počtem rund symetrická bloková šifra vychází z šifry RC5 umístěny dvě paralelně
symetrická bloková šifra blok = 128b klíč = 128b, 192b nebo 256b neúspěšný kandidát na AES vybrán do užšího kola výběru kvalitní šifra 32 rund využívá různé operace míchání šifrovaného textu s klíčem XOR, aritmetické sčítání, bitové posuny konstantní optimalizované substituční boxy rychlost je srovnatelná s DES bezpečnější než 3DES rychlost šifrování NEZÁVISÍ na délce klíče
Secure And Fast Encryption Routine symetrická bloková šifra blok = 64b klíč = 64b nebo 128b volně k dispozici není patentován varianty: SAFER K 64 SAFER K 128 vyšší bezpečnost proti útoku hrubou silou 128b klíč