ECDHE算法加密的TLS
DH算法
非对称加密算法,核心思想离散对数
对数是指数的逆运算,再加上模运算之后,在知道模的情况下,可以通过指数和底数算出真数,而很难通过真数和底数反推指数
DH的密钥交换:
先确定底数和模数,这是公开的双方都知晓的
双方再各自生成一个随机数作为私钥,记为a和b
双方使用底数和模数,以私钥作为指数计算出真数作为公钥A和B
此时双方就可以交换公钥了,即便外人知道公钥也没法推出私钥
此时A拥有了P G a A B ,B拥有了P G b A B
由于对数幂运算有交换率,因此 B ^ a ( mod P )的结果和 A ^ b ( mod P )的结果相同,双方就计算得到了对称密钥K
DHE算法
e的意思是ephemeral(临时性的),双方每次计算都随机生成私钥,避免固定的私钥泄露,就具备了向前安全性
ECDHE算法
有抢跑的特征
第一次握手
clienthello,包含客户端随机数c,版本号和支持的密码套件列表
第二次握手
serverhello,包含服务器随机数s,版本号和选择的密码套件列表,这里使用ECDHE算法
Certificate,数字证书
Server Key Exchange,选择了x25519的椭圆曲线,生成随机数作为私钥,根据椭圆曲线基点G和私钥计算出服务器椭圆曲线公钥发送给客户端
server hello done
目前客户端和服务端通过明文共享了这几个信息:Client Random、Server Random 、使用的椭圆曲线、椭圆曲线基点 G、服务端椭圆曲线的公钥
第三次握手
Client Key Exchange,客户端也生成一个随机数作为私钥,通过椭圆曲线信息生成一个客户端椭圆曲线公钥,发送
根据椭圆曲线和公私钥,双方能够计算出一个点(x,y),其中x是相同的,再通过客户端随机数+服务端随机数+x得到一个真正的会话密钥
计算好之后客户端发送Change Cipher Spec和Encrypted Handshake Message
第四次握手
服务端也会有一个同样的操作,发Change Cipher Spec和Encrypted Handshake Message
浙公网安备 33010602011771号