專利名稱:可信部件更新系統(tǒng)和方法
可信部件更新系統(tǒng)和方法
背景技術(shù):
計(jì)算機(jī)制造商通常需要一種更新可信部件(例如基本輸入,/輸出系
統(tǒng)(BIOS)閃存)的內(nèi)容的方式,以修正錯(cuò)誤和/或提供新的能力。然而,使得BIOS閃存或其他可信部件能夠被修改會(huì)致使可信部件易于受到惡意的或未授權(quán)的邏輯的破壞。
為了更完全地理解本申請及其目標(biāo)和優(yōu)點(diǎn),現(xiàn)在結(jié)合附圖參考下列描述,其中
圖1是圖解可信部件更新系統(tǒng)的實(shí)施例的圖;以及圖2是圖解可信部件更新方法的實(shí)施例的圖。
具體實(shí)施例方式
圖1是圖解可信部件更新系統(tǒng)10的實(shí)施例的圖。更新系統(tǒng)10使得可信部件能夠驗(yàn)證對可信部件所提議的更新是由之前已被識別為可信源的源提供的,并且所提議的可信部件更新沒有被竄改。在圖l中圖解的實(shí)施例中,更新系統(tǒng)10包括具有可信部件90、中央處理單元(CPU)120和系統(tǒng)存儲(chǔ)器110的計(jì)算系統(tǒng)121。在圖1中,可信部件90包括固件存儲(chǔ)器100,例如固件閃存。計(jì)算系統(tǒng)121可以包括筆記本計(jì)算機(jī)、臺式計(jì)算機(jī)、服務(wù)器、游戲裝置、音頻裝置、視頻裝置或包含可信部件的任何類型的裝置。在圖l中,當(dāng)計(jì)算系統(tǒng)121首次通電、重新啟動(dòng)和/或重置時(shí),固件存儲(chǔ)器100為計(jì)算系統(tǒng)121提供啟動(dòng)(boot-up)功能。例如,固件存儲(chǔ)器100可以在CPU 120開始執(zhí)行指令的時(shí)間之前初始化CPU 120的配置,例如通過啟用和/或禁用CPU 120的某些能力以及設(shè)置CPU 120中的時(shí)鐘速率來初始化CPU 120的配置。
在圖1中圖解的實(shí)施例中,計(jì)算系統(tǒng)121包括兩個(gè)存儲(chǔ)器部分,它們由"信任,,分開并且通常分開地駐留在所制造的部件中。例如,在一些實(shí)施例中,固件存儲(chǔ)器IOO是包括可信存儲(chǔ)器引導(dǎo)塊102的閃存(例如當(dāng)計(jì)算系統(tǒng)121首次通電、重新啟動(dòng)和/或重置時(shí)用于為計(jì)算系統(tǒng)121 4提供啟動(dòng)功能),而存儲(chǔ)器110可能不包括可信存儲(chǔ)器和/或可以包括 非固件存儲(chǔ)器。但是,應(yīng)該理解,可信存儲(chǔ)器還可以駐留在不同于固件
存儲(chǔ)器100的位置中。如此處所使用的,"信任"或"可信"意味著對
在由計(jì)算硬件和/或軟件強(qiáng)加的預(yù)定義規(guī)則集內(nèi)的 一致操作的預(yù)期,例
如如在TCG規(guī)范體系結(jié)構(gòu)總體規(guī)范(,c/77ca ////"c力//e"歸 ^e/"K/e『5^ec/77ca〃0/2,,修訂版1. 2 (可信計(jì)算組,2004)中闡述的 "信任"的定義。例如,確保在計(jì)算系統(tǒng)121中的某個(gè)存儲(chǔ)器部分(諸 如固件存儲(chǔ)器100的引導(dǎo)塊102)的內(nèi)容僅包含由先前識別的源(定義 為可信源)產(chǎn)生的信息使得能夠信任系統(tǒng)部件的該某個(gè)部分。
固件存儲(chǔ)器100耦合到用于執(zhí)行啟動(dòng)操作的CPU 120并且耦合到用 于讀取由固件存儲(chǔ)器IOO使用的數(shù)據(jù)的存儲(chǔ)器110。在圖1中圖解的實(shí) 施例中,固件存儲(chǔ)器100包括非易失性閃存。在一些實(shí)施例中,固件存 儲(chǔ)器100包括基本輸入/輸出系統(tǒng)(BIOS)。在一些實(shí)施例中,固件存 儲(chǔ)器100包括可擴(kuò)展固件接口 (EFI)或統(tǒng)一EFI (UEFI)。但是,應(yīng)該 理解,固件存儲(chǔ)器1 0 0可以包括為計(jì)算系統(tǒng)提供啟動(dòng)功能性的任何系統(tǒng)。 存儲(chǔ)器110可以包括易失性存儲(chǔ)器、非易失性存儲(chǔ)器和永久存儲(chǔ)裝置(諸 如數(shù)字媒體驅(qū)動(dòng)器(DMD))。在圖1中圖解的實(shí)施例中,計(jì)算系統(tǒng)121 被示出為包括單個(gè)CPU 120,但是應(yīng)該理解可以使用更多數(shù)量的CPU。
在圖l中圖解的實(shí)施例中,固件存儲(chǔ)器100包括引導(dǎo)塊102。引導(dǎo) 塊102通常是當(dāng)計(jì)算系統(tǒng)121首次通電、重新啟動(dòng)和/或重置時(shí)在固件 存儲(chǔ)器100中執(zhí)行的初始邏輯。引導(dǎo)塊102是可信邏輯,因?yàn)橐龑?dǎo)塊102 被鎖定在固件存儲(chǔ)器100中,并且在正常的計(jì)算系統(tǒng)121工作期間被保 護(hù)而免于更新(即引導(dǎo)塊102被來自可信源的可信方法更新,該可信源 例如可以通過密碼方法祐j正實(shí))。
可信系統(tǒng)和可信方法是具有足夠安全級別以防止對可信存儲(chǔ)器的 內(nèi)容的未授權(quán)改變的系統(tǒng)和方法。例如,可信系統(tǒng)和可信方法可以使用 強(qiáng)大的安全方法,例如包括RSA驗(yàn)證、橢圓曲線密碼學(xué)(ECC)、數(shù)字 簽名算法(DSA)、安全散列(hash)算法1 ( SHA-1 )和SHA-2的密碼 算法以確??尚旁瓷梢欢ǖ臄?shù)字文件和/或確保自從可信源生成該數(shù) 字文件以來該數(shù)字文件沒有被改變或竄改。可信系統(tǒng)和可信方法確保在 使用該數(shù)字文件修改可信存儲(chǔ)器之前該數(shù)字文件可被信任。以這種方 式,未由可信源4受權(quán)的邏輯以及病毒不能進(jìn)入(keep out of)可信存儲(chǔ)器,即使可信存儲(chǔ)器是可修改的也是如此。
在圖1中圖解的實(shí)施例中,引導(dǎo)塊102包括初始化邏輯103、散列 邏輯104、散列值105、引導(dǎo)指令106和更新邏輯114。初始化邏輯103 包括在固件存儲(chǔ)器100的引導(dǎo)塊102中被處理和/或運(yùn)行的邏輯、數(shù)據(jù) 和指令。通常,當(dāng)固件存儲(chǔ)器100完成對在引導(dǎo)塊102中找到的和/或 由引導(dǎo)塊102引用(reference)的指令的處理時(shí),固件存儲(chǔ)器100在 將對計(jì)算系統(tǒng)121的控制轉(zhuǎn)移到操作系統(tǒng)之前可以執(zhí)行任何其他啟動(dòng)程 序。更新邏輯114包括用于重寫固件存儲(chǔ)器100的各部分(例如引導(dǎo)塊 102)的可運(yùn)行指令。
運(yùn)行散列邏輯104以通過執(zhí)行散列函數(shù)來驗(yàn)證數(shù)字文件的完整性, 該散列函數(shù)是數(shù)學(xué)運(yùn)算,其產(chǎn)生散列值作為結(jié)果。在一些實(shí)施例中,散 列邏輯104包括SHA-1算法,不過可以可替換地或附加地使用其他散列 函數(shù)。散列值105是先前計(jì)算的完整性證實(shí)值,其是用于證實(shí)數(shù)字文件 (例如可運(yùn)行的計(jì)算機(jī)程序)沒有被竄改的數(shù)值。在運(yùn)行中,在數(shù)字文 件上運(yùn)行散列邏輯104以便計(jì)算散列值,該散列值與存儲(chǔ)在固件存儲(chǔ)器 100中的散列值105相比較。因此,如果所計(jì)算的散列值對應(yīng)于散列值 105和/或以其他方式匹配散列值105,則該數(shù)字文件被認(rèn)為是可信賴的。 散列邏輯104和散列值105被存儲(chǔ)在駐留在固件存儲(chǔ)器100中的引導(dǎo)塊 102中。在一些實(shí)施例中,當(dāng)計(jì)算系統(tǒng)121被制造、整修(refurbish)、 更新或修理時(shí)散列邏輯104和散列值105最初被放置在引導(dǎo)塊102中。 因此,更新系統(tǒng)10能夠?qū)⑿湃螐囊龑?dǎo)塊102延伸到存儲(chǔ)在固件存儲(chǔ)器 IOO之外的數(shù)字文件,從而創(chuàng)建信任鏈。
在圖1中圖解的實(shí)施例中,存儲(chǔ)器11 0包括驗(yàn)證邏輯111和簽名的 更新112。簽名的更新112包括由可信方(例如計(jì)算系統(tǒng)121的制造商) 提議的用于可信部件90的更新,例如用于引導(dǎo)塊102的更新。例如, 簽名的更新112可以包括在更新數(shù)據(jù)116中表示的錯(cuò)誤修正(bug fix)。 驗(yàn)證邏輯111包括包含有簽名驗(yàn)證數(shù)據(jù)113的數(shù)據(jù)、邏輯和指令,以驗(yàn) 證簽名的更新112是由可信源(例如計(jì)算系統(tǒng)121的制造商或計(jì)算機(jī)網(wǎng) 絡(luò)管理員)產(chǎn)生的,并且進(jìn)一步地驗(yàn)證簽名的更新112自從被生成以來 沒有被竄改。散列邏輯104和驗(yàn)證邏輯111的每一個(gè)包括用于信任驗(yàn)證 的手段。但是,驗(yàn)證邏輯111可以是可信的,即使存儲(chǔ)在可信固件存儲(chǔ) 器100的外部,因?yàn)樯⒘羞壿?04使得固件存儲(chǔ)器100能夠?qū)⑿湃螐墓碳鎯?chǔ)器1GG延伸到驗(yàn)證邏輯111。通過使驗(yàn)證邏輯111能夠獨(dú)立地計(jì) 算在簽名的更新112中的數(shù)字簽名115的某些部分,來將簽名驗(yàn)證數(shù)據(jù) 113用于完整性驗(yàn)證(例如確保沒有竄改)和起源驗(yàn)證(例如確保先前 識別的可信源是生產(chǎn)者)。在圖1中圖解的實(shí)施例中,驗(yàn)證邏輯lll被 布置在系統(tǒng)存儲(chǔ)器110中和/或可以從系統(tǒng)存儲(chǔ)器110運(yùn)行。但是,應(yīng)
該理解,在一些實(shí)施例中,^S正邏輯110可以駐留在固件存儲(chǔ)器100中 并且從固件存儲(chǔ)器100運(yùn)行。
在一些實(shí)施例中,數(shù)字簽名115包括由簽名的更新112的創(chuàng)作者附 接到簽名的更新112的字母數(shù)字序列,其唯一地識別創(chuàng)作者并且還提供 利用散列算法來確保文件完整性的基礎(chǔ)。簽名驗(yàn)證數(shù)據(jù)113是驗(yàn)證邏輯 111用來使用數(shù)字簽名115和簽名的更新112的其他部分來執(zhí)行獨(dú)立計(jì) 算的數(shù)據(jù)。例如,在一些實(shí)施例中,簽名驗(yàn)證數(shù)據(jù)113包括通過可信方 的私有密鑰簽名和/或加密的更新數(shù)據(jù)116的散列。驗(yàn)證邏輯111對簽 名的更新112的至少一部分(例如更新數(shù)據(jù)116)進(jìn)行散列運(yùn)算,解密 數(shù)字簽名115并且確定更新數(shù)據(jù)116的散列是否對應(yīng)于解密的數(shù)字簽名 115。如果這兩個(gè)值相對應(yīng),則簽名的更新112被認(rèn)為是由可信方創(chuàng)作 的文件的經(jīng)過驗(yàn)證的復(fù)制,該文件自從被生成以來沒有被竄改。在一些 實(shí)施例中,驗(yàn)證邏輯111包括RSA驗(yàn)證,其是適合于數(shù)字簽名驗(yàn)證的算 法。
更新數(shù)據(jù)116包括被用來修改固件存儲(chǔ)器100的內(nèi)容(例如引導(dǎo)塊 102、散列邏輯104、散列值105以及引導(dǎo)指令106的內(nèi)容)的信息。在 一些實(shí)施例中,簽名的更新112可以進(jìn)一步或可替換地包括用于^r證邏 輯lll的修改信息。在一些實(shí)施例中,簽名的更新112包括能夠在不使 用更新邏輯114的情況下修改引導(dǎo)塊102的內(nèi)容的可運(yùn)行補(bǔ)丁程序 (patch program )。
在更新系統(tǒng)10的工作的一些實(shí)施例中,計(jì)算系統(tǒng)121的制造商或 其他實(shí)體生成具有簽名驗(yàn)證數(shù)據(jù)113的驗(yàn)證邏輯111,該簽名驗(yàn)證數(shù)據(jù) 113唯一地將該實(shí)體識別為用于固件存儲(chǔ)器100的將來更新的可信源。 該實(shí)體利用散列邏輯104的副本對所有或一部分驗(yàn)證邏輯111進(jìn)行散列 運(yùn)算以計(jì)算散列值105。散列邏輯104、散列值105以及引導(dǎo)指令106 被存儲(chǔ)在固件存儲(chǔ)器100內(nèi)的引導(dǎo)塊102中,并且驗(yàn)證邏輯111被存儲(chǔ) 在存儲(chǔ)器110中。在一些實(shí)施例中,每次計(jì)算系統(tǒng)121啟動(dòng)時(shí),引導(dǎo)指令106都搜索更新(例如簽名的更新112)可用和/或等待(例如在存儲(chǔ) 器110、硬盤或其他存儲(chǔ)介質(zhì)中等待)被用于修改固件存儲(chǔ)器100的內(nèi) 容的指示。例如,在計(jì)算系統(tǒng)121的先前使用期間,該實(shí)體可能已通過 計(jì)算機(jī)網(wǎng)絡(luò)發(fā)送電子消息,以將簽名的更新112放置在存儲(chǔ)器110中。
如果找到了簽名的更新112,則散列邏輯104通過對所有或一部分 驗(yàn)證邏輯111進(jìn)行散列運(yùn)算以及比較該散列運(yùn)算的結(jié)果和散列值105以 確保驗(yàn)證邏輯111沒有被竄改來證實(shí)驗(yàn)證邏輯111的完整性。如果驗(yàn)證 邏輯111是有效的(即基于驗(yàn)證邏輯111的散列值對應(yīng)于散列值105, 驗(yàn)證邏輯111被認(rèn)為是沒有被竄改的),則引導(dǎo)塊102使得運(yùn)行驗(yàn)證邏 輯111以使用簽名驗(yàn)證數(shù)據(jù)113驗(yàn)證數(shù)字簽名115的來源。例如,在一 些實(shí)施例中, -瞼證邏輯111 :故用來通過使用密碼方法(例如RSA數(shù)字簽 名驗(yàn)證算法)來驗(yàn)證與簽名的更新112相關(guān)聯(lián)的數(shù)字簽名文件(例如數(shù) 字簽名115)。因此,在一些實(shí)施例中,數(shù)字簽名115表示已被可信方 的私有密鑰加密的更新數(shù)據(jù)116的至少一部分的預(yù)計(jì)算的散列值。在運(yùn) 行中,驗(yàn)證邏輯111解密數(shù)字簽名115 (例如使用簽名驗(yàn)證數(shù)據(jù)113, 諸如與可信方的私有密鑰成對的公共密鑰),對更新數(shù)據(jù)116的對應(yīng)部 分進(jìn)行散列運(yùn)算,并且將所計(jì)算的散列值與解密的數(shù)字簽名115相比較。 如果數(shù)字簽名115的驗(yàn)證是成功的,則引導(dǎo)塊102運(yùn)行更新邏輯114以 使用更新數(shù)據(jù)116修改固件存儲(chǔ)器100 (例如引導(dǎo)塊102)的內(nèi)容。因 此,系統(tǒng)10的實(shí)施例使得制造商或其他可信實(shí)體能夠修正錯(cuò)誤和/或以 其他方式修改固件存儲(chǔ)器100,同時(shí)最小化了未授權(quán)實(shí)體對固件存儲(chǔ)器 100的未授權(quán)的或惡意的改變的風(fēng)險(xiǎn)。
圖2是圖解可信固件存儲(chǔ)器更新方法200的實(shí)施例的圖。參考圖1 的更新系統(tǒng)10來描述方法200,但是應(yīng)該理解方法200可以與可替換的 實(shí)施例一同使用。
在塊201處,引導(dǎo)塊102確定簽名的更新112是否存在(例如存在 于存儲(chǔ)器110中或其他地方)。如果不存在簽名的更新ll2,則方法進(jìn) 行到塊222,在此處引導(dǎo)塊102繼續(xù)引導(dǎo)計(jì)算系統(tǒng)121。如果簽名的更 新112可用或存在,則在塊2 04處引導(dǎo)塊102、散列邏輯104對驗(yàn)證邏 輯111進(jìn)行散列運(yùn)算以產(chǎn)生新計(jì)算的散列值。在塊206處,將新計(jì)算的 散列值與存儲(chǔ)在固件存儲(chǔ)器100中的散列值105進(jìn)行比較以確定驗(yàn)證邏 輯lll的有效性。如果在判斷塊208處,新計(jì)算的散列值不對應(yīng)于散列值105,則將不用這樣的更新來更新可信部件90,并且引導(dǎo)塊102在塊 222處改為繼續(xù)引導(dǎo)計(jì)算系統(tǒng)121。如果在判斷塊208處新計(jì)算的散列 值對應(yīng)于散列值105,則方法進(jìn)行到塊212。
在塊212處,驗(yàn)證邏輯111被運(yùn)行并且被用于通過對更新數(shù)據(jù)116 進(jìn)行散列運(yùn)算來驗(yàn)證簽名的更新112的數(shù)字簽名。在塊214處,驗(yàn)證邏 輯111使用簽名驗(yàn)證數(shù)據(jù)113來解密數(shù)字簽名115,并且在塊216處將 更新數(shù)據(jù)116的散列和解密的數(shù)字簽名115進(jìn)行比較。如果在判斷塊218 處更新數(shù)據(jù)116的散列不對應(yīng)于解密的數(shù)字簽名115,則簽名的更新112 的數(shù)字簽名不被驗(yàn)證,并且這樣的更新將不被加載、安裝或?qū)嵤?,而?導(dǎo)塊102在塊222處改為繼續(xù)引導(dǎo)計(jì)算系統(tǒng)121。如果在判斷塊218處, 更新數(shù)據(jù)116的散列與解密的數(shù)字簽名115的確匹配,則簽名的更新112 的數(shù)字簽名被認(rèn)為是驗(yàn)證為有效的,并且在塊220處通過運(yùn)行更新邏輯 114來利用更新數(shù)據(jù)116更新可信部件90。在塊222處,引導(dǎo)塊102繼 續(xù)引導(dǎo)計(jì)算系統(tǒng)121。
因此,更新系統(tǒng)10的實(shí)施例使得能夠?qū)尚糯鎯?chǔ)器進(jìn)行現(xiàn)場更新。 應(yīng)該理解,在所描述的方法中,某些功能可以被省略,以不同于圖2所 描繪的順序完成或者同時(shí)執(zhí)行。而且,應(yīng)該理解,在圖2中描繪的方法 可以 一皮改變以包括說明書其他地方所描述的任何其他特征或方面。此
上運(yùn)行。特別地,由邏輯104、邏輯111和邏輯114實(shí)施的功能例如可 以被提供為可運(yùn)行指令的有序列表,其可以被包括在任何計(jì)算機(jī)可讀介 質(zhì)中以由指令運(yùn)行系統(tǒng)、設(shè)備或裝置使用或結(jié)合所述指令運(yùn)行系統(tǒng)、設(shè) 備或裝置使用,所述指令運(yùn)行系統(tǒng)、設(shè)備或裝置例如基于計(jì)算機(jī)的系統(tǒng)、 包含處理器的系統(tǒng)或能夠從指令運(yùn)行系統(tǒng)、設(shè)備或裝置取出指令并運(yùn)行 這些指令的其他系統(tǒng)。在本文件的上下文中,"計(jì)算機(jī)可讀介質(zhì),,可以 是可以包含、存儲(chǔ)、傳送、傳播或傳輸程序以由指令運(yùn)行系統(tǒng)、設(shè)備或 裝置使用或結(jié)合指令運(yùn)行系統(tǒng)、設(shè)備或裝置使用的任何裝置。所述計(jì)算 機(jī)可讀介質(zhì)例如可以是但不限于電子的、磁的、光學(xué)的、電磁的、紅外 的或半導(dǎo)體系統(tǒng)、設(shè)備、裝置或傳播介質(zhì)。
9
權(quán)利要求
1、一種可信部件更新系統(tǒng)(10),包括驗(yàn)證邏輯(111),其被配置成證實(shí)對計(jì)算裝置(121)的可信部件(90)的更新的完整性;以及邏輯(104),其被布置在所述可信部件(90)中并且被配置成證實(shí)所述驗(yàn)證邏輯(111)的完整性。
2. 根據(jù)權(quán)利要求1所述的系統(tǒng)(10),其中在所述可信部件(90) 中的邏輯(104)被配置成對所述驗(yàn)證邏輯(111 )的至少一部分進(jìn)行散 列運(yùn)算以證實(shí)所述驗(yàn)證邏輯(111)的完整性。
3. 根據(jù)權(quán)利要求1所述的系統(tǒng)(10),其中在所述可信部件(90) 中的邏輯(104 )被配置成對所述驗(yàn)證邏輯(111 )的至少一部分進(jìn)行散 列運(yùn)算并且將所述散列運(yùn)算的結(jié)果與存儲(chǔ)在所述可信部件(90)中的預(yù) 定散列值(105)進(jìn)行比較。
4. 根據(jù)權(quán)利要求1所述的系統(tǒng)(10),其中所述驗(yàn)證邏輯(111) 被配置成證實(shí)與所述更新相關(guān)聯(lián)的簽名(115)的完整性。
5. 根據(jù)權(quán)利要求1所述的系統(tǒng)(10),其中所述驗(yàn)證邏輯(111) 被配置成對所述更新的至少一部分進(jìn)行散列運(yùn)算以證實(shí)所述更新的完 整性。
6. —種可信部件更新方法,包括使用驗(yàn)證邏輯(lll)證實(shí)對計(jì)算裝置(121)的可信部件(90)的 更新的完整性;以及使用布置在所述可信部件(90)中的邏輯(104)證實(shí)所述驗(yàn)證邏 輯(111 )的完整性。
7. 根據(jù)權(quán)利要求6所述的方法,其中證實(shí)所述更新的完整性包括 證實(shí)與所述更新相關(guān)聯(lián)的簽名(115)的完整性。
8. 根據(jù)權(quán)利要求6所述的方法,其中證實(shí)所述驗(yàn)證邏輯(111)的 完整性包括對所述驗(yàn)證邏輯(111)的至少一部分進(jìn)行散列運(yùn)算。
9. 根據(jù)權(quán)利要求6所述的方法,其中證實(shí)所述驗(yàn)證邏輯(111)的 完整性包括對所述驗(yàn)證邏輯(111)的至少一部分進(jìn)行散列運(yùn)算并且將 所述散列運(yùn)算的結(jié)果與存儲(chǔ)在所述可信部件(90)中的預(yù)定散列值(105) 進(jìn)行比較。
10. 根據(jù)權(quán)利要求6所述的方法,其中證實(shí)所述更新的完整性包括對所述更新的至少 一部分進(jìn)行散列運(yùn)算。
全文摘要
一種可信部件更新系統(tǒng)(10),包括驗(yàn)證邏輯(111),其被配置成證實(shí)對計(jì)算裝置(121)的可信部件(90)的更新的完整性;以及邏輯(104),其被布置在所述可信部件(90)中并且被配置成證實(shí)所述驗(yàn)證邏輯(111)的完整性。
文檔編號G06F9/06GK101657792SQ200880011964
公開日2010年2月24日 申請日期2008年3月7日 優(yōu)先權(quán)日2007年4月13日
發(fā)明者B·巴拉歇夫, L·王, V·Y·阿利 申請人:惠普開發(fā)有限公司