私はまだ情報セキュリティに不慣れですが、 ワンタイムパッド について少し読んだことがあります。一番気になるのは、壊れないということです。この暗号化の方法は、大規模なインターネットWebアプリケーションに組み込まれたことがありますか?彼らはどのようにキーを渡しますか?
ワンタイムパッドの問題は、暗号化されるデータと同じ長さ(またはそれ以上)でなければならず、決して再利用してはならないということです。
あなたが示すように、how would they send the key?
、OTPは安全な方法で送信する必要があります...ただし、これは通常ユーザーに委ねられている問題であり、一般的にOTPが役に立たない理由です。
大きなOTPを安全に送信できる場合は、暗号化したいものをその安全なチャネルを介して受信者に直接送信するだけでよいと考えるかもしれません。
ただし、OTPの利点は、時間をかけて秘密を移動することです。安全なチャネルがある場合今(対面式の会議など)は、OTPを交換できます。後で機密を保管しています。後で安全なチャネルがない場合は、パッドの一部を使い切ってメッセージを秘密にすることができます。
OTPに対する改善点は、小さなシード(キー)を作成し、PRNG)と呼ばれるエキスパンダーを使用して、そのキーを本質的にストリーム暗号であるものに展開することです。この方法で送信するのは、少量のデータを安全に保護し、その拡張キーで大量のデータを暗号化できます。これは「キーストレッチ」と呼ばれます。
彼らはどのように鍵を渡しますか?
これは、OTPがどこから来たのか、そして実際にOTPがどのようにその名前を付けられたのかという根本に到達します。
これは、戦時中の船または他の同様のエージェントとの通信用です[*]。船が出港するとき、彼らはランダムなデータのパッドで出発します。無線で暗号化された通信を受信すると、ランダムパッドから示されたシートを使用してそれをデコードし、そのシートを破棄します。
それでは、送信の機密性のレベルはどのくらいですか?パッドが正しく使用および実装されている場合、messageの機密性はパッド。無線通信の秘密とは関係ありません。代わりに、復号化パッドの処理と保存にどの程度注意を払ったかによって、メッセージの脆弱性が決まります。彼らは効果的にOTP技術を使用して、ある時点で配信されたオブジェクトの機密性のレベルをに付与しています。メッセージは後で配信されます。
それがテクニックの(only)の使用法と目的です。今日一般的な暗号化にOTPが使用されているのを見た場合、ユーザーはほぼ確実に自分のしていることを理解していません。この手法は一般的な電子通信に正しく組み込むことはできませんため、Webアプリケーションなどにはまったく適していません。
[*]これが実際に岸から船への通信に使用されたかどうかはわかりませんが、エージェントが一定期間基地を離れるという概念は、「船」のメタファーに最もよく適合します。多くの場合、OTPはスパイによって使用されました。
本当に「インターネット」ではありませんが、ワンタイムパッドは Red Phone (西洋の偏った名前。モスクワでどのように呼ばれたかはわかりません)に使用されたと記載されています。パッドは毎週飛行機で送られる磁気テープで交換されました。現在のシステムでも同様の暗号化方式が使用されている可能性があります。
これは理にかなっています:ワンタイムパッドは送信されるデータと同じ大きさのキーを必要としますが、それでも時間ベースの利点が得られます:キーを事前に交換でき、一括で安全な転送が可能です。そして、時間が重要な場合にそれらを使用します(たとえば、ICBMを起動する10分後ではなく、10分前に起動します)。
PidginインスタントメッセンジャーPidgin-paranoia と呼ばれる、回線を介して送信されるメッセージのOTP暗号化を実装するプラグインがあります。したがって、そこには少なくとも1つのOTP暗号システムがあります。
ただし、FOSDEM 2014での SE OTR のプレゼンテーションによると、Pidginは、監査が不十分なCコードが300,000行以上あり、その多くがバイナリデータの解析を扱っているため、安全なソフトウェアではありません。それはかなり自明に利用できるはずであり、一度利用されると、攻撃者は単純に平文を吸い出す可能性があります。
セキュリティは次のPidgin 3.0で改善しているようですが、OTPを使用するのに十分な偏執狂の場合は、Pidgin(またはそのための汎用オペレーティングシステム)を使用しないでください。
また、PidginのOTPは [〜#〜] otr [〜#〜] と呼ばれる優れたIM暗号システムが存在するため、広く使用されていません。
おそらくそうではない。クロードシャノンは、ワンタイムパッドに「完全な秘密」があり、ブルートフォース攻撃で破壊できないことを有名に証明しました。
しかし、実際には完全な秘密を必要としないことが判明しているため、誰もインターネットでそれを使用しません。使用する暗号化に2000万年かかる場合は、私が使用している暗号化をブルートフォースで強制できれば問題ありません。
また、代替の暗号化スキームには、ワンタイムパッドよりも大きな利点があります。キーをはるかに小さくできるため、保護と交換がはるかに簡単です。
例えば。フィンランドのポホラ銀行では、ワンタイムパッドを使用しています。普通郵便で最初のメールを受け取り、銀行に行ったときに新しいメールを受け取りました。 1つのリストには350のエントリがあり、サインアップするためのリストと、請求書の支払いを受け入れるためのリストが必要です。金額が多い場合(数千ユーロ)、銀行はテキストメッセージとして、選択した1回限りの番号の情報を送信します。少なくとも番号がどのように作成されるのかわからない限り、非常に安全で便利です。折りたたまれたリストは、私の財布のクレジットカードとまったく同じサイズです。
WikiPediaの記事 は、OTPの実用的な弱点についてかなりよく説明しており、なぜ現代のコンピューティングでは使用されていないのですか。
それに加えて、現代のネットワークでも送信が完全ではなく、ビットが反転する可能性があるため、メッセージがチェックされ(元のメッセージのハッシュを含めることにより)、メッセージが完全に配信されたことを確認できます。これがないと、受信したメッセージが実際にワイヤを介して実際に作成され、有効なメッセージであることを検証する方法はありません。これにより、ブルートフォースを実行できるようになるため(ハッシュを元のハッシュと照合することでブルートフォースの成功が評価されるため)、完全な機密性は失われます。
たとえば、「暗号解読の試み」セクションの記事の例を見てみましょう。これは、「LATER」がブルートフォースされた潜在的なキー「TQURI」の元のメッセージであるかどうかを攻撃者が知ることができないことを示しています。
送信の検証(別名、復号化の検証)ハッシュ関数をH = Sum(characters) Mod Count(characters)
として定義します。これは、メッセージのすべての文字を合計してから、文字数によるモジュロ除算を行います。
このようなハッシュ関数を使用すると、元のメッセージHELLO
にハッシュコード(7 + 4 + 11 + 11 + 14) % 5 = 2
がタグ付けされます。次に、メッセージの受信者は、復号化されたメッセージを受け取り、受信したデータに対してハッシュを再計算し、結果が2
であることを検証します。
潜在的なブルートフォースキーTQURI
を評価すると、復号化されたテキストはLATER
になります。メッセージを検証するためのハッシュコードがないと、インターセプターはキーTQURI
が実際に機能したかどうかを知る方法がありません(完全なセキュリティ)。ハッシュキーを使用すると、インターセプターは(11 + 0 + 19 + 4 + 17) % 5 = 1
であるLATER
のハッシュキーを計算して検証できるようになりました。計算されたハッシュコード1
は元のメッセージのハッシュコード2
と一致しないため、インターセプターは元のメッセージがLATER
ではなく、キーTQURI
が有効なキーではないことを認識します、したがって、キーが一致するハッシュコードを生成するまでブルートフォースキーの列挙とブルートフォースを続けます(ブルートフォース機能により完全なセキュリティではありません)。
ワンタイムパッドは、すでに説明した理由により、ほとんど使用されていません。指摘されているように、完全にセキュリティが確保されています(真にランダムなソースから生成されたと想定)。「パスワード」はメッセージと同じ長さなので、「完全にランダム」からの統計的な逸脱はありません。パスワード。
最新の暗号化アルゴリズムは、いわゆるkey schedule
を使用して、ワンタイムパッドを近似しようとします。キースケジュールは、必要に応じて「パッド」を生成するために使用されます。ただし、完全ではないため、特定のサイズを超えるメッセージを暗号化することはお勧めできません。たとえば、AES-128は、サイズが1 TBを超える「メッセージ」での使用は推奨されません。