深度解析:对片上系统进行侧信道电磁分析

安全 终端安全
本文是基于《SoC it to EM: electromagnetic side-channel attacks on a complex system-on-chip》而来,内容包括了原文英译以及个人理解(蓝色标注),所以不完全定性为翻译。

本文是基于《SoC it to EM: electromagnetic side-channel attacks on a complex system-on-chip》而来,内容包括了原文英译以及个人理解(蓝色标注),所以不完全定性为翻译。

导读

本文比较全面的讲到侧信道攻击对系统芯片的分析,利用AM335X平台以AES算法为例说明了基于ARM核的软件实现、AES协处理器硬件实现或者是拥有快速处理优势的NEON处理器的硬件模块在进行加解密操作的电磁泄漏。文章针对这3种情况对侧信道分析的三个基本环节(采集、特征分析、进行攻击)进行说明。其中文章篇幅较多的放在信号采集和处理上,目的是获取可以检测到真正泄漏信息的电磁波形。至于进行攻击的方法比较常见,文中主要采用单比特DPA/CPA的方式。根据改进的DPA的方式,目前有基于HW或者HD的多比特的DPA或CPA,这有利于对信息充分利用。因为单比特DPA只在乎某一比特那么相对其他的比特位就被当成了噪声,这不利于充分利用信息。

文中值得注意的观点有:

1.能就与加密有关。

2.关于波形的预处理,文中提出小波变换降噪的方式,这种方式我有所实现,且对实际攻击很有效往往可以提高一倍的效率。另外,对采集的波形的噪声合理滤除是影响密钥提取的关键。

3.侧信道攻击的一个优势是进行黑盒攻击,可以不需要清晰知道硬件内部设计就可以实施攻击得到密钥。

4.ARM核和NEON核的对比上,对不同指令的泄漏进行了分析。说明了NEON核泄漏相对较少。这是因为NEON核采用并行结构设计,这对攻击所需的信息量是有所减少的,但并不代表无法实现攻击。这是因此模块总体上实现并行结构,但是微结构的构成并不是并行式实现的,仍然会有能量消耗变化。

5.不同指令操作会有不同的能量消耗特征,因此我们如果初步分析出来相应的指令特征然后建立模板,以后采集的波形进行匹配那么我们就可以分析出其采用的指令是什么,也可以推断出内部可能包含的模块和设计细节。

6.值得说明的是文中对具体对齐操作或者分析操作并没有仔细说明,我通常采用的对齐判据有均方误差,均值,相关系数等。现在基本采用滑动窗口法实现相关性对齐。针对攻击操作现可以实现DPA、CPA、DFA、CFA、二阶DPA/CPA。

从文中破解结果对比可以看出采用硬件协处理器实现加密破解所需的代价更大些,因此为了提高安全性最好使用硬件实现。

J. Longo , E. De Mulder , D. Page , and M. Tunstall

1计算机系,布里斯托大学(全英国大学中,仅次于牛津、剑桥及伦敦大学学院,历年最高世界排名为全球第27名)

Merchant Venturers Building, Woodland Road,

Bristol, BS8 1UB, United Kingdom.

{jake.longo,daniel.page}@bristol.ac.uk

2 Ranbus密码研究部(Rambus公司主研发超低功耗和高速内存,仅仅拥有知识产权无加工厂)

425 Market Street, 11th Floor,

San Francisco, CA 94105, United States.

{elke.demulder,michael.tunstall}@cryptography.com

摘要

现代嵌入式系统越来越复杂化遇到了很多关于侧信道攻击方面的挑战。特别是,针对应用于安全领域的高频率时钟的SOC设备。理解怎么实施这种攻击的特点和技术往往可以通过简单设备进行攻击。得到1是破坏性的方式(例如攻击方面),另一种是建设性的方式(例如评估或提出对策)的观点是至关重要。在这篇论文中,我们在AM335x SOC上对三种执行加密的工作负载(包括广泛使用的ARM 核,片上协处理器,NEON 核)进行攻击从而分析电磁信息泄露特征。我们可以列出这三种设备的挑战类型并且在有限的资源下可以进行密钥恢复。

关键词: 侧信道,电磁信号,系统级芯片, ARM, NEON

关于侧信道攻击的大多数学术文献是针对实际的设备:甚至是对有限的例子例如对KEELOQ密码算法的无钥匙进入系统(汽车遥控电子锁),Xilinx FPGA 比特流密码,或者是Atmel 的安全存储器认证,这些是侧信道攻击的有效性强有力证明。然而,尽管明确知道有反例,这样的设备通常简单描述为电子设备或者系统结构(至少是密码方面的)。从另一个方面看,这不是问题:使用案例如接触式与非接触式支付卡,随着物联网的发展,这类设备将越来越丰富。目标简单化并不意味着开发和实施攻击变得简单化,或者是没有其他别的的价值了。

但是,从另一个角度看,随着微电子产品的极大发展,特别是,更多功能且更复杂的设备会受到侧信道攻击的威胁这将不太令人满意。例如,智能手机,多核、拥有千兆赫兹时钟频率的SOC元器件将成为标配,而且随着时间的推移。手机需要长久的续航能力,市场需求促使这些元器件不断增多。在这种情况下,用泄露的侧信道电磁信息进行分析是很吸引人的,Rohatgi曾全面概况了这些物理现象并加上了其开创性的结果,除了特别相关的部分,其他的关于那些方面我们没有展开讨论。

