本發(fā)明涉及一種用于測試電路的方法,具體涉及被設(shè)計(jì)為處理機(jī)密數(shù)據(jù)的電路,特別涉及用于通過使用密鑰的加密算法來變換消息的電路。
本發(fā)明特別涉及實(shí)現(xiàn)密碼算法的設(shè)備,諸如安全設(shè)備(智能卡集成電路、安全元件、安全存儲卡)、移動設(shè)備(移動電話、智能手機(jī)、物聯(lián)網(wǎng))、家用和汽車設(shè)備、以及集成到計(jì)算機(jī)和其他電子和it設(shè)備(usb驅(qū)動器、電視解碼器、游戲控制臺等)的母板上的硬件加密組件等。本發(fā)明還涉及包括加密運(yùn)算的軟件,該軟件用于在安全或不安全的環(huán)境中執(zhí)行。
本發(fā)明具體涉及實(shí)現(xiàn)諸如des(數(shù)據(jù)加密標(biāo)準(zhǔn))或三重des、aes(高級加密標(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ù)千個邏輯門。這些開關(guān)在電流消耗上產(chǎn)生短暫變化,例如可以被測量的幾納秒。具體而言,cmos型集成電路包括在切換時(即,當(dāng)邏輯節(jié)點(diǎn)變?yōu)?或0時)才消耗電流的邏輯門。因此,電流消耗取決于中央單元處理的數(shù)據(jù)及其各種外圍設(shè)備(存儲器)上的數(shù)據(jù)、在數(shù)據(jù)或地址總線上流動的數(shù)據(jù)、密碼協(xié)處理器等。
此外,具體使用加密或模糊技術(shù)(諸如“白盒密碼術(shù)”技術(shù))產(chǎn)生的某些軟件程序可以以使得難以通過逆向工程確定的方式來集成機(jī)密數(shù)據(jù)。某些軟件程序還可以通過安全通信信道從外部接收機(jī)密數(shù)據(jù)。當(dāng)觀察到這些微電路的電流消耗、或它們的磁或電磁輻射、或可以在執(zhí)行加密算法的同時觀察到的其它任何信息時,這些微電路可能會受到所謂的側(cè)信道分析攻擊。此類攻擊旨在發(fā)現(xiàn)它們使用的機(jī)密數(shù)據(jù),特別是它們的加密密鑰。頻繁的側(cè)信道攻擊實(shí)施諸如spa(“單功耗分析”)、dpa(“差分功耗分析”)、cpa(“相關(guān)功耗分析”)或ema(“電磁分析”)之類的統(tǒng)計(jì)分析方法。spa分析(參考文獻(xiàn)[1])通常只需要獲取單個電流消耗蹤跡。其目的是通過觀察對應(yīng)于密碼計(jì)算的消耗蹤跡的一部分來獲得關(guān)于集成電路的活動的信息,因?yàn)楫?dāng)前蹤跡根據(jù)所執(zhí)行的運(yùn)算和所處理的數(shù)據(jù)而變化。
軟件在被電路執(zhí)行期間也可能經(jīng)歷這種側(cè)信道攻擊。
dpa(參考文獻(xiàn)[2])和cpa分析使得能夠通過獲取大量數(shù)據(jù)或測量蹤跡并通過對這些蹤跡進(jìn)行統(tǒng)計(jì)分析以查找搜索的信息來找到加密算法的密鑰。它們基于這樣的前提:即,當(dāng)寄存器中或總線上的位從0變?yōu)?時,cmos型集成電路的消耗發(fā)生變化,以及當(dāng)位保持等于0、保持等于1或從1變?yōu)?(mos晶體管的寄生電容的放電)時,其不發(fā)生變化?;蛘?,可以認(rèn)為當(dāng)位從0變?yōu)?或從1變?yōu)?時,cmos型集成電路的消耗發(fā)生變化,并且當(dāng)位保持等于0或保持等于1時,cmos型集成電路的消耗不變。該第二假設(shè)使得能夠使用常規(guī)的“漢明距離”或“漢明權(quán)重”函數(shù)來開發(fā)不需要已知集成電路的結(jié)構(gòu)可應(yīng)用的消耗模型。dpa分析涉及通過對大量消耗蹤跡的統(tǒng)計(jì)處理來放大該消耗差異,目的在于突出根據(jù)公式假設(shè)區(qū)分的兩個消耗蹤跡族之間的測量差異。
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)改變時發(fā)射電磁信號,則可以通過諸如spa、dpa和cpa分析中的一種或其它分析,像電流消耗變化信號那樣處理這些信號。此分析的一個應(yīng)用實(shí)例由jean-jacquesquisquater(參考文獻(xiàn)[4])做出。
存在其它側(cè)信道攻擊,例如“模板攻擊”(參考文獻(xiàn)[5])和“交互信息分析”(mia)(參考文獻(xiàn)[6])。所有上述攻擊都基于所有被分析的蹤跡的時間對準(zhǔn)。換言之,在給定時間(例如從命令的執(zhí)行被電路激活的時間)執(zhí)行的所有測量必須對應(yīng)于由算法處理的相同值。
為了保護(hù)此類電路及其執(zhí)行的密碼算法免受這些側(cè)信道攻擊,通常提供應(yīng)對措施。幾種普遍的應(yīng)對措施均旨在避免這種時間對準(zhǔn)。為此,這些應(yīng)對措施引入為計(jì)算電路定速的時鐘頻率的變化,或引入偽時鐘周期或偽運(yùn)算。
有時可以借助特定的專業(yè)知識以及多次嘗試來恢復(fù)這種時間對準(zhǔn),特別是使用大量要被重新對準(zhǔn)的蹤跡或應(yīng)用一些信號處理。盡管如此,仍存在以下情況:即,不能恢復(fù)這種時間對準(zhǔn),這樣,即使在蹤跡中存在機(jī)密數(shù)據(jù)泄漏,側(cè)信道測試也會失敗。
另幾種應(yīng)對措施涉及借助偽密鑰或偽消息來多次執(zhí)行加密方法。為此,提供了例如控制加密程序或協(xié)處理器的應(yīng)對措施程序,該程序以隨機(jī)的順序,通過偽密鑰多次執(zhí)行加密方法,從而使得通過正確的密鑰(即,真實(shí)的密鑰)對加密方法的執(zhí)行被“隱藏”在一組偽執(zhí)行中。通過多次執(zhí)行實(shí)現(xiàn)這種應(yīng)對措施提供了以下優(yōu)點(diǎn):即,可以通過不包括任何特定的應(yīng)對措施手段的常規(guī)協(xié)處理器來實(shí)現(xiàn)此應(yīng)對措施。
另幾種應(yīng)對措施涉及使得要保護(hù)的算法適合獨(dú)立于由電路處理的數(shù)據(jù)的實(shí)際值來呈現(xiàn)這些數(shù)據(jù)。這幾種應(yīng)對措施中的某些應(yīng)對措施被稱為“掩蔽型應(yīng)對措施”-使用隨機(jī)掩碼(二進(jìn)制數(shù)),在執(zhí)行加密方法期間,這些隨機(jī)掩碼與另一要保護(hù)的數(shù)據(jù)(例如密鑰和/或消息)組合在一起。此類應(yīng)對措施是有效的,但是需要修改算法,因此,在由專用協(xié)處理器執(zhí)行的情況下,需要專用于實(shí)現(xiàn)此應(yīng)對措施的協(xié)處理器,或者在由微電路的中央處理單元或編程協(xié)處理器執(zhí)行的情況下,需要更復(fù)雜的程序。此外,此類應(yīng)對措施易經(jīng)受所謂的“二階攻擊”,此攻擊基于對一組信號蹤跡的分析,通過組合相應(yīng)蹤跡的兩個部分來獲得每個信號蹤跡。作為一個實(shí)例,這些信號蹤跡中的每一個組合了應(yīng)持有與由待發(fā)現(xiàn)的數(shù)據(jù)值和隨機(jī)掩碼值的組合產(chǎn)生的數(shù)據(jù)相關(guān)的泄漏的信號部分、以及應(yīng)持有隨機(jī)掩碼值的泄漏的信號部分。參考文獻(xiàn)[7]公開了組合時間信號部分以獲得與待發(fā)現(xiàn)的數(shù)據(jù)值相關(guān)的信號蹤跡的不同方式。但是,由于要求組合信號部分在被組合之前需要在時間上嚴(yán)格對準(zhǔn),因此這種二階攻擊面臨困難。如果不滿足此要求,則組合后的信號蹤跡不包含能夠通過常規(guī)統(tǒng)計(jì)分析提取的有用信息,或者組合后的信號蹤跡包含有用信息,但是此信息不能通過常規(guī)統(tǒng)計(jì)分析提取。因此,二階攻擊對基于各種時間未對準(zhǔn)的應(yīng)對措施非常敏感,例如導(dǎo)致為電路定速的時鐘周期的持續(xù)時間隨機(jī)改變的應(yīng)對措施,或者在隨機(jī)選擇的時間引入偽處理周期或運(yùn)算的應(yīng)對措施。
為了檢查旨在上市的安全集成電路提供的安全級別,在電路上市之前安排資格和/或認(rèn)證測試,這些測試具體包括集成電路防側(cè)信道分析的魯棒性測試,目的是發(fā)現(xiàn)由集成電路處理的機(jī)密數(shù)據(jù)。還有一些測試可以評估軟件程序?qū)?cè)信道攻擊的抵抗力。
因此,期望提出一種用于測試電路或軟件程序?qū)ΧA側(cè)信道攻擊的抵抗力的方法,其具體能夠檢測機(jī)密數(shù)據(jù)泄漏,而不需要對電流消耗蹤跡或表示電路活動的其它任何物理或邏輯量的任何先前時間對準(zhǔn)處理。還希望此方法能夠獨(dú)立于執(zhí)行軟件程序或應(yīng)用的電路來測試軟件程序或應(yīng)用的魯棒性。
還可能期望將此測試方法集成到旨在檢查電路或由給定電路執(zhí)行的軟件對側(cè)信道分析的抵抗力以及它們在信息泄漏方面的嚴(yán)密性的工業(yè)資格和/或認(rèn)證處理中。
還可能期望提出在包括這種測試方法的資格和/或認(rèn)證過程之后,使得集成電路或軟件程序能夠被認(rèn)為能夠在產(chǎn)品中使用的應(yīng)對措施手段。
技術(shù)實(shí)現(xiàn)要素:
某些實(shí)施例涉及一種電路的測試方法,包括:獲取多個值集,每個值集包括物理量或邏輯信號的值,當(dāng)受測試電路執(zhí)行被應(yīng)用于待發(fā)現(xiàn)的相同數(shù)據(jù)的不同密碼運(yùn)算的運(yùn)算集中的運(yùn)算時,所述值集與所述電路的活動關(guān)聯(lián);選擇每個值集中的至少兩個值子集;對于每個值集和每個值子集,通過處理單元對由被應(yīng)用于該值集的子集中的值的相應(yīng)第一滿射函數(shù)變換的值的出現(xiàn)次數(shù)計(jì)數(shù);對于每個值集,形成將該值集的每個值子集的出現(xiàn)次數(shù)之一關(guān)聯(lián)在一起的n元組,通過將借助所述n元組關(guān)聯(lián)的所述出現(xiàn)次數(shù)相乘在一起來計(jì)算該值集的每個n元組的組合出現(xiàn)數(shù),以及形成包括針對該值集計(jì)算的組合出現(xiàn)次數(shù)的該值集的出現(xiàn)次數(shù)集;對于所述運(yùn)算集中的每個運(yùn)算以及待發(fā)現(xiàn)的數(shù)據(jù)的一部分的每個可能值,通過所述處理單元計(jì)算部分運(yùn)算結(jié)果;通過所述處理單元計(jì)算累積出現(xiàn)次數(shù)集,每個累積出現(xiàn)次數(shù)集是通過將對應(yīng)于所述運(yùn)算集中的運(yùn)算的出現(xiàn)次數(shù)集相加在一起而獲得的,當(dāng)被應(yīng)用于所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的可能值的相同值或等價值時,所述運(yùn)算提供具有應(yīng)用第二滿射函數(shù)所獲得的相同變換值的部分運(yùn)算結(jié)果;以及通過所述處理單元分析所述累積出現(xiàn)次數(shù)集以確定所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分,從而知道如果所述待發(fā)現(xiàn)的數(shù)據(jù)已經(jīng)泄漏到所述值集中,則在與所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的值對應(yīng)的所述累積出現(xiàn)次數(shù)集中找到所述待發(fā)現(xiàn)的數(shù)據(jù)。
根據(jù)一實(shí)施例,所述方法包括:向所述電路發(fā)送多個不同的命令,每個命令觸發(fā)由所述電路執(zhí)行被應(yīng)用于所述待發(fā)現(xiàn)的數(shù)據(jù)的所述運(yùn)算集中的運(yùn)算之一;以及在由所述電路執(zhí)行所述運(yùn)算集中的一個運(yùn)算期間,由測量設(shè)備收集所述值集中的一個值集的值。
根據(jù)一實(shí)施例,每個值集的所述子集包括相應(yīng)不同信號的測量。
根據(jù)一實(shí)施例,所述值集包括:所述電路的電流消耗的測量,和/或由所述電路發(fā)射的電磁輻射的測量,和/或所述電路周圍存在的磁場的吸收的測量,和/或在所述電路中收集的邏輯信號或數(shù)字值。
根據(jù)一實(shí)施例,所述第一和第二滿射函數(shù)中的每一者是以下函數(shù)之一:恒等函數(shù);這樣的函數(shù):其提供結(jié)果值,該結(jié)果值然后被簡化為對應(yīng)于漢明權(quán)重的值;這樣的函數(shù):其提供該函數(shù)被應(yīng)用到的值的漢明權(quán)重;或這樣的函數(shù):其提供值與該函數(shù)被應(yīng)用到的先前值之間的漢明距離。
根據(jù)一實(shí)施例,所述方法包括如果分析步驟確定所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分,則拒絕所述電路或由所述電路執(zhí)行的程序。
根據(jù)一實(shí)施例,針對所述待發(fā)現(xiàn)的數(shù)據(jù)的先前確定的部分和所述待發(fā)現(xiàn)的數(shù)據(jù)的另一部分,執(zhí)行計(jì)算所述待發(fā)現(xiàn)的數(shù)據(jù)的一部分的每個可能值的運(yùn)算結(jié)果的步驟、計(jì)算出現(xiàn)次數(shù)和的步驟、以及分析所述出現(xiàn)次數(shù)和的步驟。
根據(jù)一實(shí)施例,每個值集中的選定子集包括:該值集的連續(xù)值,和/或該值集的非連續(xù)值,和/或該值集的局部極值,和/或該值集的全部值。
根據(jù)一實(shí)施例,所述運(yùn)算集中的所述運(yùn)算包括將單個運(yùn)算應(yīng)用于所述待發(fā)現(xiàn)的數(shù)據(jù)以及應(yīng)用于輸入數(shù)據(jù)集中的輸入數(shù)據(jù),所述單個運(yùn)算包括以下運(yùn)算中的至少一者:對稱或不對稱加密或解密運(yùn)算;簽名運(yùn)算;與所述待發(fā)現(xiàn)的數(shù)據(jù)的模乘或非模乘;與所述待發(fā)現(xiàn)的數(shù)據(jù)的邏輯異或運(yùn)算;模冪運(yùn)算,所述待發(fā)現(xiàn)的數(shù)據(jù)被用作指數(shù);模簡化運(yùn)算,所述待發(fā)現(xiàn)的數(shù)據(jù)被用作模數(shù);采用使用輸入值在替換表中選擇的值的替換運(yùn)算;組合了與所述待發(fā)現(xiàn)的數(shù)據(jù)的邏輯異或運(yùn)算和替換運(yùn)算的運(yùn)算,所述替換運(yùn)算以使用所述邏輯運(yùn)算的結(jié)果在替換表中選擇的值替換所述邏輯運(yùn)算的結(jié)果。
根據(jù)一實(shí)施例,所述累積出現(xiàn)次數(shù)的分析包括:對于每個累積出現(xiàn)次數(shù),通過將該累積出現(xiàn)次數(shù)除以在該累積出現(xiàn)次數(shù)中累積的對應(yīng)數(shù)量的出現(xiàn)次數(shù)來計(jì)算正規(guī)化和;對于所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的每個可能值和變換后的部分結(jié)果的每個可能值,計(jì)算對應(yīng)于所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的該可能值和所述變換后的部分結(jié)果的該可能值的每個正規(guī)化累積出現(xiàn)次數(shù)與被除以運(yùn)算次數(shù)的所述累積出現(xiàn)次數(shù)的平均值之間的差值平方和;對于所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的每個可能值,計(jì)算與所述變換后的部分結(jié)果的所述可能值對應(yīng)的累積總差值和;以及相互比較所述累積總差值和,并且檢測所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的可能值的累積總差值和是否大于另一累積總差值和。
根據(jù)一實(shí)施例,所述出現(xiàn)次數(shù)和的分析包括:對于所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的每個可能值和變換后的部分結(jié)果的每個可能值,計(jì)算所述出現(xiàn)次數(shù)和的累積總和;對于每個累積出現(xiàn)次數(shù),通過將該累積出現(xiàn)次數(shù)除以對應(yīng)累積總和來計(jì)算正規(guī)化累積總和,并計(jì)算所述正規(guī)化累積總和與所述正規(guī)化累積總和的對數(shù)的乘積;對于所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的每個可能值和變換后的部分結(jié)果的每個可能值,計(jì)算與所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的該可能值和所述變換后的部分結(jié)果的該可能值對應(yīng)的所述乘積的和;對于所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的每個可能值,計(jì)算與所述變換后的部分結(jié)果的所述可能值對應(yīng)的累積總乘積和,每個乘積和被乘以對應(yīng)數(shù)量的出現(xiàn)次數(shù)和;以及相互比較所述累積總乘積和,并且檢測所述待發(fā)現(xiàn)的數(shù)據(jù)的所述部分的可能值的所述累積總乘積和之一是否大于另一累積總乘積和。
實(shí)施例還可以涉及一種用于測試電路的系統(tǒng),所述系統(tǒng)包括:測量設(shè)備,其被配置為獲取多個值集,每個值集包括物理量或邏輯信號的值,當(dāng)受測試電路執(zhí)行被應(yīng)用于待發(fā)現(xiàn)的相同數(shù)據(jù)的不同密碼運(yùn)算的運(yùn)算集中的運(yùn)算時,所述值集與所述電路的活動關(guān)聯(lián);以及處理單元,其被配置為實(shí)現(xiàn)先前定義的方法。
根據(jù)一實(shí)施例,所述系統(tǒng)包括測量探頭,其耦合到所述測量設(shè)備以獲取與所述電路的活動相關(guān)聯(lián)的蹤跡。
根據(jù)一實(shí)施例,所述系統(tǒng)包括仿真器,其執(zhí)行要測試的應(yīng)用。
實(shí)施例還可以涉及一種計(jì)算機(jī)程序產(chǎn)品,其可加載到計(jì)算機(jī)的內(nèi)部存儲器中并包括代碼部分,當(dāng)由計(jì)算機(jī)執(zhí)行時,所述代碼部分配置所述計(jì)算機(jī)以執(zhí)行上面定義的方法的步驟。
附圖說明
下面將結(jié)合但不限于附圖來描述僅為了例示目的而提供的本發(fā)明的實(shí)施例的一些實(shí)例,其中:
圖1示意性地表示安全電路的常規(guī)架構(gòu);
圖2示意性地表示集成電路測試系統(tǒng)的一個實(shí)例;
圖3表示在由安全電路執(zhí)行加密運(yùn)算期間獲取的信號的蹤跡;
圖4a、4b表示根據(jù)一個實(shí)施例的用于測試電路的方法的步驟;
圖5表示根據(jù)一個實(shí)施例被計(jì)算以執(zhí)行統(tǒng)計(jì)處理的直方圖;
圖6示意性地表示根據(jù)一個實(shí)施例被構(gòu)建為執(zhí)行統(tǒng)計(jì)處理的表;
圖7表示根據(jù)另一實(shí)施例的用于測試電路的方法的步驟;
圖8和9表示根據(jù)各種實(shí)施例的用于對通過測試方法獲得的值集進(jìn)行統(tǒng)計(jì)分析的方法的步驟;以及
圖10和11以曲線的形式表示由圖8和9的分析方法提供的結(jié)果表。
具體實(shí)施方式
作為一個實(shí)例,圖1表示安全集成電路ct,該集成電路例如布置在諸如塑料卡或任何其它介質(zhì)的便攜式介質(zhì)hd上,或者布置在諸如移動終端、智能電話、iot設(shè)備等終端中。所述集成電路包括微處理器prc、輸入/輸出電路ioc,通過數(shù)據(jù)和地址總線耦合到微處理器的存儲器m1、m2、m3以及可選地包括加密計(jì)算協(xié)處理器cp1或算術(shù)加速器,以及隨機(jī)數(shù)發(fā)生器rgn。存儲器m1是包含易失性應(yīng)用數(shù)據(jù)的ram型(“隨機(jī)存取存儲器”)存儲器。存儲器m2是包含非易失性數(shù)據(jù)和應(yīng)用程序的非易失性存儲器,例如eeprom或閃存。存儲器m3是包含微處理器的操作系統(tǒng)的只讀存儲器(或rom存儲器)。
通信接口電路ioc可以是例如根據(jù)iso/iec7816標(biāo)準(zhǔn)的接觸型電路,例如根據(jù)iso/iec14443a/b或iso/iec13693標(biāo)準(zhǔn)的具有感應(yīng)耦合的非接觸型電路,借助電耦合的非接觸型電路(uhf接口電路),或同時為接觸型和非接觸型電路。接口電路ioc還可以通過特定接口耦合到諸如nfc控制器的另一電路,或者諸如移動終端或連接對象的終端的主電路。
在某些實(shí)施例中,集成電路ct可以被配置為通過加密功能執(zhí)行對發(fā)送給它的消息進(jìn)行加密、解密或簽名的操作。該加密功能可以由電路ct的處理器prc執(zhí)行,或者部分地或完全地由處理器prc的協(xié)處理器cp1執(zhí)行。
圖2表示根據(jù)一個實(shí)施例的用于實(shí)現(xiàn)測試方法的集成電路測試系統(tǒng)的一個實(shí)例。例如假定測試系統(tǒng)被配置為測試圖1中的集成電路ct。
圖2的測試系統(tǒng)包括耦合到諸如數(shù)字示波器的測量設(shè)備md的測量探頭pb,以獲取與電路的活動相關(guān)的蹤跡,諸如電流消耗或電磁信號變化的蹤跡,以及包括諸如個人計(jì)算機(jī)pc的計(jì)算部件。計(jì)算機(jī)pc耦合到測量設(shè)備并且實(shí)現(xiàn)測試程序。該測試程序具體地包括通信接口、用于與集成電路通信并用于向集成電路發(fā)送消息的程序、信號處理程序,以及用于實(shí)現(xiàn)根據(jù)本發(fā)明的方法的計(jì)算步驟的程序。在集成電路是非接觸式電路的情況下,通信接口可以包括非接觸式讀卡器。
探頭pb可以是電流探頭(例如放置在集成電路的電源端子vcc上的電阻器)或者通過信號放大器amp耦合到測量設(shè)備的電磁探頭。或者,電流探頭可以與電磁探頭組合。電磁輻射的研究實(shí)際表明,工作中由電路發(fā)射的電磁場提供關(guān)于集成電路中的位開關(guān)的信息,就像消耗的電流的測量一樣。電磁探頭的優(yōu)點(diǎn)是它可以放置其操作需要分析電路部分附近(例如靠近微處理器prc的核心或密碼計(jì)算協(xié)處理器cp1的核心)。
此外,在非接觸式集成電路的情況下,電流探頭可以用電感探頭代替,電感探頭測量集成電路對讀取器發(fā)射的磁場的吸收。這種電感探頭(例如天線線圈)本身能夠與放置在要研究的電路區(qū)域附近的電磁場探頭組合。
因此,在本申請中,為了簡化語言而使用的短語“電流消耗”指任何可測量的物理量,其隨時間的變化表示集成電路內(nèi)部或所研究的集成電路部分內(nèi)部的二進(jìn)制數(shù)據(jù)的切換,該物理量能夠在集成電路的端子處或在所研究的集成電路部分附近被測量。此外,以高得足以收集感興趣的數(shù)據(jù)周期內(nèi)的多個點(diǎn)的采樣頻率對物理量進(jìn)行采樣,實(shí)際上形成大量蹤跡,其中每個蹤跡包含10到數(shù)十萬個點(diǎn),但是也可以考慮在每個蹤跡中收集幾百萬個值或甚至更多值。
本申請還涉及一種用于測試軟件程序或應(yīng)用的方法。在這種情況下,軟件程序可以由測試系統(tǒng)直接執(zhí)行或由測試系統(tǒng)所執(zhí)行的仿真程序執(zhí)行。因此,所分析的蹤跡例如可以是當(dāng)訪問存儲器時被發(fā)送到存儲器的一系列值,或在電路的寄存器中處理的數(shù)據(jù),甚至是被發(fā)送到電路的通信接口的數(shù)據(jù),這些發(fā)送由受測試的軟件程序控制。
所述測試方法的某些實(shí)施例基于對信號或數(shù)字值的隨時間變化的蹤跡的詳細(xì)觀察,這些蹤跡表示在受測試電路執(zhí)行被應(yīng)用于待發(fā)現(xiàn)的數(shù)據(jù)(下文稱為“機(jī)密數(shù)據(jù)”)的運(yùn)算時所述電路的操作。
圖3表示可以由測試系統(tǒng)獲取的一段時間上的值的蹤跡c0、c1、...cix。這些蹤跡中的每一者已經(jīng)通過使受測試的電路或軟件程序執(zhí)行運(yùn)算而獲得。對應(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ù),諸如對稱或不對稱加密或解密運(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分別對應(yīng)于輸入(或輸出)數(shù)據(jù)m[0]、m[1]、...m[i]、...m[ix]。每個蹤跡ci可以由從在同一受測試電路上測量的同一信號獲取的樣本形成,或者可以包括來自當(dāng)受測試電路操縱數(shù)據(jù)m[i]時捕獲的不同信號的樣本。
圖4a表示步驟s1到s15,這些步驟處理在執(zhí)行被應(yīng)用于待發(fā)現(xiàn)的機(jī)密數(shù)據(jù)和被應(yīng)用于也已知的輸入數(shù)據(jù)m[0]...m[ix]的已知加密運(yùn)算oprk期間由測試系統(tǒng)收集的值。根據(jù)一個實(shí)施例,該測試的目的是例如判定機(jī)密數(shù)據(jù)的值是否泄漏到形成圖3的蹤跡的所收集的值中。處理單元pc首先執(zhí)行步驟s1到s8。
在步驟s1,所述測試系統(tǒng)的處理單元pc將輸入數(shù)據(jù)m[0]...m[ix]上的循環(huán)的索引i以及二維表ht1、ht2設(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的值的部分ec1i、ec2i(圖3),只有這些部分在以下處理步驟中被處理。在圖4a的實(shí)例中,為了簡單起見,部分ec1i、ec2i由蹤跡ci的與部分ec1i的索引k1和k1x以及與部分ec2i的索引k2和k2x對應(yīng)的值來界定。實(shí)際上,索引k1、k1x、k2和k2x可以從一個蹤跡ci變化到下一個蹤跡ci。此外,與現(xiàn)有技術(shù)的側(cè)信道分析相比,每個蹤跡中以此方式選定的值不一定是連續(xù)的,并且每個部分ec1i、ec2i中的值的數(shù)量在每個蹤跡ci中可能彼此不同,并且在一個蹤跡ci與下一個蹤跡之間可能是不同的。因此,例如可以選擇從每個蹤跡ci中僅提取最大或最小局部值。還應(yīng)注意,所提取部分ec1i、ec2i可以包括整個蹤跡ci。在下面的處理中,假設(shè)以此方式提取的數(shù)據(jù)包含一條關(guān)于被被搜索的機(jī)密數(shù)據(jù)的信息。每個蹤跡ci(i=0…ix)可以包括來自在受測試電路操縱數(shù)據(jù)m[i]的同時獲取的不同信號的樣本值。在這種情況下,部分ec1i例如可以包括從這些信號中的第一信號提取的樣本值,并且部分ec2i包括從這些信號中的第二信號提取的樣本值。
在步驟s5,處理單元pc將循環(huán)索引j設(shè)定為0。在步驟s6,處理單元pc對選定點(diǎn)集ec1i的索引j的點(diǎn)值ec1i[j]應(yīng)用滿射函數(shù)f1,并且將等于由函數(shù)f1和索引i提供的結(jié)果的索引指定的表ht1[i]中的值遞增一(1)。在步驟s7,索引j遞增一(1)。在步驟s8,將索引j與其對應(yīng)于點(diǎn)集ec1i中的點(diǎn)數(shù)的最大值(k1x-k1)進(jìn)行比較,以確定是否已經(jīng)處理了點(diǎn)集ec1i的全部值。一旦處理了點(diǎn)集ec1i的全部值,處理單元pc就執(zhí)行步驟s9到s12,否則再次執(zhí)行步驟s6到s8。提供步驟s9到s12以類似于處理點(diǎn)集ec1i的步驟s5到s8的方式處理點(diǎn)集ec2i。在步驟s9,處理單元pc將循環(huán)索引j設(shè)定為0。在步驟10,處理單元pc將滿射函數(shù)f2應(yīng)用于選定點(diǎn)集ec2i中的索引j的點(diǎn)值ec2i[j]并且使等于由函數(shù)f2和索引i提供的結(jié)果的表ht2[i]中的值遞增一(1)。在步驟s11,索引j遞增一(1)。在步驟s12,將索引j與其對應(yīng)于點(diǎn)集ec2i中的點(diǎn)數(shù)的最大值(k2x-k2)進(jìn)行比較,以確定是否已如此處理了點(diǎn)集ec2i的全部值。一旦已經(jīng)處理了點(diǎn)集ec2i的全部值,處理單元pc就執(zhí)行步驟s13和s14,否則再次執(zhí)行步驟s10到s12。在步驟s13,索引i遞增一(1)。在步驟s14,將索引i與其對應(yīng)于要分析的蹤跡ci的數(shù)量的最大值ix進(jìn)行比較。一旦所有蹤跡ci已被處理,則處理單元pc執(zhí)行步驟s15,否則其再次執(zhí)行步驟s2到s14以處理另一蹤跡ci。在步驟s15,作為步驟s1到s14的結(jié)果,返回表ht1、ht2。
以這種方式,記錄在用于一個蹤跡ci的每個表ht1[i]、ht2[i]中的點(diǎn)集ec1i、ec2i的值具有指定由函數(shù)f1或f2返回的每個可能值的出現(xiàn)數(shù)的直方圖的形式。因此,表ht1[i]、ht2[i]中不包括與點(diǎn)集ec1i、ec2i的值相關(guān)的時間特征:表ht1[i]、ht2[i]的內(nèi)容不會使能確定點(diǎn)集ec1i、ec2i的值被收集的順序。函數(shù)f1、f2可以彼此相同或不同。
圖5表示采取使用函數(shù)f1、f2計(jì)算的值(在x軸中)的出現(xiàn)次數(shù)(在y軸中)的圖形形式的表ht1、ht2的一個實(shí)例。在圖5的實(shí)例中,函數(shù)f1、f2返回包括在0和4之間的整數(shù)值。對于在點(diǎn)集ec1i中計(jì)數(shù)的步驟s6到s8,四個值等于0,五個值等于1,兩個值等于2,六個值等于3并且沒有等于4的值。在點(diǎn)集ec2i中計(jì)數(shù)的步驟s10到s12,兩個值等于0,一個值等于1,沒有等于2的值,七個值等于3,三個值等于4。在圖5的實(shí)例中,函數(shù)f1和f2返回根據(jù)4位編碼值計(jì)算的漢明權(quán)重。
圖4b表示處理表ht1、ht2的步驟s20到s35。處理單元pc首先執(zhí)行步驟s20到s27。在步驟s20,處理單元pc將索引i和四維表ch設(shè)定為0。在步驟s21,處理單元pc將索引g設(shè)定為0。在步驟s22,處理單元pc將運(yùn)算opr應(yīng)用于數(shù)據(jù)m[i]和被設(shè)定為等于索引g的要確定的機(jī)密數(shù)據(jù)sd的一部分。運(yùn)算opr(m,g)假定提供在步驟s2執(zhí)行的運(yùn)算oprk(m)(=opr(m,sd))的結(jié)果的一部分。由運(yùn)算opr提供的結(jié)果被供應(yīng)值vl的滿射函數(shù)f3所處理。在步驟s23和s24,處理單元pc分別將索引l1和l2設(shè)定為0。在步驟s25,處理單元pc按照對應(yīng)于點(diǎn)集ec1i的表ht1[i]中的索引l1處的值ht1[l1,i]與對應(yīng)于點(diǎn)集ec2i的表ht2[i]中的索引l2處的值ht2[l2,i]的乘積來遞增由索引g、vl、l1和l2指定的位置處的表ch中存儲的值。在步驟s26,索引l1遞增一(1)。在步驟s27,在考慮由函數(shù)f1提供的可能不同值的數(shù)量的情況下,將索引l1與其最大值l1x進(jìn)行比較。如果索引l1小于或等于其最大值l1x,則再次執(zhí)行步驟s25到s27以處理表ht1[i]的另一個值,否則(當(dāng)索引l1大于其最大值l1x時),執(zhí)行步驟s28和s29。在步驟s26,索引l1遞增一(1)。在步驟s28,在考慮由函數(shù)f2提供的可能不同值的數(shù)量的情況下,將索引l2與其最大值l2x進(jìn)行比較。如果索引l2小于或等于其最大值l2x,則再次執(zhí)行步驟s24到s29以處理表ht2[i]的另一個值,否則(當(dāng)索引l2大于其最大值l1x時),執(zhí)行步驟s30和s31。
在步驟s30,處理單元pc將索引g遞增一(1)。在步驟s31,在考慮所考慮的機(jī)密數(shù)據(jù)部分的可能不同值的數(shù)量的情況下,處理單元pc將索引g與其最大值gx進(jìn)行比較。如果索引g小于或等于最大值gx,則執(zhí)行從步驟s22到s31的新迭代以處理索引g的另一個值,否則(當(dāng)索引g大于其最大值gx時),執(zhí)行步驟s32和s33。在步驟s18,處理單元pc將索引i遞增一(1)。在步驟s33,處理單元pc將索引i與其對應(yīng)于要被分析的蹤跡ci的數(shù)量的最大值ix進(jìn)行比較。如果索引i小于或等于最大值ix,則再次執(zhí)行步驟s21到s33以處理針對另一蹤跡ci計(jì)算的其它表ht1[i]、ht2[i],否則(當(dāng)索引i大于其最大值ix時),則執(zhí)行步驟s34。在步驟s34,在位置[g,vl]處的表ch中包含的累積二維直方圖的每個表ch[g,vl]包含以下值:
在上述和中要考慮的數(shù)據(jù)m[i]使得f3(opr(m[i],g))=vl。
在步驟s34,處理單元pc對表ch執(zhí)行統(tǒng)計(jì)分析,旨在判定索引g的值是否對應(yīng)于要搜索的機(jī)密數(shù)據(jù)部分。為此,考慮從機(jī)密數(shù)據(jù)的泄漏獲得的信息已經(jīng)累積在表ch中的行g(shù)的位置中,而獨(dú)立于機(jī)密數(shù)據(jù)的信息被隨機(jī)地或均勻地分布在表ch中。因此,如果表ch的索引g的行包含比該表的其余部分更高的值,則表ch中的該行的索引g的值對應(yīng)于要搜索的機(jī)密數(shù)據(jù)sd的該部分的值。在這種情況下,能夠認(rèn)為機(jī)密數(shù)據(jù)sd已經(jīng)泄漏到所收集的形成蹤跡ci的數(shù)據(jù)的部分ec1i、ec2i中。
圖5表示在步驟s25針對一個蹤跡ci計(jì)算的直方圖ht1[i]、ht2[i]的乘積ht1[i]*ht2[i]產(chǎn)生的表ht[i]的內(nèi)容。以這種方式,針對一個蹤跡ci記錄在表ht[i]中的值具有指定來自表ht1[i]的一個值ht1[a,i]和來自表ht2[i]的一個值ht2[b,i]的每個可能對(ht1[a,i],ht2[b,i])的出現(xiàn)次數(shù)的二維直方圖的形式,a包括在0與l1x之間(在當(dāng)前實(shí)例中=4)并且b包括在0與l2x(在當(dāng)前實(shí)例中=4)之間。
圖6表示累積直方圖的表ch的結(jié)構(gòu)的一個實(shí)例,其中由索引g和vl指定的每個位置ch[g,vl]包含通過根據(jù)在步驟s22獲得的值vl累積多個表ht[i](=ht1[i]*ht2[i])而獲得的二維表。
能夠選擇函數(shù)f1、f2和f3以對應(yīng)于要測試的電路部分或軟件程序部分(對應(yīng)于所選擇的蹤跡部分ec1i、ec2i)的泄漏模式。因此,函數(shù)f1、f2和f3可以彼此相同或不同,并且可以被選擇以最大化發(fā)現(xiàn)由電路操縱的機(jī)密數(shù)據(jù)的概率。例如,函數(shù)f1、f2和f3可以是以下函數(shù)之一:
-恒等函數(shù),
-這樣的函數(shù)(例如,形式為f(x)=a·x+b):其結(jié)果值可以被簡化為對應(yīng)于漢明權(quán)重的值,例如當(dāng)x在8位上被編碼時介于值0與8之間,
-這樣的函數(shù):其計(jì)算在該函數(shù)的輸入處提供的值的漢明權(quán)重,例如二進(jìn)制編碼值的1處的位數(shù),或者
-這樣的函數(shù):其計(jì)算與另一值的漢明距離,例如這兩個值中的1處的位數(shù)之間的差。
應(yīng)當(dāng)注意,函數(shù)f1、f2和f3的選擇可以影響要執(zhí)行以確定所考慮的機(jī)密數(shù)據(jù)部分的表ch的統(tǒng)計(jì)處理的復(fù)雜性,以及確定要搜索的機(jī)密數(shù)據(jù)部分的值的統(tǒng)計(jì)處理的成功性。
通過執(zhí)行步驟s1到s15以及s20到s34搜索的機(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í)行步驟s20到s34而確定。為此,能夠在步驟s4提取蹤跡ci的相同部分ec1i、ec2i或這些蹤跡的其它部分。
應(yīng)當(dāng)注意,在執(zhí)行圖4中的其它步驟之前,可能已經(jīng)收集了形成蹤跡ci的值集(步驟s2和s3)。另外,在對另一蹤跡ci執(zhí)行所有步驟之前,可能已經(jīng)針對每個蹤跡ci構(gòu)成從s1到s15以及從s20到s34的步驟。
應(yīng)用于機(jī)密數(shù)據(jù)sd和輸入數(shù)據(jù)m[i]的運(yùn)算opr/oprk可以是以下運(yùn)算之一或它們的組合:
-對稱或不對稱加密或解密運(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ù)的泄露信息對應(yīng)的累積值,可以將所有表ht[i](ht1[i]*ht2[i])的內(nèi)容彼此相加,以獲得由函數(shù)f1、f2返回的每個可能值的累積出現(xiàn)次數(shù)表。從表ch[g,vl]的位置中累積的所有表中減去該累積總表的值。因此,可以根據(jù)圖7所示的順序來修改圖4b中的步驟s20到s34的序列。圖7所示的步驟包括上述步驟s20到s34以及附加的步驟s36和s37。在步驟s20,二維表ht1[0..ix,0..l1x]和ht2[0..ix,0..l2x]之前已經(jīng)填充了包含針對所有蹤跡ci在步驟s6和s10生成的所有表。備選地,根據(jù)乘積(ht1[i]*ht2[i])計(jì)算單個三維表ht[0..x,0..l1x,0.l2x]。在步驟s20,將兩個二維表mht、cpt進(jìn)一步設(shè)定為0。
將步驟s36插入由索引l1、l2控制的循環(huán)(在步驟s25和s26之間),由此可以例如在步驟s25之后選擇由函數(shù)f1、f2提供的值中的一個。在步驟s36,處理單元pc將每個值ht[i,l1,l2](=ht1[i,l1]*ht2[i,l2])累積在由索引l1、l2指定的位置處的累積總表mht中。以這種方式,在處理結(jié)束時,表mht將包含針對每個蹤跡ci獲得的索引i的全部值ht[i,l1,l2]的和。在由索引g控制的循環(huán)的每次迭代時執(zhí)行一次步驟s37,例如在步驟s29之后。步驟s37使能對累積在表ch的每個位置ch[g,vl]中的表ht[i,l1,l2]的數(shù)量計(jì)數(shù)。該計(jì)數(shù)的結(jié)果被存儲在表cpt中。
圖8表示為了嘗試確定要搜索的機(jī)密數(shù)據(jù)sd的一部分的值而執(zhí)行的累積直方圖的表ch的統(tǒng)計(jì)處理的一個實(shí)例的步驟s40到s55。連續(xù)執(zhí)行步驟s40到s47。在步驟s40,將索引vl設(shè)定為0,并且將表tt的所有位置設(shè)定為1。在步驟s41,將索引g和表it的所有位置設(shè)定為0。在步驟s42、s43,分別將索引l1和l2設(shè)定為0。在步驟s44,變量t接收由索引g、vl、l1和l2選擇的包含在表ch中的值ch[g,vl,l1,l2],該值被除以位于表cpt中的位置cpt[g,vl]處的計(jì)數(shù)值。在步驟s45,位于表it中的位置g處的值it[g]按照變量t的值與被除以蹤跡ci的總數(shù)ix的、由索引l1和l2指定的存儲在表mht中的值mht[l1,l2]之間的差的平方遞增。在步驟s46,索引l2遞增一(1)。在步驟s47,將索引l2與其最大值l2x進(jìn)行比較。如果索引l2已經(jīng)達(dá)到其最大值l2x,則執(zhí)行步驟s48到s49,否則執(zhí)行從步驟s44開始的新迭代。在步驟s48,索引l1遞增一(1)。在步驟s49,將索引l1與其最大值l1x進(jìn)行比較。如果索引l1已經(jīng)達(dá)到其最大值l1x,則執(zhí)行步驟s50到s52,否則執(zhí)行從步驟s43開始的新迭代。
在步驟s50,用在步驟s44和s45計(jì)算的值it[g]乘以表tt中由索引g指定的值tt[g]來更新值tt[g],執(zhí)行1x次。在步驟s51,索引g遞增一(1)。在步驟s52,將索引g與其最大值gx進(jìn)行比較。如果索引g大于其最大值gx,則執(zhí)行步驟s53和s54,否則執(zhí)行從步驟s42開始的新迭代。在步驟s53,索引vl遞增一(1)。在步驟s54,將索引vl與其最大值vlx進(jìn)行比較。如果索引vl大于其最大值vlx,則執(zhí)行步驟s55,否則執(zhí)行從步驟s41開始的新迭代。在步驟s55,作為統(tǒng)計(jì)分析的結(jié)果返回表tt。
因此,在包括步驟s41到s54的處理循環(huán)的最后一次迭代時,表it和tt包含以下值:
其中
其中運(yùn)算符“==”表示當(dāng)相等為真時等于1的相等測試,并且當(dāng)相等為假時,相等測試為0,表it在步驟s40被設(shè)定為0,并且在步驟s45針對索引vl的每個新值加載表it。
因此,cpt[g,vl]表示條件(f2(opr(m[i],g))==vl)為真的次數(shù)。如果在執(zhí)行運(yùn)算oprk時機(jī)密數(shù)據(jù)sd被泄漏,則表tt的一個位置包含比該表中存儲的其它值高得多的值。結(jié)果是要搜索的機(jī)密數(shù)據(jù)sd的所述部分等于表tt中的最高值的索引g。
應(yīng)當(dāng)注意,在對應(yīng)于等式(3)的步驟s50,可以加上表it的值而不是相乘。乘法運(yùn)算的實(shí)現(xiàn)只是允許增大表tt的各值之間的差,因此更好地突顯對應(yīng)于要搜索的機(jī)密數(shù)據(jù)部分的最高值。還可以考慮將對數(shù)函數(shù)應(yīng)用于表it的值,并且對在表tt中所獲得的對數(shù)值執(zhí)行加法累積。當(dāng)表it的值相加時,它們能夠按照以下方式被加權(quán):
圖9表示為了嘗試確定要搜索的機(jī)密數(shù)據(jù)sd的一部分的值而執(zhí)行的表ch的統(tǒng)計(jì)處理的另一實(shí)例的步驟s60到s81。該處理基于香農(nóng)熵函數(shù)。連續(xù)執(zhí)行步驟s60到s66。在步驟s60,將索引g和表tt的所有位置設(shè)定為0。在步驟s61,將索引vl和i以及變量sxy設(shè)定為0。在步驟s62和s63,分別將索引l1、l2設(shè)定為0。在步驟s64,使變量sxy按照由索引g、vl、l1和l2指定的表ch中選擇的值ch[g,vl,l1,l2]遞增。在步驟s65,索引l遞增一(1)。在步驟s66,將索引l2與其最大值l2x進(jìn)行比較。如果索引l2已經(jīng)達(dá)到其最大值l2x,則執(zhí)行步驟s67到s68,否則執(zhí)行從步驟s64到步驟s66的新迭代。在步驟s67,將索引l1遞增一(1)。在步驟s68,將索引l1與其最大值l1x進(jìn)行比較。如果索引l1已經(jīng)達(dá)到其最大值l1x,則執(zhí)行步驟s69到s74,否則執(zhí)行從步驟s63到步驟s68的新迭代。
在步驟s69,將索引l1和變量pxy設(shè)定為0。在步驟s70,將索引l2設(shè)定為0。在步驟s71,變量vxy接收通過索引g、vl、l1和l2在表ch中選定的值ch[g,vl,l1,l2],該值被除以從步驟s63到s68的迭代所計(jì)算的變量syx。在步驟s72,變量pxy按照變量vxy與變量vxy的對數(shù)(例如,以2為底數(shù))的乘積遞增。在步驟s73,索引l2遞增一(1)。在步驟s74,將索引l2與其最大值l2x進(jìn)行比較。如果索引l2已經(jīng)達(dá)到其最大值l2x,則執(zhí)行步驟s75到s76,否則執(zhí)行從步驟s71到步驟s74的新迭代。在步驟s75,索引l1遞增一(1)。在步驟s76,將索引l1與其最大值l1x進(jìn)行比較。如果索引l1已經(jīng)達(dá)到其最大值l1x,則執(zhí)行步驟s77和s79,否則執(zhí)行從步驟s70到步驟s76的新迭代。
在步驟s77,通過從由表tt中的索引g指定的值tt[g]中減去被除以蹤跡ci的數(shù)量ix的值cpt[g,vl]與變量pxy的乘積來更新值tt[g],值cpt[g,vl]由在步驟s37填充的表cpt中的索引g和vl指定。在步驟s78,索引vl遞增一(1)。在步驟s79,將索引vl與其最大值vlx進(jìn)行比較。如果索引vl大于其最大值vlx,則執(zhí)行步驟s80和s81,否則執(zhí)行從步驟s62到步驟s79的新迭代。在步驟s80,索引g遞增一(1)。在步驟s81,將索引g與其最大值gx進(jìn)行比較。如果索引g大于其最大值gx,則執(zhí)行步驟s82,否則執(zhí)行從步驟s61到步驟s81的新迭代。在步驟s82,作為統(tǒng)計(jì)分析的結(jié)果返回表tt。
因此,在執(zhí)行最后一次迭代時,在步驟s78之后,表tt包含以下值:
其中
圖10和11以曲線cc1、cc2的形式表示作為索引g的函數(shù)的表tt的內(nèi)容的一個實(shí)例。曲線cc1已經(jīng)通過執(zhí)行圖8中的步驟獲得,曲線cc2已經(jīng)通過執(zhí)行圖9中的步驟獲得。在圖10和11的實(shí)例中,索引g具有一個字節(jié)的長度(從而從0變化到255),并且曲線cc1和cc2已經(jīng)通過數(shù)量達(dá)到500,000的大量蹤跡ci獲得。與表tt中包含的其它值相比,曲線cc1和cc2在值g=168處具有明顯的峰值。曲線cc1中的峰值比表tt的其它值約大三十倍。在曲線cc2中,峰值比表tt的其它值大三倍。取決于表ch的統(tǒng)計(jì)處理,可以認(rèn)為,當(dāng)通過增加所分析的蹤跡ci的數(shù)量而獲得的峰值保持為比最接近的值大0.9倍的值時,要搜索的機(jī)密數(shù)據(jù)部分泄漏。
為使諸如集成電路的電路能夠成功地通過已知的資格或認(rèn)證程序,這些電路的設(shè)計(jì)者提供了涉及引入時間變量的最常規(guī)的應(yīng)對措施。表ht1、ht2中的值的計(jì)算允許從所分析的值中移除時間方面,并且避免必須同步或在時間上對準(zhǔn)所分析的值的不同蹤跡。如果關(guān)于要搜索的機(jī)密數(shù)據(jù)的信息在所分析的數(shù)據(jù)中,則先前描述的測試方法使能確定所有或部分機(jī)密數(shù)據(jù)。因此,先前描述的測試方法能夠檢測由電路操縱的機(jī)密數(shù)據(jù)是否在能夠從該電路外部獲取的信號中泄漏。
由于先前描述的測試方法組合了每個蹤跡ci的兩個部分ec1i、ec2i,所以其為2階。通過選擇每個蹤跡ci中的n個部分ec1i到ecni,并且通過調(diào)整測試方法以考慮將每個蹤跡ci的每個部分ecki(k的范圍從1到n)的一個值進(jìn)行關(guān)聯(lián)的每個可能的不同n元組,前述的測試方法能夠適合于階數(shù)n(n大于2)。n階測試方法將在表ch中生成累積的n維直方圖ch[g,vl]。
引用的參考文獻(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.prouff、m.rivain、r.bevan,“statisticalanalysisofsecondorderdifferentialpoweranalysis”,ieeetransactionsoncomputers,第58卷,第6期,2009年6月。