欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

安全引導的制作方法

文檔序號:7636310閱讀:199來源:國知局
專利名稱:安全引導的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及操作系統(tǒng)和計算機系統(tǒng)安全性,尤其涉及使用本地儲存的密鑰在 計算系統(tǒng)的各種傳輸點處的多個完整性檢査。
北旦 冃豕
安全性是任何計算設(shè)備用戶的主要問題,計算設(shè)備可以是包括執(zhí)行儲存在存 儲器中的程序代碼以執(zhí)行某一功能的處理器的任何設(shè)備。計算系統(tǒng)的易受攻擊方面
包括但不限于,引導過程的傳輸點(例如,其中BIOS將系統(tǒng)控制傳輸?shù)揭龑Тa 的點)以及先前被加載到計算系統(tǒng)上的程序的后續(xù)操作。
傳輸點是其中系統(tǒng)控制從計算設(shè)備的一個模塊或一組指令傳輸?shù)皆撚嬎阍O(shè)備 的另一模塊或另一組指令的時間點。引導過程期間的傳輸在一個模塊(例如,BIOS) 完成其任務時發(fā)生,在這一點上它將控制傳遞給下一模塊,使得可啟動計算機啟動
的下一階段。另一種傳輸在所選的程序由系統(tǒng)給予運行許可時發(fā)生。
在傳輸點處,計算設(shè)備特別易受來自病毒或其它惡意代碼的安全破壞的攻擊, 這些病毒或惡意代碼通過將其自己偽裝成規(guī)范代碼來取得系統(tǒng)控制。例如,將其自 己偽裝成引導程序的惡意程序在操作系統(tǒng)的內(nèi)部安全措施具有取得控制的機會之 前將被給予對整個系統(tǒng)的控制。惡意代碼也可通過隱藏在本應規(guī)范的程序內(nèi)來偽裝 其自己。通常,病毒是有害的,并且可破壞文件和以其它方式破壞計算設(shè)備。可確 定程序是否是它所聲稱的程序的系統(tǒng)和方法為使得計算設(shè)備對病毒和其它惡意代 碼更安全進行了很長時間的研究。
作為一種針對未授權(quán)程序修改的安全性,在計算系統(tǒng)中采用了數(shù)據(jù)簽名。檢 測程序是否被更改、篡改或修改的公知方案包括使用數(shù)字簽名。在執(zhí)行程序之前, 例如通過諸如安全散列算法(SHA 1)或MD5等散列算法來創(chuàng)建該程序的唯一表 示。該唯一表示然后用私鑰來簽署或加密,私鑰從可信授權(quán)機構(gòu)提供給作者并且可 通過單獨的注冊和驗證過程來驗證作者的真實性。加密的表示作為與該程序相關(guān)聯(lián) 的一種形式的數(shù)字簽名與該程序一起儲存。當要執(zhí)行該程序時,用對應于用于簽署 該程序的表示的私鑰的公鑰來解密或驗證簽名。要執(zhí)行的程序的唯一表示是使用用
于原始程序的同一算法來形成的。該表示可被認為是確認。如果確認匹配解密的簽 名,則程序未被篡改或更改,且可被執(zhí)行,因為它已被成功驗證。然而,如果確認 和解密的簽名不匹配,則該程序不應被執(zhí)行,因為這表示它已被修改。
當然,惡意代碼作者也可包括簽名。因而,驗證過程實際上將驗證出該代碼 是它所聲稱的代碼。然而,惡意代碼作者不情愿采取這些步驟,因為大多數(shù)簽名過 程依賴于可信密鑰發(fā)布授權(quán)機構(gòu)并引入一種可通往該作者的身份的個人檔案。另 外,這也需要向密鑰發(fā)布授權(quán)機構(gòu)支付費用。因此,要求簽署其上運行的所有代碼 的系統(tǒng)為根除惡意代碼以及提供對誰創(chuàng)作了其機器上存在的代碼的用戶可見性尚 有很長一段路要走。不幸的是,當前可用的許多程序出于諸如增加的復雜性和成本 等各種原因未被簽署。因此,當計算設(shè)備的用戶接收到某種程序時,用戶例如無法 驗證該代碼且無法驗證一個未驗證程序可能是惡意的并且會損壞整個計算設(shè)備。
此外,除了用戶選擇運行的程序之外,引導程序也可能被惡意地修改,從而 僅僅通過打開或啟動計算設(shè)備就會導致問題。
無法加載并運行未簽署的程序并不是一種可行的選項,因為有太多的現(xiàn)有程 序?qū)⒙淙脒@一分類中。因此,要求簽署所有的程序?qū)@著降低程序的可用性并且將 破壞許多傳統(tǒng)應用程序。
由此,期望具有一種圍繞上述限制來工作并對計算設(shè)備的模塊執(zhí)行完整性檢 査的模型。
發(fā)明概述
考慮到本領(lǐng)域的上述和其它缺點,本發(fā)明提供一種用于通過在傳輸執(zhí)行控制 之前執(zhí)行檢查來驗證模塊的完整性的系統(tǒng)和方法。
本發(fā)明還提供了一種用于向未簽署程序應用本地儲存的簽署密鑰以在后續(xù)操 作中確保代碼未被更改的系統(tǒng)和方法。本發(fā)明允許將本地簽名應用于程序。簽名用 于稍后確定該程序是否在加載操作之間被更改。為此,該系統(tǒng)和方法對程序執(zhí)行一 函數(shù)以生成該程序的第一表示。該第一表示然后用本地儲存的密鑰來加密。較佳地, 該第一表示使用散列函數(shù)來生成。較佳地,本地儲存的密鑰是來自公鑰/私鑰對的 私鑰。在執(zhí)行程序之前,對該程序執(zhí)行該函數(shù)以生成第二表示。加密的第一表示也 被解密以生成解密的第一表示。將兩個表示進行比較以驗證該程序未改變。
以下描述本發(fā)明的其它優(yōu)點和特征。
附圖簡述
參考附圖進一步描述根據(jù)本發(fā)明的用于在計算設(shè)備的整個操作期間,包括引 導過程和己加載的可執(zhí)行碼的執(zhí)行期間使用本地儲存的簽署密鑰來執(zhí)行完整性檢 査的系統(tǒng)和方法,附圖中-


