Claude Shannonは、長くて時間のかかる統計方法を使用するのではなく、暗号機能の基本ブロックを捉えるための混乱と拡散の手法を提案しました。 Shannonは、統計分析の助けを借りて暗号解読の防止について主に心配していました。
その理由は以下の通りです。 攻撃者が平文の統計的特性についてある程度理解しているとします。 例えば、人間が理解できるメッセージでは、アルファベットの頻度分布は事前に知ることができる。 その場合、暗号解読は、既知の統計が暗号文に反映されているところでは非常に簡単に実行できます。 この暗号解読は確かに鍵または鍵の一部を推測することができます。 それがシャノンが2つの方法、すなわち混乱と拡散を提案した理由です。
比較表
比較基準 | 混乱 | 拡散 |
---|---|---|
基本 | あいまいな暗号文を生成するために利用されます。 | あいまいなプレーンテキストを生成するために利用されます。 |
に求める | 暗号文の統計と暗号鍵の値との間の関係をできるだけ複雑にします。 | 平文と暗号文の間の統計的関係は、できるだけ複雑にされています。 |
達成した | 置換アルゴリズム | 転置アルゴリズム |
によって使われた | ストリーム暗号とブロック暗号 | ブロック暗号のみ。 |
結果 | あいまいさが増す | 冗長性の向上 |
混乱の定義
混乱は、暗号文のあいまいさを増すために考案された暗号技術です。簡単に言うと、この技術は暗号文が平文についての手がかりを与えないことを保証します。 所与の技術では、暗号文の統計値と暗号化キーの値との間の関係はできるだけ複雑に保たれる。 攻撃者が暗号文の統計情報をある程度制御することはできても、その暗号文を生成するためのキーの使用方法は非常に複雑であるため、攻撃者はそのキーを推測することはできません。
この混乱は、キーと入力(プレーンテキスト)に依存する代用および複雑なスクランブルアルゴリズムを使用することによって得られます。
拡散の定義
拡散は、平文の冗長性を高めて平文の統計的構造を不明瞭にして鍵を推定する試みを防ぐために考案された暗号化技術です。 拡散では、平文の統計的構造は暗号文の長距離統計に消失することがあり、それらの間の関係は複雑であるため、誰も元の鍵を推測することはできません。
平文の1ビットが変更されるときそれが全体の暗号文に影響を与えなければならないか、変更が暗号文全体に起こらなければならないように、それは多くの暗号文の数字に個々の平文の数字を広げることによって達成されます。
ブロック暗号では、拡散に対して関数を用いてデータに何らかの置換を適用することによって拡散を得ることができ、その結果、元の平文内の異なる位置からのビットが暗号文の単一ビットに寄与することになる。 ブロック暗号の変換は鍵によって異なります。
混乱と拡散の主な違い
- あいまいな暗号文を作成するために混乱技術が使用されているのに対し、不明瞭な平文を生成するために拡散が使用されています。
- 混乱は平文と暗号文の間の統計的な関連付けをできるだけ複雑にすることを試みます。 それどころか、拡散技術は、暗号文の統計値と暗号鍵の値との間の相関をできるだけ複雑にすることを試みる。
- 置換アルゴリズムを使用して混乱を避けることができます。 反対に、拡散は転置技術を使用することによって達成することができる。
- ブロック暗号は拡散だけでなく混乱にも依存しますが、ストリーム暗号は混乱のみを使用します。
結論
混乱と拡散はどちらも、暗号文の統計値と暗号鍵の値との関係をできるだけ複雑にすることを混乱させることを目的とした暗号化手法です。 一方、拡散は、各個々の平文数字の大部分または暗号文数字への影響を広げることによって、平文の統計的構造を不明瞭にすることを試みます。