中文 英语

验证侧通道安全预硅

复杂性和新的应用程序正在将安全性进一步推向设计流程的左侧。

受欢迎程度

随着安全性越来越重要,侧通道攻击提出了一个独特的挑战,因为它们依赖于物理现象,而这些物理现象并不总是为设计验证过程建模。

虽然任何东西都可以被黑客攻击,但我们的目标是使攻击变得非常困难,以至于攻击者认为不值得这么做。为边信道攻击在美国,前硅设计是解决任何已知或不太明显的攻击向量的最佳位置。在流程中越早可以做到这一点,就越有可能抵御企图的破坏。

公司正式解决方案的产品管理总监Pete Hardee说:“人们已经意识到,整个系统的安全程度取决于硬件基础。节奏.“一旦你意识到这些攻击是如何发生的,你就可以设计出更不容易受到这类攻击的处理器。”

随着芯片变得越来越复杂,以及它们被用于安全关键型和任务关键型应用,这一点变得越来越重要。“你真的必须从一开始就建立安全性,”微软公司的杰出工程师史蒂夫·汉纳(Steve Hanna)说英飞凌科技.“多年来,我们已经知道,这不是你以后可以随意涂上的东西。你必须把它设计进去。这意味着你想要在处理器中有一些安全的执行区域,在那里你可以放置你最安全的元素,无论是硬件安全元素,一个独立的核心,或者可能只是一些电路作为处理器的一部分,具有这种能力。我们的一些客户甚至使用他们的内存作为安全域。但无论如何,你都需要有一个安全的域,在那里你可以保存加密密钥等东西。”

这需要验证硬件的安全性。不过,某些类型的侧通道攻击比其他类型更容易验证。可以帮助检查新芯片对此类攻击的免疫力的工具正在出现。但有些漏洞无法直接检查,只有等到硅可用时,才能进行一些验证。

FortifyIQ的首席运营官William Ruby说:“如果你真的开始追查信任的硬件根源,并确定密钥的价值,就会打开这个级别以上的一切。”“一旦你破坏了硬件,你就可以暴露操作系统、应用程序、文件和整个网络。”

破坏硬件涉及三种基本类型的侧通道攻击中的一种或多种:

  • 物理攻击,通常是非侵入性的;
  • 定时攻击和
  • 故障注入攻击,具有侵入性。

虽然这些方法各不相同,但它们都有一个共同的目标——扰乱正常的芯片操作,从而访问受保护的机密。

多种方法也用于硅前验证。但是,即使有最好的工具和方法,它们可能也不是详尽的。没有完全不干涉的自动化方法来验证设计的安全性,因此工程师必须意识到可能尝试的攻击,并确定攻击者可能感兴趣的是什么。

物理攻击
这种类型的攻击寻找可能在设备运行时无意中泄漏的信息。它不是逻辑信息,而是间接的物理指标,为内部发生的事情提供线索。

Hardee说:“有大量的漏洞和泄漏依赖于相声和类似的现象。”

最著名的两种方法是观察电源和检测设备发出的电磁信号。

“使用差分功率分析一直是执行一般性攻击以获取机密信息或加密密钥的最常见方式,”维卡斯·高塔姆(Vikas Gautam)说,该公司工程副总裁Synopsys对此“系统设计组。“你应用模式,研究功耗,然后试着逐一分析和提取密钥或密钥的一部分。”

在这类攻击的早期,在关键操作期间,电源信号可能会明显移动,从而更直接地显示正在发生的事情。如今,这种影响更加微妙。at公司联合创始人兼首席技术官Jason Oberg说:“有一种简单的功率分析概念,你可以看看波形,实际上看到一个峰值龟岛的逻辑.“但大多数时候,如果你仔细观察,看起来没有明显的区别。但如果你做了1000次或100万次循环,你就会开始看到相关性。”

需要统计工具来揭示这些相关性,但这里几乎没有什么令人惊讶的地方。这些攻击比其他任何攻击都被“产品化”得多。

Hardee指出:“你可以买到非常便宜且易于使用的设备,其唯一目的就是搞乱NFC支付芯片并获得资金。”

图1:执行差分功率分析(DPA)攻击的典型设置。来源:维基百科[1]

图1:执行差分功率分析(DPA)攻击的典型设置。来源:维基百科[1]

预硅验证的好处,至少在功率方面,是仿真模型提供了深入电路的访问。因此,虽然真正的攻击者只能观察到一个外部电源针脚——除非他们正在磨掉封装并使用复杂的工具进行探测——模拟软件可以帮助识别哪些模块正在传递这些秘密。

