web-dev-qa-db-ja.com

DESを総当たりにする場合、平文について何か知っていることは役立ちますか?

データ暗号化標準(Wikipedia)

ブルートフォースでは、チェックできるキーが2 ^ 56個あることを知っています(56ビット、それぞれ1または0)。しかし、メッセージ自体が文字(a-z、A-Z)のみで構成されていることを知っているとしましょう。

プレーンテキストについて(文字だけの制限など)知っていると、暗号化が簡単に破られますか?

10
AStanton

標準のブルートフォース検索では、少なくとも1つのプレーンテキストと、特定のキーを使用したそれに関連する暗号化がすでにわかっていることが前提となっています。したがって、プレーンテキストを制限されたセットのものにすることは、他に利用している弱点がない限り、役に立ちません。

総当たり攻撃が実際に(理論的にも)成功するためには、攻撃者は平文に関する「何か」を知って、正しい鍵を見つけたかどうかを知る必要があります。別の言い方をすれば、攻撃者がプレーンテキストについてランダムなバイトの束であることを知っている場合、試行されたキーごとに、それはまさにランダムに見えるバイトの束です。

一方、攻撃者がシステムを攻撃する価値があると判断した場合(256 徹底的な検索は、実行可能ではありますが、非常に費用がかかります)、その場合、彼は、何を見つけるかについて事前に知識を持っている必要があります。これは、標準形式のようなもの(たとえば、データはXMLで、XMLヘッダーで始まる、またはデータはgzipで圧縮されているため、gzipヘッダーで始まる)、または次のような基本情報です「平文は「理にかなっている」テキストです」。

ASCIIエンコードの英語テキストは、一部のバイト値、つまり32〜126(両端を含む)のバイト値のみを使用し、場合によっては9(水平の集計)、10および13(それぞれLFおよびCR、末尾)も使用します-of-lines)、12(垂直の集計)、そしておそらく26(DOS/Windowsシステムのファイルの終わり)。つまり、これは255の可能なバイト値のうち100です。間違ったキーを使用した単一のDESブロック(8バイト)の復号化には、約(100/255)の確率があります。8 この「もっともらしいキャラクター」のセットだけで構成されること。攻撃者が持っているので256 試行するキー、彼はnブロックを復号化して、間違ったキーを受け入れる確率が2を超えないようにする必要があります-56。これはn = 6((100/255)であるため)8 * 6 ≤2-56)。これは、攻撃者が潜在的なキーごとに6ブロックを復号化し、取得した文字を調べることによって誤ったキーを除外する、徹底的な検索攻撃につながります。

さて、「8g。; = 7Zf」は正確に「意味のあるテキスト」ではありません。したがって、攻撃者は「プレーンテキストは印刷可能なASCII文字のみで構成されている」以上のことを実際に知っています。彼は誤った解読を除外して、印刷可能な文字のみを生成し、もっともらしいテキストの抜粋は生成しませんでした。彼はまた、たとえば、1,000の「可能なキー」を取得し(それぞれがコンピューターの観点からは、テキスト付きの感覚のようなものを生成します)、手動で仕事を終えることができます(人間の脳は非常に優れています)意味不明な文字のリストの中から実際のテキストを見つけます)。したがって、攻撃者は、たとえば、2つまたは3つのブロックを使用しても、物事を完了させることができます。

コンピュータ科学ではなく心理学の領域にあるものを攻撃者が「推測」するものに依存するため、攻撃者が誤った復号化をフィルタリングするのにどれほど効率的になるかは定量化非常に困難です。したがって、学者は攻撃者が既知の平文ブロックを持っていると考える「安全な慣習」を使用します。彼は対応する暗号文も持つ8バイトの平文を100%確実に知っています。これは実際の攻撃状況では当てはまらないかもしれませんが、実際に予測することはできません。

3
Thomas Pornin

それは、各キーをチェックする方法に依存します。 0から開始して増分を続ける場合は、文字セットに変換して、その文字が有効かどうかを確認する必要があります。または、別の方法で作業することもできます。最初はキャラクターから始め、セット内のキャラクターだけをインクリメントします。

ビットではなく文字単位で増分すると、ワーキングセットがはるかに小さくなるため、すべての組み合わせを実行するのにかかる時間が短くなると思います。

2
Steve

可能な解決策が制限されたセットに属していることを知ることは、復号化プロセスを早期に終了できるので役立ちます。
あなたのケースでは、限られた量の暗号化/暗号文(たとえば最初の8/16/...バイト)だけを復号化し、後で復号化/プレーンテキストのみを保存することができます。文字(az、AZ)のみで構成されています。次に、保存されたソリューションスペースが大きすぎる場合は、復号化する量を増やすか、単にすべてのソリューションを調べて、どちらが適切かを判断できます。

短い答えは "理論的にはい"です。

しかし:それがDESそれ自身の足でつまずくための主な理由ではありません。

もう少し情報を与えましょう...

現在、DESは、ほとんどのアプリケーションにとって安全ではないと考えられています。これは主に、56ビットのキーサイズが小さすぎるために発生します。1999年1月に、 「Electronic Frontier Foundation」と「distributed.net」が協力してDESキーを22時間15分で正常に解読しました...公開。

小さい鍵サイズは、DESが国立標準技術研究所によって標準として廃止された理由の1つでした。

ただし、理論的な攻撃はありますが、アルゴリズムはトリプルDESの形で実質的に安全であると考えられています。近年では、暗号はAdvanced Encryption Standard(AES)に取って代わられました。

私の2セント:「DESを回避できる場合は、DESを回避してください!」

0
user6373