ワンタイムパッドとは?暗号化とログインOTPの違い
ワンタイムパッドのXOR演算と新しい乱数鍵、完全秘匿性の意味、鍵の再利用が危険な理由、ログインOTPとの違いを解説します。

ワンタイムパッド(one-time pad)は、メッセージと同じ長さの秘密の乱数鍵を使って暗号化する方式です。暗号化のたびに未使用のパッドを使います。厳密な条件を満たせば、攻撃者は暗号文を観測してもメッセージについて追加の情報を得られません。
OTPという略語は、ログイン用のワンタイムパスワードや認証コードを指すこともあります。暗号化用のワンタイムパッド、ログインOTP、一度だけ開けるリンクは、それぞれ異なる問題を解決します。
ワンタイムパッドが成立する条件
二進数で表すnビットのメッセージには、未使用の秘密のパッドがnビット必要です。
- パッドは一様に選びます。どのnビット鍵も同じ確率で選ばれなければなりません。
- メッセージやほかのパッド部分とは独立に生成します。
- 観測者にパッドを知られないようにします。
- パッドの各部分は、一つのメッセージの暗号化にだけ使います。重複する部分を別の暗号化に再利用してはいけません。
これらは、Mike Rosulekによるワンタイムパッドの章で示される安全性の証明の前提です。覚えやすいフレーズや繰り返し使う鍵は、この条件を満たしません。
4ビットのXORの例
⊕と書くXORは、二つのビットが同じなら0、異なれば1になります。暗号化ではメッセージとパッドを組み合わせ、復号では同じパッドをもう一度適用します。
| 手順 | 演算 | 結果 |
|---|---|---|
| 暗号化 | 1010 ⊕ 0110 |
1100 |
| 復号 | 1100 ⊕ 0110 |
1010 |
この例では、メッセージが1010、パッドが0110、暗号文が1100です。同じパッドでXORを繰り返すと、パッドの効果が打ち消されます。これは数学的な仕組みの例であり、実際の通信には安全な鍵管理と認証も必要です。
完全秘匿性の正確な意味
Claude Shannonの原論文の第10節では、完全秘匿性とは、暗号文を知っても観測者が各メッセージに割り当てる確率が変わらないことを意味します。
すべてのメッセージが同じ確率である必要はありません。同じ長さのあるメッセージが事前に有力だったなら、暗号文を見た後も有力であり得ます。暗号文が新たな証拠を与えないという意味です。また、通常の固定長モデルは、通信時刻、通信の当事者、メッセージの長さまでは隠しません。
パッドの再利用で保証が崩れる理由
同じ長さの二つのメッセージに同じパッドKを使うと、C1 = M1 ⊕ K、C2 = M2 ⊕ Kになります。二つの暗号文を組み合わせるとKが消えます。
C1 ⊕ C2 = M1 ⊕ M2
攻撃者には二つのメッセージの関係が分かります。これだけで両方の全文が自動的に分かるわけではありません。ただし、平文の一部が既知なら、その位置のパッドと、もう一方のメッセージの対応部分が分かります。予測しやすい構造も、推測の検証に役立つ場合があります。
数式だけでは解決しない実用上の制約
双方は十分な量の秘密のパッドを事前に共有している必要があります。保管場所を守り、使用位置を同期し、使った部分を再び適用しないよう管理しなければなりません。送る情報量に応じて配布する鍵の量も増えます。XOR演算自体は、この配布の問題を解決しません。
パッド単体は、完全性も送信者認証も提供しません。暗号文のあるビットを変更すると、復号後の対応するビットも変わりますが、それを知らせる仕組みはありません。機密性だけでは、誰が送ったのか、内容が改ざんされたのかを確認できません。
ワンタイムパッド、ログインOTP、1回限りの閲覧リンクの違い
| 用語 | 目的 | 「ワンタイム」の意味 |
|---|---|---|
| ワンタイムパッド | メッセージ内容の暗号化 | パッドの各部分を一度の暗号化にだけ使う |
| ログインOTP | 認証器を所持していることの認証 | 生成したコードを有効期間内に一度だけ受け付ける |
| 1回限りの閲覧リンク | サービス経由のアクセス制限 | パスワードによる表示に一度成功すると、新たな表示を止める |
NISTの認証器ガイダンスの3.1.4節では、認証器の秘密情報と時刻またはカウンターから生成するログインOTPを説明しています。これは認証のためのコードであり、メッセージを暗号化するパッドではありません。
LOCK.PUBとの関係
LOCK.PUBのOne-Time Secretは、アクセスのルールを適用するツールです。ワンタイムパッドの実装ではなく、サーバーがメモの平文を処理するため、エンドツーエンド暗号化やゼロ知識方式でもありません。正しいパスワードで一度表示すると新たな表示を制限しますが、保存内容を直ちに削除したり、ダウンロード、スクリーンショットなどのコピーを回収したりするものではありません。
実際の共有方法は秘密メモのガイドをご覧ください。テキスト暗号化ガイドでは、テキストを保護するときの確認事項を説明しています。
よくある質問
ワンタイムパッドは絶対に解読できませんか?
理想的な方式は、その前提条件の下で完全秘匿性を提供します。パッドの漏えい、使用部分の再利用、端末の侵害、改ざんについては別に考える必要があります。
短いシードから本物のパッドを作れますか?
安全な擬似乱数生成器は、短いシードを長いマスクへ伸ばし、一定の仮定の下で計算量的な安全性を提供できます。ただし、その出力はすべての長いビット列に一様に分布しないため、ワンタイムパッドの完全秘匿性は得られません。
「ワンタイム」ならメッセージが消えますか?
パッドでは鍵の使用を、リンクではアクセスを表します。どちらの言葉も、それだけで削除を証明したり、すでに作られたコピーを消したりはしません。
メモを作成
メモを作成キーワード
こちらもおすすめ
家族の緊急時書類チェックリスト:無料の印刷用PDF
家族の連絡先と重要書類の保管場所を整理できる無料チェックリスト。印刷用PDF、コピーできる記入用ひな形、見直しの手順を紹介します。
GoogleドライブをGoogleアカウントなしで共有するには?
ログイン不要の閲覧リンクと、メールのPINで確認するWorkspaceのビジター共有を比較。共有手順、ログイン要求の原因、パスワードリンクの限界を解説します。
カカオトークの匿名質問リンクを作る方法:グループとプロフィールで共有
パスワード付き質問ボードを作り、カカオトークで共有する手順を紹介。公開用リンク、質問の閲覧範囲、匿名性の限界も確認できます。