亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于內(nèi)容尋址中的附加散列函數(shù)的制作方法

文檔序號(hào):6481700閱讀:147來源:國(guó)知局
專利名稱:基于內(nèi)容尋址中的附加散列函數(shù)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及使用計(jì)算機(jī)進(jìn)行的信息存儲(chǔ)和檢索。更具體地說,本發(fā)明涉及使用散列函數(shù)和隨機(jī)數(shù)以標(biāo)識(shí)和驗(yàn)證計(jì)算機(jī)文件的內(nèi)容。
背景技術(shù)
現(xiàn)有技術(shù)包括數(shù)字信息的內(nèi)容可尋址的存儲(chǔ)、它的檢索的概念和散列函數(shù)、消息摘要及描述符文件的使用,如在國(guó)際公布WO99/38093中所述。國(guó)際公布WO 99/38092描述用于存儲(chǔ)和訪問內(nèi)容可尋址的信息的特定技術(shù),而國(guó)際公布WO 01/18633描述用于加密內(nèi)容可尋址的信息的技術(shù)。這些公布全部通過引用結(jié)合。
如現(xiàn)有技術(shù)所討論的,顯然,內(nèi)容可尋址的技術(shù)對(duì)于以保證存儲(chǔ)內(nèi)容的完整性的方式存儲(chǔ)和訪問文檔可以非常有用。如現(xiàn)有技術(shù)所討論的,一種技術(shù)是使用消息摘要(例如“MD5”)來唯一地表示特定文檔。此外,單個(gè)MD5可以唯一地表示許多文檔(例如,使用描述符文件),并且單獨(dú)的文檔可以包含許多不同的MD5,它們各引用單個(gè)文檔或者文檔集。
有兩個(gè)與散列函數(shù)關(guān)聯(lián)的風(fēng)險(xiǎn)需要注意統(tǒng)計(jì)散列函數(shù)碰撞和散列攻擊。在純巧合和沒有任何惡意下,當(dāng)實(shí)現(xiàn)內(nèi)容可尋址的存儲(chǔ)的系統(tǒng)會(huì)包含兩個(gè)內(nèi)容不同但有相同的散列值即相同的“內(nèi)容地址”的文件時(shí),發(fā)生散列碰撞。在幾乎任何可想到的情況下,此風(fēng)險(xiǎn)將在很長(zhǎng)時(shí)間保持可忽略-即使由于銷售目的,消除或者大大減少它會(huì)有相當(dāng)大的價(jià)值。
散列攻擊是一個(gè)全然不同的命題,并且也被認(rèn)為是“第二原象(pre-image)發(fā)現(xiàn)”。當(dāng)不擇手段的團(tuán)體惡意生成計(jì)算機(jī)文件的重大修改版本(舉例)時(shí),已經(jīng)安排此版本來產(chǎn)生和原始文件的散列值一樣的散列值(或者“內(nèi)容地址”),發(fā)生散列攻擊。散列攻擊也許只是將隨機(jī)的位模式插入到文件中或者可能改變合同文檔的含義。任何情況下,散列攻擊意味著散列函數(shù)的“破壞”和對(duì)被認(rèn)為受適當(dāng)保護(hù)的數(shù)字信息的毀壞。
在任何情況下,系統(tǒng)本身的可靠性危如累卵在一些成功的和廣泛公布的散列攻擊后(即使在理論條件下,而沒有直接的現(xiàn)實(shí)世界適用性),系統(tǒng)在公眾的意識(shí)中變得不可信。而且,一旦只是證明使用中的散列函數(shù)可能被破壞,系統(tǒng)也將是不可信的。隨著計(jì)算資源繼續(xù)發(fā)展,這樣的散列攻擊可能會(huì)在更長(zhǎng)的時(shí)期上成功。當(dāng)更大的散列函數(shù)尺寸被選擇并接連受到破壞時(shí),導(dǎo)致兼容性問題和信任鏈破壞。對(duì)于應(yīng)該是這樣系統(tǒng)的正常應(yīng)用的長(zhǎng)期存儲(chǔ)服務(wù),該結(jié)果不是有吸引力的前景。
只是使用具有巨大尺寸的散列函數(shù)不是始終實(shí)用的。一方面,散列函數(shù)應(yīng)該足夠大以保證在統(tǒng)計(jì)上排除散列函數(shù)碰撞(對(duì)于兩個(gè)不同的輸入有同一散列值)。另一方面,它應(yīng)該足夠小以保持在它的目標(biāo)應(yīng)用中作為引用是實(shí)用的,并且在需要用于計(jì)算散列值的處理器時(shí)間方面是可以負(fù)擔(dān)的。
不幸地-即使系統(tǒng)一般對(duì)于特定尺寸的散列函數(shù)是可用的-改變到不同的散列尺寸是較大的操作,其帶有許多牽連效率的損失、以及應(yīng)用轉(zhuǎn)換成本和向后兼容開銷。例如,在內(nèi)容可尋址的存儲(chǔ)系統(tǒng)中用不同的散列函數(shù)替換MD5算法并且為每一個(gè)計(jì)算機(jī)文件生成新的消息摘要出現(xiàn)問題。由于這些128位的消息摘要(各自表示文件的唯一地址)可能遍布于其他文檔和全世界的計(jì)算機(jī)系統(tǒng)中,可以證明幾乎不可能用新計(jì)算的消息摘替換這些128位的消息摘要。此外,如果轉(zhuǎn)換發(fā)生在先前的散列函數(shù)已被普遍接受為“破壞的”的時(shí)間之后,結(jié)果可以是重大的且根本無法恢復(fù)的“信任裂縫”,因?yàn)楝F(xiàn)有的內(nèi)容地址在轉(zhuǎn)換時(shí)將不是勿庸置疑的。
從而需要機(jī)制和技術(shù)來補(bǔ)救上面的問題。

發(fā)明內(nèi)容
為了實(shí)現(xiàn)前述內(nèi)容,并依照本發(fā)明的目的,將描述一種技術(shù)來幫助消除惡意散列攻擊和提供將檢測(cè)散列函數(shù)碰撞的保證。
總的想法是將內(nèi)容尋址從內(nèi)容驗(yàn)證中分離。換言之,用于內(nèi)容尋址的散列函數(shù)不同于用于內(nèi)容驗(yàn)證的散列函數(shù)。在變體中,使用隨機(jī)數(shù)發(fā)生器來代替散列函數(shù)用于內(nèi)容尋址。該技術(shù)允許可以隨時(shí)間以透明的方式改變并加強(qiáng)內(nèi)容驗(yàn)證散列函數(shù),并且關(guān)于使用內(nèi)容地址的任何應(yīng)用保持充分向后兼容,使用內(nèi)容尋址散列函數(shù)來計(jì)算內(nèi)容地址。從而,可以檢測(cè)散列攻擊并使之轉(zhuǎn)向,這取決于驗(yàn)證散列函數(shù)而不是內(nèi)容尋址散列函數(shù)的滿強(qiáng)度。作為結(jié)果,將預(yù)期較少的值得提及的惡意攻擊,因?yàn)閷⒅浪鼈儙缀鯖]有機(jī)會(huì)成功。
該方法呈現(xiàn)出優(yōu)于缺省情況即只是升級(jí)整個(gè)系統(tǒng)上的單個(gè)內(nèi)容尋址散列函數(shù)的顯著優(yōu)點(diǎn),該缺省情況會(huì)要求在大多數(shù)應(yīng)用中作較大的轉(zhuǎn)換并且會(huì)危及現(xiàn)有的內(nèi)容尋址的數(shù)據(jù)集合的完整性,從而大大減少了該技術(shù)對(duì)于長(zhǎng)期檔案功能的吸引力。
使用用于驗(yàn)證的第二散列函數(shù)允許檢測(cè)涉及尋址散列函數(shù)的碰撞或者對(duì)尋址散列函數(shù)的散列攻擊。雖然在兩個(gè)使用128位的尋址散列函數(shù)的文件之間發(fā)生碰撞在統(tǒng)計(jì)上是不可能的;公眾也許仍需要一些安慰即可以檢測(cè)任何這樣的碰撞。即使碰撞會(huì)發(fā)生,用于這兩個(gè)文件的驗(yàn)證散列值也會(huì)不同,從而標(biāo)出問題即對(duì)于兩個(gè)不同的文件,尋址散列函數(shù)產(chǎn)生了相同的值。類似地,如果不擇手段的團(tuán)體攻擊128位的散列函數(shù)并且設(shè)計(jì)出使得兩個(gè)文件給出相同散列值的方法,也會(huì)通過驗(yàn)證散列值的不同檢測(cè)該攻擊。從而,因?yàn)闀?huì)檢測(cè)任何這樣的攻擊幾乎是確定的,所以遠(yuǎn)不可能有人會(huì)花時(shí)間和資源來進(jìn)行這樣的攻擊。
附圖簡(jiǎn)短說明通過參考結(jié)合附圖進(jìn)行的以下描述,可以最好地理解本發(fā)明連同其更多的優(yōu)點(diǎn),圖中

