ワンタイムパッド:XORで完全秘匿

平文を鍵と XOR するだけで完全秘匿。でも鍵を使い回した瞬間に秘匿は崩れる ── その理由を「動かして」確かめます。

操作モード
72
201
#23
ビット格子のマスをクリックすると、その平文ビットを 0↔1 反転できます。
平文 P₁
鍵 K
暗号文 C₁ = P₁⊕K
漏れ C₁⊕C₂ = P₁⊕P₂
ビットごとの XOR(クリックで反転)
攻撃者の視点:暗号文だけ見てもどの平文か決められない
XOR(排他的論理和 ⊕)は「2つのビットが違えば 1、同じなら 0」を返す演算です。 平文 P と、平文と同じ長さの真の乱数の鍵 K を 1 ビットずつ XOR すると暗号文 C = P ⊕ K ができます。
受信者は同じ鍵で C ⊕ K = P と元に戻せます(XOR は自分自身で打ち消す)。 鍵が完全な乱数で一度きりなら、暗号文からは平文について何も分かりません ── これが クロード・シャノンが証明した完全秘匿(perfect secrecy)です。
ところが同じ鍵を 2 つの平文に使い回すと、C₁ ⊕ C₂ = P₁ ⊕ P₂ となって鍵が消え、平文どうしの差が漏れてしまいます。 「ワンタイム(1回限り)」が名前に入っている理由を、右の図で体感しましょう。

いま何が起きている?

ここがポイント