基于ARM处理器Cache特征的计时分析研究

2015-11-26 06:20邓柳于勤陈财森蔡红柳薛廷梅于茜
兵器装备工程学报 2015年11期
关键词:寄存器计时加密

邓柳于勤,陈财森,蔡红柳,薛廷梅,于茜

(装甲兵工程学院a.信息工程系;b.科研部,北京100072)

基于ARM处理器Cache特征的计时分析研究

邓柳于勤a,陈财森b,蔡红柳a,薛廷梅a,于茜a

(装甲兵工程学院a.信息工程系;b.科研部,北京100072)

通过研究Cache基本结构、Cache计时攻击的基本原理和攻击模型,发现由于ARM处理器与x86处理器在Cache结构及特征等方面存在差异,导致原有基于x86平台的Cache计时攻击方法在ARM平台上具有不适用性。针对x86处理器与ARM处理器Cache在结构、替换策略、精确计时方法等方面的差异,结合Cache计时攻击原理,分别提出了改进建议。针对Cache结构差异,提出在编写间谍程序时参数必须进行配套修改;针对替换策略的不同,提出了访问一个数据块多次和建立一个大数据块的改进建议;针对计时方法的不同,提出在ARM平台进行精确计时必须要调用性能监控寄存器。

Cache计时攻击;ARM处理器;移动智能终端;Cache替换策略

目前智能手机、平板电脑等移动智能终端的广泛使用,已经成为人们日常生活中不可或缺的一部分,但同时也带来了个人隐私、私有数据泄漏等安全问题,其安全性受到很高关注,因此需要采取安全措施,如用密码算法加密私有信息。同时,ARM处理器是专门为移动智能终端设计的低功耗处理器,是目前移动终端上主流的处理器之一。为了满足其高性能要求,ARM处理器也采用了CPU缓存技术,因此为了确保移动终端的数据安全和设备自身安全,基于ARM处理器的密码算法Cache计时攻击研究显得尤为迫切。

Cache计时攻击是旁路攻击的一种,该攻击已被证明用在基于x86架构的桌面计算机的RSA、AES算法具有较大威胁,并已取得一定成就[1-2]。而随着基于ARM架构下移动智能终端的飞速发展以及对安全性需求日益强烈,急需对ARM架构下移动智能终端的Cache计时攻击展开研究。同时依据Cache计时攻击的基本原理,掌握Cache结构特征是Cache计时攻击的根本前提。

因此有必要研究ARM架构处理器的Cache结构特征,并分析ARM架构与x86架构处理器的Cache结构与特征差异,基于原有x86架构的Cache计时攻击研究成果,分析移动智能终端的Cache计时攻击研究方案。

本文分析了ARM处理器Cache与x86处理器Cache的差异。这2种处理器在Cache结构、高精度计时方式以及Cache替换策略等方面存在一定差异,这些差异会导致2个平台的Cache攻击方法存在不适用的问题。针对特征差异,本研究提出了相应的解决方案:针对结构的不同,提出间谍程序必须要做出相应修改;针对计时方法的不同,提出了利用ARM处理器的性能监控寄存器来实现精确计时的方法,并且指出需要对这一组寄存器进行适当的配置才能达到精确计时;针对Cache替换策略的不同,给出了通过访问同一个内存块多次或者通过访问一个建立的大内存块来填充的建议。

1 ARM处理器及Cache特性分析

1.1 ARM处理器

处理器的架构直接决定指令组必须遵守的规则,不同的公司可能生产出架构相同的不同处理器产品。移动智能终端使用最为普遍的处理器架构是ARM v7,该架构分为3个子系列,其中ARM v7-A系列是面向智能手机和平板电脑的。ARM v7-A系列方案的实现成果有Cortex-A8、Cortex-A9等处理器以及高通公司生产的骁龙处理器等[3-6]。

