專(zhuān)利名稱(chēng):一種指令級(jí)密碼設(shè)備能量消耗信息生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種指令級(jí)密碼設(shè)備能量消耗信息生成方法,用于基于密碼算法生成其宿主密碼設(shè)備運(yùn)行時(shí)的能量跡(能耗值曲線(xiàn)),能量跡用于評(píng)估密碼算法對(duì)于能量分析攻擊的防御能力,屬于信息安全技術(shù)領(lǐng)域。
背景技術(shù):
側(cè)信道攻擊(Side-Channel Attacks)指攻擊者通過(guò)密碼算法執(zhí)行過(guò)程中產(chǎn)生的額外信息泄露對(duì)密碼算法實(shí)現(xiàn)進(jìn)行破解的攻擊方式。近年來(lái),側(cè)信道攻擊作為一種新型的密碼分析方法受到了產(chǎn)業(yè)界和學(xué)術(shù)界的廣泛關(guān)注,得到迅速發(fā)展。傳統(tǒng)的密碼分析將密碼實(shí)現(xiàn)視作黑盒子,只利用其輸入與輸出實(shí)施密碼破解;而側(cè)信道攻擊在考慮密碼實(shí)現(xiàn)輸入輸出的同時(shí),利用密碼實(shí)現(xiàn)在進(jìn)行密碼計(jì)算時(shí)泄露的時(shí)間信息、能量消耗信息或者電磁輻射信息等物理信息,輔助實(shí)施密碼破解。
能量分析攻擊是一種利用密碼設(shè)備運(yùn)行時(shí)的能量消耗信息實(shí)施密鑰恢復(fù)的重要的側(cè)信道攻擊方法。能量跡是時(shí)間軸上的能耗值曲線(xiàn),記錄密碼設(shè)備執(zhí)行周期的瞬時(shí)能量消耗。能量分析攻擊即利用能量跡實(shí)施攻擊,這種攻擊嚴(yán)重威脅著集成電路以及基于集成電路設(shè)計(jì)的各種密碼設(shè)備的實(shí)際安全性。
密碼設(shè)備能量消耗模擬工具對(duì)于評(píng)估密碼實(shí)現(xiàn)的實(shí)際安全性,尤其是設(shè)計(jì)階段的實(shí)際安全性具有重要意義,對(duì)于客觀(guān)比較和評(píng)估各種能量分析攻擊的有效性,以及評(píng)估各種防御措施的有效性同樣具有重要意義。傳統(tǒng)的針對(duì)實(shí)際密碼設(shè)備的評(píng)估,其代價(jià)相當(dāng)高昂,原因在于設(shè)計(jì)者無(wú)法在設(shè)計(jì)過(guò)程中評(píng)估抗防御對(duì)策的有效性,不安全的防御對(duì)策很可能導(dǎo)致整個(gè)開(kāi)發(fā)周期的重新實(shí)施;在模擬工具的支撐下,能量分析攻擊安全性檢測(cè)可以滲透在各個(gè)層次的設(shè)計(jì)中,可以顯著縮減研發(fā)周期和成本。
然而,截至目前,尚未出現(xiàn)適用于能量分析攻擊的能量消耗信息生成方法,特別缺乏同時(shí)具有多種能量模型適應(yīng)能力及具有不同噪聲水平刻畫(huà)能力的模擬工具。 SimplePower和JouleTrack是目前兩種典型的能量消耗模擬器,前者的應(yīng)用對(duì)象是編譯優(yōu)化和體系結(jié)構(gòu)優(yōu)化,在噪聲模擬方面不符合能量分析攻擊的要求;后者宣稱(chēng)可以針對(duì)多種體系結(jié)構(gòu)提供時(shí)鐘級(jí)的能量消耗信息,但是只能以C源文件作為輸入,無(wú)法結(jié)合特定微處理器的體系結(jié)構(gòu)進(jìn)行能量消耗信息的生成。發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)存在的問(wèn)題,本發(fā)明旨在提供一種指令級(jí)密碼設(shè)備能量消耗信息生成方法。本發(fā)明基于密碼算法及其宿主硬件的體系結(jié)構(gòu)生成能量跡,對(duì)密碼設(shè)備能耗特征的刻畫(huà)能力強(qiáng)、資源開(kāi)銷(xiāo)小、生成速度快。需要特別指出的是,該方法并不局限于特定密碼算法的類(lèi)型(對(duì)稱(chēng)、非對(duì)稱(chēng)密碼算法等)以及實(shí)現(xiàn)方式(樸素實(shí)現(xiàn)抑或受保護(hù)實(shí)現(xiàn)),具有廣泛的適用范圍。
本發(fā)明基于“指令級(jí)密碼設(shè)備能量消耗信息生成方法”,設(shè)計(jì)并實(shí)現(xiàn)了一種指令4級(jí)密碼設(shè)備能量消耗信息生成原型系統(tǒng),使用該系統(tǒng)可以精確模擬典型密碼設(shè)備的能量消耗。本發(fā)明實(shí)現(xiàn)的原型系統(tǒng)采用高度模塊化、可擴(kuò)展的體系結(jié)構(gòu),本發(fā)明為設(shè)計(jì)階段對(duì)密碼設(shè)備進(jìn)行分析與刻畫(huà)提供基礎(chǔ),從而通過(guò)合適的參數(shù)配置,可以刻畫(huà)多種類(lèi)型的設(shè)備泄漏特征。具體的,包括4個(gè)基本功能模塊,即預(yù)編譯模塊、指令鋪平模塊、模擬引擎模塊以及能量跡生成器模塊。同時(shí),該系統(tǒng)易于擴(kuò)展至除C51之外的其他硬件平臺(tái),還可以基于 SvstemC在不同的抽象層次上生成密碼設(shè)備的能量消耗信息。
本發(fā)明的技術(shù)方案為
一種指令級(jí)密碼設(shè)備能量消耗信息生成方法,其步驟為
1)選取一目標(biāo)密碼設(shè)備,選取并初始化該密碼設(shè)備中各主要物理單元的噪聲模式、能量模型,設(shè)置各主要物理單元能耗占總能耗比重;
2)對(duì)所選密碼算法的實(shí)現(xiàn)源程序進(jìn)行編譯,得到源程序的匯編指令序列;
3)采用詞法分析器對(duì)所述匯編指令序列中的指令進(jìn)行逐條識(shí)別,并根據(jù)識(shí)別結(jié)果及該密碼算法的輸入?yún)?shù)將該算法中的分支指令、循環(huán)指令鋪平為順序執(zhí)行的指令序列;
4)指令模擬引擎模擬執(zhí)行步驟幻鋪平后的指令序列,記錄各主要物理單元在指令執(zhí)行過(guò)程中所處理的數(shù)據(jù);
5)能量跡生成器根據(jù)步驟1)的初始化結(jié)果,將步驟4)記錄的每條指令執(zhí)行過(guò)程中處理的數(shù)據(jù)映射為指令的能量消耗值,得到該目標(biāo)密碼設(shè)備運(yùn)行該密碼算法的能量消耗 fn息ο
進(jìn)一步的,所述步驟3)中指令序列的鋪平方法為
a)標(biāo)記所述匯編指令序列中每條指令的tag值,將每條跳轉(zhuǎn)指令的tag標(biāo)記為0、 將沒(méi)有跳轉(zhuǎn)發(fā)生的指令的tag標(biāo)記為-1 ;
b)詞法分析器識(shí)別到一條指令后,根據(jù)標(biāo)記tag的值判斷是否有跳轉(zhuǎn)發(fā)生,若沒(méi)有則進(jìn)行步驟c);若有跳轉(zhuǎn)發(fā)生,則判斷當(dāng)前指令的地址是否為要跳轉(zhuǎn)到的地址,如果是, 則置當(dāng)前指令的tag值為-1,進(jìn)行步驟c),否則對(duì)當(dāng)前指令不作處理,取下一條指令進(jìn)行識(shí)別;
c)判斷當(dāng)前指令是否為跳轉(zhuǎn)指令,若是跳轉(zhuǎn)指令且跳轉(zhuǎn)條件成立,則置當(dāng)前指令的地址為要跳轉(zhuǎn)到的地址,然后繼續(xù)取下一條指令識(shí)別;否則直接取下一條指令識(shí)別。
進(jìn)一步的,所述模擬引擎模塊包括處理器模塊、總線(xiàn)模塊以及存儲(chǔ)器RAM模塊,所述總線(xiàn)模塊包括地址總線(xiàn)模塊和數(shù)據(jù)總線(xiàn)模塊,所述存儲(chǔ)器MM模塊包括片內(nèi)RAM模塊和片外RAM模塊;所述指令模擬引擎模擬執(zhí)行步驟幻鋪平后的指令序列過(guò)程中,對(duì)每一條指令的模擬方法為
a)所述處理器模塊從程序存儲(chǔ)器ROM中取出待執(zhí)行指令,并通過(guò)所述總線(xiàn)模塊讀取指令的地址PC及指令的二進(jìn)制編碼;其中,總線(xiàn)模塊將其傳輸?shù)腜C及指令的二進(jìn)制編碼順序以“物理單元名稱(chēng)該物理單元處理的數(shù)據(jù)”的形式存儲(chǔ)到一中間值文件中;
b)所述處理器模塊將該指令的操作數(shù)地址通過(guò)地址總線(xiàn)模塊傳送給存儲(chǔ)器RAM 模塊,然后存儲(chǔ)器RAM模塊將指定地址的數(shù)據(jù)通過(guò)數(shù)據(jù)總線(xiàn)模塊傳輸給處理器模塊;其中, 地址總線(xiàn)模塊將指令操作數(shù)地址存儲(chǔ)到該中間值文件中,存儲(chǔ)器RAM模塊將指令操作數(shù)地址和該地址存儲(chǔ)的數(shù)據(jù)存儲(chǔ)到該中間值文件中,數(shù)據(jù)總線(xiàn)模塊將指令操作數(shù)地址對(duì)應(yīng)的數(shù)據(jù)以“物理單元名稱(chēng)該物理單元處理的數(shù)據(jù)”的形式順序存儲(chǔ)到該中間值文件中;
c)所述處理器模塊執(zhí)行當(dāng)前指令,并將執(zhí)行結(jié)果通過(guò)總線(xiàn)模塊傳輸給存儲(chǔ)器RAM 模塊;其中,總線(xiàn)模塊將處理器模塊的執(zhí)行結(jié)果及地址存儲(chǔ)到該中間值文件中,存儲(chǔ)器RAM 模塊將處理器模塊的執(zhí)行結(jié)果及地址結(jié)果以“物理單元名稱(chēng)該物理單元處理的數(shù)據(jù)”的形式順序存儲(chǔ)到該中間值文件中。
進(jìn)一步的,所述噪聲模式初始化為無(wú)噪聲、或隨機(jī)噪聲、或高斯噪聲。
進(jìn)一步的,所述能量模型初始化為漢明重量模型、或漢明距離模型、或比特權(quán)重模型。
進(jìn)一步的,所述主要物理單元包括總線(xiàn)、片內(nèi)RAM、片外RAM等。
原型系統(tǒng)各模塊描述如下
■預(yù)編譯模塊
對(duì)密碼算法的實(shí)現(xiàn)源程序進(jìn)行編譯,得到源程序的匯編指令序列,比如密碼算法C51匯編代碼。若系統(tǒng)輸入為密碼算法的C等高級(jí)語(yǔ)言實(shí)現(xiàn)代碼,則可通過(guò)使用 KeiluVision等編譯工具對(duì)相應(yīng)的實(shí)現(xiàn)代碼源程序進(jìn)行編譯。
■指令鋪平模塊
該模塊基于詞法分析器Lex進(jìn)行匯編指令鋪平,即對(duì)算法執(zhí)行序列中的指令序列進(jìn)行逐條識(shí)別,繼而根據(jù)識(shí)別的結(jié)果以及算法的輸入?yún)?shù)將算法中的分支指令、循環(huán)指令鋪平為順序執(zhí)行的指令序列。這種處理能夠顯著提高模擬速度。
■模擬引擎模塊
該模塊基于對(duì)密碼設(shè)備能耗特征的刻畫(huà)(刻畫(huà)層次可配置),這種刻畫(huà)包括對(duì)數(shù)字電路實(shí)現(xiàn)中的主要物理單元(處理器、存儲(chǔ)器和總線(xiàn)等)活動(dòng)的模擬,并將這些物理單元的活動(dòng)(數(shù)據(jù)處理、指令執(zhí)行等)過(guò)程中處理的數(shù)據(jù)(存取數(shù)據(jù),傳輸數(shù)據(jù)等),傳送給能量跡生成器。該模塊根據(jù)C51微控制器指令集將匯編指令類(lèi)型、操作數(shù)映射為設(shè)備中各個(gè)功能單元的計(jì)算及存儲(chǔ)行為,最終得到各主要物理單元指令執(zhí)行過(guò)程中的狀態(tài)。
■能量跡生成器模塊
該模塊可以靈活配置各主要物理單元在總能量消耗中的比重、能量模型、噪聲模型,并將模擬引擎記錄的各物理單元在各活動(dòng)過(guò)程中的狀態(tài)或者狀態(tài)遷移映射為瞬時(shí)能量消耗值,即將各主要物理單元活動(dòng)過(guò)程中處理的數(shù)據(jù)根據(jù)本領(lǐng)域公知的能量模型映射為能量消耗值,繼而累加成密碼設(shè)備的瞬時(shí)能量消耗。
與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為
■本發(fā)明不局限于特定密碼算法的類(lèi)型(對(duì)稱(chēng)、非對(duì)稱(chēng)密碼算法等)以及實(shí)現(xiàn)方式(樸素實(shí)現(xiàn)抑或受保護(hù)實(shí)現(xiàn)),具有廣泛的適用范圍。
■本發(fā)明支持自定義密碼設(shè)備的各物理單元在整體能量消耗中的比重。
■本發(fā)明支持定制密碼設(shè)備各物理單元的能量消耗模型,例如漢明重量模型、漢明距離模型、比特權(quán)重模型以及其他自定義能量模型等。
■本發(fā)明支持刻畫(huà)密碼設(shè)備各個(gè)物理單元以及整體噪聲水平(均值,方差及峰值等)以及噪聲形態(tài),例如均勻噪聲、高斯噪聲等。
■本發(fā)明支持C51、DSP、ARM等不同的微處理器體系架構(gòu)。
目前,本發(fā)明已經(jīng)測(cè)試過(guò)的算法包括AES、DES、Camellia、SMS4、RSA、LBlock等算法,以及部分算法的掩碼實(shí)現(xiàn)(例如,AES、LBlock等的掩碼實(shí)現(xiàn)),支持兼容C51系列微處理器平臺(tái)。此外,本發(fā)明可擴(kuò)展的體系結(jié)構(gòu)還為日后的功能擴(kuò)展和升級(jí)提供了完善的接口。
圖1 指令級(jí)能量消耗信息生成系統(tǒng)工作流程圖2 指令鋪平模塊指令解析流程圖3 密碼設(shè)備的高層次能耗特征刻畫(huà)示意圖。
具體實(shí)施方式
以C51體系結(jié)構(gòu)下的密碼算法指令級(jí)能量消耗信息生成為例,本發(fā)明主要分以下 4個(gè)基本步驟實(shí)施。
(1)預(yù)編譯
對(duì)輸入對(duì)象為密碼算法C51匯編代碼進(jìn)行編譯,得到源程序的匯編指令序列。若系統(tǒng)輸入為密碼算法的C等高級(jí)語(yǔ)言實(shí)現(xiàn)代碼,則可通過(guò)使用Keil uVision等編譯工具得到功能等價(jià)的C51指令系統(tǒng)下的實(shí)現(xiàn)代碼或其他指令系統(tǒng)的匯編程序代碼。
(2)指令鋪平
將密碼算法匯編指令序列中非順序執(zhí)行的指令(例如,跳轉(zhuǎn)指令)鋪平為順序執(zhí)行的指令序列。指令鋪平技術(shù)主要利用詞法分析器Lex生成的適合密碼設(shè)備硬件平臺(tái)的指令掃描器,掃描密碼算法的匯編指令代碼,并對(duì)算法執(zhí)行序列中的每一條指令進(jìn)行識(shí)別。如果識(shí)別到的指令是跳轉(zhuǎn)指令且跳轉(zhuǎn)條件成立,則將當(dāng)前跳轉(zhuǎn)指令輸出到中間代碼,并跳轉(zhuǎn)到指定地址繼續(xù)掃描下一條指令;否則,則將當(dāng)前指令輸出到中間代碼,并對(duì)下一條指令進(jìn)行掃描處理;然后根據(jù)識(shí)別結(jié)果以及該密碼算法的輸入?yún)?shù)將該算法中的分支指令、循環(huán)指令鋪平為順序執(zhí)行的指令序列。
(3)模擬引擎
模擬引擎可以精確模擬指令的執(zhí)行行為,記錄指令執(zhí)行過(guò)程中主要物理單元(總線(xiàn)、片內(nèi)RAM和片外RAM)的活動(dòng)(數(shù)據(jù)處理、指令執(zhí)行),將這些中間值存儲(chǔ)到中間值文件中。
(4)能量跡生成器
能量跡生成器不僅可以方便地配置密碼設(shè)備主要物理(處理器、存儲(chǔ)器和總線(xiàn)等)單元在總能量消耗中所占比重、能量模型以及噪聲水平等,還可以方便地配置全局噪聲。能量跡生成器根據(jù)設(shè)定的配置,將模擬引擎記錄的密碼設(shè)備主要物理單元(處理器、存儲(chǔ)器和總線(xiàn)等)在活動(dòng)過(guò)程中所處理的數(shù)據(jù)根據(jù)本領(lǐng)域公知的能量模型(漢明重量模型、 漢明距離模型、比特權(quán)重模型等)映射為主要物理單元的能量消耗值,并根據(jù)配置的噪聲水平添加相應(yīng)的噪聲作為該物理單元最終能量消耗值。
本發(fā)明在指令級(jí)級(jí)別上將密碼設(shè)備刻畫(huà)為包含處理器、存儲(chǔ)器、總線(xiàn)等物理單元的集合;首先,通過(guò)預(yù)編譯將密碼算法實(shí)現(xiàn)適合于本發(fā)明的輸入;然后,通過(guò)指令鋪平模塊將密碼算法匯編指令鋪平為順序執(zhí)行的指令序列,以提高模擬引擎的模擬速度;接著,通過(guò)模擬引擎模塊精確模擬密碼算法匯編指令的執(zhí)行行為,記錄各物理單元在指令執(zhí)行過(guò)程中所處理的數(shù)據(jù);最后,能量跡生成器模塊根據(jù)各物理單元在能量消耗中所占比重的配置、噪聲水平以及所選擇的適當(dāng)能量模型(由目標(biāo)密碼設(shè)備決定),將每條指令執(zhí)行過(guò)程中處理的數(shù)據(jù)(包括總線(xiàn)傳輸數(shù)據(jù)、RAM數(shù)據(jù)變化等)映射為指令的能量消耗值。
工作流程
本發(fā)明目前支持的C51硬件平臺(tái)的總線(xiàn)、片內(nèi)RAM和片外RAM是主要物理單元。本發(fā)明系統(tǒng)工作流程如圖1所示。
(1)初始化參數(shù)
■初始化算法類(lèi)型(AES-128、LBlock 等)為 AES-128 ;
■初始化硬件平臺(tái)為C51平臺(tái);
■初始化密碼設(shè)備各物理單元的噪聲模式(隨機(jī)噪聲、高斯噪聲、無(wú)噪聲)為無(wú)噪聲;
■初始化密碼設(shè)備各物理單元的能量模型(漢明重量模型、漢明距離模型、比特權(quán)重模型等)為漢明重量模型;
■初始化程序存儲(chǔ)器ROM。
■初始化密碼設(shè)備各物理單元能耗占總能耗比重,總線(xiàn)為70%、片內(nèi)RAM為20%、 片外RAM為10%。
(2)預(yù)編譯
預(yù)編譯階段,將密碼算法的C等高級(jí)語(yǔ)言實(shí)現(xiàn)代碼,編譯為為密碼算法C51匯編代碼,得到源程序的匯編指令序列。
(3)指令鋪平
指令鋪平模塊以預(yù)編譯模塊輸出的匯編指令序列為輸入。
指令鋪平模塊輸出的順序執(zhí)行指令序列稱(chēng)之為中間代碼,該模塊輸出的中間代碼存儲(chǔ)在中間代碼文件中。
以C51硬件平臺(tái)為例,指令鋪平模塊需要處理的跳轉(zhuǎn)指令有AJMP、LJMP, SJMP, JMP、ACALL、LCALL、JZ、JNZ、CJNE、DJNE、RET 等。
該模塊采用公知的詞法分析器Lex生成C51指令掃描器,掃描密碼算法8051匯編代碼。C51指令掃描器對(duì)輸入的密碼算法匯編代碼逐條掃描,如果當(dāng)前識(shí)別到的指令是跳轉(zhuǎn)指令且跳轉(zhuǎn)條件成立,則將當(dāng)前跳轉(zhuǎn)指令輸入到中間代碼文件中,并跳轉(zhuǎn)到指定地址,繼續(xù)掃描一條指令;否則,則將當(dāng)前指令輸入到中間代碼文件中,其中中間指令順序存儲(chǔ),然后對(duì)下一條指令進(jìn)行掃描處理。
其中,指令鋪平對(duì)每一條指令的處理按如下三個(gè)步驟進(jìn)行處理,每條指令的處理流程如圖2所示。這里的tag標(biāo)記為-1時(shí)表示沒(méi)有跳轉(zhuǎn)發(fā)生,否則表示有跳轉(zhuǎn)發(fā)生。
Step 1 標(biāo)記每條指令的tag值,其中每條跳轉(zhuǎn)指令的tag為0,每條非跳轉(zhuǎn)指令為-I。
Step 2 :C51指令掃描器識(shí)別到一條指令后,根據(jù)標(biāo)記tag的值判斷是否有跳轉(zhuǎn)發(fā)生,若有跳轉(zhuǎn)發(fā)生(Jump Stisfied),則轉(zhuǎn)至乂印3 (Jump Occurred);否則,轉(zhuǎn)至Mep 4(No Jump Occurred)。
Step 3 判斷當(dāng)前指令的地址(PC)是否就是要跳轉(zhuǎn)到的地址(JumpAddr),若PC =JumpAddr,也即是當(dāng)前指令的地址就是要跳轉(zhuǎn)到的地址,則置當(dāng)前指令的tag標(biāo)記為-1, 表示跳轉(zhuǎn)已完成,轉(zhuǎn)至乂印4 ;否則對(duì)當(dāng)前指令不作處理,C51指令掃描器取下一條指令識(shí)別。8
Step 4 判斷當(dāng)前指令是否為跳轉(zhuǎn)指令,若是跳轉(zhuǎn)指令且跳轉(zhuǎn)條件成立,則置標(biāo)記 PC = JumpAddr,即置當(dāng)前指令的地址為要跳轉(zhuǎn)到的地址,表示已經(jīng)有跳轉(zhuǎn)發(fā)生,然后繼續(xù)取下一條指令識(shí)別;否則直接取下一條指令識(shí)別。
(4)模擬指令執(zhí)行
模擬引擎模塊以指令鋪平的輸出中間代碼文件為輸入,將中間代碼文件中的指令序列讀入到程序存儲(chǔ)器ROM中。
模擬引擎模塊輸出密碼設(shè)備主要物理單元的數(shù)據(jù)處理、指令執(zhí)行活動(dòng)數(shù)值為“中間值”,存儲(chǔ)中間值的文件稱(chēng)之為“中間值文件”。中間值文件的文件存儲(chǔ)格式為(物理單元名稱(chēng)該物理單元處理的數(shù)據(jù)),其中文件中并無(wú)括號(hào)。
模擬引擎模塊精確模擬指令的執(zhí)行行為,記錄指令執(zhí)行過(guò)程中主要物理單元(總線(xiàn)、片內(nèi)RAM和片外RAM)的活動(dòng)(數(shù)據(jù)處理、指令執(zhí)行),將這些中間值存儲(chǔ)到中間值文件中。
模擬引擎模塊包括處理器模塊、總線(xiàn)模塊(地址總線(xiàn)模塊和數(shù)據(jù)總線(xiàn)模塊)以及存儲(chǔ)器RAM模塊(片內(nèi)RAM模塊和片外RAM模塊)等主要物理單元模塊。其中處理器模塊主要完成取指令、解碼以及指令執(zhí)行等功能,實(shí)現(xiàn)主要是對(duì)硬件平臺(tái)支持的匯編指令進(jìn)行解析;總線(xiàn)模塊(地址總線(xiàn)模塊和數(shù)據(jù)總線(xiàn)模塊)主要功能是記錄處理器模塊在取指令、解碼以及指令執(zhí)行三個(gè)階段過(guò)程中放到總線(xiàn)上傳輸?shù)臄?shù)據(jù),實(shí)現(xiàn)就是開(kāi)辟一塊連續(xù)的存儲(chǔ)空間用來(lái)存取值;存儲(chǔ)器模塊(片內(nèi)RAM模塊和片外RAM模塊)主要功能是記錄處理器模塊在取指令、解碼以及指令執(zhí)行三個(gè)階段過(guò)程中存在存儲(chǔ)器上的數(shù)據(jù),實(shí)現(xiàn)就是開(kāi)辟一塊連續(xù)的存儲(chǔ)空間用來(lái)存取值。
其中,每條指令的處理過(guò)程均分為3個(gè)階段,如圖3所示。
Step 1 取指令,處理器模塊從程序存儲(chǔ)器ROM中取出待執(zhí)行指令,取指令過(guò)程中從寄存器中取出該指令的PC及指令的二進(jìn)制編碼,通過(guò)總線(xiàn)模塊傳輸?shù)教幚砥髂K,其中總線(xiàn)模塊會(huì)將其傳輸?shù)腜C以及指令的二進(jìn)制編碼順序以“物理單元名稱(chēng)該物理單元處理的數(shù)據(jù)”的形式存儲(chǔ)到中間值文件中。
Step 2 解碼,處理器模塊對(duì)指令進(jìn)行解碼,將該指令的操作數(shù)地址通過(guò)地址總線(xiàn)模塊傳送給存儲(chǔ)器RAM模塊,然后存儲(chǔ)器RAM模塊將指定地址的數(shù)據(jù)通過(guò)數(shù)據(jù)總線(xiàn)模塊傳輸給處理器模塊,其中地址總線(xiàn)模塊將指令操作數(shù)地址、存儲(chǔ)器RAM模塊將指令操作數(shù)地址和該地址存儲(chǔ)的數(shù)據(jù)、數(shù)據(jù)總線(xiàn)模塊將指令操作數(shù)地址對(duì)應(yīng)的數(shù)據(jù)以(物理單元名稱(chēng) 該物理單元處理的數(shù)據(jù))的形式順序存儲(chǔ)到中間值文件中。
Step 3 指令執(zhí)行,取得操作碼和操作數(shù)后,處理器模塊進(jìn)行計(jì)算,并將最后的結(jié)果通過(guò)總線(xiàn)模塊傳輸給存儲(chǔ)器RAM模塊,其中總線(xiàn)模塊將處理器模塊的計(jì)算結(jié)果及地址、 存儲(chǔ)器RAM模塊將處理器模塊的計(jì)算結(jié)果及地址結(jié)果以“物理單元名稱(chēng)該物理單元處理的數(shù)據(jù)”的形式順序存儲(chǔ)到中間值文件中。
(5)生成能量跡
能量跡生成器模塊以模擬指令執(zhí)行的輸出文件為輸入。
能量跡生成器模塊輸出密碼設(shè)備執(zhí)行過(guò)程的能量消耗到能耗文件。
其中,每條指令的能耗計(jì)算如下所示。
■配置密碼設(shè)備主要物理單元(總線(xiàn)、片內(nèi)RAM、片外RAM)的噪聲模式;
■配置密碼設(shè)備全局噪聲模式;
■配置密碼設(shè)備主要物理單元(總線(xiàn)、片內(nèi)RAM、片外RAM)的能量消耗在總能量消耗中的比重;
■配置密碼設(shè)備主要物理單元(總線(xiàn)、片內(nèi)RAM、片外RAM)的能量模型;
■假設(shè)密碼設(shè)備主要物理單元總線(xiàn)、片內(nèi)RAM、片外RAM的能量消耗在總能量消耗中的比重分別為Brate、Irate、Erate,其中比重取值范圍均為
;密碼設(shè)備主要物理單元總線(xiàn)、片內(nèi)RAM、片外RAM的能量模型分別為Bpm、Ipm、Epm,其中能量模型可以是漢明重量模型、 漢明距離模型、比特權(quán)重模型等;密碼設(shè)備主要物理單元總線(xiàn)、片內(nèi)RAM、片外RAM的噪聲分別為Bn。ise、Inoise> Emi…密碼設(shè)備的全局噪聲為Gn。ise,其中噪聲水平可以為無(wú)噪聲、高斯噪聲、隨機(jī)噪聲等。出現(xiàn)在密碼設(shè)備主要物理單元總線(xiàn)、片內(nèi)RAM、片外RAM的中間值分別為 Bvalue> Ivalue> EvallK。那么每條指令能量消耗Ip??捎上铝泄接?jì)算得出。
Ipc = Brate* (Bpm (Bvalue) +Bnoise)
+Irate* (Ipm (Ivalue)+Inoise)
+Erate* (Epm (Evalue)+Enoise)
+Gnoise
(6)能量跡繪制
能量跡繪制模塊以生成能量跡輸出的能耗文件為輸入,繪制出能量跡曲線(xiàn)。
權(quán)利要求
1.一種指令級(jí)密碼設(shè)備能量消耗信息生成方法,其步驟為1)選取一目標(biāo)密碼設(shè)備,選取并初始化該密碼設(shè)備中主要物理單元的噪聲模式、能量模型,設(shè)置各主要物理單元能耗占總能耗比重;2)對(duì)所選密碼算法的實(shí)現(xiàn)源程序進(jìn)行編譯,得到源程序的匯編指令序列;3)采用詞法分析器對(duì)所述匯編指令序列中的指令進(jìn)行逐條識(shí)別,并根據(jù)識(shí)別結(jié)果及該密碼算法的輸入?yún)?shù)將該算法中的分支指令、循環(huán)指令鋪平為順序執(zhí)行的指令序列;4)指令模擬引擎模擬執(zhí)行步驟幻鋪平后的指令序列,記錄各物理單元在指令執(zhí)行過(guò)程中所處理的數(shù)據(jù);5)能量跡生成器根據(jù)步驟1)的初始化結(jié)果,將步驟4)記錄的每條指令執(zhí)行過(guò)程中處理的數(shù)據(jù)映射為指令的能量消耗值,得到該目標(biāo)密碼設(shè)備運(yùn)行該密碼算法的能量消耗信肩、ο
2.如權(quán)利要求1所述的方法,其特征在于所述步驟3)中指令序列的鋪平方法為a)標(biāo)記所述匯編指令序列中每條指令的tag值,將每條跳轉(zhuǎn)指令的tag標(biāo)記為0、將沒(méi)有跳轉(zhuǎn)發(fā)生的指令的tag標(biāo)記為-1 ;b)詞法分析器識(shí)別到一條指令后,根據(jù)標(biāo)記tag的值判斷是否有跳轉(zhuǎn)發(fā)生,若沒(méi)有則進(jìn)行步驟c);若有跳轉(zhuǎn)發(fā)生,則判斷當(dāng)前指令的地址是否為要跳轉(zhuǎn)到的地址,如果是,則置當(dāng)前指令的tag值為-1,進(jìn)行步驟c),否則對(duì)當(dāng)前指令不作處理,取下一條指令進(jìn)行識(shí)別;c)判斷當(dāng)前指令是否為跳轉(zhuǎn)指令,若是跳轉(zhuǎn)指令且跳轉(zhuǎn)條件成立,則置當(dāng)前指令的地址為要跳轉(zhuǎn)到的地址,然后繼續(xù)取下一條指令識(shí)別;否則直接取下一條指令識(shí)別。
3.如權(quán)利要求1所述的方法,其特征在于所述模擬引擎模塊包括處理器模塊、總線(xiàn)模塊以及存儲(chǔ)器MM模塊,所述總線(xiàn)模塊包括地址總線(xiàn)模塊和數(shù)據(jù)總線(xiàn)模塊,所述存儲(chǔ)器RAM 模塊包括片內(nèi)RAM模塊和片外RAM模塊;所述指令模擬引擎模擬執(zhí)行步驟;3)鋪平后的指令序列過(guò)程中,對(duì)每一條指令的模擬方法為a)所述處理器模塊從程序存儲(chǔ)器ROM中取出待執(zhí)行指令,并通過(guò)所述總線(xiàn)模塊讀取指令的地址PC及指令的二進(jìn)制編碼;其中,總線(xiàn)模塊將其傳輸?shù)腜C及指令的二進(jìn)制編碼順序以“物理單元名稱(chēng)該物理單元處理的數(shù)據(jù)”的形式存儲(chǔ)到一中間值文件中;b)所述處理器模塊將該指令的操作數(shù)地址通過(guò)地址總線(xiàn)模塊傳送給存儲(chǔ)器RAM模塊, 然后存儲(chǔ)器RAM模塊將指定地址的數(shù)據(jù)通過(guò)數(shù)據(jù)總線(xiàn)模塊傳輸給處理器模塊;其中,地址總線(xiàn)模塊將指令操作數(shù)地址存儲(chǔ)到該中間值文件中,存儲(chǔ)器RAM模塊將指令操作數(shù)地址和該地址存儲(chǔ)的數(shù)據(jù)存儲(chǔ)到該中間值文件中,數(shù)據(jù)總線(xiàn)模塊將指令操作數(shù)地址對(duì)應(yīng)的數(shù)據(jù)以 “物理單元名稱(chēng)該物理單元處理的數(shù)據(jù)”的形式順序存儲(chǔ)到該中間值文件中;c)所述處理器模塊執(zhí)行當(dāng)前指令,并將執(zhí)行結(jié)果通過(guò)總線(xiàn)模塊傳輸給存儲(chǔ)器RAM模塊;其中,總線(xiàn)模塊將處理器模塊的執(zhí)行結(jié)果及地址存儲(chǔ)到該中間值文件中,存儲(chǔ)器RAM模塊將處理器模塊的執(zhí)行結(jié)果及地址結(jié)果以“物理單元名稱(chēng)該物理單元處理的數(shù)據(jù)”的形式順序存儲(chǔ)到該中間值文件中。
4.如權(quán)利要求1或2或3所述的方法,其特征在于所述噪聲模式初始化為無(wú)噪聲、或隨機(jī)噪聲、或高斯噪聲。
5.如權(quán)利要求1或2或3所述的方法,其特征在于所述能量模型初始化為漢明重量模型、或漢明距離模型、或比特權(quán)重模型。
6.如權(quán)利要求1或2或3所述的方法,其特征在于所述待測(cè)密碼設(shè)備為C51硬件平臺(tái); 所述物理設(shè)備包括總線(xiàn)、片內(nèi)RAM、片外RAM。
全文摘要
本發(fā)明公開(kāi)了一種指令級(jí)密碼設(shè)備能量消耗信息生成方法,屬于信息安全領(lǐng)域。本方法為1)選取一目標(biāo)密碼設(shè)備,并初始化該密碼設(shè)備中各主要物理單元的噪聲模式、能量模型,設(shè)置各主要物理單元能耗比重;2)對(duì)所選密碼算法的實(shí)現(xiàn)源程序進(jìn)行編譯,得到匯編指令序列;3)采用詞法分析器對(duì)匯編指令序列中的指令進(jìn)行識(shí)別,并將分支指令、循環(huán)指令鋪平為順序執(zhí)行的指令序列;4)指令模擬引擎模擬執(zhí)行鋪平后的指令序列,記錄各主要物理單元在指令執(zhí)行過(guò)程中所處理的數(shù)據(jù);5)根據(jù)初始化結(jié)果,將記錄的每條指令執(zhí)行過(guò)程中處理的數(shù)據(jù)映射為指令的能量消耗值,得到目標(biāo)密碼設(shè)備運(yùn)行該密碼算法的能量消耗信息。本發(fā)明具有刻畫(huà)能力強(qiáng)、資源開(kāi)銷(xiāo)小等優(yōu)點(diǎn)。
文檔編號(hào)G06F9/30GK102508637SQ20111037462
公開(kāi)日2012年6月20日 申請(qǐng)日期2011年11月22日 優(yōu)先權(quán)日2011年11月22日
發(fā)明者劉繼業(yè), 周永彬, 李建堂 申請(qǐng)人:中國(guó)科學(xué)院軟件研究所