專利名稱:保護軟件的計算機系統(tǒng)及一種保護軟件的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及防止軟件被非法使用尤其是防止非法的拷貝和違反許可的裝置。
商業(yè)軟件聯(lián)盟估計1995年因軟件侵權(quán)造成的財政損失為商業(yè)用軟件81億美元、全部軟件152億美元。
提出的解決方法有兩個方面-改進知識產(chǎn)權(quán)(IPR)的法規(guī),-加強電拷貝和許可保護(ECP)裝置。
在許多國家都改進了IPR法規(guī)及其實施,但這在全世界另外一部分地區(qū)仍存在重大障礙。結(jié)果,一些軟件銷售商廣泛地采用重新鑒定ECP。
一些例子可能大約需要ECP裝置是安全的,這種條件被羅列如下-非法用戶應(yīng)當(dāng)被禁止使用受保護的軟件。
-沒有有效許可,用戶應(yīng)被禁止運行軟件。
-用戶不應(yīng)被禁止做備份。
-所述ECP裝置應(yīng)對用戶界面產(chǎn)生的沖擊最小??梢暃_擊應(yīng)僅被限定在對所述操作系統(tǒng)/或智能卡的第一次登錄中。
-假定僅能制作標(biāo)準(zhǔn)的硬件和軟件。比如,盡管硬件dongles提供拷貝保護服務(wù),許多銷售商仍不希望把軟件銷售限定在具有或希望安裝dongle的用戶群中。
-所述ECP裝置不應(yīng)將受保護軟件的執(zhí)行限定在有限的機器群中。當(dāng)一個用戶合法地購買了軟件,不論機器的所有權(quán)是誰,該用戶應(yīng)能在任何機器上運行該軟件。該用戶應(yīng)能任意地許可在多臺機器上同時運行所述軟件。
-所述ECP裝置應(yīng)沒有所需網(wǎng)絡(luò)依賴性,以便能執(zhí)行已購買的受保護程序。
-應(yīng)允許銷售商將受保護軟件的同一版本分發(fā)給所有用戶。這種需求允許將受保護的軟件通過正常渠道例如CD-ROM、軟盤或網(wǎng)絡(luò)公告板進行分發(fā)。
-對潛在的軟件盜版,不修改受保護的程序而繞過ECP裝置將是很困難的及/或估計是不能實現(xiàn)的。因為如果盜版者散發(fā)一個原始程序的修改版,由銷售商提供的數(shù)字簽字就不再合法,所以這種條件用做病毒防范測量。
-所述ECP裝置不應(yīng)向銷售商公開私人密鑰資料、任何由銷售商產(chǎn)生的程序或任何潛在的特洛伊馬程序。雖然原始的功能是保護軟件銷售商,但任何人也不能這樣作而讓用戶承擔(dān)這種費用。
-所述ECP裝置在僅有軟件版本中同在有輔助硬件的版本中應(yīng)是一樣有效的,比如使用智能卡以保證廣泛的市場認(rèn)可。
在[1]中,推薦使用一種裝置,其中只有通過一個特殊配置的觀測程序才能看到受保護的文件,該觀測程序僅在用戶向顯示器提供了該用戶的私人密鑰資料時,才允許用戶觀看該文件。因為這樣做會向他人泄露他或她的私人密鑰,所以能防置該用戶散發(fā)所述觀測程序的越權(quán)拷貝。然而,因為這種裝置需要觀測程序能訪問私人密鑰資料,所以破壞了如上所述條件中的一個。另外,這種裝置可能不與為避免泄露私人密鑰資料而設(shè)置的智能卡一起連用。
可在[2]中看到例如RSA方案中的非對稱加密、對稱加密及例如布盧姆-古德沃瑟(Blum-Goldwasser)概率公共密鑰加密方案的概率編碼的概述。
可在[2]中看到數(shù)字標(biāo)記方案(例如,Ribest-Shamir-Adleman等)(RSA)和數(shù)字標(biāo)記的形式數(shù)學(xué)定義。
報文摘要函數(shù)(或者另稱為單向散列函數(shù))的例子為MD5[6]。計算報文摘要的倒數(shù)估計是不可實現(xiàn)的或非常困難的。
在[3]中說明了奇-斯奎爾(Chi-Square)測試、科爾莫戈洛夫-斯米諾夫(Kolmogorov-Smimov)測試及連續(xù)的相關(guān)測試。
在[4]中,說明了由磁盤驅(qū)動器中空氣擾動引起的密碼的隨機性。
可在[2]中看到不同的概率實驗方案例如零知識證明方案(例如Feige-Fiat-Shamir方案、Fuillou-Quisquater方案、Blum-Feldmann-Micali方案、Brassard方案、Crepau方案等)或隱藏證據(jù)實驗方案(例如Feige-Shamir方案等)的概述。
本發(fā)明的目的是提供一個改進了的ECP裝置,如果并非滿足所有如上所述的例子的條件時,該裝置能夠最安全。
一個存儲裝置是任一種可存儲數(shù)據(jù),接著提供該數(shù)據(jù)或與該數(shù)據(jù)有關(guān)的信息的裝置。實際存儲裝置的例子是智能卡、CD-ROM、數(shù)字視頻盤及軟盤。
在[2]中討論了驗證、驗證分層、鏈驗證、驗證拓補、驗證路徑及驗證權(quán)限。一個根驗證(另外一種說法是驗證權(quán)限證明)是一種保持驗證權(quán)限的公共密鑰的證明。典型地,根驗證是帶符號的,它使用了驗證權(quán)限的私人密鑰。后繼驗證是能通過驗證路徑由根驗證到達(有效)的一種驗證。
經(jīng)過許可的軟件可根據(jù)該軟件許可而僅使用資源。例如,一個軟件許可可允許軟件實際駐留在公用存儲設(shè)備上,還阻止在多臺機器上同時運行該軟件。在這種情況下,所述“資源”是一種運行所述軟件的機器。資源的另一個例子是文件。在這種情況下,許可服務(wù)器可大概地修改特殊文件的存取控制列表,以便允許特許程序以存取所述特殊文件的能力。
一個程序的二進制數(shù)包括當(dāng)計算機執(zhí)行所述程序時,該計算機將操作的一系列指令。
一個選擇明文攻擊(chosen-plaintext attack)是一個對手選擇明文接著給出相應(yīng)的加密文本的地方。接著,所述對手使用推導(dǎo)出的任一信息,以便覆蓋與預(yù)先看不見的加密文本相應(yīng)的明文。
一種自適應(yīng)的選擇明文攻擊是這樣一種選擇明文攻擊,其中對明文的選擇可依賴于由預(yù)先的結(jié)果得到的加密文本[2]。
一個零知識證明協(xié)議是一種非對稱方法,其特別適用于拷貝保護及許可。一個零知識證明不會因為被重復(fù)使用[且零知識證明存在]選擇明文攻擊而使安全性降低。因為這些特性對私人密鑰資料提供了極好的保護,所以它們尤其適合拷貝保護及許可的要求。假定例如,上述私人密鑰資料被存儲在一個智能卡上。在這種情況下,該用戶應(yīng)使這張智能卡對機器是可行的,而不用考慮由特洛伊馬或具有不良意向的其它程序得到的攻擊。例如一個特洛伊馬,不可以為達到在后來的密碼分析中得到有用信息的目的而使用選擇詢問反復(fù)詢問所述智能卡。
一個零知識證明協(xié)議既存在于選擇明文攻擊中又存在于自適應(yīng)選擇明文攻擊中。
作為一個零知識證明的例子,考慮到Guillou-Quisquater(GQ)零知識證明協(xié)議,它包括兩個資料A和B,其中A具有B不能訪問的所述私人密鑰資料。A向B證明了A能訪問所述私人密鑰資料。下面將對所述GQ驗證協(xié)議予以說明在下面,我們假定一個如[2]中定義的RSA密鑰對。在以下說明中,我們使用由[2]得到的注釋。這種注釋的一些內(nèi)容為所述RSA公共密鑰為(n,e),所述RSA私人密鑰為d,gcd(e,Φ)=1,Φ=(p-1)(q-1)及n=p·q。
計算系統(tǒng)參數(shù)a.使用主要的因子式,p和q適于用在類似RSA密鑰對的計算中計算n=p·q和Φ=(p-1)(q-1)b.A定義gcd(υ,Φ)=1且公共指數(shù)υ≥3,其中Φ和gcd是所述最大公約數(shù)。
c.A計算私人指數(shù)s=υ-1(modΦ)d.作為公共密鑰資料的系統(tǒng)參數(shù)(υ,Φ)被設(shè)置為有效的。
計算用戶參數(shù)a.A使用一個公知的冗余函數(shù)f選擇和公開了一個眾所周知的單位元素I及滿足1<J<n的冗余元素J=f(I)。所述冗余函數(shù)f的例子是ISO/IEC 9796的預(yù)處理階段的冗余映射[6]。
b.作為私人密鑰資料SA=J-s(mod n)而保留A。
所述GQ密鑰對是(私人密鑰=SA)和(公共密鑰=(υ,n))。A能由B、I、f和J=f(I)識別。B使J=f(I)有效(框33)。
所述GQ證明協(xié)議的協(xié)議信息表述如下·A→B:I,x=rυ(mod n)(1)·B→A:e(其中1≤e≤υ)(2)·A→B:Y=r.seA(mod n)(3)由t執(zhí)行的以下步驟,證明A和B是等同的,其中僅在所有t的執(zhí)行都是成功時(框34),B接收A的身份。
a.A選擇一個隨機秘密整數(shù)r(約定),1≤r≤n-1,并計算(所述證據(jù))X=rυ(mod n)。
b.A傳送給B的一對整數(shù)(I,x)。
c.B選擇并傳送給A一個隨機整數(shù)e(所述詢問),1≤e≤υd.A計算并傳送給B(所述應(yīng)答)y=r.SeA(mod n),B接收y,使用f由I構(gòu)造J,計算Z=Je.yυ(modn)及如果z=x和z≠0都滿足時,接收A的同一性的證明。
Zn是整數(shù)模n的集合。
Zn*={x∈Zn|gcd(x,n)=1}本發(fā)明利用了應(yīng)用非對稱加密方法的協(xié)議。非對稱加密方法的例子是非對稱加密、數(shù)字簽字及概率證明。
一個非對稱加密方法包括公共密鑰資料及相應(yīng)的私人密鑰資料。當(dāng)給出的信息不比相應(yīng)的公共密鑰資料多時,估計計算所述私人密鑰資料是不可能的。在本發(fā)明中,我們在兩個資料A和B之間使用相互非對稱加密。A向B證明它能夠訪問私人密鑰資料而B使該證據(jù)生效。A不能向B公開所述私人密鑰資料。
以下將說明非對稱加密方法的一些例子。
數(shù)字簽字是手寫簽字的電子模擬。數(shù)字簽字證明包括至少兩部分,A和B。當(dāng)將他或她的公共密鑰資料記入一個公用位置后,A使用所述私人密鑰資料對信息加密。因為任何人都能訪問所述公共密鑰資料,所以不存在信息秘密。因為A是僅有的能訪問所述私人密鑰資料的用戶,所以沒有其他人能通過執(zhí)行所述加密而“偽造A的簽字”。任何人可通過使用公共密鑰資料而使A的簽字生效。
非對稱加密證明包括至少兩部分,A和B。A控制私人密鑰資料,而B則是除非B公開所述私人密鑰本身(這是B不能做的),否則B不能訪問A的私人密鑰資料。一開始,A和B都沒有共享的秘密。而在這種方法中,A和B知道了共享的秘密。
一個非對稱機密證明的例子是公共密鑰加密。如以下將要舉例說明的非對稱機密協(xié)議。A向B證明A知道所述私人密鑰資料。
A←B:h(r),B,PA(r,B)A→B:r上面說明的協(xié)議方案使用了如下注釋·A→B表明A向B發(fā)送信息;而B→A表明B向A發(fā)送信息。
·r表明暫時使用的隨機數(shù)·h(r)是一個暫時的報文摘要。
·PA(r,B)是使用A的公用密鑰對暫時數(shù)和B的身份加密。
這里,B產(chǎn)生一個暫時數(shù)并使用A的私人密鑰資料對暫時數(shù)(與B本身一起)編碼,例如PA(r,B)。
另外,B計算暫時的報文摘要h(r)。
B如上所述向A傳送信息,以及B的身份。
接下來,A使用其私人密鑰資料對得到r,B的PA(r,B)進行解密。A計算已解密隨機值的報文摘要、r及比較阻止由B得到的h(r)的結(jié)果。在這一點上,該隨機數(shù)是一個由A和B都知道的共享秘密。
為完成該協(xié)議,A將所述隨機數(shù)反還給B,以便證明A知道該秘密。當(dāng)然,一旦A提供了該秘密,就喪失了所述隨機數(shù)的秘密。B通過檢查B原先產(chǎn)生的由A返回的秘密使A的驗證生效。
非對稱機密性證明協(xié)議的第二個例子是概率加密方案,例如,Blum-Goldwasser概率公共密鑰加密方案。這里,加密或解密裝置使用了隨機數(shù)或其它概率裝置。不應(yīng)拒絕用例如零知識證明的概率證明的概率公共密鑰加密。在第一種情況中,使用概率裝置執(zhí)行加密算法。在第二種情況中,使用概率裝置定義保證的級別。對概率證明說明如下一個概率證明包括至少兩部分,A和B。A控制私人密鑰資料,而B在不公開所述私人密鑰資料身份時不能訪問A的私人密鑰資料。因為B強迫A提供證據(jù)以證明A大概能訪問所述私人密鑰資料,所以A的證明與其說是絕對的,不如說是概率的。
對概率證明的變化有兩種a)零知識證明。這是可證明的,除非這樣一個事實即A控制所述私人密鑰資料,否則B或其它任何證據(jù)的觀測者都不能從該證據(jù)中得到任何東西。
b)證據(jù)詢問應(yīng)答證明。它包括以下順序的4要素1.A向B傳送信息,該信息不能在該證明的所有過程中為常數(shù)。
該信息被稱作證據(jù)。對許多協(xié)議,所述證據(jù)是隨機地產(chǎn)生的,并永遠(yuǎn)不會重復(fù)。
2.B向A傳送被叫做詢問的信息。對許多協(xié)議,所述詢問是隨機地產(chǎn)生的。
3.A向B傳送一個應(yīng)答。
4.B通過執(zhí)行包括所述證據(jù)的所述詢問及所述應(yīng)答的計算驗證A是否真的知道所述私人密鑰資料。
實際上,許多零知識證明是證據(jù)-詢問-應(yīng)答-證明。
零知識證明方案例如是Feige-Fiat-Shamir方案或所述Guillou-Quisquater方案,還可以是單向零知識證明方案例如是所述Blum-Geldmann-Micali方案,或統(tǒng)計零知識證明方案,例如是所述Brassard方案或是所述Crepau方案等。
證據(jù)隱藏證明方案例如是所述Feige-Shamir方案等。
以下將說明一個零知識協(xié)議可能的通用結(jié)構(gòu)(CP[2])。出于解釋目的,這個通用結(jié)構(gòu)也可以是證據(jù)-詢問-應(yīng)答-證明格式。
所述協(xié)議包括兩部分,A和B。
1.所述證據(jù)聲稱A由預(yù)先定義的集合中選擇一個隨機元素作為它的秘密約定(提供隱藏隨機性),并從這里計算出一個相關(guān)(公共)證據(jù)。這可以提供由其它協(xié)議運作而變化的初始隨機性,并定義了一套所有證明聲明為可回答的問題,因此先驗情況強迫他或她的即將到來的應(yīng)答。只有具有A秘密知識的合法資料,A才真正有能力回答所有問題,且對上述這些情況中的任何一個答案將不提供有關(guān)A長遠(yuǎn)秘密的信息。
2.B后來的詢問選擇這些問題中的一個。
3.A提供其答案。
4.B檢查這些答案的正確性。
可將所述協(xié)議迭加,以改善限制成功行騙的能力的約束。
每個用戶可將他或她的公共密鑰資料傳遞到一個公共存取目錄,而不用兼顧相應(yīng)的私人密鑰資料。所述用戶通常應(yīng)將他或她的私人密鑰資料當(dāng)作最緊要的機密予以保護,否則,所述密碼系統(tǒng)可能不會保證其正確性。最常見的用于保護個人私人密鑰資料中的裝置是通過使用智能卡。在這種情況下,所述智能卡是一種不帶用于透露私人密鑰資料(以一種無加密保護方式)界面的器件。
雖然智能卡提供了最好的保護,但電子商務(wù)的社會因素也可提供一種保護私人密鑰資料保護的作用。與非對稱加密服務(wù)相關(guān)的最大困難是鑒別。比如,如果A將他或她的公共密鑰資料傳送到公共目錄中,接下來B如何有效地訪問它呢?這即是,一個盜版者試圖偽裝成A但卻傳送所述私人密鑰資料。一些商務(wù)組織通過作為認(rèn)證當(dāng)局(CA)提供對這個問題的解決方法。對于(可能的)付費,由潛在用戶的所述CA例如駕駛員的駕駛證或口令請求識別資料。在確認(rèn)所述識別資料有效后,所述CA將所述用戶的公共密鑰資料傳送到一個公共目錄中,且所述CA在證件上作標(biāo)記(用所述CA的私人密鑰使用數(shù)字簽字)以擁有所述用戶的公共密鑰資料??刹捎脴?biāo)準(zhǔn)化服務(wù),例如X.500,以幫助簡化對包括公共密鑰資料的索引的使用。
一旦一個用戶將他或她的公共密鑰資料傳送到所述CA,該用戶應(yīng)努力保護他或她的私人密鑰資料。在這種情況下,如果準(zhǔn)備泄露所述用戶的私人密鑰資料,則就不再能以有效方式使用所述私人密鑰資料。對一些非對稱密鑰,如果在無意中泄露了所述用戶的私人密鑰資料,則所述用戶將會引起明顯的關(guān)注。例如,在可用于數(shù)字簽字的RSA密鑰的情況中,已成為網(wǎng)絡(luò)的銷售商大概會允許電子商務(wù)交易。
根據(jù)本發(fā)明,提供了包含一個用來保護軟件的保護裝置的計算機系統(tǒng),所述保護裝置包括至少三條,其中至少有一個詢問裝置和第一應(yīng)答裝置及第二應(yīng)答裝置,其中所述詢問裝置與軟件保護條目有關(guān),所述第一應(yīng)答裝置是具有能訪問一非對稱密鑰對的私人密鑰資料及能與所述詢問裝置通信,所述第二應(yīng)答資料能與所述詢問裝置通信,其中,a)上述這個詢問裝置不能訪問由第一應(yīng)答裝置訪問的所述私人密鑰資料,b)上述這個詢問裝置包括一些裝置,這些裝置用來分別使所述第一應(yīng)答裝置的非對稱證明有效及使所述第二應(yīng)答裝置的n個證明有效而不要求所述第一應(yīng)答裝置公開其私人密鑰資料,c)上述這個詢問裝置包括一些裝置,除非所述任何一個認(rèn)證有效或兩個認(rèn)證都有效,否則這些裝置會禁止受保護程序的運行。
在下文中,我們可交換地使用檢索詞應(yīng)答裝置及非對稱應(yīng)答裝置,以便表述非對稱應(yīng)答裝置。當(dāng)討論對稱應(yīng)答裝置時,我們明顯地使用作為一個整體的檢索詞。
根據(jù)本發(fā)明,提供一個能訪問所述私人密鑰資料的方式并不重要。例如可使用如上所述的任一個原理,例如非對稱機密性證明、數(shù)字簽字證明或概率證明。
根據(jù)本發(fā)明另一方面,可提供一個包括用來保護軟件的保護裝置的計算機系統(tǒng)。所述保護裝置包括至少四條,其中至少有一個第一詢問裝置,一個第一應(yīng)答裝置及一個第二應(yīng)答裝置,所述第一詢問裝置是和軟件保護項目相關(guān),所述第一應(yīng)答裝置能訪問非對稱密鑰對的私人密鑰資料,并能與所述第一詢問裝置通信,所述第二應(yīng)答裝置能訪問與所述第二詢問裝置相連的秘密密鑰資料,并能與第二詢問裝置通信,其中,a)上述該第一詢問裝置不能訪問所述第一應(yīng)答裝置訪問的所述私人密鑰資料,b)上述該第一詢問裝置證明所述第一應(yīng)答裝置的非對稱證明有效,即所述第一應(yīng)答裝置不要求所述第一應(yīng)答裝置公開其私人密鑰資料就可訪問該私人密鑰資料,c)所述第二詢問裝置認(rèn)定所述第二應(yīng)答裝置的證明是有效的,即上述第二應(yīng)答裝置能訪問所述機密密鑰資料,d)所述第一詢問裝置認(rèn)定所述第二應(yīng)答裝置禁止使用軟件的所述受保護項目或禁止以不受限制的方式使用上述軟件,除非認(rèn)定上述認(rèn)證中的一個有效或兩個都有效。
根據(jù)本發(fā)明另一方面,提供了一個包含一些裝置的計算機系統(tǒng),該裝置用來輸入一受保護的程序,及用來嵌入至少三個項目,其中這些項目中至少有一個詢問裝置、一個第一應(yīng)答裝置及一個第二應(yīng)答裝置,而該詢問裝置和軟件保護的項目有關(guān),該第一應(yīng)答裝置能訪問非對稱密鑰對的私人密鑰資料且能和所述詢問裝置通信,第二應(yīng)答裝置能和所述詢問裝置通信,其中,a)所述詢問裝置不能訪問由所述第一應(yīng)答裝置訪問過的所述私人密鑰資料,b)所述詢問裝置包括一些裝置,這些裝置用來分別認(rèn)證所述第一應(yīng)答裝置的非對稱證明及所述第二應(yīng)答裝置的證明是有效的而不要求所述第一應(yīng)答裝置公開其私人密鑰資料,c)所述詢問裝置包括一些裝置,這些裝置用來禁止受保護的程序運行,除非能認(rèn)定任何一個所述認(rèn)證有效或兩個認(rèn)證都有效。
根據(jù)本發(fā)明另一方面,提供了一個包括一些裝置的計算機系統(tǒng),所述裝置用來輸入一個受保護的程序,并用作嵌入至少四個項目,這些項目至少有一個第一詢問裝置、第二詢問裝置、一個第一應(yīng)答裝置和一個第二應(yīng)答裝置,所述第一詢問裝置和軟件的受保護項目有關(guān),所述第一應(yīng)答裝置能訪問一非對稱密鑰對的私人密鑰資料,并能與第一詢問裝置通信,所述第二應(yīng)答裝置能訪問機密密鑰資料,并能與第二應(yīng)答裝置通信,其中,a)所述第一詢問裝置不能訪問該第一應(yīng)答裝置訪問的所述私人密鑰資料,b)所述第一詢問裝置不要求所述應(yīng)答裝置公開其私人密鑰資料就能認(rèn)證所述第一應(yīng)答裝置的非對稱證明有效,即所述第一應(yīng)答裝置能訪問所述私人密鑰資料,c)所述第二詢問裝置認(rèn)證所述第二應(yīng)答裝置有效,即該第二應(yīng)答裝置能訪問所述機密密鑰資料,d)所述第一詢問裝置或所述第二詢問裝置禁止使用所述軟件或禁止以不受限制的方式使用所述軟件,除非能認(rèn)定所述認(rèn)證中的一個有效或兩個都有效。
根據(jù)本發(fā)明另一方面,提供了一種將軟件分配該許多用戶的方法,其中每一個都有一臺如權(quán)利要求1的計算機系統(tǒng),且其中每個用戶接收對所述受保護程序和所述詢問裝置的相同的拷貝。
根據(jù)本發(fā)明另一方面,提供了一種保護包含一保護裝置的軟件項目的方法,其中所述保護裝置是用來保護軟件的,所述保護裝置包括至少三條,其中至少有一個詢問裝置、一個第一應(yīng)答裝置及一個第二應(yīng)答裝置,其中所述詢問裝置與軟件受保護的項目有關(guān),而第一應(yīng)答裝置能訪問非對稱密鑰對的私人密鑰資料,并能與所述詢問裝置通信,所述第二應(yīng)答裝置能與所述詢問裝置通信,其中,a)所述詢問裝置不能分別訪問所述第一應(yīng)答裝置和所述第二應(yīng)答裝置訪問的所述私人密鑰資料,b)所述詢問裝置不要求所述第一應(yīng)答裝置或所述第二裝置分別公開其私人密鑰資料就能認(rèn)證所述第一應(yīng)答裝置的非對稱證明及所述第二應(yīng)答裝置的非對稱證明是有效的,c)所述詢問禁止一受保護的程序運行,除非認(rèn)定認(rèn)證中的一個有效或兩個都有效。
根據(jù)本發(fā)明另一方面,本發(fā)明提供了一種用來保護軟件項目的方法,該軟件包括一用來保護軟件的保護裝置,所述保護裝置包括至少四項,其中至少有一個第一詢問裝置、第二詢問裝置、一個第一應(yīng)答裝置及一個第二應(yīng)答裝置,所述第一詢問裝置與軟件的受保護項目有關(guān),所述第一應(yīng)答裝置能訪問非對稱密鑰對的私人密鑰資料,并能與所述第一詢問裝置通信,所述第二應(yīng)答裝置能訪問密密鑰資料,并能與所述第二詢問裝置通信,其中a)所述第一詢問裝置不能訪問由所述第一應(yīng)答裝置訪問的私人密鑰資料,b)所述第一詢問裝置不要求所述第一應(yīng)答裝置公開所述私人密鑰資料就可認(rèn)證所述第一應(yīng)答裝置有效,即所述第一應(yīng)答裝置可訪問所述私人密鑰資料,
c)所述第二詢問裝置認(rèn)證所述第二應(yīng)答裝置有效,即所述第二應(yīng)答裝置可訪問機密密鑰資料,d)所述第一詢問裝置或所述第二詢問裝置禁止使用所述軟件的受保護的項目或禁止以不受限制的方式使用所述軟件,除非認(rèn)定所述認(rèn)證中的一個有效或兩個都有效。
根據(jù)本發(fā)明另一方面,本發(fā)明很可能在為實現(xiàn)所述隨機詢問的安全性而重復(fù)地向設(shè)備存取發(fā)出定時應(yīng)答所產(chǎn)生的隨機詢問中發(fā)揮了優(yōu)勢。雖然可潛在地向所述各種設(shè)備中的一個發(fā)出定時應(yīng)答,但在本例中我們設(shè)想這是一張磁盤(通常認(rèn)為是一張硬盤,有時也認(rèn)為是一直接存取設(shè)備)。因此,不可能向許多不同的設(shè)備詢問何時產(chǎn)生一個特殊的隨機值。
根據(jù)本發(fā)明另一方面,為進一步實現(xiàn)所述隨機詢問的安全性,在產(chǎn)生隨機詢問的同時,可以這種方式將新線索分叉,即關(guān)于通過操作所述操作系統(tǒng)的調(diào)度程序內(nèi)的不可預(yù)見性而將附加的隨機度插入所述隨機詢問中。
根據(jù)本發(fā)明另一方面,為進一步實現(xiàn)所述隨機詢問的安全性,可執(zhí)行一個統(tǒng)計測試以確定由每一個所述磁盤存取得到的隨機比特的數(shù)目,并由此重復(fù)地對磁盤訪問直到獲得了預(yù)定的隨機比特數(shù)目。
根據(jù)本發(fā)明另一方面,包括一個由所述詢問裝置訪問并確定的一個根認(rèn)證是有益的。所述根認(rèn)證的目的在于鑒定一個特殊的后繼認(rèn)證。所述后繼認(rèn)證存儲了公共密鑰資料,該資料用來認(rèn)證由一應(yīng)答裝置提供的所述證據(jù)有效。在一些情況下,使用多種根認(rèn)證是有益的,這些根認(rèn)證例如擁有與每一組多種應(yīng)答裝置所訪問的所述私人密鑰資料相對應(yīng)的所述公共密鑰資料。
除所述計算機系統(tǒng)外,所述方法也可用來拷貝保護軟件及/或許可軟件。
在多道詢問裝置或被嵌入一單道程序或被嵌入一多道程序的情況下,所述相應(yīng)的詢問裝置可加入證據(jù),該證據(jù)用來證明或是所述相同的私人密鑰資料的存在或是可能的不同的私人密鑰資料。
圖1是當(dāng)一用戶希望購買軟件時的一個購買協(xié)議流程圖。該軟件是根據(jù)本發(fā)明而由一保護裝置保護的。
圖2是顯示了,需要安裝在所述用戶的機器中使所述用戶能運行所述受保護軟件的一軟件成分的框圖。
圖3是顯示了保護裝置在受保護軟件中的操作。
圖4顯示了用來產(chǎn)生暫時數(shù)的一隨機數(shù)發(fā)生器的操作的流程圖。
圖5顯示了根據(jù)本發(fā)明的一個認(rèn)證基礎(chǔ)結(jié)構(gòu)。
現(xiàn)在將參照所述附圖通過舉例來說明根據(jù)本發(fā)明的一個保護裝置。
購買協(xié)議圖1顯示了當(dāng)用戶102希望購買軟件是所使用的一購買協(xié)議,其中根據(jù)本發(fā)明由一個ECP裝置對所述軟件進行保護。所述銷售商101具有用作數(shù)字簽字的公共及私人密鑰資料;并且每個潛在的用戶102具有用于非對稱驗證協(xié)議的公共的和私人的密鑰資料。每個用戶使其公共密鑰資料也可由其它用戶使用,但對其私人密鑰資料保守秘密。
在步驟1中,所述用戶102由銷售商101處得到受保護軟件103,這是通過由一個網(wǎng)絡(luò)公告板上下載文件而實現(xiàn)的。后面將會更詳細(xì)地說明一個詢問裝置24(參見圖2),該裝置被以這種方式嵌入所述受保護軟件103,以至一潛在攻擊者不能輕易地將所述詢問裝置24由所述受保護軟件103中分離出來。所述攻擊者需要解開所述代碼,且需要手工拆除所述詢問裝置。所述詢問裝置24具有嵌入其中的銷售商的公共密鑰資料。正如所要說明的,所述詢問裝置24防止所述用戶在這一階段運行所述軟件。這個完全受保護的程序包括使用所述銷售商的私人密鑰密鑰資料簽字的詢問裝置。
在步驟2中,所述用戶102由電子郵件向所述銷售商101發(fā)出一個注冊軟件包104。所述注冊軟件包104保留一個對包括掌握所述用戶公共密鑰資料的一個公共目錄的參考。
在步驟3中,所述軟件銷售商101找到所述用戶的公共密鑰資料并將所述用戶的公共密鑰資料嵌入一個密鑰文件105,并將該密鑰文件105通過電子郵件傳送給用戶102。一旦所述用戶102安裝了所述密鑰文件,所述保護裝置允許所述用戶102運行所述受保護軟件103,這樣所述用戶就能保證他或她可訪問所述用戶的私人密鑰資料。在軟件被許可的情況下,所述軟件需要由許可服務(wù)器獲取資源以便以一種不受限制的方式運行。
所述密鑰文件105的建立是由一密鑰文件發(fā)生器執(zhí)行的,其中所述密鑰文件發(fā)生器是在所述銷售商的設(shè)備上運行的一個程序。該銷售商101必須細(xì)心防護好這個程序。
在使用所述密鑰文件發(fā)生器時,操作員填入以下信息
銷售商姓名銷售商姓名是該銷售商所在公司的名字。
銷售商口令銷售商口令是開啟所述銷售公司私人密鑰的口令。不知道該口令的公司雇員不能產(chǎn)生密鑰文件。
用戶姓名所述用戶姓名是為其產(chǎn)生一個密鑰文件的用戶可識別名(在[7]中定義)。所述姓名被記入公共密鑰資料的數(shù)據(jù)庫中。
密鑰文件名所述密鑰文件是一個新密鑰文件的名稱。
當(dāng)獲取這一信息后,所述密鑰文件發(fā)生器建立一個包括所述用戶公共密鑰資料的密鑰文件105。所述密鑰文件105的一部分對所述用戶102來說象一個值的完全的隨機序列。
建立所述密鑰文件105包括以下操作。
首先,所述密鑰文件發(fā)生器創(chuàng)建一個文件,并將所述用戶的公開密鑰資料及上千的假目標(biāo)比特一起插進該文件中。在當(dāng)前的例子中,每個密鑰文件105大約包括480,000個假目標(biāo)比特。這種比特數(shù)表明了假目標(biāo)部件的一個有效數(shù)量,這種比特數(shù)也可適合于一個標(biāo)準(zhǔn)的電子郵件信息。
每個密鑰文件105可在不同的位置存儲所述用戶的公共密鑰資料。另外,每個密鑰文件105都不用公開所需加密密鑰而對嵌入其中的用戶信息加密。這一被加密的用戶信息允許軟件銷售商在一種情況下能容易地識別一密鑰文件105的所有人,這種情況是指所述密鑰文件105出現(xiàn)在公共場合例如是公告板中的情況。接著所述密鑰文件發(fā)生器使用不同算法對所述密鑰文件(或密鑰文件的一部分)多次進行加密及再加密,最終,所述密鑰文件發(fā)生器利用一數(shù)字簽字算法而使用所述銷售商的私人密鑰資料對所述密鑰文件作標(biāo)記。
如果所述詢問裝置使用了存儲在所述詢問裝置二進制數(shù)中公共密鑰資料認(rèn)證銷售商的簽字有效,且該詢問裝置能訪問存儲在所述密鑰文件中的被加密的公共密鑰資料,則該密鑰文件就被稱作有效的。
大量的許可服務(wù)器圖5顯示了當(dāng)使用了許多許可服務(wù)器時可能有用的認(rèn)證基礎(chǔ)?;蛘?,很可能當(dāng)使用一個單個的許可服務(wù)器時,定時地改變密鑰資料。
所述詢問裝置訪問一個有效的密鑰文件510。在所述驗證過程中,所述詢問裝置由所述受保護程序的二進制數(shù)中提取所述銷售商的公共密鑰資料,并使用該銷售商的公共密鑰資料以使所述密鑰文件的簽字512有效。我們稱這個密鑰文件為認(rèn)證當(dāng)局密鑰文件,即CAKF 510。使用存儲在所述CAKF 511中的所述CA的公共密鑰,所述詢問裝置認(rèn)證所述認(rèn)證當(dāng)局的認(rèn)證(CAC)520的簽字522是有效的。
所述CAC 520包括至少一個公共密鑰512和所述完整CAC的數(shù)字簽字522。當(dāng)這個數(shù)字簽字生效后,我們就說該CAC是有效的。
所述受保護程序103為存儲在文件系統(tǒng)中的許可服務(wù)器的鑒定(LSi,i=1厖n)搜尋所述文件系統(tǒng)。在當(dāng)前的例子中,假定LSi是530。
每一個許可服務(wù)器的認(rèn)證LSi包括至少所述許可銷售商531的所述公共密鑰(許可服務(wù)器的公共密鑰),及一個完整LSi 532的數(shù)字簽字。
當(dāng)所述受保護程序103設(shè)置在一許可服務(wù)器的鑒定LSi 530上時,所述受保護程序103檢查所述有用信息,以確定是否可使用所述許可服務(wù)器的鑒定LSi。
接著,如[2]中說明的那樣當(dāng)這條鏈最終到達有效的CAC之前,所述受保護程序103根據(jù)鑒定鏈一直認(rèn)證所述LSi的數(shù)字簽字有效。注意所述鏈中的每個鑒定必須由所述詢問裝置發(fā)現(xiàn)。還要注意在圖5中,因為所述CA直接對每個所述許可服務(wù)器的鑒定532作記號,所以所述鏈?zhǔn)嵌痰摹?br>
如果完成了所述認(rèn)證,受保護程序103接收所述許可服務(wù)器的鑒定LSi。我們稱這個LSi鑒定了一個有效的許可服務(wù)器鑒定(VLSC)。
所述VLSC的公共密鑰資料531接下來可被用作認(rèn)定所述許可服務(wù)器有效。
對所述許可服務(wù)器的鑒定為達到所述受保護文件103及一個許可服務(wù)器Li之間的相互鑒別,所述受保護程序103認(rèn)證它與正確的許可服務(wù)器Li通信,并且該許可服務(wù)器Li認(rèn)證其能與所述正確的受保護程序103通信。
至少兩個認(rèn)證中的一個必須執(zhí)行使用非對稱加密方法的協(xié)議。在本例中,兩種認(rèn)證都使用了所述GQ證明,一種具有零知識特性的非對稱加密方法(如前所述)。
認(rèn)證所述許可服務(wù)器首先,所述受保護文件利用如上所述的方法獲得(包括認(rèn)證)一許可服務(wù)器鑒定VLSC。公共密鑰VLSCPK 531是存儲在所述許可服務(wù)器鑒定VLSC中的所述公共密鑰VLSCPK 531。
根據(jù)上文的所述GQ證明協(xié)議的說明,所述許可服務(wù)器Li(作為部件A)向所述詢問裝置24(作為部件B)證明所述許可服務(wù)器Li能訪問私人密鑰資料LSPVTK。所述詢問裝置在所述GQ證明認(rèn)證中使用所述公共密鑰VLSCPK531。
如果詢問裝置24認(rèn)證所述證明有效,則所述受保護程序103以不受限制的模式運行,這種模式是不受拷貝保護或許可系統(tǒng)約束或限制的。
如果所述詢問裝置24不能認(rèn)證所述證明有效,則所述受保護程序103停止運行、以有限的模式運行或采取其它合適的操作。
有可能受保護程序103嵌入一個單獨的詢問裝置中,其中所述詢問裝置以如上所述的方式與多個服務(wù)器通信。另外,多個可能以上述方式與多個許可服務(wù)器通信。
所述受保護程序和所述許可服務(wù)器間的相互鑒定(框31)(與圖3比較)首先所述受保護程序103利用如上所述的裝置認(rèn)證所述許可服務(wù)器Li有效。接著,所述許可服務(wù)器Li認(rèn)證如下文所述的受保護程序103有效。
所述受保護程序103包括一個嵌入的應(yīng)答裝置。該應(yīng)答裝置包括嵌入的私人密鑰資料PPPVTK,這里的所述私人密鑰資料PPPVTK與所述許可服務(wù)器中的私人密鑰資料LSPVTK不同。
(框32)所述許可服務(wù)器Li得到并認(rèn)證一程序的密鑰文件PPKF有效。所述認(rèn)證過程是對所述CAKF認(rèn)證過程的模擬。在該認(rèn)證過程中,所述許可服務(wù)器用該服務(wù)器的公共密鑰資料認(rèn)證所述PPKF的數(shù)字簽字有效。
應(yīng)當(dāng)注意所述受保護程序的密鑰文件PPKF不是所述許可服務(wù)器的密鑰文件CAKF。
(框33)所述許可服務(wù)器Li通過執(zhí)行如需要的多重加密從PPKF中抽取公共密鑰資料。
(框34)所述受保護程序103向所述許可服務(wù)器Li證明該受保護程序103能使用一個GQ證明協(xié)議訪問私人密鑰資料PPPVTK,所述服務(wù)器使用由所述程序的密鑰文件PPKF提取的公共密鑰來認(rèn)證該證明。
如果所述許可服務(wù)器的認(rèn)證成功,則所述許可服務(wù)器同意所述受保護程序資源允許所述受保護程序103以潛在的不受限制的方式運行。否則所述受保護程序103要以受限方式運行。
作為如上所述的方法的一種替換,所述許可服務(wù)器可使用對稱密鑰資料認(rèn)證所述受保護程序有效。
在執(zhí)行所述協(xié)議之前,所述許可服務(wù)器(由B表示)中的所述詢問裝置及所述受保護程序(由A表示)中所述應(yīng)答裝置每個都能訪問所述相同的對稱密鑰資料k。在下述協(xié)議中,所述應(yīng)答裝置向所述詢問裝置證明該應(yīng)答裝置能訪問該對稱密鑰資料。
A←B:rB(1)A→B:h(k,rBB)(2)步驟(1)首先,所述許可服務(wù)器的詢問裝置產(chǎn)生一個隨機數(shù)rB,并將該隨機數(shù)rB送到A。
步驟(2)接著,所述受保護程序的應(yīng)答裝置提取到共享的密鑰資料k,所述隨機數(shù)rB及所述許可服務(wù)器B的唯一身份。所述應(yīng)答裝置以下述順序連在一起k、rB、B。接下來,使用報文摘要函數(shù)h,例如MD5,所述應(yīng)答裝置計算h(k,rB,B)。
最后,所述應(yīng)答裝置執(zhí)行一認(rèn)證過程,這一過程首先是通過回憶起共享密鑰資料k、所述在步驟(1)中產(chǎn)生的隨機數(shù)rB及所述許可服務(wù)器的身份B而實現(xiàn)的。所述詢問裝置計算h(k,rB,B)并對照在步驟(2)中收到的相應(yīng)值比較所述結(jié)果(為同一生)。如果所述同一性的檢查成功,則所述詢問裝置接收該證明;否則,所述詢問裝置拒絕該證明。
可由相互鑒定的兩種方法中看出,所述應(yīng)答裝置能訪問所述秘密密鑰資料。
在非對稱加密的情況下,所述秘密密鑰資料是一非對稱密鑰資料的所述私人密鑰資料。在對稱裝置的情況下,所述秘密密鑰資料是一個共享的密鑰。注意在這種情況下,我們說對稱裝置既包括對稱加密算法也包括其它算法,該對稱加密算法例如可以是所述數(shù)據(jù)加密標(biāo)準(zhǔn)(DES),在其它算法中所述加密密鑰是由解密密鑰導(dǎo)出的,反之亦然。對稱裝置另外包括報文摘要或其它加密裝置,所述報文摘要例如可以是MD5,所述其它加密裝置中兩部分都共享通用密鑰資料。
鑒定及認(rèn)定一第二許可服務(wù)器有效在嵌入有詢問裝置的受保護程序與兩個或多個應(yīng)答裝置通信的情況下,所述通信的裝置及方法是相同的。所述詢問裝置使用如上所述的裝置和方法認(rèn)證第一個應(yīng)答裝置,接著認(rèn)證其它裝置??捎盟龅谝辉儐栄b置構(gòu)成兩個應(yīng)答裝置都需要的或也許僅僅是一個應(yīng)答裝置需要的認(rèn)證。在任何一種情況下,在成功地認(rèn)證之后,所述受保護程序可以以一種不受限制的方式運行。否則,所述受保護程序停止運行,或以一種受限方式運行。
所述詢問裝置使用一個非對稱協(xié)議潛在地與所述第一應(yīng)答裝置通信,并且使用一個對稱協(xié)議潛在地與所述第二應(yīng)答裝置通信?;蛘?,是兩種協(xié)議都是對稱的情況。
用戶軟件圖2顯示了需要安裝在所述用戶機器中的所述軟件成分,一臺計算機在相互鑒定后使所述用戶能夠運行所述受保護軟件103。這些構(gòu)成了許可服務(wù)器20、所述密鑰文件105、所述受保護軟件103及所述認(rèn)證(未示出)。所述被保護軟件103包括一個詢問裝置24和一個可能的應(yīng)答裝置(未示出)。該許可服務(wù)器訪問私人密鑰資料(未示出)。在所述受保護程序包括一個應(yīng)答裝置的情況下,則所述受保護程序的應(yīng)答裝置選取秘密密鑰資料。
所述許可服務(wù)器20是在系統(tǒng)剛一開始引導(dǎo)時,所述用戶102運行的程序。所述用戶102通過插入一個包含該用戶私人密鑰資料的智能卡而使該系統(tǒng)工作。所述許可服務(wù)器20于是為用來使所述智能卡有效的口令而提醒該用戶102。如果所述用戶不能提供打開該智能卡的正確口令,則不執(zhí)行所述許可軟件。所述許可服務(wù)器不能訪問存儲在該智能卡上的所述私人密鑰資料。所述許可服務(wù)器20則在背景下運行。
臨時發(fā)生器臨時數(shù)的產(chǎn)生是由包含在所述詢問裝置24中的臨時發(fā)生器執(zhí)行的。臨時發(fā)生器的操作如下。
首先,所述臨時發(fā)生器需要大量的系統(tǒng)參數(shù),例如系統(tǒng)時間、在所述表中為空白的空間量、邏輯磁盤驅(qū)動器的數(shù)目、所述操作系統(tǒng)目錄中的文件名等。
接下來,所述臨時發(fā)生器使用隨機數(shù)發(fā)生器建立了一個隨機數(shù)。所述隨機數(shù)發(fā)生器由兩根處理線索構(gòu)成,在這里指線索1和線索2。圖4顯示了線索1的操作,這是所述隨機數(shù)發(fā)生器的主線索。
(框51)線索1首先創(chuàng)建一個數(shù)據(jù)結(jié)構(gòu)值表,以保持計數(shù)器值表。該表一開始是空的。
(框52)線索1將一當(dāng)前計數(shù)器值設(shè)定為零,并將完成測試的標(biāo)志設(shè)置為FALSE。
(框53)線索1接著將線索2分叉。線索2傳遞一個異步磁盤存取,然后在所述磁盤存取結(jié)束前一直處于休眠狀態(tài)。當(dāng)所述磁盤存取結(jié)束時,線索2將完成測試的標(biāo)志設(shè)為TRUE。注意線索1和線索2共享完成測試標(biāo)志。
(框54)線索1的計數(shù)器值加1。
(框55)接著線索1測試所述完成測試標(biāo)志現(xiàn)在是否為TRUE,該狀態(tài)表明由線索2初始化的所述磁盤存取已結(jié)束。。如果完成測試標(biāo)志為FALSE,則線索返回到框54。這樣可看出,當(dāng)?shù)却龑λ龃疟P的存取結(jié)束時,線索1不斷地增加所述計數(shù)器值。
(框56)當(dāng)完成測試標(biāo)志為TRUE,線索1終止線索2,并在值表中的第一空白區(qū)保存所述計數(shù)器值。
(框57)接著線索1調(diào)用Statstest函數(shù),該函數(shù)估算存在值表中的所述計數(shù)器值(或計數(shù)器值的一部分,例如低階位)的隨機度。這一函數(shù)可使用如[3]中說明的所述Chi-Squre測試、所述Kolmogorov-Smimov測試或串聯(lián)修正測試??蓛?yōu)化所述Statstest函數(shù)以保證對每一次磁盤存取不會重復(fù)復(fù)雜的計算。所述Statstest函數(shù)返回一個值,該值表明有多少每個被存儲的計數(shù)器值的低位被認(rèn)為是隨機的。
(框58)線索1在與所述值表的長度合并時,將由Statstest函數(shù)返回的所述值與一預(yù)定閥值比較,以確定是否已產(chǎn)生了足夠的隨機位。如果還未產(chǎn)生足夠的隨機位,所述處理返回上述框52,以產(chǎn)生并存儲另一計數(shù)器值。
(框59)當(dāng)己產(chǎn)生了所需數(shù)目的隨機位時,線索1由所述值表的每個計數(shù)器值中提取特定數(shù)目的低階位,并將這個位序列作為輸出隨機數(shù)返回。
總之,可看出所述隨機數(shù)發(fā)生器利用一系列磁盤存取定時的所述不確定性作為臨時數(shù)的產(chǎn)生中的隨機源(看[4])。通過對每個磁盤存取的新線索分叉,所述隨機數(shù)發(fā)生器也利用所述操作系統(tǒng)過程中操作的不確定性作為一第一隨機源。
所述由Statstest函數(shù)執(zhí)行的分析通過計算返回的每個被存儲的計數(shù)器值的低階位的數(shù)目,而允許所述隨機數(shù)發(fā)生器對任意速度的處理器和磁盤進行自調(diào)諧。例如,具有高方差磁盤存取時間的系統(tǒng)對每張磁盤存取的隨機位比具有低方差磁盤存取時間的系統(tǒng)要多。例如,對定量為1080s的磁盤(平均寫時間為6ms),及一個486 66MHz的處理器,所述系統(tǒng)大約產(chǎn)生每秒45比特??商鎿Q地,可對每個磁盤存取的比特數(shù)目進行硬編碼并使用去變形技術(shù)以保證隨機度。
所述臨時發(fā)生器也會詢問所述操作系統(tǒng)以確保其能向一張有效磁盤上傳送每次磁盤存取。所述最終輸出的臨時數(shù)是通過將由所述隨機數(shù)發(fā)生器輸出的隨機數(shù)與使用一報文摘要詢問如上所述的系統(tǒng)參數(shù)而得的結(jié)果合并形成的。
如上所述的臨時發(fā)生器在向磁盤提供了直接存取的操作系統(tǒng)例如Windows95或Windows NT 4.0時,工作狀態(tài)最好。在這種操作系統(tǒng)中,在用戶空間中執(zhí)行的程序可采用特殊操作系統(tǒng)調(diào)用,以允許程序繞過所述操作系統(tǒng)的內(nèi)部緩沖裝置并直接寫磁盤。因為這些特殊操作系統(tǒng)調(diào)用相對效率較低及使用困難,所以許多程序不會利用它們。在Windows 95及Windows NT,如果程序存取數(shù)據(jù)是所述磁盤扇區(qū)大小的數(shù)倍時,該程序可通過詢問所述操作系統(tǒng)而僅僅使用這些特定調(diào)用。
如果所述操作系統(tǒng)不向所述磁盤提供直接存取,則所述詢問裝置24將仍使用磁盤定時隨機數(shù)發(fā)生器。另外,在這種情況下,所產(chǎn)生值的數(shù)量將大大依賴于所述操作系統(tǒng)調(diào)度程序的不確定性,而與對所述磁盤存取時間的固有變化相反。
如上所述本發(fā)明的所述實施例保證了所述操作系統(tǒng)允許一程序在一單個的地址空間內(nèi)分成許多線索。另外,所述發(fā)明的該實施例保證所述操作系統(tǒng)允許線索存取同步變量例如信號量。許多現(xiàn)代的操作系統(tǒng)提供這種服務(wù)。本發(fā)明的實施例使用多重線索以實現(xiàn)確定每張磁盤存取時間的裝置。但是,如對本發(fā)明的完成是在未提供多重線索或同步變量的系統(tǒng)上運行的,則臨時發(fā)生器將替換其它裝置,例如詢問一個物理鎖。
所需用戶不需由網(wǎng)絡(luò)公告板上下載所述軟件而獲取所述軟件。所述用戶也可由一張軟盤或在PC存儲器上的CD-ROM、Internet或另外一些分配裝置上得到軟件。
進一步地,智能卡可被用來存儲所述用戶或銷售商的私人密鑰資料。在這種智能卡使用配置中,盜版者不能由該智能卡上提取出私人密鑰資料,該智能卡甚至可強力防御侵襲。
可能將私人密鑰資料存儲在不安全的存儲設(shè)備例如軟盤中。在這種情況下,該私人密鑰資料應(yīng)加密。一應(yīng)答裝置不應(yīng)能執(zhí)行解密步驟,除非一用戶首先提供一個口令。在這種情況下,所述應(yīng)答裝置能訪問所述私人密鑰資料但不在其地址空間外泄露所述私人密鑰資料。
我們可隨意地擴展本發(fā)明,這可通過加入一內(nèi)部定時器例如一計數(shù)線索,或一外部定時器例如一個時鐘來構(gòu)造所述詢問裝置而實現(xiàn)的。如果在完成所述概率證明協(xié)議之前事先定義門限值,則自動舍棄所述認(rèn)證。
多重程序可具有被嵌入的并與相同的應(yīng)答裝置通信的詢問裝置。在這種情況下,所述應(yīng)答裝置大概會使用相同的智能卡存儲所述私人密鑰資料,該部件是在該應(yīng)答裝置和所有相應(yīng)的詢問裝置間的相互影響中使用??蛇x擇地,可將所述程序配置好以便所述應(yīng)答裝置在其與每個相應(yīng)的詢問裝置間相互作用時使用相同的私人密鑰資料。
一個包括至少兩個應(yīng)答裝置的計算機系統(tǒng)大約可包括一個依賴非對稱加密的應(yīng)答裝置和一個不依賴非對稱加密的第二應(yīng)答裝置。不使用非對稱加密的應(yīng)答裝置的例子是依賴于對稱加密的Dongle。在這種情況下,所述Dongle不能訪問非對稱私人密鑰。
除了完成拷貝保護外,如上所述的裝置還可用作追蹤軟件盜版者。所述裝置提供了極好的跟蹤能力,而不需要每個用戶僅得到該程序唯一的一個版本。
可在大量不同的結(jié)構(gòu)中采用所述許可服務(wù)器20、所述詢問裝置24及如上所述的保護軟件103。
例如-所述許可服務(wù)器20可存在于一個地址空間、所述詢問裝置24,所述受保護軟件103可存在于單一機器的不同地址空間中。
-所述許可服務(wù)器20可存在于一個機器的一個地址空間、所述詢問裝置24,所述受保護軟件103可存在于不同于機器的不同地址空間中。
更進一步,每個多重用戶都具有關(guān)于軟件的受保護項目的自己的拷貝,這些用戶可分享響應(yīng)來自所有這些拷貝的詢問的通用許可服務(wù)器20。
另一處可替換的是多重用戶可共享通用私人密鑰資料。例如,在構(gòu)造多用戶許可函數(shù)性時,一個公司可使用這些被采用項目中的一個或更多。
在另一種可能的變化中,所述密鑰文件105可包括與涉及對所述受保護程序103的服務(wù)進行選擇觸發(fā)的隱含信息。例如,所述密鑰文件105可表示所述受保護程序103能允許打印服務(wù)的運行但不能運行磁盤保存服務(wù)。作為另一個例子,所述密鑰文件105可包括一個截止數(shù),該數(shù)說明特殊服務(wù)可實現(xiàn)的最后一個數(shù)。所述受保護程序103可讀所述密鑰文件105,以確定所述受保護文件應(yīng)該運行的操作。一個用戶應(yīng)能通過向所述銷售商詢問另一密鑰文件,而有獲得運行更多操作的能力。如果一個許可服務(wù)器沒有能鑒定一個程序,則所述許可服務(wù)器可拒絕向該程序提供資源。除非得到了充足的資源,該程序可能會根據(jù)自身的判斷而拒絕執(zhí)行某種操作。
在本文中引用了以下的出版物[1]Choudhury等,計算機網(wǎng)上電子出版物的版權(quán)保護,IEEE網(wǎng)絡(luò),1995年5月/6月,第12-20頁。A.Menezes等,應(yīng)用密碼術(shù)手冊,CRC Press,Inc.ISBN 0-8493-8523-7,S.405-424,1997[3]D.Knuth,計算機編程技巧,Addison-Wesley出版公司,MA讀本,第二版,1981年,第38-72頁,ISBN 0-201-03822-6[4]P.Fenster macher et al,從磁盤驅(qū)動器中空氣渦流得到的加密隨機性,密碼術(shù)的增強Crypto’94,第114-120頁,Springer-Verlag,1994年。ISO/IEC 9796,“信息技術(shù)-安全技術(shù)-能給出信息再生的數(shù)字簽字方案”,國際標(biāo)準(zhǔn)化組織,日內(nèi)瓦,瑞士,1991年(第一版)[6]R.Rivest,MD5報文摘要算法,RFC 1321,1992年4月[7]ISO/IEC 9594-1,“信息技術(shù)-開放系統(tǒng)互連-目錄概念樣機及服務(wù)綜述”。國際標(biāo)準(zhǔn)化組織,日內(nèi)瓦,瑞士,1995(與ITU-TRec X.509,1993相等)
權(quán)利要求
1.一個包括用來保護軟件的保護裝置的計算機系統(tǒng),所述受保護裝置包括至少三項,其中至少包括一詢問裝置、一個第一應(yīng)答裝置及一個第二應(yīng)答裝置,所述詢問裝置與軟件的受保護項目有關(guān),所述第一應(yīng)答裝置能訪問非對稱密鑰對的私人密鑰資料并能與所述詢問裝置通信,所述第二應(yīng)答裝置能與所述詢問裝置通信,其中a)該詢問裝置不能訪問由該第一應(yīng)答裝置訪問的私人密鑰資料,b)所述詢問裝置包括一些裝置,這些裝置用來分別認(rèn)證所述第一應(yīng)答裝置的非對稱證明和所述第二應(yīng)答裝置的證明有效,而不需要所述的第一應(yīng)答裝置公開其私人密鑰資料,c)所述應(yīng)答裝置包括一些裝置,這些裝置禁止受保護程序運行,除非所述認(rèn)證中的一個有效或兩個都有效。
2.如權(quán)利要求1的計算機系統(tǒng),其特征在于所述第一應(yīng)答裝置和所述第二應(yīng)答裝置訪問由同一存儲設(shè)備掌握的私人密鑰資料。
3.一個包括用來保護軟件的保護裝置的計算機系統(tǒng),所述保護裝置包括至少四項其中至少有一個第一詢問裝置、一個第二詢問裝置、一第一應(yīng)答裝置及一第二應(yīng)答裝置,所述第一詢問裝置和軟件的受保護項目有關(guān),所述第一應(yīng)答裝置能使用非對稱密鑰對的私人密鑰資料,且能和所述第一詢問裝置通信,所述第二應(yīng)答裝置能訪問機密密鑰資料,且能與所述第二裝置通信,其中a)所述第一詢問裝置不能使用所述第一應(yīng)答裝置訪問的所述私人密鑰資料,b)所述一個詢問裝置認(rèn)證該第一應(yīng)答裝置的非對稱證明有效,即不需該第一應(yīng)答裝置公開其私人密鑰資料就可使該第一應(yīng)答裝置能訪問該私人密鑰資料,c)所述第二詢問裝置認(rèn)證該第二應(yīng)答裝置的證明有效,即該第二應(yīng)答裝置能訪問該機密密鑰資料,d)所述第一詢問裝置或所述第二詢問裝置禁止使用所述軟件或禁止以不受限制的方式使用所述軟件,除非所述認(rèn)證中的一個有效或兩個都有效。
4.一個包括用來輸入受保護程序及用來嵌入至少三個項目的計算機系統(tǒng),其中至少有一個詢問裝置、一第一應(yīng)答裝置及一第二應(yīng)答裝置,所述詢問裝置與軟件的受保護項目相關(guān),所述第一應(yīng)答裝置能訪問非對稱密鑰對的私人密鑰資料,且能和所述詢問裝置通信,所述第二應(yīng)答裝置能和所述詢問裝置通信,其中a)該詢問裝置不能訪問由該第一應(yīng)答裝置訪問的所述私人密鑰資料,b)所述詢問裝置包括一些裝置,這些裝置用來分別認(rèn)證所述第一應(yīng)答裝置的非對稱證明和所述第二應(yīng)答裝置的對稱證明有效,而不需要該第一應(yīng)答裝置公開其私人密鑰資料,c)該詢問裝置包括一個裝置,這些裝置用來禁止受保護程序的運行,除非認(rèn)證中的一個有效或兩個都有效。
5.一個包括用來用來輸入受保護程序及嵌入至少四個項目的裝置的計算機系統(tǒng),其特征在于包括至少一第一詢問裝置、一個第二詢問裝置、一第一應(yīng)答裝置和一第二應(yīng)答裝置,所述第一詢問裝置和軟件的受保護條目有關(guān),所述第一應(yīng)答裝置能訪問非對稱密鑰對的私人密鑰資料,并能與所述第一詢問裝置通信,所述第二應(yīng)答裝置能訪問可機密密鑰資料,并能與所述第二詢問裝置通信,其中,a)所述第一詢問裝置能訪問由該第一應(yīng)答裝置訪問的所述私人密鑰資料,b)所述第一詢問裝置認(rèn)證所述第一應(yīng)答裝置的非對稱證明有效,即該第一應(yīng)答裝置能訪問該私人密鑰資料,而不需要所述第一應(yīng)答裝置公開所述私人密鑰資料,c)所述第二詢問裝置認(rèn)證該第二應(yīng)答裝置的證明有效,即該第二應(yīng)答裝置能訪問該機密密鑰資料,d)所述第一詢問裝置或所述第二詢問裝置禁止使用所述軟件或禁止以不受限制的方式使用所述軟件,除非所述認(rèn)證中的一個有效或兩個都有效。
6.根據(jù)權(quán)利要求3或5的一個計算機系統(tǒng),其特征在于所述機密密鑰資料是一個第二非對稱密鑰對的私人密鑰資料。
7.根據(jù)權(quán)利要求3或5的一個計算機系統(tǒng),其特征在于第二應(yīng)答裝置的所述機密密鑰資料是非對稱密鑰對的密鑰資料。
8.根據(jù)權(quán)利要求1至7中之一的一個計算機系統(tǒng),其特征在于掌握一部分或全部所述私人密鑰資料的一存儲系統(tǒng)通過一抵制選擇明文攻擊的協(xié)議而相互影響。
9.根據(jù)權(quán)利要求1至8之一的一種計算機系統(tǒng),其特征在于掌握一部分或全部所述私人密鑰資料的一存儲系統(tǒng)通過一抵制自適應(yīng)選擇明文攻擊的協(xié)議而相互影響。
10.根據(jù)權(quán)利要求1至9之一的計算機系統(tǒng),-其特征在于在所述第一應(yīng)答裝置中第一私人密鑰資料是被訪問過的,-其特征在于在所述第二應(yīng)答裝置中第一私人密鑰資料是被訪問過的。
11.根據(jù)權(quán)利要求1至10中之一的計算機系統(tǒng),-其特征在于同一私人密鑰資料由兩個應(yīng)答裝置訪問過。
12.根據(jù)權(quán)利要求1至10中之一的計算機系統(tǒng),-其特征在于在至少兩個應(yīng)答裝置中許可服務(wù)器的私人密鑰分別被訪問過。
13.根據(jù)權(quán)利要求1至12中之一的計算機系統(tǒng),其特征在于使用了以下類型證明中的一個-數(shù)字簽字,-非對稱機密性,-概率證明。
14.根據(jù)權(quán)利要求13的一個計算機系統(tǒng),其特征在于所述非對稱機密性方案是Blum-Goldwasser方案。
15.根據(jù)權(quán)利要求13的一個計算機系統(tǒng),其特征在于所述概率證明方案是零知識證明方案。
16.根據(jù)權(quán)利要求13的計算機系統(tǒng),其特征在于所述概率證明方案是證據(jù)隱藏證明方案。
17.根據(jù)權(quán)利要求1至16之一的計算機系統(tǒng),其特征在于-所述第一詢問裝置或所述第二詢問裝置包括用來產(chǎn)生一隨機詢問的裝置,且-所述信息包括所述隨機詢問。
18.根據(jù)權(quán)利要求17的計算機系統(tǒng),其特征在于用來產(chǎn)生隨機詢問的所述裝置包括對設(shè)備存取重復(fù)進行定時應(yīng)答而產(chǎn)生一隨機詢問的裝置。
19.根據(jù)權(quán)利要求18的計算機系統(tǒng),其特征在于所述用來產(chǎn)生一隨機詢問的裝置包括以一種方式將新線索分叉的裝置,該方式利用所述操作系統(tǒng)調(diào)度程序中的不確定性,以便將附加隨機度引入該隨機詢問。
20.根據(jù)權(quán)利要求18的計算機系統(tǒng),其特征在于所述用來產(chǎn)生一隨機詢問的裝置包括一執(zhí)行統(tǒng)計測試的裝置及另一些裝置,所述執(zhí)行統(tǒng)計測試的裝置確定由每次磁盤訪問得到的隨機比特的數(shù)目,所述另一些裝置用來引發(fā)設(shè)備反復(fù)存取直到獲得預(yù)定的隨機比特數(shù)目。
21.根據(jù)權(quán)利要求1到20之一的一種計算機系統(tǒng),其特征在于所述詢問裝置被嵌入所述受保護項目中。
22.根據(jù)權(quán)利要求1到21之一的計算機系統(tǒng),其特征在于所述詢問裝置為認(rèn)證-證明而使用所述第一公共密鑰資料。
23.根據(jù)權(quán)利要求1到22之一的計算機系統(tǒng),其特征在于所述系統(tǒng)包括一用來掌握所述第一公共密鑰資料的密鑰文件。
24.根據(jù)權(quán)利要求23的計算機系統(tǒng),其特征在于掌握在所述密鑰文件中的所述第一公共密鑰資料是安全加密的,從而若不更換所述詢問裝置,不可能替換所述密鑰文件的任何一部分,包括所述第一公共密鑰資料。
25.根據(jù)權(quán)利要求24的計算機系統(tǒng),其特征在于該密鑰文件包括確定軟件所述受保護項目支持的用戶的信息。
26.根據(jù)權(quán)利要求24的計算機系統(tǒng),其特征在于該密鑰文件包括在其中保留的用以假扮為第一公共密鑰資料的假比特。
27.根據(jù)權(quán)利要求24的計算機系統(tǒng),其特征在于該密鑰文件或該詢問裝置及/或軟件的所述受保護項目包括與軟件的所述受保護項目服務(wù)的選擇開啟有關(guān)。
28.根據(jù)權(quán)利要求27的計算機系統(tǒng),其特征在于決定是否選擇地開啟一特殊的設(shè)備特別依賴于所述詢問裝置是否認(rèn)證所述應(yīng)答裝置有效。
29.根據(jù)權(quán)利要求1至28之一的一種計算機系統(tǒng),包括軟件的許多受保護項目,每個都有自己的詢問裝置、單應(yīng)答裝置,這些裝置在所有所述受保護項目間是共享的。
30.根據(jù)權(quán)利要求1至29的一種計算機系統(tǒng),包括至少一個根證明,用來認(rèn)證子證明有效,所述證明包括至少一個用于應(yīng)答裝置的公共密鑰資料。
31.根據(jù)權(quán)利要求30的一種計算機系統(tǒng),包括至少兩個根證明,每個分別用于相應(yīng)的應(yīng)答裝置。
32.根據(jù)權(quán)利要求1至31之一的一種計算機系統(tǒng),用于拷貝防護軟件及/或許可軟件。
33.一種對許多用戶分配軟件的方法,其特征在于每個用戶都有一臺如權(quán)利要求1的計算機系統(tǒng),且其中每個用戶接收所述受保護程序和所述詢問裝置的同一拷貝。
34.一種保護軟件項目的方法,包括一種保護軟件的保護裝置,所述保護裝置包括至少三項,其中至少有一詢問裝置、一個第一應(yīng)答裝置及一個第二應(yīng)答裝置,所述詢問裝置與軟件的受保護項目有關(guān),所述第一應(yīng)答裝置能訪問非對稱密鑰對的私人密鑰資料并能與所述詢問裝置通信,所述第二應(yīng)答裝置能與所述詢問裝置通信,其中a)該詢問裝置不能訪問由該第一應(yīng)答裝置及該第二應(yīng)答裝置分別訪問的私人密鑰資料,b)所述詢問裝置不需所述第一應(yīng)答裝置公開其私人密鑰資料,就可分別地認(rèn)證該第一應(yīng)答裝置的證明及第二應(yīng)答裝置的證明有效,c)所述詢問裝置禁止受保護程序運行,除非所述認(rèn)證中的一個有效或兩個都有效。
35.如權(quán)利要求34的一種方法,其特征在于所述第一應(yīng)答裝置和所述第二應(yīng)答裝置訪問由同一存儲設(shè)備掌握的私人密鑰資料。
36.一種保護軟件項目的方法,包括一個保護軟件的保護裝置,該保護裝置包括至少四個項目,其中至少有一個第一詢問裝置、一個第二詢問裝置、一第一應(yīng)答裝置及一第二應(yīng)答裝置,所述第一詢問裝置和軟件的受保護項目有關(guān),所述第一應(yīng)答裝置能使用非對稱密鑰對的私人密鑰資料,且能和所述第一詢問裝置通信,所述第二應(yīng)答裝置能訪問機密密鑰資料,并能與所述第二詢問裝置通信,其中a)所述第一詢問裝置不能使用所述第一應(yīng)答裝置訪問的所述私人密鑰資料,b)所述一個詢問裝置認(rèn)證所述第一應(yīng)答裝置的非對稱證明有效,即不需所述第一應(yīng)答裝置公開其私人密鑰資料就可使該第一應(yīng)答裝置能使用該私人密鑰資料,c)所述第二詢問裝置認(rèn)證該第二應(yīng)答裝置的證明有效,即該第二應(yīng)答裝置能訪問該機密密鑰資料,d)所述第一詢問裝置或所述第二詢問裝置禁止使用所述軟件或禁止以不受限制的方式使用所述軟件,除非所述認(rèn)證中的一個有效或兩個都有效。
37.根據(jù)權(quán)利要求34至36中之一的方法,其特征在于所述機密密鑰資料是第二非對稱密鑰對的私人密鑰資料。
38.根據(jù)權(quán)利要求34至36中之一的方法,其特征在于所述機密密鑰資料是一對稱密鑰對的密鑰資料。
39.根據(jù)權(quán)利要求34至38中之一的方法,其特征在于掌握一部分或全部私人密鑰資料的一個存儲系統(tǒng)通過一抵制選擇明文攻擊的協(xié)議相互影響。
40.根據(jù)權(quán)利要求34到39中之一的方法,其特征在于掌握一部分或全部私人密鑰資料的一個存儲系統(tǒng)通過一抵制自適應(yīng)選擇明文攻擊的協(xié)議相互影響。
41.根據(jù)權(quán)利要求34到40中之一的一種方法,其特征在于-第一應(yīng)答裝置中,訪問的是一第一私人密鑰資料,且-第二應(yīng)答裝置中,訪問的是一第二私人密鑰資料。
42.根據(jù)權(quán)利要求34到41中之一的一種方法,其特征在于至少第二詢問裝置不能使用并不知道存儲在至少兩個應(yīng)答裝置的任意一個中的所述私人密鑰資料。
43.根據(jù)權(quán)利要求34至42中之一的一種方法,其特征在于至少在兩個應(yīng)答裝置中,許可服務(wù)器的私人密鑰是被分別安全存儲的。
44.根據(jù)權(quán)利要求34至43中之一的一種方法,其特征在于至少使用以下方法中的一種標(biāo)記信息-數(shù)字簽字,-非對稱保密性,-概率證明。
45.根據(jù)權(quán)利要求44的一種方法,其特征在于所述非對稱保密方案是Blum-Goldwasser方案。
46.根據(jù)權(quán)利要求44的一種方法,其特征在于概率證明方案為零知識證明方案。
47.根據(jù)權(quán)利要求44的一種方法,其特征在于概率證明方案為隱藏證據(jù)證明方案。
48.根據(jù)權(quán)利要求34至47中之一的一種方法,其特征在于-所述詢問裝置包括產(chǎn)生一隨機詢問的裝置,且-所述信息包括所述隨機詢問。
49.根據(jù)權(quán)利要求48的一種方法,其特征在于-所述用來產(chǎn)生一隨機詢問的裝置包括由重復(fù)地對磁盤訪問進行定時應(yīng)答而產(chǎn)生一隨機詢問的裝置。
50.根據(jù)權(quán)利要求49的一種方法,其特征在于用來產(chǎn)生一隨機詢問的所述裝置包括用作以一種方式對新線索索進行分叉的裝置,這種方式通過利用所述操作系統(tǒng)調(diào)度程序中的不可預(yù)見性向所述隨機詢問引入附加的隨機度。
51.根據(jù)權(quán)利要求49所述的一種方法,其特征在于用來產(chǎn)生一隨機詢問的裝置包括一些執(zhí)行統(tǒng)計測試的裝置及另一些裝置,所述執(zhí)行統(tǒng)計測試的裝置是用來確定由每次所述磁盤訪問而得到隨機比特的數(shù)目,所述另一些裝置用來引發(fā)磁盤反復(fù)存取直到得到了預(yù)定數(shù)目的隨機比特。
52.根據(jù)權(quán)利要求34至51的一種方法,其特征在于所述詢問裝置是嵌入軟件的所述受保護條目中的。
53.根據(jù)權(quán)利要求34至52的一種方法,其特征在于所述詢問裝置使用第一公共密鑰資料對所述信息加密。
54.根據(jù)權(quán)利要求34至53的一種方法,其特征在于所述系統(tǒng)包括一個掌握所述第一公共密鑰資料的密鑰文件。
55.根據(jù)權(quán)利要求54的一種方法,其特征在于由所述密鑰文件掌握的所述第一公共密鑰資料在加密上是安全的,從而若不更換所述詢問裝置,則不可能更換所述密鑰文件中的任何一部分,包括所述第一公共密鑰資料。
56.根據(jù)權(quán)利要求55的一種方法,其特征在于所述密鑰文件包括確定軟件的所述受保護項目支持的用戶的信息。
57.根據(jù)權(quán)利要求55的一種方法,其特征在于所述密鑰文件包括假扮為其中掌握的所述第一公共密鑰資料的假比特。
58.根據(jù)權(quán)利要求55的一種方法,其特征在于所述密鑰文件包括與軟件受保護項目的服務(wù)的選擇開啟相關(guān)的信息。
59.根據(jù)權(quán)利要求34至58之一的一種方法,包括至少兩個根證明,其中一個分別對應(yīng)每個應(yīng)答裝置,用來證明子證明有效,所述證明包括至少一個公共密鑰資料,該部件是分別對應(yīng)每個應(yīng)答裝置。
60.根據(jù)權(quán)利要求34至59之一的一種方法,用在拷貝防護軟件和/或許可軟件。
全文摘要
一種保護軟件的一個項目的方法,其中至少一個第一詢問裝置與所述軟件的受保護項目有關(guān),且至少一第一應(yīng)答裝置訪問一私人密鑰資料。至少一第三裝置(或是詢問裝置或是應(yīng)答裝置也可存在)。所述第一詢問裝置不能使用所述私人密鑰資料。所述第一應(yīng)答裝置向所述第一詢問裝置證明該第一應(yīng)答裝置能使用所述私人密鑰資料。所述第一詢問裝置使用相應(yīng)于所述第一應(yīng)答裝置的私人密鑰資料的所述公共密鑰資料證明所述證明有效。
文檔編號G06F21/10GK1207530SQ98115420
公開日1999年2月10日 申請日期1998年5月27日 優(yōu)先權(quán)日1997年5月28日
發(fā)明者G·本森 申請人:西門子公司