Feistelova šifra je v kryptografii symetrická štruktúra používaná pri konštrukcii blokových šifier, pomenovaná podľa nemeckého kryptografa IBM Horsta Feistela; bežne sa nazýva aj Feistelova sieť. Túto schému využíva veľký súbor blokových šifier vrátane Data Encryption Standard (DES) a mnohé ďalšie moderné návrhy ako napr. Blowfish alebo rôzne varianty generalized Feistel sietí.
Ako Feistelova sieť funguje
Feistelova konštrukcia rozdeľuje vstupný blok na dve časti (zvyčajne rovnaké veľkosti): ľavú časť L a pravú časť R. Šifrovanie sa vykonáva cez niekoľko opakovaných kôl (rounds). Jedno kolo s kľúčom Ki typicky vykonáva tieto operácie:
- Li = R{i-1}
- Ri = L{i-1} XOR F(R{i-1}, Ki)
kde F je tzv. round function – nelineárna funkcia, ktorá prijíma polovicu bloku a podkľúč a vracia výstup rovnakého bitového rozmeru. Po poslednom kole sa (ak je potrebné) časti možno prehodiť, aby vznikol výsledný šifrový text.
Dešifrovanie v Feistelovej sieti používa rovnakú štruktúru ako šifrovanie s tým rozdielom, že sa aplikuje rovnaká funkcia F s kľúčmi v opačnom poradí (zmena rozvrhu kľúčov). Preto nie je potrebné mať explicitne invertibilnú funkciu F — invertibilita celej konštrukcie je daná samotnou Feistelovou štruktúrou.
Kľúčové komponenty a typické operácie
Feistelove siete a podobné konštrukcie sú súčinové šifry, a preto kombinujú viacero kôl opakovaných operácií, ako napríklad:
- Bit-shuffling (často nazývaný permutačné boxy alebo P-boxy)
- Jednoduché nelineárne funkcie (často nazývané substitučné polia alebo S-polia)
- Lineárne miešanie (v zmysle modulárnej algebry) pomocou XOR na vytvorenie funkcie s veľkým množstvom toho, čo Claude Shannon opísal ako "zmätok a difúziu".
Premiešavanie bitov vytvára efekt difúzie, zatiaľ čo substitúcia sa používa na zámenu (zmätok). Kombinácia týchto operácií v dostatočnom počte kôl vedie k dobre rozptýlenému a nelineárnemu výstupu.
Výhody Feistelovej konštrukcie
- Jednoduché dešifrovanie: dešifrovací proces je veľmi podobný šifrovaciemu a často vyžaduje len zmenu poradia kľúčov, čo znižuje objem kódu alebo obvodov potrebných na implementáciu.
- Možnosť použiť neinvertibilné F: funkcia F nemusí byť invertibilná, čo uľahčuje návrh zložitých nelineárnych komponentov bez nutnosti konštrukcie ich inverzie.
- Iteratívna implementácia: vhodné pre hardvér aj softvér vďaka opakovanému použitiu rovnakých komponentov.
- Flexibilita: jednoduché rozšírenie počtu kôl, rôzne veľkosti polovíc (balanced vs. unbalanced) a varianty ako generalized Feistel network (GFN).
Nevýhody a bezpečnostné aspekty
- Potenciálna zraniteľnosť pri slabých komponentoch: ak sú S-boxy, funkcia F alebo rozvrh kľúčov nesprávne navrhnuté, šifra môže byť citlivá na diferentálnu alebo lineárnu kryptanalýzu.
- Pečeť pevného velikosti bloku: bloková šifra má pevný rozmer bloku, čo môže byť obmedzením pre určité aplikácie (existujú však techniky, ako napr. režimy prevádzky alebo format-preserving encryption).
- Počet kôl: bezpečnosť závisí od dostatočného počtu kôl a kvality F; je potrebné starostlivo zvoliť počet a návrh funkcií.
Varianty a príklady
Medzi známe implementácie Feistelovej konštrukcie patria:
- DES — klasická 16-kolová Feistelova šifra s 64-bitovým blokom (efektívne 56-bitovým kľúčom).
- Blowfish — Feistelova sieť s variabilnou dĺžkou kľúča a 16 kolami.
- CAST, GOST (v niektorých verziách) a mnohé ďalšie návrhy používajú Feistelovu alebo rozšírené Feistelove schémy.
Moderné alternatívy k Feistelovým sieťam sú napríklad substitučné-permutačné siete (SPN) ako AES (Rijndael), ktoré používajú invertibilné S-boxy a operácie na celej stavebnici namiesto rozdelenia na polovice. Oba prístupy majú svoje výhody a sú bezpečné pri správnom návrhu.
Bezpečnostné poznámky a teoretické výsledky
Feistelova konštrukcia má silnú teoretickú podporu: známe výsledky v kombinatorickej kryptografii (napr. práce Lubyho a Rackoffa) ukazujú, že Feistelove siete s dostatočným počtom kôl a náhodnými (alebo kryptograficky silnými) funkciami F môžu dosiahnuť vlastnosti pseudonáhodnej permutácie. V praxi to znamená, že pri správnom návrhu S-boxov, rozvrhu kľúčov a počtu kôl môže byť Feistelova šifra odolná voči bežným kryptanalytickým útokom.
Praktické odporúčania
- Pri návrhu použiť overené komponenty (silné S-boxy, dobre navrhnutý rozvrh kľúčov).
- Zvoliť dostatočný počet kôl podľa požadanej bezpečnosti a analýz konkrétnej konštrukcie.
- Pri implementácii dbať na ochranu proti bočným kanálom (timing, power analysis) a na správne spracovanie režimov šifrovania.
Feistelova sieť zostáva dôležitým a praktickým stavebným kameňom v návrhu blokových šifier vďaka svojej jednoduchej invertibilite, flexibilite a efektívnosti implementácie.

