web-dev-qa-db-ja.com

より大きな暗号鍵を使用しないのはなぜですか?

RSA Securityは通常、1024ビット、2048ビット、または3072ビットのサイズのキーを使用します。ほとんどの対称アルゴリズムは、112ビットと256ビットの間のみです。 現在のキーが安全であることを理解しています今日のハードウェアには十分ですが、コンピューターが高速になるにつれて、100万ビットなどの非常に大きいキーサイズを検討して、まだ発明されていないスーパーコンピューターシステムから身を守る必要はありませんか?

では、言い換えれば、大きすぎる暗号鍵を選択した場合の結果は何であり、なぜ誰もが鍵のサイズを制限しているのでしょうか。

197
Koning

RSAキーが非常に小さい理由は次のとおりです。

RSAキーの長さが2倍になるたびに、復号化は6〜7倍遅くなります。

したがって、これはセキュリティと利便性のトレードオフの1つにすぎません。これがグラフです: RSA Decryption time by key length

ソース: http://www.javamex.com/tutorials/cryptography/rsa_key_length.shtml

78
Fredefl

私は Applied Cryptography のコピーを掘り出して、対称暗号に関するこれに答えました、256は十分にあり、おそらく長い間続くでしょう。シュナイアーは説明します。

鍵の長さは長い方が良いですが、ある程度までです。 AESは、128ビット、192ビット、および256ビットのキー長を持ちます。これは予見可能な将来に必要とされるよりもはるかに長いです。実際、256ビットのブルートフォース検索が可能な世界を想像することさえできません。それには、物理​​学における基本的な画期的な進歩と、宇宙に対する私たちの理解が必要です。

