用于驗證crtm的嵌入式控制器的制造方法
【專利摘要】在一個實施例中,一種計算系統(tǒng)包括嵌入式控制器,以驗證可信度量核心根(CRTM)的供應(yīng)者。
【專利說明】用于驗證CRTM的嵌入式控制器
【背景技術(shù)】
[0001]計算系統(tǒng)具有基本輸入/輸出系統(tǒng)(BIOS)。BIOS是在啟動時測試硬件的一組軟件例程,啟動操作系統(tǒng),并且支持硬件設(shè)備間的數(shù)據(jù)傳送。BIOS例程能夠存儲在非易失性存儲設(shè)備上,如只讀存儲器、可編程只讀存儲器、可擦寫可編程只讀存儲器、閃存或別的非易失性存儲器。
【專利附圖】
【附圖說明】
[0002]本發(fā)明的一些實施例是關(guān)于以下附圖描述的:
[0003]圖1是根據(jù)示例實施例的包括嵌入式控制器的計算系統(tǒng)的框圖;
[0004]圖2是根據(jù)示例實施例的包括嵌入式控制器的計算系統(tǒng)的框圖;
[0005]圖3是根據(jù)示例實施例的保護可信度量核心根(CRTM)的方法的流程圖;
[0006]圖4是根據(jù)示例實施例的保護可信度量核心根(CRTM)的方法的流程圖;以及
[0007]圖5是根據(jù)示例實施例的包括計算機可讀介質(zhì)的計算系統(tǒng)的框圖。
【具體實施方式】
[0008]計算系統(tǒng)能夠包括存儲BIOS例程的計算機可讀介質(zhì)。該計算機可讀介質(zhì)能夠包括可信度量核心根(CRTM)。CRTM能夠存儲在計算機可讀介質(zhì)的不可改變部分上。計算機可讀介質(zhì)的不可改變部分不能被計算系統(tǒng)中如處理器這樣的組件擦除或?qū)懭?。CRTM能夠創(chuàng)建信任鏈。
[0009]CRTM是引導(dǎo)塊代碼。該段代碼被認(rèn)為是可信的。CRTM用于度量其它實體的完整值,并且在平臺的生命周期期間應(yīng)當(dāng)保持不變。CRTM是規(guī)范BIOS的擴展,其將首先被運行來在傳遞控制以前度量BIOS塊的其它部分。然后,BIOS度量硬件和啟動加載器,并且向啟動加載器傳遞控制。啟動加載器度量操作系統(tǒng)(OS)內(nèi)核并且向OS傳遞控制。
[0010]存儲BIOS和CRTM的計算機可讀介質(zhì)具有不可改變的部分,該不可改變的部分是通過防止主處理器或其它組件擦除或?qū)懭胗嬎銠C可讀介質(zhì)的該部分而創(chuàng)建的。例如,計算機可讀介質(zhì)的不可改變的部分可以位于防止主處理器寫入的地址范圍。然而,如果從計算系統(tǒng)中移除計算機可讀介質(zhì),則該計算機可讀介質(zhì)不包括防止該計算機可讀介質(zhì)的不可改變的部分被存儲器程序員重新寫入的保護。計算機可讀介質(zhì)還可以被在不可改變的地址部分具有不同代碼的另一計算機可讀介質(zhì)替換。如果通過移除計算可讀介質(zhì)并替換計算機可讀介質(zhì)而損害CRTM,則信任鏈被破壞并且系統(tǒng)完整性的任何進一步度量都是不可信的。
[0011]通過計算系統(tǒng)的不改變的部分驗證CRTM對建立信任鏈?zhǔn)侵匾?。雖然主處理器可能能夠驗證CRTM,但是處理器固件位于BIOS中,該BIOS直到CRTM用于驗證BIOS例程的其余部分時才能夠被驗證。
[0012]在一個實施例中,計算系統(tǒng)能夠包括非易失性存儲器。該非易失性存儲器能夠包括一部分,該部分是可信度量核心根(CRTM)。計算系統(tǒng)中的嵌入式控制器能夠驗證CRTM的供應(yīng)者。計算系統(tǒng)中的主處理器能夠在驗證真實性時運行CRTM來度量BIOS代碼的其它部分。
[0013]在一個實施例中,保護可信度量核心根(CRTM)的方法包括用嵌入式控制器讀取CRTM0該方法能夠用嵌入式控制器對CRTM進行哈希運算來創(chuàng)建哈希值,并且用嵌入式控制器使用公鑰對與CRTM —起包含的哈希值進行解密。能夠確定這兩個哈希值是否匹配,在匹配的情況下將該CRTM驗證為來自具有關(guān)聯(lián)私鑰的已知源。如果被解密的哈希值是未預(yù)期的值,則能夠停止嵌入式控制器代碼的加載。
[0014]關(guān)于附圖,圖1是根據(jù)示例實施例的包括嵌入式控制器的計算系統(tǒng)的框圖。計算系統(tǒng)100能夠包括非易失性存儲器120,非易失性存儲器120包括一部分,該部分是可信度量核心根(CRTM) 130。CRTM是被認(rèn)為可信的引導(dǎo)塊代碼。CRTM 130用于度量其它實體的完整性值。CRTM 130應(yīng)在計算系統(tǒng)的生命周期期間保持不變。CRTM 130是在啟動時在平臺上運行的第一段代碼。CRTM 130應(yīng)該是被信任的,以向被信任的平臺模塊或另一組件正確報告在CRTM 130以后運行的第一軟件/固件。
[0015]嵌入式控制器105能夠驗證CRTM 130的供應(yīng)者。嵌入式控制器105可以例如包括接收來自鍵盤的擊鍵信息或來自鼠標(biāo)的光標(biāo)移動信息的鍵盤控制器,對溫度進行度量或?qū)︼L(fēng)扇進行控制的熱控制器,或它們的組合。CRTM的供應(yīng)者可以是例如計算系統(tǒng)的制造者。驗證CRTM的供應(yīng)者可以通過例如數(shù)字簽名、CRC、校驗和、或別的驗證方法。數(shù)字簽名可以用于識別誰產(chǎn)生文件或文檔或者用于檢測并跟蹤對該文檔已做出的任何改變。數(shù)字簽名可以使用哈希函數(shù)和密碼密鑰。通過用嵌入式控制器確定CRTM是否來自特定供應(yīng)者,第三方可能不能從計算系統(tǒng)100中移除非易失性存儲器120并且用未由供應(yīng)者簽署的CRTM代碼替換或改編存儲器,并且然后啟動具有被替換或被改編的存儲器的計算系統(tǒng)。
[0016]計算系統(tǒng)包括處理器110,以在驗證真實性時運行CRTM。CRTM的運行對BIOS代碼的其它部分進行度量。在度量BIOS以后,CRTM能夠?qū)舆^程移交給BIOS代碼。BIOS能夠度量操作系統(tǒng)(OS)的啟動加載器并且啟動加載器能夠度量OS。啟動加載器是為組件或系統(tǒng)開始啟動過程的代碼,并且可以包括或者是固件。OS可以是從驗證CRTM的嵌入式控制器開始的鏈的末端。
[0017]CRTM 130能夠是不可改變的啟動塊。該不可改變的引導(dǎo)塊不能被計算系統(tǒng)100的不可改變的啟動塊以外的應(yīng)用程序?qū)懭牖虿脸@?,如果正被寫入CRTM的是已是CRTM一部分的代碼的運行結(jié)果,則處理器和嵌入式控制器能夠?qū)懭隒RTM,使得不將未知代碼寫入 CRTM。
[0018]圖2是根據(jù)示例實施例的包括嵌入式控制器的計算系統(tǒng)的框圖。計算系統(tǒng)200可以包括由嵌入式控制器運行的哈希函數(shù)235,以確定來自CRTM的哈希值。嵌入式控制器205可以訪問CRTM,并且基于哈希函數(shù)235讀取數(shù)據(jù)。
[0019]嵌入式控制器可以包括只讀存儲器245。只讀存儲器245可以包括用于嵌入式控制器的啟動加載器250。嵌入式控制器205可以提供CRTM的數(shù)字簽名驗證。只讀存儲器還可以包括哈希函數(shù)235。只讀存儲器245可以在嵌入式控制器上攜帶。嵌入式控制器可以不由例如改編程序修改。例如只讀存儲器245可以在相同封裝內(nèi),在相同基板上,或者連接至嵌入式控制器。嵌入式控制器可以包括在只讀存儲器245中的密碼密鑰。該密碼密鑰能夠用于非對稱數(shù)據(jù)或?qū)ΨQ數(shù)據(jù)的解密。解密密鑰可以是嵌入式控制器205上的公鑰,以解密來自CRTM 130的被加密的哈希值237。能夠?qū)⒈唤饷艿臄?shù)據(jù)與由嵌入式控制器從向基本輸入輸出系統(tǒng)(BIOS) 225的CTRM 130應(yīng)用的哈希函數(shù)235中生成的數(shù)據(jù)相比較。比較能夠引起驗證CRTM 130是來自該供應(yīng)者還是不來自該供應(yīng)者。如果CRTM來自該供應(yīng)者,那么啟動過程繼續(xù)并且CRTM度量BIOS。處理器110可以在驗證CRTM的供應(yīng)者以后并且通過控制器集線器215訪問BIOS 225。
[0020]嵌入式控制器可以拒絕加載嵌入式控制器代碼。嵌入式控制器可以基于只讀存儲器中的啟動加載器來操作。啟動加載器能夠是確定嵌入式控制器的操作的固件。提供只讀啟動加載器防止嵌入式控制器固件被改變,這使嵌入式控制器可靠地確定CRTM的供應(yīng)者。
[0021]圖3是根據(jù)示例實施例的保護可信度量核心根(CRTM)的方法的流程圖。保護可信度量核心根(CRTM)的方法300包括在305處中用嵌入式控制器讀取CRTM。在315處,嵌入式控制器能夠驗證CRTM的數(shù)字簽名。在一個實施例中,驗證數(shù)字簽名能夠包括通過向從CRTM讀取的數(shù)據(jù)應(yīng)用哈希函數(shù)來計算哈希值。
[0022]關(guān)于CRTM的被加密的哈希值能夠從CRTM中讀取并且用嵌入式控制器進行解密。該存儲的被加密的哈希值能夠通過應(yīng)用密鑰對該哈希值進行解密來解密。該密鑰可以是用于對稱加密或非對稱加密的密鑰,如公鑰和私鑰加密技術(shù)。
[0023]嵌入式控制器能夠確定被解密的哈希值與所計算的哈希值是否相匹配。如果被解密的哈希值是預(yù)期的哈希值,那么該CRTM來自已知的供應(yīng)者。預(yù)期的哈希值能夠通過將被解密的哈希值與由嵌入式控制器計算的CRTM的哈希值相比較來確定。匹配表明該CRTM是由已知的供應(yīng)者供應(yīng)的。
[0024]如果被解密的哈希值不是預(yù)期的值,那么不能認(rèn)證該CRTM的供應(yīng)者,因此不能確認(rèn)該信任鏈的根為可信的。這可能發(fā)生,如果存儲CRTM的非易失性存儲器被移除并在計算系統(tǒng)以外被替換或被改編,或者如果非易失性存儲器損壞,導(dǎo)致該非易失性存儲器上的數(shù)據(jù)出錯。如果被解密的哈希值不是預(yù)期的值,那么在325處嵌入式控制器停止加載用于該嵌入式控制器的固件代碼。如果用于嵌入式控制器的固件不加載,那么計算系統(tǒng)不利用CRTM度量BIOS,并且不向BIOS傳遞控制,這防止計算系統(tǒng)完全啟動操作系統(tǒng)。
[0025]圖4是根據(jù)示例實施例的保護可信度量核心根(CRTM)的方法的流程圖。方法400包括在405處用嵌入式控制器讀取CRTM。在410處,嵌入式控制器能夠?qū)RTM進行哈希運算,以產(chǎn)生被計算的哈希值。在415處,能夠?qū)用艿墓V颠M行解密。在420處,能夠進行確定,以確定被計算的哈希值是否是預(yù)期的值,如被解密的哈希值。
[0026]如果哈希值是預(yù)期的值,那么在435處用CRTM度量BIOS來繼續(xù)信任鏈。CRTM可以由處理器運行來確定BIOS是否是可信的。在一個實施例中,由CRTM對BIOS的度量使用信任平臺模塊來存儲度量結(jié)果,并且如果度量結(jié)果是相同的,則能夠可選地存儲在隨后啟動時僅由TPM發(fā)布的機密(密鑰)。這些密鑰可以用于例如封裝存儲。
[0027]如果該哈希不是預(yù)期的值,則在425處嵌入式控制器停止加載固件代碼。如果確定該哈希值是非預(yù)期的值,則在430處,能夠阻止CRTM在主處理器上運行。如果CRTM不能用于確認(rèn)BIOS是可信的,那么系統(tǒng)將不繼續(xù)啟動。
[0028]圖5是根據(jù)示例實施例的包括計算機可讀介質(zhì)515或516的計算系統(tǒng)500的框圖。計算機可讀介質(zhì)515或516能夠包括代碼,該代碼如果被運行則引起嵌入式控制器讀取存儲器上的BIOS的CRTM。該代碼能夠引起嵌入式控制器對CRTM進行哈希運算并且對在CRTM中的存儲的被加密的哈希進行解密。代碼能夠引起嵌入式控制器繼續(xù)從嵌入式控制器的啟動加載器ROM中加載代碼。
[0029]計算機可讀介質(zhì)515或516可以包括代碼,該代碼如果被運行則引起嵌入式控制器防止處理器用CRTM度量BIOS代碼。
[0030]上述技術(shù)可以體現(xiàn)在計算機可讀介質(zhì)中,以將計算系統(tǒng)配置為運行本方法。計算機可讀介質(zhì)可以包括例如且不限于以下任意多個:包括磁盤和磁帶存儲介質(zhì)的磁性存儲介質(zhì),如小型盤介質(zhì)(例如CD-ROM、CD-R等)和數(shù)字視頻盤存儲介質(zhì)這樣的光存儲介質(zhì),全息存儲器,包括如FLASH存儲器、EEPROM、EPROM、ROM這樣的基于半導(dǎo)體的存儲器單元的非易失性存儲器存儲介質(zhì),鐵磁數(shù)字存儲器,包括寄存器、緩沖器或緩存、主存儲器、RAM等的易失性存儲介質(zhì),以及互聯(lián)網(wǎng),等等。其它新的以及各類的計算機可讀介質(zhì)可以用于存儲和/或傳輸本文討論的軟件模塊。計算系統(tǒng)可以以許多形式存在,這許多形式包括但不限于大型機,小型計算機,服務(wù)器,工作站,個人計算機,掌上電腦,個人數(shù)字助理,各種無線設(shè)備,以及嵌入式系統(tǒng)等等。
[0031]在前面的描述中,闡述多個細(xì)節(jié)來提供對本發(fā)明的理解。然而,本領(lǐng)域技術(shù)人員將理解本發(fā)明可以在沒有這些細(xì)節(jié)的情況下實施。雖然已關(guān)于有限多個實施例公開本發(fā)明,但是本領(lǐng)域技術(shù)人員將領(lǐng)會由此帶來的許多修改和變化。希望所附權(quán)利要求覆蓋落入本發(fā)明的真正精神和范圍內(nèi)的這些修改和變化。
【權(quán)利要求】
1.一種計算系統(tǒng),包括: 非易失性存儲器,包括一部分,該部分是可信度量核心根(CRTM); 嵌入式控制器,驗證所述CRTM的供應(yīng)者;以及 主處理器,在驗證真實性時運行所述CRTM來度量BIOS代碼的其它部分。
2.如權(quán)利要求1所述的系統(tǒng),其中所述CRTM是不可改變的啟動塊。
3.如權(quán)利要求1所述的系統(tǒng),進一步包括只讀存儲器,該只讀存儲器用于在啟動期間由所述嵌入式控制器運行的在所述嵌入式控制器上攜帶的啟動代碼。
4.如權(quán)利要求1所述的系統(tǒng),其中所述嵌入式控制器是不能改編的。
5.如權(quán)利要求1所述的系統(tǒng),進一步包括哈希函數(shù),所述哈希函數(shù)由所述嵌入式控制器運行來確定來自所述CRTM的哈希值。
6.如權(quán)利要求5所述的系統(tǒng),進一步包括公鑰,所述公鑰被存儲在所述嵌入式控制器上來解密所述哈希值。
7.如權(quán)利要求6所述的系統(tǒng),其中所述嵌入式控制器拒絕加載嵌入式控制器代碼。
8.如權(quán)利要求7所述的系統(tǒng),進一步包括只讀存儲器中的嵌入式控制器啟動加載器。
9.一種保護計算系統(tǒng)上的可信度量核心根(CRTM)的方法,包括: 用嵌入式控制器讀取所述CRTM ; 用所述嵌入式控制器驗證所述CRTM的數(shù)字簽名;以及 如果被解密的哈希與被計算的哈希不匹配,則停止嵌入式控制器代碼的加載。
10.如權(quán)利要求9所述的方法,進一步包括:如果所述CRTM的數(shù)字簽名驗證失敗,則阻止所述CRTM在處理器上運行。
11.如權(quán)利要求9所述的方法,進一步包括:如果所述CRTM的數(shù)字簽名被驗證,則用所述CRTM度量BIOS的一部分。
12.—種計算機可讀介質(zhì),包括如果被運行則引起嵌入式控制器執(zhí)行以下操作的代碼: 讀取存儲器上的BIOS的CRTM ; 計算所述CRTM的哈希; 解密與所述CRTM —起包含的所述CRTM的被加密的哈希; 將被解密的哈希與被計算的哈希進行比較;以及 如果這些哈希不相等,則停止從所述嵌入式控制器的啟動加載器ROM中加載代碼。
13.如權(quán)利要求12所述的計算機可讀介質(zhì),進一步包括如果被運行則引起嵌入式控制器執(zhí)行以下操作的代碼: 阻止處理器用所述CRTM度量BIOS代碼。
【文檔編號】G06F9/06GK103502932SQ201180070517
【公開日】2014年1月8日 申請日期:2011年4月29日 優(yōu)先權(quán)日:2011年4月29日
【發(fā)明者】杰夫·讓索納, 莫尼·G·耶博里, 瓦利·阿利 申請人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)