專利名稱:在基于微處理器的電子模塊中安全執(zhí)行程序的方法,以及相關(guān)電子模塊和微電路卡的制作方法
技術(shù)領域:
本發(fā)明涉及對電子模塊的安全保護,電子模塊中至少包含一個微處理器、存有至少一個可執(zhí)行程序的ROM/EEPROM類型存儲器、以及用來與外界通信的輸入/輸出裝置。這類模塊通常是單片集成電子微電路或芯片的形式,只要用任何已有的裝置對該模塊進行物理保護,就可以把它安裝到便攜式的對象設備中,如智能卡、微電路卡或模擬卡,這些卡可以在各種場合使用,尤其包括銀行及其他信用卡、移動無線電話、付費電視、醫(yī)療保健和交通。
背景技術(shù):
概括地說,保護措施是被設計來提高一個程序的反欺詐安全性的,該程序中包含一定數(shù)量的指令,它們對于正確執(zhí)行該程序是非常關(guān)鍵的,特別是某些操作類型與通過電子模塊執(zhí)行交易相關(guān)的指令以及/或是自身與安全性相關(guān)的指令,例如涉及用戶驗證、交易及其有效性的驗證、數(shù)據(jù)機密性保護或是數(shù)據(jù)加密/解密的指令。
用智能卡進行欺詐活動已經(jīng)不是一種新現(xiàn)象了,與此同時,通過智能卡進行的交易數(shù)量與價值的提高也促使詐騙犯使用更為復雜的方法與設備。特別是對智能卡進行短暫的輻射攻擊,可能引起數(shù)據(jù)的改變以及/或是在內(nèi)部總線上經(jīng)ROM和/或EEPROM程序存儲器發(fā)送到微處理器的代碼的改變,從而導致代碼中某些部分不能執(zhí)行或是錯誤執(zhí)行,比如用無效指令替代安全處理程序。
基于輻射檢測器的應對措施被證明是無效的,這一方面是因為詐騙犯所使用的輻射放射源具有很高的靈敏度和準確度,另一方面是因為存在輻射引起傳感器邏輯處理程序擾動的風險。在其他解決方案中,特別是在本專利申請人名下的法國專利申請99.08409號中,某些解決方案—如總線奇偶校驗—需要對芯片本身的設計和概念進行改進,而其他的解決方案—比如引入RAM標志—實際上完全是邏輯解決方案,所以這些方案都會被它們所要制止的那一類攻擊擊潰。
發(fā)明內(nèi)容
本發(fā)明的目標是要確保ROM與/或EEPROM中所存儲的指令代碼正確執(zhí)行,以及確保沒有輻射攻擊進行,并在發(fā)生攻擊時停止正常的預定程序執(zhí)行(現(xiàn)階段程序的執(zhí)行)。
為了實現(xiàn)這個目標,本發(fā)明提出了一種用于安全執(zhí)行程序的方法,所述的程序被載入一個基于微處理器的電子模塊的ROM與/或EEPROM中,該方法的特征在于它至少包含了下列步驟-利用包含在模塊中的硬件設備,間歇性地觸發(fā)程序執(zhí)行的中斷;以及-每次中斷后都要通過微處理器將程序的執(zhí)行重定向到一個中斷管理例程上,該管理例程包含一條返回程序重定向點的指令,作為該例程的第一條指令或是第一指令之一。
在每次引發(fā)中斷時,程序代碼都會被重定向到一個處理該中斷的例程上,該例程提供了到程序重定向點的正常返回,然后所述的程序就繼續(xù)它的執(zhí)行。另外,輻射攻擊不能阻止模塊中所包含的硬件設備所實現(xiàn)的中斷的初始化。如果在執(zhí)行了引發(fā)中斷的處理例程時持續(xù)進行這種輻射攻擊,那么就會導致程序返回指令不能執(zhí)行,同時也阻礙了該程序剩余部分的正確執(zhí)行。因此,本發(fā)明的方法通過訪問硬件設備來提供保護措施以防止對待執(zhí)行指令的修改,并且在發(fā)生持續(xù)攻擊時阻止程序的返回。
據(jù)本發(fā)明所述的方法從而提供了防止輻射攻擊的有效保護,該方法可以用現(xiàn)有的電路(無需硬件調(diào)整或是電子芯片設計與概念的改進)以及有限的存儲器設備來實現(xiàn),而且該方法不會明顯地降低電子模塊的性能。
中斷管理例程中的第一條指令最好是返回程序重定向點的指令,以返回被中斷的進程。一般沒有必要在返回指令之前提供邏輯處理,因為如果有輻射攻擊在進行中的話該邏輯處理不會被執(zhí)行。因此,中斷管理例程可以被簡化為單條指令以避免對程序性能的顯著影響,還可避免過多使用ROM/EEPROM中的存儲空間。
根據(jù)本發(fā)明的一個優(yōu)選實施例,中斷管理例程被嵌入ROM與/或EEPROM中最后的程序存儲器位置上、或是剛好在共享區(qū)域邊界之前,以便在出現(xiàn)不能執(zhí)行程序返回指令時,程序計數(shù)器遞增而導致離開授權(quán)的程序存儲器區(qū)域。這能引起不可屏蔽的中斷以及微處理器的即時阻斷,這種情況能立刻被用戶察覺。
根據(jù)本發(fā)明所述方法的另一種有意思的變型,ROM與/或EEPROM中的中斷管理例程的程序返回指令之后緊跟著一條存儲在特別是EEPROM或模擬存儲器中欺詐指示器定位序列,以警告用戶先前的欺詐攻擊。
根據(jù)本發(fā)明的一個優(yōu)選實施例,硬件設備包括一個自動重置計時電路或模擬電子電路。每次計時電路到達終止點時就會產(chǎn)生一個異常。在該異常出現(xiàn)之后將程序代碼重定向到計時中斷處理例程。有多種原因使得選擇一個自動重置計時器來產(chǎn)生中斷很有吸引力。首先,自動重置計時器構(gòu)成了基于微處理器電子模塊的基本設備的一部分,特別是它包括了微控制器;而另一方面,從編程角度來看它們相對比較容易實現(xiàn)。中斷返回指令實際上是直接使用的??傊?,自動重置計時器是一種非常簡單而且高度可靠的硬件設備,它不需程序干預即可引發(fā)中斷,而且可以利用自動重置功能等間隔引發(fā)中斷。
根據(jù)第一種操作變型,計時器電路的初始值被設置為可變的,特別是在每次程序重啟時(新進程)。比較有利的是,計時器電路初始值的變化中至少包括一個從偽隨機數(shù)發(fā)生器獲取的參數(shù),該偽隨機數(shù)發(fā)生器是一個常常會被包含在微控制器中用于實現(xiàn)安全功能的部件。這樣,當一個進程被中斷時,所執(zhí)行的校驗是可變的,對于詐騙犯來說這種校驗非常難以預測、甚至是完全不可預測的。
作為一種選擇,本發(fā)明提供了多中額外的程序與/或特性,用以進一步改善本發(fā)明的效率。其中包括-重復執(zhí)行程序指令序列中的某些指令,特別是與安全性相關(guān)的指令,以便提高發(fā)生攻擊時在該指令序列執(zhí)行期間引發(fā)中斷的機率;-在程序指令序列中加入至少一條指令執(zhí)行時間變換循環(huán),而且可選的,從一個循環(huán)到另一個循環(huán)所述時間變換是可變的,并通過一個偽隨機數(shù)發(fā)生器向該變化中引入一個隨機參數(shù)。
本發(fā)明還涉及安全電子模塊,每個模塊中至少包含一個微處理器、存有至少一個可執(zhí)行程序的ROM與/或EEPROM,該模塊的特征在于它包含合適的硬件設備用來在程序的執(zhí)行過程中間歇性地發(fā)起一個中斷,該模塊的特征還在于ROM與/或EEPORM中存有一個中斷管理例程,該例程包括一條返回程序重定向點的指令,作為該例程的第一條指令或是第一指令之一。
根據(jù)本發(fā)明所述模塊的另一種操作變型,中斷管理例程被載入ROM與/或EEPROM中程序存儲器的最后位置上,或是剛好在共享區(qū)域邊界之前,以便在不執(zhí)行程序返回指令時,程序計數(shù)器遞增而導致離開授權(quán)的程序存儲器區(qū)域。
根據(jù)本發(fā)明所述模塊的另一種可供選擇的變型,ROM與/或EEPROM中的中斷管理例程的程序返回指令之后緊跟著至少一個定位序列,用于存儲器尤其是EEPROM或模擬存儲器中的欺詐指示器,該指示器被設置來可選擇性地發(fā)出對先前欺詐攻擊的警告。
根據(jù)本發(fā)明所述模塊的一個優(yōu)選實施例,硬件設備包括一個自動重置計時器電路或模擬電子電路。
該模塊還包括用以改變計時器電路初始值的硬件與/或軟件設備,特別是該設備使用了一個偽隨機數(shù)發(fā)生器。
比較有利的是,某些指令、特別是與安全性相關(guān)的指令在ROM/EEPROM中的程序指令序列中被重復執(zhí)行,所述的程序指令序列是被嵌入到本發(fā)明所述的模塊中的。
同樣比較有利的是,用于執(zhí)行程序指令序列中的某些指令的時間變換循環(huán)被載入所述模塊的ROM與/或EEPROM中。作為一種變型,從一個循環(huán)到另一個循環(huán)所述時間變換是可變的,特別是要利用一個偽隨機數(shù)發(fā)生器來實現(xiàn)這一點。
本發(fā)明還涉及一種微電路卡,其中包含一個上述的安全電子模塊,該模塊以它的各種變型出現(xiàn)。
本發(fā)明的其他目標、優(yōu)點及特征可以從下面對本發(fā)明所述方法的實施方式的說明以及對一個基于微處理器的電子模塊的應用實例的說明中體現(xiàn)出來,這些說明作為非限制性的范例,是參照附圖進行的,其中-圖1示出了本發(fā)明所述基于微處理器的電子模塊的應用實例的示意圖;以及-圖2示出了圖1中所示ROM的代碼尋址空間的示意圖,其中附有兩個更詳細的程序子段,分別是待保護的代碼部分以及中斷例程。
具體實施例方式
符合本發(fā)明的基于微處理器的單片電子模塊10在圖1中示出,并將它作為一個非限制性的范例進行說明,它一般包括一個CPU微處理器11,它通過一條內(nèi)部總線12雙向連接到RAM 14、ROM16、EEPROM 18以及I/O接口20上。模塊10還包括連接到內(nèi)部總線12上的一個自動重置計時器22和一個PRNG偽隨機數(shù)發(fā)生器(GNPA)24。
如下面所說明的,在本發(fā)明的環(huán)境下,計時器22和發(fā)生器24被用來在載入到ROM 16的某些程序的執(zhí)行過程中間歇性地觸發(fā)中斷,特別是某些包含與安全性相關(guān)的指令的程序,比如加密/解密、操作員驗證或是交易確認指令(圖2中由代碼INST表示)。
作為一個非限制型的范例,本發(fā)明所述的模塊可以被用來與一個底座對象共同構(gòu)成一張微電路卡,比如一張銀行卡或是電子錢包。至于計時器22的頻率,可以通過一個根據(jù)模塊變化的分頻系數(shù)相對于時鐘頻率進行降低,所述的分頻系數(shù)通常在4與32之間,從而使得發(fā)生兩個連續(xù)中斷的最小間隔在1至8條指令之間。
圖2示出了圖1中的ROM 16的代碼尋址空間,其中ROM 16被標為EAC(ROM)。所述的空間EAC(ROM)采用了代碼行(包括數(shù)據(jù)和常量)序列的形式,從縱列頂端的最低地址到底端的最高地址。所述的空間EAC(ROM)被細分為多個區(qū)域,其中存有比如程序PROG這樣的程序以及比如RITT例程、計時器觸發(fā)的中斷管理例程這樣的例程。空間EAC(ROM)還包括一個不可執(zhí)行的存儲器區(qū)域ZNE以及一個未使用的可執(zhí)行存儲器區(qū)域ZNU,它們位于縱列的底端。根據(jù)下面將要說明的本發(fā)明一個非常吸引人的特性,例程RITT正好被載入?yún)^(qū)域ZNE之前。
圖2還在兩個放大的縱列圖示中示出了程序PROG以及中斷管理例程RITT,其中相應的軟件子塊的首、尾地址對應段,段51和52對應PROG列,而段53和54對應RITT列,以點線示出。
程序PROG的頭部包括指令集INITT,用于自動重置計時器22的設置與初始化,其中包括對發(fā)生器24的使用進行管理以確定計時器22中集成的遞減計數(shù)器的初始值。緊接著指令集INITT之后是數(shù)行程序PROG的特定語句(每條相同的行由行中央的3根破折號表示)。如圖2中的范例所示,程序PROG包含至少兩條要保密的指令INST。這些指令可以是完全相同的(重復以保證在控制中斷下這些指令有比較高的執(zhí)行機率),或者在有多條指令的情況下(交易開始時的操作員驗證,以及結(jié)束時的交易確認)也可以是不同的。指令INST被包括在時間變換循環(huán)BDT之內(nèi),這樣設計可以使得下一條指令INST的執(zhí)行偏移一個隨機時間間隔。
例程RITT、計時器中斷處理例程中包括用來返回到程序PROG的重定向點的中斷返回指令IRET,其作為例程中的第一條指令。作為選擇,指令IRET后緊接著一個或多個序列,用作在存儲器中定位欺詐指示器SPIF,在本例中所述存儲器為EEPROM 18。用于阻止電子模塊后續(xù)工作的程序與欺詐指示器的定位相關(guān)聯(lián)。
程序PROG的執(zhí)行過程如下,運行PROG縱列的指令序列,并且由向計時器22載入初始值開始,該初始值被預先確定,并且結(jié)合從發(fā)生器GNPA 24獲取的變化參數(shù)進行了合適的調(diào)整。當程序PROG被執(zhí)行時,計時器22中集成的升/降計數(shù)器的瞬時值就開始向終點遞減,并在PROG的某條指令執(zhí)行期間到達0,例如PROG縱列的第一條指令INST。隨后就會引發(fā)一個異常,并且在當前指令完全執(zhí)行之后,從IT1點開始沿著箭頭60從程序代碼重定向到RITT縱列所表示的計時器中斷處理例程,微處理器11的“程序計數(shù)器”緩沖器中下一條待執(zhí)行的指令就是RITT縱列中的第一條指令,也就是用來沿著箭頭62返回IT1點的中斷返回指令IRET。在沒有任何輻射攻擊的情況下,將沿著箭頭70正常執(zhí)行指令IRET,執(zhí)行方式與沿著箭頭62返回IT1點相同。計時器中的升/降計數(shù)器接著就被自動重新初始化,該初始化對應于程序PROG中IT1點(“返回”時刻)與IT2點之間的執(zhí)行時間間隔DT12,并且在PROG縱列中用箭頭72表示,其中IT2點對應于第二次中斷(“重定向”時刻)。在第二次中斷IT2處沒有任何輻射攻擊的情況下,上述程序?qū)⒈恢貜蛨?zhí)行,即沿著箭頭64重定向到例程RITT,沿著箭頭正常執(zhí)行該例程的指令IRET,并沿著箭頭66返回IT2點。
作為一種變型,可以使用一個集成在例程RITT中的基于軟件的非自動重置升/降計數(shù)器。這樣就可以給升/降計數(shù)器賦予一個不同于先前初始值的新初始值,在適當?shù)那闆r下,可以通過添加一個來自于發(fā)生器GNPA 24的隨機分量來實現(xiàn)這一點。在需要根據(jù)程序執(zhí)行過程的狀態(tài)提高或降低中斷頻率時,這個特性非常有利。
一般來說,一次輻射攻擊的持續(xù)時間大致等于數(shù)條程序代碼指令的執(zhí)行時間,無論這些代碼指令是正常執(zhí)行,還是處在由于輻射攻擊時內(nèi)部總線12上傳送的程序代碼變化而引起的無效狀態(tài)。因此,兩次中斷間的可變間隔被大約100條指令分隔,要記住,只需注意不要顯著提高所涉及的程序的執(zhí)行時間,在執(zhí)行待保密指令附近的代碼程序期間縮短中斷之間間隔的長度總是可能的(取決于所用計時器的觸發(fā)概率)。
如果在計時器22中的升/降計數(shù)器的值到達0的時刻有輻射攻擊在進行,那么計時器中斷程序就會被正常執(zhí)行,該程序完全由不受這類攻擊影響的硬件設備(微處理器11)控制,這樣就會沿著箭頭60重定向到例程RITT上。另一方面,輻射攻擊會阻礙沿箭頭70返回重定向點IT1的中斷返回軟件指令IRET的執(zhí)行,從而程序PROG的執(zhí)行就不能被重新啟動,微處理器11的程序計數(shù)器會保持第一條指令SPIF作為下一條指令。例程RITT的無效運行會持續(xù)到最后一條SPIF指令,注意,即使攻擊在最后的SPIF指令前終止了,也會根據(jù)指令SPIF執(zhí)行至少一條欺詐指示器定位序列,以向微處理器操作系統(tǒng)(OS)告知先前的輻射攻擊并使得OS阻止當前進程的繼續(xù)。
由于例程RITT在ROM 16中所處的特殊位置,在最后的程序存儲器位置上(或剛好在共享區(qū)域邊界之前),因此例程RITT結(jié)束時程序計數(shù)器的遞增會導致從授權(quán)的程序存儲器區(qū)域退出并進入不可執(zhí)行存儲器區(qū)域ZNE。這具有發(fā)起一個不可屏蔽的中斷的效果,以及一個阻止當前進程繼續(xù)的處理效果。
綜上所述,我們注意到本發(fā)明所述方法的實現(xiàn)十分簡單,而且在資源與時間上都沒有很高的要求。它使用整合在芯片中的自動重置計時器以及相關(guān)的中斷。唯一需要增加的就是程序進程起始處的一條初始化代碼,以及中斷管理例程,該例程可以被簡化為單條指令。實現(xiàn)本方法所消耗的執(zhí)行時間對應于進程開始時計時器的初始化,以及每次中斷時中斷返回指令的執(zhí)行。本發(fā)明所述的方法可以被使用在一個程序中最敏感的部分,或者也可以被擴展來保護整個程序代碼,而且在存儲器空間或是執(zhí)行時間上都不會對代碼的性能造成真正的負面影響。
本發(fā)明所述的模塊10的安全程序如上所述,該模塊被安裝在一個合適的底座上以構(gòu)成例如一張微電路卡,該微電路卡可以被使用在多種場合,包括銀行及其他信用卡、移動無線電話、付費電視、醫(yī)療保健和交通。
本發(fā)明并不局限于使用包含了自動重置計時器的電子模塊,它同樣適用于其他電子模塊,這些模塊的結(jié)構(gòu)及硬件設備能夠觸發(fā)中斷,尤其適用于包含時基電路的電子模塊,其中的時基電路類似于自動重置或軟件重置計時器電路,例如基于時鐘脈沖的升/降計數(shù)或是基于指令數(shù)或有效執(zhí)行的指令行數(shù)量計數(shù)的電路。
權(quán)利要求
1.用于安全執(zhí)行一個程序的方法,所述的程序被嵌入在基于微處理器(11)的電子模塊(10)中的ROM(16)和/或EEPROM(18)中,該方法的特征在于它防止輻射攻擊或任何其他攻擊的保護方法,這些攻擊能導致可執(zhí)行指令的改變、以及代碼中某些部分的不可執(zhí)行或錯誤執(zhí)行,該方法至少包括下列步驟-利用整合在模塊(10)中的硬件設備(11)間歇性地觸發(fā)程序執(zhí)行的中斷;以及-每次中斷后都要通過微處理器將程序的執(zhí)行重定向到一個中斷管理例程上,該中斷管理例程包含一條返回程序重定向點的指令,該指令作為該例程的第一條指令或是第一指令之一。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述的中斷管理例程被載入ROM(16)和/或EEPROM(18)中最后的程序存儲器位置上、或是剛好在共享區(qū)域邊界之前,以便在程序返回指令不可執(zhí)行之后、程序計數(shù)器遞增時離開授權(quán)的程序存儲器區(qū)域。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于ROM(16)和/或EEPROM(18)中的中斷管理例程的程序返回指令之后緊跟著一個定位序列,用于存儲器特別是EEPROM(18)或模擬存儲器中的欺詐指示器,以發(fā)出先前欺詐攻擊的警告。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于所述的硬件設備包括自動重置計時器電路(22)或是一個類似的電子電路。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于計時器電路(22)的初始值是可變的。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于計時器電路(22)初始值的變化中包括至少一個從偽隨機數(shù)發(fā)生器(24)獲取的參數(shù)。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于某些指令尤其是包括與安全性相關(guān)的指令在程序指令序列中被重復執(zhí)行。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于在程序指令序列中引入了至少一個指令執(zhí)行時間變換循環(huán)。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于從一個循環(huán)到另一個循環(huán),所述時間變換是可變的。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于時間變換的變化包括至少一個從偽隨機數(shù)發(fā)生器(24)獲取的參數(shù)。
11.包含至少一個微處理器(11)、存有至少一個可執(zhí)行程序的ROM(16)和/或EEPROM(18)的電子模塊(10),該模塊的特征在于為了防止輻射攻擊或任何其他形式的攻擊,模塊中包含了用來在程序的執(zhí)行過程中間歇性地觸發(fā)一個中斷的硬件設備(22),所述的攻擊能導致可執(zhí)行指令的改變、以及代碼中某些部分的不可執(zhí)行或錯誤執(zhí)行,該模塊的特征還在于所述的ROM(16)和/或EEPROM(18)中存有一個中斷管理例程,該管理例程中包含一條用來返回程序重定向點的指令,該指令作為該例程的第一條指令或第一指令之一。
12.根據(jù)權(quán)利要求11所述的模塊(10),其特征在于所述的硬件設備中包括自動重置類型的計時器電路(22)或是類似的電子電路。
13.根據(jù)權(quán)利要求11所述的模塊(10),其特征在于它包含了硬件和/或軟件設備來改變計時器電路的初始值,特別是利用了一個偽隨機數(shù)發(fā)生器(24)。
14.一種微電路卡,其特征在于它包含了根據(jù)權(quán)利要求11所述的電子模塊。
全文摘要
本發(fā)明涉及用于在基于微處理器的電子模塊中安全執(zhí)行一個ROM嵌入式程序(PROG)的方法,該方法包括下列步驟在模塊所包含的自動重置計時器中,間歇性地在程序(PROG)的執(zhí)行過程中觸發(fā)中斷(IT1、IT2);在每次中斷(IT1、IT2)時將程序的執(zhí)行重定向(60、66)到一個中斷管理例程(RITT)上,該管理例程包括從中斷(70)返回(62、66)到程序中斷處(IT1、IT2)的重定向點的返回指令(IRET),作為它的第一條指令。本發(fā)明還涉及一種基于微處理器的電子模塊,該模塊適合實現(xiàn)所述的方法。
文檔編號G06F21/54GK1488090SQ0182219
公開日2004年4月7日 申請日期2001年12月20日 優(yōu)先權(quán)日2000年12月21日
發(fā)明者尼古拉斯·吉羅, 尼古拉斯 吉羅 申請人:Cp8技術(shù)公司