圖1說明用于為文檔創(chuàng)建基于散列的唯一標(biāo)識(shí)符的技術(shù)。
圖2說明包含使用不同散列函數(shù)計(jì)算的任何數(shù)量的文件的散列值的表。
圖3是流程圖,描述用于將文件添加到數(shù)據(jù)庫(kù)的一個(gè)實(shí)施例。
圖4是流程圖,描述從數(shù)據(jù)庫(kù)中檢索文件的一個(gè)實(shí)施例。
圖5是流程圖,描述使用本發(fā)明實(shí)施例實(shí)現(xiàn)的用于校驗(yàn)數(shù)據(jù)庫(kù)中文件的完整性的技術(shù)。
圖6說明多層數(shù)據(jù)庫(kù),其中保存計(jì)算機(jī)文件的數(shù)據(jù)庫(kù)分布在眾多的服務(wù)器計(jì)算機(jī)中。
圖7是流程圖,描述將文件添加到多層數(shù)據(jù)庫(kù)的一種技術(shù)。
圖8是流程圖,描述用于將散列權(quán)限功能添加到現(xiàn)有的內(nèi)容可尋址的存儲(chǔ)系統(tǒng)的一種技術(shù)。
圖9是流程圖,描述用于升級(jí)驗(yàn)證散列函數(shù)的技術(shù)。
圖10是流程圖,描述可以用來為散列權(quán)限表提供安全的附加技術(shù)。
圖11說明具有附加安全措施的散列權(quán)限表的一個(gè)實(shí)施例。
圖12說明包含任意數(shù)量文件的驗(yàn)證散列值和對(duì)應(yīng)的文件的隨機(jī)數(shù)的表。
圖13是流程圖,描述用于將文件添加到數(shù)據(jù)庫(kù)的技術(shù),其中系統(tǒng)使用隨機(jī)數(shù)發(fā)生器作為函數(shù)來生成每個(gè)文件的唯一地址。
圖14是流程圖,描述從數(shù)據(jù)庫(kù)中檢索文件的技術(shù),其中隨機(jī)數(shù)用來標(biāo)識(shí)文件。
圖15說明標(biāo)識(shí)符權(quán)限表的一個(gè)實(shí)施例,其中附加的安全技術(shù)也是可應(yīng)用的。
圖16A和16B說明適用于實(shí)現(xiàn)本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)。
發(fā)明的詳細(xì)描述考慮到現(xiàn)有技術(shù)的特性和由于繼續(xù)使用較老的、潛在不太安全的散列函數(shù)(例如,128位的散列函數(shù))引起的潛在問題(無論真實(shí)的或者公眾意識(shí)里察覺到的),要求得到改進(jìn)。認(rèn)識(shí)到現(xiàn)有技術(shù)的散列函數(shù)服務(wù)于兩個(gè)目的。散列函數(shù)產(chǎn)生的散列值不僅為任何給定的計(jì)算機(jī)文件提供近乎唯一的基于內(nèi)容的地址,而且還提供唯一的值可以用來驗(yàn)證文件內(nèi)容。散列函數(shù)提供單個(gè)散列值用于尋址和驗(yàn)證內(nèi)容。然后認(rèn)識(shí)到使用128位的散列函數(shù)可得的地址空間的尺寸實(shí)際上不是問題。128位的散列函數(shù)(舉例),提供有2128個(gè)地址的地址空間;這個(gè)數(shù)量的唯一地址實(shí)際上在可預(yù)見的未來不會(huì)被用完,也不會(huì)導(dǎo)致碰撞。
但是相同的散列函數(shù)也用于提供文件內(nèi)容的驗(yàn)證當(dāng)使用文件的散列值作為地址檢索文件時(shí),散列值被重新計(jì)算并與原始值比較。由于要求加強(qiáng)所使用的散列函數(shù),從而認(rèn)識(shí)到第二驗(yàn)證散列函數(shù)可以用來提供文件內(nèi)容的驗(yàn)證,而保留原始的尋址散列函數(shù)來提供唯一的地址。保留原始的尋址散列函數(shù)有許多優(yōu)點(diǎn),包括這樣的好處即可以繼續(xù)使用用于尋址文件的唯一值。由于可以將該唯一值分布到許多位置或者插入到其他文檔中以便引用所涉及的文件,所以重要的是該唯一地址沒有改變。并且通過允許第二(可能更強(qiáng)的)驗(yàn)證散列函數(shù)用于驗(yàn)證文件的內(nèi)容,提供更大的保證即這樣的系統(tǒng)不會(huì)遭受散列攻擊。這樣的系統(tǒng)允許隨時(shí)間動(dòng)態(tài)地升級(jí)驗(yàn)證散列函數(shù),并不丟失給定文件的穩(wěn)定的、唯一的內(nèi)容地址的好處。
內(nèi)容可尋址的存儲(chǔ)為了幫助理解接下來的討論,簡(jiǎn)要回顧內(nèi)容可尋址的存儲(chǔ)將是有用的。圖1說明為文檔102創(chuàng)建基于散列的唯一標(biāo)識(shí)符122的技術(shù)。接下來的描述使用經(jīng)過表示和管理的簡(jiǎn)單文檔的例子;然而,文檔102可以是以數(shù)字形式表示的任何類型的信息。例如,本發(fā)明可適用于任何電子表示的信息,例如計(jì)算機(jī)文件、文件組、文件標(biāo)識(shí)符組或者其他數(shù)據(jù)集合或者數(shù)據(jù)庫(kù)信息。這樣的其他數(shù)據(jù)集合包括數(shù)字音頻或者視頻流的幀或者剪輯、數(shù)字照片、掃描的紙文檔、聲音消息、CAD/CAM設(shè)計(jì)圖、MRI或者X射線數(shù)據(jù)、消息記錄或者文件的流、系統(tǒng)的狀態(tài)日志或者審查的錄入條目、電子郵件檔案、校驗(yàn)圖像等。數(shù)據(jù)庫(kù)信息包括來自關(guān)系網(wǎng)絡(luò)、分級(jí)網(wǎng)絡(luò)或者其他數(shù)據(jù)庫(kù)的記錄。一般而言,數(shù)字信息可以包括任何二進(jìn)制(或者n進(jìn)制)的數(shù)字串。在一個(gè)實(shí)施例中,將數(shù)字信息處理為二進(jìn)制大對(duì)象或者BLOB。接下來的描述使用計(jì)算機(jī)文件作為例子,雖然本發(fā)明并不局限于此。術(shù)語(yǔ)“計(jì)算機(jī)文件”在此用來包含任何電子表示的前述類型的信息。
算法104用來處理文檔102以產(chǎn)生文檔的唯一標(biāo)識(shí)符106。最好,算法104是產(chǎn)生散列值106的散列函數(shù)。在該例中,散列函數(shù)用來產(chǎn)生散列值或者消息摘要(“MD”)106。眾所周知的散列函數(shù)包括MD2、MD5、SHA-1、SHA-256、RIPEMD-160等。
如本領(lǐng)域中已知的,在文檔上使用散列函數(shù)產(chǎn)生唯一的散列值或者消息摘要,它是文檔的“數(shù)字指紋”并且唯一地標(biāo)識(shí)文檔。術(shù)語(yǔ)消息摘要或者“MD”經(jīng)常用來指散列函數(shù)創(chuàng)建的散列值,并且用于包含可能用于創(chuàng)建唯一的、基于內(nèi)容的文檔標(biāo)識(shí)符的任何類型的散列函數(shù)。該例假設(shè)MD5算法用來創(chuàng)建MD 106。
為了本發(fā)明的目的可以照原樣使用消息摘要106或者可以將之嵌入到描述符文件108中。描述符文件108包括消息摘要106和多種元數(shù)據(jù)110中的任何一種,該元數(shù)據(jù)進(jìn)一步描述、標(biāo)識(shí)或者解釋文檔102的信息或者任何其他信息。在上面引用的國(guó)際申請(qǐng)中描述關(guān)于描述符文件和元數(shù)據(jù)類型的說明書。在一個(gè)實(shí)施例中,元數(shù)據(jù)110包括描述性的文件名、文件尺寸、訪問權(quán)、所有者、保留周期等。也可以包括更高級(jí)的信息,如主題、標(biāo)題、作者、日期。如果需要用于特定應(yīng)用的話,描述符文件用作此類信息的占位符是有用的,并且對(duì)于保存文件組的消息摘要也是有用的,如果情形那樣要求的話。消息摘要可以引用描述符文件或者可以直接標(biāo)識(shí)單獨(dú)的文檔。
一旦形成描述符文件,將散列函數(shù)114應(yīng)用于描述符文件來產(chǎn)生另一個(gè)消息摘要116。使用現(xiàn)有技術(shù)中示出的技術(shù),消息摘要116現(xiàn)在可以用于唯一地定位和標(biāo)識(shí)文檔102。例如,描述符文件108和文檔102可以存儲(chǔ)在計(jì)算機(jī)的規(guī)則文件系統(tǒng)中,它們的文件名分別是由MD 116和MD 106表示的位串?;蛘撸總€(gè)文件可以存儲(chǔ)在數(shù)據(jù)庫(kù)中,其中文件的關(guān)鍵字是每個(gè)文件各自的消息摘要。一般而言,文件108和文檔102可以存儲(chǔ)在任何內(nèi)容可尋址的存儲(chǔ)系統(tǒng)中,其中,只使用它們的消息摘要可以對(duì)它們進(jìn)行定位和檢索。
MD5消息摘要(或者其他散列值)可以轉(zhuǎn)換為人易于讀取和記錄的形式。因?yàn)閬碜訫D5散列函數(shù)的結(jié)果消息摘要是128位的數(shù)字,所以要求以更易管理的形式將該數(shù)字編碼以供人使用。可以以多種形式中的任何一種對(duì)結(jié)果數(shù)字進(jìn)行編碼,包括10進(jìn)制、16進(jìn)制或者二進(jìn)制。最好,將數(shù)字轉(zhuǎn)換為映射到基本ASCII字符集中的26個(gè)字母和數(shù)字字符集的以32為基數(shù)的數(shù)字。該映射被稱作“ASCII鎧裝Armoring”,并且通常用來在有限的字符集中翻譯二進(jìn)制的信息以在要求內(nèi)容限制于字符數(shù)字編碼的協(xié)議上傳輸。在結(jié)果串中的預(yù)定位置包括標(biāo)志字符,使得串的總長(zhǎng)度變成27個(gè)字符。該標(biāo)志字符也可以提供如使用的算法,文件類型等信息。
結(jié)果是27個(gè)字符的數(shù)字和大寫字母的ASCII串。這樣的格式提供緊湊的形式,可以更容易地被人寫下來和/或被計(jì)算機(jī)處理,并且這樣的格式還是容易被許多軟件程序適應(yīng)的形式。另外,消息摘要的這種特定表示有著更容易通過數(shù)據(jù)查詢來檢索、編碼成軟件應(yīng)用程序文件請(qǐng)求、通過內(nèi)容或者資產(chǎn)管理系統(tǒng)引用、在對(duì)象瀏覽器中被請(qǐng)求、從一個(gè)文檔電子拷貝和粘貼到另一個(gè)文檔、通過電子郵件發(fā)送等的優(yōu)點(diǎn)。
在該例中,MD116已被轉(zhuǎn)換成27個(gè)字符的串120。在特定實(shí)施例中,串120與因特網(wǎng)的名稱118連接成串來產(chǎn)生URL 122。名稱118可通過DNS解析并且包含域名“trustclip.com”。在此特定實(shí)施例中,“trustclip.com”用來定位連接到內(nèi)容可尋址的存儲(chǔ)設(shè)備的Web服務(wù)器。運(yùn)行域“trustclip.com”的服務(wù)供應(yīng)商使用消息摘要作為唯一的標(biāo)識(shí)符來存儲(chǔ)這樣的文檔,并且當(dāng)提供URL(例如URL 122)時(shí)使這樣的文檔是用戶可得的。在這種方式下,當(dāng)給了用戶URL 122時(shí)或者另外使用它作為鏈接時(shí),Web站點(diǎn)“trustclip.com”取得MD 120、定位文檔并將它返回給用戶。如果MD 120標(biāo)識(shí)包括多個(gè)文檔的消息摘要的描述符文件,那么所有的這些文件都被返回。消息摘要(以116、120或者其他形式)可以通過許多方式用于定位原始文檔。如前面提到的,消息摘要可以用作文檔的文件名、數(shù)據(jù)庫(kù)中的關(guān)鍵字,嵌入U(xiǎn)RL或者URI(或者其他文件定位符,例如IP地址或者路徑名稱)中,或者可以只是照原樣使用。
在另一實(shí)施例中,將消息摘要給服務(wù)供應(yīng)商,然后他們使用消息摘要來搜索和定位由消息摘要唯一標(biāo)識(shí)的文檔。例如,服務(wù)供應(yīng)商可以搜索他們自己的內(nèi)容可尋址的存儲(chǔ)器,或者可以在其他實(shí)體的存儲(chǔ)器中搜索文檔。還可以在整個(gè)企業(yè)網(wǎng)、企業(yè)內(nèi)部互聯(lián)網(wǎng)、因特網(wǎng)上或者通過其他方式廣播消息摘要,目的是找到消息摘要唯一標(biāo)識(shí)的文檔。在上面引用的國(guó)際申請(qǐng)中描述了描述符文件的實(shí)施例驗(yàn)證散列函數(shù)的使用圖2說明包含使用不同散列函數(shù)計(jì)算的任意數(shù)量文件的散列值的表200。在一個(gè)實(shí)施例中表200被稱為“散列權(quán)限authority”表。對(duì)于數(shù)據(jù)庫(kù)中包含的特定文件,表200可以保存使用不同散列函數(shù)計(jì)算的任意數(shù)量的那個(gè)文件的不同散列值。例如,表200包括保存使用第一散列函數(shù)(例如MD5算法)計(jì)算的地址散列值(AH)的列204,和保存使用不同散列函數(shù)計(jì)算的驗(yàn)證散列值(VH)的列208。每行對(duì)應(yīng)于一個(gè)給定文件。例如,行212對(duì)應(yīng)于文件A,并且包含使用MD5算法(舉例)計(jì)算的文件A的AH。使用256位或者更強(qiáng)的散列函數(shù)來計(jì)算文件A的VH。行212示出,對(duì)于特定文件A,它的AH與它的VH關(guān)聯(lián)存儲(chǔ),從而通過引用特定文件的AH,就可以獲得它的VH,反過來也是。特定文件的VH可以是具有和用于計(jì)算文件的AH的散列函數(shù)一樣強(qiáng)度(或者更少?gòu)?qiáng)度)的散列函數(shù)的結(jié)果;可是,優(yōu)選的是用于計(jì)算VH的散列函數(shù)更強(qiáng)。同樣,可以有眾多諸如列208的列,使得對(duì)于給定文件,它具有眾多的使用不同驗(yàn)證散列函數(shù)計(jì)算的VH值。
根據(jù)存儲(chǔ)文件的數(shù)量,表200可以有任何數(shù)量的條目(或者記錄)。表200可以與存儲(chǔ)在單個(gè)計(jì)算機(jī)上、計(jì)算機(jī)網(wǎng)絡(luò)上、分布式計(jì)算機(jī)網(wǎng)絡(luò)上或者以任何適用于存儲(chǔ)文件或其他數(shù)字信息的數(shù)據(jù)庫(kù)中的文件關(guān)聯(lián)。此外,使用散列函數(shù)、時(shí)間標(biāo)記和或數(shù)字簽名,表200可以使其條目受到保護(hù),本領(lǐng)域內(nèi)的那些技術(shù)人員將理解這一點(diǎn)。此外,使用任何其他適合的數(shù)據(jù)結(jié)構(gòu)而不一定是表,特定文件的AH和VH可以相互關(guān)聯(lián)。
圖3是流程圖,描述將文件添加到數(shù)據(jù)庫(kù)的一個(gè)實(shí)施例。在該簡(jiǎn)單的例子中,要求使用本發(fā)明的技術(shù)將計(jì)算機(jī)文件或者其他類型的數(shù)字信息添加到文件的數(shù)據(jù)庫(kù)中。該數(shù)據(jù)庫(kù)最好使用基于內(nèi)容尋址的方案存儲(chǔ)文件,其中文件的散列值作為它的唯一地址使用。兩個(gè)不同的散列函數(shù)與數(shù)據(jù)庫(kù)關(guān)聯(lián)。尋址散列函數(shù)生成用來尋址每個(gè)文件的地址散列值(AH),而驗(yàn)證散列函數(shù)用于生成用來驗(yàn)證特定文件的內(nèi)容的驗(yàn)證散列值(VH)。最好驗(yàn)證散列函數(shù)比尋址散列函數(shù)強(qiáng);較強(qiáng)的散列函數(shù)的例子是SHA-256和RIPEMD-256。
在一個(gè)實(shí)施例中,驗(yàn)證散列函數(shù)是與尋址散列函數(shù)相同的散列函數(shù),但是它使用標(biāo)志、參數(shù)、額外輸入、變體或者其他修改,使得它產(chǎn)生不同于尋址散列函數(shù)產(chǎn)生的散列值。例如,可以通過包括元數(shù)據(jù)例如文件名、尺寸、所有者、創(chuàng)建日期或者重復(fù)例如文件中最后4k的塊來對(duì)文件作微小的修改。
存在如表200的數(shù)據(jù)結(jié)構(gòu)并且其包含所有存在于數(shù)據(jù)庫(kù)中的文件的條目和它們對(duì)應(yīng)的散列值,盡管這樣的表可以首先是空的,如果還沒有添加文件的話。
在220中,從任何適合的源獲得待添加的文件。在224中,將尋址散列函數(shù)應(yīng)用于文件,目的是生成文件的AH來確定它的唯一地址。在228中,驗(yàn)證散列函數(shù)用于生成文件的VH。步驟232校驗(yàn)待添加的文件是否已經(jīng)存在于數(shù)據(jù)庫(kù)中。校驗(yàn)這樣的文件可以以不同的方式執(zhí)行。在一個(gè)實(shí)施例中,使用文件的AH作為標(biāo)識(shí)符或者索引搜索整個(gè)數(shù)據(jù)庫(kù)找尋文件。例如,可以用文件的AH作為文件名來存儲(chǔ)文件;然后可以掃描整個(gè)文件系統(tǒng)來查看AH是否存在。在另一實(shí)施例中,可以使用AH到表200中查找以確定文件是否已經(jīng)存在。
如果確定文件沒有存在于數(shù)據(jù)庫(kù)中(通過沒有找到與文件AH的任何匹配),然后在236,使用文件的AH作為文件的地址將文件存儲(chǔ)于數(shù)據(jù)庫(kù)中。例如,文件的文件名可以是它的AH。接下來在240中,將該特定文件的AH-VH對(duì)添加到表200中,使得新添加的文件的條目現(xiàn)在存在于表200中。AH作為數(shù)據(jù)庫(kù)中文件的唯一地址被返回給請(qǐng)求者。然后過程結(jié)束。
回到步驟232,如果確定文件已經(jīng)存在于數(shù)據(jù)庫(kù)中(通過找到文件AH的匹配),然后確定已經(jīng)存在于數(shù)據(jù)庫(kù)中的文件事實(shí)上是否和要求添加的文件是相同的文件。在244中,為數(shù)據(jù)庫(kù)中駐留在地址AH的文件計(jì)算VH。在248中,將駐留在數(shù)據(jù)庫(kù)中的文件的VH與待添加的文件(來自步驟228)的VH比較。在幾乎所有情況中,這兩個(gè)VH是相同的,這指出待添加的文件確實(shí)已經(jīng)存在于數(shù)據(jù)庫(kù)中。如果是這樣,AH作為數(shù)據(jù)庫(kù)中文件的唯一地址返回給請(qǐng)求者并且過程結(jié)束。另一方面,如果兩個(gè)文件的VH不同,這指出問題。
在252中,系統(tǒng)報(bào)告存在問題。該問題可以是散列攻擊的結(jié)果,其中這兩個(gè)文件中的一個(gè)被惡意改變,因此雖然尋址散列函數(shù)指出文件是相同的,驗(yàn)證散列函數(shù)(更強(qiáng)和更可靠)卻指出這兩個(gè)文件事實(shí)上是不同的。另一個(gè)可能是,在系統(tǒng)硬件或軟件中已有技術(shù)故障,從而雖然VH值看來不同,但文件事實(shí)上是相同的。第三個(gè)可能是發(fā)生散列碰撞,從而即使這兩個(gè)文件事實(shí)上是不同的,對(duì)每個(gè)文件的地址散列值的計(jì)算得到那個(gè)相同的值。在任何情況下,步驟252向可以然后采取適當(dāng)操作的系統(tǒng)或者用戶指出問題。在任何情況下,優(yōu)選的是,在這時(shí)不將文件添加到數(shù)據(jù)庫(kù)中,雖然根據(jù)特定實(shí)現(xiàn)這樣的情況是可能的。
圖4是流程圖,描述從數(shù)據(jù)庫(kù)中檢索文件的一個(gè)實(shí)施例。在這種情形下,用戶希望使用本發(fā)明的技術(shù)實(shí)現(xiàn)從數(shù)據(jù)庫(kù)中檢索文件。在260中,用戶或者軟件應(yīng)用要求得到特定文件并且會(huì)基于先前計(jì)算的那個(gè)文件的散列值來尋找那個(gè)文件。最好,用戶或應(yīng)用知道計(jì)算文件的散列值所使用的特定尋址散列函數(shù)也由系統(tǒng)用來計(jì)算AH值。用戶或者應(yīng)用從存儲(chǔ)AH的任何適合的源中獲得所要求文件的AH。在264中,用戶或者應(yīng)用將所要求文件的該地址散列值(AH)提交給系統(tǒng)。在268中,使用例如先前在步驟232說明的技術(shù),系統(tǒng)使用AH來確定要求的文件是否存在于數(shù)據(jù)庫(kù)中。如果存在的話,在該步驟可以查閱散列權(quán)限表來檢索文件的AH和VH。如果確定文件沒有存在于數(shù)據(jù)庫(kù)中,那么在272中,系統(tǒng)向用戶或者應(yīng)用報(bào)告沒有找到要求的文件。
然而,如果系統(tǒng)指出它相信文件已經(jīng)找到,那么在276中,系統(tǒng)計(jì)算在數(shù)據(jù)庫(kù)中找到的文件的AH。在280中,將在264中接收自用戶的AH與在276中生成的AH比較。該比較作為校驗(yàn)來執(zhí)行以確保存儲(chǔ)在地址AH的文件事實(shí)上確實(shí)有和AH相等的地址散列值。在一些情況中,不執(zhí)行該比較步驟是可能的。
如果AH值不同,那么在284中,將異常報(bào)告給用戶或者應(yīng)用。在280中計(jì)算的不同的AH值將通常指出本地文件已被損壞并且不應(yīng)返回給用戶。如果AH值是相同的,這指出在地址AH找到的文件可能是用戶要求得到的。因而,在288中計(jì)算在數(shù)據(jù)庫(kù)中找到的文件的驗(yàn)證散列值(VH)。在292中,將該計(jì)算的VH與來自散列權(quán)限表中的條目的該文件的VH比較。在步驟268期間,使用AH作為索引在散列權(quán)限表中查找對(duì)應(yīng)于該文件的條目,或者在該時(shí)間點(diǎn)也可以使用文件的AH作為索引在表中查找VH。如果VH值不同,那么在296中將問題報(bào)告給用戶,指出和步驟252中所述的相同的可能問題。如果VH值相同,這指出在地址AH找到的文件和當(dāng)文件第一次被添加到數(shù)據(jù)庫(kù)時(shí)最初存儲(chǔ)在該位置的文件是相同的文件。在該步驟中,相等的VH值可靠地指出找到的文件是用戶要求得到的文件。在298中,將文件交付給請(qǐng)求它的用戶或者軟件應(yīng)用。
圖5是流程圖,描述用于使用本發(fā)明實(shí)施例實(shí)現(xiàn)的校驗(yàn)數(shù)據(jù)庫(kù)中的文件的完整性的技術(shù)。在這種情形下,要求連續(xù)校驗(yàn)存儲(chǔ)在數(shù)據(jù)庫(kù)中的文件的完整性,目的是在發(fā)現(xiàn)異常時(shí)發(fā)出警報(bào)聲并且如果有必要的話采取糾正操作。沒有這樣連續(xù)的完整性校驗(yàn),可能的是,不擇手段的團(tuán)體也許會(huì)替換、更改或者刪除數(shù)據(jù)庫(kù)中的原始文件以至原始文件會(huì)丟失。例如,如果某人找到一種方式來破壞用來計(jì)算文件的地址散列值(AH)的較低強(qiáng)度的散列函數(shù),那么那個(gè)人將假文件插入到數(shù)據(jù)庫(kù)中是可能的。換言之,假文件會(huì)成為原始文件的修改版本,它的地址散列值仍然和原始文件相同。從而,由于非法目的,文件也許被修改并被插入到數(shù)據(jù)庫(kù)中來冒充為真實(shí)文件。由于兩個(gè)文件的地址散列值是相同的,可以證明,要證明非法修改的文件不是正確的文件是極困難的。即使驗(yàn)證散列函數(shù)用于驗(yàn)證這樣的文件的內(nèi)容從而證明該修改文件是非法版本,真實(shí)文件的原始內(nèi)容也會(huì)丟失。
在本發(fā)明的該實(shí)施例中,保存計(jì)算機(jī)文件的數(shù)據(jù)庫(kù)保留每個(gè)文件的副本(或更多的拷貝),從而當(dāng)在一個(gè)拷貝中檢測(cè)到錯(cuò)誤時(shí),可疑文件可以用它的副本替換。盡管現(xiàn)有技術(shù)的技術(shù)也許涉及使用這樣的副本和文件替換,接下來的描述還是提供了一種方式以使用第二驗(yàn)證散列函數(shù)來實(shí)現(xiàn)連續(xù)的完整性校驗(yàn)。在這種情況下,依照本發(fā)明的實(shí)施例,許多計(jì)算機(jī)文件被存儲(chǔ)在適合的數(shù)據(jù)庫(kù)中。對(duì)于每個(gè)存儲(chǔ)在數(shù)據(jù)庫(kù)中的文件,已經(jīng)將地址散列值(AH)和驗(yàn)證散列值(VH)對(duì)存儲(chǔ)在表中或其他適合的數(shù)據(jù)結(jié)構(gòu)中。圖5的流程圖提供了一種方式,使用第二驗(yàn)證散列函數(shù)的附加強(qiáng)度和優(yōu)點(diǎn)來連續(xù)校驗(yàn)這些文件的完整性。
在304開始,系統(tǒng)迭代遍歷數(shù)據(jù)庫(kù)中的所有文件(或者所有文件的子集,如果要求的話)。使用它們的文件名或者其他標(biāo)識(shí)符,通過順序步進(jìn)經(jīng)過存在于數(shù)據(jù)庫(kù)中的所有文件來實(shí)現(xiàn)該迭代,或者通過使用來自表中的文件的AH引用每個(gè)文件,例如散列權(quán)限表200的表可以用于迭代遍歷數(shù)據(jù)庫(kù)中的所有文件。其他用于迭代遍歷各種文件的技術(shù)包括隨機(jī)選擇表中的文件或者文件條目。
在308中,通過引用文件現(xiàn)有的AH(從表中、從文件名或者經(jīng)由其他手段獲得)確定數(shù)據(jù)庫(kù)中文件的地址來獲得待校驗(yàn)的文件。在312中,將系統(tǒng)使用的尋址散列函數(shù)應(yīng)用于文件來計(jì)算文件的AH。在316中,將該計(jì)算的AH與在散列權(quán)限表中找到的文件的現(xiàn)有AH比較。
如果AH值不同,那么在320中,系統(tǒng)向執(zhí)行完整性校驗(yàn)的用戶或者應(yīng)用報(bào)告問題。如果AH值不同,系統(tǒng)假定正被分析的當(dāng)前文件以某種方式(經(jīng)由技術(shù)故障、攻擊或者其他)已被損壞并且在324中系統(tǒng)實(shí)現(xiàn)錯(cuò)誤恢復(fù)。由于系統(tǒng)先前在另一位置存儲(chǔ)了當(dāng)前文件的拷貝,來自散列權(quán)限表的AH(用來第一次定位文件)用來定位那個(gè)文件現(xiàn)有的好的拷貝。一旦定位,用已知好的拷貝替換可疑文件。由于文件的兩個(gè)拷貝同時(shí)被損壞從統(tǒng)計(jì)上是不可能的,所以假定文件的副本是好的拷貝。當(dāng)然,為了雙校驗(yàn)副本的完整性,也可以計(jì)算副本的AH來與散列權(quán)限表中找到的AH比較??梢詧?zhí)行其他錯(cuò)誤恢復(fù)過程。例如,根據(jù)實(shí)現(xiàn)方法,系統(tǒng)可以決定不替換可疑文件,可疑文件可以被刪除,或者可以將可疑文件作為文檔的原始版本添加到存儲(chǔ)器中并且保留篡改企圖的證據(jù)。一旦對(duì)所涉及的當(dāng)前文件實(shí)現(xiàn)錯(cuò)誤恢復(fù),在344,繼續(xù)循環(huán)并且獲得待校驗(yàn)其完整性的文件。
回到步驟316,如果AH值相同,這指出在內(nèi)容地址AH找到的當(dāng)前文件可能是最初存儲(chǔ)在那個(gè)地址的文件。為了進(jìn)一步校驗(yàn)文件的完整性,在328中,計(jì)算文件的驗(yàn)證散列值(VH)。最好,系統(tǒng)使用的驗(yàn)證散列函數(shù)不同于并且更強(qiáng)于尋址散列函數(shù)。在332中,將計(jì)算的文件VH與存在于散列權(quán)限表中的現(xiàn)有的VH(當(dāng)文件最初存儲(chǔ)時(shí)計(jì)算的)比較。如果VH值不同,那么在336中報(bào)告問題,通常如在步驟252所述。
在340中,系統(tǒng)可以采取適合的糾正操作來補(bǔ)救問題。例如,文件可以標(biāo)記為可疑、可以執(zhí)行審查以確定為什么VH值不同、當(dāng)前文件的副本可以用于替換可疑文件的拷貝、文件的其他現(xiàn)有拷貝可以刪除等。采取的糾正操作取決于系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)以及系統(tǒng)操作員希望達(dá)到的目標(biāo)。一旦采取適合的操作,在344中就獲得待分析的下一個(gè)文件。
現(xiàn)在回到步驟332,如果VH值相同,這幾乎確定地指出當(dāng)前在內(nèi)容地址AH存在的文件事實(shí)上是當(dāng)它的AH-VH對(duì)被添加到散列權(quán)限表時(shí)最初放在那兒的文件。在這種情形下,不需要報(bào)告或者糾正操作,并且在344中獲得待分析的下一個(gè)文件。一旦經(jīng)由循環(huán)304-344校驗(yàn)了所有文件,過程結(jié)束或者循環(huán)。
多層實(shí)施例本發(fā)明的實(shí)施例可以在駐留于臺(tái)式計(jì)算機(jī)、服務(wù)器、專用主機(jī)等上的數(shù)據(jù)庫(kù)中以及在以分布式方式的數(shù)據(jù)庫(kù)中實(shí)現(xiàn)。圖6說明多層數(shù)據(jù)庫(kù)400,其中保存計(jì)算機(jī)文件(或者其他數(shù)字信息)的數(shù)據(jù)庫(kù)分布于眾多的服務(wù)器計(jì)算機(jī)之中。數(shù)據(jù)庫(kù)可以在任意數(shù)量的計(jì)算機(jī)上以分布式方式來實(shí)現(xiàn),包括圖6示出的簡(jiǎn)單多層數(shù)據(jù)庫(kù)。當(dāng)然,可以有更少或者更多數(shù)量的層,以及更少或者更多數(shù)量的以不同類型的層次布置的數(shù)據(jù)庫(kù)服務(wù)器。在該例中,數(shù)據(jù)庫(kù)服務(wù)器410、412和414表示與大公司各部門關(guān)聯(lián)的服務(wù)器。數(shù)據(jù)庫(kù)服務(wù)器420(而其他沒有示出)表示包含三個(gè)部門的公司內(nèi)部的分層,如圖所示(而其他沒有示出)。數(shù)據(jù)庫(kù)服務(wù)器430與公司首腦辦公室關(guān)聯(lián)并且還可以鏈接到對(duì)應(yīng)于其他公司或者子公司的服務(wù)器,而且甚至可以鏈接到也許駐留有全局散列權(quán)限的下一個(gè)更高層。
與每個(gè)數(shù)據(jù)庫(kù)服務(wù)器關(guān)聯(lián)的是散列權(quán)限表(例如,表411),也許如圖2所示實(shí)現(xiàn),或者使用類似功能的數(shù)據(jù)結(jié)構(gòu)。特定層的每個(gè)表不僅表示存儲(chǔ)在那個(gè)層的服務(wù)器上的文件(和它們關(guān)聯(lián)的散列值),而且表示下一較低層的所有文件。在這種方式下,位于給定層的散列權(quán)限表知道位于較低層的所有內(nèi)容以及存儲(chǔ)在那個(gè)服務(wù)器上的內(nèi)容。該多層數(shù)據(jù)庫(kù)實(shí)施例針對(duì)一種需求為效率、可伸縮性和本地處理而使用分布式計(jì)算機(jī),而同時(shí)允許給定層的散列權(quán)限表不僅記錄在它之下的內(nèi)容,而且驗(yàn)證內(nèi)容的完整性。例如,如果相同的文件被添加到數(shù)據(jù)庫(kù)中不同的數(shù)據(jù)庫(kù)服務(wù)器上,在不同的服務(wù)器上就會(huì)有該文件的多個(gè)拷貝并且不同的散列權(quán)限表中有同樣的條目。如果不擇手段的團(tuán)體成功修改了數(shù)據(jù)庫(kù)中文件的一個(gè)拷貝,該非法拷貝會(huì)造成對(duì)真實(shí)拷貝的完整性的懷疑。接下來的描述針對(duì)這些問題。
圖7是流程圖,描述將文件添加到多層數(shù)據(jù)庫(kù)的一種技術(shù)。在450中,獲得計(jì)算機(jī)文件(或者其他數(shù)字信息)并且從用戶(或其他軟件應(yīng)用)接收應(yīng)該將該文件添加到數(shù)據(jù)庫(kù)中的指示。在454中,計(jì)算文件的地址散列值(AH)和驗(yàn)證散列值(VH)。在458中,將文件存儲(chǔ)在本地服務(wù)器410上的地址AH(舉例)并且計(jì)算的AH-VH被添加到本地表411中(舉例)。在466中,將計(jì)算的AH-VH對(duì)向上傳遞到下一層,即數(shù)據(jù)庫(kù)服務(wù)器420,意圖是如果該對(duì)并不是已經(jīng)存在,則將之添加到表421中。為了便于說明,我們假定文件并不是已經(jīng)存在于服務(wù)器410上,盡管圖3的實(shí)施例可以用來校驗(yàn)先前是否存儲(chǔ)了文件。
當(dāng)將文件添加到數(shù)據(jù)庫(kù)中(例如,如圖3中或者圖7中)時(shí),系統(tǒng)可以首先校驗(yàn)文件是否已經(jīng)存在于數(shù)據(jù)庫(kù)中或者系統(tǒng)可以選擇不校驗(yàn)。系統(tǒng)是否校驗(yàn)是取決于計(jì)算機(jī)文件包含的信息類型以及其他因素的實(shí)施細(xì)節(jié)。例如,如果計(jì)算機(jī)文件包含MRI數(shù)據(jù)或者X射線數(shù)據(jù),幾乎確定的是,一個(gè)文件的內(nèi)容將不同于任何其他文件的內(nèi)容。從而,由于效率原因,不是必須要在添加文件之前校驗(yàn)以查看文件是否已經(jīng)存在于數(shù)據(jù)庫(kù)中,因?yàn)椴淮罂赡芤呀?jīng)存在相同的精確的文件。另一方面,如果文件表示流行的電子郵件附件,很多員工試圖將之存儲(chǔ)到公司數(shù)據(jù)庫(kù)中,那么首先校驗(yàn)以查看這樣的文件是否已經(jīng)被添加到數(shù)據(jù)庫(kù)中是有益的。系統(tǒng)是否首先校驗(yàn)可以取決于其他因素。
在470中,將從服務(wù)器410接收到的AH-VH對(duì)與在下一更高層的表421中現(xiàn)有的條目比較。取決于類似條目是否存在,該比較有三個(gè)可能的結(jié)果。如果在表421中沒有AH值對(duì)應(yīng)于從表411傳遞上來的AH值,那么確定在表421中沒有條目對(duì)應(yīng)于添加到服務(wù)器410中的文件,并且確定文件也沒有被添加到服務(wù)器420和它的任何其他較低層的服務(wù)器(在該例中是412和414)。如果情形如此,那么在474中,將從表411傳遞上來的AH-VH對(duì)作為條目添加到表421中。也可以將存儲(chǔ)在服務(wù)器410上的文件拷貝到服務(wù)器420上,盡管嚴(yán)格來說這不是必須的?,F(xiàn)在表421也包括AH-VH對(duì),它指出至少一個(gè)較低層的服務(wù)器包括對(duì)應(yīng)的計(jì)算機(jī)文件。將對(duì)添加到表中之后,然后流程向上循環(huán)回到步驟466,其中將相同的AH-VH對(duì)向上傳遞到下一較高層(服務(wù)器430和表431)來校驗(yàn)并查看在下一較高層是否存在匹配。該傳遞和校驗(yàn)繼續(xù)直到窮盡所有的層。
現(xiàn)在返回步驟470,如果確定從表411傳遞的AH-VH對(duì)精確地匹配(即AH值和VH值匹配),那么這指出剛添加到服務(wù)器410的計(jì)算機(jī)文件也存在于服務(wù)器420中或者也許在它的一個(gè)較低層服務(wù)器中。除非系統(tǒng)的實(shí)現(xiàn)要求刪除文件的一個(gè)拷貝,否則在478中沒有要求操作。(這可以是聲稱在分布式環(huán)境中任何給定文件只被存儲(chǔ)一次的機(jī)制的基礎(chǔ),為了節(jié)省存儲(chǔ)容量)。在474和478二者中,AH作為文件的唯一地址返回給請(qǐng)求者。在478后過程結(jié)束。
然而,如果AH值匹配但是VH值不匹配,這指出問題,在482中報(bào)告該問題。如前面討論,該問題可以是碰撞、技術(shù)故障或者散列攻擊??梢栽?86中采取糾正操作,例如在步驟340描述的那些操作。在采取任何適合的操作后,過程結(jié)束。在其他實(shí)施例中,在步驟486之后,系統(tǒng)可以決定將控制傳送到步驟466,其中如前所述將AH-VH對(duì)傳遞到下一更高層,。
其他前述實(shí)施例也可以使用圖6的多層數(shù)據(jù)庫(kù)或者類似的分布式數(shù)據(jù)庫(kù)實(shí)現(xiàn)。例如,圖4描述的檢索實(shí)施例也可以在分布式數(shù)據(jù)庫(kù)上實(shí)現(xiàn),這種情況下,步驟268會(huì)在各種數(shù)據(jù)庫(kù)服務(wù)器而不是單個(gè)服務(wù)器上搜索。同樣地,圖5中描述的完整性校驗(yàn)實(shí)施例也可以在分布式數(shù)據(jù)庫(kù)上實(shí)現(xiàn),其中步驟304的循環(huán)會(huì)考慮駐留在各種數(shù)據(jù)庫(kù)服務(wù)器上的所有文件。
將散列權(quán)限功能添加到現(xiàn)有的內(nèi)容可尋址的存儲(chǔ)系統(tǒng)中圖8是流程圖,描述用于將散列權(quán)限功能添加到現(xiàn)有的內(nèi)容可尋址的存儲(chǔ)系統(tǒng)上的一種技術(shù)?,F(xiàn)有技術(shù)描述了散列函數(shù)用來生成給定文件的唯一消息摘要的內(nèi)容可尋址的存儲(chǔ)技術(shù)。當(dāng)將文件存儲(chǔ)在內(nèi)容可尋址的存儲(chǔ)(CAS)系統(tǒng)中時(shí),它的消息摘要不僅可以用來唯一地尋址文件而且可以用來驗(yàn)證文件的內(nèi)容。使用下面的實(shí)施例,將在此所述的散列權(quán)限功能加入到這樣的CAS系統(tǒng)是可能的(即,增加第二驗(yàn)證散列函數(shù)的使用)。在704中,創(chuàng)建類似于圖2的散列權(quán)限表或者創(chuàng)建類似的數(shù)據(jù)結(jié)構(gòu)來保存地址散列值(AH)和驗(yàn)證散列值(VH)。現(xiàn)有的CAS系統(tǒng)已經(jīng)利用特定散列函數(shù)(在下文中稱為尋址散列函數(shù))來生成每個(gè)文件的內(nèi)容地址或者地址散列值(AH)。將這些AH值放到新創(chuàng)建的散列權(quán)限表的第一列中,而第二列將保存每個(gè)文件上的驗(yàn)證散列函數(shù)生成的驗(yàn)證散列值。最好,驗(yàn)證散列函數(shù)是比尋址散列函數(shù)更強(qiáng)的不同的散列函數(shù)。
在708中,循環(huán)開始,即迭代遍歷數(shù)據(jù)庫(kù)中的每個(gè)文件或者內(nèi)容地址。在712中,獲得下一個(gè)文件及其地址散列值(AH)或者內(nèi)容地址。在716中,驗(yàn)證散列函數(shù)用來計(jì)算文件的VH。然后,在720中,將該AH-VH對(duì)作為條目添加到散列權(quán)限表中。在724中,循環(huán)繼續(xù)到數(shù)據(jù)庫(kù)中的下一個(gè)文件。一旦數(shù)據(jù)庫(kù)中的所有文件已被處理并且它們的AH-VH對(duì)已輸入到表中,在728,激活新的散列權(quán)限機(jī)制。該激活意味著任何將來的添加、檢索或者完整性校驗(yàn)過程都會(huì)利用如前所述的散列權(quán)限表。
升級(jí)驗(yàn)證散列函數(shù)圖9是流程圖,描述用于升級(jí)驗(yàn)證散列函數(shù)的技術(shù)。如前所述,除尋址散列函數(shù)外,驗(yàn)證散列函數(shù)用來驗(yàn)證文件的內(nèi)容。替換現(xiàn)有的驗(yàn)證散列函數(shù)或者將第二驗(yàn)證散列函數(shù)添加到系統(tǒng)來提供更大的完整性也是可能的。例如,如果256位的驗(yàn)證散列函數(shù)當(dāng)前在使用,也可以添加和使用512位的驗(yàn)證散列函數(shù)。接下來描述一種技術(shù),其中第二驗(yàn)證散列函數(shù)和第一驗(yàn)證散列函數(shù)一起使用,盡管用第二驗(yàn)證散列函數(shù)替換第一驗(yàn)證散列函數(shù)也是可能的。
步驟740開始循環(huán),它迭代遍歷數(shù)據(jù)庫(kù)中的所有文件。循環(huán)可以經(jīng)由它們的文件名或者計(jì)算的散列值來按順序引用每個(gè)文件,或者可以使用散列權(quán)限表來迭代遍歷每個(gè)文件。在744中,從數(shù)據(jù)庫(kù)中獲得待處理的下一個(gè)文件。
在748中,新的驗(yàn)證散列函數(shù)用來計(jì)算文件的新的驗(yàn)證散列值VH′。在752中,將VH′添加到散列權(quán)限表中,例如通過將第三列添加到表中來保存所有使用新的驗(yàn)證散列函數(shù)計(jì)算的驗(yàn)證散列值。例如,如圖11所示。從而,表中文件的給定條目將會(huì)有三個(gè)散列值用于地址散列的第一個(gè)值、用于第一驗(yàn)證散列的第二個(gè)值和用于第二驗(yàn)證散列的第三個(gè)值。當(dāng)然,在可供選擇的實(shí)施例中,第二驗(yàn)證散列值只是替換第一驗(yàn)證散列值,而此表剩下兩列。在756中,處理下一個(gè)文件。
一旦所有的文件都已被處理,在760中,系統(tǒng)通過標(biāo)記系統(tǒng)中新升級(jí)的驗(yàn)證散列函數(shù)的存在來激活它的使用。升級(jí)的散列函數(shù)的存在包含用于添加、檢索和完整性校驗(yàn)處理的分支。例如,當(dāng)添加文件時(shí),兩個(gè)驗(yàn)證散列函數(shù)將都用來計(jì)算將要添加到表中的兩個(gè)不同的驗(yàn)證散列值。類似地,當(dāng)檢索文件時(shí),兩個(gè)驗(yàn)證散列函數(shù)將都用來驗(yàn)證文件的內(nèi)容。完整性校驗(yàn)處理也會(huì)使用兩個(gè)驗(yàn)證散列函數(shù)。
圖10是流程圖,描述可以用來為散列權(quán)限表提供安全的附加技術(shù)。圖11說明帶有附加安全措施的散列權(quán)限表800的一個(gè)實(shí)施例。表800包括用于地址散列值的列802、用于第一驗(yàn)證散列函數(shù)值的列804、用于第二驗(yàn)證散列函數(shù)值的列806、用于時(shí)間標(biāo)記的列808和用于數(shù)字簽名的列810。該表實(shí)現(xiàn)使用第二驗(yàn)證散列函數(shù)的實(shí)施例,盡管附加安全技術(shù)可以用于任何散列權(quán)限表的實(shí)施例。
在任何處理期間,當(dāng)添加或者改變散列權(quán)限表中的記錄時(shí),附加安全技術(shù)最好如在步驟770中一樣使用。例如,當(dāng)將新的文件添加到數(shù)據(jù)庫(kù)時(shí),添加記錄,而當(dāng)添加新的驗(yàn)證散列函數(shù)或者添加映射時(shí),改變記錄,如圖15所示和以下所述。任何對(duì)表中條目的添加或者修改都可以要求使用這些安全技術(shù)。在這些情形下,采取下面的附加步驟可以是適當(dāng)?shù)摹?br> 在774中,記錄(例如列802-806)中的現(xiàn)有條目是使用任何適合的時(shí)間標(biāo)記方法作時(shí)間標(biāo)記。在778中,在列808將時(shí)間標(biāo)記添加到記錄。在782中,為了驗(yàn)證散列權(quán)限,使用任何適合的數(shù)字簽名為記錄創(chuàng)建數(shù)字簽名。數(shù)字簽名可以包括記錄中任何適當(dāng)?shù)男畔?,包括AH值和VH值、時(shí)間標(biāo)記和前一個(gè)記錄的數(shù)字簽名。在786中,在列810將數(shù)字簽名添加到記錄。
作為唯一標(biāo)識(shí)符的隨機(jī)數(shù)的使用一旦認(rèn)識(shí)到不同的功能即尋址和驗(yàn)證可以由兩個(gè)單獨(dú)的散列函數(shù)(如前所述)處理,就會(huì)進(jìn)一步認(rèn)識(shí)到除了尋址散列函數(shù)生成的唯一數(shù)之外的唯一數(shù)也可以用于唯一地標(biāo)識(shí)文件并且用作它在數(shù)據(jù)庫(kù)中的唯一地址。換言之,因?yàn)閷ぶ飞⒘泻瘮?shù)不被用作驗(yàn)證的目的(因?yàn)槭褂脝为?dú)的驗(yàn)證散列函數(shù)),嚴(yán)格看來不是必須使用尋址散列函數(shù)來生成唯一數(shù)以生成文件的唯一地址。為了那些目的,認(rèn)識(shí)到如果生成足夠大的隨機(jī)數(shù)作為唯一標(biāo)識(shí)符以尋址文件,驗(yàn)證散列函數(shù)仍然可以用來驗(yàn)證文件的內(nèi)容因而會(huì)產(chǎn)生同樣的優(yōu)點(diǎn)。簡(jiǎn)單來說,尋址散列函數(shù)可以被隨機(jī)數(shù)發(fā)生器替換,它生成適合的足夠大的隨機(jī)數(shù)用作文件的唯一地址。
可以使用各種各樣的隨機(jī)數(shù)發(fā)生器中的許多。隨機(jī)數(shù)發(fā)生器的知識(shí)和使用在本領(lǐng)域內(nèi)眾所周知。作為例子,可以使用的隨機(jī)數(shù)生成技術(shù)包括使用種子值例如時(shí)間、熱量或者噪聲測(cè)量等生成偽隨機(jī)數(shù)。生成的隨機(jī)數(shù)的尺寸將隨每個(gè)實(shí)現(xiàn)和系統(tǒng)操作員的需要而變化,以確保所有的生成的隨機(jī)數(shù)的唯一性。預(yù)期會(huì)需要包含至少128位(以它們的二進(jìn)制形式)的隨機(jī)數(shù)來充分確保在公眾或者半公眾應(yīng)用(典型地,在因特網(wǎng)上)中碰撞的風(fēng)險(xiǎn)是極低的。在一個(gè)特定的實(shí)施例中,隨機(jī)數(shù)發(fā)生器生成128位的隨機(jī)數(shù),它們是適合長(zhǎng)的,足以避免碰撞并允許與已實(shí)現(xiàn)(或正實(shí)現(xiàn))的128位的尋址散列函數(shù)的系統(tǒng)兼容。當(dāng)然,還可以使用更長(zhǎng)的隨機(jī)數(shù)。
圖12說明包含任意數(shù)量文件的驗(yàn)證散列值和對(duì)應(yīng)的文件的隨機(jī)數(shù)的表500。在一個(gè)實(shí)施例中表500被稱為“標(biāo)識(shí)符權(quán)限”表。對(duì)于包含在數(shù)據(jù)庫(kù)中的特定文件,表500保存那個(gè)文件的隨機(jī)數(shù)和使用驗(yàn)證散列函數(shù)計(jì)算的那個(gè)文件的散列值。(當(dāng)然,可以使用可供選擇的實(shí)施例,其中有多于一個(gè)的驗(yàn)證散列函數(shù)。)表500包括使用隨機(jī)數(shù)發(fā)生器計(jì)算的隨機(jī)數(shù)(R)的列504和保存使用散列函數(shù)計(jì)算的驗(yàn)證散列值(VH)的列508。每行對(duì)應(yīng)于一個(gè)給定文件。例如,行514對(duì)應(yīng)于文件W,并包含文件A的R。例如,文件A的VH使用256位的散列函數(shù)來計(jì)算。行514示出,對(duì)于特定文件W,它的R與它的VH關(guān)聯(lián)存儲(chǔ),從而通過引用特定文件的R可以獲得它的VH,反過來也是。
取決于存儲(chǔ)的文件的數(shù)量,表500可以包含任意數(shù)量的條目(或者記錄)。表500可以與存儲(chǔ)在單個(gè)計(jì)算機(jī)上、計(jì)算機(jī)網(wǎng)絡(luò)上、分布式計(jì)算機(jī)網(wǎng)絡(luò)上或者任何適用于存儲(chǔ)文件或者其他數(shù)字信息的數(shù)據(jù)庫(kù)中的文件關(guān)聯(lián)。此外,表500可以使用散列函數(shù)、時(shí)間標(biāo)記和或數(shù)字簽名來使其條目受到保護(hù),本領(lǐng)域內(nèi)的那些技術(shù)人員將理解這一點(diǎn)。此外,使用任何其他適合的數(shù)據(jù)結(jié)構(gòu)而不一定是表,特定文件的R和VH可以相互關(guān)聯(lián)。
同樣包括在表500的是對(duì)于當(dāng)將文件的副本添加到數(shù)據(jù)庫(kù)中時(shí)有用的實(shí)際地址列512。例如,在文件Z已被添加到數(shù)據(jù)庫(kù)并且它的R-VH對(duì)已被添加到行520之后,可以發(fā)現(xiàn)文件Z是文件X的精確副本。該實(shí)現(xiàn)可以發(fā)生在文件正被添加到數(shù)據(jù)庫(kù)的時(shí)候或者之后的優(yōu)化處理期間。當(dāng)文件Z的隨機(jī)數(shù)已經(jīng)被生成、添加到列504并且被分發(fā)給用戶或應(yīng)用的時(shí)候,刪除行520(或者不輸入它)就會(huì)是棘手的,因?yàn)楦鞣N團(tuán)體也許正在使用為文件Z生成的隨機(jī)數(shù)作為唯一的手段來引用它。在這種情形下,因?yàn)椴皇潜仨毼锢砩蠈⑽募添加到數(shù)據(jù)庫(kù)中(或者文件Z可能已被刪除),可以將文件X的隨機(jī)數(shù)輸入到行520的列512中來向一個(gè)對(duì)文件Z的搜索指出應(yīng)該使用文件X的隨機(jī)數(shù)來尋址此文件。由于文件X和文件Z是副本,所以使用文件X的隨機(jī)數(shù)作為地址是適當(dāng)?shù)摹HQ于實(shí)現(xiàn),列512中空的條目(或者另一適合的標(biāo)志)將向系統(tǒng)指出沒有另一地址應(yīng)該被查閱。當(dāng)然,表500中可以有許多條目都引用相同的文件。這種情況下,只有文件的一個(gè)拷貝需要保留,并且表500中的那個(gè)文件的已被刪除的拷貝的條目將使用列512來指出文件的實(shí)際地址。
圖13是流程圖,描述用于將文件添加到數(shù)據(jù)庫(kù)的技術(shù),其中系統(tǒng)使用隨機(jī)數(shù)發(fā)生器作為函數(shù)來生成每個(gè)文件的唯一地址。在550中,從用戶或者軟件應(yīng)用獲得待添加的文件。在554中,適合的隨機(jī)數(shù)發(fā)生器用來創(chuàng)建文件的隨機(jī)數(shù)R。該隨機(jī)數(shù)最好是適合長(zhǎng)的位串,足以為每個(gè)添加到數(shù)據(jù)庫(kù)中的文件提供唯一的地址。并且如現(xiàn)有技術(shù)中所說明和如圖1所示,可以對(duì)此位串進(jìn)行編碼來提供易于用戶可讀取的標(biāo)識(shí)符或者作為文件的文件名。同樣如圖1所示,隨機(jī)數(shù)可以組成URL或者其他適合的標(biāo)識(shí)符的一部分。在可供選擇的實(shí)施例中,不需要在獲得文件后立即執(zhí)行步驟554,而可以結(jié)合步驟560或者結(jié)合步驟572來執(zhí)行。在558中,系統(tǒng)使用的驗(yàn)證散列函數(shù)用來計(jì)算文件的驗(yàn)證散列值(VH)。
在并不要求校驗(yàn)文件是否已經(jīng)存在于數(shù)據(jù)庫(kù)中(也就是,只是直接添加文件是有利的)的實(shí)施例中,不執(zhí)行步驟562,而然后在560,在地址R將文件存儲(chǔ)于數(shù)據(jù)庫(kù)中。在568中,然后將R-VH對(duì)添加到散列權(quán)限表,將R作為文件的唯一地址返回給請(qǐng)求者,并且過程結(jié)束。
在要求校驗(yàn)待添加文件是否已經(jīng)存在于數(shù)據(jù)庫(kù)中的實(shí)施例中,步驟562將計(jì)算的文件的VH與表的列508中的所有VH值比較。如果沒有找到匹配,這指出文件不存在,并且控制移到添加文件及其R-VH對(duì)的步驟560,如前討論的。然而,如果找到匹配,這指出文件的拷貝已經(jīng)存在于數(shù)據(jù)庫(kù)中并且散列權(quán)限表中的條目已經(jīng)存在。在一個(gè)實(shí)施例中,不需要為文件生成新的隨機(jī)數(shù)和添加新的條目到表中。從而,在584中,將對(duì)應(yīng)于VH匹配的來自表中條目的隨機(jī)數(shù)作為數(shù)據(jù)庫(kù)中那個(gè)文件的唯一地址返回給用戶(或者其他應(yīng)用)。在該實(shí)施例中,不需要生成新的隨機(jī)數(shù),不需要添加新的條目到表中,并且由于文件已經(jīng)存在在數(shù)據(jù)庫(kù)中,所以不需要添加文件到數(shù)據(jù)庫(kù)中。僅僅通過找到包含與步驟558中計(jì)算的VH匹配的VH的表中的條目,通過使用來自找到的條目的隨機(jī)數(shù)獲得用于標(biāo)識(shí)文件的隨機(jī)數(shù)。在580后過程結(jié)束。
在步驟562的另一變體中,可以有種情形,其中已經(jīng)為文件生成隨機(jī)數(shù)并且已經(jīng)已經(jīng)將之返回給用戶或者其他軟件應(yīng)用。在這種情形下,如果確定在562中有VH匹配并且文件的拷貝已經(jīng)存在于數(shù)據(jù)庫(kù)中,將仍然期望在572中將R-VH對(duì)添加到表中。因?yàn)殡S機(jī)數(shù)R已經(jīng)被返回給用戶來幫助將來引用文件,所以將R-VH對(duì)添加到表中,從而在表中有對(duì)應(yīng)于隨機(jī)數(shù)R的條目是必要的。但是,在這種情況下,嚴(yán)格說不是必須添加文件的另一拷貝,因此在576中添加從新添加的R-VH對(duì)到預(yù)先存在的隨機(jī)數(shù)之間的映射。由于文件已經(jīng)存在于數(shù)據(jù)庫(kù)中,所以不需要添加文件的拷貝。
作為例子,考慮表500中的行520,其中要求將文件Z添加到數(shù)據(jù)庫(kù)中,但是在562中,確定文件Z是文件X的精確拷貝。(因?yàn)槲募的VH和文件X的VH匹配,所以可以確定文件是相同的)。由于文件X已經(jīng)存在,所以不需要將文件Z添加到數(shù)據(jù)庫(kù)中,但是在572中,將行520添加到表中來提供文件Z的新生成的隨機(jī)數(shù)R(在554中創(chuàng)建)和文件Z的VH。在576中,將來自列504的文件X的隨機(jī)數(shù)添加到行520的列512中,目的是提供從文件Z的隨機(jī)數(shù)到文件實(shí)際地址的映射。當(dāng)然,如果要求實(shí)際添加文件Z(文件X的副本),那就沒有必要執(zhí)行步驟576并利用列512,因?yàn)樵诹?04中的文件Z的隨機(jī)數(shù)然后會(huì)準(zhǔn)確地標(biāo)識(shí)數(shù)據(jù)庫(kù)中的文件Z。在580后過程結(jié)束。
優(yōu)化實(shí)施例使用隨機(jī)數(shù)發(fā)生器實(shí)現(xiàn)操作數(shù)據(jù)庫(kù)中文件的多個(gè)拷貝。在該優(yōu)化中,將數(shù)據(jù)庫(kù)中給定文件的多個(gè)拷貝刪除,只留下數(shù)據(jù)庫(kù)中文件的單個(gè)拷貝??梢酝ㄟ^循環(huán)遍歷標(biāo)識(shí)符權(quán)限表500中的所有條目尋找匹配的VH值來執(zhí)行該優(yōu)化。列508中匹配的VH值指出相同文件的多個(gè)拷貝。用于循環(huán)經(jīng)過表中的條目列表尋找匹配的算法為本領(lǐng)域的那些技術(shù)人員已知。一旦對(duì)于特定文件找到兩個(gè)或者更多的匹配,就在適當(dāng)?shù)臅r(shí)候使用列504中的隨機(jī)數(shù)來尋址文件的每個(gè)拷貝并刪除多個(gè)拷貝。最好,保留文件的單個(gè)拷貝并且還保留表中每個(gè)R-VH對(duì)條目。保留每個(gè)條目是因?yàn)槊總€(gè)文件的地址R也許已經(jīng)被分發(fā)給用戶和應(yīng)用,他們將來將依賴該地址來引用文件。最后,升級(jí)標(biāo)識(shí)符權(quán)限表以將刪除的文件的那些條目映射到文件的單個(gè)剩余拷貝。例如,如前說明的,如果文件X和文件Z是拷貝并且文件Z從數(shù)據(jù)庫(kù)中刪除,那么保留在行520的條目而在列512添加映射以映射文件Z的隨機(jī)數(shù)到文件X的隨機(jī)數(shù),從而允許有文件Z的地址R的任何用戶在文件X的地址R找到該文件的拷貝。當(dāng)然該技術(shù)還用于給定文件的多個(gè)版本。
圖14是流程圖,描述從數(shù)據(jù)庫(kù)中檢索文件的技術(shù),其中隨機(jī)數(shù)用來標(biāo)識(shí)文件。在這種情形下,用戶希望從數(shù)據(jù)庫(kù)中檢索文件。在610中,用戶或者軟件應(yīng)用要求得到特定文件并且會(huì)基于先前存儲(chǔ)的那個(gè)文件的隨機(jī)數(shù)(R)尋找那個(gè)文件。用戶或者應(yīng)用從任何存儲(chǔ)有R的適合的源獲得所要求文件的R。用戶或者應(yīng)用將所要求文件的這個(gè)R提交給系統(tǒng)。在614中,通過使用R作為文件的地址或者也許作為文件的文件名,系統(tǒng)使用R來確定所要求的文件是否存在于數(shù)據(jù)庫(kù)中。在618中查閱標(biāo)識(shí)符權(quán)限表來查找文件的VH。
在622中,計(jì)算在數(shù)據(jù)庫(kù)中找到的文件的驗(yàn)證散列值(VH)。在626中,將該計(jì)算的VH與來自標(biāo)識(shí)符權(quán)限表中的條目的該文件的VH比較。如果VH值不同,那么在634中將問題報(bào)告給用戶,指出和步驟252中所述的相同的可能問題,除了由于散列函數(shù)沒有用來計(jì)算文件的地址(使用了隨機(jī)數(shù))所以這種情況下散列碰撞是不可能的以外。如果VH值相同,這指出在地址R找到的文件和當(dāng)在數(shù)據(jù)庫(kù)中第一次添加文件時(shí)最初存儲(chǔ)在該位置的文件是相同的文件。在該步驟相等的VH值可靠地指出找到的文件是用戶要求得到的文件。在630中,將文件交付給請(qǐng)求它的用戶或者軟件應(yīng)用。
圖15說明標(biāo)識(shí)符權(quán)限表840的一個(gè)實(shí)施例,其中前述的附加安全技術(shù)也應(yīng)用于此實(shí)施例,并且隨機(jī)數(shù)用來唯一地標(biāo)識(shí)文件。當(dāng)添加記錄時(shí)(即,當(dāng)添加文件或者新的R-VH對(duì)時(shí)),或者當(dāng)改變記錄時(shí)(例如,當(dāng)添加實(shí)際地址時(shí))時(shí),可以使用附加技術(shù)。例如,將時(shí)間標(biāo)記848應(yīng)用于列842-846并且除前一個(gè)記錄的數(shù)字簽名外數(shù)字簽名850還包括所有的以上各列。當(dāng)然,變體也是可能的,在變體上,將字段包括在時(shí)間標(biāo)記和數(shù)字簽名中。
計(jì)算機(jī)系統(tǒng)實(shí)施例本發(fā)明可以在各種各樣的計(jì)算機(jī)上實(shí)現(xiàn)。在一個(gè)預(yù)期的實(shí)施例中,用于存儲(chǔ)和檢索文檔的計(jì)算機(jī)硬件是從EMC公司(Hopkinton,Massachusetts)可得的Centera牌計(jì)算機(jī)。Centera產(chǎn)品說明書指南描述該計(jì)算機(jī)和它的軟件,并且可以在http//www.emc.com/pdf/products/centera/centera guide.pdf得到,并由此通過引用結(jié)合??梢允褂肔inux和JAVA編寫系統(tǒng)軟件。在該實(shí)施例中,預(yù)期Centera計(jì)算機(jī)是允許用戶經(jīng)由URL供應(yīng)消息摘要的Web站點(diǎn)的后端,如圖1所示。在Web站點(diǎn)服務(wù)器上運(yùn)行的系統(tǒng)軟件在Centera和用戶之間通過接口連接,并且允許在此所述的文件的插入和檢索。在涉及使用隨機(jī)數(shù)發(fā)生器的實(shí)施例中,可以在任何通用計(jì)算機(jī)上實(shí)現(xiàn),并且Linux也可以結(jié)合從Microsoft公司可得的.NET和C#(“C升音sharp”)語(yǔ)言來使用。
在其他實(shí)施例中,文檔存儲(chǔ)、系統(tǒng)軟件和用戶接口都駐留在單個(gè)計(jì)算機(jī)上。又在其他實(shí)施例中,服務(wù)供應(yīng)商提供與用戶接口連接的因特網(wǎng)上的前端用戶接口,而后在因特網(wǎng)上或者其他萬維網(wǎng)上搜索消息摘要標(biāo)識(shí)的文檔,而不是存儲(chǔ)文檔本身?;蛘撸植际綄?duì)等系統(tǒng)完全基于內(nèi)容可尋址的存儲(chǔ)來檢索和保證它的內(nèi)容。
圖16A和16B說明適用于實(shí)現(xiàn)本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng)900。圖16A示出計(jì)算機(jī)系統(tǒng)的一種可能的物理形式。當(dāng)然,計(jì)算機(jī)系統(tǒng)可以有許多物理形式,范圍從集成電路、印刷電路板和小型手持設(shè)備直至大型超級(jí)計(jì)算機(jī)。計(jì)算機(jī)系統(tǒng)900包括監(jiān)視器902、顯示器904、機(jī)殼906、盤驅(qū)動(dòng)器908、鍵盤910和鼠標(biāo)912。盤914是計(jì)算機(jī)可讀介質(zhì),用來傳送數(shù)據(jù)到計(jì)算機(jī)系統(tǒng)900和從計(jì)算機(jī)系統(tǒng)900傳送數(shù)據(jù)。
圖16B是計(jì)算機(jī)系統(tǒng)900的方框圖的例子。附到系統(tǒng)總線920的是各種各樣的子系統(tǒng)。將處理器922(也稱作中央處理單元,或者CPU)耦合到包括存儲(chǔ)器924的存儲(chǔ)設(shè)備上。存儲(chǔ)器924包括隨機(jī)存取存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM)。如在本領(lǐng)域眾所周知的,ROM用于向CPU單向傳送數(shù)據(jù)和指令而RAM通常用于以雙向方式傳送數(shù)據(jù)和指令。這兩類存儲(chǔ)器都可以包括以下所述的任何適合的計(jì)算機(jī)可讀介質(zhì)。固定盤926還雙向耦合到CPU 922上;它提供附加的數(shù)據(jù)存儲(chǔ)容量而且還可以包括任何以下所述的計(jì)算機(jī)可讀介質(zhì)。固定盤926可以用于存儲(chǔ)程序、數(shù)據(jù)等并且通常是次級(jí)存儲(chǔ)介質(zhì)(例如硬盤),比主存儲(chǔ)器慢。將理解,在適當(dāng)情況下,保留在固定盤926中的信息可以作為虛擬存儲(chǔ)器以標(biāo)準(zhǔn)方式結(jié)合在存儲(chǔ)器924中。可移動(dòng)盤914可以采取以下所述的任何計(jì)算機(jī)可讀介質(zhì)的形式。
CPU 922還耦合到多種輸入/輸出設(shè)備如顯示器904、鍵盤910、鼠標(biāo)912和揚(yáng)聲器930。一般而言,輸入/輸出設(shè)備可以是以下任何一種視頻顯示器、跟蹤球、鼠標(biāo)、鍵盤、麥克風(fēng)、觸感式顯示器、轉(zhuǎn)換卡閱讀器、磁帶或紙帶閱讀器、寫字板、指示筆、聲音或者筆跡識(shí)別器、生物計(jì)量閱讀器或者其他計(jì)算機(jī)。CPU 922可以任選地耦合到另一個(gè)計(jì)算機(jī)或者使用網(wǎng)絡(luò)接口940耦合到電信網(wǎng)絡(luò)。有了這樣的網(wǎng)絡(luò)接口,預(yù)期CPU可以在執(zhí)行上述方法步驟過程中從網(wǎng)絡(luò)接收信息或者可以向網(wǎng)絡(luò)輸出信息。此外,本發(fā)明的方法實(shí)施例可以完全在CPU 922上執(zhí)行或者可以結(jié)合承擔(dān)一部分處理的遠(yuǎn)程CPU在例如因特網(wǎng)的網(wǎng)絡(luò)上執(zhí)行。
另外,本發(fā)明的實(shí)施例還涉及帶有計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)存儲(chǔ)產(chǎn)品,其上有用于執(zhí)行不同的計(jì)算機(jī)實(shí)現(xiàn)的操作的計(jì)算機(jī)代碼。介質(zhì)和計(jì)算機(jī)代碼可以是特別為本發(fā)明設(shè)計(jì)和構(gòu)造的那些,或者它們可以是計(jì)算機(jī)軟件領(lǐng)域的技術(shù)人員眾所周知的和可得到的那類。計(jì)算機(jī)可讀介質(zhì)的例子包括但不限于磁介質(zhì)如硬盤、軟盤和磁帶;光介質(zhì)如CD-ROM和全息設(shè)備;磁光介質(zhì)如可光讀的盤;以及特別配置來存儲(chǔ)和執(zhí)行程序代碼的硬件設(shè)備,例如專用集成電路(ASIC)、可編程邏輯設(shè)備(PLD)和ROM及RAM設(shè)備。計(jì)算機(jī)代碼的例子包括如編譯器產(chǎn)生的機(jī)器代碼和包含使用解釋器由計(jì)算機(jī)執(zhí)行的更高級(jí)代碼的文件。
盡管為了理解清晰已經(jīng)相當(dāng)詳細(xì)地描述了前述發(fā)明,將明顯的是,在所附權(quán)利要求的范圍內(nèi)可以實(shí)現(xiàn)某些變更和修改。因此,所述實(shí)施例應(yīng)該被看作說明性的而非限制性的,并且本發(fā)明不應(yīng)該限制于在此給出的細(xì)節(jié)而應(yīng)該由下面的權(quán)利要求和它們等價(jià)物的完整范圍所定義。
權(quán)利要求
1.一種將計(jì)算機(jī)文件添加到數(shù)據(jù)庫(kù)的方法,所述方法包括接收待添加到所述數(shù)據(jù)庫(kù)的所述計(jì)算機(jī)文件;使用第一散列函數(shù)計(jì)算所述文件的第一散列值;使用第二散列函數(shù)計(jì)算所述文件的第二散列值;在所述第一散列值標(biāo)識(shí)的位置將所述文件存儲(chǔ)在數(shù)據(jù)庫(kù)中;以及將所述第一散列值和所述第二散列值添加到與所述數(shù)據(jù)庫(kù)關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),其中所述第一和第二散列值在所述數(shù)據(jù)結(jié)構(gòu)中相互關(guān)聯(lián),由此所述將所述第一和第二散列值添加到所述數(shù)據(jù)結(jié)構(gòu)指出在所述數(shù)據(jù)庫(kù)中存在所述文件。
2.如權(quán)利要求1所述的方法還包括確定所述文件的拷貝是否存在于所述數(shù)據(jù)庫(kù)中;當(dāng)確定所述文件的拷貝存在于所述數(shù)據(jù)庫(kù)中時(shí),使用所述第二散列函數(shù)計(jì)算所述文件的所述拷貝的驗(yàn)證散列值并將所述第二散列值與所述驗(yàn)證散列值比較;以及當(dāng)確定所述第二散列值與所述第一驗(yàn)證散列值匹配時(shí),采取操作。
3.如權(quán)利要求1所述的方法還包括通過搜索所述數(shù)據(jù)結(jié)構(gòu)找尋與所述第一散列值匹配的值,確定所述文件的拷貝是否已經(jīng)存在于所述數(shù)據(jù)庫(kù)中。
4.如權(quán)利要求2所述的方法還包括通過搜索所述數(shù)據(jù)結(jié)構(gòu)找尋與所述第一散列值匹配的值,確定所述文件的拷貝是否存在于所述數(shù)據(jù)庫(kù)中。
5.如權(quán)利要求1所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)是表、列表或者樹狀數(shù)據(jù)結(jié)構(gòu)。
6.如權(quán)利要求1所述的方法,其中所述第二散列函數(shù)提供比所述第一散列函數(shù)更強(qiáng)的安全性。
7.一種從數(shù)據(jù)庫(kù)中檢索要求的計(jì)算機(jī)文件的方法,所述方法包括獲得所述要求的計(jì)算機(jī)文件的唯一標(biāo)識(shí)符;使用所述唯一標(biāo)識(shí)符作為引用從所述數(shù)據(jù)庫(kù)中檢索存儲(chǔ)的文件;通過使用所述唯一標(biāo)識(shí)符從與所述數(shù)據(jù)庫(kù)關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)中檢索第一散列值—第二散列值對(duì),所述唯一標(biāo)識(shí)符與所述第一散列值匹配,其中已使用第一散列函數(shù)從所述存儲(chǔ)的文件中導(dǎo)出所述第一散列值并且已使用第二散列函數(shù)從所述存儲(chǔ)的文件中導(dǎo)出所述第二散列值;使用所述第二散列函數(shù)計(jì)算所述存儲(chǔ)的文件的驗(yàn)證散列值;將所述驗(yàn)證散列值與所述第二散列值比較;以及當(dāng)所述驗(yàn)證散列值與所述第二散列值匹配時(shí),確定所述存儲(chǔ)的文件是所述要求的文件,由此從所述數(shù)據(jù)庫(kù)中檢索所述要求的文件。
8.如權(quán)利要求7所述的方法還包括使用所述第一散列函數(shù)計(jì)算所述存儲(chǔ)的文件的尋址散列值;將所述尋址散列值與所述第一散列值比較;以及指出所述第二散列值與所述尋址散列值匹配。
9.如權(quán)利要求7所述的方法還包括當(dāng)確定所述存儲(chǔ)的文件是所述要求的文件時(shí),將所述存儲(chǔ)的文件交付給用戶。
10.如權(quán)利要求7所述的方法還包括通過搜索所述數(shù)據(jù)結(jié)構(gòu)找尋所述唯一標(biāo)識(shí)符,執(zhí)行所述檢索存儲(chǔ)的文件的步驟。
11.如權(quán)利要求7所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)是表、列表或者樹狀數(shù)據(jù)結(jié)構(gòu)。
12.如權(quán)利要求7所述的方法,其中所述第二散列函數(shù)提供比所述第一散列函數(shù)更強(qiáng)的安全性。
13.一種將散列權(quán)限功能添加到文件的數(shù)據(jù)庫(kù)的方法,所述方法包括創(chuàng)建散列權(quán)限數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括多個(gè)條目;檢索所述數(shù)據(jù)庫(kù)中第一文件的尋址散列值,已使用尋址散列函數(shù)從所述第一文件中計(jì)算出所述尋址散列值;從所述數(shù)據(jù)庫(kù)中檢索所述第一文件;使用驗(yàn)證散列函數(shù)計(jì)算所述第一文件的驗(yàn)證散列值;將所述尋址散列值和所述驗(yàn)證散列值添加到所述散列權(quán)限數(shù)據(jù)結(jié)構(gòu)的所述條目之一,在所述數(shù)據(jù)庫(kù)中所述尋址散列值和所述驗(yàn)證散列值相互關(guān)聯(lián)。
14.如權(quán)利要求13所述的方法,其中所述散列權(quán)限數(shù)據(jù)結(jié)構(gòu)是表、列表或者樹狀數(shù)據(jù)結(jié)構(gòu)。
15.如權(quán)利要求13所述的方法,其中所述驗(yàn)證散列函數(shù)提供比所述尋址散列函數(shù)更強(qiáng)的安全性。
16.如權(quán)利要求13所述的方法還包括對(duì)于所述數(shù)據(jù)庫(kù)中所述多個(gè)文件的其余每個(gè)執(zhí)行權(quán)利要求13的最后四個(gè)步驟。
17.一種在文件的數(shù)據(jù)庫(kù)中升級(jí)驗(yàn)證散列函數(shù)的方法,所述方法包括訪問表示所述文件的數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括所述數(shù)據(jù)庫(kù)中每個(gè)所述文件的尋址散列值—驗(yàn)證散列值對(duì),其中已使用尋址散列函數(shù)計(jì)算出所述尋址散列值,并且已使用所述驗(yàn)證散列函數(shù)計(jì)算出所述驗(yàn)證散列值;以及對(duì)于所述數(shù)據(jù)庫(kù)中的每個(gè)所述文件,檢索所述文件,使用更強(qiáng)的驗(yàn)證散列函數(shù)計(jì)算所述文件的新的驗(yàn)證散列值,并且將所述新的驗(yàn)證散列值添加到與所述文件的所述尋址散列值關(guān)聯(lián)的所述數(shù)據(jù)結(jié)構(gòu)。
18.如權(quán)利要求17所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)是表、列表或者樹狀數(shù)據(jù)結(jié)構(gòu)。
19.一種使用隨機(jī)數(shù)發(fā)生器將計(jì)算機(jī)文件添加到數(shù)據(jù)庫(kù)的方法,所述方法包括接收待添加到所述數(shù)據(jù)庫(kù)的所述計(jì)算機(jī)文件;使用所述隨機(jī)數(shù)發(fā)生器生成所述文件的隨機(jī)數(shù);使用驗(yàn)證散列函數(shù)計(jì)算所述文件的驗(yàn)證散列值;在所述隨機(jī)數(shù)標(biāo)識(shí)的位置將所述文件存儲(chǔ)在所述數(shù)據(jù)庫(kù)中;以及將所述隨機(jī)數(shù)和所述驗(yàn)證散列值添加到與所述數(shù)據(jù)庫(kù)關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)中的條目,其中所述隨機(jī)數(shù)和所述驗(yàn)證散列值在所述數(shù)據(jù)結(jié)構(gòu)中相互關(guān)聯(lián),由此所述數(shù)據(jù)結(jié)構(gòu)中所述條目的添加指出所述數(shù)據(jù)庫(kù)中所述文件的存在。
20.如權(quán)利要求19所述的方法還包括通過搜索所述數(shù)據(jù)結(jié)構(gòu)找尋與所述驗(yàn)證散列值匹配的值,確定所述文件的拷貝是否已經(jīng)存在于所述數(shù)據(jù)庫(kù)中。
21.如權(quán)利要求19所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)是表、列表或者樹狀數(shù)據(jù)結(jié)構(gòu)。
22.一種使用隨機(jī)數(shù)發(fā)生器將計(jì)算機(jī)文件添加到文件的數(shù)據(jù)庫(kù)的方法,所述方法包括接收待添加到所述數(shù)據(jù)庫(kù)的所述計(jì)算機(jī)文件;訪問表示所述數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括所述數(shù)據(jù)庫(kù)中每個(gè)所述文件的隨機(jī)數(shù)—驗(yàn)證散列值對(duì),其中已使用所述隨機(jī)數(shù)發(fā)生器計(jì)算出所述隨機(jī)數(shù),并且已使用驗(yàn)證散列函數(shù)計(jì)算出所述驗(yàn)證散列值;使用所述驗(yàn)證散列函數(shù)計(jì)算所述文件的新的驗(yàn)證散列值;通過搜索所述數(shù)據(jù)結(jié)構(gòu)找尋與所述新的驗(yàn)證散列值匹配的值,確定所述文件的拷貝是否已經(jīng)存在于所述數(shù)據(jù)庫(kù)中;當(dāng)確定所述文件的拷貝已經(jīng)存在于所述數(shù)據(jù)庫(kù)中時(shí),將與所述文件的所述拷貝關(guān)聯(lián)的隨機(jī)數(shù)返回給用戶,所述隨機(jī)數(shù)與所述新的驗(yàn)證散列值關(guān)聯(lián)。
23.如權(quán)利要求22所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)是表、列表或者樹狀數(shù)據(jù)結(jié)構(gòu)。
24.一種使用隨機(jī)數(shù)發(fā)生器將計(jì)算機(jī)文件添加到文件的數(shù)據(jù)庫(kù)的方法,所述方法包括接收待添加到所述數(shù)據(jù)庫(kù)的所述計(jì)算機(jī)文件;使用所述隨機(jī)數(shù)發(fā)生器生成所述文件的第一隨機(jī)數(shù);訪問表示所述數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括所述數(shù)據(jù)庫(kù)中每個(gè)所述文件的隨機(jī)數(shù)—驗(yàn)證散列值對(duì),其中已使用所述隨機(jī)數(shù)發(fā)生器計(jì)算出所述隨機(jī)數(shù),并且已使用驗(yàn)證散列函數(shù)計(jì)算出所述驗(yàn)證散列值;使用所述驗(yàn)證散列函數(shù)計(jì)算所述文件的新的驗(yàn)證散列值;通過搜索所述數(shù)據(jù)結(jié)構(gòu)找尋與所述新的驗(yàn)證散列值匹配的值,確定所述文件的拷貝是否已經(jīng)存在于所述數(shù)據(jù)庫(kù)中;當(dāng)確定所述文件的拷貝已經(jīng)存在于所述數(shù)據(jù)庫(kù)中時(shí),將所述第一隨機(jī)數(shù)和所述新的驗(yàn)證散列值作為條目添加到所述數(shù)據(jù)結(jié)構(gòu),從與所述文件的所述拷貝關(guān)聯(lián)的所述數(shù)據(jù)結(jié)構(gòu)中檢索第二隨機(jī)數(shù),將把所述第一隨機(jī)數(shù)映射到所述第二隨機(jī)數(shù)的映射添加到所述條目,由此所述第一隨機(jī)數(shù)的引用映射到所述第二隨機(jī)數(shù)以便于訪問所述文件。
25.如權(quán)利要求24所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)是表、列表或者樹狀數(shù)據(jù)結(jié)構(gòu)。
26.一種使用隨機(jī)數(shù)發(fā)生器從數(shù)據(jù)庫(kù)中檢索要求的計(jì)算機(jī)文件的方法,所述方法包括獲得與所述要求的計(jì)算機(jī)文件關(guān)聯(lián)的隨機(jī)數(shù),使用隨機(jī)數(shù)發(fā)生器為所述文件生成所述隨機(jī)數(shù);使用所述隨機(jī)數(shù)作為引用從所述數(shù)據(jù)庫(kù)中檢索存儲(chǔ)的文件;使用所述隨機(jī)數(shù)從與所述數(shù)據(jù)庫(kù)關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)中查找關(guān)聯(lián)的第一散列值,其中已使用驗(yàn)證散列函數(shù)從所述存儲(chǔ)的文件中計(jì)算出所述第一散列值;使用所述驗(yàn)證散列函數(shù)計(jì)算所述存儲(chǔ)的文件的第二散列值;將所述第一散列值與所述第二散列值比較;以及當(dāng)所述第一散列值與所述第二散列值匹配時(shí),確定所述存儲(chǔ)的文件是所述要求的文件,由此從所述數(shù)據(jù)庫(kù)中檢索所述要求的文件。
27.如權(quán)利要求26所述的方法還包括當(dāng)確定所述存儲(chǔ)的文件是所述要求的文件時(shí),將所述存儲(chǔ)的文件交付給用戶。
28.如權(quán)利要求26所述的方法還包括通過搜索所述數(shù)據(jù)結(jié)構(gòu)找尋所述隨機(jī)數(shù),執(zhí)行所述檢索存儲(chǔ)的文件的步驟。
29.如權(quán)利要求26所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)是表、列表或者樹狀數(shù)據(jù)結(jié)構(gòu)。
全文摘要
用于內(nèi)容尋址的散列函數(shù)不同于用于內(nèi)容驗(yàn)證的散列函數(shù)。將文件添加到數(shù)據(jù)庫(kù)涉及將兩個(gè)散列函數(shù)值成對(duì)存儲(chǔ)在表中。驗(yàn)證數(shù)據(jù)庫(kù)中確信是副本的文件的完整性,或者當(dāng)檢索文件時(shí),利用驗(yàn)證散列函數(shù)??梢赃B續(xù)校驗(yàn)文件??梢允褂枚鄬訑?shù)據(jù)庫(kù)??梢詫⒌诙⒘泻瘮?shù)添加到現(xiàn)有系統(tǒng)??梢陨?jí)驗(yàn)證散列函數(shù)并且可以使用多于一個(gè)的內(nèi)容驗(yàn)證散列函數(shù)。在變體中,隨機(jī)數(shù)發(fā)生器替代散列函數(shù)用于內(nèi)容尋址;還使用驗(yàn)證散列函數(shù)。使用隨機(jī)數(shù)尋址的文件被添加到數(shù)據(jù)庫(kù)或者從數(shù)據(jù)庫(kù)中檢索,并且它們的驗(yàn)證散列值得到校驗(yàn)。為安全性使用時(shí)間標(biāo)記和數(shù)字簽名。
文檔編號(hào)G06F21/00GK1777853SQ200480010549
公開日2006年5月24日 申請(qǐng)日期2004年2月19日 優(yōu)先權(quán)日2003年2月21日
發(fā)明者P·R·M·卡彭捷, P·福里特, M·J·P·A·威廉斯 申請(qǐng)人:卡林戈公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1