A kriptográfiában a Feistel-féle rejtjelezés egy szimmetrikus struktúra, amelyet a német IBM kriptográfusáról, Horst Feistelről neveztek el; a köznyelvben Feistel-hálózatként is ismert. A sémát számos blokkos kódoló használja, köztük a Data Encryption Standard
A Feistel-struktúra előnye, hogy a titkosítási és visszafejtési műveletek nagyon hasonlóak, sőt bizonyos esetekben azonosak, és csak a kulcsok ütemezését kell felcserélni. Ezért az ilyen rejtjelező megvalósításához szükséges kód vagy áramkör mérete majdnem a felére csökken.
A Feistel-konstrukció iteratív jellegű, ami megkönnyíti a kriptorendszer hardveres megvalósítását.
A Feistel-hálózatok és a hasonló konstrukciók termékkulcsos kódok, így több fordulóban ismétlődő műveleteket kombinálnak, például:
- Bitkeverés (gyakran permutációs dobozoknak vagy P-dobozoknak nevezik)
- Egyszerű nemlineáris függvények (gyakran nevezik helyettesítési dobozoknak vagy S-dobozoknak)
- Lineáris keverés (a moduláris algebra értelmében) XOR segítségével, hogy egy olyan függvényt hozzon létre, amelyben nagy mennyiségben van az, amit Claude Shannon "zavar és diffúzió" néven írt le.
A bitek keverése a diffúziós hatást, míg a helyettesítés a zavaró hatást hozza létre.
Alapelvek és működés
A Feistel-hálózat tipikus felépítése: a bemeneti blokkot két egyenlő részre osztjuk, bal (L0) és jobb (R0) felére. Minden fordulóban egy körfüggvény (round function, F) dolgozik a jobb feletten és a fordulóhoz tartozó részleges kulccsal (Ki), majd a kimenetet XOR-oljuk a bal felével. Egy forduló formálisan:
L_i = R_{i-1}, R_i = L_{i-1} XOR F(R_{i-1}, K_i)
Ez az iteráció több fordulón keresztül ismétlődik. Az eredményként kapott páros (L_n, R_n) gyakran felcserélve kerül kiadáshoz, a konvenciónak megfelelően (egyes implementációk egy végső swap-ot alkalmaznak, másoknál ezt a swap-ot a round-számból adódóan kezelik).
Miért fordítható a konstrukció függetlenül az F-től?
A Feistel-séma fő előnye, hogy a teljes permutáció visszafordítható (visszafejthető) még akkor is, ha maga a körfüggvény F nem invertálható. A visszafejtés ugyanazokat a lépéseket használja, mint a titkosítás, csak a kulcsok sorrendjét fordítva (K_n, K_{n-1}, …, K_1). Ez egyszerűsíti a megvalósítást, mert ugyanaz a hardver vagy programkönyvtár használható mindkét irányban.
Tulajdonságok és elméleti eredmények
- Invertálhatóság: már említettük — a Feistel-konstrukció garantálja a visszafordíthatóságot kulcssorrend megfordításával.
- Luby–Rackoff tétel: elméletileg igazolt, hogy ha a körfüggvények idealizált véletlenszerű függvények (vagy megfelelően jó PRF-ek), akkor három forduló elegendő ahhoz, hogy a konstrukció pszeudovilágos permutációnak (pseudorandom permutation) tekinthető, és négy forduló erősebb bizonyosságot ad (strong PRP). Ez az eredmény elméleti alapot ad a Feistel-hálózat biztonságosságának megítéléséhez.
- Kiegyensúlyozottság: a szabványos Feistel-hálózatoknál a blokk két felét általában egyenlő méretűre választják (balanced Feistel). Vannak unbalanced és generalized Feistel-változatok is, ahol a részek mérete vagy a keverés módja eltér.
Példák és gyakorlati alkalmazások
Több ismert blokkrejtjelező Feistel-szerkezetre épül vagy annak változata:
- DES (Data Encryption Standard) — klasszikus példa, 16 fordulóval.
- Triple DES (3DES) — DES ismétlése háromszor különböző kulcsokkal a biztonság növelésére.
- Blowfish — változtatható kulcsmérettel és Feistel-szerkezeten alapul.
- CAST-128 (CAST5), TEA (Tiny Encryption Algorithm), Camellia és mások — mind tartalmaznak Feistel-jellegű konstrukciókat vagy azok variánsait.
Változatok és kiterjesztések
Az alkalmazott variánsok különböző céloknak felelnek meg: általánosított Feistel-hálózatok (generalized Feistel networks, GFN) több blokkra bontják az adatot és különböző módon kombinálják a részeket; unbalanced Feistelnél a bal és jobb rész mérete eltér; egyes konstrukciók elő- és utó-belana (whitening) lépéseket illesztenek be a biztonság növelésére; mások FL/FLINV rétegeket vagy speciális kulcselőállítást használnak (például Camellia).
Biztonság és kriptoanalízis
A Feistel-hálózat biztonsága nagymértékben függ a körfüggvény (F) és a kulcselőállítás (key schedule) minőségétől, valamint a fordulók számától. Néhány fontos megfontolás:
- Differenciális és lineáris kriptoanalízis: ezek gyakori támadási módszerek blokk-kódolók ellen; megfelelően tervezett S-dobozokkal és elegendő fordulóval mérsékelhetők a kockázatok.
- Fordulószám: túl kevés forduló gyenge védelmet eredményez; a gyakorlati algoritmusokban ezért tipikusan sok (10–32 vagy több) fordulót alkalmaznak az erős biztonság érdekében.
- Többszörös titkosítás: például a 3DES alkalmaz több DES-hívást, hogy kompenzálja a DES kis kulcshosszának problémáit; azonban ez más sebezhetőségeket (pl. meet-in-the-middle) is hozhat magával.
Gyakorlati megfontolások
Implementációkor figyelembe kell venni a következőket:
- Hatékonyság hardveres és szoftveres környezetben (Feistel jól párhuzamosítható és egyszerű logikát igényel).
- Időzítési és oldalsó csatorna-védelem (side-channel attacks) — a biztonság nem csupán a matematikai konstrukción múlik.
- Kulcselőállítás és véletlenszerűség minősége — gyenge kulcsgenerálás könnyen megtörhető rendszert eredményez.
Összefoglalás
A Feistel-hálózat egyszerű, de hatékony séma a szimmetrikus blokk-rejtjelezésben: invertálhatósága, iteratív felépítése és a kriptorendszerekben bevált elvei miatt számos ismert algoritmus (például a Data Encryption Standard) alapját képezi. A biztonság a körfüggvény, a kulcselosztás és a fordulók számának megfelelő megválasztásán múlik; elméleti eredmények (például a Luby–Rackoff tétel) és gyakorlati kriptoanalízis egyaránt ad útmutatást a tervezéshez.

