專利名稱::對唯一定制的、合法的和可跟蹤的軟件應(yīng)用進(jìn)行網(wǎng)上安裝的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種方法和系統(tǒng),其通過網(wǎng)絡(luò)向用戶進(jìn)行對各用戶為唯一定制的、合法的和跟蹤的軟件應(yīng)用的電子銷售和安裝。隨著諸如因特網(wǎng)的網(wǎng)上計算機(jī)環(huán)境日益增長的重要性和可靠性,作為向用戶銷售軟件應(yīng)用的一種手段的電子軟件銷售(ESD)呈現(xiàn)出日益增加的重要性。當(dāng)前存在的聯(lián)機(jī)設(shè)施在不必物理地交付壓縮包裝的軟件下允許用戶定購并安裝軟件應(yīng)用。典型地,軟件發(fā)行商會準(zhǔn)備用于電子銷售的軟件應(yīng)用的主版。接著用戶聯(lián)機(jī)提出購買該軟件應(yīng)用的定單,出版商接收及履行定單。然后用戶下載軟件應(yīng)用并安裝到其自己的計算機(jī)上?,F(xiàn)行聯(lián)機(jī)設(shè)施中的缺點(diǎn)是,向用戶交付的軟件應(yīng)用在形式上和從分銷商及產(chǎn)品目錄中得到的軟件應(yīng)用完全一樣。缺乏加密保護(hù),用戶可以自由地互相共享軟件的銷售版本。即使存在加密保護(hù),由于所有的用戶擁有完全相同的軟件應(yīng)用拷貝(必然具有相同的加密方式),非法復(fù)制的可能相當(dāng)大。在所有有單個基本解密鑰的情況中,其中大多由用戶插入該解密鑰(或其等同物),從而該用戶可和其它利用該鑰得到對該程序的未經(jīng)許多使用的用戶共享軟件應(yīng)用。當(dāng)今存在著專用于共享這些解密鑰的公告牌和因特網(wǎng)網(wǎng)點(diǎn),這些地方由那些通過申請他們各自得到的應(yīng)用程序的解密鑰而想得到對程序的不付費(fèi)使用的人群的訪問。此外,盡管在軟件應(yīng)用中設(shè)置了更加錯綜的反盜版方法,但軟件“黑客”生成“破譯的”程序?qū)乙姴货r,利用這樣的程序處理免費(fèi)分發(fā)的、功能有限的程序版本可以生成出不必購買使用權(quán)的該程序的全功能修改版本。對于簡單地應(yīng)用“揭密的”通用解密密鑰的高手,即使采用最精巧的大量分發(fā)不同的單密鑰形式(對于動態(tài)地試圖導(dǎo)出密鑰該形式可涉及一次性響應(yīng))也是無濟(jì)于事的。盡管這種“揭密”比起上述共享密鑰涉及到更多的技術(shù)復(fù)雜性,但是在分發(fā)渠道上和對產(chǎn)品收入的可能影響上是非常相似的。此外,通過常規(guī)ESD技術(shù)銷售的軟件應(yīng)用不提供任何保護(hù)它們各自的完整性以防止未經(jīng)許可的竄改的手段。Portland軟件公司生產(chǎn)一種以ZipLockTM商標(biāo)出售的電子軟件銷售系統(tǒng),該系統(tǒng)封裝用于在因特網(wǎng)上進(jìn)行電子銷售的軟件。ZipLockTM系統(tǒng)公開一種從安全服務(wù)器向駐留在用戶的計算機(jī)上的客戶銷售通過密碼鍵得到保護(hù)的標(biāo)準(zhǔn)可執(zhí)行軟件應(yīng)用的系統(tǒng)。用戶輸入的數(shù)據(jù)被傳送到安全服務(wù)器并被用于構(gòu)建一個按獨(dú)立的計算機(jī)文件發(fā)送給用戶的定制數(shù)字許可證。ZipLockTM系統(tǒng)既沒有提供檢測對可執(zhí)行軟件應(yīng)用本身進(jìn)行竄改的機(jī)制,而且也不能跟蹤該軟件應(yīng)用的未經(jīng)許可的再銷售中是否包括數(shù)字許可證?,F(xiàn)有技術(shù)公開了一些用于防止向用戶電子銷售的軟件被非法使用的其它系統(tǒng)和方法。在Choudhury的美國5,509,074號專利中,公開一種利用密碼協(xié)議保護(hù)電子發(fā)行材料的方法。所說明的第一實(shí)施例需要專用硬件,以便對發(fā)送到用戶的文檔解密。這限制了該方法在大眾所使用的個人計算機(jī)上的廣泛應(yīng)用。在第二種方法中,不需要專用硬件。在該方法中,發(fā)表者修改文檔的行間間隔或字間間隔以使每份文檔對于每個用戶是唯一的。然后加密唯一文檔并傳送到用戶的計算機(jī)上。一旦接收到加密文檔,用戶的計算機(jī)會提示用戶輸入其保密密鑰,該密鑰用于解密文檔以供觀閱。該篇文獻(xiàn)公開的方法不能防止盜版,它只是通過可用盜版文檔跟蹤出用戶阻礙盜版行為。此外,該文獻(xiàn)只適合數(shù)據(jù)文件,不能保護(hù)任何類型的可執(zhí)行文件。在Cane的美國5,416,840號專利中,公開一種用于在廣播媒體,例如射頻公用廣播或計算機(jī)網(wǎng)絡(luò)上保護(hù)計算機(jī)程序銷售的方法和系統(tǒng)。在這篇文獻(xiàn)中,該方法涉及至少加密一部分計算機(jī)程序,對用戶提供一個用于解密該計算機(jī)程序的口令從而可安裝并使用該計算機(jī)程序。生成并且向用戶傳送一個唯一口令,以供隨后用于解密媒體上所容納的選定軟件程序。盡管其公開一種生成、發(fā)送并使用不能由軟件應(yīng)用的不同用戶共享的唯一口令的方法和系統(tǒng),該文獻(xiàn)要求用戶擁有專有硬件,這限制了利用大眾所擁有的個人計算機(jī)的廣泛應(yīng)用。在Yuval的美國專利5,586,186號中,公開一種用于控制對銷售給用戶的軟件的非法訪問的方法和系統(tǒng)。該系統(tǒng)的主要構(gòu)件是一個加密機(jī)、一個用戶密鑰發(fā)生器和一個解密機(jī)。加密機(jī)生成加密密鑰和解密密鑰、用加密密鑰加密軟件并且把軟件的加密形式存儲到諸如CDROM的廣播介質(zhì)上。用戶密鑰發(fā)生器利用用戶提供的識別信息的數(shù)字表達(dá)以及解密密鑰生成唯一密鑰。解密機(jī)負(fù)責(zé)利用用戶提供的識別信息及唯一用戶密鑰解密軟件的加密形式。該文獻(xiàn)公開的解密方法允許把大量不同的但邏輯上相似的密鑰用作為解密密鑰,其中的每個解密密鑰對于某特定用戶是唯一的。然而,該篇文獻(xiàn)未公開用于利用用戶規(guī)定的數(shù)據(jù)定制軟件應(yīng)用從而可鑒別軟件應(yīng)用本身的手段。此外,該文獻(xiàn)不能防止通過共享密鑰的盜版行為,它只通過可跟蹤密鑰阻礙盜版。本發(fā)明與一種從分發(fā)計算機(jī)向安裝計算機(jī)電子銷售軟件應(yīng)用的方法有關(guān),該方法包括步驟在所述分發(fā)計算機(jī)接收識別信息,在所述分發(fā)計算機(jī)把所述識別信息嵌入到所述軟件應(yīng)用中以形成可識別的軟件應(yīng)用,為所述可識別的軟件應(yīng)用生成密碼簽字,把所述密碼簽字嵌入到所述可識別軟件應(yīng)用中以形成可識別的和可驗(yàn)證的軟件應(yīng)用,以及從所述分發(fā)計算機(jī)把所述可識別的和可驗(yàn)證的軟件應(yīng)用傳送到所述安裝計算機(jī)。本發(fā)明的方法和系統(tǒng)公開一種聯(lián)機(jī)下的軟件定制化、發(fā)送及安裝方式。不再是在安裝計算機(jī)上安裝完全同類的不可跟蹤的可執(zhí)行文件下向用戶銷售軟件應(yīng)用,本文所公開的方法和系統(tǒng)公開一種建立、分發(fā)和在安裝計算機(jī)上安裝對特定用戶可驗(yàn)證的和可跟蹤的軟件應(yīng)用的唯一定制件的手段。本文中公開的方法和系統(tǒng)為駐留在安裝計算機(jī)上的用戶安裝代理(UIA)提供通過分發(fā)通道和駐留在銷售計算機(jī)上的安全銷售代理(SDA)建立連接。UIA和/或SDA提示用戶輸入識別信息,該識別信息和諸如許可條款的有關(guān)商業(yè)信息一起用于建立由SDA嵌入到所需軟件應(yīng)用中的唯一數(shù)據(jù)集。通過利用密碼散列算法以及專用/公用密鑰密碼術(shù)(其中專用密鑰只由SDA知道),計算出所需軟件應(yīng)用及嵌入數(shù)據(jù)集的密碼簽字,并且把密碼簽字嵌入到軟件應(yīng)用中。通過分發(fā)通道把帶有嵌入數(shù)據(jù)以及密碼簽字的軟件應(yīng)用發(fā)送到并且安裝到安裝計算機(jī)上。任選地,安裝計算機(jī)可利用密碼簽字核實(shí)軟件應(yīng)用以及嵌入數(shù)據(jù)都未被竄改??珊蛙浖?yīng)用一起或通過其它手段如電子函件、因特網(wǎng)公告牌等向安裝計算機(jī)發(fā)送用于解密密碼簽字的公用密鑰(組)。在安裝后,以各種方式使用嵌入數(shù)據(jù)和密碼簽字,例如,提供一種跟蹤軟件應(yīng)用的用戶的手段,管理軟件應(yīng)用的持續(xù)整體性,確保持續(xù)保持許可狀態(tài),進(jìn)行病毒檢查,或者自動地對軟件應(yīng)用本身進(jìn)行升級。圖1是系統(tǒng)概述的框圖,以示出本發(fā)明的系統(tǒng)和方法的各個輸入和構(gòu)件;圖2是本發(fā)明所采用的安全分發(fā)代理的結(jié)構(gòu)及運(yùn)行數(shù)據(jù)流圖;圖3A是一個框圖,表示利用單步密碼處理的集合分發(fā)文件的結(jié)構(gòu)細(xì)節(jié);圖3B是一個框圖,表示利用雙步密碼處理的集合分發(fā)文件的結(jié)構(gòu)細(xì)節(jié);圖3C是一個框圖,表示利用圖3B中示出的雙步密碼處理的一種變型的密碼處理的集合分發(fā)文件的結(jié)構(gòu)細(xì)節(jié);圖4是本發(fā)明采用的用戶安裝代理的結(jié)構(gòu)和運(yùn)行的框圖;圖5是一個框圖,表示從已安裝的分發(fā)文件提取并驗(yàn)證嵌入數(shù)據(jù)的手段;圖6是本發(fā)明的第一實(shí)施例的流程圖,該實(shí)施例通過公用加密密鑰驗(yàn)證嵌入數(shù)據(jù);圖7是本發(fā)明的第二實(shí)施例的流程圖,該實(shí)施例通過每一用戶的唯一密碼密鑰驗(yàn)證嵌入數(shù)據(jù);以及,圖8是一個框圖,表示通過本發(fā)明發(fā)送給用戶的安裝后的軟件應(yīng)用的各種使用。圖1表示本發(fā)明的系統(tǒng)和方法的各種輸入和構(gòu)件。頂層代表電子軟件銷售(ESD)后端構(gòu)件10,其包括軟件交換站、軟件制造商、發(fā)行商、信用卡服務(wù)商等,它們都和駐留在分發(fā)計算機(jī)上的安全分發(fā)代理(SDA)100交換,分發(fā)計算機(jī)構(gòu)成本發(fā)明的基本部分。通過因特網(wǎng)或?qū)S糜嬎銠C(jī)網(wǎng)絡(luò),SDA100和各ESD后端構(gòu)件10接口以提供支付方法支持、從發(fā)行商裝入軟件應(yīng)用等等。在不影響本發(fā)明的方法和系統(tǒng)下,可以改變ESD后端構(gòu)件10的確切特征。SDA100是由安全環(huán)境下運(yùn)行的協(xié)同軟件程序系統(tǒng)構(gòu)成的。只要其確保用戶數(shù)據(jù)的秘密、確保對用戶和其它可能的第三方的驗(yàn)證并在運(yùn)行上恰當(dāng)限制外部訪問,安全環(huán)境的特性對于本發(fā)明是不重要的。在物理上該環(huán)境可以和或不和安裝計算機(jī)分離。在圖2中更詳細(xì)地說明SDA100的結(jié)構(gòu)和運(yùn)行。SDA100的輸入之一是所支持的軟件應(yīng)用、許可條款、許可用戶等的數(shù)據(jù)庫組20。在運(yùn)行本發(fā)明之前以及之中,SDA100對/從數(shù)據(jù)庫組20發(fā)送和接收有關(guān)數(shù)據(jù)。數(shù)據(jù)庫組20的確切特征和內(nèi)容不是本發(fā)明的本質(zhì)特性。圖1中示出的分發(fā)通道300可由諸如因特網(wǎng)或?qū)S镁W(wǎng)絡(luò)的計算機(jī)網(wǎng)絡(luò)構(gòu)成,或者若SDA100非??拷脩舭惭b代理(UIA)200時由為保持安全所需的一個安全層構(gòu)成。備擇地,它可包括這些組件的某種組合。分發(fā)通道300用于連接UIA200和SDA100(從而連接分發(fā)計算機(jī)和安裝計算機(jī)),以便在這二個代理之間交換信息,并且以便把集合分發(fā)文件170(圖2中示出)從SDA100分發(fā)到UIA200上。盡管在SDA100和UIA200之間示出分發(fā)通道300,本發(fā)明的系統(tǒng)并不要求SDA100物理上遠(yuǎn)離UIA200。用戶端處是UIA200,UIA200是駐留在安裝計算機(jī)上的一個安裝/自動升級軟件程序。該程序用于通過分發(fā)通道300和SDA100通信,并用于在安裝計算機(jī)上執(zhí)行后面更詳細(xì)說明的所需操作。盡管通常每個所支持的軟件應(yīng)用需要一個UIA200,業(yè)內(nèi)人士熟知開發(fā)一個可支持多個軟件應(yīng)用的UIA200。圖1中還示出UIA200的分發(fā)形式30,其包括著各個支持文件。對于本發(fā)明的運(yùn)行,UIA200的分發(fā)形式30的特征是不重要的??刹捎肅DROM、萬維網(wǎng)(WWW)下載、軟盤等中的任一種。UIA200接收用戶輸入的數(shù)據(jù)32,諸如名字、地址、支付選擇等以及和接收最終用戶許可證有關(guān)的數(shù)據(jù)。也可向UIA200輸入供處理的環(huán)境敏感數(shù)據(jù)34,諸如CPU的速度、硬盤的尺寸、調(diào)制解調(diào)器的速度等等。UIA200處理的識別信息可包括任何有關(guān)買主、銷售商、安裝代理、日期、序列號、許可證說明等信息。這些數(shù)據(jù)可用于自動地登記所需的軟件應(yīng)用及買主或其商業(yè)代理。如上面所述,識別數(shù)據(jù)32、34構(gòu)成和用戶、其計算機(jī)等有關(guān)的識別信息。UIA200處理識別數(shù)據(jù)32、34并通過分發(fā)通道傳送到SDA100。當(dāng)然應(yīng)理解,不必一定要通過分發(fā)通道300把識別信息發(fā)送到SDA100。例如,可在本地通過口頭、書面或其它非電子方式把識別信息輸入到SDA100中。SDA100把識別信息32、34和數(shù)據(jù)庫組20中存儲的數(shù)據(jù)組合起來以產(chǎn)生對于用戶是唯一定制的、可驗(yàn)證的和可跟蹤的集合分發(fā)文件170。通過分發(fā)通道300把集合分發(fā)文件170發(fā)送到UIA200。從UIA200的輸出是唯一定制軟件應(yīng)用15(以下稱為“被安裝的集合分發(fā)文件”),其安裝在安裝計算機(jī)上并帶有嵌入在其中的識別信息。雖然本發(fā)明的說明暗指“用戶”是安裝在個人計算機(jī)上的軟件應(yīng)用15的個體用戶,業(yè)內(nèi)人士可理解本發(fā)明也可運(yùn)行在聯(lián)網(wǎng)最終用戶環(huán)境下,其中“用戶”是負(fù)責(zé)把軟件安裝在中央服務(wù)器上以供若干最終用戶使用的網(wǎng)絡(luò)管理員。圖2是本發(fā)明所采用的SDA100的結(jié)構(gòu)和運(yùn)行的數(shù)據(jù)流圖。原始分發(fā)文件130示成是轉(zhuǎn)換程序110的一個輸入。在想象的實(shí)施中,通過圖1中示出的數(shù)據(jù)庫組20把原始分發(fā)文件130輸入到SDA100。應(yīng)理解,不必必須通過數(shù)據(jù)庫組20把原始分發(fā)文件130輸入到SDA100,因?yàn)樵挤职l(fā)文件130可能已經(jīng)駐留在包含著SDA100的分發(fā)計算機(jī)上。轉(zhuǎn)換程序110具有作為另一輸入的要嵌入到分發(fā)文件130中的數(shù)據(jù)140,并具有所需的公用/專用密碼密鑰對150。嵌入數(shù)據(jù)140是由用戶交互程序120生成的,用戶交互程序120通過UIA200和用戶交互以便接收識別數(shù)據(jù)32、34(圖1中示出)以及來自數(shù)據(jù)庫組20支持軟件應(yīng)用、許可條款、許可用戶的數(shù)據(jù)。盡管嵌入數(shù)據(jù)140可以為任何形式和任何內(nèi)容,預(yù)計嵌入數(shù)據(jù)140將包括可把軟件應(yīng)用15跟蹤到單個用戶以及許可證執(zhí)行的信息。例如,嵌入數(shù)據(jù)140可包括一個唯一序列號,其用于識別分發(fā)到用戶的集合分發(fā)文件170。這可消除掉軟件業(yè)中常見的序列號欺詐,其中現(xiàn)有的軟件應(yīng)用只能進(jìn)行簡單的有效性檢查,而這種檢查可由廣泛的單個有效序列號的蒙混多次使用所欺騙。嵌入數(shù)據(jù)140可采取為每個用戶定制的完整許可證協(xié)議的形式,其中包括用戶姓名、地址、軟件序列號、許可條款等等??梢杂蓴?shù)據(jù)庫組20保存用戶交互程序120收集的用戶信息記錄。轉(zhuǎn)換程序110的輸出是集合分發(fā)文件170,后者既包含原始分發(fā)文件130、嵌入數(shù)據(jù)140的內(nèi)容,還包含嵌入數(shù)據(jù)140和原始分發(fā)文件130的密碼簽字。然后,通過分發(fā)通道300把集合分發(fā)文件170發(fā)送到UIA200。UIA200接著把集合分發(fā)文件170安裝到安裝計算機(jī)上。一旦安裝了集合分發(fā)文件170,它采取已安裝集合分發(fā)文件15的形式。通過其和UIA200的連接,SDA100可和用戶協(xié)商任意的許可證條款、顯示最終用戶許可證協(xié)議(EULA)、確認(rèn)對該協(xié)議的接受、并且根據(jù)已經(jīng)建立的用戶身份以及具體的許可證條款自動地執(zhí)行軟件的聯(lián)機(jī)登記。對于商業(yè)和法律上的考慮,例如,SDA100可對不同國家的用戶提出不同的報價條款及許可證條款,以及可能提供不同的可執(zhí)行版本。此外,可根據(jù)安裝計算機(jī)的屬性如CPU能力提供不同的報價。在確定用戶提出的地址和信用卡號是有效的、相容的以及位于給定幾何區(qū)域內(nèi)的功能上不要求SDA100是智能的。這些功能可由圖1中示出的高層ESD構(gòu)件10實(shí)現(xiàn)。圖3A更詳細(xì)地示出構(gòu)建集合分發(fā)文件170的過程。出于說明的目的,假定原始分發(fā)文件130的結(jié)構(gòu)包括標(biāo)題信息以及用于代碼、靜態(tài)數(shù)據(jù)等的不同類型的內(nèi)部區(qū)段,諸如WindowsTM的‘PortableExecutable’(PE)程序文件。一般的業(yè)內(nèi)人士可理解,本發(fā)明的方法和系統(tǒng)可應(yīng)用若干不同的文件格式。類似地,對轉(zhuǎn)換程序110的輸入140、151以及轉(zhuǎn)換程序110的輸出170示成是計算機(jī)文件,但它們可以是存儲器內(nèi)圖象、來自其它處理機(jī)的流等等。下面說明由SDA100進(jìn)行的構(gòu)建集合分發(fā)文件170的典型步驟順序。1.作為用戶交互程序120判定需要轉(zhuǎn)換的結(jié)果(即,批準(zhǔn)發(fā)送依據(jù)本發(fā)明的方法的某特定集合分發(fā)文件170,并且已經(jīng)構(gòu)建了所需的嵌入數(shù)據(jù)塊140),運(yùn)行轉(zhuǎn)換程序110。除非作出其它指示轉(zhuǎn)換程序110執(zhí)行所有的后續(xù)步驟。其目的是得到通常所稱的“數(shù)字簽字”或“密碼簽字”,其本質(zhì)上具有二個方面(i)通過利用密碼散列算法,生成和數(shù)據(jù)″ed″130、140唯一對應(yīng)的密碼指紋;以及(ii)通過用一個專用密鑰加密保護(hù)密碼指紋,從而通過利用公用密鑰和密碼算法對密碼指紋的接收人可確認(rèn)數(shù)據(jù)″ed″130、140未受到損害,并且其中不需要具有生成新的密鑰指紋的能力,而且也不會似是而非地改變數(shù)據(jù)。對于達(dá)到本發(fā)明的優(yōu)點(diǎn)這二個步驟是必不可少的,因?yàn)闆]有這二個步驟第三方可以在接收人不能察覺的情況下干預(yù)或改變數(shù)據(jù)。該過程不同于簡單地加密數(shù)據(jù)130、140,這樣的方法對于本發(fā)明的運(yùn)行是不夠的,因?yàn)槠洳淮嬖谒剖嵌堑馗淖償?shù)據(jù)130、140是可被察覺的方法。2.轉(zhuǎn)換程序的輸入/輸出邏輯電路111讀入所需的原始分發(fā)文件130、其對應(yīng)的密碼專用密鑰151以及要嵌入的數(shù)據(jù)140。盡管轉(zhuǎn)換程序110不要求,可傳入一個公用密鑰152以便把它添加到集合分發(fā)文件130中。利用密碼散列算法112和公用-專用密鑰(PPK)加密算法113,生成密碼簽字174。該處理的基本步驟是2.1向數(shù)據(jù)″ed″130、140施以單向散列函數(shù)″hf″以生成密碼簽字″edh″,即edh=hf(ed)。對該密碼指紋的要求如下(i)其產(chǎn)生一個合理的壓縮結(jié)果,即長度(edh)<<長度(ed),并且最好為定長結(jié)果,(ii)指紋本身不能回過來用于確定原始數(shù)據(jù)塊,即,不存在反散列函數(shù)″bhf″從而bhf(edh)=ed;(iii)其對″ed″中的改變特別敏感;即,″ed″中的單個位的改變會改變″edh″中約50%的位,以及(iv)構(gòu)造出一個假的嵌入數(shù)據(jù)塊″fed″其會生成和″ed″一樣的指紋,即hf(ed)=hf(fed),極為困難。存在著若干滿足這些要求的算法,例如MD5(報文摘要5)和SHA(安全散列算法)。本發(fā)明也可采用其它也能滿足上述準(zhǔn)則的算法。2.2利用專用密鑰151″prk″和公用/專用加密函數(shù)″ppef″加密密碼指紋″edh″以生成密碼簽字″edf″174,即edf=ppef(prk,edh)。對加密函數(shù)″ppef″的要求如下(i)其產(chǎn)生的結(jié)果不明顯大于其輸入;(ii)其有效地保護(hù)相對短的數(shù)據(jù)組,因?yàn)椤錯dh″為若干字節(jié)長而不是數(shù)千字節(jié)長;(iii)計算上不可能利用公用密鑰151(″puk″)和密碼簽字″edf″174或利用″edf″174的多個實(shí)例(可在安裝計算機(jī)上看到它們)推導(dǎo)出專用密鑰″prk″,即,不存在使puk=cf(edf,puk)的破譯函數(shù)″cf″;(iv)在實(shí)際上不擁有″ppef″和″prk″二者下不存在可想出的利用″prk″復(fù)制″ppef″的行為的手段。原則上,可從其對應(yīng)的解密函數(shù)推導(dǎo)出″ppef″,從而在實(shí)際范圍內(nèi)″prk″是重要的秘密;(v)其對應(yīng)的公用密鑰解密函數(shù)″ppdf″在典型安裝計算機(jī)上對于有關(guān)的文件長度具有可接受的性能。請注意,若出于安全原因選擇不能產(chǎn)生可接受性能的特定ppef/ppdf,可以只對選定文件的一部分進(jìn)行加密并且仍可提供相同的好處;(vi)其對該領(lǐng)域,即數(shù)字簽字,是適用的(最好,通過常規(guī)密碼分析)。存在若干滿足這些要求的算法,例如RSA和Rabin與ElGamal的算法。仔細(xì)地選擇實(shí)施參數(shù)可幫助得到所需的安全性和性能。3.把來自步驟2.1的密碼簽字174以及要嵌入的數(shù)據(jù)140插入到原始分發(fā)文件130中以生成集合分發(fā)文件170。這種插入不是簡單地把各個位拷貝到文件的中間,因?yàn)樗仨氻槒奶囟ㄎ募愋偷母袷揭?。例如,必須更新?biāo)題以識別新數(shù)據(jù)等等。本發(fā)明的系統(tǒng)和方法不要求嵌入數(shù)據(jù)171或密碼簽字174以任何特定方式定位在集合分發(fā)文件170中。所需要的是(i)安裝計算機(jī)上的軟件,尤其中UIA200,能定位嵌入數(shù)據(jù)171和密碼簽字174,以及(ii)在安裝到安裝計算機(jī)上之后,集合分發(fā)文件170能夠執(zhí)行其預(yù)定的功能;例如,若它是一個可執(zhí)行文件,它仍舊符合結(jié)構(gòu)要求以及其它平臺要求,從而它可象轉(zhuǎn)換處理之前那樣裝入到安裝計算機(jī)上并在其上運(yùn)行。例如,若文件是以含有英特微處理器的現(xiàn)行計算機(jī)的通用格式并且是在微軟的視窗操作系統(tǒng)下運(yùn)行,轉(zhuǎn)換程序110應(yīng)檢查原始分發(fā)文件130的″標(biāo)題″區(qū)段以判定是否存在包含靜態(tài)數(shù)據(jù)的區(qū)段以便避免含有可執(zhí)行代碼的區(qū)段。應(yīng)選出靜態(tài)數(shù)據(jù)區(qū)段,并且應(yīng)找出或建立用戶嵌入數(shù)據(jù)塊171和密碼簽字174的適當(dāng)位置。例如,這可如此進(jìn)行(i)確定現(xiàn)有靜態(tài)數(shù)據(jù)塊具有未使用的足以增添這些數(shù)據(jù)的容量,(ii)分配新的靜態(tài)數(shù)據(jù)塊,或者(iii)擴(kuò)展現(xiàn)有靜態(tài)數(shù)據(jù)塊。圖3A中示出的方法公開一種單步處理,其中為原始分發(fā)文件130和嵌入數(shù)據(jù)140確定密碼簽字174。如圖3B中示出的一種供選用方法采用二步處理,其中利用上面步驟2中說明的同樣算法首先生成嵌入數(shù)據(jù)171的密碼簽字172。接著再把該嵌入數(shù)據(jù)密碼簽字172嵌入到原始分發(fā)文件130中。然后把原始分發(fā)文件130、嵌入數(shù)據(jù)171以及嵌入數(shù)據(jù)密碼簽字172輸入到第二密碼步驟,在該步驟中采用上面步驟2中說明的同樣算法確定總體密碼簽字176。雙步處理的好處是它增加了本發(fā)明的系統(tǒng)和方法驗(yàn)證和檢測對安裝計算機(jī)上安裝的軟件應(yīng)用的竄改的能力。例如,可為二個密碼簽字172、176提供獨(dú)立的密碼公用/專用密鑰對。此外,即使原始文件內(nèi)容173a、173b被破壞,雙步處理仍能提取和驗(yàn)證嵌入數(shù)據(jù)171。利用雙步密碼處理的一種變型的另一種構(gòu)建集合分發(fā)文件170的替代辦法是,首先只用原始文件內(nèi)容173a、173b得到第一密碼簽字175,并且用嵌入數(shù)據(jù)171得到第二密碼簽字172。這在圖3C中示出。該方法具有圖3B中示出的雙步處理的所有優(yōu)點(diǎn),并且還允許獨(dú)立驗(yàn)證嵌入數(shù)據(jù)171以及原始文件內(nèi)容173a、173b。這允許用戶確認(rèn)發(fā)行商提供的原始分發(fā)文件130未被本發(fā)明所公開的聯(lián)機(jī)安裝處理所改變。一般的業(yè)內(nèi)人士會理解,不必利用相同的密碼公用/專用密鑰對或者甚至不必利用相同的密鑰算法產(chǎn)生圖3A、3B和3C中示出的任何密碼簽字172、174、175、176。此外,不必在每次向用戶分發(fā)集合分發(fā)文件170時計算密碼簽字172、174、175、176。SDA100可保持一個部分預(yù)計算簽字?jǐn)?shù)據(jù)庫以加快有關(guān)計算??梢允褂媚茉诎惭b計算機(jī)處得到的密碼硬件支持如RSA協(xié)處理器以得到最大安全性下的良好響應(yīng)性。此外,不必由SDA100整體地構(gòu)建集合分發(fā)文件170。必須的只是可由UIA200整體地發(fā)送集合分發(fā)文件170。圖4示出UIA200的結(jié)構(gòu)和運(yùn)行,UIA200包括過渡安裝索引204、過渡安裝輸入文件集205以及UIA固有可執(zhí)行軟件程序203。業(yè)內(nèi)人士可理解,存在許多實(shí)施UIA程序203的方法。由于UIA200的功能性的重要部分涉及用戶交互以及和SDA100的對話,實(shí)施UIA200的選擇余地包括使它成為萬維網(wǎng)(WWW)瀏覽器的附屬物,或者把它實(shí)現(xiàn)成一個獨(dú)立程序,該獨(dú)立程序嵌入或調(diào)用安裝計算機(jī)上已有的瀏覽器能力。下面說明UIA200的典型執(zhí)行順序1.在把UIA程序203以及其支持?jǐn)?shù)據(jù)204、205復(fù)制到安裝計算機(jī)上后,用戶運(yùn)行UIA程序203。請注意也可遠(yuǎn)程地安裝UIA程序203,例如由WWW服務(wù)器發(fā)送成瀏覽器框架內(nèi)的現(xiàn)用程序。除非另外提出,所有后續(xù)步驟由UIA程序203執(zhí)行。2.安裝計算機(jī)讀出安裝索引204和安裝輸入文件集205以確定和安裝所需軟件應(yīng)用(稱為″被安裝的集合分發(fā)文件″)15相對應(yīng)的特定缺省SDA100。3.檢查安裝計算機(jī)以確定用于建立與SDA100通信的適當(dāng)裝置,例如,TCP/IP網(wǎng)絡(luò)接口、調(diào)制解調(diào)器等的存在。若不能找到這樣的裝置,程序供選地幫助用戶查找適當(dāng)工作的參數(shù),然后發(fā)出警告下停下。這是由于對SDA100的訪問對于本發(fā)明的運(yùn)行是必不可少的。4.用來自上述步驟(2)和(3)的缺省數(shù)據(jù)提示用戶1,即告訴UIA程序203在何處查找所需的SDA100以及在哪種類型的分發(fā)通道300上。然后給用戶1改變該信息的機(jī)會,或出于商業(yè)原因(例如,可能某SDA已改變名字或位置),或出于技術(shù)原因(例如,用戶不具有正在工作的TCP/IP連接并希望使用直接調(diào)制解調(diào)器鏈接,可能通過800免費(fèi)電話號碼。)5.通過分發(fā)通道300,UIA程序203建立和SDA100的接觸。若不能實(shí)現(xiàn),UIA程序在供選地幫助用戶確定適當(dāng)工作的參數(shù)后發(fā)出警告并停下。盡管對于本發(fā)明的運(yùn)行分發(fā)通道300的安全性是任選的,但預(yù)計分發(fā)通道300可支持適當(dāng)?shù)谋Wo(hù)SDA100不被欺詐的協(xié)議。支持授權(quán)和隱私的常用協(xié)議,例如安全套接層(SSL)是恰當(dāng)可用的。6.UIA程序203充當(dāng)用戶和SDA100之間的中介,使用戶確定SDA100對于所需被安裝集合分發(fā)文件15能支持的法律協(xié)議。UIA程序還具有判定安裝計算機(jī)的可使用系統(tǒng)資源是否滿足所需被安裝集合分發(fā)文件15的要求的能力。對于向用戶顯示的內(nèi)容,用戶可能提出的問題以及安裝計算機(jī)可能收集的數(shù)據(jù)等上的各種選擇,不存在技術(shù)上的限制。由于SDA100運(yùn)行成歷經(jīng)數(shù)據(jù)采集、數(shù)據(jù)嵌入、軟件分發(fā)及軟件安裝處理,本發(fā)明的系統(tǒng)和方法可在甚至不向用戶通知密碼密鑰或任何他們可推演的信息下采用各種級別的密碼。這和其它電子發(fā)送系統(tǒng)不同,它們典型地需要相繼地脫機(jī)輸入、秘密密鑰、或者衍生得到,從而明顯地泄漏給用戶。當(dāng)然,密碼簽字的驗(yàn)證中使用的公用密鑰是個例外,用戶可方便地確定公用密鑰,但由于不能欺詐性應(yīng)用它們,它不是一個安全問題。7.假定用戶1滿足SDA100提出的所有準(zhǔn)則,SDA100將確定必須發(fā)送給UIA200的具體文件集以完成安裝計算機(jī)上的安裝,尤其是至少包括一個集合分發(fā)文件170(圖3A-3C中示出)。對于本發(fā)明的系統(tǒng)和方法,用戶1和SDA100之間達(dá)成的協(xié)議的實(shí)質(zhì)或者協(xié)議如何生效是不重要的。這由SDA100以及其所朝向的商業(yè)系統(tǒng)(若存在)負(fù)責(zé)。最重要的是,UIA200不而且本身也不能決定是否已在用戶和SDA100之間達(dá)成協(xié)議。除了通過和SDA100的交互之外,UIA200不并且應(yīng)該不訪問所有完成安裝所需的信息。8.SDA100通過分發(fā)通道300向ULA200發(fā)送所需分發(fā)文件的索引。UIA200利用該索引擴(kuò)大其自身的本地索引以構(gòu)成用于即將到來的安裝的完整索引。9.SDA100構(gòu)建一個或多個集合分發(fā)文件170以及任何其它安裝所需的文件,并且經(jīng)過分發(fā)通道300把這些文件發(fā)送給UIA200。10.UIA程序203利用其本地索引和支持文件204、205以與安裝計算機(jī)的平臺相符合的方式完成被安裝分發(fā)文件15的安裝。具體地,UIA200在密碼簽字174和嵌入數(shù)據(jù)171不受到影響下安裝集合分發(fā)文件170。一旦把集合分發(fā)文件170安裝在安裝計算機(jī)上,它被稱為被安裝的集合分發(fā)文件15。UIA程序203還根據(jù)需要執(zhí)行其它系統(tǒng)更新212,例如更新操作系統(tǒng)注冊(在視窗95情況下)以及安裝任何附加的應(yīng)用文件。也可能涉及其它任選的操作,例如留下適當(dāng)?shù)摹话惭b’實(shí)用程序。12.若出現(xiàn)錯誤,UIA程序203可通知SDA100重新啟動安裝。若不出現(xiàn)錯誤,UIA程序203通知SDA100已接收所有所需數(shù)據(jù)。這應(yīng)例如用作SDA100的觸發(fā)信號以進(jìn)行財務(wù)交易。把財務(wù)事宜放在處理的后半部分可使未在成功地安裝軟件應(yīng)用下就對用戶收費(fèi)的可能性變?yōu)樽钚?,這減少了用戶受挫的一種原因。13.UIA程序203刪除任何可能放在安裝計算機(jī)中的過渡文件、索引等等。14.UIA程序203斷開和SDA100、分發(fā)通道300的連接并退出。一旦完成了后面進(jìn)一步詳細(xì)說明的供選用的驗(yàn)證過程,用戶接著可在安裝計算機(jī)上運(yùn)行被安裝的集合分發(fā)文件15。應(yīng)理解,可在完成安裝之前或之后進(jìn)行后面說明的驗(yàn)證過程。本發(fā)明的方法和系統(tǒng)應(yīng)減少由購買好的軟件未能成功安裝而造成的爭端。若安裝計算機(jī)不具有運(yùn)行所需軟件應(yīng)用的足夠資源,UIA200可檢測出并在作出任何財務(wù)交易之前警告用戶。此外,可在安裝處理之后完成用戶購買軟件應(yīng)用的最終財務(wù)約定,從而財務(wù)交易是成功的但安裝本身卻是失敗的概率會很低。一般的業(yè)內(nèi)人士會理解,可以以大規(guī)模生產(chǎn)的并包含著原始分發(fā)文件130的介質(zhì)形式向用戶分發(fā)UIA200,或者從單份拷單在不會受到成功的蒙混再使用下衍生出UIA200。在這種情況下,SDA100只向UIA200發(fā)送其構(gòu)建集合分發(fā)文件170并且完成安裝所需的增量信息。通過確保UIA200的分發(fā)形式包含不完整的可執(zhí)行文件集,從而為能在安裝計算機(jī)上執(zhí)行需要來自SDA100的基本數(shù)據(jù),可以擊敗任何非法翻印軟件應(yīng)用的企圖。圖5表示從被安裝的集合分發(fā)文件15驗(yàn)證和提取用戶數(shù)據(jù)以便證實(shí)原始文件內(nèi)容173a、173b以及嵌入數(shù)據(jù)171都未被竄改。對于本發(fā)明的操作該步驟是任選的,因?yàn)橛脩艨稍诓或?yàn)證下運(yùn)行被安裝的集合分發(fā)文件15。應(yīng)理解,下面說明的驗(yàn)證過程可在完成安裝之前或之后進(jìn)行。若在安裝計算機(jī)上安裝之前進(jìn)行驗(yàn)證,則UIA203對集合分發(fā)文件170,而不是對已安裝的集合分發(fā)文件,進(jìn)行下述過程。圖5中示出的處理是和利用圖3B中示出的雙步處理的已安裝集合分發(fā)文件15相關(guān)的。對從利用圖3A中示出的單步密碼處理構(gòu)造的或者利用圖3C中示出的雙步處理的變型構(gòu)建的已安裝集合分發(fā)文件15驗(yàn)證和提取用戶數(shù)據(jù)的原理與下面所說明的相同,但要根據(jù)要比較的密碼密鑰的特性作出適當(dāng)?shù)男薷?。盡管示出一個獨(dú)立的驗(yàn)證及讀出程序400執(zhí)行驗(yàn)證和讀出嵌入數(shù)據(jù)171的功能,業(yè)內(nèi)人士會理解,這些功能不一定要在這種獨(dú)立的程序中實(shí)現(xiàn),而是可以和其它程序,例如UIA200、許可證檢查程序、病毒檢查程序、程序裝入軟件、復(fù)制程序等,的功能相結(jié)合。下面說明驗(yàn)證及讀出程序400的典型執(zhí)行順序1.或者由用戶或者由諸如UIA200的其它程序的自動調(diào)用,運(yùn)行驗(yàn)證及讀出程序400。除非另外指出,下面的步驟都由驗(yàn)證及讀出程序400執(zhí)行。2.或者通過提示用戶或者由UIA200作為參數(shù)傳送,判定要處理哪一個已安裝集合分發(fā)文件15。還判定(若可從特定實(shí)施中衍生,這于文件本身包含著不同)對該已安裝集合分發(fā)文件15可應(yīng)用哪個特定公用密鑰152。3.打開所研究的已安裝集合分發(fā)文件15并檢查它滿足應(yīng)用格式要求。例如,某給定的實(shí)現(xiàn)可能支持IntelTM處理器的‘PE’格式下的可執(zhí)行(EXE)和動態(tài)鏈接庫(DLL)文件。若該已安裝集合分發(fā)文件15失敗于這些基本檢查或不能找到,驗(yàn)證及讀出程序400發(fā)出適當(dāng)警告并停止。4.檢查文件以確定總密碼簽字176、嵌入數(shù)據(jù)密碼簽字172及嵌入數(shù)據(jù)171的位置??梢愿鞣N方式格式化已安裝集合分發(fā)文件15以支持該確定,例如在文件標(biāo)題內(nèi)包括指向這些區(qū)段的指針。若在該特定實(shí)現(xiàn)中是適用的(即,公用密鑰152包含在文件中,而和要由驗(yàn)證和讀出程序400確定不同),查找并提取所需的公用密鑰152。若上述任一步驟失敗,驗(yàn)證及讀出程序400在適當(dāng)告警下失敗。5.利用公用密鑰152把總密碼簽字176解密成不加密形式176a(解密后的遠(yuǎn)程總指紋)。6.利用和SDA100采用的相同已知密碼簽字算法,計算總密碼簽字的本地版本176b(本地算出的總指紋)。該計算必須排除掉總密碼簽字176自身,即復(fù)蓋除176之外的已安裝集合分發(fā)文件15的所有部分,以使本地計算的總指紋176b和其自身無關(guān)。7.把本地計算的總指紋176b和解密后的遠(yuǎn)程總指紋176a進(jìn)行比較。若它們不同,驗(yàn)證及讀出程序在警告已安裝的集合分發(fā)文件15被破壞下失敗。此刻,UIA200可被調(diào)用以和SDA100接觸以再次獲得已安裝的集合分發(fā)文件15。8.提取嵌入數(shù)據(jù)171,若程序是由用戶調(diào)用的圖形地把嵌入數(shù)據(jù)171呈現(xiàn)給用戶,若是由軟件調(diào)用的則以報文形式傳送給調(diào)用者例行程序。9.利用公用密鑰152把嵌入數(shù)據(jù)密碼簽字172解密成其不加密形式172a(解密后的遠(yuǎn)程嵌入數(shù)據(jù)指紋)。10.利用和SDA100所采用的相同已知密碼簽字算法計算嵌入數(shù)據(jù)密碼簽字172的本地版本172b(本地算出的嵌入數(shù)據(jù)指紋)。11.對本地算出的嵌入數(shù)據(jù)指紋172b和解密的遠(yuǎn)程嵌入數(shù)據(jù)指紋172a進(jìn)行比較。若它們不同,驗(yàn)證及讀出程序在警告嵌入數(shù)據(jù)171被破壞下失敗。若后面跟著的是圖3A中示出的單步處理,接著對密碼簽字174進(jìn)行類似的比較過程。同樣,若進(jìn)行的是圖3C中示出的雙步密碼處理的變型,接著對原始文件內(nèi)容密碼簽字175作類似的比較過程。圖6是一個流程圖,其綜合相對于圖2、3A、3B、3C、4和5說明的過程。請注意,可由任何裝置向UIA200發(fā)送用來驗(yàn)證已安裝集合分發(fā)文件15的完整性的公用密鑰152,因?yàn)樗皇敲孛懿⑶铱捎糜诓恢挂粋€的用途。公用密鑰可嵌入到集合分發(fā)文件170中,它可以按獨(dú)立文件或報文顯式地發(fā)送給用戶,或者,可由安裝計算機(jī)自動地從網(wǎng)絡(luò)托管機(jī)構(gòu)(例如VerisignTM公司)獲得。圖7是可依據(jù)本發(fā)明采用的另一組過程的流程圖,其中利用SDA100為該特定交易計算的唯一專用密碼加密原始文件內(nèi)容173a、173b。SDA100保持該唯一專用密鑰的記錄,并且通過分發(fā)通道300向UIA200發(fā)送相應(yīng)的唯一公用密鑰和集合分發(fā)文件170。UIA200利用該公用密鑰解密集合分發(fā)文件170。出于安全原因,最好不要永久性地在安裝計算機(jī)上存儲該公用密鑰。替代地,只在安裝期間讓該唯一公用密鑰存在于計算機(jī)的隨機(jī)存取存儲器(RAM)中。這使得實(shí)際上不可能再分發(fā)集合分發(fā)文件170。盡管參照各種優(yōu)選實(shí)施例對本發(fā)明進(jìn)行了說明,一般的業(yè)內(nèi)人士可認(rèn)識到一些改變、替代和修改是可能的。在圖8示出已安裝集合分發(fā)文件15的各種使用。在安裝后并由UIA驗(yàn)證之后,可以常規(guī)地在以不以任何方式使用嵌入數(shù)據(jù)171下運(yùn)行已安裝的集合分發(fā)文件15。為了確保許可證一致,可以和許可證強(qiáng)制程序一起運(yùn)行已安裝的集合分發(fā)文件以證實(shí)組成嵌入數(shù)據(jù)171的一部分的任何許可證條款得到遵守。也可把嵌入數(shù)據(jù)171以及密碼簽字172、174、175、176(取決于構(gòu)建集合分發(fā)文件170的方式)用作為某病毒檢查程序的輸入,從而可通過利用公用密鑰152和與SDA100采用的相同的已知密碼簽字算法進(jìn)行已安裝集合分發(fā)文件15的完整性檢查。每次運(yùn)行已安裝集合分發(fā)文件15時,還可以通過它自己或者和驗(yàn)證裝入程序一起運(yùn)行圖5中示出的驗(yàn)證及讀出程序400,以拒絕竄改文件并不允許被竄改的已安裝集合分發(fā)文件15運(yùn)行。還可只使用嵌入數(shù)據(jù)171以向用戶顯示。本文所公開的方法和系統(tǒng)還可用于對現(xiàn)存于安裝計算機(jī)上的已安裝集合分發(fā)文件進(jìn)行升級。在這種情況下,UIA200和SDA100將確認(rèn)安裝計算機(jī)上現(xiàn)有的已安裝集合分發(fā)文件15的許可證狀態(tài),接著調(diào)用本文公開的方法和系統(tǒng),以對該安裝計算機(jī)構(gòu)建、發(fā)送和安裝已安裝集合分發(fā)文件15的升級版本??梢栽谟脩粽埱笙抡{(diào)用,或者可以在UIA200檢測出可使用原始分發(fā)文件130的新版本時自動調(diào)用,本發(fā)明的升級能力。已安裝的集合分發(fā)文件15的唯一性可用于把其運(yùn)行限制在安裝計算機(jī)中的專用中央處理機(jī)(CPU)上。對這種目的的CPU的識別可由UIA200在收集傳輸?shù)絊DA100的數(shù)據(jù)32、34階段進(jìn)行。本文公開的SDA100和UIA200不限于只在安裝或升級已安裝分發(fā)文件170時調(diào)用。例如,在計算機(jī)游戲環(huán)境下,可在用戶到達(dá)游戲的某處時調(diào)用SDA100和UIA200,以對用戶給出購買游戲的附加功能或級別的選擇機(jī)會。本公開并不預(yù)先假定UIA200不擁有提高本發(fā)明的功能度的附加智能。例如,UIA200可具有找到和識別安裝計算機(jī)上各自的個人數(shù)字執(zhí)照的智能,該執(zhí)照建立其身份,這對于授權(quán)有關(guān)交易的全部或一部分是充分的。這種個人數(shù)字執(zhí)照以及它們的應(yīng)用方法應(yīng)符合已建立的標(biāo)準(zhǔn),例如商用熱照提供商VerisignTM公司采用的標(biāo)準(zhǔn)。此外,UIA200可具有查找和識別數(shù)字“優(yōu)惠券”執(zhí)照的智能,這種優(yōu)惠性確定用戶具有某種特定特權(quán),例如對某個軟件的特殊價格的權(quán)利,或者一種確定其在特定團(tuán)體如某公司中的會員權(quán)利。此外,UIA200應(yīng)定位依據(jù)本發(fā)明的方法安裝的先有文件,并且確定嵌入數(shù)據(jù)171。若UIA200確定存在著可影響交易條款的信息或者存在表示用戶的可能興趣例如升級的信息,UIA200可把該信息發(fā)送到SDA100,從而SDA100可適當(dāng)?shù)刂薪榻灰?、通告升級等等。這樣的一個典型例子是檢查依據(jù)本發(fā)明安裝的字處理應(yīng)用軟件以確定該用戶有資格自由升級,從而本發(fā)明可接著進(jìn)入安裝。在本發(fā)明的另一組變型中,已安裝的集合分發(fā)文件15是一種采用Nortel算法授權(quán)(NAN)的原理的文件,該原理在美國08/674,037號專利申請中公開以用于為其自身的完整性增添堅(jiān)固的自管理。在第一變型中,運(yùn)行期NAA算法(其已具有把已安裝集合分發(fā)文件15的自身代碼用作為適當(dāng)運(yùn)行所需的輸入的能力,并且從而具有在竄改情況下強(qiáng)制毀滅性失效的能力)把該輸入的范圍擴(kuò)展到包括由SDA100添加的一個或多個數(shù)據(jù)項(xiàng)所構(gòu)成的存儲器內(nèi)拷貝,例如總密碼簽字176。在第二變型中,“啟動存根(launchstub)”構(gòu)件可前進(jìn)得更遠(yuǎn),即提取和譯碼已安裝集合分發(fā)文件15中的嵌入數(shù)據(jù)171,并且把其上(例如比如由網(wǎng)絡(luò)卡上某物理介質(zhì)訪問控制地址識別的專用CPU)的許可證條款和檢查當(dāng)前環(huán)境所找到的條款進(jìn)行比較。根據(jù)Nortel算法授權(quán)的原則,“啟動存根”不必“決定”是否要繼續(xù),因?yàn)檫@種決策點(diǎn)明顯地是希望擊敗安全機(jī)制的‘黑客’的攻擊點(diǎn)。相反,它會根據(jù)正常的程序運(yùn)行修改數(shù)據(jù),以使得僅當(dāng)所述數(shù)據(jù)和每個許可證的適當(dāng)環(huán)境對應(yīng)時程序才繼續(xù)運(yùn)行。對于第一變型,應(yīng)為特定情況預(yù)構(gòu)建應(yīng)用程序,因?yàn)楦鶕?jù)該待決的技術(shù),其適當(dāng)?shù)目刂屏髦皇前言肌徽_的’輸入數(shù)據(jù)使用成應(yīng)用正確的許可證數(shù)據(jù)或者其簡單的衍生而得到的‘改正的’數(shù)據(jù)。本文所公開的本發(fā)明不必必須改變已安裝集合分發(fā)文件15的安裝形式的功能性,而只對它增加信息和驗(yàn)證性。然后,存在著一些可把已安裝集合分發(fā)文件15的功效以本發(fā)明允許的新方式予以改變的手段。在一種變型中,SIA100會訪問某給定程序的各種可執(zhí)行形式或者訪問會動態(tài)地構(gòu)建不同形式的軟件例行程序,以生成滿足特定用戶功能/價格要求的程序,和/或該程序主動地把自己捆綁到非常特別的許可證條款。例如,在微軟視窗環(huán)境下,可通過選擇性地包括的不同動態(tài)鏈接庫(DLLS)嵌入不同的功效。在另一種變型中,程序文件的初始可執(zhí)行形式具有內(nèi)置的特殊功能的和與許可證捆綁的選擇,并且SDA100會拒絕(可能是可驗(yàn)證的)讓可執(zhí)行文件顯示其所需功效的數(shù)據(jù)進(jìn)入可執(zhí)行文件。在再一種變型中,SDA100可以利用對特定程序結(jié)構(gòu)具有詳細(xì)支持的例行程序,以便向先有的未明確設(shè)計成擁有這種變型的可執(zhí)行程序增添可變的代碼。本發(fā)明所說明的各種實(shí)施例把某特定文件類型的單個“核心”文件集中為軟件應(yīng)用的安裝及安全性的基石。然而,本發(fā)明的方法當(dāng)然可應(yīng)用于特定情況下多于一個文件或多于一種文件類型。例如,和已安裝軟件應(yīng)用相關(guān)的所有靜文件可接收嵌入信息,以使它們都是可驗(yàn)證的并和特定的應(yīng)用及安裝事例相關(guān)。權(quán)利要求1.一種用于從分發(fā)計算機(jī)向安裝計算機(jī)電子分發(fā)軟件應(yīng)用的方法,包括步驟a.在所述分發(fā)計算機(jī)接收識別信息;b.在所述分發(fā)計算機(jī)把所述識別信息嵌入到所述軟件應(yīng)用中以形成可識別的軟件應(yīng)用;c.為所述可識別的軟件應(yīng)用生成密碼簽字;d.把所述密碼簽字嵌入到所述可識別的軟件應(yīng)用中以形成可識別的和可驗(yàn)證的軟件應(yīng)用;以及e.從所述分發(fā)計算機(jī)把所述可識別的和可驗(yàn)證的軟件應(yīng)用傳送到所述安裝計算機(jī)。2.權(quán)利要求1的方法,其中為所述可識別的軟件應(yīng)用生成密碼簽字的步驟包括步驟a.對可識別的軟件應(yīng)用″ed″施加單向散列函數(shù)″hf″以生成散列結(jié)果“edh”,其中edh=hf(ed);以及b.利用一個密碼密鑰加密散列結(jié)果″edh″以得到密碼簽字。3.權(quán)利要求2的方法,其中單向散列函數(shù)是利用消息摘要5(MD5)算法或安全散列算法(SHA)之一產(chǎn)生的。4.權(quán)利要求2或3的方法,其中加密散列結(jié)果″edh″的步驟包括利用一個公用/專用加密函數(shù)″ppef″和一個專用密碼密鑰″prk″加密散列結(jié)果″edh″以生成密碼簽字″edf″的步驟,其中edf=ppef(prk,edh)。5.權(quán)利要求4的方法,其中利用RSA算法、Robin算法、ElGamal算法之一產(chǎn)生公用/專用加密函數(shù)″ppef″。6.權(quán)利要求1、2、3、4或5的方法,其中通過因特網(wǎng)連接分發(fā)計算機(jī)和安裝計算機(jī)。7.權(quán)利要求1、2、3、4、5或6的方法,其中所述分發(fā)計算機(jī)處接收的識別信息是從所述安裝計算機(jī)發(fā)送的。8.一種在安裝計算機(jī)處電子地接收從分發(fā)計算機(jī)分發(fā)的軟件應(yīng)用的方法,包括步驟a.從分發(fā)計算機(jī)接收可識別的和可驗(yàn)證的軟件應(yīng)用,該可識別的和可驗(yàn)證的軟件應(yīng)用帶有在其中嵌入的識別信息和該可識別的和可驗(yàn)證的軟件應(yīng)用的密碼簽字;以及b.在安裝計算機(jī)處安裝該可識別的和可驗(yàn)證的軟件應(yīng)用。9.權(quán)利要求8的方法,其中在從分發(fā)計算機(jī)接收可識別的和可驗(yàn)證的軟件應(yīng)用的步驟之前,安裝計算機(jī)向分發(fā)計算機(jī)發(fā)送識別信息。10.權(quán)利要求8或9的方法,其中在安裝可識別的和可驗(yàn)證的軟件應(yīng)用的步驟之前,安裝計算機(jī)驗(yàn)證該軟件應(yīng)用的完整性。11.權(quán)利要求10的方法,其中安裝計算機(jī)利用密碼簽字驗(yàn)證軟件應(yīng)用的完整性。12.一種從分發(fā)計算機(jī)向安裝計算機(jī)電子地分發(fā)軟件應(yīng)用的方法,包括步驟a.在所述分發(fā)計算機(jī)接收識別信息;b.在所述分發(fā)計算機(jī)把所述識別信息嵌入到所述軟件應(yīng)用之中以形成可識別的軟件應(yīng)用;c.為所述可識別的軟件應(yīng)用生成密碼簽字;d.把所述密碼簽字嵌入到所述可識別軟件應(yīng)用中以形成可識別的和可驗(yàn)證的軟件應(yīng)用;e.從所述分發(fā)計算機(jī)把所述可識別的和可驗(yàn)證的軟件應(yīng)用傳輸?shù)剿霭惭b計算機(jī);以及f.在所述安裝計算機(jī)安裝所述可識別的和驗(yàn)證的軟件應(yīng)用。13.權(quán)利要求12的方法,其中通過因特網(wǎng)連接分發(fā)計算機(jī)和安裝計算機(jī)。14.權(quán)利要求12或13的方法,其中在所述分發(fā)計算機(jī)處接收的識別信息是從所述安裝計算機(jī)發(fā)送的。15.一種軟件分發(fā)計算機(jī)用于向用戶分發(fā)可識別的和可驗(yàn)證的軟件應(yīng)用,其包括a.所述軟件分發(fā)計算機(jī)和所述用戶之間的通信鏈接;b.用于存儲供分發(fā)的軟件應(yīng)用的存儲部件;c.和所述鏈接通信的通信接口,用于接收所述用戶的識別數(shù)據(jù),并用于向所述用戶傳輸所述可識別的和可驗(yàn)證的軟件應(yīng)用;d.用于把從所述安裝計算機(jī)接收的數(shù)據(jù)嵌入到所述軟件應(yīng)用以形成可識別的軟件應(yīng)用的裝置;e.用于為所述可識別的軟件應(yīng)用生成密碼簽字的裝置;以及f.用于把所述密碼簽字嵌入到所述可識別的軟件應(yīng)用中以形成所述可識別的和可驗(yàn)證的軟件應(yīng)用。16.一種用于接收由分發(fā)計算機(jī)分發(fā)的可識別的和可驗(yàn)證的軟件應(yīng)用的軟件安裝計算機(jī)a.所述軟件安裝計算機(jī)和所述軟件分發(fā)計算機(jī)之間的通信鏈接;b.用于存儲識別數(shù)據(jù)并用于存儲已安裝軟件應(yīng)用的存儲部件;c.和所述鏈接通信的計算機(jī)通信接口,用于傳輸所述識別數(shù)據(jù),并且用于接收所述可識別的和可驗(yàn)證的軟件應(yīng)用,該可識別的和可驗(yàn)證的軟件應(yīng)用具有嵌入在其中的識別數(shù)據(jù)和該可識別、可驗(yàn)證的軟件應(yīng)用的密碼簽字;d.用于在所述計算機(jī)存儲部件上安裝所述可識別的和可驗(yàn)證的軟件應(yīng)用的裝置。17.一種用于從分發(fā)計算機(jī)向安裝計算機(jī)分發(fā)可識別的和可驗(yàn)證的軟件應(yīng)用的軟件分發(fā)計算機(jī),其包括一個分發(fā)計算機(jī);一個安裝計算機(jī);所述安裝計算機(jī)和分發(fā)計算機(jī)之間的通信鏈接;所述分發(fā)計算機(jī)包括a.分發(fā)計算機(jī)存儲部件,用于存儲供分發(fā)的軟件應(yīng)用;b.和所述鏈接通信的分發(fā)計算機(jī)通信接口,用于向所述安裝計算機(jī)傳送可識別的和可驗(yàn)證的軟件應(yīng)用,并用于從所述安裝計算機(jī)接收識別數(shù)據(jù);c.用于把從所述安裝計算機(jī)接收的識別數(shù)據(jù)嵌入到所述軟件應(yīng)用中以形成可識別的軟件應(yīng)用的裝置;d.用于為所述可識別的軟件應(yīng)用生成密碼簽字的裝置;以及e.用于把所述密碼簽字嵌入到所述可識別的軟件應(yīng)用以形成可識別的和可驗(yàn)證的軟件應(yīng)用;所述安裝計算機(jī)包括a.安裝計算機(jī)存儲部件,用于存儲所述識別數(shù)據(jù),并用于存儲已安裝的軟件應(yīng)用;b.和所述鏈接通信的安裝計算機(jī)通信接口,用于向所述分發(fā)計算機(jī)傳送所述識別數(shù)據(jù),并且用于從所述分發(fā)計算機(jī)接收所述可識別的和可驗(yàn)證的軟件應(yīng)用;以及d.用于在所述安裝計算機(jī)存儲部件中安裝所述軟件應(yīng)用的裝置。全文摘要一種用于在安裝計算機(jī)上創(chuàng)建、分發(fā)和銷售對某特定用戶是可驗(yàn)證的和可跟蹤的唯一定制的軟件應(yīng)用實(shí)例的方法。駐留在分發(fā)計算機(jī)上的安全分發(fā)代理收集識別信息,并計算軟件應(yīng)用及識別信息的密碼簽字。通過安全分發(fā)代理把識別信息和密碼簽字嵌入到該軟件應(yīng)用中。駐留在安裝計算機(jī)上的用戶安裝代理管理在安裝計算機(jī)上對帶有嵌入數(shù)據(jù)的軟件應(yīng)用的安裝。在安裝之前,用戶安裝代理可利用密碼簽字驗(yàn)證軟件應(yīng)用以及識別信息是可信的和未被竄改的。文檔編號G06F21/22GK1255209SQ98804864公開日2000年5月31日申請日期1998年3月18日優(yōu)先權(quán)日1997年4月10日發(fā)明者格爾頓·艾德華·拉羅斯,戴維·伊恩·阿蘭申請人:查耐威爾有限公司