Operační režimy (módy) bloových šifer Andrew Kozlí KA MFF UK
Operační režimy (módy) bloových šifer Říáme, že šifra (P, C, K,, D) je bloová, jestliže P = C = {0, 1} b pro nějaé b. Napřílad DS (b = 64 bitů) nebo AS (b = 128 bitů). Problém: Ja šifrovat zprávu, terá je delší než blo šifry? Otevřený text rozdělíme na bloy dély b a ty zpracujeme v něterém operačním režimu. x i značíme i-tý blo otevřeného textu (OT). y i značíme i-tý blo šifrového textu (ŠT).
Režim eletronicé ódové nihy (CB) Anglicy: electronic codeboo mode (CB) y i = (, x i ) x 1 x 2 x n... y 1 y 2 y n Problém: Jsou-li dva bloy OT totožné, pa i příslušné bloy ŠT jsou totožné. Uniá informace o shodách v OT. Útoční může zísat informace o strutuře OT. Snadná tvárnost: Útoční může bloy ŠT permutovat, dupliovat nebo mazat a docílí tím téže změny v OT.
Úni informace o strutuře OT v CB režimu Přílad: Originál CB CBC
Tvárnost CB režimu Anglicy: malleability Přílad: Alice posílá platební příaz... převeďte 1 000 Kč... : OT:... př eveď te 1 000 Kč... ŠT: y 15 y 16 y 17 y 18 y 19 Útoční zadrží ŠT, dupliuje blo y18 a pošle vše dál. Bana přijme pozměněný ŠT a dešifruje ho: ŠT: y 15 y 16 y 17 y 18 y 18 y 19 OT:... př eveď te 1 000 000 Kč...... převeďte 1 000 000 Kč... Bana nemůže poznat, že zpráva byla pozměněna. Řešení: Zpráva musí být doprovázena tzv. autentizačním ódem zprávy, terý ochrání její integritu.
Inicializační vetor (IV ) Operační režimy zpravidla využívají tzv. inicializační vetor. IV je blo dély b, terý se generuje pro aždý OT. IV nemusí být tajný. Obvyle se generuje náhodně. Obvyle se posílá společně s ŠT, např. (IV, y 1, y 2,..., y n ).
Režim cipher-bloc chaining (CBC) Šifrování: y i = (, x i y i 1 ), de y 0 := IV. x 1 x 2 x n... IV y 1 y 2 y n Dešifrování: x i = D(, y i ) y i 1, de y 0 := IV. IV y 1 y 2 y n D D D... x 1 x 2 x n
Režim cipher-bloc chaining (CBC) CBC řeší problém CB: Stejné bloy se v různých ontextech zašifrují jina. IV se generuje nově pro aždý OT. Kdyby se IV neměnil, ta by útoční poznal, dyž dva OT začínají stejnými bloy. IV musí být nepředvídatelný. V opačném případě lze provést chosen-plaintext úto. Útoční zachytí ŠT (IV, y1, y 2,..., y n ). Útoční chce ověřit hypotézu, že pátý blo OT je x 5. Útoční předvídá, že další inicializační vetor bude IV. Útoční nechá zašifrovat zprávu IV x 5 y 4. Poud je výsledem y 5, pa hypotéza platí.
Vlastnosti CBC režimu Dojde-li při přenosu chybě v jednom bitu blou y i, pa blo xi se dešifruje chybně, v blou xi+1 bude chyba v jednom bitu a ostatní bloy se dešifrují správně. Dojde-li při přenosu výpadu blou y i, pa ztratíme xi, xi+1 se dešifruje chybně a ostatní bloy se dešifrují správně. Dojde-li při přenosu výpadu neceločíselného násobu blou, pa všechny další bloy se dešifrují chybně. Šifrování nelze paralelizovat. Dešifrování lze paralelizovat.
Režim cipher feedbac (CFB) Šifrování: y i = (, y i 1 ) x i, de y 0 = IV. IV... x 1 x 2 x n y 1 y 2 y n IV musí být jedinečný pro aždý OT zašifrovaný stejným. Taový IV se nazývá nonce (number used only once). Kdyby se dvarát šifrovalo se stejným IV a se stejným, pa by se prvnímu blou OT přičítal stejný výstup Šifrování nelze paralelizovat.
Režim cipher feedbac (CFB) Dešifrování: x i = (, y i 1 ) y i, de y 0 = IV. IV... x 1 y 1 x 2 y 2 x n y n Dojde-li při přenosu chybě v jednom bitu blou y i, pa v blou xi bude chyba v jednom bitu a blo xi+1 se dešifruje chybně. Dojde-li při přenosu výpadu blou y i, pa ztratíme xi a xi+1 se dešifruje chybně. Dešifrování lze paralelizovat.
Modifiace CFB režimu Dojde-li při přenosu výpadu neceločíselného násobu blou, pa všechny další bloy se dešifrují chybně. CFB režim lze upravit ta, aby samosynchronizaci došlo po výpadu m-násobu bitů, de 1 m b. 1. OT rozdělíme na bloy veliosti m bitů. 2. IV zapíšeme do posuvného registru. 3. Obsah registru použijeme jao vstup do šifry. 4. Prvních m bitů výstupu šifry přičteme blou OT a zbylé bity výstupu zahodíme. 5. Blo ŠT vsuneme na onec posuvného registru. 6. Poračujeme roem 3.
Režim CFB-m Šifrování: s 1 = IV Posledních b m bitů s i 1. s i = tail b m (s i 1 ) y i 1 y i = head m ((, s i )) x i Prvních m bitů (, s i ). IV y 1 y 1 y 2 y 1 y 2 y 3 x 1 x 2 x 3 x 4 y 1 y 2 y 3 y 4
Režim CFB-m Dešifrování: s 1 = IV s i = tail b m (s i 1 ) y i 1 x i = head m ((, s i )) y i IV y 1 y 1 y 2 y 1 y 2 y 3 y 1 y 2 y 3 y 4 x 1 x 2 x 3 x 4
Režim output feedbac (OFB) Šifrování: y i = s i x i, de s i = (, s i 1 ) a s 0 = IV. IV... s 1 s 2 s 3 x 1 y 1 x 2 y 2 x n y n IV musí být nonce. IV může být předvídatelný. Dojde-li při přenosu chybě v jednom bitu ŠT, pa bude chyba v jednom bitu OT. Dojde-li při přenosu výpadu jaéoliv části ŠT, pa všechny další bloy se dešifrují chybně.
Vlastnosti OFB režimu Známe-li IV předem, pa můžeme provést předvýpočet všech operací. Předvýpočet nelze paralelizovat. OFB převádí bloovou šifru na tzv. synchronní proudovou šifru. Posloupnost {s i } n i=1 nazýváme proud hesla. Proud hesla je periodicý s periodou nejvýše 2 b bloů, ale může být ratší. Střední hodnota periody je přibližně 2 b 1 bloů. Pravděpodobnost, že i-tý blo proudu hesla se shodne s IV zatímco předchozích i 1 nioliv, je 2 b. Střední hodnota periody je tedy 2 b i=1 i 2 b = 2b + 1 2 bloů.
Čítačový režim (CTR) Anglicy: counter mode (CTR) Šifrování: y i = x i (, IV + i 1). IV IV + 1 IV +n 1... x 1 y 1 x 2 y 2 x n IV musí být volen ta, aby se vstup do nidy neopaoval pro dané. Dvě obvylá řešení: 1. Zvolíme IV jao poslední hodnotu čítače z minulého šifrování zvýšenou o 1. 2. Zvolíme IV = nonce 0 m, de nonce {0, 1} b m. Délu zprávy omezíme na nejvýše 2 m bloů. Typicy m = 32, což pro AS omezuje zprávy na 64 GB. y n
Vlastnosti CTR režimu Šíření chyb a výpadů je v CTR shodné jao v OFB. Oproti OFB má CTR maximální periodu hesla. Oproti OFB lze v CTR rychle spočítat libovolný blo proudu hesla. V CTR spočteme i-tý blo hesla jedním voláním funce. V OFB spočteme i-tý blo hesla i voláními funce. Známe-li IV předem, pa můžeme provést předvýpočet všech operací. Předvýpočet lze paralelizovat.
Porovnání operačních režimů Paralelizovatelné šifrování Paralelizovatelné dešifrování CB CBC CFB OFB CTR ANO N N N ANO ANO ANO ANO N ANO Lze předpočítat N N N ANO ANO Šíření chyby v ŠT 1 blo 1 blo 1 blo N N Samosynchronizující ANO ANO ANO N N Obejde se bez implementace D N N ANO ANO ANO
Padding Problém: Ja postupovat v CB a CBC, dyž OT má délu, terá není dělitelná veliostí blou? Řešení (zero padding): Vyplníme nulovými bity na nejbližší násobe b. Problém: Ja pozná příjemce po dešifrování, teré nuly na onci jsou součástí zprávy a teré jsou výplň? Řešení (bit padding): Vyplníme posloupností bitů tvaru 100... 0 na nejbližší násobe b. Příjemce ví, že poslední jedniča v OT značí začáte výplně. Nevýhoda: Když je déla OT dělitelná b, pa musíme přidat na onec OT celý blo obsahující jen výplň. Minimální déla výplně je totiž 1 bit.
PKCS #7 padding Označme B veliost blou v bajtech, B = 1 8 b, a l délu zprávy v bajtech. Zprávu na onci doplníme B (l mod B) bajty s hodnotou B (l mod B). Jinými slovy: Výplň Podmína 0x01 l B 1 (mod B) 0x02 0x02 l B 2 (mod B) 0x03 0x03 0x03 l B 3 (mod B). Tato metoda funguje jen pro šifry s délou blou B < 256. Nevýhoda: Když je déla OT dělitelná veliostí blou, pa musíme přidat na onec OT celý blo obsahující jen výplň..
Ciphertext stealing v CB: Šifrování Bloy x 1,..., x n 1 zašifrujeme v CB režimu. OT vyplníme posledními b len(x n 1 ) bity blou y n 1. Zašifrujeme poslední blo OT. Poslední dva bloy ŠT y n 1 a y n vyměníme. ŠT na onci ořízneme na délu původního OT.
Ciphertext stealing v CB: Dešifrování Bloy y 1,..., y n 1 dešifrujeme v CB režimu. ŠT vyplníme posledními b len(y n 1 ) bity blou x n 1. Dešifrujeme poslední blo ŠT. Poslední dva bloy OT x n 1 a x n vyměníme. OT na onci ořízneme na délu původního ŠT. D D D D
Ciphertext stealing v CBC: Šifrování OT vyplníme nulovými bity na nejbližší násobe b. OT zašifrujeme v CBC režimu. Poslední dva bloy ŠT y n 1 a y n vyměníme. ŠT na onci ořízneme na délu původního OT.
Ciphertext stealing v CBC: Dešifrování Proces dešifrování nejlépe ilustruje obráze: D D D
Další operační režimy Všechny uvedené režimy trpí jistou mírou tvárnosti. Zajišťují pouze důvěrnost dat, ale nezajišťují integritu. Řešením je doprovodit zprávu autentizačním ódem. xistují režimy, teré zajišťují důvěrnost, integritu a autenticitu dat: GCM: Galois counter mode CCM: Counter with CBC-MAC AX: Čítačový režim s OMAC OCB: Offset codeboo mode xistuje speciální režim pro šifrování pevných disů: XX-based tweaed-codeboo mode with ciphertext stealing (XTS) Úlohu IV nahrazuje číslo setoru na disu. Déla ŠT je shodná s délou OT.