Folyamtitkosító (stream cipher): a titkosítási módszer működésének magyarázata

A folyamtitkosító egy titkosítási módszer, amely adatokat egyesével, folyamatosan titkosít, így gyors és hatékony védelmet nyújt. Ez a technika különösen hasznos valós idejű kommunikációban, például csevegés vagy videóátvitel során.
ITSZÓTÁR.hu
32 Min Read

A Folyamtitkosító (Stream Cipher): Alapok és Működési Elv

A digitális kommunikáció és adatvédelem korában a titkosítási módszerek kulcsfontosságúak az információk biztonságának garantálásához. A kriptográfia számos eszközt kínál erre a célra, melyek közül a folyamtitkosító (angolul: stream cipher) az egyik legalapvetőbb és leggyorsabb eljárás. Működése alapvetően különbözik a blokktitkosítóktól, mint amilyen az AES, mivel nem blokkokban, hanem adatelemek (általában bitek vagy bájtok) folyamatos áramlásában dolgozik. Ez a megközelítés különösen alkalmassá teszi valós idejű kommunikáció, például hang- vagy videóátvitel titkosítására, ahol az alacsony késleltetés kritikus fontosságú.

A folyamtitkosító lényege egy pszeudovéletlen kulcsfolyam generátor (Key Stream Generator – KSG), amely egy rövid, titkos kulcsból egy hosszú, látszólag véletlenszerű bitsorozatot állít elő. Ezt a bitsorozatot nevezzük kulcsfolyamnak. A titkosítási folyamat során a nyílt szöveg minden egyes bitjét (vagy bájtját) a kulcsfolyam megfelelő bitjével (vagy bájtjával) kombinálják, leggyakrabban az exkluzív VAGY (XOR) logikai művelet segítségével. Az XOR művelet kiválasztása nem véletlen: egyrészt rendkívül gyorsan végrehajtható, másrészt azonos kulcsfolyamot használva a titkosított szöveg (ciphertext) visszafejtése is pontosan ugyanúgy történik, mint a titkosítás. Ha P a nyílt szöveg, K a kulcsfolyam, és C a titkosított szöveg, akkor a titkosítás C = P \oplus K, a visszafejtés pedig P = C \oplus K formában írható le. Mivel (P \oplus K) \oplus K = P \oplus (K \oplus K) = P \oplus 0 = P, a visszafejtés triviális és hatékony.

A folyamtitkosítók vonzereje abban rejlik, hogy kiválóan alkalmasak hardveres implementációra, mivel egyszerű logikai kapukkal is megvalósíthatók, minimális erőforrásigénnyel. Ezért gyakran alkalmazzák őket beágyazott rendszerekben, mobiltelefonokban és IoT (Internet of Things) eszközökben, ahol a feldolgozási teljesítmény és az energiafogyasztás korlátozott. Fontos megérteni, hogy a folyamtitkosító biztonsága szinte teljes egészében a kulcsfolyam generátor minőségén múlik. Ha a generált kulcsfolyam nem elég véletlenszerű, vagy mintázatok mutathatók ki benne, a titkosítás könnyen feltörhetővé válik.

A folyamtitkosítók elméleti alapja az egyidejűleg kulcs (one-time pad) elvén nyugszik, amely bizonyítottan tökéletes titkosítást biztosít, feltéve, hogy a kulcs valóban véletlen, egyszer használatos és legalább olyan hosszú, mint a titkosítandó üzenet. A gyakorlati folyamtitkosítók ezt az ideált közelítik meg pszeudovéletlen kulcsfolyam generátorok segítségével, ami azonban bevezeti a sebezhetőségeket, ha a generátor nem elég robusztus, vagy a kulcsfolyamot újra felhasználják.

A Kulcsfolyam Generátor (KSG) Részletes Működése

Mint említettük, a folyamtitkosító szíve a kulcsfolyam generátor. Ennek feladata, hogy egy viszonylag rövid, titkos kulcsból egy hosszú, determinisztikus, de statisztikailag véletlenszerűnek tűnő bitfolyamot állítson elő. A generátor kimenetét nevezzük kulcsfolyamnak.

Pszeudovéletlen Számgenerátorok (PRNG-k)

A kulcsfolyam generátorok lényegében kriptográfiailag biztonságos pszeudovéletlen számgenerátorok (CSPRNGs). A „pszeudovéletlen” kifejezés azt jelenti, hogy a generált sorozat bár determinisztikus (azaz a kiinduló állapotból, az úgynevezett seed-ből vagy kulcsból mindig ugyanazt a sorozatot generálja), mégis statisztikailag olyan tulajdonságokkal rendelkezik, mint egy valóban véletlen sorozat. Egy kriptográfiailag biztonságos PRNG-nek a következő feltételeknek kell megfelelnie:

  • Előre jelezhetetlenség: A korábbi kimenetek ismeretében ne legyen lehetséges a következő kimenetek előrejelzése.
  • Visszafejthetetlenség: A kimenetek ismeretében ne legyen lehetséges a generátor belső állapotának, vagy a kiinduló kulcsnak a visszafejtése.
  • Hosszú periódus: A generált sorozatnak rendkívül hosszú periódusúnak kell lennie, mielőtt megismételné önmagát.

