A modern kriptográfia sarokkövei a blokkrejtjelek, mint például az Advanced Encryption Standard (AES) vagy korábban a Data Encryption Standard (DES). Ezek a titkosítási algoritmusok fix méretű adatblokkokat, úgynevezett blokkokat alakítanak át nyílt szövegből titkosított szöveggé, majd vissza. Azonban a blokkrejtjelek önmagukban nem elegendőek a legtöbb valós alkalmazáshoz, mivel csak egy adott méretű blokkal tudnak dolgozni. Például az AES alapértelmezetten 128 bites blokkokat titkosít. Mi történik, ha ennél rövidebb vagy hosszabb üzenetet szeretnénk titkosítani? Erre a problémára kínálnak megoldást a blokkrejtjelek működési módjai, amelyek meghatározzák, hogy a blokkrejtjelet hogyan kell alkalmazni egy tetszőleges hosszúságú üzenet biztonságos titkosítására. Ezek a módok lehetővé teszik a blokkrejtjelek rugalmas és biztonságos felhasználását különböző forgatókönyvekben, elkerülve az olyan problémákat, mint az azonos nyílt szöveges blokkok azonos titkosított blokká alakulása, ami az Electronic Codebook (ECB) módra jellemző.
A működési módok alapvetően két fő kategóriába sorolhatók: blokk alapú és stream alapú titkosítás. Míg az ECB és a Cipher Block Chaining (CBC) tipikus blokk alapú módok, addig a Ciphertext Feedback (CFB), az Output Feedback (OFB) és a Counter (CTR) mód a blokkrejtjeleket stream rejtjelekké alakítják át. Ez a transzformáció különösen fontos olyan alkalmazásokban, ahol az adatfolyam folyamatos, és nincs lehetőség az adatok blokkokba rendezésére vagy pufferelésére. A stream rejtjelként működő módok lehetővé teszik a valós idejű titkosítást és dekódolást, ami kritikus lehet például hálózati kommunikáció vagy hangátvitel esetén. A CFB mód különösen érdekes ebből a szempontból, mivel egyedi módon használja fel a titkosított szöveget a következő titkosítandó blokk generálásához, ezzel biztosítva a kriptográfiai láncolatot és az adatok integritását.
A Ciphertext Feedback (CFB) mód alapjai
A Ciphertext Feedback (CFB) mód a blokkrejtjelek egyik legfontosabb működési módja, amely lehetővé teszi, hogy egy blokkrejtjel, mint amilyen az AES, stream rejtjelként funkcionáljon. Ez azt jelenti, hogy a CFB képes tetszőleges, akár bitenkénti adatfolyamot is titkosítani és dekódolni, nem csupán fix méretű blokkokat. A CFB mód elnevezése is utal a működésének lényegére: a titkosított szöveg (ciphertext) egy részét vagy egészét visszacsatolják (feedback) a következő titkosítási lépés bemeneteként. Ez a visszacsatolási mechanizmus teremti meg a kriptográfiai láncolatot, amely biztosítja, hogy minden egyes titkosított kimenet függjön az előzőekből, így növelve a biztonságot és elkerülve a mintázatok ismétlődését, ami gyengítheti a titkosítást.
A CFB mód egyik fő előnye, hogy nem igényel kiegészítő (padding) adatokat a nyílt szöveg végén, ha az nem éri el a blokkméret többszörösét. Ez azért van, mert a CFB egy adatáramot generál, amelyet a nyílt szöveggel bitenként (vagy byte-onként, a visszacsatolási mérettől függően) XOR-olva titkosít. Ez a viselkedés teszi különösen alkalmassá folyamatos adatfolyamok, például terminálkapcsolatok vagy videóátvitel titkosítására, ahol a késleltetés és a kiegészítő adatok hozzáadása nem kívánatos. A CFB mód emellett szimmetrikus, ami azt jelenti, hogy a titkosításhoz és a dekódoláshoz ugyanazt az algoritmust és kulcsot használja, ami leegyszerűsíti az implementációt és a kulcskezelést.
A CFB mód működésének megértéséhez kulcsfontosságú az inicializáló vektor (IV) fogalma. Az IV egy véletlenszerű vagy pszeudovéletlenszerű adatblokk, amelyet az első titkosítási lépés bemeneteként használnak. Az IV célja a titkosítás egyediségének biztosítása: még akkor is, ha ugyanazt a nyílt szöveget ugyanazzal a kulccsal többször titkosítják, az eltérő IV-knek köszönhetően minden alkalommal más titkosított szöveg jön létre. Ez megakadályozza az ismétlődő mintázatok felismerését, amelyek kriptoanalitikai támadásokhoz vezethetnek. Az IV-t általában a titkosított szöveggel együtt, de titkosítatlanul küldik el a fogadó félnek, aki azt a dekódoláshoz felhasználja.
A CFB módnak léteznek különböző variációi, melyeket gyakran CFB-s jelöléssel látnak el, ahol az ‘s’ a visszacsatolás méretét jelöli bitekben. Ez az ‘s’ érték lehet egyenlő a blokkrejtjel blokkméretével (pl. CFB-128 AES esetén), de lehet kisebb is (pl. CFB-8 vagy CFB-1). A kisebb ‘s’ érték azt jelenti, hogy a blokkrejtjel kimenetének csak egy részét használják fel, és a visszacsatolás is kisebb méretű. Ez a rugalmasság lehetővé teszi a CFB adaptálását különböző hálózati protokollokhoz és adatátviteli igényekhez, ahol a bitenkénti vagy byte-onkénti feldolgozás előnyösebb lehet. Azonban a kisebb ‘s’ érték potenciálisan lassabb feldolgozáshoz vezethet, mivel egy blokkrejtjel művelet csak kis mennyiségű adatot titkosít egyszerre.
A CFB működése: Titkosítás lépésről lépésre
A Ciphertext Feedback (CFB) mód titkosítási folyamata egy gondosan felépített láncolaton alapul, ahol minden egyes lépés kimenete befolyásolja a következő bemenetet. Ez a mechanizmus teszi lehetővé, hogy a blokkrejtjel stream rejtjelként viselkedjen. A folyamat megértéséhez bontsuk fel a lépéseket részletesen.
-
Inicializálás (IV használata):
A titkosítás megkezdése előtt szükség van egy inicializáló vektorra (IV). Az IV egy véletlenszerű vagy pszeudovéletlenszerű adatblokk, amelynek mérete megegyezik a blokkrejtjel blokkméretével (pl. 128 bit AES esetén). Az IV-t az első „shift register” (eltolóregiszter) kezdeti állapotaként használják. Ez az IV biztosítja, hogy még ugyanaz a nyílt szöveg is különböző titkosított szöveget eredményezzen, ha különböző IV-ket használnak, ezzel növelve a biztonságot a mintázatok felismerhetősége ellen. Az IV-t gyakran a titkosított szöveggel együtt küldik el a fogadó félnek.
-
Az első adatáram generálása:
Az eltolóregiszter aktuális tartalmát (kezdetben az IV-t) bemenetként adják a blokkrejtjel algoritmusnak (pl. AES) a megosztott titkos kulccsal együtt. A blokkrejtjel kimenete egy titkosított blokk, amely egy pszeudovéletlenszerű adatáramot (key stream) képvisel. Ez az adatáram a nyílt szöveggel lesz XOR-olva.
-
A releváns bitek kiválasztása (az ‘s’ paraméter):
A blokkrejtjel kimenetéből kiválasztásra kerül az első ‘s’ bit. Az ‘s’ paraméter határozza meg, hogy a blokkrejtjel kimenetének hány bitjét használják fel a nyílt szöveg titkosítására egy adott lépésben. Az ‘s’ értéke lehet bármi 1 és a blokkméret között. Például, ha az AES blokkmérete 128 bit, és ‘s’ = 8 (CFB-8), akkor a blokkrejtjel kimenetének csak az első 8 bitjét használják fel.
-
XOR művelet a nyílt szöveggel:
A nyílt szöveg aktuális ‘s’ bitjét (vagy byte-ját, ha ‘s’ = 8) XOR-olják a blokkrejtjel kimenetéből kiválasztott ‘s’ bittel. Az XOR művelet eredményezi a titkosított szöveg aktuális ‘s’ bitjét.
Titkosított blokk = (Első ‘s’ bit a blokkrejtjel kimenetéből) XOR (Nyílt szöveg aktuális ‘s’ bitje)
Ez a lépés hasonlóan működik, mint egy hagyományos stream rejtjel, ahol a kulcs adatáramot XOR-olják a nyílt szöveggel.
-
Visszacsatolás és az eltolóregiszter frissítése:
A frissen generált titkosított szöveg ‘s’ bitjét visszacsatolják az eltolóregiszterbe. Az eltolóregiszter tartalmát balra tolják ‘s’ bittel, és a felszabaduló ‘s’ helyre beírják a most generált titkosított szöveg ‘s’ bitjét. Ez a frissített eltolóregiszter tartalom lesz a következő titkosítási lépés bemenete a blokkrejtjel számára.
Ez a visszacsatolási mechanizmus kulcsfontosságú a CFB mód működésében. Biztosítja, hogy minden egyes titkosított kimenet függjön az előző titkosított kimenetekből, ami növeli a biztonságot és megakadályozza a mintázatok ismétlődését. Emellett a titkosított szöveg visszacsatolása azt is jelenti, hogy a dekódolási folyamatnak is hasonlóan kell működnie, ami a CFB szimmetrikus jellegét adja.
-
Ismétlés:
Az előző lépéseket ismétlik mindaddig, amíg a teljes nyílt szöveg titkosítva nem lesz. Minden egyes iterációban a frissített eltolóregiszter tartalmát használják fel a blokkrejtjel bemeneteként, ami új adatáramot generál a következő ‘s’ bit titkosításához.
A CFB mód tehát egy dinamikus folyamat, amely a blokkrejtjel erejét felhasználva hoz létre egy folyamatosan változó kulcs adatáramot. A visszacsatolási mechanizmus miatt a titkosított szöveg minden egyes része kriptográfiailag kapcsolódik az előző részekhez, ami növeli a biztonságot a passzív támadásokkal szemben. Az ‘s’ paraméter rugalmasságot biztosít az implementációban, lehetővé téve a különböző adatátviteli igényekhez való alkalmazkodást.
A CFB működése: Dekódolás lépésről lépésre
A Ciphertext Feedback (CFB) mód egyik elegáns tulajdonsága, hogy a dekódolási folyamata rendkívül hasonló a titkosítási folyamathoz. Ez a szimmetria leegyszerűsíti az implementációt, és biztosítja, hogy ugyanazt a blokkrejtjel algoritmust és kulcsot lehessen használni mindkét irányban. A kulcs az, hogy a dekódolás során is a *titkosított szöveget* használjuk fel a következő adatáram generálásához, nem pedig a dekódolt nyílt szöveget.
-
Inicializálás (IV használata):
A dekódolás megkezdéséhez a fogadó félnek szüksége van ugyanarra az inicializáló vektorra (IV), amelyet a feladó használt a titkosítás során. Ez az IV, ahogy a titkosításnál is, az eltolóregiszter kezdeti állapotaként szolgál. Mivel az IV-t általában titkosítatlanul küldik a titkosított szöveggel együtt, a fogadó fél könnyedén hozzáférhet. Az IV pontossága kritikus a sikeres dekódoláshoz; ha az IV eltér, a dekódolás hibás lesz.
-
Az első adatáram generálása:
Az eltolóregiszter aktuális tartalmát (kezdetben az IV-t) bemenetként adják a blokkrejtjel algoritmusnak (ugyanaz a kulccsal és algoritmus, amit a titkosításnál használtak). Fontos megjegyezni, hogy a CFB dekódolásához is a blokkrejtjel *titkosító* funkcióját használjuk, nem a dekódoló funkcióját. A blokkrejtjel kimenete egy titkosított blokk, amely az adatáram aktuális részét képviseli.
-
A releváns bitek kiválasztása (az ‘s’ paraméter):
A blokkrejtjel kimenetéből kiválasztásra kerül az első ‘s’ bit. Ahogyan a titkosításnál is, az ‘s’ paraméter határozza meg, hogy a blokkrejtjel kimenetének hány bitjét használják fel a titkosított szöveg dekódolására egy adott lépésben. Ennek az ‘s’ értéknek meg kell egyeznie a titkosításkor használt ‘s’ értékkel.
-
XOR művelet a titkosított szöveggel:
A beérkezett titkosított szöveg aktuális ‘s’ bitjét (vagy byte-ját) XOR-olják a blokkrejtjel kimenetéből kiválasztott ‘s’ bittel. Az XOR művelet eredményezi a nyílt szöveg aktuális ‘s’ bitjét.
Nyílt blokk = (Első ‘s’ bit a blokkrejtjel kimenetéből) XOR (Titkosított szöveg aktuális ‘s’ bitje)
Mivel az XOR művelet önmagával inverz (A XOR B XOR B = A), a dekódolás során pontosan ugyanazt az adatáramot kell generálni, mint a titkosítás során. Ezt a blokkrejtjel kimenete biztosítja.
-
Visszacsatolás és az eltolóregiszter frissítése:
A frissen dekódolt nyílt szöveg ‘s’ bitjét *nem* használják fel a visszacsatolásra. Ehelyett a *beérkezett titkosított szöveg aktuális ‘s’ bitjét* használják fel. Az eltolóregiszter tartalmát balra tolják ‘s’ bittel, és a felszabaduló ‘s’ helyre beírják a most feldolgozott titkosított szöveg ‘s’ bitjét. Ez a frissített eltolóregiszter tartalom lesz a következő dekódolási lépés bemenete a blokkrejtjel számára.
Ez a lépés kritikus a CFB dekódolásának működéséhez. Azáltal, hogy a titkosított szöveget csatoljuk vissza, biztosítjuk, hogy a blokkrejtjel bemenetei pontosan megegyezzenek a titkosításkor használt bemenetekkel, függetlenül a dekódolt nyílt szöveg tartalmától. Ez garantálja, hogy a generált adatáram is azonos lesz, ami lehetővé teszi a sikeres dekódolást.
-
Ismétlés:
Az előző lépéseket ismétlik mindaddig, amíg a teljes titkosított szöveg dekódolva nem lesz. Minden egyes iterációban a frissített eltolóregiszter tartalmát használják fel a blokkrejtjel bemeneteként, ami új adatáramot generál a következő ‘s’ bit dekódolásához.
A CFB mód dekódolása tehát egy elegáns tükörképe a titkosításnak, kihasználva az XOR művelet tulajdonságait és a titkosított szöveg visszacsatolását az adatáram konzisztens generálásához. Ez a megközelítés biztosítja a szimmetriát és a megbízható dekódolást, még akkor is, ha az adatok folyamatosan érkeznek. A CFB képessége, hogy a blokkrejtjelet stream rejtjellé alakítsa, miközben a titkosított szöveget használja fel a láncolathoz, teszi egyedivé és hasznossá bizonyos alkalmazási területeken.
A CFB mód előnyei