和功耗分析相比,非接触式,空间中辐射的电磁信息可以用来替代功耗进行分析。

1.这是一种非侵入式的采集手段

2.最重要的是避免引起芯片上电压变化引起一些错误

3.针对SOC上特定位置进行分析,负责采集到很多符合的电磁信息

论文的目标是研究和完善现有技术,针对现代复杂的系统说明电磁攻击是有效的。这个工作的创新之处有对挑战的评估和对策,在其他侧信道应用方面也有很大作用(例如知识产品的保护和硬件木马检测)对于SOC,将更有利于其发展,开放(这个课题是积极的,很大程度上进行非正式的安全服务)了解相关的泄露特征。我们探讨了一个典型设备例如TI公司的AM335X SOC 系统,基于BeagleBone Black开放平台对三个加密负载进行应用。

第二节讲述了相关背景,我们的贡献具体为:

利用电磁分析了:

1.在ARM 处理器上执行通过OpenSSL服务器实现的AES。(第三节描述)

2.利用AES协处理器执行的AES算法(第四节描述)

3.分析了包含了基于位片式设计(位片式设计是通过并行联结构成任意字长的中央处理单元的大规模集成电路)的AES的NEON核(第5节讲述).

4.核心结论是,泄露特征的分析是需要努力实现的,攻击设备的复杂度并不代表攻击的复杂度。例如,针对1GHz时钟频率的系统,我们可以获得相对低很多的频率泄露,这表明攻击并没有想象中复杂,因此通过让设备变得复杂化来提高安全性是值得怀疑的。#p#

2.研究背景

2.1 BeagleBone 平台简介

BeagleBone Black基于Sistara AM335x 的单片机。分为四个子系统组成。

对片上系统进行侧信道电磁分析

图1 AM335x SOC框图(与论文相关的器件单元和子系统加重标注)

系统通过专用的片上网络进行互联(NOC片上网络 network-on-chip,是片上系统 system-on-chip(SoC)的一种新的通信方法。它是多核技术的主要组成部分)。下面将集中在微处理器MPU和加密协处理器分析。虽然加密协处理器往往没有公开内部设计(没公开源代码和接口),针对微处理器的分析,我们参考了大量文献进行广泛研究。总之,L1和L2高速缓存和片上存储器,32位ARM cortex-A8的微处理器时钟高达1GHz。由于其控制加密操作,我们重点在执行指令上,13级ARM流水结构和10级NEON流水结构。基本上是市面上一个SIMD(单指令多数据流)协处理器加速多媒体信号处理的工作量。

在ARM流水线结构中,第6级执行阶段通过两个对称的整数流水线,一个流水线乘法器,流水线存储器。操作数通过一个32位寄存器的内部寄存器文件提供,在NEON流水结构中,第6执行阶段由整数逻辑运算器,MAC 和流水负载存储构成。操作数由256字节的寄存器文件提供,根据指令类型分为可以是32双字或者16四字节的条目(每个码字W可以是8,16,32,64,128比特)。

二者流水结构都是双重的(即每一个周期2个指令可以被处理,模块依赖)和随时(完成相同的命令的同时,发出)。指令输入NEON流水后,已被ARM流水解码,用两个16个输入队列解耦。分析可以得知整体复杂度明显,甚至可以忽略元件数量。例如仅MPU就有3个时钟和4个电源域。这些特征使得SOC在信噪比上具有挑战,且电磁信息易于泄露。

2.2实验环境

采集和测量设备(硬件部分),本论文所使用的设备如下:

1.Tektronix DPO7104 1GHz oscilloscope,示波器

2.Signatec PX14400 400MS/s digitiser,数字转换器

3.Langer PA303 pre-amplifier plus various (e.g., low-pass) hardware filters,前置放大器,低通高通滤波器

4.Langer RF-3 mini near-field probe set,静场电磁探头

5.Langer ICS105 IC scanner (or XY-table),芯片扫描仪

6.Matlab 2014b (with signal processing toolbox).Matlab进行信号处理

这些是基本的配置:将目标设备放在XY工作台使得探头可以进行定位,并且需要前置放大信号,对波形进行预处理(滤波,信号转换)或者送入到高采样率的示波器(示波器作用有观测和进行A/D转换进行数字存储)对这些设备的采购上就限制了我们的研究(职责范围上的)

软件部分:

BeagleBone Black distribution of Debian“Wheezey” on the target device (Linux kernel version 3.13.3)该设备如同是嵌入式多媒体卡EMMC存储主控,没有标准的系统进程被禁用。在这个平台上使用openssL 1.0,1j,随着加密设备不同可扩展版本。

2.3泄露检测和实施策略

符号:长度为n的矩阵x,令x(j)表示矩阵x的第j个元素,0 ≤ j < n。xi表示大批量采集样本中的第i个样本。令H(x)表示汉明重量,令D(x,y)表示x和y的汉明距离,显然,相同的x和y。公式如下:

对片上系统进行侧信道电磁分析

 

