web-dev-qa-db-ja.com

紛失したAESキーを復元できますか?

ECB 128ビットモードでAES_ENCRYPTを使用して2つのMySQLデータベースを暗号化しました。暗号化キーを忘れてしまいましたが、プレーンテキストがあります(データベースが1つあり、暗号化なしで暗号化も同じです)。他のデータベースを復号化できるように暗号化キーを見つける方法は?

既知のプレーンテキスト攻撃について聞いたことがありますが、これを行う方法は? Kali Linuxにツールはありますか、GitHubにpythonスクリプト)はありますか?

15
hui san ki

現実的にはできません。 AESは、ほとんどのブロック暗号のような既知のプレーンテキスト攻撃に対して非常に耐性があります。幸運なことに、情報を失わずに元のデータベースをバックアップできたのは、暗号化をブルートフォースで試すことだけであり、宇宙の長さよりも長い時間がかかる可能性があるためです(可能なキーを大幅に絞り込むことができない場合を除く)。 ほぼパスワードを覚えていますか?)

35
Aide

あなたが求めているのは、既知のプレーンテキスト攻撃(KPA)です。 ECBで説明する弱点は、同じ平文を持つ2つの暗号化されたブロックが同じ暗号文で暗号化されることです。

これは、暗号文の2つの暗号化されたブロックが同じに見えることを知っているだけで、プレーンテキストを簡単に復元できるという意味ではありません。答えは次のとおりです。キーを回復することはできません。

11
Lucas Kauffman

これは、暗号に対する既知の平文攻撃と呼ばれ、設計上の重要な考慮事項です。あなたがしたいことは、AESの弱点への大きな啓示を除外することは不可能だと考えられています。ここには、さらに理解するのに役立つと思われる別のQ/Aがあります。

https://crypto.stackexchange.com/questions/1512/why-is-aes-resistant-to-known-plaintext-attacks

暗号は固定長のビットでのみ動作するため、チェーンモードを使用して任意の長さのデータを暗号化します。 ECBは最も単純なもので、一度に1つのブロックを暗号化するだけです。主な弱点は、同一のブロックが同じ暗号化された出力を生成することであり、これは情報の主要な漏洩です。また、攻撃者が内容を知っていると思う暗号化されたブロックを再送信するだけで、リプレイ攻撃の機会が生まれます。残念ながら、これでは、既知のプレーンテキストを使用したキーリカバリに近づくことはできません。

たとえば、パスワードを使用してキーを生成した場合、実行可能な攻撃の1つとして、パスワードがちょうど12文字で3桁であることを覚えている場合があります。これにより、パスワードスペースが大幅に制限され、ブルートフォース分析が機能する可能性があります。

1
trognanders

理論的には可能ですが、実際には不可能です。しかし、あなたはそれを推測することを試みることができます。プレーンテキストと暗号化テキストが与えられた場合、可能なすべてのキーを試して、どれが機能するかを確認できます。 AES-128の場合、340デシディオンキー。

上記のように、スーパーコンピュータを使用した場合でも、ブルートフォース攻撃を使用して128ビットのAESキーをクラックするには10億年かかります。これは宇宙の時代(137.5億年)を超えています。

0
Praveen Yadav