我正在做一个项目,其中 Alice 和 Bob 使用 Diffie-Hellman 密钥交换相互发送消息。让我陷入困境的是如何将他们正在使用的证书合并到其中,这样我就可以获得他们的秘密消息。
根据我对 MIM attakcs 的了解,MIM 充当冒名顶替者,如下图所示:
以下是我的项目的详细信息。我知道他们在沟通之前都同意了 g 和 p,但是我如何能够在他们都有证书来验证他们的签名的情况下实现这一点?
Alice 准备 ⟨signA(NA, Bob), pkA, certA⟩ 其中 signA 是 Alice 使用的数字签名算法,“Bob”是 Bob 的名字,pkA 是 Alice 的公钥,等于 gx mod p 根据 X 编码。 509 用于 Diffie-Hellman 密钥交换中指定的固定 g,p,并且 certA 是 Alice 的证书,其中包含验证签名的 Alice 的公钥;最后,NA 是一个 8 字节长的随机数(随机字符串)。
Bob 检查 Alice 的签名,并用 ⟨signB{NA,NB,Alice},pkB,certB⟩ 回复。Alice 收到消息,她检查她的 nonce NA 并根据 Diffie-Hellman 密钥交换基于 pkA、pkB 计算联合密钥。然后 Alice 将消息 ⟨signA{NA,NB,Bob},EK(MA),certA⟩ 提交给 Bob 和 Bobrespondswith⟨SignB{NA,NB,Alice},EK(MB),certB⟩。
其中 MA 和 MB 是它们对应的秘密消息。