Režim činnosti blokové šifry

Režimy autentizovaného šifrování s dalšími daty (AEAD)Upravit

Hlavní článek: Šifrování s autentizovanými daty

Byla navržena řada režimů činnosti, které kombinují utajení a autentizaci v jediném kryptografickém primitivu. Příklady takových režimů jsou rozšířené řetězení šifrových bloků (XCBC), řetězení šifrových bloků s ohledem na integritu (IACBC), režim s ohledem na integritu s možností paralelizace (IAPM), OCB, EAX, CWC, CCM a GCM. Režimy autentizovaného šifrování jsou klasifikovány jako jednoprůchodové nebo dvouprůchodové. Některé jednoprůchodové autentizované šifrovací algoritmy, například režim OCB, jsou zatíženy patenty, zatímco jiné byly speciálně navrženy a vydány tak, aby se takovému zatížení vyhnuly.

Některé režimy navíc umožňují také autentizaci nešifrovaných přidružených dat a tyto režimy se nazývají AEAD (autentizované šifrování s přidruženými daty). Například režim EAX je dvouprůchodové schéma AEAD, zatímco režim OCB je jednoprůchodový.

Galoisův/počítač (GCM)Upravit

GCM

Galoisův/počítač

Šifrování paralelizovatelné

Ano

.

Dekódování paralelizovatelné

Ano

Náhodný přístup ke čtení

Ano

Režim Galois/počítač (GCM) kombinuje well-známý čítačový režim šifrování s novým Galoisovým režimem ověřování. Klíčovou vlastností je snadný paralelní výpočet násobení Galoisova pole používaného pro ověřování. Tato vlastnost umožňuje vyšší propustnost než šifrovací algoritmy.

GCM je definován pro blokové šifry s velikostí bloku 128 bitů. Galoisův autentizační kód zprávy (GMAC) je varianta GCM určená pouze pro autentizaci, která může tvořit inkrementální autentizační kód zprávy. GCM i GMAC mohou přijímat inicializační vektory libovolné délky. GCM může plně využívat výhod paralelního zpracování a implementace GCM může efektivně využívat instrukční nebo hardwarovou pipeline. V režimu práce CBC dochází k protahování pipeline, což snižuje jeho efektivitu a výkonnost.

Stejně jako v CTR jsou bloky postupně číslovány a poté je toto číslo bloku spojeno s IV a zašifrováno blokovou šifrou E, obvykle AES. Výsledek tohoto šifrování se pak XORuje s otevřeným textem, čímž vznikne šifrový text. Stejně jako u všech čítačových režimů jde v podstatě o proudovou šifru, a proto je nezbytné, aby se pro každý šifrovaný proud použil jiný IV.

Bloky šifrového textu se považují za koeficienty polynomu, který se pak vyhodnotí v bodě H závislém na klíči pomocí aritmetiky konečného pole. Výsledek je pak zašifrován a vznikne autentizační značka, kterou lze použít k ověření integrity dat. Zašifrovaný text pak obsahuje IV, šifrový text a autentizační značku.

Čítač s šifrovým blokovým řetězením autentizačního kódu zprávy (CCM)Edit

Čítač s šifrovým blokovým řetězením autentizačního kódu zprávy (čítač s CBC-MAC; CCM) je autentizovaný šifrovací algoritmus určený k zajištění autentizace i důvěrnosti. Režim CCM je definován pouze pro blokové šifry s délkou bloku 128 bitů.

Syntetický inicializační vektor (SIV)Upravit

Syntetický inicializační vektor (SIV) je režim blokové šifry odolný proti zneužití necesty.

SIV syntetizuje vnitřní IV pomocí pseudonáhodné funkce S2V. S2V je hash s klíčem je založen na CMAC a vstupem do funkce je:

  • Další ověřovaná data (podporována je nula, jedno nebo více polí AAD)
  • Plaintext
  • Ověřovací klíč (K1).

SIV zašifruje výstup S2V a otevřený text pomocí AES-CTR s šifrovacím klíčem (K2).

SIV může podporovat externí autentizované šifrování založené na nonce, v takovém případě se pro tento účel využije jedno z polí autentizovaných dat. RFC5297 specifikuje, že pro účely interoperability by mělo být použito poslední autentizované datové pole externí nonce.

Vzhledem k použití dvou klíčů, autentizačního klíče K1 a šifrovacího klíče K2, mohou pojmenovací schémata pro varianty SIV AEAD vést k určitým nejasnostem; například AEAD_AES_SIV_CMAC_256 odkazuje na AES-SIV se dvěma klíči AES-128, a nikoli na AES-256.

