本發(fā)明總體上涉及電子電路,并且更具體地涉及用于保護(hù)這種電子電路的系統(tǒng)和方法。
現(xiàn)有技術(shù)
制造電子組件需要極其復(fù)雜的工藝。此外,制造這種組件需要復(fù)雜且昂貴的基礎(chǔ)設(shè)施,例如用于制造通常由硅組成并使用掩模的這些電子組件的電子電路的代工型工廠。特別地,已經(jīng)觀察到電子組件的技術(shù)越發(fā)達(dá),制造它們所需要的工廠數(shù)量越少。繼而,小數(shù)量的這種工廠必須以強(qiáng)約束運(yùn)轉(zhuǎn)(舉例來說,例如可用性和生產(chǎn)能力限制),以便能夠處理交付給它們的不同類型的電子組件。繼而,變得難以選擇特定的代工廠。為了通過使這些約束(例如在延遲方面)最小化來優(yōu)化電子組件的制造成本,可能需要在其它地理區(qū)域中制造組件。在一些技術(shù)行業(yè)中,這種選擇可能受到由代工廠提供的缺少或保證的限制,并且具體而言不可能確保代工廠操作人員在制造電子組件的背景下沒有惡意。例如,難以檢查代工廠是否進(jìn)行以下操作:
-生產(chǎn)比所要求的樣本更多的樣本,以便將其在灰色市場(這是被稱為過度生產(chǎn)的概念)上銷售;
-復(fù)制電子組件的藍(lán)圖,以便將其轉(zhuǎn)售;
-在制造電子電路之前對其藍(lán)圖進(jìn)行修改(稱為仿造)。
對電子電路進(jìn)行修改是尤其敏感的威脅。很多動機(jī)可能導(dǎo)致代工廠惡意地修改這些藍(lán)圖,舉例來說,例如:
-使得電路有意地比競爭對手的電路表現(xiàn)得差;
-插入“后門”,以便提供遠(yuǎn)程訪問或簡單地以謹(jǐn)慎的方式過濾掉信息;
-插入能夠遠(yuǎn)程銷毀組件的邏輯單元(被稱為終止開關(guān))。
對電子電路的這種惡意修改通常被稱為硬件特洛伊木馬。特洛伊木馬包括兩部分:
1、激活部分(觸發(fā)器),其監(jiān)視電路的狀態(tài)以從中推斷出用于觸發(fā)特洛伊木馬的條件,以及
2、動作部分(有效載荷),其在觸發(fā)之后執(zhí)行惡意動作。
為了執(zhí)行其惡意動作,特洛伊木馬必須同時(shí)訪問包括觸發(fā)器和有效載荷的兩個(gè)功能部分。
引申開來,特洛伊木馬設(shè)陷所涉及的asic(專用集成電路)和fpga(現(xiàn)場可編程門陣列)配置文件的掩模與處理器二進(jìn)制機(jī)器碼一樣多。
有兩種經(jīng)典的方法用來對抗特洛伊木馬。第一種方法或主動方法在于預(yù)防插入,而第二種方法或被動方法在于檢測插入。
被動方法是緩解的解決方案,因?yàn)樵摲椒ɑ谔芈逡聊抉R事實(shí)上已經(jīng)成功地被引入到電路中的假設(shè)。該方法的可靠性也難以量化。
事實(shí)上,可能會出現(xiàn)誤報(bào)(falsepositives)(檢測到實(shí)際上不存在的特洛伊木馬)和漏報(bào)(falsenegatives)(未檢測到實(shí)際上存在的特洛伊木馬,例如如果其足夠謹(jǐn)慎)。
同樣可能的是,在有特洛伊木馬的情況下制造相同電子組件的一些樣本,而在沒有特洛伊木馬的情況下制造電子組件的其它樣品,這是可能的,例如,如果全部的掩模僅用于一個(gè)或幾個(gè)仿造管芯。如果檢測測試不是窮盡的,而是以個(gè)案為基礎(chǔ)進(jìn)行應(yīng)用(這種方法被稱為篩查),則被感染的樣品有可能繞過過濾器。
一些現(xiàn)有的檢測方法直接內(nèi)建在組件上:這繼而被稱為監(jiān)視器。對組件進(jìn)行完全逆向設(shè)計(jì)并驗(yàn)證藍(lán)圖的完整性也是可能的,例如在randytorrance和dickjames.的“thestate-of-the-artinicreverseengineering,inches,volume5747oflncs,pages363-381.springer,september6-92009.lausanne,switzerland”中所描述的。然而,如果電路包含幾百萬個(gè)門(這使得該方法非常昂貴),則可以證明通過對組件進(jìn)行逆向設(shè)計(jì)的這種研究特別冗長且復(fù)雜。
其它已知的檢測方法使用邏輯測試,舉例來說,例如在m.bang和m.s.hsiao.的“odette:anon-scandesign-for-testmethodologyfortrojandetectioninics.ininternationalworkshoponhardware-orientedsecurityandtrust(host),ieee,pages18-23,2011”中所描述的方法。這篇文章描述了總是被激活的邏輯鏈(類似于掃描鏈)的產(chǎn)生,因?yàn)楫?dāng)采用雙相輸出
通過預(yù)防插入,主動方法使得有可能補(bǔ)救消極方法的一些缺點(diǎn)。已經(jīng)提出了用于預(yù)防特洛伊木馬插入的各種解決方案。一種已知的預(yù)防解決方案在于使用僅給予代工廠關(guān)于電子組件的信息的一部分的設(shè)計(jì)過程,該部分被充分地限制以防止黑客設(shè)計(jì)有用的特洛伊木馬,舉例來說,例如:
-在于以下操作的過程:在給定代工廠中制造組件的一部分,然后在另一個(gè)代工廠中制造該組件的其它部分(該方法被稱為劃分代工廠);
-基于使用可編程存儲器(例如fpga類型的可重配置區(qū)域或存儲器)來實(shí)現(xiàn)組件的一些部分的方法,這使得有可能在制造之后對關(guān)鍵組件進(jìn)行編程,而不將其公開給代工廠(jarroda.roy、farinazkoushanfar和lgorl.markov.的“epic:endingpiracyofintegratedcircuits.indate,pages1069-1074.ieee,2008”)。
然而,使用兩個(gè)代工廠特定于制造用于asic(專用集成電路)類型的專用電路的掩模,導(dǎo)致高物流成本并降低生產(chǎn)效率。
此外,盡管使用在制造之后配置的存儲器使得有可能提供取決于密鑰的功能,但是這導(dǎo)致高附加成本:可以估計(jì)fpga類型的可再編程面積比專用區(qū)域大40倍。此外,對于正確的密鑰來說,電路假定功能語義。因此,該方法不受電子電路的部分結(jié)構(gòu)(被稱為網(wǎng)表)的靜態(tài)分析的保護(hù)。已經(jīng)開發(fā)了強(qiáng)大的工具(例如,sat-solvers和smt)來解決這樣的布爾問題。不同于加密密鑰(沒有一個(gè)是有區(qū)別的),在理論上,相同的密鑰不適用于在其制造期間采用從組件中減去信息的對策。此外,這種保護(hù)是靜態(tài)的,即一旦組件已經(jīng)被定制,就無法防止黑客探測缺失的配置。
另一種預(yù)防解決方案在于實(shí)現(xiàn)高密度放置,這使得難以插入大型特洛伊木馬(shivambhasin、jean-lucdanger、sylvainguilley、xuanthuyngo、和laurentsauvage的“hardwaretrojanhorsesincryptographicipcores.inwielandfischerand
盡管基于增加放置密度的這種解決方案使得插入大型特洛伊木馬更加復(fù)雜,但是實(shí)際上,除了這種解決方案以外黑客也有可能生產(chǎn)足夠強(qiáng)大的特洛伊木馬并將其插入目標(biāo)電路中。
如美國專利us7994042b2中所描述的,另一個(gè)預(yù)防解決方案基于混淆操作,例如導(dǎo)致復(fù)雜布線(被稱為spaghetti布線)或偽裝的門的混合。
這些預(yù)防技術(shù)基于使用手動設(shè)計(jì)或者自動設(shè)計(jì),例如使用專用于設(shè)計(jì)電子電路的cad(計(jì)算機(jī)輔助設(shè)計(jì))工具(被稱為電子設(shè)計(jì)自動化(eda))??梢砸龑?dǎo)這樣的工具(例如,經(jīng)由腳本)以實(shí)現(xiàn)這樣的保護(hù)。此外,這樣的工具適合于設(shè)計(jì)asic(專用集成電路)型專用電路掩模。還存在用于設(shè)計(jì)fpga(現(xiàn)場可編程門陣列)類型的可重配置電路的配置文件(比特流)和在處理器上運(yùn)行的軟件的二進(jìn)制程序的類似工具。
然而,這種特洛伊木馬插入預(yù)防技術(shù)證明是昂貴的和/或相對無法證實(shí)的。事實(shí)上,混淆(例如,白盒加密)本質(zhì)上是固有地不可證實(shí)的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明通過提出如權(quán)利要求1中所限定的布爾電路保護(hù)方法和如權(quán)利要求15中所限定的電路保護(hù)系統(tǒng)來對所述情形進(jìn)行改進(jìn)。在權(quán)利要求1至14中描述了一些優(yōu)選實(shí)施例。
因此,本發(fā)明的各種實(shí)施例使得有可能補(bǔ)救間諜和/或電路修改的任何企圖,以提供相對低成本的解決方案,該方案可以通過修改邏輯綜合(源代碼編譯)階段的結(jié)果來實(shí)現(xiàn),而不影響整體技術(shù)架構(gòu)。本發(fā)明的各種實(shí)施例還通過借助使用關(guān)于每個(gè)時(shí)鐘事件更新的隨機(jī)數(shù)來提供可證明的且動態(tài)的解決方案。
附圖說明
鑒于以下描述和附圖,本發(fā)明的其它特征和優(yōu)點(diǎn)將變得顯而易見,在附圖中:
-圖1是根據(jù)某些實(shí)施例的電路保護(hù)系統(tǒng)的圖示;
-圖2是示出了對來自兩個(gè)互補(bǔ)向量空間的數(shù)據(jù)進(jìn)行編碼的示圖;
-圖3是表示根據(jù)某些實(shí)施例的保護(hù)方法的流程圖;
-圖4是表示根據(jù)保護(hù)用于啟動電路的變量的某些實(shí)施例的方法的流程圖;
-圖5是表示根據(jù)某些實(shí)施例的故障檢測方法的流程圖;
-圖6表示由根據(jù)第一實(shí)施例的保護(hù)系統(tǒng)所保護(hù)的電路;
-圖7表示由根據(jù)具有故障檢測的第二實(shí)施例的保護(hù)系統(tǒng)所保護(hù)的電路;
-圖8表示由根據(jù)具有故障檢測的第三實(shí)施例的保護(hù)系統(tǒng)所保護(hù)的電路;
-圖9表示由根據(jù)具有在另一空間中實(shí)現(xiàn)的故障檢測、驗(yàn)證的第四實(shí)施例的保護(hù)系統(tǒng)所保護(hù)的電路;
-圖10是表示根據(jù)某些實(shí)施例的代碼生成方法的流程圖;
-圖11示出了通過應(yīng)用保護(hù)方法來保護(hù)向量信號類型變量的電路變換;
-圖12示出了通過應(yīng)用保護(hù)方法來保護(hù)時(shí)序邏輯門類型變量的電路變換;
-圖13示出了通過應(yīng)用保護(hù)方法來保護(hù)線性組合門類型變量的電路變換;
-圖14表示根據(jù)以結(jié)構(gòu)級進(jìn)行表示的電路來構(gòu)造向量布爾變量的示例;以及
-圖15表示根據(jù)具有異構(gòu)語義的信號來構(gòu)造全局變量的示例。
具體實(shí)施方式
圖1以圖解的方式示出了根據(jù)用于保護(hù)電子電路11的某些實(shí)施例的保護(hù)系統(tǒng)100,以旨在保護(hù)電路11。
保護(hù)系統(tǒng)100包括可變保護(hù)設(shè)備10,可變保護(hù)設(shè)備10包括一組電路保護(hù)元件,所述一組電路保護(hù)元件被配置為保護(hù)電子電路11的一個(gè)或多個(gè)變量,以便于預(yù)防惡意電路(例如,特洛伊木馬)插入到電路11中。保護(hù)系統(tǒng)100還可以包括故障檢測器12,故障檢測器12包括一組檢測電路元件,所述一組檢測電路元件被配置為檢測由惡意電路(例如,特洛伊木馬)注入的故障以完成對電路的保護(hù),例如在不能預(yù)防惡意電路的插入并由此妨礙惡意電路起作用的情況下。
應(yīng)當(dāng)注意,圖1的表示是有助于理解本發(fā)明的圖解表示。實(shí)際上,通過與電路的某些組件組合,可以直接對電路11實(shí)施可變保護(hù)設(shè)備10的元件和系統(tǒng)100的檢測器12的元件。
電路11是由二進(jìn)制結(jié)構(gòu)描述生成的布爾電路,其中電路的變量由基本布爾變量表示,每個(gè)基本布爾變量由一位表示。
舉例來說,電路11可以是任何類型,例如asic、fpga或cpu類型的電路。
例如,布爾電路可以是同步數(shù)字電路,其時(shí)序元件由同一個(gè)時(shí)鐘來定時(shí)。關(guān)于每個(gè)時(shí)鐘事件(例如,每個(gè)上升時(shí)鐘沿),時(shí)序元件(例如,鎖存器)對它們的輸入進(jìn)行采樣,因此可以將該輸入復(fù)制到它們的輸出,并且在這之后在下一個(gè)時(shí)鐘脈沖上被重新采樣之前由組合元件進(jìn)行處理。在變型的實(shí)施例中,可以存在將一組時(shí)序元件和組合元件組合在一起的多個(gè)時(shí)鐘域。
借助于非限制性示例,本說明書的其余部分主要涉及這樣的同步數(shù)字電路。
這樣的電路11可以包括一組邏輯門12,一組邏輯門12有可能被分為兩類(邏輯門12在圖1中以圖解的方式表示):
-時(shí)序門120,其存儲電路的狀態(tài)(在表示電路的框圖中通常用一面上具有小三角形的框(例如,矩形)來表示),以及
-組合門122,其執(zhí)行中間計(jì)算:從中間計(jì)算得到的值不被本地存儲,而是被傳輸?shù)綍r(shí)序門。特別地,由組合門實(shí)施的組合邏輯通常專用于兩種用途,即對數(shù)據(jù)進(jìn)行計(jì)算和對計(jì)算進(jìn)行檢查。
如本身所已知的,由線來連接邏輯門,信號在該線上傳送。電路11的各種邏輯門之間的連接可以由邏輯門互連圖(網(wǎng)表)來表示。存儲在時(shí)序門中的變量對應(yīng)于門的輸出線可以輸送的變量。
因?yàn)闀r(shí)序門包含電路的有用信息(例如,加密密鑰、標(biāo)識符等),所以特洛伊木馬實(shí)質(zhì)上以時(shí)序門為目標(biāo)。
時(shí)序門(下文也被稱為時(shí)序資源或寄存器)通??梢园ㄖT如鎖存器的存儲點(diǎn),但同樣可以包括存儲器(sram、flash等)。
此外,通過進(jìn)行顯微觀察可在電路中容易識別時(shí)序門,因?yàn)闀r(shí)序門通常具有特定形狀(例如,鎖存器比組合門大得多),并且時(shí)序門在電路的特定區(qū)域中組合在一起(與總線相對應(yīng),術(shù)語總線指示作為一個(gè)或多個(gè)字節(jié)進(jìn)行均勻處理的一組位)。
此外,時(shí)序門比組合門更容易理解。實(shí)際上,時(shí)序門以少數(shù)存在并在連接的區(qū)域中組合在一起,而組合門非常多,結(jié)果是理解它們的作用是復(fù)雜的(基于需要語義解釋的函數(shù)抽象)。
如本說明書中所使用的,術(shù)語變量指示能夠輸送數(shù)據(jù)并與讀取數(shù)據(jù)和寫入數(shù)據(jù)的操作相關(guān)聯(lián)的容器。例如,該定義可以對應(yīng)于電路11的門或一組時(shí)序邏輯門。類似地,可以由術(shù)語變量指示電路11的線或一組線,在大多數(shù)情況下通過分別測量和修改由一條或多條線輸送的電壓電平來實(shí)現(xiàn)讀取和寫入。
在下文中存儲在時(shí)序門中的電路的變量指示時(shí)序變量。因此,時(shí)序變量表示包含在時(shí)序資源(時(shí)序門)中的數(shù)據(jù)項(xiàng),即存儲的數(shù)據(jù)。這種時(shí)序變量存儲計(jì)算的狀態(tài),并且它們在電路中的作用特別容易解釋。此外,因?yàn)榧拇嫫骱痛鎯ζ鞯拇蟪叽绾退鼈兊奶匦孕螤?,所以它們是最容易識別的邏輯門。因此,時(shí)序資源的數(shù)量對應(yīng)于時(shí)序變量的數(shù)量。
特洛伊木馬是被配置為出于惡意目的而連接到源電路11(主機(jī))的信號以從主機(jī)讀取和寫入數(shù)據(jù)的電路(時(shí)序門和組合門的集合)。讀取用于觸發(fā)特洛伊木馬,而寫入用于激活有效載荷。
例如,特洛伊木馬可以被配置為仔細(xì)檢查電路11的輸入以檢測對應(yīng)于其激活的特定數(shù)據(jù)(或特定數(shù)據(jù)序列)。繼而特洛伊木馬可以將故障注入到主機(jī)系統(tǒng)或者通過將包含敏感數(shù)據(jù)的寄存器連接到電路11的輸出寄存器來過濾掉信息。
根據(jù)本發(fā)明的保護(hù)系統(tǒng)100使得能夠?qū)χ鳈C(jī)11的至少一個(gè)清除變量(例如,對應(yīng)于電路的信號或時(shí)序門)進(jìn)行修改,從而對諸如特洛伊木馬之類的任何惡意電路隱藏其含義。如本文所使用的,表達(dá)清除的變量指示任何不受保護(hù)的變量。因此,任何清除變量使得特洛伊木馬能夠受益于連接到該變量以用于使其攻擊成功,即經(jīng)由其觸發(fā)器部分來讀取它的值并經(jīng)由其有效載荷執(zhí)行部分來寫入另一個(gè)值。
制造電路的過程包括多個(gè)連續(xù)階段,其包括以下初步階段:
-對電路(硬件和軟件)進(jìn)行建模的階段,其中以非常高的水平對電路進(jìn)行建模,以便于在性能方面相對于應(yīng)用約束來驗(yàn)證所選定的架構(gòu);
-高級語言描述階段(在建模階段驗(yàn)證了架構(gòu)之后),其中采用時(shí)序元件(寄存器、鎖存器)和組合邏輯元件的形式、以寄存器傳輸級(rtl)來描述電路的實(shí)施方式,時(shí)序元件和組合邏輯元件與時(shí)序元件的輸入/輸出與電路的主要輸入/輸出之間的組合相對應(yīng);使用高級編程語言(例如,rtl等)對該描述(被稱為行為描述)進(jìn)行編碼;
-邏輯仿真階段,其用于使用仿真器對描述進(jìn)行仿真。仿真器根據(jù)之前描述的輸入刺激及時(shí)仿真每個(gè)互連信號。如果電路包括處理器,則仿真可以包括對與電路的處理器相關(guān)聯(lián)的可執(zhí)行程序進(jìn)行仿真;
-可以被實(shí)施為對仿真進(jìn)行補(bǔ)充的功能驗(yàn)證階段,該階段尤其對更長的操作進(jìn)行仿真,以使用基于通過斷言而建模的語言對電路必須驗(yàn)證的功能性質(zhì)進(jìn)行定義來加速仿真并獲得更完整的結(jié)果。可以或者在具有結(jié)果相對于參考模型的自動驗(yàn)證的隨機(jī)刺激發(fā)生器的基礎(chǔ)上實(shí)施功能驗(yàn)證,或者使用形式化功能驗(yàn)證工具來實(shí)施功能驗(yàn)證;
-邏輯綜合階段,其中基于針對制造電路的目標(biāo)技術(shù)和/或代工廠的邏輯門庫(例如與門、或門、鎖存器等)來改善電路的行為描述,以產(chǎn)生處于邏輯門(網(wǎng)表)級的結(jié)構(gòu)描述。邏輯綜合可以考慮各種操作約束。可以借助于eda工具來實(shí)施邏輯綜合,eda工具被配置為以高級語言形式將行為描述變換成以通用形式描述組合和時(shí)序邏輯元件的通用結(jié)構(gòu)描述(獨(dú)立于邏輯門庫),繼而用來自邏輯門庫的元件代替它們,以便滿足相對于時(shí)間約束(例如,電路操作頻率)和空間約束(硅的尺寸)的與電路特性(例如,電路的邏輯路徑)有關(guān)的條件。如果所選擇的元件不滿足約束,則綜合工具可以對庫中的其它門進(jìn)行測試。在邏輯綜合之后,以選定的格式(例如,verilog、vhdl、edif)來獲得計(jì)算機(jī)文件(對應(yīng)于結(jié)構(gòu)描述)。該文件表示庫中的門的例示及其互連,其表示電子電路(網(wǎng)表)。這樣的表示僅包括均由1位表示的布爾變量。
然后可以在工廠(代工廠)中制造電路。
保護(hù)電路或程序的經(jīng)典方法基于由以高級語言形式來描述電路或程序的開發(fā)人員來利用其行為描述。因?yàn)槿コ俗兞康谋硎竞吞幚恚赃@樣的行為描述通常相對簡潔??梢匀菀椎乩斫庾兞?,因?yàn)樾袨槊枋霾粌H提供變量的值,而且提供其含義。因此,在經(jīng)典方法中,開發(fā)人員可以語義地對變量進(jìn)行解釋,以便具有對代碼的智能掌握。
更準(zhǔn)確地說,在對行為描述進(jìn)行手動分析之后,常規(guī)電路保護(hù)解決方案以字節(jié)(8位向量)級單獨(dú)保護(hù)每個(gè)自然變量。這樣做的結(jié)果是,使用具有長(最小的和對偶的)距離的代碼和/或大長度的代碼是非常困難的,結(jié)果是用于保護(hù)自然變量的代碼不是最佳的。另外地,常規(guī)解決方案旨在選擇性地保護(hù)特定類別的信號(例如存儲數(shù)據(jù)的時(shí)序信號),而非用于檢查數(shù)據(jù)的時(shí)序信號。
然而,實(shí)際上,以行為描述級應(yīng)用保護(hù)具有若干缺點(diǎn):
-變量被單獨(dú)保護(hù),結(jié)果是要保護(hù)的電路的語義而非安全目標(biāo)對保護(hù)進(jìn)行指導(dǎo),
-舉例來說,諸如處于aes(高級加密標(biāo)準(zhǔn))加密算法狀態(tài)中的一些變量是非常短的(僅k=8位),這損害了代碼的質(zhì)量和有效性,
-可以從保護(hù)步驟中省略一些隱性變量,例如循環(huán)計(jì)數(shù)器。
與行為描述不同,結(jié)構(gòu)描述不會使得將任何含義賦予布爾變量,該布爾變量可能是在簡化、變量之間的融合之后而獲得的并且其表示不直觀。
然而,發(fā)明人已經(jīng)基于電路的結(jié)構(gòu)描述開發(fā)了電路保護(hù)系統(tǒng)和方法。
更準(zhǔn)確地說,保護(hù)系統(tǒng)100被配置為在邏輯綜合階段之后對電路的結(jié)構(gòu)描述進(jìn)行修改,以便通過將電路元件(可變保護(hù)元件10)直接插入到電路中來將一個(gè)或多個(gè)變量轉(zhuǎn)換為受保護(hù)的一個(gè)或多個(gè)變量,在制造電路之后這些元件有可能對受保護(hù)變量的變化進(jìn)行控制。在一些實(shí)施例中,保護(hù)系統(tǒng)100還被配置為插入電路元件,該電路元件被配置為檢測注入到電路(故障檢測元件12)中的故障。
然后,利用這種保護(hù)元件(可變保護(hù)元件和適用的故障檢測元件)來制造電路,這種保護(hù)元件用于對受保護(hù)變量的狀態(tài)進(jìn)行更新和/或用于根據(jù)時(shí)鐘事件進(jìn)行故障檢測。
在邏輯綜合階段中,根據(jù)本發(fā)明的保護(hù)系統(tǒng)100被配置為根據(jù)預(yù)定義的標(biāo)準(zhǔn)來選擇電路的結(jié)構(gòu)描述的k個(gè)基本布爾向量變量(在下文中也被稱為基本變量)的集合,在預(yù)定義的選擇標(biāo)準(zhǔn)的基礎(chǔ)上每個(gè)變量由1位表示。繼而,通過在k位的向量中以選定的順序來級聯(lián)所選的基本變量,所選的k個(gè)基本變量用于構(gòu)造長度為k(即,由k位表示)的全局變量x。然后通過對大小為k的清除變量x的內(nèi)容進(jìn)行編碼并使用隨機(jī)位向量來保護(hù)該清除變量x,這會產(chǎn)生受保護(hù)的變量z。級聯(lián)k個(gè)變量的順序可以是任意的。其可以被存儲以在讀取受保護(hù)變量z(由于保護(hù)布爾向量變量x而產(chǎn)生)和/或?qū)懭胧鼙Wo(hù)變量z的階段中使用。
更準(zhǔn)確地說,在長度為n并且大小為2k(k對應(yīng)于變量x的大小)的二進(jìn)制碼c的基礎(chǔ)上保護(hù)系統(tǒng)100對長度為k的變量x進(jìn)行編碼,生成隨機(jī)位向量并利用向量空間中的代碼c的補(bǔ)碼d對其進(jìn)行編碼,該二進(jìn)制碼c包括一組字并屬于向量空間。代碼c具有等于代碼的兩個(gè)不同字之間的最短漢明距離的給定最小距離dc。在這之后,在將以代碼d的編碼形式的隨機(jī)位向量y與由代碼c編碼的變量x相加之前,保護(hù)系統(tǒng)100通過代碼d對隨機(jī)位向量y進(jìn)行編碼,這會產(chǎn)生代替不受保護(hù)的變量x的由n位表示的受保護(hù)的變量z。隨機(jī)位向量包括一組隨機(jī)的不可預(yù)測的位。電路的原始變量x被受保護(hù)的變量z代替,寫入x的操作本身也被新的操作代替,新的操作在于:首先通過代碼c對x進(jìn)行編碼,通過代碼d對隨機(jī)位向量y進(jìn)行編碼,組合以這種方式獲得的兩個(gè)代碼字并將結(jié)果寫入變量z。類似地,讀取x的操作被新的操作代替,新的操作讀取z并且在這之后進(jìn)行解碼以檢索原始變量x。在保持相同的讀取和寫入數(shù)據(jù)(在不受保護(hù)的電路中由x輸送)方面的功能的同時(shí),這些新的操作符使得可以用受保護(hù)的變量z來代替變量x。為了對變量x進(jìn)行編碼和解碼而確定的可變保護(hù)元件被插入到電路的結(jié)構(gòu)描述中。在下文中描述了編碼操作符和解碼操作符的選擇。在制造電路11之后,這些可變保護(hù)元件用于根據(jù)時(shí)鐘事件來更新受保護(hù)的變量的狀態(tài)。
此外,保護(hù)系統(tǒng)100被配置為確定要插入到電路中的故障檢測元件,以阻止對觸發(fā)的正確操作和對引入到受保護(hù)的電路11中的特洛伊木馬的有效負(fù)載的執(zhí)行。
在制造電路之后,故障檢測元件用于對電路進(jìn)行監(jiān)控,并且一旦在電路11中檢測到故障就觸發(fā)警報(bào)。
關(guān)于每個(gè)時(shí)鐘事件,理論上清除變量x改變狀態(tài)。此外,隨機(jī)位向量生成器尤其是隨機(jī)數(shù)的生成器,其適于針對每個(gè)時(shí)鐘事件(例如,每個(gè)時(shí)鐘上升沿)更新隨機(jī)位向量y。繼而,變量z進(jìn)入下一個(gè)狀態(tài)。
例如,當(dāng)在電路(所制造的電路)的操作模式下應(yīng)用于信號類型變量時(shí),可變保護(hù)元件10被配置為在隨機(jī)位向量的新的值的基礎(chǔ)上對受保護(hù)變量z進(jìn)行更新,并且然后可以應(yīng)用解碼操作。當(dāng)應(yīng)用于存儲在邏輯門中的變量時(shí),保護(hù)系統(tǒng)100應(yīng)用代碼c,在門的輸入處加上已編碼的隨機(jī)位向量,并且然后在門的輸出處應(yīng)用解碼器。
因此,不再可能對k位的不受保護(hù)的變量x進(jìn)行訪問。因此,如果僅對z的某些位實(shí)現(xiàn)連接,則系統(tǒng)100確保到受保護(hù)的變量z(信號值或者存儲在時(shí)序邏輯門120中的值)的任何連接都不公開關(guān)于其內(nèi)容的信息(特洛伊木馬插入預(yù)防功能)。
在某些實(shí)施例中,可以預(yù)先生成代碼c及其補(bǔ)碼d,以便滿足與補(bǔ)碼d的對偶距離有關(guān)的第一安全條件。
二進(jìn)制碼d的對偶碼d┴包含與d的代碼字正交的所有代碼字,這表示d的代碼字和d┴的代碼字的數(shù)量積等于零。當(dāng)代碼d是線性的時(shí),補(bǔ)碼d的對偶距離對應(yīng)于d的對偶碼的最小距離(表示為dd┴)。
基于候選二進(jìn)制碼的數(shù)據(jù)庫,第一安全條件可以特別地定義代碼d的對偶距離的預(yù)定義的目標(biāo)值,而代碼c被確定為使得其大小至少等于所選擇的電路的變量的數(shù)量k并且與代碼d互補(bǔ)。當(dāng)代碼d不是線性的時(shí),對偶距離概念與更一般的定義相關(guān)聯(lián)。
以補(bǔ)充的方式,可以確定代碼c和代碼c的補(bǔ)碼d,以便滿足與代碼c的長度n和/或代碼c的最小距離dc有關(guān)的次要安全條件。
此外,可以預(yù)先確定代碼c和補(bǔ)碼d,以便滿足與量
在以目標(biāo)對偶距離(表示為
實(shí)際上,對于均勻分布的掩碼y和對于具有對偶距離
然而,對于連接到這樣數(shù)量
特別地,用于對變量進(jìn)行編碼的代碼c可以是線性代碼c。通過非限制性示例的方式,本說明書的其余部分涉及有限體
代碼c的特征在于參數(shù)n、k以及dc使得:
-n指示代碼的長度,
-k指示有效載荷位的數(shù)量(在編碼之前),也被稱為維度,以及
-dc表示在編碼的兩個(gè)不同字之間的最小漢明距離。
代碼c的效率r指示比率r=k/n。經(jīng)由代碼的效率r(效率被定義為k對n的比r,r=k/n)來測量與編碼相關(guān)聯(lián)的超額成本。效率越高,超額成本越低?,F(xiàn)在,效率r與代碼的長度和/或大小成比例(根據(jù)claudeshannon源編碼定理)。因此,如果效率高(以給定距離dc),則n位的代碼字不比k位的信息字長多少,并且因此該代碼是高效的。因此,通過聚集大量位來獲得對向量變量的保護(hù)有利于減少實(shí)施的超額成本。
最小距離dc可以被選定為足夠大,以使得編碼能夠通過允許參數(shù)n和k增長來對故障進(jìn)行檢測和/或校正。本說明書的其余部分主要考慮故障的檢測。
根據(jù)以下等式1,線性代碼c與大小為k×n的生成矩陣g相關(guān)聯(lián),使得有可能根據(jù)是布爾向量變量的k位的變量x(k位的字)來生成n位的代碼字c:
c=xg(等式1)
這種表示法使得有可能通過具有生成矩陣g的代碼c來表示變量x的編碼,這給出了代碼字c。
根據(jù)以下等式,代碼c的補(bǔ)碼d使得完整空間
然后可以通過以線性方式并且以唯一形式來組合c和d的字來表示主體
大小為n×n的矩陣
借助于將yd與y相關(guān)聯(lián)的線性應(yīng)用的圖像而獲得代碼d的元素由d指示,d由以下等式2給出:
d=y(tǒng)h(等式2)
其中
這樣的表示法使得有可能通過具有生成矩陣h的代碼d來表示向量y的編碼,這會產(chǎn)生代碼字d。
因此,主體
根據(jù)本發(fā)明的可變保護(hù)設(shè)備100依賴于這種性質(zhì)來將隨機(jī)值注入到k位的變量x中,并且實(shí)施用寫入z的操作符來代替寫入x的原始操作符。因此,可變保護(hù)設(shè)備10被配置為基于使用由yh表示的隨機(jī)掩碼的元素z的信息來阻礙/阻止旨在提取變量x的攻擊。
可以根據(jù)生成矩陣g和h以及隨機(jī)位向量y的信息以組合邏輯的方式對被植入電路中的受保護(hù)的變量z進(jìn)行解碼。事實(shí)上,可以根據(jù)以下形式重寫等式3:
上述關(guān)系式可以如下重寫:
然后使用以下表示法:
在受保護(hù)的變量z、j和k的定義以及因此g和h(等式4)的定義的基礎(chǔ)上,可以根據(jù)等式5和等式6推導(dǎo)出x和/或y以及z的對應(yīng)值:
x=zj(等式5)
y=zk(等式6)
等式5和等式6對應(yīng)于解碼操作,其使得有可能分別重構(gòu)x和y的值,并執(zhí)行代替讀取x的原始操作的讀取z的操作(以z對x和y進(jìn)行編碼是可逆的)。矩陣j表示與編碼矩陣g相關(guān)聯(lián)的解碼矩陣。類似地,矩陣k表示與編碼矩陣h相關(guān)聯(lián)的解碼矩陣。注意,借助于矩陣的唯一逆來驗(yàn)證以下顯著的等式關(guān)系:
其中
gj=ik;
gk=ok×(n-k);
hj=o(n-k)×k;
hk=in-k。
在上述等式中,對于l∈k,n-k(因此l=k或l=n-k)的il指示等于單位矩陣的大小為l×l的方陣,并且ok×(n-k)指示大小為k×(n-k)的矩形矩陣,其所有輸入為0。
圖2示出了k位的變量x(有效載荷)、(n-k)位的掩碼y以及n位的受保護(hù)的變量z(經(jīng)過編碼和掩碼的數(shù)據(jù))之間的關(guān)系。
該圖示出了由根據(jù)對偶距離dd┴確定的二進(jìn)制碼c對清除變量x進(jìn)行編碼,然后與掩碼(代碼字yh)相加并存儲在n位的寄存器z中。以這種方式,除非對應(yīng)于d的對偶距離(表示為
向量空間d┴與大小為k×n的生成矩陣h'相關(guān)聯(lián),使得有可能根據(jù)k位的字y'來生成n位的對偶代碼字d':
d'=y(tǒng)'h'(等式7)
二進(jìn)制碼d的對偶碼d┴包含與d的代碼字正交的所有代碼字(即,d的代碼字與d┴的代碼字的數(shù)量積等于零)。
這種正交性質(zhì)在編碼生成矩陣上表示為:
hh'┬=0,其中h'┬指示h'的轉(zhuǎn)置矩陣。
漢明加權(quán)函數(shù)(被表示為wh)指示返回在位向量中設(shè)定的位數(shù)的函數(shù)。
正式來說,代碼c的最小距離dc由以下公式給出:
代碼c的對偶距離被表示為
在以上關(guān)系式中,表示法c'.c指示兩個(gè)位向量c'和c的正則數(shù)量積(canonicscalarproduct)。
注意,兩個(gè)正交線性代碼的對偶距離的最小距離驗(yàn)證以下等式8:
考慮一種情景示例,其中黑客試圖插入接觸電路的多條線路的特洛伊木馬,或者借助于咨詢以觸發(fā)特洛伊木馬或者借助于修改以執(zhí)行其有效載荷。如上所述,基于安全特性預(yù)防特洛伊木馬的觸發(fā)器部分(如果有的話)的插入,借此如果黑客探測到給定變量z的最多
因此,代碼d的對偶距離
-特洛伊木馬的輸入/輸出的最小數(shù)量,其使得特洛伊木馬的觸發(fā)器部分能夠?qū)﹄娐返那宄畔⑦M(jìn)行解碼,
-探測平臺的點(diǎn)的最小數(shù)量,黑客必須利用該探測平臺來提取包括清除數(shù)據(jù)的信息,
-側(cè)-信道攻擊的最小順序。從受保護(hù)的變量z提取隨機(jī)掩碼(等式6)不可能向黑客提供清除信息。然而,黑客可能仍然希望將錯(cuò)誤注入到變量z的內(nèi)容中,以便經(jīng)由對z進(jìn)行解碼來傳播錯(cuò)誤x。
然而,在一些實(shí)施例中參數(shù)y可以用于檢測故障注入攻擊的存在,故障注入攻擊由特洛伊木馬的有效載荷引起,或者由關(guān)于將向量y與zk進(jìn)行比較的外部注入(時(shí)鐘、電壓毛刺、激光發(fā)射等)引起。
實(shí)際上,故障檢測器12可以確定是否滿足關(guān)系式y(tǒng)=zk(驗(yàn)證或測試),并且根據(jù)該驗(yàn)證來檢測由惡意電路(到部分電路的連接)進(jìn)行的攻擊的存在,不管這是經(jīng)由特洛伊木馬的有效載荷的內(nèi)部攻擊還是經(jīng)由物理注入干擾的外部攻擊。
如果故障被注入到具有故障ε的代碼c的代碼字c=xg中,則可以以
這種測試的可靠性基于如下性質(zhì):如果黑客利用均勻分布的故障
以補(bǔ)充的方式,可以借助于等式5來驗(yàn)證以代碼c級的計(jì)算的完整性,達(dá)到關(guān)于受保護(hù)的變量z的故障可以傳播到變量x的程度,其對應(yīng)于對黑客有用的故障。由于變量z包含關(guān)于清除變量x的所有信息,因此可以保留z的副本z'并對它們的投影zj和z'j進(jìn)行比較,也就是說通過進(jìn)行與關(guān)于掩碼y相同的操作,但是對稱地關(guān)于信息部分x(換句話說,通過測試是否x=zj)。在沒有(多個(gè))故障的情況下,x和zj這兩個(gè)量相等。然而,x與zj之間的差異顯露了(多個(gè))故障的注入。
為了檢測故障,保護(hù)系統(tǒng)100可以使用包括驗(yàn)證是否y=zk的測試。這種測試的可靠性基于如下性質(zhì):如果黑客利用均勻分布的故障
實(shí)際上,如果黑客注入故障
注意,該故障檢測概率不取決于代碼dc的最小距離。在另一方面,為了使故障不被檢測到,黑客必須注入漢明加權(quán)大于或等于dc的故障ε,其在黑客的該模型中對應(yīng)于故障注入的成本。此外,在低權(quán)重的故障比高權(quán)重的故障更可能的實(shí)施例中,檢測的概率也可以取決于n和dc。
這樣的結(jié)果是,如果黑客連接到多達(dá)變量z和y的dc-1行,并且在其中注入故障,則將會檢測到該故障的概率為1(特定檢測)。
在保護(hù)系統(tǒng)包括故障檢測器12的實(shí)施例中,可以根據(jù)代碼c的最小距離性質(zhì)來確定故障檢測器12。
事實(shí)上,當(dāng)且僅當(dāng)ε∈c時(shí),故障ε≠0是不可檢測的。如果故障ε≠0達(dá)到z的dc-1行(繼而
因此,值
此外,在黑客處于定位變量y的位置的情況下,可以設(shè)想新的攻擊場景,借此攻擊系統(tǒng)可以將故障注入到變量z中而不被檢測到。這種場景包括將故障ε注入到將產(chǎn)生校驗(yàn)子εk的變量z中,并且將等于εk的故障注入到變量y中。以這種方式,故障檢測器12的測試將影響比較式
為了解決這樣的攻擊場景并獲得可證明的安全性,除了通過代碼d(代碼c的補(bǔ)碼)進(jìn)行編碼之外,還可以通過維度大于或等于n-k的代碼e對變量y進(jìn)行編碼并產(chǎn)生大小為m的字,其與生成矩陣l和解碼矩陣m相關(guān)聯(lián)。代碼e伴隨有補(bǔ)碼f,其解碼矩陣n對應(yīng)于e的控制矩陣,即對應(yīng)于能夠?qū)進(jìn)行故障檢測的矩陣。此外,代碼f具有生成矩陣p,以使得以下關(guān)系式得到驗(yàn)證:
借助于非限制性示例,以與代碼c和代碼d相同的方式,在向量空間
在該實(shí)施例中,可以以編碼的形式y(tǒng)'=y(tǒng)l來存儲用于驗(yàn)證對變量z的故障注入的隨機(jī)變量y。然后,故障檢測器12執(zhí)行測試zk=y(tǒng)'m和y'n=0。第一測試使得有可能驗(yàn)證攻擊系統(tǒng)還未將故障注入到漢明加權(quán)小于dc的變量z,而第二個(gè)測試使得有可能驗(yàn)證攻擊系統(tǒng)還未將故障注入到漢明加權(quán)小于代碼e的最小距離(表示為de)的已編碼變量y'。
在這樣的實(shí)施例中,不可檢測的攻擊的最小漢明加權(quán)成本是min(de,dc)。在關(guān)于已編碼變量z和y'的故障均勻分布的情況下,并且對于大小為m的代碼字e來說,檢測到的概率變?yōu)椋?/p>
在保護(hù)系統(tǒng)包括故障檢測器12的實(shí)施例中,可以基于代碼c的最小距離性質(zhì)和代碼e的最小距離來確定故障檢測器12。
通過使用代碼c代替代碼e或者再次通過使用代碼d代替代碼e,可以有利地重新使用上文中定義的矩陣操作符g、h、j以及k(例如,在n-k≤k的情況下)。這使得有可能在減少必要的資源的同時(shí)保持可證明的安全性免受對編碼寄存器z和y'的故障注入攻擊。
因此,在一個(gè)特定實(shí)施例中,可以將代碼e選定為等于代碼d(二進(jìn)制碼c的補(bǔ)碼),繼而已編碼的變量y'的大小為n-k并且等于y.h。
在第一實(shí)施例中,可以使用代碼d來代替代碼e,以對變量y進(jìn)行編碼(而代碼e的補(bǔ)碼f等于二進(jìn)制碼c),這使得y'=y(tǒng)h,故障檢測器執(zhí)行測試zk=y(tǒng)'k和y'j=0。繼而不可檢測攻擊的最小漢明加權(quán)成本等于min(dc,dd)。在關(guān)于已編碼的變量z和y'的故障均勻分布的情況下,檢測到的概率變?yōu)椋?/p>
替代地,在第二實(shí)施例中,可以使得代碼e等于二進(jìn)制碼c,而代碼e的補(bǔ)碼f等于代碼c的補(bǔ)碼d,(n-k)位的變量y被變換為n位的變量yk,并且已編碼的變量y'大小為n且等于ykh。
特別地,如果n-k<k,則有可能在大小為n-k的變量y的基礎(chǔ)上來構(gòu)造大小為k的向量yk,例如通過將y與常數(shù)或隨機(jī)數(shù)據(jù)級聯(lián)。繼而,可以利用代碼c來代替代碼e對yk進(jìn)行編碼。繼而,已編碼的變量y'變?yōu)閥'=y(tǒng)kg=(y↑k)g,其中操作符↑k指示在于增加向量大小一直到k的操作,例如通過數(shù)據(jù)填充。繼而,故障檢測器12執(zhí)行第一測試zk=(y'j)↓n-k,其中運(yùn)算符↓n-k指示選擇與yk中的y相對應(yīng)的n-k位的操作。故障檢測器12執(zhí)行第二測試y'k=0。
在該實(shí)施例中,不可檢測攻擊的最小漢明加權(quán)成本是dc。如果關(guān)于已編碼的變量z和y'的故障均勻分布,則檢測到的概率再次變?yōu)椋?/p>
保護(hù)系統(tǒng)100對與對偶距離
-參數(shù)
-參數(shù)dc,和/或
-參數(shù)
-參數(shù)dd,和/或
-參數(shù)
-參數(shù)de,和/或
-參數(shù)
如果盡管使用了插入預(yù)防方法仍然觸發(fā)了假設(shè)的特洛伊木馬,則對故障進(jìn)行檢測尤其使得有可能檢測到假設(shè)的特洛伊木馬。
在一個(gè)特定實(shí)施例中,代碼c的補(bǔ)碼d可以是代碼c的對偶代碼。
圖3示出了根據(jù)在邏輯綜合階段中實(shí)施的某些實(shí)施例的電路保護(hù)方法。
在步驟300中,在電路的邏輯綜合階段中,根據(jù)以高級語言的行為描述來生成以低級語言的電子電路的結(jié)構(gòu)描述,例如使用eda型邏輯綜合工具。
結(jié)構(gòu)描述包括對電路11的變量和電路11的元件進(jìn)行描述,例如組合的資源、時(shí)序資源和線路。在結(jié)構(gòu)描述中,電路的變量由一位表示。
在步驟301中,如在結(jié)構(gòu)描述中所描述的,舉例來說,在一個(gè)或多個(gè)預(yù)定義的標(biāo)準(zhǔn)(例如,靈敏度準(zhǔn)則)的基礎(chǔ)上或者考慮臨界參數(shù)來選擇電路的一組基本變量(均由1位表示)。所選擇的基本變量可以是相同種類的或不同種類的(異構(gòu)變量)。所選擇的變量的數(shù)量被表示為k。
當(dāng)然,本發(fā)明不限于這些特定的基本變量選擇準(zhǔn)則。在一個(gè)實(shí)施例中,可以在步驟301(保守方法)中選擇電路的所有基本變量的集合。替代地,在邏輯綜合期間步驟301中所采用的選擇標(biāo)準(zhǔn)可以與變量的名稱有關(guān),該邏輯綜合通過指示綜合工具以互連圖(網(wǎng)表)的形式來保持信號(或至少信號根)的命名而使用(在適當(dāng)?shù)那闆r下)常規(guī)的表達(dá)式。
按層設(shè)計(jì)的集成系統(tǒng)可以包括安全根(信任根),其是確保平臺的整體啟動的部分。在這樣的實(shí)施例中,替代地,基本變量選擇標(biāo)準(zhǔn)可以在于選擇與安全根相關(guān)聯(lián)的基本布爾變量,這可以通過實(shí)現(xiàn)產(chǎn)生系統(tǒng)的分層結(jié)構(gòu)描述的分層邏輯綜合來完成。繼而可以僅將保護(hù)應(yīng)用于被認(rèn)為形成安全根的一部分的所識別的(多個(gè))變量。
在另一變型中,選擇標(biāo)準(zhǔn)可以與和互連圖中的變量相關(guān)聯(lián)的靈敏度指示符(例如,通過污染技術(shù))有關(guān)。
在步驟302中,以k位的唯一變量的形式來生成以這種方式所選擇的k個(gè)變量的表示,例如通過以所選擇的順序?qū)ψ兞窟M(jìn)行級聯(lián)。
在步驟303中,根據(jù)可應(yīng)用的安全規(guī)則,預(yù)定義表示用于編碼的線性代碼c的補(bǔ)碼d的目標(biāo)對偶最小距離的安全參數(shù)
以補(bǔ)充的方式,可以接收次要安全參數(shù)(304)。這些次要參數(shù)可以包括:
-代碼的目標(biāo)長度ncible,其被選定為足夠短以在保護(hù)之后不過度增加電路的大小,
-足夠高的目標(biāo)檢測概率
-對于代碼c的足夠大的目標(biāo)最小距離
在步驟305中,根據(jù)目標(biāo)安全參數(shù)
-將代碼的長度n鏈接到目標(biāo)長度ncible的條件:例如,可以確定代碼c,從而使其長度n小于目標(biāo)長度ncible,和/或
-將檢測的概率鏈接到檢測的目標(biāo)概率的條件:例如,可以確定代碼c,從而使參數(shù)
-將代碼的最小距離dc鏈接到目標(biāo)最小距離
在步驟306中,根據(jù)等式4(g和h是已知的)在信息編碼矩陣(g)和掩碼(h)的基礎(chǔ)上確定矩陣j和k:
在步驟307中,對電路的結(jié)構(gòu)描述進(jìn)行修改以插入隨機(jī)數(shù)生成器rng,該隨機(jī)數(shù)發(fā)生器rng被配置為當(dāng)電路可操作時(shí)每個(gè)時(shí)鐘周期生成由n-k個(gè)隨機(jī)位所表示的隨機(jī)位向量y。
在步驟308中,對電路的結(jié)構(gòu)描述進(jìn)行修改,以便用寫入由n位表示的受保護(hù)的變量z的操作來代替寫入變量x的任何操作,通過以下方式獲得變量z:
-對k位的清除變量x進(jìn)行編碼,其與由代碼c所選擇的原始的k個(gè)變量相關(guān)聯(lián),即如果二進(jìn)制碼c通過對應(yīng)于xg的n位的新狀態(tài)與生成矩陣g相關(guān)聯(lián);
-通過維度大于或等于n-k的代碼并且特別地通過補(bǔ)碼d來對位向量y進(jìn)行編碼(如果用于對y進(jìn)行編碼的代碼具有生成矩陣h,則用yh代替y),繼而借助于關(guān)系式
以這種方式獲得的受保護(hù)的變量z形成饋送1位的n個(gè)寄存器的新庫的輸入。
在變量是構(gòu)成時(shí)序資源的輸入的時(shí)序變量的某些情況下,變量的當(dāng)前狀態(tài)x可以用于計(jì)算時(shí)序資源的輸出。現(xiàn)在,由于已經(jīng)用受保護(hù)的變量z代替未受保護(hù)的變量x,所以當(dāng)前狀態(tài)x從此開始變得不可訪問。然而,可以在對受保護(hù)的變量z進(jìn)行解碼的基礎(chǔ)上確定時(shí)序資源的輸出,在矩陣j的基礎(chǔ)上對受保護(hù)的變量z進(jìn)行解碼,在代碼c和代碼d的基礎(chǔ)上(并且特別地在代碼c和代碼d的生成矩陣的基礎(chǔ)上)確定矩陣j。
更一般地,在步驟310中,用讀取受保護(hù)的變量z的操作代替讀取未受保護(hù)的變量x的任何操作,隨后進(jìn)行使用解碼矩陣j來解碼變量z的讀取值的操作(根據(jù)等式4的關(guān)系式x=zj)。
以補(bǔ)充的方式,在電路保護(hù)方法被配置為檢測故障是否已經(jīng)被注入到電路中(例如,通過故障使寄存器降級)的實(shí)施例中,該方法可以包括步驟312,其在于修改結(jié)構(gòu)描述以便驗(yàn)證與隨機(jī)位向量y的值相關(guān)的一個(gè)或多個(gè)條件(也被稱為故障檢測條件),并且如果至少一個(gè)故障檢測條件得到驗(yàn)證,則觸發(fā)警報(bào)。
在步驟314中,例如,借助于與用于在步驟300中生成電路11的eda類型相同類型的eda可以綜合電路11的新的結(jié)構(gòu)描述。該步驟使得有可能對直接添加到電路11的新的功能塊的混合進(jìn)行優(yōu)化以保護(hù)其變量。
繼而可以基于新的結(jié)構(gòu)描述(互連圖)來制造電路。
基于互連圖,防止電路受到惡意電路的插入,并且其中適用于對出于惡意目的而引入的故障進(jìn)行監(jiān)測的方法,具有特別適合于由eda工具來實(shí)施的優(yōu)點(diǎn)。這樣的eda工具還可以執(zhí)行邏輯簡化,其減小保護(hù)電路的尺寸和/或增加保護(hù)電路的速度。
圖4是根據(jù)某些實(shí)施例的在操作模式下(在制造電路之后)保護(hù)電路的方法的流程圖。電路由時(shí)鐘clk定時(shí)。
在步驟400中,產(chǎn)生新的時(shí)鐘事件(例如時(shí)鐘上升沿)。
在步驟402中,該事件觸發(fā)對k位上的清除變量x(其進(jìn)入下一狀態(tài))(401)的狀態(tài)進(jìn)行更新,以及對隨機(jī)位向量進(jìn)行更新(由隨機(jī)數(shù)生成器生成新的隨機(jī)位向量)。
變量x的下一狀態(tài)被更新為變量x的當(dāng)前狀態(tài)的函數(shù)。由于在設(shè)計(jì)階段變量x的當(dāng)前狀態(tài)已經(jīng)變得不可訪問,所以通過借助于矩陣j來對z進(jìn)行解碼,根據(jù)代替x的量zj來計(jì)算變量x的下一狀態(tài)(等式5),其中z指示受保護(hù)變量z的當(dāng)前狀態(tài)。
在步驟403中,使用線性代碼c及其生成矩陣g對以這種方式確定的被表示為xnext的k位的變量x的新的狀態(tài)(與k個(gè)所選擇的原始變量相對應(yīng))進(jìn)行編碼。1位上的k個(gè)原始清除變量的新的狀態(tài)xnext由與xnextg相對應(yīng)的n位上的新的狀態(tài)替換。
在步驟404中,根據(jù)等式
因此,通過插入隨機(jī)數(shù)來修改表示k個(gè)源清除變量的新狀態(tài)的變量x的新狀態(tài)xnext,從而使連接到受保護(hù)變量的任何嘗試不會公開關(guān)于k個(gè)原始變量的內(nèi)容的任何信息。
在步驟406中,根據(jù)等式xnext=znextj(等式5),如果變量x是時(shí)序變量并且電路的變量x的當(dāng)前狀態(tài)用于計(jì)算相關(guān)聯(lián)的時(shí)序資源的輸出,則所獲得的變量z的新狀態(tài)znext可以用于計(jì)算資源的輸出。
在電路保護(hù)方法被配置為執(zhí)行故障檢測的實(shí)施例中,執(zhí)行步驟407,以通過驗(yàn)證與在矩陣j和k(其自身由生成矩陣g和h確定)基礎(chǔ)上的隨機(jī)位向量y有關(guān)的至少一個(gè)條件(步驟408)(考慮在步驟402中生成的隨機(jī)位向量y的新值)來確定故障是否已經(jīng)被注入到與電路的變量相關(guān)聯(lián)的資源中(例如,通過故障使寄存器降級)。如果檢測到故障(409),則在步驟410中觸發(fā)警報(bào)。如果沒有檢測到故障,則在下一個(gè)時(shí)鐘事件時(shí)重復(fù)該方法(步驟400)。
圖5是示出根據(jù)某些實(shí)施例的故障檢測方法(圖4中的步驟407)的流程圖。
在步驟500中,對與隨機(jī)位向量y有關(guān)的一個(gè)或多個(gè)條件進(jìn)行測試,以檢測注入到受保護(hù)的變量z中的故障。
這種故障檢測條件可以包括步驟504,其在于驗(yàn)證與向量y與量zk之間的差異有關(guān)的第一條件(框501)。
以補(bǔ)充的方式,在由大小大于或等于n-k的代碼e對隨機(jī)位向量y進(jìn)行編碼并產(chǎn)生大小為m的字的實(shí)施例中,代碼e與解碼矩陣m相關(guān)聯(lián),并且與具有與e的控制矩陣相對應(yīng)的解碼矩陣n的補(bǔ)碼f相關(guān)聯(lián)(由代碼e對位向量y進(jìn)行編碼所產(chǎn)生的變量表示為y'),故障檢測方法可以包括:
-步驟505,其在于驗(yàn)證與隨機(jī)位向量y有關(guān)的第二條件(框502),如果量zk不等于量y'm,則該第二條件得到驗(yàn)證,在這種情況下,這表示攻擊系統(tǒng)已經(jīng)將故障注入到漢明加權(quán)小于dc的變量z中;和/或
-步驟506,其在于驗(yàn)證與隨機(jī)位向量y有關(guān)的第三條件(框503),如果量y'n不為零,則該第三條件得到驗(yàn)證,在這種情況下,確定攻擊系統(tǒng)已經(jīng)將故障注入到漢明加權(quán)小于代碼e的最小距離(表示為de)的已編碼的變量y'中。
代碼e可以與生成矩陣l相關(guān)聯(lián),從而y'=y(tǒng)l。此外,代碼f可以與生成矩陣p相關(guān)聯(lián),從而:
繼而,如果與向量y有關(guān)的條件中的任何一個(gè)條件得到驗(yàn)證(507),則在圖4的步驟410中故障檢測方法可以觸發(fā)警報(bào)。
可以使用eda類型工具來實(shí)施特洛伊木馬插入預(yù)防方法和故障檢測方法。這樣的工具還可以實(shí)現(xiàn)邏輯簡化,這減小了受保護(hù)電路11的尺寸并且增大了受保護(hù)電路11的速度。以補(bǔ)充的方式來約束工具可以是有用的,從而使優(yōu)化不會消除(甚至部分地)所插入的保護(hù)措施,例如通過執(zhí)行塊重新綜合。
圖6示出了根據(jù)一個(gè)實(shí)施例的保護(hù)系統(tǒng)100的元件,其與電路11組合以保護(hù)電路11。
圖6的電路11是由摩爾機(jī)器表示的時(shí)序系統(tǒng)。由以下兩種操作對電路11的組合門122進(jìn)行歸類:由參考63所指示的矩陣運(yùn)算符j進(jìn)行解碼的操作,以及由參考65所指示的g進(jìn)行重新編碼的操作。隨機(jī)數(shù)y是在每個(gè)時(shí)鐘周期產(chǎn)生n-k個(gè)隨機(jī)位的隨機(jī)數(shù)發(fā)生器(例如,rng)62的基礎(chǔ)上生成的。
因此,根據(jù)等式
例如,在變換期間,狀態(tài)寄存器120的輸入處的變量從k位到n位。
此外,運(yùn)算符j(63)用于計(jì)算量x=zj(等式4),并且將所獲得的結(jié)果放置在n位寄存器庫的輸出處。
圖7示出了根據(jù)另一實(shí)施例的用于通過線性編碼來保護(hù)電路11的保護(hù)系統(tǒng)100,該保護(hù)系統(tǒng)100設(shè)置有故障檢測單元12。故障檢測單元12包括比較器72,該比較器72用于將由發(fā)生器62生成的隨機(jī)位y與在矩陣運(yùn)算符k(71)的基礎(chǔ)上計(jì)算出的量zk進(jìn)行比較。如果y≠zk(檢測到注入電路的故障),則可以觸發(fā)警報(bào)信號。
圖8示出了用于保護(hù)電路11的保護(hù)系統(tǒng)100,該系統(tǒng)包括根據(jù)變型實(shí)施例的故障檢測單元。
圖8對應(yīng)于第一實(shí)施例,其中將用于對變量y進(jìn)行編碼的代碼e(除了通過代碼d進(jìn)行的初始編碼之外)選定為等于代碼d,而將代碼e的補(bǔ)碼f被選定為等于二進(jìn)制碼c(y'=y(tǒng)h)。在該實(shí)施例中,故障檢測器執(zhí)行測試zk=y(tǒng)'k和y'j=0。
通過確定連接故障的漢明加權(quán)wh(ε)to與最小距離dc和/或?qū)ε季嚯xdd的條件是否得到了驗(yàn)證,圖8的保護(hù)系統(tǒng)100使得能夠?qū)ψ⑷氲绞鼙Wo(hù)的電路中的故障進(jìn)行檢測。
故障可以是影響受保護(hù)的變量z的故障,繼而將變量z修改為
實(shí)際上:
-驗(yàn)證故障εyh=0并且因此εz∈ker(k)*=c*并且因此wh(εz)≥dc,
-或者,驗(yàn)證故障εyh≠0,并且因此εyh∈ker(j)*并且因此wh(εyh)≥dd。
然后可以添加新資源80以存儲從一個(gè)時(shí)鐘周期到下一個(gè)時(shí)鐘周期的掩碼。
圖9示出了根據(jù)用于保護(hù)電路11的另一實(shí)施例的保護(hù)系統(tǒng)100。
圖9對應(yīng)于第二實(shí)施例,其中使得代碼e等于二進(jìn)制碼c,而代碼e的補(bǔ)碼f等于代碼c的補(bǔ)碼d,將(n-k)位上的變量y變換為n位上的變量yk,并且已編碼的變量y'大小為n并等于ykh。
在該實(shí)施例中,通過采用可以大于或等于n-k的大小為k的輸入的矩陣運(yùn)算符g(67)對變量y進(jìn)行編碼。隨機(jī)數(shù)y被生成為具有(n-k)的大小,并且繼而由數(shù)據(jù)填充運(yùn)算符91完成以形成包含y的k位的向量yk。繼而,由矩陣運(yùn)算符g(67)對向量yk進(jìn)行編碼。為了執(zhí)行在于確定是否y=zk的測試,讀取存儲在90中的已編碼的值,繼而由矩陣運(yùn)算符j(92)進(jìn)行解碼。抽樣塊94用于產(chǎn)生將與zk進(jìn)行比較的包括(n-k)位的向量y'。此外,為了完成防止電路受到特洛伊木馬的有效負(fù)載的執(zhí)行,進(jìn)行第二操作,該第二操作在于由矩陣運(yùn)算符k(93)對包含在90中的值進(jìn)行解碼并且繼而執(zhí)行與空向量95的比較測試。
圖10是示出根據(jù)生成代碼c和代碼d的一個(gè)實(shí)施例的方法(圖3中的步驟305)的流程圖。
代碼生成方法可以包括初步步驟900,其在于確定具有k的維度和至少等于
n≥k+dc'-1
為了檢測到更多的故障,有利地有可能選擇大于最小值的n,這增加了故障檢測概率。借助于簡化,假設(shè)可以獲得維度恰好為k且最小距離恰好為
可以使用數(shù)據(jù)庫來實(shí)施步驟900,該數(shù)據(jù)庫如alexandreduc、stefandziembowski和sebastianfaust的“unifyingleakagemodels:fromprobingattackstonoisyleakage.iacrcryptologyeprintarchive,2014:79,2014orconstructivemethods”中所述。因?yàn)闆]有適合的方法來查找具有大的對偶距離的代碼,所以步驟900用于準(zhǔn)備構(gòu)造對偶碼d。
在步驟902中,計(jì)算對偶碼c'。對偶碼表示為d=c'┬。d以長度n、維度(n-k)以及對偶距離
在步驟904中,使用主體
c的參數(shù)是[n,k]。在保護(hù)系統(tǒng)100包括故障檢測單元12的實(shí)施例中,向量子空間c可以被有利地選擇有大于預(yù)定義的值的最小距離dc(符合特性2的含義(coronary),借此如果攻擊系統(tǒng)篡改直到z的dc-1行,則其可以被檢測到的概率為1)。
盡管在某些應(yīng)用中使用線性代碼是有益的,但是本發(fā)明不限于使用線性代碼。如本文所使用的,非線性代碼(被稱為非限制性代碼)指示不具有向量空間結(jié)構(gòu)的子集??梢允褂闷渌愋偷拇a,舉例來說,例如
-長度為n,
-大小為2k,
-對偶距離為
例如,可以如以下示例中以magma偽代碼(用//來標(biāo)記偽代碼的注釋)所描述的來確定矩陣g、h、j以及k:
在下文中描述了符合圖9方法的代碼生成的示例:
1、根據(jù)步驟900來確定代碼c';
2、然后,根據(jù)步驟902將補(bǔ)碼d確定為c'的對偶碼(d=c'┬)。利用單位矩陣在右邊以系統(tǒng)形式寫入d的生成矩陣h,如下所示:
h=(min-k),其中m是計(jì)算h的控制位的大小為(n-k)×k的矩陣。
3、然后,代碼c由其生成矩陣g=(ikok×(n-k))定義。大小為n×n的方陣
注意,有可能根據(jù)g和h來以分析的方式計(jì)算矩陣j和k:
第二個(gè)等式使用
注意,最小距離d的代碼的效率r=k/n可以與k成比例。因此,對多個(gè)位執(zhí)行編碼是有利的。此外,隨著k增加,最小距離的增益變得越來越臨界。這樣的最小距離對應(yīng)于離散數(shù)學(xué),其中某些奇點(diǎn)對于k的特定值來說是顯然的,從而使它們不具有與代碼的維度連續(xù)的演進(jìn)。尤其會發(fā)生,對于具有參數(shù)[n,k]的代碼和具有參數(shù)[n=2,k=2]的代碼都達(dá)到性質(zhì)1的約束。
因此,在某些實(shí)施例中,針對實(shí)施復(fù)雜性的原因,構(gòu)造兩個(gè)矩陣
這種方法(即構(gòu)造2個(gè)矩陣)可以應(yīng)用于矩陣g和/或h和/或j和/或k:
-對于大小為k×n的矩陣g,矩陣的實(shí)施成本為nlogk,其大于
-對于大小為(n-k)×n的矩陣h,矩陣的實(shí)施成本是nlog(n-k),其大于
-對于大小為n×k的矩陣j,矩陣的實(shí)施成本是klog(n),其大于
-對于大小為n×(n-k)的矩陣k,矩陣的實(shí)施成本為(n-k)log(n),其大于
使用具有較小維度的多個(gè)代碼來對系統(tǒng)的狀態(tài)進(jìn)行編碼使得有可能減小實(shí)施大小而不會損害安全要求。
在通過插入特洛伊木馬類型的惡意電路的攻擊的示例中,假設(shè)通過觸發(fā)特洛伊木馬而對其進(jìn)行激活,特洛伊木馬可以引導(dǎo)其對電路的任何部分進(jìn)行攻擊,舉例來說,例如:
·承載計(jì)算數(shù)據(jù)的變量,例如,加密密鑰或敏感數(shù)據(jù),即取決于已知變量和密鑰二者的數(shù)據(jù);
·監(jiān)測執(zhí)行計(jì)算的變量(例如,輪流的計(jì)數(shù)器)。
特洛伊木馬所進(jìn)行的攻擊旨在破壞數(shù)據(jù),例如執(zhí)行故障注入(舉例來說,在某些內(nèi)容中可利用的,例如在加密中)。另一個(gè)攻擊示例還可以旨在破壞程序的流控制圖,例如完全跳過加密操作或引起在軟件中可以利用的硬件錯(cuò)誤(特洛伊木馬修改函數(shù)的返回地址,如果這樣則已經(jīng)檢測到軟件激活條件)。
本發(fā)明的實(shí)施例提供了免受這種攻擊的有效保護(hù),因?yàn)樗鼈兪沟靡韵嗤姆绞奖Wo(hù)異構(gòu)基本變量的集合成為可能。事實(shí)上,對于黑客來說,基本變量是所有潛在的目標(biāo),而基于對每個(gè)變量進(jìn)行單獨(dú)保護(hù)的經(jīng)典方法易于忽略可能形成特洛伊木馬的目標(biāo)的某些變量。
本發(fā)明的實(shí)施例可以實(shí)施動態(tài)地且同時(shí)地應(yīng)用于大量異構(gòu)二進(jìn)制變量的編碼,這降低了省略保護(hù)敏感變量的風(fēng)險(xiǎn)。因此,面對由特洛伊木馬進(jìn)行的有效載荷類型攻擊,保證了覆蓋。如果對所有信號(例如,所有鎖存器d)都進(jìn)行了編碼,則可以實(shí)現(xiàn)最大安全級別。類似地,本發(fā)明的實(shí)施例可以防止特洛伊木馬的正確觸發(fā)。
可以根據(jù)電路11的結(jié)構(gòu)描述的一種或多種類型的基本布爾向量變量來構(gòu)造變量x,這種類型的變量可以包括具有時(shí)序門或具有組合門的與行相關(guān)聯(lián)的變量。例如,變量x可以是:
1、信號(k行的向量)
2、k個(gè)時(shí)序門的集合(k位的dff寄存器)
3、xor類型的k個(gè)組合門的向量
圖11示出了由k位表示的向量信號類型x的向量變量x,并且其根據(jù)均由一位表示的信號類型的k個(gè)基本變量而構(gòu)成。饋送向量信號x的互連圖(網(wǎng)表)的部分由參考100(上游網(wǎng)表)來指示,而接收向量信號x作為輸入的互連圖的部分由參考101(下游網(wǎng)表)來指示。
電路保護(hù)方法修改電路的結(jié)構(gòu)描述,以便在要保護(hù)的信號x的部分100上游中插入到電路中,電路元件被配置為由寫入變量z的操作來代替寫入信號x的操作,變量z通過以下操作獲得:
1、通過具有生成矩陣g的代碼c對信號x進(jìn)行編碼,以及
2、使用異或103加上掩碼yh。
因此,原始向量信號x被等于xg+yh的受保護(hù)的向量信號z代替。在n優(yōu)選地大于或等于k的情況下,從此開始用于表示xg、yh以及z的位數(shù)等于參數(shù)n(代碼的長度)。
電路保護(hù)方法進(jìn)一步修改電路的結(jié)構(gòu)描述,以便在要保護(hù)的信號x的部分101下游中插入到電路中:
-電路元件,其被配置為用讀取z的操作來替代讀取信號x的操作,然后進(jìn)行使得能夠通過應(yīng)用矩陣j來恢復(fù)原始向量信號x的解碼,
-電路元件,其被配置為通過將z傳遞到矩陣k中來對隨機(jī)位向量y實(shí)施完整性驗(yàn)證;如果向量y不同于zk,則檢測到關(guān)于變量z的故障。
圖12示出了類似的示例,其中要保護(hù)的變量x是通過存儲同步位類型的庫)的k個(gè)基本變量(k個(gè)一位寄存器或dff(數(shù)據(jù)觸發(fā)器))而構(gòu)造的時(shí)序邏輯門。
該實(shí)施例與圖11的實(shí)施例的不同之處在于,在dff104的輸入處應(yīng)用上游部分100的修改,而在dff104的輸出處應(yīng)用下游部分101的修改。在該變換期間,k位的dff變?yōu)閚位的dff。如果原始dff104的初始狀態(tài)(關(guān)于接通或者由于復(fù)位信號的影響而重新初始化之后)為x0,則變換后的dff的初始狀態(tài)變?yōu)閤0g。
圖13示出了線性組合門105,例如具有k位的兩個(gè)向量輸入x1和x2的異或(xor)門,并且因此具有由k位表示的k位的輸出x3。如在第一張圖中所示的情況下,保護(hù)方法可以應(yīng)用于兩個(gè)輸入向量信號x1和x2中的一個(gè),或者應(yīng)用于輸出向量信號x3。假設(shè)針對組合門105的兩個(gè)輸入x1和x2以及輸出x3選擇相同的代碼c。用代碼c的生成矩陣g對xor門(被單獨(dú)地認(rèn)為是要保護(hù)的變量x)的每個(gè)輸入進(jìn)行編碼。加上不同的掩碼y1h和y2h。因此,兩個(gè)輸入z1和z2等于z1=x1g+y1h且z2=x2g+y2h。這兩個(gè)輸入在n位上表示。由于xor門的線性,可以通過將矩陣j應(yīng)用于輸出z3=z1+z2來獲得輸出x3=x1+x2。在將z1和z2相加之后,因?yàn)樗鼈兊姆植急3志鶆?,兩個(gè)掩碼也已經(jīng)相加而沒有這種妥協(xié)的安全性。因此z3k的結(jié)果為y1+y2,這使得有可能對z3的完整性進(jìn)行測試。
應(yīng)當(dāng)注意,同樣有可能將保護(hù)方法應(yīng)用于根據(jù)具有兩個(gè)輸入和一個(gè)輸出的k個(gè)xor門而構(gòu)造的全局變量x。
還應(yīng)當(dāng)注意,這種變換是組合的,這表示它們可以(通過重現(xiàn))應(yīng)用于比向量信號、向量存儲元件或向量時(shí)序門更復(fù)雜的結(jié)構(gòu)。
圖14示出了根據(jù)以結(jié)構(gòu)級(例如通過互連圖(網(wǎng)表))表示的電路來構(gòu)造向量布爾變量的一個(gè)示例。被指示為a、b以及c的三個(gè)獨(dú)立子組件饋送三個(gè)布爾信號,其進(jìn)入三個(gè)獨(dú)立鎖存器(dff)d。每個(gè)dff產(chǎn)生輸出布爾信號,該信號轉(zhuǎn)而饋送被稱為a'、b'以及c'的三個(gè)獨(dú)立分量。
三個(gè)dff過程數(shù)據(jù)沒有關(guān)系?,F(xiàn)在,可以將它們視為人工子組件,其輸入是子組件a、b以及c級聯(lián)的三個(gè)輸出,并且其輸出是子組件a'、b'以及c'的三個(gè)級聯(lián)的輸入。在該示例中,k等于3。繼而,級聯(lián)的三個(gè)變量被表示為k位的總線,通常被表示為在與“在選擇變量之后”表示相對應(yīng)的圖13的下半部分。
圖15示出了根據(jù)異構(gòu)語義信號來構(gòu)造全局變量x的另一示例。該示例更加精確地對應(yīng)于處理器(中央處理單元(cpu))的表示,該處理器包括:
-控制單元,其由控制輸入x1(舉例來說,例如計(jì)算機(jī)程序)和狀態(tài)演進(jìn)表110來控制。該表被編碼為組合邏輯塊111(表示為combi1),其構(gòu)成處理器cpu的有限狀態(tài)機(jī)(fsm)。
-數(shù)據(jù)處理單元112,其被表示為流水線,進(jìn)入寄存器113的數(shù)據(jù)x2繼而由組合塊113處理(表示為combi2),也由控制單元控制。在流水線中實(shí)現(xiàn)計(jì)算。例如,combi2塊可以被認(rèn)為是算術(shù)和邏輯單元(alu)。
在采用這種方式以結(jié)構(gòu)級描述的電路中,存在異構(gòu)類型的寄存器:由k1位的向量信號x1所表示的fsm的控制寄存器,和由k2位的向量信號x2所表示的流水線數(shù)據(jù)寄存器。
可以級聯(lián)這兩個(gè)信號,并且甚至對它們進(jìn)行交錯(cuò)(即混合x1的位和x2的位),并將k=k1+k2位的新的向量認(rèn)為是要保護(hù)的信號。
因此,根據(jù)各種實(shí)施例的電路保護(hù)系統(tǒng)和方法使得有可能提供免受特洛伊木馬類型攻擊的高級保護(hù)。
所提出的保護(hù)系統(tǒng)和方法不一定需要知道受保護(hù)的變量的含義。它們甚至可以針對異構(gòu)類型基本變量的級聯(lián)來進(jìn)行操作,以及滿足安全性和功能非回歸目標(biāo)。一旦已經(jīng)識別出k個(gè)基本變量并且已經(jīng)定義了安全對象的值,在將原始結(jié)構(gòu)描述變換為另一個(gè)受保護(hù)的結(jié)構(gòu)描述和新的結(jié)構(gòu)描述的編譯之后,就可以動態(tài)地應(yīng)用保護(hù)。
使電路保護(hù)基于結(jié)構(gòu)描述提供了許多優(yōu)點(diǎn),包括:
·要保護(hù)的變量被級聯(lián)為大的位向量,其大小由安全目標(biāo)(代碼的對偶距離或最小距離)確定;
·因?yàn)樵摲椒ú蝗Q于電路的語義,所以該方法是動態(tài)的,這特別地使得有可能限制保護(hù)電路的成本;
·通過根據(jù)所選定的(例如,任意的)順序來級聯(lián)k個(gè)二進(jìn)制信號而獲得的k位的全局變量,這表示考慮到通過應(yīng)用保護(hù)而實(shí)現(xiàn)的信號的交錯(cuò),一旦受保護(hù)的電路被模糊化,其功能性就更難以理解;
·最后,可以產(chǎn)生長的位向量,其有助于獲得令人滿意的代碼,令人滿意的代碼是在雙重距離或最小距離方面實(shí)現(xiàn)或超過其目標(biāo)的代碼,并且其具有高效率(在線性代碼情況下定義為其長度與其維度之比)。
本發(fā)明的實(shí)施例可以應(yīng)用于基本布爾變量的任何集合,無論這些變量的性質(zhì)如何:以長度為k的異構(gòu)向量的形式在塊中對要保護(hù)的基本變量進(jìn)行操作,其中k可以多達(dá)幾千位。
因此,本發(fā)明有助于使用有效的代碼(具有大維度和/或具有長距離的長度的代碼)。本發(fā)明不受必須考慮其語義而一個(gè)接一個(gè)地對要保護(hù)的多個(gè)基本變量進(jìn)行選擇和處理的限制,并且因此根據(jù)動態(tài)方法來操作。
本發(fā)明的另一個(gè)優(yōu)點(diǎn)在于:在寄存器輸出處對時(shí)序變量進(jìn)行隨機(jī)編碼(掩蔽),而不允許直接識別是否通過輔助信道分析來移植特洛伊木馬或觀察敏感變量的泄漏的信息。
根據(jù)各種實(shí)施例的保護(hù)方法可以與防止特洛伊木馬插入的其它經(jīng)典方法相結(jié)合,例如在制造之后將全部或部分功能放置在要編程的存儲器中、使用密集布局、或門結(jié)構(gòu)(也稱為網(wǎng)表)混淆。
可以將循環(huán)隨機(jī)數(shù)的對策的邏輯門與相鄰的門(例如,借助于eda工具)混合,這可以使得攻擊的初始階段變得復(fù)雜,該攻擊在于執(zhí)行電路的功能反向設(shè)計(jì)。因此,電路11的組合部分122與由保護(hù)系統(tǒng)100所添加的部分(用于編碼并且適用于故障檢測)的相同電路中的混合涉及數(shù)據(jù)上的計(jì)算部分與對計(jì)算進(jìn)行檢查一樣多,這是使得電路11的描述較不容易理解的另外的優(yōu)點(diǎn)。
可以在許多應(yīng)用中使用根據(jù)各種實(shí)施例的保護(hù)系統(tǒng)100,舉例來說,例如:
-保護(hù)電路11以防特洛伊木馬,狀態(tài)的隨機(jī)編碼不允許在邏輯上移植特洛伊木馬;
-防止反向設(shè)計(jì),電路的功能埋設(shè)有解碼/重新編碼邏輯;
-防止前側(cè)和后側(cè)二者的探測攻擊;探測攻擊可以是點(diǎn)探測類型或通過組件發(fā)出的信號噪聲測量而進(jìn)行的探測(也稱為隱藏信道分析的威脅);表示用于成功提取清除數(shù)據(jù)位而放置的探針的數(shù)量的安全參數(shù)可以與用于針對特洛伊木馬插入的安全參數(shù)相同;
-防止sca(側(cè)-信道分析),即針對時(shí)序變量的經(jīng)由頻帶泄漏信息的研究(例如,通過所消耗的電流、所輻射的場、進(jìn)行計(jì)算所花費(fèi)的時(shí)間等)對變量進(jìn)行保護(hù)防止構(gòu)建泄漏模型;
-如果保護(hù)系統(tǒng)100包括檢測單元12,則通過驗(yàn)證管芯的完整性(故障檢測)來防止故障注入攻擊。
無論什么類型的控制或數(shù)據(jù),本發(fā)明還使得能夠進(jìn)行掩蔽而不管信息的類型。繼而可以存在實(shí)質(zhì)上針對數(shù)據(jù)的掩蔽方案。
另一個(gè)優(yōu)點(diǎn)在于使得能夠獨(dú)立于邏輯的布爾線性性質(zhì)針對電路的組合部分進(jìn)行編碼和重新編碼。
此外,通過在使用綜合(eda)工具的邏輯綜合期間進(jìn)行簡化,可以將時(shí)序資源保護(hù)方法的邏輯與組合資源進(jìn)行混合。
掩蔽方法是完全可自動化的,而在具有現(xiàn)有數(shù)據(jù)掩蔽方法的情況下則不是這樣。此外,掩蔽方法可證明以驗(yàn)證編碼的功能一致性。
根據(jù)某些實(shí)施例的隨機(jī)數(shù)的驗(yàn)證構(gòu)成了免受故障注入攻擊的保護(hù)。
所使用的代碼可以特別地是靈活的代碼。有可能通過正交投射使用補(bǔ)充對偶(sud)碼來促進(jìn)驗(yàn)證。一些循環(huán)代碼具有這樣的sud性質(zhì)。例如,對于k=2163位的狀態(tài),可以找到具有參數(shù)[n=4327;k=2163;d≥66]的代碼。然而,可以使用其它更有效的構(gòu)造(通過查找具有給定大小和最小距離的代碼,并使其長度最小化)。當(dāng)然,本發(fā)明不限于sud類型的代碼。可以使用其它類型的代碼來放松約束,以獲得更短的編碼長度,和/或使得能夠獨(dú)立地選擇安全參數(shù),例如dc(所選擇的代碼c的最小距離)和對偶碼d┴的最小距離。
特別地,使用非線性代碼針對給定的維度和長度來實(shí)現(xiàn)更大的最小距離可能是有利的。
例如,特洛伊木馬可以被視為集成到受到攻擊的組件中的點(diǎn)探測站?,F(xiàn)在,這樣的站難以讀取或?qū)懭攵嘤诖蠹s十個(gè)信號。由于特洛伊木馬被集成,與外部站相比它可以連接到更多的資源。繼而,所選擇的安全參數(shù)可以相對較大,例如大約32或64位。
檢測單元12同樣可以用于檢測成功插入的特洛伊木馬。
本領(lǐng)域技術(shù)人員將理解,根據(jù)各種實(shí)施例的保護(hù)方法可以通過硬件、軟件或者硬件和軟件的組合以各種方式實(shí)施。
特別地,保護(hù)方法的軟件實(shí)施方式可以有利地用于防止網(wǎng)絡(luò)威脅,即,在數(shù)據(jù)或代碼損壞(即,存儲器損壞)之后的存儲器公開和控制流劫持(hijacking)。應(yīng)當(dāng)注意,在保護(hù)方法的軟件實(shí)施方式中,存儲器可以指示整個(gè)存儲器級,其包括寄存器、高速緩沖存儲器以及存儲器(ram、sram、sdram、eeprom、閃速存儲器等)。
本發(fā)明不限于上文借助于非限制性示例而描述的實(shí)施例。本發(fā)明包括本領(lǐng)域技術(shù)人員可以設(shè)想到的所有變型的實(shí)施例。特別地,本發(fā)明不限于使用線性代碼,非線性代碼的使用顯著地使得有可能針對給定的維度和長度來實(shí)現(xiàn)更大的最小距離。
此外,應(yīng)當(dāng)注意,為了說明的目的,本發(fā)明不限于出于解釋目的以magma偽代碼形式所給出的二進(jìn)制碼c和補(bǔ)碼d的示例性構(gòu)造。可以根據(jù)不同的方法來構(gòu)造代碼c和代碼d,舉例來說,例如通過在更大的二進(jìn)制字母表上(即在galois域gf(2m)上,其中m是正整數(shù))對代碼進(jìn)行擴(kuò)展,或者通過使用直和、直積,或者plotkin和來組成代碼。還可以通過使用例如削弱、縮短或擴(kuò)展根據(jù)其它代碼對代碼進(jìn)行推導(dǎo)來構(gòu)造代碼c和d。
此外,根據(jù)本發(fā)明的保護(hù)系統(tǒng)100不限于特定類型的布爾電路11。例如,電路11可以是asic,保護(hù)系統(tǒng)可用于防止在代工廠中插入木馬,或者電路11可以是fpga電路,保護(hù)系統(tǒng)可用于防止在比特流編譯上插入特洛伊木馬。電路11同樣可以對應(yīng)于由二進(jìn)制碼所描述的軟件程序,保護(hù)系統(tǒng)可用于防止在編譯時(shí)或在二進(jìn)制碼中插入特洛伊木馬。正如電路的結(jié)構(gòu)描述,二進(jìn)制碼是關(guān)于二進(jìn)制字的連續(xù)計(jì)算。更一般地,本發(fā)明涉及與結(jié)構(gòu)描述相關(guān)聯(lián)的任何類型的布爾電路,結(jié)構(gòu)描述描述了對由位表示的基本布爾變量進(jìn)行的計(jì)算的集合,不管是以下哪種形式:
·以硬件形式,舉例來說,例如互連基本邏輯門的電路,或者
·以軟件形式,舉例來說,例如對位向量進(jìn)行的一系列計(jì)算(典型地,具有可變大小的字節(jié)[k=8]、字[k=16]、雙字[k=32]、四字[k=64]等,其具有通常由處理器操作的變量的大小)。