openssl
の場合 多くの CPU を使用し、「エントロピー」を待ってブロックされません。 OpenSSL はその点で正気であり、暗号的に安全な PRNG を使用して初期シードを必要な数のビットに拡張します。
dhparam
を使用する場合 、OpenSSL は DH パラメータを生成するだけではありません。また、モジュラスにいわゆる「強い素数」を使用するように注意することで、彼の社会的地位を主張したいと考えています。これはセキュリティには役に立ちませんが、非常に多くの計算作業が必要になります。 「強い素数」は素数 p です そのような (p -1)/2 も素数です。素数生成アルゴリズムは次のようになります:
- ランダムな奇数の整数を生成 p .
- p かどうかをテストします プライムです。そうでない場合は、ループします。
- (p -1)/2 は素数です。そうでない場合は、ループします。
ランダムな奇数の 4096 ビット整数は、約 1/2000 の確率で素数になります。p と (p -1)/2 は素数でなければなりません。これには、素数の生成とテストが平均で約 400 万 必要になります。 奇素数の。これにはしばらく時間がかかります。
2048 ビットから 4096 ビットになると、強い素数の密度は 4 で割られ、素数性のテストも約 4 倍遅くなります。したがって、2048 ビットの DH モジュラスの生成に平均 1 時間かかる場合、同じ同じソフトウェアを搭載したマシンは、4096 ビットの DH モジュラスに平均 16 時間を使用します。これは単なる平均です;個々の世代は運次第で速くなったり遅くなったりします。
合理的な解決策は、 -dsaparam
を追加することです オプション。
openssl dhparam -dsaparam -out /etc/ssl/private/dhparam.pem 4096
このオプションは、OpenSSL に「DSA のような」DH パラメータ (p p -1 はより小さい素数 q の倍数です 、およびジェネレータは乗法次数 q を持ちます )。素数性テストをネストする必要がないため、これはかなり高速です。したがって、数百万ではなく数千の候補のみが生成されてテストされます。
学者が知る限り、DH の DSA に似たパラメーターは同様に安全です。 「強い素数」を使用することに実際の利点はありません (用語は伝統的なものであり、実際には特別な強さを意味するものではありません)。
同様に、2048 ビットのモジュラスを使用することもできますが、これはすでに「破ることができないゾーン」にかなり入っています。 4096 ビット モジュラスは DH 計算を遅くします (これは VPN にとって実際の問題ではありません。これは接続の開始時にのみ発生します) が、実際にはセキュリティは向上しません.
4096 ビットのモジュラスはある程度監査人を惹きつけるかもしれませんが、とにかく安すぎる Raspberry-Pi に監査人が感銘を受ける可能性は低いでしょう。