Lineáris Visszacsatolású Eltolóregiszterek (LFSR-ek)

A kulcsfolyam generátorok gyakran épülnek lineáris visszacsatolású eltolóregiszterekre (Linear Feedback Shift Registers – LFSRs). Az LFSR egy sorozatba kapcsolt flip-flopokból álló regiszter, amely minden órajelre eltolja a tárolt biteket, és az utolsó bitet eldobják, az első bitet pedig a korábbi bitek egy lineáris kombinációjából (általában XOR műveletekkel) generálják. Ez a lineáris kombináció a visszacsatolási függvény.

Működési Elv

Egy n bites LFSR n darab flip-flopból áll. A visszacsatolási függvény meghatározza, hogy mely bitek kimeneteit XOR-olják össze, hogy az új bemeneti bitet képezzék. Ezeket a pozíciókat nevezzük tápcsapolásoknak (taps). Az LFSR kimenete általában az utolsó flip-flop értéke, vagy az összes flip-flop értékeinek valamilyen lineáris kombinációja. Az LFSR-ek rendkívül hatékonyak hardveres megvalósításban, és hosszú pszeudovéletlen sorozatokat képesek generálni.

Példa LFSR-re

Vegyünk egy egyszerű, 4 bites LFSR-t, ahol a visszacsatolási függvény a 3. és 4. bit XOR-ja (azaz a taps pozíciók a 3 és 4). A regiszter bitjeit jelöljük b_3, b_2, b_1, b_0-val. Az új b_3 bit a következőképpen számítódik: b_3′ = b_0 \oplus b_1. A többi bit egyszerűen eltolódik: b_2′ = b_3, b_1′ = b_2, b_0′ = b_1. A kimeneti bit lehet például a b_0 bit. Ha a kezdeti állapot [1,0,0,0], akkor a sorozat a következőképpen alakul:

  1. [1,0,0,0] -> kimenet: 0
  2. b_3′ = 0 \oplus 0 = 0 -> [0,1,0,0] -> kimenet: 0
  3. b_3′ = 0 \oplus 0 = 0 -> [0,0,1,0] -> kimenet: 0
  4. b_3′ = 1 \oplus 0 = 1 -> [1,0,0,1] -> kimenet: 1
  5. b_3′ = 0 \oplus 0 = 0 -> [0,1,0,0] -> kimenet: 0

Egy n bites LFSR maximális periódusa 2^n – 1 lehet, ha a visszacsatolási függvényt egy primitív polinom határozza meg. Ezt a tulajdonságot „maximális hosszúságú LFSR-nek” nevezik. Az LFSR-ek önmagukban azonban nem elég biztonságosak kriptográfiai célokra, mivel lineárisak, ami azt jelenti, hogy kimenetükből viszonylag kevés mintát ismerve a teljes sorozat előrejelezhető. Ezért a modern folyamtitkosítókban nemlineáris elemeket vagy több, különböző LFSR-t kombinálnak összetett módon, hogy a linearitást megtörjék és a biztonságot növeljék.

Nemlineáris Kulcsfolyam Generátorok

A biztonság növelése érdekében a gyakorlatban használt kulcsfolyam generátorok gyakran tartalmaznak nemlineáris komponenseket. Ezek lehetnek:

  • Nemlineáris kombináló függvények: Több LFSR kimenetét egy nemlineáris logikai függvénnyel kombinálják.
  • Órajel-vezérelt LFSR-ek (Clock-Controlled LFSRs): Az LFSR-ek órajelét egy másik LFSR kimenete vezérli, ami bonyolítja a bitfolyam előrejelezhetőségét.
  • Áramlási regiszterek (Filter Generators): Egyetlen LFSR kimenetét egy nemlineáris szűrőfüggvényen vezetik keresztül, amely a regiszter belső állapotának több bitjéből generálja a kimeneti bitet.

Ezek a technikák jelentősen növelik a generált kulcsfolyam komplexitását és ellenállását a kriptanalitikai támadásokkal szemben.

Szinkron és Önszinkronizáló Folyamtitkosítók

A folyamtitkosítók két fő kategóriába sorolhatók aszerint, hogy hogyan kezelik a kulcsfolyam generálását és a hibák terjedését:

  1. Szinkron Folyamtitkosítók (Synchronous Stream Ciphers)
  2. Önszinkronizáló Folyamtitkosítók (Self-Synchronizing Stream Ciphers)

Szinkron Folyamtitkosítók

