專利名稱:具有編程片內(nèi)硬件的安全機(jī)制的用于加密和解密的集成電路芯片的制作方法
背景技術(shù):
至少在古羅馬的凱撒時(shí)代就已經(jīng)使用密碼術(shù)來(lái)提供安全的通訊方法。在現(xiàn)代社會(huì),特別是在保護(hù)全球金融交易中,密碼術(shù)充當(dāng)同樣重要的角色?,F(xiàn)代密碼系統(tǒng)的結(jié)構(gòu)還擴(kuò)展了密碼的角色,以便還允許將密碼引擎用于授權(quán)、驗(yàn)證和受信事務(wù)處理的目的。可以通過(guò)許多不同的方式實(shí)現(xiàn)這些角色,但是所有這些方式的共同特征是它們旨在防止一種或另一種形式的攻擊。這些攻擊可能是物理性質(zhì)的,也可能是算法的。從部署在安全通信服務(wù)中的算法和編程的角度,通過(guò)選擇使用越來(lái)越長(zhǎng)的密鑰(超出用于破解加密代碼的數(shù)據(jù)處理系統(tǒng)的不斷增加的能力),通??梢栽鰪?qiáng)對(duì)攻擊的防范。從硬件攻擊的角度,使用許多不同的方法來(lái)提供物理安全。這些方法包括檢測(cè)物理或電子入侵嘗試并在出現(xiàn)這些入侵嘗試時(shí)自毀的系統(tǒng)。
其中一種保護(hù)密碼電路芯片的物理系統(tǒng)包括芯片周圍的網(wǎng)孔(mesh)。該網(wǎng)孔檢測(cè)對(duì)芯片的物理侵入嘗試。但是,網(wǎng)孔的存在引發(fā)了散熱問(wèn)題,因?yàn)樗拗屏藷崃繌男酒膬?nèi)部區(qū)域流向網(wǎng)孔外部。網(wǎng)孔結(jié)構(gòu)的存在因此阻礙了包括更為強(qiáng)大和密集的芯片電路、處理器和組件,因?yàn)檫@種包含意味著增加功率耗散,而由于增加的熱量的散發(fā)被網(wǎng)孔阻止,這會(huì)導(dǎo)致組件故障或可靠性問(wèn)題。將網(wǎng)孔用于篡改檢測(cè)的另一個(gè)缺點(diǎn)是其使用要求包括大量模擬器件;此類器件無(wú)法容易地與數(shù)字組件集成在同一電路基板上,并且即使易于結(jié)合,散熱問(wèn)題仍然存在。
因?yàn)楸景l(fā)明涉及密碼處理系統(tǒng),具體地說(shuō),涉及由集成電路芯片實(shí)現(xiàn)的這種性質(zhì)的系統(tǒng),所以指出標(biāo)題為“Security Requirements forCryptographic Modules(密碼模塊的安全要求)”的聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)出版物(2001年5月25日發(fā)布的FIPS PUB140-2,其取代了1994年1月11日發(fā)布的FIPS PUB140-1)的存在是有幫助的。該出版物討論了從最低安全級(jí)別(安全級(jí)別1)到最高安全級(jí)別(安全級(jí)別4)的四個(gè)安全級(jí)別。本發(fā)明能夠?qū)崿F(xiàn)其中所述的最高安全級(jí)別。其中說(shuō)明了由個(gè)人電腦(PC)加密板代表的安全級(jí)別為1的加密模塊的實(shí)例。安全級(jí)別2的進(jìn)一步之處在于它需要任何物理篡改嘗試存在的證據(jù)。安全級(jí)別3的更進(jìn)一步之處在于它嘗試阻撓任何篡改企圖。該安全級(jí)別還要求基于身份的認(rèn)證機(jī)制。安全級(jí)別3還要求明文“關(guān)鍵安全參數(shù)”(即,諸如未加密的密鑰信息之類的“CSP”,對(duì)于單重加密處理來(lái)說(shuō),其可以由人讀取)的輸入或輸出通過(guò)物理上與其他端口或接口分離的端口來(lái)執(zhí)行。在安全級(jí)別4,提供了圍繞密碼模塊的一層完整的保護(hù),目的是檢測(cè)和響應(yīng)所有未授權(quán)的物理訪問(wèn)嘗試,且穿透模塊外殼將導(dǎo)致所有明文的關(guān)鍵安全參數(shù)立即歸零。
在本申請(qǐng)中使用了某些術(shù)語(yǔ)、縮略語(yǔ)和首字母縮寫詞。這些術(shù)語(yǔ)在密碼和集成電路芯片設(shè)計(jì)領(lǐng)域是公知的。盡管如此,為了方便起見(jiàn),將它們列在下面的兩個(gè)表格中以幫助讀者表I
表II
在例如以安全方式壓縮大型數(shù)據(jù)塊(信息)的數(shù)字簽名生成中使用MD5(信息摘要5)。PCI是一種由英特爾公司發(fā)起的局部(內(nèi)部)計(jì)算機(jī)總線標(biāo)準(zhǔn)。通常通過(guò)對(duì)硬件噪聲進(jìn)行采樣和處理來(lái)生成真隨機(jī)數(shù)。對(duì)于高安全性環(huán)境,在安全邊界內(nèi)生成隨機(jī)數(shù)。
本發(fā)明不限于使用任何特定的密碼引擎。事實(shí)上,本發(fā)明可以使用多種不同的密碼引擎。在此方面,應(yīng)該理解,如本文中所使用的,術(shù)語(yǔ)“密碼引擎”指任何旨在執(zhí)行模取冪或任何其他密碼算法的電路。模取冪和普通求冪過(guò)程相同,除了結(jié)果以是素?cái)?shù)的大數(shù)字為模,以使其可用于提供加密和解密運(yùn)算。
人們希望在密碼系統(tǒng)中具有的其他特性之一是比用于安全和非安全事務(wù)更高級(jí)別的可靠運(yùn)算。人們還希望能夠使用現(xiàn)有處理器設(shè)計(jì)以便結(jié)合在單芯片的結(jié)構(gòu)中。很明顯,單芯片架構(gòu)更為優(yōu)選,因?yàn)樗峁┝烁鞔_限定和更可防御的邊界。但是,現(xiàn)有的可用于提供片內(nèi)數(shù)據(jù)處理和計(jì)算流的處理器通常不總是結(jié)合了期望的冗余級(jí)別。因此,使用這些處理器設(shè)計(jì)(而沒(méi)有其他設(shè)計(jì))無(wú)法提供相應(yīng)期望級(jí)別的數(shù)據(jù)完整性和可靠性。同樣,還會(huì)影響可用性和可服務(wù)性。因此,在本發(fā)明的優(yōu)選實(shí)施例中,連同任何寫入外部存儲(chǔ)器的處理器指令一起加密校驗(yàn)。此外,當(dāng)解密了存儲(chǔ)在外部存儲(chǔ)器的“安全”區(qū)域中的加密指令時(shí),將檢查校驗(yàn)以確保數(shù)據(jù)正確性。將校驗(yàn)位與指令包括在一起使得攻擊非常困難,因?yàn)椴粌H很可能會(huì)影響校驗(yàn),而且還將確定解密的指令已被篡改。指令解密之后的校驗(yàn)檢查失敗提供了處理應(yīng)停止和/或已發(fā)生嘗試攻擊的良好指示。在此時(shí)停止提高了連續(xù)的機(jī)密性和數(shù)據(jù)完整性。
人們希望在開(kāi)發(fā)新的密碼處理器的上下文中解決的眾多問(wèn)題之一是存在大量有關(guān)加密、解密、認(rèn)證和驗(yàn)證的應(yīng)用。如果將這些應(yīng)用以明文形式存儲(chǔ)在安全邊界之外,則它們將成為很容易攻擊的目標(biāo)。在這些情況下,會(huì)在非安全存儲(chǔ)器中更改代碼,并且將新代碼用于訪問(wèn)包含在“安全”邊界內(nèi)的秘密數(shù)據(jù)。這顯然不是期望的結(jié)果,并且最多防止了使用遺產(chǎn)代碼。因此,本發(fā)明提供了對(duì)外部存儲(chǔ)器的訪問(wèn),后者包括兩個(gè)部分一個(gè)專用于加密的數(shù)據(jù),另一個(gè)專用于未加密的數(shù)據(jù)(即,“明文形式的數(shù)據(jù)”或“明文數(shù)據(jù)”)。這兩個(gè)存儲(chǔ)器部分之間的邊界是可調(diào)整的,但只能從安全COACH邊界的內(nèi)部來(lái)調(diào)整。
本文說(shuō)明的系統(tǒng)提供了許多不同的優(yōu)點(diǎn)。例如,本發(fā)明提供了完全集成的環(huán)境,其中,無(wú)需向任何其他如總線或內(nèi)部存儲(chǔ)器接口之類的系統(tǒng)組件暴露任何未加密的信號(hào)。仍將對(duì)其他安全外部COACH系統(tǒng)的訪問(wèn)進(jìn)行加密,但是加密期間使用的秘密保存在密碼引擎所在的同一物理外殼中。在非集成的密碼系統(tǒng)中,必須在某種形式的單一物理保護(hù)的外殼內(nèi)提供安全和永久性存儲(chǔ)裝置,CPU(中央處理單元,或簡(jiǎn)單地說(shuō),處理器),即,當(dāng)密碼處理系統(tǒng)的組件是分離的時(shí),系統(tǒng)的物理保護(hù)模式不僅必須保護(hù)分離組件本身防范攻擊,而且該物理保護(hù)模式還必須保護(hù)這些單元之間的所有信號(hào)路徑。但是,應(yīng)注意的是不僅必須保護(hù)信號(hào)路徑;而且在非集成解決方案中還必須保護(hù)電源連接,因?yàn)楣暨€可以基于移除或改變僅加在某一組件上的電線電平,這會(huì)導(dǎo)致整個(gè)系統(tǒng)易受攻擊。相比之下,在本發(fā)明中,各密碼處理系統(tǒng)組件存在于同一電路芯片上并因此自然相連。無(wú)需外部電路來(lái)確保安全,例如可能由檢測(cè)篡改并執(zhí)行RAM和/或其他相關(guān)緩沖區(qū)和寄存器清零的單獨(dú)電路提供的安全。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的優(yōu)選實(shí)施例,提供了有關(guān)安全的單芯片密碼處理器的架構(gòu)的系統(tǒng)和方法。本發(fā)明還涉及利用該架構(gòu)為用戶提供安全級(jí)別對(duì)運(yùn)行速度的選擇的方法。本發(fā)明使用一個(gè)或多個(gè)單獨(dú)的密碼引擎,通過(guò)與外部環(huán)境的安全內(nèi)部通信鏈接來(lái)控制所有這些引擎。在一個(gè)方面中,本發(fā)明包括使用安全的單芯片密碼處理器來(lái)提供安全功能的系統(tǒng),所述處理器能夠內(nèi)部控制地對(duì)外部存儲(chǔ)器的訪問(wèn),所述外部存儲(chǔ)器具有保存加密數(shù)據(jù)的部分和保存未加密數(shù)據(jù)的其他部分。在其他方面中,本發(fā)明包括使用單芯片密碼處理器來(lái)提供安全功能的系統(tǒng),只有通過(guò)加密信號(hào)才可以調(diào)用所述處理器的控制功能。換言之,本發(fā)明還包括一種密碼處理器架構(gòu),其中只能通過(guò)傳送加密信號(hào)的通信路徑來(lái)提供外部訪問(wèn)。
因此,本發(fā)明不只涉及密碼引擎本身,而且涉及以安全的方式使用一個(gè)或多個(gè)此類引擎來(lái)實(shí)現(xiàn)許多目標(biāo)。在某一級(jí)別,本發(fā)明的架構(gòu)涉及單個(gè)芯片,通過(guò)確保為了調(diào)用其功能而僅允許處理加密的命令來(lái)實(shí)現(xiàn)所述芯片的安全。盡管如此,仍提供了對(duì)外部隨機(jī)存取存儲(chǔ)器(RAM)的訪問(wèn),所述存儲(chǔ)器在安全內(nèi)部芯片功能的單獨(dú)控制下,可控制地分成加密和未加密的部分。在本發(fā)明的一個(gè)方面中,通過(guò)直接控制單個(gè)密碼引擎來(lái)執(zhí)行加密和解密操作。在其他方面,通過(guò)調(diào)用由內(nèi)部微處理器元件(例如,那些由申請(qǐng)人的受讓人的PowerPC系列芯片產(chǎn)品定義的元件)執(zhí)行的命令和已存儲(chǔ)的程序來(lái)執(zhí)行安全功能(包括加密和解密)。通常,使用這些處理元件中的一個(gè)完整元件的子集。所包括的微處理器具有包括操作系統(tǒng)(例如,Linux)的外部易失性RAM(仍在芯片內(nèi)部,但在處理元件本身的外部)。但是,該處理元件還可以包括其自己的內(nèi)部RAM。僅通過(guò)至少部分地使用FPGA邏輯電路實(shí)現(xiàn)的內(nèi)部安全流控制開(kāi)關(guān)來(lái)提供對(duì)內(nèi)部RAM的訪問(wèn),此事實(shí)提供了額外且顯著的靈活性和控制。但是,要指出的是,此流控制開(kāi)關(guān)不只是用作簡(jiǎn)單的閉合開(kāi)關(guān);更確切地,在控制其他內(nèi)部組件之間的信息流的意義上,它充當(dāng)一個(gè)開(kāi)關(guān)。還要指出的是,出于性能的目的,優(yōu)選地在片內(nèi)RAM中提供上述的操作系統(tǒng);它不是FIPS要求。
在本發(fā)明的其他方面,本發(fā)明的單個(gè)架構(gòu)芯片以協(xié)作的布置連接到一起,其中一個(gè)或多個(gè)COACH系統(tǒng)為其他COACH芯片提供檢查功能和/或提供增加的處理功能。在沒(méi)有對(duì)單芯片COACH系統(tǒng)提供的安全級(jí)別做出任何犧牲和沒(méi)有對(duì)不受攻擊做出任何危害的情況下提供了所有附加功能。
因此,本發(fā)明的一個(gè)目標(biāo)是提供一種在單個(gè)安全集成電路芯片上的密碼處理元件。
本發(fā)明的還一個(gè)目標(biāo)是提供一種對(duì)安全攻擊非常有抵抗力的密碼處理系統(tǒng)。
本發(fā)明的另一個(gè)目標(biāo)是提供一種其功能、命令和運(yùn)算都只能通過(guò)使用已加密信號(hào)來(lái)訪問(wèn)的密碼處理系統(tǒng)。
本發(fā)明的另一個(gè)目標(biāo)是提供一種靈活但仍可以安全的方式與外部隨機(jī)存取存儲(chǔ)器通信的密碼處理器架構(gòu)。
本發(fā)明的另一個(gè)目標(biāo)是提供一種密碼處理器的架構(gòu),其能夠與其他此類處理器進(jìn)行安全通信。
本發(fā)明的另一個(gè)目標(biāo)是提供一種包括一個(gè)或多個(gè)密碼引擎的密碼處理器,通過(guò)避免內(nèi)部微處理器參與的快速路徑指令來(lái)訪問(wèn)所述密碼引擎。
本發(fā)明的另一個(gè)目標(biāo)是提供一種在單芯片范圍內(nèi)實(shí)現(xiàn)的密碼處理器。
本發(fā)明的另一個(gè)目標(biāo)是提供一種不僅防篡改而且可響應(yīng)篡改的密碼處理器。
本發(fā)明的另一個(gè)目標(biāo)是提供一種能夠以安全方式與其他類似構(gòu)架的處理器通信以提高性能和/或提供更好的RAS特性的密碼處理器。
最后,但并不限于此,本發(fā)明的一個(gè)目標(biāo)是提供增強(qiáng)、靈活、可擴(kuò)展、快速、高效且安全的密碼功能,特別是為了數(shù)據(jù)處理系統(tǒng)和其他通信需求。
在此對(duì)由本發(fā)明的各個(gè)實(shí)施例滿足的期望目標(biāo)列表的引用并非旨在暗示或建議任何或所有這些目標(biāo)都單獨(dú)地或共同地作為基本特征在本發(fā)明的最通用的實(shí)施例或任何更具體的實(shí)施例中存在。
本發(fā)明一般地涉及用于在單芯片上提供安全密碼功能的系統(tǒng)和方法。在此還將本發(fā)明描述為提供安全的片上密碼(COACH)。從廣泛的角度,本發(fā)明提供了用于在外部世界和密碼系統(tǒng)內(nèi)部之間建立安全通信的安全方法,所述密碼系統(tǒng)能夠訪問(wèn)和使用多個(gè)密碼引擎以及用于控制和使用這些引擎的自適應(yīng)算法。更具體地說(shuō),本發(fā)明使用包括現(xiàn)場(chǎng)可編程門陣列(FPGA)的單芯片來(lái)在安全方式和環(huán)境下提供這種增強(qiáng)和靈活的密碼功能。在本發(fā)明的另一個(gè)方面中,提供了到可控制地分成安全和非安全部分的外部存儲(chǔ)器的通信。在本發(fā)明的其他方面中,通過(guò)使用多個(gè)COACH系統(tǒng)提供了額外的能力和靈活性,由于向每個(gè)芯片內(nèi)部深層功能級(jí)別提供通信的安全方式,所述系統(tǒng)現(xiàn)在可以以安全的方式在自身之間以及單獨(dú)地交互,從而提供了交叉檢查和雙重檢查單個(gè)COACH系統(tǒng)的功能的方法。在另一級(jí)別,本發(fā)明還提供了用于對(duì)FPGA編程的安全機(jī)制。
還可以從完全不同的角度看待本發(fā)明。具體地說(shuō),本芯片可以視為對(duì)其功能的訪問(wèn)被安全地控制的處理器或處理器組。還要指出的是,在此方面,一個(gè)或多個(gè)所包括的處理器可以是數(shù)字信號(hào)處理器。這種布置對(duì)安全控制包括語(yǔ)音、聲音和視頻的數(shù)字介質(zhì)是有用的。還可以包括其他類型的處理元件。在這點(diǎn)上,芯片上的基本組件是處理器,并且存在部署在其中的密碼引擎,以便提供對(duì)處理元件的安全和/或授權(quán)的控制。在另一方面,如從上面提供的第一方面來(lái)看,中央元件包括可以以各種廣泛的方式控制的密碼引擎,其目標(biāo)是提供密碼功能,例如編碼、解碼和模算術(shù)的基本運(yùn)算,特別是模取冪。
還可以從第三方面看待本發(fā)明。在這點(diǎn)上,主要組件為FPGA部分。在此方面,本發(fā)明提供了一種從芯片外部對(duì)該組件進(jìn)行編程的機(jī)制。具體地說(shuō),現(xiàn)在能夠以安全的方式執(zhí)行FPGA編程。由安全密碼功能來(lái)保護(hù)授權(quán)修改任何FPGA組件?,F(xiàn)有的FPGA數(shù)據(jù)既不能被識(shí)別也不能被修改,除非根據(jù)存儲(chǔ)在易失性存儲(chǔ)器內(nèi)的器件中的編碼信息被特別授權(quán),該信息會(huì)在識(shí)別到篡改時(shí)被擦除。
圖1是示出旨在在安全邊界內(nèi)提供多個(gè)密碼(及相關(guān))功能的單個(gè)電路芯片的架構(gòu),并且具體地說(shuō),示出使用組合的ASIC和FPGA電路來(lái)控制芯片內(nèi)的信息流的方塊圖;圖2是更具體地示出圖1的與永久存儲(chǔ)某種指定密鑰的可熔元件的存在相關(guān)的部分的方塊圖;圖3是示出使用由兩個(gè)不同實(shí)體(例如,芯片制造商和芯片銷售商)管理的公鑰和私鑰的過(guò)程流程圖,芯片銷售商一般是負(fù)責(zé)對(duì)芯片F(xiàn)PGA組件進(jìn)行編程的實(shí)體;圖4是示出在密碼(或其他)芯片生產(chǎn)和營(yíng)銷中所涉及的兩個(gè)實(shí)體的交互的方塊圖;圖5是示出了銷售商用于為了在內(nèi)部易失性芯片存儲(chǔ)器內(nèi)提供用于驗(yàn)證和認(rèn)證目的的銷售商硬件證書(shū)以便建立FPGA運(yùn)算的過(guò)程的過(guò)程流程圖;圖6是示出了銷售商用于為了在內(nèi)部易失性芯片存儲(chǔ)器內(nèi)提供用于驗(yàn)證和認(rèn)證目的的銷售商軟件證書(shū)以便在芯片的安全邊界內(nèi)建立軟件運(yùn)算的過(guò)程的過(guò)程流程圖;圖7是示出了銷售商設(shè)置用于配置芯片的FPGA部分的FPGA結(jié)構(gòu)數(shù)據(jù)的初步過(guò)程的過(guò)程流程圖;圖8是示出了由芯片銷售商執(zhí)行以配置芯片的FPGA部分的步驟的過(guò)程流程圖;圖9是示出了將由芯片銷售商執(zhí)行的設(shè)置要在內(nèi)部芯片存儲(chǔ)器的典型非易失性部分中使用的軟件的步驟的過(guò)程流程圖;圖10是示出了將由芯片銷售商執(zhí)行以加載由圖9所示的過(guò)程準(zhǔn)備的軟件的步驟的過(guò)程流程圖;
圖11是示出了用于為通過(guò)安全外部接口接收的數(shù)據(jù)和命令提供流控制的組合的ASIC和FPGA功能組件的一個(gè)方面的方塊圖;以及圖12是示出了結(jié)合單個(gè)外部存儲(chǔ)器單元使用的本發(fā)明的系統(tǒng)的方塊圖,由于完全包含的安全機(jī)制,該單元可以從同一物理存儲(chǔ)器被安全地分成加密和未加密部分。
具體實(shí)施例方式
通過(guò)使用三種不同的技術(shù)使本發(fā)明成為可能,這三種技術(shù)一起提供了一種用于構(gòu)建非常安全靈活而又不受攻擊影響的單芯片器件的機(jī)制。具體地說(shuō),在芯片上使用電壓島使得可以為內(nèi)部易失性低功率耗散存儲(chǔ)裝置使用雙電源。雙電源包括穩(wěn)壓電源和備用電池。此外,使用現(xiàn)場(chǎng)可編程門陣列(FPGA)使得可以以安全的方式從外部編程單芯片上的安全系統(tǒng),而不會(huì)對(duì)提供的安全級(jí)別帶來(lái)任何降級(jí)。因此,本發(fā)明能夠結(jié)合新開(kāi)發(fā)的算法,以及能夠以新的方式結(jié)合舊的(或新的)算法來(lái)實(shí)現(xiàn)甚至更高的安全級(jí)別。最后,就在本發(fā)明的設(shè)計(jì)中采用的技術(shù)而言,電路封裝密度的增加也是一個(gè)顯著的因素。
圖1中示出了本發(fā)明的整體架構(gòu)。在此最全面描述的發(fā)明涉及一種用于執(zhí)行密碼功能的安全單芯片。但是,如上所述,在此提出的機(jī)制和過(guò)程還可更廣泛地應(yīng)用于任何希望以這樣的方式使用FPGA電路的情況其中僅可由擁有適當(dāng)密鑰的受信實(shí)體以安全的方式對(duì)所述電路編程。此外,如圖1所示,芯片100包括嵌入式(微)處理器115。這允許一般地構(gòu)建微處理器芯片,其中該處理器由FPGA以安全的方式來(lái)控制,所述FPGA本身可以以完全安全的方式來(lái)編程(這參考圍繞圖4到11的討論在以下更具體地說(shuō)明)。這意味著可以以安全的方式控制任何嵌入式處理器。例如,可以控制所述處理器以便將特定指令的執(zhí)行限于可以提供可認(rèn)證密鑰的受信用戶。
在本發(fā)明的優(yōu)選實(shí)施例中,還在安全邊界101內(nèi)提供了安全性,所述邊界可知悉、防范和響應(yīng)篡改并滿足上述的級(jí)別4FIPS標(biāo)準(zhǔn)。在此方面要指出的是,防篡改外殼不要求存在網(wǎng)孔;可以在沒(méi)有網(wǎng)孔的情況下構(gòu)建防篡改外殼。如FIPS140-2標(biāo)準(zhǔn)所定義。更多詳細(xì)信息在下文中提供。
本發(fā)明的更具體的單芯片安全密碼處理器包括數(shù)個(gè)主要部分外部接口110、處理器115、密碼引擎(或多個(gè)引擎)195、隨機(jī)數(shù)發(fā)生器(125和126)、外部存儲(chǔ)器接口105和在加電的電壓島145中布置的存儲(chǔ)器組件。圖2中示出了電壓島145上的電路的更詳細(xì)的視圖。芯片的其他部分單獨(dú)加電并存在于其自身的電壓島上。但是,在穩(wěn)壓電源和電池電源之間的切換通過(guò)使用調(diào)壓器在芯片本身中執(zhí)行,其中默認(rèn)電源為穩(wěn)壓電源,而備選的備用電源為電池。將該功能從芯片移除不會(huì)節(jié)省管腳。僅有的節(jié)省將是消耗更少的芯片電路面積,但是該優(yōu)點(diǎn)對(duì)于解決外部器件的延遲問(wèn)題沒(méi)有幫助。在單個(gè)芯片上提供所有這些組件。此外,提供了流控制開(kāi)關(guān)150,流控制開(kāi)關(guān)150以請(qǐng)求塊的形式通過(guò)接口110接收外部請(qǐng)求。雖然將組件150描述為開(kāi)關(guān),但它還包括請(qǐng)求塊處理器,該處理器接收請(qǐng)求決并對(duì)其做出響應(yīng)來(lái)引導(dǎo)和控制各個(gè)其他芯片組件之間的信息流。對(duì)本發(fā)明最重要的是,開(kāi)關(guān)150優(yōu)選地包括兩個(gè)不同的組件ASIC部分(專用集成電路)150A和FPGA部分150B(參見(jiàn)圖11)。ASIC部分150A也可表征為“硬連線”電路。ASIC部分150A用于初始化系統(tǒng)、初始地處理請(qǐng)求塊、與FPGA部分連接,并確保只有安全的FPGA信息才用于配置開(kāi)關(guān)150的FPGA部分150B??砂踩嘏渲玫腇PGA部分150B的存在使得芯片具有高度安全且高度靈活的特性,不管芯片是用于提供對(duì)密碼引擎的訪問(wèn)還是用于其他與安全處理器控制有關(guān)的目的。還要注意的是,F(xiàn)PGA部分150B使芯片銷售商提供完全定制的處理器單元成為可能(參見(jiàn)下文中對(duì)芯片銷售商和芯片制造商之間區(qū)別以及其相對(duì)角色的描述,特別參見(jiàn)圖4)。特別參考圖11,要注意的是,從流控制電路150到芯片上的其他組件的連接不限于僅到ASIC側(cè)150A的連接。例如,圖11不應(yīng)被解釋為表示FPGA部分150A和密碼引擎195之間沒(méi)有連接。但是,要注意的是,即使芯片旨在用于處理器控制并且并非旨在限于密碼運(yùn)算,仍需要某種形式的內(nèi)部密碼引擎來(lái)提供使處理安全的加密和解密。
本發(fā)明的片上系統(tǒng)(SOC或COACH)以以下方式使用電壓島。施加電壓的線具有兩個(gè)電源以便在內(nèi)部易失性SRAM存儲(chǔ)器132內(nèi)保存數(shù)據(jù)。當(dāng)其上部署COACH系統(tǒng)的印刷電路板正常加電時(shí),該正常電源用于維護(hù)SRAM(靜態(tài)隨機(jī)存取存儲(chǔ)器)132。當(dāng)關(guān)閉印刷電路板的電源時(shí),電池單元175用于維護(hù)SRAM存儲(chǔ)器132中的數(shù)據(jù)。當(dāng)既不是穩(wěn)壓電源170也不是備用電池175向電源控制器140供電時(shí),沒(méi)有電源被提供給SRAM132并且其內(nèi)容消失。這很重要,因?yàn)樵赟RAM132中包含有用于提供安全性的信息。它的易失性特性確保了切斷芯片電源將總是導(dǎo)致存儲(chǔ)在SRAM132中的信息清零以便所述信息完全不可訪問(wèn)。在優(yōu)選實(shí)施例中,使用了電池后備的SRAM132,如圖1所示。雖然SRAM132主要用來(lái)存儲(chǔ)關(guān)鍵參數(shù),但是將eDRAM130用作處理器115的基本RAM。雖然將SRAM132布置在電壓島145內(nèi),但是eDRAM不需要如此。實(shí)時(shí)時(shí)鐘133也布置在電壓島145內(nèi)。實(shí)時(shí)時(shí)鐘133在任何情況下都不是必不可少的元件,但是對(duì)于在時(shí)間限制的基礎(chǔ)上啟用芯片功能的那些情況是有用的。對(duì)于操作系統(tǒng)來(lái)說(shuō)也希望存在實(shí)時(shí)時(shí)鐘133。在安全性是首要芯片功能的操作中更為必要,在這種情況下所述時(shí)鐘被安全地初始化。否則,從其中結(jié)合芯片的系統(tǒng)的時(shí)鐘來(lái)加載實(shí)時(shí)時(shí)鐘133。此外,雖然eDRAM130也不一定是易失性的,但是它可以是易失性的。但是,通過(guò)流控制電路150授權(quán)或拒絕對(duì)其的訪問(wèn)。可以預(yù)見(jiàn)的是,在正常操作中,eDRAM130保存操作系統(tǒng)以便操作處理器115。但是,這不是對(duì)本發(fā)明的更廣泛方面的要求。
處理器115優(yōu)選地包括具有例如由本發(fā)明的受讓人制造并銷售的IBMPowerPC提供的“軌跡”的處理器。處理器115是嵌入式處理器,它可以包括也可以不包括內(nèi)部錯(cuò)誤檢測(cè)機(jī)制,該機(jī)制通常由內(nèi)部或外部信號(hào)線集上的校驗(yàn)位提供。確實(shí)提供某種形式的內(nèi)部錯(cuò)誤檢測(cè)的處理器是優(yōu)選的,因?yàn)樗鼈儍A向于更加可靠。但是,即使本發(fā)明的處理器出現(xiàn)故障或變得有缺陷,也不會(huì)危害安全措施。相應(yīng)地,由于加密的安全措施的存在,所以如果需要,可以使用不太復(fù)雜且不太昂貴的嵌入式處理器115。
本發(fā)明還優(yōu)選地包括對(duì)單芯片系統(tǒng)內(nèi)部來(lái)說(shuō)是本地的入侵檢測(cè)邏輯。這是特別有利的,因?yàn)椴恍枰魏瓮獠磕M電路。由于將關(guān)鍵組件集成在安全邊界內(nèi),本發(fā)明的單芯片處理器包括更難攻擊的組件,特別是以組件選擇的方式。所有訪問(wèn)都是通過(guò)已定義和限制的接口第一接口110,其(通過(guò)請(qǐng)求塊)接受命令和數(shù)據(jù);以及第二接口105,其以受控的方式與外部存儲(chǔ)器200交換數(shù)據(jù),外部存儲(chǔ)器200包括加密部分210和未加密部分220(參見(jiàn)圖12、13和14)。訪問(wèn)的特定外部存儲(chǔ)器部分完全由從單芯片密碼處理器元件100的安全邊界101內(nèi)生成的地址信息來(lái)確定。對(duì)外部存儲(chǔ)器200的訪問(wèn)是通過(guò)此由流控制開(kāi)關(guān)150控制的接口。在本發(fā)明的優(yōu)選實(shí)施例中,通過(guò)開(kāi)關(guān)150的FPGA部分150B提供對(duì)外部存儲(chǔ)器訪問(wèn)的控制。
接口110是將數(shù)據(jù)傳送到芯片100中的主要端口。可以使用任何明確定義的接口。但是,優(yōu)選的接口是在個(gè)人計(jì)算機(jī)中廣泛使用的擴(kuò)展PCI接口。通常,會(huì)加密進(jìn)入該端口的信息。它是請(qǐng)求塊進(jìn)入芯片的主要端口。通常,進(jìn)入的請(qǐng)求塊的每一個(gè)部分(除了命令本身)都包括加密信息。加密信息的一部分包含密鑰,并可能包含證書(shū)或其他授權(quán)標(biāo)記。
芯片100還包括一個(gè)或多個(gè)密碼引擎195,所述引擎使用通過(guò)流控制開(kāi)關(guān)150提供給其的密鑰來(lái)執(zhí)行加密和解密運(yùn)算。密碼引擎(多個(gè))195本質(zhì)上是由流控制開(kāi)關(guān)150和嵌入式處理器115使用的協(xié)處理器,不僅在正常操作期間提供密碼服務(wù),而且同樣重要的是,引擎(多個(gè))195提供了用于構(gòu)建流控制開(kāi)關(guān)150的FPGA部分150B的安全機(jī)制。這些引擎還確保當(dāng)需要時(shí),在SRAM132中存在適當(dāng)?shù)拿荑€和證書(shū)。
這些引擎提供了在密碼技術(shù)中使用的多種算法的特定硬件實(shí)施方式。相應(yīng)地,本發(fā)明的密碼芯片能夠選擇對(duì)用于編碼信息的算法最高效的硬件電路。在2000年12月19日提交的美國(guó)專利申請(qǐng)No.09/740485中說(shuō)明了一種特別優(yōu)選的密碼引擎。該引擎提供了通過(guò)識(shí)別使在將模乘以大素?cái)?shù)中涉及的特定運(yùn)算流水線化的可能性來(lái)產(chǎn)生的效率。如上所示,本發(fā)明還可以使用多個(gè)密碼引擎,所有這些引擎可以相同或不同。在這點(diǎn)上,要指出的是,請(qǐng)求塊(參見(jiàn)下文中有關(guān)圖11的說(shuō)明)包括標(biāo)識(shí)要使用的密碼引擎或密碼引擎組的字段。但是,本發(fā)明不限于使用任何特定的用于加密和解密的引擎。此外,雖然這些引擎通?;趫?zhí)行模取冪運(yùn)算的算法,但是本發(fā)明包括使用任何引擎,所述引擎實(shí)現(xiàn)任何充分期望的安全密碼算法或方法。具體地說(shuō),本發(fā)明不限于使用基于公鑰/私鑰范例的密碼引擎。但是,使用該范例中的一些片內(nèi)功能可用來(lái)為可編程的邏輯器件、配置數(shù)據(jù)和軟件提供安全性。此外,還指出了本發(fā)明的特別有利的方面之一在于,由于FPGA部分150B提供的靈活性以及可由嵌入式處理器115訪問(wèn)的存儲(chǔ)器部分中存在的編碼,可以根據(jù)多個(gè)順序混合的用于加密和解密的算法來(lái)提供密碼服務(wù)。簡(jiǎn)言之,本發(fā)明允許構(gòu)建數(shù)量無(wú)限的密碼方案,所有這些方案都在單芯片實(shí)施方式的情況下建立并使用。唯一的限制在于執(zhí)行加密和解密運(yùn)算的處理時(shí)間的增加。但是,該時(shí)間使用僅呈線性增長(zhǎng)。
還向芯片100提供了對(duì)外部存儲(chǔ)器200的訪問(wèn)。該存儲(chǔ)器優(yōu)選地為RAM器件,但并不限于此??梢允褂萌魏慰蓪ぶ返拇鎯?chǔ)器器件。通過(guò)外部存儲(chǔ)器接口105提供對(duì)外部存儲(chǔ)器200的訪問(wèn)。該接口的主要功能是實(shí)施建立在本芯片/系統(tǒng)內(nèi)的可尋址性限制,在其下外部存儲(chǔ)器包括兩個(gè)部分(1)旨在權(quán)保存未加密信息(但是可以保存加密信息)的明文部分和(2)僅包含加密信息的加密部分。通過(guò)可尋址性檢查來(lái)控制將外部存儲(chǔ)器200分為這兩個(gè)部分,所述可尋址性檢查由嵌入式處理器115和流控制開(kāi)關(guān)150的ASIC部分150A或FPGA部分150B或它們的某種組合在芯片100內(nèi)部執(zhí)行。此外,F(xiàn)PGA150的靈活特性允許由芯片銷售商(可以與芯片制造商相同或不同)來(lái)設(shè)置外部存儲(chǔ)器200的兩個(gè)部分之間的可尋址性分區(qū)邊界。
芯片100還包括用于生成隨機(jī)數(shù)的內(nèi)部機(jī)構(gòu)。為了完整,優(yōu)選地使用兩種機(jī)構(gòu)真隨機(jī)數(shù)發(fā)生器(TRNG)125和偽隨機(jī)數(shù)發(fā)生器(PRNG)126。這些發(fā)生器通常用于提供種子值以便生成在密碼處理中使用的隨機(jī)數(shù)。PRNG126通常實(shí)現(xiàn)為線性反饋移位寄存器,它有效地實(shí)現(xiàn)了所謂的沒(méi)有因數(shù)的本原二進(jìn)制多項(xiàng)式的乘法。這在本領(lǐng)域中是公知的。參見(jiàn)例如授予Paul H.Bardell并受讓給與本發(fā)明相同的受讓人的美國(guó)專利No.4,959,832。TRNG優(yōu)選地通過(guò)利用片上量子現(xiàn)象來(lái)實(shí)現(xiàn)。通常通過(guò)對(duì)用戶環(huán)境外部的熵源進(jìn)行采樣和處理來(lái)生成真隨機(jī)數(shù)。在高安全性環(huán)境的情況下,在安全邊界內(nèi)部生成隨機(jī)數(shù)。通常的方法是通過(guò)放大由電阻器生成的熱噪聲(約翰遜噪聲)或使用半導(dǎo)體二極管并將一個(gè)或多個(gè)位饋入比較器或施密特觸發(fā)器,隨后對(duì)位流進(jìn)行傾斜校正以確保大致均勻地分布1和0。
接著考慮電壓島145中存在的電路。提供給電壓島145內(nèi)的任何和所有組件的電源來(lái)自電源控制器140。電源控制器140向SRAM132提供電源。如果預(yù)期在使用或運(yùn)輸中,芯片100將由可靠的電源(市電電源或相對(duì)大型的電池)供電,則也可以在電壓島145中包括eDRAM130。但是,由于eDRAM130通常比SRAM132消耗更多的電力,所以優(yōu)選地eDRAM130位于電壓島145外部,以便它可由普通的芯片總線電源線供電。但是,當(dāng)備用電池變成關(guān)鍵的電源時(shí),eDRAM130不應(yīng)出現(xiàn)在電壓島145中,其中將通過(guò)電源控制器140對(duì)其供電。甚至電源控制器140也可以布置在電壓島145之外。由于本發(fā)明的優(yōu)選實(shí)施例采用硬連線(或等同物)熔斷器,所以優(yōu)選地包含密鑰135A、135B和135C(參見(jiàn)圖2)的熔斷器135也布置于電壓島145外部。但是,由于硬連線的熔斷器結(jié)構(gòu)不消耗任何顯著級(jí)別的功率,所以在需要或方便時(shí),也可以將它們布置在電壓島145內(nèi)部。雖然如此,圖1示出了它們布置于其優(yōu)選位置。注意,可以以數(shù)種方式提供本文提到的所謂的硬連線熔斷器。例如,可以使用受控的激光來(lái)除去導(dǎo)電材料以產(chǎn)生指示密鑰中的0位或1位表項(xiàng)的電路結(jié)構(gòu)。還可以通過(guò)在施加的電源高于預(yù)定級(jí)別時(shí)易于產(chǎn)生開(kāi)路狀況的電路組件來(lái)提供熔斷器(在此上下文中的“熔斷器”一詞的通常含義和起源)。也可以采用其他永久性存儲(chǔ)器結(jié)構(gòu),但是由于它們的成本和/或大小限制而不是優(yōu)選的。電源控制器140從兩個(gè)并僅從兩個(gè)外部源接收電力穩(wěn)壓電源170和電池單元175。電源控制器140的主要功能是確保假如穩(wěn)壓電源170出現(xiàn)故障的話,將仍從電池單元175維持電力,并且還確保如果電池單元175和穩(wěn)壓電源170都出現(xiàn)故障,則不向易失性的SRAM132供電。是該存儲(chǔ)器單元的易失性與電源控制器140的操作一起確保了對(duì)芯片篡改的某些嘗試不會(huì)導(dǎo)致危害防篡改芯片邊界101內(nèi)的加密信息的完整性。
COACH器件100中包含的電路也包括熔斷器135。在圖2中更詳細(xì)地示出了這些熔斷器。熔斷器135在提供期望的安全級(jí)別和設(shè)計(jì)的功能,以及使用和操作本發(fā)明的系統(tǒng)方面非常重要。具體地說(shuō),熔斷器135優(yōu)選地包括在芯片制造期間提供的物理更改區(qū)域的陣列。雖然在此描述為“熔斷器”,這主要源于如何為了其他目的在其他芯片上產(chǎn)生這些區(qū)域中的某些區(qū)域的歷史原因,但是此處使用的熔斷器代表位位置的陣列,所述位位置在制造期間永久地寫入芯片以存儲(chǔ)特定的密鑰信息。通常使用激光束將這些密鑰寫入芯片,以便為三種主要的密鑰值寫入期望的位圖形芯片私鑰135A、芯片公鑰135B和銷售商公鑰135C。參見(jiàn)圖2。這些密鑰值位于受保護(hù)的防篡改邊界101內(nèi),并且還優(yōu)選地位于電壓島145內(nèi);但是,注意,密鑰135A、135B和135C位于電壓島145內(nèi)并不是必須的。事實(shí)上,可以通過(guò)EPROM或者EEPROM技術(shù)來(lái)實(shí)現(xiàn)熔斷器。
存儲(chǔ)在僅可從內(nèi)部訪問(wèn)的熔斷器中的密鑰的使用類似于在銀行中使用按鍵系統(tǒng)打開(kāi)保險(xiǎn)箱(除了此處沒(méi)有機(jī)會(huì)出現(xiàn)這樣的事件如由銀行鉆鎖或使用銀行萬(wàn)能鑰匙)。在典型的保險(xiǎn)箱情況下,需要兩把鑰匙來(lái)打開(kāi)儲(chǔ)戶的保險(xiǎn)箱儲(chǔ)戶/客戶帶到銀行一把鑰匙和銀行職員帶來(lái)的另一把銀行鑰匙。需要插入兩把鑰匙才能打開(kāi)保險(xiǎn)箱。銷售商公鑰和私鑰類似于客戶的保險(xiǎn)箱鑰匙;芯片公鑰和私鑰類似于銀行的保險(xiǎn)箱鑰匙。在如圖3所示的過(guò)程中,這些密鑰一起工作。首先使用銷售商的私鑰502加密(步驟501)消息(任何消息,其實(shí)際上是作者知道含義的任何連續(xù)的位,并且包括可執(zhí)行二進(jìn)制程序)。注意,這是使用的三個(gè)密鑰中唯一沒(méi)有作為信息位可用的熔斷區(qū)域提供給芯片100中的電路的密鑰。(此處,在密碼意義(而非任何應(yīng)歸于保險(xiǎn)箱類似物的意義)上使用術(shù)語(yǔ)“公鑰”和“私鑰”。)再次使用芯片公鑰504對(duì)來(lái)自步驟501的加密消息進(jìn)行加密(步驟503)。因此,該雙重加密的消息被安全地移交以便通過(guò)任何方便的路徑505來(lái)傳輸。這可以包括通過(guò)互聯(lián)網(wǎng)、通過(guò)內(nèi)聯(lián)網(wǎng)或其他形式的專用網(wǎng)絡(luò)或物理地將軟盤或任何其他機(jī)器可讀介質(zhì)攜帶或郵寄到期望目的地來(lái)傳輸。但是,最終地,該雙重加密消息的目的地是芯片100本身。該加密方法對(duì)理解本發(fā)明的結(jié)構(gòu)和操作非常重要,并且對(duì)理解其安全方面如何工作非常重要。
重要的是注意到,通過(guò)熔斷器135A的存在和使用,在芯片100的安全邊界內(nèi)提供芯片私鑰507;同樣,通過(guò)熔斷器135C的存在和使用,在芯片100的安全邊界內(nèi)提供銷售商公鑰509。因此,完全在防篡改邊界100內(nèi),存在用于恢復(fù)作為輸入提供給加密步驟501的原始消息的機(jī)制。首先使用芯片私鑰507解密(步驟506)來(lái)自任何期望傳輸路徑505的雙重加密消息。但是,來(lái)自該步驟的作為輸出提供的信息還不是有用的形式。再次使用銷售商公鑰509對(duì)其解密(步驟508)。因?yàn)殇N售商公鑰509和芯片私鑰507都對(duì)片內(nèi)電路可用,所以完全加密的信息可以通過(guò)I/O接口110傳送而無(wú)需擔(dān)心其安全性。因此,可以以完全安全的方式提供信息到芯片的傳送。
在其中提供了流控制電路150的完整ASIC(即,硬連線)實(shí)施方式,或其中已存在編程的FPGA的那些情況下,上述過(guò)程是完整的。因此,現(xiàn)在將注意力集中在后者的情況,即,如何確保正確和安全的FPGA編程。為了更完整地理解該過(guò)程,如圖11中更具體地說(shuō)明的,首先重要的是理解芯片銷售商和芯片制造商的角色并理解為以下目的采取的處理(1)確保安全的FPGA編程和(2)確保將諸如操作系統(tǒng)(或操作系統(tǒng)內(nèi)核)之類的軟件安全地加載到eDRAM130中。通常,在本發(fā)明的最廣闊的范圍中,在此將芯片制造商和芯片銷售商的角色看作是不同的。但是,應(yīng)全面理解的是,本發(fā)明還構(gòu)想了其中芯片100的制造商也是芯片的銷售商的情況。
著手于完全編程的芯片(具有內(nèi)部安全FPGA組件,其“準(zhǔn)備發(fā)揮作用”)的過(guò)程是一個(gè)多步驟過(guò)程,并可方便地分為兩個(gè)不同的部分。生成“準(zhǔn)備運(yùn)行”的芯片的過(guò)程的第一部分涉及對(duì)FPGA組件編程。該過(guò)程的第二部分涉及在eDRAM130中加載安全編程。此外,這些過(guò)程中的每個(gè)過(guò)程本身是一個(gè)涉及認(rèn)證子過(guò)程的多步驟過(guò)程。圖4中示出了該過(guò)程的概述。圖5-10示出了在圖4中所示的子過(guò)程中涉及的細(xì)節(jié)。
除了發(fā)布銷售商的公鑰509,該過(guò)程通常始于芯片銷售商請(qǐng)求要制造的一個(gè)或多個(gè)芯片。在通常情況下,制造來(lái)自發(fā)出請(qǐng)求的銷售商的所有芯片且編碼熔斷器135C以表示銷售商的公鑰。熔斷器本身可以通過(guò)數(shù)個(gè)不同的方式實(shí)現(xiàn)。在芯片制造過(guò)程中可以對(duì)它們進(jìn)行硬連線。它們可以在芯片制造后使用激光燒入或通過(guò)使用足夠高的電流脈沖,類似于普通家用保險(xiǎn)絲“熔斷”的方式。此外,它們也可以由ROM、EEPROM或EPROM技術(shù)來(lái)提供。EPROM熔斷器具有其內(nèi)容在使用完后可以被擦除的額外特性。但是,銷售商不限于使用單個(gè)公鑰。該密鑰在制造期間被添加到芯片,其方式使得它可由片內(nèi)電路的其余部分“讀取”,比如說(shuō)由激光蝕刻電路組件。芯片制造商然后添加其自己的兩組密鑰表現(xiàn)為熔斷器135A和135B的芯片私鑰507和芯片公鑰504。銷售商私鑰502對(duì)銷售商來(lái)說(shuō)仍是秘密的。在一完成芯片后,芯片制造商就破壞關(guān)于哪個(gè)芯片私鑰在哪個(gè)芯片上的信息。參見(jiàn)圖4。
所需密鑰寫入其中并位于防篡改屏障101內(nèi)的芯片然后被裝運(yùn)到希望裝運(yùn)出廠芯片的個(gè)人。這些出廠芯片優(yōu)選地在安裝到期望的板上后裝運(yùn)并與電池單元175連接就位以保持SRAM編程,直至卡和芯片都永久地布置在目標(biāo)系統(tǒng)(例如,通過(guò)其提供了穩(wěn)壓電源170的數(shù)據(jù)處理器、服務(wù)器或網(wǎng)絡(luò)環(huán)境)中。
在將任何實(shí)質(zhì)性的信息傳送到芯片100內(nèi)部之前,會(huì)執(zhí)行兩個(gè)過(guò)程來(lái)確保以下兩者在SRAM132中的存在(1)用于加載FPGA配置數(shù)據(jù)的銷售商的證書(shū)和(2)用于加載其他安全編程數(shù)據(jù)的單獨(dú)證書(shū)。因此會(huì)加載兩個(gè)證書(shū)用于后續(xù)加載FPGA配置數(shù)據(jù)的銷售商的硬件證書(shū),以及用于后續(xù)加載諸如操作系統(tǒng)之類的軟件的銷售商的軟件證書(shū)。明顯地,F(xiàn)PGA配置必須在加載其他信息之前發(fā)生。在這點(diǎn)上,重要的是指出,到現(xiàn)在為止,僅生成了稍后在客戶站加載的數(shù)據(jù)。因此,此時(shí)不需要用于保留數(shù)據(jù)的電池。
一旦加載了證書(shū)(參見(jiàn)圖5和6),就首先準(zhǔn)備要加載的信息(參見(jiàn)圖7和9)。最后,會(huì)加載所需的FPGA數(shù)據(jù)(圖8),然后加載軟件編程(圖10)。隨著電池就位,芯片可以裝運(yùn)到最終客戶(終端用戶)以用作一種靈活而安全的多引擎密碼處理器,或用作處理器領(lǐng)域內(nèi)的其他裝置。現(xiàn)在將說(shuō)明這些步驟的細(xì)節(jié)。
在這點(diǎn)上,再次將注意力集中到圖4。一旦將芯片100提供給芯片銷售商,則第一步(圖4中的標(biāo)號(hào)520)是添加銷售商的硬件證書(shū)(一組用于驗(yàn)證銷售商對(duì)FPGA150B做出更改的授權(quán)的位)。如果已準(zhǔn)備了FPGA配置數(shù)據(jù)并且其可用,則現(xiàn)在可以加載FPGA配置數(shù)據(jù)。但是,通常銷售商現(xiàn)在還將銷售商的軟件證書(shū)(一組用于驗(yàn)證銷售商對(duì)內(nèi)部以及因此受保護(hù)的存儲(chǔ)器單元130和132做出更改的授權(quán)的位)加載到SRAM132中(步驟540)。一旦加載了這兩個(gè)證書(shū)并準(zhǔn)備好要輸入的信息,就首先加載FPGA配置數(shù)據(jù)(步驟560),接著加載在eDRAM130和SRAM132中使用的軟件。在所有這些過(guò)程中,重要的是牢記明文(即,未加密)數(shù)據(jù)從不跨越安全芯片邊界。也就是說(shuō),F(xiàn)PGA配置數(shù)據(jù)被特別地編碼,任何要加載的軟件也是如此?,F(xiàn)在說(shuō)明這些過(guò)程的細(xì)節(jié)。
具體地說(shuō),注意圖5。芯片銷售商使用證書(shū)處理來(lái)確保僅對(duì)安全芯片邊界101內(nèi)存在的信息做出了授權(quán)更改。在步驟524中使用銷售商的私鑰525對(duì)該證書(shū)進(jìn)行加密。但是,在該加密步驟之前,銷售商可以使用其他可選的持續(xù)時(shí)間激活步驟來(lái)支持可添加到系統(tǒng)的按需功能,其中在默認(rèn)激活“無(wú)路徑”模式時(shí)將安全地存儲(chǔ)功能激活代碼。在無(wú)路徑模式下,如果芯片在系統(tǒng)上,則默認(rèn)沒(méi)有被激活以供用戶使用的功能或路徑;相反,僅為了系統(tǒng)使用或功能代碼激活而激活功能。這可以通過(guò)將選中的證書(shū)521傳遞經(jīng)過(guò)銷售商的散列函數(shù)522a來(lái)應(yīng)用到資源資產(chǎn)管理步驟。(參見(jiàn)下面段落中對(duì)散列函數(shù)的一般描述的討論。)然后在步驟523中將原始銷售商的硬件證書(shū)521與散列版本的證書(shū)521相組合。在步驟523發(fā)生的組合優(yōu)選地是串聯(lián)兩個(gè)輸出位組(原始證書(shū)加上其散列版本)。來(lái)自步驟523的輸出然后在步驟524中使用銷售商的私鑰525進(jìn)行加密。該加密的輸出則取決于銷售商的散列函數(shù)522b并在步驟526與非散列的版本組合,其優(yōu)選地也是“通過(guò)串聯(lián)組合”操作。通常,該散列函數(shù)是在步驟522a中使用的同一散列函數(shù),除了它應(yīng)用到不同的輸入位流。來(lái)自步驟526的輸出在步驟527中使用芯片公鑰528來(lái)加密。將來(lái)自該步驟的輸出提供給SRAM132。特別要指出的是,盡管將來(lái)自步驟527的輸出通過(guò)接口110優(yōu)選地提供給SRAM132。但是,在完成該操作之前,可以理解,首先通過(guò)調(diào)用特定目的和受限的“加載FPGA”命令來(lái)對(duì)FPGA160編程(參見(jiàn)圖11)。此外,注意,基于外部存儲(chǔ)器路徑105的啟用,還可以對(duì)FPGA編程來(lái)通過(guò)接口110接受類似的請(qǐng)求塊。圖5中所示過(guò)程的目的是在SRAM132中放置授權(quán)的加密標(biāo)記,以便隨后允許將FPGA配置數(shù)據(jù)加載到FPGA150B中。
包括無(wú)路徑模式在芯片功能方面提供了顯著的優(yōu)點(diǎn)。該特殊模式(優(yōu)選地在COACH流控制開(kāi)關(guān)150的狀態(tài)機(jī)邏輯中實(shí)現(xiàn))提供了一種機(jī)制,在該機(jī)制下,到芯片的可接受輸入僅包括能夠使芯片“開(kāi)啟”或激活的信息。更具體地說(shuō),此模式的使用允許啟用芯片以執(zhí)行特定功能和任務(wù)以排除其他功能和任務(wù)。例如,無(wú)路徑模式允許使用授權(quán)代碼,該代碼允許芯片運(yùn)行一段受限的時(shí)間和/或指定的持續(xù)時(shí)間。該模式還允許芯片執(zhí)行特定操作并禁止或拒絕訪問(wèn)其他操作。例如,如果出于使用1,024位密鑰加密的目的購(gòu)買芯片,則將阻止芯片使用2,048位密鑰或4,096位密鑰或任何其他密鑰大小來(lái)執(zhí)行加密操作。但是,如果支付額外的費(fèi)用,可以使芯片完全能夠執(zhí)行這些操作。此外,雖然本發(fā)明的芯片最初被看作安全密碼處理器,但是,還可以將同一芯片看作通用處理器或處理器組,其在時(shí)間和能力方面的功能以授權(quán)和受限的方式來(lái)控制,在這種方式下,芯片中存在的密碼引擎用于提供必要的授權(quán)級(jí)別。因此,本發(fā)明的芯片變成“按需”器件。此外,對(duì)芯片器件用途的控制仍在芯片制造商的直接控制之下。雖然如此,如果需要,芯片制造商仍具備將此制造后和銷售后控制級(jí)別繼續(xù)傳遞給其他商業(yè)實(shí)體的能力。然后,在某種意義上,所述芯片變?yōu)榫哂锌煽刂频淖饨杵诤统潭鹊摹白饨柩b置”,對(duì)其的控制還可構(gòu)成單獨(dú)可售的項(xiàng)目。
通常,散列函數(shù)說(shuō)明了其中將要傳輸?shù)南⒒蚱渌畔⒂成涞揭幌盗形坏倪^(guò)程。消息中的位數(shù)通常旨在比作為來(lái)自散列函數(shù)的輸出產(chǎn)生的位數(shù)大許多數(shù)量級(jí)。映射是以這樣的方式實(shí)際上消息的位內(nèi)容的任何變化幾乎都確實(shí)地保證在散列函數(shù)的輸出中產(chǎn)生變化。這確保了在對(duì)消息做出任何更改時(shí),將出現(xiàn)原始散列函數(shù)輸出和散列函數(shù)的新輸出之間的錯(cuò)配。該散列函數(shù)輸出通常被稱為消息摘要。已知許多不同的散列函數(shù)可以實(shí)現(xiàn)期望的安全級(jí)別。但是,本發(fā)明不限于使用一種散列函數(shù)或其他散列函數(shù),只要一致地使用它們即可。上述的某些FIPS標(biāo)準(zhǔn)還包括可接受的散列函數(shù)的說(shuō)明。例如,在2002年8月1日發(fā)布的FIPS180-2中,說(shuō)明了什么被稱為安全散列標(biāo)準(zhǔn)(SHS),它指定了四種安全散列算法(SHA)SHA-1、SHA-256、SHA-384和SHA-512。
還執(zhí)行類似的過(guò)程540以便將授權(quán)的加密標(biāo)記放置到SRAM132中,其目的是隨后允許將軟件(例如,操作系統(tǒng)和/或其組件)加載到SRAM132和eDRAM130中。圖6中說(shuō)明了該過(guò)程。但是要指出的是,該過(guò)程(雖然類似于圖5中所示的過(guò)程)的具體不同之處在于,它包括了用于結(jié)合加密時(shí)間和日期的機(jī)制??梢允褂迷撔畔?lái)為芯片操作提供時(shí)間限制。因此,可以授權(quán)在給定持續(xù)時(shí)間內(nèi)或在兩個(gè)日期或時(shí)刻之間的設(shè)定時(shí)間段使用芯片。要指出的是,這是本發(fā)明的可選功能。在操作時(shí),完整配置的芯片具備授權(quán)證書(shū)。該證書(shū)可以包括時(shí)間限制或其他標(biāo)記以便控制對(duì)芯片上提供的處理功能的訪問(wèn),形式為處理器115或一個(gè)或多個(gè)密碼引擎195。出于本發(fā)明的目的,授權(quán)證書(shū)是向芯片提供的任何數(shù)字標(biāo)記,其目的是與已編碼的內(nèi)部數(shù)據(jù)進(jìn)行比較,且適當(dāng)?shù)钠ヅ湟馕吨S可芯片訪問(wèn)某些級(jí)別的芯片功能。該功能訪問(wèn)級(jí)別涉及暫時(shí)獲準(zhǔn)和許可性能和安全級(jí)別,例如,獲準(zhǔn)使用指定長(zhǎng)度的密鑰。如有必要,在將提供的授權(quán)證書(shū)與提供給SRAM132的數(shù)據(jù)相比較之前,首先使用一個(gè)或多個(gè)引擎195來(lái)解密該提供的授權(quán)證書(shū)。
如圖6中所示的步驟之一,在步驟546中,將芯片用戶證書(shū)542(其優(yōu)選地結(jié)合了有符號(hào)的“持續(xù)時(shí)間”指示)與其他信息相組合。芯片用戶證書(shū)542的使用提供了一種用于控制本發(fā)明的至少一個(gè)可選方面的機(jī)制,即,允許在定義的時(shí)間段或定義的持續(xù)時(shí)間內(nèi)授權(quán)使用的能力。該證書(shū)因此可用于激活系統(tǒng)和/或允許使用系統(tǒng)以便執(zhí)行特定功能(例如加密),而同時(shí)拒絕其他操作的授權(quán)。簡(jiǎn)言之,除了暫時(shí)受控以外,授權(quán)還可以是選擇性的。用戶證書(shū)542為該授權(quán)提供了正確的標(biāo)記。雖然表示為持續(xù)時(shí)間,但是該標(biāo)記還可以包括開(kāi)始和結(jié)束時(shí)間和/或日期指示。使用銷售商的私鑰對(duì)其簽名。其他提供給組合步驟546的信息包括銷售商選擇的軟件證書(shū)541。同樣通過(guò)步驟543a中的銷售商的軟件散列函數(shù)來(lái)處理證書(shū)541。這優(yōu)選地與圖5中示出的過(guò)程中使用的銷售商的硬件散列函數(shù)不同。在步驟544使用銷售商的私鑰545來(lái)簽名銷售商的散列的軟件證書(shū)。將來(lái)自步驟544的輸出與銷售商的軟件證書(shū)以及與芯片用戶證書(shū)542相組合。優(yōu)選地通過(guò)簡(jiǎn)單的串聯(lián)來(lái)進(jìn)行該組合。在步驟543b中,使用銷售商的軟件散列函數(shù)處理來(lái)自組合步驟546的輸出,它可以提供也可以不提供與步驟543a中相同的散列函數(shù)。在步驟547中使用芯片公鑰548加密來(lái)自步驟543b的輸出。如圖5中所示的過(guò)程,然后將輸出提供給SRAM132。
與由本發(fā)明的芯片提供的高安全性級(jí)別相關(guān)聯(lián)的一個(gè)顯著方面是只有加密的數(shù)據(jù)才通過(guò)接口110傳送。因此,在通過(guò)接口110向芯片100提供用于將編程結(jié)構(gòu)提供給FPGA150B的配置數(shù)據(jù)之前,將加密該配置數(shù)據(jù)。圖7中示出了執(zhí)行此加密的優(yōu)選過(guò)程。與銷售商的軟件證書(shū)一樣,也可以將開(kāi)始和結(jié)束時(shí)間限制和/或持續(xù)時(shí)間限制結(jié)合到芯片及其組件(例如,F(xiàn)PGA150B)的操作中。如所公知的,在名為網(wǎng)表的表中提供了編程的FPGA的結(jié)構(gòu)。在步驟562中,將所需的網(wǎng)表561a與時(shí)間指示器561b(優(yōu)選地以協(xié)調(diào)世界時(shí)(UTC)的編碼形式提供)以及可選的持續(xù)時(shí)間指示561c相組合。再次地,該組合步驟優(yōu)選地為簡(jiǎn)單的串聯(lián)。簽名的證書(shū)(使用銷售商的私鑰)通過(guò)散列函數(shù)565a并在步驟566使用銷售商私鑰567加密。來(lái)自該步驟的輸出通過(guò)銷售商的散列函數(shù)565b并在步驟568使用芯片公鑰569加密。如同上述的過(guò)程,散列函數(shù)的使用為可選的,但仍非常希望實(shí)現(xiàn)最大可能的數(shù)據(jù)安全和完整性;此外,每個(gè)函數(shù)可以與其他函數(shù)不同,也可以相同。通過(guò)使用特殊的“LOAD FPGA”命令,將來(lái)自加密步驟568的輸出通過(guò)接口110提供給芯片100,在以下進(jìn)一步詳細(xì)說(shuō)明的圖11中具體示出了該命令的操作。因此可以看到,提供了一種在將FPGA配置編程數(shù)據(jù)跨安全芯片邊界101傳輸之前,用于準(zhǔn)備所述FPGA配置編程數(shù)據(jù)的過(guò)程560。
圖8顯示了FPGA配置數(shù)據(jù)的插入過(guò)程600的概述。首先確保將電池或其他電源連接到芯片100(步驟601)。上文提到,在沒(méi)有電力的情況下,將擦除易失性SRAM存儲(chǔ)器132。接下來(lái)在步驟602驗(yàn)證電源連接。這通常通過(guò)執(zhí)行“on answer”命令來(lái)完成。作為如何驗(yàn)證電源連接的另一個(gè)實(shí)例,這可以在加電過(guò)程中實(shí)現(xiàn),此時(shí),將電壓施加到鎖相環(huán)(PLL)和從振蕩器生成的基準(zhǔn)時(shí)鐘。PLL的鎖定指示有效的時(shí)鐘信號(hào)。此刻,通過(guò)掃描入數(shù)據(jù)以及驗(yàn)證掃描出的數(shù)據(jù)與掃描入的數(shù)據(jù)的期望輸出相匹配來(lái)生成硬件簽名。然后,通常將期望輸出與存儲(chǔ)在內(nèi)部EPROM中的數(shù)據(jù)比較。要指出的是,該過(guò)程是在微處理器和類似電路器件中通常使用的標(biāo)準(zhǔn)操作。然后執(zhí)行重置操作以確保ASIC電路150A處于適當(dāng)?shù)某跏紶顟B(tài)(步驟603)。在這點(diǎn)上,要指出的是,通常將使用狀態(tài)機(jī)設(shè)計(jì),其中提供了機(jī)制來(lái)接收將狀態(tài)機(jī)調(diào)整到明確定義的“初始”狀態(tài)的特殊重置信號(hào)。接著,將銷售商硬件證書(shū)加載到SRAM132中(步驟604;參見(jiàn)圖6)。然后(步驟605)執(zhí)行LOAD FPGA命令(參見(jiàn)圖11和其相關(guān)說(shuō)明)。接著(步驟606)加載銷售商軟件證書(shū)。然后芯片在內(nèi)部驗(yàn)證簽名(在使用內(nèi)部可用的密鑰進(jìn)行解密之后;參見(jiàn)圖3)。接著(步驟608)使用外部存儲(chǔ)器密鑰加密來(lái)自步驟607的輸出并將其加載到閃存中。在這點(diǎn)上,要指出的是,在制造后首次對(duì)芯片加電時(shí),所有數(shù)據(jù)都在硬編碼的密鑰下加密。這些密鑰由板上密碼引擎使用以在必要時(shí)對(duì)數(shù)據(jù)進(jìn)行加密和解密。結(jié)果數(shù)據(jù)由在電池后備的SRAM132(BBSRAM)中存儲(chǔ)的短期密鑰進(jìn)行加密。使用SRAM132中的短期密鑰不僅使COACH系統(tǒng)能夠更快地加電,而且在物理攻擊的情況下還提供了加強(qiáng)的安全性。在第二次引導(dǎo)操作時(shí),F(xiàn)PGA數(shù)據(jù)(即,對(duì)FPGA編程的網(wǎng)表數(shù)據(jù))以加密的形式駐留在外部存儲(chǔ)器210中。要指出的是,使用后備電池將該FPGA數(shù)據(jù)安全地加載到外部存儲(chǔ)器中。注意,該信息不是由初始存儲(chǔ)在片上熔斷器中的密鑰保護(hù)的,而是由之后獨(dú)立提供的密鑰信息保護(hù)的。在操作中,篡改當(dāng)前的COACH裝置會(huì)破壞任何內(nèi)部存儲(chǔ)的密鑰,并因此使外部存儲(chǔ)器變得無(wú)用。因此,即使將包含COACH裝置的卡從其系統(tǒng)(或系統(tǒng)級(jí)板)取出,機(jī)密信息仍保持為機(jī)密信息。該編碼信息的存在提供了兩個(gè)顯著的優(yōu)點(diǎn)(1)提供了后備電池正在工作的額外指示器;(2)無(wú)需使用原始制造商提供的數(shù)據(jù)來(lái)重新初始化具有FPGA數(shù)據(jù)的芯片。
除了具備準(zhǔn)備要加載的FPGA配置數(shù)據(jù)的過(guò)程,還存在相應(yīng)的準(zhǔn)備要以安全的方式加載到芯片存儲(chǔ)器中的軟件的過(guò)程。與加載FPGA配置數(shù)據(jù)一樣,準(zhǔn)備工作也涉及到加密。圖9中示出了期望的過(guò)程,該過(guò)程與圖7中示出的準(zhǔn)備FPGA配置數(shù)據(jù)的過(guò)程實(shí)際上完全相同。圖9的標(biāo)題指的是“形成”,因?yàn)樾g(shù)語(yǔ)“編譯”在應(yīng)用于軟件時(shí)還具有其它含義。例如,圖9中的第一步是“編譯”軟件的步驟,因?yàn)樵撔g(shù)語(yǔ)經(jīng)常應(yīng)用于將代碼轉(zhuǎn)化為所謂的二進(jìn)制或可執(zhí)行格式(步驟581a)的過(guò)程。除了初步區(qū)分,圖9的過(guò)程與上述圖7的過(guò)程以同樣的方式繼續(xù)。而且,如同圖7的過(guò)程,是否包括時(shí)間和/或持續(xù)時(shí)間信息是可選的。
現(xiàn)在將注意力轉(zhuǎn)向使用COACH裝置的下一個(gè)階段,其中首次執(zhí)行硬件代碼(即,F(xiàn)PGA編程)和軟件代碼的加載。在隨后的情況中,初始化過(guò)程要簡(jiǎn)單一些,具體如下所述。但是,目前的討論還是集中于制造的芯片首次加載硬件(FPGA)數(shù)據(jù)和軟件。首先連接一個(gè)或多個(gè)電池,如果尚未連接的話。通過(guò)檢查連接到外部電源的引腳上的電壓來(lái)驗(yàn)證電池連接。如果沒(méi)有連接電池和/或在對(duì)象引腳上沒(méi)有足夠的電壓,則儲(chǔ)存在SRAM132中的任何密鑰都將丟失。在這種情況下,任何存在于外部存儲(chǔ)器200中的數(shù)據(jù)也將“丟失”,因?yàn)樵诓豢捎玫拿荑€下,所述數(shù)據(jù)將變得鎖定。顯然,在這種情況下,不會(huì)加載任何硬件或軟件代碼,芯片返回需要提供硬件特定的FPGA代碼的階段。如果這種錯(cuò)誤伴隨著物理篡改的征兆,則優(yōu)選地丟棄該芯片。就該過(guò)程是自動(dòng)的而言,低電壓或無(wú)電壓信號(hào)優(yōu)選地導(dǎo)致向用戶提供警告,說(shuō)明沒(méi)有電池連接且數(shù)據(jù)將在斷電時(shí)丟失。這可以通過(guò)可由系統(tǒng)軟件層訪問(wèn)的位來(lái)完成。使用存儲(chǔ)在電壓島中的位來(lái)指示篡改;這個(gè)位不僅可用來(lái)檢測(cè)篡改事件,而且還可用來(lái)指示電池未連接。該位包含在圖2中示為在電壓島145內(nèi)的狀態(tài)寄存器134中。當(dāng)芯片加電時(shí),電壓島以外的所有組件都將重置。但是,電壓島上的組件內(nèi)的信息將由電池單元175或穩(wěn)壓電源170來(lái)保持。SRAM132中的簽名指示芯片是否重置。這是在首次加電時(shí)加載到SARM132中的初始化簽名。如果芯片100被重置,這意味著將電壓島145初始化,如果進(jìn)行了初始化,則使用內(nèi)部地址讀取狀態(tài)寄存器134。在此方面要指出的是,此寄存器不必整體存在于電壓島145上;在是狀態(tài)寄存器的一部分的電池后備的SRAM132中的一些位不必一定在電壓島上。狀態(tài)寄存器134存在于電壓島145中,并且還包含指示篡改的位,該位是在首次初始化之后一直維護(hù)的值。當(dāng)請(qǐng)求芯片狀態(tài)時(shí),篡改位是所提供的位之一;如果設(shè)置了該位(根據(jù)活動(dòng)的值),則它指示篡改或未篡改的狀態(tài)。將初始化另一個(gè)位以指示電池是否已連接。
如果電池測(cè)試一切正常,則重置芯片。在芯片重置操作中,優(yōu)選地重置所有組件,除了電壓島145上的那些組件以外。重置通過(guò)流控制電路150優(yōu)選地基于其的狀態(tài)機(jī)的運(yùn)行來(lái)完成。在重置后,作為L(zhǎng)OAD FPGA指令的操作中的第一步,將加載硬件銷售商證書(shū)。在第二步中,其中將加載FPGA數(shù)據(jù)本身,將使用銷售商硬件證書(shū)以確保FPGA數(shù)據(jù)與銷售商硬件證書(shū)匹配。但是,在第一次時(shí),使用電子熔斷器(eFuse)中的硬編碼值來(lái)解密數(shù)據(jù),并且對(duì)于之后的每次“加電”,使用由證書(shū)驗(yàn)證的公鑰來(lái)控制訪問(wèn)。前文曾經(jīng)談到,如圖5所示,該證書(shū)是使用銷售商的私鑰編碼的,現(xiàn)在這可以確保安全匹配。一旦LOAD FPGA指令將銷售商的硬件證書(shū)加載到SRAM 132中,則此證書(shū)中的信息就用來(lái)解密FPGA數(shù)據(jù),然后將所述數(shù)據(jù)加載到流控制開(kāi)關(guān)150的FPGA部分150B中。這確保了只允許授權(quán)的銷售商修改FPGA數(shù)據(jù)。在LOAD FPGA指令的下一階段,銷售商的軟件證書(shū)(先前已加載,或通過(guò)LOAD FPGA指令同時(shí)加載(參見(jiàn)圖10中的步驟710))被用于解密和/或驗(yàn)證(參見(jiàn)圖10中的步驟720)此后以未加密的形式優(yōu)選地存儲(chǔ)在eDRAM130中以供處理器115使用的軟件。在為銷售商軟件形成過(guò)程構(gòu)想的過(guò)程中,圖9示出了范圍更廣的過(guò)程,其中軟件被加密并且只是被散列和簽名。但是,需要注意與加密有關(guān)的步驟(586、587、588和589)是可選的。根據(jù)需要的安全級(jí)別,有兩個(gè)選項(xiàng)。在第一個(gè)選項(xiàng)中,只是散列和簽名軟件,從而保持源代碼可用,因此導(dǎo)致存儲(chǔ)器操作速度加快。盡管如此,為了增加的安全性,在第二個(gè)選項(xiàng)中,使用與加密相關(guān)的步驟以及示出的其他步驟。此軟件通常包括某種形式的操作系統(tǒng)或操作系統(tǒng)內(nèi)核。
通過(guò)經(jīng)由接口110提供特殊識(shí)別的命令來(lái)執(zhí)行專用LOAD FPGA指令;該命令由圖11中的請(qǐng)求處理器155來(lái)識(shí)別,所述處理器在開(kāi)關(guān)150的ASIC硬件部分150A中實(shí)現(xiàn)。如前文所述,此命令包含選擇要與先前存儲(chǔ)的硬件銷售商證書(shū)相比較的密鑰信息。如果比較成功,則允許用于編程FPGA部分150B的網(wǎng)表數(shù)據(jù)通過(guò)接口110,并且將所述數(shù)據(jù)用于編程FPGA部分150B。此時(shí),編程流控制開(kāi)關(guān)150的FPGA部分150B。FPGA數(shù)據(jù)是易失性的,并且如前文所述,通過(guò)使用Load FPGA指令來(lái)保護(hù),這要求使用正確的密鑰來(lái)訪問(wèn)。
一旦未加密形式的軟件在eDRAM130中出現(xiàn),優(yōu)選地也將它加密(參見(jiàn)圖10中的步驟730)并將它加載(參見(jiàn)圖10中的步驟740)到外部存儲(chǔ)器200的安全部分210(參見(jiàn)圖12)。這使用外部_存儲(chǔ)器_密鑰(external_memory_key)(參見(jiàn)圖2中的標(biāo)號(hào)135D)來(lái)完成。以與熔斷器135相同的方式來(lái)提供外部_存儲(chǔ)器_密鑰。該信息就像其他熔斷器一樣用作硬編碼的密鑰。初次使用時(shí),任何作為外部存儲(chǔ)器的一部分傳送的數(shù)據(jù)都采用外部_存儲(chǔ)器_密鑰來(lái)加密。然后解密所述數(shù)據(jù)并內(nèi)部地加載所述數(shù)據(jù),并再次使用新生成的密鑰加密所述數(shù)據(jù)并將其存儲(chǔ)在外部存儲(chǔ)器200中。一旦成功地將代碼存儲(chǔ)在eDRAM130中,就設(shè)置代碼_已加載(code_loaded)寄存器的狀態(tài)以指示此狀態(tài)(參見(jiàn)圖10中的步驟750)。與前文討論的篡改位一樣,此寄存器優(yōu)選地包含在電壓島145內(nèi)的狀態(tài)寄存器134的一個(gè)位中。在變型實(shí)施例中,狀態(tài)寄存器134可以成為SRAM132的一部分。
加載的軟件優(yōu)選地包括針對(duì)每個(gè)加載的設(shè)備驅(qū)動(dòng)器的簽名。雖然軟件以未加密的形式存儲(chǔ)在eDRAM130中,但是還希望將eDRAM130的內(nèi)容的加密副本(或其部分內(nèi)容)存儲(chǔ)在外部存儲(chǔ)器200中。在該處存儲(chǔ)此信息提供了用于“重新引導(dǎo)”操作的便利位置。每次引導(dǎo)時(shí)仍加載FPGA,但至少不再需要重新使用啟動(dòng)軟盤;并且啟動(dòng)也變得更安全,因?yàn)槿绻麢z測(cè)到篡改,可以使用該軟盤重新初始化整個(gè)芯片。該啟動(dòng)軟盤包含啟動(dòng)軟件,所述軟件屬于先前生成的不同保護(hù)層并且由硬編碼的密鑰(即,實(shí)現(xiàn)為熔斷器的密鑰)加密。這就像擁有個(gè)人安全密鑰。通過(guò)外部存儲(chǔ)器接口105提供了從內(nèi)部到外部存儲(chǔ)器200的安全傳輸,所述接口優(yōu)選地通過(guò)安全地控制對(duì)存儲(chǔ)器200中的受限地址組的訪問(wèn)來(lái)工作。
如上所述,現(xiàn)在將注意力集中到硬件(FPGA)和軟件信息的后續(xù)加載。在上面描述的初次加載操作的過(guò)程中,一般假設(shè)電池未初始連接和/或以其他方式得知要執(zhí)行初次加載操作。但是,對(duì)于后續(xù)的加載操作,首先希望檢查代碼_已加載寄存器的狀態(tài)。這通過(guò)讀取電壓島145中的狀態(tài)寄存器134內(nèi)的電池_后備(battery_backed_up)位來(lái)完成。該位存儲(chǔ)在電壓島145上,并且如根據(jù)尋址和訪問(wèn)狀態(tài)寄存器134所述的來(lái)檢索該位。如果寄存器指示已加載代碼并且如果沒(méi)有指示錯(cuò)誤,則操作通過(guò)啟動(dòng)硬件(通過(guò)從安全外部存儲(chǔ)器部分210加載FPGA數(shù)據(jù))來(lái)繼續(xù)。但是,如果檢測(cè)到篡改或存在硬件錯(cuò)誤,或者電池或存儲(chǔ)器出現(xiàn)故障,則在狀態(tài)寄存器134中提供錯(cuò)誤指示。借助狀態(tài)寄存器位來(lái)提供該錯(cuò)誤指示,由于寄存器在電壓島145上的存在,所述位在需要時(shí)由電池175支持。狀態(tài)寄存器134的內(nèi)容由芯片內(nèi)部軟件讀取并優(yōu)選地在引導(dǎo)操作和之后的操作期間將所述內(nèi)容報(bào)告給在eDRAM130中運(yùn)行的操作系統(tǒng)。通過(guò)指定其唯一地址或通過(guò)執(zhí)行命令或讀取操作來(lái)訪問(wèn)狀態(tài)寄存器134。此外,如果外部加密的存儲(chǔ)器的驗(yàn)證沒(méi)有改變簽名,則使用相同的機(jī)制來(lái)報(bào)告錯(cuò)誤。在加載FPGA數(shù)據(jù)后,從安全外部存儲(chǔ)器部分210檢索操作系統(tǒng)的所有段(或任何其他所需軟件),將它們解密并存儲(chǔ)在eDRAM130中。芯片現(xiàn)在已準(zhǔn)備好加載上層存儲(chǔ)器段。在1999年11月發(fā)行的題為“IBM4758型13安全策略”的公眾可以獲得的文檔中描述了存儲(chǔ)器段的概念。出于當(dāng)前目的,指出了段0和1是其中插入引導(dǎo)代碼的存儲(chǔ)器部分。這包括如迷你啟動(dòng)、迷你啟動(dòng)0和POST(開(kāi)機(jī)自檢)代碼。段2具備操作系統(tǒng)(OS)級(jí)代碼。最后,段3包含應(yīng)用級(jí)編程。
現(xiàn)在將注意力集中到電壓島145上存在的實(shí)時(shí)時(shí)鐘133的使用和操作(參見(jiàn)圖1)。這是可以以安全的方式重置的硬件時(shí)鐘。其可以結(jié)合基于時(shí)間的授權(quán)使用以便使用所有或部分芯片功能。例如,該時(shí)鐘可以用于控制芯片使用的持續(xù)時(shí)間或者鎖定特定的開(kāi)始時(shí)間或結(jié)束時(shí)間。如本文中使用的,此時(shí)鐘指被量化成所有方便的時(shí)段的時(shí)間??梢砸匀铡⒅?、月、年或納秒來(lái)測(cè)量時(shí)間并其僅受硬件實(shí)現(xiàn)中使用的時(shí)鐘/振蕩器的頻率的限制。一旦將芯片初始化,則存在特定時(shí)間段的功能激活的潛在問(wèn)題。驗(yàn)證實(shí)時(shí)時(shí)鐘133中的初始時(shí)間設(shè)置是將該問(wèn)題最小化的重要步驟。為了更好地促進(jìn)使用實(shí)時(shí)時(shí)鐘133,希望還在狀態(tài)寄存器134中包括狀態(tài)位,當(dāng)以安全的方式設(shè)置了時(shí)鐘133時(shí),將設(shè)置所述狀態(tài)位。但是要指出的是,從芯片本身內(nèi),很難判定是否正確設(shè)置了時(shí)鐘133。
為了阻止在未授權(quán)的時(shí)間使用或使用未授權(quán)的持續(xù)時(shí)間,將控制用于存儲(chǔ)當(dāng)前時(shí)間和日期的時(shí)鐘133中的寄存器,以便只能通過(guò)安全機(jī)制來(lái)改變所述寄存器??梢酝ㄟ^(guò)多種方式完成此操作。最容易的方式是簡(jiǎn)單地讀取芯片安裝在其中的系統(tǒng)的系統(tǒng)時(shí)鐘。優(yōu)選地使用用于COACH設(shè)備和COACH芯片設(shè)備驅(qū)動(dòng)器的主系統(tǒng)來(lái)建立時(shí)鐘設(shè)置過(guò)程。但是,由于并未將系統(tǒng)時(shí)鐘看作足夠安全的時(shí)間信息源,所以對(duì)于多數(shù)應(yīng)用來(lái)說(shuō),這不是期望的方式,盡管對(duì)于某些受限的目的,它是可以接受的,即使只是暫時(shí)如此。具體地說(shuō),可以將系統(tǒng)時(shí)鐘設(shè)置為非常早的時(shí)間設(shè)置,以使活動(dòng)時(shí)間段變得更長(zhǎng),芯片制造商的權(quán)利得不到保護(hù)。因此,優(yōu)選的方法是從已達(dá)成一致和/或驗(yàn)證的服務(wù)器檢索簽名的時(shí)間戳。此刻可以評(píng)估和處理任何適用的收費(fèi)。一旦安裝了硬件,就執(zhí)行硬件的注冊(cè);此時(shí),借助加密的消息(其是激活代碼)設(shè)置由實(shí)時(shí)時(shí)鐘133指示的實(shí)際當(dāng)前值。要指出的是,幾乎在所有情況下,所述系統(tǒng)都可容忍在請(qǐng)求時(shí)間信息并將該信息插入實(shí)時(shí)時(shí)鐘133中產(chǎn)生的微小延遲。
可以從圖1清楚地看出,在芯片100的結(jié)構(gòu)和運(yùn)行中,流控制開(kāi)關(guān)150扮演了中心角色。術(shù)語(yǔ)“流控制開(kāi)關(guān)”雖然是用于此處的討論的方便短語(yǔ),但是它僅部分地說(shuō)明了該塊執(zhí)行的功能。雖然塊150主要用作接收數(shù)據(jù)和命令并將相關(guān)信息路由至芯片上的其它組件的樞紐,但是它還包括命令處理器機(jī)制,所述機(jī)制用于解釋命令并啟動(dòng)步驟以確保命令完成,同時(shí)通知完成和/或完成狀態(tài)。具體地說(shuō),開(kāi)關(guān)150包括請(qǐng)求處理器155,該處理器解釋請(qǐng)求塊緩沖器151的命令部分。緩沖器151不應(yīng)被視為限于只緩沖少量字符或位的角色。優(yōu)選地,它的大小適合容納目的地為SRAM132或eDRAM130的數(shù)據(jù)的相對(duì)較大的部分。對(duì)于其中需要加密和/或解密的情形,請(qǐng)求處理器155與一個(gè)或多個(gè)密碼引擎195相連。
處理器155還提供對(duì)外部存儲(chǔ)器200(參見(jiàn)圖12)的安全訪問(wèn)。注意此處術(shù)語(yǔ)“外部存儲(chǔ)器”指沒(méi)有包含在安全芯片邊界101以內(nèi)的存儲(chǔ)器;它并不是指eDRAM130或SRAM132,在相對(duì)的意義上,eDRAM130或SRAM132對(duì)可能作為任何嵌入式處理器115的一部分而存在的任何存儲(chǔ)器而言都是外部的。更具體地說(shuō),處理器155用于保護(hù)外部存儲(chǔ)器200的一部分,并將其用途限于存儲(chǔ)加密的信息(圖12中的部分210)。這優(yōu)選地通過(guò)控制地址來(lái)完成。處理器155將所提供的用于訪問(wèn)外部存儲(chǔ)器200的地址與先前設(shè)置為定義地址邊界的地址范圍相比較。這通過(guò)建立并使用駐留在SRAM132中的地址映射表來(lái)完成,SRAM132包含有訪問(wèn)存儲(chǔ)器的不同部分的密鑰和簽名。它對(duì)軟件來(lái)說(shuō)是透明的。具體地說(shuō),當(dāng)發(fā)送地址以進(jìn)行讀取或?qū)懭氩僮鲿r(shí),還與該地址一起發(fā)送密鑰和散列值。在流控制開(kāi)關(guān)150并且優(yōu)選地在編程的FPGA硬件中實(shí)現(xiàn)對(duì)確認(rèn)訪問(wèn)該地址的授權(quán)的控制。根據(jù)所訪問(wèn)的地址范圍,密鑰使用對(duì)eDRAM130內(nèi)的操作系統(tǒng)而言完全透明。這些密鑰只是內(nèi)部密鑰,一旦檢測(cè)到篡改,就立即擦除這些密鑰。散列值也是內(nèi)部生成的。這是本發(fā)明的眾多靈活而適應(yīng)性強(qiáng)的特性之一。
處理器155也可訪問(wèn)SRAM132。密鑰信息正是存儲(chǔ)在此易失性存儲(chǔ)器中。但是,存儲(chǔ)在SRAM132中的密鑰信息并不只是簡(jiǎn)單地存儲(chǔ)在該處。上述的過(guò)程得到采用。這些過(guò)程利用了芯片私鑰、芯片公鑰和銷售商公鑰,所有這些密鑰都在芯片熔斷器區(qū)135內(nèi)(參見(jiàn)圖2)。銷售商私鑰的使用可以將信息安全地插入SRAM132之中。這些密鑰的使用還可以安全并且更快地將未加密的數(shù)據(jù)插入SRAM132中。一般來(lái)說(shuō),SRAM技術(shù)提供了更快的存取,但它不能像eDRAM存儲(chǔ)器130那樣密集封裝。因此,包括eDRAM130的主要原因之一是限制芯片大小,由此降低芯片成本。
從以上所述應(yīng)當(dāng)理解,使用可安全編程的FPGA組件提供了顯著的靈活性,并且具體地說(shuō),允許通過(guò)添加當(dāng)前沒(méi)有使用的功能和補(bǔ)丁來(lái)對(duì)硬件進(jìn)行升級(jí)。它還實(shí)現(xiàn)了為已在現(xiàn)場(chǎng)的硬件提供維修的方法,而沒(méi)有增加重新設(shè)計(jì)和重新制造全新芯片的成本。它還增大了可以運(yùn)行的應(yīng)用軟件的范圍。
在正常操作中,通過(guò)接口110將請(qǐng)求塊發(fā)送到處理器元件100。請(qǐng)求處理器155通過(guò)此同一接口返回應(yīng)答塊。該應(yīng)答塊通常包含操作已成功地完成的指示。但是,該應(yīng)答塊還可以包含處理器在某些方面出現(xiàn)故障或存在可能的篡改嘗試的指示。
根據(jù)將FPGA用作構(gòu)建COACH裝置和相關(guān)系統(tǒng)的待選器件來(lái)描述了上述發(fā)明。但是,要指出的是,本發(fā)明還構(gòu)想了使用任何其它可編程的電路器件,例如PLD(可編程邏輯器件)。此外,雖然上述說(shuō)明提到將PowerPC微處理器用作嵌入式處理器115,但是應(yīng)指出的是,可以為此使用任何微處理器,包括Intel微處理器系列。
在某些方面,本發(fā)明提到使用密碼引擎來(lái)提供密碼功能。該功能自然包括加密和解密的過(guò)程。但是,還應(yīng)理解,這些引擎能夠執(zhí)行其他密碼和模算術(shù)運(yùn)算(例如,模加法和減法、模乘法、模除法、模取冪以及與使用中國(guó)余數(shù)定理相關(guān)的計(jì)算)相關(guān)的功能。
權(quán)利要求
1.一種用于提供密碼功能的集成電路芯片,所述芯片包括第一易失性隨機(jī)存取存儲(chǔ)器;至少一個(gè)處理器;至少一個(gè)用于執(zhí)行加密和解密的密碼引擎;用于接收外部提供的請(qǐng)求和數(shù)據(jù)并返回結(jié)果的接口;至少一個(gè)位于所述芯片上的固定密鑰;以及流控制電路,所述流控制電路的至少一部分包括可編程硬件,所述流控制電路連接到所述接口,以便在所述接口、所述至少一個(gè)處理器、所述隨機(jī)存取存儲(chǔ)器以及所述至少一個(gè)密碼引擎之間以這樣的方式路由數(shù)據(jù)其中通過(guò)所述接口以加密的形式提供加密的指令,并由所述至少一個(gè)密碼引擎使用所述固定的密鑰來(lái)解密所述加密的指令,并將所述加密的指令用于對(duì)所述流控制電路的具有可編程硬件的所述部分進(jìn)行編程。
2.如權(quán)利要求1中所述的集成電路芯片,其中所述流控制電路包括用于接收請(qǐng)求和數(shù)據(jù)的命令處理器。
3.如權(quán)利要求2中所述的集成電路芯片,其中所述命令處理器解密編程、檢查授權(quán)并將所述編程加載到所述可編程硬件中。
4.如權(quán)利要求1中所述的集成電路芯片,其中所述密鑰是芯片私鑰。
5.如權(quán)利要求1中所述的集成電路芯片,還包括芯片公鑰。
6.如權(quán)利要求1中所述的集成電路芯片,還包括另一方的公鑰。
7.如權(quán)利要求1中所述的集成電路芯片,其中所述密鑰為芯片私鑰,并且其中所述芯片還包括芯片公鑰和另一方的公鑰。
8.如權(quán)利要求7中所述的集成電路芯片,其中所述密鑰包括熔斷元件。
9.如權(quán)利要求8中所述的集成電路芯片,其中所述密鑰包括電熔斷元件。
10.如權(quán)利要求8中所述的集成電路芯片,其中所述密鑰包括光熔斷元件。
11.如權(quán)利要求1中所述的集成電路芯片,其中所述密鑰包括熔斷元件。
12.如權(quán)利要求1中所述的集成電路芯片,還包括非易失性的第二隨機(jī)存取存儲(chǔ)器。
13.如權(quán)利要求1中所述的集成電路芯片,其中所述易失性隨機(jī)存取存儲(chǔ)器位于所述芯片的電壓島上。
14.如權(quán)利要求13中所述的集成電路芯片,其中所述電壓島由電池供電。
15.如權(quán)利要求13中所述的集成電路芯片,還包括用于從至少兩個(gè)獨(dú)立電源向所述電壓島供電的電源控制器。
16.如權(quán)利要求15中所述的集成電路芯片,其中所述至少兩個(gè)獨(dú)立電源中的一個(gè)電源為電池。
17.如權(quán)利要求1中所述的集成電路芯片,其中所述可編程硬件部分編程有通過(guò)所述接口提供的已解密信息。
18.一種用于提供密碼功能的方法,所述方法包括以下步驟向包括至少一個(gè)密碼引擎的集成電路芯片提供請(qǐng)求和加密的數(shù)據(jù),所述密碼引擎可訪問(wèn)布置在所述芯片上的私鑰和布置在所述芯片上的公鑰;使用布置在所述芯片上的處理器來(lái)處理所述請(qǐng)求,所述處理器連接到包含指令的隨機(jī)存取存儲(chǔ)器,將所述指令以加密的形式提供給所述芯片,由所述至少一個(gè)密碼引擎使用所述私鑰和公鑰來(lái)解密所述指令,并將所述指令存儲(chǔ)在所述隨機(jī)存取存儲(chǔ)器中;以及使用在所述處理器的控制下運(yùn)行的所述至少一個(gè)密碼引擎來(lái)解密所述數(shù)據(jù)。
19.如權(quán)利要求18中所述的方法,其中使用存儲(chǔ)在所述芯片上的第二易失性隨機(jī)存取存儲(chǔ)器中的其他密鑰來(lái)解密所述數(shù)據(jù)。
20.如權(quán)利要求19中所述的方法,其中通過(guò)具有至少兩個(gè)電源的電源控制器來(lái)維護(hù)所述第二易失性隨機(jī)存取存儲(chǔ)器。
21.如權(quán)利要求20中所述的方法,其中所述電源之一是電池。
22.如權(quán)利要求18中所述的方法,其中使用存儲(chǔ)在所述芯片上的公鑰和另一方的私鑰來(lái)加密所述提供的數(shù)據(jù)。
23.如權(quán)利要求18中所述的方法,其中通過(guò)PCI兼容的接口來(lái)提供所述請(qǐng)求和所述加密的數(shù)據(jù)。
24.如權(quán)利要求18中所述的方法,其中通過(guò)流控制開(kāi)關(guān)來(lái)控制所述至少一個(gè)密碼引擎、所述處理器、所述密鑰和所述隨機(jī)存取存儲(chǔ)器之間的通信。
25.如權(quán)利要求18中所述的方法,其中所述流控制開(kāi)關(guān)包括可編程的部分。
26.如權(quán)利要求25中所述的方法,其中所述流控制開(kāi)關(guān)的所述可編程部分是從包括現(xiàn)場(chǎng)可編程門陣列和可編程邏輯器件的組中選擇的。
全文摘要
本發(fā)明提供了包含一個(gè)或多個(gè)處理器和一個(gè)或多個(gè)密碼引擎的集成電路芯片。具有命令處理器的流控制電路經(jīng)由僅通過(guò)其傳送加密信息的安全外部接口來(lái)接受請(qǐng)求和數(shù)據(jù)。所述流控制電路對(duì)使用在所述芯片上以硬編碼形式存在的密鑰來(lái)解密該信息進(jìn)行協(xié)調(diào)。具體地說(shuō),所述流控制電路包括可編程的硬件部分,可以以安全的方式配置所述部分以創(chuàng)建靈活的內(nèi)部芯片架構(gòu)。所述芯片還包括布置在通過(guò)備用電池或從固定電源(電網(wǎng))來(lái)維護(hù)的電壓島上的易失性存儲(chǔ)器。因此,所述芯片能夠在所述處理器通過(guò)所述流控制電路控制所述密碼引擎的情況下,安全地執(zhí)行密碼操作。
文檔編號(hào)G06F1/00GK101014923SQ200580030307
公開(kāi)日2007年8月8日 申請(qǐng)日期2005年8月15日 優(yōu)先權(quán)日2004年9月10日
發(fā)明者C·法亞德, J·李, S·蘇特爾 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司