ワンタイムパッド(OTP)とは
ワンタイムパッド(One-Time Pad, OTP)は、
暗号化と復号に同じ長さの乱数列(鍵)を一度だけ使用する
暗号方式です。別名、1回限り
暗号やめくり
暗号とも呼ばれます。この方式の最大の特徴は、正しく運用すれば理論的に解読が不可能であるという点です。
概要
ワンタイムパッドでは、送信するメッセージと同じ長さの完全にランダムな数列(乱数)を鍵として使用します。この乱数列は、メッセージを
暗号化するごとに新しいものを使用し、一度使用した乱数は破棄します。例えば、アルファベットを
暗号化する場合、AからZに1から26の数値を割り当て、乱数表を用いて対応する文字に変換します。この際、
暗号化と復号は単純な計算で可能であり、手作業でも行えます。
この方式の強みは、鍵となる乱数の秘匿性が確保されていれば、換字表やコードブックが公知のものでも
暗号強度を保てるところにあります。理論上、総当たり攻撃をしても、元のメッセージを特定することができないため、解読は不可能とされています。これは、総当たりで生成される多くの文章の中に、元のメッセージ以外にも意味のある文章が含まれてしまうためです。したがって、解読者は、どの文章が実際に送信されたものかを区別することができません。
数学的な証明
情報理論的な安全性の証明は、
クロード・シャノンによって確立されました。
平文をX、
暗号文をCとした場合、条件付き
情報量表現では`H(X|C)=H(X)`となり、条件付き確率表現では`Pr(X|C)=Pr(X)`となります。これは、
暗号文Cを入手しても、
平文Xに関する情報を何も得られないことを意味します。
この理論が成り立つためには、鍵となる乱数列Kが
[独立同分布]である必要があり、XとCが互いに独立である必要があります。
運用上の注意点
ワンタイムパッドは、理論上は完璧な
暗号ですが、実際には運用上のミスによって解読される可能性があります。最も注意すべき点は、乱数表の流出と乱数の使い回しです。例えば、
ベノナプロジェクトでは、ワンタイムパッドの乱数表が複数回使用されたことが原因で、
暗号が解読されました。これは、同じ乱数表を複数回使用すると、
暗号文に規則性が現れてしまい、解読の糸口となってしまうためです。
また、乱数の作成も容易ではありません。規則的な数式で作成すると、その規則性から乱数列が再現される可能性があり、人が無作為に選択しても癖が現れてしまうため、注意が必要です。乱数を作成・配布する労力も大きいため、重要な通信に限定して使用するのが望ましいです。また、乱数の配布や保管の際にも、盗難や盗写、廃棄後の復元にも注意を払う必要があります。
作成配布方法
ワンタイムパッドの作成配布には、いくつかのパターンがあります。
単線型: 一対一で一方的な指令・報告形式で、同じOTPを1冊ずつ配布します。
複線型: 一対一で相互に通信する形式で、異なるOTPを2冊ずつ配布するか、1冊を配布して乱数が重複しないように開始位置を共有します。
放線型: 放送形式で、放送者と各受信者に同じOTPを1冊ずつ配布します。
星型: 複数が相互に通信する形式で、同じOTPを各1冊ずつ配布し、開始位置を共有します。
具体例
アリスがボブに「HELLO」というメッセージを送る場合を考えます。事前に、同じ乱数列が書かれた2冊の帳簿(パッド)が安全な方法で両者に渡されているとします。アリスは帳簿から未使用のページを選び、そのページの乱数列を鍵として使用します。各アルファベットを数値に変換し(A=0, B=1, ..., Z=25)、メッセージと鍵の数値を足し合わせ、26で割った余りを求めます。例えば、鍵が「XM CKL」の場合、次のようになります。
鍵: 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
(mod 26): 4(E) 16(Q) 13(N) 21(V) 25(Z)
このようにして、「EQNVZ」という
暗号文が生成されます。ボブは、同じ帳簿の同じページを使って、
暗号文から鍵の数値を引き、26で割った余りを求めることで、元のメッセージ「HELLO」を復号できます。
使い終わった乱数表は、すぐに破棄することが重要です。また、ソフトウエアで実装する際には、
平文の安全な処理や伝送、真にランダムな鍵の生成、鍵の一度だけの使用などを確実にする必要があります。
日本陸軍のワンタイムパッド
太平洋戦争中、日本陸軍はワンタイムパッドを「無限式乱数」または「特乱」と称して採用しました。この方式は、前線部隊の
暗号が弱いという常識を覆すものでした。乱数は、ハイハット方式やフリーハンド方式で作成されました。作成された乱数はカーボン複写され、盗写対策として黒紙でマスクされました。使用済みのページは焼却処分され、未使用部分は敵に捕獲されても問題ないとされました。
このワンタイムパッドを捕獲した米兵は、「トイレットペーパー」と呼んだそうです。
量子暗号との関係
ワンタイムパッドの最大の弱点は、事前に大量の秘密情報を共有する必要がある点です。もし、通信時に同じだけの
情報量の鍵を安全に送れるのであれば、最初からメッセージ自体を送れば良いことになります。そのため、ワンタイムパッドは、
暗号化するメッセージではなく、鍵を安全に共有するために利用されることが多いです。この鍵配送問題を解決するために、量子
暗号が注目されています。量子
暗号を利用すれば、事前の秘密情報の共有なしに、安全な鍵の交換が可能になると期待されています。
まとめ
ワンタイムパッドは、理論上は完璧な
暗号方式ですが、その運用には細心の注意が必要です。乱数の生成、配布、保管、そして使用後の廃棄まで、すべてが適切に行われなければ、その安全性を保つことはできません。歴史的にも、多くの運用ミスが解読に繋がっていることから、その重要性を改めて認識する必要があります。
参考文献
「座談会 日本陸軍暗号はなぜ破られなかったか」、『歴史と人物』-太平洋戦争シリーズ:日本陸軍かく戦えり、1985年12月
「私も或る日、赤紙一枚で -ある応召
暗号兵の記録-」、太田 俊夫、光人社
関連項目
暗号理論
ベノナ(再利用されたワンタイムパッドを破った例)
ワンタイムパスワード
外部リンク
Collections in Cryptology - One Time Tape Devices