A szinkron folyamtitkosítók a leggyakoribb típus. Nevük onnan ered, hogy a feladó és a címzett kulcsfolyam generátorának szinkronban kell lennie, azaz pontosan ugyanazt a kulcsfolyamot kell generálniuk. Ez azt jelenti, hogy mindkét félnek ugyanazt a kezdeti kulcsot és ugyanazt az inicializáló vektort (IV) vagy noncét (nonce) kell használnia, és pontosan ugyanazzal a belső állapottal kell kezdeniük a generálást.

  • Működés: A kulcsfolyam generátor (KSG) a kulcs és az IV alapján generálja a kulcsfolyamot, függetlenül a nyílt vagy titkosított szövegtől. A titkosítás és visszafejtés során a nyílt/titkosított szöveg minden bitjét egyszerűen XOR-olják a kulcsfolyam megfelelő bitjével.
  • Előnyök:
    • Nincs hibaterjedés: Ha egy bit hiba történik a titkosított szövegben az átvitel során, az csak az adott bit visszafejtését befolyásolja. A hiba nem terjed tovább a visszafejtett szövegben. Ez nagyon fontos zajos csatornák esetén.
    • Pre-processing: A kulcsfolyam előre generálható, mielőtt a nyílt szöveg rendelkezésre állna, ami növeli a sebességet.
    • Egyszerűség: Relatíve egyszerű a megvalósításuk.
  • Hátrányok:
    • Szinkronizációs igény: Ha a feladó és a címzett elveszíti a szinkront (például egy bit elveszik vagy megismétlődik az átvitel során), az összes későbbi bit hibásan fog visszafejtődni. A szinkronizáció visszaállításához újra kell kezdeni a folyamatot, vagy különleges mechanizmusokat kell alkalmazni.
    • Aktív támadások: Mivel az átvitt titkosított szöveg bitjeinek megváltoztatása csak az adott pozícióban okoz hibát, ez lehetőséget adhat aktív támadásokra (pl. bit-flipping), ahol a támadó céltudatosan módosítja a titkosított szöveget, hogy a visszafejtett szövegben kívánt változást érjen el.

Önszinkronizáló Folyamtitkosítók (Cipher Feedback Stream Ciphers)

Az önszinkronizáló folyamtitkosítók (más néven cipher feedback stream ciphers, bár ez a kifejezés gyakrabban utal blokktitkosítók CFB módjára) a titkosított szöveg egy részét használják fel a kulcsfolyam generátor következő állapotának meghatározásához. Ezáltal képesek automatikusan visszanyerni a szinkront, ha az átvitel során hiba történik.

  • Működés: A kulcsfolyam generátor bemenete nem csak a kulcs és az IV, hanem a titkosított szöveg korábbi k bitje is. Például, ha egy k bites eltolóregisztert használnak, akkor a regiszterbe a legutolsó k titkosított bit kerül be. Ez biztosítja, hogy a feladó és a címzett generátora mindig szinkronban maradjon, amíg ugyanazokat a titkosított biteket látják.
  • Előnyök:
    • Automatikus szinkronizáció: Képesek helyreállítani a szinkront egy bizonyos számú (általában k) helyes bit vétele után, még akkor is, ha az átvitel során bitek vesznek el vagy adódnak hozzá.
    • Aktív támadások elleni védelem: Mivel a titkosított szöveg módosítása befolyásolja a kulcsfolyam generátort, az ilyen módosítások hibákat okoznak a visszafejtett szöveg későbbi részeiben is, ami megnehezíti a célzott bit-flipping támadásokat. Ez egyfajta diffúziót (a nyílt szöveg egy bitjének megváltozása sok titkosított bitet befolyásol) és konfúziót (a kulcs és a titkosított szöveg közötti kapcsolat elrejtése) biztosít.
  • Hátrányok:
    • Hibaterjedés: Egyetlen bit hiba a titkosított szövegben nem csak az adott bit visszafejtését befolyásolja, hanem a következő k bit visszafejtését is, mivel a hibás bit bekerül a kulcsfolyam generátor bemenetébe.
    • Lassabb: Általában lassabbak, mivel a kulcsfolyam generálásához szükség van a titkosított szövegre, így nem lehet előre generálni.
    • Komplexitás: Valamivel bonyolultabb a tervezésük és megvalósításuk.

A gyakorlatban a szinkron folyamtitkosítók sokkal elterjedtebbek a hibaterjedés hiánya és a sebesség miatt, és a szinkronizációs problémákat az alkalmazási rétegben kezelik (pl. új IV küldésével, ha a kapcsolat megszakad).

Az XOR Művelet Szerepe a Folyamtitkosításban

Az XOR művelet kulcsfontosságú az adatfolyam titkosításában.
Az XOR művelet kulcsfontosságú a folyamtitkosításban, mert egyszerűen és gyorsan biztosít bitenkénti titkosítást.

