【安全加固】不安全的TLS1.0-1.1
TLS(Transport Layer Security)协议的不同版本之间有一些关键的区别,这些区别主要体现在安全性、性能以及所支持的加密算法上。以下是TLS 1.0、TLS 1.1和TLS 1.2之间的主要差异:
### TLS 1.0
- **发布时间**:1999年
- **改进点**:
- 使用了基于标准HMAC的伪随机函数(PRF),结合了HMAC-MD5和HMAC-SHA。
- 改进了填充格式以提高可靠性。
- 引入了官方HMAC作为完整性验证机制。
- 去掉了FORTEZZA套件。
- 获得了FPS(Federal Processing Standard)的批准,可用于美国政府机构。
### TLS 1.1
- **发布时间**:2006年
- **改进点**:
- 对CBC模式下的加密引入了显式的初始化向量(IV),解决了BEAST攻击利用的IV可预测问题。
- 针对填充攻击,要求使用`bad_record_mac`警报来响应,而不是之前的`decryption_failed`警报。
- 引入了TLS扩展的支持,允许协议更加灵活地扩展功能。
### TLS 1.2
- **发布时间**:2008年
- **改进点**:
- 添加了对已验证加密的支持,比如AES-GCM。
- 引入了对SHA-256等更安全散列函数的支持,并移除了较弱的MD5/SHA-1组合。
- 移除了IDEA和DES密码套件。
- 允许客户端通过`signature_algorithms`扩展来指定它愿意接受的散列和签名算法。
- 在PRF中使用SHA-256代替MD5/SHA-1组合,除非套件指定了不同的PRF。
- 密码套件可以定义其自身的PRF。
- 数字签名默认使用SHA-256,但密码套件可以指定其他散列函数。
- 显式指定了Finished消息中的verify_data成员的长度。
随着技术的发展,TLS 1.0 和 TLS 1.1 已经被认为是不够安全的,因为它们支持一些已经被证明是脆弱的加密算法和方法。因此,很多服务提供商已经停止了对这两个版本的支持,转而推荐使用TLS 1.2或更新的TLS 1.3。
### 总结
从安全性角度来看,TLS 1.2提供了显著的安全性增强,包括支持更强的加密算法和哈希函数,以及更好的抵抗特定类型的攻击。随着时间推移,TLS 1.2已经成为行业标准,而TLS 1.0和TLS 1.1逐渐被淘汰。