一个操作f的第i个指令对设备DUT进行操作,涉及到密码关键部分(例如密钥)的操作。令输入为xi和输出为ri ,采集电磁曲线λi 。针对目标的操作可以是单指令到整个算法实现,或者在从攻击者角度,输入和输出已知或者未知。操作f和输入xi ,加上探头类型和采集位置(和实验环境相关的参数)都对采集的样本至关重要。因此,实施攻击要求攻击者:

1.确定采集的样本在时域上或者频域上都包含泄露的信息

2.合理选择探头,保证最大限度获取电磁泄漏(探头需要保证采集质量,较大信噪比)

泄露探测:有很多方法进行电磁泄漏的探测,本文使用Welch’s t-test. 具体来说,使用的是Goodwill的测试向量泄露评估法TVLA,虽然有很多变化(固定或者随机,半固定或者半随机)但最基本的思想是构建两组测试向量V0和V1:前一个向量包含一个固定因子,另一个进行随机。注意Uno等人使用特定情况使用修正过的随机样本代替全0或者全1的汉明重量。每一次对目标设备进行调用,选择随机01输入例如:

对片上系统进行侧信道电磁分析

 

那么测试向量就为

对片上系统进行侧信道电磁分析

 

;采集的电磁样本泄露λi, 令t测试公式如下所示。

对片上系统进行侧信道电磁分析

 

其中|Λ b |,Λ b and σ是同样大小,相同的均值和方差Λ b . 用一个阈值τ (例如τ = 4.5), 当找 |t[j]| > τ 我们就认为找到第j次的泄露了。当固定向量和随机测试向量之间,根据统计学可以知道存在差异,且差异是依赖数据的,因此有差异说明有可以利用的信息存在。后面都是要这样的方法进行探测。#p#

3.基于软件实现的AES

文献中常用1个微控制器执行一个程序。 在合理的情况下,越来越多的目标操作是由操作系统内核执行的。例如很多智能卡(javacard or MULTOS多应用操作系统平台专为智能卡设计的操作系统)就是这样。由于其相对复杂化,这类攻击相对裸件的攻击不常见。特定的例子有Uno和Genkin等人采用不是差分攻击的方式实现对Android (on ARM)平台或者windowsXP(x86)的RSA(也有ELGamal)算法的攻击(不是DPA而是SPA)。Kassimi等人利用差分电磁分析对java ME平台上AES算法进行攻击还有Pellegrini等人对Linux(SPARC)平台上的RSA算法进行电压毛刺故障注入实施攻击。

 

对片上系统进行侧信道电磁分析

图2 BeagleBone Black 原理示意图,从正面(左) 和反面(右), 标注电磁探头的位置其中 SRAM(红) ,ARM and NEON 核(蓝色).

本节将讨论系统为导向的攻击,我们假设攻击目标是一个通信设备(如智能手机) 在进行TLS会话服务,攻击者可以观察此时的电磁变化:

对片上系统进行侧信道电磁分析

 

例如进行AES-128算法加密,CBC模式,明文mi和密钥k未知但已知密文ci(由网络传输),每个加密操作都有openssL软件默认的方式实现。

3.1实验概述

在对样本进行采集和提取密钥前需要说明,实验的挑战点:在对未知设备进行攻击前,我们使用一个同样的产品但是我们可以完全控制的产品进行初步尝试攻击(类似于模板攻击,难点是对相同设备可控,然后建立模板)。 我们强调,可以利用分析设备使用简单分析对信号特征进行提取,但是这对建立模板是不够的,因为我们只能对他进行简单的控制,比如修改操作系统调度程序,进行硬件或者软件的中断。另外是探头位置:开始,先手动扫描SOC表面找到泄露相关的三个内核相关泄露。一组是与内存相关操作,一个自旋锁(防止多处理器并发而引入的一种锁。)和一套与计算相关的操作(例如进行AES加密操作,openssL)

 

对片上系统进行侧信道电磁分析

图3 波形采集阶段中断的影响:没有中断(左)表示是干净的曲线,受干扰后曲线(右)失效的曲线(标注的时期)

 

对片上系统进行侧信道电磁分析

图4不同时钟频率在扫描阶段的影响(每一条曲线代表AES指令在4个可用时钟频情况)

 

对片上系统进行侧信道电磁分析

图5 在特定攻击位置下频率从0到1.25GHz的频谱,分析循环装置在三个内核下,有三个迭代(左到右)内存储存,自旋锁,和计算(AES)的AES运行时候的频率响应,频率响应越窄且低频范围可以捕捉这种反应。

对片上系统进行侧信道电磁分析

 

图6 自由执行AES的目标在85000次电磁样本下匹配600MHz下的结果,左边显示泄露检测的实验,当阈值t=4.5(Y轴黑色标记)右边正确的密钥所对应的单比特相关性系数变化趋势

通过内核周期性循环操作,检测频率响应如图5所示,可以看到2个感兴趣区域。我们把一个区域(SOC边缘和SRAM总线)为内存相关操作内核,为内存访问区域部分。假如内存总线是特定的开发套件,假设可获得,完整的操作数据可以从表中获得,但并不认为有必要再进行调查。第二个区域是中央AM335x的表面,在板子的背面有电容器如理C94和C46。

另外:

1.对AES进行执行过程中可以观察频率响应的幅值

2.随着多层制造工艺造成的信噪比下降的趋势,将探头固定在支持电路的位置。

采集调谐:对选定的区域的泄露可以用较低的频率进行识别,例如100MHz。在某种程度上,由于AES使用较低的系统时钟频率(1轮需要多个时钟)另外芯片上分立元件的耦合电容成为了一个低通滤波器,因此,我们采用了一个带通滤波器,其中心频率是45MHz,带宽是24MHz。因此,可以使用较少的功能性和较便宜的采集设备,不必要使用一个高性能的示波器,我们利用一个较低规格的数字转换器实现采集。

批量采集:这个步骤是替代人为操作的使得自动运行的内核配备OpenSSL客户端实例(里面没有加通过GPIO引脚实现的触发)。当然通过软件触发更吸引人,但是这会限制采集目标会话通信过程。例如,不是每一次会话波形都进行对齐,对采集的波形λi, 包含了L次AES更新而不是仅仅1次的更新。例如,对于第i次得到的密文Ci,则是16*Lbyte的密文或者是L块密文,如同TLS层产生的密文。这种软触发很容易通过流量分析得到。另外可以通过嗅探的方式得到密文而不是通过攻击者去人为控制(例如注入故障)。但是这种选择有利有弊。一方面,批量采集可以显著减少所需的时钟时间并允许数据和指令缓存的干扰被很大程度的忽略(因为刚开始的AES调用会使用热缓存)另外,我们需要面对较长时间的系统噪声类挑战(对于一次操作的设备如智能卡,这种挑战是无关紧要的)。

中断检测与同步:如果不主动产生中断或者内核需要进行中断,操作系统会抢选执行用户操作过程。当我们得到大量的密文的时候,这种中断会很频繁,因此我们需要在批量采集的时候分析这些中断。图3是可以观察到的出现中断和没有出现中断情况。我们用一个对齐分数来自动识别(例如分数可以选择最小均方差做判据)。我们通过选择一个没有间断的波形作为模板,然后大致对齐并计算相对模板得分。如果得分高于实验设定阈值那么就可以认为发生了中断,对于这些检测到有中断的曲线,我们要么丢弃掉不要,要么就是将出现中断的地方处理掉。低的采样率采集的波形对中断进行处理的时候极易出错(因为不容易确定出中断结束点,或者知道OPENSSL过程已经恢复了)。这种错误使得得到的密文和采集到曲线不对应(例如对应AES的子曲线)。但是我们选择丢弃掉那些出现中断的曲线的方式,当然这也是作为批量采集出现的代价。

时钟缩放:操作系统可能会随着功耗变化控制时钟频率。我们发现这样的事情发生,当openssl调用时候,设备就会稳定在600MHz时钟频率下。图4显示了不同时钟频率下执行AES采集的波形图,可以看出有明显区别。在特定的频率下,通过高于奈奎斯特频率的采样率可以推断出时钟频率(例如300MHz,,600MHz, 800MHz and 1GHz)。这种方式也有利于处理中断。但是用较低的采样率虽然有利于其他的方面但是会超出奈奎斯特方式的规格。相反,我们简单的通过在每个时钟频率下执行AES操作来简单创造模板。波形通过和模板对比,然后可以产生处相同时钟频率的波形子集(类似于频域检测)。

3.2分析和讨论

总结一个具体的攻击步骤如下:

1.批量采集1000条曲线,每个曲线包含了256次加密操作(每条波形可能占4KB则得到4MB的数据波形)

2.挑选出合适曲线(处理掉出现中断或者存在时钟优化操作的波形)这个过程可能会抛弃掉20%不满意的波形。

3.对挑选的波形进行分析,找到每一个加密操作的子曲线,并匹配出相应的密文。

4.然后将子曲线进行分析盒整理,对有偏差的或者说低质量的曲线进行抛弃,大概又会丢掉5%的波形。

这个过程就剩下了s < n*L个子曲线,对每一个n和L要花费大约6分钟时间,然后通过这组处理后数据得到泄漏。我们针对AES最后一轮的查找表操作作为攻击目标采用基于单比特相关系数攻击的方式进行攻击。图6b显示了密钥随着处理条数的增加相关系数变化的趋势。图中显示出20000条曲线得到时候可以区分出密钥差别。也就是说大量采集100条曲线就可以成功。(因为20000条表示子曲线,这个100条曲线表示一次采集的曲线中会包含很多条子曲线,当然这100条曲线所需的数据点更多大约有400kb)。

事实上,在数据采集阶段对n需要进行微调,因为攻击者无法控制每一个操作所需长度L,(原因:采集的曲线固定,n代表有n次L长度的执行操作)。但是使用一个自适应的n和所采的数据s足够大也是可以成功的。

传统攻击的时候需要使用一个人为触发(这种方式需要对波形对齐和避免中断),相对这种方式的攻击,我们采用新的基准进行分析并选择合适的时钟波形。我们只需要采集3000条子曲线就可以恢复密钥,即使在不同步的时候数据量减少了7倍。这两种攻击的差距可以减少,是因为我们这种方式本质上代表了预处理效率的降低,对以后的攻击工作有所推迟。#p#

4.基于硬件实现的AES