“你想知道的是,‘哪个模块显示了漏洞?我在哪里泄露了我的秘密密钥信息?哪个模块负责它?鲁比说。

但是功率或EMI模型通常没有完全模拟这些现象的分辨率,这使得这成为一个挑战。“如果你在硅之前进行分析,分析的质量在很大程度上取决于你的功率模型,”Oberg说。“你可以使用一个非常简单的权力模型,如果它说你很脆弱,那么你肯定是脆弱的。”

相反,信号转换密度是一个合理的代理。所以这里的模拟工具将观察这些信号,看看它们是如何影响功率和辐射的。但是向量套件可以很长。

Ruby说:“其中一些遵从性和认证标准指定了您需要运行的向量或跟踪的数量,以确保您的设计不容易受到这些类型的攻击。”“这个数字可能是数十亿。在你的计算农场中有相当数量的机器,你可以在一夜之间改变数十亿条轨迹。”

这一领域最难解决的问题之一涉及暗硅,暗硅是芯片或系统的一部分,在不使用时,它会进入睡眠模式以节省电力。“对手总能弄清楚是什么唤醒了系统,”微软技术总监斯科特•贝斯特(Scott Best)表示Rambus.“如果系统需要唤醒并安全运行,这与你的手机的功能惊人地相似。从完全冷启动到进入安全执行位置可能需要一分钟,然后再回到睡眠状态。然后可能每次只需要10到15毫秒,你可能都没有注意到,它可能只会继续保持10秒,然后就会继续睡眠。所以你可能认为你不必担心安全问题,因为它大部分时间都是关闭的。但这10秒对于任何形式的攻击来说都是永恒的,这些攻击可能会泄露系统中的私人或其他秘密内容。”

计时攻击
定时攻击利用了时间上的细微差异,这些差异可能是由一些可能泄露关键信息的细节所驱动的。“基于瞬时执行攻击的一类新漏洞,如Spectre和Meltdown,已经引起了广泛关注,”该公司高级工程总监Raik Brinkmann表示西门子EDA.“因为它们不需要对目标系统进行物理访问,所以它们对现代计算系统的安全构成了真正的威胁。”

代码执行流、缓存和总线争用就是可能发生这种情况的例子。在第一种情况下,不同的代码轨迹可能需要不同的时间来完成。如果有人对代码有所了解(考虑到可用的开源代码数量,这并非不合理),那么观察时间可以提供有关代码使用的数据的线索。

“典型的例子是,如果你有一个加密密钥,你正在执行RSA,”Oberg说。“取决于你如何实现它,它有一个发生在关键位上的依赖于数据的计算。要么是平方,要么是乘法,还有一个基于键位的IF条件。如果实现得不好,可能会有基于密钥值的时间延迟,因此攻击者可以确定您使用的是密钥1而不是密钥2。如果你做了大量的计算,你实际上可以计算出秘密值是什么。”

这在很大程度上是由正在执行的软件驱动的,而不是硬件本身,所以硅验证可能不适用于这种情况。

相比之下,监视缓存一直是许多知名攻击的组成部分。执行所需的数据在请求时可能在缓存中,也可能不在缓存中。如果不是,就会发生缓存缺失,必须从内存中获取数据。这比缓存命中花费更多的时间,提供有关数据流的信息。

通过缓存的攻击可能是微妙而复杂的。Oberg解释说:“缓存定时攻击会将攻击者的数据强制放到缓存的标签中,然后通过缓存命中/错过时间的差异提取这些数据。”缓存标记与内存地址相关,并指示地址映射到哪条缓存行。标记很重要,因为攻击者不能任意地从缓存中读取数据,但它可以从命中/未命中的延迟差异中找出属于受害者的地址。”

这些线索本身不太可能是秘密,但它们是典型的复杂步骤序列的一部分,通过移交控制权、提供对特权内存的访问,或通过将数据从安全转换为不安全来“反转”数据,最终可能导致秘密。

Brinkmann指出:“这些漏洞是微架构设计决策的影响,可能是无意引入的,甚至更糟,是故意引入的。”“虽然原则上可以通过硅前验证来分析和防止这种后门或木马,但它们很难被发现,因为它们既不会增加冗余逻辑,也不会破坏预期的设计功能。”

