mmmszdsad

  1. 首先通信双方在交换协议前每一方都有一个用于签名的非对称密钥对,这个用来做签名认证,密钥对的公钥需要在会话开始前共享,即会话前,Alice的签名非对称密钥对$(P_A, S_A)$, 其中公钥$P_A$全局公开,Bob的签名非对称密钥对$(P_B, S_B)$,其中公钥$P_B$全局公开
  2. 双方约定大素数$q$和它的一个本原根$\alpha$, 其中$\alpha

会话过程(注意:如果其中某一个步骤未完成,则整个协议交换过程停止):

  1. Alice随机产生一个数(私钥) $x$,$x < q$,并计算公钥$Y_A = \alpha^x \bmod q$, 发送给Bob。
  2. Bob随机产生一个数(私钥) $y$,$y
  3. Bob 会话密钥:$$K = Y_A^y \bmod q = (\alpha^x \bmod q)^y \bmod q = \alpha^{xy} \bmod q$$
  4. Bob计算$(\alpha^y, \alpha^x)$的hash, 然后使用非对称私钥$S_B$对该hash进行签名,然后使用会话密钥K对该签名进行加密,Bob将加密后的签名$E_K(S_B(\alpha_y, \alpha^x))$及公钥$\alpha^y$发送给Alice
  5. 此时, Alice手握Bob发过来的公钥$Y_B$,结合自己的私钥x计算会话密钥:$$K = Y_B^x \bmod q = (\alpha^y \bmod q)^x \bmod q = \alpha^{xy} \bmod q$$
  6. Alice使用会话密钥K解密签名消息,再用Bob的签名公钥$P_B$验证Bob的签名。
  7. Alice计算$(\alpha^x, \alpha^y)$的hash, 然后使用非对称私钥$S_A$对该hash进行签名,然后使用会话密钥K对该签名进行加密,Alice将加密后的签名$E_K(S_A(\alpha_x, \alpha^y))$发送给Bob。
  8. Bob利用会话密钥和Alice的公钥$P_A$解密并验证Alice的签名

以上所有步骤顺利完成之后Alice与Bob相互认证,并且拥有了共享密钥,K,密钥K可由于加密进一步的通信,该算法的过程如下图所示


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部