本节将重点介绍使用硬件协处理器实现AES加密。攻击者同样可以观测到相应的调用openssl的能量消耗。

对片上系统进行侧信道电磁分析

 

但是底层加密操作是基于硬件实现的。

我们假定这种方式如同DMA(直接存储器存取,是一种快速传送数据的机制,DMA技术的重要性在于,利用它进行数据存取时不需要CPU进行干预,可提高系统执行应用程序的效率。利用DMA传送数据的另一个好处是,数据直接在源地址和目的地址之间传送,不需要是中间媒介。

硬盘内部的控制读写,这样有利于减轻CPU负担,加快读取速度 )实现数据操作的全盘加密(全盘加密(FDE,full-disk encryption)是在硬件级加密。全盘加密是自动地将硬盘上的数据转换成一种不能被人理解的形式。只有那些有密钥的人才能“还原”转换。如果没有合适的认证密钥,即使把硬盘移出,安装到另一台机器上,仍然不可获得硬盘上的数据。)这种方式下,攻击者能否存储和读取密文是一个问题。

 

对片上系统进行侧信道电磁分析

图7 基于AM335X的AES密码协处理器(CBC模式)的高级体系结构。

注意这种方式下不同的寄存器会共用(输入输出寄存器),链接寄存器会随着初始变量而更新。(链接寄存器是ARM处理器中的一个有特殊用途的寄存器,在ARM的user模式下,ARM CPU有16个数据寄存器,被命名为R0~R15(这个要比X86多一些),它们均为32位寄存器,其中的R13~R15有特殊用途。其中R14被称为”链接寄存器”(Link Register,LR)。)

4.1 实验概述

正如2.1节所说很少有文档说明AM335X图形协处理器。我们只能通过设备驱动程序去了解内部设计。由于驱动并不公布供用户使用的过程,因此我们通过OPENSSL扩展加密设备实现交互。我们通过调用OPENSSSL利用加密模块实现加密操作从而实现协处理器的执行。针对黑盒系统,我们将协处理器当作一个黑盒,我们推断针对其功能(例如模式有ECB,CBC,CTR,或者实现的AES为AES128,AES192,或者AES256)和相关的文献进行推断其内部设计。 一般寄存器是可以发现的且密钥寄存器会随着调用进行更新(因此每次加密操作对密钥的运算会进行更新)这会推断出其迭代模块,例如图7所示,每一个模式是由一个核心和周围的控制逻辑等多个步骤来实现的,默认驱动方式是利用存储器直接访问的方式DMA以集散机制通过ARM核心自主操作。

信号采集:在任何探测阶段,首先是确定

1.一种可识别的方式。

2.找到波形上特殊点进行对齐。

这是为了最大化的检测到信息泄漏。这两种方式有内在联系,因为良好的识别方式有利于对齐。但是,一般认为前面的挑战较为简单,因为目标设备通常会因为相应的执行操作产生明显的可以识别的特征。这是对的,例如第3节我们可以轻松通过频率响应执行时间检测到ARM核的泄漏。相比之下,这不是真正的协处理器。因为我们不清楚AES如何执行计算的,而且不能确定任何周期性AES操作泄漏。这是一个更复杂的过程的事实是协处理器是独立于ARM核操作的(因为硬件进行加密操作被异步触发)。

由于没有可靠的视觉线索或者可靠的触发,我们不可能通过第3节所确定的探针位置采集曲线通过修正或者随机的方式测试出泄漏。另外,手动的去对AM335X表面扫描找到合适探头位置也不一定会得到更好的结果。但是,我们将探头定位到内存访问区域的时候发现了DMA闪动。当然,这些特征泄漏了与加密操作相关的信息,从而类似于有点是和协处理器同步的活动。但是利用这一事实所面临的问题是任何其他内存密集型指令也会导致这种现象,因此这时候呈现的触发器就不是很可靠。

为了解决这个问题,我们迫使驱动进入non-DMA备用模式,这使得任何与内存管理相关的问题就引起中断。这种中断作为识别AES操作的触发。虽然这种相对第3节所用的自由运行的方案麻烦,我们认为这种方式比使用基于GPIO的硬件触发要好。具体来说,要求攻击者控制的过程是目标设备上共同存在的(例如探测驱动缓存的攻击)而不是对目标进程的侵入式攻击。

实验策略:在灵活性的触发机制下,我们用几个探针放在AM335X不同位置,并且重复进行固定随机实验(使用了示波器所有可用通道,采样率是2.5GSa/s)。

这种方式经常失败因此我们选择更专门针对泄漏的测试向量。我们使用新的测试机制,使用半修正的固定随机测试向量。最后通过利用汉明距离的方式探测到泄漏,相应的测试向量是轮输入输出的汉明距离。图8所示将1万条波形和均值波形进行的t检测图,t线图远远超过了我们的t=4.5阈值。

信号处理和消除趋势:虽然我们找到了泄漏,但是我们还是无法知道信号的具体特征。第一步,我们对AM335X表面进行自动扫描,执行半固定随机测试以1毫米间距进行扫描。最高的t统计值对应的位置可能就是密钥恢复的关键。 图9显示了分布热点图。为了优化探针位置,我们使用小波变换降噪的方式提高信噪比。现在已经有文章表明小波变换可以有效去噪与重构波形实现侧信道攻击。一般来说,是通过软阈值对每个细节进行修正再合成为新的信号。

 

