專利名稱::增量可證數據完整性驗證方法、設備和系統的制作方法
技術領域:
:本發明涉及存儲網絡安全領域,具體涉及增量可證數據完整性(IPDI)驗證方法、設備和系統。
背景技術:
:互聯網正朝著從個人的本地存儲向全球規模的數據存儲外包服務而高速發展。AmazonSimpleStorageService(AmazonS3)(參考文獻1:AmazonSimpleStorageService(AmazonS3),http://aws.amazon.com/s3)是這禾中互聯網存儲系統之——。AmazonS3提供了可用于存儲和獲取數據的網絡服務接口。AmazonS3的服務是全球規模和商業類別的,而其價格十分合理對于所用存儲量,US$0.15GB/月;對于所有傳入數據,US$0.10GB/月;對于第一個10TB/月的數據傳出,US$0.18GB/月。對于尋求免費全球規模存儲服務的人,也有如下服務。MediaMax(參考文獻2:MediaMaxFreeOnlineStorage,http://www.mediamax.com)提供25GB免費在線存儲,GmailFileSystem(參考文獻3:GmailDriveShellExtension,http://www.viksoe.dk/code/gmail.htm)項目已將免費Gmail帳戶轉換為一個永久免費的網絡存儲空間。利用這些公共存儲空間服務,客戶端可以丟棄自己的本地存儲子系統,通過互聯網從任何地方隨時獲取數據。這種驚人的前景吸引了大量產業力量,這些力量已使存儲外包成為了不可避免的趨勢。IETFNetworkWG抓住了這種趨勢,從而發布了RFC4810"Long-TermArchiveServiceRequirement"(參考文獻4:RFC4810,Long-TermArchiveServiceRequirement,IETFNetworkWG,http:〃www.ietf.org/rfc/rfc4810.txt)。RFC4810描述了對負責長期保存數據的長期存檔服務的要求。支持數據存在的無抵賴性、完整性和歸屬性是對長期存檔服務的主要要求。如RFC4810所記載的,長期存檔服務必須能夠在從接收到數據直到該數據的存檔周期到期時,提供可用于證明該服務所負責的數據的完整性的證據。從客戶端存儲到存檔服務外包數據具有兩個基本步驟,一是提交數據,另一步驟是獲取數據。用于數據完整性驗證的不成熟解決方案包括從存檔服務器中獲取數據。但是,在目前以及不遠的將來,要提供從遠程存檔服務器到客戶端驗證器的高帶寬是不切實際的。尤其對于移動客戶端,難以享有高帶寬連接。此外,如RFC4810所述,可以是用于檢查用戶完整性的第三方驗證器。在這種情況下,第三方驗證器不應該訪問用戶數據;否則它可能侵犯用戶數據隱私。為了驗證數據完整性,同時避免從存檔服務器中獲取數據,現有技術采用了三步驟操作模型,如圖1所示。注意,為了簡化表示(并且不失一般性),以下將以客戶端(即,數據所有者)即是用戶數據完整性驗證器為例。但如上所述,實際上驗證器也可以是第三方,而不是數據所有者。在步驟0,數據的數字指紋由客戶端產生井與該數據一并發送至存檔服務器。除了數據本身,存檔服務器還需要存儲數據的指紋。在步驟l,客戶端向存檔服務器發送關于數據完整性的質詢。存檔服務器一并利用數據內容、數據指紋和客戶端質詢,計算數據完整性證明,在步驟2,將該數據完整性證明返回客戶端,以用于驗證。步驟1和步驟2可以重復多次,直到數據的存檔周期到期為止。基于上述操作模型,以下列出了針對可證數據完整性問題的任何技術方案應該考慮的關鍵因素。(I)客戶端產生數據指紋所花費的時間(II)數據指紋所消耗的存檔服務器存儲大小(III)驗證器向存檔服務器發送的質詢的大小(IV)存檔服務器計算數據完整性證明所用的時間(V)存檔服務器向驗證器發送的數據完整性證明的大小(VI)驗證器檢查數據完整性證明所用的時間(VII)處理數據增量改變的能力存在看似可以處理數據完整性的簡單解決方法。初始,數據所有者將數據劃分成多個部分,并針對每個部分預先計算消息鑒別碼(MAC)。無論驗證器、數據所有者或第三方何時需要數據完整性證明,它從存檔服務中獲取多個隨機選擇的部分,并重新計算每個部分的MAC,以用于比較。Deswarte等人(參考文獻5:Y.Deswarte,J.J.Quisquater,A.Saidane,Remoteintegritychecking,InProc.ofConferenceonIntegrityandInternalcontrolinInformationsystems(IICIS,03),2003)和Filho等人(參考文獻6:D.L.G.Filho,P.S.LM.Baretto.DemonstratingDataPossessionandUncheatableDataTransfer,http:〃印rint.iacr.org/2006/150,pdf)提出了使用基于RSA的哈希函數來驗證存檔服務器正確存儲了文件。最近,Ateniese等人(參考文獻7:G.Ateniese,R.B證s,R.Curtmola,J.Herring,LKissner,Z.Peterson,D.Song,ProvableDataPossessionatUntrustedStores,http:〃印rint.iacr.org/2007/202,pdf)提出了一種基于RSA的可證數據持有方案,即S-PDP方案,其中"S"代表"采樣"。采樣的意思是,客戶端隨機選擇一部分數據,并要求存檔服務器顯示該隨機選擇的數據處于健康狀態(即,所選數據的數據完整性被保持)的證據。S-PDP方案不需要對整個文件進行冪運算,通信復雜度也是恒定的,這使S-PDP方案成為現有技術方案中最有效的方案。不成熟方案的缺點在于,其通信復雜度與所查詢的數據量大小是成線性關系的。此外,在第三方驗證器的情況下,禁止向驗證器發送用戶數據,因為這侵犯了數據所有者的隱私。為了避免從存儲服務器中獲取數據,可以通過選擇多個秘密密鑰并預先計算該數據的多個帶密鑰哈希MAC。因此,驗證器可以每次向存儲服務器公開秘密密鑰,并要求其計算帶密鑰的哈希MAC,用于比較。但是,可以驗證特定數據的次數受到必須先驗固定的秘密密鑰的數目的限制。當密鑰用完時,為了計算新的帶密鑰的哈希MAC,不可避免要從存檔服務器中獲取數據。參考文獻5和6的提議的缺點在于存檔服務器不得不對整個文件進行冪運算。作為參考,給定2048比特RSA模數,在IntelCoreDuo2.16GHz進行一次全指數冪運算要花費61.325毫秒。因此,每兆字節的冪運算需要251.3秒。這意味著為了測試64MB文件的完整性,在客戶端可以接收到數據完整性證明之前,存檔服務器要花費16083.8秒。S-PDP方案的一個問題在于其設計目的,即采樣,有時對于數據擁有者可能毫無意義。通過采樣,S-PDP方案試圖以似乎較高的檢測概率容許文件塊錯誤。例如,參考文獻7論述了如何在1%的文件塊錯誤的情況下達到99%的檢測概率。但是,很多類型的文件甚至不能容忍一個比特的錯誤。例如,媒體文件中編解碼配置參數所處于的首部的丟失會導致難以呈現該文件。另一示例是嵌入加密文件中的(公鑰加密的)對稱加密密鑰的損壞會導致無法再恢復成明文的垃圾密文。通常,數據所有者要求的是100%的數據安全。這是無論如何都不可妥協的。S-PDP方案的另一問題在于,利用其構建的可第三方驗證(或所謂的公開可驗證性)系統效率非常低。為了公開可驗證,S-PDP方案強制每個文件塊必須小于RSA公鑰e。以2048比特RSA模為例,公鑰最多可以是1024比特。因此,根據公開可驗證S-PDP方案的解決方法必須在邏輯上將文件分為多個1024比特的文件塊。結果產生大量文件塊,并且必須為每個文件塊產生標簽。換言之,標簽的大小至少是文件本身的兩倍,并且客戶端向文件加標簽所花費的時間也太長,從而在實際中是不可行的。轉讓給本申請同一申請人的在先中國發明專利申請CN200810165864.3提出了一種基于配對的可證數據完整性(PDI)方案。該在先PDI方案很好地滿足了上述要求(I)到(VI),但是不能滿足上述要求(VII)。S卩,該PDI方案不能對已經外包的數據進行增量改變。增量改變意味著向數據文件增加新的數據段。該PDI方案如果允許進行增量改變的話則會破壞安全性。也就是說,一旦數據文件已經進行過預處理(例如,針對該PDI方案產生指紋)并被外包出去,即,向第三方驗證器公開了數據預處理所用的密鑰,那么該PDI方案讓新的數據段進入文件是不安全的。注意到,現有技術尚不能滿足所有的七條要求(I)到(VII)。
發明內容鑒于上述現有技術的缺點,本發明提出了增量可證數據完整性(IPDI)驗證方法,該方法基于CN200810165864.3(在此附上其全文公開用作參考)中公開的PDI方案,并克服了現有技術(不僅是該PDI方案)所遇到的增量改變難題。根據先前提出的PDI方案,已經提出了一種產生數據指紋的方法,包括步驟將數據劃分成N個塊Mi,i=1,2,...,N;將每ne個塊組合成超塊,以得到"=「^7"」個超塊;從有限循環群^-〈^〉中選擇ne個元素hj,j=1,2,...,ne;通過使用針對第k超塊的定位符Wk、所選的nB個元素hj和第一私鑰x,分別產生第k超塊的指紋Tk,k=1,2,...,n。新提出的IPDI方案與該PDI方案的不同主要在于該IPDI方案引入了稱作"虛擬文件塊(VFB)"的概念。在該IPDI方案中,VFB被視為"真實"文件塊,且"-「iV/"l個超塊中的每一超塊均由ne個數據塊加上虛擬文件塊(VFB)構成。因此,根據新提出的IPDI方案,提供了一種產生數據指紋的方法,包括步驟將數據劃分成N個塊Mi,i=1,2,...,N;將每ne個塊與虛擬文件塊^(wh+'+(v組合成超塊,以得到"=[>/1個超塊;從有限循環群(G,=〈&〉中選擇1!8+1個元素hj,j=+0,1,2,..,nB;通過使用針對第k超塊的定位符Wk、所選的nB+l個元素hj和第一私鑰x,分別產生第k超塊的指紋Tk,k二l,2,...,n。優選地,所述nB+l個元素hj是與第-私鑰x相對應的公鑰的--部分優選地,所述nB+l個元素hj滿足關系~=g卩,r,.是秘密密鑰優選地,根據—Z+產生第k超塊的指紋Tk,zM是所述數據的標識符。更加優選地,第k超塊的定位符Wk是至少以k為輸入的哈希值。優選地,根據t;=產生第k超塊的指紋Tk。更加優選地,第k超塊的定位符Wk是至少以k和所述數據的標識符zM為輸入的哈希值。根據本發明第二方面,提供了一種用于產生數據指紋的設備,包括虛擬文件塊產生單元,用于針對每個待產生的超塊,產生虛擬文件塊^(w).^.+cr;超塊產生單元,用于將數據劃分成N個塊Mi,i=1,2,...,N,并將每nB個塊與來自虛擬文件塊產生單元的虛擬文件塊M(^.吣.+。.組合成超塊,以得到"「iV/"l個超塊;以及指紋產生單元,用于從有限循環群G,二〈ft〉中選擇ne+l個元素hj,j=+0,1,2,...,rv并通過使用針對第k超塊的定位符Wk、所選的nB+l個元素hj和第一私鑰x,分別產生第k超塊的指紋Tk,k=1,2,...,n。優選地,所述nB+l個元素hj是與第一私鑰x相對應的公鑰的一部分。優選地,所述nB+l個元素hj滿足關系、=g卩,rj是秘密密鑰。先前提出的PDI方案可以在極高的概率(例如,1-2—64)上確保數據的數據完整性。相比于實現了(1)確保每一比特數據的數據完整性,(2)客戶端發送至存檔服務器的質詢的大小恒定,以及(3)存檔服務器發送至客戶端的數據完整性證明的大小恒定,的現有技術,該PDI方案主要具有如下四個優點(I)客戶端產生數據指紋的速度最快;(II)存檔服務器產生客戶端質詢響應的速度最快;(III)客戶端驗證存檔服務器的響應的速度最快;(IV)驗證器可以是第三方驗證器,同時仍然保持上述三個優點(I)-(III)。此外,指紋的大小最小。具體以64MB的數據文件為例。安全強度設為可與2048比特RSA特征相比,1=64。當客戶端是IntelCoreDuo2.16GHz處理器,存檔服務器端是IntelQx6700Core2Quad2.66GHz處理器時,使用PDI方案,客戶端花費12.7秒產生文件指紋;存檔服務器花費1.4秒產生變換指紋和變換超塊的知識證明;客戶端花費0.4秒驗證知識證明。所有這些時間值甚至低于現有基于RSA方案的存檔服務器在最好情況下所能達到的理論下限。有利地,新提出的IPDI方案能夠安全地實現向已經產生指紋且被外包的數據文件添加增量數據。該IPDI方案滿足了所有七條要求(I)到(VII),并且不會帶來額外的存儲消耗。結合附圖,從下面對本發明非限制性實施例的詳細描述中,本發明的上述和其他目的、特征和優點將更加明顯,附圖中圖1示出了用于證明數據完整性的工作模型;圖2示出了根據本發明的數據完整性證明方法(原子證明過程)和數據完整性驗證方法(原子驗證過程)的流程圖;圖3是根據先前提出的PDI方案的數據的邏輯圖;圖3a是根據新提出的IPDI方案的數據的邏輯圖;圖4示出了可選的數據完整性證明的工作模型;圖5示出了另一可選的數據完整性證明的工作模型;圖6示出了用于實現本發明的客戶端1400的框圖;圖7示出了用于實現本發明的存檔服務器1500的框圖;以及圖8示出了用于實現本發明的驗證器1600的框圖。具體實施例方式下面,根據附圖描述本發明。在以下描述中,一些具體實施例僅用于描述目的,而不應該理解為對本發明有任何限制,而只是本發明的示例。省略了常規結構或構造,以免導致對本發明的理解不清楚。原理說明這里提出的增量可證數據完整性(IPDI)方案不僅克服了現有技術中遇到的所有問題,在性能上還優于各種現有技術。IPDI方案基本具有如下三個步驟,這與圖1所示的工作模型相符合。步驟0':IPDI方案需要有限循環群(^=〈ffl〉。優選地,G,是橢圓曲線上的有限循環群。在本發明公開中,使用傳統的乘法群符號,而不是在橢圓曲線背景下經常使用的加法符號。客戶端具有私鑰x和相應的公鑰。客戶端將數據文件劃分成N個塊Mi,i=1,2,...,N。每nB個塊與虛擬文件塊M(,—D^+.+。.組合在一起,形成超塊。因此,將數據劃分成"=「^/,個超塊。如果數據文件的長度小于n個超塊所需的,則在邏輯上對數據文件加零。在本說明書中,邏輯上,超塊中虛擬文件塊位于nB個塊之前。但是,超塊中虛擬文件塊可以位于nB個塊之后,或者可以位于任何指定位置。在此,下標"+o"用來表示超塊中緊接第一真實文件塊之前的塊。對于每個數據文件,客戶端準備^的nB+l個元素hi,i=+0,1,2,...,nB。在優選情況下,客戶端選擇1>以使/^=^,并保持ri是秘密的。更優選的,這些元素hi是客戶端公鑰的一部分,從而獨立于數據文件。客戶端利用其私鑰和上述nB+l個元素hi,產生所有超塊的指紋。例如,第i個超9塊的指紋的形式為T.=W.it&,其中定位符Wi是至少以i為輸入的哈希值,例如,定位符Wi的輸入還可以包括數據文件的文件名和/或版本號;ZM是針對數據文件而特別挑選的標識符,例如,為一組數據文件選擇一個標識符ZM,而為另一組數據文件選擇另標識符z'M。可選地,指紋可以計算為r,.i,其中定位符Wi采用和ZM作為輸入。在優選情況下,客戶端知道ri,以使因此,通過將ft^'—"w客戶端可以利用知識ri來加快指紋產生過禾'王。*2r,.—')、刀^=+。,步驟0'的結果為,客戶端得到n個超塊的n個指紋。客戶端將所有指紋與數據文件和nB個元素hi—并發送給存檔服務器。在優選情況下,nB個元素hi客戶端公鑰的一部分,存檔服務器可以已從例如公鑰目錄中得到這些元素。因此,不必將這些元素連同數據文件一起傳送。步驟1,:客戶端向存檔服務器發送"質詢",以確定數據的完整性。基于從客戶端接收到的質詢,存檔服務器需要執行多次原子證明過程,例如,執行V次。2^個盒子,并隨機地將n個指對于每個原子證明過程,存檔服務器首先構造①紋分配到盒子中。數目①和隨機性由從客戶端接收到的"質詢"確定。每個指紋必須放入一個且僅這一個盒子中。注意,每個指紋精確地對應于一個超塊,在所有n個指紋全部放入盒子之后,每個盒子均有"封裝超塊"及該"封裝超塊"的"封裝指紋",后者是基于分配給該盒子的指紋產生。例如,考慮只有第n和第o個超塊上的兩個指紋放入第A個盒子的情況。該盒子的"封裝超塊"包含A,M,、+j+ikU^,j=+0,1,2,...,rv該"封裝超塊"上的"封裝指紋"是&=^義。接下來,通過向所有盒子的"封裝超塊"和"封裝指紋"應用另一隨機性,存檔服務器產生一個"變換超塊"和該"變換超塊"上的一個"變換指紋"。這里的隨機性同樣由從客戶端接收到的"質詢"確定的。繼續采用上述示例,"變換超塊"包含丑,=^>^^^,j=1,2,...,rv"變換超塊"上的"變換指紋"是T^fl:/r',其中a,是由客戶端的"質詢"確定的隨機數。最后,存檔服務器產生"變換超塊的知識證明",這可以直接是"變換超塊"。可選地,變換超塊的知識證明可以是通過標準交互式或非交互式零知識證明技術的"變換超塊"的內容的知識。可選地,客戶端"質詢"包含Hi=hie,i=+0,1,2,...,rv客戶端為每個質詢選擇不同e的并對e保密。在優選情況下,Hi是客戶端公鑰的一部分,e是客戶端私鑰的一部分。存檔服務器利用Hi,計算"變換超塊的知識證明"為H:。存檔服務器需要向客戶端發送作為原子證明過程輸出的"變換指紋"T和"變換超塊的知識證明"H。存檔服務器總共應該重復原子證明過程V次,從而可以選擇^=f〖/+l用于決定構造的盒子總數,其中1由客戶端選擇,并確定了安全級別。選擇隨機數^的位長度為小。通過重復該原子過程V次,PDI方案的安全級別可以是(n/V)2—、這表示如果至少一個塊受到損壞,則存檔服務器能夠說服驗證器的概率最多為(n/uO,2一1。上述的"數目①和隨機性由從客戶端接收到的質詢確定"以及"a,是由客戶端的質詢確定的隨機數"還有其他參考實現。例如選擇小=n,并將n個指紋均勻地分配到n個盒子中。即每個盒子有且只有一個指紋。選擇^的位長度為1。此時選擇V=l可實現安全級別n'2—、步驟2':客戶端接收來自存檔服務器的全部V次原子證明過程的輸出。對于一次原子證明過程的每個"變換超塊"上的"變換指紋"和"變換超塊的知識證明",客戶端執行原子驗證過程。對于每個原子驗證過程,客戶端首先構造①個盒子,并在邏輯上隨機地將定位符Wi分配到盒子中。因為該隨機性由客戶端選擇的"質詢"確定,所以該隨機性與存檔服務器用于分配指紋的隨機性完全相同。每個定位符必須放進且僅放進一個盒子中。在所有n個定位符全部放入盒子之后,每個盒子中有基于分配給該盒子的定位符產生"封裝定位符"。例如,考慮只有兩個定位符W,和W。放入第A個盒子的情況。該盒子的"封裝定位符"是接下來,通過向所有盒子的"封裝定位符"應用上述另一隨機性,客戶端產生一個"變換定位符"。因為該隨機性由客戶端選擇的"質詢"確定,所以該隨機性與存檔服務器用于計算"變換指紋"的隨機性完全相同。"變換定位符"是W^ft^"1,其中a,是由客戶端的"質詢"確定的隨機數。最后,如果存檔服務器產生"變換超塊的知識證明"就是"變換超塊"本身,客戶端計算"變換超塊的推定知識證明"為^、(""w)并將其與f[《'比較。如果相等,則原子驗證過程輸出成功。可選的,客戶端計算"變換超塊的推定知識證明"為^二(r"'vw)、并將其與從存檔服務器接收到的值H比較。如果H=H',則原子驗證過程輸出成功。可選地,^、a;K'ftA,'-')、"如果指紋計算為:j=+0,則將"變換超塊的推定知識證明"計算為(T1/x/W)僅在所有的原子驗證過程均成功時,才使客戶端相信存檔服務器端保持了數據完整性。在存檔服務器端有至少一個塊損壞的情況下,客戶端被錯誤說服的概率最大是2—、詳細說明下面將更加詳細地描述本發明。使用傳統的乘法群符號,而不是橢圓曲線設置中常用的加法符號。11設^=&〉和G2="〉是具有附加群G=〈P〉的兩個有限循環群,以使|G」=|G2|=問=P,其中P是某一較大質數。雙線性映射e:&xG2—g是函數,以確保雙線性:對于所有/^eG,、£G2,所有—GZp,e(h,,h,)=e(h"h2)ab。非退化3&GG,a/i2eG2,以使e(^,h2)-I,其中I是g的幺元。可計算存在用于計算e的高效算法。假設有設置算法Setup(),當輸入安全參數lk時,輸出上述雙線性映射設置,并寫作(p,G,2,g,ff"52'e)—。因為^,(G2和G都具有相同的質數階p,根據雙線性特性和非退化特性,易得給定(p,G"G2,g,^&,e)—Se鄉(l",以及6個偽隨機函數p《{0,1}'—Zp、Pr/2:{0,1}'—G,、^/3(0):{0,1}*—~、p《FS:{0,1}'—Zp、pr/4(0):{0,1}—Z2^Ppr/5:G!—{o,l}作為系統參數。客戶端產生數據指紋客戶端具有秘密密鑰&二zp2和公鑰y=e<G2。優選地,客戶端具有來自認證權威機構的關于Y的證書。可選地,例如,客戶端秘密密鑰e可以計算為e=prfjx,〃secondprivatekey〃)。此外,客戶端計算(《=及,=A/)e,i=+0,1,2,...,nB作為其公鑰。給定劃分成N個塊Mi(i=1,2,...,N)的數據M,每個塊是1M比特長,必須滿足1M<logp。以M為參考,例如,其合格的文件名稱表示為FNM。圖3示出了PDI方案中邏輯上如何將劃分數據M并構造成n個超塊。"=「7V/"J表示超塊的數量。注意在數據M的長度不等于N'lM或n'(nB*lM)的情況下,在邏輯上向數據M追加零。根據本IPDI方案,在第i,i=1,2,,n,超塊的nB個真實文件塊M(,-D.w,…,M之前添加虛擬文件塊M—d,^+,+。.。與長度為1M比特的真實文件塊不同,虛擬文件塊氣,".+。.的長度為p比特。客戶端按來計算虛擬文件塊^(卜d.+.+。.。圖3a中示出了第一超塊,其中M+。是虛擬文件塊,這里下標"+0"用來表示緊接第一真實文件塊M工之前的塊。同樣的規則還適用于其他超塊。可選地,通過選擇,/,{0,1}'—Z,其中Z^Zp,虛擬文件塊的長度可以小于p比特。客戶端執行如下過程以產生數據的指紋。a)客戶端選擇^厶Zp,并計算定位符W^p《(MM,i^M)eG,,<formula>formulaseeoriginaldocumentpage13</formula>名為第i個超塊的指紋。b)客戶端用秘密密鑰x簽署(FNM,M,zM,(TJ),產生簽名s。c)客戶端針對FNM存儲zM。d)客戶端向存檔服務器發送FNM,M,zM£zp,化}eG"口s。e)當接收到FNM,M,、eeG^和s時,存檔服務器驗證s是(FNM,M,zM,{TJ)的有效簽名。客戶端產生數據的增量指紋客戶端執行如下過程以對數據的增量改變產生指紋。文件參考為^A^且文件密水鑰為z的文件^已經具有nSB個超塊。為了向jr的結尾添加一組新數據^^^".1,j2,...,nB,S卩,將i=nSB增加為i=r^+l,執行如下操作a)客戶端計算虛擬文件塊(VFB)1,Mb)客戶端計算、+1=.n~氣"'=+0)I+^M存檔服務器證明數據完整性為了確定存檔服務器是否以O比特誤差保持FNM的內容(除了最大允許錯誤概率2—4,客戶端質詢存檔服務器,并且存檔服務器如下響應。i)客戶端選擇重復因子1《V《1。ii)客戶端選擇K,k2)^Z/,并向存檔服務器發送FNM,chal=(1,V,k"k2)。iii)當接收到FNM和chal=(1,V,kpk2)時,存檔服務器首先計算0=^/^+1,并初始化變換指紋l二0eg,k=1,2,...,V,其中0是&的幺元。然后,存檔服務器重復如下原子證明過程獨立的V次iii-a.初始化封裝指紋g=OeGt,封裝超塊evj=O,變換超塊E」=0,u=1,2,,①=2*,j=+0,1,2,,nBiii-b.對于每個i=1,2,n,計算b-i.o=prf3(i,k,k》b-ii.f。*=S,表示向第o個盒子的封裝指紋加上Tib-iii.對于每個j=+0,l,2,...,rv計算e"+=M(i—modp,表示向第0個盒子的封裝超塊加上M(iii-c.對于每個v=1,2,.,O,計算c_i.av=prf4(v,k,k2)c-ii.Tt*二c-iii.對于每個j=+0,1,2,,riB,計算Ej+=avevjmodp,iii-d.計算A=^/5(ll丑/'),作為變換超塊的知識證明iv)存檔服務器向客戶端發送(Tk,Hk),k=1,2,...,U/。可選地,例如,客戶端選擇"Zp并且計算k2=prf\(kp〃secondrandomnessdefiningkey")。這樣"2可以不必傳輸。與先前提出的PDI方案中的"存檔服務器證明數據完整性"過程相比,在使用文件塊來進行計算的任何步驟或裝置中,同樣使用VFB來進行該計算,其中將VFB視為一真實塊。客戶端驗證數據完整性當接收到(Tk,Hk),k=1,2,...,時,客戶端獨立地重復如下原子驗證過程V次I)初始化w,=/e,封裝定位符w;=/e&,u=o,l,...,o-l=2*-lII)對于每個i=1,2,,n,計算o=prf3(i,k,k》和W/二prf2(i,FNM)。III)對于每個v=1,2,,O,計算av=prf4(v,k,k2)和K*=°'。IV)計算和驗證H,"《((TV+Z".Wj)。僅當一致性成立,輸出真。如果所有的原子驗證過程都輸出真,則客戶被數據完整性證明說服。與先前提出的PDI方案中的"客戶端驗證數據完整性"過程相比,不必進行任何修改。其他實施例可選方案1:對"存檔服務器證明數據完整性"的步驟iii-d和"客戶端驗證數據完整性"的步驟IV)稍作修改,獲得IPDI-2方案。這是支持公共可驗證性的方案。附加地,客戶端需要計算Ye=Ye和g2e=g/,作為其公鑰。對"存檔服務器證明數據完整性"的步驟iii-d的修改iii-dd.計算A=O丑,,作為變換超塊的知識證明。對"客戶端驗證數據完整性"的步驟IV)的修改IV')計算并驗證e(H^2):e(T;,iV^,)-e(Ww^)。IPDI-2方案支持公共可驗證性,這是因為"存檔服務器證明數據完整性"和"客戶端驗證數據完整性"的任何步驟均未涉及客戶端的密鑰,從而可以由第三方驗證器有效地執行。可選方案1.1:對IPDI-2的"客戶端驗證數據完整性"稍作修改,產生加速IPDI-2方案。對"客戶端驗證數據完整性"的步驟IV')的修改14IV-e)選擇k個隨機數;eZ^Z,k=1,2,,U/,計算并驗證采用加速IPDI-2方案,客戶端驗證數據完整性所需要執行的雙線性對計算個數得到減少。可選方案2:對"客戶端產生數據指紋"的步驟a)和"客戶端驗證數據完整性"的步驟IV)稍作修改,獲得IPDI-3方案。對"客戶端產生數據指紋"的步驟a)的修改aa)客戶端選擇標識符Zw厶Zp,并計算W^pr/^^FA^eg,2Gj,i=1,2,對"客戶端驗證數據完整性"的步驟IV)的修改IV")計算并驗證H^pr/5((TVWj)可選方案3:在上述可選方案2之后,對"存檔服務器證明數據完整性"的步驟iii-d和"客戶端驗證數據完整性"的步驟IV)稍作修改,獲得IPDI-4方案。這是支持公共可驗證性的另一方案。附加地,客戶端需要計算Ye=g2e/!^Pg2e二g/,作為其公鑰。對"存檔服務器證明數據完整性"的步驟iii-d的修改iii-ddd.計算^=[I,作為變換超塊的知識證明。=+0對"客戶端驗證數據完整性"的步驟IV)的修改IV"')計算并驗證e(H^2):e(U》e(Ww^)。PDI-3方案支持公共可驗證性,這是因為"存檔服務器證明數據完整性"和"客戶端驗證數據完整性"的任何步驟均未涉及客戶端的秘密密鑰,從而可以由第三方驗證器有改地執行c可選方案3.1:對IPDI-4的"客戶端驗證數據完整性"稍作修改,產生加速IPDI-4方案。對"客戶端驗證數據完整性"的步驟IV"')的修改IV-f)選擇k個隨機數^eZ;Z,k=1,2,...,u/,計算并驗證<formula>formulaseeoriginaldocumentpage15</formula>采用加速IPDI-4方案,客戶端驗證數據完整性所需要執行的雙線性對計算個數得到減少。可選方案4:對于上述所有方案,對"客戶端產生數據指紋"的系統參數和步驟以及"客戶端驗證數據完整性"的步驟稍作修改,產生支持采樣的方案。為了支持采樣,需要附加的系統參數prf6:U),ir—{l,2,...,n}。質詢chal=(1,V,KnK2)還附加地包括密鑰二Zp和正數A。然后,對于"客戶端產生數據指紋"和"客戶端驗證數據完整性"所有步驟,用i=prf6(K3,l),prf6(K3,2),...,prf6(K3,A)取代所有的i=1,2,...,n。因此,由于只涉及由i=prf6(K3,l),prf6(K3,2),...,prf6(K3,A)選擇的A個超塊,所以只驗證所采樣的超塊的數據完整性。所以,采用可選方案4,存檔服務器可以不使用所有超塊來產生數據完整性證明。而是,客戶端的質詢向存檔服務器通知將選擇哪些和多少個超塊來產生證明。可詵工作樽型通過引入參考文獻4(RFC4810)所建議的時間戳權威機構(TSA),可以用來自TSA的數字簽名時間戳替換質詢密鑰K,)二Z/,如圖4所示。例如,將該時間戳表示為T。使用標準哈希算法SHA-1,可以獲得k工=SHA-1(T,"1")和k2=SHA-1(T,"2")。采用這種替換,客戶端所質詢的是直到不早于由TSA發布的時間戳為止,數據是否被正確地保持。此時,除了原子驗證過程的最后步驟(該步驟必須利用存檔服務器的響應,即,(Tk,Hk))之外,存檔服務器和客戶端均可以很大程度地受益于預計算。此外,如圖5所示,在驗證器是第三方驗證器的情況下,也可以從TSA的時間戳推導出!^和k2。在能夠進行采樣的情況下,例如,可以從TSA的時間戳推導出!^為k3=SHA-1(T,"3")。可選方案5:虛擬文件塊(VFB)可以接受"真實"文件塊"[M(,—lh+J,j=1,2,...,riB作為附加輸入。也就是說,VFB可以如下計算得到硬件實現對本領域技術人員而言,顯而易見的是本發明也可以通過硬件結構實現。以下示出了一些示例,這些示例僅用于描述目的,而不應該視為對本發明有任何限制。客戶端圖6示出了用于實現本發明的客戶端1400的框圖。這里,客戶端1400用作產生數據指紋的設備。如圖6所示,客戶端1400包括虛擬文件塊產生單元1405,用于針對每一待產生的超塊,產生虛擬文件塊^(^h+.+。.;超塊產生單元1410,用于將數據劃分成N個塊Mi,i=1,2,...,N,并將每riB個塊與來自虛擬文件塊產生單元1405的虛擬文件塊M(wh+.+。.組合成超±央,以得到"=「^/1個超塊;以及指紋產生單元1420,用于從有限循環群G,=&〉中選擇nB+l個元素hj,j=+0,1,2,...,nB,并通過使用針對第k超塊的定位符Wk、所選的nB+l個元素hj和第一私鑰x,分別產生第k超塊的指紋Tk,k=1,2,...,n。客戶端1400也包16括存儲器1430,用于存儲由超塊產生單元1410和指紋產生單元1420使用或產生的信息,例如所產生的超塊、有限循環群、所產生的指紋、定位符和私鑰。但是,本領域技術人員必須清楚,存儲器1430可以是上述獨立的單元,或者可以是結合在超塊產生單元1410和/或指紋產生單元1420中的一個/多個集成單元。類似地,nB+l個元素hj可以是與第一私鑰x相對應的公鑰的一部分。此夕卜,nB+l個元素hj可以滿足關系^,rj是秘密密鑰。公鑰和/或秘密密鑰也可以存儲在存儲器1430中。存檔服務器圖7示出了用于實現本發明的存檔服務器1500的框圖。這里,存檔服務器1500用作證明數據完整性的設備。如圖7所示,存檔服務器1500包括接收單元1510,用于接收質詢,所述質詢至少包括第一隨機性定義密鑰^和第二隨機性定義密鑰k^封裝單元1520,用于構造①個盒子,所述數目①由所述質詢確定;用于以第一隨機性定義密鑰^定義的第一隨機方式,隨機地將n個指紋分配到所述①個盒子中,每個指紋放在一個盒子中;并用于基于所述n個指紋的分配,產生①個封裝超塊和相應的封裝指紋;變換單元1530,用于以由第二隨機性定義密鑰k2定義的第二隨機方式,隨機地變換所述①個封裝超塊和相應的封裝指紋,以產生變換超塊和變換指紋;以及知識證明產生單元1540,用于產生所述變換超塊的知識證明。存檔服務器1500還可以包括存儲器1550,用于存儲由接收單元1510、封裝單元1520、變換單元1530和知識證明產生單元1540使用或產生的信息。但是,本領域技術人員必須清楚,存儲器1550可以是上述獨立的單元,或者可以是結合在接收單元1510、封裝單元1520、變換單元1530和知識證明產生單元1540中的一個/多個集成單元。知識證明產生單元1540可以產生作為變換超塊本身的變換超塊的知識證明。可選地,知識證明產生單元1540可以基于公鑰和變換超塊而產生變換超塊的知識證明。質詢還可以包括超塊選擇密鑰對(k3,A),用于定義將由封裝單元1520選擇哪A個超塊和相應指紋來用于數據完整性證明,而不是所有n個超塊及相應指紋。質詢還可以包括重復因子V,將接收單元1510、封裝單元1520、變換單元1530和知識證明產生單元1540的操作重復V次,每次均產生變換超塊的一個知識證明,表示為變換超塊的第m個知識證明Hm,m=1,2,...,v。質詢可以包含來自時間戳權威機構(TSA)的數字簽名時間戳。此外,根據數字簽名時間戳產生第一和第二隨機性定義密鑰kJPk2以及超塊選擇密鑰k3中至少一個。此外,存檔服務器1500還可以包括發送單元1560,用于發送變換超塊的變換指紋和知識證明。驗證器(客戶端或第三方驗證器)圖8示出了用于實現本發明的驗證器1600的框圖。這里,驗證器1600用作驗證數據完整性的設備。對于本領域技術人員而言,顯而易見的是驗證器1600可以是客戶端1400本身或第三方驗證器。在驗證器1600是客戶端1400本身的前一種情況下,是指客戶端1400包括如圖6所示的用于產生數據指紋的子系統和如圖8所示的用于驗證數據的子系統。另一方面,在驗證器1600是第三方驗證器的后一種情況下,是指第三方驗證器所必需的只是如圖8所示的結構,而圖6所示的結構是可選的。如圖8所示,驗證器1600包括質詢產生和發送單元1610,用于產生并發送質詢,所述質詢至少包括第一隨機性定義密鑰^和第二隨機性定義密鑰!^2;接收單元1620,用于接收變換超塊的變換指紋和知識證明;定位符封裝單元1630,用于構造①個盒子,以所述第一隨機方式,隨機地將n個定位符Wk分配到①個盒子中,每個定位符放在一個盒子中,并基于所述n個定位符的分配,產生①個封裝定位符;推定知識證明產生單元1640,用于以所述第二隨機方式,隨機變換所述①個封裝定位符,以產生變換定位符,并根據所述變換指紋和所述變換定位符,產生所述變換超塊的推定知識證明;比較器1650,用于將所述變換超塊的推定知識證明與所接收的所述變換超塊的知識證明相比較;以及驗證單元1660,如果比較結果是肯定的,則驗證所述數據的數據完整性。驗證器1600也可以包括存儲器1670,用于存儲由質詢產生和發送單元1610、接收單元1620、定位符封裝單元1630、推定知識證明產生單元1640、比較器1650和驗證單元1660使用或產生的信息。但是,本領域技術人員必須清楚,存儲器1670可以是上述獨立的單元,或者可以是結合在質詢產生和發送單元1610、接收單元1620、定位符封裝單元1630、推定知識證明產生單元1640、比較器1650和驗證單元1660中的一個/多個集成單元。推定知識證明產生單元1640基于數據的標識符zm、變換指紋和變換定位符,產生變換超塊的推定知識證明。推定知識證明產生單元1640還基于第一和第二私鑰x和e產生所述變換超塊的推定知識證明。由質詢產生和發送單元1610產生的質詢還包括超塊選擇密鑰對(k3,A),用于定義將由定位符封裝單元1630選擇哪A個定位符來用于數據完整性證明,而不是所有n個定位符。由質詢產生和發送單元1610產生的質詢還包括重復因子V,將定位符封裝單元1630、推斷知識證明產生單元1640和比較器1650的操作重復V次,僅當所有比較結果均為肯定的時,驗證單元1660才驗證所述數據完整性。由質詢產生和發送單元1610產生的質詢包含來自時間戳權威機構(TSA)的數字簽名時間戳。由質詢產生和發送單元1610根據所述數字簽名時間戳來確定第一和第二隨機性定義密鑰k工和k2以及超塊選擇密鑰k3中至少一個。所提出的VFB的可選應用VFB的思想也可以應用于PDP方案。因此,可以如下構造能夠處理數據文件增量改變的IPDP(基于參考文獻7的第11頁)。原理上,PDP方案可以視為PDI方案在nB=1時的簡化情況。IPDP方案所做的基本上是對每一文件塊mi計算VFB^。如果考慮超塊包含一個文件塊,即nB=1的情況,那么這和IPDI方案的核心思想完全相同,在IPDI方案中對每一超塊(一組文件塊)計算VFB并將該VFB添加到該超塊。IPDP方案還對原始PDP方案稍作修改,以便在計算中考慮VFB。IPDP方案的優點在于這是目前為止能夠滿足上述要求(I)到(VII)的唯一基于RSA的方案。TagBlock(.):r,,m=.C.modAT,其中VFB^=pr/(w,z)。而且,h。GKQRN是公鑰的附加參數(例如N、e、g和PRF():{0,1}*—QRn,其中edelmod小(N))。GenProof():r=r...r上=廣…..尸i^(w'r■modiVV、lc'm、、lc。p^if((、^+…+^.C、+…+,"modA0,其中h。s:VGQRN,且H(.):{0,1}*—Z例如是SHA-1哈希函數。參數c、aj、ij,j=1,2,...,c、gs和h。s由質詢確定。CheckProof():該部分保持不變。為了更加清楚且系統地理解本發明的這些細節,將在先中國發明專利申請CN200810165864.3的全部公開內容一并在此作為參考,從而相當于在本說明書中描述了所有這些已公開的內容,而不再重復。如果在理解本發明的過程中遇到一些疑問或困惑,可以參考CN200810165864.3,以解決甚至解釋這些疑問和困惑。以上描述僅給出了本發明的優選實施例,而并不是要以任何方式限制本發明。因此,在本發明精神和原理內進行的任何修改、替換、改進等應該由本發明范圍所涵蓋。19權利要求一種產生數據指紋的方法,包括步驟將數據劃分成N個塊Mi,i=1,2,...,N;將每nB個塊與虛擬文件塊組合成超塊,以得到個超塊;從有限循環群中選擇nB+1個元素hj,j=+0,1,2,...,nB;通過使用針對第k超塊的定位符Wk、所選的nB+1個元素hj和第一私鑰x,分別產生第k超塊的指紋Tk,k=1,2,...,n。F2008101708040C0000011.tif,F2008101708040C0000012.tif,F2008101708040C0000013.tif2.根據權利要求1所述的產生數據指紋的方法,其中所述nB+l個元素hj是與第一私鑰x相對應的公鑰的一部分。3.根據權利要求1所述的產生數據指紋的方法,其中所述ne+l個元素hj滿足關系,rj是秘密密鑰。4.根據權利要求1所述的產生數據指紋的方法,其中根據<formula>formulaseeoriginaldocumentpage2</formula>產生第k超塊的指紋Tk,zM是所述數據的標識符。5.根據權利要求4所述的產生數據指紋的方法,其中第k超塊的定位符Wk是至少以k為輸入的哈希值。6.根據權利要求1所述的產生數據指紋的方法,其中根據<formula>formulaseeoriginaldocumentpage2</formula>產生第k超塊的指紋Tk。7.根據權利要求6所述的產生數據指紋的方法,其中第k超塊的定位符Wk是至少以k和所述數據的標識符zM為輸入的哈希值。8.根據權利要求1所述的產生數據指紋的方法,當新數據要添加到現有數據的結尾時,包括步驟將新數據劃分成NNEW個塊MiNEW,i=N+l,N+2,,N+NNEW;將每nB個塊與虛擬文件塊^(4,水超塊;。,組合成超塊,以得到n^w=通過使用針對第k超塊的定位符Wk、所選的nB+l個元素hj和第一私鑰x,分別產生第k超塊的指紋Tk,k=n+l,n+2,,n+nNEW。9.根據權利要求1或8所述的產生數據指紋的方法,其中虛擬文件塊^(wh+.+。.如下產生其中,zM是數據的標識符,FNM是數據的文件標識符,prfVFB()表示偽隨機函數。10.根據權利要求1或8所述的產生數據指紋的方法,其中虛擬文件塊A、-,h+.+。,如下產生<formula>formulaseeoriginaldocumentpage2</formula>其中,ZM是數據的標識符,FNM是數據的文件標識符,(M(wh+J是要與虛擬文件塊^(Mhv+。'一起組合成超塊的nB個塊的數據集,prfVFB()表示偽隨機函數。11.一種用于產生數據指紋的設備,包括虛擬文件塊產生單元,用于針對每個待產生的超塊,產生虛擬文件塊^(w^+^;超塊產生單元,用于將數據劃分成N個塊Mi,i=1,2,...,N,并將每nB個塊與來自虛擬文件塊產生單元的虛擬文件塊^(wh+.+。.組合成超塊,以得到"=「^/"5"|個超塊;以及指紋產生單元,用于從有限循環群G,=〈ff,〉中選擇nB+l個元素hj,j=+0,1,2,...,nB,并通過使用針對第k超塊的定位符Wk、所選的nB+l個元素hj和第一私鑰x,分別產生第k超塊的指紋Tk,k二1,2,...,n。12.根據權利要求11所述的產生數據指紋的設備,其中所述nB+l個元素hj是與第一私鑰x相對應的公鑰的一部分。13.根據權利要求11所述的產生數據指紋的設備,其中所述nB+l個元素hj滿足關系,rj是秘密密鑰。14.根據權利要求11所述的產生數據指紋的設備,其中指紋產生單元根據<formula>formulaseeoriginaldocumentpage3</formula>產生第k超塊的指紋Tk,zM是所述數據的標識符。15.根據權利要求14所述的產生數據指紋的設備,其中第k超塊的定位符Wk是至少以k為輸入的哈希值。16.根據權利要求11所述的產生數據指紋的設備,其中指紋產生單元根據<formula>formulaseeoriginaldocumentpage3</formula>產生第k超塊的指紋Tk。17.根據權利要求16所述的產生數據指紋的設備,第k超塊的定位符Wk是至少以k和所述數據的標識符zM為輸入的哈希值。18.根據權利要求11所述的產生數據指紋的設備,當新數據要添加到現有數據的結尾時,虛擬文件塊產生單元針對每個待產生的超塊,產生虛擬文件塊^(w).",+o,;超塊產生單元將新數據劃分成NNEW個塊MiNEW,i=N+l,N+2,...,N+NNEW,并將每nB個塊與虛擬文件塊M(w^+,+。,組合成超i央,以得到n<formula>formulaseeoriginaldocumentpage3</formula>超塊;以及指紋產生單元通過使用針對第k超塊的定位符Wp所選的nB+l個元素hj和第一私鑰x,分別產生第k超塊的指紋Tk,k=n+l,n+2,...,n+nNEW。19.根據權利要求11或18所述的產生數據指紋的設備,其中指紋產生單元如下產生虛擬文件塊MwW:<formula>formulaseeoriginaldocumentpage3</formula>其中,zM是數據的標識符,FNM是數據的文件標識符,prfVFB()表示偽隨機函數。20.根據權利要求11或18所述的產生數據指紋的設備,其中指紋產生單元如下產生虛擬文件塊^(w^+w:=《(MM,授m,{_—}),j=1,2…,nB其中,ZM是數據的標識符,FNM是數據的文件標識符,(M(w)^+J是要與虛擬文件塊:^V,h+.+。.一起組合成超塊的%個塊的數據集,PrfVFB()表示偽隨機函數。全文摘要本發明提出了一種增量可證數據完整性(IPDI)驗證方法,其中首先在客戶端側產生數據的數字指紋,將指紋與數據一并發送至存檔服務器;當需要時,客戶端或第三方驗證器向該存檔服務器發送“質詢”,以確定數據的完整性,該存檔服務器通過使用接收到的指紋來證明數據的完整性;最后,客戶端或第三方驗證器根據來自存檔服務器的響應該“質詢”的輸出,驗證數據的完整性。另外,該IPDI方案安全地實現了向已經產生指紋且被外包的數據文件添加增量數據。文檔編號H04L9/08GK101729250SQ20081017080公開日2010年6月9日申請日期2008年10月21日優先權日2008年10月21日發明者曾珂,雷浩申請人:日電(中國)有限公司