我只是想确认一下,我的系统管理员告诉我 TLS 1.0 比 TLS 1.2 更安全,并告诉我我应该继续使用 TLS 1.0...这是准确的吗?
他提到 TLS 1.2 更容易受到攻击,而 TLS 1.0 更安全。并且 Heartbleed 漏洞在 TLS 1.1 中最容易受到攻击。和 TLS 1.2,而不是来自 TLS 1.0。
谢谢!
我只是想确认一下,我的系统管理员告诉我 TLS 1.0 比 TLS 1.2 更安全,并告诉我我应该继续使用 TLS 1.0...这是准确的吗?
他提到 TLS 1.2 更容易受到攻击,而 TLS 1.0 更安全。并且 Heartbleed 漏洞在 TLS 1.1 中最容易受到攻击。和 TLS 1.2,而不是来自 TLS 1.0。
谢谢!
你的管理员弄错了(或者有一些翻译事故)。
TLS 1.1 和 1.2 修复了 TLS 1.0 中的一些问题(即,用于 CBC 加密记录的 IV 的可预测性)。可以在 TLS 1.0 中解决这个问题,但这取决于实现工作的难度。因此,从这个意义上说,TLS 1.1 和 1.2比 TLS 1.0更安全,因为它们更易于安全实施。
所谓的“心脏出血”不是协议缺陷;这是一些OpenSSL版本中存在的实现错误(OpenSSL 是 SSL/TLS 的广泛实现,但肯定不是唯一的)。当一个 OpenSSL 版本有这个 bug 时,它对所有协议版本都有这个 bug,包括 TLS 1.0。因此,当 heartbleed 应用时,它同样适用于 TLS 1.0、TLS 1.1 和 TLS 1.2。当它不适用时,它不适用。
混淆的根源在于您的管理员(或他的消息来源)似乎没有理解或概念化协议和实现之间的区别。TLS 1.0 和 TLS 1.2 是相关标准(分别为RFC 2246和RFC 5246 )中描述的协议。一个协议说明什么时候必须发送什么字节。实现是运行协议的软件。OpenSSL 是一种实现。碰巧“heartbleed”错误发生在一个相对较新的协议特性(“heartbeat 扩展”)的实现中,而非常老的 OpenSSL 实现并不知道。因此,非常古老的实现的 OpenSSL 不会遭受心脏出血(尽管他们有其他严重的问题,很老)。同样非常古老的实现根本不知道 TLS 1.1 和 TLS 1.2。因此,在您的管理员心目中,这两个独立的事实合并为一个(但有缺陷的)口头禅,错误地认为心脏出血是 TLS 1.1 和 1.2 的安全问题。
TLS 1.0 是对 SSL 3.0 的升级,差异并不显着,但它们足够重要,以至于 SSL 3.0 和 TLS 1.0 不能互操作。
SSL 3.0 和 TLS 1.0 之间的一些主要区别是:
TLS 1.1 是对 TLS 1.0 的更新。
主要变化是:
TLS 1.2 基于 TLS 1.1,它包含改进的灵活性。
主要区别包括:
该答案基于以下来源:
告诉你这件事的人可能不太了解 Heartbleed 的含义:它是一个特定于实现的漏洞(在某些版本的 OpenSSL 中),它与 SSL/TLS 的版本没有真正的关系。
易受攻击的版本已经存在两年多了,它们已被现代操作系统迅速采用。一个主要的促成因素是 TLS 版本 1.1 和 1.2 随第一个易受攻击的 OpenSSL 版本 (1.0.1) 一起提供,并且由于早期对 TLS 的攻击(例如 BEAST),安全社区一直在推动 TLS 1.2。
这并不是说 TLS 1.1 和 1.2 比 1.0 更容易受到攻击。这只是意味着,旧版本的 OpenSSL 没有该错误,但它们也不支持 TLS 1.1 和 1.2。当升级到较新版本的 OpenSSL 以获得对较新版本 TLS 的支持时(由于旧版本 TLS 的问题),对 OpenSSL 代码库进行了其他更改,包括引入该错误。这与 OpenSSL 开发时间表有关,而不是 TLS 版本。
此后,OpenSSL 已针对此特定问题进行了修复(因此显然建议使用不易受攻击的版本)。
一般来说,较新版本的 TLS 具有安全性改进,特别是 TLS 1.2 支持通常被认为更安全的密码套件。
并且 Heartbleed 漏洞在 TLS 1.1 中最容易受到攻击。和 TLS 1.2,而不是来自 TLS 1.0。
可能是您的管理员混淆了一些事实:确实,Heartbleed 以某种方式连接到 TLS 1.1 和 TLS 1.2。但唯一的联系是,OpenSSL 1.0.1 版不仅增加了对 TLS 1.1 和 TLS 1.2 的支持,还引入了对 Heartbeat 扩展的支持。Heartbleed 错误是由处理此扩展时的实现错误引起的。因此,只有支持 TLS 1.1 和 TLS 1.2 的较新服务器才会受到问题的影响。
Heartbleed 错误现已修复,但对 TLS 1.1 和 TLS 1.2 以及 Heartbeat 扩展的支持仍然存在。此外,其他 TLS 堆栈支持较新的 TLS 版本,但根本不支持 Heartbeat 扩展。