密钥交换是SSL/TLS握手中的重要内容:
密钥的协商和交换是TLS的一个关键,在握手过程中这是关键的也是耗时的一个步骤。密钥交换中有2个重点问题:
(1)密钥周期要尽可能短,最好是1次会话用1个密钥。
(2)密钥不能明文传输,一旦被窃听所有的努力都将白费。
看起来很矛盾,交换密钥是为了加密,而不传递密钥就无法实现加密传输,死循环了。为了解决这个问题我们就要使用非对称加密算法了,它的特点是一对密钥,公钥和私钥,公钥加密的数据,只用私钥能解密。非对称算法有RSA算法,DSA算法。除了非对称算法还可以使用DHE算法和基于DHE改进的ECDHE算法。我们用RSA算法来举例说明一下这个过程:
我们可以考虑使服务器拥有私钥和公钥,然后给每个客户端发送公钥,服务器把自己公钥以明文形式的发给客户端;然后客户端自己生成一个密钥,再用公钥加密这个密钥,要点是——这个加密的结果,只有私钥能解密,而私钥只在服务器端,也就是说,被非对称加密的密钥只能由服务器端解密;这样就完成了密钥交换,而且密钥不用以明文形式传输,其安全性是基于非对称加密算法的,非对称算法是基于某个数学难题的(私钥在服务器端,公钥一般在证书中)。如下:
(1):A对服务器B发起请求,B首先把公钥(包含在证书中)发给A(明文传输,