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