專(zhuān)利名稱(chēng):基于流水線(xiàn)體系結(jié)構(gòu)的微控制器的對(duì)抗方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于微控制器的對(duì)抗方法,在該微控制器中執(zhí)行程序指令序列。
本發(fā)明特別用于受保護(hù)的電子器件如芯片卡的微控制器。
微控制器為其中有至少一個(gè)也稱(chēng)為CPU的微處理器的單片集成電路。這些微控制器為容納在單個(gè)硅基體或集成電路芯片上的真正計(jì)算機(jī)。
因此微控制器芯片卡構(gòu)成受保護(hù)信息載體該載體結(jié)構(gòu)與一計(jì)算機(jī)相同,即它們可用來(lái)存儲(chǔ)數(shù)據(jù)和處理信息。在這里,只要證明進(jìn)行合法操作,微控制器即可用來(lái)鑒別該卡及其持有者的真實(shí)性、對(duì)信息進(jìn)行編碼和解碼并計(jì)算電子簽名。
圖1簡(jiǎn)示出芯片卡的一微控制器的結(jié)構(gòu)。這類(lèi)集成在一芯片上的微控制器有一能處理記錄在該芯片上的數(shù)據(jù)和程序的微處理器或CPU。該微處理器用數(shù)據(jù)總線(xiàn)與不同類(lèi)型的存儲(chǔ)器相聯(lián)。操作程序和算法一般存儲(chǔ)在ROM存儲(chǔ)器中,而數(shù)據(jù),不管秘密與否,存儲(chǔ)在比方說(shuō)EEPROM型可編程存儲(chǔ)器中。RAM存儲(chǔ)器中有各種內(nèi)部處理動(dòng)作所需工作寄存器。對(duì)于有觸頭的芯片卡來(lái)說(shuō),一由一接頭構(gòu)成的輸入/輸出部件確保與外界對(duì)話(huà)。
由一時(shí)鐘(CLK)按序進(jìn)行該微控制器的各項(xiàng)操作。該微控制器還有一電源Vcc和一接地線(xiàn)GND。
微控制器基本上分為兩類(lèi)?,F(xiàn)時(shí)的大多數(shù)微控制器(約90%)基于CISC(復(fù)雜指令集計(jì)算機(jī))體系結(jié)構(gòu),在該體系結(jié)構(gòu)中,由一大解碼引擎順序讀取和執(zhí)行指令。但是,當(dāng)前的趨勢(shì)是越來(lái)越多地使用RISC(精簡(jiǎn)指令集計(jì)算機(jī))體系結(jié)構(gòu)的微處理器,在該體系結(jié)構(gòu)中,平行讀取和執(zhí)行指令。這一體系結(jié)構(gòu)要求集成電路芯片上有若干昂貴的解碼引擎,但指令序列的執(zhí)行速度快得多。特別是,使用所謂的“流水線(xiàn)”方法的RISC體系結(jié)構(gòu)可通過(guò)把若干指令分成子步驟后在同一時(shí)鐘周期中執(zhí)行若干指令的各步驟而交織這些指令。RISC中的流水線(xiàn)的細(xì)節(jié)在下文詳述。
由于所處理的所有或某些數(shù)據(jù)是秘密的,因此微控制器對(duì)程序的執(zhí)行必需受到保護(hù)??捎盟鶊?zhí)行程序中集成的數(shù)學(xué)算法和/或所謂的對(duì)抗方法進(jìn)行這一保護(hù)。
對(duì)抗方法為這樣一種保護(hù)方法,它防止程序指令執(zhí)行過(guò)程中所處理的數(shù)據(jù)在受保護(hù)部件外部被翻譯。由于微控制器的結(jié)構(gòu)本身它會(huì)遭受所謂的功率攻擊或差分功率攻擊DPA(Differential PowerAttack),從而發(fā)生信息泄漏。
圖2用芯片的隨時(shí)鐘周期七數(shù)而變的電流消耗I曲線(xiàn)示出功率攻擊的原理。
當(dāng)微控制器用一算法執(zhí)行一由指令序列(指令1、指令2、指令3、...)構(gòu)成的不管秘密與否的程序時(shí),它將在存儲(chǔ)器中尋找所需數(shù)據(jù)、處理它們后在存儲(chǔ)器中寫(xiě)入結(jié)果。
通常,不管微控制器為何種體系結(jié)構(gòu)(CISC或RSIC),總是以確定的相同方式執(zhí)行指令序列。
然后,只要(從微控制器的電源Vcc)讀取會(huì)使處理中的秘密數(shù)據(jù)上的信息泄露的微控制器電流消耗,即可進(jìn)行功率攻擊。為了獲得這類(lèi)信息。必需執(zhí)行同一指令序列若干次。然后可使電流消耗與同一指令執(zhí)行過(guò)程中所處理的數(shù)據(jù)發(fā)生關(guān)聯(lián)。因此微控制器的電流消耗可變成所處理數(shù)據(jù)的真實(shí)證明。
例如,攻擊者可如下進(jìn)行攻擊。設(shè)一秘密數(shù)據(jù)項(xiàng)為8位k[i],其中,i從1到8。使用一累加器對(duì)i從1到8進(jìn)行循環(huán)Acc=k[i]xork[i]。在循環(huán)結(jié)束時(shí)得到Acc=xor(∑(i=1-8)k[i])。當(dāng)在該序列(循環(huán))中把電流消耗看作時(shí)間的函數(shù)時(shí),得出反映微控制器中執(zhí)行情況的一周期趨勢(shì)曲線(xiàn),即在上述例子中,對(duì)該循環(huán)的8次操作得出8個(gè)相同信號(hào)。但是,如對(duì)這些信號(hào)中的每一成分進(jìn)行比較,就可得出差別、從而找出k[i]秘密上的信息。由于同一循環(huán)可執(zhí)行若干次,因此便于進(jìn)行觀察。對(duì)于同一操作序列,卡的電流消耗是相同的,因此可獲得所要尋找的信息。
因此消除同一指令序列的電流消耗的重復(fù)性變得很重要。這就是對(duì)抗方法的目的。
這類(lèi)對(duì)抗方法是公知的,特別是在可使用含有隨機(jī)變量的程序的軟件領(lǐng)域中。這類(lèi)程序可以以隨機(jī)方式調(diào)用子程序。因此,對(duì)于通常調(diào)用同一指令序列的重復(fù)若干次的同一任務(wù),調(diào)用不同子程序造成執(zhí)行指令的不同序列。從而電流消耗無(wú)法與處理中的數(shù)據(jù)發(fā)生關(guān)聯(lián)。
但是,這類(lèi)軟件解決方案執(zhí)行起來(lái)很復(fù)雜。事實(shí)上需要寫(xiě)入不同子程序,從而在展開(kāi)時(shí)間上和編碼大小上的成本高。
本發(fā)明的目的是提供一種能消除現(xiàn)有技術(shù)的這些缺點(diǎn)的對(duì)抗方法。在本發(fā)明對(duì)抗方法中,在比方說(shuō)RSIC體系結(jié)構(gòu)的電子部件中按照所謂的流水線(xiàn)方法執(zhí)行指令序列。
本發(fā)明的原理是在指令本身層面上隨機(jī)、無(wú)法復(fù)制地執(zhí)行各指令序列。
本發(fā)明特別涉及能執(zhí)行指令序列的微控制器的一種對(duì)抗方法,所述指令按照所謂的流水線(xiàn)方法執(zhí)行,其特征在于,該方法在相繼兩指令之間和/或至少一個(gè)指令中隨機(jī)引入至少一個(gè)等待時(shí)間。
按照一個(gè)特征,指令分解成多個(gè)子步驟。
按照一特點(diǎn),這些子步驟包括-獲取指令步驟;-對(duì)指令進(jìn)行解碼步驟;-指令執(zhí)行步驟;以及-寫(xiě)入指令結(jié)果步驟。
按照一個(gè)特征,等待時(shí)間在一指令的任何兩個(gè)子步驟之間隨機(jī)引入。
按照另一特征,指令可為與復(fù)雜邏輯模塊如加密算法的子塊相應(yīng)的宏指令。
按照另一特征,等待時(shí)間在指令序列執(zhí)行過(guò)程中隨機(jī)引入若干次。
按照一特征,在一受保護(hù)指令序列前,在軟件命令后引入等待時(shí)間。
按照一特征,通過(guò)一由指令解碼的電子器件直接負(fù)責(zé)的非軟件設(shè)計(jì)實(shí)施該方法。
按照另一特征,引入可用電子或軟件參數(shù)靜態(tài)地或動(dòng)態(tài)地調(diào)節(jié)等待時(shí)間,從而調(diào)節(jié)同一指令序列的執(zhí)行的變化性。
按照本發(fā)明一實(shí)施例,在一RSIC體系結(jié)構(gòu)的微控制器的集成電路芯片中通過(guò)流水線(xiàn)操作實(shí)施該方法。
本發(fā)明最好用于芯片卡類(lèi)型的任何受保護(hù)裝置。
本發(fā)明的優(yōu)點(diǎn)是提供一種在集成電路芯片上直接在微控制器層面上實(shí)施的機(jī)制。從而避免軟件解決方案的復(fù)雜性。
此外,本發(fā)明對(duì)抗方法確保在裝有這類(lèi)對(duì)抗機(jī)制的電子部件上執(zhí)行任何程序,不管該程序是受保護(hù)的還是不受保護(hù)的。
事實(shí)上是該部件本身而非程序的指令序列,確保了處理中的數(shù)據(jù)的隨機(jī)執(zhí)行和安全性。從而有利地可使程序與部件不發(fā)生關(guān)聯(lián),這在某些應(yīng)用場(chǎng)合證明是非常有用的。從而同一部件可用于不同程序且不失去其保護(hù)性。
從結(jié)合附圖的如下例示性而非限制性的說(shuō)明中可清楚看出本發(fā)明的其他優(yōu)點(diǎn)和細(xì)節(jié),附圖包括圖1如上所述簡(jiǎn)示出一有一微控制器的集成電路芯片;圖2如上所述為說(shuō)明對(duì)一受保護(hù)電子部件進(jìn)行功率攻擊的方法的曲線(xiàn)圖;圖3示出一CISC體系結(jié)構(gòu)的現(xiàn)有微控制器對(duì)指令進(jìn)行解碼的功能;圖4示出一RISC體系結(jié)構(gòu)的現(xiàn)有微控制器對(duì)指令進(jìn)行解碼的功能;和圖5示出本發(fā)明RISC體系結(jié)構(gòu)的微控制器對(duì)指令進(jìn)行解碼的功能。
本發(fā)明對(duì)抗方法基于一般使用在具有RISC體系結(jié)構(gòu)的微控制器中的通過(guò)流水線(xiàn)技術(shù)的處理指令的原理。
RISC體系結(jié)構(gòu)與CISC體系結(jié)構(gòu)有如下幾點(diǎn)不同。
首先,每一指令對(duì)應(yīng)于通過(guò)具體的,唯一的電子子模塊形式實(shí)施的單一邏輯塊,從而一指令可在一個(gè)時(shí)間周期中解碼和執(zhí)行;而CSIC體系結(jié)構(gòu)使用單個(gè)電子塊順序處理所有指令。
其次,數(shù)據(jù)總線(xiàn)與指令總線(xiàn)不同,從而每一時(shí)間周期中一指令的解碼可獨(dú)立于存儲(chǔ)在存儲(chǔ)器中、被其他指令使用的數(shù)據(jù)。從而可在指令解碼的同時(shí)在存儲(chǔ)器中尋找數(shù)據(jù),該指令解碼必須對(duì)指令進(jìn)行處理。此外,所有指令的大小必需至少等于外部數(shù)據(jù)總線(xiàn)的大小,以便直接、毫不延遲地進(jìn)行指令的解碼。
RISC體系結(jié)構(gòu)的微控制器一般有兩種模型。
-“斯坦?!?stanford)模型,該模型使用常常稱(chēng)為流水線(xiàn)技術(shù)的最佳化指令鏈,從而可使用非常強(qiáng)大的指令組;-“伯克利”(Berkeley)模型,該模型使用可迅速調(diào)用子例行程序、特別適用于實(shí)時(shí)應(yīng)用場(chǎng)合的指令鏈。
本發(fā)明特別適用于“斯坦?!蹦P椭刑岢龅牧魉€(xiàn)技術(shù)。這是因?yàn)楸景l(fā)明提出一種依賴(lài)于這一流水線(xiàn)體系結(jié)構(gòu)的對(duì)抗方法。
流水線(xiàn)技術(shù)可通過(guò)把每一指令分成若干子步驟后平行執(zhí)行這些子步驟而交織執(zhí)行若干指令。從而一流水線(xiàn)級(jí)定義為同時(shí)執(zhí)行的子步驟組。從而每條指令的時(shí)鐘周期數(shù)的劃分與流水線(xiàn)技術(shù)級(jí)數(shù)將成正比。
應(yīng)該指出,在執(zhí)行一程序、更簡(jiǎn)單地說(shuō)一連串指令時(shí),當(dāng)指令發(fā)生線(xiàn)性執(zhí)行之外的支線(xiàn)、跳躍、中斷及其它時(shí),流水線(xiàn)的功能可分解。
圖3和4分別示出流水線(xiàn)CISC體系結(jié)構(gòu)和RISC體系結(jié)構(gòu)的微控制器的現(xiàn)有功能。
指令I(lǐng)NSn可為簡(jiǎn)單指令或與復(fù)雜邏輯模塊如加密算法子塊對(duì)應(yīng)的宏指令,如置換、壓縮或擴(kuò)展結(jié)構(gòu)、非基本數(shù)學(xué)函數(shù)、查表等。
指令I(lǐng)NSn最好分解成若干子步驟。示出一分解成4個(gè)子步驟的一例,但該例子只是例示性的而非限制性的。
表示“取指令(fetch)”的第一步驟“F”可以在存儲(chǔ)器中尋找待解碼指令。它將接下來(lái)要傳給下一級(jí)的該指令放置在總線(xiàn)上。
表示“解碼(decode)”的第二步驟“D”可以對(duì)該指令進(jìn)行解碼,即激活微控制器的可處理這一指令的子模塊。
表示“執(zhí)行(execute)”的第三步驟“E”可以在微控制器中的該子模塊中執(zhí)行指令。
表示“寫(xiě)入(write)”的最后一個(gè)步驟“W”可以在總線(xiàn)上寫(xiě)入由微控制器的子模塊執(zhí)行的指令的結(jié)果。該結(jié)果然后使用在隨后的執(zhí)行中或回到存儲(chǔ)器中。
從圖3可見(jiàn),CISC體系結(jié)構(gòu)的微控制器在8個(gè)時(shí)間周期中只能完成兩個(gè)指令。
相反,如圖4所示,分成4個(gè)子步驟的流水線(xiàn)在9個(gè)時(shí)間周期中能完成6個(gè)指令。由于能同時(shí)執(zhí)行若干指令的子步驟,因此總執(zhí)行時(shí)間縮短。
但這樣一種體系結(jié)構(gòu)不能免遭功率攻擊。這是因?yàn)?,如果同一指令序列重?fù)若干次,將總是有具有相同電流消耗的,流水線(xiàn)的相同級(jí)鏈。
為了解決由功率攻擊造成的問(wèn)題和防止若干次執(zhí)行同一指令序列的電流消耗的可復(fù)制性,在指令處理過(guò)程中隨機(jī)引入等待時(shí)間B(Break)。該等待時(shí)間B可在一指令開(kāi)始時(shí)和/或同一指令的任何兩子步驟之間隨機(jī)引入。
該隨機(jī)等待時(shí)間B必要時(shí)還可在指令序列執(zhí)行過(guò)程中引入若干次。
圖5示出本發(fā)明對(duì)抗方法的機(jī)制。
該隨機(jī)等待時(shí)間B在每一指令序列上改變流水線(xiàn)級(jí)而不干擾指令的執(zhí)行,從而防止電流消耗的可復(fù)制性。
本發(fā)明方法通過(guò)非軟件執(zhí)行、直接由對(duì)微控制器指令進(jìn)行解碼的電子模塊(硬件)執(zhí)行。
在其功能上,該方法可用電子或軟件裝置靜態(tài)或動(dòng)態(tài)地調(diào)整,以便多多少少獲得同一指令序列反復(fù)執(zhí)行的可變性。
按照實(shí)施本發(fā)明方法的一種可能性,等待時(shí)間B的引入可決定于以軟件方式控制的啟動(dòng),例如只在要保護(hù)的指令序列的執(zhí)行之前。這樣,不必以降低無(wú)需特殊保護(hù)的指令序列的執(zhí)行速度為代價(jià)。
因此本發(fā)明方法可確保指令序列的隨機(jī)執(zhí)行即該序列從一次執(zhí)行到下一次執(zhí)行的無(wú)法復(fù)制性并可得出相同功能結(jié)果。
為了使指令序列的執(zhí)行時(shí)間不至于過(guò)長(zhǎng)而失去流水線(xiàn)的主要優(yōu)點(diǎn),必需簡(jiǎn)單定義一妥協(xié)方案。
權(quán)利要求
1.用于能執(zhí)行指令序列(INSn)的微控制器的一種對(duì)抗方法,所述指令按照所謂的流水線(xiàn)方法執(zhí)行,其特征在于,該方法在相繼兩指令(INSn,INSn+1)之間和/或至少一個(gè)指令(INSn)中隨機(jī)引入至少一個(gè)等待時(shí)間(B)。
2.按權(quán)利要求1所述的對(duì)抗方法,其特征在于,指令分解成多個(gè)子步驟。
3.按權(quán)利要求2所述的對(duì)抗方法,其特征在于,這些子步驟包括-獲取指令步驟(F);-對(duì)指令進(jìn)行解碼步驟(D);-指令執(zhí)行步驟(E);以及-寫(xiě)入指令結(jié)果步驟(W)。
4.按權(quán)利要求2或3所述的對(duì)抗方法,其特征在于,等待時(shí)間(B)在一指令(INSn)的任何兩個(gè)子步驟之間隨機(jī)引入。
5.按權(quán)利要求1所述的對(duì)抗方法,其特征在于,指令(INSn)可為與復(fù)雜邏輯模塊如加密算法的子塊對(duì)應(yīng)的宏指令。
6.按上述任一權(quán)利要求所述的對(duì)抗方法,其特征在于,等待時(shí)間(B)在指令序列執(zhí)行過(guò)程中隨機(jī)引入若干次。
7.按上述任一權(quán)利要求所述的對(duì)抗方法,其特征在于,等待時(shí)間(B)在受保護(hù)指令序列前在邏輯命令后引入。
8.按上述任一權(quán)利要求所述的對(duì)抗方法,其特征在于,通過(guò)由一微處理器指令解碼的電子器件直接負(fù)責(zé)的非軟件方案實(shí)施該方法。
9.按上述任一權(quán)利要求所述的對(duì)抗方法,其特征在于,用電子或軟件參數(shù)靜態(tài)或動(dòng)態(tài)地調(diào)節(jié)等待時(shí)間(B)的引入,從而調(diào)節(jié)同一指令序列的執(zhí)行的可變性。
10.按上述任一權(quán)利要求所述的方法,其特征在于,在一有一流水線(xiàn)RSIC體系結(jié)構(gòu)的微控制器的集成電路芯片中實(shí)施該方法。
11.一種受保護(hù)芯片卡類(lèi)型裝置,其特征在于,它包括一能實(shí)施按上述任一權(quán)利要求所述的對(duì)抗方法的電子部件。
全文摘要
本發(fā)明涉及能執(zhí)行指令序列(INSn)的微控制器的一種對(duì)抗方法,所述指令按照所謂的流水線(xiàn)方法執(zhí)行,其特征在于,該方法在相繼兩指令(INSn,INSn+1)之間和/或至少一個(gè)指令(INSn)中隨機(jī)引入至少一個(gè)等待時(shí)間(B)。本發(fā)明方法用微控制器的電子器件而不用增加軟件實(shí)施。
文檔編號(hào)G06F21/55GK1426547SQ0180752
公開(kāi)日2003年6月25日 申請(qǐng)日期2001年3月16日 優(yōu)先權(quán)日2000年4月6日
發(fā)明者N·費(fèi)伊特 申請(qǐng)人:格姆普拉斯公司