Az exkluzív VAGY (XOR) logikai művelet (jelölése: \oplus) központi szerepet játszik a folyamtitkosítókban, és számos okból ideális választás a nyílt szöveg és a kulcsfolyam kombinálására:

  • Invertálhatóság és Szimmetria: Az XOR művelet önmagával történő XOR-olása semleges elemet eredményez: A \oplus A = 0. Ez azt jelenti, hogy ha a nyílt szöveget (P) XOR-oljuk a kulcsfolyammal (K) a titkosításhoz (C = P \oplus K), akkor a visszafejtéshez egyszerűen újra XOR-olnunk kell a titkosított szöveget ugyanazzal a kulcsfolyammal (P = C \oplus K). Ez a szimmetria rendkívül egyszerűvé és hatékonnyá teszi a visszafejtési folyamatot.
  • Egyszerűség és Sebesség: Az XOR művelet egy alapvető bitenkénti logikai művelet, amely a modern processzorokon rendkívül gyorsan végrehajtható, általában egyetlen CPU ciklus alatt. Ez alapvető fontosságú a valós idejű alkalmazások, például a hang- vagy videóátvitel esetében.
  • Információelrejtés: Ha a kulcsfolyam valóban véletlen, akkor a nyílt szöveg minden bitje 50% eséllyel változik meg vagy marad változatlan az XOR művelet után, függetlenül a nyílt szöveg tartalmától. Ez azt eredményezi, hogy a titkosított szöveg statisztikailag véletlenszerűnek tűnik, és nem szolgáltat információt a nyílt szövegről. Ha például a nyílt szövegben sok a nulla, és a kulcsfolyam nem véletlen, akkor az XOR művelet után is látható mintázatok maradhatnak. Azonban, ha a kulcsfolyam valóban véletlen (mint az egyidejűleg kulcs esetében), akkor a titkosított szöveg bitjei 0,5 valószínűséggel lesznek 0-k és 0,5 valószínűséggel 1-ek, függetlenül a nyílt szöveg eloszlásától.
  • Lineáris tulajdonságok ellenére biztonság: Bár az XOR egy lineáris művelet, a folyamtitkosító biztonságát nem ez a művelet, hanem a kulcsfolyam generátor nemlinearitása és véletlenszerűsége biztosítja. Az XOR csupán a két bemeneti adatfolyam kombinálására szolgál, a kriptográfiai erő a generált kulcsfolyamból származik.

Történelmi és Modern Folyamtitkosítók

A folyamtitkosítók története egészen a második világháborúig nyúlik vissza, és azóta folyamatosan fejlődtek. Néhány kiemelkedő példa:

RC4 (Rivest Cipher 4)

Az RC4 egy rendkívül népszerű és széles körben használt szoftveres folyamtitkosító volt, amelyet Ron Rivest tervezett 1987-ben a RSA Security számára. Bár eredetileg kereskedelmi titok volt, 1994-ben kiszivárgott a forráskódja. Egyszerűsége és sebessége miatt számos protokollban alkalmazták, például a WEP (Wired Equivalent Privacy) és a korai TLS (Transport Layer Security) verziókban.

  • Működés: Az RC4 egy 256 bájtos állapotvektorral (S-box) dolgozik, amelyet a kezdeti kulcs alapján inicializálnak (Key-Scheduling Algorithm – KSA). Ezt követően a Pseudo-Random Generation Algorithm (PRGA) generálja a kulcsfolyamot, minden lépésben felcserélve az S-box elemeit, és egy kimeneti bájtot generálva.
  • Sebezhetőségek: Az RC4-ről számos komoly sebezhetőséget fedeztek fel az évek során, amelyek a kulcsfolyam statisztikai torzításaihoz és az azonos kulcsok vagy IV-k újrahasznosításához kapcsolódnak. A WEP protokollban például a rövid IV-k és a kulcsfolyam újrahasznosítása lehetővé tette a feltörést. A TLS-ben is találtak támadásokat, amelyek az RC4 gyengeségeit használták ki. Emiatt az RC4-et ma már nem ajánlott kriptográfiai célokra használni.

A5/1 és A5/2

Az A5/1 egy folyamtitkosító, amelyet a GSM (Global System for Mobile Communications) mobiltelefon-hálózatokban használtak a hangkommunikáció titkosítására. Három LFSR-ből áll, különböző hosszal és visszacsatolási polinomokkal, amelyeket egy bonyolult órajel-vezérlő mechanizmus kapcsol össze a nemlinearitás bevezetésére.

  • Működés: A három LFSR (19, 22 és 23 bites) órajelét egy többségi függvény vezérli, amely az LFSR-ek adott bitjeinek értékétől függően dönti el, melyik LFSR lépjen tovább. Ez a nemlineáris órajel-vezérlés volt hivatott a biztonságot növelni.
  • Sebezhetőségek: Bár az A5/1 hosszú ideig biztonságosnak számított, az évek során számos támadást fedeztek fel ellene, amelyek lehetővé teszik a kulcs visszafejtését viszonylag rövid idő alatt, passzív lehallgatással is. Az A5/2 egy gyengített export verzió volt, amelyet még könnyebb volt feltörni. Ma már az A5/1 sem tekinthető biztonságosnak a modern kriptográfiai szabványok szerint, és a GSM hálózatok fokozatosan áttérnek erősebb titkosításra, vagy más protokollokra (pl. LTE, 5G).

Salsa20 és ChaCha20

