Az adatbiztonság és a digitális kommunikáció világában a titkosítás alappillére a bizalomnak és a magánélet védelmének. A titkosítási módszerek széles skáláján belül a blokkrejtjelezők (block cipher) kiemelkedő szerepet töltenek be, hiszen ők alkotják a modern adattitkosítási rendszerek gerincét. Ez a technológia teszi lehetővé, hogy érzékeny információink biztonságban maradjanak az illetéktelen hozzáféréstől, legyen szó akár online banki tranzakciókról, e-mail kommunikációról vagy merevlemez-titkosításról. A blokkrejtjelezők alapvető működési elve a bemeneti adat fix méretű blokkokra bontása, majd ezen blokkok egyenkénti, determinisztikus átalakítása egy titkos kulcs segítségével.
Míg a folyamrejtjelezők (stream cipher) bájtonként vagy bitenként titkosítják az adatfolyamot, a blokkrejtjelezők egyidejűleg egy előre meghatározott, rögzített méretű adatcsomagot, azaz egy blokkot dolgoznak fel. Ez a megközelítés számos előnnyel jár a biztonság és a hatékonyság szempontjából, de egyben specifikus kihívásokat is támaszt a titkosítási módok (modes of operation) kiválasztásakor és a kiegészítő biztonsági mechanizmusok alkalmazásakor. A blokkrejtjelezők mélyebb megértése elengedhetetlen ahhoz, hogy felelősségteljesen és biztonságosan használjuk a digitális világot.
A blokkrejtjelezők definíciója és alapelvei
A blokkrejtjelező egy olyan szimmetrikus kulcsú algoritmus, amely egy rögzített hosszúságú bemeneti adatblokkot (plain text block) vesz, és egy titkos kulcs felhasználásával egy azonos hosszúságú kimeneti adatblokkot (cipher text block) állít elő. A visszafejtés folyamata ugyanezzel a kulccsal történik, megfordítva a titkosítás lépéseit. Ez a szimmetria teszi lehetővé, hogy a feladó és a fogadó ugyanazt az algoritmust és kulcsot használja mind a titkosításhoz, mind a visszafejtéshez.
A blokkrejtjelezők alapvető jellemzője a blokkméret, amely általában 64, 128 vagy ritkábban 256 bit. Például a széles körben elterjedt Advanced Encryption Standard (AES) algoritmusa 128 bites blokkmérettel dolgozik, ami azt jelenti, hogy egyszerre 16 bájtnyi adatot titkosít. A blokkméret megválasztása kompromisszumot jelent a biztonság és a hatékonyság között; nagyobb blokkméret elméletileg erősebb védelmet nyújt, de lassabb feldolgozást eredményezhet.
A másik kulcsfontosságú paraméter a kulcsméret. Ez határozza meg a titkos kulcs hosszát, amely közvetlenül befolyásolja az algoritmus biztonságát a brutális erővel történő feltörés ellen. Az AES például 128, 192 vagy 256 bites kulcsméretekkel működhet. Minél hosszabb a kulcs, annál több lehetséges kulcskombináció létezik, és annál nehezebb a kulcsot találgatással vagy nyers erővel megfejteni. A modern kriptográfiában a 128 bit alatti kulcsméretet már nem tekintik biztonságosnak a legtöbb alkalmazásban.
„A blokkrejtjelezők a modern kriptográfia alapkövei, biztosítva az adatok integritását és bizalmasságát a digitális korban.”
Shannon elvei: zavarás és szórás
Claude Shannon, az információelmélet atyja, két alapvető elvet fogalmazott meg a biztonságos titkosító algoritmusok tervezésére vonatkozóan: a zavarás (confusion) és a szórás (diffusion) elvét. Ezek az elvek kulcsfontosságúak a blokkrejtjelezők hatékonyságának megértésében és értékelésében.
A zavarás célja, hogy a titkosított szöveg és a kulcs közötti kapcsolatot a lehető legbonyolultabbá tegye. Ez azt jelenti, hogy a titkosított szöveg minden egyes bitjének valamilyen összetett módon függenie kell a kulcs minden egyes bitjétől. Egy jó zavaró mechanizmus megnehezíti a kulcs visszafejtését a titkosított szöveg alapján, még akkor is, ha a támadó rendelkezik a titkosításhoz használt algoritmus részleteivel. Ezt általában nemlineáris transzformációkkal, például S-boxokkal (helyettesítő dobozokkal) érik el, amelyek a bemeneti biteket egy összetett függvény szerint képezik le kimeneti bitekre.
A szórás célja, hogy a nyílt szöveg egyetlen bitjében bekövetkező változás a titkosított szöveg sok bitjére terjedjen ki. Más szóval, ha a nyílt szövegben csak egyetlen bitet módosítunk, a titkosított szövegben a bitek körülbelül felének meg kell változnia. Ez megakadályozza, hogy a támadó mintázatokat fedezzen fel a titkosított szövegben, és megnehezíti a statisztikai elemzéseket. A szórást jellemzően P-boxokkal (permutációs dobozokkal) vagy egyéb lineáris transzformációkkal (pl. oszlopok eltolása, mint az AES-ben) érik el, amelyek a bitek pozícióját változtatják meg a blokkon belül.
A modern blokkrejtjelezők a zavarás és szórás elvét iteratív módon, több „körön” vagy „fordulón” (rounds) keresztül valósítják meg. Minden körben alkalmaznak valamilyen zavaró és szóró transzformációt, gyakran egy körkulcs (round key) hozzáadásával. Az egymást követő körök fokozatosan növelik a zavarás és szórás mértékét, így biztosítva, hogy a végleges titkosított blokkban minden bit a nyílt szöveg és a kulcs minden bitjétől függjön.
A blokkrejtjelezők architektúrája: Feistel hálózat és SPN
A blokkrejtjelezők belső felépítése két fő típusba sorolható: a Feistel hálózat és a helyettesítő-permutációs hálózat (Substitution-Permutation Network, SPN). Mindkét architektúra célja Shannon elveinek hatékony megvalósítása, de eltérő módon teszik azt.
Feistel hálózat
A Feistel hálózat egy olyan iteratív struktúra, amelyet Horst Feistel fejlesztett ki az IBM-nél az 1970-es évek elején. Ez az architektúra rendkívül népszerűvé vált, és számos blokkrejtjelező alapjául szolgált, beleértve a Data Encryption Standard (DES) algoritmust is. A Feistel hálózat különlegessége, hogy a titkosítási és visszafejtési folyamat nagy mértékben szimmetrikus, ami egyszerűsíti a hardveres és szoftveres implementációt.
Egy Feistel hálózatban a bemeneti adatblokkot két egyenlő részre osztják: egy bal (L) és egy jobb (R) felére. Minden körben a következő lépések zajlanak:
- A jobb oldali rész (R) bemenete lesz egy körfüggvénynek (round function, F), amely a körkulccsal (Ki) együtt dolgozik.
- A körfüggvény kimenetét XOR-ozzák a bal oldali résszel (L).
- A jobb oldali rész (R) változatlanul átkerül a következő kör bal oldali részébe (Li+1).
- Az XOR eredménye lesz a következő kör jobb oldali része (Ri+1).
Az utolsó kör után a bal és jobb oldali részeket gyakran felcserélik, mielőtt összefűznék őket a végleges titkosított blokk kialakításához. A visszafejtés folyamata pontosan ugyanez a struktúra, csak a körkulcsokat fordított sorrendben kell alkalmazni. Ez a Feistel hálózat egyik legnagyobb előnye: ugyanaz a hardver vagy szoftvermodul használható a titkosításhoz és a visszafejtéshez is, csak a kulcsok sorrendje tér el.
A Feistel hálózat biztosítja a zavarást a körfüggvény komplexitásán keresztül, és a szórást azáltal, hogy a jobb oldali rész befolyásolja a bal oldali részt, majd a következő körben a bal oldali rész tartalma átkerül a jobb oldalra, így az információ tovább terjed.
Helyettesítő-permutációs hálózat (SPN)
A helyettesítő-permutációs hálózat (SPN) egy másik elterjedt architektúra, amelyet a modern blokkrejtjelezők, mint például az AES (Advanced Encryption Standard), használnak. Az SPN struktúra jellemzően nem osztja ketté a bemeneti blokkot, hanem a teljes blokkon végez transzformációkat minden körben.
Egy tipikus SPN kör a következő lépésekből áll:
- Kulcs hozzáadása (AddRoundKey): A blokk biteit XOR-ozzák egy körkulccsal. Ez a lépés biztosítja a kulcsfüggőséget és a kezdeti zavarást.
- Helyettesítés (Substitution): A blokk bizonyos részeit (általában fix méretű csoportokat, például bájtokat) nemlineáris S-boxokon keresztül vezetik át. Ezek az S-boxok biteket képeznek le bitekre egy előre definiált táblázat alapján, ezzel biztosítva a zavarást. Az S-boxok gondos tervezése kritikus a kriptográfiai biztonság szempontjából.
- Permutáció (Permutation): A blokk bitjeinek pozícióját felcserélik egy fix mintázat szerint. Ezt gyakran P-boxok vagy más lineáris transzformációk (pl. oszlopok eltolása, mint az AES-ben) segítségével valósítják meg. Ez a lépés biztosítja a szórást, eloszlatva a bemeneti változások hatását a teljes blokkon.
Az SPN struktúra több körön keresztül ismétli ezeket a lépéseket, minden körben új körkulccsal. Az SPN algoritmusok általában nagyobb fokú párhuzamosítást tesznek lehetővé, mint a Feistel hálózatok, ami előnyös lehet a modern processzorokon való futtatáskor. Azonban az SPN visszafejtési folyamata általában eltér a titkosításitól, és megfordított lépéseket igényel, ami bonyolultabb implementációt eredményezhet, mint a Feistel hálózatok esetében.
Kulcsütemezés (key schedule)

