A manapság használatos titkosítási algoritmusok többsége blokkokban dolgozik. Ez azt jelenti, hogy egyszerre fix mennyiségű adaton (pl. 128 vagy 256 bit) végeznek transzformációkat, hogy eredményképpen megkapjuk a titkosított adatott.
Azonban a titkosítási algoritmusok működhetnek Stream alapon is, ami azt jelenti, hogy egyszerre egy byte-on végzünk transzformációt.
A blokk alapú működést egyrészt indokolta a számítógépek felépítése, másrészről pedig az, hogy ha már beolvasottan rendelkezésre áll egy adatmennyiség, akkor sokkal bonyolultabb transzformációkat, műveleteket lehet elvégezni.
Kérdés az, hogy az egyes kapott blokkok, hogyan jelennek meg a kimenetben? Ennek konfigurálására egyes algoritmusok lehetőséget adnak. A legtöbb esetben 6db jól ismert működési mód közül választhatunk. Mindegyik üzemmódnak megvannak az előnyei és hátrányai, vagyis egy adott üzemmód nem biztos, hogy a legjobb választás lesz egy adott alkalmazási területhez.
Ha nem jól válasszuk meg az üzemmódot az alkalmazási területhez, akkor könnyen a hamis biztonság illúziójában találjuk magunkat. Éppen ezért nézzük meg a különböző üzemmódokat.
Az alábbi táblázat a különböző üzemmódon fontosabb tulajdonságait foglalja össze:
| ECB | CBC | PCBC | CFB | OFB | CTR | GCM | |
|---|---|---|---|---|---|---|---|
| Titkosítás párhuzamosítható? | Igen | Nem | Nem | Nem | Nem | Igen | Igen |
| Visszafejtés párhuzamosítható? | Igen | Igen | Nem | Igen | Nem | Igen | Igen |
| Véletlenszerű hozzáférés lehetséges? | Igen | Igen | Nem | Igen | Nem | Igen | Igen |
ECB, Electronic codebook
Az ECB üzemmód a legegyszerűbb működési mód. Ennek a lényege, hogy a titkosítandó üzenetet felosztjuk blokkokra és minden egyes blokkot külön titkosítunk. A módszer előnye, hogy a titkosítás párhuzamosítható, mivel a blokkok között összefüggés nincs, hátránya viszont az, hogy a titkosított adat nem lesz kellően szórt, ami azt jelenti, hogy a különböző mintázatok elrejtését nem biztosítja, ami végeredményben azt jelenti, hogy az ECB üzemmód algoritmustól függetlenül nem biztonságos.
CBC, Cipher block chaining
A CBC üzemmódban minden bemeneti blokk a titkosítás előtt XOR művelet segítségével összefűzi az előzőleg kapott titkosított blokkal. Ezáltal minden titkosított blokk az addig feldogozott összes bemeneti blokktól függ.
A CBC üzemmód a leggyakrabban használt üzemmód. Hátránya, hogy a titkosítás folyamata nem párhuzamosítható, illetve mivel az első blokk esetén nincs megelőző blokk az üzenet egyediségéhez kell egy úgynevezett inicializációs vektor.
A helytelen inicializációs vektorral történő visszafejtés a nyílt szöveg első blokkjának sérülését okozza, de a következő egyszerű szövegblokkok helyesek lesznek. Ennek az az oka, hogy minden blokk az előző blokk rejtjelezett szövegével kizáró vagyolódik, nem a nyílt szöveggel, így nem kell visszafejteni az előző blokkot, mielőtt inicializációs vektorként használnák az aktuális blokk visszafejtéséhez. Ez azt jelenti, hogy egy egyszerű szöveges blokk visszaállítható két szomszédos titkosított szövegblokkból. Ennek eredményeként a dekódolás párhuzamosítható.
Az inicializációs vektort titkosításkor explicit módon meg kell adni, de nem kell kommunikálni a korrekt visszafejtéshez, ha az első titkosítandó blokkot véletlenszerűen generáljuk. Ebben az esetben visszafejtéskor teljesen mindegy milyen inicializációs vektor adunk meg, csak az első véletlenszerűen generált blokk lesz hibás, amit ignorálhatunk, mivel nem hordozott információt.
CTS, Cipher Text Stealing
A CTS üzemmód bármilyen hosszúságú egyszerű szöveget kezel, és olyan titkosított szöveget állít elő, amelynek hossza megegyezik a sima szöveg hosszával. Ez a mód úgy viselkedik, mint a CBC mód a sima szöveg utolsó két egész blokkjának kivételével. Ez azt jelenti, hogy ennél az üzemmódnál nincs blokk méretre kitöltés. Az utolsó nem égész blokk titkosításához adat az utolsó egész blokkból kerül részben újrafelhasználásra.
Blokk méretnél kisebb szövegek titkosítására is alkalmas, de ebben az esetben az inicializációs vektort is át kell küldeni a fogadónak.
PCBC, Propagating cipher block chaining
Ez az üzemmód kifejezetten úgy lett kialakítva, hogy a rejtjelezett szöveg kis változtatásait korlátlan módon propagálja a titkosítás és a visszafejtés során. PCBC módban minden egyszerű szövegblokk XOR művelettel kerül összefűzésre mind az előző nyílt szöveges, mind az előző titkosított szöveg blokkal a titkosítás előtt. A CBC módhoz hasonlóan az első blokkban inicializálási vektor kerül felhasználásra.
A PCBC üzemmód használata nem gyakori, mivel sem a titkosítás, sem a visszafejtés nem párhuzamosítható.
CFB, Cipher feedback
Ez az üzemmód a legegyszerűbb formájában a titkosítás teljes kimenetét felhasználja. Ebben a változatban nagyon hasonlít a CBC-hez, lényegében a blokk alapú titkosítást önszinkronizáló adatfolyam titkosítássá alakítja. A CFB dekódolás ebben a változatban majdnem megegyezik a fordított CBC titkosítással.
A CFB esetén egy egész szám paraméter megadása szükséges. Az egész szám paraméternek nagyobbnak vagy egyenlőnek kell lennie 1-el és maximum akkora lehet, mint az algoritmus blokk mérete. Ez lényegében a visszacsatolt blokk méretet határozza meg.
A CFB mód kifejezetten hálózati átvitel esetén hasznos 1 bites visszacsatolással, mivel ebben az esetben ha 1 bit adat elveszik, akkor az adatfolyam helyreáll a blokk méret + 1 bit után. Az üzemmód további előnye, hogy a CBC üzemmóddal ellentétben a bemenetet nem kell a blokkméret egész számú többszörösére bővíteni.
OFB, Output feedback
Az OFB mód a blokk titkosítást szinkron adatfolyam titkosítássá alakítja. Kulcsfolyam blokkokat hoz létre, amelyeket azután kizáró vagy művelettel fűznek össze a nyílt szöveg blokkokkal, hogy megkapják a titkosított szöveget. Csakúgy, mint a többi stream alapú megoldásnál, a rejtjelezett szövegben egy bit átfordítása egy átfordított bitet eredményez a nyílt szövegben ugyanazon a helyen. Ez a tulajdonság lehetővé teszi számos hibajavító kód normális működését, még akkor is, ha a titkosítás előtt alkalmazzák.
CTR, Counter
A CTR üzemmódot szokás még ICM vagy SIC üzemmódnak is nevezni. Az OFB módhoz hasonlóan a blokk titkosítást szinkron adatfolyam titkosítássá alakítja. A következő kulcsfolyam blokkot egy "számláló" egymást követő értékeinek titkosításával állítja elő. A számláló bármilyen funkció lehet, amely garantáltan hosszú ideig nem ismétlődő sorozatot hoz létre, bár a tényleges növekményes számláló a legegyszerűbb és legnépszerűbb.
Egy ilyen egyszerű, determinisztikus bemeneti függvény használata ellentmondásos volt sokáig. A kritikusok azzal érveltek, hogy "egy kriptorendszer szándékos kitétele egy ismert szisztematikus input hatásának szükségtelen kockázatot jelent". Manapság azonban a CTR mód széles körben elfogadott, és minden probléma a mögöttes blokkrejtjel gyengeségének minősül, amely várhatóan biztonságos, függetlenül a bemeneti rendszer torzításától.
A működéshez szintén szükséges egy inicializációs vektor, amit nonce-nak neveznek ebben az esetben.
GCM, Galois/Counter Mode
A GCM üzemmód a Counter üzemmódot kombinálja a Galois hitelesítéssel, így az adatok hitelességét és bizalmasságát egyaránt biztosítja.
Bemenetként egy K kulcsot, néhány egyszerű szöveget P és néhány kapcsolódó AD adatot vesz igénybe. Ezután titkosítja a nyílt szöveget a kulcs segítségével a C rejtjelezett szöveg előállításához, és kiszámít egy T hitelesítési címkét a rejtjelezett szövegből és a kapcsolódó adatokból (ami titkosítatlan marad). A K kulcsot ismerő címzett az AD, C és T fogadásával visszafejtheti a titkosított szöveget a P szöveg visszaállításához, és ellenőrizheti a T címkét, hogy megbizonyosodjon arról, hogy sem a rejtjelezett szöveget, sem a kapcsolódó adatokat nem manipulálták.
A GCM üzemmód előnye az üzenet hitelesítése mellett, hogy algoritmustól függetlenül jobb titkosítási sebességet kínál, mint mondjuk a CBC algoritmus, miközben ugyan olyan biztonságos.
Matematikai alapja a Galois mező vagy más néven véges mező. Ez egy algebrai struktúra, amely véges számú elemet tartalmaz, és amelyen a négy alapvető művelet (összeadás, kivonás, szorzás és osztás) végezhető úgy, hogy ezek a műveletek azonos mezőn belül maradnak. A Galois mezőket a francia matematikusról, Évariste Galois-ról nevezték el. Kriptográfián kívül hibajavító kódok esetén is alkalmazzák őket.