Skip to main content

DH

Diffie–Hellman

DH Key Exchange

VariableDescriptionPropertyValue
gGenerator / Basepublic, primitive root modulo p (p的原根)Usually = 2, 3, 5
pModuluspublic, primeUsually >= 1024 bits
aAlice's private key1 <= a <= p-1
bBob's private key1 <= b <= p-1
AAlice's public keyA = gᵃ mod p
BBob's public keyB = gᵇ mod p
sSecret key (for encrypt / decrypt)privates = gᵃᵇ mod p

算法目的:找一個只有 Alice 及 Bob 知道的值 s

  • 只知道密鑰交換中傳送的值 g, p, A, B,很難計算出 a, b, s 的值 (Discrete logarithm 離散對數)

s 賦值為 s = gᵃᵇ mod p,則

s = gᵃᵇ mod p = gᵇᵃ mod p

Modulo Distributive 模除 分配律

s = (gᵃ mod p)ᵇ mod p = (gᵇ mod p)ᵃ mod p
  • A = gᵃ mod p 設為 Alice's public key
  • B = gᵇ mod p 設為 Bob's public key
  • 因為 s = Aᵇ mod p = Bᵃ mod p,所以
    • Alice 可以用 Ba 值計算 s
    • Bob 可以用 Ab 值計算 s
  • 公開傳送 g, p, A, B 是安全的
    • 只有 g, p, A 值很難計算出 a 的值 (Discrete logarithm 離散對數)
    • 只有 g, p, B 值很難計算出 b 的值 (Discrete logarithm 離散對數)

密鑰交換過程

  • Alice 傳送 g, p, A 的值給 Bob,Bob 可以計算 Aᵇ mod p 得到 s
  • Bob 傳送 B 值給 Alice,Alice 可以計算 Bᵃ mod p 得到 s
  • Alice 和 Bob 都取得了 s

DH group

DH 位數、算法的 Standard

  • MODP (Modular exponentiation)
  • EC2N (Elliptic Curve over GF[2^N])
    • uncommon
DH GroupAlgorithm
DH Group 1MODP 768-bit
DH Group 2MODP 1024-bit
DH Group 3EC2N group on GP[2^155]
DH Group 4EC2N group on GP[2^185]
DH Group 5MODP 1536-bit
DH Group 14MODP 2048-bit
DH Group 15MODP 3072-bit
DH Group 16MODP 4096-bit
DH Group 17MODP 6144-bit
DH Group 18MODP 8192-bit