本發(fā)明涉及一種用于使電路免受側(cè)信道分析的方法,所述側(cè)信道分析旨在發(fā)現(xiàn)由所述電路處理的機(jī)密數(shù)據(jù)的值,具體地說,由加密算法用于傳輸消息的密鑰。
本發(fā)明特別涉及實(shí)現(xiàn)密碼算法的設(shè)備,諸如安全設(shè)備(智能卡集成電路、安全元件、安全存儲(chǔ)卡)、移動(dòng)設(shè)備(移動(dòng)電話、智能手機(jī)、物聯(lián)網(wǎng))、家用和汽車設(shè)備、以及集成到計(jì)算機(jī)和其他電子和it設(shè)備(usb驅(qū)動(dòng)器、電視解碼器、游戲控制臺(tái)等)的母板上的硬件加密組件等。本發(fā)明還涉及包括加密運(yùn)算的軟件,該軟件用于在安全或不安全的環(huán)境中執(zhí)行。
本發(fā)明具體涉及實(shí)現(xiàn)諸如des(數(shù)據(jù)加密標(biāo)準(zhǔn))或三重des、aes(高級(jí)加密標(biāo)準(zhǔn))、rsa(rivest、shamir和adleman)、dsa(數(shù)字簽名算法)或ecdsa(橢圓曲線數(shù)字簽名算法)等加密算法之類的密碼算法的電路。本發(fā)明還涉及實(shí)現(xiàn)諸如hmac(密鑰散列消息認(rèn)證碼)之類的散列函數(shù)的電路。
背景技術(shù):
實(shí)現(xiàn)密碼算法的微電路配備有中央處理單元(cpu)。一些微電路配備有專用于密碼計(jì)算的電路,例如加密協(xié)處理器。這些微電路包括根據(jù)所執(zhí)行的運(yùn)算以不同的方式切換的數(shù)千個(gè)邏輯門。這些開關(guān)在電流消耗上產(chǎn)生短暫變化,例如可以被測量的幾納秒。具體而言,cmos型集成電路包括在切換時(shí)(即,當(dāng)邏輯節(jié)點(diǎn)變?yōu)?或0時(shí))才消耗電流的邏輯門。因此,電流消耗取決于中央單元處理的數(shù)據(jù)及其各種外圍設(shè)備(存儲(chǔ)器)上的數(shù)據(jù)、在數(shù)據(jù)或地址總線上流動(dòng)的數(shù)據(jù)、密碼協(xié)處理器等。
此外,具體使用加密或模糊技術(shù)(諸如“白盒密碼術(shù)”技術(shù))產(chǎn)生的某些軟件程序可以以使得難以通過逆向工程確定的方式來集成機(jī)密數(shù)據(jù)。某些軟件程序還可以通過安全通信信道從外部接收機(jī)密數(shù)據(jù)。
當(dāng)觀察到這些微電路的電流消耗、或它們的磁或電磁輻射、或可以在執(zhí)行加密算法的同時(shí)觀察到的其它任何信息時(shí),這些微電路可能會(huì)受到所謂的側(cè)信道分析攻擊。此類攻擊旨在發(fā)現(xiàn)它們使用的機(jī)密數(shù)據(jù),特別是它們的加密密鑰。頻繁的側(cè)信道攻擊實(shí)施諸如spa(“單功耗分析”)、dpa(“差分功耗分析”)、cpa(“相關(guān)功耗分析”)或ema(“電磁分析”)之類的統(tǒng)計(jì)分析方法。spa分析(參考文獻(xiàn)[1])通常只需要獲取單個(gè)電流消耗蹤跡。其目的是通過觀察對(duì)應(yīng)于密碼計(jì)算的消耗蹤跡的一部分來獲得關(guān)于集成電路的活動(dòng)的信息,因?yàn)楫?dāng)前蹤跡根據(jù)所執(zhí)行的運(yùn)算和所處理的數(shù)據(jù)而變化。
軟件在被電路執(zhí)行期間也可能經(jīng)歷這種側(cè)信道攻擊。
dpa(參考文獻(xiàn)[2])和cpa分析使得能夠通過獲取大量數(shù)據(jù)或測量蹤跡并通過對(duì)這些蹤跡進(jìn)行統(tǒng)計(jì)分析以查找搜索的信息來找到加密算法的密鑰。它們基于這樣的前提:即,當(dāng)寄存器中或總線上的位從0變?yōu)?時(shí),cmos型集成電路的消耗發(fā)生變化,以及當(dāng)位保持等于0、保持等于1或從1變?yōu)?(mos晶體管的寄生電容的放電)時(shí),其不發(fā)生變化。或者,可以認(rèn)為當(dāng)位從0變?yōu)?或從1變?yōu)?時(shí),cmos型集成電路的消耗發(fā)生變化,并且當(dāng)位保持等于0或保持等于1時(shí),cmos型集成電路的消耗不變。該第二假設(shè)使得能夠使用常規(guī)的“漢明距離”或“漢明權(quán)重”函數(shù)來開發(fā)不需要已知集成電路的結(jié)構(gòu)可應(yīng)用的消耗模型。dpa分析涉及通過對(duì)大量消耗蹤跡的統(tǒng)計(jì)處理來放大該消耗差異,目的在于突出根據(jù)公式假設(shè)區(qū)分的兩個(gè)消耗蹤跡族之間的測量差異。
cpa分析(參考文獻(xiàn)[3])基于線性電流消耗模型,并且涉及計(jì)算首先所測量的形成捕獲的消耗蹤跡的消耗點(diǎn)與其次根據(jù)線性消耗模型和有關(guān)由微電路處理的待發(fā)現(xiàn)的變量以及有關(guān)加密密鑰的值的假設(shè)而計(jì)算的推定消耗值之間的相關(guān)系數(shù)。
電磁分析(ema)基于如下原理:即,微電路可以以近場或遠(yuǎn)場電磁輻射的形式泄漏信息。假設(shè)晶體管在其狀態(tài)改變時(shí)發(fā)射電磁信號(hào),則可以通過諸如spa、dpa和cpa分析中的一種或其它分析,像電流消耗變化信號(hào)那樣處理這些信號(hào)。此分析的一個(gè)應(yīng)用實(shí)例由jean-jacquesquisquater(參考文獻(xiàn)[4])做出。
存在其它側(cè)信道攻擊,例如“模板攻擊”(參考文獻(xiàn)[5])和“交互信息分析”(mia)(參考文獻(xiàn)[6])。所有上述攻擊都基于所有被分析的蹤跡的時(shí)間對(duì)準(zhǔn)。換言之,在給定時(shí)間(例如從命令的執(zhí)行被電路激活的時(shí)間)執(zhí)行的所有測量必須對(duì)應(yīng)于由算法處理的相同值。
為了保護(hù)此類電路及其執(zhí)行的密碼算法免受這些側(cè)信道攻擊,通常提供應(yīng)對(duì)措施。幾種普遍的應(yīng)對(duì)措施均旨在避免這種時(shí)間對(duì)準(zhǔn)。為此,這些應(yīng)對(duì)措施引入為計(jì)算電路定速的時(shí)鐘頻率的變化,或引入偽時(shí)鐘周期或偽運(yùn)算。另幾種應(yīng)對(duì)措施涉及使得要保護(hù)的算法適合獨(dú)立于由電路處理的數(shù)據(jù)的實(shí)際值來呈現(xiàn)這些數(shù)據(jù)。這幾種應(yīng)對(duì)措施中的某些應(yīng)對(duì)措施被稱為“掩蔽型應(yīng)對(duì)措施”-使用隨機(jī)掩碼(二進(jìn)制數(shù)),在執(zhí)行加密方法期間,這些隨機(jī)掩碼與另一要保護(hù)的數(shù)據(jù)(例如密鑰和/或消息)組合在一起。此類應(yīng)對(duì)措施是有效的,但是需要修改算法,因此,在由專用協(xié)處理器執(zhí)行的情況下,需要專用于實(shí)現(xiàn)此應(yīng)對(duì)措施的協(xié)處理器,或者在由微電路的中央處理單元或編程協(xié)處理器執(zhí)行的情況下,需要更復(fù)雜的程序。
通過多次執(zhí)行實(shí)現(xiàn)的應(yīng)對(duì)措施可以用不包括任何應(yīng)對(duì)措施手段的常規(guī)協(xié)處理器來實(shí)現(xiàn)。其中僅涉及通過偽密鑰或偽消息來多次執(zhí)行加密方法。為此,提供了例如控制加密程序或協(xié)處理器的應(yīng)對(duì)措施程序,該程序以隨機(jī)的順序,通過偽密鑰多次執(zhí)行加密方法,從而使得通過正確的密鑰(即,真實(shí)的密鑰)對(duì)加密方法的執(zhí)行被“隱藏”在一組偽執(zhí)行中。通過多次執(zhí)行實(shí)現(xiàn)這種應(yīng)對(duì)措施提供了以下優(yōu)點(diǎn):即,可以通過不包括任何應(yīng)對(duì)措施手段的常規(guī)協(xié)處理器來實(shí)現(xiàn)此應(yīng)對(duì)措施。
其它應(yīng)對(duì)措施(參考文獻(xiàn)[9]、[10]、[11])實(shí)現(xiàn)包括雙重或多重?cái)?shù)據(jù)路徑的架構(gòu),以便當(dāng)在一個(gè)數(shù)據(jù)路徑中計(jì)算位時(shí),另一數(shù)據(jù)路徑計(jì)算該位的反碼值。
為了檢查旨在上市的安全集成電路提供的安全級(jí)別,在電路上市之前安排資格和/或認(rèn)證測試,這些測試具體包括集成電路防側(cè)信道分析的魯棒性測試,目的是發(fā)現(xiàn)由集成電路處理的機(jī)密數(shù)據(jù)。還有一些測試可以評(píng)估軟件程序?qū)?cè)信道攻擊的抵抗力。
因此,期望提出在包括這種測試方法的資格和/或認(rèn)證過程之后,使得集成電路或軟件程序能夠被認(rèn)為能夠在產(chǎn)品中使用的應(yīng)對(duì)措施手段。
技術(shù)實(shí)現(xiàn)要素:
某些實(shí)施例涉及一種用于由電路執(zhí)行將第一輸入數(shù)據(jù)與第二輸入數(shù)據(jù)相組合并提供輸出數(shù)據(jù)的目標(biāo)運(yùn)算的方法,所述方法包括以下步驟:生成至少兩個(gè)輸入字對(duì),每個(gè)輸入字對(duì)包括第一輸入字和第二輸入字,所述第一輸入字包括所述第一輸入數(shù)據(jù)的相應(yīng)部分和所述第一輸入數(shù)據(jù)部分的二進(jìn)制反碼,所述第二輸入字包括所述第二輸入數(shù)據(jù)的相應(yīng)部分和所述第二輸入數(shù)據(jù)部分的二進(jìn)制反碼,所述第一和第二輸入數(shù)據(jù)的所述部分位于每個(gè)字?jǐn)?shù)據(jù)對(duì)的所述第一和第二輸入數(shù)據(jù)字中的相同位置,并且所述第一和第二輸入數(shù)據(jù)的所述部分的所述二進(jìn)制反碼位于每個(gè)字?jǐn)?shù)據(jù)對(duì)的所述第一和第二輸入數(shù)據(jù)字中的相同位置;以及向每個(gè)輸入字對(duì)應(yīng)用相同的導(dǎo)出運(yùn)算,所述導(dǎo)出運(yùn)算提供包括所述輸出數(shù)據(jù)的一部分和所述輸出數(shù)據(jù)部分的二進(jìn)制反碼的輸出字,所述輸出數(shù)據(jù)是將所述目標(biāo)運(yùn)算應(yīng)用于所述輸入字對(duì)中存在的所述第一和第二輸入數(shù)據(jù)部分而產(chǎn)生的。
根據(jù)一實(shí)施例,每個(gè)輸入字對(duì)中的每個(gè)所述輸入字包括從隨機(jī)或偽隨機(jī)數(shù)發(fā)生器產(chǎn)生的數(shù)據(jù)。
根據(jù)一實(shí)施例,每個(gè)輸入數(shù)據(jù)以包括多個(gè)位的字的形式來表示,每個(gè)輸入數(shù)據(jù)的每個(gè)位與該位的二進(jìn)制反碼一起被插入相應(yīng)輸入字中。
根據(jù)一實(shí)施例,隨機(jī)地選擇每個(gè)輸入字對(duì)的每個(gè)所述字和所述輸出字中的所述數(shù)據(jù)部分的位置和所述數(shù)據(jù)部分的二進(jìn)制反碼的位置。
根據(jù)一實(shí)施例,所述導(dǎo)出運(yùn)算被配置為通過將所述第一輸入字的所述輸入數(shù)據(jù)部分的所述二進(jìn)制反碼替換為所述輸入數(shù)據(jù)部分來變換每個(gè)輸入字對(duì)的所述第一輸入字,以及被配置為向變換后的第一輸入字和所述輸入字對(duì)的所述第二輸入字應(yīng)用所述目標(biāo)運(yùn)算。
根據(jù)一實(shí)施例,所述輸入字和所述輸出字中的每一者分別包括兩個(gè)輸入數(shù)據(jù)或所述輸出數(shù)據(jù)中的一者的一部分的兩次出現(xiàn),以及分別包括所述輸入數(shù)據(jù)或所述輸出數(shù)據(jù)的所述部分的二進(jìn)制反碼的兩次出現(xiàn),所述數(shù)據(jù)部分位于每個(gè)輸入字對(duì)的所述第一和第二輸入字和所述輸出字中的相同位置,并且所述數(shù)據(jù)部分的所述二進(jìn)制反碼位于每個(gè)輸入字對(duì)的所述第一和第二輸入字和所述輸出字中的相同位置。
根據(jù)一實(shí)施例,所述導(dǎo)出運(yùn)算被配置為通過將所述第一輸入字的所述輸入數(shù)據(jù)部分的兩次出現(xiàn)之一替換為所述輸入數(shù)據(jù)部分的所述二進(jìn)制反碼,以及通過將所述第一輸入字的所述輸入數(shù)據(jù)部分的所述二進(jìn)制反碼的兩次出現(xiàn)之一替換為所述輸入數(shù)據(jù)部分,來變換每個(gè)輸入字對(duì)的所述第一輸入字,以及被配置為向變換后的第一輸入字和所述輸入字對(duì)的所述第二輸入字應(yīng)用所述目標(biāo)運(yùn)算。
根據(jù)一實(shí)施例,所述目標(biāo)運(yùn)算包括以下運(yùn)算之一或它們的組合:異或、與、或、與非、或非、異或非、以及使用替換表的替換運(yùn)算。
根據(jù)一實(shí)施例,所述導(dǎo)出運(yùn)算被配置為通過組合每個(gè)輸入字對(duì)的所述輸入字來確定索引字,以及被配置為使用所述索引字在表中選擇所述輸出字。
根據(jù)一實(shí)施例,所述輸入數(shù)據(jù)之一是機(jī)密數(shù)據(jù),并且所述輸入數(shù)據(jù)中的另一者是要由密碼運(yùn)算使用所述機(jī)密數(shù)據(jù)來處理的數(shù)據(jù)。
根據(jù)一實(shí)施例,所述目標(biāo)運(yùn)算是實(shí)現(xiàn)des或aes算法的運(yùn)算或運(yùn)算組合。
某些實(shí)施例還可以涉及一種電路,其被配置為實(shí)現(xiàn)上面定義的方法并包括處理器。
根據(jù)一實(shí)施例,所述電路包括協(xié)處理器。
某些實(shí)施例還可以涉及一種設(shè)備,其包括如上定義并且被布置在介質(zhì)上的電路。
某些實(shí)施例還可以涉及一種計(jì)算機(jī)程序產(chǎn)品,其可直接加載到計(jì)算機(jī)的內(nèi)部存儲(chǔ)器中并包括代碼部分,當(dāng)由計(jì)算機(jī)執(zhí)行時(shí),所述代碼部分配置所述計(jì)算機(jī)以實(shí)現(xiàn)上面定義的方法的步驟。
附圖說明
下面將結(jié)合但不限于附圖來描述僅為了例示目的而提供的本發(fā)明的實(shí)施例的一些實(shí)例,其中:
圖1示意性地表示安全電路的常規(guī)架構(gòu);
圖2示意性地表示集成電路測試系統(tǒng)的一個(gè)實(shí)例;
圖3表示在由安全電路執(zhí)行加密運(yùn)算期間獲取的信號(hào)的蹤跡;
圖4表示根據(jù)一個(gè)實(shí)施例的用于測試電路的方法的步驟;
圖5以圖的形式表示了滿射函數(shù)的一個(gè)實(shí)例;
圖6示意性地表示根據(jù)一個(gè)實(shí)施例構(gòu)建的用于執(zhí)行統(tǒng)計(jì)處理的表;
圖7表示根據(jù)另一實(shí)施例的用于測試電路的方法的步驟;
圖8和9表示根據(jù)各種實(shí)施例的用于對(duì)通過測試方法獲得的值集進(jìn)行統(tǒng)計(jì)分析的方法的步驟;
圖10和11以曲線的形式表示由圖8和9的分析方法提供的結(jié)果表;
圖12和13示出了保護(hù)數(shù)據(jù)的第一模式和涉及根據(jù)該第一保護(hù)模式保護(hù)的數(shù)據(jù)的運(yùn)算;
圖14和15示出了保護(hù)數(shù)據(jù)的第二模式和涉及根據(jù)該第二保護(hù)模式保護(hù)的數(shù)據(jù)的運(yùn)算;
圖16和17示出了保護(hù)數(shù)據(jù)的其它模式以及涉及根據(jù)該第三保護(hù)模式保護(hù)的數(shù)據(jù)的運(yùn)算;
圖18示意性地表示根據(jù)一個(gè)實(shí)施例的執(zhí)行被修改為處理受保護(hù)數(shù)據(jù)的運(yùn)算的電路;
圖19示意性地表示根據(jù)一個(gè)實(shí)施例的用于計(jì)算修改后運(yùn)算的索引的計(jì)算電路;
圖20和21表示根據(jù)要執(zhí)行的運(yùn)算的圖18中的電路的表的內(nèi)容實(shí)例;
圖22示意性地表示根據(jù)另一實(shí)施例的用于計(jì)算修改后運(yùn)算的索引的計(jì)算電路;
圖23和24表示根據(jù)其它實(shí)施例的圖18中的電路的表的內(nèi)容實(shí)例;
圖25表示根據(jù)一個(gè)實(shí)施例的安全電路。
具體實(shí)施方式
作為一個(gè)實(shí)例,圖1表示安全集成電路ct,該集成電路例如布置在諸如塑料卡或任何其它介質(zhì)的便攜式介質(zhì)hd上,或者布置在諸如移動(dòng)終端、智能電話、iot設(shè)備等終端中。所述集成電路包括微處理器prc、輸入/輸出電路ioc,通過數(shù)據(jù)和地址總線耦合到微處理器的存儲(chǔ)器m1、m2、m3以及可選地包括加密計(jì)算協(xié)處理器cp1或算術(shù)加速器,以及隨機(jī)數(shù)發(fā)生器rgn。存儲(chǔ)器m1是包含易失性應(yīng)用數(shù)據(jù)的ram型(“隨機(jī)存取存儲(chǔ)器”)存儲(chǔ)器。存儲(chǔ)器m2是包含非易失性數(shù)據(jù)和應(yīng)用程序的非易失性存儲(chǔ)器,例如eeprom或閃存。存儲(chǔ)器m3是包含微處理器的操作系統(tǒng)的只讀存儲(chǔ)器(或rom存儲(chǔ)器)。
通信接口電路ioc可以是例如根據(jù)iso/iec7816標(biāo)準(zhǔn)的接觸型電路,例如根據(jù)iso/iec14443a/b或iso/iec13693標(biāo)準(zhǔn)的具有感應(yīng)耦合的非接觸型電路,借助電耦合的非接觸型電路(uhf接口電路),或同時(shí)為接觸型和非接觸型電路。接口電路ioc還可以通過特定接口耦合到諸如nfc(近場通信)控制器的另一電路,或者諸如移動(dòng)終端或連接對(duì)象的終端的主電路。
在某些實(shí)施例中,集成電路ct可以被配置為通過加密功能執(zhí)行對(duì)發(fā)送給它的消息進(jìn)行加密、解密或簽名的操作。該加密功能可以由電路ct的處理器prc執(zhí)行,或者部分地或完全地由處理器prc的協(xié)處理器cp1執(zhí)行。
圖2表示根據(jù)一個(gè)實(shí)施例的用于實(shí)現(xiàn)測試方法的集成電路測試系統(tǒng)的一個(gè)實(shí)例。例如假定測試系統(tǒng)被配置為測試圖1中的集成電路ct。
圖2的測試系統(tǒng)包括耦合到諸如數(shù)字示波器的測量設(shè)備md的測量探頭pb,以獲取與電路的活動(dòng)相關(guān)的蹤跡,諸如電流消耗或電磁信號(hào)變化的蹤跡,以及包括諸如個(gè)人計(jì)算機(jī)pc的計(jì)算部件。計(jì)算機(jī)pc耦合到測量設(shè)備并且實(shí)現(xiàn)測試程序。該測試程序具體地包括通信接口、用于與集成電路通信并用于向集成電路發(fā)送消息的程序、信號(hào)處理程序,以及用于實(shí)現(xiàn)根據(jù)本發(fā)明的方法的計(jì)算步驟的程序。在集成電路是非接觸式電路的情況下,通信接口可以包括非接觸式讀卡器。
探頭pb可以是電流探頭(例如放置在集成電路的電源端子vcc上的電阻器)或者通過信號(hào)放大器amp耦合到測量設(shè)備的電磁探頭?;蛘?,電流探頭可以與電磁探頭組合。電磁輻射的研究實(shí)際表明,工作中由電路發(fā)射的電磁場提供關(guān)于集成電路中的位開關(guān)的信息,就像消耗的電流的測量一樣。電磁探頭的優(yōu)點(diǎn)是它可以放置其操作需要分析電路部分附近(例如靠近微處理器prc的核心或密碼計(jì)算協(xié)處理器cp1的核心)。
此外,在非接觸式集成電路的情況下,電流探頭可以用電感探頭代替,電感探頭測量集成電路對(duì)讀取器發(fā)射的磁場的吸收。這種電感探頭(例如天線線圈)本身能夠與放置在要研究的電路區(qū)域附近的電磁場探頭組合。
因此,在本申請(qǐng)中,為了簡化語言而使用的短語“電流消耗”指任何可測量的物理量,其隨時(shí)間的變化表示集成電路內(nèi)部或所研究的集成電路部分內(nèi)部的二進(jìn)制數(shù)據(jù)的切換,該物理量能夠在集成電路的端子處或在所研究的集成電路部分附近被測量。此外,以高得足以收集感興趣的數(shù)據(jù)周期內(nèi)的多個(gè)點(diǎn)的采樣頻率對(duì)物理量進(jìn)行采樣,實(shí)際上形成大量蹤跡,其中每個(gè)蹤跡包含10到數(shù)十萬個(gè)點(diǎn),但是也可以考慮在每個(gè)蹤跡中收集幾百萬個(gè)值或甚至更多值。
該測試還可以針對(duì)軟件程序或應(yīng)用。在這種情況下,軟件程序可以由測試系統(tǒng)直接執(zhí)行或由測試系統(tǒng)所執(zhí)行的仿真程序執(zhí)行。因此,所分析的蹤跡例如可以是當(dāng)訪問存儲(chǔ)器時(shí)被發(fā)送到存儲(chǔ)器的一系列值,或在電路的寄存器中處理的數(shù)據(jù),甚至是被發(fā)送到電路的通信接口的數(shù)據(jù),這些發(fā)送由受測試的軟件程序控制。
測試方法
所述測試方法的某些實(shí)施例基于對(duì)信號(hào)或數(shù)字值的隨時(shí)間變化的蹤跡的詳細(xì)觀察,這些蹤跡表示在受測試電路執(zhí)行被應(yīng)用于待發(fā)現(xiàn)的數(shù)據(jù)(下文稱為“機(jī)密數(shù)據(jù)”)的運(yùn)算時(shí)所述電路的操作。
圖3表示可以由測試系統(tǒng)獲取的一段時(shí)間上的值的蹤跡c0、c1、...cix。這些蹤跡中的每一者已經(jīng)通過使受測試的電路或軟件程序執(zhí)行運(yùn)算而獲得。對(duì)應(yīng)于蹤跡c0、c1、...cix的運(yùn)算通常都是不同的。這些運(yùn)算不同例如是因?yàn)樗鼈兩婕皩⑼缓瘮?shù)應(yīng)用于不同的已知輸入數(shù)據(jù),例如要加密、解密或簽名的消息或要檢查的簽名,或要計(jì)算的hmac(密鑰-散列消息認(rèn)證碼)?;蛘?,已知數(shù)據(jù)可以是函數(shù)的輸出數(shù)據(jù)、或該函數(shù)的輸入和輸出數(shù)據(jù)的一部分,而非其輸入數(shù)據(jù)。
所述函數(shù)可以是應(yīng)用于相同機(jī)密數(shù)據(jù)sd和輸入數(shù)據(jù)m的任何函數(shù),諸如對(duì)稱或不對(duì)稱加密或解密運(yùn)算、或甚至簽名運(yùn)算、或者僅僅是與機(jī)密數(shù)據(jù)的模乘或非模乘(m×sd)、與機(jī)密數(shù)據(jù)的xor邏輯函數(shù)(異或)(mxorsd)、模冪函數(shù)(機(jī)密數(shù)據(jù)被用作指數(shù)(msdmodn,n是已知的))、模簡化函數(shù)(機(jī)密數(shù)據(jù)被用作模數(shù)(mmodsd))。所述函數(shù)的另一實(shí)例涉及使用替換表(sbox[mxorsd],sbox是替換表)來處理xor運(yùn)算的結(jié)果,如在des和aes加密算法的情況下。更一般地,該函數(shù)必須能夠基于機(jī)密數(shù)據(jù)的一部分和輸入數(shù)據(jù)來計(jì)算由運(yùn)算產(chǎn)生的值的一部分。
在圖3的實(shí)例中,蹤跡c0、c1、ci、cix分別對(duì)應(yīng)于輸入(或輸出)數(shù)據(jù)m[0]、m[1]、...m[i]、...m[ix]。每個(gè)蹤跡ci可以由從在同一受測試電路上測量的同一信號(hào)獲取的樣本形成,或者可以包括來自當(dāng)受測試電路操縱數(shù)據(jù)m[i]時(shí)捕獲的不同信號(hào)的樣本。
圖4表示步驟s1到s19,這些步驟處理在執(zhí)行被應(yīng)用于待發(fā)現(xiàn)的機(jī)密數(shù)據(jù)和被應(yīng)用于也已知的輸入數(shù)據(jù)m[0]...m[ix]的已知加密運(yùn)算oprk期間由測試系統(tǒng)收集的值。根據(jù)一個(gè)實(shí)施例,該測試的目的是例如判定機(jī)密數(shù)據(jù)的值是否泄漏到形成圖3的蹤跡的所收集的值中。處理單元pc首先執(zhí)行步驟s1到s8。
在步驟s1,測試系統(tǒng)的處理單元pc將輸入數(shù)據(jù)m[0]...m[ix]上的循環(huán)的索引i以及表ch設(shè)定為0。在步驟s2,處理單元pc通過要測試的電路mct或軟件程序激活運(yùn)算oprk的執(zhí)行,該運(yùn)算接收數(shù)據(jù)m[i],機(jī)密數(shù)據(jù)被提供給電路mct或軟件程序執(zhí)行的運(yùn)算。在步驟s3,處理單元pc收集構(gòu)成蹤跡ci的值。在步驟s4,選擇蹤跡ci的值的一部分eci,只有該部分在以下處理步驟(圖3)中被處理。在圖4的實(shí)例中,為了簡單起見,該部分由蹤跡ci的與索引k和kx對(duì)應(yīng)的值來界定。實(shí)際上,索引k和kx可以從一個(gè)蹤跡ci變化到下一個(gè)蹤跡ci。此外,與現(xiàn)有技術(shù)的側(cè)信道分析相比,每個(gè)蹤跡中以此方式選定的值不一定是連續(xù)的,并且每個(gè)部分eci中的值的數(shù)量在一個(gè)蹤跡ci與下一個(gè)蹤跡之間可能是不同的。因此,例如可以選擇從每個(gè)蹤跡中僅提取最大或最小局部值。還應(yīng)注意,所提取部分eci可以是整個(gè)蹤跡ci。在下面的處理中,假設(shè)以此方式提取的數(shù)據(jù)包含一條關(guān)于被搜索的機(jī)密數(shù)據(jù)的信息。
在步驟s5,處理單元pc將循環(huán)索引j以及表ht設(shè)定為0。在步驟s6,處理單元pc對(duì)選定蹤跡部分eci的索引j的值eci[j]應(yīng)用滿射函數(shù)f1,并且使表ht中的值遞增一(1),該值由等于函數(shù)f1提供的結(jié)果的索引來指定。在步驟s7,索引j遞增一(1)。在步驟s8,將索引j與其最大值進(jìn)行比較,以判定是否已經(jīng)處理了集eci中的全部值。一旦處理了集eci中的全部值,處理單元pc就執(zhí)行步驟s9到s14,否則再次執(zhí)行步驟s6到s8。以這種方式,加載到表ht的集eci中的值具有指定由函數(shù)f1返回的每個(gè)可能值的出現(xiàn)次數(shù)的直方圖形式,以使得與集eci中的值相關(guān)的時(shí)間特征不包括在表ht中:表ht的內(nèi)容使得不能確定集合中的值被收集的順序。圖5表示采取圖的形式的使用函數(shù)f1計(jì)算的值(在x軸上)的出現(xiàn)次數(shù)(在y軸上)的表ht的一個(gè)實(shí)例。在圖5的實(shí)例中,函數(shù)f1返回根據(jù)8位編碼值計(jì)算的漢明權(quán)重。
在步驟s9,處理單元pc將索引g設(shè)定為0。在步驟s10,處理單元pc對(duì)數(shù)據(jù)m[i]和待確定的機(jī)密數(shù)據(jù)sd的一部分(被設(shè)定為等于索引g)應(yīng)用運(yùn)算opr。運(yùn)算opr(m,g)假定提供在步驟s2執(zhí)行的運(yùn)算oprk(m)(=opr(m,sd))的結(jié)果的一部分。由運(yùn)算opr提供的結(jié)果被提供值vl的滿射函數(shù)f2處理。在步驟s11,處理單元pc將索引l設(shè)定為0。在步驟s12,處理單元pc在由索引g、vl和l指定的位置處將存儲(chǔ)在三維表ch中的值遞增表ht中對(duì)應(yīng)于數(shù)據(jù)m[i]的索引l處的值ht[1]。圖6表示表ch的一個(gè)實(shí)例,其中由索引g和vl指定的每個(gè)位置ch[g,vl]包含根據(jù)在步驟s11獲得的值vl組合若干表ht而獲得的表。在步驟s13,索引l遞增一(1)。在步驟s14,考慮到由函數(shù)f1提供的可能不同值的數(shù)量,將索引l與其最大值lx進(jìn)行比較。如果索引l小于或等于其最大值lx,則再次執(zhí)行步驟s12到s14,否則執(zhí)行步驟s15和s16。
在步驟s15,處理單元pc使索引g遞增一(1)。在步驟s16,考慮到所考慮的機(jī)密數(shù)據(jù)部分的可能不同值的數(shù)量,處理單元pc將索引g與其最大值gx進(jìn)行比較。如果索引g小于或等于最大值gx,則執(zhí)行從步驟s10到s16的新迭代,否則執(zhí)行步驟s17和s18。在步驟s17,處理單元pc使索引i遞增一(1)以處理另一蹤跡ci。在步驟s18,處理單元pc將索引i與其最大值ix(對(duì)應(yīng)于所生成的蹤跡ci的數(shù)量)進(jìn)行比較。如果索引i小于或等于最大值ix,則再次執(zhí)行步驟s2到s18,否則執(zhí)行步驟s19。在步驟s19,包含在位置[g,vl]處的表ch中的累積總和的每個(gè)表包含以下值:
在上述總和中要考慮的數(shù)據(jù)m[i]使得f2(opr(m[i],g))=vl。
在步驟s19,處理單元pc對(duì)表ch執(zhí)行統(tǒng)計(jì)分析,旨在判定索引g的值是否對(duì)應(yīng)于要搜索的機(jī)密數(shù)據(jù)部分。為此,考慮從機(jī)密數(shù)據(jù)的泄漏獲得的信息已經(jīng)累積在表ch中的行g(shù)的位置中,而獨(dú)立于機(jī)密數(shù)據(jù)的信息被隨機(jī)地或均勻地分布在表ch中。因此,如果表ch的索引g的行包含比該表的其余部分更高的值,則表ch中的該行的索引g的值對(duì)應(yīng)于要搜索的機(jī)密數(shù)據(jù)sd的該部分的值。在這種情況下,能夠認(rèn)為機(jī)密數(shù)據(jù)sd已經(jīng)泄漏到所收集的形成蹤跡ci的數(shù)據(jù)中。
可以選擇函數(shù)f1和f2以使其對(duì)應(yīng)于要測試的電路或軟件程序的泄漏模式。因此,函數(shù)f1和f2可以彼此相同或不同,并且可以被選擇以最大化發(fā)現(xiàn)由電路操縱的機(jī)密數(shù)據(jù)的概率。例如,函數(shù)f1和f2可以是以下函數(shù)之一:
-恒等函數(shù),
-這樣的函數(shù)(例如,形式為f(x)=a·x+b):其結(jié)果值可以被簡化為對(duì)應(yīng)于漢明權(quán)重的值,例如當(dāng)x在8位上被編碼時(shí)介于值0與8之間,
-這樣的函數(shù):其計(jì)算在該函數(shù)的輸入處提供的值的漢明權(quán)重,例如二進(jìn)制編碼值的1處的位數(shù),或者
-這樣的函數(shù):其計(jì)算與另一值的漢明距離,例如這兩個(gè)值中的1處的位數(shù)之間的差。
應(yīng)當(dāng)注意,函數(shù)f1和f2的選擇可以影響要執(zhí)行以確定所考慮的機(jī)密數(shù)據(jù)部分的表ch的統(tǒng)計(jì)處理的復(fù)雜性,以及確定要搜索的機(jī)密數(shù)據(jù)部分的值的統(tǒng)計(jì)處理的成功性。
通過執(zhí)行步驟s1到s19搜索的機(jī)密數(shù)據(jù)部分例如可以在8或16位上定義。在8位的情況下,索引g被連續(xù)地分配給0和255(或1和256=28)之間的全部值。應(yīng)當(dāng)注意,測試g的值的順序?qū)τ跍y試的結(jié)果而言不重要。要搜索的機(jī)密數(shù)據(jù)部分也可以在諸如16、32或64位的較寬的字上定義。
機(jī)密數(shù)據(jù)sd的另一部分可以通過使用先前確定的機(jī)密數(shù)據(jù)部分的值并通過將機(jī)密數(shù)據(jù)的另一部分強(qiáng)制到索引g的不同可能值來執(zhí)行步驟s9到s19而確定。為此,能夠在步驟s4提取蹤跡ci的相同部分eci或這些蹤跡的其它部分。
應(yīng)當(dāng)注意,在執(zhí)行圖4中的其它步驟之前,可能已經(jīng)收集了形成蹤跡ci的值集(步驟s2和s3)。另外,在執(zhí)行步驟s9到s19之前,可能已經(jīng)針對(duì)每個(gè)蹤跡ci構(gòu)成表ht。
應(yīng)用于機(jī)密數(shù)據(jù)sd和輸入數(shù)據(jù)m[i]的運(yùn)算opr/oprk可以是以下運(yùn)算之一或它們的組合:
-對(duì)稱或不對(duì)稱加密或解密運(yùn)算,其中機(jī)密數(shù)據(jù)sd是加密或解密密鑰,
-使用機(jī)密數(shù)據(jù)sd的簽名運(yùn)算,
-與機(jī)密數(shù)據(jù)的模乘或非模乘(m[i]×sd),
-與機(jī)密數(shù)據(jù)的異或邏輯運(yùn)算(異或)(m[i]xorsd),
-模冪運(yùn)算,其中機(jī)密數(shù)據(jù)sd被用作指數(shù)(m[i]sdmodn,n是已知的),
-模簡化運(yùn)算,其中機(jī)密數(shù)據(jù)sd被用作模數(shù)(m[i]modsd),
-采用使用輸入數(shù)據(jù)在替換表中選擇的值的替換運(yùn)算(sbox[m[i]],sbox位于替換表中),以及
-組合了以下兩種運(yùn)算的運(yùn)算:即,應(yīng)用于機(jī)密數(shù)據(jù)的邏輯異或運(yùn)算,和采用使用異或運(yùn)算的結(jié)果在替換表中選擇的值替換邏輯運(yùn)算的結(jié)果的替換運(yùn)算(sbox[m[i]xorsd])。
更一般地,該運(yùn)算必須使得能夠僅基于機(jī)密數(shù)據(jù)的一部分和輸入數(shù)據(jù)來計(jì)算運(yùn)算的最終值的一部分。
為了突顯與有關(guān)機(jī)密數(shù)據(jù)的信息對(duì)應(yīng)的累積值,可以將所有表ht的內(nèi)容彼此相加,以獲得由函數(shù)f1返回的每個(gè)可能值的累積出現(xiàn)次數(shù)表。從表ch[g,vl]的位置中累積的所有表中減去該累積總和表的值。因此,可以根據(jù)圖7所示的順序來修改圖4中的步驟序列。圖7所示的步驟包括上述步驟s9到s19以及附加的步驟s20、s21和s22。在步驟s9之前執(zhí)行的步驟s20中,索引i、一維表mht和二維表cpt被設(shè)定為0。在步驟s9,二維表ht[0..ix,1]之前已經(jīng)填充了包含針對(duì)所有蹤跡ci在步驟s6生成的所有表。將步驟s21插入由索引l控制的循環(huán)(在步驟s12和s14之間),由此可以例如在步驟s12之后選擇由函數(shù)f1提供的值中的一個(gè)。在步驟s21,處理單元pc將每個(gè)值ht[i,l]累積在由索引l指定的位置處的累積總和表mht中。以這種方式,在處理結(jié)束時(shí),表mht將包含針對(duì)每個(gè)蹤跡ci獲得的索引i的全部值ht[i,l]的和。在由索引i控制的循環(huán)的每次迭代時(shí)執(zhí)行一次步驟s22,從而例如可以在步驟s14之后選擇蹤跡ci中的一個(gè)。步驟s22使能對(duì)累積在表ch的每個(gè)位置ch[g,vl]中的表ht[i,l]的數(shù)量計(jì)數(shù)。該計(jì)數(shù)的結(jié)果被存儲(chǔ)在表cpt中。
圖8表示為了嘗試確定要搜索的機(jī)密數(shù)據(jù)sd的一部分的值而執(zhí)行的表ch的統(tǒng)計(jì)處理的一個(gè)實(shí)例的步驟s31到s43。連續(xù)執(zhí)行步驟s31到s37。在步驟s31,將索引vl設(shè)定為0,并且將表tt的所有位置設(shè)定為1。在步驟s32,將索引g和表it的所有位置設(shè)定為0。在步驟s33,將索引l被設(shè)定為0。在步驟s34,變量t接收由索引g、vl和l選擇的包含在表ch中的值ch[g,vl,l],該值被除以位于表cpt中的位置cpt[g,vl]處的計(jì)數(shù)值。在步驟s35,位于表it中的位置g處的值it[g]按照變量t的值與被除以蹤跡ci的總數(shù)ix的、由索引l指定的存儲(chǔ)在表mht中的值mht[1]之間的差的平方遞增。在步驟s36,索引l遞增一(1)。在步驟s37,將索引l與其最大值lx進(jìn)行比較。如果索引l已經(jīng)達(dá)到其最大值1x,則執(zhí)行步驟s38到s40,否則執(zhí)行從步驟s34開始的新迭代。
在步驟s38,用在步驟s35到s37計(jì)算的值it[g]乘以表tt中由索引g指定的值tt[g]來更新值tt[g],執(zhí)行1x次。在步驟s39,索引g遞增一(1)。在步驟s40,將索引g與其最大值gx進(jìn)行比較。如果索引g大于其最大值gx,則執(zhí)行步驟s41和s42,否則執(zhí)行從步驟s33開始的新迭代。在步驟s41,索引vl遞增一(1)。在步驟s42,將索引vl與其最大值vlx進(jìn)行比較。如果索引vl大于其最大值vlx,則執(zhí)行步驟s43,否則執(zhí)行從步驟s32開始的新迭代。在步驟s43,作為統(tǒng)計(jì)分析的結(jié)果返回表tt。
因此,在包括步驟s32到s42的處理循環(huán)的最后一次迭代時(shí),表it和tt包含以下值:
其中
其中運(yùn)算符“==”表示當(dāng)相等為真時(shí)等于1的相等測試,并且當(dāng)相等為假時(shí),相等測試為0,表it在步驟s32被設(shè)定為0,并且在步驟s35針對(duì)索引vl的每個(gè)新值加載表it。
因此,cpt[g,vl]表示條件(f2(opr(m[i],g))==vl)為真的次數(shù)。如果在執(zhí)行運(yùn)算oprk時(shí)機(jī)密數(shù)據(jù)sd被泄漏,則表tt的一個(gè)位置包含比該表中存儲(chǔ)的其它值高得多的值。結(jié)果是要搜索的機(jī)密數(shù)據(jù)sd的所述部分等于表tt中的最高值的索引g。
應(yīng)當(dāng)注意,在對(duì)應(yīng)于等式(3)的步驟s38,可以加上表it的值而不是相乘。乘法運(yùn)算的實(shí)現(xiàn)只是允許增大表tt的各值之間的差,因此更好地突顯對(duì)應(yīng)于要搜索的機(jī)密數(shù)據(jù)部分的最高值。還可以考慮將對(duì)數(shù)函數(shù)應(yīng)用于表it的值,并且對(duì)在表tt中所獲得的對(duì)數(shù)值執(zhí)行加法累積。當(dāng)表it的值相加時(shí),它們能夠按照以下方式被加權(quán):
圖9表示為了嘗試確定要搜索的機(jī)密數(shù)據(jù)sd的一部分的值而執(zhí)行的表ch的統(tǒng)計(jì)處理的另一實(shí)例的步驟s51到s67。該處理基于香農(nóng)熵函數(shù)。連續(xù)執(zhí)行步驟s51到s56。在步驟s51,將索引g設(shè)定為0,并且將表tt的所有位置設(shè)定為0。在步驟s52,將索引vl設(shè)定為0。在步驟s53,將索引l和變量sxy設(shè)定為0。在步驟s54,使變量sxy按照由索引g、vl和l指定的表ch中選擇的值ch[g,vl,l]遞增。在步驟s55,索引l遞增一(1)。在步驟s56,將索引l與其最大值lx進(jìn)行比較。如果索引l已經(jīng)達(dá)到其最大值lx,則執(zhí)行步驟s57到s61,否則執(zhí)行從步驟s54到步驟s56的新迭代。在步驟s57,將索引l和變量pxy設(shè)定為0。在步驟s58,變量vxy接收索引g、vl和l在表ch中選擇的值ch[g,vl,l],該值被除以通過步驟s54到s56的迭代計(jì)算的變量syx。在步驟s59,變量pxy按照變量vxy與變量vxy的對(duì)數(shù)(例如,以2為底數(shù))的乘積遞增。在步驟s60,索引l遞增一(1)。在步驟s61,將索引l與其最大值lx進(jìn)行比較。如果索引l已經(jīng)達(dá)到其最大值lx,則執(zhí)行步驟s62到s64,否則執(zhí)行從步驟s58到步驟s61的新迭代。
在步驟s62,通過從由表tt中的索引g指定的值tt[g]中減去被除以蹤跡ci的數(shù)量ix的值cpt[g,vl]與變量pxy的乘積來更新值tt[g],值cpt[g,vl]由在步驟s22填充的表cpt中的索引g和vl指定。在步驟s63,索引vl遞增一(1)。在步驟s64,將索引vl與其最大值vlx進(jìn)行比較。如果索引vl大于其最大值vlx,則執(zhí)行步驟s65和s66,否則執(zhí)行從步驟s53開始的新迭代。在步驟s65,索引g遞增一(1)。在步驟s66,將索引g與其最大值gx進(jìn)行比較。如果索引g大于其最大值gx,則執(zhí)行步驟s67,否則執(zhí)行從步驟s52開始的新迭代。在步驟s67,作為統(tǒng)計(jì)分析的結(jié)果,返回表tt。
因此,在執(zhí)行最后一次迭代時(shí),在步驟s65之后,表tt包含以下值:
其中針對(duì)索引g和vl的每個(gè)值計(jì)算
圖10和11以曲線cc1、cc2的形式表示作為索引g的函數(shù)的表tt的內(nèi)容的一個(gè)實(shí)例。曲線cc1已經(jīng)通過執(zhí)行圖8中的步驟獲得,曲線cc2已經(jīng)通過執(zhí)行圖9中的步驟獲得。在圖10和11的實(shí)例中,索引g具有一個(gè)字節(jié)的長度(從而從0變化到255),并且曲線cc1和cc2已經(jīng)通過數(shù)量達(dá)到500,000的大量蹤跡ci獲得。與表tt中包含的其它值相比,曲線cc1和cc2在值g=168處具有明顯的峰值。曲線cc1中的峰值比表tt的其它值約大三十倍。在曲線cc2中,峰值比表tt的其它值大三倍。
與根據(jù)本發(fā)明的測試方法相關(guān)的常規(guī)應(yīng)對(duì)措施的有效性
為使諸如集成電路的電路能夠成功地通過已知的資格或認(rèn)證程序,這些電路的設(shè)計(jì)者提供了涉及引入時(shí)間變量的最常規(guī)的應(yīng)對(duì)措施。這種安排能夠通過使為電路定速的時(shí)鐘周期的持續(xù)時(shí)間隨機(jī)改變,或者通過在隨機(jī)選擇的時(shí)間引入虛擬處理周期或運(yùn)算來做出。表ht中的值的計(jì)算允許從所分析的值中移除時(shí)間方面,并且避免必須同步所分析的值的不同蹤跡。如果關(guān)于要搜索的機(jī)密數(shù)據(jù)的信息在所分析的數(shù)據(jù)中,則先前描述的測試方法使能確定所有或部分機(jī)密數(shù)據(jù)。
適當(dāng)?shù)膽?yīng)對(duì)措施
某些實(shí)施例涉及使得電路能夠在包括前述測試方法的資格或認(rèn)證測試期間被使用的應(yīng)對(duì)措施手段。
這里提出保護(hù)加密運(yùn)算免受由如前所述的測試方法實(shí)現(xiàn)的分析。在此上下文中,所述運(yùn)算接收一個(gè)或多個(gè)輸入數(shù)據(jù),并且根據(jù)輸入數(shù)據(jù)的值提供輸出數(shù)據(jù)。根據(jù)一個(gè)實(shí)施例,應(yīng)對(duì)措施包括以包含一個(gè)或多個(gè)字的格式表示敏感數(shù)據(jù),每個(gè)字包括該數(shù)據(jù)的一部分和該部分的二進(jìn)制反碼,所考慮的部分可能包括整個(gè)數(shù)據(jù)。包含數(shù)據(jù)一部分的每個(gè)字可以包括能夠被設(shè)定為隨機(jī)值的附加位。此外,修改運(yùn)算以便考慮運(yùn)算的輸入數(shù)據(jù)的格式,并提供與輸入數(shù)據(jù)具有相同格式或類似格式的輸出數(shù)據(jù)。應(yīng)當(dāng)注意,運(yùn)算的輸入數(shù)據(jù)可以具有不同的格式,只要運(yùn)算適于采用這些不同的格式即可。
由于要保護(hù)的數(shù)據(jù)以字的形式表示,每個(gè)字包括數(shù)據(jù)的一部分和該部分的二進(jìn)制反碼,所以表示該數(shù)據(jù)的每個(gè)字的漢明權(quán)重不取決于字中的數(shù)據(jù)或數(shù)據(jù)一部分的值。因此,如果電路的泄漏模式對(duì)應(yīng)于漢明權(quán)重,則不可能通過統(tǒng)計(jì)分析找到數(shù)據(jù)或數(shù)據(jù)一部分的值。
圖12表示可以是機(jī)密數(shù)據(jù)的數(shù)據(jù)m和/或可能屬于加密計(jì)算的運(yùn)算的輸入數(shù)據(jù)m。在圖12的實(shí)例中,數(shù)據(jù)m采取由八個(gè)位b0至b7組成的字節(jié)的形式。根據(jù)一個(gè)實(shí)施例,數(shù)據(jù)m以例如具有8個(gè)位的8個(gè)字m0到m7的形式表示,每個(gè)字包括數(shù)據(jù)m、sd的相應(yīng)位b0-b7和該位的二進(jìn)制反碼。因此,每個(gè)字mj包括位bj和
其中位bj處于第一列,位
圖13表示將輸入數(shù)據(jù)m的位mbj與機(jī)密數(shù)據(jù)sd的位sdbj相組合并提供輸出數(shù)據(jù)rd的位rdbj的運(yùn)算opr,其中j對(duì)應(yīng)于在輸入數(shù)據(jù)m、sd中處理的位bj的列。根據(jù)圖12所示的實(shí)例,位mbj和sdbj分別被插入字mmj和sdmj。因此,字mmj包括位mbj及其二進(jìn)制反碼
根據(jù)一個(gè)實(shí)施例,應(yīng)用于輸入數(shù)據(jù)和機(jī)密數(shù)據(jù)的每個(gè)位的運(yùn)算opr被替換為在輸入處接收字mmj和sdmj并且提供輸出字rdmj的運(yùn)算opr1。運(yùn)算opr1包括對(duì)輸入字mmj的位進(jìn)行部分反碼并提供修改后的輸入字mmj'的運(yùn)算。運(yùn)算opr1將運(yùn)算opr應(yīng)用于字sdmj和mmj',并且后一運(yùn)算提供包括位rdbj及其二進(jìn)制反碼
在運(yùn)算opr是異或邏輯運(yùn)算的情況下,部分反碼運(yùn)算包括例如將輸入字mmj與掩碼msk相組合的異或邏輯運(yùn)算,后者包括位于字mmj中的位mbj的列上的0處的位,位于位
位sdbj、
圖14表示能夠是機(jī)密數(shù)據(jù)sd的數(shù)據(jù)m和/或能夠?qū)儆诩用苡?jì)算的運(yùn)算的輸入數(shù)據(jù)m。在圖14的實(shí)例中,數(shù)據(jù)m采取由位b0至b7組成的字節(jié)的形式。根據(jù)一個(gè)實(shí)施例,數(shù)據(jù)m以一個(gè)字節(jié)的8個(gè)字m10到m17的形式表示,每個(gè)字包括數(shù)據(jù)m的相應(yīng)位b0-b7的兩次出現(xiàn)以及該位的二進(jìn)制反碼的兩次出現(xiàn)。因此,每個(gè)字m1j包括位bj和
其中位bj位于字m1j中的第一和第五列,位
圖15表示將輸入數(shù)據(jù)m1的位m1bj與另一數(shù)據(jù)m2的位m2bj相組合并提供輸出數(shù)據(jù)rd的位rdbj的運(yùn)算opr。根據(jù)圖14所示的實(shí)例,位m1bj和m2bj分別插入字m1j和m2j。因此,字m1j包括位m1bj的兩次出現(xiàn)和該位的二進(jìn)制反碼
根據(jù)一個(gè)實(shí)施例,應(yīng)用于輸入數(shù)據(jù)m1、m2的每個(gè)位的運(yùn)算opr被替換為在輸入處接收字m1j和m2j并提供輸出字rm1j的運(yùn)算opr2。運(yùn)算opr2包括對(duì)輸入字m2j的位進(jìn)行部分反碼并提供修改后的輸入字m2j'的第一運(yùn)算。運(yùn)算opr2將運(yùn)算opr應(yīng)用于字m1j和m2j',從而提供包括位r1bj的兩次出現(xiàn)和該位的二進(jìn)制反碼
在運(yùn)算opr是異或邏輯運(yùn)算的情況下,第一部分反碼運(yùn)算例如包括將輸入字m2j與掩碼msk1相組合的異或邏輯運(yùn)算,后者包括位于字m2j中的位m2bj和
在圖15上可以看出,所有處理的字包括與不是反碼的相應(yīng)位一樣多的經(jīng)過反碼的輸入位m1bj、m2bj或輸出數(shù)據(jù)r1bj。還應(yīng)注意,應(yīng)用掩碼msk2的最終部分反碼運(yùn)算僅旨在將輸出字rm1j設(shè)定為與輸入字m1j,m2j相同的格式。因此,如果應(yīng)用于輸出字rm1j的下一運(yùn)算考慮中間結(jié)果字rm1j'的格式,則可以省略該部分反碼運(yùn)算。
圖16示出根據(jù)一個(gè)實(shí)施例的其中可以表示要保護(hù)的數(shù)據(jù)的另一字格式。在圖16上,機(jī)密數(shù)據(jù)sd及其二進(jìn)制反碼
圖16還表示應(yīng)用于字mm2和sd2并提供輸出字rm2的運(yùn)算opr。在圖16的實(shí)例中,此運(yùn)算是異或運(yùn)算。為使輸出字rm2的格式與機(jī)密數(shù)據(jù)sd的格式相同并且不導(dǎo)致易于被統(tǒng)計(jì)分析的泄露,能夠?qū)斎胱謒m2執(zhí)行部分反碼運(yùn)算,此運(yùn)算對(duì)包含輸入數(shù)據(jù)m的反碼
符號(hào)
圖17示出根據(jù)一個(gè)實(shí)施例的其中能夠表示要保護(hù)的數(shù)據(jù)的另一字格式。在圖17上,數(shù)據(jù)m3、m4及其相應(yīng)的二進(jìn)制反碼
圖17還表示包括要被執(zhí)行的運(yùn)算opr、被應(yīng)用于字mm3和mm4并提供輸出字rm3的運(yùn)算opr3。在圖17的實(shí)例中,此運(yùn)算對(duì)數(shù)據(jù)m3、m4執(zhí)行異或運(yùn)算。運(yùn)算opr3包括將掩碼msk3與字mm3、mm4(圖17的實(shí)例中的mm4)中的一者或另一者相組合的部分反碼運(yùn)算。該反碼運(yùn)算旨在對(duì)字mm4中的數(shù)據(jù)m4的第二次出現(xiàn)和反碼數(shù)據(jù)
還應(yīng)注意,如果以與字mm4'相同的格式在運(yùn)算opr3的輸入處提供輸入字mm4,則可能不需要第一部分反碼運(yùn)算。此外,如果使用輸出字的運(yùn)算被配置為處理具有中間結(jié)果字rm3'的格式的字,則提供輸出字rm3的最終反碼運(yùn)算可能不是必需的。
圖18表示執(zhí)行要保護(hù)的運(yùn)算的電路opr4。該電路被配置為接收以具有與先前參考圖12和14描述的格式類似的格式的字m1j、m2j的形式表示的輸入數(shù)據(jù)位。在這些圖上,輸入數(shù)據(jù)的每位以字m1-m7、m11-m17的形式表示。因此,在圖12上,這些字m0到m7(mj)中的每一者包括輸入數(shù)據(jù)的位bj的一次出現(xiàn)和該位的二進(jìn)制反碼的一次出現(xiàn)。在圖14上,這些字m11到m17(m1j)中的每一者包括輸入數(shù)據(jù)的位bj的兩次出現(xiàn)和該位的二進(jìn)制反碼的兩次出現(xiàn)。根據(jù)一個(gè)實(shí)施例,電路opr4包括用于使用輸入字m1j、m2j計(jì)算索引字idx的計(jì)算電路ixcp。電路opr4還包括根據(jù)索引字idx的值提供電路opr4的輸出字rmj的表lut。輸出字可以具有類似于輸入字的格式,或者甚至具有使用輸出字rmj的下一運(yùn)算所期望的格式。
圖19表示當(dāng)輸入字m1j、m2j具有圖12中表示的格式時(shí)的索引計(jì)算電路ixcp的一個(gè)實(shí)例。因此,字m1j和m2j中的每一者在第一列包括位m1bj、m2bj,并且在第四列包括等于該位的二進(jìn)制反碼的位
圖20和21分別表示用于執(zhí)行or和and邏輯函數(shù)的表lut的實(shí)例lut1、lut2。表lut1、lut2中的字的分布對(duì)應(yīng)于索引字
表lut、lut1、lut2中的每一者包括2n個(gè)值,n是索引字idx的位數(shù),即圖20和21的實(shí)例中的256個(gè)值。表lut1、lut2中的值也在8位上編碼。表lut1,lut2的索引字和內(nèi)容的值在圖20和21中按屬類指示,“x”表示具有任何值的位。表lut1、lut2分別再現(xiàn)or和and邏輯運(yùn)算的真值表。包含在索引字idx中的位a和b被應(yīng)用在邏輯運(yùn)算的輸入端,位c由該邏輯運(yùn)算根據(jù)位a和b的值來提供。
因此,能夠執(zhí)行組合兩個(gè)位并提供一個(gè)位的任何邏輯運(yùn)算。因此,可以執(zhí)行諸如與非(nand)、或非(nor)、異或、異或非(exclusivenor)運(yùn)算、使用替換表(sbox)的替換運(yùn)算或這些運(yùn)算的組合等其它邏輯運(yùn)算。此外,可以注意到,根據(jù)執(zhí)行nand運(yùn)算
還應(yīng)注意,應(yīng)用于位a和b以及上述等式中的運(yùn)算結(jié)果的反碼運(yùn)算(not)能夠簡單地通過用字的每位的反碼替換該位來執(zhí)行,或者能夠被省略。實(shí)際上,由于輸出字rmj包括數(shù)據(jù)位及其反碼,因此可以認(rèn)為輸出字具有另一格式,其中非反碼數(shù)據(jù)位和反碼數(shù)據(jù)位的列被反轉(zhuǎn)。
因此,可以針對(duì)數(shù)據(jù)字的所有可能格式構(gòu)建此類表lut。然而,為縮減表的大小,有利的是能夠?qū)⑤斎胱謒1j、m2j減小為與圖19中的電路ixcp執(zhí)行的相同大小的索引字。如果這些位的數(shù)量大于或等于對(duì)反碼后的數(shù)據(jù)位
圖22表示索引計(jì)算電路ixc1的另一實(shí)例,該索引計(jì)算電路適合于圖14所示的輸入字m3j、m4j和輸出字的格式,即具有數(shù)據(jù)位的兩次出現(xiàn)和該位的二進(jìn)制反碼的兩次出現(xiàn)。電路ixc1包括兩個(gè)掩碼電路and2、and3,和通過異或運(yùn)算組合這兩個(gè)掩碼電路的輸出的電路xor1。掩碼電路and3通過and邏輯運(yùn)算將輸入字m3j與掩碼msk5相組合。掩碼msk5具有位于第三和第五列上的0處的位,以將字m3j中的反碼后的位
圖23、24表示表lut的實(shí)例lut3、lut4,該表適合于由圖22中的電路ixc1提供的索引idx的格式和圖14中的字的格式。因此,索引字idx具有格式
將理解,表lut可以根據(jù)索引字idx來構(gòu)建,索引字idx不僅包括輸入數(shù)據(jù)m的一個(gè)位和機(jī)密數(shù)據(jù)sd的一個(gè)位,而且還包括輸入數(shù)據(jù)m的多個(gè)不同的位和同樣多位的機(jī)密數(shù)據(jù)sd。此外,索引字也能夠簡單地通過串接輸入字m和sd來構(gòu)建。
根據(jù)文獻(xiàn)[7]和[8],可以通過僅使用基本邏輯運(yùn)算(與、或、非、異或、異或非)來實(shí)現(xiàn)des和aes加密算法。根據(jù)一個(gè)實(shí)施例,通過將輸入數(shù)據(jù)和加密密鑰轉(zhuǎn)換為上述字表示格式之一,并且使用以參考圖13和15到24描述的方式中的一種或其它方式執(zhí)行的基本邏輯運(yùn)算來實(shí)現(xiàn)des和aes加密算法。
圖25表示根據(jù)一個(gè)實(shí)施例的布置在諸如塑料卡的便攜式介質(zhì)hd上,并且配備有應(yīng)對(duì)措施的集成電路ct1。該集成電路包括與上面結(jié)合圖1描述的集成電路ct相同的單元,并且與后者的不同之處在于:協(xié)處理器cp1被實(shí)現(xiàn)上述應(yīng)對(duì)措施中的一個(gè)和/或另一個(gè)的協(xié)處理器cp2所替代。因此,根據(jù)一個(gè)實(shí)施例,協(xié)處理器cp2被配置為以上述數(shù)據(jù)字中的表示的一種或多種格式來處理數(shù)據(jù)。輸入數(shù)據(jù)到這些格式之一的轉(zhuǎn)換以及輸出數(shù)據(jù)的轉(zhuǎn)換也可以由協(xié)處理器cp2執(zhí)行。這些轉(zhuǎn)換可以完全或部分地由處理器prc執(zhí)行。在這種情況下,處理器prc與協(xié)處理器cp2匹配,以便使用輸入和/或輸出數(shù)據(jù)的相同表示格式。
應(yīng)當(dāng)理解,協(xié)處理器的存在是可選的,并且處理器prc可以執(zhí)行根據(jù)數(shù)據(jù)表示格式將數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)字以及將數(shù)據(jù)字轉(zhuǎn)換為數(shù)據(jù)的所有操作,以及處理數(shù)據(jù)字的所有操作。
本領(lǐng)域技術(shù)人員將理解,本發(fā)明可以有各種備選實(shí)施例和各種應(yīng)用。特別地,本發(fā)明不限于包括隨機(jī)值的位的運(yùn)算輸入和/或輸出字的格式。因此,數(shù)據(jù)字的所有位可以來自運(yùn)算輸入或輸出數(shù)據(jù)。重要的是,該格式包括數(shù)據(jù)位的一次或多次出現(xiàn)以及這些位的二進(jìn)制反碼的相同出現(xiàn)次數(shù)。數(shù)據(jù)字格式可以由數(shù)據(jù)字中的輸入數(shù)據(jù)的一部分的大小、該部分及其在數(shù)據(jù)字中的反碼的相應(yīng)位置和出現(xiàn)次數(shù),以及數(shù)據(jù)字中的隨機(jī)數(shù)據(jù)來定義,前提是數(shù)據(jù)部分的大小與該部分的出現(xiàn)次數(shù)的乘積小于數(shù)據(jù)字的大小。這種格式也能夠被隨機(jī)地選擇。還可以考慮在每次執(zhí)行實(shí)現(xiàn)運(yùn)算的程序時(shí)更改該格式。
本發(fā)明還包括上述實(shí)施例的組合。因此,例如,如果數(shù)據(jù)字具有兼容格式,則可以通過運(yùn)算opr4,在單個(gè)運(yùn)算中執(zhí)行運(yùn)算opr1、opr2、opr3中的一個(gè)或另一個(gè)。
不言而喻,可以以可由處理器執(zhí)行的程序的形式產(chǎn)生上述電路。
引用的參考文獻(xiàn)
[1]作者p.c.kocher,“timingattacksonimplementationofdiffie-hellman,rsa,dss,andothersystems”,nealkoblitz編輯,advancesincryptology-crypto'96,計(jì)算機(jī)科學(xué)講義第1109卷,第104-113頁,springer,1996年。
[2]作者p.c.kocher、j.jaffe和b.jun,“”differentialpoweranalysis”,m.j.wiener編輯,advancesincryptology-crypto'99,計(jì)算機(jī)科學(xué)講義第1666卷,第388-397頁,springer,1999年。
[3]作者e.brier、c.clavier和f.olivier,“correlationpoweranalysiswithaleakagemodel”m.joye和j-j.quisquater編輯,cryptographichardwareandembeddedsystems-ches2004,計(jì)算機(jī)科學(xué)講義第3156卷,第16-29頁,springer,2004年。
[4]作者j.-j.quisquater,“electromagneticanalysis(ema):measuresandcounter-measuresforsmartcards”,smartcardprogrammingandsecurity,springerberlin/heidelberg,第2140、2001卷,第200-210頁。
[5]作者s.chari、j.r.rao和p.rohatgi,“templateattacks”,kaliskijr.、b.s.、
[6]作者b.gierlichs、l.batina、p.tuyls和b.preneel,“mutualinformationanalysis”,ches2008,lncs的第5154卷,第426-442頁,springer,2008年。
[7]作者e.biham,“afastnewdesimplementationinsoftware”,fastsoftwareencryption,計(jì)算機(jī)科學(xué)叢書第1267卷,第260-272頁,2006年。
[8]作者c.rebeiro,d.selvakumar,“bitsliceimplementationofaes”,a.s.l.devicryptologyandnetworksecurity,計(jì)算機(jī)科學(xué)叢書第4301卷,第203-212頁,2006年。
[9]作者m.agoyan、s.bouquet、j.-m.dutertre、j.fournier、j.-b.rigaud、b.robisson、a.tria,“designandcharacterizationofanaeschipembeddingcountermeasures”,智能工程信息學(xué)國際期刊,第328頁,2011年。
[10]作者m.joye、p.manet、j.-b.rigaud,“strengtheninghardwareaesimplementationagainstfaultattacks”,ietinformationsecurity,第1卷,第3條,第106-110頁,2007年。
[11]作者f.bouesse、g.sicard、m.renaudin,“pathswappingmethodtoimprovedparesistanceofquasidelayinsensitiveasynchronouscircuits”,ches2006,lncs4249,第384-398頁,2006年。