A Salsa20 és utódja, a ChaCha20, a modern, nagy teljesítményű, szoftveres folyamtitkosítók közé tartoznak, amelyeket Daniel J. Bernstein tervezett. Ezek a cipherek Add-Rotate-XOR (ARX) műveleteken alapulnak, ami azt jelenti, hogy kizárólag összeadás, eltolás (rotáció) és XOR műveleteket használnak. Ez rendkívül hatékonnyá teszi őket a modern CPU-k számára, mivel ezek a műveletek natívan támogatottak.

  • Működés: A Salsa20/ChaCha20 egy 512 bites (64 bájtos) belső állapotot tart fenn, amely a kulcsot, a noncét és egy számlálót tartalmazza. Ezt az állapotot egy sor iterációval (általában 20 iterációval a ChaCha20-nál) „összekeverik”, majd az eredményt XOR-olják a nyílt szöveggel. A számláló biztosítja, hogy minden blokkhoz egyedi kulcsfolyam generálódjon, még azonos kulcs és nonce esetén is.
  • Előnyök:
    • Magas sebesség: Kiváló szoftveres teljesítményt nyújtanak, gyakran gyorsabbak, mint a blokktitkosítók CTR módja.
    • Robusztus biztonság: Nem ismertek gyakorlati támadások ellenük.
    • Egyszerűség és Elegancia: Viszonylag egyszerű a tervezésük, ami megkönnyíti az elemzésüket és a helyes implementációjukat.
  • Alkalmazások: A ChaCha20 széles körben elterjedt a modern protokollokban, mint például a TLS 1.2 és 1.3 (különösen a ChaCha20-Poly1305, mint hitelesített titkosító), a WireGuard VPN, és számos mobilalkalmazásban is használják. Az IETF (Internet Engineering Task Force) és a Google is ajánlja.

Trivium

A Trivium egy hardverre optimalizált folyamtitkosító, amelyet a könnyűsúlyú kriptográfia területén (pl. RFID chipek, szenzorhálózatok) való alkalmazásra terveztek. Rendkívül kompakt és alacsony energiaigényű.

  • Működés: Három, egymással összekapcsolt, nemlineáris visszacsatolású regiszterből áll, amelyek komplex módon befolyásolják egymást.
  • Jellemzők: Nagyon kicsi hardveres lábnyommal rendelkezik, és nagy sebességgel képes kulcsfolyamot generálni. Biztonsága ellenállónak bizonyult számos támadással szemben.

Előnyök és Hátrányok

A folyamtitkosítóknak megvannak a maguk specifikus előnyei és hátrányai, amelyek befolyásolják, hogy mely alkalmazásokban érdemes őket használni.

Előnyök

  • Sebesség és Hatékonyság:
    • Bit-orientált feldolgozás: A folyamtitkosítók bitről bitre vagy bájtról bájtra dolgoznak, ami rendkívül gyorssá teszi őket, különösen a hardveres implementációkban. Nincs szükség pufferelésre, ami csökkenti a késleltetést.
    • Alacsony késleltetés: Ideálisak valós idejű alkalmazásokhoz, mint például hang- vagy videóátvitel, ahol a késleltetés minimalizálása kulcsfontosságú.
    • Hardveres optimalizáció: Az XOR művelet és az eltolóregiszterek egyszerű logikája miatt nagyon könnyen és hatékonyan implementálhatók hardveresen, kis energiafogyasztással és alacsony kapuszámmal. Ez teszi őket vonzóvá beágyazott rendszerek és IoT eszközök számára.
  • Nincs hiba terjedés (szinkron cipherek esetén): Ha egy bit hiba történik a titkosított szövegben az átvitel során, az csak az adott bit visszafejtését befolyásolja, a többi bit helyesen dekódolódik. Ez előnyös zajos csatornákon.
  • Változó hosszúságú üzenetek kezelése: Könnyedén kezelnek bármilyen hosszúságú üzenetet, mivel nincs szükség blokkokra való felosztásra és paddingra, mint a blokktitkosítók esetében.

Hátrányok

  • Kulcsfolyam Újrahasznosítási Probléma:
    • Katasztrófa: Ez a folyamtitkosítók legnagyobb és legsúlyosabb hátránya. Soha nem szabad ugyanazt a kulcsfolyamot kétszer felhasználni ugyanazzal a kulccsal! Ha ugyanazt a kulcsfolyamot használjuk két különböző nyílt szöveg titkosítására (C1 = P1 \oplus K és C2 = P2 \oplus K), akkor a két titkosított szöveg XOR-olásával azonnal információt nyerhetünk a nyílt szövegekről: C1 \oplus C2 = (P1 \oplus K) \oplus (P2 \oplus K) = P1 \oplus P2. Ha a támadó rendelkezik némi információval P1-ről vagy P2-ről (pl. ismert protokollfejlécek, gyakori szavak), akkor mindkét nyílt szöveg feltörhető. Ezt a problémát a nonce vagy inicializáló vektor (IV) használatával küszöbölik ki, amely biztosítja, hogy minden titkosítási művelet egyedi kulcsfolyamot generáljon, még azonos kulcs esetén is.
  • Aktív Támadásokra Való Hajlam (szinkron cipherek esetén):
    • Mivel a titkosított szöveg bitjeinek megváltoztatása csak az adott pozícióban okoz hibát a visszafejtett szövegben, a támadók manipulálhatják a titkosított üzenetet anélkül, hogy a címzett észrevenné a manipulációt. Például, ha egy támadó tudja, hogy egy bizonyos bit a nyílt szövegben egy parancsot reprezentál (pl. „engedélyez”), és azt „tilt”-re szeretné változtatni, egyszerűen megfordíthatja az adott bitet a titkosított szövegben. Ezért a folyamtitkosítókat gyakran üzenethitelesítő kódokkal (Message Authentication Codes – MACs) vagy digitális aláírásokkal kombinálják az integritás és hitelesség biztosítására.
  • Nincs beépített integritás/hitelesség: A folyamtitkosítók önmagukban csak a bizalmasságot (confidentiality) biztosítják, nem az üzenet integritását (az üzenet nem módosult) és hitelességét (az üzenet a feltételezett küldőtől származik). Ezért, mint fentebb említettük, kiegészítő mechanizmusokra van szükség.

