web-dev-qa-db-ja.com

エフェメラルディフィーヘルマンキーエクスチェンジ-実際にはエフェメラルとは何ですか?

Diffie-Hellmanについて学び始めたばかりですが、それは十分に単純に思えますが、一時的なDiffie Hellman鍵交換で説明するリソースを見つけるのに苦労しています。

したがって、DHでは、公的に知られている素数pと、循環乗法群上のg mod pがあります。ここで、gは群の生成元です。

  1. アリスはランダムなaを選択し、ボブはランダムなbを選択します。どちらもmod pです。
  2. アリスはA = g ^ a mod pを計算します
  3. BobはB = g ^ b mod pを計算します
  4. ボブはBをアリスに転送します
  5. アリスはAをボブに転送します。
  6. アリスはB ^ a mod pを計算します
  7. BobはA ^ b mod pを計算します
  8. これらの計算は両方とも同じ答えになるため、共有鍵が確立されています。

エフェメラルDiffie Hellmanでは、エフェメラルとは正確には何ですか? pとgは変わりますか? aとbは定期的に再計算されますか?

ありがとう

8

AとBは、アリスとボブが交換するephemeralsと呼ばれます。それほど複雑ではありません。 Diffie Hellmanを使用する方法は他にもあります。たとえば、エフェメラルという用語が表示されない DSA-デジタル署名アルゴリズム などです。

また、通常、(P、g)はWebサイトだけでなく、多くのインターネット(RFCを介して)でも修正されています。これは、Logjam攻撃に関する最近の暴露に関連しており、NSA可能性がありますハッキング これについての私の説明はここにあります 。いずれにしても、(P、g)の作成は複雑であるため、ほとんどの人はすでに存在しているものを使用します。 。最近の露出を考えると、より大きな露出を使用する必要があるように見えるか、独自の露出を計算できます(大きなPである必要があります)。

(a、b)は、一部のネットワークセキュリティプロトコルのポリシー、またはTLSの場合は暗号スイートの構成を除いて、定期的に再計算されません。私はその質問に答えるのに十分なTLS暗号スイートの設定に精通していません。一般に、セキュリティを向上させるために、ネットワークセッションは定期的にセッションキーを再計算する必要があります。これは通常8時間ですが、それより短くても長くてもかまいません。数学では何も再計算を必要としません、それは助言されるだけです。

8
Andrew Philips

これが私のショットです。私はそれに完全に満足していません。批判をいただければ幸いです。

少なくともpubkey/privkey。時々params。

これはうまく定義されていないと思います。しかし、私はこれをバックアップするためのソースはありません。 (誰かが私に標準のドキュメントを見せてくれるなら、私は間違って見せられて嬉しいです。何かが私にとって不確実性よりも優れています。)

TLS1.2 RFCは言っています サーバーがこれらの3つを選択できるようにします:

  struct {
      opaque dh_p<1..2^16-1>;
      opaque dh_g<1..2^16-1>;
      opaque dh_Ys<1..2^16-1>;
  } ServerDHParams;     /* Ephemeral DH parameters */

したがって、サーバーは3つのうちのいずれかを変更できます。

しかし、私は実際にサーバーの公開鍵(dh_Ys)のみが変更されると think すると思います。そして、これはべきである十分な秘密を与えるために十分です。

ただし、

  opaque dh_p<1..2^16-1>;
  opaque dh_g<1..2^16-1>;

すぐに壊れる可能性は低いです。 (2048ビットの場合と同様です。)(そして Thomas Porninが別の質問で述べました悪いDHパラメータを取得するには、故意にそれを行う必要があります。

F5の「シングルDH使用」

次に、F5のWebサイトを見て、ロードバランサーがEDHを実装する方法を見つけました。

そして、それらには Single DH use と呼ばれるオプションがあります。これは、 think がdh_p/dh_gペアを再生成します。

ここに引用があります。なぜそうしたいのか分かりません。私を混乱させます。

単一DHの使用

このオプションは、一時/一時的なDHパラメータを使用するときに新しいキーを作成します。強力な素数を使用してDHパラメータが生成されなかった場合(たとえば、DSAパラメータを使用した場合)、小さなサブグループ攻撃を防止する場合は、このオプションを使用する必要があります。強力な素数を使用した場合、ハンドシェイクのたびに新しいDHキーを生成する必要は厳密にはありませんが、これをお勧めします。一時的/一時的なDHパラメータを使用する場合は常に、単一DHの使用オプションを有効にする必要があります。

1時間ごとに生成されるF5キー

F5には次のような記事があります BIG-IP 11.4.0以降、新しい一時キーの生成は1時間ごとに発生します。

「キー」と「パラメータ」を交換可能に使用しているのではないかと思います。

CryptoPPは、「再生成されたキーペア」メソッドを一時的に呼び出します。

CryptoPPがEDHについて語る場合、グループは同じままです。キーペアは変更されます。

Citrix NetScalerよくわかりません。

繰り返しますが、私は dhparamsとdh-keypairを完全に区別しているかどうかはわかりません。

dhFile

インストールするPEM形式のDHパラメータファイルの名前と、必要に応じてパス。/nsconfig/ssl /がデフォルトのパスです。

このパラメーターは、バックエンドプロファイルの構成時には適用されません。

dhCount

クライアントとNetScalerアプライアンス間の相互作用の数。その後、DHのプライベートとパブリックのペアが再生成されます。ゼロ(0)の値は、無限の使用(リフレッシュなし)を指定します。

このパラメーターは、バックエンドプロファイルの構成時には適用されません。

最小値:0

最大値:65534

dhKeyExpSizeLimit

このオプションにより、秘密鍵サイズにNIST推奨(NIST Special Publication 800-56A)ビットサイズを使用できるようになります。たとえば、サイズが2048ビットのDHパラメータの場合、推奨される秘密鍵のサイズは224ビットです。これは256ビットに切り上げられます。

可能な値:ENABLED、DISABLED

デフォルト値:DISABLED

ここでdhKeyExpSizeLimitは私を混乱させます。その部分をユーザー定義可能にする理由を理解できません。

2
StackzOfZtuff