web-dev-qa-db-ja.com

1024ビットのOpenPGP暗号化メールを解読するのにどのくらい時間がかかりますか?

WPAの場合、パスフレーズを解読するために必要な時間を決定する計算機がありますが、OpenPGPには何も見つかりませんでした。

1024ビットのOpenPGP暗号化電子メールを解読するのにどのくらい時間がかかりますか(CPUパワーに依存します)?

2048や4096などの他のキーサイズにも興味があります。

9
kelmat

@Jens Eratの回答はかなり包括的でしたが、RSA(OpenPGPの背後にあるアルゴリズム)の破壊について調査を行ったため、意見を述べたかったのです。

私は規範を破り、最初にTL; DRを与えます。あなたがその鍵を破ることは不可能です。これを現実的に見ている場合、1024ビット整数を因数分解する方法はありません。最善の策は、セキュリティチェーンの他の部分(受信者がメールをチェックするデスクトップなど)を壊そうとすることです。

リアリズムが邪魔にならないように、可能な戦略を考えてみましょう。

  • ブラインド推測/ブルートフォーシング。 1024ビットのセミプライムでは、これが機能する可能性はほとんどありません。宝くじの番号をランダムに推測しようとする時間をより有効に活用することです。

  • レインボーテーブルの生成。 2 ^ 1024未満のすべての素数を取り、それを1つおきの素数で乗算して、結果をテーブルに格納することにより、推測の因数分解を行います。次に、正しいペアを検索するだけです。ご想像のとおり、これも不可能です。これにはxが関係します。 x個の素数のペア。 prime-counting function によって、約2.95 * 10 ^ 307の素数を見ています。比較のために、観測可能な宇宙の原子の数は10の大きさにあると推定されています^ 83したがって、すべてのatomに2つの素数とその積を、コンピューターがインデックス付けできる方法で格納することができたとしても、不可能です。

  • General Number Field Sieve を使用します。 GNFSは、大きなセミプライムを因数分解するための最善の方法です。クラインジョンと彼のチームは、768ビットのセミプライムであるRSA-768を因数分解するために使用しました。残念ながら、それは彼のチームが達成するのに3年以上かかり、ファクタリングしたい数よりも桁違いに小さいです。 1日あたり数百万ドルを費やして最高のスーパーコンピューターをフル稼働させたとしても、その数を計算することはほぼ不可能です。 GNFSの最初のステップは、副問題を解決できる十分な「関係」を見つけることです。これには非常に長い時間がかかる場合があります。

最後の手段は、量子コンピュータを使用することです。これにより、実行可能な時間内で数値を因数分解できます。残念ながら、これらはまだ実用化されていない段階です。そのため、現時点では、1024ビット以上のセミプライム(したがって、それらに依存するアルゴリズム)を因数分解することはできません。

7
ahjohnston25

まず、RSAの1024ビット暗号化についてお話していると思います。

一般に、このトピックは単純な数値を提供するには複雑すぎます。

tl; dr:単一のCPUでOpenPGP暗号化メッセージをクラックすることは現実的ではなく、大規模なコンピューティングクラスターでもおそらく数年かかります。しかし、量子コンピュータが将来的に(「インターネット時代」の観点から)いつかそうなるかもしれないように、未知の(公開された)数学的欠陥が桁違いにこれを変える可能性があります。

少し長いバージョン:

非対称暗号化の解読(RSA 1024ビットキー)

RSA 1024ビットキーに加えて、これはより大きなキーサイズにも適用されます。キーが大きいほど、セキュリティが向上します(それらを解読する計算能力の形で)が、セキュリティは、キーサイズに比例して増加しないではないことに注意してください。

Information Security Stack Exchangeにいい投稿があります "RSA暗号化を解読するのに必要な時間を見積もる方法は?" 、これは「Core i7モデルxyを使用すると、推定z時間でRSA 1024ビットキーをクラックすることができます」のように推定されますが、答えは「RSA 1024ビットキーは通常利用可能なコンピューティング能力(つまり、 。、一握りのハイエンドマシン).

計算能力がはるかに高い1024ビットキーの解読についての議論は、学術的な観点からのみ考慮されました。

私は最近、1024ビットの数値因数分解のパラメーターの選択が始まったことを知りました(これは「頭の悪い」部分です)。ふるい分けは技術的には実行可能ですが(高価で、多くの大学クラスターで何年もの計算時間を必要とします)、現時点では、1024ビット整数の線形縮小部分を実行する方法を誰も知りません。したがって、すぐに1024ビットの中断が発生することを期待しないでください。

これは恐らく、NSAのような多くの計算能力を持つ大規模で資金のある機関にも当てはまります。

物事は急速に変化する可能性があります

  • 誰かがRSAの複雑さを桁違いに減らす数学の欠陥を見つけました(NSAのような一部の機関では、膨大な数の優れた数学者を採用しています)、または
  • 量子コンピュータは最終的に機能し、十分に強力になり、特定のアルゴリズムを実行できるようになります。 今後数年以内に発生するとは予想されていません。

DSA/ElGamalの場合、状況は少し異なります。 RSA鍵と同じサイズのDSA鍵はより高いセキュリティを提供しますが、同時にDSAは不正な乱数に対してより脆弱です( Debian乱数生成の欠陥 と比較してください)。現在OpenPGPに近づ​​いている楕円曲線暗号は、サポートされているアルゴリズムに対する既知の攻撃はまだなく、一般に安全であると考えられていますが、特にNIST推奨の曲線には疑問が残っています(NISTはランダムに壊れたという評価をかなり失っています)数値ジェネレーター標準)、およびいくつかの実装ニピック。

対称暗号化のクラッキング

パフォーマンス上の理由から、OpenPGPはハイブリッド暗号化を使用するため、メッセージは対称暗号化とランダム対称鍵(OpenPGPでは「セッション鍵」と呼ばれることが多い)で暗号化されます。このセッションキーは、非対称暗号化アルゴリズムを使用して再び暗号化されます。 RSA。

メッセージの対称暗号化キーを解読できる場合は、メッセージを読み取ることもできます(このキーで暗号化されたすべてのメッセージを読み取ることができる非対称キーを解読するのとは異なります)。

PGPの非常に初期のバージョン(Zimmermann自身が設計した対称暗号化アルゴリズム BassOmatic と呼ばれ、壊れていると考えられています)とは異なり、 OpenPGPに定義されているすべての対称アルゴリズム に関連する既知の攻撃はありません。

誰かがno対称暗号化を使用することを選択しない限り(実際に可能です!)、対称暗号化アルゴリズムを使用してメッセージを解読することは、現時点では実行可能であると考えるべきではありません。

20
Jens Erat