A Ciphertext Feedback (CFB) mód számos olyan előnnyel rendelkezik, amelyek bizonyos alkalmazási forgatókönyvekben kiemelik a többi blokkrejtjel működési mód közül. Ezek az előnyök elsősorban a CFB stream rejtjelként való viselkedéséből és a visszacsatolási mechanizmusából fakadnak.
-
Stream rejtjelként való viselkedés:
A CFB mód talán a legjelentősebb előnye, hogy egy blokkrejtjelet valójában stream rejtjellé alakít át. Ez azt jelenti, hogy a CFB képes bitenként vagy byte-onként feldolgozni az adatokat, nem csak fix méretű blokkokban. Ez a tulajdonság kulcsfontosságú a valós idejű kommunikációban, mint például a videó- vagy hangátvitel, vagy terminálkapcsolatok (pl. SSH), ahol az adatok folyamatosan érkeznek, és a késleltetés minimalizálása elengedhetetlen. A CFB lehetővé teszi az adatok azonnali titkosítását és továbbítását, amint rendelkezésre állnak, anélkül, hogy meg kellene várni egy teljes blokk összegyűjtését.
-
Nincs szükség paddingre:
Mivel a CFB stream rejtjelként működik, nincs szükség a nyílt szöveg kiegészítésére (padding) annak érdekében, hogy a hossza a blokkrejtjel blokkméretének többszöröse legyen. Ez egyszerűsíti az implementációt, csökkenti a titkosított szöveg méretét, és elkerüli a padding oracle támadások kockázatát, amelyek bizonyos padding sémák hibás kezeléséből adódhatnak. Ez különösen előnyös kis méretű, változó hosszúságú üzenetek esetén.
-
Valós idejű titkosítás és dekódolás:
A CFB képessége, hogy bitenként vagy byte-onként dolgozzon, ideálissá teszi valós idejű alkalmazásokhoz. Ahogy egy bit vagy byte beérkezik, azonnal titkosítható és továbbítható, vagy dekódolható. Ez minimalizálja a pufferelési igényeket és a késleltetést, ami létfontosságú az interaktív rendszerekben és a streaming szolgáltatásokban.
-
Véletlenszerűség és mintaellenesség:
Az inicializáló vektor (IV) használata, valamint a titkosított szöveg visszacsatolása biztosítja, hogy ugyanaz a nyílt szövegblokk minden alkalommal más titkosított szövegblokká alakuljon, feltéve, hogy az IV egyedi. Ez megakadályozza a mintázatok megfigyelését és elemzését, amelyek az Electronic Codebook (ECB) módban előfordulhatnak, és ezáltal ellenállóbbá teszi a titkosítást a kriptoanalitikai támadásokkal szemben.
-
Hibaterjedés kezelése (bizonyos mértékig):
A CFB mód a hibaterjedés tekintetében egyedi viselkedést mutat. Ha egy bit hiba történik a titkosított szövegben, az befolyásolja a dekódolt nyílt szöveg megfelelő bitjét, és az ezt követő ‘blokkméret’ (nem az ‘s’ méret) nagyságú blokk dekódolását is. Ezt követően azonban a hiba elhal, és a dekódolás újra helyes lesz. Ez a korlátozott hibaterjedés előnyös lehet zajos csatornákon, mivel a hiba nem terjed el az egész üzeneten, ellentétben például a CBC móddal, ahol egy hiba a teljes fennmaradó üzenet dekódolását befolyásolhatja.
-
Szimmetrikus művelet:
A CFB titkosítása és dekódolása ugyanazt a blokkrejtjel műveletet használja (mindkét esetben a blokkrejtjel titkosító funkcióját). Ez leegyszerűsíti az algoritmus implementációját, mivel nem kell külön titkosító és dekódoló rutint fenntartani a blokkrejtjel számára, csak a körülötte lévő CFB logikát.
Ezen előnyök kombinációja teszi a CFB módot vonzó választássá számos hálózati és adatfolyam-alapú alkalmazáshoz, ahol a rugalmasság, a valós idejű feldolgozás és a biztonság egyaránt fontos. Azonban, mint minden kriptográfiai módnak, a CFB-nek is vannak hátrányai és kihívásai, amelyeket figyelembe kell venni a használat előtt.
A CFB mód hátrányai és kihívásai
Bár a Ciphertext Feedback (CFB) mód számos előnnyel rendelkezik, különösen a stream rejtjelként való viselkedése miatt, fontos tisztában lenni a hátrányaival és azokkal a kihívásokkal is, amelyek az alkalmazásával járnak. Ezek a korlátok befolyásolhatják a biztonságot és a teljesítményt, és megfelelő kezelést igényelnek.
-
Szekvenciális feldolgozás és párhuzamosság hiánya:
A CFB mód működésének alapja a visszacsatolási mechanizmus, ahol minden egyes lépés kimenete a következő lépés bemenetét befolyásolja. Ez inherensen szekvenciális folyamatot eredményez. Sem a titkosítás, sem a dekódolás nem párhuzamosítható hatékonyan. Ez azt jelenti, hogy a CFB nem tudja kihasználni a modern többmagos processzorok vagy a hardveres gyorsítás (pl. GPU-k) előnyeit a maximális áteresztőképesség eléréséhez, ellentétben például a Counter (CTR) móddal, amely teljes mértékben párhuzamosítható.
-
Hibaterjedés (részletesebben):
Korábban említettük, hogy a hibaterjedés a CFB-ben korlátozott, ami bizonyos esetekben előnyös lehet. Azonban ez a korlátozottság azt is jelenti, hogy egyetlen bit hiba a titkosított szövegben nem csak a megfelelő nyílt szöveg bitjét teszi tönkre, hanem az azt követő `blokkméret` (nem az ‘s’ méret) titkosított blokk dekódolását is befolyásolja. Például, ha az AES-t használjuk (128 bit blokkméret), egyetlen bit hiba a titkosított szövegben 128 bit hibát okoz a dekódolt nyílt szövegben. Bár a hiba utána elhal, a hibás adatok mérete jelentős lehet, ami adatvesztéshez vagy adatsérüléshez vezethet.
-
Malleability (módosíthatóság) és a hitelesítés szükségessége:
A CFB mód, mint a legtöbb stream rejtjel, alapvetően nem biztosít adatintegritást vagy hitelességet. Ez azt jelenti, hogy egy támadó, aki ismeri a titkosított szöveg struktúráját és a használt algoritmust, aktívan módosíthatja a titkosított szöveget anélkül, hogy azt észlelnék. Például, ha egy titkosított bitet megváltoztatnak, az a dekódolt nyílt szövegben is a megfelelő bit megváltozását okozza. Ez a tulajdonság veszélyes lehet, ha a titkosított adatok integritása kritikus. Ezért a CFB módot szinte mindig kombinálni kell egy üzenethitelesítő kóddal (MAC), például HMAC-kel, vagy egy hitelesített titkosítási móddal, mint amilyen a GCM (Galois/Counter Mode), amely integráltan kezeli a titkosítást és a hitelesítést.
-
Az inicializáló vektor (IV) kezelése:
Az IV megfelelő kezelése létfontosságú a CFB biztonságához. Az IV-nek minden egyes titkosítási munkamenetben egyedinek kell lennie ugyanazzal a kulccsal. Ha ugyanazt az IV-t kétszer használják ugyanazzal a kulccsal, az súlyos biztonsági rést eredményezhet, mivel a támadó az XOR-olt adatáramokat összehasonlítva képes lehet következtetni a nyílt szövegre vagy a kulcs adatáramra. Bár az IV-nek nem kell titoknak lennie, véletlenszerűnek vagy pszeudovéletlenszerűnek kell lennie, és soha nem szabad újra felhasználni ugyanazzal a kulccsal.
-
Teljesítmény az ‘s’ paramétertől függően:
A CFB-s módban az ‘s’ paraméter határozza meg, hogy hány bitet dolgoznak fel egy blokkrejtjel műveletenként. Ha ‘s’ kicsi (pl. CFB-1 vagy CFB-8), akkor a blokkrejtjel algoritmust gyakrabban kell meghívni, ami lassabb teljesítményhez vezethet, mivel minden meghívás egy bizonyos overhead-del jár. Ideális esetben az ‘s’ értéke a blokkrejtjel blokkméretével egyenlő (pl. CFB-128 AES esetén), hogy maximalizálja a hatékonyságot. Azonban ez a stream rejtjelként való viselkedés előnyeit csökkentheti.
-
Blokk-elvesztés hatása:
Ha egy teljes titkosított blokk elveszik az átvitel során, a CFB dekódolása eltolódik. Mivel a visszacsatolás a titkosított szövegből történik, az eltolóregiszter tartalma teljesen felborul, és a dekódolás a hiba után sem lesz helyes, amíg a szinkronizáció helyre nem áll. Ez súlyosabb probléma lehet, mint egyetlen bit hiba, mivel a teljes hátralévő üzenet olvashatatlanná válhat.
Ezen hátrányok ellenére a CFB továbbra is hasznos mód maradhat bizonyos speciális alkalmazásokban, különösen, ha a hitelesítésről külön gondoskodnak, és a párhuzamosítás nem elsődleges szempont. A kulcs a megfelelő módválasztásban rejlik az adott alkalmazás igényeinek és biztonsági követelményeinek figyelembevételével.
A CFB összehasonlítása más blokkrejtjel működési módokkal
A blokkrejtjelek működési módjai mind különböző kompromisszumokat kínálnak a biztonság, a teljesítmény és az alkalmazhatóság terén. A Ciphertext Feedback (CFB) mód egyedi pozíciót foglal el a spektrumban, különösen a stream rejtjelként való viselkedése miatt. Ahhoz, hogy jobban megértsük a CFB erősségeit és gyengeségeit, érdemes összehasonlítani más elterjedt módokkal.
ECB (Electronic Codebook)
Az Electronic Codebook (ECB) mód a legegyszerűbb, és egyben a legkevésbé biztonságos blokkrejtjel működési mód. Minden egyes nyílt szövegblokkot önállóan titkosít, és ugyanaz a nyílt szövegblokk mindig ugyanazt a titkosított szövegblokkot eredményezi ugyanazzal a kulccsal. Ez a determinisztikus viselkedés súlyos biztonsági kockázatot jelent, mivel a mintázatok és az ismétlődések könnyen felismerhetők a titkosított adatokban. Különösen rossz választás képek, videók vagy bármilyen strukturált adat titkosítására.
CFB vs. ECB: A CFB sokkal biztonságosabb, mint az ECB. Az IV és a visszacsatolási mechanizmus miatt a CFB probabilisztikus titkosítást biztosít: ugyanaz a nyílt szövegblokk különböző titkosított blokkokká alakul, ha az IV vagy az előző titkosított blokk más. A CFB kiküszöböli az ECB-re jellemző mintázati problémákat, és stream rejtjelként való működése miatt paddingre sincs szükség, szemben az ECB-vel, ahol minden blokkot kiegészíteni kell.
CBC (Cipher Block Chaining)
A Cipher Block Chaining (CBC) mód az egyik leggyakrabban használt és ajánlott mód, amely láncolati mechanizmust használ. Minden nyílt szövegblokkot XOR-olnak az előző titkosított szövegblokkal, mielőtt a blokkrejtjellel titkosítanák. Az első blokkhoz egy IV-t használnak. Ez a láncolat biztosítja, hogy minden titkosított blokk az összes előző blokktól függjön, elkerülve az ECB mintázati problémáit. A CBC adatintegritást nem biztosít önmagában, de a hibaterjedése más, mint a CFB-é: egy titkosított bit hiba az adott blokk teljes dekódolását befolyásolja, és az azt követő blokk első bitjét is elrontja.
CFB vs. CBC:
- Padding: CBC igényel paddinget, míg a CFB nem. Ez utóbbi előnyös stream adatoknál.
- Párhuzamosítás: CBC dekódolása párhuzamosítható, de a titkosítása nem. A CFB sem a titkosítást, sem a dekódolást nem tudja hatékonyan párhuzamosítani.
- Hibaterjedés: Egy bit hiba a titkosított szövegben a CBC-ben az adott blokk teljes dekódolását elrontja, és a következő blokk első bitjét is. A CFB-ben egy bit hiba a dekódolt szövegben az adott bitet és az azt követő blokkméretnyi adatot teszi tönkre, majd a hiba elhal.
- Stream vs. Blokk: A CFB stream rejtjelként működik, míg a CBC blokk alapú titkosítást végez.
OFB (Output Feedback)
Az Output Feedback (OFB) mód szintén stream rejtjelként működteti a blokkrejtjelet, hasonlóan a CFB-hez. Azonban az OFB esetében a blokkrejtjel kimenetét (nem a titkosított szöveget) csatolják vissza a következő blokkrejtjel bemeneteként. Ez azt jelenti, hogy az OFB előre generálja a teljes kulcs adatáramot a nyílt szövegtől függetlenül. A nyílt szöveget ezután egyszerűen XOR-olják ezzel a kulcs adatárammal.
CFB vs. OFB:
- Visszacsatolás forrása: A legfőbb különbség. A CFB a *titkosított szöveget* csatolja vissza, míg az OFB a *blokkrejtjel kimenetét* (a kulcs adatáramot) csatolja vissza.
- Hibaterjedés: Az OFB-ben egy bit hiba a titkosított szövegben csak a megfelelő nyílt szöveg bitjét befolyásolja. Nincs hibaterjedés, mivel a kulcs adatáram generálása független a titkosított szövegtől. Ez nagy előny zajos csatornákon.
- Malleability: Mindkét mód malleábilis, és mindkettő igényel hitelesítést.
- Előgenerálás: Az OFB képes előre generálni a kulcs adatáramot, ami hasznos lehet, ha a kulcs adatáramot gyorsan kell felhasználni. A CFB nem tudja ezt megtenni, mivel a visszacsatolás a titkosított szövegtől függ.
CTR (Counter Mode)
A Counter (CTR) mód a legmodernebb és egyre inkább preferált stream rejtjel mód. Egy egyszerű számlálót (counter) és egy nonce-t (Number used once) használ az IV helyett. A számlálót minden egyes blokk előtt növelik, és a blokkrejtjellel titkosítják. A blokkrejtjel kimenetét ezután XOR-olják a nyílt szövegblokkal. A CTR mód is stream rejtjelként működik, és nem igényel paddinget.
CFB vs. CTR:
- Párhuzamosítás: A CTR mód teljesen párhuzamosítható mind a titkosítás, mind a dekódolás során, ami hatalmas előny a modern hardverek kihasználásában és az áteresztőképesség növelésében. A CFB szekvenciális.
- Hibaterjedés: A CTR-ben egy bit hiba a titkosított szövegben csak a megfelelő nyílt szöveg bitjét befolyásolja, hasonlóan az OFB-hez. Nincs hibaterjedés.
- Malleability: Mindkét mód malleábilis, és hitelesítést igényel.
- IV/Nonce kezelés: A CTR egy számlálót és nonce-t használ, ami egyszerűbb és robusztusabb lehet az IV kezelésénél, mivel csak a nonce-nak kell egyedinek lennie, a számláló egyszerűen növelhető.
- Blokkrejtjel funkció: A CTR csak a blokkrejtjel titkosító funkcióját használja, akárcsak a CFB.
A Ciphertext Feedback (CFB) mód egyedülálló képessége, hogy a blokkrejtjelet stream rejtjellé alakítja át, miközben a titkosított szöveget használja fel a láncolathoz, dinamikus és rugalmas titkosítási megoldást kínál, különösen valós idejű adatfolyamok esetén, de a szekvenciális természete és a hitelesítés szükségessége kulcsfontosságú szempontokat jelentenek a választás során.
Összességében a CFB mód egy hasznos eszköz a kriptográfusok eszköztárában, de a modern alkalmazásokban gyakran a CTR vagy a GCM (amely integrálja a CTR-t a hitelesítéssel) a preferált választás a jobb párhuzamosíthatóság és hibakezelés miatt. A CFB leginkább akkor jön szóba, ha a szekvenciális feldolgozás nem jelent problémát, és a stream rejtjel funkcionalitása (padding nélküliség, bitenkénti feldolgozás) kiemelten fontos.
Biztonsági megfontolások és legjobb gyakorlatok CFB esetén
Bármely kriptográfiai mód biztonsága nagymértékben függ annak helyes implementációjától és használatától. A Ciphertext Feedback (CFB) mód esetében is vannak specifikus biztonsági megfontolások és legjobb gyakorlatok, amelyeket be kell tartani a titkosítás integritásának és bizalmasságának fenntartásához.
Az Inicializáló Vektor (IV) generálása és tárolása
Az IV kezelése a CFB mód egyik legkritikusabb biztonsági aspektusa. Ahogy korábban említettük, az IV-nek minden egyes titkosítási munkamenetben egyedinek kell lennie ugyanazzal a titkos kulccsal. Ennek elmulasztása súlyos sebezhetőségekhez vezethet. Ha két különböző üzenetet ugyanazzal a kulccsal és IV-vel titkosítanak CFB módban, a támadó, aki hozzáfér mindkét titkosított szöveghez, képes lehet XOR-olni őket, és ezáltal egy olyan eredményt kapni, amely a két nyílt szöveg XOR-ja. Ebből a támadó gyakran következtetni tud a nyílt szövegek egy részére vagy egészére, különösen, ha az egyik nyílt szöveg ismert, vagy van benne valamilyen statisztikai minta.
- Generálás: Az IV-t egy kriptográfiailag biztonságos véletlenszám-generátorral (CSPRNG) kell generálni. Ennek biztosítania kell, hogy az IV valóban véletlenszerű és előre nem megjósolható legyen.
- Hossz: Az IV méretének meg kell egyeznie a blokkrejtjel blokkméretével (pl. 128 bit AES esetén).
- Tárolás és továbbítás: Az IV-t nem kell titkosítani, de a titkosított szöveggel együtt el kell küldeni a fogadó félnek. Általában a titkosított üzenet elejéhez fűzik. Fontos, hogy az IV-t ne módosítsák átvitel közben, mivel ez hibás dekódoláshoz vezetne.
A kulcskezelés fontossága
Mint minden szimmetrikus kulcsú kriptográfiai rendszerben, a kulcskezelés a CFB mód esetén is alapvető fontosságú. A titkos kulcsot biztonságosan kell generálni, tárolni és terjeszteni. A kulcs kompromittálódása az egész rendszer biztonságát aláássa. A kulcsnak kellően erősnek és véletlenszerűnek kell lennie, és rendszeresen cserélni kell, ahogy azt a biztonsági protokollok előírják.
Hitelesítés kombinálása CFB-vel
A CFB mód önmagában csak bizalmasságot (titkosságot) biztosít, de nem garantálja az adatintegritást vagy a hitelességet. Ez azt jelenti, hogy egy támadó módosíthatja a titkosított szöveget anélkül, hogy azt a címzett észlelné. Ez súlyos biztonsági kockázatot jelenthet, például ha pénzügyi tranzakciókról vagy parancssori utasításokról van szó.
A legjobb gyakorlat az, hogy a CFB módot mindig kombinálják egy üzenethitelesítő kóddal (MAC), például HMAC-kel (Hash-based Message Authentication Code). A MAC-et a titkosított szövegből (és az IV-ből) számítják ki, és a titkosított adatokkal együtt küldik el. A fogadó fél újraszámolja a MAC-et, és összehasonlítja a kapott MAC-kel. Ha a kettő nem egyezik, az azt jelenti, hogy az üzenetet módosították, vagy az IV hibás. Alternatíva lehet egy integrált hitelesített titkosítási mód (Authenticated Encryption with Associated Data – AEAD) használata, mint például a Galois/Counter Mode (GCM), amely egyetlen algoritmusban egyesíti a titkosítást és a hitelesítést, és gyakran előnyösebb, ha elérhető.
Támadások a CFB ellen
- Replay Attack (Ismétlési támadás): Ha egy támadó képes elfogni egy titkosított üzenetet, és azt később újra elküldi, a rendszer elfogadhatja azt érvényes üzenetként, ha nincs megfelelő védelem. Bár az IV egyedisége segít ebben, a protokoll szintjén is szükség van védelemre (pl. sorszámok, időbélyegek).
- Bit-flipping Attack (Bit-átfordításos támadás): Ahogy már említettük, a CFB malleábilis. Egy támadó, aki ismeri a nyílt szöveg egy részét, vagy legalábbis annak várható szerkezetét, szándékosan átfordíthat biteket a titkosított szövegben, hogy a dekódolt nyílt szövegben specifikus változásokat érjen el. Például, ha egy támadó tudja, hogy egy bizonyos offseten egy „0” bit van, és azt „1”-re szeretné változtatni, egyszerűen átfordíthatja a megfelelő bitet a titkosított szövegben. Ez aláhúzza a MAC használatának szükségességét.
- IV újrahasználat: Ez a legveszélyesebb támadás a CFB ellen. Ha ugyanazt az IV-t kétszer használják ugyanazzal a kulccsal, az lehetővé teszi a támadó számára, hogy XOR-olja a két titkosított szöveget (C1 XOR C2). Mivel C1 = P1 XOR Keystream és C2 = P2 XOR Keystream, ebből következik, hogy C1 XOR C2 = (P1 XOR Keystream) XOR (P2 XOR Keystream) = P1 XOR P2. Ha a támadó ismeri P1-et (vagy annak egy részét), akkor könnyedén visszafejtheti P2-t (vagy annak egy részét), és fordítva.
A CFB és a protokollok
A CFB módot történelmileg számos hálózati protokollban alkalmazták, például az SSH (Secure Shell) korábbi verzióiban. Bár a modern protokollok gyakran a CTR vagy a GCM módot részesítik előnyben a jobb párhuzamosíthatóság és az integrált hitelesítés miatt, a CFB továbbra is releváns lehet bizonyos régebbi rendszerekben vagy speciális hardveres implementációkban, ahol a stream-szerű viselkedés és a korlátozott erőforrások kritikusak.
A CFB biztonságos használatához tehát elengedhetetlen a kriptográfiailag erős IV generálása, annak egyediségének biztosítása, a kulcsok megfelelő kezelése, és ami a legfontosabb, a CFB kombinálása egy robusztus üzenethitelesítő mechanizmussal. Ezen elvek betartása nélkül a CFB mód sebezhetővé válhat számos ismert kriptoanalitikai támadással szemben.
Gyakorlati alkalmazások és implementációs szempontok

