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.