本發(fā)明涉及計算機寄存器技術(shù)領(lǐng)域,尤其是涉及基于cache的aes(advancedencryptionstandard,高級加密標(biāo)準(zhǔn))算法的安全評估方法和系統(tǒng)。
背景技術(shù):
移動互聯(lián)網(wǎng)的迅猛發(fā)展導(dǎo)致了智能終端的數(shù)量急劇增加,功能也日益增強。伴隨著終端智能化及網(wǎng)絡(luò)寬帶化的趨勢,移動互聯(lián)網(wǎng)業(yè)務(wù)層出不窮,日益繁榮。但作為業(yè)務(wù)載體的智能終端卻面臨各種安全威脅,如惡意訂購、盜取賬戶、監(jiān)聽通話等。與此同時,智能終端越來越多地涉及商業(yè)秘密和個人隱私等敏感信息,智能終端作為移動互聯(lián)網(wǎng)業(yè)務(wù)最主要的載體,面臨著嚴(yán)峻的安全挑戰(zhàn)。
智能終端操作系統(tǒng)比較繁多,內(nèi)在的安全機制差異也很大,其結(jié)果是,不同廠商的智能終端面臨的安全風(fēng)險截然不同;甚至同樣的操作系統(tǒng),由于不同oem(originalequipmentmanufacturer,原始設(shè)備制造商)對其安全加固程度不同,也呈現(xiàn)出不同的安全特性。
目前對智能終端的安全評估主要集中在操作系統(tǒng)的漏洞分析上,大多是從系統(tǒng)層面分析操作系統(tǒng)的安全性,但對硬件安全的分析還鮮有提及。cpu(centralprocessingunit,中央處理器)及底層硬件的安全是整個智能終端系統(tǒng)安全的基礎(chǔ),cpu等硬件上如果出現(xiàn)漏洞,單靠軟件是很難保證安全的。
目前大部分的軟件攻擊方法只適用于對操作系統(tǒng)等軟件的安全進(jìn)行評估,因此在硬件攻擊方面存在很大缺陷。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供基于cache(cachememory,高速緩沖寄存器)的aes算法的安全評估方法和系統(tǒng),利用cache攻擊的方法評估cpu在操作數(shù)據(jù)的過程中cache命中或失效導(dǎo)致的硬件信息泄露,從而評判智能終端是否存在安全漏洞,彌補了硬件攻擊的缺陷。
第一方面,本發(fā)明實施例提供了基于cache的aes算法的安全評估方法,包括:
獲取主存地址與cache地址間的空間映射,并確定所述cache中所有緩存組的地址,所述緩存組包括被攻擊緩存組;
利用prime方式訪問所述空間映射,清除并占用所述緩存組和所述地址;
調(diào)用被攻擊程序以使被攻擊數(shù)據(jù)存入所述被攻擊緩存組中;
利用probe方式確定所述被攻擊緩存組,并將所述所有緩存組的訪問信息進(jìn)行間隔儲存,從而得到結(jié)果文件;
根據(jù)所述結(jié)果文件分析輪密鑰,并根據(jù)所述輪密鑰反推高級加密標(biāo)準(zhǔn)aes密鑰。
結(jié)合第一方面,本發(fā)明實施例提供了第一方面的第一種可能的實施方式,其中,所述被攻擊程序包括aes加密運算程序,所述地址包括被攻擊地址,所述利用probe方式確定所述被攻擊緩存組,并將所述所有緩存組的訪問信息進(jìn)行間隔儲存,從而得到結(jié)果文件包括:
預(yù)設(shè)訪問次數(shù),在所述aes加密運算程序執(zhí)行完畢后,調(diào)用攻擊程序訪問所述被攻擊地址并計時,所述計時采用linuxc語言的計時函數(shù);
根據(jù)cachemiss效果記錄所述所有緩存組的計時差別,得到所述訪問信息;
重復(fù)進(jìn)行所述攻擊程序的調(diào)用直至滿足所述訪問次數(shù),并將所述訪問信息以單位時間的間隔進(jìn)行存儲,得到所述結(jié)果文件。
結(jié)合第一方面,本發(fā)明實施例提供了第一方面的第二種可能的實施方式,其中,所述輪密鑰包括猜測密鑰值,所述根據(jù)所述結(jié)果文件分析輪密鑰,并根據(jù)所述輪密鑰反推aes密鑰包括:
利用區(qū)分器對所述結(jié)果文件進(jìn)行相關(guān)性分析,得到aes使用的緩存大小cachesize,并區(qū)分所述cache的命中操作和失效操作;
對所述結(jié)果文件進(jìn)行輪運算分析得到所述猜測密鑰值;
利用查表法對所述猜測密鑰值進(jìn)行運算得到查表中間值;
根據(jù)所述查表中間值和所述cachesize推斷所述猜測密鑰值是否正確;
如果正確,則得到所述aes密鑰。
結(jié)合第一方面的第二種可能的實施方式,本發(fā)明實施例提供了第一方面的第三種可能的實施方式,其中,所述結(jié)果文件包括參考時間樣本,所述利用區(qū)分器對所述結(jié)果文件進(jìn)行相關(guān)性分析,得到aes使用的緩存大小cachesize,并區(qū)分所述cache的命中操作和失效操作包括:
分別計算所述被攻擊數(shù)據(jù)對應(yīng)的所述參考時間樣本和其他時間樣本的相關(guān)性系數(shù);
設(shè)定比較閾值,判斷所述相關(guān)性系數(shù)和所述比較閾值的大?。?/p>
如果所述相關(guān)性系數(shù)大于所述比較閾值,則歸為同一操作組;
如果所述相關(guān)性系數(shù)小于所述比較閾值,則歸為不同操作組;
將所述同一操作組和所述不同操作組對應(yīng)的元素個數(shù)進(jìn)行比較得到比值數(shù)據(jù);
根據(jù)所述比值數(shù)據(jù)判斷所述cachesize是否被所述aes使用;
如果所述cachesize被使用,則為所述命中操作。
結(jié)合第一方面的第二種可能的實施方式,本發(fā)明實施例提供了第一方面的第四種可能的實施方式,其中,所述對所述結(jié)果文件進(jìn)行輪運算分析得到所述猜測密鑰值包括:
選取所述結(jié)果文件中相關(guān)性系數(shù)差別最大的所述被攻擊數(shù)據(jù);
將所述差別最大的被攻擊數(shù)據(jù)反推回的序號設(shè)定為所述猜測密鑰值,其中,所述猜測密鑰值為第十輪輪運算的密鑰值。
第二方面,本發(fā)明實施例提供了基于cache的aes算法的安全評估系統(tǒng),包括:
獲取單元,用于獲取主存地址與cache地址間的空間映射,并確定所述cache中所有緩存組的地址,所述緩存組包括被攻擊緩存組;
第一攻擊單元,用于利用prime方式訪問所述空間映射,清除并占用所述緩存組和所述地址;
調(diào)用單元,用于調(diào)用被攻擊程序以使被攻擊數(shù)據(jù)存入所述被攻擊緩存組中;
第二攻擊單元,用于利用probe方式確定所述被攻擊緩存組,并將所述所有緩存組的訪問信息進(jìn)行間隔儲存,從而得到結(jié)果文件;
分析單元,用于根據(jù)所述結(jié)果文件分析輪密鑰,并根據(jù)所述輪密鑰反推高級加密標(biāo)準(zhǔn)aes密鑰。
結(jié)合第二方面,本發(fā)明實施例提供了第二方面的第一種可能的實施方式,其中,所述被攻擊程序包括aes加密運算程序,所述地址包括被攻擊地址,所述第二攻擊單元包括:
預(yù)設(shè)訪問次數(shù),在所述aes加密運算程序執(zhí)行完畢后,調(diào)用攻擊程序訪問所述被攻擊地址并計時,所述計時采用linuxc語言的計時函數(shù);
根據(jù)cachemiss效果記錄所述所有緩存組的計時差別,得到所述訪問信息;
重復(fù)進(jìn)行所述攻擊程序的調(diào)用直至滿足所述訪問次數(shù),并將所述訪問信息以單位時間的間隔進(jìn)行存儲,得到所述結(jié)果文件。
結(jié)合第二方面,本發(fā)明實施例提供了第二方面的第二種可能的實施方式,其中,所述輪密鑰包括猜測密鑰值,所述分析單元包括:
利用區(qū)分器對所述結(jié)果文件進(jìn)行相關(guān)性分析,得到aes使用的緩存大小cachesize,并區(qū)分所述cache的命中操作和失效操作;
對所述結(jié)果文件進(jìn)行輪運算分析得到所述猜測密鑰值;
利用查表法對所述猜測密鑰值進(jìn)行運算得到查表中間值;
根據(jù)所述查表中間值和所述cachesize推斷所述猜測密鑰值是否正確;
如果正確,則得到所述aes密鑰。
結(jié)合第二方面的第二種可能的實施方式,本發(fā)明實施例提供了第二方面的第三種可能的實施方式,其中,所述結(jié)果文件包括參考時間樣本,所述分析單元還包括:
分別計算所述被攻擊數(shù)據(jù)對應(yīng)的所述參考時間樣本和其他時間樣本的相關(guān)性系數(shù);
設(shè)定比較閾值,判斷所述相關(guān)性系數(shù)和所述比較閾值的大?。?/p>
如果所述相關(guān)性系數(shù)大于所述比較閾值,則歸為同一操作組;
如果所述相關(guān)性系數(shù)小于所述比較閾值,則歸為不同操作組;
將所述同一操作組和所述不同操作組對應(yīng)的元素個數(shù)進(jìn)行比較得到比值數(shù)據(jù);
根據(jù)所述比值數(shù)據(jù)判斷所述cachesize是否被使用;
如果所述cachesize被使用,則為所述命中操作。
結(jié)合第二方面的第二種可能的實施方式,本發(fā)明實施例提供了第二方面的第四種可能的實施方式,其中,所述分析單元還包括:
選取所述結(jié)果文件中相關(guān)性系數(shù)差別最大的所述被攻擊數(shù)據(jù);
將所述差別最大的被攻擊數(shù)據(jù)反推回的序號設(shè)定為所述猜測密鑰值,其中,所述猜測密鑰值為第十輪輪運算的密鑰值。
本發(fā)明提供了基于cache的aes算法的安全評估方法和系統(tǒng),包括:獲取主存地址與cache地址間的空間映射,并確定cache中所有緩存組的地址,緩存組包括被攻擊緩存組;利用prime方式訪問空間映射,清除并占用緩存組和地址;調(diào)用被攻擊程序以使被攻擊數(shù)據(jù)存入被攻擊緩存組中;利用probe方式確定被攻擊緩存組,并將所有緩存組的訪問信息進(jìn)行間隔儲存,從而得到結(jié)果文件;根據(jù)結(jié)果文件分析輪密鑰,并根據(jù)輪密鑰反推高級加密標(biāo)準(zhǔn)aes密鑰。本發(fā)明實現(xiàn)了利用cache攻擊的方法,評估cpu在操作數(shù)據(jù)的過程中cache命中或失效導(dǎo)致的硬件信息泄露,從而評判智能終端是否存在安全漏洞,彌補了硬件攻擊的缺陷。
本發(fā)明的其他特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明具體實施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對具體實施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施方式,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的基于cache的aes算法的安全評估方法流程圖;
圖2為本發(fā)明實施例提供的步驟s104方法流程圖;
圖3為本發(fā)明實施例提供的步驟s105方法流程圖;
圖4為本發(fā)明實施例提供的步驟s301方法流程圖;
圖5為本發(fā)明實施例提供的基于cache的aes算法的安全評估系統(tǒng)結(jié)構(gòu)示意圖;
圖6為本發(fā)明實施例提供的cache結(jié)構(gòu)表;
圖7為本發(fā)明實施例提供的步驟s102的運行示意圖;
圖8為本發(fā)明實施例提供的步驟s103的運行示意圖;
圖9為本發(fā)明實施例提供的步驟s104的運行示意圖;
圖10為本發(fā)明實施例提供的prime&probe過程示意圖;
圖11為本發(fā)明實施例提供的aes算法加密過程示意圖;
圖12為本發(fā)明實施例提供的密鑰擴展過程示意圖;
圖13為本發(fā)明實施例提供的aes攻擊流程圖。
圖標(biāo):
10-獲取單元;20-第一攻擊單元;30-調(diào)用單元;40-第二攻擊單元;50-分析單元。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
目前,大部分的軟件攻擊方法只適用于對操作系統(tǒng)等軟件的安全進(jìn)行評估,因此在硬件攻擊方面存在很大缺陷,基于此,本發(fā)明實施例提供的基于cache的aes算法的安全評估方法和系統(tǒng),可利用cache攻擊的方法評估cpu在操作數(shù)據(jù)的過程中cache命中或失效導(dǎo)致的硬件信息泄露,從而評判智能終端是否存在安全漏洞,彌補了硬件攻擊的缺陷。
實施例一:
圖1為本發(fā)明實施例提供的基于cache的aes算法的安全評估方法流程圖。
目前針對智能終端的安全評估,主要對象是操作系統(tǒng)及應(yīng)用的安全,對底層硬件的安全沒有關(guān)注。本發(fā)明通過利用cpu訪問cache時的信息泄露,來破解密碼算法的密鑰,從而評估cpu硬件的安全。需要說明的是,下文將對cache攻擊的原理進(jìn)行闡述?;诂F(xiàn)代的程序運行模式,程序在加載到cpu運行時具有局部性,即程序訪問的局部性。在一個較短的時間間隔內(nèi),由程序產(chǎn)生的地址往往集中在存儲器邏輯地址空間的很小范圍內(nèi)。指令地址的分布本來就是連續(xù)的,再加上循環(huán)程序段和子程序段要重復(fù)執(zhí)行多次。因此,對這些地址的訪問就自然地具有時間上集中分布的傾向。而對于數(shù)據(jù)的訪問的集中性雖不如指令明顯,但對數(shù)組的存儲和訪問以及工作單元的選擇都可以使存儲器地址相對集中。這種對局部范圍的存儲器地址頻繁訪問,而對此范圍以外的地址則訪問甚少的現(xiàn)象,就稱為程序訪問的局部性。
根據(jù)程序的局部性原理,可以在主存和cpu通用寄存器之間設(shè)置一個高速的容量相對較小的存儲器,把正在執(zhí)行的指令地址附近的一部分指令或數(shù)據(jù)從主存調(diào)入這個存儲器,供cpu在一段時間內(nèi)使用。這對提高程序的運行速度有很大的作用。這個介于主存和cpu之間的高速小容量存儲器稱作高速緩沖存儲器(cache)。系統(tǒng)正是依據(jù)此原理,不斷地將與當(dāng)前指令集相關(guān)聯(lián)的一個不太大的后繼指令集從內(nèi)存讀到cache,然后再與cpu高速傳送,從而達(dá)到速度匹配。cpu對存儲器進(jìn)行數(shù)據(jù)請求時,通常先訪問cache。由于局部性原理不能保證所請求的數(shù)據(jù)百分之百地在cache中,這里便存在一個命中率。即cpu在任一時刻從cache中可靠獲取數(shù)據(jù)的幾率。命中率越高,正確獲取數(shù)據(jù)的可靠性就越大。
一般來說,cache的存儲容量比主存的容量小得多,但不能太小,太小會使命中率太低;也沒有必要過大,過大不僅會增加成本,而且當(dāng)容量超過一定值后,命中率隨容量的增加將不會有明顯地增長。只要cache的空間與主存空間在一定范圍內(nèi)保持適當(dāng)比例的映射關(guān)系,cache的命中率還是相當(dāng)高的。常見cpu的l1cache分為dcache(數(shù)據(jù)cache)和icache(指令cache),在進(jìn)行cache攻擊時主要著眼點在訪問的數(shù)據(jù)層面,即通過某些數(shù)據(jù)是否被訪問來進(jìn)行相關(guān)信息的確定,最終達(dá)到敏感信獲取或者密鑰破解過程。但由于l1cache的訪問速度極快,對程序設(shè)計和計時要求都非常高,攻擊難度較大,成功率將很難保證。因此本文選擇l2cache進(jìn)行cache訪問信息收集及密鑰破解。cache的大小為基本存儲單元為cache行(cacheline)。存儲系統(tǒng)把cache和主存儲器都劃分為相同大小的行。cache與主存儲器交換數(shù)據(jù)是以行為基本單位進(jìn)行的。每一個cache行都對應(yīng)于主存中的一個存儲塊(memoryblock)。組成結(jié)構(gòu)如圖6所示,每一行是一個set組,每一個set組包含16個line。
cache行的大小通常是2l字節(jié)。通常情況下是16字節(jié)(4個字)和32字節(jié)(8個字)。如果cache行的大小為2l字節(jié),那么對主存的訪問通常是2l字節(jié)對齊的。所以對于一個虛擬地址來說,它的bit[31∶l]位,是cache行的一個標(biāo)識。當(dāng)cpu發(fā)出的虛擬地址的bit[31∶l]和cache中的某行bit[31∶l]相同,那么cache中包含cpu要訪問的數(shù)據(jù),即稱為一次cache命中。為了加快cache訪問的速度,又將多個cache行劃分成一個cache組(cacheset)。cache組中包含的cache行的個數(shù)通常也為2的n次方的倍數(shù)。為了方便起見,取n=s。這樣,一個cache組中就包含2s個cache行。這時,虛擬地址中的bit[l+s-1∶l]為cache組的標(biāo)識。虛擬地址中余下的位bit[31∶l+s]成為一個cache標(biāo)(cache-tag)。它標(biāo)識了cache行中的內(nèi)容和主存間的對應(yīng)關(guān)系。
在cache中采用地址映射將主存中的內(nèi)容映射到cache地址空間。具體的說,就是把存放在主存中的程序按照某種規(guī)則裝入到cache中,并建立主存地址到cache地址之間的對應(yīng)關(guān)系。而地址變換是指當(dāng)程序已經(jīng)裝入到cache后,在實際運行過程中,把主存地址變換成cache地址。地址的映射和變換是密切相關(guān)的。采用什么樣的地址映射方法,就必然有與之對應(yīng)的地址變換。常用的地址映射和變換方式包括直接映射和變換方式、組相聯(lián)映射和變換方式以及全相聯(lián)和變換方式。目前在使用中最常見的是組相聯(lián)的關(guān)聯(lián)模式。在本次攻擊過程中所使用的手機的cpul2cache為16路組相聯(lián),共512kb。
根據(jù)cache工作原理,同一條訪問存儲器的指令在目標(biāo)數(shù)據(jù)不在cache中時就會發(fā)生cache失效,表現(xiàn)在程序的執(zhí)行結(jié)果上就是較長運行時間或是較大能量的消耗,就一般的處理器來說命中的時間大概在幾個納秒之內(nèi),而失效的時間因為要訪問主存,則需要幾十個納秒。因此如果能夠確定在進(jìn)行某種加密算法時存在訪問信息泄露的現(xiàn)象,則在滿足下列條件時即可進(jìn)行加密算法的密鑰破解,如表1所示。
表1cache攻擊條件表
參照圖1,基于cache的aes算法的安全評估方法包括:
步驟s101,獲取主存地址與cache地址間的空間映射,并確定cache中所有緩存組的地址,緩存組包括被攻擊緩存組;
步驟s102,利用prime方式訪問空間映射,清除并占用緩存組和地址;
具體地,本發(fā)明實施例所涉及的工具主要使用primeprobe1的策略來實現(xiàn)表1中條件3的準(zhǔn)備和條件4的計時操作。在進(jìn)行primeprobe的過程中首先需要通過prime的方式來盡可能的將cache全部占用,進(jìn)行驅(qū)逐,prime的過程圖示如圖7所示,通過攻擊程序的主動作用,周期性地訪問超過cache上限的數(shù)據(jù),確保cache中所有的數(shù)據(jù)均為攻擊程序地址空間的數(shù)據(jù)。
這里,首先攻擊程序映射了10m數(shù)據(jù),對10m數(shù)據(jù)以line為單位查詢所有虛擬地址所對應(yīng)的物理地址,通過物理地址確定對應(yīng)的set號,并對同一set號的虛擬地址進(jìn)行統(tǒng)計記錄,直到達(dá)到訪問地址要求。在后續(xù)的primeprobe過程中,通過操作不同set所對應(yīng)的虛擬地址實現(xiàn)prime和probe過程。
在實際操作過程中針對具體的set進(jìn)行prime,此類設(shè)置經(jīng)實驗表明能夠最為有效地反映出primeprobe的效果。即為訪問具體虛擬地址,并讀出此地址的數(shù)據(jù),實際上相當(dāng)于執(zhí)行了將本地值的數(shù)據(jù)緩存到cache中的功能。
步驟s103,調(diào)用被攻擊程序以使被攻擊數(shù)據(jù)存入被攻擊緩存組中;
具體地,通過進(jìn)程調(diào)度來使被攻擊程序正常運行,因此被攻擊程序在進(jìn)行加解密等敏感操作時必然會訪問相關(guān)數(shù)據(jù),此時會將不在cache中的數(shù)據(jù)緩存到cache中,運行過程如圖8所示.
步驟s104,利用probe方式確定被攻擊緩存組,并將所有緩存組的訪問信息進(jìn)行間隔儲存,從而得到結(jié)果文件;
具體地,如圖9所示,在被攻擊程序敏感操作執(zhí)行完成后,使用攻擊程序訪問所有之前緩存的地址并進(jìn)行操作計時,如果此地址的數(shù)據(jù)已經(jīng)被被攻擊程序占用,那必然會產(chǎn)生cachemiss效果因此計時會產(chǎn)生較為明顯的差別,并能進(jìn)行統(tǒng)計和區(qū)分。
這里,然后執(zhí)行aes加密過程(或其他被測算法),并在aes結(jié)束后針對某一set進(jìn)行probe過程,共針對此set進(jìn)行21次訪問以能夠明顯的表現(xiàn)出probe的miss時間。
步驟s105,根據(jù)所述結(jié)果文件分析輪密鑰,并根據(jù)輪密鑰反推高級加密標(biāo)準(zhǔn)aes密鑰。
具體地,在表1中條件1滿足的情況下,就能多次進(jìn)行pbobe統(tǒng)計,并根據(jù)統(tǒng)計結(jié)果查找是否存在聯(lián)系的規(guī)律。以aes為例,其密鑰將對查表的位置產(chǎn)生影響,而表數(shù)據(jù)在操作過程中會緩存在cache中,必然在probe過程中對訪問時間產(chǎn)生影響,因此通過統(tǒng)計分析過程可以在有限的采樣中分析出密鑰的相關(guān)信息。
需要說明的是,在實際實驗中prime&probe是逐次針對每一個set進(jìn)行的,具體流程圖如圖10所示。
根據(jù)本發(fā)明的示例性實施例,被攻擊程序包括aes加密運算程序,地址包括被攻擊地址,利用probe方式確定被攻擊緩存組,并將所有緩存組的訪問信息進(jìn)行間隔儲存,從而得到結(jié)果文件包括:
參照圖2,步驟s201,預(yù)設(shè)訪問次數(shù),在aes加密運算程序執(zhí)行完畢后,調(diào)用攻擊程序訪問被攻擊地址并計時,計時采用linuxc語言的計時函數(shù);
具體地,高精度計時是cache分析中的一個需要解決的關(guān)鍵技術(shù)問題。目前,大部分智能終端的操作系統(tǒng)都是基于linux的,因此本發(fā)明中,高精度的解決方案是采用linuxc語言的計時函數(shù)”clock_gettime”,計時的精度可以達(dá)到納秒級別。理論上,cache命中和失效會有明顯的操作時間上的差異,但是在實際中,想要觀察到這種差異還需考慮實驗中的一個限制條件,由于是多核處理器的多任務(wù)操作系統(tǒng),計時難免會受到操作系統(tǒng)調(diào)度的干擾,導(dǎo)致計時誤差增大。要解決這個問題,一方面要想辦法調(diào)高間諜程序和目標(biāo)程序的優(yōu)先級,盡量使其成為原子操作;另外一方面是要通過大量重復(fù)性的實驗來統(tǒng)計分析如何選取合適的區(qū)分器來消弱這種誤差的影響。
因為cache訪問速度很快,為了統(tǒng)計計算代碼執(zhí)行時間達(dá)到cpucycle級別,也需要讀取類似x86的tsc寄存器。在armv8中,有performancemonitorscontrolregister系列寄存器,其中的pmccntr_el0就類似于x86的tsc寄存器,通過此高精度的寄存器讀取能夠較為精確的反應(yīng)實際的probe運行時間,在使用之前需要針對此寄存器進(jìn)行初始化。
步驟s202,根據(jù)cachemiss效果記錄所有緩存組的計時差別,得到訪問信息;
步驟s203,重復(fù)進(jìn)行攻擊程序的調(diào)用直至滿足訪問次數(shù),并將訪問信息以單位時間的間隔進(jìn)行存儲,得到結(jié)果文件。
根據(jù)本發(fā)明的示例性實施例,輪密鑰包括猜測密鑰值,根據(jù)結(jié)果文件分析輪密鑰,并根據(jù)輪密鑰反推aes密鑰包括:
參照圖3,步驟s301,利用區(qū)分器對結(jié)果文件進(jìn)行相關(guān)性分析,得到aes使用的緩存大小cachesize,并區(qū)分cache的命中操作和失效操作;
具體地,要區(qū)分兩種操作的執(zhí)行時間就需要構(gòu)造區(qū)分器,一般常用的區(qū)分器多以利用樣本分布的期望和方差來構(gòu)造,例如以不同分組的均值來區(qū)分命中或失效。本發(fā)明中使用相關(guān)性分析的方法來區(qū)分不同的操作,通過計算兩個分組的分布的相關(guān)性系數(shù),然后設(shè)定一個相關(guān)性系數(shù)的閾值,大于閾值的認(rèn)為是統(tǒng)一操作,小于閾值的認(rèn)為是不同的操作。這樣可以大大降低由于各種干擾帶來的誤差對統(tǒng)計特征的影響。
步驟s302,對結(jié)果文件進(jìn)行輪運算分析得到猜測密鑰值;
步驟s303,利用查表法對猜測密鑰值進(jìn)行運算得到查表中間值;
步驟s304,根據(jù)查表中間值和cachesize推斷猜測密鑰值是否正確;
如果正確,則得到aes密鑰。
具體地,目前的智能終端的操作系統(tǒng)都有著很好的多任務(wù)管理機制,有著固定規(guī)律的實驗操作行為在重復(fù)執(zhí)行時,可能會被操作系統(tǒng)識別出某種模式,從而對實驗進(jìn)行干預(yù)來優(yōu)化執(zhí)行效率。這樣就會對計時樣本的統(tǒng)計特征帶來一定的影響,導(dǎo)致無法滿足樣本的代表性和獨立性。為了使得實際情況滿足上述假設(shè),在進(jìn)行實驗時,我們對實驗數(shù)據(jù)和觀測變量均進(jìn)行了隨機化,使得實驗的操作行為無法被預(yù)測,操作系統(tǒng)便無法干預(yù)實驗程序運行,以保證統(tǒng)計的時間數(shù)據(jù)樣本滿足要求代表性和獨立性的要求。
根據(jù)本發(fā)明的示例性實施例,結(jié)果文件包括參考時間樣本,利用區(qū)分器對結(jié)果文件進(jìn)行相關(guān)性分析,得到aes使用的緩存大小cachesize,并區(qū)分cache的命中操作和失效操作包括:
參照圖4,步驟s401,分別計算被攻擊數(shù)據(jù)對應(yīng)的參考時間樣本和其他時間樣本的相關(guān)性系數(shù);
步驟s402,設(shè)定比較閾值,判斷相關(guān)性系數(shù)和比較閾值的大小;
步驟s4031,如果相關(guān)性系數(shù)大于比較閾值,則歸為同一操作組;
步驟s4032,如果相關(guān)性系數(shù)小于比較閾值,則歸為不同操作組;
步驟s404,將同一操作組和不同操作組對應(yīng)的元素個數(shù)進(jìn)行比較得到比值數(shù)據(jù);
步驟s405,根據(jù)比值數(shù)據(jù)判斷cachesize是否被aes使用;
步驟s406,如果cachesize被使用,則為命中操作。
具體地,為對實驗結(jié)果進(jìn)行統(tǒng)計分析以及實驗優(yōu)化,本發(fā)明實施例提出了以下優(yōu)化措施:
(1)使用大量重復(fù)實驗降低誤差:
理論上,cache命中和失效會有明顯的操作時間上的差異,但是在實際中,想要觀察到這種差異還需考慮實驗中的幾個限制條件,一是計時函數(shù)的精度問題,是否能夠捕捉到這種差異;二是,由于是多核處理器的多任務(wù)操作系統(tǒng),計時難免會受到操作系統(tǒng)調(diào)度的干擾,導(dǎo)致計時誤差增大。
使用高精度計時函數(shù)可以解決第一個問題,要解決第二個問題,一方面要想辦法調(diào)高間諜程序和目標(biāo)程序的優(yōu)先級,盡量使其成為原子操作;另外一方面是要通過大量重復(fù)性的實驗來統(tǒng)計分析如何選取合適的區(qū)分器來消弱這種誤差的影響。
為了研究第二個問題帶來的影響,我們分別對相同和隨機的數(shù)據(jù)進(jìn)行大量重復(fù)性的實驗,記錄統(tǒng)計的時間樣本,我們使用直方圖對樣本的分布進(jìn)行刻畫。直方圖(histogram)是一種統(tǒng)計報告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。一般用橫軸表示數(shù)據(jù)類型,縱軸表示分布情況。通過直方圖我們可以知道大體的概率密度函數(shù)。在刻畫直方圖時,組距的選擇直接影響著對概率密度函數(shù)刻畫的準(zhǔn)確度,組距選為計時的最小單位精度可以最大限度的提高刻畫精度。
通過直方圖的形狀我們發(fā)現(xiàn),相同數(shù)據(jù)操作時間的樣本分布接近于正態(tài)分布,而不同數(shù)據(jù)的操作時間的樣本分布沒有明顯的特征。對于兩個不同的數(shù)據(jù)a和b,操作時間的直方圖形狀都接近于正態(tài)分布,但是中心值(u)存在著明顯的差異。因此通過u的差距,理論上可以區(qū)分出cache的命中和失效。
(2)采樣隨機數(shù)據(jù)和隨機探測來去除干擾:
假設(shè)樣本滿足代表性和獨立性,代表性即每個樣本均與總體同分布;獨立性即為樣本之間獨立同分布。
目前的智能終端的操作系統(tǒng)都有著很好的多任務(wù)管理機制,有著固定規(guī)律的實驗操作行為在重復(fù)執(zhí)行時,可能會被操作系統(tǒng)識別出某種模式,從而對實驗進(jìn)行干預(yù)來優(yōu)化執(zhí)行效率。這樣就會對計時樣本的統(tǒng)計特征帶來一定的影響,導(dǎo)致無法滿足樣本的代表性和獨立性。
為了使得實際情況滿足上述假設(shè),在進(jìn)行實驗時,我們對實驗數(shù)據(jù)和觀測變量均進(jìn)行了隨機化,使得實驗的操作行為無法被預(yù)測,操作系統(tǒng)便無法干預(yù)實驗程序運行,以保證統(tǒng)計的時間數(shù)據(jù)樣本滿足要求。
根據(jù)本發(fā)明的示例性實施例,對結(jié)果文件進(jìn)行輪運算分析得到猜測密鑰值包括:
選取結(jié)果文件中相關(guān)性系數(shù)差別最大的被攻擊數(shù)據(jù);
將差別最大的被攻擊數(shù)據(jù)反推回的序號設(shè)定為猜測密鑰值,其中,猜測密鑰值為第十輪輪運算的密鑰值。
具體地,下文對aes密鑰的破解方法進(jìn)行詳細(xì)敘述。智能終端上的aes算法主要是軟件實現(xiàn)的,為了提高運算的速度,采用了空間換時間的策略:即aes的輪運算(字節(jié)替換、行移位、列變換)使用查表法實現(xiàn),因為最后一輪沒有字節(jié)替換操作,因此aes的加解密運算過程中,一共使用了兩組表格,一組是前9輪使用的:te0,te1,te2,te3,一組是用于最后一輪的:te4_1、te4_2、te4_3、te4_4。有兩個大的表t1和t4,t1表用于標(biāo)準(zhǔn)輪運算,t4表用于最后一輪運算。每個表均有256個元素,每個元素為4個字節(jié),故表的大小均為256*4個字節(jié)。armv8的一個cachesize的存儲空間為64個字節(jié),因此每個表格都需要16個cachesize,一個cachesize可以存儲16個元素,因此當(dāng)8bit數(shù)據(jù)的高4bit相同時,查表即會落到同一個cachesize中。
對同一個sbox進(jìn)行查表時,對于同一密鑰,不同的輸入數(shù)據(jù)就會導(dǎo)致cache的命中或失效,通過查表的中間數(shù)據(jù)與cache命中或失效的聯(lián)系,推斷出密鑰值。
區(qū)分命中或失效兩種操作是攻擊成功的基礎(chǔ),因此需要構(gòu)造合適的區(qū)分器,一般常用的區(qū)分器多以利用樣本分布的期望和方差來構(gòu)造,例如以不同分組的均值來區(qū)分命中或失效。本發(fā)明中使用相關(guān)性分析的方法來區(qū)分不同的操作,通過計算兩個分組的分布的相關(guān)性系數(shù),然后設(shè)定一個相關(guān)性系數(shù)的閾值,大于閾值的認(rèn)為是同一操作,小于閾值的認(rèn)為是不同的操作。這樣可以大大降低由于各種干擾帶來的誤差對統(tǒng)計特征的影響。
以某一個cachesize為例,分別計算數(shù)據(jù)00到ff對應(yīng)的probe獲得樣本的分布,然后以00數(shù)據(jù)的分布為參考分布,計算其它數(shù)據(jù)對應(yīng)的分布與參考分布之間的相關(guān)性系數(shù)。取一個相關(guān)性閾值的經(jīng)驗值rf,將相關(guān)性系數(shù)大于等于rf的分為一組,小于rf的分組為一組。計算兩組元素個數(shù)的比值d,當(dāng)d約等于16/240時,判斷該cachesize被使用。
理想情況下,大量隨機數(shù)的prime+aes+probe的實驗后,通過區(qū)分器處理可以發(fā)現(xiàn):使用的cachesize數(shù)量為16個,并且size號是連續(xù)的。但是由于在aes的運算過程中,cache中除了需要存儲te4表外,可能還需要存儲其它的中間變量,因此在實際評估實驗中通過區(qū)分器識別出來被占用的cachesize可能約小于16個。
通過區(qū)分器,可以判斷出aes使用了哪些cachesize,然后通過猜測密鑰值,與數(shù)據(jù)進(jìn)行運算得到查表的中間值,對于使用了同一個cachesize的不同數(shù)據(jù),查表的中間值的高4bite數(shù)據(jù)理論上相同,因此通過查表中間值的高位是否相同即可判斷是否是正確的密鑰猜測。
通過區(qū)別器識別出的多個被使用的cachesize,每一個均可用于判斷正確的密鑰值,多個可以相互檢驗,以增加結(jié)果的穩(wěn)定性。
這里,為更好地展示aes攻擊流程,以下對aes算法加密過程進(jìn)行介紹。如圖11所示,以128-bit密鑰的aes/rijndael算法為例。為優(yōu)化軟件執(zhí)行性能,aes加密程序會預(yù)計算并存儲4個大的查找表t0~t3。在完成前9輪針對t0~t3的4次查找后,還在最后的第10輪,對一個簡化的表t4進(jìn)行16次查找。為了進(jìn)行整個10輪加密過程,還需要將128-bit的原始密鑰擴展為176-byte;即11個被單獨運用的16-byte密鑰。為成功推出密鑰擴展過程如圖12所示。在密鑰擴展過程中,輪密鑰是由種子密鑰擴展而成,因此,知道了種子密鑰就知道了輪密鑰。而知道某輪(假設(shè)第i輪)的輪密鑰w[4i],w[4i+1],…,w[4i+nb-1]。由密鑰擴展方案的數(shù)學(xué)模型,不僅可以推導(dǎo)種子密鑰,而且所有輪密鑰都可以推出。
以本發(fā)明實施例的實驗環(huán)境下nb=4,nk=4為例說明:
可以看到在獲取到最后一輪密鑰后能夠倒推出aes算法的原始密鑰,因此結(jié)合aes的加密方式和密鑰擴展規(guī)律,本cache攻擊系統(tǒng)采用的攻擊模式為針對最后一輪密鑰的攻擊。
實施例二:
攻擊流程可參照圖13,整個攻擊過程分為兩個部分,第一部分需要在手機端運行,通過上文所描述的prime和probe的方式來獲取一定數(shù)量的信息,簡單可理解為信息采集過程。整個流程介紹如下:
(1)初始化階段。申請空間映射并確定所有set的虛擬地址,為prime和probe過程做好準(zhǔn)備。
(2)prime階段。本階段通過訪問實際映射,將l2cache中緩存的的所有數(shù)據(jù)清除并占用。確保后續(xù)的加密操作對cache的訪問過程能夠保留在cache中以備后續(xù)使用。
(3)調(diào)用加密程序,在已知明文和密文的情況下進(jìn)行aes加密運算。
(4)probe過程。在加密完成后通過probe過程來確定影響的set,并將所有set的訪問信息以單位時間的間隔保存。在實際操作過程中,共分為16個區(qū)間進(jìn)行保存。
(5)在執(zhí)行本操作之前,可以設(shè)定針對某一set共進(jìn)行多少次訪問,當(dāng)達(dá)到總體次數(shù)后整個循環(huán)停止。
(6)將所有數(shù)據(jù)進(jìn)行整理并存儲為結(jié)果文件。
攻擊的第二個部分主要為分析過程,此過程可以在手機或者pc電腦上執(zhí)行。攻擊的模式是根據(jù)采集的數(shù)據(jù)分析第十輪的輪密鑰,通過此密鑰再反推出整個aes密鑰。分析過程如下:
(1)在分析時需要一個字節(jié)一個字節(jié)分析,需要按照密文反推回第10輪的輸入字節(jié)排序結(jié)果文件。
(2)然后根據(jù)所有的數(shù)據(jù)計算相關(guān)性。
(3)針對所有的數(shù)據(jù)的相關(guān)性進(jìn)行分組。
(4)比較最終的結(jié)果,選取相關(guān)性差別最大一組數(shù)據(jù),其反推回的序號值即為第10輪的密鑰值。
本發(fā)明提供了基于cache的aes算法的安全評估方法和系統(tǒng),包括:獲取主存地址與cache地址間的空間映射,并確定cache中所有緩存組的地址,緩存組包括被攻擊緩存組;利用prime方式訪問空間映射,清除并占用緩存組和地址;調(diào)用被攻擊程序以使被攻擊數(shù)據(jù)存入被攻擊緩存組中;利用probe方式確定被攻擊緩存組,并將所有緩存組的訪問信息進(jìn)行間隔儲存,從而得到結(jié)果文件;根據(jù)結(jié)果文件分析輪密鑰,并根據(jù)輪密鑰反推高級加密標(biāo)準(zhǔn)aes密鑰。本發(fā)明實現(xiàn)了通過軟件攻擊的方法(cache攻擊)評估智能終端上運行的密碼算法是否存在硬件的泄露,與傳統(tǒng)的硬件安全評估方法相比,成本低,速度快,普適性強。因此,使用本發(fā)明可以快速檢測出智能終端的密碼算法是否存在安全漏洞,使用較小的代價阻止存在安全漏洞的終端流入市場。
實施例三:
圖5為本發(fā)明實施例提供的基于cache的aes算法的安全評估系統(tǒng)結(jié)構(gòu)示意圖。
參照圖5,基于cache的aes算法的安全評估系統(tǒng),包括:
獲取單元10,用于獲取主存地址與cache地址間的空間映射,并確定cache中所有緩存組的地址,緩存組包括被攻擊緩存組;
第一攻擊單元20,用于利用prime方式訪問空間映射,清除并占用緩存組和地址;
調(diào)用單元30,用于調(diào)用被攻擊程序以使被攻擊數(shù)據(jù)存入被攻擊緩存組中;
第二攻擊單元40,用于利用probe方式確定被攻擊緩存組,并將所有緩存組的訪問信息進(jìn)行間隔儲存,從而得到結(jié)果文件;
分析單元50,用于根據(jù)結(jié)果文件分析輪密鑰,并根據(jù)輪密鑰反推高級加密標(biāo)準(zhǔn)aes密鑰。
根據(jù)本發(fā)明的示例性實施例,被攻擊程序包括aes加密運算程序,地址包括被攻擊地址,第二攻擊單元包括:
預(yù)設(shè)訪問次數(shù),在aes加密運算程序執(zhí)行完畢后,調(diào)用攻擊程序訪問被攻擊地址并計時,計時采用linuxc語言的計時函數(shù);
根據(jù)cachemiss效果記錄所有緩存組的計時差別,得到訪問信息;
重復(fù)進(jìn)行攻擊程序的調(diào)用直至滿足訪問次數(shù),并將訪問信息以單位時間的間隔進(jìn)行存儲,得到結(jié)果文件。
根據(jù)本發(fā)明的示例性實施例,輪密鑰包括猜測密鑰值,分析單元包括:
利用區(qū)分器對結(jié)果文件進(jìn)行相關(guān)性分析,得到aes使用的緩存大小cachesize,并區(qū)分cache的命中操作和失效操作;
對結(jié)果文件進(jìn)行輪運算分析得到猜測密鑰值;
利用查表法對猜測密鑰值進(jìn)行運算得到查表中間值;
根據(jù)查表中間值和cachesize推斷猜測密鑰值是否正確;
如果正確,則得到aes密鑰。
根據(jù)本發(fā)明的示例性實施例,結(jié)果文件包括參考時間樣本,分析單元還包括:
分別計算被攻擊數(shù)據(jù)對應(yīng)的參考時間樣本和其他時間樣本的相關(guān)性系數(shù);
設(shè)定比較閾值,判斷相關(guān)性系數(shù)和比較閾值的大?。?/p>
如果相關(guān)性系數(shù)大于比較閾值,則歸為同一操作組;
如果相關(guān)性系數(shù)小于比較閾值,則歸為不同操作組;
將同一操作組和不同操作組對應(yīng)的元素個數(shù)進(jìn)行比較得到比值數(shù)據(jù);
根據(jù)比值數(shù)據(jù)判斷cachesize是否被使用;
如果cachesize被使用,則為命中操作。
根據(jù)本發(fā)明的示例性實施例,分析單元還包括:
選取結(jié)果文件中相關(guān)性系數(shù)差別最大的被攻擊數(shù)據(jù);
將差別最大的被攻擊數(shù)據(jù)反推回的序號設(shè)定為猜測密鑰值,其中,猜測密鑰值為第十輪輪運算的密鑰值。
本發(fā)明實施例提供的基于cache的aes算法的安全評估系統(tǒng),與上述實施例提供的基于cache的aes算法的安全評估方法具有相同的技術(shù)特征,所以也能解決相同的技術(shù)問題,達(dá)到相同的技術(shù)效果。首先,本發(fā)明實施例通過利用cpu訪問cache時的信息泄露,來破解密碼算法的密鑰,從而實現(xiàn)了評估cpu硬件的安全;其次,關(guān)于高精度的解決方案本發(fā)明實施例采用linuxc語言的計時函數(shù)”clock_gettime”,計時的精度可以達(dá)到納秒級別;并且,本發(fā)明實施例一方面調(diào)高間諜程序和目標(biāo)程序的優(yōu)先級,盡量使其成為原子操作,另一方面通過大量重復(fù)性的實驗來統(tǒng)計分析如何選取合適的區(qū)分器來消弱操作系統(tǒng)干擾的影響,結(jié)果可靠;另外,本發(fā)明實施例對實驗數(shù)據(jù)和觀測變量均進(jìn)行了隨機化,使得實驗的操作行為無法被預(yù)測,操作系統(tǒng)便無法干預(yù)實驗程序運行,以保證統(tǒng)計的時間數(shù)據(jù)樣本滿足要求代表性和獨立性的要求;最后,本發(fā)明實施例通過計算樣本概率分布之間的相關(guān)性系數(shù)來區(qū)分不同的操作,并且利用多組獨立的密鑰猜測結(jié)果進(jìn)行相互校驗以保證結(jié)果的正確性。
本發(fā)明實施例所提供的基于cache的aes算法的安全評估方法和系統(tǒng)以及系統(tǒng)的計算機程序產(chǎn)品,包括存儲了程序代碼的計算機可讀存儲介質(zhì),所述程序代碼包括的指令可用于執(zhí)行前面方法實施例中所述的方法,具體實現(xiàn)可參見方法實施例,在此不再贅述。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)和裝置的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上所述實施例,僅為本發(fā)明的具體實施方式,用以說明本發(fā)明的技術(shù)方案,而非對其限制,本發(fā)明的保護(hù)范圍并不局限于此,盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),其依然可以對前述實施例所記載的技術(shù)方案進(jìn)行修改或可輕易想到變化,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改、變化或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實施例技術(shù)方案的精神和范圍,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。