一、背景
网上购物涉及账户安全信息等,需要使用安全传输才能保障账户的安全,这时就引入了SSL/TLS的概念
它与HTTPS的联系如下:
HTTPS = HTTP + SSL/TLS
二、SSL/TLS解决的几个问题及相关技术
1.确保数据在发送过程中不易被窃听
数据机密性问题需要:
(1) 对称密码
(2) 密钥不能被攻击者预测,需要伪随机数生成器产生密钥
(3) 公钥密码或Diffie-Hellman密钥交换
2.确保数据完整性
(1) 消息认证码对数据进行认证,使用单向散列函数来实现
3.服务器认证
使用公钥加上数字签名所生成的证书
三、TLS协议
1.TLS协议包括TLS记录协议和TLS握手协议
2.TLS记录协议位于TLS协议的下层,负责使用对称密码对消息进行加密通信、压缩和数据认证
3.TLS记录协议的处理过程
其中报头 = 数据类型 + 版本号 + 压缩后的长度
4.TLS握手协议负责生成共享密钥和交换证书,过程如下:
(1) 客户端向服务器发送ClientHello消息
(2) 服务器响应ServerHello消息
(3) 服务器向客户端下发证书信息
(4) 当证书消息不足以满足认证需求时,服务器会再次发送ServerKeyExchange消息
(5) 如有必要,服务器向客户端请求证书验证客户端身份
(6) 服务器完成ServerHello响应
(7) 客户端向服务器发送证书
(8) 客户端向服务器发送预备主密码(一串随机数),该主密码使用服务器的公钥进行了加密,根据此预备主密码,客户端和服务器会生成相同的主密码,然后根据主密码生成以下比特序列:
a.对称密码的密钥
b.消息认证码的密钥
c.对称密码的CBC模式中使用的初始化向量
(9) 客户端向服务器表示自己是证书持有人
(10) 客户端准备切换密码
(11) 握手协议结束
(12) 服务器向客户端表示切换密码
(13) 服务器发送finish表示握手协议结束
(14) 切换到应用数据协议,使用协商的密钥进行对称加密进行通信
四、主密码
1.主密码的计算
最后:
1.通过四次握手得到三个随机数
为什么这样做?
因为这样可以保证每次得到的随机数足够随机
2.客户端用服务端公钥加密后续将要加密通信的用来计算对称密钥的预备密钥
怎样保证该公钥就是此时通信的服务器的?
使用证书下发服务器的公钥,在此之前浏览器利用证书中的数字签名来校验此证书的合
法性
3.服务器用私钥解密客户端传上来的加密密钥
4.后续通过次密钥进行通信