專利名稱:受托編譯中性結(jié)構(gòu)程序版本產(chǎn)生特定結(jié)構(gòu)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及一種分布式計算機系統(tǒng),特別涉及一種程序編譯系統(tǒng)(Program Compilation System)和方法,其中,由受托的第三方以如下方式對中性結(jié)構(gòu)可執(zhí)行程序進行編譯,所述的方式是指該所編程序的接受者能夠檢驗所述相應(yīng)中性結(jié)構(gòu)程序的同一性(identity)并能夠檢驗它由所述受托第三方(trusted third party)所編譯。
術(shù)語“結(jié)構(gòu)”被規(guī)定用于這個文件的目的意指一系列型號計算機(familyof computer models)的運行特性。不同的結(jié)構(gòu)例子是Macintosh計算機、使用DOS或Windows操作系統(tǒng)的IBM PC兼容計算機、運行Solaris操作系統(tǒng)的SUN微系統(tǒng)計算機和使用Unix操作系統(tǒng)的計算機系統(tǒng)。
術(shù)語“中性結(jié)構(gòu)”(architecture neutral)被規(guī)定用于這個文件的目的涉及到使用一些不同的計算機結(jié)構(gòu)在多種計算機平臺上執(zhí)行諸如用Java(SunMicrosystem公司的商標)語言編寫的程序等某些程序的能力。
術(shù)語“特定結(jié)構(gòu)”被規(guī)定用于這個文件的目的涉及到僅使用一個單一的計算機結(jié)構(gòu)在計算機平臺上執(zhí)行某些程序的請求。例如,用80486匯編程序語言編寫的目標代碼程序只能在使用IBM PC兼容計算機結(jié)構(gòu)的計算機(以及含有IBM PC兼容計算機仿真器的其它計算機)上執(zhí)行。
中性結(jié)構(gòu)程序(ANPrograms)的重要特性包括用所述中性結(jié)構(gòu)語言(ANLanguage)編寫的程序的結(jié)構(gòu)獨立性。例如,Java字節(jié)碼程序可以在具有Java字節(jié)碼解譯程序的任意一個計算機平臺上執(zhí)行。Java字節(jié)碼程序的另一個重要特性是在執(zhí)行以前利用Java字節(jié)碼檢驗器(verifier)可以直接檢驗它們的完整性。Java字節(jié)碼檢驗器確定所述的程序是否符合預(yù)定的完整性標準。這些標準包括操作數(shù)棧(operand stack)和數(shù)據(jù)類型使用限制,該使用限制保證Java字節(jié)碼程序不會在執(zhí)行計算機的操作數(shù)棧中上溢或下溢,并保證所有的程序指令僅利用已知數(shù)據(jù)類型的數(shù)據(jù)。其結(jié)果是Java字節(jié)碼程序不能夠建立目標指針,并且,通常不能訪問除用戶顯然已經(jīng)被授權(quán)允許使用的系統(tǒng)資源以外的系統(tǒng)資源。
遺憾的是,分布在ANLanguage中的可執(zhí)行程序使得所述ANProgram的運行效率要低于如果利用特定結(jié)構(gòu)性能時所能達到的效率。例如,由Java字節(jié)碼解譯程序執(zhí)行的Java字節(jié)碼程序的運行速度通常要比在相應(yīng)的特定結(jié)構(gòu)語言(ASLanguage)中編譯的等效特定結(jié)構(gòu)程序(ASProgram)慢2.5到5倍。在速度減少5倍被認為對于一個ANProgram執(zhí)行器(即,解譯程序)來講是不好的同時,它會在效率方面帶來足夠大的損失,所以某些用戶將需要或堅持要求按ASLanguage編譯的等效程序的能力使用。
編寫的編譯程序可將ANProgram編譯成等效ASProgram,但是,對于終端用戶來講,它們特別昂貴。另外,不能利用一個ANProgram完整性檢驗器根據(jù)編譯的ASProgram代碼來直接檢驗所述等效編譯的ASProgram的完整性。因此,在Java字節(jié)碼程序的情況下,將ANProgram編譯成等效ASProgram的這種使用可能導(dǎo)致ANLanguage的一種最重要特性的喪失。
但是,存在有某些合法的(或正當?shù)?任務(wù),這些任務(wù)可以利用完整性不可檢驗的ASProgram加以執(zhí)行,但不能利用完整性可檢驗的ANProgram加以執(zhí)行。這些任務(wù)包括其它違背設(shè)置在完整性可檢驗的ANProgram上的操作數(shù)棧和數(shù)據(jù)類型使用限制的任務(wù),另外,這種ASProgram能夠比ANProgram執(zhí)行得更快,其結(jié)果是就存在有為什么希望具有如下計算機系統(tǒng)的理由,這種計算機系統(tǒng)被設(shè)計成除了具有執(zhí)行完整性不可檢驗的ASProgram的能力以外,它主要用于執(zhí)行完整性可檢驗的ANProgram。
雖然通過第三者執(zhí)行ANProgram的編譯是可能的,但是,這種編譯需要將所述的第三者認證,就是說,必須可以對由特定受托的第三者編譯的ASProgram中的信息進行檢驗。最好,它還能夠確認編譯后的ASProgram是由一個特定受托編譯程序產(chǎn)生的,并且由于相對于預(yù)定完整性標準編譯后的ASProgram的完整性不能夠被直接檢驗,所以該編譯后的ASProgram應(yīng)當包括某種信息,這種信息可以用能檢驗的方式識別依據(jù)其進行編譯的相應(yīng)的ANProgram和對其進行編譯的ASLanguage。
因此,本發(fā)明的一個目的是提供一種ANProgram編譯程序和編譯方法,這種編譯方法使根據(jù)相應(yīng)的ANProgram所編譯的ASProgram的用戶能夠確認編譯該ANProgram的編譯者的同一性以及所述相應(yīng)的ANProgram的同一性和其中所編譯的ASProgram的ASLanguage語言。
本發(fā)明的另一個目的是提供一種ANProgram執(zhí)行器(executer)和一種執(zhí)行方法,這種方法是在防止調(diào)用其源、編譯信息和完整性不能檢驗的ASProgram的同時,允許正在執(zhí)行的、完整性可檢驗的ANProgram去調(diào)用受托的或具有可檢驗源和編譯信息的完整性不可檢驗的ASProgram,從而使得幾乎所有的合法任務(wù)都可以被執(zhí)行。
總之,本發(fā)明是一種計算機網(wǎng)絡(luò),該網(wǎng)絡(luò)包括一個程序編譯計算機和一個程序執(zhí)行計算機。
所述程序編譯計算機是由編譯方(compiling party)運行的,它包括一個存儲器,用于存儲由一個始發(fā)方(originating party)產(chǎn)生的中性結(jié)構(gòu)程序。所述中性結(jié)構(gòu)程序包含有中性結(jié)構(gòu)程序碼和所述始發(fā)方的一個數(shù)字署名(signature)。所述程序編譯計算機還包括一個署名檢驗器,該檢驗器檢驗所述始發(fā)方的數(shù)字署名,以驗證所述始發(fā)方的數(shù)字署名匹配與附加到中性結(jié)構(gòu)程序的署名(即是由其產(chǎn)生)。
所述程序編譯計算機還包括一個編譯程序,當驗證完所述始發(fā)方的數(shù)字署名時,該編譯程序按照由對信息編譯所識別的特定結(jié)構(gòu)語言,將該中性結(jié)構(gòu)程序碼編譯成特定結(jié)構(gòu)程序碼。該編譯程序使用一個署名發(fā)生器將一個所述編譯程序的數(shù)字署名附加到所述特定結(jié)構(gòu)程序碼上,其中,該編譯程序的署名標記一組信息,該信息包括所編譯的特定結(jié)構(gòu)程序碼加上位于所述中性結(jié)構(gòu)程序上的署名。在最佳實施例中,所述編譯程序使用上述署名發(fā)生器將所述編譯方的數(shù)字署名也附加到特定結(jié)構(gòu)程序碼上,其中,編譯方署名標記一組信息,該信息包括所編譯的特定結(jié)構(gòu)程序碼、位于中性結(jié)構(gòu)程序上的署名和該編譯程序署名。
所述程序執(zhí)行計算機由執(zhí)行方操作,它包括一個存儲器,用于存儲中性結(jié)構(gòu)和特定結(jié)構(gòu)程序。它還包括一個署名檢驗器,用于(A)檢驗處于中性結(jié)構(gòu)程序形式下的所述始發(fā)方的數(shù)字署名,和(B)檢驗處于特定結(jié)構(gòu)程序形式下的編譯程序的數(shù)字署名和/或檢驗處于特定結(jié)構(gòu)程序形式下的編譯方的數(shù)字署名。術(shù)語“檢驗一個署名”的意思是執(zhí)行一個過程以確定所述的署名與被所述署名標記的該組信息相匹配(即實際上是由其產(chǎn)生)。
所述程序執(zhí)行計算機還包括一個特定結(jié)構(gòu)程序執(zhí)行器,當處于所述特定結(jié)構(gòu)程序形式下的數(shù)字署名被驗證完畢時,該特定程序執(zhí)行器執(zhí)行所述特定結(jié)構(gòu)程序的特定結(jié)構(gòu)程序碼。
在最佳實施例中,在一個對象中表示了所述中性結(jié)構(gòu)程序,所述對象含有一個數(shù)字署名,該數(shù)字署名包括唯一與所述中性結(jié)構(gòu)程序相關(guān)的一個消息摘要。由所述編譯程序產(chǎn)生的該特定結(jié)構(gòu)程序包括·該編譯的、特定結(jié)構(gòu)碼;·由所述中性結(jié)構(gòu)程序的提供方標記的該相應(yīng)的中性結(jié)構(gòu)程序的數(shù)字署名;·編譯程序本身的數(shù)字署名,包括所編譯的程序的消息摘要和用于識別編譯該程序所使用的和利用編譯程序的專用加密密鑰標記的編譯程序的信息;和·執(zhí)行該編譯的受托方的數(shù)字署名,包括所編譯的程序的消息摘要和用于識別該受托方的信息和使用編譯方的專用加密密鑰標記的信息。
通常可以獲得的公用加密密鑰的受托儲存部分(repository),有時調(diào)用一個命名服務(wù),并保持該公用密鑰以用于該編譯程序和受托的編譯方。使用這些公用加密密鑰,該編譯程序的所有接受者都能夠?qū)幾g后的程序中的數(shù)字署名進行解密,以驗證所述的編譯程序是由指定的受托方編譯以及是由指定的編譯程序編譯,并且,檢驗相應(yīng)的中性結(jié)構(gòu)程序的同一性。作為選擇,所編程序的接受者能夠使用一個程序檢驗器在執(zhí)行所編譯的特定結(jié)構(gòu)程序之前去檢驗相應(yīng)的中性結(jié)構(gòu)程序的正確運行。
本發(fā)明的其它目的和特征通過下述結(jié)合附圖的詳細描述及所附權(quán)利要求將變得更清楚。
圖1是本發(fā)明最佳實施例中的一個分布計算機系統(tǒng)方框圖;圖2是根據(jù)本發(fā)明最佳實施例的一個中性結(jié)構(gòu)程序的結(jié)構(gòu);圖3是根據(jù)本發(fā)明最佳實施例產(chǎn)生的一個編譯的、特定結(jié)構(gòu)程序結(jié)構(gòu);圖4是根據(jù)本發(fā)明一個最佳實施例的一個對象和相關(guān)的對象分類。
參看圖1,這里示出了一計算機網(wǎng)絡(luò)100,它包括很多客戶計算機102、服務(wù)計算機104和受托密鑰儲存部分106。經(jīng)過網(wǎng)絡(luò)通信連接器108,客戶計算機102彼此相連并與服務(wù)計算機104和受托密鑰儲存部分106相互連接。所述網(wǎng)絡(luò)通信連接器可以是一個局部或廣域網(wǎng)絡(luò)、互聯(lián)網(wǎng)絡(luò)、這些網(wǎng)絡(luò)的結(jié)合或某些其它類型的網(wǎng)絡(luò)通信連接器。
雖然大多數(shù)客戶計算機102是諸如Sun工作站、IBm兼容計算機、Macintosh計算機等桌面計算機,但是實際上任何類型的計算機都可作一客戶計算機。這些客戶計算機中的每一個都包括一個CPU110,一個用戶接口112,一個存儲器114和一個網(wǎng)絡(luò)通信接口116。所述網(wǎng)絡(luò)通信接口允許多個客戶計算機彼此間以及與服務(wù)計算機104和與受托密鑰儲存部分108之間經(jīng)過網(wǎng)絡(luò)通信連接器106相互通信。
每個客戶計算機102的存儲器114存儲有一個操作系統(tǒng)118,一個網(wǎng)絡(luò)通信管理器120,一個ANProgram(中性結(jié)構(gòu)程序)執(zhí)行器122,一個ASProgram(特定結(jié)構(gòu)程序)執(zhí)行器124,和一個ANProgram完整性檢驗器126,一個ANProgram編譯制備器128,一個署名發(fā)生器130,一個署名檢驗器132,一個編譯信息(Complnfo)檢驗器134,一個對象分類加載器136,一個用戶地址空間138,一個受托對象分類儲存部分140,一個未受托對象分類儲存部分142和一個已知的受托編譯方和受托編譯程序的表144。所述操作系統(tǒng)運行在CPU110上,并響應(yīng)由一用戶通過所述用戶接口112發(fā)出的命令而控制和協(xié)調(diào)在所述CPU上運行的程序120-136。
每個客戶計算機102的ANProgram執(zhí)行器122執(zhí)行存儲在所述受托和未受托對象分類儲存部分140和142內(nèi)所述對象分類中的ANProgram。并且所述ANProgram按照一個ANLanguage編寫,對于這個ANLanguage,用戶可建立諸如堆棧和數(shù)據(jù)使用限制的預(yù)定完整性標準,從而使得該ANProgram不執(zhí)行非法的任務(wù)。因此,在執(zhí)行之前,通過確定該程序是否滿足所述預(yù)定完整性標準,ANProgram完整性檢驗器126可以直接驗證所述ANProgram的完整性。因此,這個ANProgram被認為是完整性可檢驗的ANProgram。
在最佳實施例中,所述完整性可檢驗的ANProgram由所述Java字節(jié)碼語言編寫。并且,ANProgram執(zhí)行器122和ANProgram檢驗器124分別是Java字節(jié)碼程序解譯器和Java字節(jié)碼程序檢驗器,它們分別被用于執(zhí)行和檢驗所述的Java字節(jié)碼程序。所述Java字節(jié)碼檢驗器和解譯器是由SunMicrosystem公司生產(chǎn)的。
但是,每個客戶計算機102都具有一個相關(guān)的特定結(jié)構(gòu),對于這個結(jié)構(gòu),許多程序可以按相應(yīng)的ASLanguage編寫并由所述ASProgram執(zhí)行器122執(zhí)行。所述ASLanguage不需要按ASLanguage編寫的ASProgram滿足ANLanguage的預(yù)定完整性標準。其結(jié)果是所述ASProgram能夠執(zhí)行某些任務(wù),而這些任務(wù)不能夠由所述ANProgram執(zhí)行由于其沒有被裝載而受到所述ANLanguage的預(yù)定完整性標準所設(shè)置的限制。但是,遺憾的是這也意味著它們的完整性不能夠利用所述ANProgram完整性檢驗器126直接進行檢驗,并因此被認為完整性不可檢驗。
盡管如此,如前面所指出的,ANProgram運行的效率要低于按ASLanguage編譯的同一程序。因此考慮到與用戶的客戶計算機相關(guān)的ASLanguage,客戶計算機102的用戶可以希望具有一個由服務(wù)計算機(servercomputer)104編譯的ANProgram,以使所編譯的ASProgram能夠在那里被ASProgram執(zhí)行器124執(zhí)行,或者,如果利用其它客戶計算機的ASProgram執(zhí)行器124分布和執(zhí)行此編譯的ASProgram,那么用戶可以希望具有考慮到與其它客戶計算機相關(guān)的ASLanguage編譯的ANProgram。
制備一個用于編譯的中性結(jié)構(gòu)程序(ANProgram)參看圖1和2,當一個始發(fā)方(OrigParty)希望具有一個由所述服務(wù)計算機104編譯的ANProgram200時,OrigParty利用用戶接口112發(fā)出一個命令以對所述ANProgram編譯制備器128提出一個請求并指令它制備用于編譯的ANProgram。該ANProgram可以位于包含在受托或未受托對象分類儲存部分140或142的其中之一內(nèi)的一個對象分類中。表1包含有由ANProgram編譯制備器128使用的該過程的偽代碼表示,用于制備由服務(wù)計算機104編譯的ANProgram。表1-3中使用的偽代碼采用通用計算機語言規(guī)范。這里使用偽代碼的主要目的是用于敘述,同時,它可以很容易被本專業(yè)技術(shù)領(lǐng)域內(nèi)的計算機程序編制人員所理解。
參看圖1和圖2以及表1,所述ANProgram編譯制備器128首先調(diào)用所述ANProgram完整性檢驗器126并指令它檢驗ANProgram200的ANProgram代碼202的完整性。做這項工作的目的在于確認在將其傳送給服務(wù)計算機104進行編譯之前,ANProgram碼滿足所述ANLanguage的預(yù)定完整性標準。如果所述ANProgram碼不滿足預(yù)定的完整性標準,那么,所述ANProgram完整性檢驗器將一失效結(jié)果送回ANProgram編譯制備器。作為響應(yīng),所述ANProgram編譯制備器中止編譯制備過程并產(chǎn)生一個適當?shù)南⒁灾甘驹摖顟B(tài)。
但是,如果該ANProgram碼202滿足所述預(yù)定的完整性標準,那么,ANProgram完整性檢驗器126將一個通過的結(jié)果回送給ANProgram編譯制備器128。該ANProgram編譯制備器然后調(diào)用署名發(fā)生器130并指令它產(chǎn)生origParty的數(shù)字署名(DigitalSignatureop)210,該署名210可以被檢驗以保證所述ANProgram200由受托的OrigParty產(chǎn)生。署名發(fā)生器通過首先產(chǎn)生所述ANProgram碼202的消息摘要(MDOP)212產(chǎn)生所述的DigitalSignatureOP。這是通過在ANProgram碼的數(shù)據(jù)比特上計算一個散列函數(shù)、即HashFunctionOP而進行的。所使用的該散列函數(shù)可以是一個預(yù)定的散列函數(shù),也可以是由所述OrigParty選擇的一個散列函數(shù)。本文為描述的目的,該HashFunctionOP對應(yīng)于所述OrigParty,由于它用于所述OrigParty的DigitalSignatureOP。
然后,署名發(fā)生器130利用OrigParty的專用加密密鑰(OrigPartysPrivatekey)加密所產(chǎn)生的消息摘要(MDOP)212和HashFunctionOP(HashFunctionOPID)214的該ID。然后,該署名發(fā)生器將所述OrigParty的ID216加到位于加密項212和214末端處明文(clear text)中,以形成所述DigitalSignatureOP。OrigParty的專用密鑰和ID由具有用戶接口112的OrigParty提供。
在產(chǎn)生DigitalSignatureOP210以后,所述ANProgram編譯制備器128將它附加到ANProgram碼202上。然后,ANProgram編譯制備器產(chǎn)生一個已經(jīng)制備的所述服務(wù)計算機104用于編譯的ANProgram 200的消息。
然后,OrigParty利用用戶接口112向網(wǎng)絡(luò)通信管理器120發(fā)出一個命令,以便將所述的ANProgram200和一些變元(argument)一起傳送給服務(wù)計算機104,這些變元說明將被編譯該程序的特定結(jié)構(gòu)語言(ASLanguage ID)和所使用的編譯程序(Compiler ID)。該網(wǎng)絡(luò)通信管理器從配置有受托或未受托的對象分類儲存部分140或142中提取所述ANProgram,并將它提供給網(wǎng)絡(luò)通信接口116。然后,該網(wǎng)絡(luò)通信管得器指令網(wǎng)絡(luò)通信接口將ANProgram和所述特定變元一起傳送給服務(wù)計算機。
編譯一個中性結(jié)構(gòu)程序然后,服務(wù)計算機104接收被傳送的ANProgram200。該服務(wù)計算機包括CPU150,用戶接口152,存儲器154和網(wǎng)絡(luò)通信接口156。該網(wǎng)絡(luò)通信接口允許該服務(wù)計算機經(jīng)過網(wǎng)絡(luò)通信連接器108與客戶計算機102和受托密鑰儲存部分106進行通信。
服務(wù)計算機104的存儲器154存儲一個操作系統(tǒng)158,一個網(wǎng)絡(luò)通信管理器160,一個ANProgram編譯程序162,一個署名檢驗器164,一個ANProgram完整性檢驗器166,一個署名發(fā)生器168,一個ANProgram儲存部分(repository)170和一個ASProgram儲存部分(repository)172。操作系統(tǒng)在CPU150上運行,并響應(yīng)編譯方(CompParty)利用用戶接口152發(fā)出的命令控制和協(xié)調(diào)在CPU上運行的程序160-168。
該網(wǎng)絡(luò)通信接口156接收該ANProgram200并將已發(fā)生的該情況指示給網(wǎng)絡(luò)通信管理器160。作為響應(yīng),該網(wǎng)絡(luò)通信管理器將所接收的ANProgram放置入ANProgram儲存部分170中。如果所述服務(wù)器104被設(shè)置成自動編譯程序服務(wù)器,那么,通過網(wǎng)絡(luò)通信管理器160自動執(zhí)行編譯。反之,當該CompParty利用所述用戶接口發(fā)出一個命令時,所述網(wǎng)絡(luò)通信管理器將所述ANProgram移入儲存部分170。
然后,或是自動地、或是根據(jù)該CompParty利用所述用戶接口252發(fā)出的命令,該ANProgram編譯程序162被請求對ANProgram200進行編譯。表2包含有該ANProgram編譯程序?qū)λ鯝NProgram進行編譯所使用的編譯過程偽碼表示。
參看圖1-2和表2,該ANProgram編譯程序162首先調(diào)用該署名檢驗器164去檢驗在所接收的ANProgram200中的DigitalSignatuyeOP210,從而建立如下狀態(tài),即所述DigitalSignatuyeOP210實際上是始發(fā)方用于該ANProgram的署名(例如,與在所述ANProgram某些其它版本上的OrigParty署名或偽造的署名相對照)。特別是,該署名檢驗器使用在所接收ANProgram中的明文Orig Party的ID216以便從受托密鑰儲存部分106中獲得所述OrigParty的公用密鑰。然后,該署名檢驗器使用所述OrigParty的公用加密密鑰(OrigParty’s publickey)對在DigitalSignatuyeOP中的被加密的MDOP212和HashFuctionOPID214進行解密。
接著,該署名檢驗器164根據(jù)所接收的ANProgram200的ANProgram碼202計算相應(yīng)的Hahs FuctionOP而產(chǎn)生一個測試消息摘要(TestMDOP),該測試消息摘要應(yīng)當與被解密的MDOP相匹配。解密的DigitalSignatuyeOP中的HashFuctionOPID214用于識別所使用的適當?shù)腍ashFuctionOP。然后,將解密的MDOP和所產(chǎn)生的TestMDOP進行比較以檢驗所述的DigitalSignatuyeOP210。
如果MDOP212和TestMDOP不相匹配,那么,該署名檢驗器162回送一個失效結(jié)果給該ANProgram編譯程序162。作為響應(yīng),該ANProgram編譯程序中止編譯過程并產(chǎn)生一個適當?shù)南ⅰ?br>
另一方面,如果MDOP212和TestMDOP相匹配,那么,署名檢驗器回送一個通過結(jié)果給ANProgram編譯程序162,并且所述ANProgram編譯程序162調(diào)用ANProgram完整性檢驗器166。它指令所述ANProgram完整性檢驗器去檢驗所接收ANProgram200的ANProgram碼202的完整性。與在前面討論的制備用于編譯的ANProgram部分相比,其執(zhí)行的方式相同并具有相同的目的。因此,如果ANProgram碼不滿足所述預(yù)定完整性標準,那么,ANProgram完整性檢驗器就要回送一個失效結(jié)果給ANProgram編譯程序。作為響應(yīng),所述ANProgram編譯程序中止編譯過程并產(chǎn)生一個指示該狀態(tài)的適當消息。
但是,如果所接收ANProgram200的ANProgram碼202滿足了所述的預(yù)定完整性標準,那么,ANProgram完整性檢驗器166回送一個通過結(jié)果給ANProgram編譯程序162。編譯程序162然后將ANProgram碼編譯成利用由所述OrigParty指定的ASLanguage ID識別的ASLanguage。參看圖1-3和表2,所述編譯程序?qū)NProgram碼202,DigitalSignatureOP210和編譯后的ASProgram碼302放置入ASProgram300,該ASProgram300被存儲在ASProgram儲存部分172中。
ANProgram編譯程序162然后調(diào)用署名發(fā)生器168并指令它產(chǎn)生ANProgram編譯程序的數(shù)字署名(DigitalSignatureC)320,該數(shù)字署名320可以被檢驗以保證所述ASProgram300由受托的ANProgram編譯程序編譯。它的執(zhí)行方式類似于前面描述的有關(guān)產(chǎn)生DigitalSignatureOP的執(zhí)行方式。但是,在這種情況下,所標記的一組信息是ASProgram碼和DigitalSignatureOP。具有相應(yīng)HashFunctionCID234的其它預(yù)定散列函數(shù)可以被用于產(chǎn)生將由DigialSidnatureC標記的該組信息的消息摘要MDC322,ANProgram編譯程序的專用加密密鑰(編譯程序的專用密鑰)被用于加密所述MDC和HashFunctionCID,ANProgram編譯程序的識別符(編譯程序的ID)被加到位于被加密的MDC和HashFurctionC末端處的明文中。所述編譯程序的專用密鑰和ID由ANProgram編譯程序提供。
ANProgram編譯程序162第二次調(diào)用署名發(fā)生器168以產(chǎn)生CompParty的數(shù)字署名(DigialSignatureCP)312,該數(shù)字署名312可以被終端用戶(end user)檢驗以保證所述ASProgram300由受托的CompParty產(chǎn)生。關(guān)于這一點的執(zhí)行方式類似于前面所述的關(guān)于(在制備用于編譯的ANProgram的討論中)產(chǎn)生DigitalSignatureOP的方式。但是,這里為DigialSignatureCP產(chǎn)生的消息摘要(MDCP)314是通過在ASProgram碼、DigitalSignatureOP和DigitalSignatureC的數(shù)據(jù)比特的基礎(chǔ)上計算一個預(yù)定的或所選擇的散列函數(shù)(HashFunctionCP)產(chǎn)生的。與所述HashFunctionOP類似,為該文件敘述的目的,HashFunctionCP對應(yīng)于所述CompParty,由于它被用于CompoParty的DigitalSignatureCP。
然后,署名發(fā)生器168利用CompParty的專用加密密鑰(CompParty的專用密鑰)加密所述MDCP314和HashFanctionCP的ID(HashFunctionCPID)316。然后,署名發(fā)生器將CompParty的識別符(CompParty的ID)318加到位于被加密項314和316末端處明文中以形成DigitalSignatureCP312。CompParty的專用密鑰和ID是由CompParty利用所述用戶接口152提供的。
在產(chǎn)生DigitalSignatureC320和DigitalSignatureCP312以后,ANProgram編譯程序162將它們附加到ASProgram碼302上,從而使在所產(chǎn)生的編譯的ASProgram文件或?qū)ο笾芯哂邢率龀煞諥NProgram碼,DigitalSignatureOP,ASProgram碼,DigitalSignatureC,和DigitalSignatureCP。然后,該ANProgram編譯程序產(chǎn)生一個消息,該消息表示ANProgram200已經(jīng)被編譯成ASProgram300,并已經(jīng)準備傳送給所述OrigParty。
CompParty然后使用網(wǎng)絡(luò)通信管理器160將ASProgram300傳送給OrigParty的客戶計算機102。網(wǎng)絡(luò)通信管理器是通過從其中設(shè)置有ASProgram的ASProgram儲存部分172中提取所述ASProgram的并將它提供給所述網(wǎng)絡(luò)通信接口156而作到這一點的。然后,網(wǎng)絡(luò)通信管理器指令所述網(wǎng)絡(luò)通信接口將所述ASProgram傳送給OrigParty的客戶計算機。
對象和對象分類的建立和分布然后,所傳送的ASProgram300由OrigParty客戶計算機的通信接口116接收并將該發(fā)生的情況指示給網(wǎng)絡(luò)通信管理器120。作為響應(yīng),OrigParty利用用戶接口252發(fā)出一個命令,以命令從網(wǎng)絡(luò)通信接口中提取接收的ASProgram,從而使得網(wǎng)絡(luò)通信管理器將所接收的ASProgram放置入所述OrigParty客戶計算機的未受托對象分類儲存部分142中。一旦做了這件事情,OrigParty可以將所接收的ASProgram作為僅具有一種方法的新對象分類(例如編譯程序的代碼)進行處理,或者它可以建立一個對象分類,該對象分類包括ASProgram300以及其它的ANProgram和ASProgram。
圖4示出了根據(jù)本發(fā)明的一個典型的對象分類400。該對象分類可以包括一個或多個ASProgram402和/或一個或多個ANProgram404,以及一個虛擬函數(shù)表410。對于每個ASProgram來講,所述虛擬函數(shù)表包含著指示一個不是用ANLanguage編寫的ASProgram(即本機程序)的相應(yīng)的識別符(identifier(native_ASProgram ID))412并包含一個到本機程序的相應(yīng)指針(Ptr)414。類似的,對于每個ANProgram來講,虛擬函數(shù)表包含一個相應(yīng)的識別符(AN-Program ID)416和一個到所述ANProgram的相應(yīng)指針418。這個對象分類的每個對象420包括一個指向?qū)ο蠓诸?00的對象標題422。
因此,OrigParty可以利用ASProgram300建立對象420和對象分類400,所述ASProgram300從服務(wù)計算機104中被接收而作為所述對象分類內(nèi)多個ASProgram402中的一個。
當所述OrigParty希望將一個對象和包括ASProgram300和ANProgram在內(nèi)的對象分類分布給各個ExecuteParty(執(zhí)行方)時,OrigParty利用用戶接口112發(fā)出一個命令,以指令所述網(wǎng)絡(luò)通信管理器將這些項(items)傳送給ExecutePartys的客戶計算機102。網(wǎng)絡(luò)通信管理器通過從其中設(shè)置有這些項的未受托對象分類儲存部分142中提取它們、并利用適當?shù)膫魉椭噶顚⑺鼈兲峁┙o網(wǎng)絡(luò)通信接口116而做這項工作。另外,OrigParty的網(wǎng)絡(luò)通信管理器可以響應(yīng)由一個ExecuteParty啟動的請求,以對指定的對象分類400進行復(fù)制。
在對象分類中的中性結(jié)構(gòu)程序和特定結(jié)構(gòu)程序的執(zhí)行客戶計算機102的網(wǎng)絡(luò)通信接口156接收所傳送的對象和對象分類并將已發(fā)生的狀態(tài)指示給網(wǎng)絡(luò)通信接口160。作為響應(yīng),ExecuteParty利用用戶接口112發(fā)出一個命令,該命令指令所述網(wǎng)絡(luò)通信管理器提取從網(wǎng)絡(luò)通信接口所接收的對象和對象分類。然后,網(wǎng)絡(luò)通信管理器將所接收的對象和對象分類存儲到未受托對象分類儲存部分142中。
每個客戶計算機102的未受托對象分類儲存部分142包含有多個未受托的對象和與其有關(guān)的多個對象分類。當根據(jù)適當?shù)腁NProgram進行編譯時,由于它們所包括的任意的ANProgram都還不具有已經(jīng)過檢驗的其完整性和它們所包括的任意的ASProgram還都不具有已經(jīng)過檢驗或還沒有經(jīng)過檢驗的其源,所以,這些對象分類不是受托的。
每個客戶計算機的受托對象分類儲存部分140包含有多個受托對象和其多個對象分類。由于它們所包括的任意ANProgram已經(jīng)可具有經(jīng)過ANProgram完整性檢驗器166檢驗過的其完整性和它們所包括的任意ASProgram已經(jīng)被確定為是值得信賴的,所以,這些對象分類是受托的。實際上,由于這些對象分類是受托的,因此就沒有理由在這些對象分類的所述方法上執(zhí)行完整性檢查,所以,在受托對象分類儲存部分140中的某些或全部對象分類并不需要具有數(shù)字署名。
下面這一點是希望的,即如前面所建議的,一個對象分類主要包括ANProgram,但還可以包括ASProgram,從而使得利用所述對象分類基本上可以執(zhí)行所有的合法任務(wù)如上述所建議的。因此,ANProgram執(zhí)行器122能夠執(zhí)行完整性可檢驗的ANProgram并能調(diào)用ASProgram執(zhí)行器去執(zhí)行完整性不可檢驗的ASProgram,所述完整性不可檢驗的ASProgram位于(1)在受托對象分類儲存部分140內(nèi)的受托對象分類中,或(2)在未受托對象分類儲存部分142內(nèi)的未受托對象分類中并具有可檢驗的DigitalSignatureOP、DigitalSignatureCP和DigitalSignatureC信息,從而,基本上可以執(zhí)行所有的合法任務(wù)。在這種方式下,不具有DigitalSignatureOP、DigitalSignatureCP和DigitalSignatureC信息或它們的數(shù)字署名不能夠被檢驗的未受托對象分類的ASProgram將被避免執(zhí)行。表3包含有由所述ANProgram執(zhí)行器使用的執(zhí)行過程的偽碼表示。
參看圖1-4和表3,在一個ExecuteParty(例如,OrigParty或另外的一方)的客戶計算機102上,ANProgram執(zhí)行器124處于正在執(zhí)行ANProgram中試圖調(diào)用一個特定對象分類的方法。所述方法調(diào)用最初是由對象分類加載器136處理的,它確定所述對象分類是否已經(jīng)被裝載。如果所述對象分類已經(jīng)被裝載到ExecuteParty的用戶地址空間138中,那么,假如所調(diào)用的方法是一個ANProgram,則ANProgram執(zhí)行器122執(zhí)行所調(diào)用的方法,假如所調(diào)用的方法是一個ASProgram,則ASProgram執(zhí)行器124執(zhí)行所調(diào)用的方法。
但是,如果所述對象分類還沒有被裝入到ExecuteParty的地址空間138中,那么,對象分類加載器136就要將所述對象分類裝入到ExecuterParty的地址空間中并確定所調(diào)用的方法是否被允許執(zhí)行。例如,如果所述對象分類是從受托對象分類儲存部分140裝入的,那么,所調(diào)用的方法被允許執(zhí)行,并調(diào)用所述Execute過程。如果所調(diào)用的方法是一個ANProgram,Execute過程(見表3)調(diào)用所述ANProgram執(zhí)行器去執(zhí)行所調(diào)用的方法。反之,則調(diào)用ASProgram執(zhí)行器124去執(zhí)行所調(diào)用的方。
但是,如果所述對象分類是從未受托的對象分類儲存部分142裝入的,那么,分類加載器136檢查所述對象的對象標題以確定它的對象分類是否還包括任意的ASProgram。這是通過確定在該對象的虛擬函數(shù)表中是否存在任意native ASProgram ID進行的。
如果在所述對象分類中不存在ASProgram,那么,分類加載器136調(diào)用ANProgram完整性檢驗器166去檢驗在該對象分類中ANProgram的完整性。其執(zhí)行方式和目的與前面所述檢驗ANProgram 200(在討論對ANProgram進行編譯的部分中)所使用的方式和目的相類似。因此,如果多個ANProgram中任意一個的完整性沒有被檢驗,那么,ANProgram完整性檢驗器將回送一個失效結(jié)果給所述分類加載器,并且,所述分類加載器中止分類裝載過程并產(chǎn)生一個適當?shù)南⒁灾甘驹摖顟B(tài)。但是,如果ANProgram完整性檢驗器回送一個表示該對象分類的所有ANProgram都已經(jīng)被檢驗通過的結(jié)果(passedresult)時,那么,分類加載器能執(zhí)行所調(diào)用的方法。
如果在所述對象分類中存在有任意一個ASProgram,那么,分類加載器136調(diào)用署名檢驗器132去檢驗編譯程序DigitalSignatureC和CompParty的署名DigitalSignatureCP。如果ASPrograms中的任意一個不包括DigitalSignatureCP和DigitalSignatureC,那么,ASProgram源的完整性不能被檢驗,因此,署名驗證器回送一個失效結(jié)果給ANProgram執(zhí)行器。作為響應(yīng),分類加載器中止對象分類裝載過程并產(chǎn)生一個適當?shù)南⒅该靼l(fā)生了該狀態(tài)。
另外,如果在所述對象分類中的所有ASPrograms都包括DigitalSignatureCPDigitalSignatureC,那么,將在這兩個數(shù)字署名中所指出的CompParty和Ciompiler(編譯程序)的同一性與已知的表144(見圖1)。受托的Compiler Parties與受托的Compilers(編譯程序)進行比較。如果在由CompParty或Compiler編譯的對象分類中的ASProgram內(nèi)的任意一個ASProgram都不包括在已知的、受托的Compiler Parties和受托的Comiler設(shè)定中,那么,分類裝載過程被中止,借此以阻止所調(diào)用方法的執(zhí)行。類似的,如果在ASProgram中的任意一個ASProgram內(nèi)識別的ASLanguage與由ASProgram執(zhí)行器124使用的ASLanguage不匹配,那么,分類裝載過程被中止。
但是,如果在該對象分類中的所有ASPrograms都包括DigitalSignatureCP和DigitalSignatureC,和用于所有ASPrograms的、被識別的CompParty和Compiler是受托的Compiler Parties和Compilers,并且,由所有ASProgram使用的ASLanguage是由ASProgram執(zhí)行器使用的語言,那么,署名檢驗器以與前面所述(在有關(guān)對ANProgram200進行編譯的討論部分中)用于檢驗DigitalSignatureOP的類似方式檢驗這些署名。但是,在這種情況下,所述Compiler和CompParty的公用密鑰是從受托密鑰儲存部分106中提取的,并被分別用于對在DigitalSignatureC中的MDC和HashFunctionCID和在DigitalSignatureCP中的MDCP和HashFunctionCPID進行解密。另外,與解密的MDCP和MDC相應(yīng)的測試消息摘要(TestMDC和TestMDCP)是通過計算散列碼產(chǎn)生,其是在ASProgram碼數(shù)據(jù)比特上加TesMDC的DigitalSignatureOP和在相同數(shù)據(jù)比特上加TestMDCP的DigitalSignatureC,分別根據(jù)由解密的HashFunctionCID和HashFunctionCPID所識別的HashFunctionC和HashFunctionCP而計算的。
如果用于每個ASProgram的DigitalSignatureC和/或DigitalSignatureCP沒有被驗證(即MDC≠TestMDC和/或MDCP≠TestMDCP),那么,署名檢驗器132回送一個失效結(jié)果給分類加載器136,作為響應(yīng),分類加載器中止分類裝載過程并產(chǎn)生一個適當?shù)南⒁灾甘驹摖顟B(tài)已經(jīng)發(fā)生。
但是,如果用于每個ASProgram的DigitalSignatureC和DigitalSignatureCP都已經(jīng)被驗證(即MDC=TestMDC和MDCP=TestMDCP),那么,ASProgram執(zhí)行器124再一次調(diào)用署名檢驗器132去檢驗用于ANProgram的所述OrigParty(Digin SignatoreCP)的署名,所述ASProgram是根據(jù)所述ANProgram進行編譯的。為了檢驗OrigParty的數(shù)字署名,每個DigitalSignatureOP都是以與前面有關(guān)對ANProgram200進行編譯的討論中所涉及的相同方式檢驗的。
如果,作為ASProgram編譯基礎(chǔ)的ANProgram中每一個DigitalSignatureOP被驗證,那么,分類加載器調(diào)用ANProgram完整性檢驗器去檢驗在所述對象分類中每個ANProgram的完整性和作為ASProgram編譯基礎(chǔ)的ANProgram的完整性。其執(zhí)行方式與前述相同。如果這些ANPrograms中任意一個ANProgram的完整性沒有被驗證,那么,ANProgram完整性檢驗器將回送一個失效結(jié)果給分類加載器,該分類裝載器將中止分類裝載過程并產(chǎn)生一個適當?shù)南ⅰ?br>
但是,如果這些ANrograms中的每一個ANProgram的完整性都已經(jīng)被驗證,那么,ANProgram完整性檢驗器126將回送一個通過的結(jié)果給分類加載器136。作為響應(yīng),該分類加載器將請求ANProgram執(zhí)行器或ASProgram執(zhí)行器在適當?shù)臅r候去執(zhí)行所調(diào)用的方法。
從前述可看出,ExecuterParty被保證只有在具有其數(shù)字署名可以被檢驗的完整性可驗證的ANProgram和ASProgram的未受托儲存部分142中的那些未受托對象分類將被裝入并具有它們執(zhí)行的程序。
另外的實施例上述討論的本發(fā)明的某些特征是可以選擇的。因此,本專業(yè)技術(shù)領(lǐng)域內(nèi)的技術(shù)人員可以認識到存在有某些未包括這些特性的另外一些實施例。
例如,已經(jīng)描述了作為分別對CompParty和ANProgram編譯程序產(chǎn)生的DigitalSignatureCP和DigitalSignatureC的ANProgram編譯程序。但是,所述ANProgram編譯程序能夠被簡單的構(gòu)成以產(chǎn)生這些數(shù)字署名中的一個署名,該署名為了能對ANProgram進行編譯的編譯程序進行驗證或?qū)幾g方(compiling party)進行驗證。
類似的,已經(jīng)描述了作為用于請求對DigitalSignatureCP和DigitalSignatureC進行檢驗的程序執(zhí)行器。但是,所述的程序執(zhí)行器能夠被構(gòu)成僅請求對這些數(shù)字署名中的一個進行檢驗,并且,如果正在被檢驗的ASProgram包括它的話,應(yīng)當對另一個的數(shù)字署名進行可選擇的檢驗。再有,在假設(shè)的基礎(chǔ)上即在假設(shè)所述編譯方是受托的并且該編譯方的一項工作就是在執(zhí)行所述編譯之前去檢驗編譯成ASProgram的每一個ANProgram的完整性的基礎(chǔ)上,所述程序執(zhí)行器能夠被構(gòu)成跳過檢驗與每一個ASProgram相對應(yīng)的ANProgram的完整性的步驟。
當Executer Party是所述Orig Party時,Executer Party知道,它實際上是將ANProgram200傳送給Comp Party的服務(wù)計算機104以便將其編譯成ASProgram300。在這種情況下,分類加載器136能夠被結(jié)構(gòu)成不調(diào)用署名檢驗器去檢驗在ANProgram中的DigitalSignatureOP。而是使得所述ExecuterParty能夠簡單地將在ANProgram的局部復(fù)制中的DigitalSignatureOP和在編譯后ASProgram中的DigitalSignatureOP加以比較。另外,由于在被傳送給所述編譯服務(wù)計算機之前的編譯過程準備期間已經(jīng)檢查了ANProgram的完整性,所以,所述分類加載器能夠被結(jié)構(gòu)成不調(diào)用ANProgram完整性檢驗器去檢驗對應(yīng)于所調(diào)用ASProgram的ANProgram的完整性。另外,由于所述ANProgram的完整性已經(jīng)利用所述編譯程序在執(zhí)行相應(yīng)ASProgram之前由所述分類加載器調(diào)用所述ANProgram完整性檢驗器進行了檢查,所以,ANProgram編譯準備器128能夠被構(gòu)成在制備編譯過程期間不調(diào)用所述ANProgram完整性檢驗器。
在結(jié)合本發(fā)明幾個特殊實施例對本發(fā)明進行描述的同時,應(yīng)指出這些描述僅僅是為了對本發(fā)明進行的說明,并不是對本發(fā)明的限制。本專業(yè)技術(shù)領(lǐng)域內(nèi)的普通技術(shù)人員可以在不脫離本發(fā)明權(quán)利要求限定的本發(fā)明的構(gòu)思和范圍的前提下作出許多修改。
表1制備用于編譯中性結(jié)構(gòu)程序方法的偽代碼表示<pre listing-type="program-listing"><![CDATA[ProcedurePrepare for Compiling (ANProgram code,OrigParty’s PrivateKey,and OrigParty’s ID) { Verify integrity of ANProgram with ANProgram integrity verifier If failed result {abort and generate failed result message} Generate MDOP=HashFunctionOP(ANProgram code) Generate DigitalSignatureOP=Encrypt(MDOP+HashFunctionOP ID,OrigParty’s PrivateKey)+ClearText(OrigParty’s ID) Append DigitalSignatureOP to ANProgram code Generate message that ANProgram is prepared for compiling Return }]]></pre>
表2編譯ANProgram和產(chǎn)生ASProgram方法的偽碼表示<pre listing-type="program-listing"><![CDATA[ProcedureCompile(ANProgram,CompParty’s ID,ASLanguageID,CompParty’s PrivateKey,Compiler’s ID,and Compiler’s PrivateKey) { Retrieve OrigParty’s PublicKey from trusted key repository using ClearText OrigParty’s ID in DigitalSignatureOP Decrypt(MDOP+HashFunctionOP ID in DigitalSignatureOP, OrigParty’s PublicKey) Generate TestMDOP=HashFunctionOP(ANProgram code)using HashFunctionOP identified by decrypted HashFunctionOP ID Compare decrypted MDOP and TestMDOP If decrypted MDOP≠TestMDOP { /* DigitalSignatureOP of OrigParty not verified */ Generate failed result message } Else { /* DigitalSignatureOP of OrigParty has been verified */ Verify integrity of ANProgram with ANProgram integrity verifier If failed result { abort and generate failed result message } Else { /*ANProgram has been verified */ Compile ANProgram code into ASLanguage identified by ASLanguage ID to generate ASProgram code Generate MDC=HashFunctionCS(ASProgram code+ DigitalSignatureOP) Generate DigitalSignatureC=Encrypt(MDC+HashFunctionC ID, ANProgrom Compiler’s PrivateKey)+ClearText ANProgram Compiler’s ID Generate MDCP=HashFunctionCP(ASProgram code+ DigitalSignatureOP+DigitalSignatureC) Generate DigitalSignatureCP=Encrypt(MDCP+HashFunctionCP ID,CompParty’s PrivateKey)+ClearText CompParty’s IDGenerate and Return File or Object containing ANProgram Code, DigitalSignatureOP, ASProgram Code, DigitalSignatureC,and DigitalSignatureCP /* ASProgram has been compiled and generated */ } }}]]></pre>
表3執(zhí)行ASProgram方法的偽碼表示<pre listing-type="program-listing"><![CDATA[ProcedureExecute (ObjectClass,Program) { If the Program is averifiable program {Execute Program using the Bytecode Interpreter} Else {Execute Program using the compiled program executer} }ProcedureClassLoad(ObjectClass,Program) { If Object Class has already been loaded into ExecuterParty’s address space { Call Execute(ObjectClass,Program) Return } /* The Object Class has not been loaded */ Load Object Class into ExecuterParty’s address space If Object Class was loaded from Trusted Object Class Repository { Call Execute(ObjectClass,Program) Return } /* Object Class was loaded from Untrusted Object Class Repository */ If Object Class does not contain any ASPrograms designated as native_ASPrograms in Object Header of Object { Vetify integrity of all ANPrograms of Object Class with ANProgram integrity verifier If failed result { Abort with appropriate failed result message } Else /* Integrity of all ANPrograms of Object Class have been verified */ {Call Execute(ObjectClass,Program)}Return }/* Object Class does contain ASPrograms designated as native_ASPrograms in Object Header of Object */If any ASProgram does not contain a DigitalSignatureCP and a DigitalSignatureC { /* Compiling Party and Compiler of every ASProgram cannot be verified */ Generate appropriate message Return }For each ASProgram in Object Class {Determine identity of CompParty and Compiler and determine ASLanguage used byASProgram}If identity of CompParty for any ASProgram is not a known,trusted,Compiling Party,or the identity of Compiler is not a known,trusted Compiler,or the identified ASLanguage is not one used by the ASProgram Executer { Generate appropriate message Return }For each ASProgram in Object Class { Retrieve CompParty’s PublicKey from trusted key repository using ClearText CompParty’s ID in DigitalSignatureCP Decrypt(MDCP+HashFunctionCP ID in DigitalSignatureCP,CompParty’s PublicKey) Generate TestMDCP=HashFunctionCP(ASProgram code+DigitalSignatureOP ?。獶igitalSignatureC in ASProgram)using HashFunctionCP identified by decrypted HashFunctionCP ID Compare decrypted MDCP and TestMDCP }If decrypted MDCP≠TestMDCP for any ASProgram { /* DigitalSignatureCP for every ASProgram has not been verified */ Generate appropriate failed result message Return }/* DigitalSignatureCP for every ASProgram has been verified*/For each ASProgram in Object Class { Retrieve ANProgram Compiler’s PublicKey from trusted key repository using ClearText ANProgram Compiler’s ID in DigitalSignatureC Decrypt(MDC+HashFunctionC ID in DigitalSignatureC,ANProgram Compiler’s PublicKey) Generate TestMDC=HashFunctionC(ASProgram code+DigitalSignatureOP) using HashFunctionC identified by decrypted HashFunctionC ID Compare decrypted MDC and TestMDC }If decrypted MDC≠TestMDC for any ASProgram { /* DigitalSignatureC for every ASProgram in Object Class has not been verified */ Generate appropriate failed result message Retum }/* DigitalSignatureC for every ASProgram in Object Class has been verified */For each ANProgram from which an ASProgram in Object Class was compiled { Retrieve OrigParty’s PublicKey from trusted key repository using ClearText OrigParty’s ID in DigitalSignatureOP Decrypt(MDOP+HashFunctionOP ID in DigitalSignatureOP,OrigParty’s PublicKey) Generate TestMDOP=HashFunctionOP(ANProgram code)using HashFunctionOP identified by decrypted HashFunctionOP ID Compare decrypted MDOP and TestMDOP }If decrypted MDOP≠TestMDOP for any ANProgram { /*DigitalSignatureOP for every ANProgram from which an ASProgram in Object Class was compiled not verified */ Generate failed result message Return }/* The DigitalSignatureOP in every ASProgram in Object Class is verified */Verify integrity of ANPrograms in Object class and ANPrograms from which ASPrograms in Object Class were compiled with ANProgram integrity verifierIf failed result {Generate failed result message Return }/* Integrity of all ANPrograms in Object class and all ANPrograms from which ASPrograms in Object Class were compiled have been verified */Call Execute(ObjectClass,Program)}]]></pre>
權(quán)利要求
1.一種計算機網(wǎng)絡(luò),包括由一個編譯方操作的程序編譯計算機,該程序編譯計算機接收一個由始發(fā)方產(chǎn)生的中性結(jié)構(gòu)程序,該中性結(jié)構(gòu)程序包含有中性結(jié)構(gòu)程序碼和所述始發(fā)方的數(shù)字署名,當其被檢驗時檢驗由所述始發(fā)方所標記的中性結(jié)構(gòu)程序,所述程序編譯計算機包括一個署名檢驗器,用于檢驗所述始發(fā)方的數(shù)字署名;一個編譯程序,用于當所述始發(fā)方的數(shù)字署名被檢驗完畢時,產(chǎn)生特定結(jié)構(gòu)程序,所述編譯程序,通過下述方式產(chǎn)生所述特定結(jié)構(gòu)程序,所述方式是(A)按照特定結(jié)構(gòu)語言將所述中性結(jié)構(gòu)程序碼編譯成特定結(jié)構(gòu)程序碼,和(B)附加一個編譯方的數(shù)字署名,當其被檢驗時,檢驗由所述編譯方產(chǎn)生的特定結(jié)構(gòu)程序;署名發(fā)生器,用于產(chǎn)生編譯方的數(shù)字署名;和由一個執(zhí)行方操作的程序執(zhí)行計算機,該程序執(zhí)行計算機接收特定結(jié)構(gòu)程序,和接收或始發(fā)該中性結(jié)構(gòu)程序,所述程序執(zhí)行計算機包括一個署名檢驗器,用于檢驗所述編譯方的數(shù)字署名;一個執(zhí)行器,用于執(zhí)行按所述特定結(jié)構(gòu)語言寫成的程序碼,當所述編譯方的署名已被檢驗,并且所述的編譯方是指定設(shè)定的受托編譯方時,所述執(zhí)行器執(zhí)行特定結(jié)構(gòu)程序碼。
2.如權(quán)利要求1所述的計算機網(wǎng)絡(luò),其中所述署名發(fā)生器產(chǎn)生編譯程序的數(shù)字署名,當其被檢驗時,驗證該特定結(jié)構(gòu)程序是用所述編譯程序產(chǎn)生的;所述編譯程序還通過將所述編譯程序的數(shù)字署名附加到所述特定結(jié)構(gòu)程序碼上產(chǎn)生所述特定結(jié)構(gòu)程序;該執(zhí)行計算機的署名檢驗器檢驗所述計算機的數(shù)字署名;所述執(zhí)行器僅在所述編譯程序的數(shù)字署名已經(jīng)被驗證和該編譯程序被確定是一指定設(shè)定的受托編譯程序之后才執(zhí)行所述特定結(jié)構(gòu)程序碼。
3.如權(quán)利要求1所述的計算機網(wǎng)絡(luò),其中對于始發(fā)方和編譯方來講,所述的網(wǎng)絡(luò)包括相應(yīng)的專用和公用加密密鑰和相應(yīng)的散列函數(shù);所述始發(fā)方的數(shù)字署名包括通過在中性結(jié)構(gòu)程序基礎(chǔ)上執(zhí)行對應(yīng)于始發(fā)方的散列函數(shù)產(chǎn)生的中性結(jié)構(gòu)程序的消息摘要,所述中性結(jié)構(gòu)程序的消息摘要利用對應(yīng)于該始發(fā)方的專用密鑰加密;所述程序編譯計算機的署名檢驗器包括通過下述方式用于檢驗所述始發(fā)方數(shù)字署名的多個指令,所述方式是(A)利用所述始發(fā)方的公用加密密鑰去解密所述中性結(jié)構(gòu)程序的消息摘要,(B)通過在所述中性結(jié)構(gòu)程序碼的基礎(chǔ)上執(zhí)行所述始發(fā)方的散列函數(shù)來產(chǎn)生所述中性結(jié)構(gòu)程序?qū)?yīng)的測試消息摘要,和(C)比較所述中性結(jié)構(gòu)程序的解密消息摘要和測試消息摘要;所述署名發(fā)生器包括用于以如下方式產(chǎn)生編譯方數(shù)字署名的多個指令,所述方式是(A)通過在所述特定結(jié)構(gòu)程序碼的基礎(chǔ)上執(zhí)行所述編譯方的相應(yīng)散列函數(shù)產(chǎn)生中性結(jié)構(gòu)程序的消息摘要,和(B)利用所述編譯方的相應(yīng)專用密鑰加密所述特定結(jié)構(gòu)程序的消息摘要;和所述程序執(zhí)行計算機的署名檢驗器包括以如下方式檢驗所述編譯方數(shù)字署名的多個指令,所述方式是(A)利用所述編譯方的公用加密密鑰去解密所述特定結(jié)構(gòu)程序的消息摘要,(B)通過在所述特定結(jié)構(gòu)程序碼的基礎(chǔ)上執(zhí)行所述編譯方的散列函數(shù)產(chǎn)生所述特定結(jié)構(gòu)程序的相應(yīng)測試消息摘要,和(C)比較所述特定結(jié)構(gòu)程序的解密消息摘要和測試消息摘要。
4.如權(quán)利要求1所述的計算機網(wǎng)絡(luò),其中所述程序執(zhí)行計算機還包括一個中性結(jié)構(gòu)程序完整性檢驗器,通過檢驗所述中性結(jié)構(gòu)程序碼滿足預(yù)定程序完整性標準來檢驗所述中性結(jié)構(gòu)程序碼的完整性;只有在所述中性結(jié)構(gòu)程序碼的完整性被驗證以后,所述執(zhí)行器才執(zhí)行所述特定結(jié)構(gòu)程序碼。
5.如權(quán)利要求1所述的計算機網(wǎng)絡(luò),其中還包括一個初始程序計算機,該計算機提供中性結(jié)構(gòu)程序,所述初始程序計算機包括一個署名發(fā)生器,用于產(chǎn)生被附加到所述中性結(jié)構(gòu)程序碼上的始發(fā)方的數(shù)字署名;一個與所述初始程序計算機進行通信的程序編譯計算機,用于從所述初始程序計算機接收中性結(jié)構(gòu)程序并向所述初始程序計算機提供所述特定結(jié)構(gòu)程序;一個與所述初始程序計算機進行通信的程序執(zhí)行計算機,用于從所述初始程序計算機接收所述中性結(jié)構(gòu)和特定結(jié)構(gòu)程序;所述程序執(zhí)行計算機的署名檢驗器還檢驗所述始發(fā)方的數(shù)字署名;所述執(zhí)行器只有在所述始發(fā)方的數(shù)字署名被驗證之后才執(zhí)行所述特定結(jié)構(gòu)程序。
6.一種操作計算機網(wǎng)絡(luò)的方法,包括如下步驟在由一個編譯方操作的程序編譯計算機處接收由一個始發(fā)方產(chǎn)生的中性結(jié)構(gòu)程序,該中性結(jié)構(gòu)程序含有中性結(jié)構(gòu)程序碼和所述始發(fā)方的數(shù)字署名,當其被檢驗時,檢驗由所述始發(fā)方所標記的所述中性結(jié)構(gòu)程序;檢驗所述始發(fā)方的數(shù)字署名;和當所述始發(fā)方的數(shù)字署名被檢驗完畢時,利用一個編譯程序?qū)λ鲋行越Y(jié)構(gòu)程序進行編譯,從而產(chǎn)生一個特定結(jié)構(gòu)程序,并附加一個編譯方的數(shù)字署名,當其被檢驗時,檢驗由所述編譯方產(chǎn)生的特定結(jié)構(gòu)程序;和在由一個執(zhí)行方操作的程序執(zhí)行計算機處接收所述特定結(jié)構(gòu)程序和接收或始發(fā)所述中性結(jié)構(gòu)程序;檢驗所述編譯方的數(shù)字署名;和當所述編譯方的數(shù)字署名被驗證完畢且所述編譯方被確定是一指定設(shè)定的受托編譯方時,執(zhí)行所述特定結(jié)構(gòu)程序。
7.如權(quán)利要求6的方法,其中,包括在程序編譯計算機處產(chǎn)生一個編譯程序的數(shù)字署名,當其被檢驗時,檢驗用所述編譯程序產(chǎn)生的所述特定結(jié)構(gòu)程序;和將所述編譯程序的數(shù)字署名附加到所述特定結(jié)構(gòu)程序碼中;和在程序執(zhí)行計算機處檢驗所述編譯程序的數(shù)字署名;和僅在所述編譯程序的數(shù)字署名被檢驗完畢且所述編譯程序被確定是一指定設(shè)定的受托編譯程序之后才執(zhí)行所述特定結(jié)構(gòu)程序。
8.如權(quán)利要求6的方法,其中,對于所述始發(fā)方和編譯方來講,所述網(wǎng)絡(luò)包括相應(yīng)的專用和公用加密密鑰和對應(yīng)的散列函數(shù);所述始發(fā)方的數(shù)字署名包括通過在所述中性結(jié)構(gòu)程序的基礎(chǔ)上執(zhí)行所述始發(fā)方的相應(yīng)散列函數(shù)產(chǎn)生的所述中性結(jié)構(gòu)程序的消息摘要,利用所述始發(fā)方的相應(yīng)專用密鑰加密所述中性結(jié)構(gòu)程序的消息摘要;所述方法包括如下步驟在程序編譯計算機處通過如下方式檢驗所述始發(fā)方的數(shù)字署名,所述方式是(A)利用所述始發(fā)方的公用加密密鑰對所述中性結(jié)構(gòu)程序的消息摘要解密,(B)通過在所述中性結(jié)構(gòu)程序碼的基礎(chǔ)上執(zhí)行所述始發(fā)方的散列函數(shù)來產(chǎn)生所述中性結(jié)構(gòu)程序?qū)?yīng)的測試消息摘要,和(C)比較所述中性結(jié)構(gòu)程序的解密消息摘要和測試消息摘要;和通過如下方式產(chǎn)生編譯方的數(shù)字署名,所述方式是(A)通過在所述特定結(jié)構(gòu)程序碼的基礎(chǔ)上執(zhí)行所述編譯方的相應(yīng)散列函數(shù),產(chǎn)生一個所述特定結(jié)構(gòu)程序的消息摘要,和(B)利用所述編譯方的相應(yīng)專用密鑰加密所述特定結(jié)構(gòu)程序的消息摘要;和在程序執(zhí)行計算機處通過如下方式檢驗所述編譯方的數(shù)字署名,所述方式是(A)利用所述編譯方的公用加密密鑰解密所述特定結(jié)構(gòu)程序的消息摘要,(B)通過在所述特定結(jié)構(gòu)程序碼的基礎(chǔ)上執(zhí)行所述編譯方的散列函數(shù),產(chǎn)生所述特定結(jié)構(gòu)程序的相應(yīng)測試消息摘要,和(C)比較所述特定結(jié)構(gòu)程序的解密消息摘要和測試消息摘要。
9.如權(quán)利要求6的方法,其中,包括在程序執(zhí)行計算機處由檢驗所述中性結(jié)構(gòu)程序碼滿足預(yù)定程序完整性標準來檢驗所述中性結(jié)構(gòu)程序的完整性;和僅在所述中性結(jié)構(gòu)程序碼的完整性被檢驗完畢之后才執(zhí)行所述特定結(jié)構(gòu)程序碼。
10.如權(quán)利要求6的方法,其中,還包括在提供所述中性結(jié)構(gòu)程序的初始程序計算機中產(chǎn)生所述始發(fā)方的數(shù)字署名并將它附加到所述中性結(jié)構(gòu)程序碼中;在所述程序編譯計算機處與所述初始程序計算機進行通信,以從所述初始程序計算機中接收所述中性結(jié)構(gòu)程序并將所述特定結(jié)構(gòu)程序提供給所述初始程序計算機;在所述程序執(zhí)行計算機處與所述初始程序計算機進行通信,以從所述初始程序計算機中接收所述中性結(jié)構(gòu)和特定結(jié)構(gòu)程序;檢驗所述始發(fā)方的數(shù)字署名;和僅在所述始發(fā)方的數(shù)字署名被檢驗完畢之后才執(zhí)行所述特定結(jié)構(gòu)程序。
11.如權(quán)利要求6的方法,其中,包括在所述程序執(zhí)行計算機處提供所述中性結(jié)構(gòu)程序;產(chǎn)生一個始發(fā)方的數(shù)字署名,該署名標記所述中性結(jié)構(gòu)程序并將它附加到所述中性結(jié)構(gòu)程序碼中;和在所述程序編譯計算機處與所述程序執(zhí)行計算機進行通信,以從所述程序執(zhí)行計算機中接收所述中性結(jié)構(gòu)程序并將所述特定結(jié)構(gòu)程序提供給所述程序執(zhí)行計算機。
12.一種用于分布存儲在計算機可讀介質(zhì)上并可由計算機執(zhí)行的代碼的系統(tǒng),所述代碼包括了多個程序塊,其中的每一個都被結(jié)構(gòu)成去執(zhí)行至少一個函數(shù),該函數(shù)將被多個計算機中的一個執(zhí)行,所述系統(tǒng)包括由一個編譯方運行的、被結(jié)構(gòu)成與一個程序編譯計算機共同使用的第一程序塊,該程序塊接收由一個始發(fā)方產(chǎn)生的中性結(jié)構(gòu)程序,所述中性結(jié)構(gòu)程序包含中性結(jié)構(gòu)程序碼和所述始發(fā)方的一個數(shù)字署名,當其被檢驗時,檢驗所述中性結(jié)構(gòu)程序是否是由所述始發(fā)方標記,該第一程序塊包括;一個署名檢驗器,用于檢驗所述始發(fā)方的數(shù)字署名;一個編譯程序,用于當所述始發(fā)方的數(shù)字署名被檢驗完畢時產(chǎn)生一個特定結(jié)構(gòu)程序,所述編譯程序以如下方式產(chǎn)生所述特定結(jié)構(gòu)程序,所述方式是(A)按照特定結(jié)構(gòu)語言將所述中性結(jié)構(gòu)程序碼編譯成特定結(jié)構(gòu)程序碼,和(B)附加所述編譯方的數(shù)字署名,當其被檢驗時,檢驗由所述編譯方產(chǎn)生的所述特定結(jié)構(gòu)程序;和一個署名發(fā)生器,用于產(chǎn)生所述編譯方的數(shù)字署名;和由一個執(zhí)行方運行的、與一個程序執(zhí)行計算機共同使用的第二程序塊,該第二程序塊接收所述特定結(jié)構(gòu)程序和接收或始發(fā)所述中性結(jié)構(gòu)程序,所述第二程序塊包括一個署名檢驗器,用于檢驗所述編譯方的數(shù)字署名;和一個執(zhí)行器,用于執(zhí)行按照所述特定結(jié)構(gòu)語言形成的程序碼,當所述編譯方的數(shù)字署名已經(jīng)被檢驗完畢并且已經(jīng)確定編譯方是一指定設(shè)定的受托編譯方時,該執(zhí)行器執(zhí)行所述特定結(jié)構(gòu)程序碼。
13.如權(quán)利要求12的系統(tǒng),其中,所述署名發(fā)生器產(chǎn)生一個所述編譯程序的數(shù)字署名,當其被檢驗時,檢驗所述特定結(jié)構(gòu)程序是否是由所述編譯程序產(chǎn)生;將所述編譯程序的數(shù)字署名附加到所述特定結(jié)構(gòu)程序碼中的第一程序塊;所述第二程序塊的署名檢驗器檢驗所述編譯程序的數(shù)字署名;僅在所述編譯程序的數(shù)字署名被檢驗完畢并且確定編譯程序是一指定設(shè)定的其一受托編譯方時,所述第二程序塊的執(zhí)行器執(zhí)行所述特定結(jié)構(gòu)程序碼。
14.如權(quán)利要求12的方法,其中,對于始發(fā)方和編譯方,所述系統(tǒng)包括相應(yīng)的專用和公用加密密鑰和相應(yīng)的散列函數(shù);所述始發(fā)方的數(shù)字署名包括通過在所述中性結(jié)構(gòu)程序的基礎(chǔ)上執(zhí)行始發(fā)方的相應(yīng)散列函數(shù)產(chǎn)生的所述中性結(jié)構(gòu)程序的消息摘要,利用所述始發(fā)方的相應(yīng)專用密鑰加密所述中性結(jié)構(gòu)程序的消息摘要;所述第一程序塊的署名檢驗器包括用于以如下方式檢驗所述始發(fā)方數(shù)字署名的多個指令,所述方式是(A)利用所述始發(fā)方的公用加密密鑰解密所述中性結(jié)構(gòu)程序的消息摘要,(B)通過在所述中性結(jié)構(gòu)程序碼的基礎(chǔ)上執(zhí)行始發(fā)方的散列函數(shù)產(chǎn)生所述中性結(jié)構(gòu)程序的相應(yīng)測試消息摘要,和(C)比較所述中性結(jié)構(gòu)程序的解密消息摘要和測試消息摘要;所述第一程序塊的署名發(fā)生器包括用于以如下方式產(chǎn)生編譯方數(shù)字署名的多個指令,所述方式是(A)通過在所述特定結(jié)構(gòu)程序碼的基礎(chǔ)上執(zhí)行所述編譯方的相應(yīng)散列函數(shù)產(chǎn)生所述中性結(jié)構(gòu)程序的消息摘要,和(B)利用所述編譯方的相應(yīng)專用密鑰加密所述特定結(jié)構(gòu)程序的消息摘要;和所述第二程序塊署名檢驗器包括用于以如下方式檢驗所述編譯方的數(shù)字署名的多個指令,所述方式是(A)利用所述編譯方的公用加密密鑰解密所述特定結(jié)構(gòu)程序的消息摘要,(B)通過在所述特定結(jié)構(gòu)程序碼的基礎(chǔ)上執(zhí)行所述編譯方的散列函數(shù)產(chǎn)生所述特定結(jié)構(gòu)程序的相應(yīng)測試消息摘要,和(C)比較所述特定結(jié)構(gòu)程序的所述解密消息摘要和所述測試消息摘要。
全文摘要
一個分布計算機系統(tǒng),具有一程序編譯計算機,它由一編譯方操作,并包括一個編譯程序,當檢驗了一中性結(jié)構(gòu)程序的始發(fā)方數(shù)字署名時,編譯程序通過(A)將中性結(jié)構(gòu)程序碼編譯成特定結(jié)構(gòu)程序碼,和(B)將編譯方數(shù)字署名加到特定結(jié)構(gòu)程序碼以產(chǎn)生一特定結(jié)構(gòu)程序,該系統(tǒng)還具有一程序執(zhí)行計算機,它由一執(zhí)行方運行,并包括一特定結(jié)構(gòu)程序執(zhí)行器,當驗證了中性結(jié)構(gòu)程序的始發(fā)方數(shù)字署名、特定結(jié)構(gòu)程序編譯方數(shù)字署名和編譯方是規(guī)定的受托編譯方時,該特定結(jié)構(gòu)程序執(zhí)行器執(zhí)行特定結(jié)構(gòu)程序碼。
文檔編號G06F21/00GK1157959SQ96121380
公開日1997年8月27日 申請日期1996年12月8日 優(yōu)先權(quán)日1995年12月8日
發(fā)明者查爾斯·E·麥克梅尼斯, 弗蘭克·耶林 申請人:太陽微系統(tǒng)有限公司