硬件安全之殇:为何“熔毁”和“幽灵”难以修复?

2018年伊始,安全界就被“Meltdown(熔毁)”以及“ Spectre(幽灵)”攻击刷屏。从智能手机到台式机到云服务器,无一幸免,全部受到这两个重大硬件安全漏洞的影响。从而也让我们明白,仅维护硬件安全,并不能保证网络的安全

内存隔离可以说是现代计算机体系结构中最重要的安全特性。例如,充斥着恶意软件的游戏是不能够获取用户银行App登录名和密码的。而本次攻击则表明,隔离现已被彻底打破

“熔毁”和“幽灵”并非凭空冒出来的。两个漏洞的发现是基于数十名研究员对微观架构攻击的长期研究,该攻击已存在15年之余。但是,除非你是其中的一名研究员,或者对此密切关注,否则你都不会想到居然还能存在这种漏洞。

这些攻击是如何执行的?为了提高运算速度,现代CPU使用了推测执行技术。这个技术让 CPU 可以提前预测访问时需要的内存,从而提前获取内存。这样一来,下游指令最终执行时,CPU已准备就绪。“熔毁”和“幽灵”可允许某一程序去读取另一个程序内存中的内容。

问题就在于,直接修复这些漏洞的唯一办法就是替换掉CPU。但这样做,不仅成本高不可及,而且几乎所有的现代CPU都存在这个缺陷,所以这一做法并不可行。 我们可能不得不等到CPU架构完全重新设计,才能从根本上解决系统中存在的Meltdown和Spectre问题。

好在还有一个权变措施,就是可通过修补操作系统来缓解这个硬件漏洞造成的影响。但这口气还是不能松。首先,据报道,这些解决方案可能会导致CPU性能损耗,甚至有报道称性能损耗高达30%(不过这取决于系统在做什么。Phronix的基准测试显示了一些相当大的性能影响,但远远低于流传的30%)。 其次,几乎每台计算机,还有众多智能手机和平板电脑都有受到影响,因此企业正努力了解他们的风险暴露程度:哪个系统最容易受到攻击,以及如何在合理时间内部署补丁程序。

1

软件安全&硬件安全

我们大多数人理所当然认为,最安全的设计原则就是让硬件来控制最重要的安全功能。这包括:依靠与用户程序隔离的操作系统内核;依靠可信硬件根来引导系统的安全性;或者在隐藏于正常程序中的硬件里插入密钥。

从“熔毁”和“幽灵”,我们明白了一点,硬件并非保证安全的万能药。硬件其实很脆弱。一旦硬件出现问题,势必造成可怕的结果。

那么问题来了,什么时候硬件会出问题?如果出问题了我们有什么弥补方法?一切操作都在软件中进行吗?软件不是更容易遭受全面入侵吗?答案是:它们的安全都是相对的。

虽说攻击软件不像硬件般要费那么大的力,但也并非易事。黑客要摸透那些文档完整、设计良好的软件还是相当困难的,更别说那些具有防逆向工程和防篡改防护的软件了。在这样的程序中,即使是最有天赋的黑客,仍然需要花费数千小时才能找到可利用的软件漏洞。

基于硬件的安全和基于软件的安全属于两个对立面。一方面,基于硬件的安全非常难以破解,但一旦破解,就是灾难性的,非常难以修复。另一方面,基于软件的安全相对来说容易破解些,但也更容易修复。

2

如何选择?

这样一来,我们面临一个有意思的选择:是定期处理软件补丁,还是把所有的芯片放在硬件里,然后希望今后不会发生灾难性事件?针对Meltdown和Spectre,解决方案是推出一个软件修复补丁来处理硬件漏洞。从某种意义上说,能有这一弥补方案,我们还算幸运的。

从风险管理的角度来看,软件安全可以有效弥补硬件安全问题,从而缓解Meltdown和Spectre等这类攻击造成的灾难性影响。

再来看看加密密钥的保护。硬件解决方案是将密钥放置在安全组件、可信平台模块或可信执行环境中。现在看来,这种硬件会被黑客入侵。另一种软件解决方案是白盒密码技术,它保护敏感加密密钥的方式是将其精确地嵌入到执行中。

即使黑客在代码执行期间访问代码,白盒密码的安全特性也能确保密钥是隐藏的,黑客看不到。虽然这些技术也有被攻击的可能性,但攻击还是难以实现。攻击者要想成功,就不得不采取复杂的旁路攻击。但是安全行业已有对策来应对这些攻击。

最后,安全界在遇到破坏性bug时,所采取的解决方案只能是局部性的,而且还要牺牲运行性能。因此,不要再觉得硬件安全不可能被突破。决策者应该认真考虑使用软件安全机制来对付灾难性的硬件漏洞。

相关阅读:

全面解析防御策略:史上最严重CPU漏洞持续发酵

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180130G0ZJLQ00?refer=cp_1026

扫码关注云+社区