投机执行加载指令的能力可能永远不会被执行,这在Meltdown和Spectre等著名的攻击中是一个特别的问题。在完全启动的系统上,这往往更容易成为一个漏洞。“您的安全引导处理器通常是一个非常简单的处理器,实际上不使用任何推测执行,”Hardee指出。

同时,总线争用攻击允许由攻击者控制的程序在另一个进程也试图访问总线时尝试访问总线。被授予访问权或不得不等待访问权所涉及的时间会产生更多的信息。

Oberg说:“由于总线上对其他共享资源(如浮点单元)的争用,在时域内有一类不断增长的网络攻击。”“当一些秘密交易也发生在公交车上时,攻击者可以操纵公交车。攻击者能够观察到这一点,因为他们也在公共汽车上驾驶。因此,即使他们没有读取一个秘密值——他们可能会得到垃圾——至少他们从时间延迟中学习信息,因为争用。”

他补充说:“将会有大量这样的技术继续出现,尤其是在异构的共享架构中。”“这将是一个继续增长的攻击载体。我们的许多客户正在构建相当复杂的环境来看待这种争用,因为他们担心Meltdown/ spectre类型的东西。”

对于这些攻击,需要一个准确的定时信息源。Oberg说:“在大多数实际情况下,这是通过软件将现有的计时器备份到处理器核心中来完成的。”

计时分辨率越高,可以从执行中学到的信息就越多。如果计时器的分辨率降低到一定程度,那么就很难区分时间差异很小的事件。

所有这些定时攻击都与执行过程中流经系统的信息流有关。硅前验证包括跟踪这些流程以识别漏洞。Oberg说:“我们确定了受害者的信息如何在设计中流动,包括受害者的信息如何影响时间。”“如果你能阻止受害者的数据流向攻击者可以访问的区域,那么你就可以对系统的安全性做出非常有力的声明。”

但是验证工程师必须确定可能受到攻击的资产。否则,大量不相关的流和时间关系可能会使结果充满噪声。Oberg补充道:“我们非常支持基于资产定义安全需求,然后基于一些安全目标——机密性、完整性或可用性。”

错误注射攻击
第三类攻击更难确定,因为它往往涉及不可预测的行为,比如当芯片被滥用时。“例如,假设你正在进行安全引导,”Oberg说。“你可以让电源线出现故障,可能会导致安全引导跳转到安全模式,现在你就有了root访问权限。”

对于什么是错误注入攻击并没有严格的定义。相反,基本思想是找到某种方法将处理器置于意外状态或翻转一些寄存器数据或类似的东西,以一种可能给攻击者带来优势的方式改变系统状态。

“很多黑客试图做的是攻击脆弱的信号,使系统进入不同的模式,”哈迪说。“测试控制信号和调试模式是黑客倾向于攻击的两个领域。但他们也在攻击输电线试图让系统进入另一种状态。这样做的真正目的是让系统进入启动模式,然后中断安全启动。”

最常见的三种方法是干扰电源、时钟甚至温度。故障VDD或者玩时钟计时,例如,可能会有意想不到的结果。只是很难预先判断,这样的事情会产生什么影响。攻击最终可能是一个随机尝试许多不同事情的过程,直到有趣的事情发生,然后弄清楚发生了什么以及如何利用它。

这往往很难验证前硅。虽然没有模型可以预测如果VDD例如,在特定的时间出现故障,就可以检查人为注入的故障会产生什么影响——而不管它们是如何注入的。但是,它有助于思考攻击者的方法可能是什么,以便确定在哪里注入错误。

故障注入也是一种工具,用于在必须证明自身安全的系统中验证功能安全性。“功能安全解决方案和安全解决方案之间存在重叠,”Hardee说。

但是安全测试可能比安全测试更难。“在功能安全解决方案中,你通常寻找的是,‘是否有一个我可以注入的错误导致了一个没有被检测到的问题?’”哈迪解释道。“你在安全解决方案中看到的往往更有针对性,但它是,‘是否有一系列故障可以使设计进入不安全状态?’”

不幸的是,这可能是测试过去已知成功攻击的漏洞的常见领域之一。要确保没有人尝试过新的攻击就困难得多了。

前硅验证即将到来
虽然没有——也可能永远不会有——覆盖所有侧通道攻击的详尽的前硅验证套件,但这是一个由越来越多的工具解决的领域。

现在验证物理攻击还处于早期阶段,但至少FortifyIQ的一个工具声称能够做到这一点。该公司不直接跟踪功率或辐射,而是观察过渡密度,看看是否有任何这样的序列可以与内部机密相关。