对片上系统进行侧信道电磁分析

图8 执行AES协处理器开启全部DMA探测的信息泄漏。左边是平均值曲线和右边所示的t测试曲线。顶部是未处理的曲线下面是处理后的波形。

但是,一个高强度且半干扰的信号对我们感兴趣的低幅度信号会有覆盖,这种信号都含有少许噪声,这些干扰降低了信噪比。利用小波变换的方式可以对重叠信号中干扰信号进行分离。通过尝试不同的小波变换后,用一个较低的消失矩下得到了更好的结果。这种去除噪声技术利用一个简单的算法小波收缩技术如论文10和16所示。首先,使用Haar小波基进行小波变换,在低的采样率下对信号进行单级计算(分解),然后将近似系数为0的细节系数进行逆小波变换。通过处理后的信号如图8所示,可以看出与有干扰的信号相比产生了更强的泄漏检测结果。

4.2 分析和讨论

对本节进行总结,执行具体的攻击所需的采集步骤如下:

 

对片上系统进行侧信道电磁分析

图9 对AM335X表面进行自动扫描,利用半修订固定随机测试值来识别CBC模式下的AES256协处理器泄漏。得到t测量值的分布热图如图b所示,得到感兴趣的区域作为后续的探头位置。

1.驱动程序运作在non-DMA 备用模式。

2.采集50万条曲线,每一条曲线包含一次加密操作,每一条曲线是进行1000次平均得到,得到的密文和曲线进行对应。

3.对每条曲线进行小波变换处理实现大的信噪比。

值得注意的是,我们以中断为基础的触发实现了最佳的对齐方式。因为AES操作的具体形式未知因此对波形进行后处理来找到定位是不可能的。我们花费了3天时间完成了波形采集过程,然后执行单比特相关性能量攻击,如果AES执行迭代操作,i表示第i次迭代,我们对第10轮迭代为攻击目标这是因为第10轮和AES最后一轮相关。然后我们成功恢复了密钥k(尽管有少量的关键计数来对较低的密钥排名进行修正(类似于得到一部分密钥,剩下密钥可以暴力破解了))。

至少我们可得到4点结论:

1.需要确定泄漏模型,这远比后续的波形采集和攻击阶段重要。

2.虽然我们发现了很大的泄漏但是利用效果会与理想有差距,如图8所示,虽然我们发现有强大的泄漏存在,但是我们无法利用这些进行攻击。

这说明很重要的一点是在实际攻击场景中确定泄漏模型是第一步,然后将其转化为可以精确表示的模式。

虽然黑盒攻击对协处理器内部结构有简单的分析但是并不知道其内部具体实现。特别是我们尝试了很多次的失败如

3.触发机制没有设置正确,无法正确对齐,这些大大降低了信噪比。

4.使用了协处理器在某种程度上加入了抗侧信道攻击策略。

如果后者是正确的,我们还不知道对策:例如我们不知道结构的具体实现,所关心的信号在时域进行了隐藏,另外使用了掩码操作而且高阶攻击也无法实现。无论哪种方式,如果加入对策,我们要进行攻击就要加大相应的攻击成本而不是防止了攻击。#p#

5.NEON

NEON是ARM A系列处理器SIMD(单指令,多数据)架构扩展,例如通过Bernstein and Schwabe发表论文所述的NEON加密技术,用来对加密负载和执行的加速。在ISA来说,每一个向量指令

对片上系统进行侧信道电磁分析

 

处理 个向量操作数以w位为大小单元。n ∈ {64,128} 根据指令类型确定,纯向量操作的情况可以如下简单描述如下:

对片上系统进行侧信道电磁分析

 

其中

对片上系统进行侧信道电磁分析

 

表示第j次w位对t向量的半字节,其中

对片上系统进行侧信道电磁分析

 

对半字节值进行的操作。ISA说明了标准逻辑例如当w=1时候

对片上系统进行侧信道电磁分析

 

,且描述了相应应的算法如w=8,16,32的时候

对片上系统进行侧信道电磁分析

 

操作,加上其他的别的操作扩展方式。尽管四字长NEON指令表示处理128位的操作数,使用的流水线结构实际只采用两个64位操作进行处理。

5.1指令集描述

这一节研究NEON指令集的信息泄漏

对片上系统进行侧信道电磁分析

 

对一系列的操作

对片上系统进行侧信道电磁分析

 

一般来说一个双字节里面w为8,32子字节。例如n=64位的操作。鉴于NEON的流水线结构和ARM流水线结构紧密耦合的。我们认为这两部分紧密靠近AM335X的表面,因此我们采用探头的位置和第3节所采用的位置一样。然而,我们具体是采用严格控制设备使得可以循环加密得到可用的硬件触发和拥有一定的成功率。

泄漏探测:我们先初步在一个小区域内进行探测,运行NEON指令先主观的收集一般性的泄漏信息。因此,我们考虑各种可能的泄漏源。例如我们执行XOR异或指令 veor.u32 d0,d1,d2,我们可用观测到与操作数读取有关的泄漏如从d1或者d2进行读取,可以观测到计算操作以及结果的返回d0写入的泄漏。

