Diffie-Hellman

このシステムは、2人の対話者が、通信を聞いている侵入者なしで共有鍵を共同で生成できるという考えに基づいています。

このために二つの公開番号が選択され、それぞれの対話者は秘密の番号が選択されます。 べき乗を含む数式を使用して、各対話者は2つの公開番号とその秘密番号を使用して一連の操作を行います。 その後、対話者は結果を公に交換する。 理論的には、この関数を逆にすることは、離散対数(数を変換するために使用されるべき乗よりも高価な六分数倍)を計算するのと同じくらい困難です。 そのため、この数は、秘密の数に一方向関数を適用した結果であると言われています。

その後、両方の対話者は別々に2つの変換された数字と秘密の数字を組み合わせた数式を使用し、最終的に2つは同じ結果番号に到着し、共有キーにな

ディフィー-ヘルマン

秘密鍵を確立しようとしている二人のアリスとボブ、そして敵のマロリーのために、基本的なバージョンは次のとおりです:

  • いとこp{\displaystyle p{\displaystyle p}を設定します}
    p

    そして生成子g∈Z p∈{\displaystyle g\in\mathbf{Z}_{p}}となる。}^{*}}

    {\mathbf{Z}}_{{p}}の中のg\は、{\mathbf{Z}}_{{p}}^{{*}}

    (). これらは、当事者アリスとボブだけでなく、敵マロリーにだけでなく、知られている、公開されています。

  • アリスはa∈Z p−1{\displaystyle a\in\mathbf{Z}_{p}}を選ぶ-1}}
    {\mathbf{Z}}_{{p}}の中に\を入れてください。-1}}

    ランダムに、A=g a mod p{\displaystyle A=g^{a}\;{\bmod{\;}}p}

    A=g^{{to}}\;{\bmod{\;}}p}を計算する \;P

    となり、A{\displaystyle A}

    を

    Bob

  • Bobはb≤Z p−1{\displaystyle b\in\mathbf{Z}_{p}}を選択する。-1}}
    {\mathbf{Z}}_{{p}}の中のb\は、{\mathbf{Z}}_{{p-1}}

    ランダムにB=g b mod p{\displaystyle B=g^{b}\;{\bmod{\;}}p}

    B=g^{{b}}\;{\bmod\;}p

    を計算し、B{\displaystyle B}

    B

    Alice

を送る。Aとbの両方が値K=g⋅b mod p{\displaystyle k=g^{a\cdot b}\;{\bmod{\;}}pで計算できることに注意してください}

K=g^{{a\cdot b}}\;{\bmod\;}p

。 En efecto, lo podemos demostrar usando las propiedades del grupo Z p ∗ {\displaystyle \mathbf {Z} _{p}^{*}}

{\mathbf {Z}}_{{p}}^{{*}}

: Para Alice: B a mod p = ( g b mod p ) a mod p = ( ( g b mod p ) ( g b mod p ) ⋯ ( g b mod p ) ⏞ a ) mod p = g b ⋅ a mod p = g a ⋅ b mod p = K {\displaystyle B^{a}\;\;{\bmod {\;}}\;p=(g^{b}\;{\bmod {\;}}p)^{a}\;{\bmod {\;}}p=(\overbrace {(g^{b}\;{\bmod {\;}}p)(g^{b}\;{\bmod {\;}}p)\cdots (g^{b}\;{\bmod {\;}}p)} ^{a})\;{\bmod {\;}}p=g^{b\cdot a}\;{\bmod {\;}}p=g^{a\cdot b}\;{\bmod {\;}}p=K}

B^{{a}}\;\;{\bmod \;}\;p=(g^{b}\;{\bmod \;}p)^{a}\;{\bmod \;}p=(\overbrace {(g^{b}\;{\bmod \;}p)(g^{b}\;{\bmod \;}p)\cdots (g^{b}\;{\bmod \;}p)}^{a})\;{\bmod \;}p=g^{{b\cdot a}}\;{\bmod \;}p=g^{{a\cdot b}}\;{\bmod \;}p=K

Para Bob: A b mod p = ( g a mod p ) b mod p = ( ( g a mod p ) ( g a mod p ) ⋯ ( g a mod p ) ⏞ b ) mod p = g a ⋅ b mod p = K {\displaystyle A^{b}\;{\bmod {\;}}p=(g^{a}\;{\bmod {\;}}p)^{b}\;{\bmod {\;}}p=(\overbrace {(g^{a}\;{\bmod {\;}}p)(g^{a}\;{\bmod {\;}}p)\cdots (g^{a}\;{\bmod {\;}}p)} ^{b})\;{\bmod {\;}}p=g^{a\cdot b}\;{\bmod {\;}}p=K}

A^{{b}}\;{\bmod \;}p=(g^{a}\;cd g^{a}pは、cd g^{a}pとcd g^{b}pの間のg g^{a}pとg g^{a}pの間のg g^{a}pの間のg g^{a}pの間のg g^{a}pの間のg g^{a}pの間のg g^{a}pの間のg g^{a}pの間のg g^{a}pの間のg g^{a}pの間のg g^{a}pの間のg g^{a}pの間のg g^{a}pの間のg g^{a}bの間のg g^{a}bの間のg g^{a}pの間のg g^{a}bの間のg g^{a}pの間のg g^{a}bの間のg g^{a}bの間のg g^{a}bの間のg g^{a}bの間のg g^{a}9867>

両当事者がk{\displaystyle k{\displaystyle k}を計算することができるように}

K

、それを共有キーとして使用できます。

attacksEdit

Passive attacksEdit

P、g、A、Bを持つマロリーの敵は、プライベート値(aまたはb)のいずれかを持っていれば、共有秘密を計算することができます。 AまたはBの逆関数からaまたはbを得る(A=l o g d i s c p⁡(A){\displaystyle a=\operatorname{log\;disc}_{p}(A)})}

