HTTPS中涉及的SSL/TLS浅聊

先说是什么

  • SSL(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层,简而言之,它是一项标准技术,可确保互联网连接安全,保护两个系统之间发送的任何敏感数据,防止网络犯罪分子读取和修改任何传输信息,包括个人资料。两个系统可能是指服务器和客户端(例如,浏览器和购物网站),或两个服务器之间(例如,含个人身份信息或工资单信息的应用程序)
  • TLS(Transport Layer Security 传输层安全)是更为安全的升级版 SSL。
      TLS用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面

历史背景

起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到,当然现在https也依旧是可以抓包窃取的)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于HTTP之下TCP之上的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以HPPTS是HTTP+SSL/TCP的简称。
由于HTTPS的推出受到了很多人的欢迎,在SSL更新到3.0时,IETF对SSL3.0进行了标准化,并添加了少数机制(但是几乎和SSL3.0无差异),标准化后就是我们熟知的TLS1.0,可以说TLS就是SSL的新版本3.1。具体分层如图:

HTTPS中涉及的SSL/TLS浅聊

SSL协议提供的服务有哪些

  • 认证用户和服务器,确保数据发送到正确的客户机和服务器
  • 加密数据以防止数据中途被窃取
  • 维护数据的完整性,确保数据在传输过程中不被改变

SSL与TLS的区别

  • 版本号:TLS记录格式与SSL记录格式相同,但版本号的值不同,TLS的版本1.0使用的版本号为SSLv3.1
  • 报文鉴别码:SSLv3.0和TLS的MAC算法及MAC计算的范围不同。TLS使用RFC-2104定义的HMAC算法。SSLv3.0使用了相似的算法,两者差别在于SSLv3.0中,填充字节与**之间采用的是连接运算,而HMAC算法采用的异或运算。但是两者的安全程度是相同的
  • 伪随机函数:TLS使用了称为PRF的伪随机函数来将**扩展成数据块,是更安全的方式
  • 报警代码:TLS支持几乎所有的SSLv3.0报警代码,而且TLS还补充定义了很多报警代码,如解密失败(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问(access_denied)等
  • 密文族和客户证书:SSLv3.0和TLS存在少量差别,即TLS不支持Fortezza**交换、加密算法和客户证书
  • certificate_verify和finished消息:SSLv3.0和TLS在用certificate_verify和finished消息计算MD5和SHA-1散列码时,计算的输入有少许差别,但安全性相当
  • 加密计算:TLS和SSLv3.0在计算主密值(master secret)时采用的方式不同
  • 填充:用户数据加密之前需要增加的填充字节。在SSL中,填充后的数据长度哟啊达到密文快长度的最小整数倍。而在TLS中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为255字节),这种方式可以防止基于对报文长度进行分析的攻击

Charles抓包的Https部分数据

HTTPS中涉及的SSL/TLS浅聊

总结

HTTPS中涉及的SSL/TLS浅聊