web-dev-qa-db-ja.com

暗号化されたファイルのファイルタイプを知っていると、復号化が容易になりますか?

たとえば.pdfファイルを暗号化した場合、それが.pdfであることを知っていると、復号化が容易になりますか?

つまり、ファイルの既知の構造が暗号化されたバイトの予測可能な部分として機能する可能性がありますか?

21
Ian Warburton

実用的な目的ではありません。

優れた暗号化に対して、最新の暗号を使用し、OracleまたはECBモードのパディングやその他の弱点などの大きなミスを犯さない限り、それは本当に役に立ちません。理論的には、キーをブルートフォースで正しく強制したかどうかのテストとして機能できます。復号化されたファイルには、適切なマジックナンバーとデータ形式が含まれていますか?正解です。正しい鍵を入手しました。しかし、現代の広く使用されている暗号では、実際に鍵を総当りで強制することは不可能です(128ビットの鍵を使用する最も弱い形式のAESでも、国家が総当りするのに数世紀かかります。 -force、ムーアの法則が順調に進んでいると仮定しても;最新のハードウェアのみを使用すると、桁違いに長い時間がかかります)。


もちろん、人々は暗号で間違いを犯し、かつては強力であると考えられていた一部の暗号は現在、脆弱であることが知られています。

ファイルが特定の方法で暗号化されていて、その方法の弱点を知っている場合は、その弱点を悪用しようとすることができます。一部のファイルは名目上は暗号化をサポートするが非常に弱く実装するソフトウェアによって生成されるため、ファイルタイプを知ることでこれはより簡単になる可能性があり、ファイルがそのタイプであることを知ると、そのような攻撃を試みることができる可能性があることを示唆します(ただし、暗号を正しく実装する他のツールを使用してファイルが暗号化されている場合は、役に立ちません)。

上記の ECB(Electronic Code Book)ブロック暗号化操作モード は、同じアルゴリズムを使用して(指定されたキーに対して)すべてのブロック(通常、最新の暗号化では16バイト、歴史的には8バイトのみ)を暗号化します。メッセージのどこにあるかが重要です。つまり、メッセージ(または同じキーを使用して暗号化されていることがわかっている場合は任意の数のメッセージ)をブロックに分割し、2つの同一のブロックを見つけると、同じプレーンテキストであることがわかります。ファイルのデータの少なくとも一部がわかっているため(ファイル形式がわかっているなどの理由で)、そのような重複が見つかり、そのうちの1つのプレーンテキストの少なくとも一部がわかっている場合は、次のプレーンテキストがわかります。他のブロックの同じ部分。これは、特定のバイトがわからない場合でも、一般的にデータ形式がわかっている場合、特に単純な画像ファイルなどの低エントロピーデータの場合に役立ちます。ビットマップ画像を取り、ECBを使用してそれを暗号化する顕著な例については、上のリンクを参照してください。また、暗号文(ビットマップとしてレンダリングされている場合)でも、画像のコンテンツが大幅に明らかになります。

ここでは関連性が低い可能性がありますが、他の状況では関連性がある可能性のある他の攻撃があります。たとえば、RC4(ARC4またはARCFOURと呼ばれることもある)ストリーム暗号を使用して同じデータを何度も暗号化できる場合、「キーストリーム」(ストリーム暗号である擬似ランダム関数によって生成されるビット)のバイアスを利用できます。データをゆっくりと復号化します。これが、SSL/TLSでの使用がRC4で信頼されなくなった理由です(ただし、指定されたデータのblobは一度だけ暗号化されますが、この攻撃は実行できません)。 パディングOracle攻撃 メッセージ(通常、CBCモードの操作でAESなどのブロック暗号を使用して暗号化されたもの)を線形時間で解読できます。コマンドにより、メッセージを復号化し、パディング(ブロック暗号にはパディングが必要)が正しいかどうかを通知します。このようなOracleは通常、保存されているファイルでは使用できませんが、パディングOracleがSSLでCBCモードを使用できなくなった理由であり、SSLプロトコル全体が非推奨になりました(TLSには、パディングOracle攻撃に対する保護が含まれています) )。

ファイルの構造といくつかの基本的なデータを知ることで、ビットフリッピング攻撃を有効にすることもできます(データを復号化せず、予測可能な方法で変更して、正当にファイルを使用する人に対する原因をさらに突き止めます)。これはあなたの質問のかなり遠くにありますが、あなたが最小ではあるがゼロではない知識を持っている暗号化されたファイルを攻撃しているとき、それは時々関係があります。

38
CBHacking

はい、ブルートフォースが正しいキーを試したことを検出する方が簡単です。英語で書かれたテキストファイルであることがわかっている場合は、文字の頻度を確認できます。ヘッダー情報が含まれている形式の場合、ヘッダーに意味があるかどうかを確認できます。それが実行可能ファイルである場合、コードの配布が妥当に近いかどうかを確認できます。探しているファイルの種類がわからない場合、正しい解読を見つけたときはどうすればわかりますか?

5
Ross Millikan

潜在的に-はい。そのような情報はエントロピーを減らし、したがって、それを総当たりするためのより少ない試みを必要とします。しかし、私は潜在的と言います。これは、攻撃者が特定のファイルタイプのブルートフォーシングアルゴリズムを本当に改善できる場合にのみ保持されるためです。そして、これは簡単なことではありません。その理由の1つは、通常、暗号化の最初に、データがランダムデータを適用することによって変換されることです。 xorを適用する。

2
mentallurg