ワンタイムパッド
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ワンタイムパッド (one time pad, OTP) とは、乱数鍵を1回だけ使う暗号の運用法である。1回限り暗号、めくり暗号とも呼ばれ、情報理論の考案者であるクロード・シャノンが解読不可能であることを数学的に証明した。[1]
目次 |
[編集] 概要
- 通信量と同じ長さの乱数を使用し、日めくりのように1回使った乱数表は捨てる。例えば1~26の範囲をとる乱数の場合、1つの乱数でアルファベット(A-Z)の1文字を暗号化できる。
- 乱数の秘匿だけで暗号強度を保てるので暗号化/復号がシンプルで、手作業も処理できる。換字表やコードブックは公知のものでもよいという利点がある。
- 理論的には解読不可能だが、運用の誤りで解読可能な場合がある。
- 通信量と同じ長さの乱数を作成、配布するのは労力が掛かるので、それに見合う重要通信が望ましい。例えば米ソ・ホットライン(テレタイプ)やスパイ通信である。
- 乱数の作成は想像よりも困難である。数式を使って規則的に作ると、乱数列から元の式が再現される可能性がある。人が無作為に選択してもその癖が出る。
- 乱数の配布・保管にも注意が必要である。配布、保存時に裏切り、窃盗、盗写が出来る。また、廃棄後のゴミから復元・再生される事がある。
- バーナム暗号と混同される事があるが、ワンタイムパッドを利用しないバーナム暗号もある。
[編集] 例
いま、アリスがボブに "HELLO" というメッセージを送りたいとする。ランダムなアルファベット列が書かれた紙からなる全く同一のパッドが事前に何らかの手段で2つ用意されており、安全な方法で2人に渡されていると仮定する。アリスは、適切な方法でパッドから未使用のページを選ぶ。この方法は事前に決めておく。例えば、「勤労感謝の日には12枚目を使う」とか、「次のメッセージには次のページを使う」などである。選んだページに書かれたアルファベット列が、暗号化の鍵となる。パッドとメッセージの各文字を、事前に決めておいた方法で組み合わせていく。一般的には、"A"は0、"B"は1、……"Z"は25のように、各文字に数値を割り当てるのが普通である(必ずしもこの方法である必要はない)。この例では、モジュロ加算を使用して鍵とメッセージを組み合わせる。対応する鍵とメッセージの数値を足し合わせ、モジュロ26をとる。もし鍵が
X M C K L
で始まっていて、メッセージが "HELLO" だとすると、計算は次のようになる。
23 (X) 12 (M) 2 (C) 10 (K) 11 (L) 鍵 + 7 (H) 4 (E) 11 (L) 11 (L) 14 (O) メッセージ = 30 16 13 21 25 鍵 + メッセージ = 4 (E) 16 (Q) 13 (N) 21 (V) 25 (Z) 鍵 + メッセージ (mod 26)
数値が25を超えた場合は、モジュロ演算の方法で、その数字を26で割った余りを使う点に注意。
これにより、ボブに送る暗号文は "EQNVZ" となる。ボブはパッドから対応するページを選び、同じ手順を逆に実行して平文を得る。今度は鍵の数値を暗号文から引き去る点が暗号化時と異なるが、モジュロ演算を使うのは同じである。
4 (E) 16 (Q) 13 (N) 21 (V) 25 (Z) 暗号文 - 23 (X) 12 (M) 2 (C) 10 (K) 11 (L) 鍵 = -19 4 11 11 14 暗号文 - 鍵 = 7 (H) 4 (E) 11 (L) 11 (L) 14 (O) 暗号文 - 鍵 (mod 26)
暗号化のときとは逆に、もし数値が負になれば、26を加算して正の数にする。
これでボブは "HELLO" というアリスのメッセージを復元できる。アリスとボブは、2人とも使い終わった暗号鍵の紙をすぐに破棄し、再使用したり暗号解読に使われたりするのを防ぐ。KGBは、エージェントに渡すワンタイムパッドに、よくフラッシュペーパーでできた小さな紙を使った。フラッシュペーパーは、化学合成されたニトロセルロースでできており、火をつけると一瞬で燃え上がり灰を残さない。
スパイ活動で使う古典的なワンタイムパッド(隠しやすくした小さな紙のパッドと尖った鉛筆、それに暗算を必要とする)は、ソフトウエアプログラムとして実装することも可能で、データファイル(平文)と暗号鍵(ランダムな数列)を入力とし、暗号化されたデータファイルを出力する。この場合、平文と鍵を組み合わせるのには排他的論理和(XOR)がよく使われる。XORはマシンに特化した機械命令で実行され、通常は非常に高速なためである。しかしながら、暗号鍵が真にランダムで、一度だけ使用され、決して敵に知られず、また使用後に確実に破棄されることなどを確実にするのは難しい。特に、平文の安全な処理や伝送、真にランダムな鍵、その鍵の一度だけの使用といった、ソフトウエアによるワンタイムパッド実装の補助的な部分には多くの困難を伴う。
[編集] 日本陸軍のワンタイムパッド
- 太平洋戦争中に陸軍はワンタイムパッドを無限式乱数、特乱と称して採用した。
- 第一線部隊で全面採用された結果、「第一線部隊の暗号は弱い」との常識を覆した。
- 乱数は前線の暗号兵が袋に入れた乱数カードを引き出すハイハット方式にて逐次作成するのを原則としたが、実際には暗号兵が思いついた数字を書き出していく「フリーハンド」方式も併用された。
- 暗号兵が乱数を作成し、カーボン複写紙で2部作成した。
- 陸軍の通信体系では通信相手が限定されているのでワンタイムパッドの印刷、配布も実現できた。
- 盗写対策として、各頁を黒紙と綴じ糸でマスクした。
- 使用済みのワンタイムパッド(頁)は焼却処分した。なお未使用部分は敵に捕獲されても問題なしとされ玉砕時にも処分されなかった。
- ワンタイムパッドを捕獲した米兵からは俗に「トイレットペーパー」と呼ばれた(価値が無いから、一回使用したら捨てるから)
[編集] 参考文献
- 「座談会 日本陸軍暗号はなぜ破られなかったか」、歴史と人物-太平洋戦争シリーズ:日本陸軍かく戦えり、1985年12月
- 「私も或る日、赤紙一枚で -ある応召暗号兵の記録-」、太田 俊夫、光人社
[編集] 脚注
- ↑ Shannon, Claude (1949). "Communication Theory of Secrecy Systems"