00 学習目標
01 古典暗号
02 機械式暗号と Enigma
03 ワンタイムパッド
04 シャノンの完全秘匿性
05 OTP の3つの壁
06 DES から AES へ
07 まとめと用語
08 確認問題
学習目標
本講を終えると、以下を達成できるようになります。
シーザー暗号 とヴィジュネル暗号 の仕組みと、それぞれが破られた理由(頻度分析・カシスキー試験)を説明できる
Enigma が「機械化したヴィジュネル暗号」であった理由と、なぜ Bletchley Park で破られたのかを述べられる
ワンタイムパッド(OTP) の手順を XOR で正しく書ける
シャノンの完全秘匿性 の意味(暗号文を見ても平文の確率分布が変わらない)を直観的に説明できる
OTP が実用にならない3つの理由 ─ 鍵長 = 平文長 、真の乱数 、鍵の再利用厳禁 (two-time pad 攻撃) を述べられる
DES (1977) と AES (2001) の歴史的位置づけを説明し、なぜ 「完全」 ではなく 「計算量的に十分強い」 暗号が現実解になったのかを理解する
本講は
基礎 暗号化 を前提とします。共通鍵 / 公開鍵という骨格は既知として、
それ以前の暗号 と
「数学的に絶対安全な暗号は存在するのか」 という問いを扱います。続く
第36回 共通鍵暗号(AES) では、本講で見る OTP の限界を踏まえて、AES がなぜ「現実解」として選ばれたのかが理解しやすくなります。
このレッスンの目次
古典暗号 ─ シーザーとヴィジュネル
暗号の歴史は古く、紀元前のスパルタの スキュタレー (棒に巻いた羊皮紙)、ローマのカエサルが軍書に使ったと伝わる シーザー暗号 まで遡ります。これらは 「文字をずらす・並べ替える」 という素朴な発想で、20 世紀前半まで使われ続けました。
POINT
古典暗号の2大カテゴリ:
・換字式(substitution) ─ 文字を別の文字に置き換える(シーザー、ヴィジュネル、Enigma も基本これ)
・転置式(transposition) ─ 文字の順序を入れ替える(スキュタレー、レールフェンス暗号)
現代の共通鍵暗号(AES)も 換字 + 転置の組み合わせ を、ビット単位で何ラウンドも繰り返すことで成立している。
シーザー暗号 ─ 単純な文字ずらし
各文字をアルファベット上で k 個ずらす だけ。鍵は「ずらす数 k」(0〜25 の 26 通り)。例えば k=3 なら A→D、B→E、…、Z→C。「HELLO」は「KHOOR」になります。
シーザー暗号(鍵 k=3)
平文:
H
E
L
L
O
→ 各文字を3つ後ろへ →
K
H
O
O
R
= 暗号文
対応表(k=3):
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
図の見方:平文の各文字を、対応表で3つ後ろの文字に置き換える。復号は同じ k で逆方向にずらす。鍵の総数はわずか 25 通り なので、現代では数秒で全数試行できる。
頻度分析 ─ 単一換字暗号は崩れる
シーザー暗号を一般化して「アルファベットの順序を完全にシャッフル(26! ≈ 4×10^26 通り)」した暗号(単一換字暗号 )も、9 世紀のアラビアの学者 アル=キンディー が 頻度分析 で破ってしまいました。英語なら E が圧倒的に多く、続いて T・A・O・I…。暗号文中で最も多い文字は E、次は T、と推測すると鍵が割れる。
頻度分析を体感する(クリックで展開)
たとえば次の暗号文 ZGSV ZIV BLF? R'N URMV. を見たとき、V が最も多く、次が R。英語の頻度表(E, T, A, O, I, N…)に当てはめてみると、V→E、R→T などと推測でき、最終的に HOW ARE YOU? I'M FINE.(これは A↔Z の アトバシュ暗号 )が見えてきます。鍵空間が 4×10^26 もあっても、言語の統計的偏り があれば実質的な探索空間は劇的に狭まります。
ヴィジュネル暗号 ─ 多表式で頻度分析を回避
16 世紀フランスのヴィジュネルが体系化した 多表式暗号 。キーワード を平文の長さ分だけ繰り返し、各位置で異なるシーザー暗号を適用します。同じ平文文字でも、位置によって違う暗号文文字になるため、単純な頻度分析が効かなくなります。
ヴィジュネル暗号(鍵=KEY を繰り返す)
平文:
A
T
T
A
C
K
鍵 :
K
E
Y
K
E
Y
→ 各位置で別シフト →
K
X
R
K
G
I
= 暗号文
※ 平文 A が位置1では K に、位置4では K(同じ偶然)に。同じ T が位置2と3では X と R で違う。
図の見方:鍵 KEY (3 文字) を繰り返し、各位置で「平文の文字 + 鍵の文字」分のシフトを行う(A=0, B=1, ...)。同じ平文文字でも位置で結果が変わるため、頻度分析の効きが弱まる。
カシスキー試験 ─ ヴィジュネルも結局破れた
「破れない暗号」と長く信じられたヴィジュネルも、19 世紀に カシスキー試験 と フリードマン解析 によって破られました。鍵長を推定さえできれば、長さ k のヴィジュネルは k 個のシーザー暗号 に分解でき、それぞれを頻度分析で解ける。「鍵が短い・繰り返す・統計的偏りが残る」 限り、暗号は破られる ─ この教訓が、後のワンタイムパッドの設計思想につながります。
考えてみる:なぜ繰り返し鍵が弱点なのか
鍵が k 文字で繰り返されるなら、暗号文の 位置 1, k+1, 2k+1, ... はすべて同じシフトで暗号化されている。つまりこれらの文字を集めると、本質的に 1 つのシーザー暗号 と同じ。鍵長が分かれば k 系列に分解 → それぞれ頻度分析で k は破れる。「鍵を短くして繰り返す」操作が情報を漏らしている という構造。OTP はこれを「鍵を平文と同じ長さにし、二度と繰り返さない」ことで根絶する。
機械式暗号 ─ Enigma と第二次世界大戦
20 世紀前半、電気機械式の 暗号機 が登場します。代表格はドイツ軍が使った Enigma 。中身は 「ヴィジュネル暗号を機械化して、鍵周期を桁違いに長くした多表式換字暗号」 。3〜4 個の 回転盤(ロータ) が文字を打つたびに回り、毎キーごとに暗号化対応表が変わる仕組みでした。
POINT
Enigma の鍵設定の規模:
・3 つのロータの選択と並び(60 通り)
・各ロータの初期位置(26³ ≈ 17,576 通り)
・プラグボード(10 対の文字を入れ替え) ≈ 1.5 × 10^14 通り
総組み合わせ ≈ 1.6 × 10^20 通り
現代の AES-128(2^128 ≈ 3.4 × 10^38)に比べれば小さいが、当時は「人間が手計算で破るのは不可能」と信じられていた。
Enigma の動き(概念図)
Enigma の信号経路(概念図)
Keyboard
A を打つ
Plugboard
A↔X など
R1
回転
R2
R3
Reflector
折返し
R3
R2
R1
Lampboard
G が点灯
A を打つたびに R1 が 1 ノッチ回転 → 次の文字では別の経路に
同じ A を 26 回打っても、出力は毎回違う文字 = 多表式の機械化
図の見方:キーを打つと電流がプラグボード→3 つのロータ→反射板→ロータ逆順→ランプボードと流れ、対応する暗号文字が点灯する。キーを打つたびにロータが回る ので、同じ文字でも前後で別の文字に変換される ─ 周期が極端に長いヴィジュネル暗号と等価。
なぜ破られたか ─ Bletchley Park の闘い
Enigma は理論上 1.6 × 10^20 通りの鍵設定があり、当時の人間には破れないとされました。しかし英国 Bletchley Park のチーム(アラン・チューリング ほか) は、ドイツ軍の運用上の癖を突いて崩しました。決定打となった要因:
定型文(Cribs) ─「Wettervorhersage(天気予報)」「Heil Hitler」など、毎日特定位置に決まった語が出る
反射板の性質 ─ 文字 X が文字 X 自身に変換されることは絶対にない(自己回避)。これだけで候補がぐっと減る
運用ミス ─ オペレータが推測しやすい初期位置(AAA、自分の名前など)を選ぶ
Bombe ─ チューリングが設計した電気機械式の総当たり装置。Cribs から矛盾のないロータ設定を高速で絞り込んだ
暗号方式の数学的強度ではなく 運用の隙 を突かれた事例として、現代でも繰り返し参照されます(プロトコルの数学が完璧でも、鍵の使い回し・乱数の偏りで実装が崩れる ─ 後の OTP の壁にも、現代 TLS 攻撃にも共通する教訓)。
つながる知識: Bletchley Park での暗号解読は、現代計算機科学の母胎の一つでもある。チューリングが Bombe の設計過程で具体化した発想は、戦後の汎用計算機・暗号研究に直結した。「暗号 ⇄ 計算量理論 」という現在まで続く対の関係は、ここで産まれた。
ワンタイムパッド ─ 絶対に破れない暗号
19 世紀末に フランク・ミラー が考案、20 世紀初頭に ヴァーナム が電信用に再発明したのが ワンタイムパッド(One-Time Pad、OTP) 。「平文と同じ長さの真の乱数列を鍵として 1 度だけ使い、ビット単位で XOR する 」という、究極にシンプルな方式です。これが 数学的に絶対に破れない (計算機がどれだけ進化しても破れない) 唯一の暗号です。
POINT
OTP の3条件(これを全部守らないと OTP ではない):
1. 鍵長 ≥ 平文長 (平文1ビットごとに鍵1ビット)
2. 鍵は 真の乱数 (物理乱数:熱雑音・量子現象から生成)
3. 鍵は 絶対に再利用しない (一度使ったら破棄)
操作は C = P ⊕ K 、復号は P = C ⊕ K (XOR の対称性)
OTP の動き
ワンタイムパッド = 平文 XOR 真の乱数鍵
平文 P :
01001000 01001001 ... ("HI" の 16 bit)
鍵 K :
10110010 11010101 ... (真の乱数 16 bit)
XOR (P ⊕ K)
暗号文 C:
11111010 10011100 ...
復号:C ⊕ K = (P ⊕ K) ⊕ K = P ⊕ (K ⊕ K) = P ⊕ 0 = P ─ 同じ鍵で XOR すれば元に戻る
図の見方:平文の各ビットと、同じ長さの真の乱数鍵の各ビットを XOR するだけ。XOR は K ⊕ K = 0 という性質があるので、同じ鍵をもう一度 XOR すれば復号できる。アルゴリズム自体は中学生でも実装できるほど単純。
なぜこれが「絶対に破れない」のか ─ 直観
暗号文 11111010 を見たとき、攻撃者にとって平文として可能な値はいくつあるか?2^8 = 256 通り全部 。なぜなら、鍵を「平文を任意の値にする鍵」として選べば、どんな平文も同じ暗号文を生成しうるから。例えば:
平文が HI(01001000 01001001) なら、鍵 = 10110010 11010101 で暗号文 11111010 10011100 になる
平文が NO(01001110 01001111) なら、鍵 = 10110100 11010011 でも暗号文は 11111010 10011100(別の鍵)
つまり攻撃者が 11111010 10011100 という暗号文を手に入れても、平文が HI なのか NO なのか、はたまた OK や BC なのか、区別する手がかりがゼロ 。鍵が一様乱数で1度きりなら、暗号文と平文の間には 統計的相関がまったく存在しない 。これがシャノンが定式化した 完全秘匿性 です(次節)。
歴史メモ:OTP は本当に使われたのか
第二次世界大戦中、ソ連は VENONA 計画 でスパイ通信に OTP を使用。しかし大量の通信をさばくため、戦時中の混乱で 同じ鍵パッドを 2 度以上使ってしまった (再利用)。米英の暗号解析者は約 30 年かけて再利用された通信を識別し、復号して多くの諜報情報を得た。OTP の3条件のうち1つでも崩れた瞬間に絶対安全は消える という典型例。 冷戦期の 米ソホットライン も OTP で運用されていたとされる(両国が定期的に使い切りの鍵盤を交換した)。現代でも一部の国家機密通信や量子鍵配送(QKD) は OTP の枠組みで使われる。
確認: ワンタイムパッド(OTP)が 情報理論的に完全 な秘匿性を持つために必要な条件はどれか。
A. 鍵が十分長いこと(平文の半分以上)
B. 鍵が真乱数で、平文と同じ長さであること
C. 鍵が一度しか使われないこと
D. 上記 B かつ C(真乱数・平文と同長・一度きり)の両方を満たし、かつ鍵が安全に共有されていること
正解:D 。OTP が「絶対に破れない」と言えるのは、3 条件すべてが成立する場合のみ 。① 鍵が真乱数(擬似乱数なら推測される)、② 平文と同じ長さ(短いと頻度分析で破れる)、③ 一度きりの使用(再利用すると Two-Time Pad で内容が復元される)。さらに事前に安全に鍵を渡している必要がある。1 つでも欠けると安全性は崩れる。だから現代では「実用上は不可能」とされ、AES のような計算量的に安全な暗号にバトンタッチした。
シャノンの完全秘匿性
1949 年、情報理論の父 クロード・シャノン は論文「Communication Theory of Secrecy Systems」で、暗号の 絶対安全 を初めて数学的に定義しました。これが 完全秘匿性(perfect secrecy) 。OTP がこの定義を満たす唯一の現実的な暗号であり、「鍵長 ≥ 平文長」がその必要条件 であることも、シャノンが証明しました。
POINT
シャノンの完全秘匿性の定義(言葉で):
暗号文 C を観測しても、平文 P の確率分布がまったく変わらない
数式:Pr(P = p | C = c) = Pr(P = p) すべての p, c について
シャノンの定理:
完全秘匿性を持つ暗号は 鍵空間 ≥ 平文空間 (つまり鍵長 ≥ 平文長) でなければならない
→ 「短い鍵で長い秘密を守る」 ことは絶対に不可能
「平文の分布が変わらない」とは
具体例で考えます。攻撃者は事前知識として「平文は YES か NO のどちらかの返信」と知っているとします。事前確率は Pr(YES)=0.5、Pr(NO)=0.5。
OTP の場合 :暗号文 C を観測しても Pr(P=YES|C) = 0.5、Pr(P=NO|C) = 0.5 のまま。攻撃者の 知識が増えない
普通の暗号(AES など)の場合 :理論上は鍵を全数試行すれば、ほとんどの鍵候補で平文が「意味のないバイト列」になる。その中で意味のある平文(YES か NO)に復号できる鍵は限定される → 攻撃者の知識は 有限の計算で増えうる (が、計算量が膨大すぎて事実上不可能)
「絶対」 と 「計算量的に十分」 の違い
2 種類の「安全」
完全秘匿性(OTP)
・どれだけ計算機が進化しても破れない
・量子コンピュータも無効
・条件:鍵長 ≥ 平文長, 真乱数, 1度のみ
→ 鍵配送が現実的でない…
計算量的安全性(AES など)
・鍵を総当たりすれば理論上は破れる
・が、2^128 通り = 宇宙年齢を超える時間
・短い鍵で長い文を守れる(実用的)
→ 量子計算は脅威になりうる
図の見方:OTP は 情報理論的に絶対安全 ─ どんな計算機でも破れない。AES などは 計算量的に安全 ─ 理論上は鍵を全数試行できるが、現実の時間内には不可能。「絶対」を諦めることで 「短い鍵で長い秘密を守る」 実用性を手に入れた、というのが現代暗号の選択。
考えてみよう: 「短い鍵で長い秘密を守ることは絶対不可能」 とシャノンが証明したのに、なぜ我々は AES-128 で動画ストリーミングを暗号化できるのか?答え:「絶対」 を 「計算量的に絶対不可能」 に置き換えた から。AES-128 を破るには 2^128 通り試す必要があり、地球上の全コンピュータをかき集めても宇宙の年齢のあいだ計算しきれない。「現実的な時間で破れない」 を 「破れない」 と読み替える ─ これが現代暗号の哲学的な妥協点。
確認: シャノンの「完全秘匿性(perfect secrecy)」と現代 AES の「計算量的安全性(computational security)」の違いとして、最も適切なものはどれか。
A. 完全秘匿性は AES の方が強い
B. 完全秘匿性は 無限の計算資源があっても破れない (情報理論的に不可能)。計算量的安全性は 現実的な時間内に破れない (理論上は可能だが宇宙の年齢でも足りない)
C. 同じ意味で、表現が違うだけ
D. 完全秘匿性の方が遅い
正解:B 。シャノン(1949) は OTP が「攻撃者に無限の計算資源を与えても、平文に関する情報が暗号文に一切含まれない」ことを数学的に証明した ─ これが完全秘匿性。一方、AES は「2^128 通りの試行が必要」という計算量上の困難に基づく。量子計算機が出てきたら計算量的安全性は崩れうる (共通鍵は鍵長を倍にすれば回避可能)、一方、完全秘匿性は計算資源にも量子にも影響されない。実用 vs 理論の妥協として現代暗号は計算量的安全性を採用している、というのが哲学的ポイント。
OTP が実用化されない3つの壁
OTP は数学的に完璧。しかし現実に「インターネット通信を OTP で暗号化しよう」とすると、3 つの壁にぶつかります。これらの壁こそが 「現代暗号は OTP ではなく AES などを使う」 理由であり、続く第36回・第37回で扱う共通鍵・公開鍵暗号の設計動機でもあります。
壁① 鍵長 = 平文長 ─ 鍵配送が問題を解決しない
1 GB の動画を OTP で暗号化したい?1 GB の真の乱数鍵 を、事前に安全な経路で送る必要がある。「データを安全に送りたい」 のに 「同じ量のデータを安全に送る前提が必要」 という 循環 が発生する。鍵を安全に送れる経路があるなら、そもそもその経路で平文を送ればよかった ─ という矛盾。
壁② 真の乱数が必要 ─ 擬似乱数では駄目
OTP の鍵は 真の乱数 でなければなりません。コンピュータが普通に生成する乱数(rand()、メルセンヌ・ツイスタなど)は 擬似乱数 であり、初期値(seed)から 決定的 に生成される ─ つまりパターンがある。これを OTP の鍵にすると「seed = 鍵」になってしまい、結局 seed の長さ(数十〜数百ビット)が真の鍵長になり、長い平文でも seed を当てれば全部解ける。
真の乱数を作るには 物理乱数源 (熱雑音・放射線崩壊・量子現象)が必要で、生成速度が遅く、ハードウェアが要る。今の /dev/random も内部にエントロピー源を持っているが、長時間連続では足りない。
壁③ 鍵の再利用は致命的 ─ two-time pad 攻撃
OTP の鍵を 2 度使う と、何が起こるか。同じ鍵 K で2つの平文 P1, P2 を暗号化したとき:
C1 = P1 ⊕ K
C2 = P2 ⊕ K
C1 ⊕ C2 = (P1 ⊕ K) ⊕ (P2 ⊕ K)
= P1 ⊕ P2 ⊕ (K ⊕ K)
= P1 ⊕ P2 ⊕ 0
= P1 ⊕ P2 ← 鍵が消えた!
暗号文同士の XOR が 平文同士の XOR になる。攻撃者は片方の平文の一部(よくある定型文 ─「HTTP/1.1」「Subject:」など)を推測すれば、もう片方の平文の対応位置が剥き出しになる。これが two-time pad 攻撃 。VENONA はこれで崩されました。
つながる知識: この two-time pad 攻撃は、OTP に限らず あらゆるストリーム暗号(ChaCha20、AES-CTR、AES-GCM) に共通する弱点です。これらは「鍵 + nonce で擬似ランダムなビット列を生成して XOR」 という OTP の構造を踏襲しており、同じ鍵 + 同じ nonce を 2 度使うと OTP の鍵再利用と同じ事故が起きる。次回(第36回)以降の動作モード(CTR/GCM) で「nonce は絶対再利用してはいけない」という鉄則は、ここに根がある。
SUMMARY
OTP の3つの壁:
・鍵長 :平文と同じ長さの鍵を毎回安全に送れない
・真乱数 :擬似乱数では成立しない、物理乱数源が必要
・使い切り :再利用は two-time pad 攻撃で致命的
→ だから現実のネットワークは 「絶対」を諦めて「実用的に十分強い」AES などへ
DES から AES へ ─ 現代共通鍵暗号の系譜
OTP の壁を踏まえて、20 世紀後半の暗号研究は 「短い鍵で実用的に強い暗号」 を目指す方向に舵を切ります。代表的な節目が DES (1977) と AES (2001) 。両者ともに「ブロック暗号」 ─ 平文を固定長のブロックに分け、共通鍵で何ラウンドも非線形変換と拡散を繰り返す方式です。
暗号史タイムライン
古典暗号 → OTP → 現代暗号
紀元前
スキュタレー
シーザー
16C
ヴィジュネル
1917
Vernam
(OTP)
1939-45
Enigma 解読
(Bletchley)
1949
シャノン
完全秘匿性
1977
DES
(IBM/NIST)
1976
DH 鍵交換
公開鍵の発見
2001
AES
(FIPS 197)
図の見方:古典→機械式→OTP(理論的完成)→ シャノンの定式化(1949) を経て、実用的な「短い鍵の暗号」 として DES (1977) と AES (2001) が登場。同じ 1970 年代に 公開鍵暗号 (Diffie-Hellman、RSA) も誕生し、暗号は「鍵配送問題」 を解く道具を初めて手にしたが、これは次回・次々回(第37回)のテーマ。
DES (1977) ─ 公的標準としての最初のブロック暗号
米 NIST の前身 NBS が公募し、IBM の Lucifer をベースに採用。56 bit 鍵 / 64 bit ブロック / 16 ラウンド Feistel 構造 。当時としては十分な強度だったが、計算機の進歩で 1998 年に EFF DES Cracker(専用ハードウェアで 22 時間で全鍵探索) により破られ、寿命が来た。
過渡期の対応として 3DES(Triple DES) (DES を 3 回かけて実効鍵長を上げる)も使われたが、性能・効率の問題で長期解にはならず、後継の公募が必要になった。
AES (2001) ─ 公開コンペで選ばれた現代標準
NIST は 1997 年に AES の公募を開始。米国外を含む世界中の研究者から 15 候補 が提案され、3 ラウンドの公開選考で 2000 年 10 月に ベルギー製の Rijndael が選定、2001 年に FIPS 197 として標準化。128 bit ブロック / 128・192・256 bit 鍵 / 10〜14 ラウンド SP 構造 。Rijndael の設計者ライメンとデーマンは欧州の研究者であり、米政府がスパイ目的で裏口を仕込みやすい IBM 内部の暗号(DES の経緯)に対する反省から、公開・国際化された選考プロセス が重視された。
AES の中身(SubBytes / ShiftRows / MixColumns / AddRoundKey の 4 操作) と動作モード(ECB / CBC / CTR / GCM) は、次回 第36回 共通鍵暗号 で詳しく扱います。本講で見た OTP の3つの壁、特に「鍵再利用は致命的」という教訓が、CTR/GCM の nonce 設計に直接効いてきます。
暗号史を貫く 2 つの教訓
教訓 歴史的根拠 現代への影響
運用の隙が暗号を破る Enigma → 定型文・運用ミスで崩壊 nonce 再利用、鍵管理の重要性
「絶対」を求めると実用にならない OTP → 鍵配送・乱数・使い切りの3壁 計算量的安全性(AES-128 等)を採用
長く信じられた暗号も時間で崩れる ヴィジュネル(数百年) → カシスキー試験で崩壊 / DES (20 年) → 全数探索で崩壊 定期的な標準更新(SHA-1 廃止、PQC 移行)
公開・国際的選考が信頼を生む AES 公募(1997-2001)、PQC 公募(2016-2024) NIST 公募方式が現代の標準ルート
確認: AES がなぜ「DES の後継」として広く受け入れられたのか? 最も適切な理由は?
A. NIST が政府権限で強制したから
B. 開発元の Rijmen と Daemen が大企業だったから
C. 国際公募(1997〜2001)で世界の暗号研究者が公開で攻撃を試み、3〜4 年かけて生き残った Rijndael が選ばれた、という「公開検証プロセス」 そのものが信頼の根拠だから
D. AES は無料だから
正解:C 。DES の選定(1970 年代)は NSA の関与もあって不透明な部分があり、後年「バックドア説」が議論された。AES の公募は 「あらゆる解析手法を世界中の研究者に試させ、生き残った 1 つを選ぶ」 という民主的・公開的なプロセスを取り、これが信頼の根拠になった。同じ手法は SHA-3 公募(2007〜2012)、PQC 公募(2016〜2024)にも継承されている ─ 「公開検証 = 信頼」 という現代暗号標準化の哲学。
まとめと用語チェック
SUMMARY
1. 古典暗号 はシーザー(単表式)→ ヴィジュネル(多表式) と進化したが、頻度分析・カシスキー試験で崩壊
2. Enigma は機械式の多表式換字暗号。鍵空間 1.6×10^20 でも運用の隙(定型文・自己回避・操作ミス) と Bombe で崩された
3. ワンタイムパッド は 鍵長 ≥ 平文長 + 真乱数 + 使い切り で、計算機の進化に依存しない 絶対安全 (完全秘匿性)
4. シャノン(1949) が完全秘匿性を数学的に定義し、それには 鍵空間 ≥ 平文空間 が必要であることも証明
5. OTP の 3 つの壁 :鍵配送・真乱数・使い切り。実用通信には乗らない
6. two-time pad 攻撃 :鍵を 2 度使うと C1 ⊕ C2 = P1 ⊕ P2 で平文が漏れる ─ 現代の AES-CTR / GCM の nonce 鉄則の起源
7. DES (1977) → AES (2001) :絶対を諦めて「計算量的に十分強い」短い鍵の暗号へ。AES は世界公開の選考で Rijndael が選ばれた
用語チェック
用語 1行説明
シーザー暗号 各文字を k 個ずらす。鍵総数 25 通り、現代では一瞬で破れる
頻度分析 言語の文字出現頻度から鍵を推定する古典攻撃(アル=キンディー)
ヴィジュネル暗号 キーワードを繰り返して位置ごとにシーザーを変える多表式
カシスキー試験 暗号文中の繰り返しからヴィジュネルの鍵長を推定する手法
Enigma 第二次大戦時のドイツ軍機械式暗号。Bletchley Park で解読された
Bombe チューリングが設計した Enigma 解読用電気機械装置
ワンタイムパッド(OTP) 平文と同じ長さの真乱数鍵を 1 度だけ XOR する暗号。絶対安全
完全秘匿性(perfect secrecy) シャノン定義。暗号文を見ても平文の確率分布が変わらない性質
two-time pad 攻撃 OTP やストリーム暗号で鍵を 2 度使うと C1⊕C2 = P1⊕P2 で平文が漏れる
計算量的安全性 「現実的な時間で破れない」を「破れない」と置き換える現代暗号の哲学
DES 1977 NIST 標準ブロック暗号、56 bit 鍵。1998 年に全数探索で破られた
AES / Rijndael 2001 FIPS 197 標準。公開選考でベルギー製 Rijndael が選定された
NEXT: 次回
第36回 共通鍵暗号 ─ AES と動作モード では、本講で見た OTP の限界を踏まえ、AES の中身(4 つのラウンド操作)、動作モード(ECB/CBC/CTR/GCM)、AEAD(GCM の認証付き暗号) を扱います。「OTP の鍵再利用が致命的」 という教訓が、CTR/GCM の
nonce 鉄則 として現代に直接生きていることが見えてきます。
確認問題
問1. 単一換字暗号(シーザーの一般化、26! 通りの鍵)が 頻度分析で破れる 理由として、最も適切なものはどれか。
次の選択肢から最も適切なものを選択してください。
A. 鍵総数が少ないため全数探索ができる
B. シーザー暗号は古いから
C. 平文の文字頻度の偏り(英語ではEが最多など)が暗号文にそのまま現れるため
D. 鍵が必ず短いから
正解:C
26! ≈ 4×10^26 通りは全数探索には大きすぎる(A は誤り)。決定的な弱点は 「同じ平文文字は常に同じ暗号文文字になる」 性質で、英語の頻度分布(E、T、A、O、I…)が暗号文に保たれてしまうこと。攻撃者は最も多い暗号文字を E と推定するだけで鍵推定の取っかかりが得られる。これがヴィジュネルの多表式 → OTP の真乱数鍵へという改善の動機。
問2. ワンタイムパッド(OTP) が 絶対に破れない ための3条件として、最も適切な組み合わせはどれか。
次の選択肢から最も適切なものを選択してください。
A. 鍵長 ≥ 平文長 / 鍵は擬似乱数 / 鍵は何度でも再利用してよい
B. 鍵長 ≥ 平文長 / 鍵は真の乱数 / 鍵は1度のみ使用
C. 鍵長は短くてよい / 鍵は真の乱数 / 鍵は1度のみ使用
D. 鍵長 ≥ 平文長 / 鍵は擬似乱数 / 鍵は1度のみ使用
正解:B
OTP の3条件は (1) 鍵長 ≥ 平文長、(2) 真の乱数(物理乱数源)、(3) 1 度きりの使い切り 。1 つでも欠けると完全秘匿性は失われる。擬似乱数は seed から決定的に生成されるので、結局は seed の長さが実質鍵長になり OTP にならない(A・D は誤り)。鍵長を短くすると、シャノンの定理「鍵空間 ≥ 平文空間」 を満たさず完全秘匿性が崩れる(C は誤り)。
問3. 同じ鍵 K で 2 つの平文 P1, P2 を OTP 暗号化したとき、two-time pad 攻撃 で攻撃者が直接得られるものはどれか。
次の選択肢から最も適切なものを選択してください。
A. 鍵 K そのもの
B. P1 と P2 を個別に
C. 何も得られない(OTPは安全)
D. P1 ⊕ P2(2つの平文の XOR)
正解:D
C1 ⊕ C2 = (P1 ⊕ K) ⊕ (P2 ⊕ K) = P1 ⊕ P2(鍵が打ち消し合う)。これだけでも、片方の平文の一部(定型文や予測可能な語句) を推測できれば、もう片方の対応位置が剥き出しになる。鍵そのものは直ちには出ない(A は誤り)。冷戦期の VENONA はこの手で崩された。現代の AES-CTR / GCM の nonce 再利用禁止 もまったく同じ原理。
問4. シャノンの完全秘匿性の定理によると、完全秘匿性を持つ暗号方式が満たさなければならない条件はどれか。
次の選択肢から最も適切なものを選択してください。
A. 鍵空間 ≥ 平文空間(つまり鍵長 ≥ 平文長)
B. 鍵長は最低 128 bit 以上であること
C. ブロック暗号であること
D. 公開鍵暗号と組み合わせること
正解:A
シャノンが 1949 年に証明したのは 「完全秘匿性 ⇒ 鍵空間 ≥ 平文空間」 。これにより、AES-128 のような短い鍵の暗号は 絶対安全(情報理論的安全) ではあり得ず、計算量的安全性で代用するしかない、という現代暗号の構図が決定づけられた。B は AES の話、C・D は無関係の概念。
問5. AES (2001) が DES の後継として選ばれた経緯について、最も適切なものはどれか。
次の選択肢から最も適切なものを選択してください。
A. 米 IBM 社の社内研究で開発され、政府が直接採用した
B. NIST が公開コンペを実施し、世界中から提案された 15 候補から、ベルギー製の Rijndael が 2001 年に FIPS 197 として選定された
C. 量子コンピュータ耐性を証明された唯一のアルゴリズムだったから
D. シャノンの完全秘匿性を満たす唯一のブロック暗号だったから
正解:B
AES は 1997 年に NIST が公募を開始し、3 ラウンドの公開選考を経て 2000 年 10 月にベルギー研究者ライメン&デーマンの Rijndael が選定 、2001 年に FIPS 197 として標準化された。DES の経緯への反省から 公開・国際的な選考プロセス が信頼の根拠とされた。AES は計算量的に安全な共通鍵暗号であり、量子耐性は別問題(C は誤り)、完全秘匿性は満たさない(D は誤り、満たすのは OTP のみ)。