Režim šifrování – metoda použití blokové šifry (algoritmu), která umožňuje převést sekvenci otevřených datových bloků na sekvenci zašifrovaných datových bloků . V tomto případě lze k zašifrování jednoho bloku použít data z jiného bloku.
Typicky se režimy šifrování používají ke změně procesu šifrování tak, aby výsledek šifrování každého bloku byl jedinečný bez ohledu na šifrovaná data a neumožňoval žádné závěry o jejich struktuře. Je to dáno především tím, že blokové šifry šifrují data v blocích pevné velikosti, a proto existuje možnost úniku informací o opakovaných částech dat zašifrovaných stejným klíčem .
V roce 1981 byl přijat standard FIPS 81 . Standard popisoval první módy blokových šifer: ECB, CBC, OFB a CFB. V roce 2001 NIST Institute ( US National Institute of Standards and Technology ) revidoval seznam režimů a přidal k němu popis fungování blokové šifry AES v režimu CTR ( SP800-38A ). V lednu 2010 NIST přidal do standardu popis fungování šifry AES v režimu XTS (SP800-38E).
Norma nepopisuje všechny režimy, ale pouze režimy schválené institutem NIST . Například režim CTS ( ciphertext stealing ) není ve standardu popsán, ale je implementován v mnoha populárních kryptografických knihovnách .
Režimy šifrování jsou definovány řadou národně a mezinárodně uznávaných organizací. Nejvlivnější z nich je NIST .
Níže je uveden popis několika režimů šifrování pomocí blokových šifer [1] .
V GOST 28147-89 se tento režim nazývá režim jednoduché výměny .
šifrování:
Nechť je zadána zpráva ( prostý text , bitová sekvence, data).
Během šifrování se provádějí následující akce:
Dešifrování:
se provádí funkcí pomocí stejné klávesy k :
Zvláštnosti:
Nevýhody ECB:
Prostý text jako obrázek | Kryptogram získaný šifrováním v režimu ECB. Obrázek ukazuje rysy původního obrázku | Kryptogram získaný šifrováním mimo ECB. Obrázek je pseudonáhodná sekvence pixelů |
Výhody ECB:
Tento režim se nazývá režim elektronické kódové knihy, protože je možné vytvořit knihu, ve které bude každý blok prostého textu spojen s blokem šifrovaného textu. Vytvoření knihy však není triviální úkol. Pokud je velikost bloku x bitů, pak bude kniha obsahovat 2 x záznamů a každá kniha bude odpovídat jednomu klíči.
Pro zašifrování zprávy se provedou následující kroky [4] .
Dešifrování provádí funkce pomocí stejného klíče k a inicializačního vektoru IV :
Nevýhody CBC:
Výhody CBC:
Nedostatky režimu CBC vedly k vytvoření vylepšeného režimu šíření řetězení šifrových bloků (Propagating Cipher Block Chaining, PCBC) [4] . Tento režim je přirozeně podobný CBC, s tím rozdílem, že předchozí blok otevřeného textu a předchozí blok šifrovaného textu jsou XORed s aktuálním blokem otevřeného textu před nebo po zašifrování. [1]
Podle toho dešifrování: kde je inicializační vektor
Režim šifrování RSVS se používá ve verzi protokolu Kerberos 4 a umožňuje detekovat chyby. Tento režim šifrování není federálním ani mezinárodním standardem. Režim PCBC je variantou režimu CBC, která má specifickou vlastnost - chyba šifrovaného textu vede k nesprávnému dešifrování všech následujících bloků. To tedy znamená, že kontrola stavebního bloku na konci zprávy zajišťuje integritu celé zprávy.
Tento režim samozřejmě není bez chyb, protože záměna dvou bloků šifrovaného textu způsobí, že dva odpovídající bloky otevřeného textu budou dešifrovány nesprávně, ale kvůli XOR nad otevřeným textem a šifrovým textem jsou kompenzovány další chyby. Pokud tedy kontrola integrity zkontroluje pouze několik posledních bloků dešifrovaného textu, můžete skončit s částečně poškozenou zprávou. Přestože tuto chybu zabezpečení v Kerberos zatím nikdo nezneužil, verze 5 již přešla do režimu CBC.
Režim zpětné vazby šifrovaného textu , režim zpětné vazby šifry , CFB [ 4 ] . Během šifrování je každý blok prostého textu přidán modulo 2 k bloku zašifrovanému v předchozím kroku.
Síla CFB je dána silou použité šifry. Bloky otevřeného textu jsou „smíchány“ („maskovány“) s bloky šifrovaného textu . Pokud existují dva stejné bloky šifrovaného textu v režimu CFB s plnou zpětnou vazbou bloků, bude výsledek například šifrování DES v dalším kroku stejný. Rychlost šifrování režimu CFB s plnou blokovou zpětnou vazbou je stejná jako u blokové šifry a možnost paralelizace postupu šifrování je omezená [1] .
Režim výstupní zpětné vazby (OFB) [4] přemění blokovou šifru na synchronní proudovou šifru: generuje klíčové bloky, které jsou výsledkem sčítání s bloky otevřeného textu za účelem získání šifrového textu. Stejně jako u jiných proudových šifer vytváří zrcadlení v šifrovaném textu zrcadlený bit v otevřeném textu na stejném místě. Tato vlastnost umožňuje, aby mnoho kódů pro opravu chyb fungovalo normálně, i když je před kódováním použita oprava chyb.
Kvůli symetrii operace sčítání jsou šifrování a dešifrování podobné:
Každá operace výstupní zpětnovazební blokové šifry závisí na všech předchozích a nelze ji tedy provádět paralelně. Protože se však otevřený text nebo šifrový text používá pouze pro konečné přidání, lze operace s blokovou šifrou provádět předem, což umožňuje provádět konečné šifrování paralelně s otevřeným textem.
Zpětná vazba na výstupu na k bity se z bezpečnostních
důvodů nedoporučuje . Režim OFB má oproti režimu CFB následující výhodu: chyby vzniklé přenosem přes hlučný kanál nejsou během dešifrování „rozmazány“ přes celý šifrovaný text, ale jsou lokalizovány v rámci jednoho bloku. Otevřený text však lze změnit určitými manipulacemi s bloky šifrovaného textu. Navzdory skutečnosti, že OFB šifrování není paralelizovatelné, lze účinnost postupu zlepšit předgenerováním nezávislé sekvence bloků. [jeden]
Tato metoda se také nazývá " režim výstupní zpětné vazby ".
OFB také navrhuje určité zlepšení, pokud jde o způsob generování nezávislé sekvence bloků: pro získání dalšího bloku se navrhuje šifrovat nikoli pomocí , ale pomocí c , kde je nějaký inicializační vektor.
Režim čítače (CTR) [4] zahrnuje návrat hodnoty některého čítače nashromážděného od spuštění na vstup odpovídajícího algoritmu blokové šifry. Režim vytváří proud blokové šifry, to znamená, že generuje sekvenci, na kterou je aplikována operace XOR s textem zprávy. Čistý text a blok šifrovaného textu mají stejnou velikost bloku jako základní šifra (například DES nebo AES ). [5] Režim CTR poskytuje následující operace.
Šifrování v režimu CTRDešifrování v režimu CTR
— hodnota čítače pro i-tý blok.
Je zřejmé, že hodnoty počítadla musí být jedinečné pro každý blok prostého textu zakódovaného danou šifrou s daným klíčem (jinak jsou ohroženy bloky šifrovaného textu zašifrované identickými hodnotami počítadla). Tento požadavek je splněn ve dvou fázích.
Nejprve se hodnoty čítače pro šifrování bloků v rámci jedné zprávy získají z počáteční hodnoty čítače pomocí funkce inkrementace. Aby byla zajištěna náhodnost, může velikost přírůstku záviset na čísle bloku. Standardní funkci přírůstku lze aplikovat na celý blok čítače nebo na jeho část. Nechť hodnota čítače představuje blok b bitů a nechť je funkce inkrementace aplikována na nejméně významných bitů.
je funkce zřetězení ; - spodní bity; — starší bity. Jedinečnost hodnot počítadla je zajištěna pro všechny bloky zprávy za předpokladu, že . Kde je počet bloků, do kterých je zpráva rozdělena.
Za druhé, počáteční hodnoty počítadel pro každou zprávu jsou vybrány tak, aby bylo zajištěno, že všechny použité hodnoty počítadel jsou jedinečné. Toho lze dosáhnout mnoha způsoby. Pokud jsou například zprávy zašifrovány postupně, pak výsledek aplikace inkrementační funkce na poslední hodnotu počítadla předchozí zprávy může být použit jako počáteční hodnota počítadla pro tuto zprávu. Pokud navíc funkce inkrementace používá m bitů, celkový počet bloků otevřeného textu by neměl překročit . Jiný přístup navrhuje rozdělit binární reprezentaci čítače na dvě části. Nejvýznamnějším číslicím je přiřazena nonce zprávy a na zbývající číslice se použije funkce zvýšení [6] .
Při absenci zpětné vazby mohou být šifrovací a dešifrovací algoritmy v režimu CTR prováděny paralelně. Navíc velké množství výpočtů, které jsou součástí šifrování hodnot čítačů, lze provést předem, než bude k dispozici prostý text nebo šifrovaný text. To dává režimu CTR výhodu oproti režimům CFB a OFB.
Režim Random Delta se používá k odstranění předvídatelnosti změn počítadla v režimu CTR. Toto je například AES a velikost bloku je 16 bajtů. Vezme se náhodný inicializační vektor (například pomocí RdRand ). Jeho nižších 8 bajtů je považováno za náhodnou deltu - Random Delta (RD):
Iniciálka (Initialization Vector) je zašifrována a odeslána na začátku zprávy. Blok 0 je před šifrováním označen XOR s počáteční hodnotou. Pro každý následující blok se hodnota Initial zvyšuje o Delta (v reprezentaci celého čísla bez znaménka - uint128 += uint64):
To eliminuje předvídatelnost změny počítadla v režimu CTR. Pokud je delta vždy jedna, zde je delta náhodné číslo, jedno z 2^64. Stejně jako Initial je útočníkovi neznámá.
Míra prokliku je také alarmující z důvodu přímé blízkosti otevřeného textu k šifrovanému textu prostřednictvím XOR. V náhodném deltě leží AES mezi holým textem a šifrovaným textem.
Otevřenost úvodního přenosu také vyvolává otázky. Čím méně útočník vidí, tím lépe. Čím dále je otevřený text od šifrovaného textu, tím lépe. Všechny známé režimy – ECB, CBC, OFB, CTR – mají některé z těchto nedostatků. V Random Delta vše leží za AES a Initial a Delta jsou náhodné proměnné , které útočník nezná.
Jedna z nevýhod CTR u RD je však přítomna. Znalost formátu přenášených dat umožňuje házení náhodných zkreslení do určitých míst těchto dat, které lze využít k útoku. Ke kontrole integrity lze do sekvence bloků přidat hash:
Zdá se, že Random Delta + Hash tyto nevýhody nemá. Převedeno na veřejnou doménu.
Důležitý bod: mezi uzavřeným textem a otevřeným textem musí být mnoho permutací AES, jinak to oslabuje hloubku šifrování. Uzavřený text jako funkce otevřeného textu pouze prostřednictvím XOR ruší hloubku šifrování, kterou poskytuje AES (konkrétně jde o metodu používanou režimy OFB, CFB, CTR).
Zabezpečení Random Delta není o mnoho nižší než zabezpečení samotného AES.
Je-li požadován vyšší stupeň delta náhodnosti (například 128-bit), lze jej vygenerovat samostatně a odeslat na začátek zprávy spolu s Initial.
Stejně jako CTR, Random Delta umožňuje šifrovat / dešifrovat bloky paralelně, s vyšším výkonem, bez čekání na šifrování / dešifrování předchozího bloku (což je nutností v CBC, PCBC, CFB, OFB).
Režim „Random Delta 128“ se vyznačuje použitím samostatných 128bitových iniciál a Delta. Dává stínu větší náhodnost .
Režim Galois/Counter (počítadlo s ověřením Galois ) je bezpečnější modifikace CTR, která poskytuje ověřené šifrování s připojenými daty ( režim blokové šifry AEAD ).
V kryptografii představuje inicializační vektor ( ) nějaké číslo, zpravidla by mělo být náhodné nebo pseudonáhodné . Náhodnost je rozhodující pro dosažení sémantického zabezpečení, které při opětovném použití schématu pod stejným klíčem zabrání útočníkovi odvodit vztahy mezi zašifrovanými segmenty zpráv. U blokových šifer je použití popsáno podle provozních režimů. Randomizace je také vyžadována pro další primitiva, jako jsou univerzální hashovací funkce a na nich založené ověřovací kódy zpráv.
V takových režimech šifrování, jako je CBC, CFB a OFB, je inicializační vektor ( ) přiváděn jako vstup. Kromě toho musí mít odesílatel i příjemce na začátku komunikační relace stejný . Hodnota nemusí být vůbec tajná a může být dobře přenášena spolu s prvním blokem šifrovaného textu. Opravdu důležité je, že v režimech CBC a CFB musí být tato hodnota nepředvídatelná a v režimu OFB musí být jedinečná [2] .
Nepředvídatelnosti v režimech CBC a CFB lze dosáhnout několika způsoby. Například je možné stejnou funkcí transformovat hodnotu nějakého čítače (řekněme čítače zpráv). Nebo použijte GPC k vygenerování pseudonáhodné sekvence požadované délky.
V režimu OFB nemusí být inicializační vektor nepředvídatelný, ale musí být jedinečný pro všechny komunikační relace, ve kterých je v OFB použit stejný tajný šifrovací klíč . Toho lze dosáhnout opět pomocí počítadla zpráv. Pokud tento požadavek není dodržen, pak může být utajení zprávy v režimu OFB snadno ohroženo. Jedním z důsledků tohoto požadavku je, že další inicializační vektor pro režim OFB nelze vygenerovat aplikací funkce se stejným klíčem .
Režimy ECB, CBC a PCBC pracují se zprávami v prostém textu, které musí být násobkem délky jednoho bloku. Pokud tato vlastnost není splněna, je třeba do zprávy přidat požadovaný počet bitů, nazývaný padding . Například "vyplňovací metoda 2" ISO/IEC 9797-1 navrhuje přidat jeden bit na konec zprávy a zbytek vyplnit nulami [7] .
Při této metodě musí příjemce šifrovaného textu s jistotou vědět, že zpráva obsahuje výplň. Toho lze dosáhnout připojením odsazení ke každé zprávě, i když to není vyžadováno (v takovém případě je odesláno jako samostatný blok). Není to jediné řešení – s každou zprávou můžete například posílat informaci o její délce [6] .
Pro jakýkoli režim způsobí chybový bit v bloku šifrovaného textu poškození výsledku jeho dešifrování. V režimech CFB, OFB a CTR bude mít poškozený bit stejnou pozici v dešifrovaném bloku jako chybový bit v bloku šifrovaného textu a chyba se nebude šířit do zbývajících bitů bloku. V režimech ECB a CBC může být poškozen jakýkoli bit bloku s pravděpodobností asi 50 % (v závislosti na síle samotné šifry). Přitom v režimech ECB, OFB a CTR je poškozen pouze blok vzniklý dešifrováním poškozeného bloku. V režimu CBC je další blok také vystaven chybnému dešifrování a poškozené bity budou odpovídat chybovým bitům v šifrovém textu předchozího bloku. V režimu CFB ovlivňuje chybový bit v segmentu šifrovaného textu další b/s (zaokrouhleno na nejbližší celé číslo, b je délka bloku, s je délka segmentu) segmentů a kterýkoli z bitů dešifrovaného textu může být chybný [6] .
Přítomnost chybových bitů v inicializačním vektoru je rovněž škodlivá pro proces dešifrování. V režimu OFB chybový bit v IV zasáhne každý blok šifrovaného textu v odpovídající zprávě. V režimu CFB poškodí chyby v inicializačním vektoru alespoň první segment šifrového textu. Zda jsou ostatní segmenty poškozeny, závisí na poloze bitu nejvíce vpravo v IV (v nejhorším případě budou ovlivněny b/s segmentů šifrovaného textu). Při použití režimů OFB a CFB může být jakýkoli bit poškozeného šifrového textu poškozen v důsledku chybového bitu ve IV. V režimu CBC budou poškozeny pouze bity prvního bloku šifrovaného textu, které jsou v pozicích odpovídajících chybovým bitům v inicializačním vektoru.
V režimu CTR chybový bit v hodnotě čítače způsobí, že jakýkoli bit v dešifrování odpovídajícího šifrovaného textu bude poškozen s pravděpodobností asi 50 %.
Kromě výskytu chybového bitu v bloku šifrovaného textu může dojít také k vymazání nebo vložení bitu. To vede k narušení hranic všech následujících bloků šifrovaného textu a výsledky dešifrování budou zcela chybné, dokud nebudou hranice synchronizovány. Při použití 1bitového režimu CFB se synchronizace automaticky obnoví b+1 pozice poté, co se bit objeví nebo zmizí. V ostatních režimech nedochází k automatické obnově synchronizace [6] .
Výběr režimu šifrování závisí na vašem cíli.
Pro prostý prostý text můžete použít CBC, CFB nebo OFB. Pro šifrování souborů je lepší použít CBC: bezpečnost je výrazně zvýšena, když dojde k chybám v uložených datech, synchronizace téměř nikdy neselže. Konkrétní režim závisí na vašem požadavku. Obecně je volba metody šifrování hledáním kompromisu mezi efektivitou a výkonem [8] .