專(zhuān)利名稱(chēng):利用偽隨機(jī)數(shù)二進(jìn)制序列程序互鎖來(lái)防止竄改的制作方法
技術(shù)領(lǐng)域:
本發(fā)明在總體上涉及計(jì)算機(jī)軟件應(yīng)用程序的安全措施,具體地說(shuō),本發(fā)明涉及用于防止非法人員觀(guān)察應(yīng)用程序執(zhí)行過(guò)程的裝置。
在過(guò)去的幾年中,計(jì)算機(jī)應(yīng)用軟件的數(shù)量和多樣性大大增加。計(jì)算機(jī)硬件的發(fā)展使得這些應(yīng)用程序的功能有極大的擴(kuò)展,從而,必須要寫(xiě)入的代碼量和其它開(kāi)發(fā)成本有極大的增長(zhǎng)。在同一時(shí)期內(nèi),軟件銷(xiāo)售商對(duì)因非法復(fù)制這類(lèi)程序而可能損失的價(jià)值的認(rèn)識(shí)也有所提高。因此,目前軟件銷(xiāo)售商的通常作法是要求注冊(cè)各個(gè)程序拷貝或者是出售用于特定用戶(hù)的定點(diǎn)許可,并在程序中包括這樣的特性,使得能夠防止除已對(duì)該程序拷貝注冊(cè)過(guò)的人員以外的人運(yùn)行應(yīng)用程序或應(yīng)用程序中的主要部分。
軟件注冊(cè)一般是通過(guò)以下方法來(lái)強(qiáng)制執(zhí)行的如果不依照注冊(cè)來(lái)授權(quán)訪(fǎng)問(wèn),則使軟件的大部分無(wú)效。以相同方式,為了促銷(xiāo)軟件,通??赏ㄟ^(guò)在線(xiàn)方式將呈下述形式的軟件提供給用戶(hù)所述軟件具有與演示拷貝相類(lèi)似的減少了的功能,但這種軟件能有效地運(yùn)行,足以使?jié)撛诘馁?gòu)買(mǎi)者決定是否購(gòu)買(mǎi)。然后,在購(gòu)買(mǎi)、付款和注冊(cè)時(shí)以遠(yuǎn)程的方式使得在初始時(shí)被禁止的功能生效。按這種可轉(zhuǎn)換的形式發(fā)布軟件還能提供這樣的優(yōu)點(diǎn)即可以避免需要生產(chǎn)如演示拷貝那樣的獨(dú)立版本并能避免一個(gè)拷貝破壞另一個(gè)拷貝的可能性。
但是,盡管這種性能業(yè)已發(fā)展到了一定程度的完善性和復(fù)雜性并取得了良好的安全性,但可以通過(guò)修改應(yīng)用程序以繞過(guò)這些性能而使任何的這種性能失去作用,這一點(diǎn)是不言自明的。使受保護(hù)的軟件的功能復(fù)原并訪(fǎng)問(wèn)受保護(hù)的功能的方法一般稱(chēng)為“黑客攻擊(hacking)”,它一般用于使口令保護(hù)、用戶(hù)識(shí)別或驗(yàn)證等失去作用。修改程序的方法通常稱(chēng)為“打補(bǔ)丁(patching)”。使得難以通過(guò)黑客攻擊行為來(lái)修改程序的特性稱(chēng)為“防竄改”。當(dāng)然,對(duì)諸如數(shù)據(jù)庫(kù)之類(lèi)的多種軟件以及應(yīng)用程序來(lái)說(shuō),“防竄改”是應(yīng)有的特性。
形成防竄改軟件通常涉及到包括在處理器內(nèi)的特權(quán)級(jí)以及所謂的特權(quán)指令的概念。一般需要特權(quán)指令以便允許訪(fǎng)問(wèn)處理器體系結(jié)構(gòu)的受限性能。例如,特權(quán)指令或功能可包括加載和卸載處理器中的受保護(hù)的專(zhuān)用調(diào)試寄存器、勾連中斷向量和處理關(guān)鍵的操作系統(tǒng)(OS)存儲(chǔ)區(qū)以及輸入/輸出(I/O)功能。這些特權(quán)功能在低特權(quán)級(jí)下受控于應(yīng)用程序(例如由應(yīng)用程序來(lái)請(qǐng)求),但實(shí)際上在應(yīng)用程序的正常操作過(guò)程中要通過(guò)更高特權(quán)操作系統(tǒng)組件在較高的特權(quán)級(jí)下由其它結(jié)構(gòu)或軟件所執(zhí)行。具體地說(shuō),I/O功能的執(zhí)行受限于OS的最高特權(quán)級(jí)并且不能由在較低特權(quán)級(jí)下操作或執(zhí)行的應(yīng)用程序來(lái)執(zhí)行,而只能由該應(yīng)用程序來(lái)請(qǐng)求。
也就是說(shuō),為了使得應(yīng)用軟件更安全、符合軟件開(kāi)發(fā)的要求,通常需要開(kāi)發(fā)特權(quán)伴隨軟件模塊(通常呈設(shè)備驅(qū)動(dòng)程序的形式),這種軟件模塊可按與應(yīng)用程序相串行的方式工作并且能代表有較低特權(quán)的應(yīng)用程序來(lái)執(zhí)行上述特權(quán)操作。當(dāng)應(yīng)用程序需要(或者,應(yīng)該需要,這取決于編程者)驗(yàn)證系統(tǒng)的完整性或需要確定是否出現(xiàn)了某些類(lèi)型的竄改時(shí),應(yīng)用程序就可調(diào)用上述特權(quán)模塊以進(jìn)行上述維護(hù)。不幸的是,這種組織結(jié)構(gòu)及其較為廣泛的應(yīng)用使得應(yīng)用程序與特權(quán)模塊之間的接口成為企圖使安全特征失去作用的邏輯攻擊點(diǎn)。例如,撤掉與安全性有關(guān)的對(duì)特權(quán)模塊的調(diào)用在許多情況下會(huì)使得它們要執(zhí)行的防竄改性和完整性檢查功能失去作用。
盡管沒(méi)有一種防竄改的形式是完全安全的,但是,一般都認(rèn)為,應(yīng)用程序和相應(yīng)特權(quán)模塊中以這種方式(例如通過(guò)包括更多的技術(shù)、陷阱和相關(guān)性)提供的復(fù)雜程度越大,在給定的時(shí)間量和工作量?jī)?nèi)使應(yīng)用程序和相應(yīng)特權(quán)模塊失去作用從而危及應(yīng)用程序或數(shù)據(jù)完整性或獲得包含在其中的秘密的成功可能性就越低。不幸的是,這種復(fù)雜性還會(huì)使軟件應(yīng)用程序的可靠性和/或穩(wěn)定性(或者例如數(shù)據(jù)庫(kù)和/或錯(cuò)誤恢復(fù)系統(tǒng)的牢靠性)以及軟件本身的執(zhí)行速度和效率打折扣。所以,迄今為止,在應(yīng)用程序執(zhí)行效率與應(yīng)用程序本身及其數(shù)據(jù)的安全性之間存在著不可避免的折衷。
所以,本發(fā)明的一個(gè)目的是提供一種通過(guò)檢測(cè)竄改并在檢測(cè)到竄改時(shí)終止執(zhí)行文件和/或使文件破壞來(lái)提高軟件安全性的技術(shù)。
本發(fā)明的另一個(gè)目的是在不使軟件執(zhí)行效率明顯打折扣的情況下提供軟件的有效安全性。
本發(fā)明的又一個(gè)目的是防止非法人員觀(guān)察軟件執(zhí)行過(guò)程。
本發(fā)明的還一個(gè)目的是防止以非法的方式使軟件中被禁止的或受保護(hù)的部分變?yōu)橛行?、或者觀(guān)察這些被禁止的或受保護(hù)的部分。
為了實(shí)現(xiàn)本發(fā)明上述和其它目的,提供了一種防止竄改在處理器上運(yùn)行的軟件的方法,所述處理器具有多個(gè)不同的部分,第一不同部分可以執(zhí)行在第二不同部分中不存在的功能,以及提供一個(gè)含有用于執(zhí)行上述方法的命令的軟件,所述方法包括下列步驟使與所述第二不同部分相關(guān)的第一偽隨機(jī)二進(jìn)制序列遞增;從第二不同部分中調(diào)用第一不同部分的功能;使與所述第一不同部分相關(guān)的第二偽隨機(jī)二進(jìn)制序列發(fā)生器遞增;執(zhí)行所述功能(該功能可包括對(duì)偽隨機(jī)序列的值進(jìn)行比較或者除了使偽隨機(jī)二進(jìn)制序列發(fā)生器遞增以外還可包括或不包括一種或多種操作);對(duì)所述第一和第二偽隨機(jī)二進(jìn)制序列發(fā)生器中的偽隨機(jī)二進(jìn)制序列值進(jìn)行比較;以及,根據(jù)比較的結(jié)果控制所述軟件的執(zhí)行。
依照本發(fā)明的另一個(gè)方面,提供了這樣一種防止竄改在處理器上運(yùn)行的軟件的方法,所述處理器具有多個(gè)不同的部分,一個(gè)不同部分可以執(zhí)行在第二不同部分中不存在的功能,以及提供含有用于執(zhí)行上述方法的命令的軟件,所述方法包括下列步驟用一個(gè)算法和第一不同部分中的偽隨機(jī)二進(jìn)制序列值來(lái)改變數(shù)據(jù);以及,用逆算法和在上述第一不同部分中偽隨機(jī)二進(jìn)制序列值來(lái)改變數(shù)據(jù);從而,當(dāng)所述不同部分和所述另一個(gè)不同部分的偽隨機(jī)二進(jìn)制序列值相同時(shí),可恢復(fù)由上述算法改變的數(shù)據(jù)。
參照附圖從以下對(duì)本發(fā)明最佳實(shí)施例的詳細(xì)說(shuō)明中可以更好地理解上述和其它目的、方面和優(yōu)點(diǎn),在附圖中
圖1是本發(fā)明最佳實(shí)施例的高層框圖,它說(shuō)明了該實(shí)施例的操作;圖2A和2B包括說(shuō)明圖1所示的本發(fā)明實(shí)施例的操作的流程圖;圖3是說(shuō)明圖1的實(shí)施例的優(yōu)選增強(qiáng)形式的高層框圖;圖4是說(shuō)明圖3所示的本發(fā)明增強(qiáng)形式的流程圖。
參照附圖,具體參照?qǐng)D1、2A和2B,以高層概略框圖的形式示出了本發(fā)明的實(shí)施例100。應(yīng)該注意,如箭頭104所示,在圖1中設(shè)置了任意的時(shí)間標(biāo)度(從左至右),其中,實(shí)框表示可用硬件或軟件來(lái)實(shí)現(xiàn)的功能元素,而用虛線(xiàn)表示的框則表示應(yīng)對(duì)其進(jìn)行保護(hù)的軟件序列。在圖2A和2B中,所述序列自上向下進(jìn)行并且以與圖1用虛線(xiàn)106來(lái)區(qū)分特權(quán)級(jí)的相同的方式將在其上執(zhí)行每一個(gè)所述功能的軟件分隔到左方或右方。因此,圖1與圖2A和2B按不同的重點(diǎn)和觀(guān)點(diǎn)說(shuō)明了同樣的主題。在可能的情況下使用相對(duì)應(yīng)的標(biāo)號(hào)。(在圖3和4中也分別使用了同樣的制圖約定。)正如本領(lǐng)域的技術(shù)人員所認(rèn)識(shí)到的那樣,偽隨機(jī)二進(jìn)制序列(PRBS)發(fā)生器是公知的,可按多種方式加以使用和實(shí)現(xiàn)。一般地說(shuō),PRBS發(fā)生器被實(shí)現(xiàn)為一個(gè)邏輯陣列,它可包括多個(gè)存儲(chǔ)設(shè)備。PPBS發(fā)生器的一種常用形式使用了串行連接的觸發(fā)器串,它們呈移位寄存器的形式。業(yè)已表明在具有不同長(zhǎng)度的這種移位寄存器中,某些存儲(chǔ)級(jí)的輸出可按原碼值或補(bǔ)碼值反饋給其它存儲(chǔ)級(jí)并且可與其它存儲(chǔ)級(jí)的輸出(更一般地稱(chēng)為掩碼)作邏輯組合,可以生成一長(zhǎng)串邏輯值,它們具有基本上與純隨機(jī)數(shù)值相同的統(tǒng)計(jì)學(xué)屬性。當(dāng)然,可用軟件以本技術(shù)中周知的方式來(lái)模擬這種硬件實(shí)現(xiàn)形式,并且,通常都進(jìn)行這種模擬。(事實(shí)上,就實(shí)施本發(fā)明而言,正如以下將詳細(xì)說(shuō)明的那樣,軟件實(shí)現(xiàn)形式是更佳的。)相對(duì)所提供的存儲(chǔ)級(jí)的數(shù)量而言,可以把PRBS發(fā)生器的重復(fù)周期做成極長(zhǎng)。可以從單個(gè)存儲(chǔ)級(jí)中串行地取出PRBS發(fā)生器的輸出,或者從內(nèi)部抽頭中按任意長(zhǎng)度(多達(dá)存儲(chǔ)級(jí)的數(shù)量)的字節(jié)并行地取出PRBS發(fā)生器的輸出。盡管PRBS在多個(gè)有任意長(zhǎng)度的二進(jìn)制數(shù)字之后重復(fù),但在開(kāi)始時(shí)作為例如存儲(chǔ)設(shè)備的初始存儲(chǔ)狀態(tài)提供給PRBS發(fā)生器的特定值可以使所述序列的起點(diǎn)始于任何點(diǎn)。所述初始狀態(tài)總稱(chēng)為種子值。所以,可以從PRBS發(fā)生器得出的唯一序列的數(shù)量等于重復(fù)序列中的位數(shù)。
此外,PRBS發(fā)生器中的各個(gè)不同的邏輯陣列的互連或掩碼(例如各相應(yīng)存儲(chǔ)級(jí)的反饋和邏輯組合)可提供一唯一的二進(jìn)制序列。但是,同樣原因,同樣的二進(jìn)制序列僅可源于功能相同的PRBS發(fā)生器,這些發(fā)生器有同樣的將碼、存儲(chǔ)級(jí)數(shù)量并用同樣的種子值來(lái)初始化。所以,PRBS序列在不事先知道這些參數(shù)的情況下難以復(fù)制。
本發(fā)明在原理上使用了兩個(gè)相同的PRBS發(fā)生器110和120(或有同樣掩碼和存儲(chǔ)級(jí)n的PRBS發(fā)生器),這兩個(gè)PRBS發(fā)生器用相同種子值來(lái)初始化它們?cè)谡?qǐng)求和執(zhí)行特權(quán)調(diào)用時(shí)分別遞增。這兩個(gè)相同PRBS發(fā)生器中的一個(gè)發(fā)生器被提供給所述各特權(quán)級(jí)的每一級(jí),或者可以被各特權(quán)級(jí)訪(fǎng)問(wèn),在所述的各特權(quán)級(jí)之間,可依照本發(fā)明的原理防竄改。在更高特權(quán)級(jí)或更低特權(quán)級(jí)上(或者在不同的特權(quán)級(jí)根據(jù)各相應(yīng)特權(quán)級(jí)中的PRBS所執(zhí)行的其它功能中)比較來(lái)自各PRBS發(fā)生器的PRBS,并且,在所述相應(yīng)PRBS信號(hào)不相等時(shí)中斷執(zhí)行并阻斷更高特權(quán)功能的結(jié)果。這種基本的操作模式可非常快地執(zhí)行,并且,即使是經(jīng)常地重復(fù)也不會(huì)顯著地使軟件的執(zhí)行效率打折扣,而且,能如以下參照?qǐng)D3和4詳細(xì)說(shuō)明的那樣很容易地得以增強(qiáng)。
參照?qǐng)D1以及圖2A和2B,應(yīng)該明白,這里示出了兩種特權(quán)級(jí),每種特權(quán)級(jí)均有相應(yīng)的PRBS發(fā)生器110或120。這兩種特權(quán)級(jí)被命名為與Windows-Intel環(huán)境術(shù)語(yǔ)相一致的環(huán)3(較低的特權(quán))和環(huán)0(較高的特權(quán))。但是,應(yīng)該認(rèn)識(shí)到,本發(fā)明完全適用于其中不同功能可在不同特權(quán)級(jí)下加以執(zhí)行或者以其它方式限于由專(zhuān)用的獨(dú)立硬件、軟件或固件來(lái)加以執(zhí)行的任何環(huán)境。例如,可能需要用于執(zhí)行命令的專(zhuān)門(mén)數(shù)據(jù)路徑或寄存器。
也就是說(shuō),就成功地實(shí)施本發(fā)明以達(dá)到其預(yù)定目的而言,僅需要處理器或其外圍設(shè)備或所用的驅(qū)動(dòng)程序有(或可配置成有)不同的操作部分,這些部分可與離散的相同(或同樣配置和初始化)的PRBS發(fā)生器相關(guān),并且,一個(gè)這樣不同部分需要能執(zhí)行在另一個(gè)不同部分上得不到的功能。因此,術(shù)語(yǔ)“不同部分”應(yīng)為理解為包括滿(mǎn)足上述條件的所有這種可能結(jié)構(gòu)。
這方面,應(yīng)該明白,用軟件來(lái)實(shí)現(xiàn)PRBS發(fā)生器在理論上是優(yōu)選的,因?yàn)?,在較低的特權(quán)級(jí)下對(duì)硬件訪(fǎng)問(wèn)可能被拒絕,從而需要PRBS發(fā)生器的軟件實(shí)現(xiàn)形式。此外,PRBS發(fā)生器的軟件實(shí)現(xiàn)形式有助于提供相同的PRBS發(fā)生器并且有助于在應(yīng)用程序和其伴隨設(shè)備驅(qū)動(dòng)程序或其它較高特權(quán)級(jí)軟件中對(duì)這些發(fā)生器的初始化。還應(yīng)注意,本發(fā)明可以并且應(yīng)該用于對(duì)PRBS發(fā)生器本身進(jìn)行保護(hù)。
就以下的說(shuō)明而言,假定應(yīng)用程序或其它軟件正在執(zhí)行尚未按本發(fā)明加以保護(hù)的功能,如虛箭頭200所示。還假定PRBS發(fā)生器110、120已被初始化成相同的種子值、相同的掩碼以及相同的值n,從而,PRBS發(fā)生器110、120會(huì)輸出相同的值并且可被看作是同步的。
在程序指令列表中在應(yīng)加以保護(hù)的程序部分之前的某一點(diǎn)上插入操作系列A(和/或B和/或X)。這些操作不一定要按緊挨著的次序執(zhí)行而是介于它們之間可以具有其它操作,以便使這些操作的目的不大可能被非法人員所識(shí)別。為了能說(shuō)明本發(fā)明,將指令序列A表示為包括三項(xiàng)操作A1、A2和A3。這些操作中的每一項(xiàng)操作均可包括多個(gè)命令。
當(dāng)在程序中達(dá)到序列A以便保護(hù)一個(gè)或多個(gè)按不同特權(quán)級(jí)或用專(zhuān)用軟件加以執(zhí)行的后續(xù)操作(例如A2)時(shí),步驟A1如標(biāo)號(hào)202所示那樣使PRBS發(fā)生器遞增并前進(jìn)至受保護(hù)的步驟A2,該步驟如標(biāo)號(hào)204所示那樣在特權(quán)環(huán)0(例如在設(shè)備驅(qū)動(dòng)程序中)調(diào)用預(yù)定的功能A(FnA)。然后,功能A使PRBS發(fā)生器120遞增。功能A執(zhí)行預(yù)定的操作并如標(biāo)號(hào)208所示返回至應(yīng)用程序。
然后,應(yīng)用程序前進(jìn)至操作A3并如標(biāo)號(hào)210所示取出PRBS發(fā)生器110的輸出且如標(biāo)號(hào)212所示調(diào)用Fnp以取出PRBS發(fā)生器120的輸出,而且如標(biāo)號(hào)214所示將所述輸出返回給應(yīng)用程序。然后,操作A3比較PRBS發(fā)生器110和120的輸出,由于所述發(fā)生器兩者在開(kāi)始時(shí)是同步的并且兩者在序列A期間均遞增一次,故比較是成功的,應(yīng)用程序如標(biāo)號(hào)218所示繼續(xù)進(jìn)行。
序列B以類(lèi)似的方式操作,因而不需要單獨(dú)加以說(shuō)明。如果在操作B3(與操作A3相對(duì)應(yīng))中對(duì)PRBS發(fā)生器輸出的比較是成功的,則應(yīng)用程序如標(biāo)號(hào)222所示那樣繼續(xù)。
但是,如果因?yàn)閼?yīng)用程序尚未注冊(cè),操作A2尚未被授權(quán),從而對(duì)環(huán)0或其中的任何功能(或要由功能執(zhí)行的操作)的訪(fǎng)問(wèn)均會(huì)被拒絕,那么,應(yīng)用程序就不能繼續(xù)。如果非法用戶(hù)試圖通過(guò)撤掉步驟A1(200)來(lái)使拒絕訪(fǎng)問(wèn)失去作用,則步驟A2會(huì)使PRBS發(fā)生器120遞增,而PRBS發(fā)生器110不會(huì)遞增,從而A3(216)處的比較會(huì)失敗。
相反,如果通過(guò)在操作A期間撤掉使PRBS發(fā)生器120遞增而試圖使拒絕訪(fǎng)問(wèn)失去作用,則所述比較也會(huì)失敗。通過(guò)撤掉功能A(例如通過(guò)刪除或不開(kāi)放操作A2)試圖使拒絕對(duì)應(yīng)用程序后續(xù)部分的訪(fǎng)問(wèn)失去作用(例如,對(duì)代碼進(jìn)行比較)也會(huì)導(dǎo)致前述比較失敗,因?yàn)?,PRBS發(fā)生器110會(huì)遞增,而PRBS發(fā)生器120不遞增。通過(guò)插入使PRBS發(fā)生器120或110遞增或遞減而試圖使拒絕訪(fǎng)問(wèn)失去作用也會(huì)使A3處的比較失敗,因?yàn)?,依照本發(fā)明,F(xiàn)nA和其它特權(quán)功能會(huì)在執(zhí)行所述功能之前使PRBS發(fā)生器120遞增。
即使執(zhí)行了特權(quán)功能,也會(huì)在將結(jié)果報(bào)告給應(yīng)用程序之前進(jìn)行以較。在比較216失敗時(shí),就會(huì)以編程者所希望的任何方式例如通過(guò)轉(zhuǎn)換至任何預(yù)定的子例程(包括從存儲(chǔ)器或者甚至從將應(yīng)用程序加載進(jìn)計(jì)算機(jī)的存儲(chǔ)介質(zhì)中刪除應(yīng)用程序或者刪除該應(yīng)用程序中或多或少的關(guān)鍵部分)來(lái)終止應(yīng)用程序的執(zhí)行。
必須同時(shí)且適當(dāng)?shù)貓?zhí)行至少兩種修改,才能使拒絕對(duì)特權(quán)功能的訪(fǎng)問(wèn)失去作用,而事先不知道應(yīng)用程序執(zhí)行過(guò)程的非法用戶(hù)要成功地作到這一點(diǎn)幾乎是完全不可能的。應(yīng)該記得,對(duì)系統(tǒng)執(zhí)行過(guò)程的觀(guān)察正是本發(fā)明所要防止的一種特別類(lèi)型的竄改。所以,應(yīng)該認(rèn)識(shí)到,盡管本發(fā)明在應(yīng)用程序中即使多次使用或重復(fù)的情況下仍能簡(jiǎn)單和迅速地執(zhí)行,但本發(fā)明仍能相當(dāng)有效地防止將應(yīng)用程序的執(zhí)行過(guò)程暴露給非法用戶(hù)去竄改。
就實(shí)施本發(fā)明的基本原理而言,在哪里進(jìn)行比較或者是否在比較時(shí)執(zhí)行額外的也是特權(quán)功能的功能并不重要。但是,通過(guò)如以下就圖1和圖2B中受保護(hù)的操作X所述那樣執(zhí)行這種額外的功能可以提供某種額處的保護(hù)。在這種情況下,操作X1如以前在操作A1中如標(biāo)號(hào)222所述那樣使PRBS發(fā)生器110遞增。操作X2調(diào)用Fnx(224)并如以前那樣使PRBS發(fā)生器120(226)遞增。同樣,按上述方式再返回至應(yīng)用程序(228)。
然后,操作X3從PRBS發(fā)生器110中取出(230)PRBS值,但這時(shí)調(diào)用操作Fnp′且將PRBS值從PRBS發(fā)生器110提供(232)給設(shè)備驅(qū)動(dòng)程序。然后特權(quán)功能Fnp′從PRBS發(fā)生器120中取出PRBS值并進(jìn)行比較。Fnp′不使PRBS發(fā)生器120進(jìn)一步遞增,或者,X3和Fnp′兩者都可設(shè)置成使PRBS發(fā)生器110和120分別遞增。除了是在較高的(或者至少是不同的)特權(quán)級(jí)下進(jìn)行比較以外,上述操作與操作序列A相類(lèi)似。但是,在實(shí)踐中,與操作A3和其它特權(quán)功能相比,提供了更多的位置,在這些位置處,非法人員會(huì)不適當(dāng)?shù)剡M(jìn)行修改,并且,在X3或Fnp′處提供了通常的不一致性。
以下參照?qǐng)D3和4說(shuō)明本發(fā)明的增強(qiáng)形式。盡管本發(fā)明的上述實(shí)施例會(huì)在對(duì)PRBS輸出的比較失敗之后開(kāi)始終止應(yīng)用程序或者毀壞或破壞文件,但圖3和4所示的本發(fā)明增強(qiáng)形式則將文件破壞和修復(fù)包括為防竄改的一部分,從而在性能上更牢靠并且會(huì)在檢測(cè)到竄改之前的更早時(shí)間采取保護(hù)動(dòng)作。現(xiàn)將所述增強(qiáng)形式說(shuō)明為上述受保護(hù)的操作A的變化形式A′。
如以前那樣執(zhí)行操作A1,以便使PRBS發(fā)生器110遞增。但是,如標(biāo)號(hào)402所示,遞增后的PRBS返回給應(yīng)用程序。操作A2′如標(biāo)號(hào)404所示利用該P(yáng)RBS值以便用算法X和來(lái)自PRBS發(fā)生器110的當(dāng)前PRBS值有意地毀壞或破壞數(shù)據(jù)和/或應(yīng)用程序代碼。然后,操作A3′調(diào)用特權(quán)功能FnA′,以便在使PRBS發(fā)生器120遞增且返回該新的PRBS值之后執(zhí)行操作A′。然后,使用來(lái)自PRBS發(fā)生器120的新PRBS值,該值目前與PRBS發(fā)生器110的值相同,并利用來(lái)自PRBS發(fā)生器120的PRBS值和算法X的逆算法X′重構(gòu)在標(biāo)號(hào)404處破壞的數(shù)據(jù)或代碼,如標(biāo)號(hào)410所示。
在這種情況下,不需要單獨(dú)的比較,因?yàn)?,?duì)數(shù)據(jù)或代碼的不正確的重構(gòu)會(huì)終止應(yīng)用程序或返回一個(gè)不正確和無(wú)意義的結(jié)果(因?yàn)閿?shù)據(jù)或代碼實(shí)際上是被隨機(jī)二進(jìn)制代碼序列所破壞的)。此外,在操作A′期間不需要執(zhí)行對(duì)數(shù)據(jù)進(jìn)行破壞和重構(gòu)以外的特權(quán)操作,因而實(shí)際上試圖觀(guān)察程序執(zhí)行過(guò)程的非法人員不能從應(yīng)用程序中獲得信息。所述增強(qiáng)形式可單獨(dú)使用或者與特權(quán)功能結(jié)合使用,所述特權(quán)功能利用比較作為諸如上述A、B或X之類(lèi)的特權(quán)功能的特定實(shí)例的替代方案。
就以上內(nèi)容而言,可以看出,本發(fā)明盡管能簡(jiǎn)單能夠快速地執(zhí)行,但是在單個(gè)實(shí)例中卻能實(shí)現(xiàn)很高程度的防竄改。可提供本發(fā)明的多個(gè)實(shí)例,并且,所述防竄改過(guò)程可具體在變化形式(例如圖2B)和增強(qiáng)形式(例如圖4)中進(jìn)行重復(fù),以便在應(yīng)用程序執(zhí)行速度不打折扣的情況下提供在實(shí)踐上難以超越的保護(hù)。
盡管就單個(gè)的實(shí)施例說(shuō)明了本發(fā)明,但是本領(lǐng)域的技術(shù)人員應(yīng)該認(rèn)識(shí)到,可用后附權(quán)利要求的精神和范圍內(nèi)的改進(jìn)形式來(lái)實(shí)施本發(fā)明。
權(quán)利要求
1.一種防止竄改在處理器上運(yùn)行的軟件的方法,所述處理器具有多個(gè)不同的部分,一個(gè)不同部分可以執(zhí)行在另一個(gè)不同部分中不存在的功能,所述方法包括下列步驟使與上述另一個(gè)不同部分相關(guān)的第一偽隨機(jī)二進(jìn)制序列遞增;從所述另一個(gè)不同部分中調(diào)用上述一個(gè)不同部分的功能;使與上述一個(gè)不同部分相關(guān)的第二偽隨機(jī)二進(jìn)制序列發(fā)生器遞增;執(zhí)行所述功能;對(duì)所述一個(gè)和另一個(gè)偽隨機(jī)二進(jìn)制序列發(fā)生器中的偽隨機(jī)二進(jìn)制序列值進(jìn)行比較;以及根據(jù)比較步驟的結(jié)果控制所述軟件的執(zhí)行。
2.如權(quán)利要求1的方法,其特征在于,所述功能限于使上述不同部分的PRBS發(fā)生器遞增。
3.如權(quán)利要求1的方法,其特征在于,所述不同部分中存在的另一個(gè)功能調(diào)用來(lái)自上述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列值并在所述不同部分中執(zhí)行上述比較步驟。
4.如權(quán)利要求3的方法,其特征在于,所述另一個(gè)功能使上述不同部分中的偽隨機(jī)二進(jìn)制序列發(fā)生器遞增,并且,在調(diào)用上述另一功能時(shí),使所述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列發(fā)生器遞增。
5.如權(quán)利要求2的方法,其特征在于,所述不同部分中存在的一個(gè)功能調(diào)用來(lái)自上述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列值并在所述不同部分中執(zhí)行上述比較步驟。
6.如權(quán)利要求5的方法,其特征在于,所述另一個(gè)功能使上述不同部分中的偽隨機(jī)二進(jìn)制序列發(fā)生器遞增,并且,在調(diào)用上述另一功能時(shí),使所述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列發(fā)生器遞增。
7.如權(quán)利要求1的方法,其特征在于,該方法還包括下列步驟用一個(gè)算法以及所述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列值來(lái)改變數(shù)據(jù);以及用具有其功能是上述算法的逆算法的另一個(gè)算法以及所述不同部分中的偽隨機(jī)二進(jìn)制序列值來(lái)改變數(shù)據(jù);從而,在所述不同部分和所述另一個(gè)不同部分的偽隨機(jī)二進(jìn)制序列值相同時(shí),可恢復(fù)用上述算法改變的數(shù)據(jù)。
8.如權(quán)利要求1的方法,其特征在于,所述不同部分是不同的特權(quán)級(jí)。
9.一種防止竄改在處理器上運(yùn)行的軟件的方法,所述處理器具有不同的部分,一個(gè)不同部分可以執(zhí)行在另一個(gè)不同部分中不存在的功能,所述方法包括下列步驟用一個(gè)算法和所述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列值來(lái)改變數(shù)據(jù);以及,用具有其功能是上述算法的逆算法的另一個(gè)算法和所述不同部分中的偽隨機(jī)二進(jìn)制序列值來(lái)改變數(shù)據(jù);從而,當(dāng)所述不同部分和所述另一個(gè)不同部分的偽隨機(jī)二進(jìn)制序列值相同時(shí),恢復(fù)由上述算法改變的數(shù)據(jù)。
10.如權(quán)利要求9的方法,其特征在于,所述不同部分是不同的特權(quán)級(jí)。
11.一種用于控制處理器的已被存儲(chǔ)起來(lái)的程序,所述處理器具有多個(gè)不同的部分,一個(gè)不同部分可以執(zhí)行在另一個(gè)不同部分中不存在的功能,所述程序包括有用于使上述處理器執(zhí)行下列步驟的命令,所述步驟是使與上述另一個(gè)不同部分相關(guān)的第一偽隨機(jī)二進(jìn)制序列遞增;從所述另一個(gè)不同部分中調(diào)用上述一個(gè)不同部分的功能;使與上述一個(gè)不同部分相關(guān)的第二偽隨機(jī)二進(jìn)制序列發(fā)生器遞增;執(zhí)行所述功能;對(duì)所述一個(gè)和另一個(gè)偽隨機(jī)二進(jìn)制序列發(fā)生器中的偽隨機(jī)二進(jìn)制序列值進(jìn)行比較;以及,根據(jù)比較步驟的結(jié)果控制所述軟件的執(zhí)行;從而,在檢測(cè)到竄改時(shí)可控制前述軟件的執(zhí)行。
12.如權(quán)利要求11的程序,其特征在于,所述功能限于使上述不同部分的PRBS發(fā)生器遞增。
13.如權(quán)利要求11的程序,其特征在于,所述不同部分中存在的另一個(gè)功能調(diào)用來(lái)自上述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列值并在所述不同能部分中執(zhí)行上述比較步驟。
14.如權(quán)利要求13的程序,其特征在于,所述另一個(gè)功能使上述不同部分中的偽隨機(jī)二進(jìn)制序列發(fā)生器遞增,并且,在調(diào)用上述另一功能時(shí),使所述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列發(fā)生器遞增。
15.如權(quán)利要求12的程序,其特征在于,所述不同部分中存在的一個(gè)功能調(diào)用來(lái)自上述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列值并在所述不同部分中執(zhí)行上述比較步驟。
16.如權(quán)利要求15的程序,其特征在于,所述另一個(gè)功能使上述不同部分中的偽隨機(jī)二進(jìn)制序列發(fā)生器遞增,并且,在調(diào)用上述另一功能時(shí),使所述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列發(fā)生器遞增。
17.如權(quán)利要求11的程序,其特征在于,該程序還包括下列步驟用一個(gè)算法以及所述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列值來(lái)改變數(shù)據(jù);以及用具有其功能是上述算法的逆算法的另一個(gè)算法以及所述不同部分中的偽隨機(jī)二進(jìn)制序列值來(lái)改變數(shù)據(jù);從而,當(dāng)所述不同部分和所述另一個(gè)不同部分的偽隨機(jī)二進(jìn)制序列值相同時(shí),可恢復(fù)用上述算法改變的數(shù)據(jù)。
18.一種用于控制處理器的已被存儲(chǔ)起來(lái)的程序,所述處理器具有不同的部分,一個(gè)不同部分可以執(zhí)行在另一個(gè)不同部分中不存在的功能,所述被存儲(chǔ)起來(lái)的程序包括有用于使上述處理器執(zhí)行下列步驟的命令,所述步驟是用一個(gè)算法和所述另一個(gè)不同部分中的偽隨機(jī)二進(jìn)制序列值來(lái)改變數(shù)據(jù);以及,用具有其功能是上述算法的逆算法的另一個(gè)算法和所述不同部分中的偽隨機(jī)二進(jìn)制序列值來(lái)改變數(shù)據(jù);從而當(dāng)所述不同部分和所述另一個(gè)不同部分的偽隨機(jī)二進(jìn)制序列值相同時(shí),可恢復(fù)由上述算法改變的數(shù)據(jù);從而在檢測(cè)到竄改時(shí)可控制前述軟件的執(zhí)行。
全文摘要
通過(guò)調(diào)用以排它方式存在處理器及其外圍設(shè)備的一個(gè)不同部分中的功能和來(lái)自另一不同部分的驅(qū)動(dòng)程序來(lái)防止竄改,以便防止觀(guān)察軟件各部分的執(zhí)行過(guò)程。偽隨機(jī)二進(jìn)制序列發(fā)生器與各不同部分相關(guān)并分別隨調(diào)用和執(zhí)行前述功能而遞增。在允許或阻止進(jìn)一步執(zhí)行軟件之前比較偽隨機(jī)二進(jìn)制序列值。可在任何特權(quán)級(jí)下進(jìn)行比較。可在一種特權(quán)級(jí)下用PRBS值來(lái)破壞數(shù)據(jù)或程序文件并執(zhí)行逆功能以便用本身的PRBS值在另一種特權(quán)級(jí)下恢復(fù)數(shù)據(jù)或程序文件。
文檔編號(hào)G06F21/00GK1314635SQ0110321
公開(kāi)日2001年9月26日 申請(qǐng)日期2001年2月5日 優(yōu)先權(quán)日2000年2月8日
發(fā)明者小G·W·威廉 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司