(57)【特許請求の範囲】
【請求項１】
実行時に、
文書を第１の名前空間内で作成することに関連するキーを取得するステップと、
前記第１の名前空間で文書を作成するステップであって、前記文書は、前記文書に関連付けられた第２の名前空間内で文書を作成する権限をもつエンティティに関連する暗号化されたフィールドを特定するステップと、
前記キーを使用して、前記文書が前記キーへのアクセス権を有するエンティティによって作成されたことを示す証を作成するステップと、
を含む動作を実施する、コンピュータ実行可能命令を有する、コンピュータ記憶媒体。
【請求項２】
文書を第１の名前空間内で作成することに関連するキーを取得するステップは秘密キーを作成するステップを含む、請求項１に記載のコンピュータ記憶媒体。
【請求項３】
前記キーを使用して、前記文書が前記キーへのアクセス権を有するエンティティによって作成されたことを示す証を作成するステップは、前記秘密キーを使用して、前記暗号化されたフィールドを含むセキュリティ・データの少なくとも一部のハッシュの署名を作成するステップを含む、請求項２に記載のコンピュータ記憶媒体。
【請求項４】
前記秘密キーに対応する公開キーを作成するステップと、前記署名が前記秘密キーを介して作成されたことを検証しようとするエンティティに前記公開キーへのアクセス権を提供するサービスに前記公開キーを格納するステップとをさらに含む、請求項３に記載のコンピュータ記憶媒体。
【請求項５】
文書を第１の名前空間内で作成することに関連するキーを取得するステップは、秘密キーを別の文書に関連するデータから取得するステップを含み、前記データは１組の１つまたは複数のエンティティが文書を前記第１の名前空間内で作成することを許可し、前記データは暗号化されている、請求項１に記載のコンピュータ記憶媒体。
【請求項６】
その他の文書に関連する前記データは前記文書にも関連し、その結果、前記データは、１組の１つまたは複数のエンティティが文書を前記第１および第２の名前空間内で作成することを許可する、請求項５に記載のコンピュータ記憶媒体。
【請求項７】
別の１組の１つまたは複数のエンティティは文書を前記第２の名前空間内で作成する権限をもつ、請求項５に記載のコンピュータ記憶媒体。
【請求項８】
前記他の文書は前記文書の親である、請求項５に記載のコンピュータ記憶媒体。
【請求項９】
前記キーは暗号化され、前記エンティティによって復号化可能である認証フィールドと関連付けられている、請求項１に記載のコンピュータ記憶媒体。
【請求項１０】
文書を前記第１の名前空間内で作成する権限をもつ全てのエンティティが文書を前記第２の名前空間内でも作成できるよう許可されている場合に、文書を親文書のセキュリティ・データと関連付けるステップをさらに含む、請求項１に記載のコンピュータ記憶媒体。
【請求項１１】
子文書を作成したエンティティの署名を含む前記子文書を取得するステップであって、前記署名は秘密キーを用いて作成されているステップと、
親文書を取得するステップであって、前記親文書は前記子文書の親であり、前記親文書はエンティティが前記親文書の子を作成することを許可するフィールドを含むデータに関連付けられ、前記フィールドは暗号化されており、前記データはまた前記秘密キーに対応する公開キーを含むステップと、
前記公開キーを取得するステップと、
前記子文書を作成した前記エンティティの前記署名が前記秘密キーを用いて作成されたことを、前記公開キーを介して決定するステップと、
を含む、コンピュータによって実装した方法。
【請求項１２】
前記親文書は、前記データを特定し前記データの少なくとも一部のハッシュである識別子を含む、請求項１１に記載の方法。
【請求項１３】
前記子文書は、エンティティが前記子文書の子を作成することを許可する他のデータを特定する識別子も含み、前記他のデータは暗号化されており、前記他のデータは前記子文書の子を作成する権限をもつエンティティによって復号化可能である、請求項１１に記載の方法。
【請求項１４】
前記子文書と前記親文書はそれぞれ前記文書に関連付けられた階層を示すものを含む、請求項１１に記載の方法。
【請求項１５】
前記階層は前記親文書が前記子文書の親であることを示す、請求項１４に記載の方法。    
【請求項１６】
前記文書を作成した前記エンティティの前記署名が前記秘密キーを用いて作成されたことを前記公開キーを介して決定するステップは、前記子文書のハッシュを計算するステップと、前記公開キーを前記署名に適用して諸ビットを取得するステップと、前記子文書の前記ハッシュを前記諸ビットと比較するステップとを含む、請求項１１に記載の方法。
【請求項１７】
エンティティが前記親文書の子を作成することを許可するフィールドはキーを含み、前記キーによって前記秘密キーが得られる、請求項１１に記載の方法。
【請求項１８】
コンピューティング環境において、
暗号化データを含む親文書の場所を決定するように動作可能な文書ロケータであって、前記親文書は前記親文書に関連付けられたセキュリティ・データを特定し、前記セキュリティ・データは、前記親文書の子文書を作成する権限をもつエンティティに関連する暗号化されたフィールドを含む文書ロケータと、
暗号化動作を実施するように動作可能な暗号化コンポーネントと、
前記暗号化コンポーネントおよび前記暗号化されたフィールドを使用して子文書を作成するように動作する作成コンポーネントと、
を備える装置。
【請求項１９】
前記子文書が許可されたエンティティによって作成されたかどうかを判定するように動作可能な検証コンポーネントをさらに備える、請求項１８に記載の装置。
【請求項２０】
前記暗号化されたフィールドは秘密キーを含み、前記作成コンポーネントはさらに、前記暗号化コンポーネントを使用して前記子文書を前記秘密キーで署名するように動作可能である、請求項１８に記載の装置。
【請求項２１】
コンピュータに請求項１１乃至１７のいずれかに記載の方法を実行させることを特徴とするプログラム。
【請求項２２】
プロセッサと、請求項１１乃至１７のいずれかに記載の方法を実行させるプログラムを有する記録媒体とを備えたことを特徴とするコンピュータ。
【発明の詳細な説明】
【背景技術】
【０００１】
ユーザ・データへのアクセス権付与は、通常、プログラム的に行われる。即ち、ユーザのアクセス権に基づいて、オペレーティング・システムまたはウェブ・サービスがデータへのアクセス権を付与する。このモデルはあまり安全ではなく、ユーザが他の多数のエンティティにアクセス権を付与する場合は特にそうである。データへのアクセス権を有する任意のエンティティの安全性が損なわれれば、ユーザが許可しないまま、またはユーザが知らないうちに、ユーザのデータにアクセスされ、データが悪意をもって変更または破壊される恐れがある。ユーザのデータを扱うエンティティが増えれば、データの安全性は低下する。
【発明の概要】
【０００２】
簡潔に述べると、本明細書で説明する主題の態様は、暗号で保護された文書の作成と検証に関する。諸態様では、文書は、不正アクセスから保護するために暗号化される。名前空間の所有権を有するエンティティは、文書を許可された名前空間で作成し、文書を秘密キーで署名することができる。他のエンティティは、文書が許可された名前空間の所有者によって作成されたことを、当該文書の親文書に関連付けられたセキュリティ・データにおいて利用可能な公開キーを用いて検証することができる。ルート文書の場合、公開キーはディレクトリ・サービスから利用することができる。名前空間の所有者は、文書の子文書を作成できる名前空間の所有者（複数可）を変更することができる。
【０００３】
本概要は、発明を実施するための形態でさらに説明する主題の幾つかの態様を簡潔に特定するために提示する。本概要はクレーム主題の主要特徴または本質的な特徴を特定しようとするものではなく、クレーム主題の範囲を限定するために使用しようとするものでもない。
【０００４】
「本明細書で説明する主題」という表現は、文脈で別途明確に示さない限り、発明を実施するための形態で説明する主題を指す。「諸態様」という語は「少なくとも１つの態様」と読むべきである。発明を実施するための形態で説明する主題の態様を特定するのは、クレーム主題の主要な特徴または本質的な特徴を特定しようとするものではない。
【０００５】
上述の態様と本明細書で説明する主題の他の態様とは、添付の図面で例として図示されており、限定ではない。図面では、同じ参照番号は同じ要素を示す。
【図面の簡単な説明】
【０００６】
【図１】本明細書で説明する主題の態様を組み込むことができる例示的な汎用目的のコンピューティング環境を表すブロック図である。
【図２】本明細書で説明する主題の態様が動作可能な例示的な環境を一般的に表すブロック図である。
【図３】本明細書で説明する主題の態様に従って文書の作成または検証に参加できる１組の例示的なエンティティを一般的に表すブロック図である。
【図４】本明細書で説明する主題の態様と関連して使用できる幾つかの例示的なデータ構造を示す図である。
【図５Ａ】本明細書で説明する主題の態様に従って、子文書の作成において変更しうるデータと、実施できる動作とを一般的に表すブロック図である。
【図５Ｂ】本明細書で説明する主題の態様に従って、子文書の作成、および子文書の名前空間で文書を作成できる名前空間の所有者（複数可）の変更において、変更しうるデータと実施できる動作とを一般的に表すブロック図である。
【図６】本明細書で説明する主題の態様に従って、文書の作成において実施できる例示的な動作を一般的に表す流れ図である。
【図７】本明細書で説明する主題の態様に従って、文書が許可された名前空間の所有者によって作成されたことを検証する際に実施できる例示的な動作を一般的に表す流れ図である。
【図８】本明細書で説明する主題の態様に従って動作するように構成した例示的な装置を表すブロック図である。
【発明を実施するための形態】
【０００７】
例示的な動作環境
図１は、本明細書で説明する主題の態様を実装できる適切なコンピューティング・システム環境１００の例を示す。コンピューティング・システム環境１００は適切なコンピューティング環境の１例に過ぎず、本明細書で説明する態様の使用範囲または機能範囲の限定を示唆しようとするものではない。また、コンピューティング環境１００が、例示的な動作環境１００で示した構成要素の任意の１つまたは組合せに関していかなる依存性または要件も有するとは解釈すべきでない。
【０００８】
本明細書で説明する主題の態様は、他の多数の汎用目的または特殊目的のコンピューティング・システム環境または構成で動作する。本明細書で説明する主題の態様の使用に適しうる周知のコンピューティング・システム、環境、および／または構成の例には、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド装置またはラップトップ装置、マルチプロセッサ・システム、マイクロコントローラ・ベースのシステム、セット・トップ・ボックス、プログラム可能消費家電、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、上記のシステムまたは装置の何れかを含む分散コンピューティング環境、等が含まれるがこれらに限らない。
【０００９】
本明細書で説明する主題の態様を、プログラム・モジュールのような、コンピュータによって実行されているコンピュータ実行可能命令の一般的な状況で説明することができる。一般に、プログラム・モジュールはルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含み、これらは特定のタスクを実施するか特定の抽象データ型を実装する。本明細書で説明する主題の態様を、通信ネットワークを通してリンクしたリモート処理装置によってタスクを実施する分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラム・モジュールを、メモリ記憶装置を含むローカル・コンピュータ記憶媒体とリモート・コンピュータ記憶媒体の両方に配置することができる。
【００１０】
図１を参照すると、本明細書で説明する主題の態様を実装する例示的なシステムは、コンピュータ１１０の形で汎用目的のコンピューティング装置を備える。コンピュータ１１０の構成要素には、演算装置１２０、システム・メモリ１３０、およびシステム・メモリを含む様々なシステム・コンポーネントを演算装置１２０に結合するシステム・バス１２１が含まれる。システム・バス１２１は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャの何れかを用いたローカル・バスを含む、数種のバス構造のうちの何れかであってもよい。限定ではなく例として、かかるアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカル・バス、およびメザニン・バスとしても知られるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、等が含まれる。
【００１１】
コンピュータ１１０は、通常、様々なコンピュータ読取可能媒体を備える。コンピュータ読取可能媒体は、コンピュータ１１０がアクセス可能な任意の利用可能媒体であることができ、揮発性媒体および不揮発性媒体と取外し可能媒体および取外し不能媒体の両方を含む。限定ではなく例として、コンピュータ読取可能媒体はコンピュータ記憶媒体と通信媒体を備えることができる。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラム・モジュール、または他のデータのような情報を記憶するための任意の方法または技術で実装した揮発性媒体および不揮発性媒体、取外し可能媒体および取外し不能媒体の両方が含まれる。コンピュータ記憶媒体にはＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）もしくは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または所望の情報の記憶に使用できコンピュータ１１０によりアクセス可能な他の任意の媒体が含まれるがこれらに限らない。通信媒体は、通常、搬送波または他の伝送機構のような変調データ信号で、コンピュータ読取可能命令、データ構造、プログラム・モジュール、または他のデータを具現化し、任意の情報送達媒体を含む。「変調データ信号」という用語は、１つまたは複数のその特性群を有するか、信号内の情報をエンコードするように変化した信号を意味する。限定ではなく例として、通信媒体には有線ネットワークまたは直接配線接続のような有線媒体、ならびに音響、ＲＦ、赤外線、および他の無線媒体のような無線媒体が含まれる。以上の何れかの組合せもコンピュータ読取可能媒体の範囲に含まれるべきである。
【００１２】
システム・メモリ１３０は、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）１３１およびＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１３２のような揮発性メモリおよび／または不揮発性メモリの形のコンピュータ記憶媒体を備える。ＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）１３３は、例えば起動中に、コンピュータ１１０内部の要素間での情報の伝送を支援する基本ルーチンを含み、通常、ＲＯＭ１３１に記憶される。ＲＡＭ１３２は、通常、演算装置１２０が即座にアクセス可能なデータおよび／または演算装置１２０上で現在稼動しているプログラム・モジュールを含む。限定ではなく例として、図１はオペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６およびプログラム・データ１３７を示す。
【００１３】
コンピュータ１１０は他の取外し可能媒体または取外し不能、揮発性または不揮発性のコンピュータ記憶媒体を備えることもできる。例としてのみ、図１は取外し可能で不揮発性の磁気媒体を読み書きするハード・ディスク・ドライブ１４１、取外し可能で不揮発性の磁気ディスク１５２を読み書きする磁気ディスク・ドライブ１５１、およびＣＤ  ＲＯＭまたは他の光媒体のような取外し可能で不揮発性の光ディスク１５６を読み書きする光ディスク・ドライブ１５５を示す。例示的な動作環境で使用できる他の取外し可能または取外し不能、揮発性または不揮発性のコンピュータ記憶媒体には、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、固体ＲＡＭ、固体ＲＯＭ、等が含まれるがこれらに限らない。ハード・ディスク・ドライブ１４１は、通常、インタフェース１４０のような取外し不能メモリ・インタフェースを介してシステム・バス１２１に接続し、磁気ディスク・ドライブ１５１および光ディスク・ドライブ１５５は、通常、インタフェース１５０のような取外し可能メモリ・インタフェースでシステム・バス１２１に接続する。
【００１４】
上で論じ、図１で示したドライブおよびその関連するコンピュータ記憶媒体は、コンピュータ１１０向けのコンピュータ読取可能命令、データ構造、プログラム・モジュールおよび他のデータを記憶する。例えば、図１では、ハード・ディスク・ドライブ１４１がオペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７を記憶するステップとして示してある。これらの構成要素はオペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７と同一であるか異なるかの何れかであることができることに留意されたい。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７には本明細書では異なる番号を与え、最低限それらが異なるコピーであることを示す。ユーザは、キーボード１６２、一般にマウスと呼ばれるポインティング・デバイス１６１、トラックボールまたはタッチ・パッドのような入力装置を通してコマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）はマイクロフォン、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、スキャナ、ハンドヘルドＰＣまたは他のライティング・タブレットのタッチ・センシティブ・スクリーン、等を含むことができる。これらおよび他の入力装置は、システム・バスに結合した入力インタフェース１６０を通して演算装置１２０に接続されることがよくあるが、パラレル・ポート、ゲーム・ポートまたはＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）のような他のインタフェースおよびバス構造で接続してもよい。モニタ１９１または他種の表示装置も、ビデオ・インタフェース１９０のようなインタフェースを介してシステム・バス１２１に接続される。モニタに加えて、コンピュータは、スピーカ１９７およびプリンタ１９６のような他の周辺出力装置を含むこともでき、これらは出力周辺インタフェース１９０を通して接続することができる。
【００１５】
コンピュータ１１０は、リモート・コンピュータ１８０のような１つまたは複数のリモート・コンピュータへの論理接続を用いてネットワーク環境で動作することができる。リモート・コンピュータ１８０はパーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイスまたは他の共通ネットワーク・ノードであることができ、通常、コンピュータ１１０に関して上述した要素の多くまたは全てを含むが、図１ではメモリ記憶装置１８１のみを示した。図１に図示した論理接続にはＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｏｗｏｒｋ）１７１およびＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）１７３が含まれるが、他のネットワークを含んでもよい。係るネットワーク環境は職場、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットで一般的である。
【００１６】
ＬＡＮネットワーク環境で使用するとき、コンピュータ１１０はネットワーク・インタフェースまたはアダプタ１７０を通してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用するとき、コンピュータ１１０は、通常、インターネットのようなＷＡＮ１７３上で通信を確立するためのモデム１７２または他の手段を備える。モデム１７２は、内部または外部にあることができ、ユーザ入力インタフェース１６０または他の適切なメカニズムを介してシステム・バス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関して図示したプログラム・モジュールまたはその一部を、リモート・メモリ記憶装置に記憶することができる。限定ではなく例として、図１ではリモート・アプリケーション・プログラム１８５がメモリ装置１８１に常駐するとして示してある。表示のネットワーク接続は例であって、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
【００１７】
文書の作成と検証
図２は、本明細書で説明する主題の態様が動作可能な例示的な環境を一般的に表すブロック図である。本環境は、ユーザ装置２０５〜２０７、記憶装置２１０〜２１２、ホストされたアプリケーション２１５、サービス２２０〜２２３、およびネットワーク２２５を含む。
【００１８】
ユーザは、ユーザ装置２０５を使用して記憶装置２１０にデータを記憶することができる。そうすると、ユーザ装置２０５〜２０７、サービス２２０〜２２３、およびホストされたアプリケーション２１５からユーザのデータにアクセスすることができる。ユーザのデータを複製装置２１１〜２１２に複製することもできる。
【００１９】
ユーザ装置２０６および２０７を、データを記憶したユーザによって操作することができ、当該ユーザが当該データへのアクセス権を与えた他のユーザによって操作することができる。例えば、ユーザは職場でコンピュータ（例えば、ユーザ装置２０５）を有することができ、当該コンピュータを用いてデータを記憶装置２１０に記憶することができる。自宅では、ユーザは別のコンピュータ（例えば、ユーザ装置２０６）を有することができ、当該コンピュータを用いてデータにアクセスすることができる。ユーザは携帯電話または他の電子装置（例えば、ユーザ装置２０７）を有することもでき、これらを用いてデータにアクセスすることができる。ユーザが旅行している場合、ユーザは携帯しているコンピュータを介して、またはユーザが使用できる別のコンピュータもしくは電子装置を介して、データにアクセスすることができる。
【００２０】
前述のように、ユーザは、他のユーザにデータへのアクセス権を持たせたいかもしれず、当該他のユーザに係るアクセス権を付与することができる。これらのユーザはコンピュータまたは他の電子装置（例えば、ユーザ装置２０６および２０７）を使用して、自身のアクセス権に従ってデータにアクセスすることができる。
【００２１】
ユーザは、ホストされたアプリケーション２１５を介してデータにアクセスしたいかもしれない。ユーザは、例えば、ホストされたアプリケーション２１５にウェブ・ブラウザを介してアクセスすることができ、次いでホストされたアプリケーション２１５を介してデータにアクセスすることができる。
【００２２】
ユーザは、或る種のサービスに自分のデータへのアクセス権を持たせたいかもしれない。例えば、ユーザは、広告サーバ２２１に自分のデータへのアクセス権を持たせる自分または他人に関連する広告を提供したいかもしれない。ユーザは検索エンジン２２０に自分のデータへのアクセス権を持たせて、他人が自分のデータを発見できるようにしたいかもしれない。ユーザはアーカイブ・サービス２２２にデータへのアクセス権を持たせてデータのアーカイブ式バックアップを作成したいかもしれない。ユーザはまた、他のサービス２２３に様々な目的でデータへのアクセス権を持たせたいかもしれない。
【００２３】
エンティティには、物理装置、プロセス、サービス、マシン、ユーザ、キー、コンポーネント、１つまたは複数の以上のもののうち複数、等が含まれる。ユーザは、ユーザ・データへのアクセス権を有する各エンティティに、エンティティ間で異なりうる１組の特定のアクセス権を与えたいかもしれない。例えば、ユーザは、アーカイブ・サービスがデータをコピーすることはできるが有意味にデータを読むことも修正することもできないようにしたいかもしれない。データを有意味に読むことも修正することもなくデータをコピーできるようにすることは、しばしば「コピー専用」アクセスと呼ばれる。別の例として、ユーザは広告サーバ２２１と検索エンジン２２０に、データを読み出すことはできるがデータへ書き込むことはできないようにしたいかもしれない。ユーザは、何人かの同僚にはデータの読書きアクセスを持たせたいが、他の仕事仲間にはデータへの読取アクセス権またはコピー専用アクセス権だけを持たせたいかもしれない。
【００２４】
ネットワーク２２５は、データを或るエンティティから別のエンティティへ運ぶための１つまたは複数の装置の任意の機構および／またはセットを表し、イントラ・ネットワークおよびインター・ネットワーク、インターネット、電話線、セルラ・ネットワーク、ネットワーク装置、装置間の直接接続、無線接続、等を含むことができる。ユーザは、ネットワーク２２５の装置がデータをコピーして他のエンティティへ送信はできるがデータを変更することもデータを有意味に読むこともできないようにしたいかもしれない。
【００２５】
装置の例（例えば、装置２０５〜２０７および２１０〜２１２）には、携帯電話、テキスト・メッセージング装置、スマート・フォン、ネットワーク装置、図１に関して説明した特殊目的および汎用目的の電子装置、上記の組合せ、一部、または変形、等が含まれる。
【００２６】
データを扱うかデータへのアクセス権を有するエンティティが多くなると、データを安全に保つことがより難しくなり、データが悪意をもって破壊または更新されないことを保証するのがより難しくなることは当業者には理解されよう。
【００２７】
図３は、本明細書で説明する主題の態様に従って文書の作成または検証に参加できる１組の例示的なエンティティを一般的に表すブロック図である。エンティティには、作成／検証エンティティ３０５、０個またはそれ以上の中間エンティティ３１０、３３０、および３４０、記憶アクセス・エンティティ３１５、記憶装置３２０、セキュリティ・データ・リポジトリ３３５、およびディレクトリ・サービス３４５が含まれる。
【００２８】
１実施形態では、作成／検証エンティティ３０５はコンピュータのような電子装置であり、中間エンティティ３１０、３３０、ならびに３４０は０個またはそれ以上のネットワーク装置、サーバ、または作成／検証エンティティ３０５および記憶アクセス・エンティティ３１５および／もしくはセキュリティ・データ・リポジトリ３３５および／もしくはディレクトリ・サービス３４０の間にある他の装置である。記憶アクセス・エンティティ３１５は、要求されたドキュメントが記憶されている記憶装置（例えば、記憶装置３２０）にアクセス可能な装置である。
【００２９】
本明細書で使用する文書は、記憶装置に記憶できる任意の長さをもつ任意の１組のビットを含む。図４に関連してさらに詳細に論ずるように、或るバージョンの文書は、文書識別子、セキュリティ・データ識別子、および他のデータの中でもとりわけ暗号化データを含むことができる。文書識別子は文書を特定の名前空間で一意に特定する。セキュリティ・データ識別子は、文書に関連するセキュリティ・データを取り出すために使用することができる。暗号化データは、例えば、ワード・プロセッサ・ファイル、スプレッド・シート、他のデータ、他のデータを復号化するために使用できる暗号キー、またはユーザにとって重要である他の任意のデータのような、ユーザが保護したいコンテンツを含むことができる。
【００３０】
データが暗号化されるので、データを復号化するためのキーを有する人のみが当該データを有意味に読むことができる。後でさらに詳細に論ずるように、キーはセキュリティ・データ・リポジトリ内のセキュリティ・データに保持される。適切なキーにより、ユーザは、当該ユーザが所与の名前空間内に文書とセキュリティ・データを作成する権限を有することを他のエンティティが検証できるように、当該文書と当該セキュリティ・データを当該名前空間内で作成することができる。
【００３１】
記憶装置３２０は、例えば、データを記憶できる任意のコンピュータ読取可能媒体であり、分散ファイル・システムを備えることができる。記憶装置３２０に適した幾つかの例示的なコンピュータ読取可能媒体を、図１と関連させて上述した。
【００３２】
セキュリティ・データ・リポジトリ３３５は記憶装置３２０に記憶した文書に関するセキュリティ・データを記憶する。セキュリティ・データ・リポジトリ３３５は互いと協調して動作する１つまたは複数の装置を備えることができる。セキュリティ・データ・リポジトリ３３５は、文書の各バージョンに対するセキュリティ・データの記録を含むことができる。作成／検証エンティティ３０５は、文書に含まれるセキュリティ・データ識別子をセキュリティ・データ・リポジトリ３３５に送信し当該識別子で特定されるセキュリティ・データを要求することによって、取り出した文書に対応するセキュリティ・データ記録を要求することができる。
【００３３】
１実施形態では、セキュリティ・データを文書自体に記憶することができる。本実施形態では、作成／検証エンティティ３０５はセキュリティ・データを文書から直接取得することができる。
【００３４】
ディレクトリ・サービス３４５は、ルート文書が許可されたエンティティによって作成されたことを検証する際に使用されるキーを記憶および提供するように動作する。ルート文書は、名前空間で利用できる最下層レベルの文書である。他の文書はルート文書に依存することができるが、ルート文書は他の文書に依存しない。例えば、ディレクトリ、サブディレクトリ、等を有する階層型の名前空間では、ルート文書は、当該名前空間内で作成された他の文書のルートである。例えば、名前空間が／／ｄｏｍａｉｎ／ｐａｔｈ／ｆｉｌｅ．ｔｘｔのようなパスを含む場合、「ｄｏｍａｉｎ」がルート文書となる。名前空間がｌｉｖｅ：／／ａｌｉｃｅ／ｕｓｅｒｓ／ｆｉｌｅ１．ｔｘｔのようなｈｔｔｐ風の構文を含む場合、「ａｌｉｃｅ」がルート文書となる。
【００３５】
ルート文書の作成の際、作成エンティティが文書を作成し、公開キーと秘密キーの対を作成し、文書を秘密キーで署名し、公開キーでディレクトリ・サービスに公開する。公開キーで公開する際、エンティティは識別子をルート文書と公開キー（またはその一部）に提供する。ディレクトリ・サービスは、公開キーの公開を要求するエンティティがそれを行う権限をもつことを保証する。エンティティが適切な権限を有する場合、ディレクトリ・サービスは公開キー（またはその一部）を当該ディレクトリ・サービスの記録で公開する。
【００３６】
ルート文書を後で取得するエンティティは、ディレクトリ・サービスに公開キーを要求し当該公開キーを用いて文書の署名を検証することによって、当該ルート文書が許可されたエンティティによって作成されたことを検証することができる。当該エンティティは、ルート文書の識別子をディレクトリ・サービスに提供することによって、公開キーを得ることができる。ディレクトリ・サービスが公開キーの一部のみを記憶する実施形態では、検証エンティティはこの部分を別のエンティティに提供することができ、当該別のエンティティは、公開キー全体を検索して返すためにこの部分を使用する。あるいは、完全な公開キーを文書のセキュリティ・データに含めてもよい。
【００３７】
ディレクトリ・サービス３４５として使用できるサービスの１種は、ＤＮＳ（ｄｏｍａｉｎ  ｎａｍｅ  ｓｅｒｖｉｃｅ）サーバまたはそれに類似するものである。公開キーを、（ルート文書に対応しうる）ドメイン名に対応するＤＮＳサービスの記録に置いてもよい。ＤＮＳサーバは良く確立されておりドメインの所有者を宣言するための機構を有するので、情報基盤をそれ以上必要とせずにＤＮＳサーバを使用してルート文書を検証することができる。公開キー全体をＤＮＳサービス記録に記憶できない場合は、上述の機構を使用して、公開キー全体が別のサービスで利用可能な状態のまま、公開キーの一部をＤＮＳサービス記録に記憶してもよい。
【００３８】
本明細書で説明する主題の態様の趣旨と範囲から逸脱しない他の専用サービスを、ディレクトリ・サービス３４５として使用することもできる。特に、ユーザがルート文書に対する権限を有することを検証でき、かつ識別子とキー（またはその一部）の対を記憶できる、本明細書で説明する主題の趣旨と範囲を逸脱しない任意のエンティティを使用することができる。
【００３９】
１実施形態では、エンティティ３０５、３１０、３１５、３３０および３４５のうち１つまたは複数は、１つまたは複数の装置上で実行する１つまたは複数のプロセスまたはコンポーネントであってもよい。１実施形態では、記憶装置３２０および／またはセキュリティ・データ・リポジトリ３３５は、作成／検証エンティティ３０５を実行する装置内に含まれるか当該装置に取り付けた装置であってもよい。記憶装置３２０に記憶した文書を、例えば、作成／検証エンティティ３０５を実行している装置のユーザによって、またはファイル複製基盤によって、別の装置から記憶装置３２０に置いてもよい。
【００４０】
図より分かるように、図３に関連して上述した例示的な動作環境では、当該文書を作成または検証しようとするエンティティを往復する中で、文書は多数のエンティティを経由することがある。文書のデータを暗号化することにより、任意の記憶装置に、および任意の装置構成で、データを安全に記憶することができる。
【００４１】
図４は、本明細書で説明する主題の態様と関連して使用できる幾つかの例示的なデータ構造を示す。文書データ構造（例えば、文書データ構造４００）を文書ごとに記憶することができる。各文書データ構造４００は、文書識別子４０５、セキュリティ・データ識別子４１０、タイムスタンプ４１５、暗号化データ４２０、および名前空間署名４２５を含む様々なフィールドを含むことができる。
【００４２】
文書識別子４０５を使用して、文書を所与の名前空間内で一意に特定することができる。例えば、ｈｔｔｐ風の構文を有するＵＲＩ（ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｉｄｅｎｔｉｆｉｅｒ）（例えば、ｌｉｖｅ：／／ａｌｉｃｅ／ｕｓｅｒｓ／ｆｉｌｅ１．ｔｘｔ）を使用して文書を所与の名前空間内で特定することができる。別の例として、ＧＵＩＤ（ｇｌｏｂａｌｌｙ  ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ）を使用して文書を所与の名前空間内で特定することができる。
【００４３】
セキュリティ・データ識別子４１０を使用して文書に関連付けられたセキュリティ・データを特定することができる。１実施形態では、セキュリティ・データ識別子４１０は、セキュリティ・データ構造４２７内の１つまたは複数のフィールドをハッシュしたものである。ハッシュでは、入力データをとって、当該入力データの長さに基づいて長さが固定で変化しない出力データを計算する。十分な長さの出力データと適切なハッシュが与えられれば、ハッシュは入力データに対する一意の識別子を効果的に提供する。
【００４４】
タイムスタンプ・フィールド４１０は、文書の作成時点を示すタイムスタンプを含むことができる。前述のように、暗号化データ・フィールド４２０は、ユーザが保護したい任意のコンテンツを含むことができる。
【００４５】
名前空間署名フィールド４２５は、文書データ構造４００が許可されたユーザによって作成され、作成されてから変更されていないことを保証するために使用できる任意の１つまたは複数の機構を備える。１つの例示的な機構は、後で詳細に説明する署名である。
【００４６】
文書データ構造４００に含まれるフィールドの数は、文書に関連するセキュリティ・データを特定するか含むための機構と、文書が許可されたユーザによって作成され、作成されてから変更されていないことを保証するための機構を文書データ構造４００が含む限り、多くても少なくてもよい。
【００４７】
セキュリティ・データ構造４２７はセキュリティ・データ識別子フィールド４３０、１つまたは複数の認証フィールド４４０、１つまたは複数のキー４５０、および署名４５５を含むことができる。１実施形態では、セキュリティ・データ識別子フィールド４３０内のセキュリティ・データ識別子を前述のように（即ち、セキュリティ・データ構造４２７の他のフィールドのハッシュとして）計算することができる。
【００４８】
セキュリティ・データ構造は、文書の親である文書（もしあれば）に関連付けられたセキュリティ・データ構造を特定する親のセキュリティ識別子フィールドを含むこともできる。図５に関連して後でより詳細に説明するように、親セキュリティ・データ識別子を使用して、子文書を作成する権限をもつセキュリティ・プリンシパルによって子文書が生成されたかどうかを検証することができる。
【００４９】
認証フィールド４４０は、文書データ構造４００へのアクセス権を有するか文書データ構造４００に関する他の何らかの役割をもつセキュリティ・プリンシパル（「エンティティ」と称することもある）ごとの認証を含む。幾つかの実施形態では、セキュリティ・プリンシパルは、認証として知られる技法を介して確実に特定され検証されうるエンティティである。他の実施形態では、セキュリティ・プリンシパルは別の文書に関連付けられたセキュリティ・データから復号化したキーを有することができる。セキュリティ・プリンシパルには、ユーザ、マシン、サービス、プロセス、他のエンティティ、暗号化されたキー、または１つもしくは複数の上記のもののうちの複数（例えば、グループ）が含まれる。各認証は、セキュリティ・プリンシパルが保持しているかセキュリティ・プリンシパルが作成したキーによって復号化が可能なキーで暗号化することができる。公開キーまたは秘密キーによる暗号方式は、認証を暗号化または復号化するために使用できる１つの機構である。
【００５０】
特定のセキュリティ・プリンシパルは多数のキーをもつことができ、セキュリティ文書には多数の認証がありうるので、１実施形態では、最適化により、認証の復号化に使用できるキーの最初の数ビットを（平文で）提供するキーヒントを提供する。エンティティはキーの最初の数ビットを単純に当該キーと比較できるので、キーヒントにより、エンティティはどの認証の復号化を試みるべきかを迅速に決定することができる。何百あるいは何千という認証がある場合は、この機構によって時間を大幅に節約することができる。キーヒントで提供されるビット数を数ビット（例えば、２ビットから１６ビットの間）とすることができるので、認証の暗号化または復号化に使用される機構の強度が大幅に弱まることはない。必要ならば、より長いキーを用いて当該機構の強度を増大させることができる。
【００５１】
１実施形態では、認証は、セキュリティ・プリンシパルが文書に関する１つまたは複数のアクセス権または役割（ロール）を遂行できるようにする、暗号化されたキーを含む。例えば、ユーザのセキュリティ・プリンシパルに、文書を読み取り、新しいバージョンの文書を作成し、所与の名前空間内で新しい文書を作成し、どのセキュリティ・プリンシパルが文書にアクセスできるかを変更し、文書に関する他の任意のセキュリティ関連の動作を実施するための権限を与えることができる。別のユーザのセキュリティ・プリンシパルに読取専用アクセス権または書込み専用アクセス権を与えることができる。文書に関してどのような権限も与えられていないエンティティは依然としてコピー専用のアクセス権（即ち、暗号化データをコピーはできるが有意味に読むことはできない）のみを有することができる。係るエンティティを、例えば、文書をアーカイブするために使用することができる。
【００５２】
別の実施形態では、認証は、セキュリティ・プリンシパルが追加のキーをセキュリティ・データ構造４２７の別の場所（例えば、キー（複数可）４５０内）で復号化できるようにする暗号化されたキーを含むことができる。これらの追加のキーにより、文書に関連付けられたアクセス権または他の役割をセキュリティ・プリンシパルに付与することができる。これを、例えば、セキュリティ・データ構造４２７に必要な空間を減らすために実施できる。なぜならば、認証内の単一のキーを使用して、セキュリティ・データ構造４２７内の別の場所にある複数のキーを復号化できるからである。セキュリティ・データ構造４２７が何百、何千という認証を含む場合、多数の認証が１組の共通アクセス権を共有できる。これらのアクセス権に対応するキーを認証自体に含めることができるが、セキュリティ・プリンシパルがセキュリティ・データ構造４２７内の別の場所にアクセスキーを復号化できるようにする単一キーを各認証に与えると空間効率が良いであろう。
【００５３】
利用オプション４４５は、どのように文書を保護するかに関連する１つまたは複数のポリシを含むことができる。例えば、ポリシにより、署名がセキュリティ・データ構造そのものに置かれること、文書データ構造そのものに置かれること、両方に置かれること、または一部の署名が両方のデータ構造に複製されその他の署名が当該データ構造のうち１つだけに置かれることを示すことができる。ポリシにより、各バージョンをオブザーバによって署名すべきかどうかを示すことができる。係るポリシの下では、例えば、オブザーバによって署名されていないバージョンは無効と判定することができる。ポリシにより、名前空間の所有者を作成後に変更できるかどうかを示すことができる。
【００５４】
キー４５０は、前述のように、文書内で付与されたアクセス権または役割に対応しうる暗号化された秘密キーを含むことができる。前述のように、これらのキーを、認証（複数可）フィールド４４０内で得られるキーによって復号化することができる。さらに、これらのキーには、文書またはセキュリティ・データ構造が許可されたセキュリティ・プリンシパルによって作成されたかどうかを検証するために使用できる公開された（即ち、暗号化されていない）公開キーが含まれる。
【００５５】
署名フィールド４５５を、データ構造４００の署名フィールド４５５と同じ方法で使用することができる。
【００５６】
セキュリティ・データ構造４２７に含まれるフィールドの数は、セキュリティ・データ構造４２７が、その関連文書（複数可）に関連づけられた役割にアクセスするかまたは実行するためのキーを、許可されたユーザに提供する機構を含む限り、多くても少なくてもよい。
【００５７】
１実施形態では、文書データ構造４００は、別の文書データ構造を特定する識別子を含むことができる。他の文書データ構造は、文書へのアクセスまたは文書に関連付けられた役割を可能とするキーを含むことができる。この機構を使用して、文書へのグループ・アクセスまたは文書に関連付けられたグループ役割を提供することができる。例えば、第１の文書データ構造に関連付けられたセキュリティ・データ構造内の認証は、グループのメンバが保持するキーに対応することができる。適切なキーを有するグループの任意のメンバは、メンバのキーをセキュリティ・データから取得することができる。メンバのキーにより、メンバは、第２の文書に関連付けられたセキュリティ・データ内でグループに付与された権限に従って第２の文書にアクセスするか、第２の文書に関連付けられた役割を遂行することができる。このように、文書へのアクセスまたは文書に関連付けられた役割の提供では、中間的な文書へアクセスしてもよい。
【００５８】
別の実施形態では、文書データ構造４００は文書識別子または別の文書をまとめて省略することができる。本実施形態では、別の機構により、第１の文書のセキュリティ・データ内のキーが第２の文書へのアクセスを提供できることを示唆することができる。例えば、第１の文書がグループ・アクセスを別の文書に提供することが既知である場合、第１の文書のセキュリティ・データから得たメンバのキーを、ユーザがアクセスを試みたその他の全ての文書のセキュリティ・データにおける全ての認証に対して試すことができる。前述のキーヒントにより本プロセスを加速することができる。
【００５９】
図５Ａは、本明細書で説明する主題の態様に従って、変化しうるデータと、子文書の作成において実施できる動作とを一般的に表すブロック図である。子文書５１０は親文書５０５の子である。子文書５１０は、名前空間の所有権を有するセキュリティ・プリンシパルによって作成される。名前空間の所有権を有するセキュリティ・プリンシパルを、本明細書では単純に名前空間所有者と称することもある。子文書５１０の作成において、名前空間所有者は、文書５０５によって特定されるセキュリティ・データ５１５内で暗号化した名前空間所有者の秘密キーｎｏ1を用いて、文書５１０を署名することができる。名前空間所有者は、名前空間所有者が保有しているか作成可能なキーを用いて認証内で当該秘密キーｎｏ1を復号化することによって、秘密キーｎｏ1を得る。
【００６０】
１実施形態では、名前空間所有者は、文書５１０のハッシュを計算し次いで当該ハッシュを秘密キーｎｏ1を用いて暗号化することによって、秘密キーｎｏ1を用いて文書５１０に署名する。文書５１０が名前空間所有者によって署名されたことを検証したいエンティティは、名前空間所有者の公開キーＮＯ1をセキュリティ・データ５１５から取得し、子文書５１０の署名を名前空間所有者の公開キーＮＯ1で復号化し、文書５１０のハッシュを計算し、復号化した文書５１０の署名を文書５１０のハッシュと比較することができる。復号化された署名と文書５１０のハッシュが同じ場合は、セキュリティ・プリンシパルは文書５１０が、名前空間所有者の秘密キーｎｏ1へのアクセス権を有するエンティティによって作成されたことを確信する。
【００６１】
名前空間所有者が、子文書の名前空間内に新しい文書を作成できる名前空間所有者（複数可）を変更しない場合、当該名前空間所有者は親文書５０５が関連付けられる同じセキュリティ・データ５１５に子文書５１０を関連付けることができる。セキュリティ・プリンシパルが子文書の名前空間内に新しい文書を作成できる名前空間所有者（複数可）を変更した場合、図５Ｂに関してより詳細に説明するように、当該名前空間所有者は新しいセキュリティ・データ５２０を作成でき、子文書５３０を新しいセキュリティ・データ５２０と関連付けることができる。
【００６２】
図５Ｂは、本明細書で説明する主題の態様に従って、変化しうるデータと、子文書の作成、および子文書の名前空間で文書を作成できる名前空間の所有者（複数可）の変更において実施できる動作とを一般的に表すブロック図である。親文書の名前空間所有者は新しいセキュリティ・データ５２０を作成することができる。名前空間所有者は名前空間所有者の新しい秘密キーｎｏ2を作成することもでき、秘密キーｎｏ2を新しいセキュリティ・データ５２０に置いて子文書５３０の名前空間内で子文書を作成する権限をもつ名前空間所有者（複数可）を変更することができる。
【００６３】
これを行って、例えば、子文書に関連付けられたユーザが子文書の子文書を作成できるようにすることができる。例えば、システム管理者等はユーザに対してディレクトリを作成することができる。ユーザが新しい文書をディレクトリ内で作成きるようにするために、システム管理者は当該ディレクトリに対するセキュリティ・データ内で、当該ユーザが名前空間所有者であることを示すことができる。
【００６４】
名前空間所有者の新しい秘密キーｎｏ2を作成しそれを新しいセキュリティ・データ５２０に置いた後、名前空間所有者は新しいセキュリティ・データ５２０を名前空間所有者の秘密キーｎｏ1で署名することができる。これを行って、名前空間所有者が、セキュリティ・データ５２０に反映される名前空間所有者変更をセキュリティ・データ５１５に行う権限があったことを示すことができる。例えば書込み秘密キーｎｏ1を使用することによって、セキュリティ・データ５２０内に記憶したデータのハッシュを暗号化するための署名を作成することができる。名前空間所有者は子文書５３０を作成し、子文書５３０を新しいセキュリティ・データ５２０と関連付けることもできる。名前空間所有者が子文書５４０を親文書５２５の名前空間内で作成する権限を有していたことを示すために、セキュリティ・プリンシパルは新しい文書５３０を名前空間所有者の秘密キーｎｏ1で署名することができる。
【００６５】
１実施形態では、文書（例えば、親文書５２５）の子（例えば、子文書５３０）が許可された名前空間所有者によって作成されたことを検証するために、プロセスは親バージョンの文書（例えば、文書５２５）を得ることができる。親バージョンの文書を用いて、プロセスは当該文書に関連付けられたセキュリティ・データ（例えば、セキュリティ・データ５１５）を発見することができる。
【００６６】
別の実施形態では、子文書５３０に関連付けられた新しいセキュリティ・データ５２０は、親文書５２５に関連付けられたセキュリティ・データ５１５を特定する識別子を含むことができる。本実施形態では、親文書５２５を取得する必要はなく、子文書５３０に対する新しいセキュリティ・データ５２０を使用して親文書５２５に対するセキュリティ・データ５１５を発見することができる。
【００６７】
親文書５２５に対するセキュリティ・データ５１５は、名前空間所有者の公開キーＮＯ1を含む。新しいセキュリティ・データ５２０内のＮＯ1と署名を使用すると、プロセスは、新しいセキュリティ・データ５２０が名前空間所有者の権限を有するセキュリティ・プリンシパルによって作成されたことを検証することができる。子文書５３０内のＮＯ1と署名を使用すると、プロセスは、子文書５３０が名前空間所有者の権限を有するセキュリティ・プリンシパルによって作成されたことを検証することができる。
【００６８】
幾つかの実施形態では、名前空間所有者の署名をセキュリティ・データのみ、文書のみ、またはセキュリティ・データと文書の両方に、含めることができる。これを、前述の利用オプションによって制御することができる。
【００６９】
文書の階層が許可された名前空間所有者によって作成されたことを検証したいエンティティは、ルート文書への階層を再帰的に辿ることができる。例えば、エンティティはルート文書から（階層上）最も遠い子文書から開始して、子文書が図５Ａおよび図５Ｂに関連して上述したように許可された名前空間所有者によって作成されたことを検証することができる。次いで、エンティティはその親文書をとって、当該親文書が許可された名前空間所有者によって作成されたことを検証することができる。これを、エンティティがルート文書に到達するまで繰り返すことができる。ルート文書では、エンティティは公開キーをディレクトリ・サービスから取得して、ルート文書が許可された名前空間所有者によって作成されたかどうかを判定することができる。
【００７０】
将来の検証を加速するため、文書の階層が許可された名前空間所有者によって作成されたと決定した後、エンティティは、文書が許可された名前空間所有者によって作成されたことを示すデータ構造を更新することができる。他の文書を検証するために、エンティティは、当該他の文書が階層の少なくとも一部を共有する限り、当該データ構造に問い合わせることができる。
【００７１】
本明細書で説明する態様の趣旨または範囲から逸脱しない他のデジタル署名／検証機構も使用することができる。
【００７２】
図６は、本明細書で説明する主題の態様に従って、文書の作成において実施できる例示的な動作を一般的に表す流れ図である。ブロック６０５で、動作が開始する。
【００７３】
ブロック６１０で、エンティティは、当該エンティティが子文書の作成を予定している親文書を取得する。例えば、図３を参照すると、作成／検証エンティティ３０５は、記憶装置３２０に記憶された親文書を取得する。作成されている文書がルート文書である場合、親文書を取得する必要はない。そのかわり、秘密キーと公開キーの対を名前空間所有者に対して作成することができる。秘密キーはルート文書を署名するために使用され、公開キーはディレクトリ・サービス内で公開される。
【００７４】
ブロック６１５で、子文書が親文書の名前空間所有者（複数可）とは異なる新しい名前空間所有者（複数可）を含むかどうかを判定する。含む場合、動作はブロック６３５で継続し、含まない場合には動作はブロック６２０で継続する。新しい名前空間所有者（複数可）が望まれる場合は、新しい名前空間所有者のキーをセキュリティ・データに書き込み、これらのキーへのアクセスを、名前空間所有者の役割を与えられたセキュリティ・プリンシパルに制限することができる。同じ名前空間所有者（複数可）が子文書の名前空間を所有する場合は、子文書は単純に親文書に対するセキュリティ・データを参照することができる。ルート文書を作成する場合、動作はブロック６３５で継続する。
【００７５】
ブロック６２０で、文書の子を作成する。例えば、図３を参照すると、作成／検証エンティティ３０５は文書の子を作成する。
【００７６】
ブロック６２５で、子文書にその親文書のセキュリティ・データを関連付ける。例えば、図４および図５Ａを参照すると、新しい文書内のセキュリティ・データ識別子４１０を、セキュリティ・データ５１５を特定する識別子で埋める。
【００７７】
ブロック６３０で、子文書を署名する。例えば、図３を参照すると、作成／検証エンティティ３０５はその名前空間所有者の秘密キーを、親文書に関連付けられたセキュリティ・データから取得し、新しい文書を当該秘密キーで署名する。
【００７８】
ブロック６３５で、名前空間所有者（複数可）が作成された場合（またはルート文書が作成されている場合）、新しいセキュリティ・データを作成する。例えば、図３および図５Ｂを参照すると、作成／検証エンティティ３０５は新しいセキュリティ・データ５２０を作成する。
【００７９】
ブロック６４０で、子文書を作成する。例えば、図３および図５Ｂを参照すると、作成／検証エンティティ３０５は子文書５３０を作成する。
【００８０】
ブロック６４５で、子文書に新しいセキュリティ・データを関連付ける。例えば、図３、４、および５Ｂを参照すると、作成／検証エンティティ３０５はセキュリティ・データ５２０を特定するために子文書５３０のセキュリティ・データ識別子４１０を埋める。
【００８１】
ブロック６５０で、ブロック６３０に関して説明したのと同様に子文書を署名する。さらに、新しいセキュリティ・データも署名することができる。
【００８２】
図６では示していないが、前述のように、オブザーバの書名といった他の署名も取得し文書および／またはセキュリティ・データに置くことができることに留意されたい。
【００８３】
ブロック６５５で、動作が終了する。
【００８４】
図７は、本明細書で説明する主題の態様に従って、文書が許可された名前空間所有者によって作成されたことを検証する際に実施できる例示的な動作を一般的に表す流れ図である。ブロック７０５で、動作が開始する。
【００８５】
ブロック７１０で、文書を取得する。例えば、図３を参照すると、作成／検証エンティティ３０５は、記憶装置３２０から取り出される文書を要求し取得することができる。
【００８６】
ブロック７１５で、セキュリティ・データを取得する。セキュリティ・データが文書に含まれる場合、当該セキュリティ・データを当該文書から取り出す。セキュリティ・データが（図３に示すセキュリティ・データ・リポジトリのような）別の場所に置かれている場合、当該セキュリティ・データをそこから取得する。
【００８７】
ブロック７２０で、文書作成時に新しい名前空間所有者が設定されていたかどうかを判定する。設定されていれば、動作はブロック７３５で継続する。設定されていなければ、動作はブロック７２５で継続する。前述のように、名前空間所有者の新しいキーを使用して、文書の子の名前空間内で文書を作成する権限をもつセキュリティ・プリンシパルを変更することができる。
【００８８】
ブロック７２５で、公開キーを文書に関連付けられたセキュリティ・データのフィールドから取得する。例えば、図４を参照すると、名前空間所有者の公開キーをキー（複数可）フィールド４５０から取得することができる。
【００８９】
ブロック７３０で、公開キーを使用して、文書が許可された名前空間所有者によって作成されたかどうかを検証する。これを、例えば、前述のように実施することができる。
【００９０】
ブロック７３５で、文書を作成するために新しい名前空間所有者のキーを使用したとき、親文書の識別子を取得する。例えば、図３および図４を参照すると、作成／検証エンティティ３０５は、文書識別子を（この識別子が階層的である場合に）使用して文書の親を取得することができる。作成／検証エンティティ３０５は次いで、親文書に関連付けられたセキュリティ・データの記録に対するセキュリティ識別子を、この文書から取得することができる。
【００９１】
ブロック７４０で、公開キーを、親文書に関連付けられたセキュリティ・データの記録のフィールドから取得する。ブロック７５０で、前述のようにこの公開キーを使用して文書が許可されたセキュリティ・プリンシパルによって作成されたかどうかを検証する。
【００９２】
ブロック７５５で、動作が終了する。
【００９３】
図８は、本明細書で説明する主題の態様に従って動作するように構成した例示的な装置を表すブロック図である。装置８０５は、作成コンポーネント８１０、暗号化コンポーネント８１５、文書ロケータ８２０、検証コンポーネント８２５、データ記憶８３０、および通信機構８３５を備えることができる。
【００９４】
作成コンポーネント８１０は、前述のような名前空間所有権を有する作成エンティティを表す。暗号化コンポーネント８１５は、データを暗号化および復号化するために使用し、例えば、暗号化ルーチンのライブラリを備えることができる。
【００９５】
文書ロケータ８２０は、文書が配置される場所を決定し、その場所は、ローカル・データ記憶８３０上か装置８０５外部にある何らかのデータ記憶上である。
【００９６】
検証コンポーネント８２５は、前述の検証エンティティを表し、文書が許可された名前空間所有者によって作成されたかどうかの判定に関与する。
【００９７】
通信機構８３５により、例えば、装置８０５は他の装置と通信して文書とセキュリティ・データを取得することができる。通信機構６４０はネットワーク・インタフェースまたはアダプタ１７０、モデム１７２、または図１に関連して説明したような通信を確立するための他の任意の手段であることができる。
【００９８】
本明細書で説明した主題の態様の趣旨または範囲から逸脱しない、図８に示す装置８０５の他の変形を実装してもよいことは理解されよう。本明細書で説明した主題の態様の趣旨または範囲から逸脱しない、より多くの、より少ない、または他のコンポーネントが装置８０５上に存在してもよいことは理解されよう。
【００９９】
以上の詳細な説明から分かるように、暗号で保護した文書の作成と検証に関連する態様を説明した。本明細書で説明した主題の態様は様々な修正および代替構成を受け入れる余地があるが、その或る特定の例示的な実施形態が図面で示されており、上で詳細に説明されている。しかし、クレーム主題の態様を開示した特定の形態に限定する意図はなく、逆に、本明細書で説明した主題の様々な態様の趣旨と範囲内にある全ての修正、代替構成、および均等物を含む意図があることは理解されよう。
【図１】
0005480135.tif 000002
【図２】
0005480135.tif 000003
【図３】
0005480135.tif 000004
【図４】
0005480135.tif 000005
【図５Ａ】
0005480135.tif 000006
【図５Ｂ】
0005480135.tif 000007
【図６】
0005480135.tif 000008
【図７】
0005480135.tif 000009
【図８】
0005480135.tif 000010