web-dev-qa-db-ja.com

誰かが暗号化を破った場合、どのようにして彼らが成功したかを知るのでしょうか?

ランダムなビットの束を含むファイルがあり、いくつかの最新のアルゴリズム(Blowfish、AESなど)を使用して暗号化するとします。誰かがファイルをキャプチャしてブルートフォース攻撃を仕掛けた場合、どのようにして彼らが正常に復号化したことを知るのでしょうか?元の入力に意味があるかどうかは明らかですが、この場合、元の入力はランダムなバイトの集まりでした。仮にあったとしても、これがランダムなバイトの正しい束であることをどうやって知るのでしょうか?

34
M. Evans

彼らはしません。あなたが説明した問題は、Wikipediaの記事 nicity Distance でうまく対処されています。その記事は Bruce Schneierによるもの にもリンクしています。

30
PulpSpy

一般的に、人々はランダムなゴミを暗号化しません。彼らがそうしたと仮定すると、 暗号文のみの攻撃 は不可能です。

ただし、一般的な暗号化方式では、メッセージにランダムなデータ( パディングデータメッセージ認証コード など)が追加されることを考慮してください。一部のスキームでは、これらを使用して、推測されたキーが正しいかどうかを確認できます。

12

一般的に、それらは暗号化を破ることはできません(randomfileを暗号化する場合(たとえば、秘密鍵)またはファイルを圧縮する場合でも)、スニファが送信者または受信者システムに他のアクセス権を持っている場合、他のタイプの攻撃を実行して破ることができますランダムファイル暗号化。あなたはそこでもっと読む:

5
Am1rr3zA

平文がランダムである場合、彼らはそれを知りません。ただし、ほとんどのファイルタイプには、何らかの認識可能な構造があります。キーCを使用して、Blob AをアルゴリズムBに渡すと、some出力が生成されます。その出力に構造がある場合は、勝者がいます。

3
bahamat

あなたの質問は私には二重に見えます。まず、優れた暗号化アルゴリズムは、ランダム性と区別がつきません。したがって、誰もあなたのcipherテキストをランダムなデータと区別することすらありません。さらに、誤って復号化された暗号テキストもランダムに見えます。したがって、完全なキー検索で暗号に最初に入力されたランダムデータを見つけることはできません。

第二に、ポイントは通常、ランダムなデータを暗号にフィードしないことです。現在の暗号化規格は、アルゴリズムだけでなく、使用されるデータもカバーしています。通常、人々は常に特定のパディングと特定のメタデータを使用してデータの前後に接尾辞を付けます(暗号化スキームには固定長があります。テキストの長さを何とか指定する必要があります)。この標準ビットを知っていると、明らかに正しいキーと間違ったキーの間の決定が容易になります:)パディングはほとんど実用的な目的に役立ちますが、セキュリティ機能を強化または保証することもできます(教科書RSAに対する選択された平文攻撃を参照)。

2
freddyb

彼らはしません。 TrueCryptはこの事実を利用して、「隠しボリューム」を通じてもっともらしい否認性を提供します。 http://www.truecrypt.org/docs/?s=hidden-volume

2
Rushyo

分野の「プロ」による理論的に無知なアプローチに加えて、質問に対するかなり単純な答えがあります。「ブルートフォースの復号化結果」を分類目的の明白なものと比較することです。

実用的な例を挙げましょう。テキストファイルにはおそらく「ストップワード」が含まれます( http://en.wikipedia.org/wiki/Stop_words )。復号化後に複数のストップワードを見つければ、おそらくいくつかのテキストが正常にデコードされています。

画像や他のほとんどのファイルタイプ(オーディオ、ビデオなど)のようなメディアファイルにはすべて特定のヘッダーがあり、データの種類を簡単に識別できます。類似ヘッダーを検出したためにjpegを復号化したと思いますか?ファイル形式を確認してください。正しいように見えますか?次に、おそらくjpegメディアファイルを正常に復号化しました。

私は例の本を提供することができます...しかし、私はあなたが今までに私が何を意味しているのか知っていますか? ;)

残りは少し「人間による検証」に任されているため、復号化しようとしているものを総当りで強制停止するタイミングを知ることができます。

それは実用的ですか?いいえ。ただし、正しくコーディングすれば実行でき、作業が簡単になります。私はそれを数回見ています。企業環境だけではありません。

0
user6373

ファイルがunicode/ansi/etcの場合、アルゴリズムを作成してファイルの最初の200文字などを解析し、他の文字よりもラテン文字が多いかどうかを確認できます。

単純なオイラープロジェクトの演習でXOR総当たり攻撃を試みたとき、私はかなりイライラしましたが、それは簡単で、一般的な英語の単語を検索する必要がありました。

暗号化ソフトウェアでは、実装が非常に重要で、時にはアルゴリズムよりも重要であるとどこかで読んだことがあります。それを読んでも、疑似ランダムジェネレーターなどの明白な主題について話しているのか、暗号化したファイルの形式を非表示にする方法など、それほど明確ではない詳細について話しているのかと思います。

たとえば、ファイルを暗号化する場合、それがPNGファイルまたはGIFファイルの場合は、それらのファイル形式に含まれるマジックナンバー/文字列を必ず削除してください。テキストファイルの場合は、ASCIIテーブル:独自の文字テーブルを使用します(たとえば、すべてのラテン文字を0に、数字を245-255に、など)置換やrot13なども可能です。

AESやBlowfish/TwoFishなどのアルゴリズムは、「数学的に」安全です。攻撃がないことが証明されているため、BRUTEFORCE以外は十分に効率的であることがテストされています。実際のキーを見つけることによってのみテキストを解読できます。

ただし、これらのアルゴリズムは理論的には効率的であるだけなので、ファイルサイズ、圧縮の使用、テキストエンコーディングなど、他の実践要素を考慮して実装する必要があります。

たとえば、暗号化されたファイルの横にファイル名をプレーンテキストで保存するのは、単なる愚かであることを理解してください。

0
jokoon