Principy základních symetrických blokových algoritmů (Feistelovy šifry, DES, AES) a asymetrických algoritmů (RSA, Diffie-Hellman, DSA/ElGamal). Principy konstrukce hašovacích funkcí. Kryptosystémy založené na principu eliptických křivek.
Kerckhoffsův princip
Symetrické blokové algoritmy používají tajný klíč sdílený mezi komunikujícími stranami, pracují s bloky dat stanovené délky, na kterou se data musejí zarovnat pomocí paddingu.
Blokové šifry typicky pracují na principu „confusion and diffusion“.
Šifry, které jsou navrženy jako Feistelova síť.
Tento přístup umožňuje problém návrhu dobré šifry rozdělit na dva podproblémy:
Výhodou je, že šifrování i dešifrování je prakticky stejné. Funkce nemusí být invertibilní, stačí pouze otočit pořadí subklíčů.
V každém kole se pracuje pouze s polovinou vstupu. Feistelovy šifry tedy předpokládají vstup sudé délky, který je rozdělen na poloviny – .
Následkem toho mají Feistelovy šifry většinou více kol než jiné algoritmy. Ale v jednotlivých kolech jsou opakovány poměrně jednoduché operace. Pro každé kolo je odvozen čerstvý subklíč z klíče.
Zástupci jsou např. Lucifer, DES, Blowfish, Twofish, CAST-128 a další.
Feistelovy šifry je možné zobecnit tak, že šifra pracuje s nestejně velkými částmi vstupu místo polovin. Také je možné vytvořit nehomogenní Feistelovu síť, kde funkce není ve všech kolech stejná.
Data Encryption Standard
Horst Feistel z IBM navrhnul šifru Lucifer, která se po drobných změnách provedených NSA stala FIPS standardem pod názvem DES v roce 1977.
DES má definovanou délku bloku 64 bitů. Délka klíče je 64 bitů (56 bitů bez parity), původní Lucifer pracoval se 128bitovým klíčem.
Feistelova šifra s 16 koly.
Obsahuje iniciální a finální permutace, které po zveřejnění nepřidávají žádnou bezpečnost.
Klíč je rozdělen na poloviny (28 bitů dlouhé). V každém kole je zvoleno prvních 24 bitů z každé poloviny a použito jako subklíč (délka 48 bitů). Obě poloviny jsou mezi koly rotovány o jeden nebo dva bity doleva v závislosti na kole.
Pracuje vždy s polovinou vstupu (32 bitů). Vstup funkce je rozšířen na 48 bitů. Provede se XOR se subklíčem pro dané kolo. Výsledek projde přes S-boxy, kde se každých 6 bitů nahradí 4 bity podle tabulky (nelineární substituce). Nakonec v každém kole jsou data přeskládána podle dané permutace, P-box.
Pro dnešní použití je klíčový prostor příliš malý, také velikost bloku není dostatečná.
Nejpraktičtější známý útok je útok hrubou silou. DES šifra je odolná vůči diferenciální kryptoanalýze. Pro prolomení všech 16 kol je potřeba zvolených plaintextů. Při použití lineární kryptoanalýzy je potřeba známých plaintextů.
Změny provedené NSA se týkaly použitých S-boxů, jejichž kriteria návrhu nebyly zveřejněny. Tyto změny vedly ke spekulacím, že NSA přidala backdoor. Po zveřejnění vyšlo najevo, že takto upravené S-boxy zvýšily bezpečnost DES.
3DES je varianta DES, která používá klíče větší délky.
Délka bloku je původních 64 bitů. Délka klíče může být 56, 112 a 168 bitů.
Pro 56b klíč a 3DES je stejný jako DES. Pouze z důvodu zpětné kompatibility.
Pro 112b klíč .
112b klíč odpovídá asi 80b bezpečnosti kvůli útokům se známým plaintextem, případně se zvoleným plaintextem.
168b klíč odpovídá 112b bezpečnosti kvůli meet-in-the-middle útoku.
Advanced Encryption Standard
NIST vypsal soutěž o novou symetrickou blokovou šifru, která by nahradila DES. Podmínky byly délka bloku 128 bitů, podporované délky klíče 128, 192 a 256 bitů a nová šifra měla být zároveň výkonnější než DES. Z 15 přihlášených vzešlo 5 finalistů: Rijndael, Serpent, Twofish, RC6 a MARS. V roce 2001 byla vítězem vyhlášena šifra Rijndael.
Původní Rijndael mohl pracovat s libovolnou délkou bloku, která byla násobek 32. V AES je délka bloku fixována na 128 bitů.
AES není Feistelova šifra, ale je to tzv. substitution permutation network, tedy také využívá S-boxy a P-boxy. Počet kol závisí na použité délce klíče.
Délka klíče | Počet kol | Označení |
---|---|---|
128 bitů | 9+1 | AES-128 |
192 bitů | 11+1 | AES-192 |
256 bitů | 13+1 | AES-256 |
V každém kole se provede:
Na rozdíl od DES pro šifrování a dešifrování AES jsou potřeba různé obvody.
Side-channel útoky na některé implementace, např. OpenSSL.
Nejlepší známé útoky na vlastní šifru jsou pro 7 kol AES-128, 8 kol AES-192 a 9 kol AES-256.
Při použití asymetrických algoritmů má každá strana vlastní klíčový pár skládající se z veřejného a soukromého klíče. Pro zajištění stejné úrovně bezpečnosti jsou potřeba výrazně delší klíče než u symetrických algoritmů.
Výhodou těchto algoritmů je, že odpadá nutnost ustavit sdílený klíč mezi komunikujícími stranami. Na druhou stranu je nějakým způsobem nutné věrohodně propojit veřejný klíč a identitu jeho majitele. PGP využívá tzv. „web of trust“, certifikáty vydané ověřenými certifikačními autoritami, atd.
Autoři Ron Rivest, Adi Shamir a Leonard Adleman, 1977.
Podobný systém byl vyvinut britskou tajnou službou v roce 1973.
Použití tohoto algoritmu je možné rozdělit do několika fází
Před šifrováním zprávy je zpráva doplněna paddingem, který zajistí, že plaintext nepatří mezi tzv. „insecure plaintexts“. Používal se padding definovaný v PKCS#1, ale bylo ukázáno, že pro některé zprávy tento padding neposkytuje dostatečnou úroveň bezpečnosti. Do PKCS#1 byla přidána definice nového schématu OAEP.
Kromě šifrování je možné RSA algoritmus použít i pro digitální podpis.
Stejný klíč by neměl být použit pro šifrování a podepisování zpráv zároveň. Výpočty lze urychlit využitím čínské věty o zbytku (CRT).
RSA je považován za bezpečný algoritmus, protože není známý způsob, jak efektivně faktorizovat velká čísla. Není známý žádný polynomiální algoritmus.
Shorův algoritmus umožňuje faktorizovat čísla v polynomiálním čase na kvantovém počítači, tedy existence kvantového počítače by znamenala rozbití RSA.
Bezpečnost RSA závisí na volbě prvočísel a a do jisté míry i volba . Malé hodnoty a špatně implementovaný nebo žádný padding zvyšují riziko útoku. Často , to je považováno za kompromis mezi předcházením těchto útoků a efektivitou šifrovacích operací (pro velká jsou výpočty složitější). Také je důležitá volba soukromého klíče . Pokud je dostatečně malé, pak je možné jej efektivně spočítat z a .
Při znalosti specifikace HW a době trvání operací je možné odvodit hodnotu soukromého klíče .
Jako obrana před tímto útokem se místo počítá . je potom možné odstranit. Pro každý ciphertext je použita nová náhodná hodnota . Této metodě se říká „cryptographic blinding“.
Algoritmus pro ustavení sdíleného klíče mezi dvěma stranami na nezabezpečeném kanálu bez žádné předchozí sdílené znalosti.
Autoři Whitfield Diffie a Martin Hellman, 1976. Podobný algoritmus byl opět o něco dříve vyvinut britskou tajnou službou.
Běžně používaná hodnota je 2, 3 nebo 5. Čísla a a prvočíslo musejí být velká.
Diffie-Hellman využívá problém diskrétního logaritmu.
Algoritmus ve své původní podobě nezahrnuje autentizaci stran, je tedy možný man-in-the-middle útok.
Toto schéma je možné rozšířit i pro libovolný počet stran. Tyto strany pak sdílejí jeden tajný klíč , kde jsou tajné exponenty všech zůčastněných stran.
Digital Signature Algorithm, FIPS standard pro digitální podpisy z roku 1991.
Veřejný klíč je . Soukromý klíč je .
Hodnota je pro DSA kritická. Použití stejného opakovaně, předvídatelného nebo prozrazení několika bitů může vést k rozbití DSA.
Autor je Taher ElGamal, 1984.
ElGamal je většinou využíván v hybridních kryptosystémech, symetrický klíč je zašifrován použitím ElGamal a zpráva samotná je šifrovaná symetrickou šifrou.
Bezpečnost ElGamal je založena na problému diskrétního logaritmu.
Existuje i ElGamal algoritmus pro digitální podpisy, který je podobný DSA.
Požadované vlastnosti hashovací funkce:
Hashovací funkce mohou být vytvořeny ze symetrických blokových šifer například pomocí konstrukcí Miyaguchi-Preneel nebo Matyas-Meyer-Oseas.
Asymetrická kryptografie, která využívá eliptické křivky nad konečnými tělesy.
Problém diskrétního algoritmu na eliptických křivkách:
Převod diskrétního alg. klasického na EC diskr. alg.
Založeno na problému hledání diskrétního logaritmu náhodné eliptické křivky s ohledem na zvolený bod.
Např. ECDH (Elliptic curve Diffie–Hellman), ECDSA (Elliptic Curve DSA) a další.
Pro zajištění 128bitové bezpečnosti je potřeba křivka nad , kde . Pro srovnání RSA potřebuje 3072bitové klíče pro dosažení stejné úrovně bezpečnosti.
Ondra Mokoš
Předělané eliptické křivky: Marcel Poul