熱力学の第2法則の結果の1つは、情報を表現するために一定量のエネルギーが必要になることです。システムの状態を変更してシングルビットを記録するには、エネルギー量がkT以上である必要があります。ここで、-[〜#〜] t [〜#〜]は、システムの絶対温度kはボルツマン定数です。 (私と付き合ってください。物理学のレッスンはもう終わりです。)

その場合k = 1.38×10−16erg/K、そして宇宙の周囲温度が3.2ケルビンであること、3.2 Kで実行される理想的なコンピューターは4.4×10を消費する−16 ビットを設定またはクリアするたびにエラーが発生します。宇宙背景放射よりも低温のコンピュータを実行するには、ヒートポンプを実行するために追加のエネルギーが必要になります。

今、私たちの太陽の年間エネルギー出力は約1.21×10です41 エルグ。これは約2.7×10の電力を供給するのに十分です56 理想的なコンピューターでのシングルビットの変更。 187ビットのカウンタをすべての値に通すのに十分な状態変化。太陽の周りにダイソン球体を構築し、allのエネルギーを32年間捕獲した場合、anyの損失なしに、コンピュータに最大2つの電力を供給できます。192。もちろん、このカウンターで有用な計算を実行するためのエネルギーは残っていません。

しかし、それは1つだけの星であり、そこにはわずかな星があります。典型的な超新星は10のようなものを放出します51 エルグ。 (約100倍のエネルギーがニュートリノの形で放出されますが、今のところは放っておいてください。)このエネルギーのすべてを単一の計算の乱交に流すことができれば、219ビットのカウンターがすべてを循環することができます。その状態の。

これらの数値は、デバイスのテクノロジーとは関係ありません。それらは熱力学が許容する最大値です。また、コンピュータが物質以外のものから構築され、空間以外のものを占有するまで、256ビットキーに対するの総当たり攻撃は実行不可能であることを強く示唆しています。

大胆さは私自身の追加です。

備考:この例では、「完全な」暗号化アルゴリズムがあることを前提としています。アルゴリズムの弱点を悪用できる場合、キースペースが縮小し、キーのビット数が実質的に少なくなる可能性があります。

また、鍵の生成が完全であると仮定します-鍵のビットごとに1ビットのエントロピーを生成します。これは、多くの場合、計算設定では実現が困難です。不完全な生成メカニズムでは、256ビットのキーに対して170ビットのエントロピーが生成される可能性があります。この場合、キー生成メカニズムが既知であれば、ブルートフォーススペースのサイズは170ビットに削減されます。

量子コンピュータが実行可能であると仮定すると、RSAキーはShorのアルゴリズムを使用して破壊されます。 ( https://security.stackexchange.com/a/37638/18064 を参照)

302
lynks

1つのAESは、3つの鍵サイズ128, 192 or 256 bits用に構築されています。

現在のところ、128ビットのブルートフォーシングは実現可能でさえありません。仮に、AESキーが129ビットの場合、129ビットキーを総当り攻撃するのに128ビットキーの2倍の時間がかかります。これは、192ビットと256ビットのより大きなキーは、攻撃にはるかに長い時間がかかることを意味します。これらのキーのいずれかをブルートフォースで実行するには、信じられないほど長い時間がかかるため、キーが実現される前に、Sunは焼き付きを停止します。

2^256=115792089237316195423570985008687907853269984665640564039457584007913129639936

それは大きなおかしい数です。これが、キーの数です。キーがランダムであると仮定すると、2で除算すると、ブルートフォースAES-256を実行するのに平均していくつのキーが必要かがわかります。

ある意味で、私たちはあなたが話している本当に大きな暗号鍵を持っています。対称鍵の要点は、ブルートフォースを実行不可能にすることです。将来的には、256ビットのキーを攻撃することが可能になれば、キーサイズは確実に増加しますが、それはかなり先のことです。

RSA鍵がAES鍵よりもはるかに大きい理由は、2つの完全に異なるタイプの暗号化であるためです。これは、AESキーを攻撃するのと同じようにRSAキーを攻撃しないことを意味します。

対称鍵への攻撃は簡単です。

  1. ビット文字列000...から始めます
  2. そのビット文字列で暗号文を復号化します。
  3. 読めれば成功です。
  4. 読み取れない場合は、ビット文字列をインクリメントしてください

RSAキーへの攻撃は異なります... RSA暗号化/復号化は大きな半素数で機能するため...プロセスはmathyです。 RSAを使用すると、可能なすべてのビット文字列を試す必要はありません。 2^1024または2^2048のビット文字列よりはるかに少ない数を試行しますが、それでも総当り攻撃はできません。これが、RSAキーとAESキーのサイズが異なる理由です。[ 1 ]

すべてをまとめ、質問に1文で答える。すでに途方もなく大きな対称鍵があるので、途方もなく大きな対称鍵は必要ありません。 256ビットの暗号化は、2048ビットのRSAキーのようなものに比べて弱々しく聞こえますが、アルゴリズムは異なり、そのように「ビットごと」に比較することはできません。将来的には、より長いキーが必要になった場合、より大きなキーを処理するための新しいアルゴリズムが開発されるでしょう。そして、現在のハードウェアをさらに拡張したいと思ったとしても、それは単に時間のトレードオフです。鍵が大きいほど、復号化時間が長くなり、通信が遅くなります。これは、インターネットブラウザが対称キーを確立して使用して情報を送信するため、暗号にとって特に重要です。

65
user11869

処理時間は、純粋でシンプルです。セキュリティのすべては、セキュリティの必要性(悪い人を締め出す)と使いやすさ(良い人を入れる)のバランスをとる行為です。暗号化は、計算を行うための専用ハードウェアを使用したとしても、処理にコストがかかります。

ほとんどの目的で特定のレベルのセキュリティを超えることは価値がありません。トレードオフは指数的に難しくなり、具体的なメリットはほとんどありません(10億年と1,000億年の差はそれほど重要ではないため)実用的な用語)。

また、RSAとAESについては、それが対称暗号化と非対称暗号化の性質です。簡単に言うと、対称暗号化(共有キーが1つある場合)では、推測する必要がないため、非常に困難です。 RSAなどの非対称暗号化では、復号化キー(秘密キー)に関連する情報(公開キー)を公開します。関係を計算するのは「非常に困難」ですが、処理する情報がない場合よりもはるかに弱いです。このため、公開鍵から秘密鍵を取得する問題を困難にしながら、暗号化と復号化に関する数学の問題の量を制限するためには、より大きな鍵サイズが必要です。

8
AJ Henderson

ある意味で、そのような「めちゃくちゃ大きい」鍵を使用するアルゴリズムはすでに存在しています。 one-time pad と呼ばれます。ただし、暗号化したいメッセージの長さの鍵が必要であり、鍵のマテリアルを再利用することはできないため(暗号文を簡単に破ることができない場合を除く)、実際に実際に使用することはありません。暗号化の目的は大きな秘密(プレーンテキスト)を小さな秘密(キー)に変換することなので、OTPは非常に特殊で高度に専門化されたシナリオでのみ役立ちます。平文を安全に送信することもできます。これは、キーマテリアルの送信チャネルと同じくらい安全な送信チャネルが必要になるためです。

公平を期して、OTPには1つの特定の使用例があります。つまり、ある時点で安全な通信チャネルにアクセスできるが、後でメッセージを安全に送信する必要がある環境で、証明可能なセキュリティが必要な場合です。

適切に使用され、適切に生成されたキーマテリアルを使用すると、解読されたプレーンテキストは同様に可能性が高く、OTPは安全であると証明できます。メッセージの他の部分を復号化します。これは理論的には簡単ですが、実際に引き出すのは非常に困難です。あなたは、せいぜい短い、ハイグレードな軍事的またはおそらく外交上の秘密を見ているだけです。

ほとんどの人にとって、128-256ビット対称または2048-4096ビット(RSAのようなものを想定)非対称キーは、すでに Rell3oTAlexander Shcheblikinで説明されている理由から)で十分です。lynks 、その他。とにかく、256ビット相当のキーを攻撃したい人は、暗号ではなく、暗号システムを攻撃します。 ( 必須のXKCDリンク。 )PRNG攻撃は以前は適切に実装されており、理論的に安全な暗号システムを破壊しており、最後に起こったと考えるのは愚か者でしょう。

