鄧柳于勤,陳財森,蔡紅柳,薛廷梅,于茜
(裝甲兵工程學院a.信息工程系;b.科研部,北京100072)
基于ARM處理器Cache特征的計時分析研究
鄧柳于勤a,陳財森b,蔡紅柳a,薛廷梅a,于茜a
(裝甲兵工程學院a.信息工程系;b.科研部,北京100072)
通過研究Cache基本結(jié)構(gòu)、Cache計時攻擊的基本原理和攻擊模型,發(fā)現(xiàn)由于ARM處理器與x86處理器在Cache結(jié)構(gòu)及特征等方面存在差異,導致原有基于x86平臺的Cache計時攻擊方法在ARM平臺上具有不適用性。針對x86處理器與ARM處理器Cache在結(jié)構(gòu)、替換策略、精確計時方法等方面的差異,結(jié)合Cache計時攻擊原理,分別提出了改進建議。針對Cache結(jié)構(gòu)差異,提出在編寫間諜程序時參數(shù)必須進行配套修改;針對替換策略的不同,提出了訪問一個數(shù)據(jù)塊多次和建立一個大數(shù)據(jù)塊的改進建議;針對計時方法的不同,提出在ARM平臺進行精確計時必須要調(diào)用性能監(jiān)控寄存器。
Cache計時攻擊;ARM處理器;移動智能終端;Cache替換策略
目前智能手機、平板電腦等移動智能終端的廣泛使用,已經(jīng)成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?,但同時也帶來了個人隱私、私有數(shù)據(jù)泄漏等安全問題,其安全性受到很高關(guān)注,因此需要采取安全措施,如用密碼算法加密私有信息。同時,ARM處理器是專門為移動智能終端設(shè)計的低功耗處理器,是目前移動終端上主流的處理器之一。為了滿足其高性能要求,ARM處理器也采用了CPU緩存技術(shù),因此為了確保移動終端的數(shù)據(jù)安全和設(shè)備自身安全,基于ARM處理器的密碼算法Cache計時攻擊研究顯得尤為迫切。
Cache計時攻擊是旁路攻擊的一種,該攻擊已被證明用在基于x86架構(gòu)的桌面計算機的RSA、AES算法具有較大威脅,并已取得一定成就[1-2]。而隨著基于ARM架構(gòu)下移動智能終端的飛速發(fā)展以及對安全性需求日益強烈,急需對ARM架構(gòu)下移動智能終端的Cache計時攻擊展開研究。同時依據(jù)Cache計時攻擊的基本原理,掌握Cache結(jié)構(gòu)特征是Cache計時攻擊的根本前提。
因此有必要研究ARM架構(gòu)處理器的Cache結(jié)構(gòu)特征,并分析ARM架構(gòu)與x86架構(gòu)處理器的Cache結(jié)構(gòu)與特征差異,基于原有x86架構(gòu)的Cache計時攻擊研究成果,分析移動智能終端的Cache計時攻擊研究方案。
本文分析了ARM處理器Cache與x86處理器Cache的差異。這2種處理器在Cache結(jié)構(gòu)、高精度計時方式以及Cache替換策略等方面存在一定差異,這些差異會導致2個平臺的Cache攻擊方法存在不適用的問題。針對特征差異,本研究提出了相應(yīng)的解決方案:針對結(jié)構(gòu)的不同,提出間諜程序必須要做出相應(yīng)修改;針對計時方法的不同,提出了利用ARM處理器的性能監(jiān)控寄存器來實現(xiàn)精確計時的方法,并且指出需要對這一組寄存器進行適當?shù)呐渲貌拍苓_到精確計時;針對Cache替換策略的不同,給出了通過訪問同一個內(nèi)存塊多次或者通過訪問一個建立的大內(nèi)存塊來填充的建議。
1.1 ARM處理器
處理器的架構(gòu)直接決定指令組必須遵守的規(guī)則,不同的公司可能生產(chǎn)出架構(gòu)相同的不同處理器產(chǎn)品。移動智能終端使用最為普遍的處理器架構(gòu)是ARM v7,該架構(gòu)分為3個子系列,其中ARM v7-A系列是面向智能手機和平板電腦的。ARM v7-A系列方案的實現(xiàn)成果有Cortex-A8、Cortex-A9等處理器以及高通公司生產(chǎn)的驍龍?zhí)幚砥鞯龋?-6]。
本文主要的攻擊對象為使用Cortex-A系列處理器的移動設(shè)備,其處理器為ARM v7-A架構(gòu),是專門為供能有限的移動設(shè)備而設(shè)計的,被廣泛用在了智能手機、平板電腦、上網(wǎng)本上。
ARM處理器通常都支持循環(huán)替換策略和偽隨機替換策略2種Cache替換策略[7]。由于后者實現(xiàn)較為簡單,因此大多數(shù)采用偽隨機替換策略。通過控制一個寄存器可以切換這2種替換策略。根據(jù)ARM架構(gòu)參考手冊(ARM v7-A和 ARM v7-R版本)顯示,系統(tǒng)控制寄存器(SCTLR)被用來管理某些內(nèi)存系統(tǒng)設(shè)置[3]。該寄存器第14位(RR位)是用來決定替換策略。表1展示了該位可能的值以及相應(yīng)的設(shè)置。
表1 系統(tǒng)控制寄存器
1.2 Cache結(jié)構(gòu)
Cache是為了解決CPU與主存的訪問速度存在不匹配的問題而出現(xiàn)的。依據(jù)時間位置法則和空間位置法則,在CPU和主存之間加入一個Cache(緩存),Cache的讀取速度介于CPU和主存之間,CPU讀取數(shù)據(jù)之前先在Cache中查找數(shù)據(jù)是否存在,若存在則直接從Cache中讀取,這種事件稱之為一次Cache命中(hit),若不存在則從主存中讀取,并復(fù)制一份到Cache中,這種事件稱之為一次失效(miss)。采用Cache技術(shù)使CPU與主存速度不匹配的問題得到有效改善。
Cache有3種不同的映射方式[8]:全相聯(lián)映射方式、直相聯(lián)映射方式和組相聯(lián)映射方式。全相聯(lián)映射指的是任一主存塊能映射到Cache中任意行(主存塊容量等于Cache行容量);直接相聯(lián)映射方式是某一主存塊只能映射到Cache的特定行;組相聯(lián)映射方式則是全相聯(lián)與直接相聯(lián)映射方式的結(jié)合,結(jié)合兩者的優(yōu)點。
Cache計時攻擊利用的是CPU訪問Cache是“命中”和“失效”所產(chǎn)生的差異。在Cache訪問過程中,根據(jù)要訪問的數(shù)據(jù)是否在之前存放于Cache中,會產(chǎn)生“命中”和“失效”2種情況,若“命中”,CPU直接從Cache中讀取數(shù)據(jù),時間較短,若“失效”,則需從內(nèi)存中將數(shù)據(jù)讀給Cache并送往CPU。利用這種計時差異,結(jié)合密碼硬件加密方法,對加密過程加以監(jiān)視并收集泄露數(shù)據(jù),利用密鑰信息與Cache訪問信息的相關(guān)性,在一定條件下可以分析出密鑰,達到破解密鑰的目的[9]。
2.1 攻擊的分類
根據(jù)Cache計時時間的采集方式不同,可將Cache計時攻擊分為時序驅(qū)動、訪問驅(qū)動、蹤跡驅(qū)動3種方式[4]。①時序驅(qū)動攻擊采集整個加密進程的加密時間[5],這種方式的優(yōu)點是采集樣本的方法相對簡單,平臺適用性強,因為只需要采集整個加密的時間,而不需要做太多內(nèi)部工作,但是缺點是樣本量很大,一般都以百萬計,從而造成離線分析方法比較復(fù)雜;②訪問驅(qū)動攻擊利用間諜進程驅(qū)逐Cache并重復(fù)運行的方法采集加密解密過程中訪問過的Cache組信息[10-11],采集方法與時序驅(qū)動相比稍微復(fù)雜一些,但是分析方法簡單,利用木馬植入技術(shù),可以實現(xiàn)本地攻擊和遠程攻擊;③蹤跡驅(qū)動攻擊比訪問驅(qū)動攻擊的采集精度更高[12],該方法需要精確采集詳細的加密解密信息,例如一次加密解密過程中每次查表的命中和失效信息,該方法通過純計算方法要實現(xiàn)十分困難,要輔以功耗分析等手段才能實現(xiàn),因此需要物理接觸密碼設(shè)備,導致該攻擊不論在本地和遠程實現(xiàn)起來都很困難。
2.2 攻擊模型
以訪問驅(qū)動攻擊為例,其攻擊模型為:先利用間諜進程監(jiān)視密碼進程的Cache訪問操作,然后通過計時方法,在密碼進程一次或多次加密后,用間諜進程對數(shù)據(jù)Cache進行數(shù)據(jù)二次訪問的Cache,獲得“命中”和“失效”特征信息,可以間接獲得加密進程的Cache訪問位置信息等信息,再進一步對其分析,預(yù)測加密查表索引信息,根據(jù)查表索引、明文密文對以及密鑰之間的關(guān)系縮小密鑰搜索空間。具體攻擊模型如圖1所示。
圖1 訪問驅(qū)動計時攻擊模型
1)Cache信息采集:在密碼進程(AP)運行的同時,讓間諜進程(SP)在同一PC機上并發(fā)運行,AP和SP在主存中所占內(nèi)存塊分別設(shè)為ACB和SCB,其中SCB的大小和Cache存儲空間大小相同(如圖1(a)、圖1(b)所示)。在AP加密之前,SP先將私有內(nèi)存數(shù)據(jù)全部加載到Cache中,從而可以清空Cache(如圖1(c)所示);然后再觸發(fā)AP執(zhí)行加密操作,在此加密過程中,AP進程會對Cache進行多次查表訪問,并根據(jù)Cache替換策略的特點,會將SP部分的預(yù)先加載數(shù)據(jù)從Cache中驅(qū)逐出去(如圖1(d)所示);之后,SP再次訪問所有私有數(shù)據(jù)時,對AP驅(qū)逐出來的數(shù)據(jù)會發(fā)生“Cache失效”、從而因需訪問二級緩存或主存,消耗較多的時鐘周期,通過這種時間差異對比,SP可得到AP在每次加密中查Ti表所訪問的Cache行或Cache組集合以及沒有訪問過的Cache行或Cache組集合。(如圖1(e)所示)。
2)Cache信息分析:根據(jù)所采集Cache旁路信息,利用查找表Cache組和查表索引之間的映射關(guān)系,得到可能的查表索引值集合A或不可能值集合B,然后結(jié)合明文或密文,通過分析預(yù)測密鑰。
由于ARM處理器與x86處理器在結(jié)構(gòu)和特征上存在差異,而這些差異會導致過去的攻擊經(jīng)驗在ARM平臺上不適用,因此本節(jié)著重分析這2種處理器存在哪些差異。
3.1 結(jié)構(gòu)特征差異
計算機與移動智能終端在性能上存在較大差異,造成2種平臺下處理器的Cache設(shè)計存在差異。以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四核處理器,它們的具體參數(shù)如表2和表3所示。
表2 Google Nexus S處理器參數(shù)
表3 Acer Iconia A510的處理器參數(shù)
從表2、表3中可知:x86平臺的CPU Cache與ARM平臺的CPU Cache在Cache大小、Cache行大小、Cache組數(shù)等方面都存在差異,這些差異直接決定了Cache計時攻擊的實現(xiàn)方式。
同時在AES加密實現(xiàn)方式方面,PC端的AES實現(xiàn)方式有查T表和查S盒2種,在移動終端往往不能進行太過于復(fù)雜的加密,所以一般采用T查找表這種方式。以128位AES為例,T表包括256個4字節(jié)元素,使得每個T表的總大小為1kB。結(jié)合不同平臺的CPU Cache的參數(shù),可以發(fā)現(xiàn)T表所占據(jù)的行數(shù)會不同。
3.2 替換策略差異
關(guān)于替換策略,ARM處理器通常使用的是隨機替換策略,而x86處理器通常使用的是LRU(最近最少使用)替換策略。這2種替換策略的不同就會造成Cache驅(qū)逐方法上存在差異,從而導致原有Cache計時攻擊方法的兼容性問題。
因此間諜程序等攻擊工具在移動平臺的進行攻擊時,必須針對Cache替換策略進行相應(yīng)調(diào)整。
3.3 高精度計時方法差異
基于ARM平臺的處理器,其操作系統(tǒng)為Android,使用性能監(jiān)控寄存器進行計時,而Intel處理器,在Windows和Linux系統(tǒng)下,使用時間戳計數(shù)器(TSC)進行計時。
性能監(jiān)控寄存器可以通過計算時鐘周期實現(xiàn)精確計時,并且最多可以計數(shù)31種不同的事件,同時該寄存器也可以管理和控制這些計數(shù)。通常來說,性能檢測寄存器只能在特權(quán)模式下被訪問,但是通過設(shè)置User Enable Register的適當位,也可以使用用戶模式進行訪問。
在PC端,通常使用TSC進行精確計時。這個64位的寄存器為了計算時鐘周期,每過一個時鐘周期就會增加一次。如果要訪問TSC,一般是通過RDTSC指令完成的。這種高精度計時方法的差異導致在ARM平臺實現(xiàn)Cache計時攻擊需要調(diào)整其計時方法。
ARM處理器和x86處理器的Cache在結(jié)構(gòu)、高精度計時方法和替換策略等方面都存在差異,因此在ARM處理器上實現(xiàn)Cache攻擊必須要對原有的Cache計時攻擊方法進行改進。本文通過分析研究,針對存在的特征差異,分別提出了相應(yīng)的改進措施。
4.1 調(diào)整間諜程序訪問T表和Cache行的相關(guān)參數(shù)
由于Cache大小、Cache行大小、Cache行數(shù)、組數(shù)等參數(shù)的不同,同樣的AES算法T查找表在加載進2個平臺的Cache時,所占據(jù)的Cache行數(shù)以及位置是不一樣的,這些差異需要針對ARM Cache的參數(shù)調(diào)整間諜程序。
以128位AES加密算法為例,一個T表的大小為1KB,Exynos 3單核1 GHz處理器能存放32個T表,一個T表在該處理器里占用16行Cache,映射方式為4路組相聯(lián)。Nvidia Tegra 3 1.4 GHz四核處理器能存放32個T表,一個T表占用32行Cache,映射方式為4路組相聯(lián)。典型的PC處理器Cache能存放128個T表,每個T表占用16行。
根據(jù)這個差異,間諜程序在運行前,應(yīng)針對ARM處理器的特征參數(shù),調(diào)整其訪問T表和Cache行的相關(guān)參數(shù)。
4.2 多次訪問一個數(shù)據(jù)塊或者分配更大內(nèi)存塊
為了精確驅(qū)逐存有AES算法T查找表的Cache行,需要實例化一個臨時數(shù)據(jù)結(jié)構(gòu),其大小為L1_Cache_Size字節(jié),4個這樣的數(shù)據(jù)結(jié)構(gòu)剛好對應(yīng)一個L1_S Cache組。對于虛擬Cache來說,可以很容易通過分配連續(xù)內(nèi)存區(qū)域來建立映射,然而對于物理Cache來說這樣的映射必須手動建立。
當訪問這個臨時數(shù)據(jù)結(jié)構(gòu)里的數(shù)據(jù)時,隨機替換策略在所有可能的Cache行Ω={1,2,3,4}中隨機選擇元素(Cache行)替換。但是AES T表元素在整個臨時字節(jié)數(shù)組都被訪問完之后(即平均每個Cache組訪問了4次之后)仍然被緩存著的概率對于Cache攻擊來說太低。因此,根據(jù)ARM Cache的不確定替換策略,有2種可能的方法確定驅(qū)逐特定Cache組的概率:①訪問L1_W數(shù)據(jù)塊多余1次;②分配一個更大的內(nèi)存塊,即Cache大小的3倍。根據(jù)圖2的概率樹可知,第二種方法更有效。
圖2 內(nèi)存塊bj在重新訪問內(nèi)存塊bi之后仍然被緩存的概率樹
4.3 ARM平臺下的高精度計時方法
在ARM平臺,沒有時間戳計數(shù)器,只能通過性能監(jiān)控寄存器計時。而通常來說,性能監(jiān)控寄存器只能在特權(quán)模式下訪問,需要對User Enable Register進行適當?shù)脑O(shè)置才能在用戶模式下訪問。而周期計數(shù)寄存器只能被有特權(quán)的應(yīng)用訪問,除非明確給非特權(quán)的應(yīng)用賦予訪問權(quán)利。核心模塊的目的就是在ARM控制寄存器里設(shè)置一個特別的位,賦予非特權(quán)應(yīng)用訪問周期計數(shù)寄存器的權(quán)限。因為加載特權(quán)模塊需要訪問特權(quán),所以需要一個破解(root)過的移動設(shè)備來實行攻擊。
另外,要在移動端進行精確的計時,需要對用戶的使能寄存器(PMUSERENR)、性能監(jiān)控控制寄存器(PMCR)、計數(shù)使能設(shè)置寄存器(PMCNTENSET)、計數(shù)使能清除寄存器(PMCNTENCLR)、周期計數(shù)寄存器(PMCCNTR)分別進行設(shè)置,在合適的配置之后才能針對移動設(shè)備進行精確計時。
本研究通過分析基于ARM處理器和x86處理器2個平臺的Cache特征差異,分析了原有Cache計時攻擊算法在移動智能終端上的不兼容性,并分別提出了相應(yīng)的解決方案。
進一步的工作將致力于將上述解決方案進行整合并使其在實際攻擊中應(yīng)用,同時由于現(xiàn)在攻擊的實現(xiàn)前提是移動設(shè)備已被root過,所以如何在沒有被root的設(shè)備上進行攻擊,也是下一步研究工作。
[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]周平,寇應(yīng)展,王韜,等.一種改進的針對滑動窗口模冪運算實現(xiàn)的密碼數(shù)據(jù)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蹤跡驅(qū)動指令Cache計時攻擊研究[J].軟件學報,2013,24(7):1683?1694.
[9]趙新杰,王韜,郭世澤,等.AES訪問驅(qū)動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架構(gòu)的移動智能終端的Cache計時攻擊技術(shù)研究”(61402528)
鄧柳于勤(1991—),男,碩士研究生,主要從事信息安全與對抗技術(shù)研究;陳財森(1983—),男,博士,助理研究員,主要從事信息安全與密碼分析研究;蔡紅柳(1960—),女,副教授,主要從事網(wǎng)絡(luò)安全研究;薛廷梅(1978—),男,講師,主要從事計算機網(wǎng)絡(luò)與網(wǎng)絡(luò)安全研究;于茜(1992—),女,碩士研究生,主要從事信息安全與對抗技術(shù)研究。