AES256をリバースエンジニアリングすることは可能ですか?
-
03-07-2019 - |
質問
これがあると想像してください:
$cdata = AES_256($data, $pass);
AES_256は、 AESアルゴリズムを実装しています。
$ cdata
のコンテンツと $ data
のコンテンツを知っていて、
AES_256()
コード、リバースエンジニアリングして $ pass
を見つけられますか?
解決
簡単な答え:いいえ。
これはテストされており、Wikiリンクで言及されています。
関連キー攻撃は最大9個まで分割できます 256ビットAESのラウンド。 A 選択平文攻撃は8を破ることができます 192および256ビットAESのラウンド、および7 128ビットAESのラウンド、ただし ワークロードは2 128 では実用的ではありません- 2 119 。
または別の言い方をすれば、照明にぶつかる可能性が高くなります...宝くじに当たった当日、それを壊すよりも勝ちです!
他のヒント
これは、既知の平文攻撃と呼ばれます。他の人が説明したように、AESのような良い暗号は、それに対して免疫があるはずです。
$ pass
が実際にはパスワードであり、256ビットキーではない場合、運が良いかもしれません。
実行するのは簡単ではありませんが、通常のパスワードに対するブルートフォース攻撃は、256ビットキーをブルートフォースするよりもはるかに高速です。
したがって、多くのパスワードを強制するツールの1つを変更すると、(パスワードの強度に応じて)数週間から数年かかる攻撃がありますが、3x10 ^ 51年に比べて高速です。 。
それをブルートフォースすることもできますが、時間がかかります。数十年またはそれ以上。これがAESのような暗号化アルゴリズムのポイントです。
ウィキペディアからの別の引用:
AESは256ビットキーの使用を許可します。 対称の256ビットキーを破る ブルートフォースには2 ^ 128倍の時間が必要です 128ビットよりも高い計算能力 キー。確認できるデバイス 10億(10 ^ 18)AESキーあたり 2番目には約3 xが必要です 256ビットを使い切るのに10 ^ 51年 キースペース。
元のテキストの方が速い場合、ブルートフォーシングは高速ですが、それでも3 x 10 ^ 51年は長い時間です。さらに、おそらく1秒あたり10億個(10 ^ 18)のキーをチェックできるデバイスがないという問題があります。
要するに:すべては可能ですが、これは現在の世界では実現不可能です。
AESは、すべての優れた暗号アルゴリズムと同様に、セキュリティによるセキュリティに依存していません。
つまり、「秘密」はありません。コード内にあるので、コードを持っていることは特に役に立ちません。
既知の平文は別の問題です。これについてはあまり知りませんので、他の回答者にお任せします。
もちろんそうではありません-唯一のアプローチはブルートフォースです。 NISTは、新しい標準のために簡単に解読される暗号を選択するほど愚かだと本当に思いますか?
スーパーコンピューターの力により、AES暗号化をクラッシュさせる時間が劇的に短縮されました。...聞いた...
2x2 ^ 256の可能な組み合わせは、ブルートフォースにとって多くのことです。しかし、総当たり攻撃が唯一の方法です。実際には約30年かかります。 AESは、現時点で可能な限り最高の暗号化です。ただし、CPUを使用するのにかかる時間はそれだけです。 GPU(グラフィックプロセッシングユニット)は厳密に数学ベースであるため、人々は、GPUのみを使用してCPUよりもはるかに高速に数学ベースのアルゴリズムを解読するプログラムを作成しています。言い換えれば、AESは30年は続かないかもしれません。永遠のコードのみが可能だった場合。近い将来、人々が本当に情報を隠すことができる唯一の方法は、動的暗号化であるように見えます。