密钥协商基础知识

不同的密钥协商算法

TLS-RSA这种算法,客户端指定副主密钥,然后加密传输

TLS-RSA:在这个场景下,PreMasterSecret是由客户端指定的,并用RSA公钥加密发送给服务器。服务器不影响PReMasterSecret的生成。

TLS-DH算法,DH算法协商密钥开销很大

TLS-DH:基于DH的密钥交换也被称为静态Diffie-Hellman。在这种场景下,可能是双方各自提交一个证书包含DH公开值,或者服务器端提交证书包含DH公开值,客户端在每次会话中选择一个值。协商好的DH值被用作PreMasterSecret。显然证书中的参数是固定的,那么每次链接的PreMasterSecret也是相同的。

TLS-DHE密钥交换算法具有前向安全性

TLS-DHE:基于DHE的TLS握手中会有ServerKeyExchange消息。握手过程中交换参数的认证通过数字签名来实现,支持的签名算法包括RSA和DSS。DH参数会有它的数字签名一起被包含在ServerKeyExchange中被发送出去。客户端在ClientKeyExchange中返回它的公开DH参数,但没有签名保护。同样协商出来的DH密钥被用作PreMasterSecret。

前向安全性

现在使用的DHE或者ECDHE可以保证协议的前向安全性,前向安全是指长期使用的主密钥在泄露的时候,也不会导致过去的会话密钥泄露,过去的会话通讯依然是安全的,不会收到任何的影响,即便系统遭到主动攻击也是如此。
在TLS安全传输协议中,就已经使用了前向安全通信,主要体现在不同的密钥交换算法,不同的密钥协商算法对应不同的握手过程。 前向安全的密钥协商算法在会多一个serverkeyexchange的握手。

小结

本质上,关于密钥协商算法,一种是RSA密钥协商,RSA协商无非就是服务器将自己证书提供者客户端,客户端通过验证证书,然后提取出来公钥,然后通过公钥加密一个客户端自己提出的私钥,传输给服务器后,服务器提取出来。另一种是DH算法,DH算法可以全程透露自己的信息,DH算法不支持身份认证,必须结合签名算法使用,比若说RSA,DSA签名算法,常见的就是DH-RSA,DH-DSA等等。

  • DH算法,双方先协商好使用什么的算法,算法参数,双方各自选定一个秘密的自然数作为随机数,可以称这个自然数为私钥,然后计算生成另一个可以共享的参数,这个参数可以称之为公钥,双发相互交换自己的公钥,然后大家可以计算出共享的密钥。
  • DH算法是依赖离散对数的难题,ECDH算法是依赖椭圆曲线离散对数的难题,RSA算法是依赖大数的因子分解这个难题,对于DH和ECDH的改进算法是DHE和ECDHE两种算法,这两者算法主要是每次会话都重新协商一种密钥,且密钥用完就丢弃。

一些安全算法的组合
密钥协商基础知识_第1张图片

你可能感兴趣的:(security)