50 - Symetrická kryptografie. Vlastnosti, vlastnosti bezpečného algoritmu, délka klíče, útok silou, příklady symetrických algoritmů, Feistelovy šifry, DES, režimy činnosti, proudové šifry.
pondělí 29. května 2017
14:08
Symetrická kryptografie je rychlá
Má kratší klíče než asymetrická
Odesílatel i příjemce používají stejný klíč
Vlastnosti
Důvěrnost: zprávu nemůže přečíst nikdo kromě majitele klíče. Zaručena. 
Integrita: zpráva nemůže být nahrazena nebo modifikována aniž by se o tom příjemce dozvěděl. Zaručeno pokud se použije kontrolní součet. 
Autentizace: příjemce s jistotou ví, kdo danou zprávu poslal. Zaručeno.
Nepopiratelnost: odesílatel nemůže popřít, že by zprávu poslal.  Příjemce prokazuje, že zprávu převzal (obě strany ví, jak to bylo, potřebují přesvědčit třetí, nezávislou, stranu - obvykle soud). Nezaručena, více lidí může mít klíč. 
Délka klíče:
V současné době to chce alespoň 80b. 
Obvykle se používá 128b.
systematické hledání klíče zkoušením všech možností
lze postavit specializovaný hardware / superpočítače / paralelní zkoušení
56bit klíč 1/99 prolomen za 22 hodin využitím 100k PC + 1 spec; rychlost 250B klíčů /sek. Dle Moorůvho zákona bude 100bit klíč prolomen za podobnou dobu (1 den) o 70let.
offline a online
offline: omezením je jen rychlost výpočtu,
online: nutná komunikace s servrem, možno omezit pokusy
Feistelova šifra
Základ některých symetrickýcnh šifer
IMB 1973
Proces je reverzibilní, použije se stejný algoritmus, ale pořadí subklíčů je opačné
Požadavky na F
Aby fungovalo dešifrování: žádně!
Aby byl algoritmus bezpečný
Skrytí vlastnosti zprávy
Skrytí vlastnosti klíče
Vytvořit dobrou F je obtížné
Subklíče
Vytvářejí se v bloku Key Shedule
Tvorba subklíčů má velmi výrazn vliv na bezpečnost algoritmu
Možnost vytvoření slabých subklíčů (0000000)
Možnost slabých klíčů
DES
Přijat jako standard v roce 1976
Zašifroval nejvíce bitů ze všech algoritmů
Jedno kolo algoritmu:
Text se rozdělí na  levou a pravou část (obě 32b)
Pravá část jde do funkce F, kde:
Se provede expanze na 48b a permutace
XORuje se se subklíčem daného kola
Provede se substituce a redukce na 32b
Provede se další permutace P
Výstup F se XORuje s levou částí a dá se doprava
Pravá část se dá doleva
Symetrický šifrovací algoritmus tajným klíčem
Šifruje bloky dat o šířce 64 bitů klíčem o velikosti 56 bitů
Feistelova šifra s dodatečnou počáteční permutací IP
56-bitový klíč, posuvy a premutace vytváření 48-bitové subklíče pro každé kolo
Nejlepší známí útok je útok silou
Subklíče:
Generování subklíčů probíhá pomocí posunů
56b klíč se rozdělí na 2 28b části
Každá část jde do posuvného registru, který se každé kolo posune buď o 1 nebo 2 bity, tak aby po 16 kolech jsme dostai stejný klíč jako na začátku (provede se 56 posunů)
Tento alg.může vygenerovat slabé klíče
Např. levá a pravá polovina jsou samé jedničky nebo nuly - všech 16 subklíčů je stejných
Obecně je zde 64 slabých klíčů z 72 000 trilionů možných, což je OK
Útoky na  DES:
Nejlepší je útok silou (jen 56b klíč, což není na dnešní technice problém)
Komplementární klíče (délka klíče se sníží z 56 na 55b)
Režimy blokových šifer
Electronic Codebook (ECB)
Stejný blok otevřeného textu -> stejný blok zašifrovaného textu
Přeskládání bloků
Cipher Block Chaining (CBC)
Každý blok zprávy je xorován z předchozím zašifrovaným blokem
První blok je xorován s inicializačním vektorem IV
IV nemusí být tajný, ale útočník ho nesmí míc možnost ovlivnit
Je pitřeba jednoznačně zarovnat
Cipher Feedback (CFB)
Samosynchronizující proudová šifra
DES je použit pro generování pseudonáhodné posloupnosti (key stream)
DES je inicializován inicializačním vektorem IV
Vstupní blok DESu je posunut doleva o k bitů a zprava je doplněn k bity ciphertextu
Output Feedback (OFB)
Synchronní proudová šifra
DES je použit pro generování pseudonáhodné posloupnosti (key stream)
DES je inicializován inicializačním vektorem IV
Vstupní blok DESu je posunut doleva o k bitů a zprava je dplněn k bity výstupního bloku
Tentýž key stream nesmí být víckrát použit!
AES
Advanced encryption standart
Bezpečná, aktuální standart
Délka klíčů 128, 192, 256b
Algoritmus:
XOR subklíče s blokem (Add round key)
Provedení kol:
Byte Sub (každý bajt bloku je nahrazen jiným podle substituční tabulky). Nelineární krok.
Shift Row (Bajty jsou uspořáány do matice a posunuty)
Mix Column (násobení sloupců šifrovaného bloku maticemi). Nelineární krok.
Add round key
Proudová šifra
Data jsou šifrována bit po bitu (bajt po bajtu), tak, jak jsou předkládána šifrovacímu mechanismu
Většina algoritmů jsou BLOKOVé šifry
Synchronní proudové šifry
Pseudonáhodná posloupnost (key stream) je nezávislá na zprávě
Zašifrovaný text je obvykle spočten jako XOR otevřeného textu a hodnoty "key stream"
Např. Vernamova šifra, DES v Output Feedback (OFB) režimu
Samosynchronizující proudové šifry
Každý bajt pseudonáhodné posloupnosti je závislý na pevném počtu (např. 1) předcházejících bajtů šifrovaného textu
Umí se resynchronizovat
Např. Autokey, DES v Cipher Feedback (CFB) režimu
Generátory PRNG
Pseudo random number generator
Generují pseudonáhodnou posloupnost (key stream) z malého klíče a inicializačního vektoru / semínka
Metody
Blokové šifry v režimu OFB
Pomalé (jedno šifrování/byte)
Lineární kongruenční generátory
Ne příliš bezpečné
LFSR (Linear feedback shift registers)
Rychlé, ne vždy bezpečné