还有一些工具可以跟踪内部事件,以帮助识别定时攻击,例如Tortuga Systems的工具可以跟踪信息流。

形式分析也很有帮助。大多数直接模拟方法需要具有高度覆盖的刺激向量。“当你谈论动态验证时,它只能和你使用的测试平台一样好,”Hardee说。“形式化的不同之处在于,除非你告诉工具,否则它会在设计中抛出所有可能输入的组合。形式化的工作原理是,您将应该发生的行为描述为属性,然后形式化工具试图反驳这一点。这是一种消极测试,而不是积极测试,因为我们在设计中投入了一切,并试图破坏它。我所知道的所有处理器供应商都在使用正式验证来确保系统不容易受到这类攻击,并且无序执行不会导致这类问题。”

“最近,形式验证已被证明是有效的硬件签名在RTL级别,这保证了处理器的安全性,”布林克曼说。“与学术和行业研究伙伴一起,我们目前正在开发一种形式证明方法,可用于系统地检测RTL设计中瞬态执行攻击的所有漏洞。到今天为止,它已经扩展到广泛的硬件设计,包括有序处理器、乱序写回管道和深度乱序投机执行的处理器。”

然而,故障注入没有详尽的工具集。这些主要是临时攻击,系统评估具有挑战性。目前最好的方法是确定哪些类型的错误会导致系统行为不端。然后,开发人员要么使注入错误变得困难,要么改变设计以消除错误行为——或者两者兼而有之。

但宣布成功可能很难。“安全标准给了我一些数据,我可以进行测试,”哈迪说。“在安全方面没有类似的做法。”

安全测试正在逐渐积累,其中一些可以被认为是安全的回归套件。“我们可以运行来自便携式刺激规范的安全测试库,以尝试查看非安全处理器是否可以访问安全内存区域和其他安全资源,”Hardee说。

虽然不可能确定地解释所有可能的攻击,但潜在问题的列表正在构建中——甚至对于硬件也是如此。“有许多已知漏洞的不同数据库,”Hardee解释说。其中最常见的是来自mitre.org的CWE, common weakness Enumeration。随着安全漏洞逐渐为人所知,有各种‘白帽’黑客、学术组织和行业组织对漏洞进行测试并公布结果。”

直到最近几年,他们才开始测量硬件漏洞。“上次我看的时候,上一个版本有大约104个已定义的硬件弱点,”哈迪说。“这些弱点不是特定的漏洞,但它们是漏洞的类别——通常是我们正在谈论的侧通道攻击。毫无疑问,有很多客户有自己的漏洞集合,但没有向世界公布。”

购买预认证的IP也有帮助,尽管这不是万能的。奥伯格说:“人们现在所做的是,他们会购买一个已经内置了侧通道缓解措施的AES加密核心或信任根。”“他们会把这一点放在他们的SoC中,他们会说,‘我有缓解措施。我很好。因为他们有缓解措施,所以他们倾向于打勾并获得认证,但他们真的不太了解其中的漏洞点。从攻击者的角度来看,他们可能有很多他们不知道的其他问题。”

结论
然而,即使采用最好的核查方法,也不能绝对保证。Synopsys的高塔姆说:“安全设计的目标是让成功的攻击变得尽可能困难。”“没有人能保证一个设备是完全防攻击的。这是不可能的。”

或者,正如奥伯格所说:“挑战在于知道你已经做得够多了,这样你就完成了,这样你就会感觉良好。”

参考
[1]图片来源:由Mark Pellegrini - Oscilloscope diagram from File:Oscilloscope diagram.svg (GFDL);计算机图来自File:Computer-aj aj ashton 01.svg(公共域);智能卡读卡器:gnome -dev-智能卡.svg (LGPL)。智能卡图是一个自制的SVG,派生自文件:Carte vitale anonymous .jpg(公共域)。, cc by-sa 3.0



1评论

安迪 说:

侧通道arrack的目的是找到加密密钥。避免这种攻击最简单的方法是将文件分成数千或数百万个块,并用数千或数百万个密钥对其进行加密。

至于注入攻击,很容易发现,一旦使用“密钥流”加密的文件出现故障,系统就会受到攻击。如果使用带有用户属性的分发列表来保护文件,允许用户通过用户的真实身份授权来访问该文件,那么黑客很难访问文件,即使是执行文件。

留下回复


(注:此名称将公开显示)

Baidu