web-dev-qa-db-ja.com

TLSのDHEとECDHEの(クライアントとサーバーの)パフォーマンスの違いは何ですか?

私の質問は、(EC)DHEのクライアントとサーバーのパフォーマンスについてです。理解が困難です この図 (これは、Ivan Risticの著書「Bulletproof SSL and TLS」の数値に基づいています)。

3行目の「RSA 2048、DHE 2048」から始めましょう。署名の作成は検証とは異なるため、クライアントとサーバーの計算時間が異なることを理解できます。

ECDHEはDHEよりも高速であるため、2行目の数値は3行目の数値よりも小さいことを理解しています。

私の質問は:

  1. DHEとECDHEの作業は、クライアントとサーバーで同じですよね。
  2. 「RSA 2048、ECDHE 256」のクライアントの計算時間はサーバーよりも短いのに、「RSA 2048、DHE 2048」の計算時間は逆になるのはなぜですか。
6
HorstKevin

DHEはモジュラー演算を使用して共有秘密を計算します。 ECDHEは代数曲線を使用してキーを生成するため、計算、ストレージ、およびメモリの要件が低くなります。

DHEはECDHEよりもかなり低速です。ここに実際の数値が必要な場合は、次のとおりです。

Key exchange    Parameters               Transactions/sec
DHE-RSA         1024-bit RSA key,
                1024-bit DH parameters        347.64

ECDHE-RSA       1024-bit RSA key,
                192-bit ECDH parameters       612.25


DHE-RSA         1776-bit RSA key, 
                1776-bit DH parameters        97.62

ECDHE-RSA       1776-bit RSA key,
                192-bit ECDH parameters       349.53

ご覧のとおり、ビット数を増やすと、DHEのパフォーマンスペナルティが大幅に増加します。あなたが本当に両方の世界のベストを望んでいるなら、あなたはECDHE-ECDSAを使うことができ、あなたは前方秘密性と効率の両方を持っています。

ここ 関連情報を提供する他の独立した結果を見つけることができます。

努力はまったく同じではありません。クライアントが問題になることはありません。サーバーでのパフォーマンスの違いのみがわかります(1つのサーバーと多くの可能なネゴシエーションクライアントがあるため、1つのクライアントと1つのサーバーの場合のみ、労力は等しくなります)。

-編集-

したがって、結論を述べると、1. 1人のクライアントに対してはい。明らかな理由により、同時クライアント数が増えるほどではありません。 2.両方の仮定が正しくありません。同一のマシンでは、計算時間はどちらの場合も同じになります。

2
Overmind

RSAは、クライアントとサーバーが必要とする計算作業に不幸な不均衡があります。

通常、サーバー証明書では公開指数がはるかに小さく選択されるため、クライアントが提供する暗号化を解読するとき、サーバーはより多くの作業を行う必要があります。秘密係数 'd'は小さすぎてはなりません(Boneh&Durfee: 秘密鍵dがN ^ 0.292未満のRSAの暗号解析 )。

これは、クライアントが少数のモジュラー乗算を実行するだけで済み、二乗乗算最適化を使用できるという効果がありますが、サーバーは大きなプライベート指数で指数を実行する必要があります。

幸い、サーバーは秘密鍵についてより多くの知識を持っているので、中国剰余定理(CRT)最適化を使用でき、係数nによる高価な指数を2に分割できます。モジュラ指数を実行するコストは、係数のビット数の3乗によって増加します。 2つの指数計算(mod pおよびmod q)したがって、より効率的です( 詳細 )。しかし、それでもクライアントがやらなければならないよりもはるかに多くの作業です。そして、サーバーはRSAブラインドを実行してタイミング攻撃から保護する必要もあります

(現在、DHEまたはECDHEの場合はなぜそれが逆になるのかはわかりません。ECの場合、曲線のパラメーターをチェックする必要性に関連していると思います)

0
eckes