專利名稱:用于驗證計算機系統(tǒng)的方法與系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機系統(tǒng)的領(lǐng)域。特別是,本發(fā)明的實施例涉及驗證計算機系統(tǒng)的 方法與系統(tǒng)。
背景技術(shù):
操作系統(tǒng)有被病毒與其它有敵意的代理程序破壞的風(fēng)險。被破壞的操作系統(tǒng)可能 失去對機器資源的控制且無法執(zhí)行其設(shè)計參數(shù)。例如, 一旦操作系統(tǒng)被破壞,它可用 另一操作系統(tǒng)替換,或該操作系統(tǒng)的必要特征可被繞開,否則被變成不能起作用或被 破壞。所以,存在檢測及驗證計算機系統(tǒng)的需求。
發(fā)明內(nèi)容
廣泛而言,本發(fā)明關(guān)于驗證計算機系統(tǒng)。完整性檢查程序在計算機系統(tǒng)啟動時被 聲明。判定該完整性檢査程序是否在時段內(nèi)準(zhǔn)周期性地驗證操作系統(tǒng)的動態(tài)數(shù)據(jù)結(jié)構(gòu)。
本發(fā)明的實施例提供驗證計算機系統(tǒng)的方法與系統(tǒng)。本發(fā)明的實施例為操作計算 機系統(tǒng)的方法。該方法包含在該計算機系統(tǒng)啟動時聲明完整性檢査程序。該方法進一 步包含判定該完整性檢查程序是否在時段內(nèi)準(zhǔn)周期性地驗證操作系統(tǒng)的動態(tài)數(shù)據(jù)結(jié) 構(gòu)。
依照本發(fā)明的另一實施例為操作計算機系統(tǒng)的方法。該方法包含在響應(yīng)于在預(yù)定 進入點進入完整性檢查程序而清除檢測位。該完整性檢査程序可操作用以驗證操作系 統(tǒng)的動態(tài)數(shù)據(jù)結(jié)構(gòu)。該檢測位響應(yīng)于執(zhí)行該完整性檢査程序時發(fā)生的預(yù)定事件而被設(shè) 定。若該檢測位在該完整性檢查程序于預(yù)定退出點退出時被清除,然后定時器被重置。
依照本發(fā)明的又一實施例為計算機系統(tǒng)。該計算機系統(tǒng)包含安全定時器。該計算 機系統(tǒng)也具有安全邏輯,其被耦合至所述定時器且可操作用以判定用于驗證操作系統(tǒng)的動態(tài)數(shù)據(jù)結(jié)構(gòu)的完整性檢查程序的成功執(zhí)行,其中如果所述完整性檢査程序成功地 完成,所述安全邏輯進一步可操作用以重置所述定時器。
本發(fā)明還有的另一實施例為操作計算機系統(tǒng)的方法。在此實施例中,該方法包含 在操作系統(tǒng)被信任時聲明完整性檢查程序。該方法進一步包含判定該完整性檢査程序 是否在時段內(nèi)準(zhǔn)周期性地驗證該操作系統(tǒng)的動態(tài)數(shù)據(jù)結(jié)構(gòu)。
圖l為依照本發(fā)明的實施例用于驗證計算機系統(tǒng)的硬件與軟件圖。
圖2為流程圖,說明依照本發(fā)明的實施例操作計算機的處理。
圖3為流程圖,說明依照本發(fā)明的實施例在執(zhí)行完整性檢查程序時發(fā)生的處理。
圖4為說明依照本發(fā)明的實施例的釋例性完整性檢查程序的圖。
圖5為釋例性計算機系統(tǒng),其用作為本發(fā)明的實施例可在其上被執(zhí)行的平臺。
具體實施例方式
在下列本發(fā)明的實施例的詳細描述中,驗證計算機系統(tǒng)的方法與系統(tǒng)很多特定細 節(jié)被設(shè)立以提供對本發(fā)明的透徹的理解。然而其將被本領(lǐng)域技術(shù)人員認識,本發(fā)明可 不須這些特定細節(jié)或以其等價物地被實踐。在其它實例中,熟知的方法、過程、組件 和電路未曾詳細地被描述以免不必要地模糊本發(fā)明的層面。 符號和術(shù)語
下列該等詳細的描述的一些部分就對可在計算機存儲器上被進行的數(shù)據(jù)位的操 作的過程、步驟、邏輯塊、處理與其它符號式呈現(xiàn)被提出。這些描述與呈現(xiàn)為被數(shù)據(jù) 處理領(lǐng)域技術(shù)人員所使用的方法以最有效地傳達其實質(zhì)工作給本領(lǐng)域其他技術(shù)人員。 過程、計算機所執(zhí)行的步驟、邏輯塊,處理等在此,并且一般被以為是導(dǎo)致所要求的 結(jié)果的步驟或指令的自我一致的序列。該等步驟為需要物理量的物理操縱的那些。通 常,雖非必要,這些量采用能在計算機系統(tǒng)內(nèi)被儲存、轉(zhuǎn)換、組合、比較、或操縱的 電或磁信號的形式。在原理上為普遍使用的理由,參用這些信號成為位、數(shù)值、元素、 符號、字符、詞項、或數(shù)字之類已被證明為便利的。
然而須謹記于心的是,所有這些與類似的事項將與適當(dāng)?shù)奈锢砹坑嘘P(guān)聯(lián),且只是
被應(yīng)用于這些量的方便的標(biāo)簽。除非有特別被陳述或是從下列討論看來是明白的,其 被了解到在整個本發(fā)明中,運用到如"存取"、"聲明"、"設(shè)定"、"清除"、"提供"、"啟 動"、"處理"、"計算"、"響應(yīng)"、"判定"、"檢測"、"儲存"、"輸出"、或"返回"之類 的用詞的討論是指計算機系統(tǒng)或類似的電子計算裝置的動作與處理,其將在計算機系 統(tǒng)的寄存器與存儲器內(nèi)被呈現(xiàn)為物理(電子)量的數(shù)據(jù)加以操作或變換為其它數(shù)據(jù),其 在該等計算機系統(tǒng)存儲器或寄存器或其它這樣的信息儲存器、傳輸或顯示裝置內(nèi)被類
似地呈現(xiàn)為物理量。
所以,提供用于驗證操作系統(tǒng)的方法與系統(tǒng)將是有利的。若驗證判定對操作系統(tǒng) 破壞為可能的,則采取修正行動為進一步有利的。本發(fā)明的實施例提供用于驗證操作 系統(tǒng)的方法與系統(tǒng)。本發(fā)明的實施例提供用于檢測操作系統(tǒng)已被破壞的方法與系統(tǒng)。 本發(fā)明的實施例提供方法與系統(tǒng)在檢測到被破壞的操作系統(tǒng)時采取修正行動。本發(fā)明 的實施例提供這些優(yōu)點與未在上面特別提及但在下面部分被描述的其它者。
依照本發(fā)明的實施例,該操作系統(tǒng)(o/s)包含完整性檢查程序,其可檢查一些0/S 動態(tài)數(shù)據(jù)結(jié)構(gòu)為一致的且未被修改。該操作系統(tǒng)在如安全系統(tǒng)啟動時的o/s被信任時
對安全邏輯聲明該完整性檢查程序。然而為了檢測0/S稍后可能的破壞,該操作系統(tǒng) 準(zhǔn)周期性地執(zhí)行該完整性檢查程序。當(dāng)在這里被使用時,"準(zhǔn)周期性地"一詞意為事件 在一系列期間的每一個中的某點發(fā)生,但未必在每一期間中的同一點發(fā)生。因而,事 件間的間隔是否為均一的均可。若完整性檢査程序未能準(zhǔn)周期性地成功執(zhí)行,假設(shè)該 操作系統(tǒng)已被危害。所以,該計算機系統(tǒng)可被關(guān)機或者可采取其它適當(dāng)?shù)男拚袆印?br>
在一個實施例中,該安全邏輯儲存安全定時器用于記住完整性檢査程序一般應(yīng)成 功地被執(zhí)行的時段。在此實施例中,若完整性檢査程序成功地完成,其硬件只重置該 定時器。若某些預(yù)定的事件在完整性檢査程序正執(zhí)行時發(fā)生,完成可被視為不成功的。 這些事件可包括除外處理、中斷與寫入DMA。成功的完成也可包括完整性檢査程序驗 證0/S的動態(tài)數(shù)據(jù)結(jié)構(gòu)。若定時器到期,修正行動被實行。在一個實施例中,該安全 邏輯存儲檢査和(checksum)用于在完整性檢查程序調(diào)用時對完整性檢查程序進行認 證。當(dāng)0/S在系統(tǒng)啟動時聲明完整性檢查程序時,該檢查和被儲存且此后不能被變更。
圖1為依照本發(fā)明實施例的用于驗證計算機系統(tǒng)的硬件與軟件120的圖。該硬件包 括安全可編程一次的定時器125。例如,該定時器的期間可在每次計算機系統(tǒng)啟動時只
被建立一次。在一個實施例中,操作系統(tǒng)130通過寫至寫一次寄存器來規(guī)劃定時器周期。 若完整性檢查程序145成功地完成,安全邏輯140重置該安全定時器,而防止因安全定 時器超時所致的系統(tǒng)關(guān)機或其它修正行動。
該硬件也具有檢査和緩存器150,其儲存完整性檢查代碼與數(shù)據(jù)的檢査和。當(dāng)計 算機系統(tǒng)啟動或在其它被信任的時間時,安全邏輯140計算并儲存此檢査和,且該檢査 和值在此后為不可改變的。當(dāng)完整性檢查程序145被調(diào)用時,安全邏輯140驗證該檢査 和。在一個實施例中,檢查和寄存器150為寫一次寄存器。為了計算檢査和,安全邏輯 140在一個實施例中具有密碼式的安全檢查和/混雜法則。雖然任何處理可被使用,該 檢查和/混雜法則在一個實施例中可以符合安全混雜法則版本l(SHA-l)或更高的。
該硬件也具有存儲器單元(例如,寄存器,正反器等),其被用以儲存完整或安全 位155。此位只可由安全邏輯140寫入且被用以考慮完整性檢査程序145是否己成功地完 成。此位使安全邏輯140能辨識完整性檢查程序145的成功的完成,其中安全定時器125 被重置。在一個實施例中,安全位155不是在軟件中可直接觀察的。
在一個實施例中,完整性檢査程序145 —般必須不需中斷與除外處理地執(zhí)行。進 一步言之,用非完整性檢査程序145的代理程序的寫入在一個實施例中是不被允許的。 所以,該硬件也具有事件檢測邏輯160,其判定是一個還是多個預(yù)定事件(或事件類型) 在完整性檢査程序執(zhí)行時發(fā)生。該等事件可包括中斷、異常處理與對某些存儲器位置 的DMA寫入。然而,本發(fā)明不受限于這些事件。
圖1的完整性檢查程序145典型地為0/S 130的一部分,雖然其可為其它程序或自我 獨立程序的一部分。完整性檢查程序145作用成為信任的等周期性的根,而與在系統(tǒng)啟 動或作用成為信任的原始根的其它時間發(fā)生的原始根相反。本發(fā)明在完整性檢查程序 145如何驗證操作系統(tǒng)130的完整性的方面允許大的寬容。因而,完整性檢查程序145 可能取決于0/S。典型上,完整性檢查程序145可被用以確認動態(tài)0/S數(shù)據(jù)結(jié)構(gòu)165未曾 被傷害。那些動態(tài)數(shù)據(jù)結(jié)構(gòu)可包括中斷表、異常處理表、分頁寄存器與結(jié)構(gòu)、及分段 結(jié)構(gòu),但不限于此。檢査該等結(jié)構(gòu)的完整性的技術(shù)為密碼檢査和;然而本發(fā)明不受限 于此技術(shù)。
一旦存儲器管理與定時器中斷被知道是安全的,對其它0/S功能的進一步安全檢 査可由除完整性檢査程序之外的代碼進行。這些進一步檢査的實施依0/S而定。因而,本發(fā)明的實施例檢測0/S是否已被破壞,在此基礎(chǔ)上也允許進一步的安全檢査。
圖1也顯示通知位172,其在存儲器的某些區(qū)域被寫入時被設(shè)定。該頑固的通知位
對完整性檢查程序通知說寫入己在存儲器的此區(qū)域發(fā)生且只能在完整性檢查模式時被
完整性檢査程序清除。通知位172將在下面更詳細地被描述。
圖2為流程圖,說明依照本發(fā)明的實施例的操作計算機系統(tǒng)的計算機控制的處理 200。在步驟210,操作系統(tǒng)在計算機系統(tǒng)啟動成0/S被信任的其它時間聲明完整性檢 査程序。在一個實施例中,假設(shè)操作系統(tǒng)可在計算機系統(tǒng)啟動時被信任。換言之,在 系統(tǒng)啟動時運行的操作系統(tǒng)不會被破壞或被傷害。
提供計算機系統(tǒng)安全啟動的一項技術(shù)在Morgan等人 申請的共同審理中的美 國專利申請案第 號(律師備審案第TRAN-P381號)的 (標(biāo)題)中被描述,其整
體被納于此處做為參考。提供在啟動時可被信任的操作系統(tǒng)的另一技術(shù)為由CD-ROM 將計算機系統(tǒng)啟動。雖然二者其中之一技術(shù)可被使用,本發(fā)明就確定操作系統(tǒng)在系統(tǒng) 啟動時被信任而言,不受限于這些技術(shù)。
聲明該完整性檢査程序可包含該操作系統(tǒng)提供指針指向該完整性檢查程序的開 始以及其大小。操作系統(tǒng)聲明完整性檢查程序的一項技術(shù)為執(zhí)行使此信息對安全邏輯 為可得到可使用的指令。該指令可為只在一旦開始系統(tǒng)啟動后為可執(zhí)行的特殊指令。 操作系統(tǒng)聲明完整性檢査程序的另一技術(shù)為寫入在每次計算機系統(tǒng)啟動時只能被寫入 一次的寄存器。
該操作系統(tǒng)注意到定時器期間,使得其可在該定時器期間內(nèi)開始完整性檢查程序 的執(zhí)行。步驟210可包含操作系統(tǒng)聲明定時器值以建立此期間。聲明定時器期間可通過 寫入至寫入一次的寄存器而被達成。替選的是,操作系統(tǒng)可從寄存器或存儲器位置存 取該定時器期間。該定時器期間很難被編碼使得其即使越過系統(tǒng)啟動也不可變更。完 整性檢查邏輯具有在完整性檢查程序的成功的完成時重置該定時器的責(zé)任。
圖2的步驟220為操作系統(tǒng)調(diào)用完整性檢查程序。完整性檢查程序可包含進入指 令、退出指令、與在其間可被用以檢查操作系統(tǒng)的完整性的數(shù)個指令。調(diào)用完整性檢 査程序可包含操作系統(tǒng)致使該進入指令被執(zhí)行。該進入指令可將操作系統(tǒng)置于完整性 檢査模式。在此模式中,操作系統(tǒng)具有不產(chǎn)生異常處理及不允許中斷被處理的責(zé)任。
然而,進入指令與退出指令不被要求被用來劃定完整性檢査程序的界限。替選的
是,安全檢査邏輯被提供,或可在系統(tǒng)啟動時由操作系統(tǒng)所提供的信息導(dǎo)出完整性檢 査碼的開始與結(jié)束地址。然而,該安全檢査邏輯仍須被通知說完整性檢査程序正被執(zhí) 行。該操作系統(tǒng)可用任何適合的方式對安全檢查邏輯指出此點。
步驟230為安全檢查邏輯在執(zhí)行完整性檢查程序以判定完整性檢查程序是否成功 地完成時監(jiān)控計算機系統(tǒng)。例如,安全檢查邏輯就如中斷、異常處理與寫入DMA的某 些預(yù)定事件監(jiān)控。若此事件發(fā)生,完整性檢查程序的執(zhí)行在一個實施例中被視為不成 功的。步驟230不限于此監(jiān)控。步驟230的一個實施例的細節(jié)在圖3中所顯示的處理300 被提出。
若完整性檢查程序成功地完成,安全檢查邏輯在步驟240中重置定時器。如先前 被提及者,完整性檢査程序可用退出指令結(jié)束。該退出指令暗示安全檢查邏輯來檢査 成功完成。替選的是,安全檢查邏輯由在系統(tǒng)啟動時被提供的信息知道或?qū)С鐾暾?檢査程序的結(jié)束地址。此外,如先前所討論的,完整性檢查程序可驗證0/S的某些動 態(tài)數(shù)據(jù)結(jié)構(gòu)。若此驗證失敗,完整性檢查程序會通知安全檢査邏輯或自行響應(yīng)該失敗 的驗證。
在完整性檢査程序完成后,操作系統(tǒng)回復(fù)至正常模式,其中本發(fā)明沒有限制被置 于中斷與異常處理。若定時器在任一點到期,適當(dāng)?shù)男拚袆颖徊扇?。適當(dāng)?shù)男拚?動包括,但不被限制于將計算機關(guān)機并通知使用者。該定時器在完整性檢査程序執(zhí)行 時不會停留。所以,就算定時器在執(zhí)行時到期,該修正行動仍被采取。
圖3為流程圖,說明依照本發(fā)明的實施例的判定完整性檢查程序是否成功地執(zhí)行 的計算機控制的處理300。處理300的步驟依照一個實施例用圖2顯示的硬件被進行。處 理300通過完整性檢查程序被操作系統(tǒng)調(diào)用而開始。在步驟310,該硬件在響應(yīng)完整性 檢査碼的適當(dāng)進入下設(shè)定檢測位以指出如"成功的完成"的第一狀態(tài)。該安全硬件對 某些事件的檢測將改變此位為如"未成功的完成"的第二狀態(tài)。是否要重置安全定時 器的判定是根據(jù)此位的狀態(tài)。完整性檢查程序具有預(yù)定的進入點。若在任何其它點進 入該程序,則不管完整性檢査程序如何執(zhí)行,該硬件將不會重置定時器。
在步驟320,完整性檢查程序本身被認證以驗證其未曾被干涉。該認證可通過計 算完整性檢查程序在其現(xiàn)行狀態(tài)的檢查和并與在系統(tǒng)啟動被儲存的檢査和比較而被進 行。然而,未要求檢査和在完整性檢查程序每次被執(zhí)行時被進行。替選的是,處理器可監(jiān)控從檢査和認證最后一次被進行起完整性檢查程序是否已潛在地被修改。此監(jiān)控 可包括監(jiān)控高速緩存線路與包含完整性檢査程序的存儲器的區(qū)域有關(guān)聯(lián)的分頁表映 像。若此監(jiān)控指出有潛在的干涉完整性檢査程序,則檢査和認證被進行。在一個實施 例中,為方便該認證,完整性檢査程序配適至可被釘住在由入口至出口的轉(zhuǎn)譯轉(zhuǎn)換旁 視緩沖器(TLB)中的多個存儲器頁內(nèi)。
若檢査和檢測失敗,則檢測位被設(shè)定為如"未成功的完成"的狀態(tài)。 一旦檢測位 被設(shè)定為此狀態(tài),除非完整性檢査程序如步驟310所描述地適當(dāng)?shù)乇徽{(diào)用,其不可被設(shè) 定為成功的完成。典型地,若認證失敗,執(zhí)行會跳至完整性檢查程序的結(jié)束,然而此 并非在所有情形均被要求。
若檢查和測試通過,則無行動針對檢測位被采取,且完整性檢査程序的執(zhí)行在步 驟330繼續(xù)。在完整性檢査程序執(zhí)行時,該硬件監(jiān)控的事件包括未被封鎖的中斷、異常 處理、并寫入存儲器的某些區(qū)域或用非完整性檢查程序的代理程序?qū)懭?。如先前所?論的,操作系統(tǒng)有責(zé)任確保無中斷被采取(如封鎖中斷)且在執(zhí)行完整性檢查程序時不 會產(chǎn)生異常處理。假設(shè)完整性檢查程序的執(zhí)行被中斷或若異常處理在執(zhí)行完整性檢查 程序時發(fā)生,則該硬件設(shè)定該檢測位。由于該位不應(yīng)在完整性檢查程序其余的執(zhí)行時 被清除,完整性檢查程序?qū)⒉怀晒Φ亟Y(jié)束。
前述的被禁止的寫入在處理器處于完整性檢查模式時會典型地涉及與完整性檢 査程序有關(guān)聯(lián)的高速緩存線路,但不受限于此。此寫入禁止適用于非完整性檢査程序 的任一代理程序的寫入,例如在同步多處理器(SMP)或直接存儲器存取(DMA)的另一 處理器。完整性檢查程序的讀取不須被禁止。
進一步言之,完整性檢査程序的執(zhí)行不允許分支至其碼外。所以,假若此發(fā)生, 該硬件設(shè)定其檢測位為未成功的執(zhí)行。然而,完整性檢查程序被允許存取其自身外部 的存儲器。
在步驟340,若檢測位指出完整性檢查程序在退出時為成功的完成,該硬件重置 安全定時器以開始新的時段。重置定時器因而作用成為"執(zhí)行的停留"。然而,操作系 統(tǒng)將須在定時器的下一次到期前再次為成功的完成重新調(diào)用完整性檢查程序。注意, 若完整性檢査程序的執(zhí)行分支到完整性檢査程序外,安全定時器將不會被重置。
圖4顯示依照本發(fā)明的實施例的釋例性的完整性檢査程序400。該釋例性的程序以"進入完整性檢查模式"指令405開始,及以"退出完整性檢査模式"指令408結(jié)束。 在其間的代碼主體指令415為適用于檢查操作系統(tǒng)的完整性的任何指令。如先前討論 的,只要安全邏輯知道完整性檢查程序400的界限及知道其已被調(diào)用,該等進入與退出 指令是不需要的。
在圖4的實施例中,完整性檢査程序具有內(nèi)部堆棧410。該內(nèi)部堆棧被設(shè)定為程序 執(zhí)行結(jié)束時的默認值,使得檢査和認證在下一次執(zhí)行時將通過。 一般而言,只要默認 值在程序的成功完成時被重新建立,完整性檢查程序就可修改其自己的數(shù)據(jù)結(jié)構(gòu)與代 碼。
完整性檢查程序存取(讀取與寫入)本身外部的數(shù)據(jù)是自由的。在一個實施例中, 完整性檢查程序具有外部堆棧,其在完整性檢查程序的執(zhí)行時被寫保護。非完整性檢 查程序的任何個體要寫入外部堆棧的企圖導(dǎo)致安全位被設(shè)定為指出完整性檢查程序的 不成功的執(zhí)行的值。
如先前被討論的,假設(shè)0/S可在例如計算機系統(tǒng)被啟動的某點時間被信任。進一 步言之,0/S的完整性通過要求完整性檢查程序在確定的時段內(nèi)成功地執(zhí)行而準(zhǔn)局期 性地被重新判定。然而,其有可能有敵意的代理程序(如病毒)可能設(shè)立在完整性檢查
程序成功地執(zhí)行后破壞o/s、為完整性檢查程序?qū)崟r地恢復(fù)適當(dāng)?shù)膐/s以在定時器下一 次到期前成功地執(zhí)行、與在完整性檢查程序再次成功地執(zhí)行后再次破壞o/s的循環(huán)周期。
例如,有故意的代理程序可能破壞0/S及設(shè)立未來的DMA寫入在完整性檢查程序
已成功地執(zhí)行后發(fā)生。然后,該有敵意的代理程序會為完整性檢查程序?qū)崟r地恢復(fù)o/s
的完整性以成功地執(zhí)行。在完整性檢查程序成功地執(zhí)行后發(fā)生的寫入DMA會讓該有敵 意的代理程序再次破壞0/S并再開始該循環(huán)周期。若0/S只在一個CPU中或在該CPU內(nèi) 的線內(nèi)執(zhí)行完整性檢查程序,類似的問題在SMP系統(tǒng)中發(fā)生。
下面描述處理此潛在的未來破壞的數(shù)個方法。在一個實施例中,存儲器的預(yù)定區(qū) 域被寫保護使得寫入不能由CPU或DMA發(fā)生。那些存儲器的區(qū)域可在如安全計算機系 統(tǒng)啟動時的操作系統(tǒng)被信任的時間被建立。
另一實施例提供存儲器的某些區(qū)域的寫監(jiān)控以防止破壞。存儲器的那些區(qū)域可在 如安全計算機系統(tǒng)啟動時的操作系統(tǒng)被信任的時間被建立。本實施例允許對那些區(qū)域的寫入,但用可由安全邏輯存取的頑固的通知位來追蹤它們。該頑固的通知位通知完 整性檢査程序?qū)懭胍褜Υ鎯ζ鞯拇藚^(qū)域發(fā)生且只可在處于完整性檢査模式時被完整性 檢査程序清除。就算寫入對被監(jiān)控的區(qū)域發(fā)生,若該寫入被視為被信任的寫入,完整 性檢查程序可清除該通知位。例如,0/S可將密碼簽名與其自己的代碼的修改相聯(lián)系。 該完整性檢査代碼可驗證該密碼簽名以得知該修改被信任,其中該頑固的通知位被重 置。
處理潛在的未來破壞還有的另一實施例為使完整性檢査程序的執(zhí)行成為障礙同 步事件(barrier synchronization event)。例如,可寫入存儲器的所有代理程序具有在執(zhí) 行完整性檢查程序時的作用且必須處于已知的狀態(tài)以正確地執(zhí)行完整性檢査程序。
在SMP系統(tǒng)中,障礙同步可通過使完整性檢查程序在所有CPU/線或CPU/線的子集 (如一個)上執(zhí)行,而其余的CPU/線以其未來的工作被正在運行完整性檢查程序的CPU/ 線決定的方式停止而被實現(xiàn)。換言之,不執(zhí)行完整性檢査程序的任一處理器被停止, 其方式為其未來的工作被正在運行完整性檢查程序的CPU/線決定。因而,在一個實施 例中, 一個CPU/線執(zhí)行完整性檢査程序而其余的以先前所述的方式被停止。在另一實 施例中,所有的CPU/線同時進入完整性檢查程序。
在一個實施例中,不執(zhí)行完整性檢查程序的CPU/線在"工作隊列"或類似的信號 中等候而被停止,使得該工作隊列或信號將只被運行完整性檢查程序的CPU/線寫入。 在另一實施例中,不執(zhí)行完整性檢查程序的CPU/線被運行完整性檢查程序的CPU/線關(guān) 機至完整性檢査程序運行完成且0/S重新喚醒/重置其它的CPU/線為止。
在又一實施例中,不執(zhí)行完整性檢查程序的CPU/線被停止,其方式為只有在已知 地址的處理器間的中斷能將其喚醒。完整性檢查程序會在讓其它CPU/線重啟前驗證在
那個已知地址的代碼的完整性。
停止不執(zhí)行完整性檢查程序的CPU/線且只讓其在已知狀態(tài)而非任意狀態(tài)重新啟
動執(zhí)行的其它實施是可能的。
在另一實施例中,0/S執(zhí)行規(guī)則,能做DMA的裝置在0/S調(diào)用完整性檢查程序時不 被允許具有任何掛起的寫入。因而,0/S只在其不具有任何DMA寫入為掛起時調(diào)用完 整性檢查程序。完整性檢查程序在其調(diào)用時驗證能作DMA的裝置的狀態(tài)。例如,能作 DMA的裝置能具有可由CPU被強迫的閑置或"停車"狀態(tài),使得其解散所有先前為掛
起的存儲器寫入。然后完整性檢査程序可強迫所有這類裝置在進入時被"停車",然后 進行完整性檢查。所以,在完整性檢査完成后企圖將DMA排程以蓋寫0/S的有敵意的 代理程序因其對存儲器被排程的寫入會被解散而被阻礙。
圖5說明釋例性計算機系統(tǒng)100的電路,其可形成用于本發(fā)明的實施例的平臺。計 算機系統(tǒng)100包括用于通訊信息的地址/數(shù)據(jù)總線99、與總線耦合用于處理信息與指令 的中央處理器IOI、與總線99耦合用于為中央處理器101儲存信息與指令的易失性存儲 器102(如隨機存取存儲器RAM)、以及與總線99耦合用于為中央處理器101儲存靜態(tài)信 息與指令的非易失性存儲器103(如只讀存儲器ROM)。
安全邏輯140被耦合至總線99用于由操作系統(tǒng)接收信息及用于提供違反安全的通 知。事件檢測邏輯160被耦合至總線99用于檢測各種事件。計算機系統(tǒng)100也可包括選 配的數(shù)據(jù)儲存裝置104(如磁或光盤與盤驅(qū)動器),其被耦合至總線99用于存儲信息與指 令。例如在一個實施例中,該操作系統(tǒng)由CD-ROM裝置啟動。
本發(fā)明的較佳實施例,檢測計算機系統(tǒng)的破壞的方法與系統(tǒng),被這樣描述。雖然 本發(fā)明已在特定實施例中被描述,應(yīng)被了解的是本發(fā)明不應(yīng)被構(gòu)建成受限于此類實施 例,而是依據(jù)以下的權(quán)利要求被構(gòu)建。
主要組件符號說明
99.,地址/數(shù)據(jù)總線150'.-檢查和寄存器
100'-計算機系統(tǒng)155.--安全位
101.-中央處理器-事件檢測邏輯
102.-易失性存儲器165.',0/S動態(tài)數(shù)據(jù)結(jié)構(gòu)
103--非易失性存儲器172'--通知位
104.**數(shù)據(jù)儲存裝置200"-計算機控制的處理
120.-計算機系統(tǒng)驗證硬件與軟件300"-計算機控制的處理
125'"可編程一次的定時器400..-完整性檢査程序
130.-操作系統(tǒng)405"-進入指令
140.-安全邏輯408.'-退出指令
145.-完整性檢查程序410..*內(nèi)部堆棧
415…代碼主體指令
權(quán)利要求
1.一種操作計算機系統(tǒng)的方法,其特征在于,所述方法包含在所述計算機系統(tǒng)啟動時聲明完整性檢查程序;以及判定所述完整性檢查程序是否在時段內(nèi)準(zhǔn)周期性地驗證操作系統(tǒng)的動態(tài)數(shù)據(jù)結(jié)構(gòu)。
2. 如權(quán)利要求l所述的方法,其特征在于,進一步包含在所述啟動時儲存用于驗證所述完整性檢査程序的值。
3. 如權(quán)利要求2所述的方法,其特征在于,進一步包含忽略變更用于驗證所述完整性檢查程序的所述值的任何嘗試,其中用于驗證所述完整性檢査程序的所述值在開始所述計算機系統(tǒng)的所述啟動后只能被建立一次。
4. 如權(quán)利要求l所述的方法,其特征在于,進一步包含在所述計算機系統(tǒng)啟動時建立所述時段。
5. 如權(quán)利要求4所述的方法,其特征在于,進一步包含忽略要再次建立所述時段的任何嘗試,其中所述時段在開始所述計算機系統(tǒng)的所述啟動后只能被建立一次。
6. 如權(quán)利要求l所述的方法,其特征在于,所述完整性檢查程序可操作用以檢測所述操作系統(tǒng)的破壞。
7. 如權(quán)利要求l所述的方法,其特征在于,進一步包含對未能在所述時段內(nèi)驗證的所述完整性檢查程序提供響應(yīng)。
8. 如權(quán)利要求l所述的方法,其特征在于,進一步包含防止通過在所述完整性檢查程序成功執(zhí)行后設(shè)立破壞事件發(fā)生來破壞所述計算機系統(tǒng)的攻擊。
9. 一種操作計算機系統(tǒng)的方法,其特征在于,包含響應(yīng)在所述完整性檢査程序中的預(yù)定進入點開始所述完整性檢查程序 的執(zhí)行將檢測位設(shè)定為第一狀態(tài),其中所述完整性檢查程序可操作用以驗證 操作系統(tǒng)的動態(tài)數(shù)據(jù)結(jié)構(gòu);檢測在所述完整性檢查程序執(zhí)行時發(fā)生的預(yù)定事件; 響應(yīng)所述檢測所述預(yù)定事件將所述檢測位設(shè)定為第二狀態(tài);以及 只有當(dāng)在所述完整性檢查程序中的預(yù)定退出點退出所述完整性檢查程2序時所述檢測位處于所述第一狀態(tài)時才重新設(shè)定定時器。
10. 如權(quán)利要求9所述的方法,其特征在于,進一步包含在所述開始執(zhí)行所述完整性檢査程序與所述退出所述完整性檢查程序之間認證所述完整性檢查程序。
11. 如權(quán)利要求io所述的方法,其特征在于,所述預(yù)定事件包含所述認證所述完整性檢查程序指示認證失敗。
12. 如權(quán)利要求9所述的方法,其特征在于,所述預(yù)定事件包含異常處理。
13. 如權(quán)利要求9所述的方法,其特征在于,所述預(yù)定事件包含所述完整性檢查程序的執(zhí)行被中斷。
14. 如權(quán)利要求9所述的方法,其特征在于,所述預(yù)定事件包含所述完整性檢査程序的執(zhí)行分支到所述完整性檢查程序外。
15. 如權(quán)利要求9所述的方法,其特征在于,所述預(yù)定事件包含對存儲器的預(yù)定區(qū)域的寫入。
16. 如權(quán)利要求15所述的方法,其特征在于,所述存儲器的預(yù)定區(qū)域包含所述完整性檢査程序。
17. 如權(quán)利要求15所述的方法,其特征在于,所述存儲器的預(yù)定區(qū)域包含與操作系統(tǒng)有關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。
18. 如權(quán)利要求9所述的方法,其特征在于,進一步包含判定對存儲器的預(yù)定區(qū)域的寫入已經(jīng)發(fā)生; 判定所述寫入是否被信任;以及若所述寫入不被信任,將所述檢測位設(shè)定為所述第二狀態(tài)。
19. 如權(quán)利要求9所述的方法,其特征在于,進一步包含在所述完整性檢査程序開始執(zhí)行時使能做DMA的裝置消除先前掛起的存儲器寫入。
20. —種計算機系統(tǒng),其特征在于,包含安全定時器;以及安全邏輯,其被耦合至所述定時器且可操作用以判定用于驗證操作系統(tǒng) 的動態(tài)數(shù)據(jù)結(jié)構(gòu)的完整性檢查程序的成功執(zhí)行,其中如果所述完整性檢查程 序成功地完成,所述安全邏輯進一步可操作用以重置所述定時器。
21. 如權(quán)利要求20所述的計算機系統(tǒng),其特征在于,所述安全邏輯進一步可操作用以在所述完整性檢查程序執(zhí)行時檢測預(yù)定事件,并且其中所述判定成功的 執(zhí)行是以此為基礎(chǔ)的。
22. 如權(quán)利要求21所述的計算機系統(tǒng),其特征在于,所述預(yù)定事件包含中斷。
23. 如權(quán)利要求21所述的計算機系統(tǒng),其特征在于,所述預(yù)定事件包含異常 處理。
24. 如權(quán)利要求21所述的計算機系統(tǒng),其特征在于,所述預(yù)定事件包含對所 述完整性檢查程序的寫入。
25. 如權(quán)利要求21所述的計算機系統(tǒng),其特征在于,所述預(yù)定事件包含由除 所述完整性檢查程序以外的代理程序進行的寫入。
26. 如權(quán)利要求20所述的計算機系統(tǒng),其特征在于,進一步包含可編程一次 的存儲器單元用于儲存完整性檢查值以認證所述完整性檢查程序。
27. 如權(quán)利要求26所述的計算機系統(tǒng),其特征在于,所述安全邏輯進一步可 操作用以用所述完整性檢査值來認證所述完整性檢査程序。
28. 如權(quán)利要求20所述的計算機系統(tǒng),其特征在于,進一步包含存儲器單元 用于儲存安全位。
29. 如權(quán)利要求28所述的計算機系統(tǒng),其特征在于,所述安全邏輯進一步可 操作用以通過將所述安全位設(shè)定為第一狀態(tài)來響應(yīng)所述完整性檢查程序的正確調(diào) 用。
30. 如權(quán)利要求29所述的計算機系統(tǒng),其特征在于,所述正確調(diào)用包含在預(yù) 先定義的進入點開始執(zhí)行所述完整性檢査程序。
31. 如權(quán)利要求30所述的計算機系統(tǒng),其特征在于,所述安全邏輯進一步可 操作用以響應(yīng)所述完整性檢查程序的不成功地執(zhí)行的判定,將所述安全位設(shè)定為 第二狀態(tài)。
32. 如權(quán)利要求31所述的計算機系統(tǒng),其特征在于,如果所述安全位處于所 述第一狀態(tài),所述安全邏輯進一步可操作用以重置所述定時器。
33. 如權(quán)利要求20所述的計算機系統(tǒng),其特征在于,所述安全定時器的周期 在所述計算機系統(tǒng)每次啟動時可建立一次。
34. 如權(quán)利要求20所述的計算機系統(tǒng),其特征在于,所述操作系統(tǒng)包含所述完整性檢査程序代碼。
35. 如權(quán)利要求20所述的計算機系統(tǒng),其特征在于,所述操作系統(tǒng)負責(zé)在所 述安全定時器所定義的時段內(nèi)準(zhǔn)周期性地調(diào)用所述完整性檢查程序。
36. 如權(quán)利要求20所述的計算機系統(tǒng),其特征在于,所述操作系統(tǒng)執(zhí)行防止 所述完整性檢查程序中斷的規(guī)則。
37. 如權(quán)利要求20所述的計算機系統(tǒng),其特征在于,所述操作系統(tǒng)執(zhí)行在所 述完整性檢査程序執(zhí)行時不會產(chǎn)生異常處理的規(guī)則。
38. 如權(quán)利要求20所述的計算機系統(tǒng),其特征在于,所述操作系統(tǒng)執(zhí)行當(dāng)所 述操作系統(tǒng)調(diào)用所述完整性檢査程序時能做DMA的裝置不被允許具有任何掛起 的寫入的規(guī)則。
39. 如權(quán)利要求20所述的計算機系統(tǒng),其特征在于,進一步包含多個處理器, 其中在執(zhí)行所述完整性檢查程序時,不執(zhí)行所述完整性檢査程序的任一所述處理 器被停止。
40. —種操作計算機系統(tǒng)的方法,其特征在于,所述方法包含 在操作系統(tǒng)被信任時聲明完整性檢查程序;以及判定所述完整性檢査程序是否在時段內(nèi)準(zhǔn)周期性地驗證所述操作系統(tǒng) 的動態(tài)數(shù)據(jù)結(jié)構(gòu)。
41. 如權(quán)利要求40所述的方法,其特征在于,進一步包含在所述操作系統(tǒng)被 信任的所述時間內(nèi)儲存用于驗證所述完整性檢查程序的值。
42. 如權(quán)利要求41所述的方法,其特征在于,用于驗證所述完整性檢查程序 的所述值只能被建立一次。
43. 如權(quán)利要求40所述的方法,其特征在于,進一步包含在所述操作系統(tǒng)被 信任的所述時間建立所述時段。
44. 如權(quán)利要求43所述的方法,其特征在于,所述時段只能被建立一次。
45. 如權(quán)利要求40所述的方法,其特征在于,進一步包含依照障礙同步事件 來執(zhí)行所述完整性檢查程序。
全文摘要
驗證計算機系統(tǒng)。完整性檢查程序在計算機系統(tǒng)啟動時被聲明。判定該完整性檢查程序是否在時段內(nèi)準(zhǔn)周期性地驗證操作系統(tǒng)的動態(tài)數(shù)據(jù)結(jié)構(gòu)。
文檔編號G06F11/00GK101176069SQ200680011416
公開日2008年5月7日 申請日期2006年2月3日 優(yōu)先權(quán)日2005年2月7日
發(fā)明者古樂默·J·羅澤斯 申請人:特倫梅特公司