AES-GCM-SIVEdit

AES-GCM-SIV je režim činnosti pro Advanced Encryption Standard, který poskytuje podobný výkon jako Galoisův/počítačový režim a také odolnost proti zneužití v případě opakovaného použití kryptografické nonce. Konstrukce je definována v RFC 8452.

AES-GCM-SIV syntetizuje vnitřní IV. Odvozuje hash dodatečných ověřovaných dat a otevřeného textu pomocí Galoisovy hashovací funkce POLYVAL. Tento hash je pak zašifrován klíčem AES a použit jako autentizační značka a inicializační vektor AES-CTR.

AES-GCM-SIV je vylepšením velmi podobně pojmenovaného algoritmu GCM-SIV s několika velmi malými změnami (např. jak se inicializuje AES-CTR), které však přináší praktické výhody pro jeho zabezpečení „Tento doplněk umožňuje šifrovat až 250 zpráv stejným klíčem, oproti výraznému omezení na pouhých 232 zpráv, které bylo povoleno u GCM-SIV.“

Pouze režimy utajeníUpravit

Bylo definováno mnoho režimů provozu. Některé z nich jsou popsány níže. Účelem šifrovacích režimů je maskovat vzory, které existují v šifrovaných datech, jak je znázorněno v popisu slabiny ECB.

Různé šifrovací režimy maskují vzory kaskádováním výstupů z bloku šifry nebo jiných globálně deterministických proměnných do následujícího bloku šifry. Vstupy uvedených režimů jsou shrnuty v následující tabulce:

Souhrn režimů
Režim Vzorce Šifrový text
Elektronická kódová kniha (ECB) Yi = F(PlainTexti, Key) Yi
Cipher block chaining (CBC) Yi = PlainTexti XOR Ciphertexti-1 F(Y, Key); Ciphertext0 = IV
Propagating CBC (PCBC) Yi = PlainTexti XOR (Ciphertexti-1 XOR PlainTexti-1) F(Y, Key); Ciphertext0 = IV
Cipher feedback (CFB) Yi = Ciphertexti-1 Plaintext XOR F(Y, Key); Ciphertext0 = IV
Výstupní zpětná vazba (OFB) Yi = F(Yi-1, klíč); Y0 = F(IV, Key) Plaintext XOR Yi
Čítač (CTR) Yi = F(IV + g(i), Key); IV = token() Plaintext XOR Yi

Pozn: g(i) je libovolná deterministická funkce, často funkce identity.

Elektronická kódová kniha (ECB)Edit

ECB

Elektronická kódová kniha

Paralelizovatelná šifra

Ano

Paralelizovatelná dešifrace

.

Ano

Náhodný přístup ke čtení

Ano

Nejjednodušší z režimů šifrování je režim elektronické kódové knihy (ECB) (pojmenovaný podle konvenčních fyzických kódových knih). Zpráva je rozdělena do bloků a každý blok je šifrován zvlášť.

Nevýhodou tohoto způsobu je nedostatečná difúze. Protože ECB šifruje identické bloky otevřeného textu do identických bloků šifrového textu, neskrývá dobře datové vzory.

Protokol ECB se nedoporučuje používat v kryptografických protokolech.

Nápadný příklad toho, do jaké míry může ECB zanechat v šifrovém textu datové vzory otevřeného textu, lze vidět při použití režimu ECB k šifrování bitmapového obrázku, který používá velké oblasti jednotné barvy. I když je barva každého jednotlivého pixelu zašifrována, celkový obrázek lze stále rozeznat, protože vzor stejně barevných pixelů v originálu zůstává v zašifrované verzi zachován.

Původní obrázek

Zašifrovaný pomocí režimu ECB

Důsledkem jiných režimů než ECB je pseudonáhodnost

Třetí obrázek ukazuje, jak může vypadat obrázek zašifrovaný pomocí CBC, CTR nebo některým z dalších bezpečnějších režimů – nerozeznatelný od náhodného šumu. Všimněte si, že náhodný vzhled třetího obrázku nezaručuje, že byl obrázek bezpečně zašifrován; bylo vyvinuto mnoho druhů nezabezpečeného šifrování, které by vytvořily stejně „náhodně vypadající“ výstup.

Režim ECB může také způsobit, že protokoly bez ochrany integrity budou ještě náchylnější k útokům typu replay, protože každý blok se dešifruje přesně stejným způsobem.

Řetězení šifrových bloků (CBC)Upravit

CBC

Řetězení šifrových bloků

Šifrování lze paralelizovat

.

Ne

Dekódování paralelizovatelné

Ano

Náhodný přístup ke čtení

