【情報セキュリティ】逆転の発想で復号する!「フェイステル構造」|情報処理問題1000本ノック
AESのSPN構造と並び、共通鍵暗号の設計における二大構造の一つが「フェイステル構造」です。かつての標準暗号DESにも採用された、この巧妙な仕組みを攻略しましょう。
1. 問題:ブロックを分割する暗号構造
【 問題 】 ブロック暗号の設計において、入力データを左右二つに分割し、一方のデータから生成した値ともう一方のデータのXOR(排他的論理和)をとる処理を、左右入れ替えながら繰り返す構造を何と呼ぶでしょうか?
ア、SPN構造 イ、フェイステル構造 ウ、ストリーム構造 エ、公開鍵構造
2. 正解:暗号アルゴリズムに関する正解
正解: イ、フェイステル構造(Feistel構造)
3. 解説:同じ回路で「暗号化」も「復号」も
フェイステル構造は、計算の過程でデータを左右に分け、片方ずつ加工していくのが特徴です。その最大のメリットは「実装の効率性」にあります。
【図解:フェイステル構造の仕組み】
■ 基本的な動き
1. 入力ブロックを左(L)と右(R)に半分ずつ分ける。
2. 右側(R)とラウンド鍵を関数に入れ、その結果と左側(L)のXORをとる。
3. 新しい左側として「元のR」、新しい右側として「2の結果」を使い、左右を入れ替えて次のラウンドへ。
■ 最大の特徴:可逆性
・この構造は、内部で使われる関数がどんなに複雑(あるいは不可逆)であっても、「逆順に処理するだけで必ず元に戻せる」という数学的性質を持っています。
・そのため、暗号化と復号で全く同じ回路やプログラムを使い回すことができます。
■ 基本的な動き
1. 入力ブロックを左(L)と右(R)に半分ずつ分ける。
2. 右側(R)とラウンド鍵を関数に入れ、その結果と左側(L)のXORをとる。
3. 新しい左側として「元のR」、新しい右側として「2の結果」を使い、左右を入れ替えて次のラウンドへ。
■ 最大の特徴:可逆性
・この構造は、内部で使われる関数がどんなに複雑(あるいは不可逆)であっても、「逆順に処理するだけで必ず元に戻せる」という数学的性質を持っています。
・そのため、暗号化と復号で全く同じ回路やプログラムを使い回すことができます。
[ 代表的な採用アルゴリズム ]
★ DES (Data Encryption Standard):世界で最も有名なフェイステル構造の暗号です。
★ Camellia (カメリア):日本で開発された、非常に強固で高速なフェイステル構造の暗号です。
★ DES (Data Encryption Standard):世界で最も有名なフェイステル構造の暗号です。
★ Camellia (カメリア):日本で開発された、非常に強固で高速なフェイステル構造の暗号です。
1. 理解のコツ: データを半分ずつ交互に「鍵をかける」イメージです。全部一度に加工するSPN構造(AES)に対し、半分ずつ慎重に処理していくのがフェイステル
PR