Biztonsági Megfontolások és Támadások

A folyamtitkosítók biztonsága kritikus fontosságú, és számos tényezőtől függ. A főbb biztonsági aggályok és támadási típusok a következők:

Kulcsfolyam Újrahasznosítás (Key Stream Reuse)

Ez a legsúlyosabb hiba, amit egy folyamtitkosítóval el lehet követni. Ahogy korábban kifejtettük, ha ugyanazt a kulcsfolyamot (K) két különböző nyílt szöveg (P1 és P2) titkosítására használjuk, akkor a két titkosított szöveg (C1 és C2) XOR-olásával megkapjuk a két nyílt szöveg XOR-ját (P1 \oplus P2). Ebből az információból a támadó gyakran képes rekonstruálni az eredeti nyílt szövegeket, különösen, ha azok emberi nyelven íródtak (amelyek redundánsak), vagy ismert formátumúak (pl. protokollfejlécek). Ezért minden egyes titkosítási művelethez egy egyedi noncét (number used once) vagy inicializáló vektort (IV) kell használni, amely biztosítja, hogy a kulcsfolyam generátor minden alkalommal más állapotból induljon, és ezáltal egyedi kulcsfolyamot állítson elő. A nonce-t nem kell titokban tartani, de minden alkalommal másnak kell lennie ugyanazzal a kulccsal.

Ismert Nyílt Szöveges Támadás (Known-Plaintext Attack)

Ha egy támadó ismeri a nyílt szöveg egy részét és a hozzá tartozó titkosított szöveget, akkor könnyedén rekonstruálhatja a kulcsfolyam azon részét (K = P \oplus C). Ha ez a kulcsfolyam rész elegendő információt szolgáltat a kulcsfolyam generátor belső állapotáról vagy a kulcsról, akkor a támadó előrejelezheti a további kulcsfolyamot, és feltörheti a titkosítást. Ezért létfontosságú, hogy a kulcsfolyam generátor kriptográfiailag biztonságos legyen, és ellenálljon az ilyen típusú elemzéseknek.

Bit Flipping Támadások

Szinkron folyamtitkosítók esetén a támadó megváltoztathatja a titkosított szöveg egyes bitjeit, és ez a változás pontosan ugyanazt a bitet fogja megváltoztatni a visszafejtett nyílt szövegben. Például, ha a támadó tudja, hogy a 100. bit a nyílt szövegben azt jelenti, hogy „igen”, és megváltoztatja azt „nem”-re, akkor egyszerűen megfordíthatja a 100. bitet a titkosított szövegben. Mivel a folyamtitkosító önmagában nem biztosít üzenet integritást, a címzett nem fogja észrevenni a manipulációt. Ennek elkerülésére üzenethitelesítő kódokat (MAC) vagy digitális aláírásokat kell használni a titkosítással együtt.

Statisztikai Támadások

Ha a kulcsfolyam generátor nem állít elő statisztikailag véletlenszerűnek tűnő sorozatot, mintázatok vagy torzítások mutathatók ki benne. A kriptanalitikusok ezeket a statisztikai gyengeségeket kihasználva próbálják meg rekonstruálni a kulcsfolyamot vagy a belső állapotot. A modern, jól megtervezett folyamtitkosítók (mint a ChaCha20) ellenállnak az ilyen támadásoknak.

Rizikók és Megelőzés

A folyamtitkosítók használatakor a legfontosabb biztonsági elv a nonce (vagy IV) helyes kezelése. Minden egyes titkosítási művelethez egy egyedi nonce-t kell generálni. Ezt a nonce-t nem kell titokban tartani, de soha nem szabad újra felhasználni ugyanazzal a kulccsal. Ha a nonce véletlenszerű, akkor azt is biztosítani kell, hogy elegendő hosszúságú legyen a kollíziók elkerülésére. Sok modern protokollban a nonce egyszerűen egy számláló (counter), ami biztosítja az egyediséget.

A passzív támadások (lehallgatás) elleni védelem mellett az aktív támadások (üzenetmódosítás) elhárítására hitelesített titkosítási (Authenticated Encryption – AE) módokat vagy különálló MAC-eket kell alkalmazni. Az autentikált titkosítási módok (pl. AES-GCM, ChaCha20-Poly1305) nem csak titkosítják az adatokat, hanem biztosítják azok integritását és hitelességét is, megakadályozva a támadókat abban, hogy észrevétlenül módosítsák a titkosított üzenetet.

Összehasonlítás Blokktitkosítókkal

A blokktitkosítók összehasonlítása kiemeli a sebességkülönbségeket.
A folyamtitkosítók gyorsak és hatékonyak, különösen valós idejű adatfolyamok titkosításánál, szemben a blokktitkosítókkal.

