ワンタイムパッド
ワンタイムパッドとは
ワンタイムパッドとは,秘密鍵の事前共有が必要な共通鍵暗号の一つです.
平文と同じ長さの鍵を用意し,排他的論理和(XOR)をとって暗号化し,暗号文と鍵の排他的論理和をとることで復号します.
太平洋戦争中に日本陸軍でも使われたことのある暗号です.
安全性
ワンタイムパッドは,鍵が真正乱数という前提のもと情報理論的安全性が成り立っています.今世の中で使われている暗号は計算量的安全性で成り立っています.計算困難性で安全の保障をしています.暗号文を鍵を知らない状態では,実時間内で解けないので安全とかいうやつです.裏を返せば,莫大な時間を掛ければ解けるんです.しかし,この情報理論的安全性は,計算で求めることは不可能で,あてずっぽうと同じ確率でしか平文を割り出せないのです.(平文が一意に定まらない)
暗号文から平文を推測できるのか
一言でいうと出来ません.厳密に議論すると長々と確率の計算が出てくるので,省きますが1ビット暗号文Cが0の時,1ビット平文Mが0である条件付き確率は,
\frac{P(C=0 \land M=0)}{P(C = 0)} = P(M=0)
となります.この数式を言い換えると,C=0であることが分かっているときの平文M=0の確率とCがわからない状態のときM=0となる確率と同じということです.つまり,暗号文がわかっていても何の役にも立たないということです.
なぜ使われていないのか?
ここまで,読むと最強なのになんで使われていないのか疑問に思うかもしれません.しかし,このワンタイムパッドは,秘密鍵が長すぎるという欠点を抱えています.平文と同じ長さの秘密鍵が必要なのです.要するに通信において2倍のデータを送る必要があるということです.昨今のデータ通信量を考えればどれだけ安全でも通信が重くて届かないのでは本末転倒なのです.