SSL/TLS再分析

SSL:安全套接字层,主要是保障数据传输的安全,当前的版本为3.0。它具体又分为两层:

  • SSL记录协议:直接建立在传输协议层上,主要支持数据的封装、压缩、加密认证等功能的支持
  • SSL握手协议:建立在记录协议之上,主要是在实际的数据传输开始前,进行握手、协商加密算法和密钥等

TLS:传输层安全协议,是SSL的升级版本,基于3.0

SSL/TLS的主要服务可总结如下:

  • 通信双方的身份认证
  • 通信数据的加密(防止窃听)
  • 数据完整性校验(防止被修改)

握手过程——密钥协商过程【单向认证】

客户端发出请求
  • 提供客户端支持的安全协议层的协议版本,如SSL 3.0
  • 提供客户端支持的压缩、加密算法供服务端选择(因为每个客户端支持的算法不一样,所以需要提供)
  • 生成一个随机数(A),发送给服务端
#服务端回应
  • 确定安全协议层的协议版本是否一致,不一致则直接关闭加密通信
  • 将证书发送给客户端(???)
  • 【可选】要求客户端证明自己的身份,服务端可以向客户端发出Cerficate Request消息
  • 生成一个随机数(B),发送给客户端
  • 确认服务端的压缩加密算法
#客户端回应
  • 【可选】如果服务端需要对客户端进行验证,首先需要向服务端发送客户端的证书,让服务端来验证客户端的合法性。
  • 验证服务端证书
  • 再次生成一个随机数(C)(该随机数用服务器公钥加密,防止被窃听),它是客户端使用一些加密算法(例如:RSA, Diffie-Hellman)产生一个48个字节的Key,这个Key叫 PreMaster Secret(PreMaster Key)
  • 客户端握手结束通知,表示客户端的握手阶段已经结束
服务端回应
  • 服务端会根据前面的3个随机数A、B、C生成后面对称通信的密钥,并发送给客户端
  • 服务端握手结束通知,表示服务端的握手阶段已经结束

关于Key的一些总结

上面提到3个随机数

  • A:客户端发起请求时传给服务端
  • B:服务端回应客户端时
  • C:客户端完成证书验证,通知完成握手结束
PreMaster Key

PreMaster Key就是随机数C,是客户端使用RSA或者DH加密算法生成的。

PreMaster Key的前两个字节是TLS/SSL的版本号。

Master secret

由于服务端和客户端都有一份相同的PreMaster secret和随机数,这个随机数将作为后面产生Master secret的种子,结合PreMaster secret,客户端和服务端将计算出同样的Master secret。

整个的关于Key的流程是:

一个完整的HTTPS加密过程

results matching ""

    No results matching ""