專利名稱:用于可更新防篡改安全系統(tǒng)的自動產(chǎn)生的加密函數(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于計算機系統(tǒng)的加密函數(shù),尤其涉及用于執(zhí)行可更新、唯一加密函數(shù)的自動產(chǎn)生的程序指令。
背景技術(shù):
加密函數(shù)廣泛用于計算機系統(tǒng)甚至大眾消費者應(yīng)用中。將通過諸如DVD這樣的媒體發(fā)布的程序內(nèi)容進行加密,以防止未授權(quán)拷貝。加密函數(shù)還用于驗證計算機系統(tǒng)的用戶,將存儲在計算機上的諸如日志文件和審計蹤跡(audit trails)這樣的數(shù)據(jù)進行編碼,以保證所存儲數(shù)據(jù)地完整性。這些函數(shù)還可用于移動代理,以便在代理及其委托人(principal)之間建立私有通信信道。只要攻擊者可以訪問受保護內(nèi)容并且有充足的時間,就能夠破解所有的軟件防篡改技術(shù),所以,希望提供一種可更新的加密函數(shù),以增加對受保護內(nèi)容獲得重復(fù)訪問所需的工作量。雖然結(jié)合移動代理對本發(fā)明進行了描述,但可以想象得到,本發(fā)明可用于上述任何內(nèi)容和任何系統(tǒng),以提高加密數(shù)據(jù)的安全性。
移動代理是在諸如全球網(wǎng)絡(luò)、廣域網(wǎng)或局域網(wǎng)這樣的網(wǎng)絡(luò)中移動并在宿主計算機(而不是其創(chuàng)作者)中執(zhí)行任務(wù)的一種對象。在一個代理的生命期(lifetime)內(nèi),有兩種類型的計算機服務(wù)器生產(chǎn)者和消費者。代理的生產(chǎn)者,也被認(rèn)為其委托人,產(chǎn)生并發(fā)布該代理。消費者是執(zhí)行該代理以完成特定任務(wù)的服務(wù)器。
例如,購物移動代理可用一種諸如JAVA這樣的、能運行在多種不同類型計算機上的語言寫成,然后,用于從若干互聯(lián)網(wǎng)網(wǎng)頁中尋找一種產(chǎn)品的最低價格。當(dāng)創(chuàng)建一個代理時,其主人首先要確定他希望該代理完成的任務(wù),如購物。下一步,主人必須指導(dǎo)該代理如何完成該任務(wù),這包括如何在服務(wù)器間移動以及如何返回結(jié)果。一旦完成這些步驟,該代理就做好被發(fā)送到網(wǎng)絡(luò)上的準(zhǔn)備。然后,移動代理在網(wǎng)絡(luò)上的主機(宿主計算機)間自主地移動,并在主機上執(zhí)行其程序代碼,以達到該移動代理的委托人的目的。
移動代理也可以具有“意識”或偽人工智能,并行動自主于其委托人。例如,它可以經(jīng)由網(wǎng)絡(luò)拓撲選擇自己的移動路線,以找出完成其使命的新主機。移動代理可與其源計算機系統(tǒng)或其他移動代理通信,從而交換和共享信息。它也可生成其他移動代理或“蟲子(bot)”,以輔助其工作。蟲子(bot)是駐留在一個計算機上并向其他計算機發(fā)送查詢請求的程序或指令集。
而移動代理包括在其已旅行和駐留的宿主計算機上執(zhí)行的命令或指令。
代理的主人對于安全性所關(guān)注的是該代理的數(shù)據(jù)、代碼和執(zhí)行的保密性和完整性。由于各種原因,惡意消費者主機可能試圖訪問和修改代理的私有數(shù)據(jù)或代碼。對代理做出的大量不同類型的攻擊使得惡意主機成為一個很嚴(yán)重的問題。意志堅決的攻擊者最終將危及移動代理的安全。唯一的問題是攻擊者要花費多長的時間才能成功。
提高移動代理安全性的一種方法是使用防篡改硬件。然而,由于各種資源和花費需求,這種硬件并不是每個人都可用的或在任何地點都可用的。此外,硬件也可以被損害且不容易更新。為了提高移動代理的安全性,軟件保護仍是比較理想的,并且,在許多場合也是唯一可用的方法。
另一個安全性擔(dān)憂是拒絕執(zhí)行(denial of execution)。當(dāng)消費者拒絕執(zhí)行代理的時候,就會出現(xiàn)該問題。例如,購物代理到達一個消費者宿主計算機時,該代理必須首先判斷它是否已到達以及是否在正確的目的主機上執(zhí)行。在代理確認(rèn)其已到達正確的消費者之后,該代理將開始執(zhí)行其任務(wù),該任務(wù)通常是從消費者收集和分析數(shù)據(jù)。一旦任務(wù)完成,該代理將確定其下一個目的地。該代理可以移向另一消費者或?qū)⒔Y(jié)果返回給其委托人然后終止。
在代理執(zhí)行前和執(zhí)行期間,惡意消費者可能會阻止該代理的執(zhí)行。然后,惡意主機可能分析該代理并可能不喜歡該代理獲得的結(jié)果。例如,一個購物代理被發(fā)送到一個惡意主機,該代理的任務(wù)是根據(jù)其收集的數(shù)據(jù)來訂購商品。由于該代理已發(fā)現(xiàn)另一個價錢更優(yōu)惠的主機,所以該主機可能會終止該代理的執(zhí)行。一旦執(zhí)行停止,該惡意主機就可能為自身利益修改該代理的結(jié)果,或者該主機可能會假扮該代理。這樣,該惡意主機就可以為獲得不正當(dāng)利益而返回虛假信息。
惡意主機也可以盡力分析和危害代理。惡意主機可以僅僅拒絕或延遲代理的執(zhí)行,因為它希望通過將代理的程序代碼進行分析或反向工程而危害該代理。該惡意代理的目的就是隨后修改該代理,使得該惡意主機受益,然后重新開始該代理的執(zhí)行。該惡意主機能夠從代理中提取可能包含諸如姓名、信用卡號碼和地址等個人數(shù)據(jù)的敏感信息。
移動代理的開發(fā)者和委托人剛開始時忽視了這些特定類型的攻擊,因為他們的注意力放在開發(fā)有用的移動代理上,并且因為人們認(rèn)為開發(fā)者總能檢測出由于委托人停止接收來自代理的信息的拒絕執(zhí)行。過去,人們曾經(jīng)錯誤地認(rèn)為,代理消費者主機不能從拒絕代理執(zhí)行中獲得任何好處。但是,如上所述,消費者主機有許多拒絕執(zhí)行的理由,并且,隨著移動代理變得更為普遍,該問題也將變得更加嚴(yán)重。
發(fā)明內(nèi)容
本發(fā)明體現(xiàn)在一種通過用定制指令集對加密函數(shù)動態(tài)編程的方式來產(chǎn)生加密函數(shù)的方法,其中用于該函數(shù)的每一個實例的指令是不同的。這些定制指令是根據(jù)所選擇的函數(shù)和操作數(shù)產(chǎn)生的,然后,將新的動態(tài)計算機程序指令集提供為一個唯一加密函數(shù)。
根據(jù)本發(fā)明的一個方面,這些定制指令實現(xiàn)一種加密算法。
根據(jù)本發(fā)明的另一個方面,該加密算法是序列密碼(streamcipher)算法。
根據(jù)本發(fā)明的再一個方面,為該函數(shù)分配一個唯一標(biāo)識符。
根據(jù)本發(fā)明的另一個方面,該唯一加密函數(shù)實現(xiàn)在一個移動代理中。
根據(jù)本發(fā)明的再一個方面,一種代理監(jiān)控系統(tǒng)(AMS)與該唯一移動代理結(jié)合使用。該AMS監(jiān)控該唯一移動代理的狀態(tài)和生命期。該代理向該AMS注冊,并且在一個數(shù)據(jù)庫中存儲唯一移動代理信息。該AMS與該代理建立通信協(xié)議,從而允許該AMS和該代理之間交換信息。該AMS也可在當(dāng)前代理的生命期結(jié)束時分配一個新代理來完成該代理的任務(wù),或者在一個時間段上分配和跟蹤多個代理,在各同時執(zhí)行的代理生命期結(jié)束時取代它。
應(yīng)當(dāng)明白的是,前面的概要描述和下面的詳細描述都只是示例性的,而非用于限制本發(fā)明。
附圖簡述
通過下面結(jié)合附圖的詳細描述,可以更好地理解本發(fā)明。需要強調(diào)的是,根據(jù)通常的做法,圖中的各種特征沒有按比例來畫。相反,為清楚起見,將各種特征的尺寸進行了任意的放大或縮小。附圖包括
圖1是用于描述根據(jù)本發(fā)明的移動代理的產(chǎn)生和移動的網(wǎng)絡(luò)框圖2示出了移動代理組成部分的功能框圖3是用于描述一個代理在生命周期中旅行于多個主機間時的移動的另一個網(wǎng)絡(luò)框圖。
具體實施例方式
圖1是一個示出了穿越于若干宿主消費者計算機的移動代理的生命期及其移動的網(wǎng)絡(luò)框圖。該移動代理由在源計算機110上執(zhí)行的委托人程序112產(chǎn)生。雖然該委托人通常是一個人,但其被顯示為委托人程序112,并且由人使用該程序去初始化并且使用該程序與該移動代理通信。
委托人程序112使用一個代理模板114來產(chǎn)生移動代理。在本示例中,移動代理A0 116是從該代理模板114生成的第一個代理。然后,該移動代理A0 116經(jīng)由網(wǎng)絡(luò)通信路徑120被發(fā)送到第一個消費者Host_1130。到達消費者Host 1130后,移動代理A0 116在Host_1上執(zhí)行,并通過網(wǎng)絡(luò)路徑122與委托人112通信。在Host 1130上完成其任務(wù)之后,移動代理A0116通過網(wǎng)絡(luò)路徑124旅行到Host 2140。到達Host_2140后,移動代理A0 116再次執(zhí)行,并通過網(wǎng)絡(luò)路徑126與委托人112通信。當(dāng)代理自己終止時,理想情況是,該代理先將其收集到的任何數(shù)據(jù)上載到委托人112,并通知委托人它正在終止,從而使該委托人可以產(chǎn)生一個新代理去完成該任務(wù)。
還為移動代理A0 116分配一個有限的生命期。只要代理的生命期沒有結(jié)束并且其沒有被破壞,它就將繼續(xù)其使命。在本發(fā)明的示例性實施例中,代理的生命期可由靜態(tài)程序代碼確定,在這種情況下,每個移動代理具有相同的有限生命期。或者,該生命期可由動態(tài)程序代碼確定,并且可以為每個代理分配一個從預(yù)定范圍內(nèi)選擇的隨機生命期。生命期可以是一個時間量,或者是該代理被允許訪問的主機的數(shù)量。當(dāng)代理超過其生命期時,它可以將自己終止或由委托人112終止。
在本示例中,在消費者Host_i150處,移動代理A0 116超出了其預(yù)定的生命期并自己結(jié)束。委托人112獲知此事并產(chǎn)生一個同樣基于相同代理模板114但具有與代理116不同動態(tài)代碼的新移動代理A1162。委托人112通過網(wǎng)絡(luò)路徑134將新移動代理A1 162發(fā)送到Host_i+1 160,以繼續(xù)該移動代理的任務(wù)。代理A1 162繼續(xù)執(zhí)行委托人112的任務(wù)直至其生命期終止。如果代理A1 162在任務(wù)完成前生命期結(jié)束,委托人112分別產(chǎn)生其他代理(A2、A3等…)來完成任務(wù)。每個代理具有不同的動態(tài)代碼。
圖3示出了移動代理如何在主機間旅行或移動的一個網(wǎng)絡(luò)框圖。移動代理A0 116由委托人112創(chuàng)建,并被發(fā)送到第一個Host_1130。在這里,該代理在該主機上執(zhí)行代碼并且可能收集一些數(shù)據(jù)。可以將該數(shù)據(jù)存儲在移動代理A0 116中。也可以將該數(shù)據(jù)發(fā)送回委托人112或者下面描述的代理監(jiān)控系統(tǒng)(AMS)。該AMS是一個可以使用數(shù)據(jù)庫來監(jiān)控移動代理狀態(tài)的軟件程序。該AMS或委托人112可指示移動代理A0 116繞開Host_2140立即到達Host_i 150,如虛線箭頭121所示?;蛘?,該代理可自主地操作,并順序地訪問各個主機130、140、150和160。
如果移動代理A0 116工作在自主模式下,該代理根據(jù)已收集數(shù)據(jù),自主決定是移動到Host_2 140還是繞開Hosts_2 140立即跳到Host_i 150,如虛線箭頭121所示。如果該代理不是處于自主模式下,它等待來自委托人110或AMS的指令。
一個運行不佳的網(wǎng)絡(luò)也可能妨礙代理執(zhí)行其功能的能力。在該示例性實施例中,委托人112或AMS決定是否為網(wǎng)絡(luò)性能提高而等待一段額外的時間,還是發(fā)動一個額外的移動代理來完成已分配的任務(wù)。該AMS或委托人112可以“ping”該移動代理所位于的主機消費者,并確定是否存在網(wǎng)絡(luò)傳播延遲?!皃ing”是一個通過向目的地發(fā)送一個或重復(fù)的ICMP(網(wǎng)間控制報文協(xié)議)回應(yīng)請求并等待答復(fù)從而測試目的地的可到達性的程序。
圖2示出了可以構(gòu)成新的唯一代理的模板的組成部分的模型。該代理模板有兩個部分(1)靜態(tài)代碼和數(shù)據(jù)212,以及(2)動態(tài)代碼和數(shù)據(jù)214。將靜態(tài)代碼和數(shù)據(jù)212不做任何修改地直接放入移動代222的新程序代碼中。動態(tài)代碼和數(shù)據(jù)214首先被傳給一個代碼生成器218,以產(chǎn)生新的動態(tài)代碼224,新的動態(tài)代碼224也成為新唯一代理222的一部分。在本示例性實施例中,該代碼生成器218也可產(chǎn)生對每個唯一代理不同的唯一標(biāo)識符210。
在本發(fā)明的示例性實施例中,該唯一標(biāo)識符與分配給該代理的動態(tài)代碼相關(guān)聯(lián)。代理將該唯一標(biāo)識符與發(fā)送給委托人的每條消息一起發(fā)送。根據(jù)此消息,委托人可以知道該代理使用的動態(tài)代碼,并能將從該代理接收的任何消息正確地解碼或驗證。
如前所述,完全自動代碼生成本來是很困難的,在本示例性實施例中,對此問題的解決方法是僅自動產(chǎn)生加密函數(shù)。因為自動生成數(shù)學(xué)函數(shù)比生成任意代碼容易,所以這是有優(yōu)勢的。由于加密函數(shù)能用于將代理的私有數(shù)據(jù)進行加密和解密,所以其對安全性是很重要的。
根據(jù)本發(fā)明一個示例性實施例的唯一移動代理使用序列密碼(stream cipher)作為加密函數(shù)。由于將兩個或更多個序列密碼函數(shù)結(jié)合起來至少與組合密碼分組中最強的密碼一樣安全,所以序列密碼對軟件加密來說是可行的。因此,一個現(xiàn)有密碼(例如,諸如DES這樣的分組密碼)與另一個密碼的結(jié)合起來形成序列密碼,可以實現(xiàn)至少與DES一樣強的編碼。
序列密碼的基本概念是使用一個密鑰序列(Z=z1,z2…)將隨機代碼生成器216中的動態(tài)代碼和數(shù)據(jù)214進行加密?!爱?dāng)前”(第i個)密鑰zi是基于前一個密鑰zi-1和“當(dāng)前”動態(tài)代碼和數(shù)據(jù)214而產(chǎn)生的,如公式(1)所示
xi-1zi=fi(zi-1,xi-1) (1)
新的動態(tài)代碼220yi由“當(dāng)前”第i個密鑰zi產(chǎn)生,加密函數(shù)如公式(2)所示
yi=ezi(xi) (2)
計算加密過程中所使用函數(shù)的反函數(shù)執(zhí)行解密。然后,通過第i個密鑰zi和加密函數(shù)的反函數(shù)來重新生成動態(tài)代碼和數(shù)據(jù)214,如公式(3)所示
xi=dzi(yi) (3)
為便于自動構(gòu)造一個多函數(shù)(multi-functioned)的序列密碼,本發(fā)明的示例性實施例使用了一個序列密碼代碼模板作為代碼生成引擎218的基礎(chǔ)。新代碼是基于該模板的結(jié)構(gòu)產(chǎn)生的,在本示例性實施例中,該模板是用Java寫成的,其包括兩部分靜態(tài)部分和動態(tài)部分。靜態(tài)部分由出現(xiàn)在每個生成實例中出現(xiàn)的Java代碼組成。動態(tài)部分是從靜態(tài)部分中解析出來的,并通過使用一組標(biāo)簽來對其進行標(biāo)識。在本示例性實施例中,標(biāo)簽是尖括號“<”和“>”。然后,這些標(biāo)簽被新的、動態(tài)生成的代碼取代。因此,該模板是我們的代碼生成引擎用來自動構(gòu)建新代碼而使用的數(shù)據(jù)。
作為表1中的偽碼示出了該序列密碼模板的一部分。在此模板內(nèi),用于計算內(nèi)部狀態(tài)(S-Box)、加密和解密的函數(shù)用標(biāo)簽表示。每個代碼實例的函數(shù)都是隨機產(chǎn)生的。
表1
//一元、二元操作定義,如加、平方和、異或、交換。
<DEFINITION_OF_NEEDED_OPERATIONS> void calculateInternalStates() { if(bPlainTextInvolved) { int i=(top==0) (N_PLAIN_TEXT-1)(top-1); internalStates
=calc(involvedPlainText[i],internalStates
); }<!-- SIPO <DP n="8"> --><dp n="d8"/> else internalStates
=linearFunction(internalStates
); for(int i=1;i<nInternalStates;i++) { internalStates[i]=calc(internalStates[i-1],internalStates[i]); } ?。 nt calc(int x,int y) { <MULTI_OPERATION_ON_X_Y_SBOX> ?。 nt encrypt(int key,int x) { return<ENCRYPT_OPERATION>; } int decrypt(int key,int y) { return<DECRYPT_OPERATION>; }
在一個示例性實施例中,代碼生成器216負責(zé)根據(jù)該模板產(chǎn)生新代碼。代碼生成器216由3部分組成模板解析器、標(biāo)簽代碼生成器和寫入器。
模板解析器通過定位和提取所有標(biāo)簽來解析模板文件。該模板解析器也為所有標(biāo)簽調(diào)用相應(yīng)的標(biāo)簽代碼生成器類。然后,標(biāo)簽代碼生成器根據(jù)標(biāo)簽的分類,動態(tài)地生成每個標(biāo)簽的代碼。本系統(tǒng)的一個特征在于,可以很容易地替換或修改生成算法。寫入器負責(zé)用新代碼取代標(biāo)簽,然后將結(jié)果寫進一個新文件中。
在本示例性實施例中,為新動態(tài)代碼的每個實例分配一個新的、唯一的名字,以將包含此代碼的代理與其他代理區(qū)分開。該名字用于代理管理和驗證。由于該名字只對代理的委托人來說是有意義的,所以,該名字在代理的委托人看來是唯一的就足夠了。名字由代碼生成器218選擇和控制。
在本發(fā)明的示例性實施例中使用了序列密碼算法。該算法首先隨機確定在密鑰序列例程中使用的操作(函數(shù))的數(shù)量,即數(shù)值n。然后,從函數(shù)集合F中隨機選取n個函數(shù)。例如,該函數(shù)集合可包括諸如交換、異或(XOR)以及平方和這樣的函數(shù)。為提高效率,根據(jù)操作數(shù)數(shù)量,將這些函數(shù)進行分組。為每一個操作(函數(shù))選擇操作數(shù)。操作數(shù)可從內(nèi)部狀態(tài)、以前的動態(tài)代碼數(shù)據(jù)214或以前的密鑰中選擇。為了獲得更高的效率,該內(nèi)部狀態(tài)、以前的動態(tài)代碼和數(shù)據(jù)214以及密鑰按固定格式存儲在一個數(shù)組中。通過為每個動態(tài)代碼或數(shù)據(jù)集選擇操作和操作數(shù),然后將產(chǎn)生的源代碼替換進該模板文件中,從而生成新代碼。
為保證隨機產(chǎn)生的加密例程是可解密的,用于產(chǎn)生加密代碼的函數(shù)集合G中的每個函數(shù)F都具有一個在反函數(shù)集合G-1中的反函數(shù)F-1。為了生成一個隨機產(chǎn)生的序列密碼加密解密例程,使用集合G-1而不是G來執(zhí)行上述段落中的步驟。增加最終步驟(5),對于隨機產(chǎn)生的加密例程,按倒序應(yīng)用適當(dāng)?shù)姆春瘮?shù),從而構(gòu)造解密算法。
在本發(fā)明的另一個示例性實施例中,動態(tài)代碼和數(shù)據(jù)220可通過散列(hash)算法方法得到保護。該方法產(chǎn)生動態(tài)代碼和數(shù)據(jù)220以及形成消息摘要的消息(可選的)的簡明(condensed)表達。然后,例如,可將移動代理的信息內(nèi)容提供給一個產(chǎn)生或驗證該信息簽名的簽名算法。由于消息摘要通常比消息小很多,所以用摘要給消息簽名而不是加密該消息通常能提高處理效率。數(shù)字簽名的驗證者可以像數(shù)字簽名的創(chuàng)建者一樣,使用相同的散列算法。傳送(in transit)中對該消息或用于將消息散列化的算法的任何改變都將產(chǎn)生不同的消息摘要,從而導(dǎo)致簽名驗證失敗。
因為找到與給定消息摘要對應(yīng)的消息或者找到產(chǎn)生相同消息摘要的兩個不同消息在計算上是不可實現(xiàn)的,所以這種類型的認(rèn)證是安全的。傳送中對消息的任何改動將很可能產(chǎn)生不同的消息摘要,從而使得簽名驗證失敗。
不用委托人112跟蹤移動代理116的狀態(tài)和進度,可以采用代理監(jiān)控系統(tǒng)(AMS)來監(jiān)控該代理。該AMS可以是運行在與委托人110相同的計算機上或其他任何能通過網(wǎng)絡(luò)與該代理通信的計算機上的一個應(yīng)用程序。
在發(fā)布唯一移動代理前,將其注冊在AMS中。然后,在該移動代理整個生命期內(nèi),當(dāng)其在全球信息網(wǎng)絡(luò)上從主機移動到主機時,該AMS跟蹤該移動代理。該唯一移動代理可在某點與該AMS建立數(shù)據(jù)交換。這些數(shù)據(jù)交換可以下載或上傳信息,例如,通知代理有額外的新主機要訪問、阻止代理移向已知的惡意主機、報告已訪問過的主機或?qū)⒋硭阉鞯牟糠纸Y(jié)果發(fā)送給該AMS。
委托人或AMS可采用檢測技術(shù)確定一個主機是否為惡意的。示例性的惡意主機檢測算法包括(1)指定一個具體的時間范圍,在該時間范圍內(nèi),AMS(或委托人110)在唯一移動代理到達一個新主機后期待來自該代理的到達確認(rèn)信息,如果在此時間范圍內(nèi)沒有收到信息則將此主機標(biāo)注為惡意主機;(2)檢測出該唯一移動代理過早地停止與AMS或委托人的通信;以及(3)AMS或委托人確定從唯一移動代理收到不正確加密的消息。
可通過使用動態(tài)產(chǎn)生的一次性密碼(one-time password),將動態(tài)產(chǎn)生加密代碼的函數(shù)和有限生命期結(jié)合起來。L.Lamport撰寫的題為“Password Authentication with Insecure Communications”一文描述了一次性密碼的思想,該文章發(fā)表于“Communications of the ACM”,vol.24,No.11,pp 770-772,1981。該思想被設(shè)計成用于對抗基于竊聽網(wǎng)絡(luò)連接來獲得登錄id和密碼的攻擊。為了使用一次性密碼機制,委托人首先選擇一個密碼并將其存儲在驗證服務(wù)器中。服務(wù)器選擇一個數(shù)值n(某個相當(dāng)大的數(shù)字)并遞歸地將該密碼做n次散列處理(也就是說,用某散列函數(shù)計算hashn(密碼)),然后將該結(jié)果與該代理的唯一標(biāo)識和數(shù)值n一起存儲在該服務(wù)器的數(shù)據(jù)庫中。數(shù)值n代表該代理可使用一次性密碼的數(shù)量,即該代理在生命期結(jié)束前能夠發(fā)送的消息數(shù)量。每次使用時,散列函數(shù)少執(zhí)行一次,分別產(chǎn)生不同的密碼。如果代理發(fā)送的消息多于n,代理生命期結(jié)束時,委托人將忽略它們。
用于一次性密碼的動態(tài)代碼生成也可用于產(chǎn)生散列函數(shù),該代理使用所述散列函數(shù)來生成密碼。在這種情況下,可能希望在選擇過程中使用偽隨機數(shù)生成器從一組已知函數(shù)中動態(tài)地選擇一個散列函數(shù),而不是動態(tài)地生成一個新的散列函數(shù)。也可使用動態(tài)代碼產(chǎn)生算法來選擇用于產(chǎn)生散列化密碼的初始密碼。本示例中的密碼不一定用作密碼,也可用作加密密鑰,在將數(shù)據(jù)發(fā)送給委托人112或AMS前將其加密。收到加密數(shù)據(jù)后,委托人或AMS可根據(jù)該唯一代理標(biāo)識符查找當(dāng)前密鑰,然后,應(yīng)用一個解密函數(shù),以將該消息解密,該解密函數(shù)與用于將該數(shù)據(jù)加密的函數(shù)相對應(yīng)。
安全移動代理在安全信息收集的很多領(lǐng)域有很大的潛力。它們可用作通過信息網(wǎng)進行搜索的蜘蛛(spider),或者,它們具有能通過非安全網(wǎng)絡(luò)安全地訪問數(shù)據(jù)庫的嵌入式ODBC(開放數(shù)據(jù)庫互連)消息。移動代理也可用于執(zhí)行旅行計劃、互聯(lián)網(wǎng)網(wǎng)絡(luò)監(jiān)控和在企業(yè)環(huán)境的計算機中查找非法、未授權(quán)或未注冊的軟件拷貝。
上面結(jié)合具體的實施例和例子對本發(fā)明進行了介紹和描述,但本發(fā)明不限于上述給出的細節(jié)。相反,在不脫離本發(fā)明的前提下,可以在權(quán)利要求等價物的范圍內(nèi)做出各種細節(jié)性修改。例如,如上所述,加密函數(shù)的動態(tài)代碼生成可用于移動代理通信之外的其他應(yīng)用。駐留在個人計算機的任何應(yīng)用通常都是容易受到反向工程攻擊的,反向工程攻擊最終將突破這些應(yīng)用的防篡改特征。如果本發(fā)明的可更新防篡改加密函數(shù)用于這些應(yīng)用,攻擊者將需要在每次更新該函數(shù)時破解它。這使得想要嘗試破解代碼的人需要做相當(dāng)多的工作,因此,將鼓勵人們使用這些應(yīng)用,就如同人們對它們預(yù)期的那樣。
例如,如果一個動態(tài)生成的序列密碼用于將臨時存儲然后例如使用諸如TIVOTM或Replay TVTM系統(tǒng)這樣的個人錄像機來播放的內(nèi)容進行加密。在該應(yīng)用中,可將該動態(tài)序列密碼進行解碼的應(yīng)用隨同內(nèi)容一起發(fā)送,觀眾可使用它將該內(nèi)容進行解碼和顯示。由于下次發(fā)送給觀眾的加密內(nèi)容將使用動態(tài)產(chǎn)生的不同的密碼,所以計算機黑客無法從破解該序列密碼中獲益很多。
此外,如上所述,可更新的生成的加密函數(shù)也可用于驗證個人計算機上用戶的身份。由于加密函數(shù)不斷地被更新,因此攻擊者無法持續(xù)訪問受保護的材料??筛录用芎瘮?shù)也用于確保日志文件或?qū)徲嬠欅E的完整性,這使得數(shù)據(jù)庫的惡意用戶更難隱藏在不同時間或不同地點對數(shù)據(jù)做出的非法修改。
權(quán)利要求
1、一種用于創(chuàng)建加密函數(shù)的方法,包括以下步驟
提供一個加密函數(shù)模板,該模板具有至少一個靜態(tài)指令集和用于至少一個動態(tài)指令集的指示符;
為所述至少一個動態(tài)指令集動態(tài)地生成計算機程序指令,所述動態(tài)生成的指令對該加密函數(shù)是唯一的;以及
用所述動態(tài)生成的計算機程序指令取代所述用于至少一個動態(tài)指令集的指示符,以形成該唯一加密函數(shù)。
2、如權(quán)利要求1所述的方法,還包括為所述唯一加密函數(shù)分配一個唯一標(biāo)識符的步驟。
3、如權(quán)利要求2所述的方法,其中,動態(tài)地生成計算機程序指令的步驟包括以下步驟從預(yù)定的函數(shù)集合中選擇多個函數(shù),其中,序列密碼算法順序地應(yīng)用所選擇的函數(shù)來加密數(shù)據(jù)。
4、如權(quán)利要求1所述的方法,其中,動態(tài)地生成計算機程序指令的步驟包括生成計算機程序指令,所述指令產(chǎn)生一個消息摘要,將該消息摘要與使用所述唯一加密函數(shù)處理的至少一條消息一起提供。
5、如權(quán)利要求4所述的方法,其中,生成產(chǎn)生所述消息摘要的計算機程序指令的步驟包括以下步驟生成計算機程序指令,所述計算機程序指令將一個散列函數(shù)至少應(yīng)用于所述動態(tài)生成的代碼上,以產(chǎn)生所述消息摘要。
6、如權(quán)利要求5所述的方法,其中,所述散列函數(shù)是序列密碼算法,并且生成將所述散列函數(shù)至少應(yīng)用于所述動態(tài)生成的代碼上的計算機程序指令的步驟包括以下步驟從預(yù)定的函數(shù)集合中選擇多個函數(shù),其中,所述序列密碼算法順序地應(yīng)用所選擇的函數(shù),以執(zhí)行所述散列函數(shù)。
7、如權(quán)利要求1所述的方法,還包括為所述唯一加密函數(shù)分配一個有限生命期的步驟。
8、如權(quán)利要求7所述的方法,其中,為所述唯一加密函數(shù)分配一個有限生命期的步驟為代理分配一個預(yù)定的終止時間。
9、如權(quán)利要求7所述的方法,其中,為所述唯一加密函數(shù)分配一個有限生命期的步驟分配使用該函數(shù)可處理的消息的最大數(shù)量。
10、一種用于創(chuàng)建唯一移動代理的方法,包括以下步驟
提供一個移動代理模板,該模板具有至少一個靜態(tài)指令集和用于至少一個動態(tài)指令集的指示符;
為所述至少一個動態(tài)指令集動態(tài)地生成計算機程序指令,所述動態(tài)生成的指令對該移動代理是唯一的;以及
用所述動態(tài)生成的計算機程序指令取代所述用于至少一個動態(tài)指令集的指示符,以形成該唯一移動代理。
11、如權(quán)利要求10所述的方法,還包括為所述唯一移動代理分配一個唯一標(biāo)識符的步驟。
12、如權(quán)利要求10所述的方法,其中,所述動態(tài)指令集執(zhí)行一個加密算法。
13、如權(quán)利要求12所述的方法,其中,所述加密算法是序列密碼算法,并且動態(tài)地生成計算機程序指令的步驟包括以下步驟從預(yù)定的函數(shù)集合中選擇多個函數(shù),其中,所述序列密碼算法順序地應(yīng)用所選擇的函數(shù),以加密數(shù)據(jù)。
14、如權(quán)利要求10所述的方法,其中,動態(tài)地生成計算機程序指令的步驟包括生成計算機程序指令,所述指令產(chǎn)生一個消息摘要,將該消息摘要與使用所述唯一加密函數(shù)處理的至少一條消息一起提供。
15、如權(quán)利要求14所述的方法,其中,生成產(chǎn)生所述消息摘要的計算機程序指令的步驟包括以下步驟生成計算機程序指令,所述計算機程序指令將散列函數(shù)至少應(yīng)用于動態(tài)生成的代碼,以產(chǎn)生所述消息摘要。
16、如權(quán)利要求15所述的方法,其中,所述散列函數(shù)是序列密碼算法,并且生成將所述散列函數(shù)至少應(yīng)用于動態(tài)生成的代碼的計算機程序指令的步驟包括以下步驟從預(yù)定的函數(shù)集合中選擇多個函數(shù),其中,所述序列密碼算法順序地應(yīng)用所選擇的函數(shù),以執(zhí)行所述散列函數(shù)。
17、如權(quán)利要求10所述的方法,還包括為所述唯一移動代理分配一個有限生命期的步驟。
18、如權(quán)利要求17所述的方法,其中,為所述唯一移動代理分配一個有限生命期的步驟為該代理分配一個預(yù)定的終止時間。
19、如權(quán)利要求17所述的方法,其中,為所述唯一移動代理分配一個有限生命期的步驟分配所述唯一移動代理可發(fā)送的消息的最大數(shù)量。
20、如權(quán)利要求17所述的方法,其中,為所述唯一移動代理分配一個有限生命期的步驟分配所述唯一移動代理可訪問的宿主計算機的最大數(shù)量。
21、一種用于創(chuàng)建多個唯一移動代理的方法,包括以下步驟
提供一個移動代理模板,該模板具有至少一個靜態(tài)指令集和用于至少一個動態(tài)指令集的指示符;
對于所述多個移動代理中的各個移動代理,為所述至少一個動態(tài)指令集動態(tài)地生成多個相互不同的計算機程序指令集;以及
用所述各個動態(tài)生成的計算機程序指令取代用于所述至少一個動態(tài)指令集的指示符,以生成所述多個唯一移動代理。
22、如權(quán)利要求21所述的方法,還包括為所述多個唯一移動代理各分配一個相互不同的標(biāo)識符的步驟。
23、如權(quán)利要求21所述的方法,其中,所述多個動態(tài)指令集各執(zhí)行一個相互不同的加密算法。
24、如權(quán)利要求23所述的方法,其中,所述相互不同的加密算法的每一個算法都是序列密碼算法,并且動態(tài)地生成計算機程序指令的步驟包括以下步驟從預(yù)定的函數(shù)集中選擇相互不同的多個函數(shù),其中,所述序列密碼算法順序地應(yīng)用所選擇的函數(shù),以加密數(shù)據(jù)。
25、如權(quán)利要求24所述的方法,其中,用于每一個唯一移動代理的所述靜態(tài)指令集包括將各加密算法應(yīng)用于所述唯一移動代理發(fā)送的至少一條消息的指令。
26、如權(quán)利要求24所述的方法,其中,用于每一個唯一移動代理的所述靜態(tài)指令集包括應(yīng)用各自加密算法以產(chǎn)生一個與由該唯一移動代理發(fā)送的至少一條消息一起發(fā)送的消息摘要的指令。
27、如權(quán)利要求21所述的方法,還包括為所述多個唯一移動代理中的每一個移動代理分配一個各自不同的、有限的生命期的步驟。
28、一種用于監(jiān)控在網(wǎng)絡(luò)中的消費者宿主計算機間移動的移動代理的方法,以檢測可能惡意的宿主計算機,該方法包括以下步驟
為該移動代理分配一個有限的生命期;
向一個代理監(jiān)控系統(tǒng)(AMS)注冊該移動代理;
在該移動代理與該AMS之間建立通信,以確定該移動代理訪問的一系列宿主計算機;以及
如果該AMS在該移動代理的所述有限生命期內(nèi)不能與該移動代理通信,則將網(wǎng)絡(luò)上該代理移到的最后一個宿主計算機標(biāo)識為可能惡意的。
29、如權(quán)利要求28所述的方法,其中,為該移動代理分配一個有限生命期的步驟分配該移動代理可向該AMS發(fā)送的消息的最大數(shù)量。
30、如權(quán)利要求28所述的方法,其中,為該移動代理分配一個有限生命期的步驟分配該移動代理可訪問的主機的最大數(shù)量。
31、如權(quán)利要求30所述的方法,其中,為該移動代理分配一個有限生命期的步驟分配一個該移動代理將終止的時間。
32、一種用于監(jiān)控在網(wǎng)絡(luò)中的消費者計算機間移動的移動代理的方法,以檢測可能惡意的宿主計算機,該方法包括以下步驟
為該移動代理指定一個唯一加密算法;
向一個代理監(jiān)控系統(tǒng)(AMS)注冊該移動代理;
在該移動代理與該AMS之間建立通信,以確定該移動代理訪問的一系列宿主計算機;以及
如果該AMS從該移動代理收到一個非正確加密的消息,則將網(wǎng)絡(luò)上該代理移向的最后一個宿主計算機標(biāo)識為可能惡意的。
33、一種計算機可讀載體,包括使計算機執(zhí)行用于創(chuàng)建加密函數(shù)的方法的計算機程序指令,該方法包括以下步驟
提供一個加密函數(shù)模板,該模板具有至少一個靜態(tài)指令集和用于至少一個動態(tài)指令集的指示符;
為所述至少一個動態(tài)指令集動態(tài)地生成計算機程序指令,所述動態(tài)生成的指令對該加密函數(shù)是唯一的;以及
用所述動態(tài)生成的計算機程序指令取代所述用于至少一個動態(tài)指令集的指示符,以形成該唯一加密函數(shù)。
34、一種計算機可讀載體,包括使計算機執(zhí)行用于創(chuàng)建多個唯一移動代理的方法的計算機程序指令,該方法包括以下步驟
提供一個移動代理模板,該模板具有至少一個靜態(tài)指令集和用于至少一個動態(tài)指令集的指示符;
對于所述多個移動代理中的各個移動代理,為所述至少一個動態(tài)指令集動態(tài)地生成多個相互不同的計算機程序指令集;以及
用所述各個動態(tài)生成的計算機程序指令取代用于所述至少一個動態(tài)指令集的指示符,以生成所述多個唯一移動代理。
35、一種計算機可讀載體,包括使計算機執(zhí)行一種用于監(jiān)控在網(wǎng)絡(luò)中的宿主計算機間移動的移動代理以檢測可能惡意的宿主計算機的方法的計算機程序指令,該方法包括以下步驟
為該移動代理指定一個唯一加密算法;
向一個代理監(jiān)控系統(tǒng)(AMS)注冊該移動代理;
在該移動代理與該AMS之間建立通信,以確定該移動代理訪問的一系列宿主計算機;以及
如果該AMS從該移動代理收到一個非正確加密的消息,則將該代理移向的網(wǎng)絡(luò)中最后一個宿主計算機標(biāo)識為可能惡意的。
全文摘要
一種從一個模板生成的安全加密函數(shù),該模板包含靜態(tài)程序代碼和動態(tài)程序代碼,該靜態(tài)程序代碼對于所有移動代理都是相同的,該動態(tài)程序代碼對每個函數(shù)都不同。該動態(tài)代碼執(zhí)行序列密碼加密算法,該加密算法用于將該函數(shù)處理的消息進行加密。該動態(tài)代碼也可生成附加到每條消息的消息摘要。該消息摘要可以是應(yīng)用于該動態(tài)代碼以及該消息(可選)的散列函數(shù)。通過向每個函數(shù)分配一個固定的終止時間或者可發(fā)送的消息的最大數(shù)量,或者如果該加密函數(shù)用于移動代理,則向它分配可訪問的主機的最大數(shù)量,通過這些方式可以給每個函數(shù)分配一個有限的生命期。在其生命期終止后收到的、由加密算法處理的任何消息都被忽略。
文檔編號H04L9/14GK1708944SQ200380102318
公開日2005年12月14日 申請日期2003年10月27日 優(yōu)先權(quán)日2002年10月28日
發(fā)明者格雷戈里·M·珀金斯, 賀志軍 申請人:松下電器產(chǎn)業(yè)株式會社