專利名稱:集成電路的防竄改封裝的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及防止存儲在集成電路組件(例如電集成電路或計算機芯片)中的存儲器內(nèi)的保密敏感內(nèi)容(例如數(shù)據(jù)、程序或密碼信息)被竄改的裝置和方法。這種集成電路的例子有例如電子銀行、自動提款機、收費電視、移動電話等中使用的智能卡、微控制器、微處理器或ASIC。
背景技術(shù):
已知有多種方法可以防止集成電路被竄改。一種方法是致力于研究封裝材料;例如,通過附加玻璃顆粒來防止用機械方法磨掉涂層。然而,研究發(fā)現(xiàn),任何一種芯片外殼都可以利用某種方法(例如酸、堿、溶劑、等離子體或活性離子腐蝕劑、聚焦離子束、激光或機械研磨)被攻擊,并且針對這些方法中的某種方法對封裝進行改進后會使得更難以抵抗其它方法的攻擊。US 5369299披露了一種防竄改涂層,在這種防竄改涂層中腐蝕覆蓋層會破壞有源器件。US5916944披露了一種防竄改涂層,在這種防竄改涂層中使用了活性層,它在(被攻擊)接觸氧氣時,發(fā)生發(fā)熱反應以致破壞其下的器件。
另一種方法是利用傳感器對竄改芯片進行檢測。一旦傳感器檢測到竄改,就采取某種保護動作。然而,盡管這些方法可以保護有源狀態(tài)的芯片,但是卻不能保護無源狀態(tài)的芯片。在這種情況下,傳感器和控制電路均無效,而且可以除去封裝并讀取存儲的任何數(shù)據(jù)。
據(jù)說SGS-Thompson在其芯片表面設(shè)置了一層網(wǎng)狀保護層。穿透此網(wǎng)狀保護層的任何原始嘗試都會使電路短路或斷路。一旦檢測到這種短路,就關(guān)閉芯片功能。然而,如上所述,在芯片沒有電源時,這種保護也無效。US 5861662披露了一種類似技術(shù)。
某些智能卡制造商采用的一種完全不同的方法是,對芯片內(nèi)容“加擾”。例如,利用芯片上的加密/解密單元,Philips Visa卡和Siemens SLE66C160S銀行卡對其存儲數(shù)據(jù)提供內(nèi)部內(nèi)容加擾(加密)。
現(xiàn)在,即使“黑客”或“掠奪者”(以下會互換地使用這些術(shù)語,他們表示任何試圖進入的未授權(quán)個體)試圖從芯片存儲器內(nèi)讀取數(shù)據(jù),由于數(shù)據(jù)被加擾,為了將數(shù)據(jù)轉(zhuǎn)換為解密形式或“明文”形式,他必須反向設(shè)計(reverseengineer)芯片上的加密/解密單元并且還要知道加密密鑰。
然而,由于為了對數(shù)據(jù)解密,芯片本身必須保持加密密鑰,所以對于精明的黑客來說,此操作是可能的。
在“Design Principles for Tamper Resistant Smart Card Processors”公開于proceedings of the USENIX Workshop on Smart Card Technology(10-11May 1999)和“Low cost attacks on tamper resistant devices”,SecurityProtocols 5thInternational Workshop Proceedings,1997 p125-136內(nèi)對各種攻擊以及防止攻擊的技術(shù)進行了說明。
發(fā)明內(nèi)容
本發(fā)明試圖提供一種用于防止電路組件(例如集成電路、半導體芯片)中的存儲器的內(nèi)容被竄改的改進型裝置和方法。
根據(jù)一個方面,本發(fā)明提供了一種利用解密器訪問以加密形式存儲的數(shù)據(jù)的集成電路裝置,以及一種可以減少對電路的訪問的保護部件(例如封裝或包裝),其特征在于,電路采用的加密過程響應于保護部件的至少一個物理參數(shù),并設(shè)置保護存儲器,這樣在進行竄改以訪問電路時會改變物理參數(shù),使得加密過程以不同方式工作。
根據(jù)另一個方面,本發(fā)明提供了一種訪問以加密形式保存在集成電路裝置內(nèi)的數(shù)據(jù)的方法,該方法包括從用物理方法阻擋對電路訪問的保護部件導出加密數(shù)據(jù)(例如密鑰)的步驟。
通常,保護部件是電路上,和/或圍繞電路的一個層,例如封裝層。
根據(jù)又一個方面,本發(fā)明包括一種電路,該電路具有實質(zhì)上封閉該電路的封裝,并以這樣的方式設(shè)計該封裝,即它參與電路的密碼保護過程,以致如果封裝被擾動,電路就不實現(xiàn)正常功能。
因此,因為從保護層本身獲得對加密或解密必不可少的數(shù)據(jù),所以通過除去保護層來到達其下的電路的任何嘗試均會破壞解密保存在電路內(nèi)的內(nèi)容所需的數(shù)據(jù)(例如密碼算法的密鑰)。
通過提供此保護層,由部件(例如涂層)的物理參數(shù)導出密鑰,而非(例如)將它們保存在其內(nèi)的寄存器內(nèi),所以不可能通過去除涂層來在中途讀取密鑰值。
優(yōu)選從在集成電路上或圍繞集成電路散布的保護部件區(qū)域內(nèi)檢測、獲得一個或多個物理參數(shù)。因此,例如,物理參數(shù)可以是體參數(shù)或面參數(shù),或者從大量的不均勻斷續(xù)性(諸如分散顆粒)獲得該物理參數(shù)。
在這種情況下,可以防止通過保護部件鉆小孔(例如以讀取芯片的地址線或數(shù)據(jù)線)的各種嘗試,因為在體特性或面特性的情況下,每當鉆這種孔時都會改變該參數(shù);并且在分散斷續(xù)性的情況下,各檢測區(qū)域之間的間隔是所鉆最小孔寬度的數(shù)量級。
在各裝置之間,物理參數(shù)優(yōu)選是無序或隨機的,這可能是無序或隨機的制造過程(例如不確定不均勻性的位置)的結(jié)果。因此,對于每個裝置,加密數(shù)據(jù)(例如密鑰)是唯一的而且只有該裝置知道,這樣就不可能從中央信息源偷取加密數(shù)據(jù)用于所有裝置,或者說不可能擊敗一個裝置的保護,然后把加密數(shù)據(jù)用于另一個裝置。
因此,在此實施例中,電路具有這樣的初始化模式,即讀取該參數(shù),并根據(jù)參數(shù)值首先對保存在該裝置上的數(shù)據(jù)進行加密。
在一個實施例中,將內(nèi)容保存在可電改寫存儲器內(nèi),因此允許以加密方式重寫它。
在另一個實施例中,以第一加密形式,將所有裝置上的數(shù)據(jù)保存到一個存儲器(可以是不可改寫存儲器,例如掩模編程ROM)內(nèi)。第一加密形式是預定的,并且與保護存儲器無關(guān)。第一加密過程的密鑰保存在一個可改寫存儲器內(nèi)(例如可電改寫存儲器),并且在初始化過程中,以第二加密形式對此密鑰進行加密,第二加密響應于該物理參數(shù)導出,并以該形式存儲到可改寫存儲器內(nèi)。此后,為了從ROM讀取數(shù)據(jù),利用第二密鑰對第一密鑰進行解密,然后利用第一密鑰對數(shù)據(jù)進行解密。
此外,或者另選地,為了確保各裝置之間的加密數(shù)據(jù)不同,從具有大公差(即,在此情況下,是指制造傳感器過程中具有規(guī)定的低精確度)的一組傳感器中對不同裝置選擇一個或多個傳感器,因此在各裝置之間,對于給定參數(shù)值,傳感器讀數(shù)將不同(盡管對于給定裝置在時間上是穩(wěn)定的)。
因此,即使可以準確測量傳感器檢測的物理參數(shù)值,傳感器對其的響應(因此加密數(shù)據(jù))也不是明顯的。
構(gòu)成保護部件(例如封裝)的體或面的材料優(yōu)選是不均勻的,并且在每個裝置內(nèi)不均勻性分布優(yōu)選是無規(guī)則或隨機的,因此通過僅對部分保護存儲器進行研究,不可能預測物理參數(shù)。
上述說明的實施例可以有效保護芯片在未加電時免受攻擊。此外,為了在加電情況下也保護芯片,需要采取附加措施。例如,可以以較頻繁間隔(比穿孔或去除保護部件所需最短時間更頻繁地)從保護部件掃描物理參數(shù)。在注意到數(shù)值發(fā)生變化時,就采取行動刪除保存在芯片上的保密內(nèi)容(即被加密的數(shù)據(jù)),否則就象在現(xiàn)有技術(shù)中那樣,禁止芯片工作。
優(yōu)選以波動形式(例如被翻轉(zhuǎn)或被循環(huán))保存從物理參數(shù)導出的加密數(shù)據(jù),因此可以避免基于對緩存加密數(shù)據(jù)的存儲器進行“凍結(jié)”的攻擊。
存在這樣的可能性,即通過保護部件鉆小孔僅破壞部分加密密鑰,而攻擊者可以利用其它可用部分進行讀取,因此,攻擊者可能進行“強力”攻擊以破解加密過程。在一個實施例中,為了防止出現(xiàn)這種情況,提供一個隨機密鑰并存儲在電路內(nèi),并且如上所述,從保護部件讀取第二密鑰。作為這兩個密鑰的聯(lián)合函數(shù)(例如諸如XOR組合的邏輯組合),產(chǎn)生用于加密或解密數(shù)據(jù)的解密密鑰。
如果掃描操作指出丟失了從物理參數(shù)導出的部分或全部密鑰,則該電路刪除存儲在其內(nèi)的隨機密鑰。因此,即使黑客重構(gòu)了從保護部件導出的密鑰的剩余部分,仍不能重構(gòu)用于解密所存儲內(nèi)容(其是現(xiàn)在刪除的隨機密鑰和從保護部件導出的密鑰的一個聯(lián)合函數(shù)的結(jié)果)需要的實際密鑰。
每次掃描優(yōu)選以隨機置換順序進行,并且作為掃描值的取決于順序的函數(shù)產(chǎn)生加密密鑰。因此來自傳感器的掃描序列的順序并不對應于用于計算加密密鑰的傳感器值的順序。因此,在因為受到攻擊而丟失掃描值的某些位的情況下,攻擊者不可能發(fā)現(xiàn)丟失的位位于用于產(chǎn)生解密密鑰的序列內(nèi)的什么位置。這樣就顯著提高了對密鑰進行強力攻擊的難度,因為盡管知道序列的剩余位,但是不知道它們的順序。
物理參數(shù)(從廣義上說,用于表示要檢測的任何特性)可以是光學參數(shù)、電參數(shù)、磁性參數(shù)或從大量其它可能范圍中選擇的參數(shù),以下將做更詳細說明。
根據(jù)以下說明和權(quán)利要求,本發(fā)明的其它實施例、優(yōu)選特征以及相應優(yōu)勢將變得更加明顯。
現(xiàn)在,將僅利用例子,參考
本發(fā)明實施例,附圖包括圖1A示出根據(jù)本發(fā)明第一實施例構(gòu)造和操作的電路組件方框圖;圖1B示出圖1A所示裝置的一部分的優(yōu)選實現(xiàn)的方框圖;圖2示出圖1B所示裝置的加密部分的優(yōu)選實現(xiàn)的方框圖;圖3示出圖1B所示裝置的傳感器電路部分的優(yōu)選實現(xiàn)的方框圖;圖4示出圖1B所示裝置的傳感器布局的優(yōu)選實現(xiàn)的示意圖;
圖5A示出磁性傳感器實施例的簡化示意圖;圖5B示出取自在線VB-VB的、圖5A所示裝置的剖視圖;圖6示出第一電傳感器實施例的示意圖;圖7示出第二電傳感器實施例的示意圖;圖8A示出電容性傳感器實施例的示意圖;圖8B示出取自線VIIIB-VIIIB的、圖8A所示裝置的剖視圖;圖9示出優(yōu)選實施例的密鑰翻轉(zhuǎn)寄存器的方框圖;圖10示出根據(jù)另選實施例構(gòu)造和操作的電路組件方框圖;圖11示出圖10所示裝置的一個可能實現(xiàn)的剖視圖;圖12A示出根據(jù)另選實施例構(gòu)造和操作的封裝電路組件的示意圖;圖12B和圖12C分別示出侵入性切開圖12A所示裝置的動作及其效果的示意圖;圖13A示出另一個實施例的示意圖;圖13B是圖13A所示裝置一部分的剖視圖,示出了侵入性切開圖13A所示裝置的動作及其效果;圖14是說明第一實施例完成的初始化過程的流程圖;圖15A是說明裝置操作過程的流程圖;圖15B是更詳細說明該過程一部分的流程圖;圖16是說明采用兩個存儲器的本發(fā)明進一步實施例的方框圖;圖17是說明采用成對密鑰的本發(fā)明進一步實施例的方框圖;圖18是更詳細說明該實施例一部分的方框圖;以及圖19是更詳細說明該實施例另一部分的方框圖。
第一優(yōu)選實施例的說明圖1A示出第一實施例的簡化方框圖。
圖1A所示的裝置包括中央處理單元(CPU)100,它可以是一個標準CPU核心,例如Motorola 6805/8051/6811或Intel 8051。
該裝置進一步包括非易失性(NV)存儲器110,在此實施例中,非易失性存儲器110是可改寫的(例如,它是FLASH或EEPROM或鐵電隨機存取存儲器(FERAM))。存儲器110包括存儲保密數(shù)據(jù)內(nèi)容的存儲區(qū),其內(nèi)容對黑客保密,例如,保密數(shù)據(jù)內(nèi)容包括口令、密碼密鑰數(shù)據(jù)、加密或解密程序、數(shù)字簽名程序或數(shù)字簽名驗證程序。
此外,還提供了加密/解密單元(EDU)120。通過利用EDU 120發(fā)送讀寫請求,CPU 100訪問存儲器110。例如,EDU采用本技術(shù)領(lǐng)域內(nèi)眾所周知的DES、3DES、IDEA或TEA加密算法,或任何其它合適的密碼算法。
利用密碼輸入單元130提供的加密密鑰160,加密/解密單元120進行加密和解密。利用相應多個傳感器150輸出的多個檢測特性輸出140,密碼輸入單元130可操作地形成密鑰160,傳感器150響應于圍繞電路的封裝50的封裝特性170。
現(xiàn)在,需要參考圖1A對此實施例的操作過程做個總結(jié)。在操作過程中,傳感器150檢測參數(shù)170的各個值,并產(chǎn)生相應的檢測特性輸出信號140,密碼輸入單元130對這些檢測特性輸出信號140進行組合以提供密碼輸入(密鑰)160。將密碼輸入160送到加密/解密單元120。至少在每次對芯片加電時,并且(在此實施例中)在接通電源期間以規(guī)則間隔,進行掃描傳感器和提供密碼輸入160的操作。
CPU核心100從存儲器110請求連續(xù)程序指令和數(shù)據(jù)。不是將每個請求送到存儲器110,而是將每個請求送到加密/解密單元120。選擇存儲器110的地址線后,將加密形式的內(nèi)容(程序或數(shù)據(jù))字(190)從存儲器110送到加密/解密單元120。加密/解密單元120對加密內(nèi)容字190進行解密并將相應解密字或明文字送到CPU核心100進行處理。加密/解密單元120在CPU 100與存儲器110之間的操作實際上是透明的。
在封裝50被竄改時,封裝特性170發(fā)生變化,從而導致檢測特性140以致密碼輸入(密鑰)160發(fā)生變化。因此,加密/解密單元120不再正確解密來自存儲器110的程序和/或數(shù)據(jù),并且CPU核心也不再正常操作。
現(xiàn)在,將參考圖1B進一步詳細說明此實施例。在此實施例中,所制造的集成電路或微芯片195包括CPU核心100、存儲器110、加密/解密單元120、密碼輸入單元130以及傳感器150。捕獲邏輯電路197(圖1A內(nèi)未示出)捕獲傳感器150輸出的檢測特性信號140。
此外,還提供了輸入/輸出電路210,它與接觸焊盤(未示出)相連,接觸焊盤使電路195連接到外部裝置。接觸焊盤可以進行連接以使被封裝的裝置用于諸如讀卡器的其它裝置。在此實施例中,接觸焊盤還在制造該裝置之后,允許連接到諸如探針焊盤的測試裝置。最后,提供初始化電路200。初始化電路包括用于存儲裝載程序的只讀存儲器(ROM),裝載程序包括用于裝載初始密鑰的第一部分,以及根據(jù)初始密鑰以第一加密形式加密的第二部分。
參考圖14,在工廠中進行的初始化過程中,在第一次對芯片加電時,執(zhí)行裝載程序的第一部分,并通過I/O電路210提供初始密鑰。利用初始密鑰對ROM的內(nèi)容進行解密,執(zhí)行裝載程序的第二部分。在步驟1002,裝載程序讀取傳感器150輸出的檢測特性信號140。在步驟1004,根據(jù)檢測特性信號140,捕獲邏輯197和密碼輸入單元130產(chǎn)生密鑰。
接著,裝載程序執(zhí)行一個循環(huán),在該循環(huán)中,在存儲了存儲器110的保密數(shù)據(jù)存儲區(qū)內(nèi)的所有保密數(shù)據(jù)之前(步驟1012),在步驟1006,從I/O電路讀取一個數(shù)據(jù)字,在步驟1008,加密/解密單元120對數(shù)據(jù)字進行“即時”加密,在步驟1010,將該數(shù)據(jù)字寫入存儲器110。
最后,在步驟1014,裝載程序使初始密鑰被刪除,將加密形式的裝載程序第二部分保留在初始化電路內(nèi)以避免該電路的重新初始化。由于只有制造商知道初始密鑰,所以其它人不可能使用裝載程序的第二部分,而且除非知道初始密鑰,否則第一部分沒有價值,因為裝載任何其它密鑰均不能對裝載程序的第二部分進行解密。
順便提一下,請注意,在公知的加密電路裝置內(nèi)也可以使用這種禁止裝載程序的過程,而不象在本實施例中那樣使用從封裝導出的加密原理。
因此,在執(zhí)行了圖14所示的初始化過程后,只有利用密鑰160通過加密/解密單元120進行解密,才可以訪問存儲在存儲器110內(nèi)的保密內(nèi)容數(shù)據(jù)。
此外,或另選地,不是通過輸入/輸出單元提供所有數(shù)據(jù)作為一個數(shù)據(jù)流,而是,首先以明文形式將它送到存儲器110內(nèi),然后在初始化期間被重寫。
該裝置的操作過程參考圖15A,在使用時,接通電源后,在步驟1102,電路被設(shè)置為讀取檢測特性數(shù)據(jù)140,并如以前一樣在步驟1104形成一個密鑰(對應于上述步驟1002和1004)。在步驟1106,該裝置執(zhí)行其操作循環(huán),以下將參考圖15B說明此操作循環(huán)。當在步驟1108切斷電源時,加密/解密電源120和密碼輸入單元130內(nèi)的寄存器被刷新以清除該密鑰。操作過程結(jié)束。
參考圖15B,在操作過程中,根據(jù)從輸入/輸出電路接收的信號(例如指示進行讀數(shù)據(jù)或?qū)憯?shù)據(jù)),CPU 100執(zhí)行其操作程序。
在步驟1202,加密/解密電源120檢測CPU 100何時要執(zhí)行對存儲器110的保密存儲區(qū)的讀指令或?qū)懼噶睢H绻撝噶顬樽x指令,則在步驟1204,從存儲器110接收相應字,在步驟1206解密,并在步驟1208送到CPU。
如果相應指令是寫指令,則在步驟1214,EDU電路120接收CPU 100輸出的數(shù)據(jù)字,對它進行加密(步驟1216)并將它寫入存儲器(步驟1218)。
完成步驟1208或步驟1218后,在步驟1220,評估是否出現(xiàn)了斷電的情況(例如通過在CPU 100上運行一個中斷服務(wù)例程),并且如果出現(xiàn)這種情況,則停止操作循環(huán)1106。
可以設(shè)置CPU 100以通過輸入/輸出電路接受新程序。在這種情況下,作為一種附加的保密特征,該裝置被設(shè)置為執(zhí)行一個硬連線復位以在運行新程序之前刪除存儲器110內(nèi)的所有數(shù)據(jù)。因此,可以(在工廠內(nèi))裝載測試程序,或者利用新初始化程序重新初始化該電路,但是只有在重新提供存儲器110的內(nèi)容時才可以,因此黑客不可能提供非法程序以通過CPU 100讀取或使用存儲器110內(nèi)的內(nèi)容。
現(xiàn)在,將參考圖2和圖3進一步詳細說明此實施例的優(yōu)選實現(xiàn)過程。
由CPU核心100的地址總線(未示出)驅(qū)動的傳統(tǒng)列解碼器電路210和行解碼器電路220對存儲器110進行尋址。在此圖中,將先前附圖中的加密/解密電路120重新標記為260,并將密碼輸入單元130的密鑰保存寄存器標記為270。
在此實施例中,第一(字寬)雙向鎖存器240位于CPU核心100的數(shù)據(jù)總線與加密/解密電路260之間,第二(字寬)雙向鎖存器230位于存儲器210的數(shù)據(jù)總線與加密/解密電路260之間。在此實施例中,字長度為8個字節(jié)(64位)。
混合電路250包括與加密/解密電路260的輸入端相連的雙向寄存器,并且混合電路250的兩個輸入端與鎖存器230、240的輸出端相連,因此可以選擇性地把數(shù)據(jù)從一個鎖存器或另一個鎖存器路由選擇到加密/解密電路260。
同樣,分割電路280(即雙向寄存器)與加密/解密電路260的輸出端以及鎖存器230、240的輸入端相連。
混合電路250、分割電路280以及鎖存器230、240均連接到CPU 100的讀寫控制引腳,然而,鎖存器230和分割器280上的倒相器(未示出)使該信號倒相。因此,如果在一個方向使能鎖存器230時,則在另一個方向使能鎖存器240,反之亦然;并且在控制混合器250從鎖存器230路由時,則控制分割器280路由到鎖存器240,反之亦然。
在CPU希望從存儲器110讀取數(shù)據(jù)時,鎖存器230被設(shè)置為從存儲器110接收數(shù)據(jù),并且鎖存器240被設(shè)置為從分割器280接收數(shù)據(jù);混合器250被設(shè)置為從鎖存器230接收數(shù)據(jù)并將該數(shù)據(jù)送到加密/解密電路260,加密/解密電路260被設(shè)置為對該數(shù)據(jù)進行解密;分割器280被設(shè)置為將該數(shù)據(jù)路由選擇到鎖存器240,鎖存器240被設(shè)置為將該數(shù)據(jù)送到CPU 100。
相反,在CPU 100要對存儲器110進行寫入時,鎖存器240被轉(zhuǎn)換為從CPU100(的數(shù)據(jù)總線(未示出))接收數(shù)據(jù),并將混合器250轉(zhuǎn)換為將數(shù)據(jù)從鎖存器240路由選擇到加密電路260進行加密,并將分割器280轉(zhuǎn)換為從鎖存器230路由選擇該被加密的數(shù)據(jù),鎖存器230被設(shè)置為將該加密數(shù)據(jù)送到存儲器110。
在此實施例中,為了讀取一個數(shù)據(jù)字節(jié),CPU將行地址和列地址放在存儲器110的數(shù)據(jù)總線上,數(shù)據(jù)總線將要求的字轉(zhuǎn)發(fā)到鎖存器230?;旌掀?50將該字轉(zhuǎn)發(fā)到加密/解密電路260,加密/解密電路260對該字進行解密。分割電路(在行解碼器220的控制下)將解密字轉(zhuǎn)發(fā)到鎖存器240,該解密字從鎖存器240路由選擇到CPU 100。
為了執(zhí)行寫循環(huán),雙向鎖存器240從CPU 100(的數(shù)據(jù)總線)接收待寫入的字,并通過混合器250將該字送到加密/解密電路260,加密/解密電路260對該字進行加密。然后,通過分割器280,將該字路由選擇到鎖存器230,然后再路由選擇到存儲器110(的數(shù)據(jù)總線)。
圖2所示的加密單元120還包括用于執(zhí)行上述功能的附加控制邏輯電路(未示出)。優(yōu)選地在自定時邏輯中提供加密/解密電路120,而非利用CPU時鐘進行驅(qū)動,因此可以比CPU操作得更塊,從而使加密/解密處理的速度與集成電路的可用時鐘速度相同。
為了使加密過程更穩(wěn)定,優(yōu)選利用64位密鑰,以64位或更多位數(shù)據(jù)塊形式進行加密(也可以使用更短的數(shù)據(jù)塊,但是保護性差)。
如果利用字長短于64位的處理器100(例如一個8位/1字節(jié)數(shù)據(jù)總線處理器)執(zhí)行本發(fā)明,則可以對上述實施例做稍許變更,使得始終可以一起對至少64位的數(shù)據(jù)塊進行讀取和解密、或加密和寫入。
在這種情況下,為了讀取希望字節(jié)的數(shù)據(jù),一次從存儲器內(nèi)讀取一整個數(shù)據(jù)列(64位),并作為一個數(shù)據(jù)塊一起進行解密,然后,利用行地址從其內(nèi)選擇希望字節(jié)的解密數(shù)據(jù),并轉(zhuǎn)發(fā)到CPU 100的數(shù)據(jù)總線。
在這種情況下,為了執(zhí)行寫循環(huán),首先必須執(zhí)行讀循環(huán)。因此,讀取存儲器110內(nèi)的、包括待重寫字節(jié)在內(nèi)的整個數(shù)據(jù)列(由行解碼器指出),并轉(zhuǎn)發(fā)到加密/解密電路260,加密/解密電路260對其進行解密。然后,從數(shù)據(jù)總線讀取待寫入存儲器100的希望字節(jié),并將它代入解密列。然后,利用加密/解密電路260對該列(具有替換的字節(jié))重新進行加密并寫回到存儲器110。
參考圖3,圖3更詳細示出傳感器150以及捕獲邏輯電路197的結(jié)構(gòu)。
在此實施例中,傳感器可以是以下說明的任何一種類型的傳感器。通常,每個傳感器給出一個模擬輸出。將模擬傳感器輸出連接到雙向模擬復用器290的各個輸入端,地址計數(shù)器295對雙向模擬復用器290進行控制。例如,模擬復用器可以是一個1至n選擇器,其中n是傳感器數(shù)量。
在地址計數(shù)器295的控制下,通過模擬復用器290一次一個地將傳感器輸出的模擬值140送到讀出放大器300的輸入,將讀出放大器300的輸出送到模數(shù)轉(zhuǎn)換器(ADC)310。利用例如對熱敏電阻或其它溫度傳感器(未示出)響應的公差補償電路320對ADC輸出進行校正,以根據(jù)某個預定校正比例,為溫度(或其它環(huán)境因數(shù))的效應對每個數(shù)字傳感器讀數(shù)進行校正。(當然,如果需要,還可以在進行數(shù)模轉(zhuǎn)換之前進行模擬補償。)將連續(xù)數(shù)字傳感器讀數(shù)載入線性反饋移位寄存器(LFSR)330,根據(jù)某個加擾函數(shù),線性反饋移位寄存器330將它們組合在一起,并利用所有傳感器讀數(shù),以某種邏輯組合方式,產(chǎn)生要求長度(例如64位)的密鑰340。
可以使用的傳感器數(shù)量多達一百萬數(shù)量級。因此,最好根據(jù)所有傳感器讀數(shù)導出密鑰。一種方式是將這些讀數(shù)相加,或者將特定傳感器組(例如,位于陣列的一列上的所有傳感器)的讀數(shù)相加。其結(jié)果是一個與組成該組的傳感器的掃描順序無關(guān)、但是如果任何傳感器輸出的值發(fā)生變化其也發(fā)生變化的總和值。
另一種方式是對每個傳感器分配一個一位的值,指出其讀數(shù)是否超過一個閾值(最初根據(jù)讀數(shù)的統(tǒng)計數(shù)字導出)。
圖4示出位于集成電路芯片195頂部的各傳感器物理布局示意圖(在此將芯片襯底標記為350)。焊接焊盤355使芯片與外部部件通信(例如通過焊接到其上的引腳)。
所設(shè)置的傳感器150覆蓋所有包含電路的區(qū)域(或者至少是含有敏感數(shù)據(jù)或允許訪問的電路的所有區(qū)域)。在此實施例中,可以將它們設(shè)置為一個規(guī)則陣列。還將某些傳感器150設(shè)置在集成電路的另一側(cè)(未示出),以防止通過該電路進行未授權(quán)訪問。通過對希望的行線和列線施加其自身不足(但是組合起來足以超過傳感器上二極管的閾值電壓)的電流或電壓,從而僅激活利用(行、列)地址尋址的傳感器,可以通過行線和列線尋址傳感器,這非常方便。
然后,利用封裝材料封裝該裝置,封裝材料可以是基于環(huán)氧樹脂并具有不不均勻性的材料,不均勻性的參數(shù)由傳感器150以如下方式檢測。每個傳感器150檢測的封裝50的區(qū)域可以互相重疊或鄰接;為了防止通過封裝鉆孔到下面的電路所使用的關(guān)鍵判據(jù)是,傳感器檢測的各區(qū)域之間的間隔不大于可以鉆的最小孔的寬度(例如利用聚焦離子束技術(shù))。例如,每個傳感器檢測幾微米的區(qū)域。
盡管附圖所示的傳感器被設(shè)置在規(guī)則陣列內(nèi),但是也可以不按規(guī)則設(shè)置??梢詢H在電路敏感區(qū)域上設(shè)置各傳感器組。
各傳感器之間的間隔可以為一微米(10-9m)數(shù)量級。因此,要覆蓋1平方毫米,需要設(shè)置106個傳感器。
為了根據(jù)本實施例制造該裝置,先制造電路和傳感器,然后,圍繞它們設(shè)置適當?shù)姆庋b、其它包裝和到接觸焊盤355的觸點。
在公差控制不嚴情況下,批量生產(chǎn)傳感器,因此一個裝置的傳感器對同一個信號的響應與另一個裝置的傳感器對同一個信號的響應不同(通常具有不同偏差或增益)。因此,即使黑客可以直接測量參數(shù)值,也不能根據(jù)測量的參數(shù)值直接預測傳感器輸出。一個裝置的傳感器響應的測量值也不能用于預測另一個傳感器的響應。
同樣,為了同樣的目的,對每個裝置所施加的封裝也不同,具體地說,每個裝置封裝中存在的斷續(xù)性或不均勻性是隨機或是不規(guī)則分布的(因此,對裝置的一部分進行檢驗不能用于預測另一部分的特性),并且不同裝置之間也不同(因此,對一個裝置進行檢驗不能用于預測另一個裝置的參數(shù)值)。因此,在制造大批裝置時,采用寬松的過程控制。
第二實施例-磁檢測參考圖5a和圖5b,在此實施例中,傳感器150是諸如霍爾效應傳感器的磁場傳感器,它可以包括位于芯片上層開口內(nèi)的砷化銦薄膜。封裝50在兩側(cè)包圍裝置襯底350,并且包括環(huán)氧樹脂基質(zhì)363。在該環(huán)氧樹脂基質(zhì)內(nèi)提供許多不同大小、形狀和/或磁導率的顆粒360。這些顆粒由Ni-Co-Fe合金(即鐵素體合金)制成。
在封裝層50的上、下設(shè)置一對板狀永磁鐵365a、365b,并通過環(huán)氧樹脂363與封裝層50接合。以其磁極對準同一個方向的方式設(shè)置磁鐵365a、365b,在此實施例中,該方向方便地垂直于板365。
圍繞板365和封裝50的是軟磁芯材料的外殼370。外殼370的作用是將磁場大致限定在外殼內(nèi),并且將該磁場與外部磁場隔離。它具有適當?shù)母叽艑?發(fā)現(xiàn)在103至106之間合適)。如圖5b所示,顆粒360的作用是使磁力線變形。因為顆粒360分布的非均勻性,磁力線的形狀不規(guī)則。
因此,傳感器150在每個傳感器測量的磁特性不同,如上所述。
此外,去除外殼370的任何嘗試本身均會改變磁場分布,因此不可能讀取密鑰。
在另一種磁設(shè)置中,利用隨機分布的鐵磁顆粒的(高)磁導率的局部變化可以改變包括傳感器150在內(nèi)的相交引線的感應率。
第三實施例-水平電阻檢測圖6示出其中利用封裝的電阻率的局部變化產(chǎn)生密鑰的實施例的結(jié)構(gòu)。
在這種情況下,傳感器150包括與封裝50接觸的導電開口,并且該傳感器150可以單獨連接到電壓供給線和地線。在使用過程中,傳感器之一381與電壓供給線相連,另一個傳感器383與地線相連。通過這兩個傳感器中任何一個(通過測流電阻器提供)的電流提供傳感器輸出。
在此實施例中,封裝50圍繞該裝置的半導體襯底350。
在環(huán)氧樹脂基質(zhì)363內(nèi),混合具有較高電阻的導電粉,例如石墨粉。另選地,也可以使用諸如嫁、氧化銅或硒的半導體材料。
此外,非均勻地混合長度、寬度、形狀和/或電導率均變化的諸如銅線股的導電顆粒。為了使該裝置不受外界干擾,設(shè)置外部導電金屬殼390,該外部導電金屬殼與環(huán)氧樹脂基質(zhì)363接合。
因此,在此實施例中,可以測量在任何一對傳感器之間通過封裝50的通路的電阻。由于封裝的電阻率因為顆粒385的分布發(fā)生變化,所以每次測得的此電阻不同。
因為通過封裝在該裝置上流過電流,所以傳感器之間的任何孔均會改變流過的電流,并將改變讀數(shù)。在這種情況下,可以將每個點的傳感器輸出讀數(shù)方便地計算為從該傳感器流入其每個相鄰傳感器的測量電流之和,因此襯底上的一個點(以及位于其上的封裝)將位于幾個傳感器所響應的區(qū)域內(nèi)(即相鄰傳感器檢測的封裝區(qū)域重疊)。
在此實施例中,溫度變化會導致電阻率波動,因此在進行數(shù)字化之前,在一個減法節(jié)點,取各對電阻測量值(分別位于一對傳感器之間)之間的差值。這樣可以降低溫度效應。另選地,也可以使用比值,或者任何其它差分測量值。
第四實施例-垂直電阻檢測除了提到的差別之外,此實施例與上一個實施例的結(jié)構(gòu)大致相同。
在此實施例中,在外殼390(如果此實施例要求,可以省略)內(nèi),設(shè)置與封裝50電接觸的、例如鋁制的內(nèi)部導電層391,并且內(nèi)部導電層391還與集成電路的地線引腳相連。
在此實施例中,通過測流電阻器,每個傳感器150可以選擇性地連接到電源線。為了讀取每個傳感器392、394、396、398正上方的封裝路徑的電阻,它們分別依次連接到電源線,通過每個路徑的電流流過傳感器和封裝到達接地金屬層391,利用測流電阻器測量該電流。以此方式,一次掃描可以逐次測量傳感器392、394、396、398、400的電阻R1-R5。此外,優(yōu)選采用差分測量。
第五實施例-電容性檢測圖8a和圖8b示出采用電容性傳感器的實施例。在此實施例中,每個傳感器僅包括接觸焊盤,位于用于阻擋直流通過的絕緣材料層410下方;以及電路,用于施加交流電壓并用于測量通過此接觸焊盤的電流。
如上所述,層405接地。在此實施例中,層390是外部保護外殼。在樹脂363內(nèi)設(shè)置許多顆粒411。這些顆??梢栽诰植扛淖兎庋b50的介電常數(shù)。
在此實施例中,通過每個傳感器150,模擬復用器施加具有快速變化分量(即交流分量)的信號。例如,通過在0伏與電源電壓電平之間快速改變傳感器150獲得這樣一個信號,從而在傳感器150與上層390之間產(chǎn)生一個具有交流分量的信號(絕緣層410阻擋直流分量)。
例如,利用上述測流電阻器,測量通過傳感器的電流(并因此測量傳感器之上的材料的電容)。
第六實施例-密鑰保存寄存器現(xiàn)在,參考圖9,說明密鑰保存寄存器的結(jié)構(gòu),該密鑰保存寄存器適于防止通過利用輻射過程或冷凍過程凍結(jié)密鑰寄存器進行的攻擊。
二對一復用器602a、602b、…602e的輸入陣列分別在第一輸入端接收該密鑰的1位。在這種情況下,存在64個這種2位復用器。
每個復用器602的輸出到達一排D型觸發(fā)器604a、604b、…604e中相應一個觸發(fā)器的數(shù)據(jù)輸入端。每個觸發(fā)器604的正常(即未倒相)輸出端到達第二排二對一復用器606a、606b、…606e中相應一個二對一復用器的第一輸入端。
因此,利用第一復用器、D型觸發(fā)器以及第二復用器,可以對密鑰中每位的值進行計時。
將每個觸發(fā)器604的復位輸入端連接到一個OR門608,OR門608接收來自CPU 100的復位線以及來自保密故障檢測器(未示出)的輸入。因此,在CPU100被復位時,或者在檢測到保密故障時,將復位觸發(fā)器以刪除密鑰。
將每個觸發(fā)器的倒相輸出送到相應第二復用器606的第二輸入端和相應第一復用器602的第二輸入端。
從另一個雙向復用器610提供信號到每個D型觸發(fā)器的時鐘端,雙向復用器610的第一個端口接收CPU時鐘信號,其第二個端口接收一個隨機時鐘信號。因此,通過觸發(fā)器以隨機間隔對數(shù)據(jù)進行計時,可以防止任何利用輻射光源每秒時鐘周期的頻閃脈沖讀取密鑰的嘗試。
一個根據(jù)芯片被設(shè)置為裝載數(shù)據(jù)還是執(zhí)行CPU程序來改變其狀態(tài)的裝載/運行線選擇每個第一復用器602的兩個輸入端中哪個輸入端被路由選擇到其輸出端。
另一個觸發(fā)器612的復位線與OR門608的輸出端相連,其輸入端與復用器610的輸出端相連,其輸出端與復用器606的控制輸入端相連,從而選擇兩個輸入端中的一個輸入端被路由選擇到其輸出端。因此,對于每個時鐘周期,觸發(fā)器612在這排D型觸發(fā)器604的真實輸出端與倒相輸出端之間交替一次。
其效果是,對于每個(隨機)時鐘周期,翻轉(zhuǎn)觸發(fā)器的寄存器內(nèi)密鑰的每位,而將該密鑰保持在這排第二復用器的輸出端供加密/解密使用。
第七實施例-分離的芯片在上述實施例中,本發(fā)明的保密特征集成在具有CPU核心和存儲器的單個集成電路芯片內(nèi)。圖10示出允許本發(fā)明使用分離的集成電路的實施例。
在此實施例中,與單獨非易失性存儲器芯片460一起提供單獨CPU或微處理器單元芯片470。在此實施例中,存儲器是可寫入的,例如FLASH或EEPROM,如上所述。
位于存儲器460與CPU 470之間的是與CPU 470和存儲器460的地址總線和數(shù)據(jù)總線相連的集成電路450,集成電路450含有本發(fā)明的保密特征。將它們?nèi)齻€設(shè)置在一個公共印刷電路板485上(如圖11所示)。
在此實施例中,傳感器150分布在印刷電路板485之上,并通過導線連接到集成電路450。將它們設(shè)置在印刷電路板485的兩側(cè)并且還設(shè)置在集成電路450上。
圍繞PCB 485,在其兩側(cè)是含有特征385的封裝50,特征385可以是上述任何一種類型,適于被傳感器150檢測。
在將芯片450、460、470放置在PCB 485上之后,圍繞它們設(shè)置封裝50,并添加引腳以提供電接觸。最后,添加保護外殼480以避免封裝50被意外損壞。
與在上述實施例中相同,在工廠對裝置進行初始化,在初始化過程中,通過I/O接口將數(shù)據(jù)送到該裝置,然后,利用由封裝50導出的密鑰進行加密,并將該其存儲到存儲器460。
根據(jù)上述說明可以明白,在此實施例中,除了存儲器460和CPU 470之外,電路450含有上述實施例中的所有部件。
因此,此實施例使得本發(fā)明可以與傳統(tǒng)或第三方存儲器和CPU芯片產(chǎn)品一起使用,而無需對它們做重大調(diào)整。
第八實施例-自毀涂層圖12A至圖12C示出一個實施例,在該實施例中,除了在上述實施例中說明的大量隨機分布的特性調(diào)整顆粒之外,封裝50還含有許多微囊體,該微囊體內(nèi)含有一種或多種封裝物質(zhì)(即液體形式的)。例如,可以提供第一和第二種不同物質(zhì)500和510的囊體,它們在接觸時一起發(fā)生反應以產(chǎn)生鏈式反應,此鏈式反應使其它微囊體破裂。
圖12B示出試圖用機械方法打開芯片封裝的情況,圖12C示出結(jié)果是囊體500和510破裂并互相接觸,引發(fā)一個兩部分放熱反應,該放熱反應使其它封裝破裂,從而傳遍整個封裝50。這樣會使傳感器150測量的參數(shù)發(fā)生實質(zhì)變化,從而銷毀加密密鑰。
應該以這樣的方式進行封裝,即在正常處理情況下,封裝區(qū)域不破裂,但是在試圖接合或侵入封裝50內(nèi)時,會非常容易地發(fā)生破裂。僅要求封裝被實質(zhì)地改變,而不要求下面的芯片也被破壞。
第九實施例-光傳感器參考圖13A和圖13B,在此實施例中,封裝或包裝材料50由諸如聚合物(例如環(huán)氧樹脂、聚丙烯)或堿金屬硅酸鹽(例如NaSi4)的光透射基質(zhì)515制成。它還可以包括光透射結(jié)晶體(例如結(jié)晶聚合物)。
此外,還設(shè)置了至少一個光源520(圖13A示出多個光源),它位于集成電路350的表面上。光源可以方便地是發(fā)光二極管(LED)。在此實施例中,傳感器陣列150是光傳感器。
聚合物封裝515包括大量隨機分散的顆粒530,顆粒530與光源520發(fā)出的光互相作用。這些顆粒會折射、反射、衍射或吸收光。光源發(fā)出的光在傳感器150的陣列上產(chǎn)生干涉圖,干涉圖就是顆粒分布特征,并且用于產(chǎn)生上述密碼密鑰。例如,這些顆粒可以是小晶粒。
在基質(zhì)包括結(jié)晶體的情況下,它可以包括許多去結(jié)晶區(qū)(decrystallisedareas)以起到顆粒530的作用??梢砸怨绞?,利用聚焦激光束來產(chǎn)生去結(jié)晶區(qū)。
在此實施例中,封裝50優(yōu)選被接合在其上的硬質(zhì)外殼540完全包圍,外殼540的內(nèi)部反射光,并且不允許外部的光進入到其內(nèi)部。因此,傳感器150檢測的光不會受到外部光照條件的影響。
由于硬外殼540的反射作用,所以干擾或去除涂層的嘗試會導致傳感器150檢測的光發(fā)生變化。
在操作過程中,光源520發(fā)出多種光束。到達封裝50外表面和外殼540內(nèi)表面的光束(例如光束560)被反射回內(nèi)部,并最后到達傳感器之一(標記為565)。
圖13B示出侵入性打開該裝置的結(jié)果。這將產(chǎn)生一個開口570,使諸如光束560的光束通過開口570射出,而不在內(nèi)部反射。因此,傳感器565檢測的環(huán)境發(fā)生了變化,所以改變了密鑰,因此使得不可能解密。
在此實施例中,每個光傳感器方便地分別與一個發(fā)光二極管成對配合,并且圍繞芯片的外圍設(shè)置這些光傳感器-發(fā)光二極管對。來自光傳感器-發(fā)光二極管對中的發(fā)光二極管的光被另一對中的光傳感器檢測。
第十實施例-只讀存儲器在上述實施例中,存儲器110是可電改寫型存儲器,因此允許每個集成電路在制造好之后檢測其封裝的參數(shù)并由此導出其唯一加密密鑰,然后利用該密鑰將數(shù)據(jù)存儲到存儲器110內(nèi)。
本實施例使得能夠采用只讀存儲器(ROM),在進行初始化之前,數(shù)據(jù)以及被存儲到該只讀存儲器內(nèi)。
參考圖16,可以看到,除了出現(xiàn)了一個附加存儲器111以及加密/解密單元120的操作過程不同之外,此實施例與圖1B所示的實施例相同。
在此實施例中,存儲器110是只讀存儲器(ROM)。以加密形式在只讀存儲器110中提供數(shù)據(jù),利用第一預定加密密鑰進行加密。之后,以明文形式將第一加密密鑰存儲到第二存儲器111內(nèi),第二存儲器111是可寫、非易失性存儲器(例如Flash或EEPROM)。
在此實施例中,在進行初始化時,執(zhí)行圖14所示的步驟1002和步驟1004。然后,從第二存儲器讀取預定加密密鑰的值(即解密存儲器110的內(nèi)容所需的密鑰),然后利用在步驟1004產(chǎn)生(即從封裝參數(shù)導出)的第二密鑰進行加密。然后以加密形式將根據(jù)第二密鑰加密的第一密鑰寫回第二存儲器111。
隨后,在使用過程中,在每次接通該裝置時,第一步驟是讀第二存儲器111,并解密從其內(nèi)獲得的第一密鑰。此后,讀寫數(shù)據(jù)的操作與上述實施例中說明的過程大致相同。在斷電時,從保存其的寄存器內(nèi)刪除第一密鑰的明文值,在圖9中,其還進行翻轉(zhuǎn)以挫敗凍結(jié)攻擊。
在此實施例中,用于加密或解密保存在第一(ROM)存儲器110內(nèi)數(shù)據(jù)的密鑰并不是以明文形式被永久鎖存或保存,所以不可能通過剝落封裝進行讀取。
對于一組ROM,第一密鑰可以相同,因此ROM可以被掩模編程以降低成本。只有從封裝導出的密鑰加密密鑰需要存儲在第二存儲器內(nèi)。
第十一實施例-成對密鑰參考圖17和18,它們與第一實施例的圖1B和圖2以及圖19對應。
在此實施例中,用相同參考編號表示與上述實施例中的單元相同的單元。
在此實施例中,與在上一個實施例中相同,利用ROM 110作為存儲器。另外,在此實施例中,采用具有字節(jié)寬度(即8位寬)數(shù)據(jù)總線的處理器,具有如上所述64位塊加密。
另外,在此實施例中,如果不將從封裝獲得的掃描值直接用于產(chǎn)生密鑰來對ROM數(shù)據(jù)的密鑰解密,而是將它們與第二數(shù)字串組合在一起,則可以改善保密性,以下將該組合稱為“成對密鑰”,而將掃描值串稱為“外殼密鑰”。(成對密鑰和外殼密鑰均不是嚴格意義上的密鑰,因為它們本身不實際用于加密或解密數(shù)據(jù),但是成對密鑰應當就好象是密鑰一樣產(chǎn)生)。由此,即使黑客可以重構(gòu)掃描值,沒有成對密鑰,也不可能導出解密數(shù)據(jù)所需的密鑰。
在此實施例中,檢測竄改,并且在此檢測過程中,刪除成對密鑰。
顯然,此實施例還提供了附加保密,因此特別是可以與物理保密性低的實施例一起使用,但是它在諸如上述磁檢測實施例或光檢測實施例的實施例中沒有必要。
除了上述實施例說明的單元之外,在圖17中,設(shè)置了傳感器捕獲(或掃描)單元704,掃描單元704掃描傳感器150輸出的、通過傳感器總線708接收的信號,并將數(shù)字捕獲信號718送到密鑰管理單元702,在密鑰管理單元702產(chǎn)生進行加密或解密的密鑰。
在此實施例中,KSU 704具有到KMU的標準接口,也就是說,它包括用于所使用的任何類型傳感器的所有必要部件,并且它將它們的輸出轉(zhuǎn)換為標準數(shù)字形式。因此,對于不同傳感器系統(tǒng),此實施例裝置的任何定制過程均只集中在傳感器150和KSU 704。
地址總線712、數(shù)據(jù)總線710、控制總線706、密鑰管理單元總線716、加密總線714以及密鑰總線720將這些部件互聯(lián)在一起。控制總線706允許CPU 100將請求發(fā)送到各種其它功能塊(KSU 704、KMU 702以及EDU 120)。
圖18示出圖17所示的、包括EDU 120在內(nèi)的裝置部分。具體地說,該圖示出EDU 120、CPU 100、存儲器110以及密鑰保存寄存器之間的關(guān)系。
在此實施例中,EDU 120包括對稱塊加密/解密裝置(例如,可操作地執(zhí)行DES加密和解密操作);一對密鑰保存寄存器722、724;列寬度(64位)雙端口明文寄存器728;以及存儲器訪問控制(MAC)電路726(響應地址總線),從保存在兩個密鑰保存寄存器722、724內(nèi)的兩個密鑰中選擇一個適當密鑰,并將它送到塊加密/解密單元260。
與64位寄存器728的每個字節(jié)相連的是相應字節(jié)寬度寄存器730a至730h。存儲器訪問控制電路726可操作地選擇字節(jié)寄存器730之一。
參考圖19,密鑰管理單元702包括傳感器地址發(fā)生器801、外殼密鑰寄存器804、指紋寄存器808以及成對密鑰寄存器824。它還包括執(zhí)行成對功能822、指紋功能806以及比較電路812的邏輯電路。
KMU 702將一個隨機數(shù)作為成對密鑰存儲在可擦除寄存器(即非易失性存儲器)824內(nèi)。該隨機數(shù)對于一組裝置中的每個裝置是唯一的,并且由裝載程序在初始化時通過I/O電路提供并存儲到寄存器內(nèi)。
第二密鑰寄存器724內(nèi)的密鑰用于對保存在ROM 110內(nèi)的數(shù)據(jù)進行加密,在初始化時,通過I/O電路提供該密鑰并以明文形式將該密鑰存儲在寄存器724內(nèi)。
在初始化過程中,與在先一個實施例中相同,為了載入外殼密鑰,CPU在控制總線706上產(chǎn)生一個信號以使KSU 704掃描封裝特性。然后,通過傳感器總線708,KSU從傳感器單元150接收測量值802,將這些測量值802送到密鑰管理單元(KMU)702。密鑰管理單元702將它們存儲到(非易失性、可擦除)外殼密鑰寄存器804內(nèi),與上述實施例相同,外殼密鑰寄存器804交替該數(shù)據(jù)以防止“凍結(jié)”攻擊。
接著,根據(jù)外殼密鑰寄存器804的內(nèi)容,指紋功能電路806計算表征該測量值的“指紋”。指紋功能是一種將測量值以與其順序無關(guān)的形式組合在一起(并且可以方便地是各測量值之和)的功能。將計算的指紋存儲到(非易失性、可擦除)指紋寄存器808內(nèi),在使用該裝置的過程中,指紋寄存器808始終保存該指紋(除非檢測到竄改)。
接著,例如,利用XOR組合操作,根據(jù)外殼密鑰寄存器804和成對密鑰寄存器824的內(nèi)容計算所要使用的最終密鑰,并將它存儲在最終密鑰寄存器722內(nèi),最終密鑰寄存器722保留該最終密鑰直到該裝置被斷電,此時,它將被刪除。正如在上述實施例中那樣,此寄存器交替該數(shù)據(jù)以防止“凍結(jié)”攻擊。如果需要,通過KMU總線716,EDU訪問該寄存器。
最后,根據(jù)從寄存器722獲得的最終密鑰,把最初以明文形式存儲在寄存器724內(nèi)的、對ROM的密鑰取出和加密,并以加密形式再存儲到寄存器724,寄存器724保留它直到該裝置被斷電,此時,它將被刪除。該寄存器還交替該數(shù)據(jù)以防止“凍結(jié)”攻擊。
在之后每次對裝置接通電源時,CPU 100命令重新捕獲傳感器值、進行指紋校驗、重新計算最終密鑰以及重新對ROM密鑰進行加密。
在該裝置正常操作期間,捕獲單元704較頻繁地掃描傳感器150(間隔短于侵入該封裝所需的時間,例如每秒鐘掃描一次)。在每次新掃描之前,傳感器地址發(fā)生器801計算不同序列傳感器讀數(shù),這樣就可以頻繁改變掃描順序了。但是,雖然它們以不同的順序出現(xiàn),每次掃描中的掃描值本身應該相同。
在傳感器總線708的每次掃描之后,通過將指紋功能806應用于外殼密鑰寄存器804的內(nèi)容并將此結(jié)果與指紋寄存器808的內(nèi)容進行比較,設(shè)置KMU 704將測量的封裝特性與指紋進行比較。
如果不匹配(指示竄改封裝),則竄改檢測電路812將表示報警條件的信號發(fā)送到CPU,CPU通過控制總線706發(fā)送報警信號以使KSU、KMU以及EDU從成對密鑰寄存器824內(nèi)刪除成對密鑰。盡管這本身可能已經(jīng)足夠了,但是還可以刪除外殼密鑰寄存器804、指紋寄存器808以及加密密鑰寄存器722、724的內(nèi)容。
現(xiàn)在簡要說明該裝置的讀寫操作,除了下面說明的之外,該實施例的操作方式與第一實施例大致相同。
在字節(jié)讀循環(huán)期間,通過加密總線(64位寬)714,將包括CPU請求的字節(jié)在內(nèi)的64位列提供到加密/解密電路260。如果存儲器訪問控制電路726檢測到地址在可寫存儲器111的地址空間內(nèi),則選擇第一密鑰寄存器722,并將它用于數(shù)據(jù)解密過程,否則,如果地址位于只讀存儲器110的地址空間內(nèi),則選擇第一密鑰寄存器722,然后選擇第二密鑰寄存器724,并且利用最終密鑰對此后用于對數(shù)據(jù)進行解密的ROM密鑰進行解密。
塊加密單元260將解密的64位字寫入明文寄存器728。響應放置在地址總線712上的行地址部分,存儲器訪問控制電路726選擇含有CPU 100所請求字節(jié)的一個適當寄存器730a-h,并使所選擇寄存器將該字節(jié)載入數(shù)據(jù)總線710,從而被CPU 100讀取。
正如在上述實施例中那樣,執(zhí)行寫操作(寫入非易失性存儲器111,因為不能寫入ROM)要求首先進行讀操作,因為加密的數(shù)據(jù)塊比CPU 100使用的數(shù)據(jù)塊大。因此,在明文寄存器728內(nèi)的一列明文可用后(在上述讀步驟之后),存儲器訪問控制電路726將待被CPU 100寫入的字節(jié)從數(shù)據(jù)總線710放置到字節(jié)寬度寄存器730a至730h中一個適當字節(jié)寬度寄存器內(nèi),并重寫明文寄存器728內(nèi)相應的8位。
然后,利用當前密鑰,塊加密單元260對明文寄存器728的內(nèi)容進行加密,然后通過加密總線714將該列寫回非易失性存儲器111。
通過與第一實施例進行比較,最容易理解此實施例的作用。在第一實施例中,如果黑客可以對CPU 100切割一個小孔,在從理論上說,有可能讀出傳感器值。鉆孔的過程會導致局部特性發(fā)生變化,因此少數(shù)傳感器的讀數(shù)會發(fā)生變化,但是許多其它傳感器的讀數(shù)可能不發(fā)生變化。所以通過對幾個變化位的所有值進行試驗,黑客有可能實現(xiàn)“強力”攻擊。
相反,在本實施例中,僅讀取傳感器輸出的參數(shù)值無助于推斷密鑰的剩余位,因為這些位與成對密鑰組合在一起了,在檢測到竄改時,此成對密鑰會被刪除。
即使在傳感器掃描操作中,黑客可以鉆孔并采集數(shù)據(jù)線上傳輸?shù)膾呙铚y量值,但是由于掃描順序發(fā)生置換,所以他不知道在測量讀數(shù)的序列中由哪個讀數(shù)形成密鑰,即應該在哪里設(shè)置錯誤位(受到“強力”攻擊的位),因此通過置換掃描順序,可以提高進行這種攻擊的難度。
其它傳感器和參數(shù)顯然,還可以檢測各種其它參數(shù)或特性。
在另一個實施例中,輻射也可以用作檢測特性。封裝50的環(huán)氧樹脂與少量發(fā)出β射線的顆粒(例如諸如鈾的放射性同位素顆粒)混合。
由于這種混合物包圍該電路,所以β射線會從芯片的各個側(cè)面到達芯片。傳感器是設(shè)置在許多位置的β射線檢測器(也可以是x射線檢測器)。該檢測器可以接收芯片外殼產(chǎn)生的β射線的復圖形。如上所述,任何侵入嘗試均會改變從傳感器輻射電平產(chǎn)生的密鑰。
產(chǎn)生的輻射量低于自然產(chǎn)生的宇宙射線。然而,為了更加安全,芯片外還可以包圍某些輻射吸收物質(zhì),例如薄鉛層,或混合了硫酸鋇的環(huán)氧樹脂層。
在另一個實施例中,可以在層50的基質(zhì)內(nèi)提供變化的鐵電材料顆粒(如鐵電RAM技術(shù)中使用的),并且利用平板電極對層50施加電場。利用這些顆??梢栽诰植繉υ撾妶鲞M行調(diào)整,并且與上述電容性實施例中所使用的類似的傳感器可以檢測到此調(diào)整。
在又一個實施例中,利用變化的磁鐵電材料顆粒產(chǎn)生一組局部磁場,利用霍爾效應傳感器檢測該磁場。
還可以使用自旋閥晶體管(spin valve transistor)(可以制造得非常小),而不使用霍爾效應傳感器。
無論使用什么樣的檢測參數(shù),一個理想特征是封裝的變化應該在同一個方向影響所有傳感器讀數(shù)。
因此,例如,如果從傳感器讀數(shù)之和導出密鑰,則去除封裝的嘗試無疑會改變密鑰值。例如,如果減小封裝厚度的影響會提高某些讀數(shù)并降低其它讀數(shù),則從理論上說,該密鑰可能保持不變,這是不希望看到的。
其它實施例盡管對導出密鑰的過程進行了說明,但是也可以使用諸如密碼算法籽數(shù)、密碼算法或者它們中任何一個的一部分的密碼數(shù)據(jù)。
盡管對對稱加密過程進行了說明,但是,顯然,還可以使用非對稱加密過程和解密過程。在這種情況下,可以提供不同密鑰來進行加密和解密。
盡管在上述披露的實施例中,所示的電路可以進行加密和解密,但是在某些應用中,如果僅從存儲器讀取數(shù)據(jù),則可以在此裝置內(nèi)僅提供解密過程。
盡管對部件和材料的特定例子進行了說明,但是,顯然,可以使用任何適當部件和材料,并且說明書內(nèi)容并不局限于上述部件。
盡管以上對特定加密方法進行了說明,但是本發(fā)明并不局限于任何一種這種方法。此外,盡管對采用單獨密鑰和算法的加密方法進行了說明,但是,顯然,只要從圍繞該裝置的保護存儲器的特性導出用于控制加密過程某些方面的數(shù)據(jù),則本發(fā)明可以應用于任何形式的加密過程。
所采用的電路基于硅材料,或基于諸如砷化鉀的III-V材料。盡管以上對電子電路進行了說明,但是本發(fā)明還可以應用于光電子電路或光學電路或其它電路(例如分子計算電路)。
盡管對集成電路電路進行了說明,但是,顯然,分離部件可以組合為各個分別單獨集成的分組合。同樣,還可以將本發(fā)明的各種部件作為分立邏輯電路實現(xiàn),或者作為集成專用邏輯電路實現(xiàn),或者作為在微型計算機或微控制器或DSP核心控制下執(zhí)行的程序?qū)崿F(xiàn)。
我們認識到,還可以將上述各種實施例的特征組合在一起。請求保護在此披露的任何和所有新穎性內(nèi)容,而無論它們是否是所附權(quán)利要求的主題。
權(quán)利要求
1.一種集成電路裝置,包括電路,采用加密過程;以及保護部件,用于減少對電路的訪問;其特征在于,該電路響應于保護部件的至少一個物理參數(shù)進行加密和/或解密,使得通過竄改保護部件來訪問電路會改變加密過程和/或解密過程。
2.根據(jù)權(quán)利要求1所述的裝置,其中該電路包括在其內(nèi)以加密形式存儲數(shù)據(jù)的存儲器。
3.根據(jù)權(quán)利要求1所述的裝置,其中該電路包括用于連接一個單獨存儲裝置的總線。
4.根據(jù)權(quán)利要求1所述的裝置,其中保護部件包括圍繞該電路的封裝。
5.根據(jù)權(quán)利要求1所述的裝置,其中該電路包括加密器,該加密器對數(shù)據(jù)應用加密和/或解密算法。
6.根據(jù)權(quán)利要求5所述的裝置,其中所述加密器被設(shè)置為使用一個加密密鑰,并且該電路被設(shè)置為從所述參數(shù)導出所述密鑰。
7.根據(jù)權(quán)利要求1所述的裝置,其中所述參數(shù)是電參數(shù)。
8.根據(jù)權(quán)利要求1所述的裝置,其中所述參數(shù)是磁性參數(shù)。
9.根據(jù)權(quán)利要求1所述的裝置,其中所述參數(shù)是光學參數(shù)。
10.根據(jù)權(quán)利要求1所述的裝置,其中所述參數(shù)是輻射參數(shù)。
11.根據(jù)權(quán)利要求11所述的裝置,其中所述保護部件在基質(zhì)材料內(nèi)包括所述電路響應的大量顆粒。
12.根據(jù)權(quán)利要求11所述的裝置,其中所述顆粒是金屬性的。
13.根據(jù)權(quán)利要求11所述的裝置,其中所述顆粒是放射性的。
14.根據(jù)權(quán)利要求11所述的裝置,其中所述基質(zhì)允許輻射通過,并且所述參數(shù)是受所述顆粒影響的光學特性。
15.根據(jù)權(quán)利要求14所述的裝置,其中所述顆粒產(chǎn)生輻射。
16.根據(jù)權(quán)利要求14所述的裝置,其中所述顆粒吸收輻射。
17.根據(jù)權(quán)利要求14所述的裝置,其中所述顆粒散射輻射。
18.根據(jù)權(quán)利要求1所述的裝置,其中所述保護部件包括一個結(jié)晶體的至少一個去結(jié)晶部分。
19.根據(jù)權(quán)利要求2或3所述的裝置,其中所述存儲器是只讀存儲器,并且所述電路包括解密器,該解密器被設(shè)置為對從其讀取的數(shù)據(jù)應用解密算法。
20.根據(jù)權(quán)利要求2或3所述的裝置,其中所述存儲器是可寫存儲器,并且所述電路包括加密器,該加密器被設(shè)置為對待寫入其內(nèi)的數(shù)據(jù)應用加密算法。
21.根據(jù)權(quán)利要求2或3所述的裝置,其中所述存儲器包括至少一個第一存儲器和一個第二存儲器,并且所述第一存儲器存儲對存儲在所述第二存儲器內(nèi)的數(shù)據(jù)進行解密所使用的加密數(shù)據(jù),所述電路響應該參數(shù)對第一存儲器的內(nèi)容進行解密。
22.根據(jù)權(quán)利要求1所述的裝置,包括竄改檢測邏輯電路,它響應一個對該電路的訪問嘗試產(chǎn)生竄改信號。
23.根據(jù)權(quán)利要求1所述的裝置,其中該電路聯(lián)合地響應所述物理參數(shù)和預定的保密加密數(shù)據(jù)來應用加密過程和/或解密過程。
24.根據(jù)權(quán)利要求23所述的裝置,包括竄改檢測邏輯電路,它響應一個對該電路的訪問嘗試產(chǎn)生竄改信號。
25.根據(jù)權(quán)利要求24所述的裝置,其中該電路被設(shè)置為響應該竄改信號來刪除預定的保密加密數(shù)據(jù)。
26.根據(jù)權(quán)利要求1所述的裝置,進一步包括圍繞該保護部件的屏蔽,該屏蔽被設(shè)置為降低外部條件對物理參數(shù)的影響。
27.根據(jù)權(quán)利要求1所述的裝置,進一步包括至少一個響應所述保護部件的傳感器,所述電路通過該傳感器導出所述至少一個參數(shù)。
28.根據(jù)權(quán)利要求27所述的裝置,包括多個用于檢測所述至少一個物理參數(shù)的傳感器。
29.根據(jù)權(quán)利要求28所述的裝置,其中所述傳感器以陣列形式被設(shè)置在至少部分所述電路上。
30.根據(jù)權(quán)利要求29所述的裝置,其中傳感器之間的間隔在微米數(shù)量級。
31.根據(jù)權(quán)利要求28所述的裝置,進一步包括掃描電路,被設(shè)置為周期性讀取所述傳感器。
32.根據(jù)權(quán)利要求31所述的裝置,其中所述掃描電路被設(shè)置為改變讀取所述傳感器的順序。
33.根據(jù)權(quán)利要求31所述的裝置,進一步包括校驗電路,被設(shè)置為校驗所述傳感器的輸出是否與其先前的值一致。
34.一種集成電路裝置,包括存儲器,以加密形式存儲數(shù)據(jù);以及電路,用于進行加密和/或解密以寫入和/或讀出數(shù)據(jù),該電路包括密鑰寄存器,用于存儲所述加密過程和/或解密過程中使用的密鑰;以及交替電路,被設(shè)置為以頻繁間隔改變存儲在密鑰寄存器內(nèi)的數(shù)據(jù)。
35.一種訪問存儲在存儲器裝置內(nèi)的被加密的數(shù)據(jù)的方法,包括從一個阻擋對電路的訪問的保護部件導出加密數(shù)據(jù),以及利用所述加密數(shù)據(jù)訪問所述被加密的數(shù)據(jù)。
全文摘要
本發(fā)明披露了一種集成電路裝置,包括電路,采用加密過程;以及保護部件(例如封裝層),可以減少對電路的訪問;其中該電路響應保護部件的至少一個物理參數(shù)進行加密和/或解密(例如通過從其讀取密鑰),使得通過竄改保護部件來訪問電路會使加密過程和/或解密過程發(fā)生變化。
文檔編號G06F21/00GK1433576SQ00818715
公開日2003年7月30日 申請日期2000年12月27日 優(yōu)先權(quán)日1999年12月30日
發(fā)明者奧利弗·克默林, 弗里策·克默林 申請人:奧利弗·克默林, 弗里策·克默林