本發(fā)明涉及一種用于測試電路的方法,具體涉及被設(shè)計為處理機(jī)密數(shù)據(jù)的電路,特別涉及用于通過使用密鑰的加密算法來變換消息的電路。
本發(fā)明特別涉及實現(xiàn)密碼算法的設(shè)備,諸如安全設(shè)備(智能卡集成電路、安全元件、安全存儲卡)、移動設(shè)備(移動電話、智能手機(jī)、物聯(lián)網(wǎng))、家用和汽車設(shè)備、以及集成到計算機(jī)和其他電子和it設(shè)備(usb驅(qū)動器、電視解碼器、游戲控制臺等)的母板上的硬件加密組件等。本發(fā)明還涉及包括加密運(yùn)算的軟件,該軟件用于在安全或不安全的環(huán)境中執(zhí)行。
本發(fā)明具體涉及實現(xiàn)諸如des(數(shù)據(jù)加密標(biāo)準(zhǔn))或三重des、aes(高級加密標(biāo)準(zhǔn))、rsa(rivest、shamir和adleman)、dsa(數(shù)字簽名算法)或ecdsa(橢圓曲線數(shù)字簽名算法)等加密算法之類的密碼算法的電路。本發(fā)明還涉及實現(xiàn)諸如hmac(密鑰散列消息認(rèn)證碼)之類的散列函數(shù)的電路。
背景技術(shù):
實現(xiàn)密碼算法的微電路配備有中央處理單元(cpu)。一些微電路配備有專用于密碼計算的電路,例如加密協(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è)信道攻擊實施諸如spa(“單功耗分析”)、dpa(“差分功耗分析”)、cpa(“相關(guān)功耗分析”)或ema(“電磁分析”)之類的統(tǒng)計分析方法。spa分析(參考文獻(xiàn)[1])通常只需要獲取單個電流消耗蹤跡。其目的是通過觀察對應(yīng)于密碼計算的消耗蹤跡的一部分來獲得關(guān)于集成電路的活動的信息,因為當(dāng)前蹤跡根據(jù)所執(zhí)行的運(yùn)算和所處理的數(shù)據(jù)而變化。
軟件在被電路執(zhí)行期間也可能經(jīng)歷這種側(cè)信道攻擊。
dpa(參考文獻(xiàn)[2])和cpa分析使得能夠通過獲取大量數(shù)據(jù)或測量蹤跡并通過對這些蹤跡進(jìn)行統(tǒng)計分析以查找搜索的信息來找到加密算法的密鑰。它們基于這樣的前提:即,當(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ù)公式假設(shè)區(qū)分的兩個消耗蹤跡族之間的測量差異。
cpa分析(參考文獻(xiàn)[3])基于線性電流消耗模型,并且涉及計算首先所測量的形成捕獲的消耗蹤跡的消耗點(diǎn)與其次根據(jù)線性消耗模型和有關(guān)由微電路處理的待發(fā)現(xiàn)的變量以及有關(guān)加密密鑰的值的假設(shè)而計算的推定消耗值之間的相關(guān)系數(shù)。
電磁分析(ema)基于如下原理:即,微電路可以以近場或遠(yuǎn)場電磁輻射的形式泄漏信息。假設(shè)晶體管在其狀態(tài)改變時發(fā)射電磁信號,則可以通過諸如spa、dpa和cpa分析中的一種或其它分析,像電流消耗變化信號那樣處理這些信號。此分析的一個應(yīng)用實例由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)對措施引入為計算電路定速的時鐘頻率的變化,或引入偽時鐘周期或偽運(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í)行加密方法,從而使得通過正確的密鑰(即,真實的密鑰)對加密方法的執(zhí)行被“隱藏”在一組偽執(zhí)行中。通過多次執(zhí)行實現(xiàn)這種應(yīng)對措施提供了以下優(yōu)點(diǎn):即,可以通過不包括任何特定的應(yīng)對措施手段的常規(guī)協(xié)處理器來實現(xiàn)此應(yīng)對措施。
另幾種應(yīng)對措施涉及使得要保護(hù)的算法適合獨(dú)立于由電路處理的數(shù)據(jù)的實際值來呈現(xiàn)這些數(shù)據(jù)。這幾種應(yīng)對措施中的某些應(yīng)對措施被稱為“掩蔽型應(yīng)對措施”-使用隨機(jī)掩碼(二進(jìn)制數(shù)),在執(zhí)行加密方法期間,這些隨機(jī)掩碼與另一要保護(hù)的數(shù)據(jù)(例如密鑰和/或消息)組合在一起。此類應(yīng)對措施是有效的,但是需要修改算法,因此,在由協(xié)處理器執(zhí)行的情況下,需要專用于實現(xiàn)此應(yīng)對措施的協(xié)處理器,或者在由微電路的中央處理單元或編程協(xié)處理器執(zhí)行的情況下,需要更復(fù)雜的程序。此外,此類應(yīng)對措施易經(jīng)受所謂的“二階攻擊”,此攻擊基于對一組信號蹤跡的分析,通過組合相應(yīng)蹤跡的兩個部分來獲得每個信號蹤跡。作為一個實例,這些信號蹤跡中的每一個組合了應(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)計分析提取的有用信息,或者組合后的信號蹤跡包含有用信息,但是此信息不能通過常規(guī)統(tǒng)計分析提取。因此,二階攻擊對基于各種時間未對準(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ù)實現(xiàn)要素:
某些實施例涉及一種電路的測試方法,包括:獲取多個值集,每個值集包括物理量或邏輯信號的值,當(dāng)受測試電路執(zhí)行被應(yīng)用于相同機(jī)密數(shù)據(jù)的不同密碼運(yùn)算的運(yùn)算集中的運(yùn)算時,所述值集與所述電路的活動關(guān)聯(lián);選擇每個值集中的至少第一子集;對于每個值集,通過處理單元對由被應(yīng)用于該值集的第一子集中的值的第一滿射函數(shù)變換的值的出現(xiàn)次數(shù)計數(shù),以形成該值集的出現(xiàn)次數(shù)集;對于所述運(yùn)算集中的每個運(yùn)算以及所述機(jī)密數(shù)據(jù)的一部分的每個可能值,通過所述處理單元計算部分運(yùn)算結(jié)果;通過所述處理單元計算累積出現(xiàn)次數(shù)集,每個累積出現(xiàn)次數(shù)集是通過將對應(yīng)于所述運(yùn)算集中的運(yùn)算的出現(xiàn)次數(shù)集相加而獲得的,當(dāng)被應(yīng)用于所述機(jī)密數(shù)據(jù)的所述部分的可能值的相同值或等價值時,所述運(yùn)算提供具有應(yīng)用第二滿射函數(shù)所獲得的相同變換值的部分運(yùn)算結(jié)果;根據(jù)選定的合并方案,合并所述累積出現(xiàn)次數(shù)集中的累積出現(xiàn)次數(shù)或在計算所述累積出現(xiàn)次數(shù)之前合并所述出現(xiàn)次數(shù)集中的組合出現(xiàn)次數(shù);以及通過所述處理單元分析合并后的累積出現(xiàn)次數(shù)集以確定所述機(jī)密數(shù)據(jù)的所述部分,從而知道如果所述機(jī)密數(shù)據(jù)已經(jīng)泄漏到所述值集中,則在與所述機(jī)密數(shù)據(jù)的所述部分的值對應(yīng)的所述累積出現(xiàn)次數(shù)集中找到所述機(jī)密數(shù)據(jù)。
根據(jù)一實施例,所述方法包括:選擇每個值集中的至少第二值子集;對于每個值集和每個值子集,通過處理單元對由被應(yīng)用于該值集的所述子集中的值的相應(yīng)第三滿射函數(shù)變換的值的出現(xiàn)次數(shù)計數(shù),以形成該值集的所述值子集的出現(xiàn)次數(shù)集;以及對于每個值集,形成將該值集的每個值子集的出現(xiàn)次數(shù)之一關(guān)聯(lián)在一起的n元組,以及通過將借助所述n元組關(guān)聯(lián)的所述出現(xiàn)次數(shù)相乘在一起來計算該值集的每個n元組的組合出現(xiàn)數(shù),該值集的所述出現(xiàn)次數(shù)集包括針對該值集計算的組合出現(xiàn)次數(shù)。
根據(jù)一實施例,每個值集的所述第一子集和所述第二子集分別包括兩個不同信號的測量。
根據(jù)一實施例,所述方法包括選擇用于多組累積出現(xiàn)次數(shù)集的合并方案,所述合并方案的選擇是根據(jù)在所述累積出現(xiàn)次數(shù)集中觀察到的模式,或者根據(jù)通過對使用被應(yīng)用于所述多組累積出現(xiàn)次數(shù)集的不同合并方案獲得的合并后累積出現(xiàn)次數(shù)集進(jìn)行分析所得到的結(jié)果而被執(zhí)行的。
根據(jù)一實施例,被應(yīng)用于所述累積出現(xiàn)次數(shù)集中的一個累積出現(xiàn)次數(shù)集的合并方案選自包括以下項的列表:這樣的合并方案:其通過將該累積出現(xiàn)次數(shù)集中的多組相鄰累積出現(xiàn)次數(shù)合并在一起,來劃分該累積出現(xiàn)次數(shù)集中的多個累積出現(xiàn)次數(shù);這樣的合并方案:其將該累積出現(xiàn)次數(shù)集中的選定多組累積出現(xiàn)次數(shù)合并在一起;這樣的合并方案:其將該累積出現(xiàn)次數(shù)集中沿著選定曲線或選定方向延伸的累積出現(xiàn)次數(shù)合并在一起;以及這樣的合并方案:其將該累積出現(xiàn)次數(shù)集中沿著垂直于一個選定方向的選定表面或平面延伸的累積出現(xiàn)次數(shù)合并在一起。
根據(jù)一實施例,所述方法包括:向所述電路發(fā)送多個不同的命令,每個命令觸發(fā)由所述電路執(zhí)行被應(yīng)用于所述機(jī)密數(shù)據(jù)的所述運(yùn)算集中的運(yùn)算之一;以及在由所述電路執(zhí)行每個運(yùn)算期間,由測量設(shè)備收集所述值集中的一個值集的值。
根據(jù)一實施例,所述值集包括:所述電路的電流消耗的測量,和/或由所述電路發(fā)射的電磁輻射的測量,和/或所述電路周圍存在的磁場的吸收的測量,和/或在所述電路中收集的邏輯信號或數(shù)字值。
根據(jù)一實施例,所述第一和第二滿射函數(shù)中的每一者是以下函數(shù)之一:恒等函數(shù);這樣的函數(shù):其提供結(jié)果值,該結(jié)果值然后被簡化為對應(yīng)于漢明權(quán)重的值;這樣的函數(shù):其提供該函數(shù)被應(yīng)用到的值的漢明權(quán)重;以及這樣的函數(shù):其提供值與該函數(shù)被應(yīng)用到的先前值之間的漢明距離。
根據(jù)一實施例,針對所述機(jī)密數(shù)據(jù)的先前確定的部分和所述機(jī)密數(shù)據(jù)的另一部分,執(zhí)行計算所述機(jī)密數(shù)據(jù)的一部分的每個可能值的運(yùn)算結(jié)果的步驟、計算所述累積出現(xiàn)次數(shù)的步驟、以及分析所述累積出現(xiàn)次數(shù)的步驟。
根據(jù)一實施例,每個值集中的每個選定值子集包括:該值集的連續(xù)值,和/或該值集的非連續(xù)值,和/或該值集的局部極值,和/或該值集的全部值。
根據(jù)一實施例,所述運(yùn)算集中的所述運(yùn)算包括將單個運(yùn)算應(yīng)用于所述機(jī)密數(shù)據(jù)以及應(yīng)用于輸入數(shù)據(jù)集中的輸入數(shù)據(jù),所述單個運(yùn)算包括以下運(yùn)算中的至少一者:對稱或不對稱加密或解密運(yùn)算;簽名運(yùn)算;與所述機(jī)密數(shù)據(jù)的模乘或非模乘;與所述機(jī)密數(shù)據(jù)的邏輯異或運(yùn)算;模冪運(yùn)算,所述機(jī)密數(shù)據(jù)被用作指數(shù);模簡化運(yùn)算,所述機(jī)密數(shù)據(jù)被用作模數(shù);采用使用輸入值在替換表中選擇的值的替換運(yùn)算;組合了與所述機(jī)密數(shù)據(jù)的邏輯異或運(yùn)算和替換運(yùn)算的運(yùn)算,所述替換運(yùn)算以使用所述邏輯運(yùn)算的結(jié)果在替換表中選擇的值替換所述邏輯運(yùn)算的結(jié)果。
根據(jù)一實施例,所述累積出現(xiàn)次數(shù)集的分析包括:對于每個累積出現(xiàn)次數(shù),通過將該累積出現(xiàn)次數(shù)除以在該累積出現(xiàn)次數(shù)中累積的對應(yīng)數(shù)量的出現(xiàn)次數(shù)來計算正規(guī)化累積出現(xiàn)次數(shù);對于所述機(jī)密數(shù)據(jù)的所述部分的每個可能值和變換后的部分結(jié)果的每個可能值,計算對應(yīng)于所述機(jī)密數(shù)據(jù)的所述部分的該可能值和所述變換后的部分結(jié)果的該可能值的每個正規(guī)化累積出現(xiàn)次數(shù)與被除以運(yùn)算次數(shù)的所述累積出現(xiàn)次數(shù)的平均值之間的差值平方和;對于所述機(jī)密數(shù)據(jù)的所述部分的每個可能值,計算與所述變換后的部分結(jié)果的所述可能值對應(yīng)的累積總差值和;以及相互比較所述累積總差值和,并且檢測所述機(jī)密數(shù)據(jù)的所述部分的可能值的累積總差值和之一是否大于其他累積總差值和。
根據(jù)一實施例,所述累積出現(xiàn)次數(shù)集的分析包括:對于所述機(jī)密數(shù)據(jù)的所述部分的每個可能值和變換后的部分結(jié)果的每個可能值,計算所述累積出現(xiàn)次數(shù)的累積總和;對于每個累積出現(xiàn)次數(shù),通過將該累積出現(xiàn)次數(shù)除以對應(yīng)累積總和來計算正規(guī)化累積總和,并計算所述正規(guī)化累積總和與所述正規(guī)化累積總和的對數(shù)的乘積;對于所述機(jī)密數(shù)據(jù)的所述部分的每個可能值和變換后的部分結(jié)果的每個可能值,計算與所述機(jī)密數(shù)據(jù)的所述部分的該可能值和所述變換后的部分結(jié)果的該可能值對應(yīng)的所述乘積的和;對于所述機(jī)密數(shù)據(jù)的所述部分的每個可能值,計算與所述變換后的部分結(jié)果的所述可能值對應(yīng)的累積總乘積和,每個乘積和被乘以對應(yīng)數(shù)量的出現(xiàn)次數(shù)和;以及相互比較所述累積總乘積和,并且檢測所述機(jī)密數(shù)據(jù)的所述部分的可能值的所述累積總乘積和之一是否大于其他累積總乘積和。
實施例還可以涉及一種用于測試電路的系統(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);以及處理單元,其被配置為實現(xiàn)先前定義的方法。
實施例還可以涉及一種計算機(jī)程序產(chǎn)品,其可加載到計算機(jī)的內(nèi)部存儲器中并包括代碼部分,當(dāng)由計算機(jī)執(zhí)行時,所述代碼部分配置所述計算機(jī)以執(zhí)行上面定義的方法的步驟。
附圖說明
下面將結(jié)合但不限于附圖來描述僅為了例示目的而提供的本發(fā)明的實施例的一些實例,其中:
圖1示意性地表示安全電路的常規(guī)架構(gòu);
圖2示意性地表示集成電路測試系統(tǒng)的一個實例;
圖3表示在由安全電路執(zhí)行加密運(yùn)算期間獲取的信號的蹤跡;
圖4a、4b表示根據(jù)一個實施例的用于測試電路的方法的步驟;
圖5表示根據(jù)一個實施例被計算以執(zhí)行統(tǒng)計處理的直方圖;
圖6示意性地表示根據(jù)一個實施例被構(gòu)建為執(zhí)行統(tǒng)計處理的表;
圖7表示根據(jù)另一實施例的用于測試電路的方法的步驟;
圖8和9表示根據(jù)各種實施例的用于對通過測試方法獲得的值集進(jìn)行統(tǒng)計分析的方法的步驟;
圖10和11以曲線的形式表示由圖8和9的分析方法提供的結(jié)果表;
圖12a、12b、12c示出根據(jù)各實施例的合并二維直方圖中的值的步驟;
圖13a、13b示出根據(jù)另一實施例的合并二維直方圖中的值的步驟;
圖14a到14i表示當(dāng)電路的泄漏模型基于漢明權(quán)重時的二維直方圖中的不同值分布模式;以及
圖15a、15b、15c示出根據(jù)其它實施例的合并二維直方圖中的值的步驟。
具體實施方式
作為一個實例,圖1表示安全集成電路ct,該集成電路例如布置在諸如塑料卡或任何其它介質(zhì)的便攜式介質(zhì)hd上,或者布置在諸如移動終端的終端中。所述集成電路包括微處理器prc、輸入/輸出電路ioc,通過數(shù)據(jù)和地址總線耦合到微處理器的存儲器m1、m2、m3以及可選地包括加密計算協(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控制器的另一電路,或者諸如移動終端或連接對象的終端的主電路。
在某些實施例中,集成電路ct可以被配置為通過加密功能執(zhí)行對發(fā)送給它的消息進(jìn)行加密、解密或簽名的操作。該加密功能可以由電路ct的處理器prc執(zhí)行,或者部分地或完全地由處理器prc的協(xié)處理器cp1執(zhí)行。
圖2表示根據(jù)一個實施例的用于實現(xiàn)測試方法的集成電路測試系統(tǒng)的一個實例。例如假定測試系統(tǒng)被配置為測試圖1中的集成電路ct。
圖2的測試系統(tǒng)包括耦合到諸如數(shù)字示波器的測量設(shè)備md的測量探頭pb,以獲取與電路的活動相關(guān)的蹤跡,諸如電流消耗或電磁信號變化的蹤跡,以及包括諸如個人計算機(jī)pc的計算部件。計算機(jī)pc耦合到測量設(shè)備并且實現(xiàn)測試程序。該測試程序具體地包括通信接口、用于與集成電路通信并用于向集成電路發(fā)送消息的程序、信號處理程序,以及用于實現(xiàn)根據(jù)本發(fā)明的方法的計算步驟的程序。在集成電路是非接觸式電路的情況下,通信接口可以包括非接觸式讀卡器。
探頭pb可以是電流探頭(例如放置在集成電路的電源端子vcc上的電阻器)或者通過信號放大器amp耦合到測量設(shè)備的電磁探頭?;蛘?,電流探頭可以與電磁探頭組合。電磁輻射的研究實際表明,工作中由電路發(fā)射的電磁場提供關(guān)于集成電路中的位開關(guān)的信息,就像消耗的電流的測量一樣。電磁探頭的優(yōu)點(diǎn)是它可以放置其操作需要分析電路部分附近(例如靠近微處理器prc的核心或密碼計算協(xié)處理器cp1的核心)。
此外,在非接觸式集成電路的情況下,電流探頭可以用電感探頭代替,電感探頭測量集成電路對讀取器發(fā)射的磁場的吸收。這種電感探頭(例如天線線圈)本身能夠與放置在要研究的電路區(qū)域附近的電磁場探頭組合。
因此,在本申請中,為了簡化語言而使用的短語“電流消耗”指任何可測量的物理量,其隨時間的變化表示集成電路內(nèi)部或所研究的集成電路部分內(nèi)部的二進(jìn)制數(shù)據(jù)的切換,該物理量能夠在集成電路的端子處或在所研究的集成電路部分附近被測量。此外,以高得足以收集感興趣的數(shù)據(jù)周期內(nèi)的多個點(diǎn)的采樣頻率對物理量進(jìn)行采樣,實際上形成大量蹤跡,其中每個蹤跡包含10到數(shù)十萬個點(diǎn),但是也可以考慮在每個蹤跡中收集幾百萬個值或甚至更多值。
本申請還涉及一種用于測試軟件程序或應(yīng)用的方法。在這種情況下,軟件程序可以由測試系統(tǒng)直接執(zhí)行或由測試系統(tǒng)所執(zhí)行的仿真程序執(zhí)行。因此,所分析的蹤跡例如可以是當(dāng)訪問存儲器時被發(fā)送到存儲器的一系列值,或在電路的寄存器中處理的數(shù)據(jù),甚至是被發(fā)送到電路的通信接口的數(shù)據(jù),這些發(fā)送由受測試的軟件程序控制。
所述測試方法的某些實施例基于對信號或數(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)算不同例如是因為它們涉及將同一函數(shù)應(yīng)用于不同的已知輸入數(shù)據(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ù)的另一實例涉及使用替換表(sbox[mxorsd],sbox是替換表)來處理xor運(yùn)算的結(jié)果,如在des和aes加密算法的情況下。更一般地,該函數(shù)必須能夠基于機(jī)密數(shù)據(jù)的一部分和輸入數(shù)據(jù)來計算由運(yùn)算產(chǎn)生的值的一部分。
在圖3的實例中,蹤跡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ù)一個實施例,該測試的目的是例如判定機(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的實例中,為了簡單起見,部分ec1i、ec2i由蹤跡ci的與部分ec1i的索引k1和k1x以及與部分ec2i的索引k2和k2x對應(yīng)的值來界定。實際上,索引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計算的值(在x軸中)的出現(xiàn)次數(shù)(在y軸中)的圖形形式的表ht1、ht2的一個實例。在圖5的實例中,函數(shù)f1、f2返回包括在0和4之間的整數(shù)值。對于在點(diǎn)集ec1i中計數(shù)的步驟s6到s8,四個值等于0,五個值等于1,兩個值等于2,六個值等于3并且沒有等于4的值。在點(diǎn)集ec2i中計數(shù)的步驟s10到s12,兩個值等于0,一個值等于1,沒有等于2的值,七個值等于3,三個值等于4。在圖5的實例中,函數(shù)f1和f2返回根據(jù)4位編碼值計算的漢明權(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計算的其它表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)計分析,旨在判定索引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計算的直方圖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)前實例中=4)并且b包括在0與l2x(在當(dāng)前實例中=4)之間。
圖6表示累積直方圖的表ch的結(jié)構(gòu)的一個實例,其中由索引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ù):其計算在該函數(shù)的輸入處提供的值的漢明權(quán)重,例如二進(jìn)制編碼值的1處的位數(shù),或者
-這樣的函數(shù):其計算與另一值的漢明距離,例如這兩個值中的1處的位數(shù)之間的差。
應(yīng)當(dāng)注意,函數(shù)f1、f2和f3的選擇可以影響要執(zhí)行以確定所考慮的機(jī)密數(shù)據(jù)部分的累積直方圖的表ch的統(tǒng)計處理的復(fù)雜性,以及確定要搜索的機(jī)密數(shù)據(jù)部分的值的統(tǒng)計處理的成功性。
通過執(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ù)來計算運(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])計算單個三維表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ù)量計數(shù)。該計數(shù)的結(jié)果被存儲在表cpt中。
圖8表示為了嘗試確定要搜索的機(jī)密數(shù)據(jù)sd的一部分的值而執(zhí)行的累積直方圖的表ch的統(tǒng)計處理的一個實例的步驟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]處的計數(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計算的值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)計分析的結(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)算的實現(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)計處理的另一實例的步驟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的迭代所計算的變量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)計分析的結(jié)果返回表tt。
因此,在執(zhí)行最后一次迭代時,在步驟s78之后,表tt包含以下值:
其中
圖10和11以曲線cc1、cc2的形式表示作為索引g的函數(shù)的表tt的內(nèi)容的一個實例。曲線cc1已經(jīng)通過執(zhí)行圖8中的步驟獲得,曲線cc2已經(jīng)通過執(zhí)行圖9中的步驟獲得。在圖10和11的實例中,索引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)計處理,可以認(rèn)為,當(dāng)通過增加所分析的蹤跡ci的數(shù)量而獲得的峰值保持為比最接近的值大0.9倍的值時,要搜索的機(jī)密數(shù)據(jù)部分泄漏。
為使諸如集成電路的電路能夠成功地通過已知的資格或認(rèn)證程序,這些電路的設(shè)計者提供了涉及引入時間變量的最常規(guī)的應(yīng)對措施。表ht1、ht2中的值的計算允許從所分析的值中移除時間方面,并且避免必須同步或在時間上對準(zhǔn)所分析的值的不同蹤跡。如果關(guān)于要搜索的機(jī)密數(shù)據(jù)的信息在所分析的數(shù)據(jù)中,則先前描述的測試方法使能確定所有或部分機(jī)密數(shù)據(jù)。因此,先前描述的測試方法能夠檢測由電路操縱的機(jī)密數(shù)據(jù)是否在能夠從該電路外部獲取的信號中泄漏。
由于先前描述的測試方法組合了每個蹤跡ci的兩個部分ec1i、ec2i,所以其為2階。通過選擇每個蹤跡ci或從同一執(zhí)行獲取的不同蹤跡中的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]。
在步驟s34(圖4b和7)之后并且在步驟s40(圖8)或步驟s60(圖9)之前,能夠根據(jù)一個或多個合并方案對累積直方圖的表ch進(jìn)行預(yù)處理步驟,其中包括合并每個累積直方圖ch[g,vl]中的單元格。選擇合并方案以將有用數(shù)據(jù)“集中”到每個直方圖的較少數(shù)量的單元格中。事實上,n維直方圖(n=2或更大)的生成傾向于將有用信息分散到直方圖的多個單元格(通常是相鄰的)中。存儲在合并在一起的單元格中的值彼此相加。該單元格合并操作產(chǎn)生具有圖6所示結(jié)構(gòu)的累積直方圖的新表,其中每個單元格ch[g,vl]存儲合并后的直方圖。然后,步驟s40-s55或步驟s60-s82能夠被應(yīng)用于新表,由于單元格合并操作,要處理的值的數(shù)量減少。
應(yīng)當(dāng)注意,在被累積到表ch之前(步驟s25之前),可以對二維直方圖ht=ht1×ht2執(zhí)行單元格合并操作。在步驟s25之前,能夠直接對直方圖ht1、ht2執(zhí)行其它合并操作。
圖12a、12b、12c示出了應(yīng)用于表ch的單元格合并方案的各種實例。圖12a、12b、12c中的每一者表示在表ch中累積的一個二維直方圖ch[g,vl]和直方圖的單元格中的點(diǎn)。直方圖ch[g,vl]的每個單元格中的點(diǎn)數(shù)對應(yīng)于被累積到該單元格中的有用數(shù)據(jù)的數(shù)量。
在圖12a、12b中,單元格合并操作被應(yīng)用于表ch中的每個直方圖ch[g,vl]中的相鄰單元格構(gòu)成的正方形,以形成新的直方圖ch1[g,vl]、ch2[g,vl],它們具有被所考慮的正方形中的相鄰單元格的數(shù)量相除的單元格數(shù)。存儲在合并后的單元格中的值被彼此相加。在圖12a中,將2x2、2x3或3x3的相鄰單元格構(gòu)成的組合并到所得直方圖ch1[g,vl]中的一個單元格中。在圖12b中,將4×4、4×5或5×5的相鄰單元格構(gòu)成的組合并到所得直方圖ch2[g,vl]中的一個單元格中。在圖12a和12b的實例中,直方圖ch[g,vl]包括9×9個單元格,直方圖ch1[g,vl]包括4×4個單元格,以及直方圖ch2[g,vl]包括2×2個單元格。
在圖12c中,根據(jù)直方圖ch[g,vl]中的特定分布來選擇要合并的單元格。所得的直方圖ch3[g,vl]包括組合了所選定的單元格的第一單元格和組合了直方圖ch[g,vl]的所有其它單元格的第二單元格。所選定的單元格的分布不必具有正方形或矩形形狀,并且所選定的單元格不一定相鄰。
圖13a、13b示出被應(yīng)用于二維直方圖ch[g1,vl1]、ch[g2,vl2]并提供合并后的直方圖ch4[g1,vl1]、ch4[g2,vl2]的另一單元格合并方案。根據(jù)該合并方案,將單元格合并成一維直方圖,待合并的單元格沿著與包括直方圖ch[g,vl]的相鄰單元格的正方形的對角線平行的合并方向排列。因此,在圖13a的實例中,直方圖ch[g1,vl1]的單元格(行=0,列=0)和(3,3)不與其它單元格合并,并且分別對應(yīng)于所得的直方圖ch4[g1,vl1]中的單元格(6)。單元格(0,1)和(1,0)被合并到直方圖ch4[g1,vl1]的單元格(1)中。單元格(0,2)、(1,1)和(2,0)被合并到直方圖ch4[g1,vl1]的單元格(2)中。單元格(0,3)、(1,2)、(2,1)和(3,0)被合并到直方圖ch4[g1,vl1]的單元格(4)中。單元格(1,3)、(2,2)和(3,1)被合并到直方圖ch4[g1,vl1]的單元格(4)中。單元格(2,3)和(3,2)被合并到直方圖ch4[g1,vl1]的單元格(5)中。
圖13a的單元格合并方案能夠允許一個二維直方圖ch[g1,vl1]中的數(shù)據(jù)(在這些數(shù)據(jù)沿著一個合并方向分布時)被集中到較少的單元格中。圖13b表示根據(jù)圖13a的單元格合并方案要合并的直方圖ch[g2,vl2]以及所得的直方圖ch4[g2,vl2]。直方圖ch[g2,vl2]的所有非零單元格(即單元格(1,4)、(2,3)、(3,2)和(4,1))沿著直方圖的對角線定位,從而定義合并方向。因此,將單元格(1,4)、(2,3)、(3,2)和(4,1)合并到所得直方圖ch4[g2,vl2]的單個單元格(4)中,所得的直方圖ch4[g2,vl2]的其它單元格存儲零值。在圖13a、13b的實例中,未在圖13a中觀察到突出的模式,而圖13b示出這樣的突出模式,其可以揭示相應(yīng)的曲線對應(yīng)于被搜索的機(jī)密數(shù)據(jù)的良好值g。
可以在表ch中累積的直方圖ch[g,vl]中的數(shù)據(jù)分布內(nèi)觀察到一些特定模式,特別是當(dāng)根據(jù)電路的理論模型產(chǎn)生表ch時。這些模式可以用于定義單元格合并方向。圖14a到14i表示當(dāng)函數(shù)f1、f2和f3提供根據(jù)對應(yīng)于受測試電路的泄漏模型的8位二進(jìn)制數(shù)據(jù)計算的漢明權(quán)重時,在二維直方圖ch[g,vl]中觀察到的分布模式的實例。因此,直方圖ch[g,vl]包括9×9個值。通常,直方圖ch[g,vl]包括所觀察到的模式周圍的噪聲值。
圖14a示出了當(dāng)漢明權(quán)重hw等于0時所觀察到的模式。該模式形成沿著二維直方圖的第一對角線的一條線,該條線從直方圖的第一行、第一列延伸到第最后一行、最后一列。圖14b示出當(dāng)漢明權(quán)重hw等于1時所觀察到的模式。該模式形成與二維直方圖的第一對角線平行的兩條線,這兩條線從直方圖的第一行、第二列延伸到第八行、最后一列,以及從直方圖的第二行、第一列延伸到最后一行、第八列。當(dāng)漢明權(quán)重hw等于2時,所觀察到的模式(圖14c)包括三條平行線,其中包括圖14a的模式的線,一條從直方圖的第一行、第三列延伸到第七行、最后一列的線,以及一條從直方圖的第三行、第一列延伸到最后一行、第七列的線。當(dāng)漢明權(quán)重hw等于3時,所觀察到的模式(圖14d)包括平行于第一對角線的四條線,其中包括圖14b的模式的線,一條從直方圖的第一行、第四列延伸到第六行、最后一列的線,以及一條從直方圖的第四行、第一列延伸到最后一行、第六列的線。當(dāng)值g具有等于4的漢明權(quán)重時,能夠觀察到圖14e的模式。該模式是棋盤模式,其中包括圖14c的模式(其與就穿過第五行和第五列處的中央單元格的垂直線或水平線而言與圖14c的模式對稱的模式相組合)。當(dāng)漢明權(quán)重等于5時,能夠觀察到圖14f的模式。該模式就穿過第五行和第五列的中央單元格的垂直線或水平線而言與圖14d的模式對稱。圖14g、14h和14i的模式分別對應(yīng)于等于為6、7和8的漢明權(quán)重,并且分別就穿過第五行和第五列的中央單元格的垂直線或水平線而言與圖14c、14b和14a的模式對稱。
當(dāng)直方圖ch[g,vl]之一中的觀察到的模式對應(yīng)于等于0、1、2或3的字節(jié)漢明權(quán)重(圖14a到14d)時,沿著平行于第一對角線的合并方向的單元格合并方案將非零單元格合并在一起,并且將零單元格合并在一起。當(dāng)將該單元格合并方案應(yīng)用于圖14a到14d的直方圖時,非零單元格的值在所得直方圖的一個(圖14a)、兩個(圖14b)、三個(圖14c)或四個(圖14d)單元格中彼此相加,而零或接近零的單元格被合并到所得的直方圖的其它單元中。
在對應(yīng)于等于5、6、7或8(分別在圖14f到14i中)的字節(jié)漢明權(quán)重的直方圖ch[g,vl]中的所觀察到的模式示出了沿著第二對角線延伸的非零單元格,該第二對角線從直方圖的第一行和最后一列交叉的單元格延伸到最后一行和第一列交叉的單元格。因此,沿著平行于第二對角線的合并方向的單元格合并方案將非零單元格合并在一起,并將零單元格合并在一起。當(dāng)將該單元格合并方案應(yīng)用于圖14f到14i的直方圖時,非零單元格的值在所得的直方圖的一個(圖14i)、兩個(圖14h)、三個(圖14g)或四個圖(14f)的單元格中彼此相加,而零或接近零的單元格被合并到所得直方圖的其它單元格中。沿平行于第一或第二對角線的合并方向合并單元格的單元格合并方案能夠被應(yīng)用于圖14e的直方圖,以將一個、三個、五個、七個和九個非零單元格的組合并成一個相應(yīng)的單元格。
沿著第一對角線的合并方案能夠被應(yīng)用于累積直方圖ch[g,vl],其中vl=0、1、2、3,并且沿著第二對角線的合并方案能夠被應(yīng)用于累積直方圖ch[g,vl],其中vl=5、6、7、8。沿著第一或第二對角線的任一合并方案能夠被應(yīng)用于累積直方圖ch[g,4]。
沿著第一對角線的合并方案能夠被計算如下:
其中ht是存儲二維直方圖ch[g,vl]之一的表,其大小為ht[0..ix,0..ix](在圖14a到14i的實例中,ix=8),rht是合并后的一維直方圖,k=0、...、2ix,max(a,b)是返回a和b中的最大值的函數(shù),min(a,b)是返回a和b中的最小值的函數(shù)。沿著第二對角線的合并方案能夠被計算如下:
其中k=0、1、...、2ix。
限定直方圖ch[g,vl]中要合并的單元格的合并方向不必沿著二維直方圖的一個或另一對角線延伸。圖15a、15b、15c示出累積直方圖ch[g,vl]、沿著除對角線之外的其它方向的合并方案,以及對應(yīng)的合并累積直方圖ch6[g,vl]、ch7[g,vl]、ch8[g,vl]。在圖15a中,合并方向平行于與單元格(行=1,列=1)、(2,2)、(3,2)、(4,3)、(5,3)、(6,4)、(7,4)...交叉的行。這種合并方案能夠被計算如下:
其中e(x)是返回低于數(shù)字x的最大整數(shù)的函數(shù),且k=0、...、ix+e(ix/2)。
在圖15b中,合并方向平行于與單元格(1,1)、(2,1)、(3,1)、(4,2)、(5,2)、(6,2)、(7,3)、...交叉的行,此合并方案能夠被計算如下:
在圖15c中,合并方向平行于與單元格(1,1)、(2,1)、(3,1)、(4,1)、(5,1)、(6,1)、(7,1)、...交叉的“垂直”線,此合并方案能夠被計算如下:
另外,取決于函數(shù)f1和f2以及這些函數(shù)所應(yīng)用到的數(shù)據(jù)的位數(shù),所選定的合并方案能夠適合于行數(shù)不同于列數(shù)的二維直方圖ch[g,vl]。
根據(jù)一個實施例,所述測試方法能夠包括:根據(jù)表ch中的每組累積直方圖的預(yù)期模式,選擇用于該組的合并方案;以及對于表ch中的每組累積直方圖,將選定的合并方案應(yīng)用于該組中的每個累積直方圖,或在每個直方圖被累積到累積直方圖中之前應(yīng)用于每個直方圖。
能夠根據(jù)表ch中的累積直方圖組的預(yù)期模式選擇合并方案。當(dāng)不能預(yù)期此類模式時,能夠針對累積直方圖表ch測試若干合并方案,以最終選擇“集中”有用數(shù)據(jù)(即,在合并后的直方圖中使高峰顯現(xiàn)的數(shù)據(jù))的最佳方案(多種)。
上述單元格合并操作能夠適合于通過在n階處應(yīng)用的測試方法獲得的n維直方圖(n大于1)。例如,在執(zhí)行三階測試時獲得的三維直方圖中,沿著一個方向或平行蹤跡的合并方案提供二維合并直方圖。合并沿著垂直于一個方向(例如直方圖的對角線軸)的平行表面或平面延伸的直方圖的單元格的合并方案直接提供一維合并直方圖。這種合并方案的一個實例能夠被計算如下:
ht是三維表ht[0..ix,0..ix,0..ix],并且k=0、1、...、3ix。
上述單元格合并操作也能夠被應(yīng)用于通過一階的測試方法獲得的一維直方圖,即包括:
提取每個蹤跡ci中的一個值子集ec1i,
對由被應(yīng)用于該值子集的值的第一滿射函數(shù)f1變換的值的每個值子集出現(xiàn)次數(shù)進(jìn)行計數(shù),以形成該值集的出現(xiàn)次數(shù)集或直方圖ht,
對于不同運(yùn)算的運(yùn)算集中的每個運(yùn)算以及機(jī)密數(shù)據(jù)部分的每個可能值q,計算部分運(yùn)算結(jié)果,
通過將對應(yīng)于運(yùn)算集中的運(yùn)算的出現(xiàn)次數(shù)集ht相加在一起來計算累積出現(xiàn)次數(shù)集ch,當(dāng)被應(yīng)用于機(jī)密數(shù)據(jù)部分的可能值的相同值或等價值時,該運(yùn)算提供具有應(yīng)用第二滿射函數(shù)f3所獲得的相同變換值vl的部分運(yùn)算結(jié)果,以及
通過處理單元分析累積出現(xiàn)次數(shù)集ch以確定機(jī)密數(shù)據(jù)部分,從而知道如果機(jī)密數(shù)據(jù)已經(jīng)泄漏到值集中,則在與機(jī)密數(shù)據(jù)部分的值g對應(yīng)的累積出現(xiàn)次數(shù)集中找到該機(jī)密數(shù)據(jù)。
引用的參考文獻(xiàn)
[1]作者p.c.kocher,“timingattacksonimplementationofdiffie-hellman,rsa,dss,andothersystems”,nealkoblitz編輯,advancesincryptology-crypto'96,計算機(jī)科學(xué)講義第1109卷,第104-113頁,springer,1996年。
[2]作者p.c.kocher、j.jaffe和b.jun,“”differentialpoweranalysis”,m.j.wiener編輯,advancesincryptology-crypto'99,計算機(jī)科學(xué)講義第1666卷,第388-397頁,springer,1999年。
[3]作者e.brier、c.clavier和f.olivier,“correlationpoweranalysiswithaleakagemodel”m.joye和j-j.quisquater編輯,cryptographichardwareandembeddedsystems-ches2004,計算機(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月。