Blokové šifry Flashcards
Product Ciphers, konstrukce, Feistelova síť, DES, AES, základní módy blokových šifer.
Blokové šifry
Na rozdíl od proudových šifer operují po blocích dat o pevné velikosti pomocí symetrického klíče. Algoritmy pro šifrování a dešifrování mají na vstupu blok o velikosti N a klíč velikosti K, na výstupu je N-bitový blok ciphertextu.
Operace musí být obousměrná (reverzibilní), aby bylo možné šifrovaný text dešifrovat zpět na původní otevřený text
Produktová šifra
Produktová šifra kombinuje různé jednoduché operace na vstupu za účelem ztížení kryptoanalýzy.
Využívá se:
Substituce - nahrazení jednoho symbolu jiným na základě předem definované substituční tabulky.
Permutace (transpozice) - Přeskupení bitů nebo symbolů v rámci bloku.
Mixování klíče - Bitový XOR vstupního textu s podklíčem
Jejich kombinací se dosahuje difúze (vstupní bit ovlivňuje mnoho výstupních bitů) a konfúze ( vztah mezi klíčem a šifrovaným textem je co nejsložitější.
Feistelova síť
Je konstrukt rozdělující vstupní blok na Levou a Pravou část. Každé kolo šifrování aplikuje na jednu část kryptografickou funkci, která bere vstup a podklíč a výsledkem modifikuje druhou část.
Výstup šifrování jedné části je XORován s druhou.
Dešifrování je možné použitím stejného algoritmu, protože konstrukce je reverzibilní.
Kryptografická funkce invertovatelná být nemusí
DES
Módy operací
Šifrovaná data jsou rozdělena na bloky které se šifrují postupně.
ECB (Electronic Codebook- Nejjednodušší + Nejméně bezpečný
Každý blok se šifruje nezávisle - stejný vstupní a výstupní blok. Lze rozpoznat vzory. (jako šifrování každé stránky zvlášť)
CBC (Cipher Block Chaining) - Blok je závislý na předchozím. Výstupní blok se XORuje s předchozím šifrovaným blokem před zašifrováním. První blok se XORuje s Inicializačním Vektorem
CFB (Cipher Feedback) - Pro generování “šifrovacího proudu”. Výstup šifry se XORuje s aktuálním plaintextem čímž vznikne ciphertext a výstup se pak zpětně zavádí do šifry (feedback) - Vhodný pro streaming.
OFB (Output Feedback) - Výstup závisí jen na IV a klíči. Výstup z šifry (ne plaintext!) se opakovaně šifruje a používá se jako šifrovací proud.
CTR (Counter Mode) - Nejmodernější, rychlý, paralelizovatelný. Místo použití předchozích bloků používá čítač, který šifruje. Výstup šifry se XORuje s plaintextem - Používá ho TLS.
MAC (Message Authentication Code) - používá se pro ověření integrity zprávyvstupem je zpráva + tajný klíč -> výstup je krátký kód (MAC)
DES
Jedna z prvních globálně používaných blokových šifer.
Využívá 56b klíče a pracuje s 64b bloky v šestnácti rundách.
Využívá Feistelovo schéma (pro „míchání“ dvou 32b polovin bloku).
DES používá hlavní klíč (64 bitů, z toho 8 bitů parity) k vygenerování 16 podklíčů, každý o délce 48 bitů.
Není dostatečně bezpečný (brute-force útoky, diferenciální a lineární kryptoanalýza). Poprvé zlomen 1997, v roce 2016 zlomený během patnácti dnů na GTX 1080 Ti.
Typ šifry: Symetrická bloková šifra.
Délka bloku: 64 bitů.
Délka klíče: 56 bitů (efektivní délka, formálně 64 bitů včetně 8 bitů parity).
Počet kol: 16.
Konstrukce: Feistelova síť.
3DES
Aplikuje DES třikrát s různými klíči (k1, k2, k3), aby zvýšil bezpečnost.
Bezpečnější, ale pomalejší.
Používán v praxi, ale považován za zastaralý.
AES (Rijndael)
Moderní standard blokových šifer schválený NIST. Rijndael je symetrická bloková šifra, která byla v roce 2001 vybrána jako nový standard šifrování AES. Velmi rychlý na hardware i software.
Typ šifry: Symetrická bloková šifra.
Délka bloku: Libovolná mezi 128, 192 nebo 256 bity (pro AES pevně 128 bitů).
Délka klíče: Libovolná mezi 128, 192 nebo 256 bity.
Počet kol: Určen délkou bloku a klíče:
128bitový klíč: 10 kol.
192bitový klíč: 12 kol.
256bitový klíč: 14 kol.
Konstrukce: Substituční-permutační síť (SPN).
Dešifrování je prováděné inverzními kroky (postup pozpátku)
Rundovní operace:
Substituce - Každý bajt se nahradí podle S-Boxu (nahrazení podle tabulky) - odolnost proti diferenciálním a lineárním útokům
ShiftRows - První řádek zůstává, druhý se posune o 1 vlevo, třetí o 2 atd. - zajišťuje difuzi.
MixColumns - Každý sloupec se vynásobí maticí. Kombinuje bajty ve sloupci - šíření vlivu jednoho bajtu na celý sloupec.
AddRoundKey - každý bajt v mřížce s XORuje s částí klíše pro dané kolo.