本文主要的攻击对象为使用Cortex-A系列处理器的移动设备,其处理器为ARM v7-A架构,是专门为供能有限的移动设备而设计的,被广泛用在了智能手机、平板电脑、上网本上。

ARM处理器通常都支持循环替换策略和伪随机替换策略2种Cache替换策略[7]。由于后者实现较为简单,因此大多数采用伪随机替换策略。通过控制一个寄存器可以切换这2种替换策略。根据ARM架构参考手册(ARM v7-A和 ARM v7-R版本)显示,系统控制寄存器(SCTLR)被用来管理某些内存系统设置[3]。该寄存器第14位(RR位)是用来决定替换策略。表1展示了该位可能的值以及相应的设置。

表1 系统控制寄存器

1.2 Cache结构

Cache是为了解决CPU与主存的访问速度存在不匹配的问题而出现的。依据时间位置法则和空间位置法则,在CPU和主存之间加入一个Cache(缓存),Cache的读取速度介于CPU和主存之间,CPU读取数据之前先在Cache中查找数据是否存在,若存在则直接从Cache中读取,这种事件称之为一次Cache命中(hit),若不存在则从主存中读取,并复制一份到Cache中,这种事件称之为一次失效(miss)。采用Cache技术使CPU与主存速度不匹配的问题得到有效改善。

Cache有3种不同的映射方式[8]:全相联映射方式、直相联映射方式和组相联映射方式。全相联映射指的是任一主存块能映射到Cache中任意行(主存块容量等于Cache行容量);直接相联映射方式是某一主存块只能映射到Cache的特定行;组相联映射方式则是全相联与直接相联映射方式的结合,结合两者的优点。

2 Cache计时攻击

Cache计时攻击利用的是CPU访问Cache是“命中”和“失效”所产生的差异。在Cache访问过程中,根据要访问的数据是否在之前存放于Cache中,会产生“命中”和“失效”2种情况,若“命中”,CPU直接从Cache中读取数据,时间较短,若“失效”,则需从内存中将数据读给Cache并送往CPU。利用这种计时差异,结合密码硬件加密方法,对加密过程加以监视并收集泄露数据,利用密钥信息与Cache访问信息的相关性,在一定条件下可以分析出密钥,达到破解密钥的目的[9]。

2.1 攻击的分类

根据Cache计时时间的采集方式不同,可将Cache计时攻击分为时序驱动、访问驱动、踪迹驱动3种方式[4]。①时序驱动攻击采集整个加密进程的加密时间[5],这种方式的优点是采集样本的方法相对简单,平台适用性强,因为只需要采集整个加密的时间,而不需要做太多内部工作,但是缺点是样本量很大,一般都以百万计,从而造成离线分析方法比较复杂;②访问驱动攻击利用间谍进程驱逐Cache并重复运行的方法采集加密解密过程中访问过的Cache组信息[10-11],采集方法与时序驱动相比稍微复杂一些,但是分析方法简单,利用木马植入技术,可以实现本地攻击和远程攻击;③踪迹驱动攻击比访问驱动攻击的采集精度更高[12],该方法需要精确采集详细的加密解密信息,例如一次加密解密过程中每次查表的命中和失效信息,该方法通过纯计算方法要实现十分困难,要辅以功耗分析等手段才能实现,因此需要物理接触密码设备,导致该攻击不论在本地和远程实现起来都很困难。

2.2 攻击模型

以访问驱动攻击为例,其攻击模型为:先利用间谍进程监视密码进程的Cache访问操作,然后通过计时方法,在密码进程一次或多次加密后,用间谍进程对数据Cache进行数据二次访问的Cache,获得“命中”和“失效”特征信息,可以间接获得加密进程的Cache访问位置信息等信息,再进一步对其分析,预测加密查表索引信息,根据查表索引、明文密文对以及密钥之间的关系缩小密钥搜索空间。具体攻击模型如图1所示。

图1 访问驱动计时攻击模型

