暗号学において、混乱と拡散は安全な暗号のための基本的な設計目標である。これらの用語は、クロード・E・シャノンが1949年の論文Communication Theory of Secrecy Systems(1949年)で導入し、攻撃者を妨げる2つの補完的な方法を表した。簡単に言えば、混乱は秘密の鍵が暗号文に及ぼす影響をできるだけ複雑にしようとし、拡散は平文に含まれる構造や冗長性を暗号文全体に広げて、統計的なパターンを拡散させる。
定義と性質
混乱とは、通常、鍵から暗号文への写像が非線形で分かりにくいことを指す。鍵を少し変えるだけで出力が予測しにくく変化するべきである。拡散とは、各出力ビットが多数の入力ビットに依存し、平文の1ビットの変化が多くの暗号文ビットに影響することを意味する。強い拡散層は、1つの入力ビットを反転すると各出力ビットが約2分の1の確率で反転する厳密雪崩基準の達成を助ける。これらの性質は、統計的攻撃や代数的攻撃の有効性を下げる。
仕組みと構成要素
実用的な暗号は、異なる構成要素と繰り返しのラウンドによって混乱と拡散を実現する。代表的な手法には次のものがある。
- 置換(substitution)ボックス:Sボックスと呼ばれる小さな非線形参照表は、入力記号を予測不能な方法で別の記号に置き換えることで混乱を与える。
- 置換や混合の層:Pボックスや線形変換は、ビットを位置全体に広げ、記号を交差させて組み合わせることで拡散を提供する。
- 線形代数的層と算術演算:現代的な設計(たとえばAES)では、行列乗算やビット演算を用いて入力を混合し、統計的な構造を薄める。
設計パターンと例
多くの暗号方式は、混乱と拡散の段階を交互に繰り返す積型構成として作られる。典型的なラウンド方式のブロック暗号では、置換段階が非線形性を生み、その後の置換や混合段階がその変化を広げるため、次の置換は大きく異なる入力を扱うことになる。この交互パターンが積型暗号の本質である。ストリーム暗号は異なるトレードオフを重視するが、それでも鍵との関係を隠すために混合と非線形結合関数に依存する。
なぜ重要か、どう作用するか
混乱だけでも暗号文の塊から鍵を導き出すことは難しくできるが、拡散がなければ、保持された平文の構造が攻撃に利用されうる。逆に、十分な混乱を欠いた拡散は、暗号解析が利用できる線形関係を残してしまう。したがって設計者は、特定の攻撃、たとえば差分暗号解析や線形暗号解析に耐えるよう、Sボックスの非線形性、置換の広がり、ラウンド数を調整する。また、拡散や混乱に用いる手法の選択は、性能、サイドチャネル耐性、実装コストにも影響する。
注目すべき点と歴史的背景
シャノンの定式化は、暗号学を情報理論と結び付け、層状の暗号設計に明確な根拠を与えた。つまり、鍵の影響を隠し(混乱)、メッセージの冗長性を隠す(拡散)という考え方である。時代とともに概念は洗練されたが、現代の暗号の分析と構成の中心であり続けている。元の定義や例を学びたい読者にとって、シャノンの論文は一次資料であり、多くの現代的な文献は具体的な構成と安全性分析を通じて彼の考えを詳しく説明している。
関連する基礎事項として、暗号学、シャノンの原論文論文、置換、Sボックス、Pボックスの標準的な説明がある。さらに、厳密雪崩基準、AESのような実装例、積型暗号や統計に基づく統計解析を扱う文献も参照される。