参考博客:https://blog.youkuaiyun.com/zzminer/article/details/8571289
在SSL/TLS协商秘钥过程中,一般会采取两种算法:RSA和DH。
RSA算法主要是通过公钥证书和私钥证书来进行加解密。当服务端向客户端发送Certificate之后,客户端生成公共秘钥,再用服务端的公钥进行加密,通过Client Key Exchange消息发送给服务端,服务端收到消息后,用自己的私钥进行解密,大家就完成了公共秘钥协商过程。
DH算法主要是通过公式 B a mod p=(gb)a modp=gabmod p = (ga)bmodp = Ab mod p 来协商公共秘钥。那么双方必须都知道g、p、A、B参数。DH的步骤如下:
1. Alice和Bob先对p 和g达成一致,而且公开出来。Eve也就知道它们的值了。
2. Alice取一个私密的整数a,不让任何人知道,发给Bob 计算结果:A=ga modp. Eve 也看到了A的值。
3. 类似,Bob 取一私密的整数b,发给Alice计算结果B=gb mod p.同样Eve也会看见传递的B是什么。
4. Alice 计算出S=B a mod p=(gb)a modp=gabmod p.
5. Bob 也能计算出S=Ab mod p=(ga)bmodp=gabmod p.
6. Alice 和 Bob 现在就拥有了一个共用的密钥S.
7. 虽然Eve看见了p,g, A and B, 但是鉴于计算离散对数的困难性,她无法知道a和b 的具体值。所以Eve就无从知晓密钥S 是什么了。
所以在DH协商过程中会有Server Key Exchange和Client Key Exchange两个消息,这是为了交换g、p、A、B参数


1647



被折叠的 条评论
为什么被折叠?



