写点什么

安全设计不是唯一,硬件安全还需要这些新方法

  • 2019-11-07
  • 本文字数:4157 字

    阅读完需:约 14 分钟

安全设计不是唯一,硬件安全还需要这些新方法

等待各方的安全设计不是一个可行的策略,所以安全专家们开始使用不同的方法来识别攻击和限制其损害。


本文邀请了多位半导体工程公司的专家们来探讨这个问题,与ANSYS公司 半导体事业部的首席技术专家 Norman Chang,讨论了一系列硬件安全问题和可能的解决方案;Rambus的研究员 Helena Handschuh 和Synopsys的首席安全技术专家 Mike Borza。


以下是谈话摘录:


SE:几年前,除了政府之外,没有人真正认为硬件是一个可行的攻击平台。但随着 Mirai、Stuxnet、Foreshadow、Meltdown 和 Spectre 这五种攻击的出现,一切都改变了。阻止这些攻击的最好方法是什么?


Borza:这是一个有趣的攻击范畴,为了达到攻击目的,它破坏了很多不同的东西。像 Spectre、Meltdown、Foreshadow 这样的微架构攻击必须在硬件的微架构中解决。因为这些微架构里的进程,实际上是以一种非常一致的方式在执行,我们甚至能通过一些非常基本的东西(比如缓存的结构和性质)来查看到边信道。这些微架构产生了一些我们以前从没见过的边信道。但因为这是一个全新的领域,我们会在相当长的一段时间里持续看到很多这样的攻击。学术研究界想要完成所有这些攻击的研究,可能要花上数年。解决它们需要非常巧妙的设计,以及安全方面的设计,这些设计需要贯穿整个流程。然后在设计的每个阶段,你都需要验证你已经解决了你的威胁模型中的所有威胁。没有这个过程,解决硬件上的受攻击问题就没有希望了。


Handschuh:边信道攻击已经存在很长时间了,但是现在处理它们的方式是基于微架构的问题。这个方式有点新鲜。它们的来源是推测性执行和其他类似的方式,你试图通过推测未来和预测你接下来要做什么来提高性能。也许有一种方法,我们可以考虑放一个单独的小安全处理器在旁边,它负责你的安全性操作——那些对安全性很敏感的操作,而让系统的其余部分处理较不敏感的问题,这部分系统需要较高的性能。


Chang:有各种各样的边信道攻击,也有各种各样的方法来找到它们。你可以观察底层噪声、电压噪声和热变化。你甚至可以查看RTL中不同层次的每个实例的功耗计算,这些层次包括了从系统级的设计一直到硬件布局。这是我们应该能够模拟的主要事项之一,而不用等到最后芯片完成所有设计之后再进行。通过度量,您可以看到这个安全设计是多么有效。


SE:随着时间的推移,你还需要经常回过头来看看,因为可能会有潜伏木马。其中一些可能几年都不会被激活,因此你必须在产品的整个生命周期中监视其活动。


Handschuh:硬件木马一直是一个很难处理的问题。因为很难提出一个“黄金参考标准”,通过这样的标准,你可以进行比照,以确保你的硬件里没有这些木马。这很复杂,因为没有办法得到这些好的参考标准。有一些想法是关于如何处理这个问题的,但是如果不分析这些设计,那就很困难了,而且这几乎要把硬件全部拆开来确保里面确实什么都没有。现在还没有行之有效的方法。这绝对是一个很大而且开放的研究课题。


Borza:人们提出了一系列有趣的解决方案。这包括对芯片进行逆向工程——本质上是一层一层地对芯片进行拆卸,并对各层进行光学检查,重建晶体管级的模型,然后再据此重建门级模型。然后你必须将其进行对比,对比对象是通过后端设计合成然后前向生成所得到的结果。但是当你开始谈论做这些事情的时候,它对成本和分析的复杂性都有难以置信的影响,如果你要在产品真正上市之前完成分析的话,还有上市前所需花费的时间这个因素要考虑。在一个大型SoC上,或者就在一个小的 SoC 上,从头开始逆向工程,对一个芯片进行完全重构,这都将是一个非常漫长的过程。芯片逆向工程公司可以做任何事情,但是你要花很多钱来完成一大块芯片,这就是为什么人们只用这些公司来研究一个很小的子集。他们有时候想要查看一个特定的接口、逻辑、甚至是 I/O 的物理设计或者诸如此类的东西,以及寻找专利侵权,从头开始重建一个大的 SoC 这个任务与上述的任务是很不同的。逆向工程这只是其中一种方法。其他一些方法是基于监控的,在功率分析中寻找变化,这些变化将暗示某个硬件部分一些非预期的活动,这表明那个硬件部分有一些你不了解的东西。这是人们正在采用的一种方法,它使用了很多边信道分析技术,逐渐形成了一种检测技术。


