專利名稱:智能集成電路的制作方法
已經知道,各種微處理器或各種微型計算機或智能集成電路是通過在微處理器、微型計算機或智能電路的內部或外部所提供的多個有節律的信號與時鐘信號的同步來順序地執行記錄在存儲器中的一個程序的指令。智能集成電路是一個包含有特別電路且限于執行有限個指令或功能的集成電路,而使得這些集成電路獲得特別的進步。
已經證明,能夠根據時間將執行程序的各個階段描繪下來,因為指令的執行按照這個程序所予定的過程順序進行的,一般說來,是和使處理器有節律的時鐘信號是同步的。事實上,要將整個程序翻譯成一個應按予先知道的順序逐個執行的指令序列,每個指令的開始時間和結束時間都是完全已知的,因為每個指令的執行都是按照一個予定的處理。對于那些復雜的分析裝置而言,這個過程具有人們稱為可知的“標記”。已經知道,可以用指令或指令列通過測量不同的電子線路消耗能量的信號來得到這個處理的特征標記。因此,原則上說,可以在知道在處理單元中在給定的時刻所執行的指令序列的性質,因為正進行的程序是由這些特征標記已知的指令的予定序列所構成的。
可以通過這樣的裝置來確定要執行的是什么特用的指令以及這個指令所用的數據。
當將一個微處理機或微型計算機用于高度機密的應用中時,能夠觀測到這個微處理機或微型計算機中一個程序運行的細節是非常不利的。實際上,某個有不良意圖的人可以知道處理器的相繼狀態,并提取部分信息以知道內部處理的某些敏感的結果。
例如,可以想象,根據給定的保密操作的結果,在不同的時刻進行給定的活動,例如檢測內部的保密信息,或對消息解密、或進一步控制某些信息的完整性。可根據所考察的時刻,例如去影響處理器、或用物理探查獲得某些寄存器的值,以能得到秘密信息的結果或內容,這甚至能在使用編有密鑰的加密計算的情況下使用。
已經知道一些裝置,它在保密的微型計算機上裝上隨機時鐘脈沖發生線路,給這些保密微型計算機帶來了初步的改善。采用這種方法,使得各種偵探方法都很難觀測到各個事件,因為它們之間的同步變得快速的不可能實施,而且事件的發生變得難以預料。
然而這種方法有很多缺陷。
首先是這樣的線路的觀念就是非常艱難和非常令人討厭的,因為不可能在與微型計算機具有同樣復雜性的整體中模擬隨機運行,而在其制造結束時在混亂的行為中對這些線路的測試就更為困難。事實上,一個時鐘脈沖的隨機序列對于線路的調整就是非常難于模擬的,而更為困難的則是控制處理器的邏輯線路整體的各種性能,特別是在內部的總線上和在各寄存器中的信號交換的周期內。
還知道另一種裝置,它引入一種新的結構,它是建立在微處理機是否使用一種虛設存儲器的基礎上,使用這種虛設存儲器使得與外界的同步完全去掉,使用這種方法就使對事件和特征標記觀測變得非常困難。
然而,隨機時鐘或者虛設存儲器的使用,甚至即使這些使用帶來了有意義的改善,也不能改變微處理機的基本性能,它的基本性能總是序列的,即使相繼的各條指令來自不同的程序。因而在理論上存在著“濾去”壞的指令而僅保留好的指令,因而還可抽取來自微處理機的那些信息部分。
事實上還有另外一個缺陷必須保護那些被虛設序列所中斷的程序執行的上下文,并將之恢復,這對于保護那些不可忽視的存儲器資源是必要的。
本發明的目的之一就是裝備智能集成電路以禁止上面所述的勘查,更普遍地是阻止所有的對來自處理器或主處理單元的信號的翻譯,這種電路稱為“多種不可追蹤微計算機(“MUMIC ”Multi UntraceableMicrocomputer)。
這個目的是用下面的方法達到的所說的智能集成電路具有一個執行主程序的主處理器和一個應用系統,用來構成實現任務的主處理,這個智能集成電路還有至少一個輔助處理器,能夠協同執行至少一個輔助程序,以構成至少一個實現任務的處理;集成電路還有各處理器及各裝置的共同電源電路,用來保證單個或多個能量類似的輔助處理及各種不同運行的特征標記,與主處理器協同進行,用連續的方式或用間歇的方式將能量干擾引入供電電路中,將能量干擾疊加在主處理擾動上,以此實現連續的或間歇的干擾。
根據另一個特征,每個主處理器和輔助處理器都是一個保密的微處理機或微型計算機。
根據另一個特征,是由智能集成電路的主處理器(1)的應用系統去啟動激活這些裝置的,使得由上述這些裝置所建立起來的附加安全僅是由處在從外部的可訪問的集成電路的某個地方的應用系統的主處理器所執行的結果來決定的。
根據另一個特征,述及的智能集成電路具有一個供主處理器使用的主存儲器,其中的至少一個部分處有述及的應用系統,是不能從外部訪問的,然而能由兩個處理器中的至少一個和供這個輔助處理器使用的一個相應的輔助存儲器去訪問。
根據另一個特性,智能集成電路在各處理器、各處理器的相應的存儲器以及輸入輸出電路之間至少有一條通信總線。
根據另一個特性,智能集成電路是借助于在一個或多個基底上散布的邏輯電路來實現的,使得兩個處理器的物理植入不是用易于重復的功能塊來實現的,例如是用物理結合但具有分開的邏輯結構。
根據另一個特性,輔助處理器執行輔助處理任務,即將主處理功能的特征標記最小化或取消。
根據另一個特性,輔助處理器執行輔助處理的任務是與主處理器所執行的主處理器的任務相關的,以使處理的中間結果從來不出現在處理過程中。
根據另一特性,輔助程序使用的工作空間小于主程序的工作空間。
本發明的第二個目的是使得只能在輔助處理運行時主處理才能運行。
這第二個目的是用智能集成電路在主處理器與輔助處理器之間具有通信裝置來實現的。
根據另一個特性,兩個處理器之間的通訊裝置能使主處理器知道輔助處理器是否在運行。
根據另一個特性,兩個處理器之間的通信裝置能使主處理器去鑒別輔助處理器。
根據另一個特性,輔助處理器的證實或運行的檢驗是由主處理器在處理過程中實現的。
根據另一個特性,輔助處理器的激活裝置或是由主處理器及其主程序,或是由一個中斷系統,或是由一個時間計數器,亦或是由三者的結合來控制的。
本發明的第三個目的是使輔助處理器實施的一個程序完全不同于主程序。
達到這第三個目的的方法是使輔助處理器所執行的輔助處理的任務與主處理器所執行的主處理的任務無關。
根據另一個特性,輔助處理器所執行的輔助處理的任務是將主處理器的運行特征標記最小化或抹去。
本發明的第四個目的是輔助程序使用的程序的特征標記的作用和主處理器所引導的特征標記的作用相反。
達到第四個目的是用輔助程序實施一個與主處理相關的處理,使得這兩個過程的結合所提供的一個輔助處理器的運行特征標記能將主處理器運行的特征標記掩蓋起來。
根據另一個特性,使處理器執行的任務是和主處理器的任務相關的,以使處理中間的結果絕不出現在處理的過程中。
本發明的第五個目的是使用已經有效的電路來實現一個新穎結構,而不需建立一個新的半導體技術或新的制造方法。
用輔助處理器可替代主處理器或者反之亦然來達到第五個目的。
根據另一個特性,輔助處理器執行的任務是通過將主、輔助處理器分別執行各自的程序的處理同步和將所得的兩個數據值進行比較來和主處理器執行的任務相關的。
根據另一個特性,輔助處理器所執行的任務是通過從主程序中邏輯地推斷輔助程序來使和主處理器所執行的任務相關的。
根據另一個特性,述及的智能集成電路至少有兩個處理器,且每個處理器都有各自的總線與每個處理器的隨機存取存儲器、只讀存儲器相連,并使和主處理器的非易失存儲器相連。
根據另一個特性,述及的智能集成電路具有多個處理器,每個處理器在和一條共同的通信總線相連,這條總線在連接在這條總線上的各處理器及隨機存取、只讀及非易失(non volatile)存儲器組間多工操作,由仲裁電路管理訪問此共同總線的沖突。
根據另一個特性,輔助處理器按照不管什么樣的順序相繼執行或與主處理器執行的程序相關的程序,或與主處理器執行的程序不相關的程序。
在后面的描述中,將會更清楚看到本發明的別的特性和優越性。后面的描述要參照下列附圖-
圖1示出本發明的集成電路一個實施方式的邏輯示意圖,這個集成電路中有兩個處理器,每個處理器有它的總線。
-圖2a是上述集成電路的兩個處理器間的通信電路的一個實施例;-圖2b是該電路的兩個處理器間的通信中所使用的一個幀的結構。
-圖3是根據本發明的集成電路的一個實施方式的示意圖,其中有兩個處理器及唯一的一條總線。
-圖4是用同步和對來自兩個處理器的數據的兩個值進行比較而實施保護的實施方式的示意圖。
-圖5是智能集成電路的雙存取通道存儲器的一個實施例,在每個通道上用一個處理器存取。
-圖6示意性地示出根據本發明的電路的元件的物理植入方式。
-圖7示出一個具有兩個處理器的電路的各元件的傳統的植入方式。
本發明的目的在于智能集成電路,稱為MUMIC(MultiUntraceable Microcomputer),下面結合圖1說明其邏輯結構的第一個變形。如后面所看到的,這個邏輯結構并非是其物理結構或拓撲學分布的表示。這個智能集成電路是由一個主處理器(1)和一個輔助處理器(2)構成的。每個處理器是通過它們各自的通信(地址、數據和控制)總線(3、4)與各自的存儲器(12、13、22)和如易失存儲器RAM(11、12)那樣的工作寄存器連接,這些存儲器(12、13、22)中每個裝有主處理器(1)和輔助處理器(2)所要執行的主程序(P1)和輔助程序(P2)。與輔助處理器相連的存儲器都是“虛設”隨機存取存儲器(DumRAM 21)和“虛設”的只讀存儲器(DumROM),這些存儲器可使輔助存儲器可執行的任務是迭加在主處理器(1)所執行的任務之上的。主處理器的應用系統例如是只讀存儲器(12)的一個從外部不能存取的部分,但卻至少可為兩個處理器中的一個存取。每個處理器(1、2)都有各自的專門的定序器(分別為19、20)。本發明的集成電路還有一個輸入輸出總線(14),這條總線一方面僅和單一的總線相連,或當按照一種變形,集成電路是和多個總線相連時而與主處理器的總線相連,另一方面例如通過接觸,或者通過一個無接觸的連接裝置與外界連接,用來接收來自一個終端的信號。可以在上述的處理器中增加一個寄存器組(R1、R2、R3)和一個中斷電路(15)來實現與后面所描述的一個變形相適應的一些運行的變形。三個寄存器單元(R1、R2、R3)都和一個中斷發生電路(15)相連,而后者則接在處理器(現為主處理器)的中斷輸入處。
在主處理器(1)控制從動輔助處理器的情況下,主處理器(1)的應用系統是唯一的,且位于主處理器可存取的只讀存儲器(12)中,對于一些變形,各處理器之間可有相互交換角色時,則需要有第二個應用系統,或者同一個應用系統可以使輔助處理器進行訪問,例如通過交換訪問權的籌碼(jeton),并在處理器在轉手訪問權之前對這個訪問權進行控制。同樣,可以在每個處理器中增加一個中斷電路,這對于處理器所要扮演的角色是需要的,特別是在交換角色的情況下或在圖2a所示的實施變形中。
主程序(P1)是裝在非易失存儲器(13)中,且使用與申請號為FR 2 765 361公布的法國專利申請中所描述的存儲器相應的虛設存儲器,同時要考慮到智能集成電路中至少有兩個處理間的執行的同時性。在這樣的情況下,在同一個周期中會使用兩種類型的存儲器(虛設的或別的),即使總線在實際上是多工的也是這樣。
述及的集成電路還有一個輸入輸出接口,與這個集成電路的至少一條總線相接,這個接口可以是并聯/并聯型的,亦可是并聯/串聯型的。在一個實施變形中,主處理器(1)的隨機存取存儲器RAM(11)可以是由輔助處理器(2)的虛設隨機存取存儲器(21 DumRAM)提供的,以能夠成一個如圖5所示的單一且同一的雙通道存儲器。這些雙通道隨機存取存儲器(11-21)使用一對地址寄存器(110、210),用來接收地址信號(ADD0、ADD1),亦可分別由主處理器(1)和輔助處理器(2)所訪問。這些雙通道隨機存取存儲器(11-21)還使用第一對數據寄存器(111、211)來分別為主處理器(1)和輔助處理器(2)所訪問,讀取數據。數據讀取寄存器的輸出是和發送數據信號(D0、D1)的放大器(113、213)相連接。最后,這些雙通道隨機存取存儲器(11-21)還使用第二對數據寄存器(112、212),用來分別為主處理器(1)和輔助處理器(2)所訪問,寫入數據。這類雙通道存儲器的結構為如Motorola或Texas儀器公司供應商所使用。同步的或不同步的雙通道存儲器可通過兩個不同的信道去訪問存儲地址區,讀取或寫入。特別是將這些存儲器用于調整不同系統間的同步化處理。將雙通道存儲器用于處理間的同步是建立在下面的事實上各處理器可以用同步或非同步的方法,通過兩條獨立的信道(地址和數據)來訪問存儲器,并分享可以同時使用的數據。
兩個處理器(1、2)及它們的總線(3、4)和它們的存儲器(11、21;12、13、22)都是用同一的一個供電電路(6)供電的,使得一個與另一個處理器間的能量需求間的區別為最大。實際上,由于半導體技術的成果,今天可以將兩個處理器做在同一個小片上,只有幾個平方毫米,因此得到的方案在經濟上是可行的,第二個處理器的增加的面積很少,特別是要和隨機存取存儲器(RAM)和可編程非易失存儲器(NVM)相比的話。建議使用布局工具和路徑工具,這可將所有的處理器融在唯一的單個概念(設計)塊中。通常,如果一個技術人員將兩個處理器及隨機存取、只讀及可編程非易失存儲器都植于同一個基底上,他便尋求將各種功能的重新組合以及優化的路徑、定時限制的規則(le respect des comtrainter de timing),這便使他采用的結構和定位非常接近于圖7所示的結構和定位。在圖7中,兩個處理器(CPU1、CPU2)的位置是一個接近于另一個,時鐘電路(H)鄰近兩個處理器,構成輸入輸出的回路(14)也鄰近兩個處理器,以及那個在技術上稱為邏輯“粘膠”的G1也是集成電路運行中所需要的一個邏輯元件組。構成隨機存取存儲器RAM(11和12)、只讀存儲器ROM(12和22)以及非易失存儲器NVM(13)都放在周圍。本發明的特性在于所有的邏輯算符、算術算符以及所有的控制功能都是通道或基本單元上一個與另一個相混雜的,以致不能原始地確定屬于某一個功能的單元的物理布局。這樣,每個處理器都分成如在圖6用正方塊,矩形塊所示出的一定數目的單元。還可將這些單元放在所示的別的形狀的塊中,構成時鐘電路的單元放在圓中,構成邏輯“粘膠”單元放在六角形中,構成環路的單元放在梯形中,最后是這些單元的組合,正如圖6所示。使用通用的拓撲學方法而不要物理的功能塊,兩個處理器電路的這種物理植入是非常易于實現的,易于修復,像在通常的情況下。將這樣的拓撲方法用于Gate Arrays電路,其中的每個矩陣單元都可對任何一種功能的實現做出貢獻。使用這種方法,可以將兩個處理器(1、2)物理地結合在一起,盡管邏輯機制是分開的。根據這一點,兩個相鄰的半導體或者屬于這一個處理器,亦可屬于另一個,還可屬于它們的附屬電路。這是可能的,這是因為微處理機的芯片的定址區域的電路類別并不限制在時鐘的循環期的提升,電路的這種植入方式對保證整體的安全就特別有利。當然,這種電路的實現是需要計算機幫助的自動追蹤,以保證信號路徑的正確和運行得到控制。由此得出,每個功能塊的消耗是完全交錯的,結合在一起的。
另外,兩個處理器之間可以通信,或是通過一個專門的連接,或是通過連接在總線(3、4)上的一個通信寄存器組(圖2a中的50、51),亦或是通過別的處理器的總線上的周期挪用(vol de cycle),還可以像在圖3中所示的那樣,在兩個處理器分享一條總線的情況下使用一個仲裁邏輯。
圖2a所示的連接例如是借助于檢測電路(B1、B2)使用以中斷方式運行的兩個寄存器(50、51)的連接。但是也可使用一個雙存取寄存器(5),其所用的協議接近于在智能卡中所用的協議,就是說,在協議中,主處理器(1)是主控的。在圖2a所示的實施例中,第一個寄存器(50)保證主處理器(1)的總線(3)和輔助處理器(2)的總線(4)之間的連接,與此同時,第二個寄存器(51)保證了在另一個方面上的連接。第一寄存器(50)和第二寄存器(51)中的每一個都分別裝有第一存儲觸發電路(B1)和第二存儲觸發電路(B2),當將一個信息送給一個寄存器時,相應的存儲觸發電路便過渡到激活狀態。第一個觸發電路(B1)的輸出連接在輔助處理器(2)的中斷系統上,與此同時,第二個觸發電路(B2)連接在主處理器(1)的中斷系統上。各寄存器的大小足以容納每個處理器的請求和應答。圖2b示出一個幀的結構,其中有一個標題,一個數據場和一個用來檢測誤碼的場。每個幀可以構成一個信息塊(bloc I),亦可構成一個確認塊(blocA),兩個塊中的每一個都可以在兩個方向上傳輸。標題可以是由兩個八位字節構成的,第一個八位字節給出塊的號碼,而第二個八位字節給出了塊的長度。當將一個塊傳送給第一寄存器(50),則相應的觸發電路就產生一個信號,這個信號經輔助處理器(2)譯成一個中斷IT1,并使它能預計到有一個信息在要到達的第一寄存器(51)。輔助處理器(2)就可以讀取第一寄存器(50)的內容,獲得這個塊,然后確認由第二寄存器(51)中確認塊接收該塊,到達具有相同號碼的主處理器(1)。這種方法是已知的,特別是對于塊鏈,盡管在本發明的范圍內,這種方法并非是必須的。在每個信息塊中,信息場可以由自己分成兩部分一個指令場和一個數據場。指令場還可以使主處理器將一些指令發送給輔助處理器。例如,此表格是沒有限制的,則可看到指令如下讀取、寫入、校驗數據、鑒別。當輔助處理器(2)接收到一個指令時,它便通過送到第二寄存器(51)的確認塊(bloc A)去確認這個指令的接收,并在發出應答之前,以信息塊(bloc I)的形式處理在第二寄存器中的操作。這個塊的接收則是由主處理器(1)通過第一寄存器(50)的確認塊來確認的,后面仍是這樣。塊的編號能使錯誤傳輸或錯誤接收到的數據塊重復。當然用來在主處理器和輔助處理器之間交換信息的協議是可以用在相反方向的。
兩個程序(P1、P2)分別是在主處理器(1)和輔助處理器(2)中執行的,以使兩個指令的執行是同時進行的,同樣也可以將指示輔助處理器(2)的時鐘錯開一些相位,以使在每個處理器中指令周期并不完全對應。該錯開還可以是變化的,亦可是隨機的。這可以由同樣變化的指令周期的迭加來表示。這錯開可以用輔助處理器(2)的定序器(20)來生成。
一個有利且經濟的辦法是用一個非常小的“虛設”隨機存取存儲器來用作輔助處理器(2)的“虛設”存儲器。實際上這個存儲器并不扮演實際運行方面的角色,可以限制它的地址空間,使它僅在芯片上占據最小的地方。這個空間例如可以是對應于在隨機存取存儲器的矩陣中簡單增加一個或幾個RAM存儲器的行,這空間具有它專有的地址寄存器和數據寄存器。
可以讓輔助處理器(2)永久運行,但最好在兩個處理器間安置一個通信信道,非常容易將這條信道用來激活輔助處理器(2)和/或為主處理器(1)指明輔助處理器(2)正在運行和/或在實際執行任務。各處理器至少有兩個狀態活動狀態或非活動狀態。例如,活動狀態對應于執行一個各種操作的序列,而非活動狀態則是用一個不含有任何操作的等待周期來實現的。從一個狀態過渡到另一個狀態是用兩個處理器間的一個通信機制來實現的。例如主處理器可以用向輔助處理器發送一個中斷來將非活動狀態的輔助處理器激活。在利用激活機制的實施變形中,各處理器或將一串中斷行發送給至少另一個處理器,或是將一個復位串發送給它,用這種辦法來支配每一個處理器。實際上,另一個并非理想的實現從活動狀態過渡到非活動狀態的方法可以是在處理器的目的地保持重新初始化信號(復位),而當處理器過渡到活動狀態時,則將這個信號去激活并廢除。因此,激活機構就是這樣的機構,它能使一個處理器讓另一個處理器從活動狀態過渡到退活動狀態,或者相反。
可以通過在兩個處理器之間的一個鑒別機制,或是通過活動寄存器的檢驗機制,來實現這一點。鑒別機制的啟動或是應主處理器(1)的要求的,或是周期性地,又或是隨機的。當主處理器在鑒別過程中檢驗到一個畸變時,它可以停止整個處理,或進入等待狀態。
為此,可以使用中斷方式的運行。例如,當由在主處理器(1)處檢測到的畸變而生成中斷時,便在兩個處理器之間產生一個對話來實現由主處理器(1)所引導的鑒別。這個鑒別例如在于由主處理器(1)來使對基于一個密鑰的一個數據進行編碼,這個密鑰是存儲在與主存儲器(1)的總線(3)連接的一個可編程非易失存儲器(13,NVM)的一個秘密區域。將編碼的數據經通信信道傳輸給輔助處理器(2),輔助處理器(2)又將它解碼,然后將結果發送回主處理器(1),主處理器(1)將解碼結果和數據進行比較。如果解碼結果是正確的,則主處理器(1)可以繼續工作,否則它便進入等待期,等待下一個鑒別。這些機制對技術人員來說是已知的,沒有什么特殊的問題。
主處理器(1)亦可以檢驗輔助處理器(2)的“虛設”隨機存取存儲器(DumRAM,22)中一個活動的寄存器,并驗證出這個寄存器在每次檢驗中都有改變。如這個寄存器沒有改變則主處理器便可以用類似于前面的方法廢止其活動性。
在一個變形中,輔助程序(P2)可以使用主程序(P1)中某一部分的拷貝,在起始指向一個地址且/或者用和主程序不同的數據運行,還可以用這個程序執行一些合乎情理的但對于運行方案是無用的指令以得到保證。
還可以使得在輔助處理器(2)中執行一個程序是與在主處理器中執行的程序相關的,以使處理的中間結果始終不出現在執行的過程中。例如,假定希望掩蓋運算F的結果,則使每個處理器分別執行兩個不同于F的函數f1和f2,而這兩個函數的選擇使得F的結果可以用將這兩個不同函數的結合起來的g函數來得到,即F=g(f1,f2)。
為了避免將錯誤引入卡的編碼和/或數據中,也避免侵蝕智能卡(微分故障分析(DFA))便建議插入“排斥錯誤”程序。這種錯誤的引入特別是通過對供電和/或時鐘(電源/時鐘假信號脈沖)的瞬間改變而實現的。在下面的例子中(一個假設的通信程序),攻擊者都企圖改變條件支路(線3)或衰減(線6)的行為,以能獲得通常予置在存儲區之外的數據(應答_地址+應答_長度)1b=應答_地址2a=應答_長度3若(a=0)轉到84transmit(*b)5b=b+16a=a-17轉到38…這些用于智能卡《排斥錯誤》的(即可以檢測錯誤的)程序具有定義的一些冗余任務,這些冗余任務是在多處理器卡的處理器(CPU)中執行的。
在一些由硬件的或軟件的“閂”所實現的同步點,如衰減的物理計數器和邏輯計數器,以及轉移型的原子指令(由現有技術知道的“swap”、“read_modify_write”),程序執行中的冗余任務的調準是由一個或多個主處理器來驗證的。
一個不一致(désaccord)被一個具有驗證方法的處理器看成是侵襲標記(signe d′une attaque)。由欺詐者所在卡的碼中引入的錯誤使這些鑒別變得非常復雜,在上面的例子中,攻擊者變成用同樣的方法修改兩個(或多個)任務的行為,這在實際上是不可能的(不實際的)。
在實踐中,要力圖保護程序“關鍵”數據的完整性。對于所有變量的保護可以用存儲器的復制來實現。每個處理器(CPU)就具有其自己所用的變量的拷貝,這些拷貝是存儲在實際運行的存儲器中,而不是在“虛設”型的存儲器中。在我們假定的例子中,變量a的衰減(循環計數器compteur de boucle)可以用下面的指令序列得到保護,這個序列由每個處理器去執行6 a=a-16′處理器同步6′if(a′!=a)轉到attack此處“a′”是變量“a”的一個拷貝,用在第二個處理器中,在“a′”和“a”不同的情況下,程序轉到稱為“attack”的處理分支上去,這個處理會采取必要的措施來保護卡。
例如,在對一個攻擊進行檢測之后,就轉移到標識(label)為“attack”的分支上,“attack”處理例程中執行適當的操作,如微處理器復位(Reset)和/或取消在非易失的可編程存儲器(例如E2PROM型的)的密鑰。
這里指出,同樣可以直接保護流量的控制,即程序的進程。保護的關鍵數據就是處理器的順序計數器(或與順序計數器相關的其它信息,如果各處理器不執行同一種碼的話)。在希望保護的每條分支(有條件的或無條件的)之后,必須將冗余任務與各分支所分別取的方向上的信息進行比較。在上面給出的假定的例子中,在線3中的條件分支就可以是用在線4和8中的順序計數器或相應的信息的交換和比較來保護的。
交換和比較的操作可以是用軟件的方法來實現(如和上面所描述的6-6"指令序列的方法類似),亦可用硬件的方法實現,例如用如圖4所示的一個比較器(8),這個比較器是用同步運行的結果的信號來啟動的,并將這個信號送到比較器的有效輸入。比較器(8)還在其它輸入端(81、82)接收到分別代表每個主處理器(1)和輔助處理器(2)的順序計數器(PC、PC′)的數值的信號。
在遭到攻擊的情況下,比較器硬件(8)通過發送到其輸出(83)處的信號(攻擊中斷)而啟動,一個中斷處理于是就通過微處理機的中斷機構進行適當的操作(例如重置中斷)。
可以試圖地說,這些機構類似于在一個具有兩個處理器的系統中程序的傳統執行,而本發明的機構是非常不一樣的。
*兩個處理器都是用同一個電路供電的,以使將這兩個處理器及其輔助電路的瞬間的不同電耗混淆起來,這兩個處理器及其輔助電路可以是處在同一片硅的基片上。
*在輔助處理器中所使用的指令的特征標記具有掩蓋在主處理器中執行的指令的特征標記的作用的性質。
*輔助程序的目的在于執行與主程序不同的功能,然而它掩蓋了主程序的功能。可以考察一個輔助處理,它所執行的任務與主程序沒有相關性,例如,不相干的、或且相反,為了掩蓋使得它所實現的任務是與主處理并行的,與主處理相關。
*“虛設”隨機存取存儲器的大小經常較程序正常運行所需要的存儲器的大小要小得多。
*僅當輔助處理器得到鑒別或處在活動狀態時,主存儲器才執行與安全意義敏感的程序。
*“虛設”隨機存取存儲器的內容并沒有運行上的重要性,因為這個存儲器只是用來干擾在存儲器組中能量消耗的行跡。
*沒有必要拯救和恢復輔助程序中的上下文聯系。
在另一種實施方式中,主處理器(1)激活一個時間計數器(timer)(R3),這個時間計數器或是借助于一個隨機信號發生器(R1)或是由可編程非易失存儲器(13)(NVM)的內容來初始化的。這個可編程非易失存儲器(13)在實際上裝有可在每個使用中修改的單一的一個數,當時間計數器(R3)達到一個在外部無法知道的時間的限期,便啟動由主處理器(1)去鑒別輔助處理器(2)。
在另一種實施變形中,寄存器(R2)可以在通過特殊的信息(如來自一個存儲器或來自隨機信號發生器(R1))得到改變之后,便被用來啟動一個中斷。
在另一種實施變形中,一個隨機信號發生器(R1)和主處理器(1)的中斷系統(15)相連接,以使生成不規則的且和在主處理器(1)中執行的程序之間是完全不同步的中斷。當然,這個中斷系統根據考察的處理可以是有掩蔽的,也可以是無掩蔽的。在這種情況下,如果中斷是得到掩蔽的則整體的運行仍是傳統的單處理器。然而,自從正在工作的主處理器(1)要進行自我保護防止可能的觀測起,它便授權這個中斷去啟動鑒別并激活輔助處理器(2)。
在另一個實施變形中,有在至少兩個處理器間,例如n個處理器間分配的共同的總線,每個處理器(1a、1b、…1n,圖3)是通過共同總線的下述三種類型的線和集中的仲裁邏輯(8)相連第一個為總線請求(31)(Bus Request),第二為總線占線(32)(Bus Busy),而第三個是總線輪詢(33)(Bus Polling)。前兩種類型請求(31)和占線(32),都是分別由所有的處理器單一的公共線構成的,而后一種類型探詢(33),則是由n個處理器中的每一個的單個一條線(33a、33b、…33n)構成的。整個處理器組通過單一的總線(3)分享隨機存取存儲器(RAM)、只讀存儲器(ROM)、可編程非易失存儲器(NVM)以及輸入輸出電路(I/O)。
一個希望請求總線(3)的處理器(例如1a)在總線請求線(31)中指出這個請求,仲裁器(arbitre)(8)在一個確定的算法(例如循環詢問,總線探詢)在對應于探詢的處理器的探詢型線(33b、…33n)上詢問其它處理器(1b,…,1n)。第一個被詢問的已經提出過請求的處理器得到這條總線,并激活總線占用線(32)(Bus Busy),僅當總線占用線(32)上傳輸的信號從活動態過渡到非活動態而使總線(3)空閑時,仲裁器(8)才重新詢問。這樣就懂得了全部處理器是連在唯一的同一條總線上,它們用分時多路存取來分享總線的存取。
當然,可以將前面講的各種實施方式的作用結合,也不需要用連續的方式實施干擾。
這樣,當主程序(1)執行的功能對于安全并不敏感時,本發明所實施的干擾可以是間歇的,同時用間歇的方式求助于微處理機的運行,例如在檢驗之后向外界放出結果,或將時間計數器(R3)的中斷掩蔽,或將隨機信號發生器的中斷虛設。當實施一個保護功能時,主程序(P1)就授權輔助處理器(2)運行,以“干擾”運行。
實際上,安全保護不再是像在現有技術中那樣使處理器的節律是隨機的,而是用由同一個能源供電的兩個處理器(1、2)同時執行兩個特征標記不同的程序(P1、P2)。
由主處理器(1)所執行的程序結構可以用下面的方法來實現主處理器的運行可以是由一個可驗證的安全應用系統來導引,這個安全應用系統根據機器執行程序的類型來決定實施的干擾類型。在這種情況下,主處理器(1)的應用系統便管理控制輔助處理器(2)的各種信號,如同其自己的指令信號。還可以明白,可以將輔助處理器(2)用來實施對主處理器(1)有利的功能,特別是實施可以加快總處理時間的處理。這些處理的構成例如可以是由輔助程序實現一些計算的準備,而這些計算是主程序(P1)在后面要用到的。當然,當處理器用多個程序運行時,則可以容易地擴展本發明的機理,各個應用程序就都可以視作是主程序。
在前面所看到的隨機信號發生器和時間計數器都是技術人員所熟的,當將它們分別地用于和本發明無關的別的應用時也沒有什么特別的實施問題。
在另一個變形中,可以實現本發明,使得兩個處理器交替起主處理器和輔助處理器的作用。這假定優先權的籌碼在兩個處理器之間交換,符合兩個中的那一個就在給定的時間內成了主控的角色。
別的修改也可構成本發明的思想的一部分。以限制在兩個處理器的實施方式描述的各種變形也都可以應用到有多個處理器的實施方式中,構成本發明的一部分。這樣,在任何時候,只讀存儲器的術語中應理解做為一個ROM,而亦可以用一個PROM、EPROM、EEPROM來代替,甚至可以用任何別的存儲器來代替可編程非易失的、只讀的、或隨機存取的。
權利要求
1.一種智能集成電路,其特征在于它具有一個主處理器(1)和一個應用系統、至少一個輔助處理器(2)、各處理器和一些裝置共用的一些供電電路(6),主處理器(1)及應用系統執行主程序(P1),構成實現任務的主處理,輔助處理器能夠協同地執行至少一個輔助程序(P2),用來構成至少一個實現任務的處理,共同的供電電路(6)能夠保護一個或多個有類似能量而有不同運行的特征標記的輔助處理,它協同主處理在供電電路中用連續的方式或間歇的方式引入能量干擾,迭加在主處理的能量之上,以實現一個連續的或間歇的干擾。
2.根據權利要求1的智能集成電路,其特征在于主處理器或輔助處理器中的每一個都是一個安全的微處理機或微型計算機。
3.根據權利要求1的智能集成電路,其特征在于這些裝置的激活是由智能集成電路的主處理器(1)的應用系統啟動的,這使得由上面裝置所建立的附加的安全保障僅僅決定于一個由位于從外部不可存取的集成電路處的應用系統的主處理器的執行結果的決定。
4.根據權利要求1的智能集成電路,其特征在于它具有一個供主處理器(1)使用的主存儲器(12、13),在這個存儲器的至少一個不能從外部存取的部分中裝有一個應用系統,這部分卻至少能被二個處理器(1,2)中的一個來存取,還有一個用于輔助處理器(2)的輔助存儲器(21、22)。
5.根據權利要求1的智能集成電路,其特征在于它在各處理器與各處理器的存儲器以及一個輸入輸出電路之間至少有一條通信總線(3、4)。
6.根據權利要求1的智能集成電路,其特征在于它是借助于分散的邏輯電路在一個或多個基底上實現的,以使這兩個處理器的物理植入的實現不需要易于定位的功能模塊,而是例如通過物理結合而邏輯上相互分離的機構實現。
7.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)執行輔助處理的任務,是將主處理器(1)運行的特征標記最小化或抹去。
8.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)執行輔助處理的任務是和主處理器(1)所執行的主處理的任務相關的,以使處理的中間結果從來都不出來在處理過程中。
9.根據權利要求1的智能集成電路,其特征在于輔助程序(P2)所使用的工作空間較主程序(P1)的工作空間要小。
10.根據權利要求1的智能集成電路,其特征在于它在主處理器(1)和輔助處理器(2)之間有通信裝置。
11.根據權利要求1的智能集成電路,其特征在于在兩個處理器間的通信裝置(50、51、B1、B2)能使主處理器(1)知道輔助處理器(2)是否在運行。
12.根據權利要求1的智能集成電路,其特征在于在兩個處理器間的通信裝置能夠使得主處理器(1)實現對輔助處理器(2)的鑒別。
13.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)的鑒別或運行的檢驗是在主處理器(1)的處理過程中實現的。
14.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)的激活裝置或是由主處理器(1)及其主程序(P1)、或是由一個中斷系統(15),或是由一個時間計數器(R3),亦或是三者的結合來控制的。
15.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)所執行的輔助處理的任務是和主處理器(1)所執行的主處理的任務不相關的。
16.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)執行的輔助處理的任務是將主處理器(1)的運行的特征標記最小化或抹去。
17.根據權利要求1的智能集成電路,其特征在于輔助程序(P2)實施的處理是和主處理相關的,以使這兩個處理的結合給出輔助處理器(2)的運行的特征標記,這個特征標記掩蓋了主處理器(1)的運行的特征標記。
18.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)所執行的任務是和主處理器(1)的任務相關的,以使處理的中間結果從不出現在處理的過程中。
19.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)可以代替主處理器(1),反之亦然。
20.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)執行的任務與主處理器(1)執行的任務的相關是通過處理的同步和對每個處理器執行其各自的程序得來的兩個數據的值進行比較而進行的。
21.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)執行的任務與主處理器(1)執行的任務的相關是通過輔助程序(P2)從主程序(P1)的邏輯推理得到的。
22.根據權利要求1的智能集成電路,其特征在于它具有至少兩個處理器,且這些處理器(1、2)的每一個都有各自的總線(3、4),將隨機存取存儲器、只讀存儲器與每個處理器相連,將非易失存儲器與主處理器相連。
23.根據權利要求1的智能集成電路,其特征在于它具有多個處理器,每個處理器都和一個共用的通訊總線相連,這個共用總線在所有的處理器與連于這條總線上的隨機存取存儲器、只讀存儲器和非易失存儲器所構成的存儲器組間多工運行,在此公共總線上的存取沖突是由一個仲裁電路(8)來管理的。
24.根據權利要求1的智能集成電路,其特征在于輔助處理器(2)按順序相繼執行一些程序,該順序或與主處理器(1)執行的程序相關,或與主處理器(1)執行的程序不相關。
全文摘要
本發明在于一個智能集成電路。這個智能集成電路的特征在于它具有一個主處理器(1)和一個應用系統、至少一個輔助處理器(2)以及各處理器與一些裝置共用的供電電路。主處理器(1)及應用系統執行主程序(P1),構成實現任務的主處理;輔助處理器能協同地執行至少一個輔助程序(P2),構成至少一個實現任務的輔助處理;共用的供電電路(6)保證一個或多個有類似能量但運行特征標記不同的輔助處理與主處理協同,用連續或間歇的方式將能量干擾引入供電電路,這個干擾疊加在主處理的能量上,以實現連續的或間歇的干擾。
文檔編號G06F21/55GK1292109SQ99803338
公開日2001年4月18日 申請日期1999年12月23日 優先權日1998年12月28日
發明者伊萬·格里薩斯, 克里斯托弗·西格林, 米歇爾·烏岡 申請人:布爾Cp8公司