まず、これはハッシュされたパスワードを解読することではありません。ブルートフォース攻撃や辞書攻撃では、侵入したときにパスワードがクラックされたことを知っています。
しかし、攻撃者が強引にメッセージを強奪しようとしている場合、たとえば、政府が外国の大使館に送信したメッセージを考えてみましょう。クラッカーは、最終的に平文を見つけたとどのように判断しますか?
編集:
結局のところ、私の元の質問はひどく書かれていました。私はパスワードのクラックについて尋ねているのではないことを述べ、それから、少なくとも部分的に、それが私が求めているものであるかのように質問に言葉をかけました。 1つには、MD5について説明しました。MD5はHASHINGアルゴリズムであり、復号化のための暗号化に使用されるアルゴリズムではありません。 @ lucas-kauffmanは、私が尋ねているように見えるものに良い答えを出しましたが、それでも有益でした。
混乱を避けるために、これを別の方法でキャストしてみましょう。
公開鍵暗号を使用して作成された暗号文があり、攻撃者がブルートフォースメソッドを使用してそれを攻撃するリソースを持っていると仮定すると、クラッキングプログラムは最終的に平文を取得したかどうかをどのように判断しますか?これはパスワードクラッキングではなく、結果は明らかです(攻撃対象に侵入します)。メッセージの暗号文が "JPOAISUDF89L; JKQWERTYQIOP34JUU890JEROTUQ3-49TJ"(<==入力したいくつかのランダムな文字だけでは「破壊」しようとしない)のようなものだったとします。クラッキングプログラムは、そもそも何を探しているのかわからなかったとして、平文を見つけたとどのように判断するのでしょうか。
私は人間が試用復号化を見ることができることを知っており(そのようなものが存在すると想定)、「真夜中の攻撃」が実際のメッセージを表しているのを知っています。関与すること(プロセスが毎秒数百回の試行を行うことを前提とします)。それで、クラッカープログラムはおそらくそれがペイダート、または少なくとも潜在的なペイダートを打ったことを知る何らかの方法を持っている必要がありますか?これは、送信者がメッセージを2回または3回暗号化した場合は特に危険です(トリプルDES誰ですか?)。
安全な方法で暗号化された特定のメッセージが、特に攻撃者が正確に何を探しているのか知らなかった場合、限られた時間で解読される可能性が非常に低いと私は思います。
既知の平文がある場合は、すべての鍵を試し、既知の平文に復号化する鍵を見つけることができます。これは決して起こらないと思われるかもしれませんが、プロトコル構造のため、実際にはかなり一般的です。
または、平文が特定の構造(たとえば、英語のテキスト)であることがわかっている場合は、トライアル復号化を実行して、実用的な英語のテキストのように見えるものだけを保持できます。たとえば、すべての文字の上位ビットがオフになっていることを確認したり、文字またはバイグラムの頻度を使用したりできます。
これらの理由から、これが攻撃者にとって重大な障壁であると考えるのは間違いです。システムのセキュリティが、攻撃者が既知の平文を取得できない、または有効な復号化を認識できないという仮定に依存している場合、システムの設計に問題があります。あなたが思っているほど安全です。
詳細については、このテーマに関する研究論文をご覧ください。
デビッドワグナーとスティーブンM.ベロビン。 プログラム可能なプレーンテキスト認識機能 。 1994。
論文の引用は次のとおりです。「ほとんどのタイプのテキストは効率的に攻撃できます。通常[...] 3つの暗号文ブロックを使用すると、90%の確率で復号化キーを見つけることができます。さらに、バイナリ実行可能ファイルもバイナリがコンパイルされたアーキテクチャが攻撃者にわかっている限り、暗号文のみのキー検索マシン。
ほとんどの場合、何が起きるかは、辞書から始まり、そこにあるすべての単語をハッシュすることです。それらはそのハッシュをそのWordにマッピングするので、WordのMD5ハッシュがある場合、データベースでそのハッシュを検索し、対応するWordを受け取ります。結局のところ、パスワードは単なる「テキスト」そのものです。
別のオプションは、文字と数字の可能なすべての組み合わせを調べ、それにハッシュを適用し、そのハッシュをパスワードのハッシュと比較することから始めます。最近のグラフィックスカードは、1秒あたり最大8億回のハッシュを推測できます。ハッシュをデータベースに保存することもあります。これはレインボーテーブルと呼ばれます。
あなたが持つ問題は、長いメッセージのためにそれでも非常に長い時間がかかることです、そしてまた、あなたはハッシュ衝突を得ることができます。しかし、すべてのハッシュ衝突を保持するだけでよく、後でこれらをチェックするだけで済みます。1つの単純なテキストで何百ものハッシュ衝突が発生することはありません。