データの復号化に成功したかどうかはわからないため、何かを1回パッドするのはとても素晴らしいといつも耳にします。 XOR任意のビットを他のビットとまったく同じにすることができ、正しいビットを使用したという事実に本質的に「警告」されることはありませんが、これはそうではありません。他の暗号化アルゴリズム/概念に当てはまりますか?
たとえば、SSL/TLSで対称的に暗号化されたデータをブルートフォースにしようとした場合(ワンタイムパッドではありません)、ブルートフォース攻撃が実際に関連する結果を見つけたかどうかは、それらの結果をチェックしない限りわかりません。探していたもの(メタデータ、有効なPDF、有効なWordなど)
それで、私が言ったことが本当なら、ワンタイムパッドの利点は何ですか?それは単に使用されるキーの長さですか(データと同じ長さである必要があります)。
情報の冗長性の問題です。
攻撃者は、データに興味があり、したがってコンテキスト情報を持っているため、データの一部を解読しようとしています。たとえば、[〜#〜] https [〜#〜]接続を想定すると、攻撃者は暗号化されるものがHTTPリクエストとHTTP応答。どちらも構文的に正しいHTTPヘッダーが付属しています。ランダムなビットのシーケンスが構文的に正しいことはほとんどありません。概念的に言えば、HTTPリクエストをエンコードするビットのシーケンスはredundantです。つまり、再構築できるため、一部の情報が省略されている可能性があります(例:ヘッダーは単純ですASCIIしたがって、常に0であるため、8ビットごとに冗長になります)。
攻撃者が、たとえば56ビットDESキーに対してブルートフォースを実行しようとした場合、ここではSSLがそのアルゴリズムで保護されているため、ブルートフォースが実際に実行可能であると想定します128ビットのAESキー。これは既存のテクノロジーをはるかに上回っており、質問には意味がありません。2つあります。56 そのようなキー。ただし、可能なすべての復号化キーが、「理にかなっている」(つまり、「構文的に正しいHTTPリクエストである」)クリアテキストを生成するわけではありません。実際、確率は(おそらく)HTTPリクエストのようなものを生成する間違ったキーが存在しないようなものです。言い換えると、復号化の結果が正しい形式のクリアテキストを生成する場合、攻撃者は正しいキーと正しいクリアテキストメッセージの両方を見つけたことを知っています 。
これはワンタイムパッドではそうではありません。ワンタイムパッドを使用すると、構文的に正しいすべてのクリアテキストが、同じ確率で可能です。意味のあるすべてのクリアテキストが可能であるため、攻撃者は「意味のある」潜在的なクリアテキストを除外できません。それを表現する情報理論的な方法は、暗号文が攻撃者にすでに知っている以上の追加情報を与えることはできないということです。要約すると、攻撃者が学べるのは、考えられるクリアテキストは意味のあるクリアテキストであることであり、彼はすでにそれを知っていました。
ワンタイムパッドは 情報理論的セキュリティ を提供します。これは本質的に、たとえ敵が無制限の計算能力を持っていても、ワンタイムパッドを壊すことができないことを意味します。これは、真にランダムなキーに対してデータをXORすると、ビットを反転するだけなので、出力もランダムになることが保証されるためです。
「ワンタイムパッド」は特定のプロトコルではなく、実際に使用される暗号の要素であることを理解することは非常に重要です。たとえば、RC4を使用するSSLまたはTLSは、効果的にデジタルワンタイムパッドを実装していますが、DESまたはAESを使用するSSLまたはTLSはそれを使用していません。
One Time Padは、メッセージの暗号化と復号化に使用できるコードパッド...実際の紙の物...を印刷する、昔ながらの暗号技術を指します。パッドは事実上、メッセージの暗号化に使用されるキーでした。
ワンタイムパッドの強さは、メッセージが一般的に短く、キーが1回だけ使用されるという事実に由来します。これにより、暗号文に対する統計的攻撃が困難になります。ただし、キーを再利用すると、即座にデータの全体的なセキュリティが危険にさらされ、統計的解読がより実行可能になります。
ただし、他にも重要な機能があります。ワンタイムパッドはキーを1回だけ使用するため、Perfect Forward Secrecyを無料で入手できることも意味します。 PFSとは、選択したプレーンテキスト、既知のプレーンテキスト、またはその他の暗号解析を通じて攻撃者がキーを「破壊」すると、そのキーを破壊しても、以前のキーや将来のキーに関する情報がまったく提供されないことを意味します。現在のキーではありません。
実際には、デジタルワンタイムパッドは、すべてのメッセージの後でキーを変更しません。もしそうなら、それは素晴らしいことですが、それは単に実用的ではありません。この欠点(キーの再利用)を補うために、実装には通常2つのことが含まれます。 1つ目は、送信されたデータの時間または量に基づいて、キーの固定部分を定期的に置き換えるプロトコルまたは方法です。 2つ目は、各メッセージを暗号化する前にキーに追加される、ある種のランダムな「初期化ベクトル」(大きなソルトと考える)を使用することです。キー全体を変更するのではなく、固定(通常、キーの比較的大きな部分)は一定期間固定されたままですが、IV(塩)はメッセージごとに変更されます。ソルトは変化しているため、通信パートナーに通信する必要があり、通常は平文で送信されるか、事実上平文で送信されます。
デジタルワンタイムパッドのすばらしい例はRC-4です。貧弱な実装の例(もちろん、よく知られている)は、24ビットの初期化ベクトルを使用するWEPです。これを「修正」する最初の試みであるWPAは、キーの固定部分を大きくし、TKIPを追加して、RC-4とIVを使用しながらランダムなキー(固定部分)に定期的に変更しました。
Terryが言うように、主な利点は、情報理論上のセキュリティを提供することです。しかし、あなたがあなたの質問の残りの部分で言及したいくつかの点について:
長さ自体は利点ではありませんが、推測されたキーから何を導出したかを証明できないという事実は、実際に復号化されたデータが無限に安全であることを意味します-最大の欠点の犠牲にならない限り、それは使用されなければなりません一度。 OTPを2回使用するとどうなるかを説明するスクリプトを書きました。 https://github.com/deed02392/crib-dragger
暗号化の実装では、何かを正常に解読した手がかりはないと考えているようです。これは誤りです。
整合性の目的で、通常、何かを正常に復号化したことを示す何らかの兆候があります。たとえば、TrueCryptは(暗号化されたデータブロック内で)正しく復号化されたデータのハッシュを使用します。鍵と暗号化アルゴリズムは非常に強力であるため、それがもたらす整合性の利点と比較して重要ではないと想定されています。
ワンタイムパッドの利点は、各バイト(8ビットバイトを想定)がキーの他のバイトに接続されないことです。キーの1バイトを検出しても、キーの他のバイトに関する情報はまったくありません。
少し単純化して、可能な数学的攻撃やタイミング攻撃のようなことを忘れますが、ブロック暗号をOne Time Pad(OTP)と比較してみましょう。
強引な:
16バイトの暗号化されたペイロードについて話し、8バイトのキーを持つブロック暗号を使用する場合、キーのすべての可能性をブルートフォースで強制し、各試行でペイロードが「理にかなっている」かどうかを確認する必要があります。それが理にかなっている場合は、キーが見つかったと想定するか、もう一度意味のあるものが得られるまで試行を続けることができます。次に、すべての復号化されたペイロードを確認し、それらの1つが本物であることがわかります。
ワンタイムパッド:
OTPを使用すると、各文字を総当たりにすることができます。これは、8ビット文字で256回しか試行できないため簡単です。最終的には、暗号化されたペイロードに期待する有効なヘッダーなどを提供する一連の組み合わせが見つかります。しかし、発見したこれらの文字のいずれも、残りのペイロードに関する情報をまったく提供しません。最初の文字に基づいて、残りのペイロードに関する情報を確認することはできません。キーを推測するためには、基本的にペイロードに何を期待するかを知る必要があります。それでも、そのペイロードを作成できるキーのサブセットしか推測できませんでした。