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.