A kriptográfiában a folyamtitkosítók mellett a blokktitkosítók (block ciphers) a másik fő kategória. Fontos megérteni a különbségeket és azt, hogy mikor melyik típust érdemes használni.

Blokktitkosítók

A blokktitkosítók, mint például az AES (Advanced Encryption Standard), rögzített méretű adatblokkokat (pl. 128 bitet) titkosítanak egyidejűleg. A titkosítási algoritmus egy blokkot vesz bemenetként, és egy másik blokkot ad ki titkosított formában. A titkosítási folyamat során a blokktitkosító ugyanazt a kulcsot használja minden blokkhoz, de különböző módokban (modes of operation) működhet, amelyek befolyásolják a biztonságot és a teljesítményt.

Főbb különbségek

  1. Granularitás:
    • Folyamtitkosító: Bit- vagy bájt-orientált.
    • Blokktitkosító: Blokk-orientált (pl. 128 bit).
  2. Sebesség/Késleltetés:
    • Folyamtitkosító: Általában gyorsabb és alacsonyabb késleltetésű, különösen hardverben, ideális valós idejű adatfolyamokhoz.
    • Blokktitkosító: Magasabb késleltetésű lehet, mivel a teljes blokknak rendelkezésre kell állnia a titkosításhoz.
  3. Hibaterjedés:
    • Folyamtitkosító (szinkron): Nincs hibaterjedés. Egy bit hiba csak az adott bitet érinti.
    • Blokktitkosító (ECB mód): Nincs hibaterjedés, de nem is biztonságos.
    • Blokktitkosító (CBC, CFB mód): Hibaterjedés van. Egy bit hiba befolyásolja az adott blokkot és a következő blokk(ok)at is.
  4. Padding (kitöltés):
    • Folyamtitkosító: Nincs szükség paddingra, mivel bármilyen hosszúságú üzenetet képes kezelni.
    • Blokktitkosító: Gyakran szükség van paddingra, hogy az utolsó blokk is kitöltésre kerüljön a blokkméretre.
  5. Komplexitás:
    • Folyamtitkosító: Általában egyszerűbb hardveres megvalósítás, de a kulcsfolyam generátor tervezése bonyolult lehet.
    • Blokktitkosító: Komplexebb algoritmusok, de jól szabványosítottak.

Blokktitkosítók Folyamtitkosító Módjai (Stream Cipher Modes of Block Ciphers)

Érdemes megjegyezni, hogy a blokktitkosítókat is lehet „folyamtitkosítóként” használni, ha bizonyos üzemmódokban alkalmazzák őket. A leggyakoribb ilyen mód a Counter Mode (CTR).

  • CTR Mód: A CTR mód a blokktitkosítót folyamtitkosítóként működteti. Ebben az üzemmódban a blokktitkosítót nem közvetlenül a nyílt szövegen alkalmazzák, hanem egy számláló (counter) értékét titkosítják minden blokkhoz. A számláló értéke minden blokk után növekszik, és egy egyedi noncét is tartalmaz, hogy minden titkosítási művelethez egyedi bemenetet biztosítson. A titkosított számláló értéke képezi a kulcsfolyamot, amelyet aztán XOR-olnak a nyílt szöveg blokkjaival.
  • Előnyök (CTR):
    • Párhuzamosítás: A blokkok titkosítása párhuzamosan végezhető, ami nagy sebességet tesz lehetővé többmagos processzorokon.
    • Nincs hibaterjedés: Hasonlóan a szinkron folyamtitkosítókhoz, egy bit hiba csak az adott blokkban okoz hibát.
    • Nincs padding: Nincs szükség paddingra, mivel a kulcsfolyamot bájt-bájtra lehet generálni.

Hitelesített Titkosítás (Authenticated Encryption – AE)

A modern kriptográfiában egyre inkább az Authenticated Encryption with Associated Data (AEAD) algoritmusokat részesítik előnyben, mint amilyen az AES-GCM (Galois/Counter Mode) vagy a ChaCha20-Poly1305. Ezek az algoritmusok egyetlen lépésben biztosítják mind a bizalmasságot (titkosítás), mind az integritást és hitelességet (MAC). Az AES-GCM például az AES blokktitkosítót használja CTR módban a titkosításhoz, és egy univerzális hash függvényt (GHASH) a MAC generálásához. A ChaCha20-Poly1305 hasonlóan működik, a ChaCha20 folyamtitkosítót kombinálja a Poly1305 MAC-kel.

Ezek a kombinált algoritmusok megoldják a folyamtitkosítók (és blokktitkosítók üzemmódjainak) azon alapvető problémáját, hogy önmagukban nem biztosítanak integritást. Ezáltal robusztusabb és biztonságosabb megoldást nyújtanak a mai adatátviteli igényekhez.

Alkalmazási Területek

