2005年に標準暗号を外されたDES(data encryption standard,データ暗号化標準)は,この形です.16段の繰り返し構造です.
図はこんな感じです.
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型構造の安全性についてはまた追って説明します.