0. 前语
在上一节中,我们着重学习了TCP协议。TCP协议是一种点对点的面向连接的传输层。但是TCP协议中并没有安全方面的保障。
在原始的TCP协议中,假设A发送"hello"到B。这个过程中,可能面临着以下的问题:
- 窃听:"hello"被攻击者C窃听
- 篡改:"hello"被攻击者C修改为"f**k"发送给B
- 冒充:C假装是A向B发送消息
正常情况
A—["hello"]—>B
/* [窃听] */
┌--->C
A—["hello"]—>B
/* [篡改] */
A—["hello"]-C-["f**k"]--—>B
/* [冒充] */
C—["I'm A"]—>B
为了保障服务中数据的安全性和完整性,TLS/SSL协议应运而生。
1. TLS/SSL协议是什么?
- SSL (Secure Socket Layer):安全套接字层
- TLS (Transport Layer Security): 传输层安全协议
SSL的继承者——TLS
协议 | 发布时间 | 状态 |
---|---|---|
SSL 1.0 | 未公布 | 未公布 |
SSL 2.0 | 1995年 | 已于2011年弃用 |
SSL 3.0 | 1996年 | 已于2015年弃用 |
TLS 1.0 | 1999年 | 于2021年弃用 |
TLS 1.1 | 2006年 | 于2021年弃用 |
TLS 1.2 | 2008年 | |
TLS 1.3 | 2018年 |
- 1994年,Netscape公司推出HTTPS协议,其中使用了 SSL进行加密。设计的主要用于Web的安全传输协议,这种协议在Web上获得了广泛的应用
- SSL 1.0因为严重的安全缺陷没有被公开
- SSL 2.0 在1995年2月发布,由于多种缺陷(握手没有保护等),2011年被弃用
- SSL 3.0在1996年由Netscape工程师完全重新设计。于2015年被弃用
- 互联网工程任务组IETF将SSL标准化,于1999年发布TLS 1.0,于2021年弃用,由于加密 算法比较老,容易被攻陷。
- TLS 1.1在2006年4月发表,其添加了例如CBC攻击保护等特性,但是对TLS 1.0的缺陷没有太大改进,于2021年弃用
- TLS 1.2在2008年8月发表,其添加了SHA-2、AEAD等加密算法和模式。
- TLS 1.3在2018年发布,其有众多更新,速度更快,支持更完善。
2. TLS协议位于什么层?
3. TLS协议什么结构?
TLS 协议包括两个协议组―― TLS 记录协议和 TLS 握手协议。
- TLS记录协议:装载了被发送的消息,将数据分片为可管理的块,有选择地压缩数据,应用 MAC,加密,传输最终数据。接收到的数据被解密,验证,解压缩,重组,然后传递给高层应用。
-
TLS握手协议:
- 握手协议:商定密码算法、密钥等
- 密码规格变更协议:发送密码方式变更的信号
- 警告协议:发送错误信息
- 应用数据协议:将承载的应用数据传送到通信对象
4. TLS 如何工作?
5. TLS应用在什么地方?
TLS协议之上可以搭载原有的应用层协议,使其变得更加高安全。其中最著名的应用就是HTTPS,其就是在HTTP协议的基础上搭载了TLS层。
6. TLS安全威胁?
但是TLS协议也不是万无一失,其也存在一些威胁并在不断的改进。
加密算法攻击
对于一些过时、位数低的加密算法,可以直接攻破,获得其私钥信息。
重新协商攻击
重协商机制允许客户端和服务器对重新协商其现有连接的参数。但是这种机制可以被攻击者利用,例如中间人攻击,使得其看起来像是客户端。
降级攻击
这种攻击会诱骗服务器使用较早版本和不太安全的TLS版本。
野兽攻击
CVE-2011-3389是一种明文攻击,通过从SSL/TLS加密的会话中获取受害者的COOKIE值(进而篡改一个加密算法的 CBC的模式以实现攻击目录。
罪恶攻击
CVE-2012-4929是一种因SSL压缩造成的安全隐患,通过它可窃取启用数据压缩特性的HTTPS或SPDY协议传输的私密Web Cookie。在成功读取身份验证Cookie后,攻击者可以实行会话劫持和发动进一步攻击。
心脏滴血
CVE-2014-0160是一个由于缺少边界检查而广泛存在于openssl库中的缓冲区溢出漏洞。