A folyamtitkosítók, illetve a folyamtitkosítóként viselkedő blokktitkosító üzemmódok, széles körben elterjedtek a modern digitális világban, különösen ott, ahol a sebesség, az alacsony késleltetés és a hardveres hatékonyság kritikus.

  • Vezeték nélküli Kommunikáció:
    • GSM: Történelmileg az A5/1 és A5/2 folyamtitkosítókat használták a GSM hangkommunikáció titkosítására. Bár ezek ma már elavultnak számítanak, jól mutatják a folyamtitkosítók korábbi dominanciáját a mobilhálózatokban.
    • Wi-Fi (WEP/WPA): A WEP (Wired Equivalent Privacy) protokollban az RC4-et alkalmazták, ami a protokoll egyik fő gyengesége volt. A WPA (Wi-Fi Protected Access) is használta az RC4-et a TKIP protokoll részeként, de a WPA2 és WPA3 már az AES-t részesíti előnyben (általában CCMP vagy GCMP módban, amelyek blokktitkosítók folyamtitkosító módjai).
  • TLS/SSL (Transport Layer Security / Secure Sockets Layer):
    • Az internetes kommunikáció gerincét képező TLS protokoll számos titkosító algoritmust támogat. Hosszú ideig az RC4 az egyik leggyakrabban használt folyamtitkosító volt a TLS-ben. A felfedezett sebezhetőségek miatt azonban az RC4 használatát már erősen ellenjavallják, és a modern TLS implementációk áttértek az AES-GCM-re vagy a ChaCha20-Poly1305-re. Ezek lényegében blokk- vagy folyamtitkosítók, amelyek AEAD módban futnak.
  • VPN-ek (Virtual Private Networks):
    • A VPN-ek gyakran használnak folyamtitkosítókat vagy CTR módú blokktitkosítókat a gyors és hatékony adatátvitel érdekében. Például a WireGuard VPN protokoll alapértelmezetten a ChaCha20-Poly1305-öt használja titkosításra és hitelesítésre.
  • Adatfolyam Titkosítás (Streaming Media):
    • Mivel a folyamtitkosítók bit-orientáltak és alacsony késleltetésűek, ideálisak élő adatfolyamok (pl. videó, hang) titkosítására, ahol a folyamatos adatátvitel és a minimális pufferelés kulcsfontosságú.
  • Hardveres Implementációk és Beágyazott Rendszerek:
    • A folyamtitkosítók egyszerű hardveres felépítésük miatt nagyon népszerűek az erőforrás-korlátozott környezetekben, mint például az IoT eszközök, RFID chipek, okoskártyák és szenzorhálózatok. Kisebb energiafogyasztásuk és fizikai méretük miatt gazdaságosabbak ezekben az alkalmazásokban, mint a blokktitkosítók. A Trivium egy jó példa egy ilyen hardverre optimalizált folyamtitkosítóra.
  • Könnyűsúlyú Kriptográfia:
    • A könnyűsúlyú kriptográfia területe kifejezetten olyan kriptográfiai algoritmusok tervezésére fókuszál, amelyek minimális erőforrásigénnyel (CPU, memória, energia) működnek. Ezen a területen a folyamtitkosítók, mint például a Trivium vagy a Grain család, kulcsszerepet játszanak.

Jövőbeli Trendek és Kutatások

A kriptográfia folyamatosan fejlődik, és a folyamtitkosítók területe is dinamikus. Néhány jövőbeli trend és kutatási irány a következő:

  • Poszt-kvantum Kriptográfia: Ahogy a kvantumszámítógépek fejlődnek, felmerül a kérdés, hogy a jelenlegi kriptográfiai algoritmusok mennyire állnak ellen a kvantumtámadásoknak. A folyamtitkosítók egy része (különösen azok, amelyek LFSR-eken alapulnak) sebezhető lehet kvantumalgoritmusok által, míg mások (pl. ARX alapú cipherek, mint a ChaCha20) jobban ellenállhatnak. Kutatások folynak poszt-kvantum folyamtitkosítók tervezésére és elemzésére.
  • Új Tervezési Elvek és Primitívek: A kriptográfiai közösség folyamatosan kutatja az új, hatékonyabb és biztonságosabb kulcsfolyam generátorok tervezési elveit. Cél a jobb ellenállás a modern kriptanalitikai támadásokkal szemben, miközben fenntartják az alacsony erőforrásigényt és a magas sebességet.
  • Formális Verifikáció és Biztonsági Modellezés: Egyre nagyobb hangsúlyt kap a kriptográfiai algoritmusok formális verifikációja és a biztonsági modelljeik precíz meghatározása. Ez segít a tervezési hibák azonosításában és a valós biztonsági garanciák megállapításában.
  • Hardveres Gyorsítás és Integráció: A folyamtitkosítók továbbra is kulcsszerepet játszanak a hardveres gyorsításban és az alacsony fogyasztású eszközökbe történő integrációban. A jövőben várhatóan még inkább optimalizált hardveres implementációk jelennek meg.
  • Könnyűsúlyú Kriptográfia Folyamatos Fejlesztése: Az IoT és az okos eszközök robbanásszerű elterjedésével a könnyűsúlyú kriptográfia iránti igény növekszik. A folyamtitkosítók továbbra is az egyik legvonzóbb megoldásnak számítanak ezen a területen, és a kutatás folytatódik az még kompaktabb és hatékonyabb algoritmusok létrehozására.
Share This Article
Leave a comment

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük