Jako Feistelova šifra či Feistelova síť se v kryptografii označuje základní struktura použitá v mnoha blokovýchšifrách včetně DES. Její výhodou je, že šifrování a dešifrování fungují prakticky stejně, což zjednodušuje a zlevňuje implementaci.
Feistelova šifra je konstrukce blokových šifer, která spočívá v tom, že se otevřený text šifrovaného bloku nejprve rozdělí na dvě poloviny (předpokládá se tedy jeho sudá délka) a následně se opakuje několik rund (kol, anglicky round), při kterých se vždy provede stejná operace:
,
,
kde je rundová funkce, je subklíč pro . rundu (odvozený z klíče celé šifry), je operace XOR. Výsledným šifrovým textem pak je výstup poslední rundy, avšak v opačném pořadí: .
Základní výhodou Feistelovy šifry je fakt, že funkce rundy nemusí být invertibilní: pro dešifrování se používá naprosto identická struktura se stejnou rundovou funkcí, pouze se otočí plán klíčů – subklíče se používají v opačném pořadí. Díky struktuře šifry a vlastnostem funkce XOR to funguje pro libovolnou rundovou funkci (volba funkce však má zásadní vliv na bezpečnost šifry). Na Feistelovu síť se tedy dá hledět jako na způsob, jak libovolnou funkci převést na permutaci (bijekci).[1]
Konkrétní šifry založené na Feistelově síti se pak od sebe liší počtem rund, definicí rundové funkce a postupem, jakým se z klíče odvozují jednotlivé subklíče.
Modifikace
Bruce Schneier a John Kelsey navrhli zobecnění Feistelovy sítě, ve kterém se nepracuje se dvěma stejně velkými polovinami bloku, ale s nestejně velkými částmi; dále navrhli možnost nehomogenní Feistelovy sítě, ve které rundová funkce není ve všech rundách stejná; načež dospěli ke zcela zobecněné Feistelově síti, která zachovává jen základní strukturu.[1]
Existují také šifry, kde se Feistelova síť používá jako jedna z komponent (dokonce i některé Feistelovy šifry uvnitř rundové funkce používají další Feistelovu síť, např. MISTY[2]).