A Ciphertext Feedback (CFB) mód egyedülálló tulajdonságai, különösen a stream rejtjelként való viselkedése és a padding szükségtelensége, bizonyos specifikus gyakorlati alkalmazásokban teszik előnyössé. Azonban az implementáció során figyelembe kell venni a teljesítményt és a biztonsági buktatókat is.
Mikor előnyös a CFB?
- Folyamatos adatfolyamok (streaming adatok): A CFB kiválóan alkalmas olyan alkalmazásokhoz, ahol az adatok folyamatosan, valós időben érkeznek, és nincs lehetőség a teljes üzenet pufferelésére blokkokba rendezés előtt. Ilyenek lehetnek a hang- és videóátvitel, élő kommunikáció (pl. VoIP), vagy az IoT eszközök szenzoradatainak továbbítása.
- Terminálkapcsolatok (pl. SSH): A régebbi SSH implementációkban a CFB mód gyakori választás volt, mivel lehetővé teszi a karakterenkénti titkosítást és dekódolást. Ez biztosítja az alacsony késleltetést és a reszponzivitást az interaktív terminálmunkamenetek során, ahol minden egyes begépelt karakter azonnal titkosításra és továbbításra kerül.
- Erőforrás-korlátozott környezetek: Bár a CFB nem a leggyorsabb mód a párhuzamosítás hiánya miatt, a padding szükségtelensége és a viszonylag egyszerű logikája előnyös lehet olyan beágyazott rendszerekben vagy mikrovezérlőkön, ahol a memória és a feldolgozási teljesítmény korlátozott. A padding hozzáadása és eltávolítása extra logikát és pufferelést igényelne.
- Rövid, változó hosszúságú üzenetek: Ha az alkalmazás nagyon rövid, változó hosszúságú üzenetek titkosítását igényli (pl. protokollüzenetek), a CFB előnyös lehet, mert nem kell a paddinggel bajlódni, ami aránytalanul megnövelné a titkosított szöveg méretét a rövid üzeneteknél.
Implementációs buktatók
A CFB implementációja során különös figyelmet kell fordítani a következő pontokra, hogy elkerüljük a biztonsági réseket és a működési hibákat:
- IV újrahasználat: Ez a leggyakoribb és legsúlyosabb hiba. Ahogy korábban részleteztük, ugyanazon IV és kulcs páros kétszeri használata két különböző nyílt szöveg titkosítására katasztrofális biztonsági következményekkel jár. Mindig kriptográfiailag biztonságos véletlenszám-generátort kell használni az IV generálásához, és biztosítani kell annak egyediségét minden egyes titkosítási munkamenetben.
- Az ‘s’ paraméter helyes kezelése: Az ‘s’ paraméternek (a visszacsatolás mérete) konzisztensnek kell lennie a titkosító és dekódoló oldalon is. Ezenkívül, ha az ‘s’ értéke lényegesen kisebb, mint a blokkrejtjel blokkmérete, az jelentősen lassíthatja a titkosítási/dekódolási sebességet, mivel több blokkrejtjel meghívásra van szükség egy adott mennyiségű adat feldolgozásához. Ideális esetben az ‘s’ megegyezik a blokkmérettel a legjobb teljesítmény érdekében.
- Szinkronizáció: Mivel a CFB egy láncolt mód, a titkosító és dekódoló oldalon az eltolóregisztereknek szinkronban kell lenniük. Ha egy bit vagy blokk elveszik vagy sérül az átvitel során, az a dekódolás felborulásához vezethet. Bár a CFB-nek van egy öngyógyító mechanizmusa (a hiba elhal egy blokkméretnyi idő után), a protokoll szintjén továbbra is szükség lehet hibakezelésre és reszinkronizációra.
- Hitelesítés hiánya: A CFB önmagában nem nyújt adatintegritást vagy hitelességet. Az implementátoroknak mindig gondoskodniuk kell egy különálló üzenethitelesítő mechanizmusról (pl. HMAC), vagy egy integrált AEAD módot (pl. GCM) kell választaniuk, ha ez utóbbi elérhető és jobban illeszkedik az igényekhez. Ennek elmulasztása lehetővé teszi a támadások módosítását.
- Side-channel támadások: Mint minden kriptográfiai algoritmusnál, a CFB implementációjának is ellenállónak kell lennie a side-channel támadásokkal (pl. időzítéses vagy energiafogyasztás-elemzés) szemben, amelyek információt szivárogtathatnak a titkos kulcsról vagy a belső állapotokról. Ez különösen fontos hardveres implementációk esetén.
Példák valós rendszerekben
Bár a modern rendszerek egyre inkább a CTR vagy GCM mód felé mozdulnak el, a CFB-nek van történelmi és niche alkalmazása:
- SSH: Az SSH protokoll régebbi verziói támogatták a CFB módot, különösen a CFB-8 változatot, a valós idejű terminálkommunikáció miatt.
- SSL/TLS: Bizonyos SSL/TLS verziók és implementációk is tartalmazták a CFB támogatását, bár ma már ritkábban használják.
- Hálózati eszközök: Egyes speciális hálózati eszközök, amelyek alacsony késleltetésű stream titkosítást igényelnek, a CFB-t használhatják.
Teljesítményi szempontok
A CFB teljesítményét alapvetően befolyásolja a blokkrejtjel sebessége és az ‘s’ paraméter. Mivel minden ‘s’ bit feldolgozásához egy teljes blokkrejtjel műveletre van szükség, a kisebb ‘s’ értékek (pl. CFB-1 vagy CFB-8) jelentősen lassabbak, mint a blokkmérettel megegyező ‘s’ érték (pl. CFB-128 AES esetén). Amennyiben a maximális áteresztőképesség a cél, és a párhuzamosítás lehetséges, a CTR mód általában jobb választás. Ha azonban a stream-szerű viselkedés a legfontosabb, és a párhuzamosítás nem kritikus, a CFB továbbra is életképes opció lehet.
Összefoglalva, a CFB egy robusztus blokkrejtjel működési mód, amely hatékonyan alakítja át a blokkrejtjeleket stream rejtjelekké. Megfelelő implementációval és a biztonsági legjobb gyakorlatok betartásával (különösen az IV kezelése és a hitelesítés hozzáadása) biztonságos megoldást nyújthat számos alkalmazás számára, különösen a valós idejű és folyamatos adatfolyamok titkosítására.