A blokkrejtjelezők működésének elengedhetetlen része a kulcsütemezés (key schedule). Ez a folyamat felelős azért, hogy a kezdeti, felhasználó által megadott mesterkulcsból (master key) egy sor körkulcsot (round keys) generáljon. Ezeket a körkulcsokat használja fel az algoritmus az egyes titkosítási körökben. A kulcsütemezés minősége kritikus a rejtjelező biztonsága szempontjából, mivel egy gyenge kulcsütemezés lehetővé teheti a támadó számára, hogy a mesterkulcsot a körkulcsokból kikövetkeztetve, vagy azok közötti gyenge összefüggéseket kihasználva feltörje a titkosítást.
A kulcsütemezésnek számos fontos tulajdonsággal kell rendelkeznie:
- Determinisztikus: Ugyanaz a mesterkulcs mindig ugyanazokat a körkulcsokat kell, hogy generálja.
- Gyors: A kulcsgenerálásnak viszonylag gyorsnak kell lennie, különösen olyan alkalmazásokban, ahol gyakori kulcsváltásra van szükség.
- Komplex: A körkulcsoknak kellően komplex módon kell függeniük a mesterkulcstól, hogy a támadók ne tudjanak egyszerűen összefüggéseket találni közöttük.
- Diffúzió: A mesterkulcs egyetlen bitjében bekövetkező változásnak a lehető legtöbb körkulcsra ki kell terjednie, megnehezítve a differenciális kriptoanalízist.
Az AES kulcsütemezése például egy viszonylag egyszerű, de hatékony mechanizmust használ, amely a mesterkulcsot kiterjeszti egy nagyobb kulcsütemezési tömbbé, amelyből aztán az egyes körkulcsok származnak. Ez magában foglal bájtok rotálását, S-boxokon való áteresztését és körkonstansokkal való XOR-olását, biztosítva a szükséges zavarást és szórást a kulcsok között is.
Titkosítási módok (modes of operation)
A blokkrejtjelezők alapvetően csak fix méretű adatblokkok titkosítására alkalmasak. Azonban a valós világban ritkán kell pontosan egy blokknyi adatot titkosítani. Gyakran sokkal hosszabb üzeneteket, fájlokat vagy adatfolyamokat kell védeni. Itt lépnek be a képbe a titkosítási módok (modes of operation), amelyek különböző stratégiákat kínálnak arra, hogyan lehet egy blokkrejtjelezőt ismétlődően alkalmazni tetszőleges hosszúságú adatok titkosítására. A megfelelő mód kiválasztása kulcsfontosságú a biztonság és a teljesítmény szempontjából.
Elektronikus kódkönyv (Electronic Codebook, ECB) mód
Az ECB (Electronic Codebook) a legegyszerűbb titkosítási mód. Ebben a módban minden egyes nyílt szöveg blokkot egymástól függetlenül titkosítanak ugyanazzal a kulccsal. A titkosított blokkokat egyszerűen egymás után fűzik. Ez a mód alkalmas rövid, egyedi adatok titkosítására, de nagyon veszélyes nagyobb adathalmazok, különösen ismétlődő mintázatokat tartalmazó adatok titkosítására.
Az ECB legnagyobb hátránya, hogy ha két nyílt szöveg blokk azonos, akkor a titkosított blokkjuk is azonos lesz. Ez lehetővé teszi a támadó számára, hogy mintázatokat azonosítson a titkosított szövegben, még akkor is, ha nem ismeri a kulcsot. Gondoljunk egy képre, amit ECB módban titkosítanak: a kép kontúrjai és színei feltűnően felismerhetők maradnak a titkosított változatban is, mivel az azonos színű pixelek azonos titkosított blokkokat eredményeznek. Emiatt az ECB módot soha nem szabad általános adatfolyam titkosításra használni.
Blokkláncolás (Cipher Block Chaining, CBC) mód
A CBC (Cipher Block Chaining) mód az ECB mód hiányosságait orvosolja azáltal, hogy bevezeti a láncolás koncepcióját. Ebben a módban minden nyílt szöveg blokkot XOR-oznak az előző titkosított blokkal, mielőtt titkosítanák. Az első blokk titkosításához egy inicializáló vektort (Initialization Vector, IV) használnak, amelyet véletlenszerűen generálnak, és a titkosított üzenettel együtt továbbítanak. Az IV-nek egyedinek és véletlenszerűnek kell lennie minden egyes titkosítási művelethez.
A CBC mód előnye, hogy a nyílt szövegben bekövetkező azonos blokkok különböző titkosított blokkokat eredményeznek, mivel az előző titkosított blokk befolyásolja a következő titkosítását. Ez elrejti a mintázatokat, és sokkal biztonságosabbá teszi a titkosítást. Azonban a CBC szekvenciális természetű, ami azt jelenti, hogy a titkosítás nem párhuzamosítható. A visszafejtés is szekvenciális, de a blokkok visszafejtése párhuzamosítható, amint az előző titkosított blokk ismertté válik.
A CBC mód hátránya, hogy ha egy bit hiba történik a titkosított szövegben, az az aktuális és a következő blokk visszafejtését is befolyásolja. Ezenkívül a padding (kitöltés) kezelése kritikus, mivel a blokkrejtjelezők fix méretű blokkokkal dolgoznak, és a nyílt szöveg hossza nem mindig osztható a blokkmérettel. A helytelen padding kezelés padding oracle támadásokhoz vezethet.
Titkosított visszacsatolás (Cipher Feedback, CFB) mód
A CFB (Cipher Feedback) mód lehetővé teszi, hogy a blokkrejtjelező stream cipher-ként működjön, bájtonként vagy akár bitenként titkosítva az adatfolyamot. Ebben a módban a blokkrejtjelező kimenetét használják fel a keystream (kulcsfolyam) generálására, amelyet aztán XOR-oznak a nyílt szöveg bájtaival. Az előző titkosított bájt (vagy bitek) visszacsatolásra kerül a titkosító algoritmus bemenetébe a következő keystream rész generálásához.
A CFB mód előnye, hogy nem igényel paddinget, és valós idejű kommunikációra is alkalmas lehet. Hátránya, hogy a hiba terjedése itt is problémát jelenthet, és a teljesítmény általában alacsonyabb, mint a CBC vagy CTR módoké, mivel a blokkrejtjelezőt minden bájt (vagy bit) titkosításához meg kell hívni.
Kimeneti visszacsatolás (Output Feedback, OFB) mód
Az OFB (Output Feedback) mód szintén lehetővé teszi a blokkrejtjelező stream cipher-ként való működését, de a CFB-vel ellentétben a keystream generálása teljesen független a nyílt szövegtől és a titkosított szövegtől. Itt a blokkrejtjelező kimenetét visszacsatolják a saját bemenetébe, egy tiszta keystreamet generálva, amelyet aztán XOR-oznak a nyílt szöveggel. Egy egyedi IV-t használnak a kezdeti állapot beállításához.
Az OFB mód előnye, hogy a hibák nem terjednek, mivel a keystream generálás független. Emellett a keystream előre generálható, ami gyorsabb titkosítást tesz lehetővé, ha az adatok később érkeznek. Azonban az OFB mód sebezhető a kulcsfolyam újrafelhasználás (keystream reuse) ellen, ami súlyos biztonsági kockázatot jelent, ha az IV-t nem kezelik megfelelően.
Számláló (Counter, CTR) mód
A CTR (Counter) mód az egyik legnépszerűbb és legmodernebb titkosítási mód. Ebben a módban a blokkrejtjelező bemenete egy nonce (egyedi érték, amelyet minden üzenethez egyszer használnak) és egy számláló kombinációja. A számláló minden blokk titkosításánál növekszik. A blokkrejtjelező kimenete a keystream, amelyet XOR-oznak a nyílt szöveg blokkjával.
A CTR mód számos előnnyel rendelkezik:
- Párhuzamosítható: Mivel minden blokk titkosítása független a többitől (csak a nonce és a számláló alapján történik), a titkosítás és visszafejtés is párhuzamosítható, ami jelentős performancia-növekedést eredményezhet.
- Véletlen hozzáférés: Lehetővé teszi az adatok véletlen hozzáférését, azaz bármely blokk visszafejthető a teljes fájl dekódolása nélkül. Ez különösen hasznos adatbázisok vagy nagy fájlok titkosításánál.
- Nincs padding probléma: Mivel stream cipher-ként működik, nem igényel paddinget, elkerülve a kapcsolódó támadásokat.
A CTR mód alapvető követelménye, hogy a nonce és a számláló kombinációja soha nem ismétlődhet meg ugyanazzal a kulccsal. Ennek megsértése súlyos biztonsági rést okoz, lehetővé téve a támadó számára, hogy a titkosított szövegből kinyerje a nyílt szöveget.
Hitelesített titkosítási módok (Authenticated Encryption Modes)
Az eddig tárgyalt titkosítási módok (ECB, CBC, CFB, OFB, CTR) kizárólag az adatok bizalmasságát biztosítják, azaz megakadályozzák az illetéktelen hozzáférést a tartalomhoz. Azonban önmagukban nem nyújtanak védelmet az adatok integritása (azaz a tartalom módosítása elleni védelem) és az adatok hitelessége (azaz a feladó igazolása) ellen. Egy támadó módosíthatja a titkosított üzenetet anélkül, hogy feltörné a titkosítást, ami észrevétlen adatkorrupcióhoz vagy rosszindulatú injekcióhoz vezethet.
Ezért a modern alkalmazásokban szinte kivétel nélkül hitelesített titkosítási módokat (Authenticated Encryption, AE), vagy még pontosabban hitelesített titkosítás társított adatokkal (Authenticated Encryption with Associated Data, AEAD) módokat használnak. Ezek a módok nemcsak titkosítják az adatokat, hanem egy üzenet-hitelesítő kódot (Message Authentication Code, MAC) is generálnak, amely ellenőrzi az adatok integritását és hitelességét.
A legelterjedtebb AEAD módok közé tartozik a Galois/Counter Mode (GCM) és a Counter with CBC-MAC (CCM). A GCM különösen népszerű, mivel hatékonyan párhuzamosítható, és széles körben támogatott a modern hardvereken. Ezek a módok lehetővé teszik, hogy a titkosított adatok mellett olyan „társított adatokat” (pl. üzenetfejléceket) is hitelesítsünk, amelyek maguk nincsenek titkosítva, de fontos, hogy ne lehessen őket módosítani.
Az AEAD módok használata alapvető fontosságú a robusztus biztonsági rendszerek építésénél, mivel megakadályozzák a különféle aktív támadásokat, például a bit flipping támadásokat vagy az üzenetek újra lejátszását. Ha egy támadó megpróbálja módosítani a titkosított üzenetet, a MAC ellenőrzés sikertelen lesz, és a címzett azonnal észleli a manipulációt.
Titkosítási módok összehasonlítása
Az alábbi táblázat összefoglalja a leggyakoribb blokkrejtjelező titkosítási módok kulcsfontosságú jellemzőit, előnyeit és hátrányait:
Mód | Leírás | Előnyök | Hátrányok | Alkalmazás |
---|---|---|---|---|
ECB (Electronic Codebook) | Minden blokkot függetlenül titkosít. | Egyszerű, párhuzamosítható. | Nem biztonságos mintázatokra, nem rejt el ismétlődő blokkokat. | Rövid, egyedi adatok (pl. kulcsok) titkosítása. |
CBC (Cipher Block Chaining) | Minden blokkot XOR-oz az előző titkosított blokkal, IV-t használ. | Elrejti a mintázatokat, erős biztonság. | Szekvenciális titkosítás, hiba terjedése, padding kezelést igényel. | Általános adatfolyam titkosítás, fájl titkosítás. |
CFB (Cipher Feedback) | Blokkrejtjelező stream cipher-ként működik, visszacsatolással. | Nincs padding, valós idejű titkosítás. | Szekvenciális, hiba terjedése, lassabb lehet. | Adatfolyam titkosítás, terminálkommunikáció. |
OFB (Output Feedback) | Keystreamet generál, függetlenül az adatoktól, majd XOR-ozza. | Nincs padding, hibák nem terjednek, párhuzamosítható keystream generálás. | Keystream újrafelhasználás veszélye, ha az IV nem egyedi. | Zajos csatornák, valós idejű videó/hang. |
CTR (Counter) | Nonce és számláló alapján generál keystreamet, majd XOR-ozza. | Teljesen párhuzamosítható, véletlen hozzáférés, nincs padding. | Nonce/számláló kombinációjának egyedisége kritikus. | Nagy fájlok, adatbázisok, streaming titkosítás. |
GCM (Galois/Counter Mode) | CTR mód + hitelesítés (MAC) a Galois mezőben. | Bizalmasság és integritás/hitelesség, párhuzamosítható, hatékony. | Bonyolultabb implementáció, nonce egyedisége kritikus. | Modern protokollok (TLS, IPsec), általános célú hitelesített titkosítás. |
Padding (kitöltés)
Ahogy már említettük, a blokkrejtjelezők fix méretű blokkokkal dolgoznak. Ha a nyílt szöveg hossza nem osztható maradék nélkül a blokkmérettel, akkor a blokk utolsó részét ki kell tölteni, azaz paddinget kell alkalmazni. A padding célja, hogy az utolsó blokk is elérje a szükséges méretet. A padding sémák helyes alkalmazása kritikus a biztonság szempontjából, mivel a helytelen kezelés padding oracle támadásokhoz vezethet.
A leggyakoribb padding sémák a következők:
- PKCS#7 padding: Ez a legelterjedtebb séma. Ha az utolsó blokk
n
bájttal rövidebb a blokkméretnél, akkorn
darabn
értékű bájtot fűznek hozzá. Például egy 16 bájtos blokkméret esetén, ha 13 bájt a nyílt szöveg, akkor 3 bájtnyi0x03
értéket adnak hozzá. Ha a nyílt szöveg hossza pontosan megegyezik a blokkmérettel, egy teljes blokknyi paddinget (pl. 16 bájtnyi0x10
) adnak hozzá, hogy egyértelmű legyen a visszafejtésnél, hogy van-e padding vagy sem. - ANSI X9.23 padding: Ez a séma nullákat fűz hozzá, kivéve az utolsó bájtot, amely a hozzáadott bájtok számát jelöli.
- ISO/IEC 7816-4 padding: Egy
0x80
bájt, majd tetszőleges számú0x00
bájt hozzáadása, amíg a blokk ki nem telik.
A visszafejtés során a paddinget el kell távolítani. Ha egy támadó képes különbséget tenni a helyes és a hibás padding között (például egy hibaüzenet vagy időzítési különbség alapján), akkor padding oracle támadást hajthat végre, amely lehetővé teheti a titkosított szöveg visszafejtését. Ezért fontos, hogy a padding ellenőrzése ne befolyásolja a rendszer viselkedését, és ne szolgáltasson információt a támadó számára.
Gyakori blokkrejtjelezők
Az elmúlt évtizedekben számos blokkrejtjelező algoritmus született, de közülük csak néhány vált széles körben elfogadottá és szabványossá. Ezek a rejtjelezők képviselik a modern kriptográfia sarokköveit.
Data Encryption Standard (DES)
A Data Encryption Standard (DES) az 1970-es évek közepén az IBM által kifejlesztett és az Egyesült Államok Nemzeti Szabványügyi Hivatala (NIST) által szabványosított algoritmus volt. Hosszú ideig a szimmetrikus titkosítás de facto szabványának számított. A DES egy Feistel hálózatot alkalmaz 16 körrel, és 64 bites blokkmérettel dolgozik. A kulcsmérete névlegesen 64 bit, de ebből 8 bit paritásbit, így a tényleges kulcsméret 56 bit.
A DES Feistel hálózatának magja egy bonyolult körfüggvény (F-függvény), amely számos lépésből áll: kiterjesztés (expansion permutation), XOR-olás a körkulccsal, S-boxokon (helyettesítő dobozokon) való áteresztés, amelyek a zavarást biztosítják, és P-boxokon (permutációs dobozokon) való áteresztés, amelyek a szórást segítik elő. Bár a DES kulcsmérete ma már elégtelennek számít, az algoritmus tervezése, különösen az S-boxok kiválasztása, rendkívül ellenállónak bizonyult a differenciális kriptoanalízissel szemben, amit csak jóval a szabványosítás után fedeztek fel.
Bár a DES forradalmi volt a maga idejében, az 56 bites kulcsmérete a számítástechnika fejlődésével egyre inkább elégtelennek bizonyult. A modern számítógépek és a speciális hardverek, mint a DES Cracker, képesek voltak brutális erővel feltörni a DES titkosítást viszonylag rövid idő alatt. Ez vezetett a Triple DES (3DES) fejlesztéséhez, amely háromszor alkalmazza a DES algoritmust (titkosítás-visszafejtés-titkosítás vagy titkosítás-titkosítás-titkosítás), ezzel hatékonyan növelve a kulcsméretet 112 vagy 168 bitre. A 3DES még ma is használatban van bizonyos régebbi rendszerekben, de a lassúsága és a viszonylagos komplexitása miatt fokozatosan felváltotta egy modernebb algoritmus.
Advanced Encryption Standard (AES)
Az Advanced Encryption Standard (AES), eredeti nevén Rijndael, a belga Joan Daemen és Vincent Rijmen által tervezett blokkrejtjelező. A NIST 2001-ben választotta ki a DES utódjaként, és azóta a világ legelterjedtebb szimmetrikus titkosító algoritmusa lett. Az AES egy helyettesítő-permutációs hálózat (SPN) elvén működik, 128 bites blokkmérettel, és támogatja a 128, 192 és 256 bites kulcsméreteket.
Az AES belső működése négy fő transzformáció ismétlésén alapul minden körben (kivéve az utolsót):
- SubBytes (Bájtcsere): Ez a nemlineáris helyettesítő lépés minden egyes bájtot egy másik bájtra cserél egy fix S-box táblázat alapján. Ez biztosítja az algoritmus zavarását.
- ShiftRows (Sorok eltolása): Ez a transzformáció ciklikusan eltolja az állapotmátrix sorait különböző mértékben. Ez a szórást segíti elő, eloszlatva a bájtokat a blokkon belül.
- MixColumns (Oszlopok keverése): Ez a lépés egy lineáris transzformációt végez az állapotmátrix oszlopain. Minden oszlop új értéke az oszlop eredeti értékeinek kombinációjából származik, ami szintén hozzájárul a szóráshoz.
- AddRoundKey (Körkulcs hozzáadása): Az állapotmátrixot XOR-ozzák az aktuális körkulccsal. Ez a lépés biztosítja a kulcsfüggőséget és a titkosítás minden körében friss kulcsanyagot vezet be.
Az AES számos előnnyel rendelkezik a DES-hez képest:
- Erősebb biztonság: A nagyobb kulcsméretek (különösen a 256 bites) rendkívül ellenállóvá teszik a brutális erővel történő támadásokkal szemben.
- Hatékonyság: Az AES tervezése során figyelembe vették a szoftveres és hardveres implementációk hatékonyságát. Számos modern CPU tartalmaz dedikált AES utasításokat (pl. AES-NI), amelyek drámaian felgyorsítják a titkosítási és visszafejtési műveleteket.
- Modern dizájn: Az SPN struktúra és a gondosan tervezett S-boxok kiváló zavarást és szórást biztosítanak.
Az AES a mai napig az aranystandard a szimmetrikus titkosításban, és szinte minden modern biztonsági protokoll és alkalmazás alapját képezi, beleértve a TLS/SSL-t, VPN-eket, lemez titkosításokat (pl. BitLocker, LUKS) és Wi-Fi biztonságot (WPA2/3).
További blokkrejtjelezők
Bár a DES és az AES a legjelentősebbek, számos más blokkrejtjelező is létezik, amelyek különböző célokra vagy speciális igényekre lettek tervezve:
- Blowfish: Bruce Schneier által tervezett, gyors és ingyenesen használható algoritmus, változtatható kulcsmérettel (32-448 bitig) és 64 bites blokkmérettel. Jó választás volt, mielőtt az AES ennyire elterjedt volna.
- Twofish: A Blowfish utódja, az AES pályázaton is szerepelt. 128 bites blokkmérettel és 128, 192, 256 bites kulcsméretekkel. Jó alternatíva az AES-nek, bár kevésbé elterjedt.
- Serpent: Szintén AES pályázó, rendkívül konzervatív és biztonságosnak tartott dizájnnal. Lassabb, mint az AES, de magasabb biztonsági margóval rendelkezik.
- IDEA (International Data Encryption Algorithm): Egy korábbi, 64 bites blokkmérettel és 128 bites kulccsal rendelkező algoritmus, amelyet a PGP (Pretty Good Privacy) korai verziói használtak.
- Skipjack: Egy titkos, az NSA által kifejlesztett algoritmus, amelyet a Clipper chipben használtak, és 80 bites kulcsmérettel rendelkezik.
Támadások blokkrejtjelezők ellen

