測試電路對二階或更高階側信道分析的抵抗力的方法與流程
2023-06-03 03:27:46 1

本發明涉及一種用於測試電路的方法,具體涉及被設計為處理機密數據的電路,特別涉及用於通過使用密鑰的加密算法來變換消息的電路。
本發明特別涉及實現密碼算法的設備,諸如安全設備(智慧卡集成電路、安全元件、安全存儲卡)、行動裝置(行動電話、智慧型手機、物聯網)、家用和汽車設備、以及集成到計算機和其他電子和it設備(usb驅動器、電視解碼器、遊戲控制臺等)的母板上的硬體加密組件等。本發明還涉及包括加密運算的軟體,該軟體用於在安全或不安全的環境中執行。
本發明具體涉及實現諸如des(數據加密標準)或三重des、aes(高級加密標準)、rsa(rivest、shamir和adleman)、dsa(數字籤名算法)或ecdsa(橢圓曲線數字籤名算法)等加密算法之類的密碼算法的電路。本發明還涉及實現諸如hmac(密鑰散列消息認證碼)之類的散列函數的電路。
背景技術:
實現密碼算法的微電路配備有中央處理單元(cpu)。一些微電路配備有專用於密碼計算的電路,例如加密協處理器。這些微電路包括根據所執行的運算以不同的方式切換的數千個邏輯門。這些開關在電流消耗上產生短暫變化,例如可以被測量的幾納秒。具體而言,cmos型集成電路包括在切換時(即,當邏輯節點變為1或0時)才消耗電流的邏輯門。因此,電流消耗取決於中央單元處理的數據及其各種外圍設備(存儲器)上的數據、在數據或地址總線上流動的數據、密碼協處理器等。
此外,具體使用加密或模糊技術(諸如「白盒密碼術」技術)產生的某些軟體程序可以以使得難以通過逆向工程確定的方式來集成機密數據。某些軟體程序還可以通過安全通信信道從外部接收機密數據。當觀察到這些微電路的電流消耗、或它們的磁或電磁輻射、或可以在執行加密算法的同時觀察到的其它任何信息時,這些微電路可能會受到所謂的側信道分析攻擊。此類攻擊旨在發現它們使用的機密數據,特別是它們的加密密鑰。頻繁的側信道攻擊實施諸如spa(「單功耗分析」)、dpa(「差分功耗分析」)、cpa(「相關功耗分析」)或ema(「電磁分析」)之類的統計分析方法。spa分析(參考文獻[1])通常只需要獲取單個電流消耗蹤跡。其目的是通過觀察對應於密碼計算的消耗蹤跡的一部分來獲得關於集成電路的活動的信息,因為當前蹤跡根據所執行的運算和所處理的數據而變化。
軟體在被電路執行期間也可能經歷這種側信道攻擊。
dpa(參考文獻[2])和cpa分析使得能夠通過獲取大量數據或測量蹤跡並通過對這些蹤跡進行統計分析以查找搜索的信息來找到加密算法的密鑰。它們基於這樣的前提:即,當寄存器中或總線上的位從0變為1時,cmos型集成電路的消耗發生變化,以及當位保持等於0、保持等於1或從1變為0(mos電晶體的寄生電容的放電)時,其不發生變化。或者,可以認為當位從0變為1或從1變為0時,cmos型集成電路的消耗發生變化,並且當位保持等於0或保持等於1時,cmos型集成電路的消耗不變。該第二假設使得能夠使用常規的「漢明距離」或「漢明權重」函數來開發不需要已知集成電路的結構可應用的消耗模型。dpa分析涉及通過對大量消耗蹤跡的統計處理來放大該消耗差異,目的在於突出根據公式假設區分的兩個消耗蹤跡族之間的測量差異。
cpa分析(參考文獻[3])基於線性電流消耗模型,並且涉及計算首先所測量的形成捕獲的消耗蹤跡的消耗點與其次根據線性消耗模型和有關由微電路處理的待發現的變量以及有關加密密鑰的值的假設而計算的推定消耗值之間的相關係數。
電磁分析(ema)基於如下原理:即,微電路可以以近場或遠場電磁輻射的形式洩漏信息。假設電晶體在其狀態改變時發射電磁信號,則可以通過諸如spa、dpa和cpa分析中的一種或其它分析,像電流消耗變化信號那樣處理這些信號。此分析的一個應用實例由jean-jacquesquisquater(參考文獻[4])做出。
存在其它側信道攻擊,例如「模板攻擊」(參考文獻[5])和「交互信息分析」(mia)(參考文獻[6])。所有上述攻擊都基於所有被分析的蹤跡的時間對準。換言之,在給定時間(例如從命令的執行被電路激活的時間)執行的所有測量必須對應於由算法處理的相同值。
為了保護此類電路及其執行的密碼算法免受這些側信道攻擊,通常提供應對措施。幾種普遍的應對措施均旨在避免這種時間對準。為此,這些應對措施引入為計算電路定速的時鐘頻率的變化,或引入偽時鐘周期或偽運算。
有時可以藉助特定的專業知識以及多次嘗試來恢復這種時間對準,特別是使用大量要被重新對準的蹤跡或應用一些信號處理。儘管如此,仍存在以下情況:即,不能恢復這種時間對準,這樣,即使在蹤跡中存在機密數據洩漏,側信道測試也會失敗。
另幾種應對措施涉及藉助偽密鑰或偽消息來多次執行加密方法。為此,提供了例如控制加密程序或協處理器的應對措施程序,該程序以隨機的順序,通過偽密鑰多次執行加密方法,從而使得通過正確的密鑰(即,真實的密鑰)對加密方法的執行被「隱藏」在一組偽執行中。通過多次執行實現這種應對措施提供了以下優點:即,可以通過不包括任何特定的應對措施手段的常規協處理器來實現此應對措施。
另幾種應對措施涉及使得要保護的算法適合獨立於由電路處理的數據的實際值來呈現這些數據。這幾種應對措施中的某些應對措施被稱為「掩蔽型應對措施」-使用隨機掩碼(二進位數),在執行加密方法期間,這些隨機掩碼與另一要保護的數據(例如密鑰和/或消息)組合在一起。此類應對措施是有效的,但是需要修改算法,因此,在由專用協處理器執行的情況下,需要專用於實現此應對措施的協處理器,或者在由微電路的中央處理單元或編程協處理器執行的情況下,需要更複雜的程序。此外,此類應對措施易經受所謂的「二階攻擊」,此攻擊基於對一組信號蹤跡的分析,通過組合相應蹤跡的兩個部分來獲得每個信號蹤跡。作為一個實例,這些信號蹤跡中的每一個組合了應持有與由待發現的數據值和隨機掩碼值的組合產生的數據相關的洩漏的信號部分、以及應持有隨機掩碼值的洩漏的信號部分。參考文獻[7]公開了組合時間信號部分以獲得與待發現的數據值相關的信號蹤跡的不同方式。但是,由於要求組合信號部分在被組合之前需要在時間上嚴格對準,因此這種二階攻擊面臨困難。如果不滿足此要求,則組合後的信號蹤跡不包含能夠通過常規統計分析提取的有用信息,或者組合後的信號蹤跡包含有用信息,但是此信息不能通過常規統計分析提取。因此,二階攻擊對基於各種時間未對準的應對措施非常敏感,例如導致為電路定速的時鐘周期的持續時間隨機改變的應對措施,或者在隨機選擇的時間引入偽處理周期或運算的應對措施。
為了檢查旨在上市的安全集成電路提供的安全級別,在電路上市之前安排資格和/或認證測試,這些測試具體包括集成電路防側信道分析的魯棒性測試,目的是發現由集成電路處理的機密數據。還有一些測試可以評估軟體程序對側信道攻擊的抵抗力。
因此,期望提出一種用於測試電路或軟體程序對二階側信道攻擊的抵抗力的方法,其具體能夠檢測機密數據洩漏,而不需要對電流消耗蹤跡或表示電路活動的其它任何物理或邏輯量的任何先前時間對準處理。還希望此方法能夠獨立於執行軟體程序或應用的電路來測試軟體程序或應用的魯棒性。
還可能期望將此測試方法集成到旨在檢查電路或由給定電路執行的軟體對側信道分析的抵抗力以及它們在信息洩漏方面的嚴密性的工業資格和/或認證處理中。
還可能期望提出在包括這種測試方法的資格和/或認證過程之後,使得集成電路或軟體程序能夠被認為能夠在產品中使用的應對措施手段。
技術實現要素:
某些實施例涉及一種測試方法,包括:獲取多個值集,每個值集包括物理量或邏輯信號的值,當受測試電路執行被應用於待發現的相同數據的不同密碼運算的運算集中的運算時,所述值集與所述電路的活動關聯;選擇每個值集中的至少兩個值子集;對於每個值集,計算將每個值子集中的一個值組合在一起的組合值;對於每個值集,通過處理單元對由被應用於該值集中的所述組合值的第一滿射函數變換的值的出現次數計數,以形成該值集的出現次數集;對於所述運算集中的每個運算以及待發現的數據的一部分的每個可能值,通過所述處理單元計算部分運算結果;通過所述處理單元計算累積出現次數集,所述累積出現次數集是通過將對應於所述運算集中的運算的出現次數集相加而獲得的,當被應用於所述待發現的數據的所述部分的可能值的相同值或等價值時,所述運算提供具有應用第二滿射函數所獲得的相同變換值的部分運算結果;以及通過所述處理單元分析所述累積出現次數集以確定所述待發現的數據的所述部分,從而知道如果所述待發現的數據已經洩漏到所述值集中,則在與所述待發現的數據的所述部分的值對應的所述累積出現次數集中找到所述待發現的數據。
根據一實施例,通過以下操作獲得值集的所述組合值:將每個子集中的每個值相乘在一起,或者計算第一子集中的每個值與第二子集中的每個值之間的正差,或者將每個子集中的每個值與該子集中的值的平均值之間的差相乘在一起。
根據一實施例,所述方法進一步包括:向所述電路發送多個不同的命令,每個命令觸發由所述電路執行被應用於所述待發現的數據的所述運算集中的運算之一;以及在由所述電路執行所述運算集中的一個運算期間,由測量設備收集所述值集中的一個值集的值。
根據一實施例,每個值集的所述子集包括相應不同信號的測量。
根據一實施例,所述值集包括:所述電路的電流消耗的測量,和/或由所述電路發射的電磁輻射的測量,和/或所述電路周圍存在的磁場的吸收的測量,和/或在所述電路中收集的邏輯信號或數字值。
根據一實施例,其中所述第一和第二滿射函數中的每一者是以下函數之一:恆等函數;這樣的函數:其提供結果值,該結果值然後被簡化為對應於漢明權重的值;這樣的函數:其提供該函數被應用到的值的漢明權重;或這樣的函數:其提供值與該函數被應用到的先前值之間的漢明距離。
根據一實施例,所述方法進一步包括:如果分析步驟確定所述待發現的數據的所述部分,則拒絕所述電路或由所述電路執行的程序。
根據一實施例,針對所述待發現的數據的先前確定的部分和所述待發現的數據的另一部分,執行計算所述待發現的數據的一部分的每個可能值的運算結果的步驟、計算所述累積出現次數的步驟、以及分析所述累積出現次數的步驟。
根據一實施例,每個值集中的選定子集包括:該值集的連續值,和/或該值集的非連續值,和/或該值集的局部極值,和/或該值集的全部值。
根據一實施例,所述運算集中的所述運算包括將單個運算應用於所述待發現的數據以及應用於輸入數據集中的輸入數據,所述單個運算包括以下運算中的至少一者:對稱或不對稱加密或解密運算;籤名運算;與所述待發現的數據的模乘或非模乘;與所述待發現的數據的邏輯異或運算;模冪運算,所述待發現的數據被用作指數;模簡化運算,所述待發現的數據被用作模數;採用使用輸入值在替換表中選擇的值的替換運算;組合了與所述待發現的數據的邏輯異或運算和替換運算的運算,所述替換運算以使用所述邏輯運算的結果在替換表中選擇的值替換所述邏輯運算的結果。
根據一實施例,所述累積出現次數集的分析包括:對於每個累積出現次數,通過將該累積出現次數除以在該累積出現次數中累積的對應數量的出現次數來計算正規化累積出現次數;對於所述待發現的數據的所述部分的每個可能值和變換後的部分結果的每個可能值,計算對應於所述待發現的數據的所述部分的該可能值和所述變換後的部分結果的該可能值的每個正規化累積出現次數與被除以運算次數的所述累積出現次數的平均值之間的差值平方和;對於所述待發現的數據的所述部分的每個可能值,計算與所述變換後的部分結果的所述可能值對應的累積總差值和;以及相互比較所述累積總差值和,並且檢測所述待發現的數據的所述部分的可能值的所述累積總差值和之一是否大於另一累積總差值和。
根據一實施例,所述累積出現次數的分析包括:對於所述待發現的數據的所述部分的每個可能值和變換後的部分結果的每個可能值,計算所述累積出現次數的累積總和;對於每個累積出現次數,通過將出現次數和除以累積出現次數的對應累積總和來計算正規化累積總和,並計算所述正規化累積總和與所述正規化累積總和的對數的乘積;對於所述待發現的數據的所述部分的每個可能值和變換後的部分結果的每個可能值,計算與所述待發現的數據的所述部分的該可能值和所述變換後的部分結果的該可能值對應的所述乘積的和;對於所述待發現的數據的所述部分的每個可能值,計算與所述變換後的部分結果的所述可能值對應的累積總乘積和,每個乘積和被乘以對應數量的出現次數和;以及相互比較所述累積總乘積和,並且檢測所述待發現的數據的所述部分的可能值的所述累積總乘積和之一是否大於另一累積總乘積和。
實施例還可以涉及一種用於測試電路的系統,所述系統包括:測量設備,其被配置為獲取多個值集,每個值集包括物理量或邏輯信號的值,當受測試電路執行被應用於待發現的相同數據的不同密碼運算的運算集中的運算時,所述值集與所述電路的活動關聯;以及處理單元,其被配置為實現先前定義的方法。
根據一實施例,所述系統進一步包括測量探頭,其耦合到所述測量設備以獲取與所述電路的活動相關聯的蹤跡。
根據一實施例,所述系統進一步包括仿真器,其執行要測試的應用。
實施例還可以涉及一種電腦程式產品,其可加載到計算機的內部存儲器中並包括代碼部分,當由計算機執行時,所述代碼部分配置所述計算機以執行上面定義的方法的步驟。
附圖說明
下面將結合但不限於附圖來描述僅為了例示目的而提供的本發明的實施例的一些實例,其中:
圖1示意性地表示安全電路的常規架構;
圖2示意性地表示集成電路測試系統的一個實例;
圖3表示在由安全電路執行加密運算期間獲取的信號的蹤跡;
圖4表示根據一個實施例的用於測試電路的方法的步驟;
圖5以圖的形式表示了滿射函數的一個實例;
圖6示意性地表示根據一個實施例構建的用於執行統計處理的表;
圖7表示根據另一實施例的用於測試電路的方法的步驟;
圖8和9表示根據各種實施例的用於對通過測試方法獲得的值集進行統計分析的方法的步驟;以及
圖10和11以曲線的形式表示由圖8和9的分析方法提供的結果表。
具體實施方式
作為一個實例,圖1表示安全集成電路ct,該集成電路例如布置在諸如塑料卡或任何其它介質的可攜式介質hd上,或者布置在諸如移動終端、智慧型電話、iot設備等終端中。所述集成電路包括微處理器prc、輸入/輸出電路ioc,通過數據和地址總線耦合到微處理器的存儲器m1、m2、m3以及可選地包括加密計算協處理器cp1或算術加速器,以及隨機數發生器rgn。存儲器m1是包含易失性應用數據的ram型(「隨機存取存儲器」)存儲器。存儲器m2是包含非易失性數據和應用程式的非易失性存儲器,例如eeprom或快閃記憶體。存儲器m3是包含微處理器的作業系統的只讀存儲器(或rom存儲器)。
通信接口電路ioc可以是例如根據iso/iec7816標準的接觸型電路,例如根據iso/iec14443a/b或iso/iec13693標準的具有感應耦合的非接觸型電路,藉助電耦合的非接觸型電路(uhf接口電路),或同時為接觸型和非接觸型電路。接口電路ioc還可以通過特定接口耦合到諸如nfc(近場通信)控制器的另一電路,或者諸如移動終端或連接對象的終端的主電路。
在某些實施例中,集成電路ct可以被配置為通過加密功能執行對發送給它的消息進行加密、解密或籤名的操作。該加密功能可以由電路ct的處理器prc執行,或者部分地或完全地由處理器prc的協處理器cp1執行。
圖2表示根據一個實施例的用於實現測試方法的集成電路測試系統的一個實例。例如假定測試系統被配置為測試圖1中的集成電路ct。
圖2的測試系統包括耦合到諸如數字示波器的測量設備md的測量探頭pb,以獲取與電路的活動相關的蹤跡,諸如電流消耗或電磁信號變化的蹤跡,以及包括諸如個人計算機pc的計算部件。計算機pc耦合到測量設備並且實現測試程序。該測試程序具體地包括通信接口、用於與集成電路通信並用於向集成電路發送消息的程序、信號處理程序,以及用於實現根據本發明的方法的計算步驟的程序。在集成電路是非接觸式電路的情況下,通信接口可以包括非接觸式讀卡器。
探頭pb可以是電流探頭(例如放置在集成電路的電源端子vcc上的電阻器)或者通過信號放大器amp耦合到測量設備的電磁探頭。或者,電流探頭可以與電磁探頭組合。電磁輻射的研究實際表明,工作中由電路發射的電磁場提供關於集成電路中的位開關的信息,就像消耗的電流的測量一樣。電磁探頭的優點是它可以放置其操作需要分析電路部分附近(例如靠近微處理器prc的核心或密碼計算協處理器cp1的核心)。
此外,在非接觸式集成電路的情況下,電流探頭可以用電感探頭代替,電感探頭測量集成電路對讀取器發射的磁場的吸收。這種電感探頭(例如天線線圈)本身能夠與放置在要研究的電路區域附近的電磁場探頭組合。
因此,在本申請中,為了簡化語言而使用的短語「電流消耗」指任何可測量的物理量,其隨時間的變化表示集成電路內部或所研究的集成電路部分內部的二進位數據的切換,該物理量能夠在集成電路的端子處或在所研究的集成電路部分附近被測量。此外,以高得足以收集感興趣的數據周期內的多個點的採樣頻率對物理量進行採樣,實際上形成大量蹤跡,其中每個蹤跡包含10到數十萬個點,但是也可以考慮在每個蹤跡中收集幾百萬個值或甚至更多值。
本申請還涉及一種用於測試軟體程序或應用的方法。在這種情況下,軟體程序可以由測試系統直接執行或由測試系統所執行的仿真程序執行。因此,所分析的蹤跡例如可以是當訪問存儲器時被發送到存儲器的一系列值,或在電路的寄存器中處理的數據,甚至是被發送到電路的通信接口的數據,這些發送由受測試的軟體程序控制。
所述測試方法的某些實施例基於對信號或數字值的隨時間變化的蹤跡的詳細觀察,這些蹤跡表示在受測試電路執行被應用於待發現的數據(下文稱為「機密數據」)的運算時所述電路的操作。
圖3表示可以由測試系統獲取的一段時間上的值的蹤跡c0、c1、...cix。這些蹤跡中的每一者已經通過使受測試的電路或軟體程序執行運算而獲得。對應於蹤跡c0、c1、...cix的運算通常都是不同的。這些運算不同例如是因為它們涉及將同一函數應用於不同的已知輸入數據,例如要加密、解密或籤名的消息或要檢查的籤名,或要計算的hmac(密鑰-散列消息認證碼)。或者,已知數據可以是函數的輸出數據、或該函數的輸入和輸出數據的一部分,而非其輸入數據。
所述函數可以是應用於相同機密數據sd和輸入數據m的任何函數,諸如對稱或不對稱加密或解密運算、或甚至籤名運算、或者僅僅是與機密數據的模乘或非模乘(m×sd)、與機密數據的邏輯xor函數(異或)(mxorsd)、模冪函數(機密數據被用作指數(msdmodn,n是已知的))、模簡化函數(機密數據被用作模數(mmodsd))。所述函數的另一實例涉及使用替換表(sbox[mxorsd],sbox是替換表)來處理xor運算的結果,如在des和aes加密算法的情況下。更一般地,該函數必須能夠基於機密數據的一部分和輸入數據來計算由運算產生的值的一部分。
在圖3的實例中,蹤跡c0,c1,…ci,…cix分別對應於輸入(或輸出)數據m[0]、m[1]、...m[i]、...m[ix]。每個蹤跡ci可以由從在同一受測試電路上測量的同一信號獲取的樣本形成,或者可以包括來自當受測試電路操縱數據m[i]時捕獲的不同信號的樣本。
圖4表示步驟s1到s20,這些步驟處理在執行被應用於待發現的機密數據和被應用於也已知的輸入數據m[0]...m[ix]的已知加密運算oprk期間由測試系統收集的值。根據一個實施例,該測試的目的是例如判定機密數據的值是否洩漏到形成圖3的蹤跡的所收集的值中。處理單元pc首先執行步驟s1到s9。
在步驟s1,測試系統的處理單元pc將輸入數據m[0]...m[ix]上的循環的索引i以及表ch設定為0。在步驟s2,處理單元pc通過要測試的電路mct或軟體程序激活運算oprk的執行,該運算接收數據m[i],機密數據被提供給電路mct或軟體程序執行的運算。在步驟s3,處理單元pc收集構成蹤跡ci的值。在步驟s4,選擇蹤跡ci的值的部分ec1i、ec2i(圖3),只有這些部分在以下處理步驟中被處理。在圖4的實例中,為了簡單起見,部分ec1i、ec2i由蹤跡ci的與部分ec1i的索引k1和k1x以及與部分ec2i的索引k2和k2x對應的值來界定。實際上,索引k1、k1x、k2和k2x可以從一個蹤跡ci變化到下一個蹤跡ci。此外,與現有技術的側信道分析相比,每個蹤跡中以此方式選定的值不一定是連續的,並且每個部分ec1i、ec2i中的值的數量在每個蹤跡ci中可能彼此不同,並且在一個蹤跡ci與下一個蹤跡之間可能是不同的。因此,例如可以選擇從每個蹤跡ci中僅提取最大或最小局部值。還應注意,所提取部分ec1i、ec2i可以包括整個蹤跡ci。在下面的處理中,假設以此方式提取的數據包含一條關於被被搜索的機密數據的信息。每個蹤跡ci(i=0…ix)可以包括來自在受測試電路操縱數據m[i]的同時獲取的不同信號的樣本值。在這種情況下,部分ec1i例如可以包括從第一信號提取的樣本值,並且部分ec2i包括從第二信號提取的樣本值。
在步驟s5,將所提取部分ec1i中的每個點與所提取部分ec2i中的每個點相組合,以形成要在下面的步驟處理的點集wi(圖3)。根據某些實例,可以根據下面等式之一計算每個點wi[j]:
wi[j]=ec1i[m1]xec2i[m2],(1)
wi[j]=|ec1i[m1]–ec2i[m2]|,(2)
wi[j]=|ec1i[m1]–m(ec1i)|x|ec2i[m2]–m(ec2i)|,(3)
m1和m2是範圍分別從k1到k1x(m1)以及從k2到k2x(m2)的索引,j是範圍從0到(k1x-k1+1)(k2x-k2+1)-1的索引,|x|表示值x的絕對值,並且m(ec)表示點集ec的算術平均值。因此,對於所提取部分ec1i的點和所提取部分ec2i的點的每個可能組合,每個點集wi包括不同值wi[j]。
在步驟s6,處理單元pc將循環索引j以及表ht設定為0。在步驟s7,處理單元pc對點集wi的索引j的點值wi[j]應用滿射函數f1,並且使表ht中的值遞增一(1),該值由等於函數f1提供的結果的索引來指定。在步驟s8,索引j遞增一(1)。在步驟s9,將索引j與其最大值進行比較,以判定是否已經如此處理了點集wi中的全部值。根據等式(1)、(2)和(3),能夠根據點集wj中的點的數量計算j的最大值。能夠通過將點集ec1i中的點的數量乘以點集ec2i中的點的數量,即(k1x-k1+1)(k2x-k2+1),計算點集wj中的點的數量。一旦處理了點集wi中的全部值,處理單元pc就執行步驟s10到s15,否則再次執行步驟s7到s9。以這種方式,加載到表ht的點集wi中的值具有指定由函數f1返回的每個可能值的出現次數的直方圖形式,以使得與點集wi中的值相關的時間特徵不包括在表ht中:表ht的內容使得不能確定集合中的值被收集的順序。圖5表示採取圖的形式的使用函數f1計算的值(在x軸上)的出現次數(在y軸上)的表ht的一個實例。在圖5的實例中,函數f1返回根據8位編碼值計算的漢明權重。
在步驟s10,處理單元pc將索引g設定為0。在步驟s11,處理單元pc對數據m[i]和待確定的機密數據sd的一部分(被設定為等於索引g)應用運算opr。運算opr(m,g)假定提供在步驟s2執行的運算oprk(m)(=opr(m,sd))的結果的一部分。由運算opr提供的結果被提供值vl的滿射函數f2處理。在步驟s12,處理單元pc將索引l設定為0。在步驟s13,處理單元pc在由索引g、vl和l指定的位置處將存儲在三維表ch中的值遞增表ht中對應於數據m[i]的索引l處的值ht[1]。圖6表示表ch的一個實例,其中由索引g和vl指定的每個位置ch[g,vl]包含根據在步驟s12獲得的值vl組合若干表ht而獲得的表。在步驟s14,索引l遞增一(1)。在步驟s15,考慮到由函數f1提供的可能不同值的數量,將索引l與其最大值lx進行比較。如果索引l小於或等於其最大值lx,則再次執行步驟s13到s15,否則(當索引l大於其最大值1x)時,執行步驟s16和s17。
在步驟s16,處理單元pc使索引g遞增一(1)。在步驟s17,考慮到所考慮的機密數據部分的可能不同值的數量,處理單元pc將索引g與其最大值gx進行比較。如果索引g小於或等於最大值gx,則執行從步驟s11到步驟s17的新迭代,否則(當索引g大於其最大值gx時),執行步驟s18和s19。在步驟s18,處理單元pc使索引i遞增一(1)以處理另一蹤跡ci。在步驟s19,處理單元pc將索引i與其最大值ix(對應於所生成的蹤跡ci的數量)進行比較。如果索引i小於或等於最大值ix,則再次執行步驟s2到s19,否則(當索引i大於其最大值ix時),則執行步驟s20。在步驟s20,包含在位置[g,vl]處的表ch中的累積總和的每個表包含以下值:
在上述總和中要考慮的數據m[i]使得f2(opr(m[i],g))=vl。
在步驟s20,處理單元pc對表ch執行統計分析,旨在判定索引g的值是否對應於要搜索的機密數據部分。為此,考慮從機密數據的洩漏獲得的信息已經累積在表ch中的行g的位置中,而獨立於機密數據的信息被隨機地或均勻地分布在表ch中。因此,如果表ch的索引g的行包含比該表的其餘部分更高的值,則表ch中的該行的索引g的值對應於要搜索的機密數據sd的該部分的值。在這種情況下,能夠認為機密數據sd已經洩漏到所收集的形成蹤跡ci的數據中。
可以選擇函數f1和f2以使其對應於要測試的電路或軟體程序的洩漏模式。因此,函數f1和f2可以彼此相同或不同,並且可以被選擇以最大化發現由電路操縱的機密數據的概率。例如,函數f1和f2可以是以下函數之一:
-恆等函數,
-這樣的函數(例如,形式為f(x)=a·x+b):其結果值可以被簡化為對應於漢明權重的值,例如當x在8位上被編碼時介於值0與8之間,
-這樣的函數:其計算在該函數的輸入處提供的值的漢明權重,例如二進位編碼值的1處的位數,或者
-這樣的函數:其計算與另一值的漢明距離,例如這兩個值中的1處的位數之間的差。
應當注意,函數f1和f2的選擇可以影響要執行以確定所考慮的機密數據部分的表ch的統計處理的複雜性,以及確定要搜索的機密數據部分的值的統計處理的成功性。
通過執行步驟s1到s20搜索的機密數據部分例如可以在8或16位上定義。在8位的情況下,索引g被連續地分配給0和255(或1和256=28)之間的全部值。應當注意,測試g的值的順序對於測試的結果而言不重要。要搜索的機密數據部分也可以在諸如16、32或64位的較寬的字上定義。
機密數據sd的另一部分可以通過使用先前確定的機密數據部分的值並通過將機密數據的另一部分強制到索引g的不同可能值來執行步驟s10到s20而確定。為此,能夠在步驟s4提取蹤跡ci的相同部分ec1i、ec2i或這些蹤跡的其它部分。
應當注意,在執行圖4中的其它步驟之前,可能已經收集了形成蹤跡ci的值集(步驟s2和s3)。另外,在執行步驟s10到s20之前,可能已經針對每個蹤跡ci構成表ht。
應用於機密數據sd和輸入數據m[i]的運算opr/oprk可以是以下運算之一或它們的組合:
-對稱或不對稱加密或解密運算,其中機密數據sd是加密或解密密鑰,
-使用機密數據sd的籤名運算,
-與機密數據的模乘或非模乘(m[i]×sd),
-與機密數據的異或邏輯運算(異或)(m[i]xorsd),
-模冪運算,其中機密數據sd被用作指數(m[i]sdmodn,n是已知的),
-模簡化運算,其中機密數據sd被用作模數(m[i]modsd),
-採用使用輸入數據在替換表中選擇的值的替換運算(sbox[m[i]],sbox位於替換表中),以及
-組合了以下兩種運算的運算:即,應用於機密數據的邏輯異或運算,和採用使用異或運算的結果在替換表中選擇的值替換邏輯運算的結果的替換運算(sbox[m[i]xorsd])。
更一般地,該運算必須使得能夠僅基於機密數據的一部分和輸入數據來計算運算的最終值的一部分。
為了突顯與有關機密數據的信息對應的累積值,可以將所有表ht的內容彼此相加,以獲得由函數f1返回的每個可能值的累積出現次數表。從表ch[g,vl]的位置中累積的所有表中減去該累積總和表的值。因此,可以根據圖7所示的順序來修改圖4中的步驟序列。圖7所示的步驟包括上述步驟s10到s20以及附加的步驟s21、s22和s23。在步驟s10之前執行的步驟s21中,索引i、一維表mht和二維表cpt被設定為0。在步驟s10,二維表ht[0..ix,1]之前已經填充了包含針對所有蹤跡ci在步驟s7生成的所有表。將步驟s22插入由索引l控制的循環(在步驟s13和s15之間),由此可以例如在步驟s13之後選擇由函數f1提供的值中的一個。在步驟s22,處理單元pc將每個值ht[i,l]累積在由索引l指定的位置處的累積總和表mht中。以這種方式,在處理結束時,表mht將包含針對每個蹤跡ci獲得的索引i的全部值ht[i,l]的和。在由索引i控制的循環的每次迭代時執行一次步驟s23,從而例如可以在步驟s15之後選擇蹤跡ci中的一個。步驟s23使能對累積在表ch的每個位置ch[g,vl]中的表ht[i,l]的數量計數。該計數的結果被存儲在表cpt中。
圖8表示為了嘗試確定要搜索的機密數據sd的一部分的值而執行的表ch的統計處理的一個實例的步驟s31到s43。連續執行步驟s31到s37。在步驟s31,將索引vl設定為0,並且將表tt的所有位置設定為1。在步驟s32,將索引g和表it的所有位置設定為0。在步驟s33,將索引l被設定為0。在步驟s34,變量t接收由索引g、vl和l選擇的包含在表ch中的值ch[g,vl,l],該值被除以位於表cpt中的位置cpt[g,vl]處的計數值。在步驟s35,位於表it中的位置g處的值it[g]按照變量t的值與被除以蹤跡ci的總數ix的、由索引g和vl指定的存儲在表mht中的值mht[g,vl]之間的差的平方遞增。在步驟s36,索引l遞增一(1)。在步驟s37,將索引l與其最大值lx進行比較。如果索引l已經達到其最大值1x,則執行步驟s38到s40,否則執行從步驟s34開始的新迭代。
在步驟s38,用在步驟s35到s37計算的值it[g]乘以表tt中由索引g指定的值tt[g]來更新值tt[g],執行1x次。在步驟s39,索引g遞增一(1)。在步驟s40,將索引g與其最大值gx進行比較。如果索引g大於其最大值gx,則執行步驟s41和s42,否則執行從步驟s33開始的新迭代。在步驟s41,索引vl遞增一(1)。在步驟s42,將索引vl與其最大值vlx進行比較。如果索引vl大於其最大值vlx,則執行步驟s43,否則執行從步驟s32開始的新迭代。在步驟s43,作為統計分析的結果返回表tt。
因此,在包括步驟s32到s42的處理循環的最後一次迭代時,表it和tt包含以下值:
其中並且
其中運算符「==」表示當相等為真時等於1的相等測試,並且當相等為假時,相等測試為0,表it在步驟s32被設定為0,並且在步驟s35針對索引vl的每個新值加載表it。
因此,cpt[g,vl]表示條件(f2(opr(m[i],g))==vl)為真的次數。如果在執行運算oprk時機密數據sd被洩漏,則表tt的一個位置包含比該表中存儲的其它值高得多的值。結果是要搜索的機密數據sd的所述部分等於表tt中的最高值的索引g。
應當注意,在對應於等式(6)的步驟s38,可以加上表it的值而不是相乘。乘法運算的實現只是允許增大表tt的各值之間的差,因此更好地突顯對應於要搜索的機密數據部分的最高值。還可以考慮將對數函數應用於表it的值,並且對在表tt中所獲得的對數值執行加法累積。當表it的值相加時,它們能夠按照以下方式被加權:
圖9表示為了嘗試確定要搜索的機密數據sd的一部分的值而執行的表ch的統計處理的另一實例的步驟s51到s67。該處理基於香農熵函數。連續執行步驟s51到s56。在步驟s51,將索引g設定為0,並且將表tt的所有位置設定為0。在步驟s52,將索引vl設定為0。在步驟s53,將索引l和變量sxy設定為0。在步驟s54,使變量sxy按照由索引g、vl和l指定的表ch中選擇的值ch[g,vl,l]遞增。在步驟s55,索引l遞增一(1)。在步驟s56,將索引l與其最大值lx進行比較。如果索引l已經達到其最大值lx,則執行步驟s57到s61,否則執行從步驟s54到步驟s56的新迭代。在步驟s57,將索引l和變量pxy設定為0。在步驟s58,變量vxy接收索引g、vl和l在表ch中選擇的值ch[g,vl,l],該值被除以通過步驟s54到s56的迭代計算的變量syx。在步驟s59,變量pxy按照變量vxy與變量vxy的對數(例如,以2為底數)的乘積遞增。在步驟s60,索引l遞增一(1)。在步驟s61,將索引l與其最大值lx進行比較。如果索引l已經達到其最大值lx,則執行步驟s62到s64,否則執行從步驟s58到步驟s61的新迭代。
在步驟s62,通過從由表tt中的索引g指定的值tt[g]中減去被除以蹤跡ci的數量ix的值cpt[g,vl]與變量pxy的乘積來更新值tt[g],值cpt[g,vl]由在步驟s22填充的表cpt中的索引g和vl指定。在步驟s63,索引vl遞增一(1)。在步驟s64,將索引vl與其最大值vlx進行比較。如果索引vl大於其最大值vlx,則執行步驟s65和s66,否則執行從步驟s53開始的新迭代。在步驟s65,索引g遞增一(1)。在步驟s66,將索引g與其最大值gx進行比較。如果索引g大於其最大值gx,則執行步驟s67,否則執行從步驟s52開始的新迭代。在步驟s67,作為統計分析的結果,返回表tt。
因此,在執行最後一次迭代時,在步驟s65之後,表tt包含以下值:
其中針對索引g和vl的每個值計算並且索引g的每個值表示要搜索的密鑰部分的可能值。如果機密數據sd在處理運算oprk時被洩漏,則表tt的一個位置包含比該表中存儲的其它值高得多的值。結果是要搜索的機密數據sd的所述部分等於表tt中的最高值的索引g。
圖10和11以曲線cc1、cc2的形式表示作為索引g的函數的表tt的內容的一個實例。曲線cc1已經通過執行圖8中的步驟獲得,曲線cc2已經通過執行圖9中的步驟獲得。在圖10和11的實例中,索引g具有一個字節的長度(從而從0變化到255),並且曲線cc1和cc2已經通過數量達到500,000的大量蹤跡ci獲得。與表tt中包含的其它值相比,曲線cc1和cc2在值g=168處具有明顯的峰值。曲線cc1中的峰值比表tt的其它值約大三十倍。在曲線cc2中,峰值比表tt的其它值大三倍。取決於表ch的統計處理,可以認為,當通過增加所分析的蹤跡ci的數量而獲得的峰值保持為比最接近的值大0.9倍的值時,要搜索的機密數據部分洩漏。
為使諸如集成電路的電路能夠成功地通過已知的資格或認證程序,這些電路的設計者提供了涉及引入時間變量的最常規的應對措施。表ht中的值的計算允許從所分析的值中移除時間方面,並且避免必須同步或在時間上對準所分析的值的不同蹤跡。如果關於要搜索的機密數據的信息在所分析的數據中,則先前描述的測試方法使能確定所有或部分機密數據。因此,先前描述的測試方法能夠檢測由電路操縱的機密數據是否在能夠從該電路外部獲取的信號中洩漏。
因為先前描述的測試方法組合了每個蹤跡ci中的兩個部分ec1i、ec2i,所以其為二階方法。通過選擇每個蹤跡ci中的n個部分ec1i到ecni,並且通過將測試方法應用於每個可能的不同組合,能夠將先前描述的測試方法應用於n階(n大於2),該每個可能的不同組合根據以下等式,將每個蹤跡ci中的每個部分ecki(k的範圍從1到n)中的一個值組合在一起:
其中mk的範圍從kk到kxk,並且j的範圍從0到
引用的參考文獻
[1]作者p.c.kocher,「timingattacksonimplementationofdiffie-hellman,rsa,dss,andothersystems」,nealkoblitz編輯,advancesincryptology-crypto'96,計算機科學講義第1109卷,第104-113頁,springer,1996年。
[2]作者p.c.kocher、j.jaffe和b.jun,「」differentialpoweranalysis」,m.j.wiener編輯,advancesincryptology-crypto'99,計算機科學講義第1666卷,第388-397頁,springer,1999年。
[3]作者e.brier、c.clavier和f.olivier,「correlationpoweranalysiswithaleakagemodel」m.joye和j-j.quisquater編輯,cryptographichardwareandembeddedsystems-ches2004,計算機科學講義第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.、c.k.、paar、c(編輯)ches2002.lncs,第2523卷,第172-186頁,springer,heidelberg(2003年)。
[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月。