1)Cache信息采集:在密码进程(AP)运行的同时,让间谍进程(SP)在同一PC机上并发运行,AP和SP在主存中所占内存块分别设为ACB和SCB,其中SCB的大小和Cache存储空间大小相同(如图1(a)、图1(b)所示)。在AP加密之前,SP先将私有内存数据全部加载到Cache中,从而可以清空Cache(如图1(c)所示);然后再触发AP执行加密操作,在此加密过程中,AP进程会对Cache进行多次查表访问,并根据Cache替换策略的特点,会将SP部分的预先加载数据从Cache中驱逐出去(如图1(d)所示);之后,SP再次访问所有私有数据时,对AP驱逐出来的数据会发生“Cache失效”、从而因需访问二级缓存或主存,消耗较多的时钟周期,通过这种时间差异对比,SP可得到AP在每次加密中查Ti表所访问的Cache行或Cache组集合以及没有访问过的Cache行或Cache组集合。(如图1(e)所示)。

2)Cache信息分析:根据所采集Cache旁路信息,利用查找表Cache组和查表索引之间的映射关系,得到可能的查表索引值集合A或不可能值集合B,然后结合明文或密文,通过分析预测密钥。

3 ARM架构处理器的Cache特征分析

由于ARM处理器与x86处理器在结构和特征上存在差异,而这些差异会导致过去的攻击经验在ARM平台上不适用,因此本节着重分析这2种处理器存在哪些差异。

3.1 结构特征差异

计算机与移动智能终端在性能上存在较大差异,造成2种平台下处理器的Cache设计存在差异。以x86处理器的Intel典型处理器core i5处理器为例,该处理器的L1 Cache为128KB,Cache行大小为64Byte。而ARM平台处理器在Cortex-A8和Cortex-A9处理器各取一个典型的处理器进行分析,即Google Nexus S的Exynos 3单核1 GHz处理器和Acer Iconia A510的Nvidia Tegra 3 1.4 GHz四核处理器,它们的具体参数如表2和表3所示。

表2 Google Nexus S处理器参数

表3 Acer Iconia A510的处理器参数

从表2、表3中可知:x86平台的CPU Cache与ARM平台的CPU Cache在Cache大小、Cache行大小、Cache组数等方面都存在差异,这些差异直接决定了Cache计时攻击的实现方式。

同时在AES加密实现方式方面,PC端的AES实现方式有查T表和查S盒2种,在移动终端往往不能进行太过于复杂的加密,所以一般采用T查找表这种方式。以128位AES为例,T表包括256个4字节元素,使得每个T表的总大小为1kB。结合不同平台的CPU Cache的参数,可以发现T表所占据的行数会不同。

3.2 替换策略差异

关于替换策略,ARM处理器通常使用的是随机替换策略,而x86处理器通常使用的是LRU(最近最少使用)替换策略。这2种替换策略的不同就会造成Cache驱逐方法上存在差异,从而导致原有Cache计时攻击方法的兼容性问题。

因此间谍程序等攻击工具在移动平台的进行攻击时,必须针对Cache替换策略进行相应调整。

3.3 高精度计时方法差异

基于ARM平台的处理器,其操作系统为Android,使用性能监控寄存器进行计时,而Intel处理器,在Windows和Linux系统下,使用时间戳计数器(TSC)进行计时。

性能监控寄存器可以通过计算时钟周期实现精确计时,并且最多可以计数31种不同的事件,同时该寄存器也可以管理和控制这些计数。通常来说,性能检测寄存器只能在特权模式下被访问,但是通过设置User Enable Register的适当位,也可以使用用户模式进行访问。

在PC端,通常使用TSC进行精确计时。这个64位的寄存器为了计算时钟周期,每过一个时钟周期就会增加一次。如果要访问TSC,一般是通过RDTSC指令完成的。这种高精度计时方法的差异导致在ARM平台实现Cache计时攻击需要调整其计时方法。

4 针对ARM处理器的Cache计时攻击方法

