DH
Diffie–Hellman
DH Key Exchange
| Variable | Description | Property | Value |
|---|---|---|---|
g | Generator / Base | public, primitive root modulo p (p的原根) | Usually = 2, 3, 5 |
p | Modulus | public, prime | Usually >= 1024 bits |
a | Alice's private key | 1 <= a <= p-1 | |
b | Bob's private key | 1 <= b <= p-1 | |
A | Alice's public key | A = gᵃ mod p | |
B | Bob's public key | B = gᵇ mod p | |
s | Secret key (for encrypt / decrypt) | private | s = 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 可以用
B和a值計算s - Bob 可以用
A和b值計算s
- Alice 可以用
- 公開傳送
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 Group | Algorithm |
|---|---|
| DH Group 1 | MODP 768-bit |
| DH Group 2 | MODP 1024-bit |
| DH Group 3 | EC2N group on GP[2^155] |
| DH Group 4 | EC2N group on GP[2^185] |
| DH Group 5 | MODP 1536-bit |
| DH Group 14 | MODP 2048-bit |
| DH Group 15 | MODP 3072-bit |
| DH Group 16 | MODP 4096-bit |
| DH Group 17 | MODP 6144-bit |
| DH Group 18 | MODP 8192-bit |