Ano

Ehrsam, Meyer, Smith a Tuchman vynalezli v roce 1976 režim práce s řetězením šifrových bloků (CBC). V režimu CBC je každý blok otevřeného textu před zašifrováním XORován s předchozím blokem šifrového textu. Tímto způsobem je každý blok šifrového textu závislý na všech blocích otevřeného textu, které byly do té doby zpracovány. Aby byla každá zpráva jedinečná, musí být v prvním bloku použit inicializační vektor.

Pokud má první blok index 1, matematický vzorec pro šifrování CBC je

C i = E K ( P i ⊕ C i – 1 ) , {\displaystyle C_{i}=E_{K}(P_{i}\oplus C_{i-1}),}

C 0 = I V , {\displaystyle C_{0}=IV,}

zatímco matematický vzorec pro dešifrování CBC je

P i = D K ( C i ) ⊕ C i – 1 , {\displaystyle P_{i}=D_{K}(C_{i})\oplus C_{i-1},}

C 0 = I V . {\displaystyle C_{0}=IV.}

PříkladEdit

CBC byl nejčastěji používaný způsob operace. Jeho hlavní nevýhodou je, že šifrování je sekvenční (tj. nelze jej paralelizovat) a že zpráva musí být doplněna na násobek velikosti šifrového bloku. Jedním ze způsobů řešení posledního problému je metoda známá jako krádež šifrového textu. Všimněte si, že změna jednoho bitu v otevřeném textu nebo inicializačním vektoru (IV) ovlivňuje všechny následující bloky šifrového textu.

Dešifrování s nesprávným IV způsobí poškození prvního bloku otevřeného textu, ale následující bloky otevřeného textu budou správné. Je to proto, že každý blok je XORován se šifrovým textem předchozího bloku, nikoliv s otevřeným textem, takže není třeba dešifrovat předchozí blok před jeho použitím jako IV pro dešifrování aktuálního bloku. To znamená, že blok otevřeného textu lze obnovit ze dvou sousedních bloků šifrového textu. V důsledku toho lze dešifrování paralelizovat. Všimněte si, že změna jednoho bitu v šifrovém textu způsobí úplné poškození příslušného bloku otevřeného textu a invertuje příslušný bit v následujícím bloku otevřeného textu, ale ostatní bloky zůstanou nedotčeny. Tato zvláštnost se využívá při různých útocích typu padding oracle, jako je POODLE.

Explicitní inicializační vektory využívají této vlastnosti tím, že k otevřenému textu předem přidají jeden náhodný blok. Šifrování probíhá jako normálně, až na to, že IV není třeba sdělovat dešifrovací rutině. Bez ohledu na to, jaký IV dešifrování používá, je „poškozen“ pouze náhodný blok. Ten lze bezpečně zahodit a zbytek dešifrování je původní otevřený text.

Propagating cipher block chaining (PCBC)Edit

PCBC

Propagating cipher block chaining

Paralelizovatelné šifrování

.

Ne

Dekódování paralelizovatelné

Ne

Náhodný přístup ke čtení

Ne

Propagující řetězení šifrových bloků nebo šifrování otevřeného textu-.block chaining režim byl navržen tak, aby při dešifrování docházelo k neomezenému šíření malých změn v šifrovém textu, stejně jako při šifrování. V režimu PCBC je každý blok otevřeného textu před zašifrováním XORován s předchozím blokem otevřeného textu i s předchozím blokem šifrového textu. Stejně jako v režimu CBC je v prvním bloku použit inicializační vektor.

Algoritmy šifrování a dešifrování jsou následující:

C i = E K ( P i ⊕ P i – 1 ⊕ C i – 1 ) , P 0 ⊕ C 0 = I V , {\displaystyle C_{i}=E_{K}(P_{i}\oplus P_{i-1}\oplus C_{i-1}),P_{0}\oplus C_{0}=IV,}

P i = D K ( C i ) ⊕ P i – 1 ⊕ C i – 1 , P 0 ⊕ C 0 = I V . {\displaystyle P_{i}=D_{K}(C_{i})\oplus P_{i-1}\oplus C_{i-1},P_{0}\oplus C_{0}=IV.}

PCBC se používá především v Kerberos v4 a WASTE, ale jinak není běžný. U zprávy šifrované v režimu PCBC platí, že pokud dojde k výměně dvou sousedních bloků šifrového textu, nemá to vliv na dešifrování následujících bloků. Z tohoto důvodu se PCBC v systému Kerberos v5 nepoužívá.

Cipher feedback (CFB)Edit

Full-blok CFBEdit

CFB

Cipher feedback

