專利名稱:用于計(jì)算機(jī)系統(tǒng)中安全對(duì)象的支持的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體而言涉及保護(hù)一計(jì)算機(jī)系統(tǒng)上的數(shù)據(jù)及軟件免受各種形式的攻擊,包括免受該計(jì)算機(jī)系統(tǒng)上的其它軟件的攻擊。更具體的,在例示性實(shí)施例中,由兩條新的機(jī)器指令控制加密/解密以提供一種機(jī)制,通過(guò)該機(jī)制,使得除了在CPU內(nèi)部使用安全對(duì)象中的敏感軟件及數(shù)據(jù)的時(shí)間段以外的所有時(shí)間,該敏感軟件及數(shù)據(jù)始終是被加密的。
背景技術(shù):
因特網(wǎng)是強(qiáng)大的工具,其已改變了世界。正如IBM的前任董事長(zhǎng)兼CEO Lou Gerstner所言,“因特網(wǎng)是我們所見(jiàn)過(guò)的推動(dòng)商業(yè)、經(jīng)濟(jì)及社會(huì)改變的唯一最強(qiáng)大的工具”。但如同許多工具一樣,此工具可用于好的方面以及壞的方面。幾乎每周,我們就會(huì)聽(tīng)到以藉助于因特網(wǎng)的攻擊來(lái)危害系統(tǒng)及竊取敏感信息的事件。一些最近的新聞事項(xiàng)包括 英國(guó)MI5 中國(guó)網(wǎng)絡(luò)攻擊以頂級(jí)公司為目標(biāo),泰晤士報(bào)(倫敦),2007年12月3 曰;·非法軟件造成大規(guī)模數(shù)據(jù)外泄未經(jīng)授權(quán)的計(jì)算機(jī)程序秘密安裝于漢納福特兄弟(Harmaford Brothers)連鎖超級(jí)市場(chǎng)的服務(wù)器上,泄露多達(dá)420萬(wàn)筆轉(zhuǎn)賬卡及信用卡資料,美聯(lián)社,2008年3月28日;·俄羅斯犯罪組織大規(guī)模地劫持個(gè)人計(jì)算機(jī),紐約時(shí)報(bào),2008年8月6日;·在信用卡詳細(xì)信息被連鎖旅館黑客竊取的后,800萬(wàn)人遭到ID被詐欺的危險(xiǎn), (英國(guó))每日郵報(bào),2008年8月25日; 紐約梅隆銀行的資料外泄現(xiàn)在對(duì)1250萬(wàn)人造成影響,路透社,2008年8月觀日; 以及 美國(guó)當(dāng)局指控來(lái)自5個(gè)國(guó)家的11人自若干零售商(包括TJX Cos)竊取數(shù)千萬(wàn)信用卡號(hào)及轉(zhuǎn)賬卡號(hào),路透社,2008年8月觀日(引用上文所述的紐約銀行的文章)。且存在許多其它類似事件。因此,需要可有助于防止黑客藉助于因特網(wǎng)的攻擊而自計(jì)算機(jī)系統(tǒng)竊盜信息的系統(tǒng)及方法,且需要保護(hù)計(jì)算機(jī)系統(tǒng)上的敏感數(shù)據(jù)及軟件免受其它軟件(包括可將攻擊者引入至目標(biāo)計(jì)算機(jī)系統(tǒng)中的軟件)攻擊。
發(fā)明內(nèi)容
4
鑒于前述內(nèi)容以及現(xiàn)有系統(tǒng)的其它例示性問(wèn)題、缺陷及缺點(diǎn),本發(fā)明的例示性特征為提供一種用于計(jì)算機(jī)系統(tǒng)的處理器,該處理器包括用于支持安全對(duì)象的機(jī)制,該安全對(duì)象包含受到密碼編譯保護(hù)以免受該計(jì)算機(jī)系統(tǒng)上的其它軟件攻擊的代碼及數(shù)據(jù)。本發(fā)明的另一例示性特征為提供一種用于進(jìn)行以下操作的結(jié)構(gòu)及方法除安全對(duì)象實(shí)際上正在CPU內(nèi)加以處理時(shí)的外,都使為該安全對(duì)象的部分的數(shù)據(jù)及代碼中的至少者保持受到密碼編譯保護(hù)。本發(fā)明的另一例示性特征為提供一種機(jī)制,其包括密碼編譯引擎;以及機(jī)器指令,其將密鑰加載至該密碼編譯引擎中,以使得該安全對(duì)象在進(jìn)入用于處理該安全對(duì)象的 CPU中時(shí)經(jīng)解密。因此,在第一例示性方面中,本文中描述一種處理器,其處于計(jì)算機(jī)系統(tǒng)中,該處理器并有支持安全對(duì)象的機(jī)制,該安全對(duì)象包括受到密碼編譯保護(hù)以免受該計(jì)算機(jī)系統(tǒng)上的其它軟件攻擊的代碼及數(shù)據(jù)。在第二例示性方面中,本文中還描述一種機(jī)制,其包括密碼編譯引擎;以及指令,其將密鑰加載至該密碼編譯引擎中以在該安全對(duì)象的該代碼正執(zhí)行于該處理器上時(shí)提供對(duì)該安全對(duì)象的訪問(wèn)。在第三例示性方面中,本文中還描述一種保護(hù)私有信息的方法,及一種儲(chǔ)存執(zhí)行該方法的機(jī)器可讀指令的儲(chǔ)存介質(zhì)。在第四例示性方面中,本文中還描述一種數(shù)據(jù)結(jié)構(gòu),其有形地體現(xiàn)于機(jī)器可讀儲(chǔ)存介質(zhì)中,該數(shù)據(jù)結(jié)構(gòu)受到密碼編譯保護(hù)以免受計(jì)算機(jī)系統(tǒng)上的其它軟件攻擊。在第五例示性方面中,本文中還描述一種機(jī)器指令,其提供支持安全對(duì)象的機(jī)制, 該安全對(duì)象包括受到密碼編譯保護(hù)以免受計(jì)算機(jī)系統(tǒng)上的其它軟件攻擊的代碼及數(shù)據(jù)。因此,本發(fā)明提供一種新的機(jī)器指令及數(shù)據(jù)結(jié)構(gòu),以使得該數(shù)據(jù)結(jié)構(gòu)的該私有數(shù)據(jù)除了在于計(jì)算機(jī)系統(tǒng)上的CPU內(nèi)處理期間以外始終受到密碼編譯保護(hù),藉此提供對(duì)該私有數(shù)據(jù)的保護(hù)以免受該計(jì)算機(jī)系統(tǒng)上的其它軟件攻擊。
參考附圖,將會(huì)更好地根據(jù)本發(fā)明的示例性實(shí)施例的詳細(xì)描述來(lái)理解上述及其他目的、方面和優(yōu)點(diǎn),其中圖1例示性地說(shuō)明對(duì)安全對(duì)象100的高級(jí)語(yǔ)言描述,該安全對(duì)象100包括受到密碼編譯保護(hù)以免受其它軟件攻擊的代碼及數(shù)據(jù);圖2為安全對(duì)象的低階實(shí)施200(例如,編譯版本)的說(shuō)明;圖3示出了提供對(duì)安全對(duì)象的支持的微處理器的例示性方塊圖300 ;圖4說(shuō)明了用于實(shí)施安全對(duì)象的esm指令格式400 ;圖5例示性地說(shuō)明第二例示性實(shí)施例的概念500,其中對(duì)esm指令的句柄進(jìn)行解密以得到加密/解密密鑰;圖6說(shuō)明構(gòu)建用于第一例示性實(shí)施例的含有安全對(duì)象的可執(zhí)行碼的處理600 ;圖7說(shuō)明構(gòu)建如可用于第二例示性實(shí)施例的含有安全對(duì)象的可執(zhí)行碼的另一處理 700 ;圖8說(shuō)明安全對(duì)象可將消息調(diào)用或發(fā)送至其它對(duì)象的方式;
圖9說(shuō)明用于并入本發(fā)明的例示性硬件/信息處理系統(tǒng)900 ;以及圖10說(shuō)明用于儲(chǔ)存根據(jù)本發(fā)明的方法的程序步驟的信號(hào)承載儲(chǔ)存介質(zhì)1000(例如,儲(chǔ)存介質(zhì))。
具體實(shí)施例方式現(xiàn)參看附圖,現(xiàn)解釋根據(jù)本發(fā)明的方法及結(jié)構(gòu)的例示性實(shí)施例。本發(fā)明提供用于實(shí)施新建構(gòu)安全對(duì)象的機(jī)制,其提供對(duì)抗軟件攻擊的強(qiáng)大防衛(wèi)。 安全對(duì)象(如同其它面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言中的對(duì)象)含有數(shù)據(jù)及操控該數(shù)據(jù)并提供對(duì)該數(shù)據(jù)的訪問(wèn)的代碼。安全對(duì)象與現(xiàn)有程序設(shè)計(jì)語(yǔ)言(諸如,Java)中的對(duì)象的不同的處在于該安全對(duì)象的私有代碼及數(shù)據(jù)受到密碼編譯保護(hù),使得其它軟件都不能訪問(wèn)該安全對(duì)象的私有信息。圖1提供可能以高階程序設(shè)計(jì)語(yǔ)言來(lái)表示安全對(duì)象100的實(shí)例。此安全對(duì)象包括私有數(shù)據(jù)101及私有方法102,以及允許經(jīng)由安全對(duì)象的公用接口 103、105來(lái)訪問(wèn)該安全對(duì)象的方法。安全對(duì)象可由其它軟件使用(還即,其它軟件可“調(diào)用”或“發(fā)送消息”至安全對(duì)象),但其它軟件僅可經(jīng)由安全對(duì)象的公用接口 103、105來(lái)訪問(wèn)該安全對(duì)象。在基于安全對(duì)象的系統(tǒng)中,私有信息幾乎始終受到加密。當(dāng)私有信息處于內(nèi)存中及處于磁盤(pán)上時(shí),無(wú)論其是處于傳呼系統(tǒng)中抑或處于文件系統(tǒng)中,私有信息都受到加密。圖2示出了安全對(duì)象的編譯版本200可能呈現(xiàn)在內(nèi)存中的方式。安全對(duì)象的私有信息僅在以下?tīng)顩r下“不用密碼”·自該安全對(duì)象內(nèi)部訪問(wèn)該私有信息;以及·僅當(dāng)該信息處于微處理器內(nèi)部時(shí)。由于其它代碼都不能訪問(wèn)安全對(duì)象的私有信息,因此經(jīng)由另一軟件模塊中的漏洞進(jìn)入系統(tǒng)的軟件攻擊無(wú)法訪問(wèn)該安全對(duì)象的私有信息的未加密版本。如圖2中所表明的, 經(jīng)加密的私有信息可包括對(duì)應(yīng)于圖1中的私有代碼102及私有數(shù)據(jù)101的私有代碼以及私有數(shù)據(jù)。在用于解釋本發(fā)明的概念的例示性實(shí)施例中,此新設(shè)計(jì)包括用于進(jìn)入及離開(kāi)安全對(duì)象的公用方法的兩條新指令“esm”及“l(fā)sm”,其分別用于“進(jìn)入安全方法”(enter secure method)及“離開(kāi)安全方法” (leave secure method)。esm指令將些密鑰信息加載至專用寄存器中,該密鑰信息用于在安全對(duì)象的私有代碼及數(shù)據(jù)自內(nèi)存移動(dòng)至微處理器中時(shí)對(duì)該代碼及數(shù)據(jù)進(jìn)行解密。其它數(shù)據(jù)(諸如,傳遞至該方法的自變量及在調(diào)用安全對(duì)象時(shí)所保存的返回地址)的訪問(wèn)無(wú)需此解密。圖3為提供對(duì)安全對(duì)象的支持的微處理器301的方塊圖300。此微處理器以與現(xiàn)今常用的微處理器非常相似的方式執(zhí)行代碼,但其包括密碼編譯引擎302,該密碼編譯引擎 302用于(1)當(dāng)敏感信息自外部存儲(chǔ)器303移動(dòng)至Ll高速緩存304中時(shí)對(duì)該信息進(jìn)行解密;以及( 當(dāng)敏感信息自Ll高速緩存304移動(dòng)至外部存儲(chǔ)器303時(shí)對(duì)該敏感信息進(jìn)行加密。此加密用于確保包括病毒、蠕蟲(chóng)及其它“攻擊軟件”的其它軟件將不能夠獲得敏感信息的未加密版本。圖3還示出了密碼編譯引擎內(nèi)的標(biāo)記為“密鑰”的區(qū)塊305,其留存用于加密及解密處理中的密鑰。該密鑰區(qū)塊可包括密碼編譯寄存器集合,其經(jīng)專門(mén)設(shè)計(jì)以用于留存所述密鑰。應(yīng)注意,密碼編譯引擎302可為與處理器307相關(guān)聯(lián)的共處理器,或密碼編譯引擎可以是由CPU處理器本身執(zhí)行的功能。由Ism指令恢復(fù)專用密碼編譯寄存器305的先前狀態(tài),Ism指令可僅由操作碼組成,使得一般非安全代碼可在該安全方法返回時(shí)在無(wú)加密及解密的情況下執(zhí)行。在安全對(duì)象系統(tǒng)中,用于對(duì)安全對(duì)象的私有信息進(jìn)行解密的密鑰305可用于該安全對(duì)象,但所述密鑰不可用于任何其它代碼。如圖4中例示性地示出了,esm指令400具有操作碼字段401及稱為其“句柄”的操作數(shù)字段402,該句柄用于將密鑰加載至密鑰區(qū)塊305中的專用密碼編譯寄存器中,以提供對(duì)對(duì)象的私有數(shù)據(jù)的訪問(wèn)。但由于用于對(duì)對(duì)象的私有信息進(jìn)行解密的密鑰必須不可用于任何其它代碼,因此該句柄提供對(duì)不可由其它軟件使用的密鑰信息的間接引用。將在下文中更詳細(xì)地描述此處理。在安全對(duì)象內(nèi)部,自內(nèi)存303至CPU 307的路徑上對(duì)私有信息進(jìn)行解密,且在自 CPU 307至內(nèi)存303的路徑上對(duì)私有信息進(jìn)行加密。該密碼編譯包括用于保護(hù)安全對(duì)象的私有代碼及數(shù)據(jù)的完整性以及其機(jī)密性的密碼編譯完整性值。因此,若敵人或軟件錯(cuò)誤或來(lái)自另一軟件模塊的軟件攻擊“篡改”對(duì)象的私有代碼或數(shù)據(jù),則當(dāng)該對(duì)象下次訪問(wèn)該代碼或數(shù)據(jù)時(shí),密碼編譯硬件將產(chǎn)生密碼編譯完整性異常。相反,當(dāng)安全對(duì)象更新其私有數(shù)據(jù)101時(shí),該對(duì)象的密鑰被用來(lái)更新其密碼編譯完整性值,以使得在該對(duì)象稍后訪問(wèn)此數(shù)據(jù)時(shí),不發(fā)生任何完整性異常。可如上文所述的共同未決申請(qǐng)中所描述地進(jìn)行包括密碼編譯完整性保護(hù)的加密及解密處理。該完整性保護(hù)對(duì)于保護(hù)提供對(duì)對(duì)象的私有信息的訪問(wèn)的密鑰而言也是必要的。若敵人試圖藉由某些其它代碼來(lái)使用安全對(duì)象的句柄(其可在安全對(duì)象的esm指令中是可獲得的),則對(duì)此“其它”代碼的使用將產(chǎn)生密碼編譯完整性異常,且此代碼的執(zhí)行將被終止。 由于所述密鑰不可為敵人所用,因此敵人無(wú)法產(chǎn)生在使用所述密鑰時(shí)通過(guò)密碼編譯完整性檢查的代碼。且敵人無(wú)法以除句柄外的其它方式獲得或使用所述密鑰,因此無(wú)法獲得對(duì)安全對(duì)象的密鑰或私有信息的訪問(wèn)。在例示性實(shí)施中,密鑰信息以及自句柄至密鑰的映射儲(chǔ)存于不可由軟件訪問(wèn)的受保護(hù)區(qū)域306中。在此實(shí)施中,當(dāng)CPU執(zhí)行esm指令時(shí),其自該esm指令取得句柄,將該句柄映射至密鑰信息,且接著將該密鑰信息加載至密鑰區(qū)塊305中的專用密碼編譯寄存器中。在圖5中所示出了的第二例示性實(shí)施500中,設(shè)計(jì)句柄以消除儲(chǔ)存對(duì)象密鑰信息的需要。在此設(shè)計(jì)中,句柄具有安全對(duì)象的密鑰信息的加密形式,其是根據(jù)不可用于軟件的專用“系統(tǒng)密鑰”進(jìn)行加密。在此設(shè)計(jì)中,正執(zhí)行esm指令的CPU使用該系統(tǒng)密鑰來(lái)對(duì)該句柄進(jìn)行解密以獲得對(duì)象的密鑰信息,且接著將該對(duì)象的密鑰信息加載至密碼編譯寄存器中以提供對(duì)該對(duì)象的私有信息的訪問(wèn)。該系統(tǒng)密鑰仍必須受到保護(hù),但此設(shè)計(jì)的可裁剪性更佳,因?yàn)闊o(wú)需儲(chǔ)存潛在的大量對(duì)象密鑰及自句柄至對(duì)象密鑰的映射。在上文所述的共同未決申請(qǐng)中描述了實(shí)施此加密、解密及完整性檢查的方法的細(xì)節(jié)。圖6及圖7例示性地說(shuō)明構(gòu)建用于所述兩個(gè)實(shí)施的具有安全對(duì)象的可執(zhí)行碼的處理。圖6說(shuō)明構(gòu)建用于第一例示性實(shí)施的可執(zhí)行碼的處理600。除了通常的編譯器處理601以外,在步驟602中,編譯器還將在安全對(duì)象公用方法的進(jìn)入點(diǎn)及安全對(duì)象公用方法的返回處產(chǎn)生esm指令及Ism指令。接著,如圖6中所示出了,額外處理將進(jìn)行以下步驟·將給定對(duì)象的esm指令與句柄相關(guān)聯(lián)(步驟603);·將對(duì)象的句柄與密鑰信息進(jìn)行鏈接以保護(hù)機(jī)密性及完整性(步驟604);·使用每一對(duì)象的密鑰信息來(lái)對(duì)該對(duì)象的私有代碼及數(shù)據(jù)進(jìn)行加密(步驟605); 以及·將該密鑰信息以及自句柄至密鑰信息的映射儲(chǔ)存于“受保護(hù)區(qū)域”中,該“受保護(hù)區(qū)域”不可被大多數(shù)軟件訪問(wèn),但可在esm指令的執(zhí)行中使用(步驟606)。圖7說(shuō)明構(gòu)建用于第二例示性實(shí)施的可執(zhí)行碼的處理700。如在先前的狀況中,將在步驟701中進(jìn)行通常的編譯器處理,且在步驟702中,編譯器將在安全對(duì)象公用方法的進(jìn)入點(diǎn)及安全對(duì)象公用方法的返回處產(chǎn)生esm指令及Ism指令。但在此狀況下,額外處理將進(jìn)行以下步驟·針對(duì)每一安全對(duì)象產(chǎn)生密鑰信息(步驟703);·使用每一對(duì)象的密鑰信息來(lái)對(duì)該對(duì)象的私有代碼及數(shù)據(jù)進(jìn)行加密(步驟704);·使用專用“系統(tǒng)密鑰”來(lái)對(duì)每一對(duì)象的密鑰信息進(jìn)行加密(步驟705);以及·使用每一對(duì)象的密鑰信息的加密形式作為該對(duì)象的esm指令中的句柄(步驟 705)。將在經(jīng)仔細(xì)查閱的小型受信任程序中進(jìn)行此額外處理。注意,在第二實(shí)施中,無(wú)需在將執(zhí)行可執(zhí)行碼的系統(tǒng)上進(jìn)行此額外處理。此額外處理可在獨(dú)立開(kāi)發(fā)機(jī)器上進(jìn)行,且接著發(fā)送至所要目標(biāo)機(jī)器以用于執(zhí)行。一旦已完成此處理,可執(zhí)行碼中的安全對(duì)象即為“安全的”。安全對(duì)象受到保護(hù)以免受其它軟件模塊中的錯(cuò)誤影響及免受來(lái)自其它軟件模塊的攻擊,包括有專用授權(quán)的軟件 (諸如,器件驅(qū)動(dòng)程序、操作系統(tǒng)及超管理器)中的錯(cuò)誤及來(lái)自有專用授權(quán)的軟件(諸如,器件驅(qū)動(dòng)程序、操作系統(tǒng)及超管理器)的攻擊。在上文的第二實(shí)施中,當(dāng)安全對(duì)象處于自開(kāi)發(fā)機(jī)器至期望目標(biāo)機(jī)器的“轉(zhuǎn)送”過(guò)程中時(shí),其也受到保護(hù)。此設(shè)計(jì)允許了解給定安全對(duì)象的內(nèi)容真正為安全的,而無(wú)需證明數(shù)百萬(wàn)行OS、中間軟件及應(yīng)用代碼的正確性。僅需證明上文所論述的安全對(duì)象機(jī)制的正確性及特定安全對(duì)象的設(shè)計(jì)的正確性。安全對(duì)象的應(yīng)用安全對(duì)象可用于避免上文在“背景技術(shù)”部分中所列的種類的安全故障。若敏感信息保留于安全對(duì)象內(nèi)部,則例如可避免對(duì)420萬(wàn)筆信用卡及轉(zhuǎn)賬卡記錄的盜竊。完整清單將不可用于除了安全對(duì)象自身以外的任何軟件,且可藉由以下動(dòng)作來(lái)最小化或避免對(duì)安全對(duì)象的代碼的軟件攻擊的問(wèn)題仔細(xì)的設(shè)計(jì)、盡可能小地保留對(duì)象的代碼,及仔細(xì)查閱對(duì)象的代碼以發(fā)現(xiàn)軟件漏洞。如上文所論述,無(wú)需證明數(shù)百萬(wàn)行應(yīng)用程序及系統(tǒng)代碼的正確性,僅需證明安全對(duì)象的正確性。除了使對(duì)象自身安全以外,還需要保護(hù)進(jìn)入及離開(kāi)安全對(duì)象的路徑,以使得軟件攻擊不能在所述路徑上進(jìn)行“竊聽(tīng)”及隨時(shí)間推移而收集大量敏感信息。所述路徑可受到標(biāo)準(zhǔn)通信安全性機(jī)制保護(hù)。在“良好”的設(shè)計(jì)中,敏感信息將根本不易受到攻擊。經(jīng)發(fā)送至安全對(duì)象的敏感信息將受到通信安全性機(jī)制保護(hù),直至其在該安全對(duì)象內(nèi)部安全為止。類似地,自安全對(duì)象發(fā)送的敏感信息在其離開(kāi)該安全對(duì)象的前將受到通信安全性機(jī)制保護(hù)。在此種設(shè)計(jì)中,攻擊軟件將不能夠自系統(tǒng)獲得任何敏感信息。攻擊軟件將不能夠獲得駐留于安全對(duì)象內(nèi)的敏感信息,且在將敏感信息發(fā)送至安全對(duì)象或自安全對(duì)象接收敏感信息時(shí),攻擊軟件將不能夠獲得該敏感信息。調(diào)用其它對(duì)象的對(duì)象安全對(duì)象可調(diào)用(或發(fā)送消息至)其它對(duì)象。事實(shí)上,其它對(duì)象可使用安全對(duì)象及非安全對(duì)象兩者。此狀況的實(shí)例在例示性地示出了于圖8中的處理800中加以說(shuō)明。在此實(shí)例中,ftOcessCardRequest 801為含有敏感信用卡信息的安全對(duì)象。 ProcessCardRequest 801 調(diào)用另一安全對(duì)象 EncryptAndDecrypt 802,以對(duì)敏感信息進(jìn)行加密以用于傳輸至遠(yuǎn)程系統(tǒng)。ProcessCardRequest 801接著調(diào)用普通的非安全對(duì)象 SendandReceiveMsg 803以將已加密以用于傳輸?shù)南l(fā)送至遠(yuǎn)程系統(tǒng)。注意,對(duì)敏感信息進(jìn)行加密及解密的對(duì)象應(yīng)為安全對(duì)象,此是因?yàn)槠湫枰霸诓挥妹艽a的情況下”訪問(wèn)敏感信息。另一方面,若為了在系統(tǒng)之間“轉(zhuǎn)送”時(shí)得到保護(hù),向遠(yuǎn)程系統(tǒng)發(fā)送消息的對(duì)象所接收以用于傳輸?shù)臄?shù)據(jù)已被加密,則該對(duì)象可為普通非安全對(duì)象。還注意,當(dāng)安全對(duì)象調(diào)用另一對(duì)象時(shí),需要針對(duì)被調(diào)用對(duì)象適當(dāng)?shù)卦O(shè)置密鑰信息。此實(shí)例說(shuō)明安全對(duì)象的另一方面。如早先所陳述,安全對(duì)象中的私有信息幾乎始終受到加密。另一方面,安全對(duì)象中的公用信息未受到加密,也即其未根據(jù)安全對(duì)象密碼編譯來(lái)進(jìn)行加密。但若ftOcessCardRequest類別具有用于儲(chǔ)存將被傳遞至遠(yuǎn)程系統(tǒng)的加密消息的公用字段,則該字段可被傳遞至非安全kndandReceiveMsg對(duì)象,且 SendandReceiveMsg對(duì)象將看到與ftOcessCardRequest所看到的消息相同的消息,此是因?yàn)樵撟侄螌⒉皇馨踩珜?duì)象密碼編譯“阻礙”。在此設(shè)計(jì)中,敏感信息始終不易受到攻擊。敏感信息始終受到安全對(duì)象密碼編譯或受到通信密碼編譯保護(hù)。額外細(xì)節(jié)中斷及處理分派當(dāng)安全對(duì)象被中斷時(shí),必須保存提供對(duì)安全對(duì)象的私有信息的訪問(wèn)的專用密碼編譯硬件的狀態(tài)。且稍后當(dāng)該安全對(duì)象重新繼續(xù)執(zhí)行時(shí),必須恢復(fù)該狀態(tài)。但由于不希望器件驅(qū)動(dòng)器或處理分派代碼或其它操作系統(tǒng)層級(jí)的代碼訪問(wèn)對(duì)象的密鑰(因?yàn)樵撛L問(wèn)將危害該對(duì)象的安全性),因此中斷處理器及OS層級(jí)的代碼將保存及恢復(fù)句柄而非密鑰,且將句柄加載至句柄寄存器中將使適當(dāng)密鑰信息加載至密碼編譯硬件中。密碼編譯句柄的當(dāng)前狀態(tài)將僅為懸掛及重新繼續(xù)執(zhí)行處理時(shí)必須保存及恢復(fù)的又一條“處理上下文”。文件系統(tǒng)中的交換、傳呼及可執(zhí)行碼當(dāng)處理處于內(nèi)存中時(shí),如上文所論述對(duì)其安全對(duì)象中的私有信息進(jìn)行加密,且其余代碼及數(shù)據(jù)不用密碼。在被交換或向外傳呼至磁盤(pán)時(shí),該處理藍(lán)圖具有相同形式安全對(duì)象受到加密,且其余代碼及數(shù)據(jù)未受到加密。因此,在交換或傳呼系統(tǒng)中沒(méi)有任何專用處理的情況下,該安全對(duì)象在被交換或傳呼時(shí)是安全的。如先前所論述,可如在上文所述的共同未決申請(qǐng)中的申請(qǐng)案中所描述地進(jìn)行加密、解密及完整性保護(hù)。然而,在此狀況下,由于代碼及數(shù)據(jù)的實(shí)體地址在將處理或處理的部分交換或傳呼至磁盤(pán)時(shí)可能改變,因此在加密、解密及完整性檢查時(shí)使用的地址將基于虛擬地址而非實(shí)體地址。文件系統(tǒng)中的可執(zhí)行文件具有與其在內(nèi)存中所具有的保護(hù)相同的保護(hù)安全對(duì)象中的私有信息受到加密,且可執(zhí)行檔的其它部分未受到加密。當(dāng)將該文件裝入(bring)至內(nèi)存中以產(chǎn)生新處理時(shí),不需要專用處理。傳遞自變量及返回值當(dāng)一個(gè)對(duì)象調(diào)用另一對(duì)象時(shí),自變量及返回值通常必須可由兩個(gè)對(duì)象“理解”,且在些狀況下,可能需要對(duì)所述值進(jìn)行密碼編譯轉(zhuǎn)換。要考慮以下若干種狀況1.普通非安全對(duì)象調(diào)用另一普通非安全對(duì)象。自變量及返回值在調(diào)用對(duì)象及被調(diào)用對(duì)象中都“不用密碼”。不需要轉(zhuǎn)換。2.安全對(duì)象調(diào)用非安全對(duì)象。在此狀況下,安全對(duì)象中的用于將自變量傳遞至非安全對(duì)象或自非安全對(duì)象接收返回值的字段應(yīng)為公用的。(若安全對(duì)象被暴露于非安全對(duì)象中,則使安全對(duì)象中的信息私有將毫無(wú)意義)。所述字段將“不用密碼”,所以不需要轉(zhuǎn)換。3.非安全對(duì)象調(diào)用安全對(duì)象。在此狀況下,安全對(duì)象中的用于所傳遞的自變量的字段及用于返回值的字段應(yīng)為公用的。所述字段將“不用密碼”,且不需要轉(zhuǎn)換。4.安全對(duì)象調(diào)用另一安全對(duì)象。在此狀況下,必須使用調(diào)用對(duì)象的密鑰對(duì)在該調(diào)用中所傳遞的私有信息進(jìn)行解密,且使用被調(diào)用對(duì)象的密鑰對(duì)其進(jìn)行重新加密。這可在esm 指令中完成。類似地,當(dāng)將返回值傳遞至調(diào)用對(duì)象中的私有字段時(shí),必須使用被調(diào)用對(duì)象的密鑰對(duì)該信息進(jìn)行解密,且使用調(diào)用對(duì)象的密鑰對(duì)其進(jìn)行重新加密。此可在Ism指令中進(jìn)行。文件系統(tǒng)I/O安全對(duì)象還應(yīng)能夠?qū)⑺接行畔?chǔ)存于文件系統(tǒng)中及自文件系統(tǒng)獲取私有信息。且該私有信息在其處于該文件系統(tǒng)中時(shí)應(yīng)保持為私有的。此可藉由調(diào)用安全對(duì)象以進(jìn)行自文件系統(tǒng)的安全讀取及至文件系統(tǒng)的安全寫(xiě)入來(lái)實(shí)現(xiàn)。除了可接受文件描述符、緩沖區(qū)及緩沖區(qū)長(zhǎng)度(buflen)自變量以外,Securefeite方法還可接受針對(duì)密鑰信息的自變量或多個(gè)自變量,以使得經(jīng)寫(xiě)入至文件的私有信息在處于該文件系統(tǒng)中時(shí)可受到密碼編譯保護(hù)以保護(hù)其機(jī)密性及完整性。類似地,SecureRead方法可接受針對(duì)密鑰信息的自變量或多個(gè)自變量,以使得其可自文件系統(tǒng)讀取私有信息并驗(yàn)證其讀取的私有信息的完整性。(此密鑰信息可儲(chǔ)存于調(diào)用kcurefeite及kcureRead方法的安全對(duì)象中的私有字段或多個(gè)私有字段中)。在使用針對(duì)實(shí)際文件系統(tǒng)I/O的“標(biāo)準(zhǔn)”讀取及寫(xiě)入系統(tǒng)調(diào)用時(shí),kcureRead及 Secureffrite可執(zhí)行所有需要的密碼編譯加密、解密及完整性檢查。(在文件系統(tǒng)I/O加密及解密中所使用的“地址”可為從文件開(kāi)頭起的字節(jié)編號(hào))。高速緩存若安全對(duì)象的私有信息“以不用密碼的方式”出現(xiàn)于Li、L2或L3高速緩存中,則該私有信息也需要受到保護(hù)。在一種實(shí)施中,如圖3中所示出了,加密及解密發(fā)生于Ll高速緩存與L2高速緩存之間。在此設(shè)計(jì)中,L2或L3高速緩存中的私有信息受到密碼編譯保護(hù)(如其在外部存儲(chǔ)器中那樣)。在此設(shè)計(jì)中,私有信息在Ll高速緩存中不用密碼,所以需要確信此純文字私有信息不可用于任何其它軟件。一種可能性為當(dāng)安全對(duì)象被中斷時(shí)或當(dāng)安全對(duì)象調(diào)用該安全對(duì)象外部的代碼時(shí),在執(zhí)行Ism指令時(shí)清除Ll高速緩存(或僅清除Ll高速緩存中的含有私有信息的所述條目)。在多核心設(shè)計(jì)中,給定CPU核心的Ll高速緩存(多個(gè)高速緩存)不可用于其它CPU 核心。在另一設(shè)計(jì)中,加密及解密在CPU核心與Ll高速緩存之間進(jìn)行。在此狀況下,Ll 中的私有信息受到密碼編譯保護(hù)(正如其在外部存儲(chǔ)器中),但無(wú)論何時(shí)自Ll高速緩存加載私有信息或?qū)⑺接行畔?chǔ)存至Ll高速緩存,都將需要進(jìn)行加密/解密。另一設(shè)計(jì)可涉及Ll高速緩存與CPU之間的額外“L0. 5”高速緩存。在此設(shè)計(jì)中, L1、L2及L3高速緩存將都含有私有信息的加密形式,且L0. 5將提供額外高速緩存層級(jí),其將用于且僅用于執(zhí)行安全對(duì)象時(shí)的私有信息的未加密形式。當(dāng)安全方法返回、當(dāng)其被中斷或當(dāng)該安全方法調(diào)用安全對(duì)象外部的代碼時(shí),將清除L0. 5高速緩存的內(nèi)容。安全處理可在處理層級(jí)使用安全對(duì)象以在其整個(gè)存留期內(nèi)保護(hù)處理的所有私有信息,包括該安全對(duì)象儲(chǔ)存于文件系統(tǒng)中及自文件系統(tǒng)獲取的私有信息,如上文所論述。在開(kāi)始執(zhí)行時(shí),esm指令將設(shè)置密碼編譯保護(hù),將使用該密碼編譯保護(hù)直至處理退出為止。當(dāng)處理過(guò)程調(diào)用外部代碼(諸如,調(diào)用操作系統(tǒng))時(shí),該外部代碼將執(zhí)行而無(wú)需訪問(wèn)安全對(duì)象的密鑰, 如先前所論述。概述已描述了用于提供對(duì)抗基于軟件的攻擊的強(qiáng)大防衛(wèi)的新穎方法。該方法基于新建構(gòu)對(duì)象(安全對(duì)象),其中私有信息真正為私有的。安全對(duì)象的私有信息在安全對(duì)象的如下整個(gè)周期上受到保護(hù)當(dāng)安全對(duì)象處于內(nèi)存中時(shí)、或當(dāng)將安全對(duì)象向外傳呼至磁盤(pán)時(shí)或當(dāng)將安全對(duì)象寫(xiě)出至文件系統(tǒng)時(shí)。私有信息受到密碼編譯保護(hù),以免受包括如器件驅(qū)動(dòng)程序、 操作系統(tǒng)及超管理器的有專用授權(quán)的軟件的其它軟件的攻擊。密碼編譯防止其它軟件在不被偵測(cè)到的情況下獲得私有信息或修改信息。安全對(duì)象的能力允許我們證明敏感信息真正為安全的,而無(wú)需證明數(shù)百萬(wàn)行操作系統(tǒng)、中間軟件及應(yīng)用代碼的正確性。僅需證明用于實(shí)施安全對(duì)象的機(jī)制的正確性及給定安全對(duì)象的設(shè)計(jì)的正確性??梢浴盎厮菁嫒荨狈绞綄踩珜?duì)象的能力添加至處理器。所有的現(xiàn)有代碼可繼續(xù)執(zhí)行而不作修改,且無(wú)任何對(duì)性能的負(fù)面懲罰。但可寫(xiě)入新的代碼,其利用安全對(duì)象的能力來(lái)為敏感信息提供更為強(qiáng)大的安全性。例示性硬件實(shí)施如先前所陳述,圖3中所示出了的微處理器以與現(xiàn)有微處理器非常相似的方式操作,但其經(jīng)修改為并有兩條新指令esm及Ism以及密碼編譯引擎,包括其密碼編譯寄存器及在上文所描述的情境下清除所述寄存器的能力。圖9說(shuō)明根據(jù)本發(fā)明且較佳具有至少處理器或中央處理單元(CPU)910的信息處置/計(jì)算機(jī)系統(tǒng)的典型硬件組態(tài),每一處理器或CPU已經(jīng)實(shí)施以執(zhí)行esm指令及Ism指令。CPU 910經(jīng)由系統(tǒng)總線912互連至隨機(jī)訪問(wèn)內(nèi)存(RAM) 914、只讀存儲(chǔ)器(ROM) 916、 輸入/輸出(I/O)配接器918(用于將諸如磁盤(pán)單元921及磁帶機(jī)940的周邊器件連接至總線912)、使用者接口配接器922 (用于將鍵盤(pán)924、鼠標(biāo)926、揚(yáng)聲器928、麥克風(fēng)932及/或其它使用者接口器件連接至總線912)、用于將信息處置系統(tǒng)連接至數(shù)據(jù)處理網(wǎng)絡(luò)、因特網(wǎng)、
11企業(yè)內(nèi)部網(wǎng)絡(luò)、個(gè)人局域網(wǎng)絡(luò)(PAN)等的通信配接器934,及用于將總線912連接至顯示器件938及/或打印機(jī)939 (例如,數(shù)字打印機(jī)或其類似物)的顯示配接器936。除以上所述的硬件/軟件環(huán)境以外,本發(fā)明的不同方面還包括用于執(zhí)行以上方法的計(jì)算機(jī)實(shí)施方法。作為實(shí)例,此方法可在以上所論述的特定環(huán)境中實(shí)施。此方法可(例如)藉由操作計(jì)算機(jī)來(lái)實(shí)施,如藉由數(shù)字?jǐn)?shù)據(jù)處理裝置來(lái)體現(xiàn),以執(zhí)行連串機(jī)器可讀指令。所述指令可駐留于各種類型的信號(hào)承載儲(chǔ)存介質(zhì)內(nèi)。因此,本發(fā)明的此方面是針對(duì)程序化產(chǎn)品,其包含有形地體現(xiàn)機(jī)器可讀指令的程序的信號(hào)承載儲(chǔ)存介質(zhì),所述機(jī)器可讀指令可由并有CPU 910及以上硬件的數(shù)字?jǐn)?shù)據(jù)處理器執(zhí)行以執(zhí)行本發(fā)明的方法。此信號(hào)承載儲(chǔ)存介質(zhì)可包括(例如)含于CPU 910內(nèi)的RAM,如由(例如)快速訪問(wèn)儲(chǔ)存器所表示?;蛘撸鲋噶羁珊诹硪恍盘?hào)承載儲(chǔ)存介質(zhì)中,諸如可由CPU 910直接或間接訪問(wèn)的磁性數(shù)據(jù)儲(chǔ)存磁盤(pán)1000(圖10)。不管含于該磁盤(pán)1000、該計(jì)算機(jī)/CPU 910中或是其它地方,所述指令可儲(chǔ)存于各種機(jī)器可讀數(shù)據(jù)儲(chǔ)存介質(zhì)上,諸如DASD儲(chǔ)存器(例如,現(xiàn)有“硬盤(pán)機(jī)”或RAID數(shù)組)、磁帶、 電子只讀存儲(chǔ)器(例如,ROM、EPROM或EEPR0M)、光學(xué)儲(chǔ)存器件(例如,CD-ROM、WORM、DVD、 數(shù)字光學(xué)磁帶等)、紙“打孔”卡,或其它合適信號(hào)承載儲(chǔ)存介質(zhì),包括用于傳輸介質(zhì)(諸如, 通信鏈路及無(wú)線)中的裝置及內(nèi)存,其并有用于儲(chǔ)存各種格式(諸如,如可用于計(jì)算機(jī)指令的傳輸中的數(shù)字或模擬格式)的指令的儲(chǔ)存裝置。在本發(fā)明的說(shuō)明性實(shí)施例中,機(jī)器可讀指令可包含軟件對(duì)象代碼。雖然已依據(jù)例示性實(shí)施例描述了本發(fā)明,但熟習(xí)此項(xiàng)技術(shù)者將認(rèn)識(shí)到,可以在隨附申請(qǐng)專利范圍的精神及范疇內(nèi)的修改來(lái)實(shí)踐本發(fā)明。此外,應(yīng)注意,即使以后在實(shí)施期間被修正,申請(qǐng)者的意向仍為涵蓋所有申請(qǐng)專利范圍要素的等效物。
權(quán)利要求
1.一種計(jì)算機(jī)系統(tǒng)中的處理器,所述處理器包含支持安全對(duì)象的機(jī)制,所述安全對(duì)象包含受到密碼編譯保護(hù)以免受所述計(jì)算機(jī)系統(tǒng)上的其它軟件攻擊的代碼及數(shù)據(jù)。
2.如權(quán)利要求1的處理器,其中所述機(jī)制包含密碼編譯引擎;以及指令,其將密鑰信息加載至所述密碼編譯引擎中,所述密鑰信息在所述安全對(duì)象的代碼正在所述處理器上執(zhí)行時(shí)提供對(duì)所述安全對(duì)象的數(shù)據(jù)的訪問(wèn)。
3.如權(quán)利要求1的處理器,其中所述安全對(duì)象的所述數(shù)據(jù)包含僅在由所述處理器執(zhí)行所述安全對(duì)象的所述代碼期間可訪問(wèn)的私有信息。
4.如權(quán)利要求2的處理器,其中加載所述密鑰信息的所述指令包含第一指令,所述機(jī)制進(jìn)一步包含用于將所述密碼編譯引擎中的所述密鑰信息恢復(fù)至先前狀態(tài)的第二指令。
5.如權(quán)利要求1的處理器,其中所述安全對(duì)象的所述數(shù)據(jù)包含私有數(shù)據(jù),且所述私有數(shù)據(jù)僅在其是自所述安全對(duì)象的代碼內(nèi)被訪問(wèn)時(shí)以及僅在所述數(shù)據(jù)處于所述處理器內(nèi)時(shí)未被加密。
6.如權(quán)利要求1的處理器,其中所述機(jī)制使用密碼編譯來(lái)保護(hù)所述安全對(duì)象的機(jī)密性及完整性兩者。
7.如權(quán)利要求2的處理器,其將所述密鑰信息加載至所述密碼編譯引擎中,所述密鑰信息是藉由對(duì)來(lái)自所述指令的字段導(dǎo)出的加密密鑰信息進(jìn)行解密而獲得的。
8.如權(quán)利要求7的處理器,其使用密碼編譯完整性檢查機(jī)制來(lái)防止除所述安全對(duì)象軟件以外的軟件使用所述加密密鑰信息。
9.如權(quán)利要求2的處理器,其中將所述密鑰信息加載至所述密碼編譯引擎的所述指令使用對(duì)儲(chǔ)存于受保護(hù)區(qū)域中的密鑰信息的間接引用,所述受保護(hù)區(qū)域保護(hù)所述密鑰信息免受其它軟件攻擊。
10.如權(quán)利要求9的處理器,其使用密碼編譯完整性檢查機(jī)制來(lái)防止除所述安全對(duì)象軟件以外的軟件使用所述間接引用。
11.如權(quán)利要求2的處理器,其進(jìn)一步包含與所述處理器相關(guān)聯(lián)的至少一個(gè)高速緩存, 其在由所述處理器執(zhí)行所述代碼期間受到保護(hù)。
12.如權(quán)利要求4的處理器,其進(jìn)一步包含中斷處理器及操作系統(tǒng)代碼中的至少一個(gè), 所述中斷處理器及操作系統(tǒng)代碼中的至少一個(gè)在所述代碼的所述執(zhí)行受到中斷的情況下保存對(duì)密鑰信息的間接引用且接著在所述執(zhí)行重新繼續(xù)時(shí)恢復(fù)所述間接引用,所述密鑰信息提供對(duì)所述安全對(duì)象的訪問(wèn)。
13.如權(quán)利要求1的處理器,所述安全對(duì)象將信息儲(chǔ)存至文件系統(tǒng)中及自所述文件系統(tǒng)獲取信息,所述信息受到密碼編譯保護(hù)以免受其它軟件攻擊。
14.一種保護(hù)計(jì)算機(jī)上的私有信息的方法,所述方法包含提供支持安全對(duì)象的機(jī)制,所述安全對(duì)象包含受到密碼編譯保護(hù)以免受所述計(jì)算機(jī)系統(tǒng)上的其它軟件攻擊的代碼及數(shù)據(jù)。
15.如權(quán)利要求14的方法,其中所述機(jī)制包含密碼編譯引擎;以及指令,其將密鑰信息加載至所述密碼編譯引擎中,所述密鑰信息在所述安全對(duì)象的所述代碼正在所述處理器上執(zhí)行時(shí)提供對(duì)所述對(duì)象的數(shù)據(jù)的訪問(wèn)。
16.如權(quán)利要求14的方法,其中所述安全對(duì)象的所述數(shù)據(jù)包含僅在執(zhí)行所述安全對(duì)象的所述代碼期間可訪問(wèn)的私有信息。
17.如權(quán)利要求14的方法,其進(jìn)一步包含產(chǎn)生用于所述機(jī)制中的安全對(duì)象,所述安全對(duì)象包含可僅藉由執(zhí)行所述安全對(duì)象中的指令而以解密格式訪問(wèn)的私有信息,所述指令在所述安全對(duì)象內(nèi)進(jìn)行的處理期間對(duì)所述私有信息進(jìn)行解密;以及將所產(chǎn)生的安全對(duì)象發(fā)送至內(nèi)存。
18.如權(quán)利要求15的方法,其中加載所述密鑰信息的所述指令包含第一指令,所述機(jī)制進(jìn)一步包含用于將所述密碼編譯引擎中的所述密鑰信息恢復(fù)至先前狀態(tài)的第二指令。
19.如權(quán)利要求15的方法,其進(jìn)一步包含將藉由對(duì)加密密鑰信息進(jìn)行解密而獲得的密鑰信息加載至所述密碼編譯引擎中。
20.如權(quán)利要求15的方法,其進(jìn)一步包含對(duì)所述安全對(duì)象使用密碼編譯完整性檢查機(jī)制。
21.如權(quán)利要求15的方法,其進(jìn)一步包含以下操作中的至少一個(gè) 在所述安全對(duì)象的所述執(zhí)行期間調(diào)用另一對(duì)象;以及在所述安全對(duì)象的所述執(zhí)行期間將消息發(fā)送至另一對(duì)象。
22.如權(quán)利要求21的方法,進(jìn)一步包含當(dāng)所述私有信息自第一安全對(duì)象傳遞至第二安全對(duì)象時(shí)對(duì)私有信息的密碼編譯轉(zhuǎn)換。
23.一種儲(chǔ)存介質(zhì),其有形地體現(xiàn)執(zhí)行如權(quán)利要求14的方法的機(jī)器可讀指令集。
24.如權(quán)利要求23的儲(chǔ)存介質(zhì),包含以下各項(xiàng)中的一個(gè)計(jì)算機(jī)中的內(nèi)存,其在所述處理器正執(zhí)行所述機(jī)制時(shí)儲(chǔ)存所述指令;計(jì)算機(jī)中的內(nèi)存,其將所述指令儲(chǔ)存為可選擇性地由所述處理器執(zhí)行的指令;以及獨(dú)立磁盤(pán),其儲(chǔ)存所述指令。
25.一種數(shù)據(jù)結(jié)構(gòu),其有形地體現(xiàn)于機(jī)器可讀儲(chǔ)存介質(zhì)中,所述數(shù)據(jù)結(jié)構(gòu)包含安全對(duì)象,所述安全對(duì)象包含受到密碼編譯保護(hù)以免受所述計(jì)算機(jī)系統(tǒng)上的其它軟件攻擊的代碼及數(shù)據(jù)。
26.如權(quán)利要求25的數(shù)據(jù)結(jié)構(gòu),所述安全對(duì)象包含將密鑰信息加載至密碼編譯引擎中的指令,所述密鑰信息在所述對(duì)象的所述代碼正在處理器上執(zhí)行時(shí)提供對(duì)所述安全對(duì)象的數(shù)據(jù)的訪問(wèn)。
27.一種實(shí)施于機(jī)器上的機(jī)器指令,其包含支持安全對(duì)象的機(jī)制,所述安全對(duì)象包含受到密碼編譯保護(hù)以免受所述機(jī)器上的其它軟件攻擊的代碼及數(shù)據(jù)。
全文摘要
一種計(jì)算機(jī)系統(tǒng)中的方法及結(jié)構(gòu),其包括支持安全對(duì)象的機(jī)制,所述安全對(duì)象包括受到密碼編譯保護(hù)以免受該計(jì)算機(jī)系統(tǒng)上的其它軟件攻擊的代碼及數(shù)據(jù)。
文檔編號(hào)G06F21/22GK102428473SQ201080021159
公開(kāi)日2012年4月25日 申請(qǐng)日期2010年6月23日 優(yōu)先權(quán)日2009年6月26日
發(fā)明者R·H·博伊維 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司