SSL/TLS

时间:2021-07-13
本文章向大家介绍SSL/TLS,主要包括SSL/TLS使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

SSL/TLS

SSL/TLS的工作

  1. Alice的信用卡号和地址在发送到Bob书店的过程中不能被窃听(保密性)——对称密码、Diffie-Hellman密钥交换
  2. Alice的信用卡号和地址在发送到Bob书店的过程中不能被篡改(完整性)——消息认证码
  3. 确认通信对方的web服务器是真正的Bob书店(身份认证)——数字签名

SSL/TLS可以保护其他协议

密码套件

SSl/TLS提供了一种密码通信的框架,这意味着SSL/TLS中使用的对称密码、公钥密码、数字签名、单向散列函数等技术,都可以像零件一样被替换。

SSL和TLS的区别

  • SSL(Secure Socket Layer,安全套接层)SSL3.0已经不安全了
  • TLS(Transport Layer Secure,传输层安全)在SSL3.0基础上设计的,目前使用TLS1.1和TLS1.2,其中TLS1.2新增对GCM、CCM认证加密的支持,此外还新增了HMAC-SHA256,并删除了IDEA和DES,将伪随机函数(PRF)改为基于SHA-256来实现

使用SSL/TLS进行通信

层次化的协议

TLS协议是由TLS记录协议和TLS握手协议两层协议叠加而成的

  • TLS记录协议(TLS record protocol)负责进行加密
    • 使用了对称密码和消息认证码
      1. 消息被分割成多个较短的片段,对每个片段进行压缩
      2. 对经过压缩的数据加上消息认证码,保证完整性,对数据进行认证。通过附加消息认证码的MAC值,可以识别篡改。为了防止重放攻击,在计算消息认证码是,还加上了片段的编号。单向散列函数的算法,以及消息认证码所使用的共享密钥都需要与通信对象协商决定
      3. 经过压缩的片段再加上消息认证码会一起通过对称密码进行加密。加密使用CBC模式,CBC模式的初始化向量(IV)通过主密码(master secret)生成,而对称密码的算法以及共享密钥需要与通信对象协商决定
      4. 上述经过加密的数据再加上数据类型。版本号、压缩后的长度组成的报头就是最终的报文数据。其中,数据类型为TLS记录协议所承载的四个子协议的其中之一
  • TLS握手协议(TLS handshake protocol)负责除加密意外的其他各种操作
    • 握手协议
      • 决定算法和共享密钥
    • 密码规格变更协议
      • 传达改变密码的信号
    • 警告协议
      • 传达错误
    • 应用数据协议
      • 将TLS上承载的应用数据传达给通信对象的协议

握手协议

  1. ClientHello(客户端->服务器)
    • 可用的版本号
    • 当前时间
    • 客户端随机数
    • 会话ID
    • 可用的密码套件清单
    • 可用的压缩方式清单
  2. SeverHello(客户端<-服务器)
    • 使用的版本号
    • 当前时间
    • 服务器随机数
    • 会话ID
    • 使用的密码套件
    • 使用的压缩方式
  3. Certificate(客户端<-服务器)
    • 证书清单
  4. SeverKeyExchange(客户端<-服务器)
  5. CertificateRequest(客户端<-服务器)
    • 服务器能够理解的证书类型清单
    • 服务器能够理解的认证机构名称清单
  6. SeverHelloDone(客户端<-服务器)
  7. Certificate(客户端->服务器)
  8. ClientKeyExchange(客户端->服务器)
    • 对称密码的密钥
    • 消息认证码的密码
    • 对称密码的CBC模式中使用的初始化向量IV
  9. CertificateVerify(客户端->服务器)
  10. ChangeCipherSpec(客户端->服务器)
  11. Finished(客户端->服务器)
  12. ChangeCipherSpec(客户端<-服务器)
  13. Finished(客户端<-服务器)
  14. 切换至应用数据协议
    • 客户端获得了服务器的合法公钥,完成了服务器认证
    • 服务器获得了客户端的合法公钥,完成了客户端认证(当需要客户端认证时)
    • 客户端和服务器生成了密码通信中使用的共享密钥
    • 客户端和服务器生成了消息认证码中使用的共享密钥

主密码

主密码是TLS客户端和服务器之间协商出来的一个秘密的数值。这个数值非常重要,TLS密码通信的机密性和数据的认证全部依靠这个数值。主密码是一个48bytes(384bits)的数值。

  • 主密码的计算
    • 预备主密码
    • 客户端随机数
    • 服务器随机数
  • 主密码的目的
    • 对称密码的密钥(客户端->服务器)
    • 对称密码的密钥(客户端<-服务器)
    • 消息认证码的密钥(客户端->服务器)
    • 消息认证码的密钥(客户端<-服务器)
    • 对称密码的CBC模式所使用的初始化向量(客户端->服务器)
    • 对称密码的CBC模式所使用的初始化向量(客户端<-服务器)

TLS中使用的密码技术小结

对SSl/TLS的攻击

  • 对各个密码技术的攻击
  • OpenSSL的心脏出血漏洞
  • SSL3.0的漏洞与POODLE攻击
  • FREAK攻击与密码产品出口管制
  • 对伪随机数生成器的攻击
  • 利用证书的时间差进行攻击

原文地址:https://www.cnblogs.com/wj99/p/15007201.html