專利名稱:用于驗證遠程數據的完整性的協議的制作方法
用于驗證遠程數據的完整性的協議背景存在許多遠程地存儲數據的原因。例如,備份站點外數據的要求,使相同的數據可 由多個辦公司容易地訪問的要求等。另外,新興的所謂Web 2.0分布式應用程序中的某一 些需要用戶遠程地存儲數據。然而,在所有這些場景中,當一人想要檢查遠程存儲的數據的 完整性時引發(fā)了重大問題。傳統(tǒng)方法訪問遠程存儲位置,并且隨后請求數據傳輸。一旦遠 程存儲的數據被接收,用戶隨后將所接收的數據與已知完整性的數據(例如,原始數據或 原始數據的經驗證的副本)進行比較。在具有web接口和遠程數據存儲的分布式應用程序 的上下文中,該遠程數據存儲的帶寬可以是有限的。因此,當許多用戶想要檢查他們數據的 完整性時(例如,在某一“標準”、定期的基礎上),帶寬需求隨著大量數據被訪問和傳輸而 激增。盡管在Web 2.0的上下文中提出了各種問題,但在該上下文以及其他上下文中存在 其他問題。隨后的描述標識了附加問題,并且呈現了可允許對遠程存儲的數據的高效驗證 的示例性協議。概述一種用于驗證遠程存儲的數據的完整性的示例性方法,包括提供密鑰;提供指 紋,該指紋使用該密鑰以應用于已知完整性的數據的加密鑰的密碼散列函數來生成;將該 密鑰發(fā)送到存儲已知完整性的數據的副本的遠程存儲位置;從該遠程存儲位置接收指紋, 該指紋使用該密鑰以應用于該數據的遠程存儲的副本的加密鑰的密碼散列函數來生成;以 及至少部分地基于將所提供的指紋與所接收的指紋進行比較來驗證該數據的遠程存儲的 副本的完整性。還公開了其他示例性方法、系統(tǒng)等。
參考以下附圖描述非限制性和非窮盡的示例圖1是用于驗證遠程存儲的數據的完整性的傳統(tǒng)系統(tǒng)的圖示;圖2是用于驗證遠程存儲的數據的完整性的示例性系統(tǒng)的圖示;圖3是用于驗證遠程存儲的數據的完整性的示例性方法的框圖;圖4是與參與系統(tǒng)以便對數據進行遠程存儲和對這些數據進行驗證的各方相關 聯的各種組件的框圖;圖5是用于數據的遠程存儲和這些數據的驗證的示例性系統(tǒng),任選地是對等系統(tǒng) 的圖示;以及圖6是示例性計算設備的框圖。詳細描述此處所描述的各種示例性方法、設備和系統(tǒng)涉及驗證遠程存儲的數據的完整性。 一種示例性協議提供了高效的完整性檢驗,并且允許諸如對等系統(tǒng)等高效系統(tǒng)的形成,其 中對等體可備份彼此的數據,并且驗證備份數據的完整性,而無需傳輸該備份數據。如下所 解釋的,參考附圖,一示例性協議包括密鑰的傳輸以及指紋的接收,其中該指紋至少部分地 基于該密鑰并且至少部分地基于正經歷完整性檢驗的遠程存儲的數據來生成。此協議可用
4任何各種方式和系統(tǒng)來實現。為了更好地理解傳統(tǒng)系統(tǒng)面臨的問題,描述了典型的傳統(tǒng)系 統(tǒng),之后是使用這一示例性基于密鑰/指紋的協議的示例性系統(tǒng)。圖1示出了用于驗證遠程數據的完整性的傳統(tǒng)系統(tǒng)100以及相關聯的時間線102。 系統(tǒng)100包括具有相關聯的計算機100和用于存儲數據的數據存儲112的“本地”方X。系 統(tǒng)100還包括具有相關聯的計算機120和用于存儲數據的數據存儲122的“遠程”方Y。網 絡105允許在X方的計算機100與Y方的計算機120之間發(fā)生通信。時間線102示出了通常發(fā)生在用于驗證遠程數據的完整性的傳統(tǒng)方法中的各步 驟。在步驟A,X方從數據114生成副本115,并且將該副本115發(fā)送到Y方。在步驟B,Y 方接收經由網絡105所傳輸的該副本115。在執(zhí)行步驟A和B時,數據114的完整性可能受 損。例如,副本115可能缺少完整性,和/或經由網絡105的傳輸可能破壞副本115。盡管 可能發(fā)生后一種類型的破壞,但在圖1的示例中,為簡明起見,數據115被表示為被發(fā)送和 接收而沒有破壞。在Y方接收數據115之后,在步驟C,數據115被存儲在數據存儲122處作為數據 116。數據116表示最初具有完整性或例如因寫錯誤或其他錯誤而不具有完整性的數據。或 者,隨著時間的推移,會發(fā)生影響數據116的完整性的某種過程,使得它不再表示數據114 的準確的副本。根據步驟D,X方想要驗證發(fā)送到Y方的數據的完整性。此查詢可以用各種方式中 的任一種來發(fā)生。例如,X方可呼叫Y方、發(fā)電子郵件給Y方、或采取提示Y方響應該查詢 的某種其他動作。在步驟E,Y方通過同意發(fā)送其存儲的數據116的副本來響應X方。在該示例中,在制作所存儲的數據116的副本時可能發(fā)生一個或多個錯誤。此外, 分別在其中Y方發(fā)送其所存儲的數據116的副本到X方的步驟F和其中X方接收并存儲所 存儲的數據116的副本的步驟G,可能發(fā)生破壞所存儲的數據116的副本的其他錯誤。例 如,“錯誤”中的某一些可以是由Y方所引起的對數據的惡意破壞。在步驟H,X方執(zhí)行比較來將從Y方所接收的數據116與其數據114作比較。盡管 該比較旨在驗證遠程存儲的數據的完整性,但如所解釋的,該比較可充滿可使驗證挫敗的 問題。在要驗證的數據例如是大文件時,這些問題可能被混合(例如,較多的讀/寫錯誤、 傳輸錯誤等的機會)。在圖1的示例中,X方可被認為是數據“所有者”。盡管此示例示出了 X方執(zhí)行遠 程數據的驗證,但在一替換方案中,X方可以將此責任或任務委托給第三方。然而,這一委 托將不解決可能發(fā)生的問題的本質或數量。實際上,這一委托將使驗證甚至更易于發(fā)生錯誤。作為另一替換方案,X方可以是數據114的所有者,但將該數據存儲在第三方存儲 提供者處。無論配置如何,在需要數據傳輸來執(zhí)行出于驗證該數據的完整性的目的的比較 時存在問題。在許多對等環(huán)境中存在另一場景。例如,在對等環(huán)境中,用戶機器(對等體)可存 儲“屬于”一個或多個其他用戶(即,由其擁有)的數據。在這一示例中,出于驗證遠程數 據的完整性的目的的遠程數據副本的傳送可能是麻煩且昂貴的,并且對于對等網絡的性能 和用戶體驗是有害的。存在又一場景,其中一個人將大量數據存儲在諸如Amazon S3服務等遠程存儲提供者上。在這一場景中,數據傳送可能是昂貴的。因此,出于驗證遠程數據的完整性的目的 來傳輸遠程數據副本是不合需要的。如此處所描述的,一示例性協議克服了與圖1的系統(tǒng)100和/或一個或多個上述 場景相關聯的各種問題。具體地,一示例性協議允許數據所有者驗證這些遠程存儲的數據 的完整性。此外,數據所有者可將完整性檢驗能力委托給第三方。這一示例性協議可由多 個對等應用程序來使用。圖2示出了包括三方的示例性系統(tǒng)200以便沿時間線202示出示例性協議的操 作。如圖2所示,系統(tǒng)200包括作為X方且具有相關聯的計算機210和用于存儲數據的數 據存儲212的數據所有者、作為Y方且具有相關聯的計算機220和用于存儲數據的數據存 儲222的存儲提供者、以及作為Z方且具有相關聯的計算機230和用于存儲用于驗證數據 的信息的數據存儲232的確認者。網絡205允許在X方的計算機210、Y方的計算機220和 Z方的計算機230之間發(fā)生通信。在圖2的場景中,認為存儲提供者Y安全地存儲從數據所有者X所獲得的數據,并 且確認者Z需要能夠高效地驗證存儲提供者Y具有從數據所有者X所獲得的數據的準確的 (例如,確切的)副本,而不需要傳送該數據的任何重要的部分。數據所有者X和確認者Z 可以是相同的用戶或是不同的用戶。例如,在圖1的傳統(tǒng)系統(tǒng)100中,X方被描述為是數據 所有者和確認者(即,最終驗證數據的完整性的一方)。時間線202示出了通常在用于依賴示例性協議來驗證遠程數據的完整性的示例 性方法中發(fā)生的各種步驟。在步驟Α,X方從數據214生成副本215,并且將該副本215發(fā) 送到Y方。在步驟B,Y方接收經由網絡205所傳輸的該副本215。在執(zhí)行步驟A和B時, 數據214的完整性可能受損。例如,副本215可能缺少完整性,和/或經由網絡205的傳輸 可能破壞副本215。盡管可能發(fā)生后一種類型的破壞,但在圖2的示例中,為簡明起見,數據 215被表示為被發(fā)送和接收而沒有破壞。在Y方接收數據215之后,在步驟C,數據215被存儲在數據存儲222處作為數據 216。數據216表示最初具有完整性或例如因寫錯誤或其他錯誤而不具有完整性的數據。 或者,隨著時間的推移,可能發(fā)生影響數據216的完整性的某種過程,使得它不再表示數據 214的準確的副本。在各種場景中,數據可能被Y方或惡意攻擊Y方的其他人故意地破壞。在可能缺 少損害數據所有者的嚴重意圖的場景中,Y方可僅期望更多的存儲器(例如,硬盤驅動器空 間)來存儲它自己的數據。如所解釋的,示例性方案需要Y方有具備完整性的數據的副本。 這阻止Y方例如用隨機字節(jié)進行響應來模仿所存儲的數據的完整性或存在性。在圖2中,步驟A、B和C本質上與在圖1的傳統(tǒng)時間線102中發(fā)生的那些步驟相 同。然而,之后的步驟由于它們依賴于可消除圖1的系統(tǒng)100中存在的各種問題的示例性 協議而不同。根據時間線202,在步驟D,該步驟D可在將數據215從X方發(fā)送到Y方之前發(fā)生, X方將信息242、244發(fā)送到Z方,即確認者,用于確認或驗證在X方(即,計算機210和數 據存儲21 的遠程所存儲的數據的完整性。根據示例性協議,信息242是一個或多個位串 (例如,1,2,…,k,其中k>0),并且信息244是至少部分從該位串中的一個所生成的指 紋;注意到在某些情況下,指紋可從一個以上位串中生成。位串可例如使用隨機數生成器來
6生成,或使用主密鑰來偽隨機地生成。在圖2的示例中,k個位串其中k>0)的每一 個被用作加密鑰的密碼散列函數的密鑰,其中該散列函數隨后被應用于數據來生成對應的 指紋,并且總共有k個指紋M4。在步驟E,該步驟E發(fā)生在步驟C之后的某一時間(或某些時間),Z方通過向Y 方發(fā)送一個或多個位串242來向Y方發(fā)出質詢。這一通信可經由網絡205或通過其他手 段(例如,安全線,專用線,等)來發(fā)生。在步驟F,Y方通過基于一個或多個所接收的位串
例如,使用加密鑰的密碼散列函數和計算機220)及其所存儲的數據(例如,遠程方擁 有的所存儲的數據)來生成一個或多個指紋M5,并且隨后將該一個或多個指紋245發(fā)送到 Z方來響應該質詢。在步驟G,Z方例如通過將從Y方所接收的一個或多個指紋245與從X方所接收的 適當的一個或多個指紋244作比較來驗證這些指紋。因此,在系統(tǒng)200中,示例性協議不需要遠程存儲的數據的傳輸來驗證該數據的 完整性。相反,需要計算步驟來基于質詢(例如,位串,即用于加密鑰的密碼散列函數的密 鑰)生成至少一個指紋。由于單個位串和指紋相比于要驗證的數據的大小可能相當小,因此通信可高效地 發(fā)生而開銷極小。此外,這一通信可在諸如專用電話線等其中帶寬有限的各種通信路徑上 發(fā)生。圖3示出了用于驗證遠程存儲的數據的完整性的示例性方法300。在提供框304 中,提供了密鑰。在另一提供框308中,提供了指紋,其中該指紋使用該密鑰以應用于已知 完整性的數據的加密鑰的密碼散列函數來生成。盡管框304和308被示為單獨的框,但這 些動作可在提供一個或多個密鑰/指紋對的單個提供框中發(fā)生。在發(fā)送框312中,該密鑰 被發(fā)送到存儲已知完整性的數據的副本的遠程存儲位置。接收框316從遠程存儲位置接收 指紋,其中該指紋使用該密鑰以應用于該數據的遠程存儲的副本的加密鑰的密碼散列函數 來生成。驗證框320至少部分地基于將所提供的指紋與所接收的指紋進行比較來驗證該數 據的遠程存儲的副本的完整性。以這一方式,遠程存儲的數據的完整性可被驗證,而無需從 遠程存儲位置傳輸數據。圖4示出了所有者410、存儲者420和確認者430的各種組件(例如,諸如圖2的 系統(tǒng)200中所示的那些)。各組件任選地(且通常)是用于在所有者側機器、存儲者側機 器、確認者側機器等上執(zhí)行的軟件組件。如已經提到的,所有者還可作為其自己的確認者來 操作以便確認所有者自己的遠程數據。在這一場景中,單個機器(例如,計算設備)可包括 所有者組件以及確認者組件的各種模塊。此外,所有者可作為一個或多個其他所有者的存 儲者來操作。在這一場景中,單個機器可包括所有者組件以及存儲者組件的各種模塊。所有者410包括所有者側組件412,它包括串生成器模塊413和指紋生成器模塊 414。這些模塊的對應功能的示例已經在上文中參考圖2的系統(tǒng)200來呈現。存儲者420包括存儲者側組件422,它包括用于將所有者與所存儲的數據相關聯 的所有者/存儲者表模塊423、以及用于響應于質詢來生成指紋的指紋生成器模塊414,如 已經描述的。確認者430包括確認者側組件432,它包括用于將所有者與所存儲的數據相關聯 的所有者/存儲者表模塊433,用于調度質詢或位串和/或指紋的更新的調度器模塊434,用于管理用于來發(fā)出質詢的串和用于驗證質詢的指紋的串/指紋管理模塊435,用于驗證 響應于質詢所接收的指紋的驗證模塊436,以及在與確認相關聯的各種任務中的任一個中 使用的一組應用程序編程接口(API)437。例如,所有者可經由API調用來訪問確認者以便 通知該所有者關于是否成功完成了質詢,該API調用指定文件、存儲位置(例如,存儲者)、 一系列位串以及對應的指紋、用于向存儲者的發(fā)出質詢的時間表以及聯系信息(例如,電 子郵件地址等)。確認者可包括存儲者響應質詢所使用的API。例如,在接收到質詢之后, 存儲者可做出API調用,該API調用包括一個或多個指紋,且任選地連同與所存儲的正被驗 證的數據相關的一條或多條其他信息(例如,在最近三周中被訪問兩次的數據、由于缺少 訪問而被壓縮的數據、被X方訪問的數據、等等)。以這一方式,存儲者可向確認者返回可幫 助數據所有者管理數據或對于該數據進行動作的信息。 圖5示出了示例性系統(tǒng)500,其中經由網絡505通信的兩方510、520協同操作來存 儲其數據中的至少某一些(例如,作為備份)。510方和520方中的每一方都使用計算設備 來操作,該計算設備包括所有者側組件512、存儲者側組件522以及確認者側組件532,諸如 參考圖4所描述的那些組件。510方具有相關聯的數據存儲512,并且520方具有相關聯的 數據存儲522。在圖5的示例中,510方制作其數據515的副本516,并且將該副本516發(fā)送到520 方以供存儲。類似地,520方制作其數據525的副本526,并且將該副本5 發(fā)送到510方 以供存儲。如已經解釋的,510和520方可使用示例性協議來確認他們遠程存儲的數據,該 示例性協議依賴發(fā)出質詢、以及至少部分基于該質詢和至少部分基于所存儲的要驗證的數 據來返回指紋。可復制圖5的示例性系統(tǒng)500用于對等系統(tǒng)中的存儲交換。存儲交換允許一個人 以提供他的盤空間的某一部分用于其他人的備份數據為代價來在其他用戶的機器上備份 他們的數據。例如,在用戶“共享” 1. 5GB她的硬盤驅動器空間的之后,該用戶被允許在其他 對等體上備份IGB她的個人文件。存儲交換可使用示例性位串/指紋協議來確保對等體不 刪除或修改其他對等體的數據。在另一場景中,用戶可能希望在諸如Amazon S3等其中通信可能是昂貴的遠程存 儲服務上存儲數據。示例性位串/指紋協議的使用可幫助確保(a)存儲提供者仍存儲數據 以及(b)存儲提供者沒有修改數據。由于協議可以用最少通信來實現,因此這些保證可用 非常小的通信成本來實現。如此處所描述的,示例性協議可用于驗證存儲在遠程機器上的數據的完整性。這 一協議提供了向另一方(例如,確認者)委托驗證權利的能力。在各種示例中,協議使用通 過將密碼散列函數應用于所存儲的數據所生成的指紋來驗證該數據的完整性。盡管各種示 例旨在用于驗證遠程數據,但所有者可能希望通過使用高完整性存儲者作為完整性度量來 驗證其自己(例如,本地)所存儲的數據的完整性。如此處所描述的,示例性確認者方法可產生質詢并且驗證該質詢。作為協議,包 括質詢和響應的交互序列克服了與通過發(fā)送數據的副本的驗證相關聯的許多問題(見,例 如,圖1的傳統(tǒng)系統(tǒng)100)。如此處所描述的,示例性確認者可被編程為執(zhí)行周期性的更新。此外,確認者可基 于關于存儲者的歷史信息來調度查詢。例如,如果已知存儲者缺少完整性,則確認者可發(fā)出更頻繁的質詢。相反,對于具有所展示的完整性的存儲者,質詢的頻率可以相當小。一般而 言,示例性確認者可取決于環(huán)境以增大或減小的時間間隔發(fā)出周期性的質詢。如此處所描述的,一示例性方法可包括調度質詢的發(fā)出來檢驗一方或多方所存儲 的數據的完整性,其中所發(fā)出的質詢要求被質詢的一方(例如,行動來遠程地存儲數據所 有者的數據的存儲者)應用加密鑰的密碼散列函數;以及至少部分地基于一方滿足一個或 多個所發(fā)出的質詢(例如,成功的質詢或不成功的質詢)的能力來調整對該方的發(fā)出頻率。 例如,在一方無法滿足一個或多個所發(fā)出的質詢時可增加頻率?;蛘?,在一方滿足一個或多 個所發(fā)出的質詢時減少頻率。這一方法可包括從所存儲的數據的一個或多個所有者獲得質 詢信息,例如,其中該獲得周期性地發(fā)生并且允許數據所有者提供新的質詢信息。如此處所描述的,示例性對等系統(tǒng)包括一個或多個計算設備,該一個或多個計算 設備被配置成本地存儲數據,其中本地存儲的數據包括本地所有者所擁有的數據以及遠 程所有者所擁有的數據副本;接收與遠程所有者所擁有的數據副本相關聯的密鑰;使用該 密鑰以應用于遠程所有者所擁有的數據副本的加密鑰的密碼散列函數來生成指紋;以及將 該指紋發(fā)送到對等系統(tǒng)中的另一計算設備用于驗證遠程所有者所擁有的數據副本的完整 性。在這一系統(tǒng)中,其他計算設備可被配置成接收指紋,并且將該指紋與使用該密鑰以應用 于遠程所有者所擁有的已知完整性的數據的加密鑰的密碼散列函數所生成的指紋作比較。在示例性對等體統(tǒng)中,一個或多個計算設備可被配置成生成密鑰,以及使用該密 鑰以應用于已知完整性的數據的加密鑰的密碼散列函數來生成指紋。這一計算系統(tǒng)可進一 步被配置成將密鑰和指紋發(fā)送到對等系統(tǒng)中的一個或多個計算設備。此外,對等系統(tǒng)可包 括用于對發(fā)送密鑰到對等系統(tǒng)中的一個或多個計算設備進行調度的一個或多個時間表。示例性計算設備圖6示出了可用于實現各示例性組件并形成示例性系統(tǒng)的示例性計算設備600。 例如,圖2的系統(tǒng)的計算設備可以包括設備600的各種特征。在非?;镜呐渲弥校嬎阍O備600通常包括至少一個處理單元602和系統(tǒng)存儲 器604。取決于計算設備的確切配置和類型,系統(tǒng)存儲器604可以是易失性的(諸如RAM)、 非易失性的(諸如ROM、閃存等等)或兩種類型的某種組合。系統(tǒng)存儲器604通常包括操 作系統(tǒng)605、一個或多個程序模塊606,且可以包括程序數據607。操作系統(tǒng)605包括基于 組件的框架620,其支持組件(包括屬性和事件)、對象、繼承、多態(tài)性、反射,并且提供面 向對象的基于組件的應用程序編程接口(API),諸如由華盛頓州雷蒙德市的微軟公司制造 的.NET 框架的API。計算設備600具有由虛線608劃分的非常基本的配置。同樣,一終 端可具有更少的組件,但將與可具有這一基本配置的計算設備交互。計算設備600可具有附加特征或功能。例如,計算設備600還可包括附加數據存 儲設備(可移動和/或不可移動),諸如例如磁盤、光盤或磁帶。這樣的附加存儲在圖6中 由可移動存儲609和不可移動存儲610例示。計算機存儲介質可包括以用于存儲諸如計算 機可讀指令、數據結構、程序模塊或其他數據等信息的任何方法或技術實現的易失性和非 易失性、可移動和不可移動介質。系統(tǒng)存儲器604、可移動存儲609和不可移動存儲610都 是計算機存儲介質的示例。計算機存儲介質包括,但不限于,RAM、R0M、EEPR0M、閃存或其他 存儲器技術、CD-ROM、數字多功能盤(DVD)或其他光盤存儲、磁帶盒、磁帶、磁盤存儲或其他 磁性存儲設備、或能用于存儲所需信息且可以由計算設備600訪問的任何其他介質。任何這樣的計算機存儲介質都可以是設備600的一部分。計算設備600也可具有諸如鍵盤、鼠 標、筆、語音輸入設備、觸摸輸入設備等的輸入設備612。也可包括輸出設備614,如顯示器、 揚聲器、打印機等等。這些設備在本領域中是已知的,這里就不再對它們進行詳細討論。計算設備600還可包含允許該設備諸如通過網絡(例如考慮上述圖2的網絡205) 來與其他計算設備618進行通信的通信連接616。通信連接616是通信介質的一個示例。 通信介質通??梢跃唧w化為計算機可讀指令、數據結構、程序模塊等。盡管用結構特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權 利要求書中定義的主題不必限于上述具體特征或動作。相反,上文所描述的具體特征和動 作是作為實現權利要求的示例形式來公開的。
權利要求
1.一種用于驗證遠程存儲的數據的完整性的方法,所述方法包括 提供密鑰;提供指紋,所述指紋使用所述密鑰以應用于已知完整性的數據的加密鑰的密碼散列函 數來生成;將所述密鑰發(fā)送到存儲所述已知完整性的數據的副本的遠程存儲位置; 從所述遠程存儲位置接收指紋,所述指紋使用所述密鑰以應用于所述數據的遠程存儲 的副本的加密鑰的密碼散列函數來生成;以及至少部分地基于將所提供的指紋與所接收的指紋進行比較來驗證所述數據的遠程存 儲的副本的完整性。
2.如權利要求1所述的方法,其特征在于,所述密鑰任選地包括位串,任選地包括隨機 生成的密鑰,任選地包括對應于所述已知完整性的數據的一個或一系列密鑰,或任選地包 括通過將偽隨機數生成器應用于主密鑰來生成的一系列密鑰中的一個密鑰。
3.如權利要求1所述的方法,其特征在于,所提供的指紋包括對應于所述已知完整性 的數據的一系列指紋中的一個指紋。
4.如權利要求1所述的方法,其特征在于,所提供的密鑰和所提供的指紋任選地作為 一對來提供,并且所述已知完整性的數據的所有者任選地提供所述密鑰和所述指紋。
5.如權利要求1所述的方法,其特征在于,所述發(fā)送根據時間表來發(fā)生。
6.如權利要求1所述的方法,其特征在于,進一步包括提供一個以上的密鑰,并且提供 一個以上的指紋,其中每一所提供的指紋對應于所提供的密鑰中的一個。
7.如權利要求1所述的方法,其特征在于,所述驗證發(fā)生在計算設備處,所述計算設備 提供所述密鑰,提供所述指紋,將所述密鑰發(fā)送到所述遠程存儲位置,并且從所述遠程存儲 位置接收所述指紋。
8.一種計算設備,包括 一個或多個處理器;用于存儲密鑰和指紋的存儲器,所述指紋使用所述密鑰以應用于已知完整性的數據的 加密鑰的密碼散列函數來生成;包括指令的組件,所述指令用于將所述密鑰發(fā)送到存儲所述已知完整性的數據的副本 的遠程存儲位置;從所述遠程存儲位置接收指紋,所述指紋使用所述密鑰以應用于所述數 據的遠程存儲的副本的加密鑰的密碼散列函數來生成;以及至少部分地基于將所提供的指 紋與所接收的指紋進行比較來驗證所述數據的遠程存儲的副本的完整性;任選地包括存儲,所述存儲用于存儲所述已知完整性的數據,并且使用所述密鑰以應 用于所述已知完整性的數據的加密鑰的密碼散列函數來生成所述指紋;以及 任選地包括用于遠程存儲另一者所擁有的數據的存儲。
9.一種對等系統(tǒng),包括計算設備,所述計算設備被配置成本地存儲數據,其中所述本地存儲的數據包括本地所有者所擁有的數據以及遠程所有 者所擁有的數據副本;接收與所述遠程所有者所擁有的數據副本相關聯的密鑰;使用所述密鑰以應用于所述遠程所有者所擁有的數據副本的加密鑰的密碼散列函數來生成指紋;以及將所述指紋發(fā)送到所述對等網絡中的另一計算設備用于驗證所述遠程所有者所擁有 的數據副本的完整性。
10. 一種至少部分地由計算設備實現的方法,包括調度質詢的發(fā)出來檢驗一方或多方所存儲的數據的完整性,其中所發(fā)出的質詢要求被 質詢方應用加密鑰的密碼散列函數,并且所述被質詢方行動來遠程地存儲數據所有者的所 述數據;至少部分地基于一方滿足一個或多個所發(fā)出的質詢的能力來調整對該方的發(fā)出頻率;以及任選地從所存儲的數據的一個或多個所有者獲得質詢信息,其中所述獲得任選地周期 性地發(fā)生。
全文摘要
一種用于驗證遠程存儲的數據的完整性的方法,包括提供密鑰;提供指紋,該指紋使用該密鑰以應用于已知完整性的數據的加密鑰的密碼散列函數來生成;將該密鑰發(fā)送到存儲已知完整性的數據的副本的遠程存儲位置;從該遠程存儲位置接收指紋,該指紋使用該密鑰以應用于該數據的遠程存儲的副本的加密鑰的密碼散列函數來生成;以及至少部分地基于將所提供的指紋與所接收的指紋進行比較來驗證該數據的遠程存儲的副本的完整性。還公開了其他示例性方法、系統(tǒng)等。
文檔編號H04L9/30GK102099812SQ200980128925
公開日2011年6月15日 申請日期2009年4月7日 優(yōu)先權日2008年5月20日
發(fā)明者A·米佳金, D·X·查爾斯, K·E·勞特 申請人:微軟公司