Chang:我只想提一个去年我听到的关于 Windows 系统上出现的病毒的故事。大约 15 年或 20 年后,它终于进入了核电站控制系统。这是一个长时间的恶意攻击的例子。


SE:有时这些攻击甚至不是故意,对吧?有时,硬件在设计上的弱点会在数年后显现出来,为漏洞创造了一个缺口。这就是分支预测和推测性执行方法所造成的情况,在它们被创造时似乎是好个主意。那我们如何解决这样的问题?


Borza:功耗、性能和面积是每个 IC 公司的信条。最小化逻辑正是合成器在优化器阶段所做的事。要实现这一点的惟一方法是教育设计人员,让他们将安全性作为首要的设计参数。


Handschuh:设计上就保证安全性,这一点是完全正确的。您需要从头开始构建它,从零开始,并在设计时记住这个安全性。否则,你永远无法摆脱所有这些问题。但我们还可以采取另一种方法,那就是从小处着手。所以,是的,高性能是伟大的。这是每个人都想达到的目标。但在安全方面,我们需要从固定边界的部分,且我们可以控制的非常小的部分开始。然后我们可以查看和分析里面的所有东西,这样我们就知道系统的这一部分是安全的。然后你引入更多的系统部分,并试图保护它周围的东西。如果你想从一开始就保证整个系统设计的安全,而这又是一个很大的设计的话,那将很难做到。但是你可以从一些小的层开始,这些层互相叠加,你可以从一些你有一定信心并且你甚至可以正式验证的东西开始,然后从那里继续构建安全性。


Chang:对于大公司来说,他们的产品在安全方面很可能设计得很好了。但还有数十亿的物联网设备,我们不知道这些设备的安全性设计得如何。物联网设备无处不在,当它们连接到网络上时,可能成为破坏系统的一个薄弱的缺口。如果我们考虑电子设计服务,包括硬件设计,我们没有一个万无一失的生态系统。我们刚刚开始提供安全解决方案。我们需要与客户合作,与公司合作(如 Synopsys、Cadence 和 Rambus 这样的公司),提供一个完整的生态系统解决方案。安全性就像我们需要处理的任何其他功能一样。


SE:端上的边缘设备应该是个巨大的新空间,但我们不知道它会是什么样子,甚至不知道如何定义它。在这种情况下,我们应如何预先建立安全机制?


Borza:在一开始就在设备中加入小的安全元件是一个好主意,这些元件用于确保其上的软件尽可能的安全,并且确保软件可以更新,而软件是系统最终获得所有特性或行为的地方。这个说起来很好,但在物联网世界里,有 500 亿台设备,450 亿台都是最小、最便宜的产品。这些芯片的设计者或者会告诉你,‘这对成本非常敏感’,因为,假设他们出售的一种部件价格小于 2 美元,那如果他们再在这个部件里加上价值 10 美分的东西来保证它的安全性,他们就会被挤出市场。人们会去别的地方买不那么安全的东西,只要能便宜 10 美分。所以我们需要把网络设计得更健壮,来预防各种攻击的发生,因为,物联网里的 500 亿台设备,这些最小的、便宜的、且最容易被攻破的设备中的 450 亿台设备,期望它们变得安全是不太可能的。这就是我们前进路上要面对的残酷现实。


Handschuh:是的,我们需要现实一点,因为不是所有的设备都有完美的安全解决方案。可以从两个角度来看。一个是从系统的小部件开始构建,这些小部件足够安全,这可以提供一些安全方面的帮助。另一个角度是添加一些软件来帮助你检测异常活动,比如入侵检测。在汽车行业,添加软件这是很常见的。你必须同时从这两个角度出发——如果可能的话,尽可能地增加安全性设计构建,但同时也要有一些可使用的软件,可以检测到任何看起来奇怪的东西,这些东西不应该在那里。你想要尝试分析系统是如何正常运行的,然后如果你检测到一些异常的东西,你需要决定怎么做是安全的,因为不是每个系统都会允许你直接关机。你试图在一开始就建立起安全机制,但你也需要能够在事故发生后检测到现场发生了什么,并试着做出正确的响应。


Chang:我完全同意,我们不能依赖数十亿物联网设计师拿出非常安全的设计。因此,新的趋势是更多地进行芯片监控,就像观察进出 CPU 和内存的流量一样。这是一个新的领域,但我们需要开发解决方案,我们不能依赖设计师拿出一个完美的设计。芯片监控这是从一个不同的角度来看待系统来解决这个问题。