对片上系统进行侧信道电磁分析

 

图10 对NEON进行固定随机测试操作得到的t测试结果。自上而下是执行异或,加法,乘法,赋值操作的结果图。

总之,如图10所示可以看出

a)用简单功耗分析可以得到出指令操作,例如将每个指令建立一个模板。

b)基于操作数的泄漏是显而易见的,但是仅仅在写回操作的结果来看,我们无法确定与读取相关的泄漏。事实上,我们观测到写回操作所对应的t测试结果表面操作步骤会引起泄漏而不是读取内存的时候出现的泄漏。

ARM核和NEON核的对比:第3节说明ARM核存在泄漏,我们应用相同的检测策略量化ARM核和NEON核造成信息泄漏的区别。

图11可以看出:

a) ARM核在操作数的读取,取回都泄漏明显

b)泄漏强度相对NEON核也高很多,特别是针对乘法的操作。由于没有很详细的知识因此来说明这种差异性是很困难的。但是,根据泄漏可以推断出使用的运算器(如乘法器设计)。

对片上系统进行侧信道电磁分析

 

图11 对NEON进行固定随机测试操作得到的t测试结果。自上而下是执行异或,加法,乘法,赋值操作的结果图。

对片上系统进行侧信道电磁分析

 

图12 NEON的算术和逻辑指令的汉明重量泄漏对比图(w=32位)

汉明重量泄漏:当找到泄漏点,我们的目标是分析和利用其结构。既可以通过汉明重量反推回相应的泄漏特征。这种方式通过固定随机得到t测试值方式来实现,因此对于给定的汉明重量我们选择半固定随机向量进行分析。这种结果的分析将下节讨论。我们认为,n比特的汉明重量被认为基于单W比特的子字节是可行的,但是需要更多的波形。也就是说,如果只考虑单个W比特的子字节数,其他的L-1个字节被认为是噪声,因此需要更多的波形条数。

算术和逻辑运算:图12所示为与加密相关的两个NEON指令(异或和乘法),图13所示是进一步的例子,XOR异或表示大多数的指令,不同的汉明重量的泄漏是很明显的,相反,乘法操作泄漏是一个特例。汉明重量的泄漏也很明显而且和密码使用的情况相关。然而,其他的一些交叉指令汉明重量和信号泄漏我们还不能解释。

对片上系统进行侧信道电磁分析

 

图13 NEON的算术和逻辑指令的汉明重量泄漏对比图(w=32位)

对片上系统进行侧信道电磁分析

图14 NEON的算术和逻辑指令的汉明重量泄漏对比图(w=32位)

指令操作泄漏对比:图14显示NEON矢量指令操作的泄漏。不同于ARM核的标量运算(产生1位的CPSR程序状态寄存器),NEON核向量比较集(或者清除操作)都是基于w位的子字节信号。这些信号有真有假类似于形成了掩模。为了不失一般性,我们采用如下策略进行对比。

对片上系统进行侧信道电磁分析

 

这可以用来支持自由分支和固定时间的实现方式:将得到的掩模用来控制每个子字节后续操作的条件执行,将条件数据流替换为条件控制流。研究得到2个重要事实如下:首先,从比较向量泄漏来分析出子字节结果是真是假。我们可用通过每种情况分析出输出的最大最小的汉明重量,这是我们的预期。另外,如图16所示,我们可用针对一个特定的字节判断其汉明重量值是2w-1还是0。这样做是只选取其中每个子字节独立分析,其他的子字节就作为了噪声(例如单比特DPA)。

对片上系统进行侧信道电磁分析

 

图15 基于NEON调用OPENSSL实现的AES(128byte的密文)。在5000条能量曲线下可以区分出正确密钥。图b是单字节相关系数随曲线条数变化的趋势图

对片上系统进行侧信道电磁分析

 

图16 对vceq.u32进行单字节攻击,左边是差分结果图,右边是差分值随着条数增加变化图。黑色曲线是w位密钥

对片上系统进行侧信道电磁分析

 

在1000条平均曲线下被区分出来 。

5.2针对AES一个具体攻击

上述内容说明汉明重量泄漏可以应用于实际的攻击中。我们以如下的方式采集能量消耗来说明理由。

对片上系统进行侧信道电磁分析

 

但是不同于第3节和第4节对AES自身的实现方式需要知道,我们不是以NEON位片式处理方式用openssl实现AES(这是源于Käsper and Schwabe,通过预处理标志-DBSAES_ASM )。如果密文足够大(例如128byte就要用另外的方式实现)这种特定的实现是可以触发的。虽然第3节所使用的技术也可以广泛使用,但是为了清晰分析,我们采用了5.1节所用的试验环境采用硬件触发的方式。

然后攻击采用一种相对简单的方式,我们简单猜测密钥基于汉明重量模型假设第一轮逆字节替换操作得到中间变量然后和处理后的波形进行相关性分析,我们在5千条曲线就可以实现密钥提取。所需的密文有5000·128 = 625kB。

5.3原理性分析NORX

也许不同于其他操作,比较向量相关的泄漏更需要动力。例如对NORX,一种基于AEAD用来约束NEON的CAESAR候选加密算法。NORX32-6-1参数化(32位字长,有6轮,并行度为1,128位签名大小)。验证标签的方式如下:

