被解密并且啟動(dòng)。
[0056]在軟件應(yīng)用120、120’、120〃與外部SVM 150關(guān)聯(lián)地運(yùn)行的同時(shí),SVM 150應(yīng)該優(yōu)選地繼續(xù)掃描并且證實(shí)已知利用未被使用或啟動(dòng)。優(yōu)選地,任何這種應(yīng)用120、120’、120〃應(yīng)該要求外部SVM 150繼續(xù)起作用,以使得攻擊者不能簡(jiǎn)單地停止對(duì)應(yīng)過程或線程。通過包括一個(gè)或多個(gè)另外的文件或資源65 (應(yīng)用120"需要所述一個(gè)或多個(gè)另外的文件或資源65,但在加密狀態(tài)下保持所述一個(gè)或多個(gè)另外的文件或資源65,并且僅由SVM 150在完成成功掃描時(shí)解密所述一個(gè)或多個(gè)另外的文件或資源65),能夠?qū)崿F(xiàn)這一點(diǎn),例如如圖5中所示。替代地或者附加地,應(yīng)用120、120’、120〃能夠被布置為執(zhí)行外部SVM 150正在正確地運(yùn)行的檢查,并且如果SVM處理150在掃描該應(yīng)用時(shí)停止或變得無效,則減少或停止通常的功能。
[0057]現(xiàn)在下面是能夠被用于提供以上安全內(nèi)核40的技術(shù)的討論,可在安全內(nèi)核40中執(zhí)行系統(tǒng)證實(shí)模塊50。當(dāng)程序(或軟件)正在由處理器執(zhí)行時(shí),如果用戶(或第三方)訪問該處理以使得用戶能夠觀察和改變程序的執(zhí)行(例如,通過運(yùn)行合適的調(diào)試器)一一這種改變能夠是對(duì)過程流程的改變或?qū)φ谔幚淼臄?shù)據(jù)的改變,則施行該執(zhí)行的環(huán)境是所謂的“白箱”環(huán)境。對(duì)程序的執(zhí)行的這種觀察和/或改變可被稱為篡改。用戶可觀察或改變(或換句話說,篡改)程序的執(zhí)行以便滿足他們自己的目的或目標(biāo),如果程序在未被篡改的情況下正常地運(yùn)行,則可能無法滿足該目的或目標(biāo)。用于實(shí)現(xiàn)特定目的或目標(biāo)的這種篡改可被稱為目標(biāo)導(dǎo)向篡改。目標(biāo)導(dǎo)向篡改可涉及:例如,觀察和/或改變正在白箱環(huán)境中運(yùn)行的程序的執(zhí)行以便獲得或推導(dǎo)出由該程序用來處理數(shù)字?jǐn)?shù)據(jù)的密鑰(例如,用于解密數(shù)據(jù)的解密密鑰)。
[0058]已知用于保護(hù)正在白箱環(huán)境中運(yùn)行的數(shù)據(jù)處理軟件應(yīng)用(或程序或系統(tǒng))的完整性的各種技術(shù)。這些技術(shù)通常旨在通過在軟件應(yīng)用的控制和/或數(shù)據(jù)路徑中引入另外的復(fù)雜性和/或隨機(jī)性來隱藏該應(yīng)用的嵌入知識(shí)。這種另外的復(fù)雜性和/或隨機(jī)性具有這樣的效果:使軟件應(yīng)用的信息(或數(shù)據(jù))或執(zhí)行路徑不清楚或模糊化。作為這種模糊化的結(jié)果,通過代碼檢查來從應(yīng)用提取信息變得更加困難,并且更加難以發(fā)現(xiàn)和/或修改與程序的特定功能關(guān)聯(lián)的代碼。因此,以下的情況變得困難得多:攻擊者訪問正在白箱環(huán)境中運(yùn)行的程序以檢索敏感數(shù)據(jù)或改變程序的操作以便通過篡改程序的執(zhí)行來滿足他們自己的目標(biāo)。如此,減小了攻擊者執(zhí)行目標(biāo)導(dǎo)向篡改的能力。旨在減小攻擊者執(zhí)行目標(biāo)導(dǎo)向篡改的能力的這些技術(shù)可被視為提高軟件的抗篡改性。如果對(duì)于攻擊者而言執(zhí)行目標(biāo)導(dǎo)向篡改是足夠困難的,則對(duì)于任何實(shí)際目的,即使在理論上篡改仍然是可能的,該軟件也可被視為抗篡改。
[0059]能夠在如下文獻(xiàn)中發(fā)現(xiàn)用于提高軟件的抗篡改性的示例性技術(shù):“White-BoxCryptography and an AES Implementat1n,,,by Stanley Chow, Philip Eisen, HaroldJohnson, and Paul C.Van Oorschot, in Selected Areas in Cryptography: 9th AnnualInternat1nal Workshop, SAC 2002, St.John’s, Newfoundland, Canada, August15-16, 2002,該文獻(xiàn)全部公開內(nèi)容通過引用包含于此。“White-Box Cryptography and anAES Implementat1n”公開一種用于通過使用一系列查找表創(chuàng)建加密算法的密鑰相關(guān)實(shí)現(xiàn)來保護(hù)加密算法的完整性的方案。通過關(guān)于(一個(gè)或多個(gè))密鑰對(duì)該算法的部分評(píng)估,(一個(gè)或多個(gè))密鑰被嵌入在該實(shí)現(xiàn)中。部分評(píng)估表示涉及密鑰的表達(dá)被盡可能合理地評(píng)估,并且結(jié)果被放入代碼中而非全部表達(dá)中。這表示該實(shí)現(xiàn)特定于(一個(gè)或多個(gè))特定密鑰并且密鑰輸入對(duì)于使用該算法的密鑰相關(guān)實(shí)現(xiàn)是非必要的。因此可分發(fā)用于加密或解密內(nèi)容或數(shù)據(jù)的、可以是用戶特定的算法的密鑰相關(guān)實(shí)現(xiàn),而非分發(fā)可以是用戶特定的密鑰。創(chuàng)建密鑰相關(guān)實(shí)現(xiàn)以通過下述操作來隱藏(一個(gè)或多個(gè))密鑰:(I)使用用于組成而非個(gè)體步驟的表;
(2)利用隨機(jī)雙射對(duì)這些表進(jìn)行編碼;和(3)將加密邊界擴(kuò)展超出加密算法自身進(jìn)一步向外到包含的應(yīng)用中,由此迫使攻擊者理解顯著更大的代碼段以實(shí)現(xiàn)他們的目標(biāo)。
[0060]附圖中的圖6圖示示例性函數(shù)X的實(shí)現(xiàn)310,示例性函數(shù)X在函數(shù)X的輸入312或經(jīng)函數(shù)X的輸入312接收或獲得數(shù)據(jù)d,處理數(shù)據(jù)d以產(chǎn)生處理的數(shù)據(jù)X (d),并且經(jīng)輸出316提供處理的數(shù)據(jù)X (d)。該函數(shù)的實(shí)現(xiàn)310可涉及一個(gè)或多個(gè)處理步驟,所述一個(gè)或多個(gè)處理步驟包括指令、代碼、邏輯、查找表中的一個(gè)或多個(gè)或其任何組合,以便響應(yīng)于在輸入312接收到數(shù)據(jù)d而在輸出316提供處理的數(shù)據(jù)X (d)。圖6還圖示函數(shù)X的編碼或模糊化實(shí)現(xiàn)320——這種實(shí)現(xiàn)320包括模糊化函數(shù)X’。在實(shí)現(xiàn)320中,通過使用輸入編碼F和輸出編碼G來使函數(shù)X模糊化以形成函數(shù)X’。模糊化函數(shù)X’在模糊化函數(shù)X’的輸入322處或經(jīng)模糊化函數(shù)X’的輸入322接收或獲得輸入數(shù)據(jù)d的編碼表示F (d),處理編碼表示F (d)以產(chǎn)生處理的數(shù)據(jù)X(d)的編碼表示G(X(d)),并且經(jīng)輸出328提供編碼表示G(X(d))。編碼表示F(d)是使用函數(shù)F編碼的數(shù)據(jù)d。編碼表示G(X(d))是使用函數(shù)G編碼的數(shù)據(jù)X(d)。模糊化函數(shù)X’能夠被視為:
X =GoXoF1
其中ο如通常一樣表示函數(shù)合成(即,對(duì)于任何兩個(gè)函數(shù)a(x)和b(x),按照定義,(a οb) (x) =a(b (x)))0在該實(shí)現(xiàn)中,通過將函數(shù)F \X、G組合到單個(gè)查找表中來使函數(shù)F \X、G模糊化。各函數(shù)到單個(gè)查找表中的這種組合意味著:只要函數(shù)F和G保持對(duì)于攻擊者而言未知,攻擊者就不能提取關(guān)于函數(shù)X的信息,并且因此不能例如提取作為函數(shù)X的基礎(chǔ)或由函數(shù)X使用的秘密信息(諸如,密鑰)。盡管圖6的中間將模糊化函數(shù)X’圖示為一系列函數(shù)F1、X和G,但這僅用于說明的目的。特別地,模糊化函數(shù)X’并不分開地實(shí)現(xiàn)函數(shù)F1、X和G中的每一個(gè)(因?yàn)檫@樣做將會(huì)把數(shù)據(jù)d和X(d)以及函數(shù)X的操作暴露給攻擊者)一一替代地,如上所述,函數(shù)F \ X和G被一起實(shí)現(xiàn)為單個(gè)函數(shù)(諸如,經(jīng)查找表),以使得模糊化函數(shù)X’不會(huì)把數(shù)據(jù)d和X(d)暴露給攻擊者并且不會(huì)把函數(shù)X的處理或操作暴露給攻擊者。
[0061]任何給定程序能夠被視為函數(shù)的序列或網(wǎng)絡(luò)。附圖中的圖7圖示程序或程序的一部分的示例性實(shí)現(xiàn)410,其中兩個(gè)函數(shù)X和Y將要被順序地評(píng)估(即,作為序列的一部分)以便提供下述操作:
(Y ο X) (d) = Y(X(d))
換句話說,函數(shù)的序列在序列中的第一函數(shù)(即,函數(shù)X)的輸入312或經(jīng)序列中的第一函數(shù)的輸入312接收或獲得數(shù)據(jù)d,函數(shù)X隨后處理數(shù)據(jù)d以產(chǎn)生處理的數(shù)據(jù)X (d),并且經(jīng)輸出316提供處理的數(shù)據(jù)X(d),如以上所討論的。處理的數(shù)據(jù)X(d)經(jīng)第一函數(shù)X的輸出316被提供給函數(shù)的序列中的第二函數(shù)(S卩,函數(shù)Y)的輸入412,函數(shù)Y隨后處理數(shù)據(jù)X(d)以產(chǎn)生處理的數(shù)據(jù)Y (X(d)),并且經(jīng)輸出416提供處理的數(shù)據(jù)Y (X(d))。以這種方式,在第二函數(shù)Y的輸出416提供的處理的數(shù)據(jù)Y(X(d))被提供作為來自函數(shù)X和Y的序列的輸出。再一次,函數(shù)X和Y中的每一個(gè)能夠分別被實(shí)現(xiàn)為指令、代碼、邏輯或查找表中的一個(gè)或多個(gè)或其任何組合,如以上所討論的。然而,當(dāng)在白箱環(huán)境中執(zhí)行函數(shù)X和Y的序列的實(shí)現(xiàn)410時(shí),攻擊者能夠觀察和/或修改下面的一項(xiàng)或多項(xiàng):函數(shù)X和Y中的每個(gè)函數(shù)的操作;提供給函數(shù)的序列的輸入312的數(shù)據(jù)d ;在函數(shù)的序列的輸出416提供的處理的數(shù)據(jù)Y(X(d));和從第一函數(shù)X的輸出316提供給第二函數(shù)Y的輸入412的處理的數(shù)據(jù)X (d)。因此,當(dāng)在白箱環(huán)境中執(zhí)行函數(shù)X和Y的序列作為實(shí)現(xiàn)410時(shí),由該函數(shù)的序列提供的操作容易遭受篡改。在函數(shù)X和Y的序列的實(shí)現(xiàn)410形成例如程序的加密部件的密鑰相關(guān)實(shí)現(xiàn)的情況下,攻擊者可通過觀察或篡改函數(shù)X和/或Y和/或提供給它們/在它們之間提供的數(shù)據(jù)來提取或推導(dǎo)出密鑰。為了克服這個(gè)問題,函數(shù)X和Y的序列中的函數(shù)X和Y能夠分別被實(shí)現(xiàn)為那些函數(shù)X和Y的模糊化版本X’和Y’。
[0062]圖7還圖示函數(shù)X和Y的序列的這種編碼或模糊化實(shí)現(xiàn)420—一實(shí)現(xiàn)420包括模糊化函數(shù)X’和模糊化函數(shù)Y’。在實(shí)現(xiàn)420中,通過組合函數(shù)X與輸入編碼F和輸出編碼G來形成函數(shù)X的模糊化函數(shù)X’,如前面結(jié)合圖6所述的。以與模糊化函數(shù)X’類似的方式形成函數(shù)Y的模糊化函數(shù)Y’,但用于模糊化函數(shù)Y’的實(shí)現(xiàn)的輸入編碼G和輸出編碼H可不同于用于模糊化函數(shù)X’的實(shí)現(xiàn)的輸入編碼F和輸出編碼G。函數(shù)Y的模糊化實(shí)現(xiàn)Y’能夠因此被表示為:
Y' =HoYoG1
用于模糊化函數(shù)Y’的輸入編碼G應(yīng)該與用于前一函數(shù)X’的模糊化實(shí)現(xiàn)的輸出編碼G匹配。這意味著:使用輸出編碼G在模糊化函數(shù)X’的輸出328提供的處理的數(shù)據(jù)G (X(d))的表示能夠被用作預(yù)期接收使用輸入編碼G表示的數(shù)據(jù)X (d) ( S卩,它預(yù)期接收G (X(d)))的模糊化函數(shù)Y’的輸入。將會(huì)理解,盡管函數(shù)G被稱為模糊化函數(shù)Y’的輸入編碼(因?yàn)閷⒁谀:瘮?shù)Y’的輸入328接收的數(shù)據(jù)X(d)被利用函數(shù)G編碼,從而使得它是數(shù)據(jù)X(d)的編碼表示G(X(d))),但與函數(shù)Y組合以實(shí)現(xiàn)模糊化函數(shù)Y’的實(shí)際函數(shù)是函數(shù)G的反函數(shù),即函數(shù)G \函數(shù)G 1具有抵消輸入編碼G以允許函數(shù)Y對(duì)數(shù)據(jù)X(d)進(jìn)行操作的效果。
[0063]模