web-dev-qa-db-ja.com

いくつの素数がありますか(RSA暗号化で利用可能)?

RSA暗号化のセキュリティは、一般に、既知の素数の量によって制限されると誤解していますか?

秘密鍵を解読(または作成)するには、正しい素数のペアを組み合わせる必要があります。

RSAが使用する範囲のすべての素数のリストを公開することは不可能ですか?それとも、この総当たり攻撃を行う可能性が低いほど十分に大きいリストですか? 「よく使われる」素数はないのでしょうか?

43
pinhead

RSAは既知の素数のリストから選択しません。新しい非常に大きな数を生成し、アルゴリズムを適用して、ほぼ確実に素数である近くの数を見つけます。 この大きな素数生成の便利な説明 )を参照してください。

大きな素数を生成する標準的な方法は、事前に選択された望ましい長さの乱数を取り、Fermatテストを適用し(速度を最適化できるため、基数2が最適)、次に特定の数のMiller-Rabinテストを適用します。 (長さと2-100のような許容エラー率に応じて)おそらく素数である数を取得します。

(その場合、だんだん大きくなる素数を見つけようとするときにこのアプローチを使用しない理由を尋ねるかもしれません。答えは、最大の既知の素数 1700万桁以上 -をはるかに超えているということです暗号で一般的に使用される非常に大きな数でさえ)。

衝突の可能性については、(必要なセキュリティに応じて)現代のキーサイズの範囲は1024〜4096です。これは、素数が512〜2048ビットの範囲であることを意味します。つまり、素数は2 ^ 512のオーダーであり、長さは150桁を超えます。

1 / ln(n)を使用して素数の密度を大まかに推定できます( ここ を参照)。つまり、これらの_10^150_の数の中には、約10^150/ln(10^150)素数があり、_2.8x10^147_素数から選択することができます。確かに、どのリストにも当てはまらないものです!!

つまり、その範囲の素数の数は驚異的に膨大であり、衝突は事実上不可能です。 (1兆の可能な素数を生成して9億の組み合わせを形成したとしても、それらのいずれか2つが同じ素数になる可能性は_10^-123_です)。

93
David Robinson

新しい研究が出てくると、あなたの質問に対する答えはもっと面白くなります。最近の論文「Imperfect Forward Secrecy:How Diffie-Hellman Fails in Practice」(David Adrianほか)のすべての記事で@ https://weakdh.org/imperfect-forward-secrecy-ccs15.pdf にアクセス2015年10月16日、研究者たちは、RSAの1024ビットキーセットで使用できる素数の数はおそらく十分あるものの、セット全体の中に実装のために使用される可能性が高いキーのグループがあることを示しています。

1024ビットの場合でも、計算は国民国家のリソースを考えればもっともらしいと推定します。少数の固定または標準化されたグループが数百万のサーバーで使用されています。 1つの1024ビットグループに対して事前計算を実行すると、人気のあるHTTPSサイトの18%でパッシブ盗聴が可能になり、2番目のグループでは、IPsec VPNの66%とSSHサーバーの26%へのトラフィックの復号化が可能になります。公開されたNSAのリークを詳しく読むと、VPNに対する機関の攻撃がこのような破綻を達成したことと一致していることがわかります。より強力な鍵交換方法への移行がインターネットコミュニティの優先事項であると結論付けます。

調査では、中間者攻撃者が暗号化を512ビットにダウングレードすることを可能にするTLSの欠陥も示しています。

ですから、あなたの質問への答えとして、紙面上のRSA暗号化にはおそらく十分な素数があるはずですが、実際には、国家から隠れているとセキュリティ上の問題があります。