專利名稱:安全引導(dǎo)的制作方法
相關(guān)申請的交叉引用本申請的發(fā)明人已于1995年12月4日提交了一份名稱為“用于加密的伴隨壓印的裝置和方法”的美國專利申請,申請?zhí)枮?8/566910。該申請由本申請的同一受讓人所有。
本發(fā)明的背景技術(shù)1.發(fā)明領(lǐng)域本發(fā)明涉及計(jì)算機(jī)固件的安全的領(lǐng)域,尤其涉及在通用計(jì)算機(jī)系統(tǒng),特別是個人計(jì)算機(jī)中包括操作系統(tǒng)(OS)和基本輸入輸出系統(tǒng)(BIOS)的引導(dǎo)(boot-up)固件的領(lǐng)域。
2.相關(guān)技術(shù)描述計(jì)算機(jī)系統(tǒng)中的一個十分關(guān)鍵的單元是引導(dǎo)固件。該引導(dǎo)固件可以是一個操作系統(tǒng)(OS),該OS的一部分,或者是基本輸入輸出系統(tǒng)(BIOS)。該引導(dǎo)固件實(shí)際上是通常存儲在某些類型的非易失性存儲器中的機(jī)器代碼,以允許中央處理單元(CPU)執(zhí)行諸如初始化,診斷,從大容量存儲器中裝載操作系統(tǒng)以及常規(guī)的輸入/輸出(I/O)功能。
在通過一個加電序列對CPU供電時,CPU通過取出駐留在引導(dǎo)固件中的指令代碼而啟動。傳統(tǒng)上,該引導(dǎo)固件是以可擦除可編程只讀存儲器(EPROM)實(shí)現(xiàn)的。然而,半導(dǎo)體技術(shù)的最新進(jìn)展已經(jīng)允許可以以快速存儲器實(shí)現(xiàn)引導(dǎo)固件,從而增加了引導(dǎo)固件受到非法入侵的可能性。
由于引導(dǎo)固件在計(jì)算機(jī)系統(tǒng)中的關(guān)鍵作用,應(yīng)當(dāng)好好對之保護(hù)以免受到入侵攻擊。一種入侵是入侵者直接接近計(jì)算機(jī),物理地去除包括引導(dǎo)固件(例如快速存儲器,包含存儲器的印刷線路板)的引導(dǎo)設(shè)備,用另一引導(dǎo)設(shè)備代替該引導(dǎo)設(shè)備。在某些情況下,入侵者可能是該計(jì)算機(jī)系統(tǒng)的合法擁有者或用戶,他在試圖欺騙第三方服務(wù)提供者。
當(dāng)前所用的機(jī)械安全機(jī)制,尤其是便攜式計(jì)算機(jī)所使用的防止擦除重要信息的機(jī)制(如果該膝上形計(jì)算機(jī)的外殼沒有授權(quán)而被打開的話)對于防止這些入侵沒有任何效果。目前還沒有一個設(shè)計(jì)好的電子安全機(jī)制對連接主處理器和引導(dǎo)設(shè)備的路徑提供安全保護(hù)。
因此,希望提供一種安全機(jī)制,能防止入侵者通過替換引導(dǎo)設(shè)備,諸如加密的協(xié)處理器或比如快速存儲設(shè)備,成功地欺騙他人。它可以通過將該物理引導(dǎo)設(shè)備“綁定”到主處理器上而實(shí)現(xiàn),從而在該主處理器和該引導(dǎo)固件之間提供了一個安全的路徑。由于主處理器不能執(zhí)行由特定的加密協(xié)處理器事先未加密的引導(dǎo)指令(該指令相對于該協(xié)處理器已經(jīng)打上標(biāo)記),因此這一方案能防止入侵者簡單地替換該特定的加密協(xié)處理器。
發(fā)明概述本發(fā)明描述了一種安全子系統(tǒng)以防止對包含引導(dǎo)可執(zhí)行代碼的存儲設(shè)備的非法替換,它是通過基于電子密鑰機(jī)制在一個安全引導(dǎo)設(shè)備和一個主處理器之間建立一個安全的路徑而實(shí)現(xiàn)的。
該安全引導(dǎo)設(shè)備連接到該存儲設(shè)備,并且基于一個秘密的密鑰對該可執(zhí)行代碼進(jìn)行加密生成一個加密的代碼。主處理器然后基于該同一個秘密的密鑰對該加密的代碼進(jìn)行解密,以生成一個解密的代碼。只有在該解密的代碼與該可執(zhí)行代碼一致時,該主處理器才執(zhí)行該解密的代碼。在該安全引導(dǎo)設(shè)備和該主處理器之間建立的安全路徑允許該兩個處理器通過這種加密的消息進(jìn)行安全的通信。
附圖的簡要描述從下面對本發(fā)明的詳細(xì)描述中可以更清楚地明白本發(fā)明的特征及其優(yōu)點(diǎn)。其中
圖1示出在主處理器和安全引導(dǎo)設(shè)備之間具有安全路徑的本發(fā)明,這種安全路徑使得能夠安全地引導(dǎo)該系統(tǒng)。
圖2是本發(fā)明在主處理器對引導(dǎo)程序進(jìn)行正常的讀取訪問期間進(jìn)行操作的流程圖。
較佳實(shí)施例的描述通過在主處理器和安全的引導(dǎo)設(shè)備之間建立一個安全的通信協(xié)議,本發(fā)明在該主處理器和包含一個引導(dǎo)程序的存儲器設(shè)備之間提供一個安全的路徑。在以下的描述中,使用一些術(shù)語來討論某些密碼特征。比如,“密鑰”是常規(guī)的加密算法所用的編碼和/或解碼參數(shù),這些加密算法比如Rivest,Shamir和Adleman(RSA),在數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)中規(guī)定的數(shù)據(jù)加密算法(DEA)等等?!懊孛苊荑€”是有限數(shù)目的訪問該密鑰的電子設(shè)備用于加密和解密的密鑰。
如下所述,安全引導(dǎo)設(shè)備通過使用與主處理器共用的秘密密鑰加密引導(dǎo)程序中的指令代碼而響應(yīng)主處理器訪問該引導(dǎo)程序的請求(主請求)。主處理器使用該同一個秘密密鑰對加密的指令代碼進(jìn)行解密。由于秘密密鑰只為該主處理器和該安全引導(dǎo)設(shè)備所知,任何試圖替換包含該引導(dǎo)程序的安全引導(dǎo)設(shè)備都會產(chǎn)生不正常解密的代碼,使得系統(tǒng)不能工作。
參見圖1,其示出了一個利用本發(fā)明的計(jì)算機(jī)系統(tǒng)的實(shí)施例。計(jì)算機(jī)系統(tǒng)10包括一個芯片組51,該芯片組作為一個接口工作,以支持主處理器50,系統(tǒng)存儲器52和連接到系統(tǒng)總線53上的設(shè)備之間的通信。更具體地說,主處理器50包括一個邏輯電路(未示出)以及一個用來存儲密鑰信息的小容量的內(nèi)部非易失性存儲器65。系統(tǒng)存儲器52可以包括常規(guī)的存儲器,諸如各種類型的隨機(jī)存取存儲器(RAM),如DRAM,VRAM,SRAM等以及存儲器映射的I/O設(shè)備,但并不限于這些設(shè)備。系統(tǒng)總線53可以以包含外圍部件互連(PCI)和通用串行總線(USB)等的總線結(jié)構(gòu)中的一種實(shí)現(xiàn)。
一個可連接到系統(tǒng)總線53上的設(shè)備包括一個安全引導(dǎo)設(shè)備54。安全引導(dǎo)設(shè)備54包括總線接口60,密碼單元61和本地非易失性存儲器62。使用總線接口60建立到系統(tǒng)總線53的電連接。引導(dǎo)程序63存儲在非易失性存儲器62中。
仍然參見圖1,其中將主處理器50和安全引導(dǎo)設(shè)備54配置成在它們各自的非易失性存儲器65和62中包括一個共用的秘密密鑰64。這一秘密密鑰由生產(chǎn)該主處理器和安全引導(dǎo)設(shè)備的原始設(shè)備制造商或其他系統(tǒng)提供者初始化期間在制造廠建立的,由安全引導(dǎo)設(shè)備54和主處理器50用于加密和解密。該加密和解密可以通過多種技術(shù)進(jìn)行,其中包括采用專門的硬件電路,硬件和軟件的組合,或者專門的加速器。在圖2中描述了在系統(tǒng)加電(引導(dǎo))序列期間主處理器50和安全引導(dǎo)設(shè)備54用于引導(dǎo)訪問所執(zhí)行的序列。
現(xiàn)在參見圖2,其中示出了與系統(tǒng)的引導(dǎo)階段相關(guān)的步驟。首先,在步驟110,主處理器對相應(yīng)于引導(dǎo)程序的一個地址發(fā)出一個讀請求。安全引導(dǎo)設(shè)備通過將其地址空間映射到該相應(yīng)的引導(dǎo)程序檢測這一引導(dǎo)地址(步驟112)。在檢測到該讀請求時,安全引導(dǎo)設(shè)備使用該共用的秘密密鑰加密該相應(yīng)的引導(dǎo)指令(步驟114)。在步驟116,安全引導(dǎo)設(shè)備以該加密的引導(dǎo)指令響應(yīng)該主請求。在步驟118,在接收到該加密的引導(dǎo)指令時,主處理器使用該共用的秘密密鑰解密該加密的引導(dǎo)指令。在步驟120,所得到的解密的引導(dǎo)指令可能與正確的指令一致,也可能不一致,這取決于該系統(tǒng)是否被篡改。如果該系統(tǒng)已被篡改,所解密的引導(dǎo)指令是一個不正確的或不合法的指令(步驟130)。由于多種原因,該系統(tǒng)很可能停機(jī),諸如總線錯誤,不能識別的操作碼,無限循環(huán)等。因此,該引導(dǎo)序列造成系統(tǒng)失敗。在步驟140,所解密的引導(dǎo)指令是該引導(dǎo)程序中的一個有效的或正確的指令。該主處理器執(zhí)行該指令,以及處理下一引導(dǎo)指令,直到完成整個引導(dǎo)序列。
只有該安全引導(dǎo)設(shè)備和該主處理器才知道該共用秘密密鑰,因此試圖通過用另一安全引導(dǎo)設(shè)備來代替該安全引導(dǎo)設(shè)備而改變該系統(tǒng)是徒勞的。其原因是該替代設(shè)備不能與該主處理器通訊。入侵者不知道該共用的秘密密鑰就不能復(fù)制該加密的子系統(tǒng)。因此可以保護(hù)該引導(dǎo)固件不會受到引導(dǎo)設(shè)備的物理替換。
盡管上述討論是針對主處理器和專用的安全引導(dǎo)設(shè)備之間的安全路徑,但很容易就可認(rèn)識到可以在任意數(shù)目的子系統(tǒng),處理器或設(shè)備,以及其組合之間建立該安全路徑。一個典型的安全路徑涉及由所有設(shè)備/處理器共用的秘密密鑰,以及由任一硬件、固件或軟件或其任一組合實(shí)現(xiàn)的加密/解密算法。
在本發(fā)明的另一實(shí)施例中(未示出),一個具有安全引導(dǎo)設(shè)備功能的芯片組(其包含一些引導(dǎo)代碼)與該主處理器相連接。該引導(dǎo)代碼可以是一個可執(zhí)行指令序列。使用由該芯片組和該主處理器共用的秘密密鑰來加密和解密該引導(dǎo)代碼。從而建立上述的安全路徑。
又一實(shí)施例(未示出)涉及一個包含引導(dǎo)程序或一些可執(zhí)行代碼或信息代碼的印刷電路板(PCB)或諸如PCMCIA的“智能卡”。該P(yáng)CB或智能卡可以插入系統(tǒng)主板上的任一擴(kuò)展槽中,或者在任一底板接口總線上。一個安全引導(dǎo)設(shè)備連接到這樣一個PCB或智能卡上,響應(yīng)主請求,使用該板/卡和主處理器共用的一個秘密密鑰加密該引導(dǎo)代碼。主處理器使用該同一秘密密鑰解密該加密的代碼。該安全引導(dǎo)設(shè)備可以駐留在同一個PCB或智能卡上,或在系統(tǒng)中的其他地方,諸如另一單獨(dú)的PCB或智能卡。只要該安全引導(dǎo)設(shè)備能夠與該主處理器通過交換加密的或解密的引導(dǎo)代碼進(jìn)行通訊,任何試圖移走該P(yáng)CB或智能卡以及用另一沒有該秘密密鑰的PCB或智能卡來替換將造成系統(tǒng)不能工作。
盡管已經(jīng)參照示意性實(shí)施例描述了本發(fā)明,但是這些描述并不局限于此。對于本領(lǐng)域的普通技術(shù)人員來說,可以對該較佳實(shí)施例進(jìn)行各種改變,而且可以給出其他實(shí)施例,但是所有這些修改都被認(rèn)為落在本發(fā)明的精神與范圍之內(nèi)。
權(quán)利要求
1.一個用于防止對包含可執(zhí)行代碼的存儲裝置進(jìn)行非法替換的系統(tǒng),包括第一密碼裝置,用于根據(jù)一個秘密密鑰對所述可執(zhí)行代碼進(jìn)行加密以產(chǎn)生一個加密的代碼,所述第一密碼裝置與所述存儲裝置相連;第二密碼裝置,用于根據(jù)所述秘密密鑰對所述加密的代碼進(jìn)行解密,產(chǎn)生解密的代碼,所述第二密碼裝置與所述第一密碼裝置相連,并且如果所述解密的代碼與所述可執(zhí)行代碼一致則能夠執(zhí)行所述解密的代碼;以及通訊裝置,用于使所述第一密碼裝置與所述第二密碼裝置通過交換所述加密的代碼和解密的代碼進(jìn)行通訊。
2.根據(jù)權(quán)利要求1的系統(tǒng),其特征在于所述第一密碼裝置包括一個安全的引導(dǎo)裝置。
3.根據(jù)權(quán)利要求1的系統(tǒng),其特征在于所述第二密碼裝置包括一個主處理器。
4.根據(jù)權(quán)利要求1的系統(tǒng),其特征在于所述通訊裝置包括一個連接一條總線的接口,允許所述第一密碼裝置響應(yīng)來自所述第二密碼裝置的訪問請求。
5.根據(jù)權(quán)利要求1的系統(tǒng),其特征在于所述秘密密鑰可由所述第一密碼裝置和所述第二密碼裝置取得。
6.根據(jù)權(quán)利要求1的系統(tǒng),其特征在于所述可執(zhí)行代碼是一操作系統(tǒng)。
7.根據(jù)權(quán)利要求1的系統(tǒng),其特征在于所述可執(zhí)行代碼是一基本輸入和輸出系統(tǒng)。
8.根據(jù)權(quán)利要求1的系統(tǒng),其特征在于所述存儲裝置是一可修改非易失性存儲裝置。
9.根據(jù)權(quán)利要求8的系統(tǒng),其特征在于所述可修改非易失性存儲裝置是一快速存儲器。
10.一個用于防止對可執(zhí)行代碼進(jìn)行非法替換的系統(tǒng),包括第一處理器,用于根據(jù)一個秘密密鑰對所述可執(zhí)行代碼進(jìn)行加密,產(chǎn)生一個加密的代碼,所述第一處理器與所述可執(zhí)行代碼相連;第二處理器,用于根據(jù)所述秘密密鑰對所述加密的代碼進(jìn)行解密,產(chǎn)生解密的代碼,所述第二處理器與所述第一處理器相連,并且如果所述解密的代碼與所述可執(zhí)行代碼一致則能夠執(zhí)行所述解密的代碼;以及一個通訊路徑,用于使所述第一處理器與所述第二處理器通過交換所述加密的代碼和解密的代碼進(jìn)行通訊。
11.根據(jù)權(quán)利要求10的系統(tǒng),其特征在于所述第一處理器是一個安全的引導(dǎo)裝置。
12.根據(jù)權(quán)利要求10的系統(tǒng),其特征在于所述第二處理器是一個主處理器。
13.根據(jù)權(quán)利要求10的系統(tǒng),其特征在于所述通訊路徑包括一個連接一條總線的接口,允許所述第一處理器響應(yīng)來自所述第二處理器的訪問請求。
14.根據(jù)權(quán)利要求10的系統(tǒng),其特征在于所述秘密密鑰可由所述第一處理器和所述第二處理器取得。
15.根據(jù)權(quán)利要求10的系統(tǒng),其特征在于所述可執(zhí)行代碼是一操作系統(tǒng)。
16.根據(jù)權(quán)利要求10的系統(tǒng),其特征在于所述可執(zhí)行代碼是一基本輸入和輸出系統(tǒng)。
17.根據(jù)權(quán)利要求10的系統(tǒng),其特征在于所述存儲裝置是一可修改非易失性存儲裝置。
18.根據(jù)權(quán)利要求17的系統(tǒng),其特征在于所述可修改非易失性存儲裝置是一快速存儲器。
19.一種用于防止對包含在存儲裝置中、主處理器可訪問的可執(zhí)行代碼進(jìn)行非法替換的方法,包括下列步驟提供一個與所述存儲裝置相連的安全處理器,所述安全處理器響應(yīng)所述主處理器;根據(jù)一個秘密密鑰對所述可執(zhí)行代碼進(jìn)行加密,產(chǎn)生加密的代碼;根據(jù)所述秘密密鑰對所述加密的代碼進(jìn)行解密,產(chǎn)生解密的代碼;如果所述解密的代碼與所述可執(zhí)行代碼一致則執(zhí)行所述解密的代碼;以及在所述主處理器和所述安全處理器之間建立一個通訊路徑,允許所述主處理器與所述安全處理器進(jìn)行通訊。
20.根據(jù)權(quán)利要求19的方法,其特征在于所述通訊路徑包括一個連接到一條總線的接口,允許所述安全處理器響應(yīng)來自所述主處理器的訪問請求。
21.根據(jù)權(quán)利要求19的方法,其特征在于所述秘密密鑰可由所述主處理器和所述安全處理器取得。
22.根據(jù)權(quán)利要求19的方法,其特征在于所述可執(zhí)行代碼是一操作系統(tǒng)。
23.根據(jù)權(quán)利要求19的方法,其特征在于所述可執(zhí)行代碼是一基本輸入和輸出系統(tǒng)。
24.根據(jù)權(quán)利要求19的方法,其特征在于所述存儲裝置是一可修改非易失性存儲裝置。
25.根據(jù)權(quán)利要求19的方法,其特征在于所述安全處理器是一個安全的引導(dǎo)設(shè)備。
26.根據(jù)權(quán)利要求19的方法,其特征在于所述加密的步驟由所述安全處理器執(zhí)行,所述解密的步驟由所述主處理器執(zhí)行。
27.根據(jù)權(quán)利要求24的方法,其特征在于所述可修改非易失性存儲裝置是一快速存儲器。
全文摘要
本發(fā)明揭示了一個用于防止對實(shí)現(xiàn)在一個可修改非易失性存儲器(比如快速存儲器)(620)中的引導(dǎo)固件(例如BIOS(63))進(jìn)行非法替換的子系統(tǒng)。該固件設(shè)備包含在一個響應(yīng)該主處理器(50)的安全引導(dǎo)設(shè)備(54)中。該安全保護(hù)是通過使用一個由該安全引導(dǎo)設(shè)備(54)和該主處理器(50)共用的秘密密鑰(64)加密和解密該引導(dǎo)指令而建立的。
文檔編號G06F12/14GK1238087SQ97199904
公開日1999年12月8日 申請日期1997年7月30日 優(yōu)先權(quán)日1996年9月30日
發(fā)明者D·L·達(dá)維斯 申請人:英特爾公司