Feistel Network
ファイステル構造はブロック暗号の対称構造である。入力を左右の半分に分割し、各ラウンドで片方をラウンド関数 F によって変換して交換する。暗号化と復号が同じ構造を共有する。
目的
ラウンド関数 F を全単射でない任意の写像にしても全体は可逆のままになり、設計と実装が簡単で、暗号化と復号がコードを共有できる。
メカニズム
各ラウンド:L_{i+1} = R_i、R_{i+1} = L_i XOR F(R_i, K_i)。復号は同じ構造をラウンド鍵の逆順で実行する。DES、3DES、Blowfish、Twofish はすべて Feistel 暗号である。
ユースケース
- DES/3DES の構造
- Blowfish/Twofish の設計
- ブロック暗号の一般枠組み