首页
社区
课程
招聘
[翻译]TEMPEST攻击窃取AES密钥
发表于: 2017-7-8 14:21 5649

[翻译]TEMPEST攻击窃取AES密钥

2017-7-8 14:21
5649

 

TEMPEST攻击窃取AES密钥



一、概述

边信道攻击能通过计算如电力的消耗来恢复加密算法(包括常见的AES加密算法)的密钥。然而这些先前的AES攻击手段需要无限制的物理设备访问。通过增强天线及信号处理,Fox-IT and Riscue演示了从真实的AES-256加密过程中获取密钥的步骤:

1. 1m开外之处实施攻击(实际环境下约30cm;

2. 使用低配置硬件(花费少于€200)注::欧元;

3. 攻击耗时极短(距离1米需5分钟,距离30cm仅需50秒);

据我们所知,我们的这份报告是该类近距离攻击的第一次公开发表。该报告进一步凸显了在设计高度可靠系统(正是Fox-IT 所擅长的)中深度防范的必要性。

二、简介

一些东西在电子产品中是固有不变的。TEMPEST泄露正是其一。

谨记:

计算机只是通过驱动电子运动而工作。

该论断对任何计算机程序都适用——无论是JavaScript亦或是C语言编写的甚至定制硬件电路也适用。任何程序都要靠硬件电路来运行实现,由此,也带来一些有趣的副作用。引用来自以为苏格兰朋友——詹姆斯·克拉克·马克斯韦尔的话:

运动电荷激发磁场。

故此,运行一个算法程序必将产生波动的磁场。我们可以在场源附近随意探测EM波辐射,甚至在一定距离外更加隐蔽的地方也是可以实现的。实际上,该技术是所有无线通信赖以实现的基础。所有的FM收音机、WiFiGSM通信都是利用此原理!TEMPEST攻击就是在一定距离探测该场并从中获取一些有用的信息的。



图:来自参考链接[1]

三、为何关注该方法

Fox-IT高级安全研究及发展部门已有数年为政府建设符合TEMPEST标准的设施的经验。该研究正式提出及关注的是攻击而非防御。这远超出了传统的TEMPEST分析——确定在给定距离的信号强度,研究在接近真实环境下的攻击手段。这些信息通常用于改进现有的、过时的防御对策。

当然,关于非对称加密的攻击已有相关公开信息,不过,我们并没有看到过关于对称加密如AESTEMPEST攻击。这些公开的攻击技术利用非对称加密算法特殊的数学结构“放大”二进制位从而使之易于被探测到。然而,AES算法并没有该特殊之处。我们想通监测AES加密过程来拓展实现该功能。我们的攻击方案要求攻击端必须能观测输入和输出数据。这是极其现实的情景,对那些有公开、可见输出数据的加密设备,例如,网络加密程序。

OK,让我们开始有趣的……

四、近场攻击重现

我们良好的开头是确立实施攻击的硬件配置。在Riscure的帮助下,我们的硬件成功地实现了功能。传统的方法是用示波器记录数据,用外置信号触发。攻击者拿着示波器,输入端的信号将会触发记录,记录的数据将会拷贝到电脑进行分析。该过程将在各个加密过程重复进行,直到收到足够多进行分析的数据。

我们用无线电的硬件代替示波器构成的电路,这样,我们就可以选择有用频带而丢弃没用的。数据率低得能以流的形式直接传输给电脑,这意味着我们能在更短的时间里捕获更多的信息。

下图所示的是攻击的工作流程,分为4部分:模拟信号探测,无线信号记录,预处理以及数据分析。


:攻击工作流程概述

攻击的实现流程

>模拟信号探测包括用天线探测电磁场,滤出所需频率并放大信号。

>无线信号记录可以是任何能将高频信号混合成便于处理的低频信号并数字化输出的的硬件。更多关于此处的信息见后文。

>预处理就是对记录的无线信号进行分析,找出信号中加密的开始位置,并将其分割成各个独立的加密块。同时,还需将一些复杂的信号转换成简单、便于分析的格式。

>数据分析使用Riscue 的检测工具,寻找“预测密钥”与记录的数据间的联系从而找回真正的密钥。在这一步中,最复杂的部分是建立一个好的模型来模拟设备泄露信息的过程。

以上的仅是模糊的、不具体的想法,在实际中又是如何呢?

模拟信号探测

从头至尾,该部分最重要的是用空电缆和磁带做成的磁性天线圈。该线圈对附近芯片产生的场作出反应,我们用滤波器和放大器对信号进一步的处理。我们先用滤波器从142MHz的时钟频率中滤出10MHz的频带,再用总价低于€200、来自Mini Circuits 的硬件进行放大。

:模拟信号探测器


信号记录

记录仪器从极其高端的无线电装备到€20USB SDRs,相差极大。我们发现甚至廉价的USB加密狗都可以用来实现攻击!这不是一个奢侈的政府才能玩得起的游戏,而是每个愿意花一些零花钱和时间的人都可以玩的游戏。以下是3种设备的比较:


:天线比较

接下来,我们看到的是用SR-7100记录10MHz带宽的信号。下图所示的轨迹图是运行于SmartFusion2目标设备AES-256加密过程的一个信号区段。我们用OpenSSL实现基于ARM Cortex-M3核心的SmartFusion2。每一阶段的处理都有清晰、明确的模式。输入和输出经过Contex-M3,并计算密钥及14轮的加密。


:依赖于AES算法模式概览

因此,我们可以测量与信号相关联部分的芯片的瞬时电力消耗。当然,这离完全取得密钥还早着呢,我们还需要观察不同输入下不同加密的加密区块,以便建立一个好的模型模拟信息的泄露。

数据分析

专家:

我们所捕获记录的数据是以设备功耗有关的。这是极有用的因为功耗是由设备正在处理的数据决定的。我们正是利用这点来获取密钥的。让我们快速验证一下,我们是可以通过记录的信息“看到”设备在处理的数据的——可以试着检验探测的信号与“1”这个比特位之间的联系。我们希望得到输入及输出处理的冲激响应分布图。下图所示波形图显示,我们确实可以探测到目标设备正在处理的数据。


: I/O数据相关性曲线

现在,我们结合猜测和相互联系来找出密钥。假设我们知道32Byte密钥中的1Byte,我们就可以预测一些AES算法里的内容。预测内容与信号分析结果之间的联系应当是非常清晰的(就像上面的I/O数据图)。当然,作为攻击者,我们事先并不知道密钥。不过,我们可以轻而易举地列出这1Byte密钥的256种可能。在相关性分析中,数值最高的既是正确的。用此种办法,仅需数秒钟就可在所有可能性(每1Byte 256种可能,32Byte一共就是8192种可能)中找到正确的数值。相反的是,如果直接暴力攻击AES-256算法的话,将会有2种可能性,就算计算到宇宙的尽头也算不完。

在我们的攻击中,有许多可用的中介,当然,这很大程度上取决于软件及硬件的实现。OpenSSL采用查表——T tables 的方法,这对于32位系统不失为一种合理、普遍的选择。T tables的使用,极大地降低了整个算法的查找数量和花费。使用查表法作为中介,将会带来非线性因素,这将使得正确猜测与仅有1bit之差的猜测结果相差更大。尤其是如果我们控制了输入的话,那么我们将能用简单的模型成功实现。我们呈现的结果反映了每1bit的从T tables载入的数据间的联系。我们也在进一步提高模型的准确度。改进模型更加详细地描述了信息是如何泄露的,不过我们尽量不在实践中使用,因为我们并不需要如此高精度的信息。

至于SmartFusion2,泄露大部分来源于连接Cortex-M3和片上存储的AHB总线。我们可以通过联系T tables查找的地址来攻击密钥。如果这样的话,那么计算1bit数值并不能很好地模拟出电力消耗。取而代之的是,我们计算总线上传输的两个顺序相邻地址的数值。这表明在传输数据时,总线相当于瞬间短路。现在,我们是传输两个地址的数据,我们必须知道先前及接下来的地址。如果指令高速缓存不工作,这将会是未来指令的地址。如果指令高速缓存有效,那么这便是先前加载或存储的数据。

注意到为了避免缓存一致性问题,SmartFusion2没有D-高速缓存。下面的图表反映的是用地址线模型分析256种预测密钥的相关性的曲线。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
打赏 + 5.00雪花
打赏次数 1 雪花 + 5.00
 
赞赏  CCkicker   +5.00 2017/07/14
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//