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