文章目录
故事前言
最近接到了一个安全漏洞:ssl weak ciphers
。一开始接到这个漏洞讲真,觉得一脸懵逼。发现触及知识点盲区了。。没办法,那我们一步一步去解剖。
首先这个问题在网上查阅时候,大多数都会带上 TLS/SSL ciphers
。所以这里也一起讲解一下。
知识储备
什么是 TLS
TLS定义
TLS(Transport Layer Security,安全传输层),一种加密协议。TLS是建立在传输层TCP协议之上的协议,服务于应用层,它的前身是SSL(Secure Socket Layer,安全套接字层),以SSL 3.0 作为基础版。它实现了将应用层的报文进行加密后再交由TCP进行传输的功能。
TLS如何工作
TLS可以用于传输层安全协议(例如TCP)之上。TLS包含三个主要组件:加密,身份验证和完整性。
- 加密:隐藏从第三方传输的数据。(通过加密方式实现)
- 认证:确保交换信息的各方是他们声称的身份。(双方认证证书)
- 完整性:验证数据是否未被伪造或篡改。(MAC 地址)
TLS握手过程
sequenceDiagram
Client->>Server:ClientHello
Server->>Client:ServerHello
Server-->>Client:SendCertificate、Request Certificate
Server->>Client:ServerHelloDone
Client->>Server:ClientKeyExchange
Client->>Server:ChangeCipherSpec
Client->>Server:Finashed
Server->>Client:ChangeCipherSpec
Server->>Client:Finished
TLS 发展过程
- 1995: SSL 2.0, 由Netscape提出,这个版本由于设计缺陷,并不安全,很快被发现有严重漏洞,已经废弃。
- 1996: SSL 3.0. 写成RFC,开始流行。目前(2015年)已经不安全,必须禁用。
- 1999: TLS 1.0. 互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版
- 2006: TLS 1.1. 作为 RFC 4346 发布。主要修复了CBC模式相关的如BEAST攻击等漏洞
- 2008: TLS 1.2. 作为 RFC 5246 发布 。增进安全性,目前应该主要部署的版本
- 2015之后: TLS 1.3,还在制订中,支持0-rtt,大幅增进安全性,砍掉了aead之外的加密方式
什么是 SSL
其实就是上面说的 Secure Socket Layer,安全套接字层。位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
TLS 则是以SSL 3.0 作为基础推出的。