web-dev-qa-db-ja.com

複数のコンピューターを使用してブルートフォースを高速化する

私は最近Mr. Robotを見てきましたが、なぜ256ビットキーでAES暗号化を使用して暗号化されたファイルを解読するのがそれほど難しいのかと考えるのをやめられません。
鍵を見つける唯一の方法は、力ずくで行うとしましょう。
コンピュータを、最初の可能なキーから開始し、別のコンピュータを最後の可能なキーから開始するようにブルートフォースに設定し、いくつかのコンピュータを途中でキーを試すように設定できませんか?
これにより、時間を大幅に削減できませんか?

28
Mero55

確かにそれは可能ですが、実際には役に立ちません。可能性の数が多すぎます。

256ビットのキーには2256 可能な値。それは12✕10です76、または12の後に76個のゼロが続きます。コンピュータが1兆をテストできると寛大に仮定すると(1012)可能なキーが1秒で、1兆台のコンピューター(どこから取得するのか)でキー検索を実行している場合、12✕10かかります76/(1012✕1012)秒でキースペース全体を検索します。それは12✕10です52 秒。 1世紀には3,155,760,000秒しかないため、約4✕10秒かかります43 何世紀にもわたってすべての可能なキーを試しました。鍵がその半分の時間で見つかる可能性は50〜50です。

これが暗号化の設計方法です。可能性の数が多すぎて時間内に解読できず、人間にとって興味深いものです。

71
Neil Smithline

これについて一度計算をしました。 AESはブルートフォースでのみ破壊できると仮定しましょう。明らかに、0から2までカウントするカウンターが必要です。256-1、そして平均して2まで数える必要があります255。このカウンターの実行にはエネルギーが必要です。どのくらいのエネルギーが必要ですか?

結局のところ、ここにはランダウアーの原理である熱力学的限界があります。特定の温度では、ビット(1ビットのエントロピー)を設定するのに必要なエネルギーの最小量があります。これほど多くのエネルギーを費やさない場合、実際にはシステムのエントロピーを減らすことができるため、熱力学的に無理だよ。必要なエネルギーはkT ln 2で、kはボルツマン定数(1.38×10−23 J/K)およびTはケルビン単位の温度です。明らかに、これを可能な限り手頃な価格で実行したいので、宇宙のバックグラウンド放射の温度である3ケルビンで計算を行います。システムを冷却するために、ビットを反転するために費やしたよりも多くのエネルギーを費やすことなしに、それよりも涼しいことはありません!これは、ビットを反転するエネルギーコストを2.87×10に固定します。−23 J /ビット。

さて、ビットフリップはいくつ必要ですか?答えはたくさんあるので、エネルギー量を人間が理解できる言葉で保つために、問題を単純化したいと思います。 AES-256を解くのではなく、AES-192を解いていたとしましょう。191。では、ビットフリップはいくつ必要ですか。通常のバイナリでカウントした場合、カウンターの増分ごとに複数のビットを反転する必要がある場合があります。これは計算が面倒なので、このカウンタを Grey Codes で実行できるとしましょう。これは、インクリメントごとに1ビットだけフリップします。

カウンターのインクリメント2191 回、2.87×10−23 J /ビットは9×10を生成します34 J.それはたくさんのエネルギーです。実際、私のお気に入りのWikipediaページの1つである Order of Magnitude(energy) にアクセスすると、毎年太陽から放出されるエネルギーは1.2×10であることがわかります。34 J.そうです。 AES破壊プロセスの中核となるカウンターを実行するだけで、太陽のエネルギー出力の合計がほぼ10年になります。それのすべて。

ここで、元のAES-256問題を再検討すると、エネルギーコストは2増加します。64。したがって、そのカウンターは1.6×1054 J.再び、マグニチュード(エネルギー)を見ると、天の川銀河の目に見える総質量エネルギーは4×10であることがわかります。58 J.したがって、もしあなたが銀河の全質量エネルギーの0.004%を変換するなら(すなわち、E = mcを使用してすべての質量をエネルギーに変換すること)2)、0から2までカウントできるカウンターを実行できます255

これが、現代の暗号アルゴリズムを強引に強制することがない理由です。求められるエネルギーの量は、「宇宙の熱死」のレベルで文字通りです。

40
Cort Ammon

それが可能であるだけでなく、人々は実際にこれを成功させてきました。しかし、非常に短いキーでのみ。

distributed.net は、コンピューターの分散ネットワークを使用して、2002年に64ビットRC5暗号化を破ることができました。コンピュータはほとんど、バックグラウンドでキーをクランチするプログラムをインストールしたボランティアが所有するコンシューマグレードのPCでした。これは RSAシークレットキーチャレンジの一部です -RSA Labsによる、現実世界で使用するよりもはるかに短いキーで暗号化されたメッセージを復号化するコンテスト。

「4年以上の努力、数十万人の参加者、数百万CPU時間の作業を経て、Distributed.netはRSA Securityの64ビット暗号化の課題への鍵を強引に押し付けました。」

彼らは2003年にRSA 72ビットチャレンジに勝つために別のプロジェクトを開始しました。13年後 彼らはまだ計算中で、キースペースの4%もテストしていません

これらはRSAの非常に簡略化されたバージョンであることを覚えておいてください。現実の世界でのRSA-RC5の推奨キー長は、少なくとも128ビットです。ビットを追加するごとに計算時間が2倍になるため、これらの分散型アプローチは、実際の暗号化を攻撃することからまだ数年は離れています。

3
Philipp