鍵交換アルゴリズムdh
いくつかのタイプの鍵交換/ネゴシエーションメカニズム
非対称暗号化アルゴリズムに依存する
原則:公開鍵を取得した当事者は、最初にランダムなセッション鍵を生成し、次にそれを公開鍵で暗号化し、次に暗号化結果を相手方に送信し、相手方は秘密鍵を使用して復号化します。したがって、両方の当事者がセッションキーを取得します。
例:RSA
専用の鍵交換アルゴリズムに依存する
原則:下の写真を参照してください
例:DHアルゴリズムとその変形(ECDHアルゴリズム)
DHアルゴリズム
DHアルゴリズムは、2つの当事者が直接鍵を渡さない場合に鍵交換を完了するという問題を解決します。この魔法の交換原理は、数学的理論によって完全にサポートされています。
1.アリスは509などの1つの素数p、5などの基数gを選択し、123などの乱数a を計算してから、A = g ^ a mod p = bcmod(bcpow(5,123)、509)= 215を計算します。 アリスは[p = 509、g = 5、a = 123、A = 215]になり、p、g、Aをボブ 2に送信します。ボブがp = 509、g = 5を受信したら、乱数b = 456を選択して B = g ^ b mod p = bcmod(bcpow(5,456)、509)= 181 を計算してs = A ^ bを計算しますmodp = bcmod(bcpow(215,456)、509)= 121 ボブは[p = 509、g = 5、b = 456、B = 181、s = 121、A = 125] ボブはB = 181をアリス 3に送信します。 アリスは[p、g、a、A、B]を持っています。アリスは s = B ^ amodを計算します。 p = bcmod(bcpow(181,123)、509)= 121
したがって、両当事者が交渉するキーは121です。このキーはネットワーク上で送信されないことに注意してください。ネットワークを介して送信されるp、g、A、およびBは、実際のアルゴリズムによって選択される素数が非常に大きいため、sの計算には使用できません。
したがって、より正確には、DHアルゴリズムは鍵共有アルゴリズムであり、両者は最終的に共通の鍵をネゴシエートし、この鍵はネットワークを介して送信されません。
aをAの秘密鍵、AをAの公開鍵、bをBの秘密鍵、BをBの公開鍵と見なす場合、DHアルゴリズムの本質は、両方の当事者が独自の秘密鍵と公開鍵を生成することです。、秘密鍵は自分だけに表示され、公開鍵が交換され、最終的な秘密鍵secretKeyは、自分の秘密鍵と相手の公開鍵に従って生成されます。DHアルゴリズムは、両方の当事者によって計算された秘密鍵が数学の法則を通して同じです。
しかし、DHアルゴリズムは仲介者を解決しません***。つまり、両方の当事者は、彼らとの通信が本当に相手であるかどうかを確認できません。仲介者を排除する***には他の方法が必要です
- DHアルゴリズムは、通信の両当事者が安全でないチャネルを介してキーをネゴシエートし、対称暗号化送信を実行するキー交換プロトコルです。
- DHアルゴリズムは仲介者を解決しません***。
ただし、DHアルゴリズム自体には欠点があります。認証をサポートしていません。
つまり、「のぞき見」と戦うことはできますが、「改ざん」と戦うことはできません。当然、「中間者*** / MITM」(ID認証の欠如)と戦うことはできません。 *** / MITM "")
ECDHE
1.クライアントは、ランダム乱数生成
Ra
演算をPa(x, y) = Ra * Q(x, y)
し、サーバにPA(x、y)を送信しQ(x, y)
、世界中の認識一定の楕円曲線アルゴリズムの基点のため2.サーバーがランダムにランダムな値を生成し
Rb
計算をしてPb(x,y) = Rb * Q(x, y)
されPb(x,y)
、クライアントに送信3.クライアントコンピューティング
Sa(x,y) = Ra * Pb(x,y)
サーバーコンピューティングSb(x,y) = Rb *Pa(x,y)
4.アルゴリズムが保証され
Sa = Sb = S
、Sのxベクトルがキー(プリマスターキー)として抽出されます。