SE:所以你已经改变了这里的安全模式,意识到一些坏人最终会进入。现在,您希望能够关闭系统,安全地重新启动,并让一切尽快恢复运行。但在关键情况下,可能会有一些冗余保障,此时另一个系统可以接管。你也会更新数据和算法,但随着时间的推移,你并不总是知道这些数据和算法将产生何种行为。您将如何适应这种更新带来的安全性问题?


Chang:如果你有一个系统来辅助司机查看道路,ADAS 需要在更新期间有一个容错系统。如果 ADAS 系统在你开车时因断电而关闭,那将是一场灾难。因此,你需要任务关键型系统的容错能力,并且在任务关键型设计中需要考虑安全攻击。


Handschuh:我看待它的角度有所不同。我将尝试在各个层次中构建出一个系统,这样每个层都只有某一些的特权。你越接近用户,你实际上拥有的特权就越少。所以底层硬件会保留所有的特权秘密,所有的敏感信息,所有你不想让别人看到的数据,然后你建立在上面的各个软件层都有不同的权限来做事情。即使使用软件,由于它可能没有得到正确的检查,你就不能确切地知道会发生什么,但如果你正确地构建了系统,那么它即使出了故障,也只会造成有限的危害。它将能够暴露某些东西,也许只是那一层软件有权看到的东西。如果系统构建正确,你可以在某种意义上针对这层进行自构建,但是它不能进入敏感数据所在的较低层次。也许你有权控制一些事情,但实际上你是拿不到这些底层数据的。


Borza:你开始看到人工智能被应用在防御方面,在网络层面,可以看到设备与周围其他设备交互的行为。这是一个很有前途的领域,因为它允许你建立自适应行为来检测各种各样的恶意软件和将要在系统中颠倒状态的东西。这给了我们一些希望,我们有适应性的防御策略,来检查系统之间的行为,并采取一种更高层次的视角来理解当前行为是什么(相对于它本应该具备的行为)。


原文链接:


https://semiengineering.com/new-approaches-for-hardware-security/


2019-11-07 11:531606

评论

发布
暂无评论
发现更多内容

架构师实战营3期毕业设计

小饭🍎

面试突击15:说一下HashMap底层实现?及元素添加流程?

王磊

读《底层逻辑》

wood

300天创作

Hibernate 如何生成 JPA 的 Metamodel

HoneyMoose

大咖眼中的AI开源 | 张建:图神经网络和DGL的实际应用

亚马逊云科技 (Amazon Web Services)

网络

一个基于PoS共识算法的区块链实例解析(升级版)

恒生LIGHT云社区

区块链 共识算法 PoS

JavaScript 12种设计模式汇总

编程江湖

JavaScript

如何提高后台服务应用问题的排查效率?日志 VS 远程调试

汪子熙

node.js 后台开发 1月月更

“5G+区块链”护航新生儿转诊“生命通道”

CECBC

Magic UI四子围城,2022折叠屏灵魂觉醒

脑极体

1月月更|推荐学Java——第一个MyBatis程序

逆锋起笔

Java mybatis SSM框架 MyBatis标签 mybatis配置

Kafka的生产集群部署

编程江湖

kafka

使用亚马逊云科技安全服务防御、检测和响应 Log4j 漏洞

亚马逊云科技 (Amazon Web Services)

网络

TCP socket和web socket的区别

汪子熙

前端 node,js 1月月更

模块六作业

Geek_e6f7f6

架构训练营

尚硅谷《MySQL高级特性篇》教程发布

@零度

MySQL

Web3:创作者经济的黄金时代

CECBC

城墙上的“云镜派”,如何守护云上资产安全?

脑极体

Java 常用类大讲解!3️⃣(手写 API、源码必备)

XiaoLin_Java

Java 数组 1月月更

react源码解析20.总结&第一章的面试题解答

buchila11

React

ReactNative进阶(十四):初探 Gradle

No Silver Bullet

Gradle React Native 1月月更

AWS Command Line Interface 使用S3入门

阿呆

AWS S3

用复杂的方式学会数组(Python实现动态数组)

宇宙之一粟

Python 数据结构 数组 1月月更

开源走向世界(下):从数据库技术演进看开源力量丨BDTC 2021

PingCAP

如何优雅的遍历Mycat分库表

编程江湖

mycat

IntelliJ IDEA 的 Metamodel 配置

HoneyMoose

react源码解析19.手写迷你版react

buchila11

React

元宇宙,以区块链为核心的Web3.0数字生态

CECBC

站在面试官角度,看求职与内卷

程序人生

为什么要把系统拆分成分布式的?为啥要用dubbo?

JavaEdge

1月月更

Amazon EC2 串行控制台——化繁为简,高效解决网络问题

亚马逊云科技 (Amazon Web Services)

网络

安全设计不是唯一,硬件安全还需要这些新方法_安全_ED SPERLING_InfoQ精选文章