Feistel型構造 | イマッチの暗号特集

イマッチの暗号特集

情報セキュリティについてまとめている管理人イマッチのブログです。暗号の専門家になるために奮闘しています。

Feistel型構造は多くのブロック暗号で用いられている繰り返し構造です.はしごの形をしています.
2005年に標準暗号を外されたDES(data encryption standard,データ暗号化標準)は,この形です.16段の繰り返し構造です.

図はこんな感じです.

Feistel型構造

F_1からF_rまでの関数をラウンド関数といいます.
暗号化では平文をL_0とR_0の左右半分ずつに分けて,右の部分をラウンド関数に適用しながら,処理を行っていきます.
1段目からr段目まで繰り返していきます.
復号ではその逆です.

式で表すとこんな感じです.

暗号化
L_1 = R_0; R_1 = L_0 xor F1(R_0)
L_2 = R_1; R_2 = L_1 xor F2(R_1)


L_r = R_(r - 1); R_r = L_(r - 1) xor Fr(R_{r - 1})
 
復号
R_(r - 1) = L_r; L_(r - 1) = R_r xor Fr(L_r)
R_(r - 2) = L_(r - 1); L_(r - 2) = R_(r - 1) xor F_{r-1}(L_{r - 1})


R_0 = L_1; L_0 = R_1 xor F1(L_1)

段数が多い,つまり繰り返し回数が多いほうが安全だといわれていますが,ラウンド関数F1からFrの中身が弱かったら意味がありません.
ラウンド関数がランダムなもの,つまり理想的なモデルの場合はどうなるでしょうか?

Feistel型構造の安全性についてはまた追って説明します.


~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp