專利名稱:生成無密鑰數(shù)字多重簽名的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及數(shù)字簽名的創(chuàng)建。更具體地,本發(fā)明涉及生成用于數(shù)字?jǐn)?shù)據(jù)的無密鑰數(shù)字多重簽名(keyless digital mult1-signatures)的系統(tǒng)和方法。
背景技術(shù):
數(shù)字簽名常用來認(rèn)證數(shù)字?jǐn)?shù)據(jù),比如文件、報文、財務(wù)信息以及其它數(shù)據(jù)。當(dāng)一塊數(shù)據(jù)被數(shù)字簽名,該數(shù)據(jù)的接收者可以驗證該數(shù)據(jù)來自于特定的發(fā)送者,通稱為簽名者,以及該數(shù)據(jù)從其被簽名后沒有被修改。數(shù)字簽名也可以在數(shù)據(jù)被創(chuàng)建時或數(shù)據(jù)被發(fā)送時進行驗證?,F(xiàn)有的數(shù)字簽名方案使用公鑰密碼,其中簽名者使用私人密鑰創(chuàng)建數(shù)字簽名,與該私人密鑰配對的公鑰被用來驗證該數(shù)字簽名。公鑰與使用公鑰證書的簽名者的身份綁定,而該公鑰證書由在這種公鑰基礎(chǔ)設(shè)施(public-key infrastructure)方案中的受信任的認(rèn)證機構(gòu)(Certificate Authority)發(fā)布。接收者使用該公鑰證書來驗證該數(shù)字簽名。但是,這些現(xiàn)有的數(shù)字簽名方案有一些缺點。只要私人密鑰被發(fā)布,簽名者可以使用該私人密鑰產(chǎn)生無限數(shù)量的數(shù)字簽名。更重要地,如果該私人密鑰失竊,則未被授權(quán)的實體也可以作為簽名者生成并分發(fā)合法的數(shù)字簽名。在這種情況下,合法的簽名者可以嘗試作廢該私人密鑰,但是很難確定在該私人密鑰丟失和該私人密鑰被作廢之時之間的時間段內(nèi)是否已經(jīng)有偽造的簽名被創(chuàng)建。驗證先前創(chuàng)建的簽名是否是有效的也變得更加復(fù)雜,因為與那些簽名關(guān)聯(lián)的私人密鑰已經(jīng)被作廢。而且,由于私人密鑰的創(chuàng)建不受簽名者的控制,因此現(xiàn)有的數(shù)字簽名方案依賴于認(rèn)證機構(gòu)的可信度。如果認(rèn)證機構(gòu)泄密,則基于該認(rèn)證機構(gòu)發(fā)布的私人密鑰創(chuàng)建的數(shù)字簽名將是可疑的。因此,簽名者必須給予認(rèn)證機構(gòu)無條件的 目任。其它的數(shù)字簽名方案試圖通過在合法簽名者和服務(wù)器之間共享私人密鑰來減少如果私人密鑰失竊時未被授權(quán)的實體創(chuàng)建數(shù)字簽名的風(fēng)險。但是公鑰密碼仍然包含在這種服務(wù)器支持的數(shù)字簽名方案 中,私人密鑰仍然可以被未被授權(quán)的實體泄露。還有其它的數(shù)字簽名方案使用試圖減少在私人密鑰丟失和該私人密鑰被作廢之時之間的時間段內(nèi)的風(fēng)險的時間戳服務(wù)。但是,這種類型的方案只支持公鑰基礎(chǔ)設(shè)施和前文詳述的與它相關(guān)聯(lián)的風(fēng)險。并且,由于可能不知道私人密鑰何時丟失或被盜,因此在該私人密鑰被作廢之前仍然可能有偽造的簽名被創(chuàng)建。此外,一些現(xiàn)有的數(shù)字簽名方案不依賴公鑰和/或私人密鑰,而是使用能夠一次支持來自于客戶端計算機的單個簽名請求的簽名生成服務(wù)器。在一個方案中,無密鑰數(shù)字簽名服務(wù)提供商運行頂層的簽名生成服務(wù)器,該頂層的簽名生成服務(wù)器與較低層的服務(wù)器通信,該較低層的服務(wù)器可以被其它實體運行,比如該服務(wù)提供商的客戶。該服務(wù)提供商可能希望針對在該頂層簽名生成服務(wù)器中生成的簽名向該較低層服務(wù)器的運行者收費。在這種方案中,一次產(chǎn)生的無密鑰簽名的數(shù)量可能不容易被追蹤或限制。當(dāng)驗證生成的簽名時可以執(zhí)行檢查哈希鏈的總長度來追蹤生成的簽名的數(shù)量,但是這將要求所有的客戶在生成的簽名的數(shù)量上有相同的最大限額。在這種方案中不同客戶的需求無法被滿足。
另一種限制頂層簽名生成服務(wù)器生成的簽名的數(shù)量的方法是當(dāng)驗證生成的簽名時在哈希鏈中的每個步驟包括一個數(shù)字標(biāo)記。對生成的簽名的數(shù)量的限制可以為每個客戶不同地設(shè)置,因此不會所有的客戶必須具有相同的最大限額。在這種方案中,當(dāng)簽名被驗證時,為了成功地驗證該簽名,將檢查數(shù)字標(biāo)記以確保它們是嚴(yán)格地按升序排列的,也就是說,每個數(shù)字標(biāo)記必須比哈希鏈中前一個步驟的數(shù)字標(biāo)記大。但是,客戶服務(wù)器可能在這種方法中回避檢查該數(shù)字標(biāo)記以避開對生成的簽名的數(shù)量的限制,而剩余的簽名將仍然能夠成功地驗證。
發(fā)明內(nèi)容
本發(fā)明提供來基于從一個或多個客戶端計算機接收多個簽名生成請求而生成無密鑰數(shù)字多重簽名。通過同時處理多個簽名請求,本發(fā)明實現(xiàn)了更有效率和更快地生成無密鑰數(shù)字簽名。而且,本發(fā)明可以限制一次能夠被生成的簽名的數(shù)量從而追蹤和/或限額客戶端計算機為記賬或其它目的而請求的簽名。本發(fā)明一個實施例中,揭露了一種生成無密鑰數(shù)字多重簽名的系統(tǒng)和方法,其中服務(wù)提供商的計算機接收來自于客戶端計算機的多個簽名生成請求。構(gòu)建包括每個客戶端計算機的子樹的搜索樹。該搜索樹的葉節(jié)點與每個簽名生成請求對應(yīng)。該搜索樹通過給該搜索樹的葉節(jié)點根據(jù)需要指定顯式長度標(biāo)記而保持平衡。通過對節(jié)點應(yīng)用哈希函數(shù),該搜索樹中的每個節(jié)點的哈希值被計算出來。搜索樹的根節(jié)點的哈希值和搜索樹高度標(biāo)記組成總簽名請求。該總簽名請求產(chǎn)生將在服務(wù)提供商計算機中被創(chuàng)建和接收的總簽名。只有當(dāng)搜索樹高度標(biāo)記沒有超過高度限制時,該總簽名才被創(chuàng)建。針對簽名生成請求的無密鑰數(shù)字多重簽名基于該總簽名生成。當(dāng)該無密鑰數(shù)字多重簽名被生成并驗證時,在該總簽名中的為空的隱含長度標(biāo)記被填充,以使得簽名生成請求的數(shù)量受到限制。其它的特征和優(yōu)點將通過下文中的描述和附圖進行說明。
圖1為生成無密鑰數(shù)字多重簽名的方法的整體流程圖;圖2為顯示在圖1中的生成操作中對搜索樹的節(jié)點應(yīng)用哈希函數(shù)的流程圖;圖3為顯示在圖1中的生成操作中生成總簽名的流程圖;圖4為顯示在圖1中的生成操作中接收總簽名后生成無密鑰數(shù)字多重簽名的流程圖;圖5A- 顯示了根據(jù)本發(fā)明實施例的簽名生成請求和構(gòu)建的結(jié)果的哈希樹;圖6A-6B顯示了根據(jù)本發(fā)明實施例的對哈希樹的節(jié)點應(yīng)用哈希函數(shù);圖7A-7B顯示了根據(jù)本發(fā)明實施例的與無密鑰數(shù)字多重簽名的生成關(guān)聯(lián)的哈希樹;圖8顯示了根據(jù)本發(fā)明實施例的與無密鑰數(shù)字多重簽名的生成相關(guān)的哈希鏈和無密鑰數(shù)字多重簽名。
具體實施例方式本發(fā)明容許很多不同形式的實施例,附圖中所示的和將在此進行詳細描述的是本發(fā)明的優(yōu)選的實施例,應(yīng)當(dāng)理解,當(dāng)前揭露的內(nèi) 容將被認(rèn)為是本發(fā)明的原理的實例,而不是想要將本發(fā)明的主要方面限制到這些描述的實施例上。圖1顯示了生成無密鑰數(shù)字多重簽名的流程100的優(yōu)選的實施例。該流程100的結(jié)果是響應(yīng)從一個或多個客戶端計算機接收的多重簽名生成請求創(chuàng)建無密鑰數(shù)字多重簽名。該流程100可以在單個的服務(wù)器上或者在相互之間電氣通信的多個服務(wù)器上實現(xiàn)。在一個實施例中,該服務(wù)器可以由為一個或多個客戶端計算機創(chuàng)建數(shù)字無密鑰多重簽名的單個服務(wù)提供商和/或其它服務(wù)提供商運行。另一個實施例中,父服務(wù)器可以由服務(wù)提供商運行而與該父服務(wù)器通信的子服務(wù)器可以由其它的實體運行。本實施例中,該子服務(wù)器可以將簽名生成請求發(fā)送到父服務(wù)器。該父服務(wù)器然后可以生成無密鑰數(shù)字多重簽名并將該無密鑰數(shù)字多重簽名發(fā)送回子服務(wù)器。該服務(wù)器可以包括適宜的處理器,如本領(lǐng)域內(nèi)技術(shù)人員所熟知的一樣。該處理器可操作地連接到至少一個存儲設(shè)備,比如硬盤或閃存或其它適宜的存儲設(shè)備,這些存儲設(shè)備可以包括易失性存儲器元件(例如,隨機存取存儲器(RAM,比如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)、同步動態(tài)隨機存取存儲器(SDRAM)等等))和非易失性存儲器元件(例如,只讀存儲器(ROM)、硬盤、磁帶、光盤只讀存儲器(CDROM)等等)中的任意一個或其結(jié)合。而且,該存儲設(shè)備可以結(jié)合電子的、磁的、光的和/或其它類型的存儲介質(zhì)。該存儲設(shè)備可以具有分布式結(jié)構(gòu),其中不同的元件彼此遠離設(shè)置,但是仍然可以被處理器存取。本發(fā)明的步驟和/元件,和/或它們的部分可以使用源程序、可執(zhí)行程序(目標(biāo)代碼)、腳本或任何其它包括一系列將被執(zhí)行的指令的實體實現(xiàn)。當(dāng)為源程序時,該程序需要通過可以包括在或未包括在存儲器中的編譯器、匯編器、解釋器或類似程序進行翻譯,以便連同操作系統(tǒng)(Ο/s)正確地運行。此外,實現(xiàn)本發(fā)明的軟件可以用下述語言編寫:(a)面向?qū)ο蟮木幊陶Z言,其具有數(shù)據(jù)類和方法類;或(b)面向過程的編程語言,其具有例行程序、子例行程序和/或函數(shù),例如但不限于C、C++、Pascal、Basic、Fortran、Cobol、Perl、Java和 Ada。當(dāng)服務(wù)器在運行中時,處理器用于執(zhí)行存儲在存儲設(shè)備中的軟件、對存儲設(shè)備進行數(shù)據(jù)存取、以及通 常按照該軟件控制服務(wù)器的運行。本發(fā)明的軟件方面和操作系統(tǒng)整體地或部分地,但是典型地為后者,被處理器讀出,或許在處理器中被緩沖,然后被執(zhí)行。當(dāng)本發(fā)明或其一些方面在軟件中實現(xiàn)時,應(yīng)該注意到該軟件可以被存儲在任何計算機可讀介質(zhì)上以被或連同任何計算機相關(guān)的系統(tǒng)或方法使用。在本文的上下文中,計算機可讀介質(zhì)是能夠容納或存儲用于被或連同計算機相關(guān)的系統(tǒng)或方法使用的計算機程序的電子的、磁的、光的或其它物理的設(shè)備或裝置。本發(fā)明可以在任何計算機可讀介質(zhì)中實現(xiàn)以用于被或連同指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用,比如基于計算機的系統(tǒng)、包含處理器的系統(tǒng)或能夠從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取得指令并執(zhí)行指令的其它的系統(tǒng)。在本文的上下文中,“計算機可讀介質(zhì)”可以是任何能夠存儲、通信、傳播或傳送用于被或連同指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用的程序的裝置。該計算機可讀介質(zhì)可以是,例如但不限于:電子的、磁的、光的、電磁的、紅外的或半導(dǎo)體的系統(tǒng)、裝置、設(shè)備或傳播介質(zhì)。計算機可讀介質(zhì)的更詳細的例子(非無遺漏的清單)將包括:具有一條或多條導(dǎo)線的電氣連接(電子的)、便攜式計算機磁盤(磁的)、隨機存取存儲器(RAM)(電子的)、只讀存儲器(ROM)(電子的)、可擦除可編程只讀存儲器(EPR0M、EEPR0M(電可擦除可編程只讀存儲器)或閃存存儲器)(電子的)、光纖(光的)和便攜式光盤只讀存儲器(CDROM)(光的)。注意到該計算機可讀介質(zhì)甚至可以是程序打印于其上的紙或其它的適宜的介質(zhì),該程序可以通過例如光學(xué)掃描該紙或其它介質(zhì)而被電子地捕獲,然后被編譯、解釋或如果需要以適宜的方式不同地處理,然后被存儲到計算機存儲器中。為了在服務(wù)器之間和/或在服務(wù)器和客戶端計算機之間通訊,服務(wù)器中設(shè)有網(wǎng)絡(luò)通信設(shè)備和電路。在一個優(yōu)選的實施例中,該網(wǎng)絡(luò)通信設(shè)備包括網(wǎng)卡,比如以太網(wǎng)卡。在一個優(yōu)選的網(wǎng)絡(luò)環(huán)境中,每個服務(wù)器設(shè)置為使用傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP協(xié)議)通過網(wǎng)絡(luò)301進行通信。但是,可以理解,還可以使用多種網(wǎng)絡(luò)協(xié)議,比如互聯(lián)網(wǎng)分組交換/順序分組交換(IPX/SPX)協(xié)議、網(wǎng)件(Netware)、點對點協(xié)議(PPP)和其它的網(wǎng)絡(luò)協(xié)議。無線網(wǎng)絡(luò)連接也是可以考慮的,比如無線以太網(wǎng)(wireless Ethernet)、衛(wèi)星網(wǎng)(satellite)、紅外(infrared)和射頻(radio frequency)網(wǎng)絡(luò)。參見圖1,在流程100的步驟102,服務(wù)提供商計算機可以從一個或多個客戶端計算機接收多個簽名生成請求502。每個該簽名生成請求502可以包括數(shù)據(jù)504、樹高度標(biāo)記506和客戶端計算機標(biāo)識符508,如圖5A所示。例如,在圖5A中,第一簽名生成請求502具有數(shù)據(jù)504:x(l)、樹高度標(biāo)記506:4和客戶端計算機標(biāo)識符508:“AA”。數(shù)據(jù)504可以表示任何類型的能夠用無密鑰數(shù)字多重簽名簽署的數(shù)字信息。數(shù)據(jù)504可以包括文件、電子郵件或任何其它類型的數(shù)字化表現(xiàn)的信息。樹高度標(biāo)記506表示包含在簽名生成請求502中的樹的高度。當(dāng)在流程100中的后續(xù)步驟中創(chuàng)建搜索樹524時,該簽名生成請求502中的樹的高度將被考慮進去,以使得該搜索樹524保持恰當(dāng)?shù)钠胶獾钠胶?。該樹的根哈希值可以包含在簽名生成請?02中以表示與該數(shù)據(jù)504相關(guān)的多重簽名生成請求??蛻舳擞嬎銠C標(biāo)識符508是發(fā)出簽名生成請求502的客戶端計算機的唯一標(biāo)識。該客戶端計算機標(biāo)識符508可以是文本、數(shù)字、字母數(shù)字混合或其它的識別客戶端計算機的表征。在步驟104,簽名生成請求502可以根據(jù)它們各自的客戶端計算機標(biāo)識符508進行分組。在一個優(yōu)選的實施例中,該簽名生成請求502可以存儲在分類數(shù)據(jù)庫中。在圖5A的例子中顯示了三個客戶端計算機標(biāo)識符508:AA、AB和BB。簽名生成請求502被客戶端計算機標(biāo)識符508按字母 順序分組。如果客戶端計算機標(biāo)識符508使用了其它的表征,可以使用標(biāo)識符508的任何順序關(guān)系將簽名生成請求502分組進分類數(shù)據(jù)庫中。每個客戶端計算機的子樹可以在步驟106建立。該子樹可以基于在步驟104執(zhí)行的該簽名生成請求502的分組而建立。特別地,每個子樹的葉節(jié)點每個被分配一個簽名生成請求502。如從圖5B中的例子可見的一樣,具有為每個客戶端計算機標(biāo)識符AA、AB和BB分別建立的三個子樹510、512和514。在子樹510、512和514中的葉節(jié)點516具有分配給它們的簽名生成請求502。對于客戶端計算機標(biāo)識符AA和AB的子樹510和512,還具有另外的節(jié)點518,該節(jié)點518將是將在流程100的后續(xù)步驟中構(gòu)建的搜索樹524的中間節(jié)點。在步驟108中,可以構(gòu)建搜索樹骨架522并將子樹分配到該搜索樹骨架522以構(gòu)建搜索樹524,如圖5C和中的例子所示。圖5C中的搜索樹骨架522包括來自于子樹510、512和514的中間節(jié)點518以及葉節(jié)點“ =BB” 516。該葉節(jié)點“=BB”516被包含在搜索樹骨架522中,因為它是在步驟106中構(gòu)建的客戶端計算機標(biāo)識符BB的子樹514。搜索樹骨架522被用來主要基于搜索樹524的葉節(jié)點516中的客戶端計算機標(biāo)識符508的詞典特征(lexicographical characteristics)而連接子樹 510、512 和 514。圖中的例子所不的搜索樹524基于子樹510、512和514以及搜索樹骨架522構(gòu)建。該搜索樹524包括葉節(jié)點516、中間節(jié)點518和根節(jié)點520。通過對該搜索樹524的每個節(jié)點應(yīng)用哈希函數(shù),可以生成總簽名請求528,下文將進一步詳細描述。在圖的搜索樹524中與中間節(jié)點518相關(guān)的標(biāo)記“=AA”、“= AB”和“=BB”是分配給該中間節(jié)點518的搜索關(guān)鍵字。每個中間節(jié)點518的子節(jié)點和孫節(jié)點具有與各自的中間節(jié)點相同的客戶端計算機標(biāo)識符(例如,AA、AB或BB)。例如,具有搜索關(guān)鍵字“=AA”的中間節(jié)點518具有兩個子節(jié)點,每個子節(jié)點具有客戶端計算機標(biāo)識符AA。在步驟110,顯式長度標(biāo)記526被分配到每個葉節(jié)點516以平衡該構(gòu)建的搜索樹524。流程100重復(fù)步驟110和112直到所有的葉節(jié)點都被分配了顯式長度標(biāo)記526。該顯式長度標(biāo)記526可以為O或不為O。搜索樹524可能會由于簽名生成請求502中的樹高度標(biāo)記506和/或由于包含在搜索樹524中的單個的哈希鏈的長度而不平衡。由于包含在每個簽名生成請求502中的樹,樹高度標(biāo)記506增加了搜索樹524的高度。如從圖中的例子可見的一樣,最高的高度來自于簽名生成請求502:x(3)和X (4)。特別地,簽名生成請求502:x(3)具有為4的樹高度標(biāo)記506而簽名生成請求502:X(4)具有為3的樹高度標(biāo)記506,但是該簽名生成請求502:x(4)在搜索樹524中是比簽名生成請求502:x(3)低的層級。由于這些樹高度標(biāo)記506,在分配任何顯式長度標(biāo)記526之前,搜索樹524的高度 為7。但是,為了恰當(dāng)?shù)仄胶庠撍阉鳂?24,在需要時顯式長度標(biāo)記526被分配到葉節(jié)點516。在圖所示的例子中,不為O的顯式長度標(biāo)記526需要被分配給簽名生成請求502:x (I)、X (5)和X (6)以使得從這些各自的葉節(jié)點516到根節(jié)點520的高度為7。也就是說,在步驟110和112,顯式長度標(biāo)記526的分配考慮了葉節(jié)點516在搜索樹524中所處的層級以及在簽名生成請求502中的樹高度標(biāo)記506。搜索樹524的所有節(jié)點的哈希值可以在步驟114計算,這將參考圖2進行進一步詳細說明。在步驟202,檢查搜索樹524的一個確定的節(jié)點。在步驟204,取決于該節(jié)點是葉節(jié)點516還是非葉節(jié)點(中間節(jié)點518或根節(jié)點520),步驟114中的該流程分別走向步驟206或步驟210。如果該節(jié)點是葉節(jié)點516,在步驟206,哈希函數(shù)602可以被應(yīng)用到基于數(shù)據(jù)504、樹高度標(biāo)記506、客戶端計算機標(biāo)識符508和顯式長度標(biāo)記526的葉節(jié)點516。圖6A顯示了簽名生成請求502:x(5)的例子。結(jié)果的哈希值604y可以在步驟208被分配給該確定的葉節(jié)點516。但是,如果在步驟204中被檢查的節(jié)點是非葉節(jié)點518、520,則哈希函數(shù)602可以被應(yīng)用到客戶端計算機標(biāo)識符508以及連接到該非葉節(jié)點518、520的左側(cè)子節(jié)點和右側(cè)子節(jié)點606的哈希值。一個例子顯示于圖6B。該非葉節(jié)點可以包括中間節(jié)點518或根節(jié)點520。結(jié)果的哈希值608y可以在步驟208被分配給非葉節(jié)點518、520。該哈希函數(shù)602可以包括安全哈希算法-1 (SHA-1)、安全哈希算法2-224 (SHA2-224)、安全哈希算法 2-256 (SHA2-256)、安全哈希算法 2-384 (SHA2-384)、安全哈希算法 2-512 (SHA2-512)、成熟信息-摘要算法-160 (RIPEMD-160)和其它密碼哈希函數(shù)。最后,只要搜索樹中所有其它的節(jié)點的哈希值已經(jīng)計算出來,就可以計算出搜索樹524的根節(jié)點520的根哈希值530r。該根哈希值530r表示并包括搜索樹524中所有其它節(jié)點的哈希值。在步驟116,總簽名請求528可以被計算出并包括根哈希值530r和搜索樹高度標(biāo)記532。在圖所示的例子中,搜索樹高度標(biāo)記532為7,該“7”是搜索樹524的高度,包括簽名生成請求502中的樹高度標(biāo)記506和顯式長度標(biāo)記526。
總簽名請求528可以在服務(wù)提供商計算機被處理或可以被傳送到與該服務(wù)提供商計算機通信的父服務(wù)器。在流程100的步驟118,總簽名700可以基于該總簽名請求528被生成并接收,如將參考圖3進行進一步詳細描述的一樣。在步驟118的流程的步驟302中,總簽名請求528可以如前文所述的一樣在本地相同的計算機或在父服務(wù)器被接收。在步驟304檢查搜索樹高度標(biāo)記532以確定它是否超出了預(yù)先確定的高度限制。該高度限制可以被設(shè)置用以給客戶端計算機可以要求產(chǎn)生的簽名的數(shù)量設(shè)置上限或因為效率、已有工作負(fù)荷或其它的原因限制可以被處理的簽名的數(shù)量。該高度限制也可以由父服務(wù)器分配到服務(wù)提供商計算機以控制能夠被服務(wù)提供商計算機賣出的服務(wù)的數(shù)量,例如,可以被服務(wù)提供商計算機生成的簽名的數(shù)量。當(dāng)服務(wù)提供商計算機是由父服務(wù)器提供的簽名生成服務(wù)的經(jīng)銷商時這種情況可能發(fā)生。在步驟304中如果搜索樹高度標(biāo)記532超出了預(yù)定的高度限制,則在步驟310,該總簽名請求528可以被忽略并不再處理。在這種情況下,總簽名700和無密鑰數(shù)字多重簽名800將不會生成。但是,在步驟304中如果搜索樹高度標(biāo)記532小于或等于預(yù)先確定的高度限制,則在步驟306中生成總簽名700。在步驟306中,該搜索樹高度標(biāo)記532也可以被包括在搜索樹524中。在步驟308中,取決于哪個計算機處理該總簽名請求528,該總簽名700被在服務(wù)提供商計 算機內(nèi)傳送或被從父服務(wù)器傳送到服務(wù)提供商計算機。在一些實施例中,總簽名700可以具有與搜索樹524相同的哈希樹結(jié)構(gòu)。但是,哈希函數(shù)被應(yīng)用到搜索樹524的節(jié)點的哈希值,包括根哈希值530r和搜索樹高度標(biāo)記532,以生成總簽名700。該總簽名700還可以包括比將在無密鑰數(shù)字多重簽名800中出現(xiàn)的哈希鏈更短的哈希鏈。用于生成總簽名700的哈希函數(shù)可以是與用于在搜索樹524中產(chǎn)生哈希值的哈希函數(shù)相同或不同的確定的函數(shù)。在該總簽名700中還可以混入時間戳以標(biāo)明該總簽名700生成的日期和時間。該總簽名700可以響應(yīng)總簽名請求528的接收而被數(shù)字化地簽署。應(yīng)用到該總簽名請求528的數(shù)字簽名可以基于公鑰加密方案、公鑰/私人密鑰加密方案或能證明簽名的發(fā)布者的身份的任何其它方案。在總簽名700中可以包括唯一的序列號。在該總簽名700中還可以包括隱含長度標(biāo)記732并且當(dāng)該總簽名700生成時該隱含長度標(biāo)記732可以初始地被設(shè)為空白。當(dāng)在該無密鑰數(shù)字多重簽名800生成和/或驗證時計數(shù)哈希計算步驟的數(shù)量時,該隱含長度標(biāo)記732可以被填充。該隱含長度標(biāo)記732中填充的值可以與搜索樹高度標(biāo)記532比較以確??蛻舳擞嬎銠C發(fā)送的簽名生成請求的數(shù)量在限度之內(nèi)。在其它的實施例中,總簽名700可以包括具有時間戳和關(guān)于該哈希值何時和何地被公開的位置信息的公開哈希值。例如,該時間戳和位置信息可以被混入該公開哈希值中。該公開哈希值可以作為附加的數(shù)據(jù)結(jié)構(gòu)被加入無密鑰數(shù)字多重簽名800中以實現(xiàn)該無密鑰數(shù)字多重簽名800的更好的可提取性。如果客戶端計算機試圖發(fā)送具有比在簽名生成請求502中的樹的實際高度小的樹高度標(biāo)記506的簽名生成請求502,必須被填充以幫助保證對客戶端計算機的簽名生成的限制的隱含長度標(biāo)記732將起作用。例如,如果客戶端計算機試圖在該樹中增加具有虛假高度的外部數(shù)據(jù)結(jié)構(gòu),這將是存在故意濫用簽名生成服務(wù)的證據(jù)。無密鑰數(shù)字多重簽名800的生成在步驟120執(zhí)行,將參考圖4進行進一步詳細描述。在圖4中所示的步驟120的流程的步驟402,簽名生成請求502的最小子樹752可以被從總簽名700中提取出。該最小子樹752可以基于總簽名700中的樹以及該樹的對應(yīng)特定簽名生成請求502的特定的葉節(jié)點被提取。在圖7A和7B中所示的總簽名700包括葉節(jié)點716、中間節(jié)點718和根節(jié)點720。簽名生成請求702和顯式長度標(biāo)記726被分配給并混入葉節(jié)點716。如前文所述的一樣,雖然該總簽名700可以具有與搜索樹524相同的哈希樹結(jié)構(gòu),但是由于哈希函數(shù)的應(yīng)用、時間戳的加入和總簽名700的數(shù)字簽署,該總簽名700的節(jié)點的哈希值與搜索樹524的節(jié)點的哈希值不同。在圖7B所示的例子中,顯示了客戶端計算機標(biāo)識符AB的簽名生成請求702:x(5)的最小子樹752。該最小子樹752包括位于從根節(jié)點720到對應(yīng)于該簽名生成請求702:X (5)的葉節(jié)點716的直接路徑上的節(jié)點。特別地,圖7B中所示的最小子樹752包括中間節(jié)點718 “AB”、“BB”、“ = AB”和“ =AB”。這些節(jié)點也是該最小子樹752的上下文中的搜索關(guān)鍵節(jié)點。該最小子樹752還包括連接到搜索關(guān)鍵節(jié)點718的兄弟節(jié)點754的哈希值756。該兄弟哈希鏈值756包括沒有位于從根節(jié)點720到葉節(jié)點716的直接路徑上但是是總簽名700的一部分的兄弟節(jié)點754的哈希值。該兄弟哈希鏈值756是計算根哈希值730y所需要的。在步驟404,該最小子樹752可以被表示為哈希鏈850,比如像圖8所示的無密鑰數(shù)字多重簽名800中的一樣。該無密鑰數(shù)字多重簽名800包括根哈希值730y、隱含長度標(biāo)記732和哈希鏈850。搜索樹524的根哈希值530r等于根哈希值730y。在步驟406,檢查哈希鏈850的節(jié)點,在步驟408,可以確定該被檢查的節(jié)點是否對應(yīng)葉節(jié)點716。如果該節(jié)點對應(yīng)一個葉節(jié)點716,則在步驟410,哈希函數(shù)802被應(yīng)用到簽名生成請求702中的數(shù)據(jù)704、樹高度標(biāo)記706、客戶端計算機標(biāo)識符708和顯式長度標(biāo)記726。在步驟412,結(jié)果的哈希值被分配到該節(jié)點。在步驟408如果該節(jié)點沒有對應(yīng)一個葉節(jié)點,則在步驟418,該哈希函數(shù)802被應(yīng)用到搜索關(guān)鍵節(jié)點718的搜索關(guān)鍵標(biāo)識符804 ( “ =AB ”、“BB ”和“AB ”)和連接到該非葉節(jié)點的左側(cè)子節(jié)點和右側(cè)子節(jié)點的哈希值,隨后在步驟412,將結(jié)果的哈希值分配給該非葉節(jié)點。在步驟414,如果在哈希鏈850中還留有另外的節(jié)點,貝1J步驟120的該流程返回到步驟406以計算剩余的節(jié)點的哈希值。該哈希函數(shù)802可以是與用來計算在搜索樹524和/或總簽名700中的哈希值的哈希函數(shù)相同或不同的確定的函數(shù)。在步驟414如果在哈希鏈850中沒有剩余的節(jié)點,則在步驟416中計算無密鑰數(shù)字多重簽名800。最后處理的節(jié)點是根節(jié)點720,結(jié)果的根節(jié)點哈希值730y、隱含長度標(biāo)記732和哈希鏈850構(gòu)成了該無 密鑰數(shù)字多重簽名800。該隱含長度標(biāo)記732可以通過計數(shù)該哈希鏈850中的步驟的數(shù)量而計算出來。在圖8所示的例子中,完整的哈希鏈850從在圖8底部的簽名生成請求702:x(5)開始描述直到在圖8頂部的根哈希值730。在哈希鏈850中的每個計算步驟,從簽名生成請求702:X(5)中的信息開始,哈希函數(shù)802被應(yīng)用。在每個連續(xù)的計算步驟,兄弟哈希值756、搜索關(guān)鍵標(biāo)識符804和來自先前的哈希函數(shù)步驟的結(jié)果哈希值806被哈希函數(shù)802混合,直到根哈希值730被計算出來。關(guān)于該哈希鏈850的隱含長度標(biāo)記732,在每個計算步驟,樹的高度從簽名生成請求702中為I的顯式長度標(biāo)記726開始計算。在第一個計算步驟中,加上簽名生成請求702中的為2的樹高度標(biāo)記706產(chǎn)生為3的中間高度856。在圖8所示的例子中,對于每個連續(xù)的計算步驟,加上另外的為I的高度以產(chǎn)生連續(xù)的中間高度856。該被加上的另外的高度可以是另外的值,取決于涉及的特定的節(jié)點是否具有非O的顯式長度標(biāo)記726。當(dāng)?shù)竭_根節(jié)點時,在該哈希鏈850中步驟的總數(shù)被置入隱含長度標(biāo)記732中。在圖8的例子中,該隱含長度標(biāo)記被計算出為7。這樣,無密鑰數(shù)字多重簽名800為簽名生成請求702中的一個簽名生成請求生成,并包含了根哈希值730、被填充了的隱含長度標(biāo)記732和哈希鏈850。在一些實施例中,哈希鏈的計算在無密鑰數(shù)字簽名800的驗證過程中進行。在圖8中所示的哈希鏈850中的每個計算步驟中,當(dāng)哈希函數(shù)被應(yīng)用時,客戶端計算機標(biāo)識符708可以與搜索關(guān)鍵標(biāo)識符804比較,以保證簽名生成請求702處在總簽名700的哈希樹中最小子樹752被從該處提取出的正確的位置。換句話說,哈希鏈850中的計算步驟的順序被檢查以保證它與在分類數(shù)據(jù)庫中的簽名生成請求702的順序一致。如前文所述,簽名生成請求702可以按客戶端計算機標(biāo)識符708的字母順序或按其它的順序關(guān)系分組。在圖8的例子中,搜索關(guān)鍵標(biāo)識符804 “= AB”和“AB”與客戶端計算機標(biāo)識符708 “AB”比較以確定它們是相同的。搜索關(guān)鍵標(biāo)識符804 “BB”被比較以檢查它是否“大于”客戶端計算機標(biāo)識符708 “AB”。在這個例子中,基于它們的字母順序,“BB”是“大于” “AB”的。這也可以見于總簽名700的哈希樹中,在其中具有客戶端計算機標(biāo)識符“BB”的簽名生成請求702位于具有客戶端計算機標(biāo)識符“AB”的簽名生成請求702的右邊。在圖中的任何流程描述或流程框應(yīng)該被理解為表示包括一個或多個用于實現(xiàn)流程中特定的邏輯功能或步驟的可執(zhí)行指令的模塊、程序段或代碼部分,替代的實現(xiàn)方式被包括在本發(fā)明的實施例的范圍中,其中的各功能可以按照與前文所示或討論的順序不同的順序執(zhí)行,包括大體上并行的或相反的順序,取決于涉及的功能,如將被本領(lǐng)域普通技術(shù)人員理解的那樣。應(yīng)該強調(diào),前文描述的本發(fā)明的實施例,特別是任何“優(yōu)選的”實施例,是可能的實現(xiàn)的實例,僅僅是在為了清楚地理解本發(fā)明的原理而描述。在不實質(zhì)性地背離本發(fā)明的精神和原理的情況下,還可以對本發(fā)明的前文所描述的實施例做很多變更和修改。所有這些修改在這里都將被包括在本文和本發(fā)明中,并受 后續(xù)的權(quán)利要求保護。
權(quán)利要求
1.一種生成無密鑰數(shù)字多重簽名的方法,包括: 在第一計算機接收多個簽名生成請求,其中每個所述多個簽名生成請求包括數(shù)據(jù)、客戶端計算機標(biāo)識符和樹高度標(biāo)記; 構(gòu)建搜索樹,所述搜索樹包括根節(jié)點和多個葉節(jié)點,其中所述多個葉節(jié)點包括所述多個簽名生成請求; 對每個所述多個葉節(jié)點和所述根節(jié)點應(yīng)用第一哈希函數(shù)以為每個所述多個葉節(jié)點和所述根節(jié)點計算哈希值; 生成包括所述根節(jié)點的所述哈希值和搜索樹高度標(biāo)記的總簽名請求; 為了生成總簽名和所述無密鑰數(shù)字多重簽名發(fā)送所述總簽名請求; 如果所述搜索樹高度標(biāo)記沒有超出高度限制,接收所述總簽名,所述總簽名包括隱含長度標(biāo)記;以及 基于所述總簽名以及所述多個簽名生成請求中的所述數(shù)據(jù)和所述客戶端計算機標(biāo)識符,生成對應(yīng)于所述多個簽名生成請求的無密鑰數(shù)字多重簽名。
2.如權(quán)利要求1所述的方法,其特征在于:所述發(fā)送所述總簽名請求包括:將所述總簽名請求發(fā)送到與所述第一計算機通信的第二計算機;所述方法還包括: 如果所述搜索樹高度 標(biāo)記沒有超過所述高度限制,則基于所述總簽名請求在所述第二計算機中生成所述總簽名; 發(fā)送所述總簽名到所述第一計算機。
3.如權(quán)利要求2所述的方法,其特征在于:所述在所述第二計算機中生成所述總簽名包括:對所述根節(jié)點的所述哈希值和在所述總簽名請求中的所述搜索樹高度標(biāo)記以及時間戳和數(shù)字簽名應(yīng)用第二哈希函數(shù)。
4.如權(quán)利要求1所述的方法,其特征在于,還包括: 如果所述搜索樹高度標(biāo)記沒有超過所述高度限制,則基于所述總簽名請求在所述第一計算機中生成所述總簽名。
5.如權(quán)利要求4所述的方法,其特征在于:在所述第一計算機中生成所述總簽名包括:對所述根節(jié)點的所述哈希值和在所述總簽名請求中的所述搜索樹高度標(biāo)記以及時間戳和數(shù)字簽名應(yīng)用第二哈希函數(shù)。
6.如權(quán)利要求1所述的方法,其特征在于:所述總簽名還包括第一哈希鏈。
7.如權(quán)利要求1所述的方法,其特征在于:所述總簽名包括公開哈希值,所述公開哈希值包括時間戳和位置信息。
8.如權(quán)利要求1所述的方法,其特征在于:所述構(gòu)建搜索樹包括: 基于所述多個簽名生成請求建立子樹,其中所述子樹對應(yīng)所述多個簽名生成請求中的客戶端計算機標(biāo)識符; 構(gòu)建包括所述子樹的搜索樹。
9.如權(quán)利要求8所述的方法,其特征在于:還包括:基于在每個所述多個簽名生成請求中的客戶端計算機標(biāo)識符將所述多個簽名生成請求分組成在分類數(shù)據(jù)庫中的分組請求,其中所述分組請求具有共同的客戶端計算機標(biāo)識符。
10.如權(quán)利要求9所述的方法,其特征在于:所述建立子樹包括:為在所述分類數(shù)據(jù)庫中的具有共同的客戶端計算機標(biāo)識符的所述分組請求建立所述子樹。
11.如權(quán)利要求1所述的方法,其特征在于:還包括:為每個所述多個葉節(jié)點分配顯式長度標(biāo)記,每個所述顯式長度標(biāo)記基于在每個所述多個簽名生成請求中的所述樹高度標(biāo)記。
12.如權(quán)利要求11所述的方法,其特征在于:所述分配顯式長度標(biāo)記包括:分配所述顯式長度標(biāo)記給每個所述多個葉節(jié)點使得所述搜索樹保持平衡。
13.如權(quán)利要求11所述的方法,其特征在于:所述搜索樹高度標(biāo)記基于所述多個簽名生成請求中的所述樹高度標(biāo)記和被分配給所述多個葉節(jié)點的所述顯式長度標(biāo)記。
14.如權(quán)利要求1所述的方法,其特征在于:所述搜索樹還包括在所述根節(jié)點和所述多個葉節(jié)點之間的多個中間節(jié)點。
15.如權(quán)利要求14所述的方法,其特征在于:所述應(yīng)用第一哈希函數(shù)還包括:對每個所述多個中間節(jié)點應(yīng)用所述第一哈希函數(shù)。
16.如權(quán)利要求1所述的方法,其特征在于:所述應(yīng)用第一哈希函數(shù)包括: 確定所述搜索樹的第一節(jié)點是否是所述多個葉節(jié)點中的一個; 如果所述第一節(jié)點是所述多個葉節(jié)點中的一個,則應(yīng)用所述第一哈希函數(shù)到所述第一節(jié)點的數(shù)據(jù)、客戶端計算機標(biāo)識符、樹高度標(biāo)記和顯式長度標(biāo)記以產(chǎn)生所述哈希值;以及如果所述第一節(jié)點不是所述多個葉節(jié)點中的一個,則應(yīng)用所述第一哈希函數(shù)到左側(cè)子節(jié)點哈希值、右側(cè)子節(jié)點哈希值和所述第一節(jié)點的客戶端計算機標(biāo)識符以產(chǎn)生所述哈希值,其中: 所述左側(cè)子節(jié)點哈希值包括連接到所述第一節(jié)點的第二節(jié)點的哈希值; 所述右側(cè)子節(jié)點哈希值包 括連接到所述第一節(jié)點的第三節(jié)點的哈希值。
17.如權(quán)利要求1所述的方法,其特征在于:生成所述無密鑰數(shù)字多重簽名包括: 從所述搜索樹中提取最小子樹,所述最小子樹對應(yīng)所述多個簽名生成請求中的一個簽名生成請求,所述最小子樹包括: 所述搜索樹的根節(jié)點;以及 所述搜索樹的所述多個葉節(jié)點中對應(yīng)所述多個簽名生成請求中的所述一個簽名生成請求的第二節(jié)點; 從第二哈希鏈計算根節(jié)點哈希值,所述第二哈希鏈包括所述第二節(jié)點和所述根節(jié)點; 用所述第二哈希鏈的步驟的數(shù)量填充所述總簽名的所述隱含長度標(biāo)記;以及 生成包括所述根節(jié)點哈希值、被填充的所述隱含長度標(biāo)記和所述第二哈希鏈的無密鑰數(shù)字多重簽名。
18.如權(quán)利要求17所述的方法,其特征在于:所述計算根節(jié)點哈希值包括: 應(yīng)用所述第一哈希函數(shù)到所述第二節(jié)點的數(shù)據(jù)、客戶端計算機標(biāo)識符和樹高度標(biāo)記以產(chǎn)生葉節(jié)點哈希值;以及 應(yīng)用所述第一哈希函數(shù)到所述葉節(jié)點哈希值以產(chǎn)生所述根節(jié)點哈希值。
19.如權(quán)利要求17所述的方法,其特征在于:所述搜索樹還包括在所述根節(jié)點和所述多個葉節(jié)點之間的多個中間節(jié)點,其中所述最小子樹還包括: 所述搜索樹的搜索關(guān)鍵節(jié)點,所述搜索關(guān)鍵節(jié)點包括所述搜索樹的所述多個中間節(jié)點中的位于從所述根節(jié)點到所述多個葉節(jié)點中對應(yīng)所述多個簽名生成請求中的所述一個簽名生成請求的所述第二節(jié)點的直接路徑上的一個或多個節(jié)點;以及所述搜索關(guān)鍵節(jié)點的兄弟節(jié)點的多個第一哈希鏈值的兄弟哈希鏈值,所述兄弟節(jié)點連接到所述搜索關(guān)鍵節(jié)點。
20.如權(quán)利要求19所述的方法,其特征在于:所述計算根節(jié)點哈希值包括: 應(yīng)用所述第一哈希函數(shù)到所述第二節(jié)點的數(shù)據(jù)、客戶端計算機標(biāo)識符和樹高度標(biāo)記以產(chǎn)生葉節(jié)點哈希值;以及 應(yīng)用所述第一哈希函數(shù)到所述葉節(jié)點哈希值和所述兄弟哈希鏈值以產(chǎn)生所述根節(jié)點哈 希值。
全文摘要
提供了一種生成無密鑰數(shù)字多重簽名的方法。該方法包括從一個或多個客戶端計算機接收多重簽名生成請求,基于該簽名生成請求構(gòu)建子樹,并構(gòu)建包括該子樹的搜索樹。該方法還包括分配顯式長度標(biāo)記到該搜索樹的葉節(jié)點以平衡該搜索樹并應(yīng)用哈希函數(shù)到該搜索樹的每個節(jié)點。根哈希值和該搜索樹的高度構(gòu)成生成的總簽名請求,然后接收基于該總簽名請求的總簽名。無密鑰數(shù)字多重簽名基于該總簽名生成并包含隱含長度標(biāo)記以驗證簽名生成請求的數(shù)量受到了限制。如果該搜索樹的高度沒有超過預(yù)定的高度限制,則該總簽名被生成。
文檔編號H04L9/32GK103227719SQ20121021858
公開日2013年7月31日 申請日期2012年6月15日 優(yōu)先權(quán)日2011年6月20日
發(fā)明者阿赫托·布爾達斯, 安德烈斯·柯羅恩瑪, 馬特·薩熱帕熱 申請人:保護時知識產(chǎn)權(quán)控股有限公司