專利名稱:創(chuàng)建和確認(rèn)密碼保護(hù)文檔的制作方法
創(chuàng)建和確認(rèn)密碼保護(hù)文檔
北且 冃尿
授予對(duì)用戶數(shù)據(jù)的訪問(wèn)權(quán)通常按程序執(zhí)行。即,操作系統(tǒng)或web服務(wù)基 于用戶的訪問(wèn)權(quán)來(lái)授予對(duì)數(shù)據(jù)的訪問(wèn)權(quán)。該模型不是很安全,尤其是在用戶對(duì) 許多其他實(shí)體授予訪問(wèn)權(quán)時(shí)。如果有權(quán)訪問(wèn)數(shù)據(jù)的任何實(shí)體的安全受到損害, 則用戶的數(shù)據(jù)可能在沒(méi)有該用戶的許可或在該用戶不知曉的情況下被訪問(wèn)并 惡意改變或破壞。處理用戶的數(shù)據(jù)時(shí)所涉及的實(shí)體越多,該數(shù)據(jù)越不安全。
概述
簡(jiǎn)而言之,此處所描述的主題的各方面涉及創(chuàng)建和確認(rèn)密碼保護(hù)文檔。
在各方面,加密文檔以保護(hù)其不被未經(jīng)授權(quán)地訪問(wèn)。具有名字空間所有權(quán)的實(shí)
體可在授權(quán)名字空間中創(chuàng)建文檔并用私鑰來(lái)簽署該文檔。其他實(shí)體可通過(guò)使用 可在與該文檔的父文檔相關(guān)聯(lián)的安全數(shù)據(jù)中獲得的公鑰來(lái)確認(rèn)該文檔是由授
權(quán)名字空間所有者創(chuàng)建的。對(duì)于根文檔,公鑰可從目錄服務(wù)獲得。名字空間所 有者可改變被允許創(chuàng)建子文檔的名字空間所有者。
提供本概述是為了簡(jiǎn)要地標(biāo)識(shí)在以下詳細(xì)描述中進(jìn)一步描述的主題的一 些方面。本概述并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也 不旨在用于限制所要求保護(hù)的主題的范圍。
除非上下文清楚地指出,否則短語(yǔ)"此處所描述主題"指的是詳細(xì)描述 中所描述的主題。術(shù)語(yǔ)"方面"應(yīng)被當(dāng)作"至少一個(gè)方面"。標(biāo)識(shí)詳細(xì)描述中 所描述的主題的各方面不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征。
上述各方面和此處所描述的主題的其它方面是借助于示例說(shuō)明的,并且 不受附圖限制,附圖中相同的標(biāo)號(hào)指出相似的元素。
附圖簡(jiǎn)述
圖1是表示其中可結(jié)合此處所描述主題的各方面的示例性通用計(jì)算環(huán)境 的框圖;圖2是概括地表示此處所描述主題的各方面可以在其中操作的示例性環(huán) 境的框圖3是概括地表示根據(jù)此處所描述主題的各方面的、可參與創(chuàng)建或確認(rèn) 文檔的一組示例性實(shí)體的框圖4示出可以結(jié)合此處所描述主題的各方面使用的一些示例性數(shù)據(jù)結(jié)構(gòu);
圖5A是概括地表示根據(jù)此處所描述主題的各方面的、可改變的數(shù)據(jù)以及 可在創(chuàng)建子文檔時(shí)進(jìn)行的動(dòng)作的框圖5B是概括地表示根據(jù)此處所描述主題的各方面的、可改變的數(shù)據(jù)以及 可在創(chuàng)建子文檔和改變可在該子文檔的名字空間中創(chuàng)建文檔的名字空間所有 者時(shí)進(jìn)行的動(dòng)作的框圖6是概括地表示根據(jù)此處所描述主題的各方面的、可在創(chuàng)建文檔時(shí)進(jìn) 行的示例性動(dòng)作的流程圖7是概括地表示根據(jù)此處所描述主題的各方面的、可在確認(rèn)文檔由授 權(quán)名字空間所有者創(chuàng)建時(shí)進(jìn)行的示例性動(dòng)作的流程圖;以及
圖8是表示被配置成根據(jù)此處所描述主題的各方面操作的示例性設(shè)備的 框圖。
詳細(xì)描述 示例性操作環(huán)境
圖1示出可在其上實(shí)現(xiàn)此處所描述主題的各方面的合適的計(jì)算系統(tǒng)環(huán)境 100的示例。計(jì)算系統(tǒng)環(huán)境100僅為合適的計(jì)算環(huán)境的一個(gè)示例,并非旨在對(duì) 此處所描述的主題的各方面的使用范圍或功能提出任何限制。也不應(yīng)該把計(jì)算 環(huán)境100解釋為對(duì)示例性操作環(huán)境100中示出的任一組件或其組合有任何依賴 性或要求。
此處所描述主題的各方面可與眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置 一起操作。適用于此處所描述主題的各方面的公知的計(jì)算系統(tǒng)、環(huán)境和/或配 置的示例包括,但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型設(shè)備、 多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò) PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括上述系統(tǒng)或設(shè)備的任一個(gè)的分布式計(jì)算 環(huán)境等。
6此處所描述主題的各方面可在由計(jì)算機(jī)執(zhí)行的諸如程序模塊等計(jì)算機(jī)可 執(zhí)行指令的一般上下文中描述。 一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn) 特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。此處所描述的 主題的各方面也可以在其中任務(wù)由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的 分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器 存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
參考圖1,用于實(shí)現(xiàn)此處所描述主題的各方面的示例性系統(tǒng)包括計(jì)算機(jī) U0形式的通用計(jì)算設(shè)備。計(jì)算機(jī)110的組件可以包括但不限于,處理單元120、
系統(tǒng)存儲(chǔ)器130和將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合至處理單元120 的系統(tǒng)總線121。系統(tǒng)總線121可以是幾種類型的總線結(jié)構(gòu)中的任何一種,包 括存儲(chǔ)器總線或存儲(chǔ)控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一 種的局部總線。作為示例而非局限,這樣的體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu) (ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA (EISA)總線、視 頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線和外圍部件互連(PCI)總線(也稱 為夾層(Mezzanine)總線)。
計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能由 計(jì)算機(jī)110訪問(wèn)的任何可用介質(zhì),而且包含易失性和非易失性介質(zhì)以及可移 動(dòng)、不可移動(dòng)介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ) 介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù) 結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失 性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其 它光盤存儲(chǔ)、磁盒、磁帶、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可以用來(lái)儲(chǔ)存所期 望的信息并可由計(jì)算機(jī)110訪問(wèn)的任一其它介質(zhì)。通信介質(zhì)通常以諸如載波或 其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊 或其它數(shù)據(jù),并包括任何信息傳送介質(zhì)。術(shù)語(yǔ)"已調(diào)制數(shù)據(jù)信號(hào)"指的是其一 個(gè)或多個(gè)特征以在信號(hào)中編碼信息的方式被設(shè)定或更改的信號(hào)。作為示例而非 限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,以及無(wú)線介質(zhì), 諸如聲學(xué)、RF、紅外線和其它無(wú)線介質(zhì)。上述的任意組合也應(yīng)包含在計(jì)算機(jī) 可讀介質(zhì)的范圍內(nèi)。系統(tǒng)存儲(chǔ)器130包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介
質(zhì),如只讀存儲(chǔ)器(ROM) 131和隨機(jī)存取存儲(chǔ)器(RAM) 132?;据斎? 輸出系統(tǒng)133 (BIOS)包括如在啟動(dòng)時(shí)幫助在計(jì)算機(jī)110內(nèi)的元件之間傳輸信 息的基本例程,它通常儲(chǔ)存在ROM 131中。RAM 132通常包含處理單元120 可以立即訪問(wèn)和/或目前正在其上操作的數(shù)據(jù)和/或程序模塊。作為示例而非限 制,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù) 137。
計(jì)算機(jī)110也可以包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存 儲(chǔ)介質(zhì)。僅作為示例,圖1示出了從不可移動(dòng)、非易失性磁介質(zhì)中讀取或向其 寫(xiě)入的硬盤驅(qū)動(dòng)器141,從可移動(dòng)、非易失性磁盤152中讀取或向其寫(xiě)入的磁 盤驅(qū)動(dòng)器151,以及從諸如CD ROM或其它光學(xué)介質(zhì)等可移動(dòng)、非易失性光 盤156中讀取或向其寫(xiě)入的光盤驅(qū)動(dòng)器155。可以在示例性操作環(huán)境中使用的 其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,磁帶 盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬 盤驅(qū)動(dòng)器141通常由不可移動(dòng)存儲(chǔ)器接口,諸如接口 140連接至系統(tǒng)總線121, 磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155通常由可移動(dòng)存儲(chǔ)器接口,諸如接口 150 連接至系統(tǒng)總線121。
以上描述并在圖1中示出的驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算 機(jī)110提供了對(duì)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例 如,在圖1中,硬盤驅(qū)動(dòng)器141被示為存儲(chǔ)操作系統(tǒng)144、應(yīng)用程序145、其 它程序模塊146和程序數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應(yīng)用 程序135、其它程序模塊136和程序數(shù)據(jù)137相同,也可以與它們不同。操作 系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147在這里被賦予了 不同的標(biāo)號(hào)是為了說(shuō)明至少它們是不同的副本。用戶可以通過(guò)輸入設(shè)備,諸如 鍵盤162和定點(diǎn)設(shè)備161 (通常指的是鼠標(biāo)、跟蹤球或觸摸墊)向計(jì)算機(jī)20 輸入命令和信息。其它輸入設(shè)備(未示出)可包括話筒、操縱桿、游戲手柄、 圓盤式衛(wèi)星天線、掃描儀、手持式PC的觸敏屏或其它寫(xiě)字板等。這些和其它 輸入設(shè)備通常通過(guò)耦合至系統(tǒng)總線的用戶輸入接口 160連接至處理單元120, 但也可以由其它接口和總線結(jié)構(gòu),諸如并行端口、游戲端口或通用串行總線 (USB)連接。監(jiān)視器191或其它類型的顯示設(shè)備也經(jīng)由接口,諸如視頻接口190連接至系統(tǒng)總線121。除監(jiān)視器以外,計(jì)算機(jī)還可以包括其它外圍輸出設(shè)
備,諸如揚(yáng)聲器197和打印機(jī)196,它們可以通過(guò)輸出外圍接口 l卯連接。
計(jì)算機(jī)110可使用至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)180的邏輯 連接在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、 網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它常見(jiàn)網(wǎng)絡(luò)節(jié)點(diǎn),且通常包括上文相對(duì)于計(jì)算機(jī)110 描述的許多或所有元件,盡管在圖1中只示出存儲(chǔ)器存儲(chǔ)設(shè)備181。圖1中所 示的邏輯連接包括局域網(wǎng)(LAN) 171和廣域網(wǎng)(WAN) 173,但也可以包括 其它網(wǎng)絡(luò)。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng) 中是常見(jiàn)的。
當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)110通過(guò)網(wǎng)絡(luò)接口或適配器170連 接至LAN171。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào) 器172或用于通過(guò)諸如因特網(wǎng)等WAN 173建立通信的其它裝置。調(diào)制解調(diào)器 172可以是內(nèi)置或外置的,它可以通過(guò)用戶輸入接口 160或其它合適的機(jī)制連 接至系統(tǒng)總線121。在聯(lián)網(wǎng)環(huán)境中,相對(duì)于計(jì)算機(jī)110所描述的程序模塊或其 部分可被儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例而非限制,圖l示出了遠(yuǎn)程 應(yīng)用程序185駐留在存儲(chǔ)器設(shè)備181上??梢岳斫猓镜木W(wǎng)絡(luò)連接是示例性 的,且可以使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。
創(chuàng)建和確認(rèn)文檔
圖2是概括地表示此處所描述主題的各方面可以在其中操作的示例性環(huán) 境的框圖。該環(huán)境包括用戶設(shè)備205-207、存儲(chǔ)設(shè)備210-212、托管應(yīng)用程序 215、服務(wù)220-223和網(wǎng)絡(luò)225。
用戶可以使用用戶設(shè)備205來(lái)將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)設(shè)備210上。用戶數(shù)據(jù) 隨后可以由用戶設(shè)備205-207、服務(wù)220-223和托管應(yīng)用程序215訪問(wèn)。用戶 數(shù)據(jù)還可被復(fù)制到復(fù)制設(shè)備211-212上。
用戶設(shè)備206和207可由存儲(chǔ)數(shù)據(jù)的用戶來(lái)操作,或可由該用戶給予其 對(duì)該數(shù)據(jù)的訪問(wèn)權(quán)的其它用戶來(lái)操作。例如,在工作時(shí),用戶可具有用戶用來(lái) 將該數(shù)據(jù)存儲(chǔ)在存儲(chǔ)設(shè)備210上的計(jì)算機(jī)(例如用戶設(shè)備205)。在家中,用 戶可以具有用戶用來(lái)訪問(wèn)該數(shù)據(jù)的另一計(jì)算機(jī)(例如用戶設(shè)備206)。用戶還
可以具有用戶用來(lái)訪問(wèn)該數(shù)據(jù)的蜂窩電話或其它電子設(shè)備(例如用戶設(shè)備207)。在用戶旅行時(shí),用戶可以經(jīng)由用戶隨身攜帶的計(jì)算機(jī)或經(jīng)由用戶能夠 使用的另一計(jì)算機(jī)或電子設(shè)備來(lái)訪問(wèn)該數(shù)據(jù)。
如上所述,用戶可能想要使其他用戶有權(quán)訪問(wèn)該數(shù)據(jù)并可能授予其他用 戶這種訪問(wèn)權(quán)。這些用戶可以根據(jù)他們的訪問(wèn)權(quán)來(lái)使用計(jì)算機(jī)或其它電子設(shè)備
(例如用戶設(shè)備206和207)訪問(wèn)該數(shù)據(jù)。
用戶可能想要經(jīng)由托管應(yīng)用程序215來(lái)訪問(wèn)該數(shù)據(jù)。例如,用戶可以經(jīng) 由web瀏覽器訪問(wèn)托管應(yīng)用程序215,并隨后可以經(jīng)由托管應(yīng)用程序215來(lái)訪 問(wèn)該數(shù)據(jù)。
用戶可能想要使特定服務(wù)有權(quán)訪問(wèn)用戶的數(shù)據(jù)。例如用戶可能想要使廣 告服務(wù)器221訪問(wèn)用戶的數(shù)據(jù)以向該用戶或其他用戶提供相關(guān)廣告。用戶可能 想要使搜索引擎220有權(quán)訪問(wèn)用戶的數(shù)據(jù)以允許其他用戶找到該用戶的數(shù)據(jù)。 用戶可能想要使歸檔服務(wù)222有權(quán)訪問(wèn)該數(shù)據(jù)以創(chuàng)建該數(shù)據(jù)的檔案?jìng)浞?。用?還可能出于各種目的而想要使其它服務(wù)223有權(quán)訪問(wèn)該數(shù)據(jù)。
實(shí)體可包括物理設(shè)備、進(jìn)程、服務(wù)、機(jī)器、用戶、密鑰、組件、以上各 項(xiàng)中的一個(gè)或多個(gè)的復(fù)合等。用戶可能想要向有權(quán)訪問(wèn)用戶數(shù)據(jù)的每一實(shí)體給 出可隨各實(shí)體而不同的一組特定訪問(wèn)權(quán)。例如,用戶可能想要?dú)w檔服務(wù)能夠復(fù) 制數(shù)據(jù)但不能夠以有意義的方式讀數(shù)據(jù)或修改數(shù)據(jù)。能夠復(fù)制數(shù)據(jù)而不能以以 有意義的方式讀數(shù)據(jù)或修改數(shù)據(jù)有時(shí)被稱為"只復(fù)制"訪問(wèn)。作為另一示例, 用戶可能想要使廣告服務(wù)器221和搜索引擎220能夠讀數(shù)據(jù)但不能向該數(shù)據(jù)寫(xiě) 入。用戶可能想要使某些同事可對(duì)該數(shù)據(jù)進(jìn)行讀/寫(xiě)訪問(wèn),而使其它商業(yè)伙伴 可對(duì)該數(shù)據(jù)進(jìn)行讀訪問(wèn)或只復(fù)制訪問(wèn)。
網(wǎng)絡(luò)225表示用于從一個(gè)實(shí)體向另一個(gè)實(shí)體傳達(dá)數(shù)據(jù)的任何機(jī)制和/或一 個(gè)或多個(gè)設(shè)備的集合,并可包括內(nèi)聯(lián)網(wǎng)絡(luò)和互聯(lián)網(wǎng)絡(luò)、因特網(wǎng)、電話線、蜂窩 網(wǎng)絡(luò)、聯(lián)網(wǎng)設(shè)備、設(shè)備之間的直接連接、無(wú)線連接等。用戶可能想要使網(wǎng)絡(luò) 225的設(shè)備能夠復(fù)制數(shù)據(jù)來(lái)將其發(fā)送到其它實(shí)體,但不能夠改變?cè)摂?shù)據(jù)或以有 意義的方式讀取它。
設(shè)備(例如設(shè)備205-207和210-212)的示例包括蜂窩電話、文本消息收 發(fā)設(shè)備、智能電話、聯(lián)網(wǎng)設(shè)備、結(jié)合圖l所述的專用和通用電子設(shè)備、以上的 組合、部分或變型等。
本領(lǐng)域技術(shù)人員將理解,使許多實(shí)體處理或具有對(duì)數(shù)據(jù)的訪問(wèn)權(quán)使得更難以保持?jǐn)?shù)據(jù)安全和確保數(shù)據(jù)不被惡意破壞或更新。
圖3是概括地表示根據(jù)此處所描述主題的各方面的、可參與創(chuàng)建或確認(rèn) 文檔的一組示例性實(shí)體的框圖。這些實(shí)體包括創(chuàng)建/確認(rèn)實(shí)體305、零個(gè)或更多
個(gè)中間實(shí)體310、 330和340、存儲(chǔ)訪問(wèn)實(shí)體315、存儲(chǔ)設(shè)備320、安全數(shù)據(jù)儲(chǔ) 存庫(kù)335以及目錄服務(wù)345。
在一個(gè)實(shí)施例中,創(chuàng)建/確認(rèn)實(shí)體305是諸如計(jì)算機(jī)等電子設(shè)備,而中間 實(shí)體310、 330和340是零個(gè)或更多個(gè)聯(lián)網(wǎng)設(shè)備、服務(wù)器、或創(chuàng)建/確認(rèn)實(shí)體305 與存儲(chǔ)訪問(wèn)實(shí)體315和/或安全數(shù)據(jù)儲(chǔ)存庫(kù)335和/或目錄服務(wù)345之間的其它 設(shè)備。存儲(chǔ)訪問(wèn)實(shí)體315是能夠訪問(wèn)其上存儲(chǔ)有所請(qǐng)求文檔的存儲(chǔ)設(shè)備(例如 存儲(chǔ)設(shè)備320)的設(shè)備。
此處所使用的文檔包括能夠被存儲(chǔ)在存儲(chǔ)設(shè)備上的任何長(zhǎng)度的位的任何 集合。如結(jié)合圖4更詳細(xì)地描述的,文檔的版本可包括文檔標(biāo)識(shí)符、安全數(shù)據(jù) 標(biāo)識(shí)符、和加密數(shù)據(jù),以及其它數(shù)據(jù)。文檔標(biāo)識(shí)符在特定名字空間中唯一地標(biāo) 識(shí)文檔。安全數(shù)據(jù)標(biāo)識(shí)符可被用來(lái)檢索關(guān)于文檔的安全數(shù)據(jù)。加密數(shù)據(jù)可包括 例如用戶想要保護(hù)的內(nèi)容,如字處理文件、電子表格、其它數(shù)據(jù)、可被用來(lái)解 密其它數(shù)據(jù)的密鑰、或?qū)τ脩舳院苤匾娜魏纹渌鼣?shù)據(jù)。
因?yàn)閿?shù)據(jù)被加密,所以其只可由具有用于解密該數(shù)據(jù)的密鑰的人來(lái)有意 義地讀取。如以下詳細(xì)描述的,這些密鑰保存在安全數(shù)據(jù)儲(chǔ)存庫(kù)中的安全數(shù)據(jù) 中。有了適當(dāng)?shù)拿荑€,用戶可以按使得其他實(shí)體能夠驗(yàn)證該用戶被授權(quán)在給定 名字空間中創(chuàng)建文檔和安全數(shù)據(jù)的方式來(lái)在該名字空間中創(chuàng)建該文檔和安全 數(shù)據(jù)。
存儲(chǔ)設(shè)備320是能夠存儲(chǔ)數(shù)據(jù)的任何計(jì)算機(jī)可讀介質(zhì),并可包括例如分 布式文件系統(tǒng)。以上已經(jīng)結(jié)合圖1描述了一些適用于存儲(chǔ)設(shè)備320的示例性計(jì) 算機(jī)可讀介質(zhì)。
安全數(shù)據(jù)儲(chǔ)存庫(kù)335存儲(chǔ)關(guān)于存儲(chǔ)在存儲(chǔ)設(shè)備320上的文檔的安全數(shù)據(jù)。 安全數(shù)據(jù)儲(chǔ)存庫(kù)335可包括一個(gè)設(shè)備或彼此共同工作的若干個(gè)設(shè)備。安全數(shù)據(jù) 儲(chǔ)存庫(kù)335可包括文檔的每一版本的安全數(shù)據(jù)記錄。創(chuàng)建/確認(rèn)實(shí)體305可以 通過(guò)向安全數(shù)據(jù)儲(chǔ)存庫(kù)335發(fā)送包括在文檔中的安全數(shù)據(jù)標(biāo)識(shí)符并由此請(qǐng)求 其所標(biāo)識(shí)的安全數(shù)據(jù),來(lái)請(qǐng)求對(duì)應(yīng)于所檢索文檔的安全數(shù)據(jù)記錄。
在一個(gè)實(shí)施例中,安全數(shù)據(jù)可以存儲(chǔ)在文檔本身中。在該實(shí)施例中,創(chuàng)建/確認(rèn)實(shí)體305可以直接從該文檔中獲取安全數(shù)據(jù)。
目錄服務(wù)345用于存儲(chǔ)和提供在驗(yàn)證根文檔由授權(quán)實(shí)體創(chuàng)建時(shí)使用的密 鑰。根文檔是名字空間中可用的最低級(jí)的文檔。其他文檔可取決于根文檔但根 文檔不取決于其他文檔。例如,在具有目錄、子目錄等的分層結(jié)構(gòu)名字空間中, 根文檔處于在該名字空間中創(chuàng)建的其他文檔的根處。例如,如果名字空間包括 諸如〃domain/path/file.txt等路徑,貝!」"domain (域)"將會(huì)是根文檔。如果名 字空間包括諸如live:〃alice/users/filel.txt等類似h鄰的句法,貝lj "alice"將會(huì) 是根文檔。
在創(chuàng)建根文檔時(shí),創(chuàng)建實(shí)體創(chuàng)建文檔,創(chuàng)建公鑰/私鑰對(duì)、用私鑰來(lái)簽署 文檔并向目錄服務(wù)發(fā)布密鑰的公共部分。在發(fā)布密鑰的公共部分時(shí),實(shí)體提供 根文檔的標(biāo)識(shí)符和公鑰(或其一部分)。目錄服務(wù)確保請(qǐng)求發(fā)布公鑰的實(shí)體具 有這樣做的授權(quán)。如果實(shí)體具有適當(dāng)?shù)氖跈?quán),則目錄服務(wù)在其記錄中發(fā)布公鑰 (或其一部分)。
稍后獲取根文檔的實(shí)體可通過(guò)向目錄服務(wù)請(qǐng)求公鑰并使用該公鑰來(lái)驗(yàn)證 文檔上的簽名來(lái)驗(yàn)證該根文檔是由授權(quán)實(shí)體創(chuàng)建的。該實(shí)體可通過(guò)向目錄服務(wù) 提供根文檔的標(biāo)識(shí)符來(lái)獲取公鑰。在其中目錄服務(wù)僅存儲(chǔ)公鑰的一部分的實(shí)施 例中,確認(rèn)實(shí)體然后可將該部分提供給另一實(shí)體,該另一實(shí)體使用該部分來(lái)查 找并返回整個(gè)公鑰?;蛘撸暾墓€可被包括在文檔的安全數(shù)據(jù)中。
可用作目錄服務(wù)345的一類服務(wù)是域名服務(wù)(DNS)服務(wù)器或類似的某 物。公鑰可被放置在對(duì)應(yīng)于域名(其可對(duì)應(yīng)于根文檔)的DNS服務(wù)記錄中。 由于DNS服務(wù)器是確立已久的并且具有用于聲明域所有權(quán)的機(jī)制,因此這可 以在確認(rèn)根文檔時(shí)沒(méi)有許多其他基礎(chǔ)結(jié)構(gòu)的情況下使用。如果整個(gè)公鑰無(wú)法存 儲(chǔ)在DNS服務(wù)記錄中,則可使用上述機(jī)制來(lái)將該公鑰的一部分與可在另一服 務(wù)處獲得的整個(gè)公鑰一起存儲(chǔ)在DNS服務(wù)記錄中。
其他專用服務(wù)也可用作目錄服務(wù)345而不背離此處所描述主題的各方面 的精神和范圍。具體而言,可使用能夠驗(yàn)證用戶具有對(duì)于根文檔的權(quán)限并且能 夠存儲(chǔ)標(biāo)識(shí)符和密鑰(或其部分)對(duì)的實(shí)體而不背離此處所描述主題的精神和 范圍。
在一個(gè)實(shí)施例中,實(shí)體305、 310、 315、 330和345中的一個(gè)或多個(gè)可以 是在一個(gè)或多個(gè)設(shè)備上執(zhí)行的一個(gè)或多個(gè)進(jìn)程或組件。在一個(gè)實(shí)施例中,存儲(chǔ)設(shè)備320和/或安全數(shù)據(jù)儲(chǔ)存庫(kù)335可以是包括在創(chuàng)建/確認(rèn)實(shí)體305在其上執(zhí) 行的設(shè)備中的設(shè)備或者是附連到其上的設(shè)備。存儲(chǔ)在存儲(chǔ)設(shè)備320中的文檔可 由創(chuàng)建/確認(rèn)實(shí)體305在其上執(zhí)行的設(shè)備的用戶從另一設(shè)備置于存儲(chǔ)設(shè)備320 上,或可由例如文件復(fù)制基礎(chǔ)結(jié)構(gòu)置于存儲(chǔ)設(shè)備320上。
如可看到的,在以上結(jié)合圖3描述的示例性操作環(huán)境中,文檔可以通過(guò) 到達(dá)和始自設(shè)法創(chuàng)建或確認(rèn)該文檔的實(shí)體的路線中的多個(gè)實(shí)體。加密文檔的數(shù) 據(jù)允許該數(shù)據(jù)安全地存儲(chǔ)在任何存儲(chǔ)設(shè)備上和設(shè)備的任何配置中。
圖4示出可以結(jié)合此處所描述主題的各方面使用的一些示例性數(shù)據(jù)結(jié)構(gòu)。 可為每一個(gè)文檔存儲(chǔ)一文檔數(shù)據(jù)結(jié)構(gòu)(例如文檔數(shù)據(jù)結(jié)構(gòu)400)。每一文檔數(shù) 據(jù)結(jié)構(gòu)400可包括各個(gè)字段,包括文檔標(biāo)識(shí)符405、安全數(shù)據(jù)標(biāo)識(shí)符410、時(shí) 間戳415、加密數(shù)據(jù)420和名字空間簽名425。
文檔標(biāo)識(shí)符405可被用來(lái)在給定名字空間中唯一地標(biāo)識(shí)文檔。例如,具 有http類句法的統(tǒng)一資源標(biāo)識(shí)符(URI)(例如live:〃alice/users/filel.txt)可被 用來(lái)在給定名字空間中標(biāo)識(shí)文檔。作為另一示例,可使用全局唯一標(biāo)識(shí)符 (GUID)來(lái)標(biāo)識(shí)給定名字空間中的文檔。
安全數(shù)據(jù)標(biāo)識(shí)符410可被用來(lái)標(biāo)識(shí)與該文檔相關(guān)聯(lián)的安全數(shù)據(jù)。在一個(gè) 實(shí)施例中,安全數(shù)據(jù)標(biāo)識(shí)符410是安全數(shù)據(jù)結(jié)構(gòu)427中的一個(gè)或多個(gè)其他字段 的散列。散列獲得輸入數(shù)據(jù)并計(jì)算長(zhǎng)度固定且不基于輸入數(shù)據(jù)的長(zhǎng)度而變化的 輸出數(shù)據(jù)。給定足夠長(zhǎng)的輸出數(shù)據(jù)和合適的散列,該散列有效地提供輸入數(shù)據(jù) 的唯一標(biāo)識(shí)符。
時(shí)間戳字段410可包括指示該文檔何時(shí)被創(chuàng)建的時(shí)間戳。如上所述,加 密數(shù)據(jù)字段420可包括用戶想要保護(hù)的任何內(nèi)容。
名字空間簽名字段425包括可被用來(lái)確保文檔數(shù)據(jù)結(jié)構(gòu)400是由授權(quán)用 戶創(chuàng)建的并且從創(chuàng)建以來(lái)未被改變的任何一個(gè)或多個(gè)機(jī)制。一種示例性機(jī)制是 如將在以下更詳細(xì)地描述的簽名。
文檔數(shù)據(jù)結(jié)構(gòu)400可包括更多或更少的字段,只要它包括用于標(biāo)識(shí)或包 括關(guān)于文檔的安全數(shù)據(jù)的機(jī)制、以及用于確保文檔由授權(quán)用戶創(chuàng)建并自創(chuàng)建以 來(lái)未被改變的機(jī)制。
安全數(shù)據(jù)結(jié)構(gòu)427可包括安全數(shù)據(jù)標(biāo)識(shí)符字段430、 一個(gè)或多個(gè)授權(quán)字段 440、 一個(gè)或多個(gè)密鑰450、和簽名455。在一個(gè)實(shí)施例中,安全數(shù)據(jù)標(biāo)識(shí)符字段430中的安全數(shù)據(jù)標(biāo)識(shí)符可以如上所述地計(jì)算(即作為安全數(shù)據(jù)結(jié)構(gòu)427 的其它字段的散列)。
安全數(shù)據(jù)結(jié)構(gòu)還可包括父安全標(biāo)識(shí)符字段,該字段標(biāo)識(shí)與作為該文檔的 父文檔(如果有的話)的文檔相關(guān)聯(lián)的安全數(shù)據(jù)結(jié)構(gòu)。父安全數(shù)據(jù)標(biāo)識(shí)符可用 于確認(rèn)子文檔是否是由被授權(quán)創(chuàng)建子文檔的安全主體創(chuàng)建的,如以下結(jié)合圖5 更詳細(xì)地描述的。
授權(quán)字段440包括具有對(duì)文檔數(shù)據(jù)結(jié)構(gòu)400的訪問(wèn)權(quán)或關(guān)于該數(shù)據(jù)結(jié)構(gòu) 的某一其他任務(wù)的對(duì)每一個(gè)安全主體(有時(shí)被稱為"實(shí)體")的授權(quán)。在一些 實(shí)施例中,安全主體是可經(jīng)由被稱為認(rèn)證的技術(shù)來(lái)肯定地標(biāo)識(shí)和驗(yàn)證的實(shí)體。 在其它實(shí)施例中,安全主體可包括從與另一文檔相關(guān)聯(lián)的安全數(shù)據(jù)解密的密 鑰。安全主體可包括用戶、機(jī)器、服務(wù)、進(jìn)程、其它實(shí)體、解密密鑰、或以上 的一個(gè)或多個(gè)的復(fù)合(例如組)。每一個(gè)授權(quán)都可由一密鑰來(lái)加密,該密鑰可 由安全主體所持有或創(chuàng)建的密鑰解密。公鑰/私鑰密碼是可被用來(lái)加密/解密授 權(quán)的一種機(jī)制。
因?yàn)樘囟ò踩黧w可具有許多密鑰并且安全文檔中可有多個(gè)授權(quán),所以 在一個(gè)實(shí)施例中,優(yōu)化提供了密鑰提示,該密鑰提示提供可被用來(lái)解密授權(quán)的 密鑰的前幾位(以純文本)。該密鑰提示允許實(shí)體快速地確定其應(yīng)當(dāng)嘗試解密 哪些授權(quán),因?yàn)閷?shí)體可以簡(jiǎn)單地將這前幾位與其密鑰進(jìn)行比較。在有數(shù)百或數(shù) 千個(gè)授權(quán)時(shí),該機(jī)制所提供的時(shí)間節(jié)省可以是顯著的。因?yàn)榭梢栽诿荑€提示中 提供幾位(例如2和16之間),所以用來(lái)加密/解密授權(quán)的機(jī)制的強(qiáng)度不會(huì)被 顯著地弱化。如果需要,則可以通過(guò)使用更長(zhǎng)的密鑰來(lái)增加該機(jī)制的強(qiáng)度。
在一個(gè)實(shí)施例中,授權(quán)包括允許安全主體執(zhí)行關(guān)于文檔的一個(gè)或多個(gè)訪 問(wèn)權(quán)或任務(wù)的加密密鑰。例如,可以給予一用戶安全主體讀文檔、創(chuàng)建文檔的 新版本、在給定名字空間中創(chuàng)建新文檔、改變哪些安全主體可以訪問(wèn)該文檔、 以及對(duì)該文檔執(zhí)行任何其它安全相關(guān)動(dòng)作的權(quán)限??梢越o予另一用戶安全主體 只讀或只寫(xiě)訪問(wèn)權(quán)。未被給予關(guān)于一文檔的任何權(quán)限的實(shí)體可仍然具有只復(fù)制 訪問(wèn)權(quán)(即復(fù)制但不能有意義地讀加密數(shù)據(jù)的能力)。這些實(shí)體例如可被用于 存檔文檔。
在另一實(shí)施例中,授權(quán)可包括允許安全主體解密安全數(shù)據(jù)結(jié)構(gòu)427別處 (例如密鑰450中)的附加密鑰的加密密鑰。這些附加密鑰可向安全主體授予對(duì)文檔的訪問(wèn)權(quán)或者與該文檔相關(guān)聯(lián)的其他任務(wù)??梢赃@樣做例如來(lái)減少安全 數(shù)據(jù)結(jié)構(gòu)427所需的空間,因?yàn)槭跈?quán)中的單個(gè)密鑰可被用來(lái)解密安全數(shù)據(jù)結(jié)構(gòu)
427中別處的多個(gè)密鑰。在安全數(shù)據(jù)結(jié)構(gòu)427包括數(shù)百或數(shù)千個(gè)授權(quán)時(shí),多個(gè) 授權(quán)可以共享共同的一組訪問(wèn)權(quán)。盡管對(duì)應(yīng)于這些訪問(wèn)權(quán)的密鑰可被包括在授 權(quán)本身中,但在每一授權(quán)中提供允許安全主體解密安全數(shù)據(jù)結(jié)構(gòu)427中別處的 訪問(wèn)密鑰的單個(gè)密鑰可更加節(jié)省空間。
使用選項(xiàng)445可包括關(guān)于如何保護(hù)文檔的一個(gè)或多個(gè)策略。例如, 一策
略可指示簽名應(yīng)只被放置在安全數(shù)據(jù)結(jié)構(gòu)中、文檔數(shù)據(jù)結(jié)構(gòu)中、兩者中,或者 某些簽名將在兩個(gè)數(shù)據(jù)結(jié)構(gòu)中復(fù)制而其它簽名將只被放置在一個(gè)數(shù)據(jù)結(jié)構(gòu)中。
一策略可指示每一個(gè)版本是否將由一觀察者來(lái)簽署。在這一策略下,未經(jīng)觀察 者簽署的版本可被確定為例如無(wú)效的。一策略可指示名字空間所有者是否可能 在創(chuàng)建后改變。
密鑰450可包括如上所述的可對(duì)應(yīng)于文檔中所授予的訪問(wèn)權(quán)或任務(wù)的加 密私鑰。如上所述,這些密鑰可由授權(quán)字段440中所獲得的密鑰來(lái)解密。另外, 密鑰可包括己發(fā)布(即,未加密)的公鑰,該公鑰可用于確認(rèn)文檔或安全數(shù)據(jù) 結(jié)構(gòu)是否是由授權(quán)安全主體創(chuàng)建的。
簽名字段455可以用與數(shù)據(jù)結(jié)構(gòu)400的簽名字段455相似的方式來(lái)使用。 安全數(shù)據(jù)結(jié)構(gòu)427可包括更多或更少的字段,只要其包括用于向授權(quán)用 戶提供用于訪問(wèn)其相關(guān)聯(lián)的文檔、或執(zhí)行與這些文檔相關(guān)聯(lián)的任務(wù)的密鑰的機(jī) 制即可。
在一個(gè)實(shí)施例中,文檔數(shù)據(jù)結(jié)構(gòu)400可包括標(biāo)識(shí)另一文檔數(shù)據(jù)結(jié)構(gòu)的標(biāo) 識(shí)符。其它文檔數(shù)據(jù)結(jié)構(gòu)可包括允許訪問(wèn)該文檔或與該文檔相關(guān)聯(lián)的任務(wù)的密 鑰。這一機(jī)制可被用來(lái)提供對(duì)文檔的組訪問(wèn)或與文檔相關(guān)聯(lián)的任務(wù)。例如,與 第一文檔數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的安全數(shù)據(jù)結(jié)構(gòu)中的授權(quán)可對(duì)應(yīng)于一個(gè)組的各個(gè)成 員所持有的密鑰。該組中具有適當(dāng)密鑰的任何成員都能夠從安全數(shù)據(jù)中獲得成 員密鑰,該成員密鑰允許該成員根據(jù)在與第二文檔相關(guān)聯(lián)的安全數(shù)據(jù)中授予該 組的權(quán)限來(lái)訪問(wèn)第二文檔或執(zhí)行與該第二文檔相關(guān)聯(lián)的任務(wù)。由此,訪問(wèn)文檔 或提供與文檔相關(guān)聯(lián)的任務(wù)可涉及訪問(wèn)中間文檔。
在另一實(shí)施例中,文檔數(shù)據(jù)結(jié)構(gòu)400可省略文檔標(biāo)識(shí)符或一起省略另一 文檔。在該實(shí)施例中,另一機(jī)制可暗示第一文檔的安全數(shù)據(jù)中的密鑰可提供對(duì)第二文檔的訪問(wèn)。例如,如果已知第一文檔提供對(duì)另一文檔的組訪問(wèn),則可以 對(duì)于用戶嘗試訪問(wèn)的每一其它文檔的安全數(shù)據(jù)中的每一授權(quán),嘗試來(lái)自第一文 檔的安全數(shù)據(jù)的成員密鑰。上述密鑰提示可以加速該過(guò)程。
圖5A是概括地表示根據(jù)此處所描述主題的各方面的、可改變的數(shù)據(jù)以及
可在創(chuàng)建子文檔時(shí)進(jìn)行的動(dòng)作的框圖。子文檔510是父文檔505的子文檔。子 文檔510是由具有名字空間所有權(quán)的安全主體創(chuàng)建的。具有名字空間所有權(quán)的 安全主體此處有時(shí)被簡(jiǎn)稱為名字空間所有者。在創(chuàng)建子文檔510時(shí),名字空間 所有者可使用在由文檔505標(biāo)識(shí)的安全數(shù)據(jù)515中加密的名字空間所有者私鑰 nol來(lái)簽署文檔510。名字空間所有者通過(guò)使用該名字空間所有者具有或可創(chuàng) 建的密鑰來(lái)解密授權(quán)中的私鑰nol來(lái)獲取該私鑰。
在一個(gè)實(shí)施例中,名字空間所有者通過(guò)計(jì)算文檔510的散列并且然后用 私鑰nol加密該散列,使用私鑰nol來(lái)簽署文檔510。期望確認(rèn)文檔510是由 名字空間所有者簽署的實(shí)體可從安全數(shù)據(jù)510中獲取公共名字空間所有者密 鑰NOl,用公共名字空間所有者密鑰NOl來(lái)解密子文檔510的簽名,計(jì)算文 檔510的散列,并且將解密的文檔510的簽名與文檔510的散列進(jìn)行比較。如 果文檔510的解密的簽名和散列相同,則安全主體確保文檔510是由有權(quán)訪問(wèn) 私人名字空間所有者密鑰nol的實(shí)體創(chuàng)建的。
如果名字空間所有者不改變可在子文檔的名字空間中創(chuàng)建新文檔的名字 空間所有者,則名字空間所有者可將子文檔510與父文檔505所關(guān)聯(lián)的相同安 全數(shù)據(jù)515相關(guān)聯(lián)。如果安全主體改變可在子文檔的名字空間中創(chuàng)建新文檔的 名字空間所有者,則名字空間所有者可創(chuàng)建新安全數(shù)據(jù)520并將子文檔530 與新安全數(shù)據(jù)520相關(guān)聯(lián),如結(jié)合圖5B更詳細(xì)地描述的。
圖5B是概括地表示根據(jù)此處所描述主題的各方面的、可改變的數(shù)據(jù)以及 可在創(chuàng)建子文檔和改變可在該子文檔的命名空間中創(chuàng)建文檔的命名空間所有 者時(shí)進(jìn)行的動(dòng)作的框圖。父文檔的名字空間所有者可創(chuàng)建新安全數(shù)據(jù)520。該 名字空間所有者還可創(chuàng)建新的私人名字空間所有者密鑰no2并將其放置在新 安全數(shù)據(jù)520中以改變獲授權(quán)在子文檔530的名字空間中創(chuàng)建子文檔的名字空 間所有者。
這樣做可能是為了例如允許與子文檔相關(guān)聯(lián)的用戶創(chuàng)建該子文檔的子文 檔。例如,系統(tǒng)管理員等可以為用戶創(chuàng)建目錄。為了允許該用戶在該目錄中創(chuàng)
16建新文檔,系統(tǒng)管理員可在關(guān)于該目錄的安全數(shù)據(jù)中指示該用戶是名字空間所 有者。
在創(chuàng)建新的私人名字空間所有者密鑰no2并將其放置在新安全數(shù)據(jù)520 中后,名字空間所有者可以用私人名字空間所有者密鑰nol來(lái)簽署新安全數(shù)據(jù) 520。這樣做可能是為了示出名字空間所有者已被授權(quán)對(duì)安全數(shù)據(jù)515作出反 映在安全數(shù)據(jù)520中的名字空間所有者改變。簽名可例如通過(guò)使用寫(xiě)私鑰nol 加密存儲(chǔ)在安全數(shù)據(jù)520中的數(shù)據(jù)的散列來(lái)創(chuàng)建。名字空間所有者還可創(chuàng)建子 文檔530并將其與新安全數(shù)據(jù)520相關(guān)聯(lián)。為了指示名字空間所有者具有在父 文檔525的名字空間中創(chuàng)建子文檔530的授權(quán),安全主體可以用名字空間所有 者私鑰nol來(lái)簽署新文檔530。
在一個(gè)實(shí)施例中,為了確認(rèn)文檔(例如,父文檔525)的子文檔(例如, 子文檔530)是由授權(quán)名字空間所有者創(chuàng)建的,進(jìn)程可獲取該文檔的父版本(例 如,文檔525)。有了該文檔的父版本,該進(jìn)程然后可找出與該文檔相關(guān)聯(lián)的 安全數(shù)據(jù)(例如,安全數(shù)據(jù)515)。
在另一實(shí)施例中,與子文檔530相關(guān)聯(lián)的新安全數(shù)據(jù)520可包括標(biāo)識(shí)與 父文檔525相關(guān)聯(lián)的安全數(shù)據(jù)515的標(biāo)識(shí)符。在該實(shí)施例中,無(wú)需獲取父文檔 525;相反,可使用關(guān)于子文檔530的新安全數(shù)據(jù)520來(lái)定位關(guān)于父文檔525 的安全數(shù)據(jù)515。
關(guān)于父文檔525的安全數(shù)據(jù)515包括名字空間所有者公鑰NOl 。有了 NOl 和新安全數(shù)據(jù)520中的簽名,進(jìn)程可驗(yàn)證新安全數(shù)據(jù)520是由具有名字空間所 有權(quán)的安全主體創(chuàng)建的。有了NOl和子文檔530中的簽名,進(jìn)程可驗(yàn)證子文 檔530是由具有名字空間所有權(quán)的安全主體創(chuàng)建的。
在某些實(shí)施例中,名字空間所有者簽名只可被包括在安全數(shù)據(jù)中、文檔 中或安全數(shù)據(jù)和文檔兩者中。這可由上述使用選項(xiàng)來(lái)控制。
期望驗(yàn)證文檔分層結(jié)構(gòu)是由授權(quán)名字空間所有者創(chuàng)建的實(shí)體可以按遞歸 的方式跟隨該分層結(jié)構(gòu)至根文檔。例如,該實(shí)體可以從離根文檔最遠(yuǎn)(在分層 結(jié)構(gòu)的意義上)的子文檔開(kāi)始,并按以上參考圖5A和5B描述的方式驗(yàn)證該 子文檔是由授權(quán)名字空間所有者創(chuàng)建的。然后,該實(shí)體可獲得父文檔并驗(yàn)證該 父文檔是由授權(quán)名字空間所有者創(chuàng)建的。這可繼續(xù)直到該實(shí)體到達(dá)根文檔。在 根文檔處,該實(shí)體可從目錄服務(wù)獲取公鑰并且然后確定根文檔是否是由授權(quán)名為了加速將來(lái)的驗(yàn)證,在確定文檔分成結(jié)構(gòu)是由授權(quán)名字空間所有者創(chuàng) 建之后,該實(shí)體可更新指示文檔是由授權(quán)名字空間所有者創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)。為 了驗(yàn)證其他文檔,該實(shí)體可咨詢?cè)摂?shù)據(jù)結(jié)構(gòu),只要這些其他文檔共享該分層結(jié) 構(gòu)的至少一部分。
也可以使用其他數(shù)字簽名/確認(rèn)機(jī)制而不背離此處所描述主題的各方面的 精神或范圍。
圖6是概括地表示根據(jù)此處所描述主題的各方面的、可在創(chuàng)建文檔時(shí)進(jìn) 行的示例性動(dòng)作的流程圖。在框605,動(dòng)作開(kāi)始。
在框610,實(shí)體獲取其計(jì)劃創(chuàng)建其子文檔的父文檔。例如,參考圖3,創(chuàng) 建/確認(rèn)實(shí)體305獲取存儲(chǔ)在存儲(chǔ)設(shè)備320上的父文檔。如果所創(chuàng)建的文檔是 根文檔,則無(wú)需獲取父文檔。相反,可以為名字空間所有者創(chuàng)建私鑰/公鑰對(duì)。 私鑰用于簽署根文檔而公鑰在目錄服務(wù)中發(fā)布。
在框615,確定子文檔是否將包括與父文檔的名字空間所有者不同的新名 字空間所有者。如果是,則動(dòng)作在框635繼續(xù);否則,動(dòng)作在框620繼續(xù)。如 果需要新名字空間所有者,則可以向安全數(shù)據(jù)寫(xiě)入新名字空間所有者密鑰并且 對(duì)這些密鑰的訪問(wèn)限于被給予名字空間所有者任務(wù)的安全主體。如果同一名字 空間所有者將擁有子文檔的名字空間,則該子文檔引用關(guān)于父文檔的安全數(shù)據(jù) 即可。在創(chuàng)建根文檔時(shí),動(dòng)作在框635繼續(xù)。
在框620,創(chuàng)建文檔的子文檔。例如,參考圖3,創(chuàng)建/確認(rèn)實(shí)體305創(chuàng)建 子文檔。
在框625,將子文檔與其父文檔的安全數(shù)據(jù)相關(guān)聯(lián)。例如,參考圖4和 5A,新文檔中的安全數(shù)據(jù)標(biāo)識(shí)符410用標(biāo)識(shí)安全數(shù)據(jù)515的標(biāo)識(shí)符來(lái)填充。
在框630,簽署子文檔。例如,參考圖3,創(chuàng)建/確認(rèn)實(shí)體305從與父文檔 相關(guān)聯(lián)的安全數(shù)據(jù)中獲取名字空間所有者私鑰,并用該私鑰來(lái)簽署新文檔。
在框635,如果已創(chuàng)建名字空間所有者(或者如果正在創(chuàng)建根文檔),則 創(chuàng)建新安全數(shù)據(jù)。例如,參考圖3和5B,創(chuàng)建/確認(rèn)實(shí)體305創(chuàng)建新安全數(shù)據(jù) 520。
在框640,創(chuàng)建子文檔。例如,參考圖3和5B,創(chuàng)建/確認(rèn)實(shí)體305創(chuàng)建 子文檔530。在框645,將子文檔與新安全數(shù)據(jù)相關(guān)聯(lián)。例如,參考圖3、 4、 5B,創(chuàng) 建/確認(rèn)實(shí)體305填充子文檔的安全數(shù)據(jù)標(biāo)識(shí)符410以標(biāo)識(shí)安全數(shù)據(jù)520。
在框650,以類似于結(jié)合框630描述的方式簽署子文檔。另外,還可簽署 新安全數(shù)據(jù)。
注意,盡管未在圖6中示出,但也可獲取諸如觀察者簽名等其他簽名并 將其放置在文檔和/或安全數(shù)據(jù)中,如上所述。 在框655,動(dòng)作結(jié)束。
圖7是概括地表示根據(jù)此處所描述主題的各方面的、可在確認(rèn)文檔由授 權(quán)命名空間所有者創(chuàng)建時(shí)進(jìn)行的示例性動(dòng)作的流程圖。在框705,動(dòng)作開(kāi)始。
在框710,獲取文檔。例如,參考圖3,創(chuàng)建/確認(rèn)實(shí)體305可請(qǐng)求并獲取 從存儲(chǔ)設(shè)備320中取得的文檔。
在框715,獲取安全數(shù)據(jù)。如果安全數(shù)據(jù)被包括在文檔中,則從該文檔中 取得該安全數(shù)據(jù)。如果安全數(shù)據(jù)位于他處(諸如,如圖3所示的安全數(shù)據(jù)儲(chǔ)存 庫(kù)),則從那里獲取該安全數(shù)據(jù)。
在框720,確定是否已在創(chuàng)建文檔時(shí)設(shè)置新名字空間所有者。如果是,則 動(dòng)作在框735繼續(xù);否則,動(dòng)作在框725繼續(xù)。如上所述,可使用新名字空間 所有者密鑰來(lái)改變獲授權(quán)在子文檔的名字空間中創(chuàng)建文檔的安全主體。
在框725,從與文檔相關(guān)聯(lián)的安全數(shù)據(jù)的字段中獲取公鑰。例如,參考圖 4,可從密鑰字段450中獲取名字空間所有者公鑰。
在框730,使用該公鑰來(lái)驗(yàn)證文檔是否是由授權(quán)名字空間所有者創(chuàng)建的。 例如,這可如上所述地完成。
在框735,當(dāng)已使用新的名字空間所有者密鑰來(lái)創(chuàng)建文檔時(shí),獲取父文檔 的標(biāo)識(shí)符。例如,參考圖3和4,創(chuàng)建/確認(rèn)實(shí)體305可使用文檔標(biāo)識(shí)符(如果 該標(biāo)識(shí)符是分層的話)來(lái)獲取父文檔。創(chuàng)建/確認(rèn)實(shí)體305然后可從該文檔獲 取與父文檔相關(guān)聯(lián)的安全數(shù)據(jù)記錄的安全標(biāo)識(shí)符。
在框740,從與父文檔相關(guān)聯(lián)的安全數(shù)據(jù)記錄的字段中獲取公鑰。在框 750,使用該公鑰來(lái)驗(yàn)證文檔是否是由授權(quán)名字空間所有者創(chuàng)建的,如上所述。
在框755,動(dòng)作結(jié)束。
圖8是表示被配置成根據(jù)此處所描述主題的各方面操作的示例性設(shè)備的 框圖。設(shè)備805可包括創(chuàng)建組件810、密碼組件815、文檔定位器820、確認(rèn)組件825、數(shù)據(jù)存儲(chǔ)830和通信機(jī)制835。
創(chuàng)建組件810代表具有名字空間所有權(quán)的創(chuàng)建實(shí)體,如上所述。密碼組 件815被用來(lái)加密和解密數(shù)據(jù),并可包括例如密碼例程庫(kù)。
文檔定位器820確定文檔位于何處,這可以或者在本地?cái)?shù)據(jù)存儲(chǔ)830上 或者在設(shè)備805外部的某一數(shù)據(jù)存儲(chǔ)上。
確認(rèn)組件825代表上述確認(rèn)實(shí)體,并參與確定文檔是否由授權(quán)名字空間 所有者創(chuàng)建。
通信機(jī)制835允許設(shè)備805與其它設(shè)備通信以例如獲得文檔和安全數(shù)據(jù)。 通信機(jī)制640可以是結(jié)合圖1所述的網(wǎng)絡(luò)接口或適配器170、調(diào)制解調(diào)器172 或用于建立通信的任何其它裝置。
可以理解,可以實(shí)現(xiàn)圖8所示的設(shè)備805的其它變型而不背離此處所描 述主題的各方面的精神或范圍??梢岳斫?,設(shè)備805上可以存在更多、更少或 其它組件而不背離此處所描述主題的各方面的精神或范圍。
如從上述詳細(xì)描述中可以看見(jiàn),已經(jīng)描述了關(guān)于創(chuàng)建和確認(rèn)密碼保護(hù)文 檔的各方面。盡管此處所描述主題的各方面易于作出各種修改和替換構(gòu)造,但 其某些說(shuō)明性實(shí)施例在附圖中示出并在上面被詳細(xì)地描述。然而,應(yīng)當(dāng)理解, 并不旨在將所要求保護(hù)主題的各方面限制于所公開(kāi)的具體形式,而是相反地, 目的是要覆蓋落入此處所描述主題的各方面的精神和范圍之內(nèi)的所有修改、替 換構(gòu)造和等效方案。
權(quán)利要求
1.一種具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)(130、141、152、156、181),所述指令在被執(zhí)行時(shí)執(zhí)行以下動(dòng)作,包括獲取與在第一名字空間中創(chuàng)建文檔相關(guān)的密鑰(625、635);在所述第一名字空間中創(chuàng)建文檔(620、640),所述文檔標(biāo)識(shí)與獲授權(quán)在與所述文檔相關(guān)聯(lián)的第二名字空間中創(chuàng)建文檔的實(shí)體相關(guān)的加密字段;以及使用所述密鑰來(lái)創(chuàng)建指示所述文檔是由有權(quán)訪問(wèn)所述密鑰的實(shí)體創(chuàng)建的標(biāo)記(630、650)。
2. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,獲取與在第一名字 空間中創(chuàng)建文檔相關(guān)的密鑰包括創(chuàng)建私鑰。
3. 如權(quán)利要求2所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,使用所述密鑰來(lái)創(chuàng) 建指示所述文檔是由有權(quán)訪問(wèn)所述密鑰的實(shí)體創(chuàng)建的標(biāo)記包括使用所述私鑰 來(lái)創(chuàng)建安全數(shù)據(jù)的至少一部分的散列的簽名,所述安全數(shù)據(jù)包括所述加密字 段。
4. 如權(quán)利要求3所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括創(chuàng)建對(duì)應(yīng)于 所述私鑰的公鑰,并且將所述公鑰存儲(chǔ)在向?qū)で蟠_認(rèn)所述簽名經(jīng)由所述私鑰創(chuàng) 建的實(shí)體提供對(duì)所述公鑰的訪問(wèn)的服務(wù)中。
5. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,獲取與在第一名 字空間中創(chuàng)建文檔相關(guān)的密鑰包括從關(guān)于另一文檔的數(shù)據(jù)中獲取私鑰,所述數(shù) 據(jù)授權(quán)一個(gè)或多個(gè)實(shí)體的集合在所述第一名字空間中創(chuàng)建文檔,所述數(shù)據(jù)是加 密的。
6. 如權(quán)利要求5所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述關(guān)于另一文檔 的數(shù)據(jù)還與所述文檔相關(guān)以使得所述數(shù)據(jù)授權(quán)所述一個(gè)或多個(gè)實(shí)體的集合在 所述第一和第二名字空間中創(chuàng)建文檔。
7. 如權(quán)利要求5所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,不同的一個(gè)或多個(gè) 實(shí)體的集合被授權(quán)在所述第二名字空間中創(chuàng)建文檔。
8. 如權(quán)利要求5所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述另一文檔是所 述文檔的父文檔。
9. 如權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述密鑰是加密的并且與授權(quán)字段相關(guān)聯(lián),所述授權(quán)字段可由所述實(shí)體解密。
10. 如權(quán)利要求l所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括如果被 授權(quán)在所述第一名字空間中創(chuàng)建文檔的所有實(shí)體也被允許在所述第二名字空 間中創(chuàng)建文檔,則將所述文檔與所述文檔的父文檔的安全數(shù)據(jù)相關(guān)聯(lián)。
11. 一種至少部分地由計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括-獲取子文檔(710),所述子文檔包括創(chuàng)建所述子文檔的實(shí)體的簽名,所述簽名使用私鑰來(lái)創(chuàng)建;獲取父文檔(735),所述父文檔是所述子文檔的父文檔,所述父文檔與 包括授權(quán)實(shí)體創(chuàng)建所述父文檔的子文檔的字段的數(shù)據(jù)相關(guān)聯(lián),所述字段是加密 的,所述父文檔還包括對(duì)應(yīng)于所述私鑰的公鑰;獲取所述公鑰(725、 740);以及經(jīng)由所述公鑰來(lái)確定創(chuàng)建所述文檔的實(shí)體的簽名是使用所述私鑰來(lái)創(chuàng)建 的(730、 750)。
12. 如權(quán)利要求11所述的方法,其特征在于,所述父文檔包括標(biāo)識(shí)所 述數(shù)據(jù)的標(biāo)識(shí)符,所述標(biāo)識(shí)符是所述數(shù)據(jù)的至少一部分的散列。
13. 如權(quán)利要求11所述的方法,其特征在于,所述子文檔還包括標(biāo)識(shí) 授權(quán)實(shí)體創(chuàng)建所述子文檔的子文檔的其他數(shù)據(jù)的標(biāo)識(shí)符,所述其他數(shù)據(jù)是加密 的,所述其他數(shù)據(jù)可由被授權(quán)創(chuàng)建所述子文檔的子文檔的實(shí)體解密。
14. 如權(quán)利要求11所述的方法,其特征在于,所述子文檔和所述父文 檔各自包括與所述文檔相關(guān)聯(lián)的分層結(jié)構(gòu)的指示。
15. 如權(quán)利要求14所述的方法,其特征在于,所述分層結(jié)構(gòu)指示所述 父文檔是所述子文檔的父文檔。
16. 如權(quán)利要求11所述的方法,其特征在于,經(jīng)由所述公鑰來(lái)確定創(chuàng) 建所述文檔的實(shí)體的簽名是使用所述私鑰來(lái)創(chuàng)建的包括計(jì)算所述子文檔的散 列,對(duì)所述簽名應(yīng)用所述公鑰以獲取位,并將所述子文檔的散列與所述位進(jìn)行 比較。
17. 如權(quán)利要求11所述的方法,其特征在于,授權(quán)實(shí)體創(chuàng)建所述父文 檔的子文檔的字段包括用于獲取所述私鑰的密鑰。
18. —種處于計(jì)算環(huán)境的裝置,包括文檔定位器(820),其可用于確定包括加密數(shù)據(jù)的父文檔的位置,所述 父文檔標(biāo)識(shí)與所述父文檔相關(guān)聯(lián)的安全數(shù)據(jù),所述安全數(shù)據(jù)包括與獲授權(quán)創(chuàng)建所述父文檔的子文檔的實(shí)體相關(guān)的加密字段;可用于執(zhí)行密碼操作的密碼組件(815);以及創(chuàng)建組件(810),其可用于使用所述密碼組件和所述加密字段來(lái)創(chuàng)建子 文檔。
19. 如權(quán)利要求18所述的裝置,其特征在于,還包括確認(rèn)組件,所述 確認(rèn)組件可用于確定子文檔是否是由授權(quán)實(shí)體創(chuàng)建的。
20. 如權(quán)利要求18所述的裝置,其特征在于,所述加密字段包括私鑰, 并且其中所述創(chuàng)建組件還可用于使用所述密碼組件以所述私鑰來(lái)簽署所述子文檔。
全文摘要
此處所描述主題的各方面涉及創(chuàng)建和確認(rèn)密碼保護(hù)文檔。在各方面,加密文檔以保護(hù)其不被未經(jīng)授權(quán)地訪問(wèn)。具有名字空間所有權(quán)的實(shí)體可在授權(quán)名字空間中創(chuàng)建文檔并用私鑰來(lái)簽署該文檔。其他實(shí)體可通過(guò)使用可在與該文檔的父文檔相關(guān)聯(lián)的安全數(shù)據(jù)中獲得的公鑰來(lái)確認(rèn)該文檔是由授權(quán)名字空間所有者創(chuàng)建的。對(duì)于根文檔,公鑰可從目錄服務(wù)獲得。名字空間所有者可改變被允許創(chuàng)建子文檔的名字空間所有者。
文檔編號(hào)H04L9/32GK101689989SQ200880024395
公開(kāi)日2010年3月31日 申請(qǐng)日期2008年7月11日 優(yōu)先權(quán)日2007年7月13日
發(fā)明者C·W·里德 申請(qǐng)人:微軟公司