HTTP RSA握手分析
TLS握手过程使用RSA作为加密方法
https在tcp和http层中间加入tls协议用于解决窃听、篡改、冒充风险
1信息加密、2校验机制、3身份证书
具体流程
1clienthello
客户端向服务器发送hello请求,包含tls协议版本、一个随机数C和指定的密码套件
2serverhello
服务器向客户端返回hello,包含tls版本、一个随机数S和选择的密码套件,同时返回自己的数字证书(用来保存公钥的)和一个done
密码套件的代码格式:密钥交换算法+签名算法+对称加密算法+摘要算法
3客户端 client key exchange/ change cipher spec / Encrypted Handshake Message(Finishd)
客户端验证证书,根据CA获得公钥对签名进行解密,和证书原文hash后结果进行对比确认是否可信
再次生成一个随机数pre-master,用服务器给出的rsa公钥加密
通过client key exchange发送给服务器
服务器收到后用私钥解密,至此双方都拥有了C、S、pre-master
使用三个随机数,双方可以用相同的算法生成会话密钥,用来对称加密
客户端在生成会话密钥后,发送change cipher spec信息给服务器,告诉服务器可以使用加密通话了
客户端将上述的数据做个摘要,将Encrypted Handshake Message(Finishd)发送给服务器,让服务器做个验证以确保加密通信是否可用以及之前握手信息是否被中途篡改
4服务器 Change Cipher Spec、Encrypted Handshake Message
服务器也发送同样的操作信息给客户端,至此完成了四次握手,双方都拥有了对称密钥和非对称密钥
RSA缺陷
不支持前向保密,如果服务器私钥被泄露,则之前发送的所有信息都被破解
浙公网安备 33010602011771号