用于安全地將程序執(zhí)行綁定到且節(jié)點鎖定到受信任的簽名授權(quán)機構(gòu)的系統(tǒng)和方法
【專利摘要】本發(fā)明公開了一種用于安全地將任意程序綁定到一般執(zhí)行平臺的經(jīng)授權(quán)的實例。一旦綁定過程發(fā)生,受保護的軟件應(yīng)用將不展示正確的行為,除非在其所綁定到的執(zhí)行平臺上運行。該系統(tǒng)和方法經(jīng)受住篡改軟件應(yīng)用和執(zhí)行平臺的重復(fù)的攻擊。該系統(tǒng)和方法呈現(xiàn)了用來將程序P綁定到任何不受信任的執(zhí)行平臺E的機構(gòu),所述不受信任的執(zhí)行平臺E包含受信任的簽名授權(quán)機構(gòu)(TSA)。該TSA可以采取許多替換形式,包括受信任的平臺模塊、安全處理器、內(nèi)核驅(qū)動器以及硬化的軟件代理。
【專利說明】用于安全地將程序執(zhí)行綁定到且節(jié)點鎖定到受信任的簽名授權(quán)機構(gòu)的系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般涉及防止軟件的未被授權(quán)的使用。更特別的是,本發(fā)明涉及通過將軟件應(yīng)用綁定到且節(jié)點鎖定到受信任的簽名授權(quán)機構(gòu)來進行軟件保護。
【背景技術(shù)】
[0002]在軟件產(chǎn)業(yè)中,經(jīng)常期望的是,由于可以包括防止未被授權(quán)的使用(例如,沒有得到許可的盜版)或未被授權(quán)的操縱(例如,黑客行為)的理由而限制對給定軟件的訪問。對于軟件的未被授權(quán)的使用的一個已知的解決方案是將任何給定的軟件應(yīng)用綁定到特定的計算機或裝置。如此,軟件應(yīng)用則可以僅在各自得到許可的裝置上執(zhí)行。這種軟件應(yīng)用到特定裝置的綁定通常被稱作節(jié)點鎖定或者可替換地被稱作硬件軟件錨定。
[0003]用于節(jié)點鎖定的傳統(tǒng)的方法已經(jīng)是從一片硬件取得唯一的標(biāo)識符(ID)并使軟件應(yīng)用依靠所給定的ID。這些唯一 ID的編號和特性從一個平臺到另一個平臺變化巨大。一些通常的硬件標(biāo)識符包括:介質(zhì)訪問控制(MAC)地址、硬磁盤驅(qū)動器標(biāo)識符(HDD ID)、以及序列號(SN)。附加的節(jié)點鎖定標(biāo)識符可以包括基本輸入/輸出系統(tǒng)(BIOS)值、由驅(qū)動器散列函數(shù)計算的散列值、裝置ID、或者對給定的裝置或元件唯一的任何類似的標(biāo)識符。在用于節(jié)點鎖定的傳統(tǒng)方法中,將一片軟件(即,應(yīng)用)錨定到特別的節(jié)點是創(chuàng)建從唯一 ID到軟件運行的依賴性的問題。在一些系統(tǒng)中,這可以是從唯一 ID中導(dǎo)出密鑰的數(shù)學(xué)運算的集合。在其它系統(tǒng)中,可以設(shè)計這樣的算法,其要求唯一 ID的子集是有效的,同時允許所有其它部分是不正確的。后者允許在硬件自身中的變化,例如,可以從計算機移除網(wǎng)絡(luò)接口卡。
[0004]在白盒攻擊上下文中,攻擊者具有對被攻擊系統(tǒng)的完全了解,并且因此完全控制軟件的執(zhí)行。攻擊入侵者可以是或者可以不是軟件的合法用戶,雖然假定軟件的執(zhí)行正常地繼續(xù)下去。存在許多對于用于在白盒攻擊場景中進行節(jié)點鎖定的傳統(tǒng)方法的安全性的困難。硬件ID通常必須在執(zhí)行期間被讀取,并且該特性因此使它們?nèi)菀妆粡?fù)制。各種各樣的這些類型的白盒攻擊遵循。
[0005]在一種場景中,在軟件應(yīng)用調(diào)用詢問裝置的唯一 ID的應(yīng)用編程接口(API)的時亥IJ,攻擊者可以用硬編碼的值代替該調(diào)用。這可以是攻擊者在軟件應(yīng)用中代替代碼自身的函數(shù),或者它可以簡單的是軟件應(yīng)用希望獲得ID的數(shù)據(jù)區(qū)域。如果攻擊者可以發(fā)動該攻擊,則他可以用任何所選擇的值代替唯一 ID,由此使節(jié)點鎖定保護失效。此外,硬編碼攻擊的通常擴展是開發(fā)(exploit)的創(chuàng)建。當(dāng)攻擊者知道在哪里硬編碼重要的值時,他也變得能夠創(chuàng)建自動程序(即,開發(fā))以在任何裝置上修改并因此復(fù)制軟件應(yīng)用。該自動化移除了攻擊者分發(fā)并公布他的關(guān)于如何發(fā)動攻擊的知識的需要,因為該開發(fā)為他做了這種工作。
[0006]第二種通常的對唯一 ID的攻擊場景是仿真。虛擬機(諸如從加利福尼亞的帕洛阿爾托的VMWARE INC可得的VMware?、從Xen.0rg以及其它地方作為免費軟件可得的Xen?)是在操作系統(tǒng)(OS)下用軟件層模仿硬件裝置的技術(shù)。這種仿真通常是如此成熟,使得在軟件中完全支持所有的裝置驅(qū)動器和內(nèi)核服務(wù)。如此,也可以用虛擬機技術(shù)容易地改變或復(fù)制任何唯一 ID。
[0007]第三種普通的對唯一 ID的攻擊是在節(jié)點鎖定保護被移除的情況下執(zhí)行該節(jié)點鎖定行動的系統(tǒng)或子系統(tǒng)的簡單的重新實現(xiàn)。通過遵循用于在攻擊下的系統(tǒng)的的唯一 ID的簡單觀察,攻擊者通??梢砸詤R編代碼、C編程等等重新實現(xiàn)使用唯一 ID的部分。
[0008]所以,期望提供一種用于克服與用于節(jié)點鎖定的傳統(tǒng)方法相關(guān)聯(lián)的問題的系統(tǒng)和方法。
【發(fā)明內(nèi)容】
[0009]本發(fā)明的目標(biāo)是排除或減輕用于節(jié)點鎖定的以前的方法的至少一個缺點。
[0010]本文中描述的本發(fā)明下面通過安全地將任意程序綁定到一般執(zhí)行平臺的經(jīng)授權(quán)的實例來解決前述的問題。一旦綁定過程發(fā)生,受保護的軟件應(yīng)用將不展示正確的行為,除非它在它所綁定到的執(zhí)行平臺上運行。甚至在篡改軟件應(yīng)用和執(zhí)行平臺的許多攻擊存在的情況下,這也適用。根據(jù)本發(fā)明的實施例,假定攻擊者具有對執(zhí)行平臺的規(guī)范的完全白盒訪問,并且對軟件應(yīng)用的執(zhí)行具有完全白盒控制。一般地,發(fā)明的系統(tǒng)和方法呈現(xiàn)了用來將程序P綁定到包含受信任的簽名授權(quán)機構(gòu)(TSA)的任何不受信任的執(zhí)行平臺E的機構(gòu)。根據(jù)本發(fā)明,如在詳細的描述中更詳細地描述的,TSA可以采取許多替換形式。
[0011]在第一方面中,本發(fā)明提供了一種用于軟件應(yīng)用的安全操作的系統(tǒng),該系統(tǒng)包括:熵源,用于秘密值的生成;供應(yīng)機構(gòu),用于將秘密值綁定到軟件應(yīng)用的一個或多個部分,從而形成受保護程序;以及受信任的簽名授權(quán)機構(gòu),與所述供應(yīng)機構(gòu)進行通信,供應(yīng)機構(gòu)進一步將秘密值綁定到受信任的簽名授權(quán)機構(gòu);其中,受信任的簽名授權(quán)機構(gòu)連同秘密值提供了對受保護程序的校驗。
[0012]在進一步的方面中,本發(fā)明提供了一種用于軟件應(yīng)用的安全操作的方法,該方法包括:從熵源生成秘密值;經(jīng)由供應(yīng)機構(gòu)將秘密值綁定到軟件應(yīng)用的一個或多個部分,從而形成受保護程序;將秘密值傳送到受信任的簽名授權(quán)機構(gòu);以及通過受信任的簽名授權(quán)機構(gòu)連同秘密值對受保護程序進行校驗。
[0013]對本領(lǐng)域技術(shù)人員而言,在連同附圖查看下面的本發(fā)明的特定實施例的描述時,本發(fā)明的其它方面和特征將變得明顯。
【專利附圖】
【附圖說明】
[0014]現(xiàn)在將參考附圖僅通過舉例來描述本發(fā)明的實施例。
[0015]圖1A和IB圖示了根據(jù)本發(fā)明的一般流程。
[0016]圖2是在不受信任的平臺上執(zhí)行的根據(jù)本發(fā)明的第一實施例的流程圖。
[0017]圖3是基于MAC算法的根據(jù)本發(fā)明的第二實施例的流程圖。
[0018]圖4是圖示了將受保護程序綁定到軟件模塊堆棧的本發(fā)明的進一步的實施方式。
[0019]圖5是圖示了通過網(wǎng)絡(luò)綁定受保護程序的本發(fā)明的另一個實施方式。
[0020]圖6是圖示了通過基于云的環(huán)境綁定受保護程序子模塊的本發(fā)明的又另一個實施方式。
【具體實施方式】[0021]一般地,本發(fā)明提供了一種用于基于簽名的節(jié)點鎖定機構(gòu)的系統(tǒng)和方法,所述機構(gòu)包括將程序P綁定到包含TSA的任何不受信任的執(zhí)行平臺E,所述TSA自身可以采取許多替換形式。關(guān)于圖1A和1B,一般示出了本發(fā)明基于簽名的節(jié)點鎖定機構(gòu)的整體流程。
[0022]具體關(guān)于圖1A,該過程開始于對受信任的執(zhí)行平臺101進行脫機處理以創(chuàng)建受保護程序。脫機綁定過程把原始程序Pio和來自熵源11的種子當(dāng)作對供應(yīng)步驟12的輸入。部分地使用熵11以確定秘密S的值,并且下面在本文中詳細地做進一步描述。一般地,秘密S可以是例如公共/私有密鑰對。供應(yīng)步驟12產(chǎn)生秘密S和受保護程序Ps作為輸出13。更具體地,供應(yīng)步驟12產(chǎn)生獨特不同的受保護程序Ps 14,所述受保護程序& 14被指定給圖1B所示的不受信任的執(zhí)行平臺102。應(yīng)當(dāng)理解的是,圖1A的綁定過程對于每個硬件軟件實例僅發(fā)生一次。
[0023]雖然為了說明清楚的目的分開地示出,但是應(yīng)當(dāng)容易明白,如通過圖1A看到的受信任的執(zhí)行平臺101可以是或可以不是與不受信任的執(zhí)行平臺102分開的實體。事實上,如果例如在安全條件的正交集合下的一次安全初始化中執(zhí)行發(fā)明的綁定過程,則在不偏離本發(fā)明的意向范圍的情況下,受信任的執(zhí)行平臺101和不受信任的執(zhí)行平臺102可以是相同的一個。根據(jù)本發(fā)明,應(yīng)當(dāng)理解的是,圖1A的綁定過程必須安全地與TSA 16進行一次通信,使得秘密S 16可以被嵌入到如所示的不受信任的平臺102中。然而,可以使受保護程序己14公開地可用。
[0024]通過遵循如圖1A所示的綁定過程,在不受信任的執(zhí)行平臺102上的執(zhí)行可以發(fā)生無限制次數(shù)。通過秘密S 16將受保護程序Ps 14解不開地綁定到TSA 15。在程序14的執(zhí)行期間,與TSA的通信是正在進行中的(如由在受保護程序Ps 14與TSA 15之間示出的圓形箭頭指示的),并且程序14的正確行為取決于與TSA 15的正確通信。受保護程序14的正確操作將因此僅通過獲得由TSA 15計算的結(jié)果來發(fā)生,其中,結(jié)果的精確值由以前供應(yīng)的秘密S 16確定。TSA 15可以具有下面進一步描述的各種替換形式,并且被假定為綁定到平臺。秘密S 16也被假定為安全并秘密地存儲并綁定到TSA 15。此外,如果受保護程序Ps14在不包含TSA 15和/或秘密S 16的平臺上執(zhí)行,則受保護程序Ps 14將不正確地執(zhí)行。
[0025]如上面以前一般建議的,TSA根據(jù)本發(fā)明提供用于節(jié)點鎖定機構(gòu)的功能鎖定。TSA包括安全地包含并存儲秘密S的能力,并且可以按應(yīng)用請求來執(zhí)行對數(shù)據(jù)的簽名。用于TSA的各種實施例自身可以存在于本發(fā)明的約束和意向范圍內(nèi)。
[0026]TSA可以是受信任的平臺模塊(TPM)。在計算中,TPM既是詳述可以存儲保護信息的密鑰的安全密碼處理器的規(guī)范的所公布名稱又是該規(guī)范的實施方式(經(jīng)常被稱作“TPM芯片”或“TPM安全裝置”)的一般名稱。TPM規(guī)范是受信任的計算組的工作。TPM規(guī)范的當(dāng)前版本是在2007年7月9日公布的1.2修訂103。該規(guī)范作為國際標(biāo)準(zhǔn)IS0/IEC 11889也是可用的。除了硬件偽隨機數(shù)字生成器(PRNG)外,TPM為密鑰的安全生成以及它們使用的限制提供了工具。本發(fā)明利用了 TPM的一到三個工具,S卩,公共密鑰算法(諸如用于公共密鑰密碼的Rivest-Shamir-Adleman (RSA)算法或者橢圓曲線密碼學(xué)(ECC)算法),對稱密鑰算法(諸如作為由美國政府采用的對稱密鑰加密標(biāo)準(zhǔn)的高級加密標(biāo)準(zhǔn)(AES)算法),以及安全PRNG (適合于密碼應(yīng)用的偽隨機數(shù)字生成器)。
[0027]TSA可以可替換地諸如在機頂盒(STB)實施方式中由安全處理器形成,制造者借此包括帶有安全機構(gòu)的芯片組以保護設(shè)備內(nèi)的程序。用于如STB以及也如智能電話和其它裝置的這種系統(tǒng)的許多現(xiàn)代片上系統(tǒng)(SOC)實施方式包括在單個芯片上的多個處理器。這包括用于大部分主要處理的中央處理單元(CPU),也包括前述的安全處理器,所述安全處理器具有受限的程序空間以及對芯片的其余部分受約束的I/o。安全處理器可以用于諸如安全引導(dǎo)的關(guān)鍵安全任務(wù)或用于基本的密碼處理。該類型的SOC提供用來收容任何數(shù)量的算法的機會,以便在安全環(huán)境中運行,所述算法諸如是RSA、ECC、AES、數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)、三重DES (3DES)、以及隨機數(shù)據(jù)生成(B卩,PRNG)。本文中描述的本發(fā)明可以因此將安全處理器用作TSA。
[0028]TSA也可以是環(huán)O類型的內(nèi)核驅(qū)動器?,F(xiàn)代操作系統(tǒng)(OS)包括有特權(quán)的執(zhí)行環(huán)。環(huán)O是帶有最大特權(quán)的級別且與諸如CPU和存儲器的物理硬件進行最直接的交互。在諸如Windows? OS或Linux? OS的操作系統(tǒng)上,裝置驅(qū)動器和內(nèi)核級別的驅(qū)動器通常以環(huán)O執(zhí)行,而應(yīng)用代碼通常以環(huán)3運行。TSA可以作為以環(huán)O運行的軟件而運行。如在編程領(lǐng)域已知的,這可以通過創(chuàng)建帶有適當(dāng)?shù)拿艽a算法的定制內(nèi)核驅(qū)動器來完成。在內(nèi)核驅(qū)動器的情況下,應(yīng)當(dāng)考慮專門的處理以確保秘密S不可以被泄露。盡管內(nèi)核比應(yīng)用級別更難攻擊,但是它無論如何體現(xiàn)在軟件中,并且可能因此被通過存儲器轉(zhuǎn)儲、調(diào)試等來攻擊。
[0029]仍進一步,TSA也可以是諸如動態(tài)編碼譯碼(D⑶)的硬化的軟件代理。使用硬化的軟件代理進行保護的軟件的示例在美國專利N0.6,594,761、美國專利N0.6,779,114和美國專利N0.6,842,862中進行了描述,所述美國專利均描述了用來創(chuàng)建硬化的軟件代理的必要手段。通過引用將所述參考的內(nèi)容并入本文中。這種硬化的軟件代理可以提供用于特定節(jié)點的TSA服務(wù)。
[0030]也可以組合上述TSA的實施方式。例如,硬化的軟件代理可以出現(xiàn)在環(huán)O處或在安全處理器上。TSA的這種變化因此很好地在本發(fā)明的意向范圍內(nèi)。
[0031]在根據(jù)本發(fā)明的系統(tǒng)和方法的操作方面,現(xiàn)在將根據(jù)圖1A中一般所示的綁定過程來描述供應(yīng)。此處,節(jié)點鎖定后的程序13的創(chuàng)建通過受信任方(即,受信任平臺101)發(fā)生在受信任會話中。該過程一般如以下步驟來進行描述:
1)在受信任的平臺上,使用所供應(yīng)的熵源,從而生成秘密S;
2)在受信任的平臺上,基于秘密S供應(yīng)程序P,以便針對正確的功能創(chuàng)建Ps,所述Ps是取決于秘密S的程序;
3)使用受信任會話將秘密S從受信任的平臺傳送到不受信任的平臺上的TSA;以及
4)將程序Ps安裝到不受信任的平臺中,或者使其公開地可用以便后來使用。
[0032]在第一實施例中,基于使用公共密鑰算法(例如,RSA)作為簽名方法以及使用對稱密鑰算法(例如,AES)以創(chuàng)建安全信道來提供本發(fā)明。
[0033]首先,使用PRNG和隨機種子作為熵源,標(biāo)準(zhǔn)密鑰生成算法用來生成用于RSA公共密鑰算法的公共/私有校驗密鑰對(K_pub_ver, K_pri_ver)。此外,生成用于AES算法的對稱密鑰。這用作通信密鑰(T_key),其可以是對稱密鑰。K_pub_ver、K_pri_ver和T_key一起表示秘密S。應(yīng)當(dāng)進一步理解的是,在一些實施方式中,K_pub_ver可以不必須是秘密。然而,在這樣的實例中,K_pub_ver必須是在所供應(yīng)的應(yīng)用內(nèi)無可展性的以確保公共密鑰的完整性。
[0034]接下來,基于秘密S供應(yīng)程序。這種供應(yīng)可以通過用于免受白盒攻擊的已知的軟件保護方法來完成,所述方法包括例如在美國專利N0.7,809,135和7,397,916中已知并描述的那些方法。通過引用將所述參考的內(nèi)容并入本文中。根據(jù)本發(fā)明,該供應(yīng)等于使用τ_key的安全信道的固定密鑰白盒AES實施方式以及使用K_pub_ver的校驗操作(即,RSA取冪)的固定密鑰白盒RSA實施方式。這兩個實施方式變成綁定程序Ps的基本部分。此后,使用安全會話以將私有密鑰K_pri_ver傳送到TSA。然后,在不受信任的平臺上安裝程序Ps。如此,基于在如下兩部分中的秘密,現(xiàn)在針對不受信任的平臺對所供應(yīng)的軟件應(yīng)進行個性化且將其綁定到TSA:1)公共/私有密鑰對(K_pub_ver,K_pri_ver);以及2)安全信道對稱密鑰(T_key)。
[0035]根據(jù)本發(fā)明的第一實施例的在不受信任的平臺上的節(jié)點鎖定后的執(zhí)行一般包含在程序Ps被綁定到TSA的同時在不受信任的平臺上執(zhí)行程序Ps。這通過一系列正在進行中的步驟來實現(xiàn),所述步驟可以發(fā)生一次或多次。應(yīng)當(dāng)理解的是,這些步驟的更頻繁的執(zhí)行將導(dǎo)致更高的鎖定強度,但更低的性能。因此,這種執(zhí)行頻率被定制,使得用戶可以指定速率,節(jié)點校驗可以與明顯的性能安全折衷方案以所述速率一起發(fā)生。一般的過程如下進行描述:
1)通過創(chuàng)建隨機消息(即,現(xiàn)時密碼)來生成詢問;
2)隨機消息去往兩個方向:到用于簽名的TSA以及朝向用于等效性校驗的應(yīng)用(即,受保護程序Ps);
3)TSA使用秘密為消息簽名;以及
4)經(jīng)由安全信道將消息簽名傳回應(yīng)用。
[0036]應(yīng)當(dāng)理解的是,應(yīng)用的運行期行為取決于簽名的校驗。
[0037]關(guān)于圖2,根據(jù)本發(fā)明的第一實施例200更具體地示出了在不受信任的平臺上的節(jié)點鎖定后的執(zhí)行。此處,基于使用RSA作為簽名方法并使用AES以創(chuàng)建安全信道,來提供根據(jù)本發(fā)明的第一實施例的節(jié)點鎖定后的執(zhí)行。然而,應(yīng)當(dāng)理解的是,在不偏離本發(fā)明的意向范圍的情況下,簽名方法不限于RSA且可以使用任何其它合適的不對稱或?qū)ΨQ算法,并且同樣地,安全信道可以由除了 AES以外的其它合適方式創(chuàng)建。在步驟方面,圖2中的節(jié)點鎖定后的執(zhí)行按如下發(fā)生。
[0038]在步驟I中,過程開始于詢問生成210。在詢問生成210中,使用兩個輸入來產(chǎn)生消息MSG。該輸入包括:a)來自應(yīng)用201的函數(shù)自變量,以及b)隨機地生成的數(shù)字(理想地來自對白盒攻擊有抗力的隨機數(shù)字生成器)。消息MSG的每個集合表示對于應(yīng)用201的所有不同外部輸入序列的唯一詢問序列,而不考慮對隨機數(shù)字生成的傷害。使用消息生成的這種形式相對于固定消息的一個優(yōu)點是抵抗重放攻擊。
[0039]在步驟2中,消息MSG在兩個方向上傳播:朝向TSA 209以及朝向應(yīng)用201。
[0040]在步驟3中,消息MSG去往TSA 209,并且是通過使用K_pri_ver (即,秘密S)來進行RSA簽名208的。
[0041]在步驟4中,通過安全信道206將消息簽名MSG_SIG傳回應(yīng)用201。在這種情況下,信道是通過在TSA 209側(cè)的AES加密207和在應(yīng)用201側(cè)的白盒(WB) AES解密205來實現(xiàn)的。該AES加密/解密方法是在美國專利N0.7,397,916中已知并描述的。通過引用將所述參考的內(nèi)容并入本文中。
[0042]在步驟5中,RSA校驗操作204被拆分在兩側(cè)之間。在一側(cè)上,將RSA填充方案211施加至消息MSG (來自步驟I ),并且WB RSA取冪203發(fā)生在消息簽名MSG_SIG (來自步驟3)上。這里應(yīng)當(dāng)注意的是,K_pub_ver不應(yīng)當(dāng)是諸如65537的傳統(tǒng)的RSA公共密鑰。相反地,K_pub_ver應(yīng)當(dāng)是大素數(shù),并且WB RSA取冪203保護該值免受攻擊者提取。
[0043]在步驟6中,最終的步驟是RSA填充的簽名的兩側(cè)(MSG_PADT1和MSG_PADT2)的校驗。該校驗發(fā)生在屬性依賴變換(PDT)等效性上下文202中。該等效性上下文202的基本方面是它代替原始應(yīng)用的操作,使得存在對等效性的直接依賴性。例如,ADD操作可以用PDT_ADD操作來代替。PDT_ADD操作表現(xiàn)得正如ADD,除非等效性上下文沒有保持住,而在這樣的情況下,結(jié)果是未被保證為正確值的隨機大或小的值。這樣,應(yīng)用201的行為被綁定到等效性上下文,而不需要跳躍或直接比較操作(其可以成為攻擊點)。
[0044]該最終步驟(步驟6)的進一步有利的特征是等效性上下文202的輸入側(cè)(MSG_PADn和MSG_PADT2)可以優(yōu)選地用不同的變換式進行變換,使得正在發(fā)生的比較是不明顯的。如下面本文中進一步描述的,可以通過使用已知的機構(gòu)來提供這樣的變換,所述機構(gòu)諸如是在美國專利N0.6,594,761和美國專利N0.6,842,862中公開的機構(gòu)。通過引用將所述參考的內(nèi)容并入本文中。這些變換被選擇為足夠強,使得為了識別該變換所要求的明文/變換后文本對的數(shù)量是令人望而卻步的大。因此,攻擊者不能容易地識別并代替該操作的一側(cè)以執(zhí)行對等效性上下文202的攻擊。
[0045]應(yīng)當(dāng)進一步理解的是,可以將PDT依賴操作放置在受保護程序內(nèi)的多個所選定位置處。如此,程序行為變得取決于在許多位置中的等效性上下文。在等效性上下文失效時,該程序?qū)?dǎo)致副作用,所述副作用引起不想要的程序行為。
[0046]現(xiàn)在將在前述的副作用方面對上面提及的PDT進行描述。PDT是這樣一種方法,借此兩個值(即,屬性)在處于受保護狀態(tài)下的同時可以被校驗為是等效的。這是通過使用已知的方法(例如,諸如在美國專利N0.6,594,761和美國專利N0.6,842,862中公開的那些機構(gòu))存儲在變換上下文中的計算來實現(xiàn)的。通過引用將所述參考的內(nèi)容并入本文中。在執(zhí)行期間,在兩個不同的時間處設(shè)置屬性值。對上下文的評估也在不同的時間處發(fā)生。最終,上下文的使用起作用以修改現(xiàn)有的操作。在正常條件下,操作將按預(yù)期而表現(xiàn)。然而,在篡改條件下(即,當(dāng)屬性等效性沒有保持住時),操作將返回隨機大或小(即,“垃圾”)的值。這將引起程序中的副作用。這種行為方式是有益的,因為它隱藏了條件的構(gòu)成(mechanics),并且可以被在時間上且在空間上與程序失效斷開。不存在泄露條件正在被計算的程序跳躍或分支。相反,程序跳躍將泄露攻擊點。
[0047]因此應(yīng)當(dāng)變得容易明白的是,可以使任何操作變成屬性依賴操作。其范圍是從簡單的算術(shù)和邏輯操作(例如,加、減、乘、除、移動、與、或、非)到操作塊,且進一步到全部算法。屬性依賴行為用來在屬性條件保持住的條件下正常操作,以及在屬性條件沒有保持住的條件下表現(xiàn)得不規(guī)律(即,帶有結(jié)果副作用)。
[0048]通過圖3示出了本發(fā)明的第二實施例300。此處,第二實施例基于消息認證編碼(MAC)算法。一般說來,有時被稱作鍵控(密碼)散列函數(shù)的MAC算法,接受作為輸入的秘密密鑰以及待認證的任意長度的消息301,并且輸出MAC (有時被稱作tag)。MAC值通過允許校驗器(其也處理秘密密鑰)檢測對消息內(nèi)容的任何改變來保護消息的數(shù)據(jù)完整性及其可靠性兩者。
[0049]在圖3中,在節(jié)點鎖定后的硬件側(cè)的TSA 311與在軟件側(cè)的應(yīng)用302共享密鑰。TSA 311能夠執(zhí)行正常的MAC算法310,而應(yīng)用302是通過使用白盒鍵控的MAC 303(例如,基于密碼的MAC (CMAC)或者基于散列的MAC (HMAC))來進行保護的。應(yīng)當(dāng)容易明白的是,在受信任的平臺上,在受信任的執(zhí)行會話中的建立時間處將所共享的秘密密鑰K供應(yīng)給應(yīng)用302和TSA 311。這樣的供應(yīng)是以與早先關(guān)于第一實施例討論相一致的方式執(zhí)行的。應(yīng)當(dāng)僅僅為白盒鍵控的MAC 303和TSA 311所知的秘密密鑰K用作錨。當(dāng)且只有當(dāng)應(yīng)用302的秘密密鑰K與TSA 311中的秘密密鑰相同時,應(yīng)用302的執(zhí)行是正確的。針對應(yīng)用302的兩個輸出MAC (tag 309和tagT 304)的校驗的依賴性是以與前面描述的經(jīng)由PDT等效性上下文307的第一實施例相同的方式來完成的,借此在指示篡改時操作副作用可以發(fā)生。白盒鍵控的MAC 303可以呈現(xiàn)用于其部件的許多實施方式中的任何實施方式,包括例如在美國專利N0.7,397,916中公開的白盒AES。通過引用將所述參考的內(nèi)容并入本文中。
[0050]在不偏離本發(fā)明的意向范圍的情況下,應(yīng)當(dāng)進一步理解的是,如在上述硬件軟件實例中,本發(fā)明適用于硬件錨定之外的實施方式。整體地,任何合適地類似于上面提及的那些機構(gòu)的機構(gòu)可以在實現(xiàn)本發(fā)明中用于TSA,只要這種機構(gòu):1)能夠基于秘密S對消息進行簽名;2)能夠保持秘密S安全,免被泄露;以及3)解不開地與節(jié)點(S卩,各個裝置/平臺)相關(guān)聯(lián)。因此,本發(fā)明可以用在軟件到軟件實例中,并且可以包括通過網(wǎng)絡(luò)、子網(wǎng)絡(luò)、或者任何功能塊到功能塊提供的實例。此外,本發(fā)明具有軟件的傳統(tǒng)節(jié)點鎖定之外的對各個計算機實例的適用性。它可以用來將不受信任的執(zhí)行環(huán)境中的任何程序綁定到受信任的模塊。這樣的變化通過圖4、5和6來圖示。
[0051]本發(fā)明可以例如用來將軟件綁定到軟件。在圖4中,圖示了軟件到軟件實施方式400,受保護程序410借此通過包括TSA 413的本發(fā)明中描述的方法來被堅固地綁定到軟件堆棧。該軟件堆棧可以是具有獨立特性(例如,其它鎖定類型)的軟件模塊411、412、414的任何集合。如所示的,模塊414包括TSA 413,而模塊411和412可以實現(xiàn)其它軟件元件。例如,考慮實現(xiàn)虛擬機管理程序的軟件堆?;蛘邔崿F(xiàn)裝置驅(qū)動器的集合的軟件堆棧。
[0052]可替換地,圖5示出了根據(jù)本發(fā)明的網(wǎng)絡(luò)實施方式500,其用來保護針對單個TSA513的多個程序510。這些程序510可以都駐留在單個計算機上,并且被節(jié)點鎖定到計算機上的TSA。相反,如圖5中所示,程序可以駐留在客戶端計算機511、514、515上,通過網(wǎng)絡(luò)向服務(wù)器計算機512上的TSA 513通信。該實施例強制執(zhí)行如下的要求:在客戶端計算機511、514、515上的受保護程序510具有到服務(wù)器計算機512的可用通信機構(gòu)。這確保服務(wù)器512存在并阻礙對客戶端程序510的盜版和其它攻擊。應(yīng)當(dāng)理解的是,程序510可以是相同的受保護程序或者可以是不同的受保護程序。
[0053]在圖6中,存在根據(jù)本發(fā)明的基于云的實施方式600。在該場景中,本發(fā)明用來將受保護的子模塊611、612、616、619的執(zhí)行綁定到在云資源610、613上執(zhí)行的TSA 614,618的存在?;谠频膶嵤┓绞?00的主要屬性是應(yīng)用可以在網(wǎng)絡(luò)中的任何物理資源上執(zhí)行,其中,應(yīng)用擁有者可以不必知道什么子云資源正在被用來運行該應(yīng)用。此外,云中的應(yīng)用由于幾乎無限的物理資源可用性而可以被容易地按比例放大或縮小。本發(fā)明允許應(yīng)用被劃分為一組子模塊611、612、616、619,其被緊緊地綁定到作為服務(wù)器軟件模塊615、617執(zhí)行的TSA 614、618。這可以提供例如部署有限數(shù)量的TSA服務(wù)器的能力,同時部署無限制數(shù)量的受保護軟件子模塊。于是,應(yīng)用的擁有者具有通過有限數(shù)量的TSA服務(wù)器來控制在所部署應(yīng)用的總體上的所有活動的能力。這是如應(yīng)用于在云中部署的應(yīng)用的根據(jù)本發(fā)明的TSA系統(tǒng)的靈活性的進一步示例。[0054]本發(fā)明的上述實施例僅意在成為示例。在不脫離單獨由隨附于此的權(quán)利要求限定的本發(fā)明的范圍的情況下,可以由本領(lǐng)域技術(shù)人員對特別的實施例實現(xiàn)替換、修改和變化。
【權(quán)利要求】
1.一種用于軟件應(yīng)用的安全操作的系統(tǒng),所述系統(tǒng)包括: 熵源,用于秘密值的生成; 供應(yīng)機構(gòu),用于將所述秘密值綁定到所述軟件應(yīng)用的一個或多個部分,從而形成受保護程序;以及 受信任的簽名授權(quán)機構(gòu),與所述供應(yīng)機構(gòu)進行通信,所述供應(yīng)機構(gòu)進一步將所述秘密值綁定到所述受信任的簽名授權(quán)機構(gòu); 其中,所述受信任的簽名授權(quán)機構(gòu)連同所述秘密值提供了對所述受保護程序的校驗。
2.如權(quán)利要求1所述的系統(tǒng),其中,通過安全會話將所述秘密值傳送到所述受信任的簽名授權(quán)機構(gòu)。
3.如權(quán)利要求2所述的系統(tǒng),其中,所述受保護程序和所述受信任的簽名授權(quán)機構(gòu)一起駐留在不受信任的平臺上。
4.如權(quán)利要求3所述的系統(tǒng),其中,所述受保護程序的所述校驗確認所述受保護程序的正確功能。
5.如權(quán)利要求3所述的系統(tǒng),其中,所述受保護程序的所述校驗包括以下步驟: 生成指向所述受信任的簽名授權(quán)機構(gòu)和所述受保護程序兩者的詢問消息, 由所述受信任的簽名授權(quán)機構(gòu)用所述秘密值對所述消息進行簽名, 經(jīng)由所述安全會話將所簽名的消息從所述受信任的簽名授權(quán)機構(gòu)傳遞到所述受保護程序,以及 校驗所述消息和所簽名的消息的等效性。
6.如權(quán)利要求3所述的系統(tǒng),其中,所述受信任的簽名授權(quán)機構(gòu)是受信任的平臺模塊。
7.如權(quán)利要求3所述的系統(tǒng),其中,所述受信任的簽名授權(quán)機構(gòu)是安全處理器。
8.如權(quán)利要求3所述的系統(tǒng),其中,所述受信任的簽名授權(quán)機構(gòu)是內(nèi)核驅(qū)動器。
9.如權(quán)利要求3所述的系統(tǒng),其中,所述受信任的簽名授權(quán)機構(gòu)是硬化的軟件代理。
10.如權(quán)利要求3所述的系統(tǒng),其中,使所述受保護程序公開地可用。
11.如權(quán)利要求3所述的系統(tǒng),其中,將所述受保護程序綁定到軟件模塊堆棧。
12.如權(quán)利要求3所述的系統(tǒng),其中,一個或多個受保護程序駐留在一個或多個客戶端計算機上,以及所述受信任的簽名授權(quán)機構(gòu)駐留在服務(wù)器計算機上。
13.如權(quán)利要求3所述的系統(tǒng),其中,一個或多個受保護程序體現(xiàn)在受保護的軟件子模塊中,并且被綁定到在服務(wù)器軟件模塊中體現(xiàn)的一個或多個受信任的簽名授權(quán)機構(gòu),其中所述受保護的軟件子模塊和服務(wù)器軟件模塊駐留在云計算資源上。
14.如權(quán)利要求13所述的系統(tǒng),其中,所述安全會話是經(jīng)由對稱密鑰加密來完成的。
15.一種用于軟件應(yīng)用的安全操作的方法,所述方法包括: 從熵源生成秘密值; 經(jīng)由供應(yīng)機構(gòu)將所述秘密值綁定到所述軟 件應(yīng)用的一個或多個部分,從而形成受保護程序; 將所述秘密值傳送到受信任的簽名授權(quán)機構(gòu);以及 通過所述受信任的簽名授權(quán)機構(gòu)連同所述秘密值來對所述受保護程序進行校驗。
16.如權(quán)利要求15所述的方法,其中,所述傳送步驟通過安全會話來發(fā)生。
17.如權(quán)利要求16所述的方法,其中,所述受保護程序和所述受信任的簽名授權(quán)機構(gòu)一起駐留在不受信任的平臺上。
18.如權(quán)利要求17所述的方法,其中,所述受信任的簽名授權(quán)機構(gòu)是受信任的平臺模塊。
19.如權(quán)利要求17所述的方法,其中,所述受信任的簽名授權(quán)機構(gòu)是安全處理器。
20.如權(quán)利要求17所述的方法,其中,所述受信任的簽名授權(quán)機構(gòu)是內(nèi)核驅(qū)動器。
21.如權(quán)利要求17所述的方法,其中,所述受信任的簽名授權(quán)機構(gòu)是硬化的軟件代理。
22.如權(quán)利要求17所述的方法,其中,使所述受保護程序公開地可用。
23.如權(quán)利要求17所述的方法,其中,所述校驗步驟確認所述受保護程序的正確功能。
24.如權(quán)利要求17所述的方法,其中,所述校驗步驟進一步包括以下步驟: 生成指向所述受信任的簽名授權(quán)機構(gòu)和所述受保護程序兩者的詢問消息, 由所述受信任的簽名授權(quán)機構(gòu)用所述秘密值對所述消息進行簽名, 經(jīng)由所述安全會話將所簽名的消息從所述受信任的簽名授權(quán)機構(gòu)傳遞到所述受保護程序,以及 校驗所述消息和所簽名的消息的等效性。
25.如權(quán)利要求24所述的方法,其中,所述安全會話是經(jīng)由對稱密鑰加密來完成的。
26.如權(quán)利要求17所述的方法,其中,將所述受保護程序綁定到軟件模塊堆棧。
27.如權(quán)利要求17所述的方法 ,其中,一個或多個受保護程序駐留在一個或多個客戶端計算機上,以及所述受信任的簽名授權(quán)機構(gòu)駐留在服務(wù)器計算機上。
28.如權(quán)利要求17所述的方法,其中,一個或多個受保護程序體現(xiàn)在受保護的軟件子模塊中,并且被綁定到在服務(wù)器軟件模塊中體現(xiàn)的一個或多個受信任的簽名授權(quán)機構(gòu),其中所述受保護的軟件子模塊和服務(wù)器軟件模塊駐留在云計算資源上。
【文檔編號】G06F21/12GK103797489SQ201180071019
【公開日】2014年5月14日 申請日期:2011年3月21日 優(yōu)先權(quán)日:2011年3月21日
【發(fā)明者】M.L.J.博迪斯, J.隋, G.S.古德斯, C.利姆 申請人:耶德托公司