# Challenge 35: 实现带协商群组的 DH,并使用恶意的 "g" 参数进行破解 协议流程: **A->B** 发送 "p", "g" **B->A** 发送 ACK **A->B** 发送 "A" **B->A** 发送 "B" **A->B** 发送 AES-CBC(SHA1(s)[0:16], iv=random(16), msg) + iv **B->A** 发送 AES-CBC(SHA1(s)[0:16], iv=random(16), A's msg) + iv 再次进行中间人攻击,但这次操控 "g"。尝试以下情况会发生什么: ``` g = 1 g = p g = p - 1 ``` 为每种情况编写攻击代码。 ## 这种情况何时会发生? 老实说,在真实世界的系统中并不常见。如果你能操控 "g",很可能你能操控更严重的东西。大多数系统会预先约定一个静态的 DH 群组。但是相同的构造存在于椭圆曲线 Diffie-Hellman 中,在那里这变得更加相关。