对片上系统进行侧信道电磁分析

 

注意到状态A(计算出的标签),使用32位的字节向量对接收的标签进行比较。一方面这是具有一定吸引力的是a)相对4个连续32位的比较要更高效,b)时间是固定的,不像一般代替操作进行内存比较 。例如memcmp指令。另一方面,在假设场景下,攻击者解密oracle,例如选取特定密文的指令可以观测到,可以用泄漏来实现标签的伪造,攻击者可以确定一个候选标签,所以复杂度为

对片上系统进行侧信道电磁分析

 

的查询(尽管有一个恒定的因子作为处理噪声的代价)通过穷举的方式来找到标签来匹配选择的密文。这种方式是否可行显现取决于具体的内容,但是这也是和假定的安全级别存在差距的。

对片上系统进行侧信道电磁分析

 

6.结论

本节是对本文进行总结。我们利用泄漏的电磁信号分析了AM335X SOC系统和执行软件操作泄漏 。虽然很难进行直接的比较,我们对CBC模式的AES算法为例进行分析总结如表1所示。

对片上系统进行侧信道电磁分析

除此之外,我们也得到以下结论:

和文档32介绍的建议相反,更高的时钟频率并不意味着所需要更高的采样率,指令级别或者周期级别分析可能会产生更好的结果,但是我们仍在较低的频率段找到了泄漏。这一事实表示,任何基于电磁攻击(针对各种复杂系统)的代价会降低。例如第3节所进行的攻击只需要一个价格大约为1800美元的设备实现。(包括用中低端示波器代替数字转换器,一个30AWG的15圈的探头)。

对于复杂系统采用TVLA(逻辑分析设备)或许有效,我们认为对未知设备进行特定的分析是十分困难甚至是无效的。

高层次上的系统复杂度并不代表在低层次上有相同的复杂度,我们有两个例子进行说明。首先在第3节所述我们绕过了SOC结构或者对辅助电路的制造复杂度的影响。其次,在第5节我们认识到针对复杂的NEON ISA的平行方式(一般影响DPA的一个复杂因素)在微结构上并没有实现。这些微结构在某种程度上和平行结构的相关。

尽管采用NEON技术可以高效、持续执行命令,这似乎是很重要,但是这也会引起其他形式的泄漏。例如在第5节说说明矢量操作比较,即使在一个固定延时的有利条件下任然会存在子字节上出现相同的泄漏。

像openssl的软件现在在嵌入式类似场景调用已经很常见,这些通常认为是负载很大的。因此,确保此类软件避免遭受网络攻击,这是一个长期的很重要的挑战,在硬件方面的抗侧信道攻击对策也应该进行积极考虑。

下一步工作:我们在有限范围内介绍未来的工作内容。除了很明显的方向如在平台上运行的针对非对称加密算法的分析。有两点很重要,首先对于组成成分进行严格的分析,例如我们认为SHA,RNG和其他外围支持电路模块,了解他们泄漏特性也十分重要。同样,即使NEON技术很容易扩展到其他指令但是对NEON单元进行详尽的分析是不切实际的。理解没有相同的标量指令操作的矢量指令操作也是特别重要的。

第二,改进技术有利于完善攻击结果。例如在第3节表面成功恢复密钥很大程度取决于对采集的波形进行预处理。我们通过采取努力缩小人工和自动运行的差距。而且,在第4节我们强调了泄漏模型选择对于泄漏检测的重要挑战。针对黑盒攻击,解决这一问题似乎很困难,但是对模块的预估和分析也是很重要的。

致谢

感谢Jake Longo 关于EPSRC DTP项目的部分支持。感谢Pankaj Rohatgi先生的理论指导和Sami SaabThe 在信号处理上具体的帮助。感谢 Billy Brumley和Markku Saarinen关于NEOX实现的独到见解以及Martijn Stam对AEAD方面的讨论和感谢整个NORX团队。感谢这些为完善第5节提供帮助的人们。

责任编辑:蓝雨泪 来源: FreeBuf
相关推荐

2017-09-05 15:57:47

2021-03-09 10:12:39

侧信道攻击漏洞网络攻击

2009-08-19 16:27:52

电磁干扰结构化布线系统

2010-03-03 14:51:02

Android手机

2023-07-03 17:15:12

系统架构设计

2010-03-01 14:28:46

Python进程

2010-02-22 10:18:29

Python代码

2020-07-21 07:00:00

侧信道攻击黑客网络攻击

2021-01-11 10:28:10

漏洞侧信道攻击

2009-12-09 16:52:51

VS 2003插件

2010-03-04 16:38:37

Android开发技巧

2010-01-13 18:47:53

C++教程

2017-09-07 16:52:23

2010-07-28 10:42:12

DB2系统

2010-05-20 14:42:02

MySQL数据

2011-04-14 09:05:07

ExcelMySQL数据

2018-04-19 15:13:53

javascriptwebpackvue.js

2010-01-28 14:04:35

C++链表

2010-02-23 13:33:49

Python测试套件

2010-07-28 09:21:25

DB2锁等待
点赞
收藏

51CTO技术栈公众号