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.