a=\operatorname{log\;disc}_{p}(A)

and b=l o g d i s c p⁡(B){\displaystyle b=\operatorname{log\;disc}_{p}(B)}

b=\operatorname{log\;disc}_{p}(B)}

b=\operatorname{log\;disc}_{p}(B){\displaystyle b=\operatorname{log\;disc}_{p}(B)}

\;ディスク}_{p}(B)

)は、Z p∈{\displaystyle\mathbf{Z}_{p}の離散対数の問題である。}^{*}}

{\{{P}}_{{P}}_{{P}}_{{P}}^{{*}}

, pが200桁以上の素数で、一定の特性を満たさないときに計算上困難であると考えられる問題。

アクティブ攻撃編集

プロトコルはアクティブな中間者攻撃に敏感です。 通信が第三者によって傍受された場合、通信の参加者の身元を検証するためのメカニズムがないため、これは送信者が受信者に直面しているとし したがって、”真ん中の男”は、各参加者との鍵に同意し、それらの間でデータを中継し、両方向の会話を聞くことができます。 対称的な通信が確立されると、攻撃者は気付かないように、途中でトラフィックを傍受して変更し続ける必要があります。 攻撃が動作するためには、攻撃者が使用される対称暗号化方式を知っている必要があることに注意してください。 対称暗号化アルゴリズムの隠蔽に頼ることは、Kerckhoffsの原則に準拠していません(システムの有効性は、その設計残りの秘密に依存すべきではありません)。

Diffie-Hellmanへの中間者攻撃。

この種の攻撃を回避するには、通常、次のいずれかまたは複数の手法が使用されます:

  • 時間制御。
  • 当事者の事前認証。 たとえば、基になるレイヤプロトコル認証で使用します。 最初にTLS接続を確立し、その層にDiffie-Hellmanアルゴリズムを適用することができます。
  • コンテンツの認証。 たとえば、メッセージの内容に対してMACを使用できます。
  • (非対称)公開鍵アルゴリズムで公開鍵を暗号化し、中間者の問題を回避し、公開鍵が0と1以外であることを確認します。
  • AliceまたはBobのいずれかが安全なチャネルを維持する第三者(Carol)を使用しています。 このサードパーティは、AliceまたはBobがリッスン/変更されている場合、両方のテストに挑戦するだけで、man-in-the-middle

を検出できます。otro.Si MalloryはAlice-Bob通信を誤表示し、Alice-Carolも誤表示しますが、Bob-Carol secureチャネルを誤表示することはできず、検出されます。また、Alice-BobとBob-Carolを誤って表現した場合、Alice-Carolを誤って表現することはできません(定義上、他の2つのチャネルがMalloryによって誤って表現されていても、3つ つまり、Diffie-Hellmanメソッドは、以前にセキュリティで保護されたノードから100%セキュリティで保護されたマルチノードネットワークを作成できます。 この方法は、安全でないと疑われるチャネルをテストするためにも使用されます。

→ {\displaystyle\rightroarrowth}}

\rightaro

← {\———–}

\leftarrow

=

アリス
カルク
p、g
ga mod p
(gb mod p)a mod p
すべて
カルク
p、g
b
gbモッズp
(ga mod p)b mod p
  1. アリスとボブは素数p=23と底g=5を使用することに同意します。
  2. アリスは秘密の番号a=6を選択し、ボブ(ga mod p)
    • 56mod23=8を送信します。
  3. ボブは秘密の番号b=15を選択し、アリス(gb mod p)
    • 515mod23=19を送信します。
  4. アリスは(gb mod p)をmod p
    • 196mod23=2に計算します。
  5. ボブは(ga mod p)b mod p
    • 815mod23=2を計算します。

暗号化実装の例編集

この例の必要性は次のとおりです。Bobは暗号文をAliceに送信する必要がありますが、暗号化キーは共有しません。 彼はどのようにそれを行うのですか?

  1. アリスは秘密の数a=6、素数p=23、基底g=5を選びます。 次に、ボブ・アリスの公開鍵(ga mod p)、p、g:
    • 56mod23=8を送信します。
    • 23
    • 5
  2. ボブは秘密番号b=15を選択し、共通暗号化鍵(ga mod p)b mod p
    • 815mod23=2を計算します。
  3. Bobは、生成された暗号化キーを使用して、AESなどの対称暗号を使用して平文を暗号化します。
  4. 暗号化されたテキスト=対称暗号(平文,2)
  5. BobはAliceに暗号化されたテキストとBobの公開鍵(gb mod p)
    • 515mod23=19を送信します。
  6. アリスは(gb mod p)をmod p
    • 196mod23=2に計算します。
  7. Aliceは、生成された暗号化キーを使用して、Bob
  8. Cleartext=Symmetric Decryptor(Encrypted text)によって送信されたデータを復号化します, 2 )

この例を安全にするには、a、b、およびpの値をはるかに大きくする必要があります。 Gab mod23のすべての可能な値をテストするのは非常に簡単なので(aとbが大きい数値であっても、最大で22の値があります)。

明らかに、AliceがBobに暗号化された情報を送信する必要性も実装によってカバーされています。

Leave a Reply