V této kapitole probereme různé režimy činnosti blokové šifry. Jedná se o procedurální pravidla pro obecnou blokovou šifru. Zajímavé je, že různé režimy vedou k dosažení různých vlastností, které zvyšují bezpečnost základní blokové šifry.
Bloková šifra zpracovává datové bloky pevné velikosti. Obvykle je velikost zprávy větší než velikost bloku. Proto je dlouhá zpráva rozdělena na řadu postupných bloků zprávy a šifra pracuje s těmito bloky po jednom.
Režim elektronické kódové knihy (ECB)
Tento režim je nejjednodušší způsob zpracování řady postupně uvedených bloků zprávy.
Operace
-
Uživatel vezme první blok otevřeného textu a zašifruje jej klíčem, čímž vznikne první blok šifrového textu.
-
Poté vezme druhý blok otevřeného textu a provede stejný postup se stejným klíčem a tak dále a tak dále.
Režim ECB je deterministický, to znamená, že pokud blok otevřeného textu P1, P2,…, Pm zašifrujeme dvakrát pod stejným klíčem, budou výstupní bloky šifrového textu stejné.
V podstatě můžeme pro daný klíč technicky vytvořit kódovou knihu šifrových textů pro všechny možné bloky otevřeného textu. Šifrování by pak znamenalo pouze vyhledat požadovaný otevřený text a vybrat odpovídající šifrový text. Operace je tedy analogická přiřazování kódových slov v kódové knize, a proto dostává oficiální název – elektronický kódový režim operace (ECB). Je znázorněn následujícím způsobem –
Analýza režimu ECB
Ve skutečnosti jakákoli aplikační data obvykle obsahují částečné informace, které lze uhodnout. Například rozsah platu lze odhadnout. Šifrový text z režimu ECB může útočníkovi umožnit uhodnout otevřený text metodou pokus-omyl, pokud je zpráva s otevřeným textem v předvídatelném rozsahu.
Je-li například známo, že šifrový text z režimu ECB šifruje údaj o platu, pak malý počet pokusů umožní útočníkovi údaj získat. Obecně si nepřejeme používat deterministickou šifru, a proto by se režim ECB neměl ve většině aplikací používat.
Režim CBC (Cipher Block Chaining)
Režim provozu CBC zajišťuje závislost zpráv při generování šifrového textu a činí systém nedeterministickým.
Provoz
Provoz režimu CBC je znázorněn na následujícím obrázku. Kroky jsou následující –
-
Načíst n-bitový inicializační vektor (IV) do horního registru.
-
XORovat n-bitový blok otevřeného textu s hodnotou dat v horním registru.
-
Šifrovat výsledek operace XOR základní blokovou šifrou s klíčem K.
-
Vložte blok šifrového textu do horního registru a pokračujte v operaci, dokud nejsou zpracovány všechny bloky otevřeného textu.
-
Pro dešifrování se data IV XORují s prvním dešifrovaným blokem šifrového textu. První blok šifrového textu je rovněž zaveden do registru nahrazujícího IV pro dešifrování dalšího bloku šifrového textu.
Analýza režimu CBC
V režimu CBC je aktuální blok otevřeného textu přidán k předchozímu bloku šifrového textu a výsledek je pak zašifrován klíčem. Dešifrování je tedy opačný proces, který zahrnuje dešifrování aktuálního šifrového textu a následné přidání předchozího bloku šifrového textu k výsledku.
Výhodou CBC oproti ECB je, že změna IV má za následek odlišný šifrový text pro identickou zprávu. Nevýhodou je, že chyba při přenosu se při dešifrování šíří do několika dalších bloků v důsledku řetězového efektu.
Za zmínku stojí, že režim CBC tvoří základ známého mechanismu ověřování původu dat. Má tedy výhodu pro ty aplikace, které vyžadují jak symetrické šifrování, tak ověřování původu dat.
Režim zpětné vazby šifry (CFB)
V tomto režimu se každý blok šifrového textu „vrací“ do procesu šifrování, aby se zašifroval další blok otevřeného textu.
Provoz
Provoz režimu CFB je znázorněn na následujícím obrázku. V tomto systému má například blok zprávy velikost „s“ bitů, kde 1 < s < n. Režim CFB vyžaduje inicializační vektor (IV) jako počáteční náhodný n-bitový vstupní blok. IV nemusí být tajný. Kroky operace jsou –
-
Načíst IV do horního registru.
-
Zašifrovat hodnotu dat v horním registru základní blokovou šifrou s klíčem K.
-
Vzít pouze ‚s‘ počtu nejvýznamnějších bitů (levých bitů) výstupu šifrovacího procesu a XORovat je s ‚s‘ bitovým blokem otevřeného textu zprávy, aby vznikl blok šifrového textu.
-
Vložení bloku šifrového textu do horního registru posunutím již přítomných dat doleva a pokračování operace, dokud nejsou zpracovány všechny bloky otevřeného textu.
-
V podstatě se předchozí blok šifrového textu zašifruje klíčem a výsledek se XORuje s aktuálním blokem otevřeného textu.
-
Podobné kroky se provádějí i při dešifrování. Na začátku dešifrování se načte předem rozhodnutý IV.
Analýza režimu CFB
Režim CFB se výrazně liší od režimu ECB, šifrový text odpovídající danému bloku otevřeného textu závisí nejen na tomto bloku otevřeného textu a klíči, ale také na předchozím bloku šifrového textu. Jinými slovy, blok šifrového textu je závislý na zprávě.
CFB má velmi zvláštní vlastnost. V tomto režimu uživatel dešifruje šifrový text pouze pomocí procesu šifrování blokové šifry. Dešifrovací algoritmus základní blokové šifry se nikdy nepoužívá.
Mód CFB zřejmě převádí blokovou šifru na typ proudové šifry. Šifrovací algoritmus se používá jako generátor proudu klíčů k vytvoření proudu klíčů, který se umístí do spodního registru. Tento proud klíčů je pak XORován s otevřeným textem jako v případě proudové šifry.
Převedením blokové šifry na proudovou šifru poskytuje režim CFB některé výhodné vlastnosti proudové šifry při zachování výhodných vlastností blokové šifry.
Na druhé straně se chyba přenosu šíří v důsledku změny bloků.
Režim výstupní zpětné vazby (OFB)
Je to přivádění postupných výstupních bloků ze základní blokové šifry zpět do ní. Tyto bloky zpětné vazby poskytují řetězec bitů pro napájení šifrovacího algoritmu, který funguje jako generátor proudu klíčů jako v případě režimu CFB.
Vygenerovaný proud klíčů je XORován s bloky otevřeného textu. Režim OFB vyžaduje IV jako počáteční náhodný n-bitový vstupní blok. IV nemusí být tajný.
Provoz je znázorněn na následujícím obrázku –
Režim čítače (CTR)
Můžeme jej považovat za verzi režimu CFB založenou na čítači bez zpětné vazby. V tomto režimu musí mít odesílatel i příjemce přístup ke spolehlivému čítači, který při každé výměně bloku šifrového textu vypočítá novou sdílenou hodnotu. Tento sdílený čítač nemusí být nutně tajnou hodnotou, ale výzvou je, že obě strany musí udržovat čítač synchronizovaný.
Operace
Šifrování i dešifrování v režimu CTR je znázorněno na následujícím obrázku. Kroky operace jsou následující –
-
Načítání počáteční hodnoty čítače v horním registru je stejné pro odesílatele i příjemce. Hraje stejnou roli jako IV v režimu CFB (a CBC).
-
Zašifrujte obsah čítače klíčem a výsledek umístěte do spodního registru.
-
Vezměte první blok otevřeného textu P1 a XORujte jej s obsahem spodního registru. Výsledkem je C1. Pošlete C1 do přijímače a aktualizujte čítač. Aktualizace čítače nahrazuje zpětnou vazbu šifrového textu v režimu CFB.
-
Takto pokračujte, dokud nebude zašifrován poslední blok otevřeného textu.
-
Dekódování je opačný proces. Blok šifrového textu se XORuje s výstupem zašifrovaného obsahu hodnoty čítače. Po dešifrování každého bloku šifrového textu se čítač aktualizuje stejně jako v případě šifrování.
Analýza režimu čítače
Nemá závislost na zprávě, a proto blok šifrového textu nezávisí na předchozích blocích otevřeného textu.
Stejně jako režim CFB, ani režim CTR nezahrnuje proces dešifrování blokové šifry. Je to proto, že režim CTR ve skutečnosti využívá blokovou šifru k vytvoření proudu klíčů, který je zašifrován pomocí funkce XOR. Jinými slovy, režim CTR také převádí blokovou šifru na proudovou šifru.
Závažnou nevýhodou režimu CTR je, že vyžaduje synchronní čítač u odesílatele a příjemce. Ztráta synchronizace vede k nesprávnému obnovení otevřeného textu.
Mód CTR má však téměř všechny výhody módu CFB. Navíc se v něm vůbec nešíří chyba přenosu.