A blokkrejtjelezők biztonságát folyamatosan tesztelik és elemzik kriptográfusok világszerte. Számos típusú támadás létezik, amelyekkel megpróbálják feltörni vagy gyengeségeket találni az algoritmusokban. Fontos megérteni ezeket a támadásokat, hogy tudjuk, miért elengedhetetlen a robusztus algoritmusok és a helyes implementáció.
Nyers erővel történő támadás (Brute-force attack)
Ez a legegyszerűbb, de gyakran a legkevésbé hatékony támadás. A támadó egyszerűen megpróbálja az összes lehetséges kulcskombinációt, amíg meg nem találja a helyeset. A támadás sikerességének esélye és az ehhez szükséges idő exponenciálisan növekszik a kulcsmérettel. Egy 128 bites kulcs esetében 2^128 lehetséges kulcs van, ami jelenlegi és belátható jövőbeli számítási kapacitásokkal feltörhetetlen. Például az 56 bites DES kulcs már feltörhető volt speciális hardverrel, de a 128 bites AES kulcs ellenáll a nyers erővel történő támadásoknak.
Differenciális kriptoanalízis (Differential cryptanalysis)
Ezt a támadási módszert Eli Biham és Adi Shamir fedezte fel az 1990-es évek elején. A differenciális kriptoanalízis a nyílt szöveg blokkjai közötti különbségek (differenciák) és a megfelelő titkosított szöveg blokkjai közötti különbségek statisztikai elemzésén alapul. A támadó célja, hogy olyan mintázatokat találjon, amelyek a rejtjelező belső működéséből adódnak, és amelyek segítségével információt nyerhet a kulcsról. A modern blokkrejtjelezőket, mint az AES, úgy tervezték, hogy ellenálljanak a differenciális kriptoanalízisnek, gondosan megválasztott S-boxokkal és szóró mechanizmusokkal.
Lineáris kriptoanalízis (Linear cryptanalysis)
Mitsuru Matsui fejlesztette ki ezt a módszert, szintén az 1990-es évek elején. A lineáris kriptoanalízis a nyílt szöveg, a titkosított szöveg és a kulcs bitei közötti lineáris összefüggések (vagy közel lineáris összefüggések) keresésén alapul. A támadó megpróbál olyan lineáris egyenleteket találni, amelyek nagy valószínűséggel igazak, és amelyek segítségével információt szerezhet a kulcs biteiről. Ez a módszer statisztikai jellegű, és nagy mennyiségű nyílt szöveg-titkosított szöveg párra van szüksége. Az AES tervezése során a lineáris kriptoanalízis elleni védelem is kiemelt szempont volt.
Időzítési támadások (Timing attacks) és egyéb side-channel támadások
A side-channel támadások nem az algoritmus matematikai gyengeségeit használják ki, hanem a hardveres vagy szoftveres implementáció mellékhatásait figyelik. Az időzítési támadások például azt használják ki, hogy a titkosítási műveletek végrehajtási ideje függhet a feldolgozott adatoktól vagy a kulcs biteitől. Egy támadó, aki pontosan tudja mérni ezeket az időket, információt nyerhet a kulcsról. Más side-channel támadások közé tartozik az energiafogyasztás elemzése (power analysis), az elektromágneses sugárzás figyelése, vagy akár az akusztikus elemzés.
Ezek a támadások különösen veszélyesek lehetnek beágyazott rendszerekben, okoskártyákon vagy szervereken, ahol a támadó fizikailag közel férhet hozzá az eszközhöz. Az ilyen támadások elleni védelemhez gondos implementációra van szükség, amely elrejti az időzítési és energiafogyasztási mintázatokat (pl. konstans időben futó műveletek, véletlenszerű késleltetések bevezetése).
Kiválasztott nyílt szöveg/titkosított szöveg támadások (Chosen-plaintext/ciphertext attacks)
Ezek a támadások erősebb modellt feltételeznek, ahol a támadó képes a titkosító vagy visszafejtő funkciót használni (oracle-ként), és saját maga által választott nyílt szöveget titkosíttatni, vagy titkosított szöveget visszafejtetni. Ezen interakciók eredményeinek elemzésével a támadó megpróbálja feltárni a kulcsot vagy az algoritmus gyengeségeit. A modern kriptográfiai algoritmusokat úgy tervezik, hogy ellenálljanak ezeknek a támadásoknak.
Meet-in-the-middle támadás
Ez a támadás a többszörös titkosítási eljárások (pl. Double DES) ellen hatékony. A meet-in-the-middle támadás lényege, hogy a titkosítási folyamatot két részre bontják, és mindkét irányból (nyílt szövegből előre, titkosított szövegből visszafelé) próbálnak megfejteni. Ha a két „középső” eredmény találkozik, az valószínűsíti a helyes kulcspárokat. Ez a támadás az oka annak, hogy a Double DES nem kétszeresen biztonságosabb, mint a sima DES, hanem csak egy kicsit erősebb. Ezért alkalmazzák a Triple DES-t, amely háromszoros titkosítással jelentősen megnöveli a biztonságot.
A blokkrejtjelezők szerepe a modern alkalmazásokban
A blokkrejtjelezők a digitális világ számos területén nélkülözhetetlenek. Alapvető építőkövei a biztonságos kommunikációnak, adattárolásnak és azonosításnak. Nézzünk meg néhány kulcsfontosságú alkalmazási területet:
TLS/SSL és HTTPS
Az interneten keresztüli biztonságos kommunikáció gerincét a Transport Layer Security (TLS) és annak elődje, az SSL (Secure Sockets Layer) protokollok alkotják. Amikor egy weboldal címe HTTPS-sel kezdődik, az azt jelenti, hogy a böngésző és a szerver közötti kommunikáció titkosított. A TLS/SSL protokollok egy komplex kézfogási folyamatot követően szimmetrikus kulcsokat generálnak, amelyeket aztán blokkrejtjelezőkkel (leggyakrabban AES GCM módban) használnak az adatforgalom titkosítására. Ez biztosítja, hogy a banki tranzakciók, jelszavak és egyéb érzékeny adatok ne legyenek lehallgathatók vagy módosíthatók a hálózaton keresztül.
VPN-ek (Virtual Private Networks)
A VPN-ek (Virtual Private Networks) titkosított alagutat hoznak létre a felhasználó eszköze és a VPN szerver között, lehetővé téve a biztonságos és privát internetezést, még nem megbízható hálózatokon (pl. nyilvános Wi-Fi) keresztül is. A VPN protokollok, mint az IPsec vagy az OpenVPN, szintén blokkrejtjelezőket (elsősorban AES-t) használnak az adatforgalom titkosítására és hitelesítésére. Ezáltal a felhasználó online tevékenységei védettek maradnak a szolgáltatók, internetszolgáltatók vagy rosszindulatú szereplők általi megfigyeléstől.
Merevlemez-titkosítás (Full Disk Encryption)
A merevlemez-titkosítás (Full Disk Encryption, FDE), mint a BitLocker (Windows), a LUKS (Linux) vagy a VeraCrypt, teljes merevlemezek vagy partíciók titkosítására szolgál. Ezek a megoldások szintén blokkrejtjelezőket (általában AES-t, jellemzően XTS módban) alkalmaznak, hogy az adatok akkor is védettek legyenek, ha a számítógép elveszik vagy ellopják. A titkosítás a fájlrendszer szintje alatt történik, így a felhasználó számára átlátszó marad a működés. A titkosított meghajtóhoz való hozzáféréshez a felhasználónak meg kell adnia egy jelszót vagy kulcsot a rendszerindításkor.
Fájl- és mappa titkosítás
Számos alkalmazás és operációs rendszer kínál lehetőséget egyes fájlok vagy mappák titkosítására. Például a 7-Zip vagy a WinRAR archívumok titkosítása, vagy az operációs rendszerek beépített titkosítási funkciói (pl. EFS a Windowsban). Ezek a funkciók szintén blokkrejtjelezőkre támaszkodnak, hogy az érzékeny dokumentumok, képek vagy egyéb adatok védettek legyenek a jogosulatlan hozzáféréstől.
Vezeték nélküli hálózatok (Wi-Fi) biztonsága
A modern Wi-Fi hálózatok biztonságát a WPA2 és WPA3 protokollok biztosítják. Ezek a protokollok szintén AES-t használnak a hálózaton keresztül továbbított adatok titkosítására. A WPA2 esetében az AES-CCMP (AES Counter Mode with CBC-MAC Protocol) volt a standard, míg a WPA3 további fejlesztéseket hozott a biztonság terén, beleértve az erősebb kulcscserét és a WPA3-Enterprise verzióban a 256 bites AES-GCM használatát.
Digitális aláírások és hash funkciók
Bár a blokkrejtjelezők elsődlegesen titkosításra szolgálnak, szerepük van a digitális aláírások és a hash funkciók létrehozásában is. Bizonyos hash algoritmusok (pl. SHA-2) belsőleg blokkrejtjelező-szerű kompressziós függvényeket használnak. Ezenkívül a blokkrejtjelezőket használhatják üzenet-hitelesítő kódok (MAC) generálására is, amelyek az adatok integritását és hitelességét garantálják. Ezáltal a blokkrejtjelezők közvetetten vagy közvetlenül hozzájárulnak a digitális aláírások biztonságához, amelyek az elektronikus dokumentumok eredetiségét és sértetlenségét hivatottak garantálni.
A blokkrejtjelezők jövője és a kvantumkriptográfia
A blokkrejtjelezők, különösen az AES, a mai napig rendkívül biztonságosnak tekinthetők a klasszikus számítógépes támadásokkal szemben. Azonban a kvantumkriptográfia és a kvantumszámítógépek fejlődése új kihívásokat jelent a jövőre nézve. A kvantumszámítógépek elméletileg képesek lennének bizonyos kriptográfiai problémákat sokkal gyorsabban megoldani, mint a hagyományos számítógépek.
A kvantumalgoritmusok közül a Grover-algoritmus jelenti a legnagyobb fenyegetést a szimmetrikus kulcsú algoritmusokra, mint a blokkrejtjelezőkre. A Grover-algoritmus elméletileg képes lenne a nyers erővel történő kulcskeresést felgyorsítani, a kulcsméret négyzetgyökével arányosan. Ez azt jelenti, hogy egy 128 bites AES kulcs biztonsága egy kvantumszámítógép számára körülbelül 64 bites kulcs biztonságával lenne egyenértékű, míg egy 256 bites kulcs biztonsága 128 bitnek felelne meg. Bár a 64 bit még mindig jelentős biztonságot nyújt, ez a feleződés aggodalomra ad okot a hosszabb távú biztonság szempontjából, különösen a „kriptográfiai agytrösztök” és a hosszú távú titoktartást igénylő adatok esetében.
A Shor-algoritmus elsősorban az aszimmetrikus kriptográfiát (pl. RSA, ECC)