1. SSL协议的基本过程
它的基本思路就是采用公钥加密法,客户端向服务端索要公钥,用公钥加密信息,服务端收到信息后用私钥解密。
如何保证公钥不被修改?
将公钥放于数字证书中,数字证书可信,公钥就可信。
公钥加密计算量过大,如何减少耗用时间
每一次对话(session),客户端和服务端都生成一个对话密钥(session key),用它来对信息进行加密。因为对话密钥是对称加密的,所以加密速度非常快,服务器公钥只用于加密对话密钥本身。
TLS/SSL的功能实现主要依赖于三类基本算法:散列函数 Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性
SSL的基本过程:
1.客户端向服务端索要并验证公钥(握手阶段1)
2.服务端与客户端协商生成对话密钥(握手阶段2)
3.使用对话密钥进行加密通信
2. SSL协议中的握手阶段
握手阶段2.1 ClientHello
客户端向服务端发起加密通信的请求。
在这一步,客户端主要向服务端提供以下几个信息:
- 支持的协议版本
- 随机数(稍后用于和服务端生成“对话密钥”)
- 加密算法
- 压缩方法
- (未填充的)sessionID
2.1 ServerHello
服务器收到客户端发过来的请求后,向客户端发出回应。
服务端向客户端提供以下几个信息
- 确定SSL协议版本
- 随机数(稍后用于生成对话密钥)
- 压缩算法
- (已填充的)sessionID
2.2 ServerHelloDone
在完成ServerHello后,服务端会发生ServerHelloDone的信息给客户端,表示SeverHello结束了
2.3 ServerCertificate
服务端将自己的数字证书发送给客户端
2.4 客户端回应
当客户端收到服务端的数字证书的时候,会首先对数字证书进行检查,检查数字证书完整性及数字证书与域名是否相符合,然后使用加密算法生成一个随机数preMaster secret,并且通过服务端的公钥进行加密,然后发送给服务端。
它会向服务器发送以下消息:
- preMaster secret
- 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
- 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。
2.5 最后服务器的响应
服务器在收到客户端发来的preMaster secret后,计算本次会话使用的会话密钥,向客户端发送以下消息:
- 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
- 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。
网友评论