Paralelizovatelné šifrování

Ne

.

Dekódování paralelizovatelné

Ano

Náhodný přístup ke čtení

Ano

Režim zpětné vazby šifry (CFB), ve své nejjednodušší podobě využívá celý výstup blokové šifry. V této variantě je velmi podobný CBC, dělá z blokové šifry samosynchronizující se proudovou šifru. Dešifrování CFB v této variantě je téměř totožné s šifrováním CBC provedeným v opačném směru:

C i = { IV , i = 0 E K ( C i – 1 ) ⊕ P i , jinak P i = E K ( C i – 1 ) ⊕ C i , {\displaystyle {\begin{aligned}C_{i}&={\begin{cases}{\text{IV}},&i=0\\E_{K}(C_{i-1})\oplus P_{i},&{\text{otherwise}}\end{cases}}\\P_{i}&=E_{K}(C_{i-1})\oplus C_{i},\end{aligned}}}

CFB-1, CFB-8, CFB-64, CFB-128 atd. edit

NIST SP800-38A definuje CFB s bitovou šířkou. Režim CFB také vyžaduje celočíselný parametr, označený s, takový, že 1 ≤ s ≤ b. V níže uvedené specifikaci režimu CFB se každý segment otevřeného textu (Pj) a segment šifrového textu (Cj) skládá z s bitů. Hodnota s je někdy začleněna do názvu režimu, např. 1bitový režim CFB, 8bitový režim CFB, 64bitový režim CFB nebo 128bitový režim CFB.

Tyto režimy zkrátí výstup základní blokové šifry.

I 0 = IV . {\displaystyle I_{0}={\text{IV}}.}

I i = ( ( I i – 1 ≪ s ) + C i ) mod 2 b , {\displaystyle I_{i}={\big (}(I_{i-1}\ll s)+C_{i}{\big )}{\bmod {2}}^{b},}

C i = MSB s ( E K ( I i – 1 ) ). ⊕ P i , {\displaystyle C_{i}=\operátorname {MSB} _{s}{\big (}E_{K}(I_{i-1}){\big )}\oplus P_{i},}

P i = MSB s ( E K ( I i – 1 ) ) ⊕ C i , {\displaystyle P_{i}=\operátorname {MSB} _{s}{\big (}E_{K}(I_{i-1}){\big )}\oplus C_{i},}

CFB-1 je považován za samosynchronizující se a odolný vůči ztrátě šifrového textu; „Pokud je použit 1bitový režim CFB, pak se synchronizace automaticky obnoví b+1 pozice po vloženém nebo odstraněném bitu. Pro jiné hodnoty s v režimu CFB a pro ostatní režimy utajení v tomto doporučení musí být synchronizace obnovena externě.“ (NIST SP800-38A). Tj. ztráta 1 bitu v blokové šifře o šířce 128 bitů, jako je AES, způsobí, že 129 bitů bude neplatných, a teprve poté budou emitovány platné bity.

CFB se může sám synchronizovat i v některých jiných speciálních případech, než je uvedeno. Například změna jednoho bitu v CFB-128 se základní 128bitovou blokovou šifrou se znovu synchronizuje po dvou blocích. (CFB-128 atd. se však se ztrátou bitů nevypořádá elegantně; ztráta jednoho bitu způsobí, že dešifrátor ztratí zarovnání s šifrátorem)

CFB ve srovnání s jinými režimyEdit

Stejně jako v režimu CBC se změny v otevřeném textu navždy šíří v šifrovém textu a šifrování nelze paralelizovat. Také jako CBC lze dešifrování paralelizovat.

CFB, OFB a CTR mají oproti režimu CBC dvě společné výhody: bloková šifra se vždy používá pouze ve směru šifrování a zpráva nemusí být vycpána na násobek velikosti šifrového bloku (i když u režimu CBC lze použít i krádež šifrového textu, aby vycpání nebylo nutné).

Výstupní zpětná vazba (OFB)Upravit

OFB

Výstupní zpětná vazba

Šifrování paralelizovatelné

Ne

Dekódování. paralelizovatelné

Ne

Náhodný přístup ke čtení

Ne

Režim výstupní zpětné vazby (OFB) dělá z blokové šifry synchronní proudovou šifru. Generuje bloky proudu klíčů, které se pak XORují s bloky otevřeného textu, aby se získal šifrový text. Stejně jako u jiných proudových šifer se převrácením bitu v šifrovém textu vytvoří převrácený bit v otevřeném textu na stejném místě. Tato vlastnost umožňuje mnoha kódům pro opravu chyb normálně fungovat, i když jsou použity před šifrováním.

Vzhledem k symetrii operace XOR je šifrování a dešifrování naprosto stejné:

C j = P j ⊕ O j , {\displaystyle C_{j}=P_{j}\oplus O_{j},}

P j = C j ⊕ O j , {\displaystyle P_{j}=C_{j}\oplus O_{j},}

O j = E K ( I j ) , {\displaystyle O_{j}=E_{K}(I_{j}),}

I j = O j – 1 , {\displaystyle I_{j}=O_{j-1},}

I 0 = IV . {\displaystyle I_{0}={\text{IV}}.}

Každá výstupní operace zpětnovazební blokové šifry závisí na všech předchozích, a proto ji nelze provádět paralelně. Protože se však otevřený text nebo šifrový text používá pouze pro závěrečný XOR, mohou být operace blokové šifry provedeny předem, což umožňuje provést závěrečný krok paralelně, jakmile je otevřený text nebo šifrový text k dispozici.

Je možné získat proud klíčů v režimu OFB pomocí režimu CBC s konstantním řetězcem nul na vstupu. To může být užitečné, protože to umožňuje použít rychlé hardwarové implementace režimu CBC pro šifrování v režimu OFB.

Použití režimu OFB s částečným blokem jako zpětnou vazbou podobně jako režim CFB snižuje průměrnou délku cyklu o faktor 232 nebo více. Matematický model navržený Daviesem a Parkinem a podložený experimentálními výsledky ukázal, že pouze s plnou zpětnou vazbou lze dosáhnout průměrné délky cyklu blízké dosažitelnému maximu. Z tohoto důvodu byla podpora zkrácené zpětné vazby ze specifikace OFB odstraněna.

Čítač (CTR)Upravit

CTR

Čítač

Paralelizovatelné šifrování

.

Ano

Dekódování paralelizovatelné

Ano

Náhodný přístup ke čtení

Ano

Pozn: Režim CTR (CM) je také znám jako režim celočíselného čítače (ICM) a režim segmentovaného celočíselného čítače (SIC).

Stejně jako OFB mění režim čítače blokovou šifru na proudovou šifru. Generuje další blok proudu klíčů šifrováním po sobě jdoucích hodnot „čítače“. Čítačem může být jakákoli funkce, která vytváří posloupnost, u níž je zaručeno, že se nebude po dlouhou dobu opakovat, i když nejjednodušší a nejoblíbenější je skutečný čítač s přírůstkem po jedné. Použití jednoduché deterministické vstupní funkce bývalo kontroverzní; kritici tvrdili, že „záměrné vystavení kryptosystému známému systematickému vstupu představuje zbytečné riziko“. Dnes je však režim CTR široce akceptován a případné problémy jsou považovány za slabinu základní blokové šifry, od níž se očekává, že bude bezpečná bez ohledu na systémovou odchylku na vstupu. Spolu s CBC je režim CTR jedním ze dvou režimů blokové šifry doporučovaných Nielsem Fergusonem a Brucem Schneierem.

Režim CTR představili Whitfield Diffie a Martin Hellman v roce 1979.

Režim CTR má podobné vlastnosti jako OFB, ale umožňuje také vlastnost náhodného přístupu při dešifrování. Režim CTR je vhodný pro provoz na víceprocesorovém stroji, kde lze bloky šifrovat paralelně. Navíc netrpí problémem krátkých cyklů, který může postihnout OFB.

Je-li IV/nonce náhodná, pak je lze kombinovat spolu s čítačem pomocí libovolné inverzní operace (spojování, sčítání nebo XOR), aby vznikl skutečný jedinečný blok čítače pro šifrování. V případě nenáhodného nonce (např. čítače paketů) by měly být nonce a čítač spojeny (např. uložení nonce do horních 64 bitů a čítače do dolních 64 bitů 128bitového bloku čítače). Prosté sečtení nebo XORování nonce a čítače do jediné hodnoty by v mnoha případech porušilo zabezpečení při útoku vybraným textem, protože útočník může být schopen manipulovat s celou dvojicí IV-čítač, aby způsobil kolizi. Jakmile by útočník ovládl dvojici IV-čítač a otevřený text, XOR šifrového textu se známým otevřeným textem by dal hodnotu, která by po XOR s šifrovým textem jiného bloku sdílejícího stejnou dvojici IV-čítač dešifrovala tento blok.

Všimněte si, že nonce v tomto diagramu je ekvivalentní inicializačnímu vektoru (IV) v ostatních diagramech. Pokud je však informace o offsetu/lokaci poškozena, nebude možné taková data částečně obnovit kvůli závislosti na offsetu bajtu.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.