專利名稱:生成加密簽名以及與產品副本一起使用此類簽名的技術的制作方法
技術領域:
本發明涉及加密技術,具體地說,涉及用于以下處理的技術對于要簽名的給定報文,生成一個可信的加密簽名,并適當驗證此簽名的技術,其中由報文簽名者發起的簽名報文的接收者,能夠秘密驗證以上加密簽名。
幾個世紀以來,只要在兩個個體之間傳遞信息,該信息就會受到第三方偵聽、偷聽、泄密和/或訛誤的影響。顯然,安全保護信息以避免此類行為的問題已經存在很長時間了。
傳統上,通過這些年來開發的越來越復雜的加密技術,解決了上述問題。這些技術中的一類技術涉及使用基于密鑰的密碼。具體而言,通過基于密鑰的密碼,將共同構成報文的可理解數據序列,即明文,用加密算法,都數學變換為表面上不可理解的數據,即所謂的密文。該變換不僅是完全可逆的,即在密文必須能夠可逆到其對應原始明文的意義上是雙向的,同時必須以一一對應為基礎,即只能將明文的各元素,變換到一個且僅一個密文元素。此外,生成任意給定密文的特定密碼,必須足以免受密碼分析的危害。為了提供所要求的安全性級別,選擇一個唯一密鑰,該密鑰僅定義一個唯一對應的密碼,即在可能范圍內,避免許多不同密鑰分別在相同明文一密文通信之間產生可逆變換的情況。所有加密技術的強度,以及由此提供的防止第三方侵入的保護程度,與第三方進行密碼分析所需要的時間成正比,即與在不了解密鑰的情況下,借助基于密鑰的密碼,將密文成功轉換為對應明文所需要的時間成正比。實際上,盡管不存在完全不受密碼分析影響的加密技術,但需要大量計算以及相當長的時間間隔,因此在不了解其密鑰的情況下,給定破譯密碼所需要的可用計算技術,將有效地使眾多技術足以安全確保其廣泛采用和使用。在這點上,就在幾年以前,如果密碼具有此類復雜度,即破譯此密碼需要的計算為幾人年或更多,則考慮到當時可用的處理技術狀態,許多人還認為基本的密碼處理技術的安全性足以確保其使用。
公開密鑰算法是一種基于密鑰的加密程序。在此算法中,各通信方生成一公開私有密鑰對。各方將他(她)的公開密鑰張貼到可公開訪問的公告牌、服務器或其他設施上,但秘密保持對應的私有密鑰。本質上,希望加密明文報文,然后發送到另一方(即目的方)的發起方,將首先訪問目的方的公開密鑰,使用該公開密鑰將明文報文加密為密文報文,并將密文報文發送到目的方,其中雙方使用相同的公開密鑰算法。在接收到密文報文后,目的方將使用他(她)的私有密鑰,來解密該報文,以恢復原始明文。通過使用非常特殊的算法,準確計算密鑰,以便在保證完全可逆性的條件下,提供要求的安全性級別。
盡管公開密鑰加密系統能夠提供非常安全的加密,其中考慮到破譯公開密鑰密碼所需要的絕對運算次數極多,達到破譯公開密鑰密碼是完全不可能的程度,但是此類系統的確具有許多限制其使用的缺點。公開密鑰系統的一個主要缺點是,它依賴于攜帶一個相當長的位序列的密鑰和模數。例如,模數的長度容易達到1024位,而各密鑰可由數百位的序列構成。在某些應用中,例如在能夠輕易存儲密鑰,對密鑰建立索引,并能夠在需要時訪問密鑰的加密應用中,對用戶而言,密鑰的長度幾乎沒有什么實際問題。而對于其他應用,上述長密鑰序列,即使轉換為字母數字數據,也會生成妨礙用戶手工輸入的超長字符串。事實上,公開密鑰系統的極端安全性的根源在于,其密鑰和模數均使用很長的位序列。如果模數顯著變短,則很容易破譯經過加密的報文,因此,很容易危及基本系統的安全性。
計算技術一直在快速發展。僅僅幾年前還未聽說過的、采用先進技術并具有很高速度的處理器,正在以不斷下降的價格大批上市。因此,以前認為不具備破譯所謂的“安全”加密密碼所需要的足夠處理能力的個人計算機和工作站,如果具備現有能力和先進技術,則能夠為第三方提供有效破譯同一密碼的必需能力。現在僅需很少一點時間,就能完成以前需要十年時間才能完成的計算。因此,隨著技術的發展,加密技術也在步伐一致地前進,以不斷開發越來越先進的加密技術,從而抵擋越來越強烈的密碼分析。
完全拋開加密技術不論,至少在此前的十年中,計算機軟件生產商一直遭受并繼續遭受非授權的第三方對其產品的大量非授權使用。造成上述情況的部分原因在于,能夠比較容易地復制包含軟件程序的分發介質,如磁盤或CD-ROM。為了盡量阻止上述非授權使用,通常與軟件包產品的各合法副本一起,分發一個比較長的字母數字標記,并且當用戶在計算機上安裝該副本時,提示用戶輸入以上標記。具體而言,該副本包含一個需要用戶首先加載并執行的安裝程序,以便開始并順序完成整個安裝過程。通常,在該安裝過程的早期,該程序將提示正在安裝此副本的用戶手工輸入該標記。例如,該標記可以包含十位或更多位。在通過光盤(CD)分發的情況中,將該標記印刷在粘貼在裝有CD的各盒上的標簽上。對于基于磁盤的分發,通常將該標記印刷在證書上,或軟件包內的其他插頁上。無論如何,一旦用戶完全輸入了該標記,并用信號通知了計算機,通常安裝程序就試圖通過單擊顯示器上顯示的“確定”按鈕(或類似物),驗證該標記,以確定正在安裝的特定副本是否為授權版本。如果該標記有效,則安裝過程繼續;否則,提前終止安裝過程。其基本前提是,合法獲得有效副本的各用戶(即被許可人),將具有生產商提供的完整包裝,因此,擁有有效標記;而僅獲得程序副本本身,并沒有附隨包裝和/或插頁的非授權用戶,將沒有該標記。考慮到標記的長度,用戶隨機竊取有效標記的可能性是非常低的。因此,試圖安裝非授權副本的用戶,將會不停地輸入錯誤標記,實際上,他(她)將永遠不能成功安裝所獲得的程序副本,從而使該副本毫無用處。
不幸的是,已經在實踐中證明,很容易識別用于生成此類標記的基本算法,并且似乎已經在廣泛地非法傳播。因此,考慮到該算法的明顯可用性,非授權用戶經過某些努力,能夠獲得他(她)試圖安裝的程序的標記。因此,常常挫敗生產商阻止使用此類非授權副本的努力。
顯然,軟件生產商由于其產品的非授權副本而損失收入。此外,軟件生產商經常對其產品提供某種形式、或另一種形式的客戶支持。當試圖將此類支持限于被許可人時,客戶支持人員通常要求用戶首先提供與其尋求支持的產品副本有關的標記,作為獲得支持的條件。考慮到非授權用戶容易得到有效標記,軟件生產商很難區分被許可人和此類非授權用戶,以便向被許可人提供支持,同時拒絕向后者提供支持。因此,生產商通常在不經意地向非授權用戶提供支持,從而導致不必要的附加支持費用。如果指定軟件產品的非授權用戶數目很大,則與該產品有關的額外費用將非常顯著。
因此,存在允許軟件生產商明顯降低其軟件產品之非授權復制發生率的技術需求。此技術應唯一標識該產品的各副本,并允許確定特定副本的真實性。此技術應當包括,通過公開密鑰系統,以密碼方式生成一個十分安全的標識符(即,在計算機技術的現有狀態和期望進展下,在不了解密鑰的情況下,第三方將不可能生成一個有效標識符)。此外,該標識符應足夠長,以確保其安全性,但又不能太長,以便在需要時,如在安裝過程中或在獲得產品支持的過程中,妨礙用戶手工提供該標識符。通過使用此技術,軟件生產商應能夠明顯降低其軟件產品的非授權使用,以及由此引起的相關費用。同時,這樣做能夠經濟地允許生產商,向其被許可人提供其他服務,如推銷,從而提高被許可人對產品和生產商的雙重滿意度。
本發明通過根據公開密鑰密碼系統,使用從有限域上面的橢圓曲線上的各點中選擇的一個發生器值,生成諸如數字產品副本標識符之類的給定報文的可信加密簽名,有利地滿足了上述需求,并克服了現有技術的不足。我們的技術使用該發生器值連同三個密鑰,即公開密鑰、私有密鑰和保密密鑰,一起生成可信簽名,從而大大提高與通過使用常規雙密鑰公開密鑰加密系統生成的加密簽名有關的安全性。
通過使用我們的發明,在當前的可能領域內,并且在不了解保密密鑰的情況下,僅僅知道公開密鑰和私有密鑰,并不能生成包含可信簽名的新的簽名報文對。
根據本發明的技術,給定特殊橢圓曲線上的各點,選擇該曲線上某個點的值作為發生器的值。私有密鑰是隨機選擇的。公開密鑰定義為發生器的值和私有密鑰的預定函數,特別是用私有密鑰取發生器值的冪。保密密鑰用于生成一個偽隨機數。然后,通過該發生器、偽隨機數以及一個報文(諸如隨機選擇的標識符)的預定函數,生成可信簽名的第一部分。具體而言,首先用偽隨機數值取發生器值冪,以產生一個值,然后再將該值與報文連接在一起。接著,通過預定的散列(hash)函數處理由連接產生的數,從而產生可信簽名的第一部分。根據該第一部分、偽隨機值以及私有密鑰的預定函數,生成可信簽名的剩余部分。最后,通過將簽名的兩個部分連接起來,生成完整的可信簽名。
通過連接標識符與可信簽名,生成諸如與軟件產品副本一起使用的二進制標記。將二進制標記轉換為字母數字形式,然后與產品副本聯系起來,其通常采取的方法是,將其印刷在粘貼在該副本包裝上的標簽上。將公開密鑰和發生器值,存儲在其產品副本中的適當文件內,以便在隨后的客戶計算機上安裝時,供副本驗證使用。
在安裝產品副本時,首先通過在客戶計算機上,使用發生器值、公開密鑰和完整標記,特別是用戶輸入的標記和簽名,計算簽名的第一部分,來驗證用戶輸入的簽名。此后,對照用戶輸入的標記中包含的該簽名的相同部分的值,比較第一部分的值,以確定上述兩個值是否完全匹配。如果上述匹配存在,則輸入的簽名可信,并且繼續安裝此副本;否則,簽名不可信,提前終止安裝過程。
使用三個不同階段實現本發明,并生成產品副本標記(a)只進行一次的初始化,通常由軟件生產商進行,以生成各種參數值;(b)標記生成,使用初始化過程中生成的參數值,在介質復制場所重復進行,以生成各不同產品副本的包含可信簽名的相應標記,以便與該副本一起使用;以及(c)驗證,在執行安裝程序期間,分別在用戶場地相繼發生,以便驗證用戶輸入的、與該用戶試圖安裝的特定產品副本有關的標記中的簽名。
通過連同附圖一起考慮以下詳細說明書,將更容易理解本發明的技術,其中附圖為
圖1表示使用本發明之技術的CD-ROM生產系統5的高級的簡化框圖;圖2表示典型客戶計算機200的高級框圖,其中客戶計算機在從圖1所示的系統5生產的CD-ROM中安裝程序時,說明性地利用本發明;圖3表示圖2所示的客戶計算機200的框圖;圖4為一個流程圖,說明在圖1所示的計算機10中執行的標記生成過程400;以及圖5為一個流程圖,說明在圖2和圖3所示的客戶計算機200中執行的驗證過程500。
為了便于理解,盡可能使用相同的參考號指明附圖共有的相同部件。
在考慮下述詳細說明之后,熟練技術人員將清楚認識到,可以在要求發送者生成指定報文之加密簽名的、各種應用的任意應用中,利用本發明的技術。我們的發明特別(并不僅僅)適用于在為從公共發送者,即簽名者,發出的一連串的特有報文生成簽名的情況中使用。各結果簽名不僅提供較高的安全性,即不能進行密碼分析,而且還可以驗證是從唯一的公共簽名者發出的。在這點上,通過使用作為有效簽名集之成員的公開密鑰,可以公開驗證上述各簽名,此外,也可以使用保密密鑰,來秘密地唯一驗證各簽名。其優點在于,通過使用我們的發明,即使第三方(不是預定的簽名者)通過密碼分析,確定了違法生成對其接收者而言看似有效的簽名的方法,第三方將仍然不能正確驗證其接收者的特定簽名。為了簡化以下討論,我們將在下述范圍內討論我們的發明,生成將在相應標記內使用的簽名,以便在諸如客戶個人計算機(PC)上的安裝過程中,驗證特定副本,其中該標記本身與某個軟件產品的給定副本唯一關聯。
A.使用環境考慮圖1,該圖表示CD-ROM生產系統5的高級的簡化框圖。利用其基本形式表示的上述系統,包含計算機10,CD刻錄機50和打印機60。此系統生產包含共同實現某個應用程序之完整副本所需的所有文件的CD-ROM,如用于包含在軟件產品包中的內含物。例如,該產品可以為字處理程序,電子表格程序,共同提供的此類程序的套件,操作系統,或其生產商作為一個整體生產、分發的任意其他軟件產品包。
系統5不僅復制實現給定副本所需的所有文件,而且此系統還生成一個字母數字標記,通常將此標記印刷在一張標簽上,然后粘貼到裝有該CD-ROM的容器、或放置該CD-ROM的包裝盒上。此標記實現兩種功能(a)它唯一標識與其有關的特定CD-ROM,以及(b)通過本發明,以密碼方式驗證它是該特定CD-ROM而不是其他CD-ROM的標記。至于后一種功能,在將此產品從特定CD-ROM安裝到PC(后面將連同圖2一起大致說明此過程,然后連同圖5一起詳細說明此過程)上時,每當提示用戶輸入該標記時,作為安裝程序的一部分而執行的驗證過程,將連同該CD-ROM上存儲的特定信息(包括公開密鑰和保密密鑰),以密碼方式確定用戶剛剛輸入標記是否為生產商發布的,以及此特定CD-ROM是否可信。
盡管生產商可以生成有效標記的一個大集供其使用,或者在生產該產品期間,以安全方式,向第三方磁盤復制者分發該集合,但是,對于給定的產品副本,可以唯一驗證系統5而為其相應的產品副本生成的各個標記。這樣,如果第三方獲得該軟件的非法副本,其中包括所有的應用程序和安裝文件,而不管該副本駐留的介質,則即使第三方擁有有效標記的列表,也不可能生成能夠正確驗證特定副本的標記。
具體參照圖1,計算機10局部存儲并執行應用程序20,特別是軟件副本發生器程序30。在相應的范圍內,程序30例如控制CD-ROM的生產過程,其中CD-ROM存儲共同實現軟件產品包之副本所需要的所有文件的副本。這些文件包括,在例如客戶PC之類的遠程計算機上完全安裝、并實現該產品所需要的所有程序(包括有關的數據文件,若有的話)和安裝文件。在計算機10內,這些文件全部駐留在程序存儲器15上,如本地硬盤,也可以利用到達遠程文件服務器的網絡連接,用作備擇實施方式。通過在軟件副本發生器程序30內執行的常規文件復制程序32,順序下載這些文件,如直線17所示。程序32指定要下載的特定文件,按次序從程序存儲器15中訪問各文件,并將各文件下載到CD刻錄機50,同時命令將該文件寫到隨后插入刻錄機內的CD-ROM上。正如下面說明,特別是連同圖4一起討論的那樣,標記生成過程400生成字母數字標記75,其長度通常為25位,該標記與正在將文件寫到其上的特定CD-ROM關聯。一旦過程400生成了該標記,此過程就向圖1所示的打印機60提供該標記,后者將此標記打印到一張標簽上。在將所有文件復制到該CD-ROM上之后,如虛線55所示,將其插入到諸如CD-ROM容器之類的合適包裝70中。然后如虛線65所示,將該標簽粘貼到此包裝的外表面上。可以執行過程400,以至標記的生成與將程序文件寫到CD-ROM上大致同時發生,或者與它的時間具有交錯關系。盡管為了簡便起見,僅用包含一臺計算機、一臺CD-ROM刻錄機以及一臺打印機的形式,表示系統5,但實際上,系統5可以包含多臺計算機—通常利用網絡連接到遠程文件服務器,多臺刻錄機和多臺打印機,以實現所需的流水線并行程序復制操作。
正如圖示80所示,標記75包含字段83和87,這些字段包含一個標識符(ID),然后是根據該標識符生成的簽名,即SIGN(ID)。正如該標記之圖示90詳細表示的那樣,該標識符包含報文M,后者具有一個值,該值對軟件生產商生產的各產品的各個副本是唯一的。作為示例,當轉換為二進制時,此報文為一個32位的二進制序列號,只有該生產商生產的所有產品中之某個軟件產品的唯一一個副本,才有該序列號。當轉換為二進制時,簽名包含一個說明性的長度為83位的值,該值是兩個值r和s的連接(用“°”表示連接操作),其中將在下面詳細討論r和s,并且通過本發明,生產商使用該標識符生成r和s。
圖2表示典型客戶計算機200的高級框圖,其中客戶計算機在例如從圖1所示的系統5生產的CD-ROM中安裝程序時,說明性地利用本發明。
此時,為了從CD-ROM中安裝程序,如直線207所示,用戶將該CD-ROM,插入到與客戶計算機200關聯的CD-ROM驅動器中。該用戶或者手工命令計算機200開始執行該CD-ROM上存儲的安裝程序220(通常命名為“setup.exe”或“install.exe”),或者此程序將通過諸如與程序220有關并在操作系統上實現的常規“自動運行”能力,自動執行,然后在客戶計算機上執行。安裝程序220將以應用程序210的方式執行,然后在此客戶機上執行。實現該產品之預定安裝過程的,并且在從CD-ROM上將該產品之所有程序文件傳輸到本地海量存儲器之前的程序220,將執行驗證過程500。此過程(將在下文中連同圖5詳細說明),將提示用戶輸入與正在從其上安裝程序的特定CD-ROM有關的標記。作為對此提示的響應,用戶通常通過與計算機200有關的鍵盤,手工輸入與此特定CD有關的25位的字母數字標記。一旦用戶表示他(她)已經通常利用鼠標單擊與計算機200有關的本地顯示器上顯示的正確按鈕,完全輸入了此標記,驗證過程500就使用該標記中包含的信息,特別是如下文所述該CD-ROM中存儲的M、r和s的值以及特定的數據值,確定用戶輸入的標記是否可信,即該標記是否是生產商發布的,以及此特定CD-ROM是否可信。
如果驗證過程500成功驗證了用戶輸入的標記,則此過程將通知安裝程序220(如圖2所示),該安裝程序再繼續進行安裝過程,隨后,從CD-ROM上將所有合適程序文件復制到客戶計算機200上。然而,如果過程500不能驗證該標記,則過程500將提前終止安裝過程,并且不會將任何程序文件復制到客戶計算機200上。根據是否驗證了該標記,驗證過程500生成并向用戶顯示適當消息,如直線230所示。無論該標記驗證與否,此消息均可以隱含在生成過程中,并分別在該安裝過程的驗證后階段中,顯示下一個繼續屏幕,或者顯示一條警告消息,指出不授權該用戶使用正在安裝的副本,并因此終止安裝過程。
圖3表示客戶計算機(PC)200的框圖。
如圖所示,客戶計算機200包括輸入接口(I/F)320,處理器340,通信接口350,存儲器330和輸出接口360,并按照慣例,都利用總線370進行互連。存儲器300通常包括多種形式,例如隨機存取存儲器(RAM)332,用于臨時數據和指令存儲;磁盤驅動器334,用于按照各用戶命令利用軟盤交換信息;非易失海量存儲器335,利用具有天然磁性的硬盤實現;以及CD-ROM驅動器336。盡管在使用CD-ROM分發軟件產品的范圍內說明本發明,但本發明同樣適用于在其他海量介質(如軟盤)上分發軟件產品,其中在該種情況中,要將該介質插入到合適的驅動器中,如磁盤驅動器334中,并從該驅動器上讀取安裝程序,然后執行。海量存儲器335還可以包含其他光介質讀取設備(未示出)(或寫設備),以便從合適的光存儲介質上讀取信息(或將信息寫到該介質上)。此外,海量存儲器335還存儲操作系統(O/S)337和應用程序210的可執行指令和有關數據。程序210包括安裝程序220,其中一旦在軟件安裝過程中加載了安裝程序,其本身就包含本發明的驗證過程500(參見圖5)。可以利用諸如WINDOWSNT(“WINDOWS NT”為位于華盛頓州Redmond的微軟公司的注冊商標)之類的常規操作系統,實現圖3中所示的O/S 337。我們將不討論O/S 337任何組件,因為它們與本發明無關。只需說明在O/S的控制下執行作為應用程序210之一的安裝程序220,就足夠了。
其優點在于,當將本發明的技術嵌入到軟件產品中使用時,除要求用戶輸入正在安裝的特定產品副本的標記之外,并不需要其他明顯的用戶交互。
如圖3所示,輸入信息可以從兩個示意性的外部來源產生網絡提供的信息,例如通過到達網絡接口350的網絡連接355,來自因特網和/或其他連網設備,或者經由路徑310,從專用的輸入源,到達輸入接口320。專用輸入可以從各種各樣的數據源發起,這些數據源與本發明沒有任何特定關系。盡管在從CD-ROM進行本地安裝的范圍內說明本發明,但也可以在將該產品網絡安裝到計算機200的過程中使用本發明,如通過因特網或其他連網設備(如內聯網)。在該情況下,生產商或站點許可管理員,一旦收到產品副本的電子支付或被許可副本的合適授權請求,就可以從遠程網絡文件服務器上,下載包含該產品副本之對應標記的文件。如果在該文件服務器上遠程執行相關安裝程序,則該服務器將訪問存儲在客戶機上、包含有標記的文件,并在將所有程序文件下載到計算機200上之前,驗證該標記。作為選擇,如果在本地執行安裝程序,則一旦從服務器下載了所有程序和安裝文件,該服務器(或者用戶在稍后的某個時間內)將開始在本地執行安裝程序。此程序將本地訪問包含標記的文件,接著驗證產品副本。
輸入接口320包含適當電路,以提供將輸入信息之各種不同的專用源,物理連接并對接到計算機系統200所需要的必要的對應電子連接。在操作系統的控制下,應用程序210經由網絡連接335或路徑310,與外部源交換命令和數據,以傳輸并接收程序執行過程中通常由用戶請求的信息。
此外,輸入接口320還將諸如鍵盤和鼠標之類的用戶輸入設備395,電子連接并對接到計算機系統200。分別通過線路363和367,將諸如常規彩色顯示器之類的顯示器380,以及諸如常規激光打印機之類的打印機385,連接到輸出接口360。輸出接口提供需要的電路,以將顯示器和打印機,電子連接并對接到計算機系統。一般而言,正如人們理解的那樣,本發明的技術可以運行,以生成幾乎各種類型的報文的唯一的、安全的、可驗證簽名,并不僅僅只能生成產品副本標記,而與客戶計算機200獲得、存儲和/或交換報文的形式無關。
此外,由于除實現本發明的模塊之外的計算機系統200的特定硬件組件,以及存儲器335中存儲的軟件的各個方面,為眾所周知的常規部件,因此不再詳細討論。一般而言,計算機10具有與客戶計算機200類似的體系結構。
B.發明技術通過本發明,若給定某個報文,如數字產品副本標識符,則基于公開密鑰加密系統,并且通過使用從有限域上面的橢圓曲線上的各點中選擇的一個發生器值,生成該報文的可信簽名。我們的技術依賴于使用該發生器值連同示例簽名者A的三種密鑰,即公開密鑰(PA)、私有密鑰(SA)和保密密鑰(KA)一起,生成可信簽名。
正如在公開密鑰加密技術中那樣,由簽名者A生成報文(M)的簽名,簽名為報文以及簽名者的公開密鑰和私有密鑰的函數,即Sign(M,PA,SA)→SIGNATURE_A(M)。
此報文的接收者B,可以按照報文、其簽名以及其簽名者公開密鑰的函數,即Vefiry(M,SIGNATURE_A(M),PA),驗證他(她)接收的報文的簽名。驗證結果通常為是/否指示,以表示該簽名是否有效。如果該簽名有效,則將其看作通過使用簽名者的特定公開密鑰和私有密鑰(“密鑰對”)產生的簽名。如果第三方或者通過密碼分析該報文以及有關簽名,或者通過諸如盜竊密鑰之類手段的非法獲得,獲得了此密鑰對的知識,則第三方可生成新的簽名報文對,即報文和各報文的有效簽名。
通過要求不僅根據簽名者的公開密鑰和私有密鑰,還要根據該簽名者的保密密鑰,生成可信簽名,本發明的技術大大增加了與簽名有關的安全性Authentic_Sign(M,PA,SA,KA)→AUTHENTIC_SIGNATURE_A(M)。
通過使用本發明,在當前的可能領域內,并且在不了解保密密鑰的情況下,僅僅知道公開密鑰和私有密鑰,遠不能生成包含可信簽名的新的簽名報文對。我們相信,若給定許多報文以及其可信簽名,則根據簽名的報文對,即僅僅根據報文和可信簽名,恢復保密密鑰是完全不可能的。在這點上,我們估計,對于一個83位的二進制可信簽名,在不了解保密密鑰的情況下,生成此類可信簽名的概率的數量級為(0.5)30—這是一個無窮小的數量,接近與隨機猜測有關的概率。
本質上,根據本發明的技術,給定特定橢圓曲線上的所有點,選擇該曲線上某個點的值作為發生器值。私有密鑰是隨機選擇的。公開密鑰定義為發生器的值和私有密鑰的預定函數,特別是用私有密鑰取發生器值的冪。保密密鑰用于生成一個偽隨機數。然后,通過該發生器、偽隨機數以及一個報文(諸如隨機選擇的產品副本標識符)的預定函數,生成可信簽名的第一部分。具體而言,首先用偽隨機數值取發生器的冪,以產生一個值,然后再將該值與報文連接在一起。接著,通過預定的散列函數處理由連接產生的數,從而產生可信簽名的第一部分。根據該第一部分、偽隨機值以及私有密鑰的預定函數,生成可信簽名的剩余部分。最后,通過將簽名的兩個部分連接起來,生成完整的可信簽名。
當使用本發明實現產品副本標記時,將公開密鑰和發生器值存儲在其產品副本中的適當文件內,以便在客戶計算機(如圖2所示的客戶計算機200)上安裝時,供驗證副本使用。
在安裝該產品副本時,首先通過在客戶計算機上,使用發生器值、公開密鑰和完整標記,特別是用戶輸入的標記和簽名,計算簽名的第一部分,來驗證用戶輸入的簽名;然后,確定上述第一部分的值是否與用戶輸入的簽名中相同部分的值完全匹配。如果上述匹配存在,則輸入的簽名可信,并且繼續安裝此副本;否則,簽名不可信,提前終止安裝過程。
使用三個不同階段實現本發明,并生成產品副本標記(a)只進行一次的初始化,通常由軟件生產商進行,以生成各種參數值;(b)標記生成(后面將連同圖4一起詳細說明過程400),使用初始化過程中生成的參數值,在介質復制場所重復進行,以生成各不同產品副本的包含可信簽名的相應標記,以便與該副本一起使用;以及(c)驗證(后面將連同圖5一起詳細說明過程500),在執行安裝程序期間,分別在用戶場地(客戶計算機)相繼發生,以便驗證用戶輸入的、與該用戶試圖安裝的特定產品副本有關的標記中的簽名,從而繼續安裝該副本或取消安裝。
既然通過使用公開密鑰,能夠以常規方式驗證利用本發明生成的可信簽名,因此,為了簡明起見,我們將省略具體實現驗證的所有細節。
1.定義和初始化方面我們將首先定義本發明技術所使用的各種變量,以及初始化本技術所使用的步驟。
首先,定義有限域(K),最好在加羅瓦域上定義,即K=GF(p),其中p非常大,如384位或更大,并且p=1(mod 4)。作為選擇,可以將該域定義為K=GF(2m)。
接著,在此域上定義橢圓曲線E。根據本發明的技術,我們利用其上存在復數加法和復數乘法的橢圓曲線,以允許本發明技術中使用的參數和生成的標記較短,同時仍能提供防止某些形式的加密攻擊所需要的安全性—如果不使用橢圓曲線,則對于如此短的參數,其安全性是不可能的。一般而言,橢圓曲線包含滿足以下形式曲線的點(x,y)y2=ax3+bx2+cx+d,其中a、b、c和d為預定義的系數。通過改變上述四個系數的值,該曲線上的點數將相應改變。盡管我們可以使用一般形式的橢圓曲線,但我們更愿說明性地選擇有限域K上的曲線y2=x3+x,同時有限域K允許按下述方式計算曲線E上的點數|E|。如果p=α2+β2,其中α=1(mod 4),則|E|=p+1-2α=(α-1)2+β。因此,通過據此選擇α和β,可以設置該曲線上的點數。
選擇一個大素數q,其長度至少約為60位,并且據此設置α和β,以確保q均勻劃分|E|,同時滿足1(mod 4)。
一旦據此選擇了q的值,就在曲線E上為階為q的子群定義發生器的值g,通常為一個隨機點。其典型實現方法是,重復選擇曲線E上的隨機點作為g,并測試其屬性,即該數是否滿足以下等式G={g,2g,3g,...,(q-1)g}且|G|=q,直至找到一個相配數。
一旦選擇了發生器的適當值,就選擇一個隨機數作為專用指數X。數X成為私有密鑰。參數gpow是公開密鑰,并按照等于gx的形式計算。
最后,將保密密鑰KA定義為兩個預定義部分A1和A2的連接,即KA=(A1°A2)。
一旦定義了上述參數,就存儲參數q、g、gpow和X,以便在隨后執行標記生成過程400時使用,執行該過程的目的在于,為生產商隨后生產的各種軟件產品的各個不同副本,生成一個標記,該標記包含一個唯一標識符和相關的可信簽名。此外,如下文所述,以數據形式,將參數g和gpow的值,以及HASH函數的說明,都存儲在各產品副本內,以供在安裝此產品副本時,特別是在驗證(即,在執行下文詳細說明的驗證過程500時)用戶在安裝此副本時手工輸入的標記時,訪問并使用它們。
2.標記生成過程400圖4為標記生成過程400的流程圖。如上所述,由計算機10分別執行此過程,并由駐留在其存儲器(未示出)上的適當存儲的程序(可執行)指令實現此過程,以生成各相繼產品副本的唯一標記。此過程使用保密密鑰KA、q、g、gpow和專用指數X的值。
一進入過程400,就首先進行到塊410。當執行此塊時,該塊隨機指派下一后繼(盡管未使用)值,作為當前產品副本的標識符(此處為M),其中(232-1)>M>0。作為選擇,也可以順序指派上述標識符。此時,對于某個軟件生產商發布的所有產品副本,以及所有不同產品,指派第一個值作為第一產品副本的標識符,指派第二個值作為第二產品副本的標識符,等等。無論如何,各產品副本均具有唯一標識符。如果在使用本發明的技術生成產品標記時,軟件生產商希望生產大于232個副本的軟件產品,則可以采用熟練技術人員顯而易見的方式修改本技術,以使用更長的標識符,以及由此產生的更長的密鑰和參數值。
一旦塊410按照上述方式指派了一個適當值,作為當前產品副本的標識符,執行就進行到塊420。此塊使用保密密鑰和指派給當前產品副本的標識符M,生成指數的偽隨機值k,其中k在[1,q-1]范圍內。一般而言,k=G_MS(M),其中G_MS是偽隨機數發生器。最好采用眾所周知的常規安全散列函數,特別是SHA_1,實現偽隨機數發生器。此散列函數將任意長度的數字輸入數,映射為一個160位的值,以至不可能定位任意的等長數值對(x,y),其中SHA_1(x)=SHA_1(y),其需要的運算次數超過280。特別是如上所述,保密密鑰KA說明為兩個預定義部分A1和A2的連接,即KA=(A1°A2),并且一旦生成,就在生成所有產品副本標記時,保持不變。為了計算k,塊420首先將保密密鑰解析為部分A1和部分A2,然后按照下面的式(1)和式(2),使用多次散列操作計算指數k,式(1)和式(2)為h=SHA_1(A1°M) (1)k=SHA_1[(A2°M)]h(2)為了獲得更多的安全性,可以將通過式(1)和式(2)產生的值k,作為另一個偽隨機函數的種子,進行處理,以產生一個新的偽隨機值k,其中作為選擇,可以在生成當前產品副本之標記的剩余步驟中,使用新值,代替按上述等式生成的值。
正如上文所述,一旦按上述方式確定了當前產品副本的值k,就執行塊430,以計算gk。此后,進行到塊440,該塊使用驗證方了解的HASH函數,根據式(3),確定作為gk和M之函數的參數r的值。作為示例,此散列函數為SHA_1函數。
r=HASH(gk°M) (3)接著,塊450執行,以根據式(4),計算作為k、X、r和q之函數的參數s。
s=k-Xr(mod q) (4)一旦計算出s,執行就進行到塊460,該塊形成作為M、r和s連接的115位的二進制標記,其中可信簽名本身為r和s的連接。在形成二進制標記后,塊470將此標記轉換為25位的字母數字形式,然后將以上生成的字母數字標記作為輸出值,應用于諸如打印機60之類的設備(參見圖1),以便與當前產品副本一起使用。為了減少混亂,以及用戶手工輸入該標記時可能造成的錯誤,從而提供增強的可用性,塊470(圖4所示)最好不使用某些字母數字字符,如用戶看起來很相似的(取決于印刷標記所使用的字體)字母I和字母O(無論是大寫還是小寫),數字0,L的小寫以及數字1等等。此外,可能將看起來很形似的字符,如“L”的小寫和數字“1”,映射為一個共同字符,即數字“1”。
我們估計,通過本發明并給定一個公開/私有密鑰對,在當前可用PC上,能夠在一秒的處理時間內,生成83位的可信簽名,給出32位的標識符。
3.驗證過程500圖5為一個流程圖,說明在圖2和圖3所示的客戶計算機200中執行驗證過程500。如上所述,當在客戶計算機上安裝給定的產品副本時,此過程驗證用戶手工輸入的該副本的標記。要在此驗證過程中使用的g和gpow的值以及HASH函數的說明,均存儲在給定的產品副本內,并且對該軟件生產商的所有產品副本是通用的。盡管為了簡化,我們將參數g和gpow的值以及HASH函數的說明說成是,對指定軟件生產商的所有產品的所有副本通用,但是,為了更多的安全性,上述參數值以及HASH函數的說明,可以是只對該生產商的特定產品的所有副本通用的,可以是只對該產品的特定副本集通用的,或者只是各副本特有的。
一進入過程500,首先進行到塊510。該塊讀取用戶手工輸入的、他(她)試圖在其客戶計算機,即圖2和圖3所示的客戶計算機200,上安裝的特定產品副本的字母數字標記。一旦讀取了此標記,塊520就開始執行,以首先將此字母數字標記轉換為二進制序列,然后抽取該標記中的參數M、r和s的值。此后,進行到塊530,該塊從其產品副本中,讀取要在驗證中使用的、其本身存儲的參數g和gpow的值,以及特定散列函數的說明。
一旦塊530讀取了上述參數值以及散列函數的說明,就進行到塊540,當執行塊540時,該塊使用從標記中抽取的值r和s,計算gr和gpowr的值。一旦計算出上述值,就執行塊550和560,以共同驗證標記,其方法是,首先計算可信簽名的第一部分,即參數r(此處,用 表示重新計算的部分),然后比較其值與從標記中抽取的同一參數值。具體而言,塊550根據下面的等式(5)計算 r^=HASH[(gs·gpowr)oM]---(5)]]>其中HASH為在驗證過程中使用的產品副本中確定的散列函數。此函數通常為SHA_1函數。
在計算出值 之后,進行到判定框560,該框對照從用戶輸入的標記中抽取的值r,測試上述值。如果兩個值相同(匹配),則驗證了標記中的簽名。因此,該過程經由YES路徑563,從驗證過程500退出,以繼續安裝此產品副本。另一方面,如果兩個值不同,則該標記,特別是它包含的簽名是不可信的。因此,不授權該用戶安裝此產品副本。在此實例中,判定框560經由NO路徑567,到達塊570。當執行塊570時,該塊在本地顯示器(即圖3所示的顯示器380)上顯示一條適當消息,聲明不授權該用戶安裝此產品副本。一旦顯示了此條消息,就從過程500中退出(如圖5所示),但是其退出方式是,提前終止進一步安裝此產品副本。
到目前為止,熟練技術人員將認識到,盡管我們將本發明的技術描述為,用于生成作為部分標記的安全可信簽名,以便在用戶計算機上安裝時,與軟件產品副本一起使用,但是,每當用戶建立與軟件生產商操作的服務器的網絡連接時,能夠使用本發明,以很安全的方式,來串行化先前安裝的產品副本。具體而言,如果在客戶計算機上運行的O/S的用戶,建立與該O/S生產商之網站的因特網連接,則web服務器能夠生成一個安裝號,例如上文論述的包含可信簽名的標記,然后下載該安裝號,以存儲到客戶計算機上(當然,我們假設,將在客戶計算機上執行的web瀏覽器設置為接受“cookies”,即接受此下載)。然后,生產商可以使用該安裝號,去唯一地、安全地標識特定的O/S安裝。隨后,每當用戶建立與該生產商之網站的因特網連接時,通過訪問并驗證客戶計算機上存儲的安裝號,生產商可以輕而易舉地識別該O/S的特定安裝。通過成功驗證存儲的安裝號,生產商可以區分經過授權的O/S安裝,和未經授權的O/S安裝。因此,生產商可以僅向授權安裝提供產品支持、升級、推銷和/或其他服務,而拒絕向未經授權安置提供上述服務。同樣,生產商可以為先前安裝,并且該生產商希望隨后標識的其他類型的軟件程序副本,例如應用程序,生成并下載唯一的安裝號。
而且,盡管該標記利用產品副本標識符,作為用于生成可信簽名的報文,但此報文并不如此被限定。此報文可組成需要電子加密并且從一方傳送到另一方的任意形式的數字信息。因此,本發明可以提供很高的安全機制,以驗證在發送方和接收方之間傳送的加密報文通信流中的各報文。
另外,盡管我們將本發明技術描述為,使用安全散列函數,以在標記生成過程和驗證過程(特別是圖4中的塊440和圖5中的塊550)中,生成參數r和 ,但也可以使用其他安全函數,其前提是,在兩個過程中采用同一函數,并且在相關產品副本中存儲該函數的說明,同時在安裝特定副本時由驗證過程讀取。
此外,盡管我們以下述方式示意說明本發明,即與32位的報文(此處,用產品副本標識符說明)和83位的可信簽名一起使用,但是,給定預期的應用,可以輕而易舉地修改本發明,以容納更長的報文和簽名,或者在能夠容忍較少安全性的應用中,采用更短的報文和簽名。
盡管本文詳細展示并說明了體現本發明技術的具有各種更改的實施方式,但熟練技術人員可以輕易作出仍然利用上述技術的許多其他
權利要求
1.一種用于生成可信簽名以便與具有公開密鑰(PA)和私有密鑰(SA)的公開密鑰加密系統一起使用的方法,包括以下步驟對于一條輸入報文(M),根據該報文、從有限域上面的橢圓曲線上的多個點中選擇的一個預定的發生器值(g)以及一個與公開密鑰和私有密鑰不同的第三密鑰(KA),形成一個可信簽名。
2.權利要求1的方法,其中形成步驟還包括以下步驟作為保密密鑰(KA)的預定偽隨機函數,生成第一參數值(k);以及作為第一參數值、發生器值和報文的第一預定函數,確定可信簽名的第一部分(r)。
3.權利要求2的方法,其中預定的偽隨機函數包括一個第一預定散列函數。
4.一種用于驗證報文(M)的簽名的方法,對于報文(M),其簽名是通過具有公開密鑰(PA)、私有密鑰(SA)和第三密鑰(KA)的公開密鑰加密系統生成的,其中第三密鑰與第一和第二密鑰不同,該方法包括以下步驟從簽名中抽取其第一部分和第二部分,以便產生簽名的第一抽取部分和第二抽取部分;根據從有限域上面的橢圓曲線上的多個點中選擇的一個預定的發生器值(g),報文以及簽名的第一抽取部分和第二抽取部分,確定簽名的第一部分的新值;以及確定第一部分的新值是否與第一抽取部分匹配,以便表示該簽名是否可信。
5.一種響應輸入報文(93)生成該報文的可信簽名(97)并且與具有公開密鑰(PA)和私有密鑰(SA)的加密系統一起使用的裝置,該裝置包括一個處理器(340);以及一個其中存儲有計算機可執行指令的存儲器(330);其中該處理器,響應存儲的指令,對于輸入報文(M),根據該報文、從有限域上面的橢圓曲線上的多個點中選擇的一個預定的發生器值(g)以及與公開密鑰和私有密鑰不同的第三密鑰(KA),形成可信簽名。
6.一種用于驗證報文(M)的簽名(97)的裝置,對于報文(M),其簽名是通過具有公開密鑰(PA)、私有密鑰(SA)和第三密鑰(KA)的公開密鑰加密系統生成的,其中第三密鑰與第一和第二密鑰不同,該裝置包括一個處理器(340);以及一個其中存儲有計算機可執行指令的存儲器(330);其中該處理器,響應存儲的指令從簽名中抽取其第一部分和第二部分,以便產生簽名的第一抽取部分和第二抽取部分;根據從有限域上面的橢圓曲線上的多個點中選擇的一個預定的發生器值(g),報文以及簽名的第一抽取部分和第二抽取部分,確定簽名的第一部分的新值;以及確定第一部分的新值是否與第一抽取部分匹配,以便表示該簽名是否可信。
7.一種用于生成標記的方法,該標記包含一個可信簽名,以便與相應的產品副本關聯,其中與具有公開密鑰(PA)和私有密鑰(SA)的加密系統一起使用可信簽名,該方法包括向產品副本指派唯一標識符,作為報文(M);根據報文,從有限域上面的橢圓曲線上的多個點中選擇的一個預定的發生器值(g),以及與公開密鑰和私有密鑰不同的第三密鑰(KA),形成可信簽名;根據該標識符和可信簽名,形成標記;以及將標記和產品副本聯系起來。
8.權利要求7的方法,其中標記形成步驟包括以下步驟,連接標識符和可信簽名以產生標記。
9.權利要求8的方法,其中指派步驟包括以下步驟,或者以給定范圍內的隨機值的方式,或者以該范圍內預定順序中下一個可用值的方式,選擇唯一的標識符。
10.權利要求7的方法,其中生成步驟還包括以下步驟作為保密密鑰(KA)的預定偽隨機函數,生成第一參數值(k);以及作為第一參數值、發生器值和報文的第一預定函數,確定可信簽名的第一部分(r)。
11.權利要求10的方法,其中預定的偽隨機函數包括一個第一預定散列函數。
12.權利要求3或11的方法,其中第三密鑰為一個保密密鑰,并且是通過連接第一密鑰部分(A1)和第二密鑰部分(A2)形成的,同時第一參數值(k)是通過下式確定的h=SHA_1(A1°M);以及k=SHA_1[(A2°M)]h其中SHA_1為SHA_1散列函數。
13.權利要求12的方法還包括以下步驟,將第一參數值作為輸入,應用于預定的偽隨機函數,以產生第一參數值的新值。
14.權利要求2或10的方法還包括以下步驟根據第一參數值,私有密鑰以及可信簽名第一部分的第二預定函數,生成可信簽名的第二部分(s);以及連接可信簽名的第一和第二部分,以產生可信簽名。
15.權利要求14的方法,其中根據下式計算可信簽名的第一部分r=f(gkoM)其中f為預定的安全函數。
16.權利要求15的方法,其中函數f是一個預定的HASH函數。
17.權利要求15的方法,其中根據下式計算可信簽名的第二部分(s)s=k-Xr(mod q)其中X是私有密鑰(SA);以及q是一個預定素數。
18.權利要求13的方法,還包括以下步驟將標記轉換為字母數字形式,以產生一個字母數字標記;以及將該字母數字標記粘貼到產品副本或其組件上。
19.一種用于驗證與正在計算機上安裝的相應產品副本有關的標記的方法,該標記具有一個產品副本標識符,以及一個通過公開密鑰加密系統生成的有關簽名,公開密鑰加密系統具有一個公開密鑰(PA),一個私有密鑰(SA)和一個第三密鑰(KA),其中第三密鑰與第一密鑰和第二密鑰不同,當在計算機上安裝產品副本時,該方法包括以下步驟在計算機上安裝產品副本時,獲得產品副本的標記;以及驗證該標記中包含的簽名,包括以下步驟從標記中抽取簽名的第一部分和第二部分,以便產生簽名的第一抽取部分和第二抽取部分以及標識符;根據從有限域上面的橢圓曲線上的多個點中選擇的一個預定的發生器值(g),標識符以及簽名的第一抽取部分和第二抽取部分,確定簽名的第一部分的新值;以及確定第一部分的新值是否與第一抽取部分匹配,以便表示該標記中包含的簽名是否可信;以及如果簽名可信,則繼續在計算機上安裝該產品,否則,終止安裝過程。
20.權利要求19的方法,其中確定步驟還包括以下步驟,從產品副本中獲得發生器值和公開密鑰的存儲值。
21.權利要求4或20的方法,其中確定新值的步驟包括以下步驟,作為發生器值、公開密鑰、報文以及簽名的第一抽取部分和第二抽取部分(分別為r和s)的預定函數,生成新值。
22.權利要求21的方法,其中根據下式計算新值 r^=HASH[(gs·gpowr)oM]]]>其中gpow是公開密鑰;以及HASH為生成簽名時使用的預定散列函數。
23.權利要求16或22的方法,其中預定散列函數為SHA_1散列函數。
24.權利要求13、17或22的方法,其中有限域是在伽羅瓦域上定義的。
25.權利要求13、17或22的方法,其中橢圓曲線的形式為y2=x3+x。
26.一種其上存儲有計算機可執行指令的計算機可讀介質,該指令用于執行權利要求1、4、7或19中的步驟。
27.一種用于生成標記(75,90)的裝置,該標記包含一個可信簽名(87,97),以便與相應的產品副本(70)聯系起來,其中可信簽名與具有公開密鑰(PA)和私有密鑰(SA)的公開密鑰加密系統一起使用,該裝置包括一個處理器(340);以及一個其中存儲有計算機可執行指令的存儲器(330);其中該處理器,響應存儲的指令向產品副本指派唯一標識符,作為報文(M);根據報文,從有限域上面的橢圓曲線上的多個點中選擇的一個預定的發生器值(g),以及與公開密鑰和私有密鑰不同的第三密鑰(KA),生成可信簽名;根據該標識符和可信簽名,形成標記;以及將標記和產品副本聯系起來。
28.權利要求27的裝置,其中該處理器響應存儲的指令,連接標識符和可信簽名,以產生標記。
29.權利要求28的裝置,其中該處理器響應存儲的指令,或者以給定范圍內的隨機值的方式,或者以該范圍內預定順序中下一個可用值的方式,選擇唯一的標識符。
30.權利要求5或29的裝置,其中該處理器響應存儲的指令作為保密密鑰(KA)的預定偽隨機函數,生成第一參數值(k);以及作為第一參數值、發生器值和報文的第一預定函數,確定可信簽名的第一部分(r)。
31.權利要求30的裝置,其中預定的偽隨機函數包括一個第一預定散列函數。
32.權利要求31的裝置,其中第三密鑰為一個保密密鑰,并且是通過連接第一密鑰部分(A1)和第二密鑰部分(A2)形成的,同時第一參數值(k)是通過下式確定的h=SHA_1(A1°M);以及k=SHA_1[(A2°M)]h其中SHA_1為SHA_1散列函數。
33.權利要求32的裝置,其中該處理器響應存儲的指令,將第一參數值作為輸入,應用于預定的偽隨機函數,以產生第一參數值的新值。
34.權利要求5或30的裝置,其中該處理器響應存儲的指令,根據第一參數值,私有密鑰以及可信簽名第一部分的第二預定函數,生成可信簽名的第二部分(s);以及連接可信簽名的第一和第二部分,以產生可信簽名。
35.權利要求34的裝置,其中根據下式計算可信簽名的第一部分r=f(gkoM)其中f為預定的安全函數。
36.權利要求35的裝置,其中函數f是一個預定的HASH函數。
37.權利要求35的裝置,其中根據下式計算可信簽名的第二部分(s)s=k-Xr(mod q)其中X是私有密鑰(SA);以及q是一個預定素數。
38.權利要求33的裝置,其中該處理器響應存儲的指令將標記轉換為字母數字形式,以產生一個字母數字標記;以及將該字母數字標記粘貼到產品副本或其組件上。
39.一種用于驗證與正在計算機上安裝的相應產品副本有關的標記的裝置,該標記具有一個產品副本標識符,以及一個通過公開密鑰加密系統生成的有關簽名,公開密鑰加密系統具有一個公開密鑰(PA),一個私有密鑰(SA)和一個第三密鑰(KA),其中第三密鑰與第一密鑰和第二密鑰不同,該裝置包括一個處理器;以及一個其中存儲有計算機可執行指令的存儲器;其中該處理器響應存儲的指令,并且在計算機上安裝產品副本時在計算機上安裝產品副本時,獲得產品副本的標記;從標記中抽取簽名的第一部分和第二部分,以便產生簽名的第一抽取部分和第二抽取部分以及標識符;根據從有限域上面的橢圓曲線上的多個點中選擇的一個預定的發生器值(g),標識符以及簽名的第一抽取部分和第二抽取部分,確定簽名的第一部分的新值;確定第一部分的新值是否與第一抽取部分匹配,以便表示該標記中包含的簽名是否可信;以及如果簽名可信,則繼續在計算機上安裝該產品,否則,終止安裝過程。
40.權利要求39的裝置,其中該處理器響應存儲的指令,從產品副本中獲得發生器值和公開密鑰的存儲值。
41.權利要求6或40的裝置,其中該處理器響應存儲的指令,作為發生器值、公開密鑰、報文以及簽名的第一抽取部分和第二抽取部分(分別為r和s)的預定函數,生成新值。
42.權利要求41的裝置,其中根據下式計算新值 r^=HASH[(gs·gpowr)oM]]]>其中gpow是公開密鑰;以及HASH為生成簽名時使用的預定散列函數。
43.權利要求36或42的裝置,其中預定散列函數為SHA_1散列函數。
44.權利要求33、37或42的裝置,其中有限域是在伽羅瓦域上定義的。
45.權利要求6、33、37或42的裝置,其中橢圓曲線的形式為y2=x3+x。
全文摘要
為要簽名的給定報文,生成可信加密簽名并且正確驗證此簽名的技術,其中從該報文簽名者發起的簽名報文的接收者可以驗證該簽名。具體而言,對于給定的諸如數字產品副本標識符(83,93)之類的報文,本技術根據公開密鑰加密系統,通過使用從有限域上面之橢圓曲線上的多個點中選擇的發生器值,形成可信簽名(87,97)。該可信簽名是通過使用該發生器值以及三個密鑰,即公開密鑰、私有密鑰和保密密鑰生成的,從而大大提高了與通過使用常規雙密鑰公開密鑰加密系統生成的加密簽名有關的安全性,通過連接給定產品副本的標識符與其相應的可信簽名,可以形成唯一的產品副本標記。隨后,當用戶在計算機(200)上安裝該副本時,該用戶在安裝程序提示時輸入該標記,安裝程序再秘密驗證該標記中包含的簽名,以便繼續進行安裝或提前終止安裝。
文檔編號G06F21/64GK1306714SQ99807748
公開日2001年8月1日 申請日期1999年6月23日 優先權日1998年6月23日
發明者拉瑪拉石南·R·范卡特森, 彼得·L·蒙特高莫利 申請人:微軟公司