3

ここでこの質問をするのは適切ではないかもしれません...とにかく、DHの実装にgmpライブラリを使用しようとしていますが、ここで得た問題は次のとおりです。

一度、出力を観察するためにテストを行っていたとき、素数と秘密鍵の大きな値が選択されましたが:

  • p は 10 進数で約 300 桁以上の長さでした
  • a、bの長さは約100桁でした

最後に、おそらく10進数で10 ^ 8より小さい、非常に小さい共有秘密鍵を取得しました...

この問題は何度も発生することはなく、実際にはすべての観測中に 1 回だけ発生しました...しかし、これはあまり良くありませんでした。

だから、これを回避できるいくつかの方法があるのだろうか...どうもありがとう

4

2 に答える 2

2

Diffie-Hellman 鍵交換は、秘密の共有鍵を生成するように設計されています。

p、a、b に大きな値を使用することで、潜在的な共有キーのプールが非常に大きくなります。

ただし、共有キーの実際の値は、そのプール内の任意の値にすることができます。その結果、0 から (p - 1) の範囲になる可能性があります。これは、キーが

G^(ab) mod p

G^(ab)したがって、ここで問題を発見していません... の値が の倍数に近く、pしたがってmodが小さい場合のインスタンスが表示されるだけです。

于 2010-03-08T19:02:47.443 に答える
1

DHのポイントの一部は、秘密鍵がpで指定された範囲内の任意の値である可能性があることです。少なくとも理論的には、これらの可能性のいくつかを排除すると、安全性が低下しますが、それほど安全ではありません(現実的には、十分に大きなキーのプールを残している限り、実際の違いはほとんどありません)。

確かに、攻撃者がキー枯渇(ブルートフォース)攻撃を試みることを決定し、0から開始してカウントアップした場合、攻撃者は比較的早くこれを攻撃します次に、他の下限を決定し、(たとえば)その下限を下回っている場合にキーを再ネゴシエートした場合、実際には何の効果もありません。攻撃者は0から開始する代わりに、指定された下限、そしてあなたは何も得ていなかっただろう。

于 2010-03-08T19:05:39.667 に答える