ARM处理器和x86处理器的Cache在结构、高精度计时方法和替换策略等方面都存在差异,因此在ARM处理器上实现Cache攻击必须要对原有的Cache计时攻击方法进行改进。本文通过分析研究,针对存在的特征差异,分别提出了相应的改进措施。

4.1 调整间谍程序访问T表和Cache行的相关参数

由于Cache大小、Cache行大小、Cache行数、组数等参数的不同,同样的AES算法T查找表在加载进2个平台的Cache时,所占据的Cache行数以及位置是不一样的,这些差异需要针对ARM Cache的参数调整间谍程序。

以128位AES加密算法为例,一个T表的大小为1KB,Exynos 3单核1 GHz处理器能存放32个T表,一个T表在该处理器里占用16行Cache,映射方式为4路组相联。Nvidia Tegra 3 1.4 GHz四核处理器能存放32个T表,一个T表占用32行Cache,映射方式为4路组相联。典型的PC处理器Cache能存放128个T表,每个T表占用16行。

根据这个差异,间谍程序在运行前,应针对ARM处理器的特征参数,调整其访问T表和Cache行的相关参数。

4.2 多次访问一个数据块或者分配更大内存块

为了精确驱逐存有AES算法T查找表的Cache行,需要实例化一个临时数据结构,其大小为L1_Cache_Size字节,4个这样的数据结构刚好对应一个L1_S Cache组。对于虚拟Cache来说,可以很容易通过分配连续内存区域来建立映射,然而对于物理Cache来说这样的映射必须手动建立。

当访问这个临时数据结构里的数据时,随机替换策略在所有可能的Cache行Ω={1,2,3,4}中随机选择元素(Cache行)替换。但是AES T表元素在整个临时字节数组都被访问完之后(即平均每个Cache组访问了4次之后)仍然被缓存着的概率对于Cache攻击来说太低。因此,根据ARM Cache的不确定替换策略,有2种可能的方法确定驱逐特定Cache组的概率:①访问L1_W数据块多余1次;②分配一个更大的内存块,即Cache大小的3倍。根据图2的概率树可知,第二种方法更有效。

图2 内存块bj在重新访问内存块bi之后仍然被缓存的概率树

4.3 ARM平台下的高精度计时方法

在ARM平台,没有时间戳计数器,只能通过性能监控寄存器计时。而通常来说,性能监控寄存器只能在特权模式下访问,需要对User Enable Register进行适当的设置才能在用户模式下访问。而周期计数寄存器只能被有特权的应用访问,除非明确给非特权的应用赋予访问权利。核心模块的目的就是在ARM控制寄存器里设置一个特别的位,赋予非特权应用访问周期计数寄存器的权限。因为加载特权模块需要访问特权,所以需要一个破解(root)过的移动设备来实行攻击。

另外,要在移动端进行精确的计时,需要对用户的使能寄存器(PMUSERENR)、性能监控控制寄存器(PMCR)、计数使能设置寄存器(PMCNTENSET)、计数使能清除寄存器(PMCNTENCLR)、周期计数寄存器(PMCCNTR)分别进行设置,在合适的配置之后才能针对移动设备进行精确计时。

5 结束语

本研究通过分析基于ARM处理器和x86处理器2个平台的Cache特征差异,分析了原有Cache计时攻击算法在移动智能终端上的不兼容性,并分别提出了相应的解决方案。

进一步的工作将致力于将上述解决方案进行整合并使其在实际攻击中应用,同时由于现在攻击的实现前提是移动设备已被root过,所以如何在没有被root的设备上进行攻击,也是下一步研究工作。

[1]Herath U,Alawatugoda J,Ragel R.Software implementation level countermeasures against the cache timing attack on advanced encryption standard[C]//Eprint Arxiv:1403. IEEE,2013:75-80.[2]周平,寇应展,王韬,等.一种改进的针对滑动窗口模幂运算实现的密码数据Cache计时攻击[J].计算机科学,2013(3):201-205.

