web-dev-qa-db-ja.com

OpenSSL dhparamの実行が速すぎたのはなぜですか?

Diffie-Hellmanパラメータを生成しましたが、速すぎるようです。すべてが1秒未満で終わりました。

$ openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
This is going to take a long time
..............................................+.++*++*
$

比較的新しいECS t2.mediumインスタンス(2 VCPU、4GB RAM)で実行しています。

もう一度実行したところ、今回は5918文字が出力され、約30秒かかりました。

初めて何が起こったのですか?

3
Simon Woodside

Diffie Hellmanパラメータを作成する場合、大きな素数であるpを法として作成するのに最も時間がかかります。これを作成するには、半乱数を取り、素数性をチェックします。運が良ければ、すぐに素数を選択すると、アルゴリズムはすぐに終了します。

具体的には:

  • BN_generate_prime_ex 呼び出し probable_prime_dh_safe 乱数を受け取り、最初の2048個の素数で割り切れるかどうかをチェックします。そうである場合は、別の乱数などを使用します。素数が見つかると、ドットを印刷します。
  • BN_is_prime_fasttest_ex を呼び出して、 Miller–Rabin素数性テスト を実行します。テストされた値が素数の場合、「+」を出力します。
  • p(p-1)/2の両方をこの方法でテストし、両方が素数の場合は*を出力します。実際に確認するために数回テストします。 2048ビットの場合、チェックします twice 。そのため、出力の最後に++*++*が表示されます。

素数である可能性が非常に高い数が見つかるまで、これらのステップを繰り返します。必要なループの数は、偶然によって異なります。

Openssl docs

5
Sjoerd