P9 在这个习题中,我们探讨 Diffie-Hellman(DH) 公钥加密算法,该算法允许两个实体协商一个共享的密钥。该 DH 算法利用一个大素数 p 和另一个小于 p 的大数 g。p 和 g 都是公开的(因此攻击者将知道它们)。在 DH 中,Alice 和 Bob 每人分别独立地选择秘密密钥 Sa 和 Sb。Alice 则通过将 g 提高到 Sa 并以 p 为模来计算她的公钥 Ta。类似滴,Bob 则通过将 g 提高到 Sb 并以 p 为模来计算他的公钥 Tb。此后 Alice 和 Bob 经过因特网交换他们的公钥。Alice 则通过将 Tb 提高到 Sa 并以 p 为模来计算出共享密钥 S。类似地,Bob 则通过将 Ta 提高到 Sb 并以 p 为模来计算出共享密钥 S'。
-
a.
- 1、A 和 B 共享素数 p 和 p 的本原根 g
- 2、A 选随机数 A 计算
g^A mod p = Ya
然后发送给 B - 3、B 选随机数 B 计算
g^B mod p = Yb
然后发送给 A - 4、A 收到 Yb 后,计算
Yb^A mod p = Ka
- 5、B 收到 Ya 后,计算
Ya^B mod p = Kb
- 由于
Ka = Yb^A mod p = (g^B mod p)^A mod p = g^(AB) mod p
- 由于
Kb = Ya^B mod p = (g^A mod p)^B mod p = g^(AB) mod p
- 综上所述
Ka = Kb
-
b.
- 1、对于 p = 11 和 g = 2,A 和 B 选取的随机数应该在 1 ~ p-2 的闭区间中。
- 2、A 选取随机数 A = 5,那么
Ya = g^A mod p = 2^5 mod 11 = 10
- 3、B 选取随机数 B = 8,那么
Yb = g^B mod p = 2^8 mod 11 = 3
- 4、A 收到 B 的随机数后计算
Ka = 3^5 mod 11 = 1
- 5、B 收到 A 的随机数后计算
Kb = 10^8 mod 11 = 1
-
c.
- 见上
-
d.