專利名稱:用于檢測(cè)計(jì)算機(jī)系統(tǒng)中的安全漏洞的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于檢測(cè)計(jì)算機(jī)系統(tǒng)中的安全漏洞的系統(tǒng)和方法。
背景技術(shù):
計(jì)算機(jī)系統(tǒng)安全的標(biāo)準(zhǔn)方法包括密碼和其他授權(quán)標(biāo)記、使用加密以及許可檢查系統(tǒng)。在這些標(biāo)準(zhǔn)方法中,“安全標(biāo)識(shí)”(如校驗(yàn)和、數(shù)字簽名和許可級(jí)別)和“安全屬性”(如,被認(rèn)為不可改變的數(shù)據(jù)項(xiàng)和該數(shù)據(jù)項(xiàng)的隱藏副本之間的準(zhǔn)確匹配)可用于驗(yàn)證數(shù)據(jù)和安全系統(tǒng)的完整性。但是,所有方法都有缺陷和成本。實(shí)際上,沒(méi)有哪個(gè)安全系統(tǒng)是100%有效的。
計(jì)算機(jī)系統(tǒng)安全的“縱深防御”概念提供了一系列的障礙和反檢查,以降低危害成功的概率和提高早期檢測(cè)的概率,從而導(dǎo)致系統(tǒng)反應(yīng),如系統(tǒng)暫停、安全重新啟動(dòng)或?qū)粽卟扇》磽舸胧?br>
安全系統(tǒng)越復(fù)雜,實(shí)施和設(shè)計(jì)的驗(yàn)證難度就越大,用于構(gòu)建和維護(hù)該系統(tǒng)的計(jì)算資源成本和工程投資就越高。不同的應(yīng)用程序?qū)嶋H上可以支持不同級(jí)別的安全成本。例如,用于控制遠(yuǎn)程輸電設(shè)備的軟件成本很高,并且存在資源約束。
所需要的是用于提高安全性的系統(tǒng)和方法,其適合不同的應(yīng)用程序,而不增加不實(shí)際的成本。
發(fā)明內(nèi)容
本發(fā)明提供了將軟件中的硬實(shí)時(shí)能力應(yīng)用于軟件安全性的系統(tǒng)和方法。例如,根據(jù)本發(fā)明的系統(tǒng)和方法,程序員可以向應(yīng)用程序附加周期完整性檢查,以使得針對(duì)該應(yīng)用程序的攻擊需要在一個(gè)狹窄和不可預(yù)測(cè)的時(shí)窗內(nèi)完全成功才能保持不被檢測(cè)到。
優(yōu)選情況下,本發(fā)明適用于多種應(yīng)用和計(jì)算機(jī)環(huán)境。一個(gè)預(yù)期應(yīng)用領(lǐng)域是進(jìn)程控制系統(tǒng),其中,多個(gè)較小的、低成本的控制裝置用于控制工廠或輸電系統(tǒng)或倉(cāng)庫(kù)的操作,并且,這些裝置可以通過(guò)網(wǎng)絡(luò)連接,并且,這些裝置的正確操作有實(shí)時(shí)要求。第二個(gè)預(yù)期應(yīng)用是計(jì)算機(jī)集群,其中,組件計(jì)算機(jī)可用于監(jiān)視該群中其他成員的安全性,并且,有資源使用本發(fā)明和傳統(tǒng)的安全軟件,對(duì)軟件之間的安全性進(jìn)行重要的交叉檢查。第三個(gè)預(yù)期應(yīng)用是包含敏感數(shù)據(jù)的計(jì)算機(jī),它具有一個(gè)簡(jiǎn)單的測(cè)試裝置,其可與使用本發(fā)明的軟件進(jìn)行通信,從而檢查該應(yīng)用程序的完整性。第四個(gè)預(yù)期應(yīng)用是銷售點(diǎn)(point-of-sale)終端,其中,必須保護(hù)信用卡的客戶輸入或其他敏感信息不被盜竊。預(yù)期應(yīng)用的該列表并不是窮舉的,本發(fā)明也可以用于其他應(yīng)用。
在一個(gè)實(shí)施例中,本發(fā)明提供了一種用于計(jì)算機(jī)系統(tǒng)的安全系統(tǒng)。通過(guò)檢查應(yīng)用程序代碼和/或計(jì)算機(jī)系統(tǒng)維護(hù)的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)和通過(guò)檢查應(yīng)用程序代碼本身,該安全系統(tǒng)硬實(shí)時(shí)地、周期性地檢查計(jì)算機(jī)系統(tǒng)和該計(jì)算機(jī)系統(tǒng)上運(yùn)行的應(yīng)用程序的完整性。該安全系統(tǒng)包括以下部件(1)一個(gè)高優(yōu)先級(jí)、周期性、實(shí)時(shí)的安全進(jìn)程或線程,用于(a)檢查應(yīng)用程序代碼和該應(yīng)用程序的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的完整性,(b)檢查該應(yīng)用程序的預(yù)定執(zhí)行時(shí)間,(c)失敗時(shí)發(fā)出警報(bào),以及(d)在必要的情況下,取代該應(yīng)用程序;以及(2)一個(gè)進(jìn)程或例程,其能夠以原子方式(atomically)更新已加密校驗(yàn)和及其相關(guān)數(shù)據(jù)結(jié)構(gòu)。如果發(fā)現(xiàn)應(yīng)用程序代碼被篡改、如果發(fā)現(xiàn)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)沒(méi)有匹配的校驗(yàn)和或者如果發(fā)現(xiàn)應(yīng)用程序沒(méi)有被安排在所要求的頻率,那么,該安全進(jìn)程就會(huì)發(fā)出警告。
優(yōu)選情況下,該安全系統(tǒng)還可以包括一個(gè)挑戰(zhàn)處理機(jī)和一個(gè)外部監(jiān)視器。該外部監(jiān)視器可以是一個(gè)通過(guò)網(wǎng)絡(luò)連接到該計(jì)算機(jī)系統(tǒng)的對(duì)等方計(jì)算機(jī)系統(tǒng)上運(yùn)行的應(yīng)用程序,或者,它可以是該計(jì)算機(jī)系統(tǒng)中的一個(gè)安全裝置。該外部監(jiān)視器被配置為向挑戰(zhàn)處理機(jī)發(fā)送挑戰(zhàn)。外部監(jiān)視器希望在預(yù)定時(shí)限內(nèi)從挑戰(zhàn)處理機(jī)接收到該挑戰(zhàn)的響應(yīng)。如果挑戰(zhàn)處理機(jī)在預(yù)定時(shí)限內(nèi)沒(méi)有對(duì)該挑戰(zhàn)做出響應(yīng),那么,這表明該計(jì)算機(jī)系統(tǒng)可能遭到了損害。
例如,假設(shè)該安全線程被配置為根據(jù)一個(gè)序列號(hào),來(lái)更新已加密數(shù)據(jù)項(xiàng),該序列號(hào)表示已經(jīng)過(guò)多少周期而未檢測(cè)到入侵者。該外部監(jiān)視器可被配置為請(qǐng)求使用發(fā)送給該挑戰(zhàn)處理機(jī)的挑戰(zhàn)中包含的加密密鑰,將這些數(shù)據(jù)項(xiàng)發(fā)送給該監(jiān)視器。此外,該監(jiān)視器可以請(qǐng)求在1毫秒內(nèi)返回該挑戰(zhàn)的響應(yīng)。如果選擇了合適的完整性標(biāo)識(shí)和屬性,那么,沒(méi)有意識(shí)到該實(shí)時(shí)挑戰(zhàn)/響應(yīng)特性的任何挑戰(zhàn)者將無(wú)法對(duì)該計(jì)算機(jī)系統(tǒng)產(chǎn)生檢測(cè)不到的損害。此外,意識(shí)到該實(shí)時(shí)挑戰(zhàn)/響應(yīng)特性的任何攻擊者必須獲得內(nèi)核級(jí)特權(quán),才能攻擊該實(shí)時(shí)安全線程,同時(shí)保持該響應(yīng)定時(shí)。
在另一個(gè)實(shí)施例中,本發(fā)明提供了一種用于計(jì)算機(jī)系統(tǒng)的安全系統(tǒng),其運(yùn)行在具有實(shí)時(shí)內(nèi)核和非實(shí)時(shí)或“通用”內(nèi)核的雙內(nèi)核操作系統(tǒng)中。該安全系統(tǒng)包括下列部件(1)第一實(shí)時(shí)線程,運(yùn)行在該實(shí)時(shí)內(nèi)核下,用于檢查該通用內(nèi)核的完整性標(biāo)識(shí)和屬性的可配置集合;(2)第二實(shí)時(shí)線程,運(yùn)行在該實(shí)時(shí)內(nèi)核下,用于檢查該實(shí)時(shí)內(nèi)核和第一實(shí)時(shí)線程的完整性標(biāo)識(shí);(3)一個(gè)或多個(gè)挑戰(zhàn)處理機(jī),運(yùn)行在該實(shí)時(shí)內(nèi)核下,如上所述,當(dāng)收到來(lái)自外部監(jiān)視器的挑戰(zhàn)之后,提供“挑戰(zhàn)/響應(yīng)”功能;以及(4)安全模塊,運(yùn)行在該通用內(nèi)核下,檢查該實(shí)時(shí)內(nèi)核以及第一和第二實(shí)時(shí)線程的完整性標(biāo)識(shí)和屬性。
在該實(shí)施例中,由第一實(shí)時(shí)線程檢查的完整性標(biāo)識(shí)可能包括(1)數(shù)據(jù)結(jié)構(gòu)的校驗(yàn)和/數(shù)字簽名,其包含關(guān)于該通用內(nèi)核使用的密碼文件的有關(guān)信息(如UNIX類型環(huán)境中的inode);以及(2)該通用內(nèi)核下運(yùn)行的軟件應(yīng)用程序的校驗(yàn)和/數(shù)字簽名,其用于對(duì)密碼文件中存儲(chǔ)的密碼進(jìn)行加密和解密。第一線程檢查的完整性屬性可能包括自從正常操作開(kāi)始以來(lái)關(guān)鍵應(yīng)用程序(如web服務(wù)器程序或數(shù)據(jù)庫(kù))是否重新啟動(dòng);以及,所有這些應(yīng)用程序的時(shí)間安排是否合理。
該挑戰(zhàn)處理機(jī)提供挑戰(zhàn)/響應(yīng)功能,允許外部監(jiān)視器發(fā)出挑戰(zhàn),需要在規(guī)定時(shí)限內(nèi)返回包含驗(yàn)證信息的加密數(shù)據(jù)項(xiàng)。
例如,假設(shè)前兩個(gè)線程各使用一個(gè)序列號(hào)來(lái)更新已加密數(shù)據(jù)項(xiàng),該序列號(hào)表示已經(jīng)過(guò)多少周期而沒(méi)有檢測(cè)到錯(cuò)誤。外部監(jiān)視器可能請(qǐng)求使用與挑戰(zhàn)一起傳遞的加密密鑰,將這些數(shù)據(jù)項(xiàng)傳輸?shù)奖O(jiān)視器。此外,網(wǎng)絡(luò)對(duì)等方可能請(qǐng)求在1毫秒內(nèi)返回響應(yīng)。如上所述,如果選擇了合適的完整性標(biāo)識(shí)和屬性,那么,沒(méi)有意識(shí)到該實(shí)時(shí)挑戰(zhàn)/響應(yīng)特性的任何挑戰(zhàn)者將無(wú)法對(duì)該計(jì)算機(jī)系統(tǒng)產(chǎn)生檢測(cè)不到的損害。此外,意識(shí)到該實(shí)時(shí)挑戰(zhàn)/響應(yīng)特性的任何攻擊者必須獲得內(nèi)核級(jí)特權(quán),才能攻擊實(shí)時(shí)安全線程,并且,為此,攻擊者必須在檢測(cè)到損害之前先損害通用內(nèi)核的安全部件然后擊敗這三個(gè)實(shí)時(shí)線程。
保持這些部件的準(zhǔn)確周期和完整性標(biāo)識(shí)和屬性密碼的選擇(如,在系統(tǒng)啟動(dòng)時(shí)確定它們)使攻擊者的任務(wù)進(jìn)一步復(fù)雜。從通用內(nèi)核或其應(yīng)用程序開(kāi)始的攻擊者進(jìn)一步受阻于該實(shí)時(shí)和通用內(nèi)核的分離性質(zhì),因?yàn)椋荒艽_保在任何準(zhǔn)確時(shí)間段內(nèi)完成行動(dòng)。由于設(shè)計(jì)和實(shí)現(xiàn)期間允許更高度安全驗(yàn)證的實(shí)時(shí)內(nèi)核的更簡(jiǎn)單性質(zhì)以及通過(guò)檢查實(shí)時(shí)內(nèi)核和實(shí)時(shí)安全線程完整性的安全模塊的操作,從而阻止在實(shí)時(shí)內(nèi)核一側(cè)開(kāi)始的攻擊者。
下面結(jié)合附圖,描述本發(fā)明的上述和其他特征與優(yōu)點(diǎn),以及本發(fā)明優(yōu)選實(shí)施例的結(jié)構(gòu)和操作。
附圖簡(jiǎn)述這里并入并且構(gòu)成說(shuō)明書(shū)一部分的附圖用于描述本發(fā)明的各實(shí)施例,并且還與說(shuō)明書(shū)一起,用于解釋本發(fā)明的原理和使本領(lǐng)域技術(shù)人員實(shí)施和使用本發(fā)明。在附圖中,相同的標(biāo)記表示相同或功能上相似的單元。此外,標(biāo)記最左邊的數(shù)字表示其中該標(biāo)記第一次出現(xiàn)的附圖。
圖1是具有硬實(shí)時(shí)操作系統(tǒng)和在該實(shí)時(shí)操作系統(tǒng)下運(yùn)行的安全系統(tǒng)的計(jì)算機(jī)系統(tǒng)的功能框圖;圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的進(jìn)程的流程圖;圖3示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng);圖4示出了本發(fā)明的安全系統(tǒng)的另一個(gè)實(shí)施例;圖5示出了一個(gè)典型計(jì)算機(jī)系統(tǒng)。
具體實(shí)施例方式
在下面的描述中,為了充分理解本發(fā)明,給出了各種具體細(xì)節(jié),如特定系統(tǒng)、計(jì)算機(jī)、設(shè)備、部件、技術(shù)、計(jì)算機(jī)語(yǔ)言、存儲(chǔ)技術(shù)、軟件產(chǎn)品和系統(tǒng)、操作系統(tǒng)、接口、硬件等,但它們只用于說(shuō)明目的,而沒(méi)有限制意味。但是,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以用與這些具體細(xì)節(jié)不同的其他實(shí)施例來(lái)實(shí)施本發(fā)明。為了更清楚地描述本發(fā)明,這里對(duì)公知的系統(tǒng)、計(jì)算機(jī)、設(shè)備、部件、技術(shù)、計(jì)算機(jī)語(yǔ)言、存儲(chǔ)技術(shù)、軟件產(chǎn)品和系統(tǒng)、操作系統(tǒng)、接口和硬件不再贅述。
圖1是具有硬實(shí)時(shí)操作系統(tǒng)101的實(shí)時(shí)計(jì)算機(jī)系統(tǒng)100的功能框圖。在一些實(shí)施例中,硬實(shí)時(shí)操作系統(tǒng)101是新墨西哥Socorro的FSMLabs提供的RTLinuxPro操作系統(tǒng),但是,也可以使用其他硬實(shí)時(shí)操作系統(tǒng)。計(jì)算機(jī)系統(tǒng)100包括進(jìn)程或線程102(后面稱之為“安全進(jìn)程102”),用于檢測(cè)應(yīng)用程序代碼104和/或關(guān)鍵數(shù)據(jù)元素(如文件、數(shù)據(jù)結(jié)構(gòu)等)103是否已被入侵者損害。
在一些實(shí)施例中,安全進(jìn)程102通過(guò)(1)判斷代碼104是否已被非法修改和/或(2)判斷應(yīng)用程序代碼104是否按照預(yù)定時(shí)間執(zhí)行,來(lái)判斷應(yīng)用程序代碼104是否已被損害(例如,被入侵者修改)。安全進(jìn)程102可采用多種方式,判斷代碼104是否已被非法修改。例如,它可以判斷代碼104是否與該代碼104相關(guān)的校驗(yàn)和相匹配。此外,它可以訪問(wèn)代碼104的過(guò)去副本,并將該代碼的過(guò)去副本與當(dāng)前代碼進(jìn)行比較,來(lái)檢查從過(guò)去副本創(chuàng)建以來(lái)是否有任何修改。還有其他方法可以確定代碼104是否被非法修改,而本發(fā)明不限于具體的方法。
同樣,通過(guò)判斷數(shù)據(jù)元素103是否已被非法個(gè)人或進(jìn)程修改,安全進(jìn)程102可以判斷數(shù)據(jù)元素103是否已被損害。安全進(jìn)程102可以采用多種方式,判斷代碼104是否已被非法修改。例如,它可以判斷代碼104是否與該數(shù)據(jù)元素相關(guān)的校驗(yàn)和相匹配。
在校驗(yàn)和用于判斷數(shù)據(jù)元素103是否被損害的實(shí)施例中,第一次創(chuàng)建和存儲(chǔ)數(shù)據(jù)元素103時(shí),也創(chuàng)建和存儲(chǔ)該數(shù)據(jù)元素的校驗(yàn)和(優(yōu)選將所存儲(chǔ)的校驗(yàn)和進(jìn)行加密)。此外,當(dāng)應(yīng)用程序代碼104需要改變數(shù)據(jù)元素103時(shí),應(yīng)用程序代碼104本身或與應(yīng)用程序代碼104進(jìn)行通信的安全更新進(jìn)程105更新該數(shù)據(jù)元素以及該數(shù)據(jù)元素103相關(guān)聯(lián)的校驗(yàn)和,從而使該校驗(yàn)和與修改后的數(shù)據(jù)元素103相匹配。優(yōu)選情況下,數(shù)據(jù)元素103及其校驗(yàn)和的更新以原子方式進(jìn)行(例如,使用公知的方法,以原子方式更新副本、計(jì)算校驗(yàn)和以及改變指針或索引)。
由于安全進(jìn)程102執(zhí)行的檢查,入侵者為了在不被檢測(cè)到的情況下?lián)p害數(shù)據(jù)元素103或代碼104,入侵者必須知道創(chuàng)建該校驗(yàn)和所使用的算法。此外,在將校驗(yàn)和進(jìn)行加密的實(shí)施例中,入侵者必須使用合適的算法和合適的密鑰,對(duì)該校驗(yàn)和進(jìn)行加密。
優(yōu)選情況下,在有些實(shí)施例中,安全進(jìn)程102和/或?qū)崟r(shí)操作系統(tǒng)101被配置使得安全進(jìn)程102作為操作系統(tǒng)101中的高優(yōu)先級(jí)任務(wù)而執(zhí)行。這將使安全進(jìn)程102以“精確”的定期時(shí)間間隔執(zhí)行所需的安全檢查。圖2示出了該特征,它是安全進(jìn)程102執(zhí)行的流程200的流程圖。
流程200從步驟202開(kāi)始,其中,安全進(jìn)程102判斷數(shù)據(jù)元素103是否已被入侵者篡改(例如,非法修改)。如果是,則流程202繼續(xù)到步驟204,否則,流程200繼續(xù)到步驟206。在步驟204中,安全進(jìn)程102發(fā)出警告和/或關(guān)閉應(yīng)用進(jìn)程108。在步驟206中,安全進(jìn)程102判斷代碼104是否已被篡改。如果是,流程202轉(zhuǎn)到步驟204,否則,流程200轉(zhuǎn)到步驟208。在步驟208中,安全進(jìn)程102暫停預(yù)定量時(shí)間。在步驟208之后,流程200返回步驟202。由于安全進(jìn)程102是實(shí)時(shí)操作系統(tǒng)101中的高優(yōu)先級(jí)任務(wù),所以,幾乎可以保證安全進(jìn)程102將以步驟208中的暫停時(shí)間所確定的確定性間隔,執(zhí)行步驟202-206。
sp102的硬實(shí)時(shí)特性在很多情況下很重要,在這些情況下,周期性地執(zhí)行時(shí),應(yīng)用程序代碼104執(zhí)行一個(gè)重要任務(wù),并且,如果不以期望的方式執(zhí)行該重要任務(wù),后果可能很嚴(yán)重。因此,安全進(jìn)程102是非常重要的,當(dāng)顯示代碼104已被篡改時(shí),它能夠在執(zhí)行該重要任務(wù)之前關(guān)閉代碼104。
作為一個(gè)具體的示例,假設(shè)代碼104被配置為在時(shí)間t=1、t=2等輸出預(yù)定的信號(hào)。在該示例中,安全進(jìn)程102可被配置為在代碼104預(yù)定輸出信號(hào)之前,檢查代碼104的完整性(例如,sp102可以被配置為在時(shí)間t=0.9、t=1.9、t=2.9等檢查代碼的完整性)。這樣,如果入侵者篡改了代碼104,將使后果最小化,因?yàn)榇蠖鄶?shù)情況下sp102將在己篡改代碼104執(zhí)行其任務(wù)之前檢測(cè)到篡改,因此,能夠在已篡改代碼104執(zhí)行其任務(wù)之前采取校正行動(dòng)形式。
圖3示出了根據(jù)本發(fā)明另一實(shí)施例的計(jì)算機(jī)系統(tǒng)300。系統(tǒng)300與圖1所示系統(tǒng)相似,其不同之處在于系統(tǒng)300還包括一個(gè)外部監(jiān)視器302,外部監(jiān)視器302可被配置為向挑戰(zhàn)處理機(jī)304發(fā)出挑戰(zhàn),挑戰(zhàn)處理機(jī)304可被配置為對(duì)監(jiān)視器302發(fā)出的挑戰(zhàn)做出響應(yīng)。盡管這里將挑戰(zhàn)處理機(jī)表示為一個(gè)獨(dú)立于安全進(jìn)程102的進(jìn)程,但這并沒(méi)有限制意味,因?yàn)樘魬?zhàn)處理機(jī)也可實(shí)現(xiàn)為安全進(jìn)程102的一部分。
在一個(gè)實(shí)施例中,外部監(jiān)視器302被配置為向挑戰(zhàn)處理機(jī)304提供挑戰(zhàn)。該挑戰(zhàn)可以是對(duì)基本安全信息的請(qǐng)求,或者,它可以包含一些關(guān)于待檢查的完整性約束和完整性屬性的信息。該挑戰(zhàn)也可以包含一個(gè)在特定時(shí)間點(diǎn)傳輸該挑戰(zhàn)的響應(yīng)的請(qǐng)求。在一個(gè)實(shí)施例中,一旦挑戰(zhàn)處理機(jī)304收到該挑戰(zhàn),該挑戰(zhàn)處理機(jī)就通過(guò)檢查完整性約束和完整性屬性,來(lái)驗(yàn)證系統(tǒng)安全性。例如,這可能涉及檢查諸如加密代碼和密碼文件之類的標(biāo)準(zhǔn)安全部件的功能和/或檢查關(guān)鍵應(yīng)用程序是否正確按照預(yù)定時(shí)間。在所有實(shí)施例中,挑戰(zhàn)處理機(jī)304被配置為當(dāng)監(jiān)視器302發(fā)出挑戰(zhàn)時(shí),向外部監(jiān)視器302提供響應(yīng)。響應(yīng)的一個(gè)示例是一個(gè)正確簽名和加密的序列號(hào),表示響應(yīng)哪個(gè)挑戰(zhàn)。
如果外部監(jiān)視器302沒(méi)有在合適的時(shí)間(例如在規(guī)定的硬時(shí)限內(nèi)或在該挑戰(zhàn)中規(guī)定的時(shí)間)從挑戰(zhàn)處理機(jī)304收到正確的響應(yīng),則外部監(jiān)視器302可以聲明該系統(tǒng)300已經(jīng)被損害。因此,為了產(chǎn)生檢測(cè)不到的損害,在監(jiān)視器302施加的硬時(shí)限超時(shí)之前,攻擊者不僅必須擊敗內(nèi)部安全,而且還必須接管挑戰(zhàn)處理機(jī)部件304的操作。
外部監(jiān)視器302可以實(shí)現(xiàn)在通過(guò)確定性網(wǎng)絡(luò)連接到系統(tǒng)300的計(jì)算機(jī)上(其中,消息從監(jiān)視器302到安全系統(tǒng)300以及返回的時(shí)間是已知的),或者,它也可以是系統(tǒng)300中的專用設(shè)備。在第二種情況下,監(jiān)視器302可以是外設(shè),或者是片上(on-chip)安全監(jiān)視器。
在其他實(shí)施例中,處理機(jī)304可以被配置為根據(jù)精確的時(shí)間表,優(yōu)選不可預(yù)測(cè)的時(shí)間表,向監(jiān)視器302傳輸驗(yàn)證證書(shū)。例如,在處理機(jī)304是安全進(jìn)程102一部分的實(shí)施例中,處理機(jī)304可以被配置為根據(jù)預(yù)定時(shí)間表(例如每10毫秒),向監(jiān)視器302傳輸驗(yàn)證證書(shū),而不管監(jiān)視器302是否已發(fā)出挑戰(zhàn)。這樣,如果在預(yù)定時(shí)間沒(méi)有收到驗(yàn)證證書(shū),則監(jiān)視器302將判定系統(tǒng)100有問(wèn)題。同樣,在處理機(jī)304是獨(dú)立于安全進(jìn)程102的進(jìn)程的實(shí)施例中,處理機(jī)304可以被配置為在預(yù)定時(shí)間基礎(chǔ)上,驗(yàn)證安全進(jìn)程102的完整性,然后,如果處理機(jī)304證實(shí)了安全進(jìn)程102的完整性,則向監(jiān)視器302傳輸驗(yàn)證證書(shū)。
圖4示出了本發(fā)明的安全系統(tǒng)的又一個(gè)實(shí)施例。更具體地說(shuō),圖4是運(yùn)行具有實(shí)時(shí)內(nèi)核404和非實(shí)時(shí)“通用”內(nèi)核406的雙內(nèi)核操作系統(tǒng)402的計(jì)算機(jī)系統(tǒng)400的功能框圖。該安全系統(tǒng)包括下列部件(1)在實(shí)時(shí)內(nèi)核下執(zhí)行的第一實(shí)時(shí)線程411,用于檢查通用內(nèi)核406的安全標(biāo)識(shí)和屬性的可配置集合;(2)在實(shí)時(shí)內(nèi)核下執(zhí)行的第二實(shí)時(shí)線程412,用于檢查該實(shí)時(shí)內(nèi)核和第一實(shí)時(shí)線程411的完整性標(biāo)識(shí);(3)在實(shí)時(shí)內(nèi)核下執(zhí)行的至少一個(gè)挑戰(zhàn)處理機(jī)304,當(dāng)收到來(lái)自外部監(jiān)視器302的挑戰(zhàn)時(shí),其提供“挑戰(zhàn)/響應(yīng)”功能;以及(4)在通用內(nèi)核下執(zhí)行的安全模塊414,其檢查實(shí)時(shí)內(nèi)核404以及第一和第二實(shí)時(shí)線程411-412的完整性標(biāo)識(shí)和屬性。
在該實(shí)施例中,第一實(shí)時(shí)線程檢查的完整性標(biāo)識(shí)包括(1)數(shù)據(jù)元素420上的校驗(yàn)和/數(shù)字簽名,用于維持通用內(nèi)核所使用的密碼文件的有關(guān)信息(如UNIX類型環(huán)境中的inode);以及(2)通用內(nèi)核406下運(yùn)行的軟件應(yīng)用程序421上的校驗(yàn)和/數(shù)字簽名,用于對(duì)密碼文件中存儲(chǔ)的密碼進(jìn)行加密和解密。第一線程411檢查的完整性屬性可能包括自從正常操作開(kāi)始以來(lái)關(guān)鍵應(yīng)用程序(如web服務(wù)器程序或數(shù)據(jù)庫(kù))是否重新啟動(dòng);以及,所有這些應(yīng)用程序的時(shí)間安排是否合理。
圖5示出了可用于實(shí)現(xiàn)上述計(jì)算機(jī)系統(tǒng)的典型計(jì)算機(jī)系統(tǒng)500。計(jì)算機(jī)500包括一個(gè)處理器或中央處理單元504,其能夠執(zhí)行包括雙內(nèi)核和實(shí)時(shí)操作系統(tǒng)的傳統(tǒng)操作系統(tǒng)。中央處理單元504通過(guò)總線526或其他通信路徑,與一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備524集合進(jìn)行通信。I/O設(shè)備524包括鍵盤(pán)、鼠標(biāo)、視頻顯示器、打印機(jī)等。CPU 504還通過(guò)總線526與計(jì)算機(jī)讀取介質(zhì)(如傳統(tǒng)的揮發(fā)性和非揮發(fā)性數(shù)據(jù)存儲(chǔ)器件)進(jìn)行通信。在本領(lǐng)域中,CPU 504、I/O設(shè)備524、總線526、網(wǎng)絡(luò)接口580和存儲(chǔ)單元528之間的交互是公知的。
存儲(chǔ)單元528存儲(chǔ)軟件538。軟件538包括一個(gè)或多個(gè)操作系統(tǒng)和一個(gè)或多個(gè)用于實(shí)現(xiàn)本發(fā)明方法的軟件模塊540。傳統(tǒng)的編程技術(shù)可用于實(shí)現(xiàn)軟件538。存儲(chǔ)單元528也可存儲(chǔ)任何必須的數(shù)據(jù)文件。此外,計(jì)算機(jī)系統(tǒng)500可以通過(guò)網(wǎng)絡(luò)接口580連接到互聯(lián)網(wǎng)和/或其他計(jì)算機(jī)網(wǎng)絡(luò),從而有利于數(shù)據(jù)傳輸和操作員控制。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以根據(jù)本說(shuō)明書(shū)的描述,使用一個(gè)或多個(gè)被編程的通用計(jì)算機(jī)、微處理器等,來(lái)實(shí)現(xiàn)本說(shuō)明書(shū)中闡明的系統(tǒng)、進(jìn)程和部件。熟練的程序員可以根據(jù)本說(shuō)明說(shuō)所披露的內(nèi)容,容易地實(shí)現(xiàn)合適的軟件編碼。因此,本發(fā)明還包括基于計(jì)算機(jī)的產(chǎn)品,其存儲(chǔ)在存儲(chǔ)介質(zhì)上的,并且包括可用于對(duì)計(jì)算機(jī)編程以執(zhí)行根據(jù)本發(fā)明的進(jìn)程的指令。該存儲(chǔ)介質(zhì)包括、但不限于任何類型的磁盤(pán),包括軟盤(pán)、光盤(pán)、CDROM、磁光盤(pán)、ROM、RAM、EPROM、EEPROM、閃速存儲(chǔ)器、磁或光卡,或適用于本地或遠(yuǎn)程地存儲(chǔ)電子指令的任何類型的介質(zhì)。
盡管這里將所描述的進(jìn)程顯示為一系列步驟,但這些步驟不必以所描述的次序執(zhí)行,除非特別指明。
前面描述了本發(fā)明的原理、實(shí)施例和操作模式。但是,不應(yīng)當(dāng)將本發(fā)明解釋為限于上述具體實(shí)施例,因?yàn)閼?yīng)當(dāng)將它們視為說(shuō)明性的、而不是限制性的。應(yīng)當(dāng)理解的是,在不脫離本發(fā)明的保護(hù)范圍的前提下,本領(lǐng)域技術(shù)人員可以對(duì)這些實(shí)施例做出修改。顯然,根據(jù)上面的描述,可以對(duì)本發(fā)明做出各種修改和變形。因此,應(yīng)當(dāng)理解的是,可以按照這里具體描述之外的其他方式來(lái)實(shí)施本發(fā)明。
因此,本發(fā)明的寬度和保護(hù)范圍不限于上述示例性實(shí)施例,而應(yīng)該由下面的權(quán)利要求及其等價(jià)物來(lái)定義。
權(quán)利要求
1.一種計(jì)算機(jī)程序,包括硬實(shí)時(shí)操作系統(tǒng);在所述硬實(shí)時(shí)操作系統(tǒng)下運(yùn)行的應(yīng)用程序;以及在所述硬實(shí)時(shí)操作系統(tǒng)下運(yùn)行的安全進(jìn)程;所述安全進(jìn)程被配置為硬實(shí)時(shí)地、周期性地檢查所述應(yīng)用程序和/或所述應(yīng)用程序使用的數(shù)據(jù)元素的完整性,并且,如果所述應(yīng)用程序或所述數(shù)據(jù)元素的完整性檢查顯示所述應(yīng)用程序或數(shù)據(jù)元素已被篡改,則通知所述計(jì)算機(jī)系統(tǒng)的用戶和/或關(guān)閉所述計(jì)算機(jī)系統(tǒng)或應(yīng)用程序的至少一部分;以及所述安全進(jìn)程包括一個(gè)挑戰(zhàn)處理機(jī),所述處理機(jī)被配置為從外部監(jiān)視器接收挑戰(zhàn)并在一個(gè)預(yù)定量時(shí)間內(nèi)提供到其上的響應(yīng),其中,所述外部監(jiān)視器被配置成使得如果所述外部監(jiān)視器在自發(fā)送所述挑戰(zhàn)以來(lái)的一個(gè)預(yù)定量時(shí)間內(nèi)沒(méi)有收到所述響應(yīng),那么,所述外部監(jiān)視器通知管理員和/或關(guān)閉所述計(jì)算機(jī)系統(tǒng)或應(yīng)用程序的至少一部分。
2.在運(yùn)行實(shí)時(shí)操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)中,一種計(jì)算機(jī)安全方法,包括在所述實(shí)時(shí)操作系統(tǒng)下執(zhí)行一個(gè)安全進(jìn)程,其中,所述安全進(jìn)程被配置為硬實(shí)時(shí)地、周期性地檢查應(yīng)用程序或所述應(yīng)用程序使用的數(shù)據(jù)元素的完整性,并且,如果所述應(yīng)用程序或所述數(shù)據(jù)元素的完整性檢查顯示所述應(yīng)用程序或數(shù)據(jù)元素已被篡改,則通知系統(tǒng)管理員和/或關(guān)閉所述應(yīng)用程序;向所述安全進(jìn)程或一個(gè)監(jiān)視所述安全進(jìn)程完整性的挑戰(zhàn)處理機(jī)發(fā)送挑戰(zhàn);以及如果在一個(gè)預(yù)定量時(shí)間內(nèi)沒(méi)有收到所述挑戰(zhàn)的響應(yīng),則通知管理員。
3.一種計(jì)算機(jī)系統(tǒng),包括雙內(nèi)核操作系統(tǒng),其包括實(shí)時(shí)內(nèi)核和非實(shí)時(shí)內(nèi)核;第一實(shí)時(shí)線程,其運(yùn)行在所述實(shí)時(shí)內(nèi)核下,所述第一實(shí)時(shí)線程被配置為監(jiān)視在所述非實(shí)時(shí)內(nèi)核下運(yùn)行的一個(gè)應(yīng)用程序的完整性;第二實(shí)時(shí)線程,其運(yùn)行在所述實(shí)時(shí)內(nèi)核下,所述第二實(shí)時(shí)線程被配置為監(jiān)視所述第一實(shí)時(shí)線程的完整性;以及安全進(jìn)程,其運(yùn)行在所述非實(shí)時(shí)內(nèi)核下,所述安全進(jìn)程被配置為檢查所述第一實(shí)時(shí)線程和/或所述第二實(shí)時(shí)線程的完整性。
全文摘要
本發(fā)明提供將軟件中的硬實(shí)時(shí)能力應(yīng)用于軟件安全的系統(tǒng)和方法。例如,通過(guò)本發(fā)明的系統(tǒng)和方法,程序員可以向應(yīng)用程序附加周期完整性檢查,以使得針對(duì)該應(yīng)用程序的攻擊需要在一個(gè)狹窄和不可預(yù)測(cè)的時(shí)窗內(nèi)完全成功才能保持不被檢測(cè)到。
文檔編號(hào)G06F15/173GK1748203SQ200380109692
公開(kāi)日2006年3月15日 申請(qǐng)日期2003年12月12日 優(yōu)先權(quán)日2002年12月12日
發(fā)明者維克托·J·尤戴肯 申請(qǐng)人:有限狀態(tài)機(jī)實(shí)驗(yàn)室公司