7
a CVn

「不必要に速度が遅くなるため」の回答にさらに証拠を追加すると、AESの実行時間がRSAほど速くならないように見えます(キーの長さが増えると(RC6がさらに遅くなると)、それでも実行は16%です)。 http://www.ibimapublishing.com/journals/CIBIMA/volume8/v8n8.html によると、時間は2倍のキーの長さに増加します。

5
Cyrus

処理時間についてはすでに述べました。その点でも、RSAキーを生成するのに必要な時間は別に説明する必要があります。これは、目的のRSAキーのサイズの約半分の素数を見つける必要があるため、長いキーの方がはるかにコストがかかるためです。

別のトピックはスペースです。 e。生成されたデータの量。非対称暗号と対称暗号はブロックで動作します。 1バイトを超える署名でも、RSA鍵のビット数は必要です。 e。 2048ビットの鍵の場合は256バイト。対称アルゴリズムのブロックサイズと同じ状況で、キーの長さとともにalsは大きくなります。これも一見議論のようではありませんが、スマートカードがこれを処理するために厳しく制限されたデバイス(まだ秘密キーの最も安全なコンテナー)であり、多くの署名、証明書を保存する必要がある多くのアプリケーションがあります。暗号文など。実際には、より多くのセキュリティをより少ないビットに詰め込んでいるため、楕円曲線暗号法の理由の1つです。

4
guidot

OPは次のよ​​うに尋ねました:「つまり、大きすぎる暗号キーを選択した場合の結果は...?」256ビットキーここのコメントで証明されているように、かなり強力です。ただし、非常に安全なキー(これは良いことです)は、悪意のあるユーザーにシステムの他の場所の弱点を見つけさせるだけです。

2
brandtrock