圖1是其中可實施本發(fā)明的示例性計算環(huán)境的框圖2是示出在操作系統(tǒng)的引導循環(huán)期間的傳輸控制鏈的框圖3a-3b是示出根據(jù)本發(fā)明的完整性檢査的實現(xiàn)的流程圖4是用于確定程序是否己被修改的程序及其組件的框圖表示;以及 圖5是描繪使用本地儲存的簽署密鑰來驗證程序的流程圖。
發(fā)明詳述
圖1和以下討論提供了可結(jié)合其來實現(xiàn)本發(fā)明的合適的計算環(huán)境的簡要概括 描述。本發(fā)明可以使用眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置來操作。適用于本 發(fā)明的眾所周知的計算系統(tǒng)、環(huán)境和/或配置的示例包括但不限于,個人計算機、 服務器計算機、手持式或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機頂盒、
可編程消費者電子設(shè)備、網(wǎng)絡PC、小型機、大型機、包括任一上述系統(tǒng)或設(shè)備的
分布式計算環(huán)境等等。
參考圖1,用于實現(xiàn)本發(fā)明的示例性系統(tǒng)包括計算機110形式的通用計算設(shè) 備。計算機110的組件可包括但不限于,處理單元120、系統(tǒng)存儲器130以及將包 括系統(tǒng)存儲器130的各類系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。系統(tǒng)總線 121可以是若干種總線結(jié)構(gòu)的任一種,包括存儲器總線或存儲器控制器、外圍總線 以及使用各類總線體系結(jié)構(gòu)的任一種的局部總線。作為示例而非局限,這類體系結(jié) 構(gòu)包括工業(yè)標準體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強ISA (EISA)總線、視頻電子技術(shù)標準協(xié)會(VESA)局部總線、外圍部件互連(PCI) 總線(也稱為Mezzanine總線)以及PCI Express (PCIe)。
計算機110通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由計算 機110訪問的任一可用介質(zhì),包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。 作為示例而非局限,計算機可讀介質(zhì)包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲 介質(zhì)包括以用于儲存諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息 的任一方法或技術(shù)實現(xiàn)的易失性和非易失性,可移動和不可移動介質(zhì)。計算機存儲 介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)
備、或可以用來儲存所期望的信息并可由計算機iio訪問的任一其它介質(zhì)。通信介
質(zhì)通常具體化為諸如載波或其它傳輸機制的已調(diào)制數(shù)據(jù)信號中的計算機可讀指令、 數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語"已調(diào)制數(shù)據(jù)信 號"指以對信號中的信息進行編碼的方式設(shè)置或改變其一個或多個特征的信號。作 為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡或直接連線連接,以及無線
介質(zhì),如聲學、RF、紅外和其它無線介質(zhì)。上述任一的組合也應當包括在計算機 可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器130包括以易失性和/或非易失性存儲器形式的計算機存儲介質(zhì), 如只讀存儲器(ROM) 131和隨機存取存儲器(RAM) 132?;据斎?輸出系統(tǒng) 133(BIOS)包括如在啟動時幫助在計算機110內(nèi)的元件之間傳輸信息的基本例程, 通常儲存在ROM 131中。RAM 132通常包含處理單元120立即可訪問和/或當前 正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖1示出了操作系統(tǒng)134、應 用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計算機110還可包括其它可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)。 僅作示例,圖l示出了對不可移動、非易失性磁介質(zhì)進行讀寫的硬盤驅(qū)動器141; 對可移動、非易失性磁盤152進行讀寫的磁盤驅(qū)動器151;以及對可移動、非易失 性光盤156,如CDROM或其它光介質(zhì)進行讀寫的光盤驅(qū)動器155。可以在示例性 操作環(huán)境中使用的其它可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)包括但 不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM 等等。硬盤驅(qū)動器141通常通過不可移動存儲器接口,如接口 140連接到系統(tǒng)總線 121,磁盤驅(qū)動器151和光盤驅(qū)動器155通常通過可移動存儲器接口,如接口 150 連接到系統(tǒng)總線121。
上文討論并在圖1示出的驅(qū)動器及其關(guān)聯(lián)的計算機存儲介質(zhì)為計算機110提 供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。例如,在圖1中, 示出硬盤驅(qū)動器141儲存操作系統(tǒng)144、應用程序145、其它程序模塊146和程序 數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應用程序135、其它程序模塊136 和程序數(shù)據(jù)137相同,也可以與它們不同。這里對操作系統(tǒng)144、應用程序145、 其它程序模塊146和程序數(shù)據(jù)147給予不同的標號來說明至少它們是不同的副本。
用戶可以通過輸入設(shè)備,如鍵盤162和定位設(shè)備161 (通常指鼠標、跟蹤球或 觸摸墊)向計算機110輸入命令和信息。其它輸入設(shè)備(未示出)可包括話筒、操
縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過耦合
至系統(tǒng)總線121的用戶輸入接口 160連接至處理單元120,但是也可以通過其它接 口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器191 或其它類型的顯示設(shè)備也通過接口,如視頻接口 190連接至系統(tǒng)總線121,視頻接 口進而與視頻存儲器186通信。除監(jiān)視器之外,計算機也可包括其它外圍輸出設(shè)備, 如揚聲器197和打印機196,它們通過輸出外圍接口 195連接。
計算機110可以使用到一個或多個遠程計算機,如遠程計算機180的邏輯連 接在網(wǎng)絡化或分布式環(huán)境中操作。遠程計算機180可以是個人計算機、服務器、路 由器、網(wǎng)絡PC、對等設(shè)備或其它常見的網(wǎng)絡節(jié)點,并通常包括許多或所有以上相 對于計算機IIO所描述的元件,盡管在圖1中僅示出了存儲器存儲設(shè)備181。圖1 描述的邏輯連接包括局域網(wǎng)(LAN) 171和廣域網(wǎng)(WAN) 173,但也可包括其它 網(wǎng)絡/總線。這類網(wǎng)絡環(huán)境常見于家庭、辦公室、企業(yè)范圍計算機網(wǎng)絡、內(nèi)聯(lián)網(wǎng)以 及因特網(wǎng)。
當在LAN網(wǎng)絡環(huán)境中使用時,計算機IIO通過網(wǎng)絡接口或適配器170連接至 LAN 171。當在WAN網(wǎng)絡環(huán)境中使用時,計算機IIO通常包括調(diào)制解調(diào)器172或 用于通過WAN173,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器172可以是內(nèi)置 或外置的,它通過用戶輸入接口 160或其它適當?shù)臋C制連接至系統(tǒng)總線121。在網(wǎng) 絡化環(huán)境中,相對于計算機IIO所描述的程序模塊或其部分可儲存在遠程存儲器存 儲設(shè)備中。作為示例而非局限,圖1示出遠程應用程序185駐留在存儲器設(shè)備181 上??梢岳斫?,示出的網(wǎng)絡連接是示例性的,也可以使用在計算機之間建立通信鏈 路的其它手段。
此處所描述的各種技術(shù)可結(jié)合硬件或軟件來實現(xiàn),或在適當時以兩者的組合 來實現(xiàn)。由此,本發(fā)明的方法和裝置或其某些方面或部分,可采用包含在諸如軟盤、 CD-ROM、硬盤驅(qū)動器或任何其它機器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(即, 指令)的形式,其中,當程序代碼被加載到諸如計算機等機器中并由其執(zhí)行時,該 機器變?yōu)橛糜趯嵤┍景l(fā)明的裝置。在可編程計算機上的程序代碼執(zhí)行的情況下,計 算裝置一般包括處理器、處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和 /或存儲元件)、至少一個輸入設(shè)備以及至少一個輸出設(shè)備??衫缤ㄟ^使用API、 可重復使用控件等來實現(xiàn)或利用結(jié)合本發(fā)明描述的過程的一個或多個程序較佳地 用高級過程語言或面向?qū)ο蟮木幊陶Z言來實現(xiàn),以與計算機系統(tǒng)通信。然而,如有 需要,程序可以用匯編語言或機器語言來實現(xiàn)。在任何情況下,語言可以是已編譯或已解釋語言,并與硬件實現(xiàn)相組合。
盡管示例性實施例涉及在一個或多個獨立計算機系統(tǒng)的上下文中利用本發(fā) 明,但本發(fā)明不限于此,而是相反,可以結(jié)合諸如網(wǎng)絡或分布式計算環(huán)境等任何計 算環(huán)境來實現(xiàn)。此外,本發(fā)明可以在多個處理芯片或設(shè)備中或跨多個處理芯片或設(shè) 備來實現(xiàn),并且存儲可類似地跨多個設(shè)備來實現(xiàn)。這些設(shè)備可包括個人計算機、網(wǎng) 絡服務器、手持式設(shè)備、超型計算機或被集成到諸如汽車和飛機等其它系統(tǒng)中的計 算機。
圖2是根據(jù)本發(fā)明的一方面的在計算系統(tǒng)的引導過程期間的傳輸控制的框圖 說明。在將控制傳輸?shù)矫恳患墑e之前驗證該特定級別的完整性。
BIOS 133包含有助于在啟動期間在計算機110內(nèi)的元件之間傳輸信息的基本 例程。如上所述,BIOS 133通常包含在計算機系統(tǒng)的只讀存儲器(ROM) 131中, 從而確保它總是可用的。當計算機110被打開時,對啟動過程的控制被傳遞到BIOS 133,后者控制操作系統(tǒng)134和諸如鼠標161、鍵盤162和監(jiān)視器191等各種設(shè)備 之間的交互。當BIOS 133啟動計算機110時,它在定位實際將操作系統(tǒng)134加載 到計算機110的隨機存取存儲器(RAM) 132中的引導程序之前確認所有附件都是 可操作的。
引導塊210是磁盤驅(qū)動器141中實際引導程序所處的扇區(qū)。BIOS 133將引導 塊210加載到計算機110的RAM132中。然后,在執(zhí)行引導塊210的完整性檢查 (以下詳細描述)之后,BIOS 133將系統(tǒng)控制傳遞到引導塊210。引導塊210中的 引導程序具有非常有限的功能。其任務僅僅是將足夠的操作系統(tǒng)134加載到RAM 132中,使得操作系統(tǒng)134可在某一初步級別處啟動運作并開始將其自身加載到計 算設(shè)備中。
為此,引導程序加載加載器220,它是操作系統(tǒng)134的一部分并加載操作系統(tǒng) 134的剩余部分。在操作系統(tǒng)134完全可運作之后,它也可定位并加載諸如可位于 硬盤141、 CD ROM 156或甚至在網(wǎng)絡171或173上的應用程序135等各種程序。 在定位程序之后,操作系統(tǒng)隨后將所選的程序加載到RAM132中,使得程序指令 可執(zhí)行。加載的程序可具有同樣需要加載的其自己的組件,并且加載器220也負責 這一操作。
如上所述,計算設(shè)備驗證將在系統(tǒng)上運行的各種模塊的完整性。它通過使用 密鑰來完成這一工作。密鑰被儲存在一安全位置中,該位置可以是磁盤驅(qū)動器141 的加密部分或可被嵌入在安全存儲器位置等中。在本發(fā)明的一個實施例中,密鑰在企業(yè)內(nèi)由域控制器集中分配和管理。
在本發(fā)明的一個實施例中,由加載器220檢索本地儲存的密鑰225。本地儲存 的密鑰225可以對計算系統(tǒng)是唯一的,并且可以隨著時間改變以通過使得更難確定 密鑰值來進一步保護系統(tǒng)。本地儲存的密鑰225可以由計算設(shè)備合成或者可以例如 在計算設(shè)備的制造期間被放置在計算設(shè)備的內(nèi)部。因此,在加載器加載操作系統(tǒng)的 任何部分并向其傳遞控制之前,它必須首先驗證操作系統(tǒng)碼。根據(jù)本發(fā)明的一方面, 用本地儲存的密鑰225簽署引導序列的每一部分。然后,在加載操作系統(tǒng)的每一部 分之前,執(zhí)行驗證以確保該代碼已至少由本地儲存的密鑰225簽署且該代碼部分未 被修改。
內(nèi)核230是操作系統(tǒng)134的中心部分,并且可被認為是計算機110的管理模 塊。因此,內(nèi)核230不被任何惡意代碼感染是非常重要的。允許惡意代碼在內(nèi)核中 運行可能是災難性的。內(nèi)核一般是操作系統(tǒng)中要加載的第一部分,且必須在獲得對 系統(tǒng)的控制之前經(jīng)受本地密鑰的驗證。操作系統(tǒng)的基本但必需的服務由內(nèi)核230 提供和管理。它負責存儲器管理、進程和任務管理以及磁盤管理。應用程序135 請求內(nèi)核230的各種服務。通常,內(nèi)核230包括用于處理競爭其服務的所有請求的 中斷處理程序、用于確定處理的順序的調(diào)度程序、以及用于允許使用計算機110 來完成每一調(diào)度的進程的管理程序。內(nèi)核230經(jīng)常被使用,且保留在計算機110 的主存儲器中,因此通常被加載到受保護計算機存儲區(qū)域中。內(nèi)核230在允許可執(zhí) 行文件240運行之前執(zhí)行對任何可執(zhí)行文件240的完整性檢査。
可執(zhí)行文件240是包含程序且能夠作為計算機110中的程序來執(zhí)行或運行的 文件。當選擇可執(zhí)行文件240來運行時,操作系統(tǒng)134執(zhí)行該程序??蓤?zhí)行文件 240也可被稱為二進制碼,因為這些文件是二進制值的序列。然而,某些其它程序 即使不是嚴格說來的二進制文件也可被認為是可執(zhí)行文件。例如,字節(jié)代碼程序可 被認為是可執(zhí)行的,因為它們旨在計算系統(tǒng)上運行。本應是規(guī)范程序的可執(zhí)行文件 240可被更改以包含惡意代碼,由此示出了僅運行從可信源接收的那些文件并確認 文件在操作之間未被修改的重要性。
圖2還示出了在系統(tǒng)啟動期間對各種組件的完整性檢查的過程。最初,BIOS 133在將執(zhí)行控制傳輸?shù)揭龑K210之前檢查引導塊210的完整性。當然,BIOS 133 被儲存在非易失性存儲器中且因此不能被修改。因此,完整性檢查并不是必需的。 在將控制傳遞到引導塊210之后,它執(zhí)行引導過程中的其部分,即加載加載器220, 后者加載操作系統(tǒng)134的剩余部分。在傳遞控制之前,引導塊210驗證加載器220的完整性。類似地,加載器加載操作系統(tǒng)內(nèi)核230。但是在加載內(nèi)核230之前,加 載器220驗證內(nèi)核230的完整性。之后,在計算設(shè)備110的正常操作過程中,用戶 將在計算設(shè)備IIO上執(zhí)行各種程序和應用。這些程序和應用也需要被驗證。因此, 在內(nèi)核230確認了可執(zhí)行文件240的完整性之后,執(zhí)行控制然后從內(nèi)核230傳遞到 可執(zhí)行文件240。
本發(fā)明的一方面允許加載器220是計算機可讀介質(zhì)上可用的代碼的只讀副本, 這些計算機可讀介質(zhì)諸如可移動、非易失性光盤156,如CDROM或DVD;或可 移動、非易失性磁盤152,如磁帶盒。在本實施例中,加載器220在將執(zhí)行控制傳 輸?shù)阶鳛榭蓪懡橘|(zhì)的內(nèi)核230之前確認來自計算機可讀介質(zhì)的內(nèi)核230的完整性。 本實施例引入了附加的安全措施,因為只讀介質(zhì)不能被外部病毒作者更改。
本發(fā)明不限于僅對引導程序和可執(zhí)行文件的完整性檢査。相反,完整性檢査 可對包括但不限于字節(jié)代碼文件、可執(zhí)行文件和啟動程序的任何程序執(zhí)行。
此外,本發(fā)明不限于在執(zhí)行計算機系統(tǒng)上的所有程序之前的完整性檢査的實 現(xiàn)。根據(jù)本發(fā)明,檢査可對一個程序或多個所選程序執(zhí)行。
圖3a和3b詳細敘述了圖2所示的步驟。此處,各種步驟被示為在完整性檢 查中在傳輸執(zhí)行控制之前進行。再一次,完整性檢查不限于每一級別,且不僅限于 引導程序,而是可對任何類型的程序執(zhí)行。根據(jù)本發(fā)明,程序的示例包括但不限于, 可執(zhí)行文件、引導和啟動文件、批處理程序以及腳本。 一些示例是引導塊、加載器 代碼、內(nèi)核以及可執(zhí)行文件或已記載圖像。
BIOS 133最初具有對啟動過程的控制,并在圖3a的步驟300中在確認各種附 件的可操作性之后開始將操作系統(tǒng)134加載到RAM 132的過程。BIOS 133通常被 儲存在非易失性存儲器中,并在計算設(shè)備的引導期間被移至易失性存儲器(即, RAM 132)中。為此,BIOS 133本身可以不被驗證,因為它不易于被更改。然而, 可執(zhí)行預BIOS驗證步驟,該步驟使BIOS經(jīng)歷與在計算設(shè)備110上操作的其它程 序模塊相同的驗證過程。這在BIOS被儲存在閃存或者期望確保BIOS本身未被替 換的情況下尤為真實。在步驟310中,BIOS 133檢査引導塊210的完整性。如果 在步驟320中令人滿意地驗證了完整性,則BIOS 133在步驟330中將引導塊210 加載到RAM 132中并將系統(tǒng)的執(zhí)行控制傳遞到引導塊210。如果未確認完整性, 則在步驟340中停止引導循環(huán)。
如果引導塊210接收到執(zhí)行控制,則引導塊210在步驟350處將操作系統(tǒng)134
的剩余部分加載到RAM 132中。引導塊210還在將執(zhí)行控制傳遞到加載器220之
前檢査加載器220的完整性。加載器220完整性檢查在步驟360處執(zhí)行。如果加載 器220的完整性未被確認,則該循環(huán)在步驟340處停止。如果引導塊210發(fā)現(xiàn)加載 器220的完整性是令人滿意的,則引導塊210在步驟370處將執(zhí)行控制傳輸?shù)郊虞d 器220。加載器220然后負責定位用戶選擇要執(zhí)行的程序并將其加載到RAM 132 中。這一定位和加載操作在步驟380處發(fā)生。
在圖3b的步驟390處,加載器220驗證內(nèi)核230的完整性。類似于先前的完 整性檢查,如果該檢查在400中確認完整性,則在步驟410處將傳輸控制從加載器 220發(fā)送到內(nèi)核230。如果未確認完整性,則該過程繼續(xù)到步驟420,在那里停止 該循環(huán)。
在步驟430處,現(xiàn)在擁有執(zhí)行控制的內(nèi)核230確定所選程序的完整性。如果 在步驟440處確認諸如已加載圖像或可執(zhí)行文件等程序的完整性,則在步驟450 處將計算系統(tǒng)的執(zhí)行控制傳輸?shù)皆摮绦?,使得所選程序可被執(zhí)行。如果未確認該程 序的完整性,則該循環(huán)在步驟420處停止,并且該程序不接收執(zhí)行控制。
先前的流程圖示出了如何在各種傳輸控制點處執(zhí)行完整性檢查。圖4詳細敘 述了這一過程并且提供了完整性驗證過程本身的框圖表示。例如但不限于引導過程 中涉及的模塊的一部分、操作系統(tǒng)或應用程序的程序由程序500來表示。本發(fā)明的 目的之一是確定在后續(xù)操作中程序500是否被更改。如果發(fā)生了某種修改,則系統(tǒng) 確定重新執(zhí)行程序500是不安全的。盡管所描述的過程指示執(zhí)行檢查來確定程序未 改變,但是情況可以是僅如此驗證程序的一部分且系統(tǒng)可允許程序的其它部分隨時 間改變。這特別是程序中被允許改變的部分包含由程序使用的數(shù)據(jù)而非代碼的情 況。在這一情況下,可確定程序500的一部分可合法地改變而不會引入惡意代碼。
最初,創(chuàng)建程序500的唯一表示A510。該唯一表示可通過各種函數(shù)中的任一 種來創(chuàng)建,其中函數(shù)生成程序500的壓縮表示。形成該表示以使得它擁有合理的唯 一性。
用于創(chuàng)建表示510的函數(shù)的一個示例是散列算法。公知的散列算法包括安全 散列算法(SHA 1)和MD5。然而,可采用用于生成該表示的其它算法或函數(shù), 且本發(fā)明決不受到任何特定算法或函數(shù)的限制。
然后加密表示A510以形成數(shù)字簽名520。數(shù)字簽名520表示程序500的唯一 且安全的表示。有許多公知的加密過程。本發(fā)明可采用,但決不限于,公鑰/私鑰 加密、對稱加密、以及非對稱加密。
當解密數(shù)字簽名520時,結(jié)果是唯一表示A510。所使用的解密函數(shù)對應于所采用的特定加密函數(shù)。例如,如果表示A510是使用私鑰來加密的,則解密將用對
應于該私鑰的公鑰來生成。
之后,對于程序500的后續(xù)加載操作,需要驗證來確定程序500是否被更改。 用于后續(xù)操作的程序被表示為圖4中的確認530。形成確認530的唯一表示,得到 唯一表示B 540。唯一表示B 540的創(chuàng)建必須類似于唯一表示A 510的創(chuàng)建。
如果唯一表示B 540匹配作為數(shù)字簽名520的解密的唯一表示A 510,則確認 530與程序500相同。由此,程序500未被更改,且計算系統(tǒng)加載并運行程序500 是安全的。然而,如果唯一表示B 540不匹配唯一表示A510,則程序500已按某 種方式更改且不應發(fā)生加載。
圖5是示出使用本地儲存的簽署密鑰225來確認程序500未被更改且由此允 許對后續(xù)操作重新執(zhí)行的方法的流程圖。圖5所示的方法使用了公鑰/私鑰加密, 但是可采用其它加密方法。
當接收到諸如內(nèi)核230等程序500時,在該方法的步驟600中創(chuàng)建程序500 的唯一表示A510??墒褂脛?chuàng)建程序500的壓縮表示的散列算法或任何其它函數(shù)來 創(chuàng)建唯一表示A510。形成該表示,使得它擁有合理的唯一性。在步驟610處,然 后用本地儲存的密鑰225來加密唯一表示A510。如上文更詳細描述的,該密鑰對 于機器是唯一的,使得程序500不能被確定。加密表示數(shù)字簽名520并且在步驟 620處與程序500相關(guān)聯(lián)。為此,數(shù)字簽名可被直接追加到程序500或與程序500 分開儲存,且然后由其它進程跟蹤該程序和數(shù)字簽名之間的關(guān)聯(lián)。
然后儲存經(jīng)簽署的程序500,直到系統(tǒng)試圖重新加載或重新執(zhí)行程序500。當 系統(tǒng)試圖隨后加載程序500時,在步驟630處用公鑰解密加密的數(shù)字簽名520。公 鑰是公鑰/私鑰對的一部分,且在本發(fā)明的一個實施例中,本地儲存的密鑰是私鑰。 如上所述,可構(gòu)想諸如對稱加密技術(shù)等其它加密方案。
在步驟640處創(chuàng)建確認530的唯一表示B 540。該唯一表示B 540必須以與在 步驟600處形成程序500的表示相同的方式形成。例如,需要對兩個操作使用相同 的散列算法。在步驟650處,將確認530的表示與數(shù)字簽名520的解密進行比較。 在步驟660處,檢查該比較來査看是否得到匹配。如果得到匹配,則在步驟670 處,可加載程序500以供后續(xù)的操作,因為匹配指示程序500未被修改且確認文件 530實際上是程序500。如果加密,即唯一表示A510不匹配新表示,即唯一表示 B 540,則在步驟680處停止該操作。失配表示程序500已被修改且可能被破壞。
由此,該方法確保僅在執(zhí)行之前未被修改的程序?qū)⒃谙到y(tǒng)上加載并執(zhí)行。
在本發(fā)明的一個實施例中,當用戶首先下載和/或安裝應用、程序或代碼模塊 時,系統(tǒng)試圖確保整個系統(tǒng)的完整性。為此,程序可使用第三方簽名系統(tǒng)和可信授 權(quán)機構(gòu)來獨立驗證。然而,如果對特定程序沒有這樣的可信簽名可用,則用戶可能 仍希望使用該特定的程序代碼。此外,用戶可能具有足夠的原因來相信該程序代碼 的來源是合法實體(或傾向于決定做出這一判斷調(diào)用)。由于程序代碼沒有第三方
簽名,因此系統(tǒng)將使得該代碼用本地簽署密鑰225來簽署,使得該程序代碼在其被 加載到計算設(shè)備110上之后不能改變。為此,較佳地對于諸如可執(zhí)行文件240等程 序500是否來自可信來源來提示計算系統(tǒng)的用戶。如果用戶相信該來源是可信的, 則該過程因用戶做出相應的指示而繼續(xù)。然而,如果用戶不相信該來源是可信的, 則該過程將結(jié)束而不在系統(tǒng)上加載或安裝程序500。
如可從以上描述中清楚的,本發(fā)明的系統(tǒng)和方法的全部或部分可用硬件、軟 件或兩者的組合來實施。當用軟件實施時,本發(fā)明的方法和裝置或其某些方面或部 分可用程序代碼(即,指令)的形式來實施。該程序代碼可被儲存在計算機可讀介 質(zhì)上,其中當該程序代碼被加載到諸如計算機110等機器中并由其執(zhí)行時,該機器 變?yōu)橛糜趯嵤┍景l(fā)明的裝置。計算機可讀介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲器技術(shù)、CDROM、數(shù)字多功能盤(DVD)或其它光學 存儲、存儲卡、記憶棒、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)備、或可用于儲存 信息并可由計算機110訪問的任何其它介質(zhì)。程序代碼可用高級過程語言或面向?qū)?象的編程語言來實現(xiàn)?;蛘撸绦虼a可用匯編語言或機器語言來實現(xiàn)。在任何情 況下,程序代碼可用已編譯形式或經(jīng)由解釋來執(zhí)行。
如上所述,本發(fā)明涉及用于確保僅驗證的程序在系統(tǒng)上執(zhí)行且程序代碼在執(zhí) 行之前未被修改或更改的系統(tǒng)和方法??梢岳斫猓蓪ι鲜鰧嵤├龀龈淖兌幻?離其寬泛的發(fā)明性概念。例如,盡管上文將本發(fā)明描述為在計算機110中實施,但 是可以理解本發(fā)明可以在許多其它類型的計算設(shè)備中實施,作為示例而非局限,包 括衛(wèi)星接收器、機頂盒、游樂中心游戲、個人計算機(PC)、便攜式電話、個人 數(shù)字助理(PDA)、以及其它手持式設(shè)備。由此,本發(fā)明可應用于各種形式的數(shù)字 數(shù)據(jù)和程序代碼,諸如模擬、圖像、視頻、音頻、文本、游戲、操作系統(tǒng)、應用程 序或任何其它形式的軟件。此外,本發(fā)明的方法和系統(tǒng)可被容易地應用于或被修改 以用于控制對幾乎任何類型的網(wǎng)絡上的、分布在幾乎任何類型的媒體上的或經(jīng)由幾 乎任何類型的傳播介質(zhì)(例如,但非局限,包括射頻傳輸和光學信號)的數(shù)字數(shù)據(jù) 和程序代碼的訪問。因此,可以理解,本發(fā)明不限于所公開的特定實施例,而是旨
在覆蓋落入由所附權(quán)利要求書定義的本發(fā)明的精神和范圍之內(nèi)的所有修改。
權(quán)利要求
1.一種用于驗證程序的方法,包括對所述程序執(zhí)行一函數(shù)以生成所述程序的第一表示;用本地儲存的密鑰加密所述第一表示;在執(zhí)行所述程序之前,對所述程序執(zhí)行所述函數(shù)以生成第二表示;解密所述加密的第一表示以生成解密的第一表示;以及將所述第二表示與所述解密的第一表示進行比較;其中所述程序可以是所述程序的一部分。
2. 如權(quán)利要求l所述的方法,其特征在于,所述本地儲存的密鑰是私鑰。
3. 如權(quán)利要求2所述的方法,其特征在于,所述解密步驟采用對與所述私鑰 相關(guān)聯(lián)的公鑰的使用。
4. 如權(quán)利要求l所述的方法,其特征在于,所述程序是BIOS。
5. 如權(quán)利要求l所述的方法,其特征在于,所述程序是加載器程序。
6. 如權(quán)利要求l所述的方法,其特征在于,所述程序是內(nèi)核。
7. 如權(quán)利要求l所述的方法,其特征在于,所述程序是可執(zhí)行文件。
8. 如權(quán)利要求l所述的方法,其特征在于,所述函數(shù)是散列算法。
9. 如權(quán)利要求l所述的方法,其特征在于,還包括如果對所述第二表示與所述解密的第一表示的比較得到匹配,則允許所述程 序執(zhí)行。
10. —種其上儲存程序代碼的計算機可讀介質(zhì),所述程序代碼在包括處理器 和存儲器的系統(tǒng)中使用,所述程序代碼使得所述處理器執(zhí)行以下步驟對一程序執(zhí)行一函數(shù)以生成所述程序的第一表示; 用本地儲存的密鑰加密所述第一表示;在執(zhí)行所述程序之前,對所述程序執(zhí)行所述函數(shù)以生成第二表示; 解密所述加密的第一表示以生成解密的第一表示;以及 將所述第二表示與所述解密的第一表示進行比較; 其中所述程序可以是所述程序的一部分。
11. 如權(quán)利要求IO所述的計算機可讀介質(zhì),其特征在于,所述解密步驟采用 了對與所述本地儲存的密鑰相關(guān)聯(lián)的公鑰的使用。
12. 如權(quán)利要求IO所述的計算機可讀介質(zhì),其特征在于,所述程序是BIOS。
13. 如權(quán)利要求10所述的計算機可讀介質(zhì),其特征在于,所述程序是加載器程序。
14. 如權(quán)利要求10所述的計算機可讀介質(zhì),其特征在于,所述程序是內(nèi)核。
15. 如權(quán)利要求IO所述的計算機可讀介質(zhì),其特征在于,所述程序代碼使得 所述處理器還執(zhí)行以下步驟如果對所述第二表示與所述解密的第一表示的比較得到匹配,則允許所述程 序執(zhí)行。
16. —種計算機系統(tǒng),包括存儲器; 處理器;儲存在所述存儲器的第一部分中的控制代碼,所述控制代碼包括能夠執(zhí)行以 下步驟的計算機可讀指令.-對一程序執(zhí)行一函數(shù)以生成所述程序的第一表示; 用本地儲存的密鑰加密所述第一表示;在執(zhí)行所述程序之前,對所述程序執(zhí)行所述函數(shù)以生成第二表示; 解密所述加密的第一表示以生成解密的第一表示;以及 將所述第二表示與所述解密的第一表示進行比較; 其中所述程序可以是所述程序的一部分。
17. 如權(quán)利要求16所述的計算機系統(tǒng),其特征在于,所述解密步驟采用了對 與所述本地儲存的密鑰相關(guān)聯(lián)的公鑰的使用。
18. 如權(quán)利要求16所述的計算機系統(tǒng),其特征在于,所述程序是BIOS。
19. 如權(quán)利要求16所述的計算機系統(tǒng),其特征在于,所述程序是加載器程序。
20. 如權(quán)利要求16所述的計算機系統(tǒng),其特征在于,所述程序是內(nèi)核。
全文摘要
提供了用于對要在計算系統(tǒng)上運行的計算機程序執(zhí)行完整性驗證的系統(tǒng)和方法。在將執(zhí)行控制傳遞到操作系統(tǒng)的下一級之前或在允許程序運行之前完成完整性檢查。完整性檢查涉及使用本地儲存的密鑰來確定程序在執(zhí)行之前是否已被修改或篡改。如果檢查顯示程序未被更改,則程序?qū)?zhí)行,且在引導過程期間,允許執(zhí)行控制被傳輸?shù)较乱患?。然而,如果檢查確認程序已被修改,則計算系統(tǒng)不允許程序運行。
文檔編號H04L9/32GK101199159SQ200680006238
公開日2008年6月11日 申請日期2006年4月6日 優(yōu)先權(quán)日2005年4月15日
發(fā)明者J·D·舒沃茨, S·A·費爾德 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
慈溪市| 六盘水市| 修水县| 即墨市| 固镇县| 蒙山县| 忻城县| 白沙| 临猗县| 都江堰市| 方正县| 大冶市| 永新县| 吉安市| 三河市| 木兰县| 尼勒克县| 广南县| 望奎县| 台中县| 临清市| 施秉县| 赤城县| 彭泽县| 定襄县| 通辽市| 滕州市| 全南县| 武川县| 梁河县| 岳阳县| 隆安县| 库伦旗| 文化| 鸡泽县| 福州市| 望江县| 龙门县| 廉江市| 武冈市| 凯里市|