[3]ARM.ARM Architecture Reference Manual,ARMv7-A and ARMv7-R ed.,ARM DDI 0406 A[Z].2007.

[4]Osvik D A,Shamir A,Tromer E.Cache attacks and countermeasures:the case of AES[M].Springer Berlin Heidelberg,2006:1-20.

[5]Bernstein D J.Cache-timing attacks on AES[Z].2005.

[6]ARM.ARM处理器[EB/OL].[2015-01-20].http:// www.arm.com/zh/products/processors/index.php.

[7]王超宇.缓存替换策略研究[D].哈尔滨:哈尔滨工程大学,2012.

[8]陈财森,王韬,郭世泽,等.RSA踪迹驱动指令Cache计时攻击研究[J].软件学报,2013,24(7):1683?1694.

[9]赵新杰,王韬,郭世泽,等.AES访问驱动Cache计时攻击[J].软件学报,2011,22(3):572-591.

[10]Percival C.Cache missing for fun and profit[Z].2005.

[11]Neve M,Seifert J P.Advances on access-driven Cache attacks on AES[C]//Selected Areas in Cryptography.Springer Berlin Heidelberg,2007:147-162.

[12]Acriçmez O,Koç Ç K.Trace-driven Cache attacks on AES(short paper)[M].Springer Berlin Heidelberg,2006:112 -121.

(责任编辑杨继森)

Research on Timing Analysis Based on Cache Feature of ARM

DENG Liu-yu-qina,CHEN Cai-senb,CAI Hong-liua,XUE Ting-meia,YU Xia
(a.Department of Information Engineering;b.Ministry of Science Research,Academy of Armored Forces Engineering,Beijing 100072,China)

By investigating Cache structure,Cache timing attack basic principle and attack model,we found that the existed Cache timing attack method for x86 platform cannot be applied for ARM platform. This is caused by the differences of structure et.al between the ARM processor Cache and x86 processor Cache.This article respectively investigated x86 platform Cache and ARM platform Cache in aspects such as structure,replacement strategy,accurate timing methods,combining with the Cache timing attack principle,and put forward the improvement suggestions to solve these problems.To Cache structure difference,supporting parameters must be modified when writing spy programs.In view of the different replacement policy,access to a data block more than one time or access a larger data block may be improvement suggestions.In view of the different timing method,we put forward that we must use performance-monitor registers on the ARM platform for precise timing.

Cache timing attack;ARM processor;mobile smart devices;Cache replacement policy

邓柳于勤,陈财森,蔡红柳,等.基于ARM处理器Cache特征的计时分析研究[J].四川兵工学报,2015(11):118-121.

format:DENG Liu-yu-qin,CHEN Cai-sen,CAI Hong-liu,et al.Research on Timing Analysis Based on Cache Feature of ARM[J].Journal of Sichuan Ordnance,2015(11):118-121.

TP309

A

1006-0707(2015)11-0118-05

10.11809/scbgxb2015.11.031

2015-01-28

国家自然科学基金资助项目“基于ARM架构的移动智能终端的Cache计时攻击技术研究”(61402528)

邓柳于勤(1991—),男,硕士研究生,主要从事信息安全与对抗技术研究;陈财森(1983—),男,博士,助理研究员,主要从事信息安全与密码分析研究;蔡红柳(1960—),女,副教授,主要从事网络安全研究;薛廷梅(1978—),男,讲师,主要从事计算机网络与网络安全研究;于茜(1992—),女,硕士研究生,主要从事信息安全与对抗技术研究。

猜你喜欢
寄存器计时加密
畅游计时天地
一种新型离散忆阻混沌系统及其图像加密应用
腕表计时2.0
Lite寄存器模型的设计与实现
12时计时法与24时计时法的互化
二进制翻译中动静结合的寄存器分配优化方法
计时工具
移位寄存器及算术运算应用
加密与解密
DES 对称加密和解密算法的安全性应用