説明

安全なコラボレーティブ・トランザクションを管理する方法及び装置

【課題】異なるセキュリティ・レベルを提供してユーザが自分自身の通信のセキュリティ・レベルを決定できるようにする。
【解決手段】ユーザは低いセキュリティ・レベルを選択してセキュリティ関係のオーバヘッドを可能な限り小さくすることが可能である。他にも、セキュリティ関係のオーバヘッドの増加を伴うもののもっと高いセキュリティ・レベルを選択することも可能である。異なるセキュリティ・レベルは2種類の鍵のうちの一つまたはそれ以上の使用により作成される:暗号化鍵は平文テキストデータをデルタへ暗号化するために使用し、メッセージ認証鍵を使ってデータを認証しデータの完全性を保証する。2種類の鍵を使ってテレスペースの各メンバーでデータを再暗号化しなくて済むようにする。別の実施態様において、「トライブ(tribe)」と呼ばれるサブグループをテレスペース内に形成しそれぞれのトライブが自分のいるテレスペースのセキュリティ・レベルを採用できるようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は安全なデータ交換トランザクションを提供するための方法及び装置に関連し、更に詳しくは、共同作業環境(以下、コラボレーティブ環境)における安全なデータ交換トランザクションを提供する方法及び装置に関する。
【背景技術】
【0002】
現在の計算機アプリケーションはほとんどがシングル・ユーザ・システムである。例えば、従来の編集アプリケーションでは、一人のユーザがファイルを開き内容に変更を加えることができる。第1のユーザがファイルを開いている間に、第2のユーザがそのファイルを開こうとすると、第2のユーザはファイルを開くことができないか変更を加えることができないことになる。第2のユーザはファイルの一時的なコピー(以下、スナップショット・コピー)を取得することができる場合がある。しかしスナップショット・コピーは第1のユーザが作成したオリジナルのコピーに加えたそれ以降の変更は何も更新されない。つまり、第2のユーザはファイルの変更として表現された第1のユーザのアイデアを共有することができない。更に、第2のユーザはオリジナルのファイル内容の変更を行なうことができないので、ファイルの変更として表現されるそのユーザのアイデアを共有することができない。要するに、第1と第2のユーザはファイルの共同作業による(以下、コラボレーティブな)編集ができない。
【0003】
本明細書で用いている術語であるコラボレーション(collaboration)は複数クライアントがアイデアを共有できるようにする能力を意味する。この共有には一人のアイデアを他のメンバーに対して自動的に表明し、他のメンバーがそのアイデアを明示的に要求しなくても良いようにする能力を含む。コラボレーションは更にアイデアを送信するメンバーからのアイデアを自動的にそれぞれのメンバーが受信できるようにする能力も含む。つまり、最低限、コラボレーションは共同作業(collaborative effort)に参加しているメンバーの間での通信を意味する。この通信/コラボレーションは多くのモデルをもとにすることができる。「ブレーン・ストーミング型」セッションは制約されないコラボレーション・モデルである。一方、「ラウンド・ロビン」型モデルはそれぞれのメンバーがアイデアを表明するのに特定の順番を待つもので、制約型のコラボレーション・モデルである。
【0004】
特許文献1に開示された一つのコラボレーション・システムでは、データ変更要求がユーザとの対話に対する応答として生成されすべてのコラボレータに接続されているトランスポンダ・ユニットへ送出される。トランスポンダはコラボレーションに参加しているユーザ全部に対してデータ変更要求をブロードキャストする。各ユーザはコラボレーション用データ(以下、コラボレーティブ・データ)のローカルなコピーを持ち、データ変更要求を受信してローカルなデータ・コピーへ要求された変更を加えるメカニズムを備える。すべてのデータ変更要求がトランスポンダを経由しなければならないため、データ変更要求はすべて同じ順番でそれぞれのコラボレータに受信されることになり、データの完全性が維持される。
【0005】
コラボレーションは1台の計算機またはサーバで作業しているユーザ間でローカルに行なわれたり、ユーザそれぞれがネットワークに接続された計算機に向かっているようなネットワーク上で行なわれることもある。インターネットはこのようなネットワークの一つで、数百万のユーザ間での通信及び対話のためのダイナミックな公衆環境を作り出した。ビジネスにおいて、インターネットまた特にインターネット上で動作するワールドワイドウェブ・アプリケーションはベンダ/メーカ間、メーカ/ディストリビュータ間、ディストリビュータ/顧客間、その他の関係を再編成した。インターネット技術を企業内の機密ネットワークへ拡張すると、「イントラネット」あるいは「プライベート・インターネット」と呼ばれるようなものが、企業のディレクトリとネットワーク基盤を使用する従業員それぞれや作業グループの間で、新しい形態のドキュメント及び情報の共有を可能にした。
【0006】
ワールド・ワイド・ウェブ(「ウェブ」)はその中核にサーバ・クライアント・アーキテクチャを有し個々のクライアント(すなわちウェブ・コンテンツのユーザ)はブラウザを通して、公衆ネットワーク上にあるサーバ(すなわち、インターネット・コンテンツ・プロバイダ)とインタフェースすることで、ウェブ・サイトからドキュメントを取得する。ブラウザはパーソナル・コンピュータがインターネット・ドキュメントを要求し、受信し(例えばダウンロードし)、解釈し、表示し、また一般的にはインターネットをナビゲーションできるようにするソフトウェア・プログラムである。ウェブ・サイトはドキュメントの集合体で、ドキュメントは一般にホームページやこれに関連しリンクされるドキュメントから構成され、クライアントからは離れたサーバ上に配置される。ドキュメントはコンパウンド・ドキュメントとすることができ、データ、グラフィックス、ビデオ、サウンド、及び/または他の種類のメディアや、他のドキュメントへのリンクも含められる。
【0007】
基盤となるウェブ及びその他のインターネット技術は、パーソナル・コンピュータのハードウェア、ソフトウェア、ネットワーク・プロトコル、インフラストラクチャの取り決め(例えば一元的資源指定子Uniform Resource LocatorまたはURL)を含め、標準化が進んでいる。URLはWWW上のすべてのドキュメント・オブジェクトについて所在アドレスを提供する。URLはドキュメント・オブジェクトを択一的に指定しインターネット・プロトコルを使用するアクセス・アルゴリズムも定義することが多い。
【0008】
インターネットを利用するため、インターネット・プロトコルに準拠した形でツールや資源が開発されており、これには電子メール(e−mail)などのアプリケーションを含む。電子メールは電子的な郵便で、これを用いてドキュメントを電子的に、選択したアドレスで送受信する。インターネット上での対話(interaction)のほとんどが「ドキュメント送受信」モデルに従う電子メールやその他のブラウザを使うメディアであると予想された。おそらくはそのモデルのため、ユーザは高次の権威者による介入なしに個人が他の個人の提供した文書にアクセスすることでインターネットを本質的に「ピアツーピア」であると見なすことが多い。
【0009】
結果として、更に「ピアツーピア」的に動作する新しいコラボレーション・モデルが開発された。これらのモデルは「テレスペース」と呼ばれる共有プライベート空間にいるユーザ間の直接接続の上に構築される。各ユーザは「アクティビティ」と呼ばれるプログラムを持ち、これはパーソナル・コンピュータ・システムや、通信機器またはその他のネットワーク接続可能な装置で動作可能である。アクティビティ・プログラムは「デルタ」と呼ばれるデータ交換要求を生成することでユーザとの対話に応答する。アクティビティはまたデータ変更エンジンを備え、これがローカルなデータ・コピーを維持しており、デルタによって要求されたデータへの変更を実行する。デルタはダイナミクス・マネージャによって一人のユーザから別のユーザへと配布される。後者の形式のコラボレーション・システムは「通信マネージャを備えたコンピュータ・システムによるアクティビティ・ベースのコラボレーションのための方法及び装置(method and apparatus for activity−based collaboration by a computer system equipped with a communications manager)」と題するRaymond E. Ozzie, Kenneth G. Moore, Robert H. Myhill and Brian M. Lambertによる1999年7月19日付け出願の特許文献2、「ダイナミクス・マネージャを備えたコンピュータ・システムによるアクティビティ・ベースのコラボレーションのための方法及び装置(method and apparatus for activity−based collaboration by a computer system equipped with a dynamics manager)」と題するRaymond E. Ozzie and Jack. E. Ozzieによる1999年7月19日付け出願の特許文献3、「アクティビティ・ベースのコラボレーション用に装備した分散コンピュータ・システムにおいてデータ変更要求に優先順位をつけデータ完全性を維持するための方法及び装置(method and apparatus for prioritizing data change requests and maintaining date consistency in a distributed computer system equipped for activity−based collaboration)」と題するRaymond E. Ozzie and Jack E. Ozzieによる1999年7月19日付け出願の特許文献4に詳細に記載されている。
【0010】
インターネットは、ユーザに娯楽と有用な通信方法を提供する点でダイナミックかつフレキシブルだが、ユーザのニーズ全部には適合しない。例えば、インターネットは各種のハードウェアとソフトウェアで広範囲のユーザを接続する能力を有することから理想的にはコラボレーションに適したものであろう。しかし、インターネットのセキュリティは希望するのとは程遠い。インターネット上で様々な人数のユーザへメッセージを送信できるが、これらのメッセージは代表的にはサード・パーティのウェブ・サイトを経由しここで通信を傍受したり機密性を侵害することが可能である。結果として、ユーザがインターネット経由でいっそう対話する一方、例えば複数媒体(電話、ファクシミリ、ホワイトボード)や、複数時刻(リアルタイム、翌日配達郵便(overnight mail))及びその他の通信告知手段など従来の安全な方法でインターネット「以外で」対話を続けることになる。
【0011】
共有プライベート空間にいる個人間及び中小グループ間でコラボレーティブな通信やその他の共有及び同時的アクティビティを安全なものにするようにインターネットを拡張するのが望ましい。このような対話は参加者のパーソナル・コンピュータ間またはその他のネットワーク接続可能な装置間で望ましくは瞬間的、直接的、かつ機密に行なわれるべきである。また様々なリモートサイトにいるユーザが安全に通信でき、安全な通信リンクの構築やセキュリティ・システムの維持にユーザの広範囲の関与を必要としないような技術を提供するのも望ましい。また安全なトランザクションを提供する上で関係する「オーバヘッド」を最小限にまで減らして通信量(以下、スループット)と動作速度を改善するのも望ましい。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】米国特許第5,781,732号明細書
【特許文献2】米国特許第6,640,241号明細書
【特許文献3】米国特許第6,446,113号明細書
【特許文献4】米国特許第6,859,821号明細書
【発明の概要】
【0013】
本発明の図示した実施態様の一つによれば、異なるセキュリティ・レベルを提供してユーザが彼ら自身の通信のセキュリティ・レベルを決定できるようにする。ユーザは低いセキュリティ・レベルを選択してセキュリティ関係のオーバヘッドを可能な限り小さくすることが可能である。これ以外に、セキュリティ関係のオーバヘッドの増加をもたらすもっと高いセキュリティ・レベルを選択することも可能である。異なるセキュリティ・レベルは2種類の鍵のうちの一つまたはそれ以上の使用により作成される:暗号化鍵は平文テキストデータをデルタへ暗号化するために使用し、メッセージ認証鍵を使ってデータを認証しデータの完全性を保証する。2種類の鍵を使ってテレスペースの各メンバーでデータを再暗号化しなくて済むようにする。
【0014】
好適実施態様において、鍵管理のオーバヘッドを減少させるため、同一の物理鍵を暗号化鍵とメッセージ認証鍵に使用する。
【0015】
一つの実施態様において、セキュリティ・レベルはテレスペースが作成されてテレスペースの寿命がある間は固定されたままである。テレスペースでは、セキュリティ・レベルは全くセキュリティがない状態からテレスペースのメンバーと部外者との間のセキュリティ、更にテレスペースのメンバーのペア間でのセキュリティまで範囲がある。
【0016】
別の実施態様において、「トライブ(tribe)」と呼ばれるサブグループをテレスペース内に形成しそれぞれのトライブが自分のいるテレスペースのセキュリティ・レベルを採用する。
【0017】
更に別の実施態様において、中程度または高度なセキュリティ・レベルを有するテレスペースのメンバーはウィスパー(whispers)と呼ばれテレスペースの他のメンバーに対しても機密化される機密通信で通信することができる。
【図面の簡単な説明】
【0018】
【図1】図1は、従来のコンピュータ・システムの代表的アーキテクチャのブロック図である。
【図2】図2、はデルタを用いてローカルなデータ・コピーを更新する代表的なコラボレーション・システムの略ブロック図である。
【図3】図3は、グループ、トライブ、またそれらを保護するために使用される暗号化及び認証鍵を示す略ブロック図である。
【図4】図4は、低レベルのセキュリティ・システムにあるグループ内のメンバー間で送信されるデルタの内容を示す略図である。
【図5】図5は、認証/完全性モードで動作する中レベルのセキュリティ・システムまたは高レベルのセキュリティ・システムにあるグループ内のメンバー間で送信されるデルタの内容を示す略図である。
【図6】図6は、認証/完全性/機密モードで動作する中レベルのセキュリティ・システムまたは高レベルのセキュリティ・システムにあるグループ内のメンバー間で送信されるデルタの内容を示す略図である。
【図7】図7は、認証/完全性モードで動作する高レベルのセキュリティ・システムにあるグループ内のメンバー間で送信されるデルタの内容を示す略図である。
【図8】図8は、デジタル署名と証明書の作成及び確認を示す略ブロック図である。
【図9】図9は、既存のグループへの新規メンバー(招待者)の追加を示す略ブロック図である。
【図10】図10は、既存のグループへ新規メンバーを追加するために議長(chair)を使用するような代表的ルーチンのステップを示すフローチャートである。
【図11】図11は、議長から招待者へ送信される招待メッセージの内容を示す略図である。
【図12】図12は、招待者から議長へ送信される受け入れメッセージの内容を示す略図である。
【図13】図13は、グループの既存のメンバー全員へ議長から送信されて新規メンバーが追加されたことを告知する新規メンバー追加デルタの内容を示す略図である。
【図14】図14は、議長から新規に追加されたメンバーへ送信されてテレスペース・データのメンバーを告知するメッセージの内容を示す略図である。
【図15】図15は、招待者が招待に応答するために使用できる代表的ルーチンのステップを示すフローチャートである。
【図16】図16は、招待者からの受け入れメッセージに応答するために議長が使用できる代表的ルーチンのステップを示すフローチャートである。
【図17】図17は、新規メンバー追加デルタに応答するために既存のメンバーが使用できる代表的ルーチンのステップを示すフローチャートである。
【図18】図18は、テレスペース情報を搬送する議長からのメッセージに応答するために新規追加メンバーが使用できる代表的ルーチンのステップを示すフローチャートである。
【図19】図19は、再キーイング情報が「ピギーバック」したデルタ・メッセージの内容を示す略図である。
【図20】図20は、本発明のセキュリティ・システムの好適な実装の全体的アーキテクチャを示す略ブロック図である。
【図21】図21は、本発明のセキュリティ・システムのオブジェクト指向実装におけるサンプル抽象クラスを示す略ブロック図である。
【図22】図22は、本発明のセキュリティ・システムのオブジェクト指向実装におけるサンプル具象クラスを示す略ブロック図である。
【図23】図23は、視覚的確認のための情報を表示しその情報を受け入れるかまたは破棄するようにユーザに要求するダイアログ・ボックスの画面表示を示す略図である。
【発明を実施するための形態】
【0019】
図1は代表的なコンピュータ・システム100の従来のシステム・アーキテクチャを示したもので、これに開示された本発明を実装することができる。ただし図1の代表的なコンピュータ・システムは説明目的のみで議論するもので本発明の制限と見なすべきではない。以下の説明では特定のコンピュータ・システムを記述する際に共通に使用される術語を参照することがあるが、記載される概念は図1に図示したものとは異なるアーキテクチャを有するシステムを含めた他のコンピュータ・システムに等しく適用される。
【0020】
コンピュータ・システム100は従来のマイクロプロセッサを含む中央演算処理装置(CPU)105、一時的な情報記憶のためのランダムアクセス・メモリ(RAM)110、及び永久的情報記憶のためのリードオンリー・メモリ(ROM)を含む。メモリ・コントローラ120はシステムRAM110を制御するために提供される。バス・コントローラ125はバス130を制御するために設けてあり、割り込みコントローラ135は他のシステム要素からの各種割り込み信号を受信し処理するために使用される。
【0021】
大容量記憶はディスケット142、CDROM147、またはハードディスク152によって提供される。データとソフトウェアは取り出し可能な媒体例えばディスケット142やCDROM147を介してクライアント・コンピュータ100と交換できる。ディスケット142はディスケット・ドライブ141へ挿入でき、このディスケット・ドライブ141はコントローラ140によってバス130へ接続されている。同様に、CDROM147はCDROMドライブ146へ挿入でき、CDROMドライブ146はコントローラ145によってバス130へ接続されている。最後に、ハードディスク152は固定ディスク・ドライブ151の一部であり、これはコントローラ150を介してバス130へ接続されている。
【0022】
コンピュータ・システム100へのユーザ入力は様々な装置から提供される。例えば、キーボード156とマウス157はキーボード及びマウス・コントローラ155によってバス130へ接続される。オーディオ・トランスデューサ196はマイクロホンとスピーカの両方として機能するもので、オーディオ・コントローラ197によってバス130へ接続されている。その他の入力装置例えばペン及び/またはタブレットや音声入力用マイクロホンなどがバス130と適当なコントローラを介してクライアント・コンピュータ100へ接続できることは当業者には明らかであろう。DMAコントローラ160はシステムRAM110へのダイレクト・メモリ・アクセスを実行するために提供される。視覚表示はビデオ・ディスプレイ170を制御するビデオ・コントローラ165によって生成される。
【0023】
コンピュータ・システム100はクライアント・コンピュータ100をバス191経由でネットワーク195へ相互接続できるようにするネットワーク・アダプタ190も含む。ネットワーク195はローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、またはインターネットであり、多数のネットワーク・デバイスを相互接続する汎用通信回線を使用する。
【0024】
コンピュータ・システム100は一般にオペレーティング・システム・ソフトウェアによって制御調節される。コンピュータ・システム制御機能のなかでも、オペレーティング・システムはシステム資源の割り当てを制御しプロセスのスケジュール、メモリ管理、ネットワーク及びI/Oサービスなどのタスクを実行する。
【0025】
図2は略ブロック図の形で代表的なコラボレーション・システムの構成を示す。図2はネットワーク216へ接続された2台のコラボレーティブ・ワークステーション200、202を示す。ワークステーション200、202のそれぞれは図1に示したようなコンピュータ・システムとすることができ、ネットワーク216はプライベート・コンピュータ・ネットワーク例えばLANやWAN、あるいは公衆コンピュータ・ネットワーク例えばインターネットとすることができる。これ以外に、ワークステーション200、202は同一のコンピュータ(図示していない)上に構成することができ、この場合2つの端末間の通信はそのコンピュータに対してローカルなものとなる。
【0026】
好適実施態様において、端末200、202のそれぞれは共同作業を実行するデータのローカルなコピー204、210をそれぞれ保持している。それぞれのローカルなデータ・コピー、例えばデータ・コピー204はこれに対応する「ダイナミクス・マネージャ」206と呼ばれるソフトウェア・プログラムによって管理される。同様に、データ・コピー210はこれに対応するダイナミクス・マネージャ212によって管理される。特定のコラボレーション装置を説明の目的で議論するが、他のコラボレーション装置も精神と範囲において本発明の原理から逸脱することなく使用できることが当業者には明らかであろう。
【0027】
ダイナミクス・マネージャ206は「デルタ」と呼ばれる一つまたはそれ以上のデータ変更要求を含む自己内包型データユニットの受信に応答してこれのローカル・データ・コピー204を変更し更新する。データ変更要求はデータの希望通の変更に関してダイナミクス・マネージャやその他のコンポーネント(図示していない)への通知または催促である。デルタは例えばマネージャ206などのダイナミクス・マネージャによって、ユーザとの対話に応答して作成されるもので、対応するローカル・データ・コピー204と、ネットワーク越しに同じコラボレーティブ・セッションに参加しているコラボレータに属する他のコンピュータ上のローカル・データ・コピーとの両方を更新するために用いられる。
【0028】
デルタは制御情報を提供するへッダ部分と要求が関係するデータについての情報を提供するペイロード部分とを含む特定のフォーマットを有する。個々のデルタは一つまたはそれ以上のペイロードを有することができる。多数のペイロードが使用されるような場合、以下で詳細に説明するように、それぞれが独自の装置機能またはユーザの役割を有する特定のコラボレーション・メンバーを対象とすることができる。
【0029】
ダイナミクス・マネージャ206によって生成されたデルタが他のコラボレータに送信される場合、ダイナミクス・マネージャ206は通信マネージャ208と相互作用する。同様に、ダイナミクス・マネージャ212は通信マネージャ214と相互作用する。通信マネージャ208は内向きと外向きのデルタを適当な宛先へ配送するメカニズムである。好適実施態様において、通信マネージャはコンピュータで実行可能なプログラムとして実装することができ、このプログラムが別のリモート・パーソナルコンピュータまたは別の形のネットワーク接続可能な装置へネットワーク216上で送信するため通信マネージャ206によって開始されたデルタを配送し、またネットワーク216上で受信したリモートで生成されたデルタをダイナミクス・マネージャ206へ配送する。
【0030】
一般に、通信マネージャ208、214はダイナミクス・マネージャ206、212によって生成された全デルタがコラボレーションに参加している全ユーザによって受信されるように構成される。それぞれのデルタは内部シーケンス番号を含みそれぞれのコラボレータのダイナミクス・マネージャは全部のデルタがいつ受信されたかを決定できるようにしてある。別のコラボレータからのデルタはそれぞれのコラボレータへ多数の違う経路を通って送信されることがあるので、デルタは生成された順序と同じ順序で到着するとは限らない。しかし、それぞれのコラボレータによって全デルタが受信され内部シーケンス番号を使って正しい順序でデルタを適用できる。したがって、それぞれのコラボレータによって保持されているローカル・データ・コピーは、全部のデルタで更新されると、コラボレーションの他のメンバーによって保持されているローカル・データ・コピーと一致することになる。
【0031】
特定のコラボレーションに参加しているコラボレータの間での機密性を維持することが望ましい。これはデルタが公衆ネットワーク例えばインターネット上に送信される場合にとくに言えることである。情報のセキュリティにとって重要な3つの基本概念が存在する。その第1は認証で、これはデータ受信者がデータ作成者(data source)の同一性を知っており信用できることを保証するものである。第2は完全性で、データが転送中に変更されなかったことを保証するものである。完全性はデータ作成者以外のものによってデータを書き込むことができないことまた既知の作成者から到着したものであることを実効的に保証する。データ完全性は不正なデータの生成または「なりすまし」による第三者からの攻撃を防止する。最後のセキュリティ概念は機密性で、これは転送中のデータがデータ作成者とデータ受信者以外の第三者によって読み取ることができないことを保証するものである。機密性は第三者によるデータの読み取りまたは「盗聴」による攻撃を防止する。
【0032】
前述したように、セキュリティはコラボレータが一つまたはそれ以上のアクティビティに参加して項目を共有したり、アクティビティの結果がユーザのパーソナル・コンピュータ上にあるいは他の形のネットワーク接続可能な装置上に永続的に保存されるような仮想空間に基づいている。仮想空間は「テレスペース」または「グループ」と呼ばれるもので各ユーザの装置の中で同期が保たれる。図示したセキュリティ/モデルによると、テレスペースのセキュリティは、テレスペースを形成して、メンバーを受け入れ、更にメンバーシップが安定したあとで「全体の」セキュリティとしてほとんどのユーザが体験するものである。これは安定状態デルタ・プロトコルと呼ばれグループ・メンバー間に渡されるデルタに含まれる情報の認証、完全性及び機密性に関連する。図3は5人のメンバーM0、M1、M2、M3、M4(302〜310)からなるテレスペースまたはグループ例300の模式図である。各テレスペース300内には一つまたはそれ以上のトライブまたはサブグループが存在する。図3には、3人のメンバーM2、M3、M4(306、308、310)からなるトライブ312が図示してある。
【0033】
各メンバー302〜310はその内部に「プロトコル・エンジン」(それぞれエンジン303〜311)を有し、これは他のメンバーへセキュリティ・メッセージを送信しセキュリティ情報を操作するアプリケーション・プログラムである。
【0034】
テレスペース300とトライブ312において情報は一つまたはそれ以上の鍵により保護される。これは、Kとして示してある暗号化鍵と、Lで示したメッセージ認証/完全性コード(MAC)鍵である。K及びL鍵は対称暗号化(symmetric cipher)用の従来の鍵でありテレスペース全体への広がり(スコープ)を有する。本発明のシステムはブロック暗号化(block ciphers)とストリーム暗号化(stream ciphers)の両方を用いることができるが、メッセージ間での状態は維持されない。つまり一つのメッセージから次のメッセージへセキュリティ暗号ストリーム状態を維持するためには通信しているエンドポイントが必要とされない。この方法では、一時的な通信の中断が発生した場合にも再同期が必要とされない。
【0035】
ブロック暗号化はカウンター・モードにおいて使用する度に必ず新しく無作為生成される初期化ベクトルを使って使用される。初期化ベクトルは暗号のブロック長と等しい長さを有し従来の方法による典型的なへッダ攻撃を妨害(thwart)するために使用する。ストリーム暗号化はブロック・モードにおいて初期ベクトルと鍵を組み合わせる、例えば排他的論理和演算により、ついですべてのメッセージで鍵文字列を再初期化することで使用される。この場合、初期ベクトルは鍵長と等しい長さを有する。初期ベクトルは一般に機密性保護されないしまたは認証/完全性の保護もされない。
【0036】
更にすべての鍵がなんらかの種類の陳腐化メカニズム例えばタイムアウトを関連させるか一定数のメッセージまたはバイト数を保護すると想定する。このメカニズムはテレスペースによって決定されるローカル・ポリシーの一種で以下で説明するいずれのプロトコルでも送信する必要はない。
【0037】
KG/LGで示したグループ鍵は(それぞれ)暗号化/MAC鍵で、グループ300の全メンバーによって共有される。これらの鍵は第三者(グループ外の者)による攻撃からデルタに含まれる情報の機密性/完全性をそれぞれ保護するために使用される。同様に、KT/LTで示したトライブ鍵は暗号化/MAC鍵で、トライブ312の全メンバーによって共有される。これらの鍵はトライブ以外のグループ・メンバーや第三者による攻撃からデルタの機密性/完全性を(それぞれ)保護するために使用される。
【0038】
更にK01/L01で示してある対になった鍵はメンバーM1とM2が共有しかつ他のグループ・メンバーの誰も共有していない暗号化/MAC鍵(それぞれ)M0とM1で、M0とM1の間で双方向に通信を保護するために使用される双方向鍵である。これらの鍵はグループ・メンバーM2、M3、M4による攻撃からデルタの機密性/完全性を(それぞれ)保護するために使用される。同様に対になった鍵Kij/Lijは別のメンバーの組み合わせMiとMjの間で交換される情報を他のグループ・メンバーによる攻撃から保護するために使用される。
【0039】
テレスペース内で安定状態セキュリティは5段階のレベルの一つに組み込まれることになるが、そのレベルはテレスペース300の作成者がテレスペースを作成する時点で選択できる。5レベルには何らの鍵も使用する必要がない低レベル・セキュリティを含む。このレベルは全く暗号セキュリティを提供しない。次のレベルは1対の鍵(KG/LG)をグループの全メンバーに対して使用する中程度レベルのセキュリティである。このレベルでは、KG/LG鍵のうちのMAC鍵LGだけを使ってデルタを保護することにより認証/完全性が提供できる。同様に、認証/完全性及び機密性はKG/LG鍵の両方を使ってデルタを保護することで提供できる。
【0040】
次のレベルは高レベルのセキュリティで、グループ鍵KG/LGと鍵ペアKij/Lijの組み合わせを使用する。認証/完全性だけが要求される場合にはMAC鍵のペア(Lij)だけを使用してデルタを保護し、グループ鍵(KG)は使用しない。これ以外に、認証/完全性/機密性が要求される場合にはグループ暗号化鍵KGとMAC鍵ペアLijを使用してデルタを保護する。
【0041】
中レベルと高レベルのセキュリティ・レベル双方で、暗号化鍵(Kij)とMAC鍵(Lij)のペアを使用してグループ鍵またはトライブ鍵(KG/LGまたはKT/LT)の再キーイングを行なう。
【0042】
以上のレベルやモードはグループ(テレスペース)全体に適用可能であり、また全トライブ(サブグループ)にも同様に適用可能である。テレスペース内のトライブ全部がテレスペース自体と同一の「全体的セキュリティ」を有するので、グループに対して前述したレベルやモードは、前記のグループ鍵KG/LGをトライブ鍵KT/LTで置き換えればトライブに適用できる。
【0043】
図4はグループ・メンバー間に情報を転送するのに使用する「デルタ」の内容を示す。各デルタはメッセージ・へッダ400からなり、これにはセキュリティ・システムの特定の実装に依存する情報を含む。この情報にはプロトコルのバージョン番号を含められるので、ここにコラボレーション・システムとセキュリティ・サブシステム両方のバージョン番号を含められる。メッセージ・へッダ400はメッセージ・フラグ種別またはタグIDも含み、これはメッセージの種類が異なるごとに異なる識別子である。メッセージ・へッダに含めることができる他の情報としては、構造化シーケンス番号がある。この番号はテレスペースのスコープを有する部分順列シーケンス番号で、そのスコープ内でメッセージの送信者とメッセージそれ自体の特定インスタンスとを論理的に同定する。
【0044】
へッダ400は機密を保護することができないが要求されるセキュリティ・レベルによっては実際にグループ・メンバー間に送出されるペイロードまたは情報を含むアプリケーション・データ402と全く同様に認証/完全性を保護する必要がある場合がある。例えば図4に図示してあるようなデルタが符号化される方法は希望するセキュリティ・レベルによって変化する。例えば、暗号としての意味でセキュリティを何も保証しない「低レベル」セキュリティ・モードでは、デルタは図4に図示したように送信され、へッダ情報400がペイロード402よりも先に送信されるのが望ましいが、へッダとペイロードの順序は本発明の動作にとって重要ではない。この場合、第三者(非グループ・メンバー)がデルタ情報402を読み取るまたは盗聴でき、またデルタを書き込んだり真似たり、または「なりすます」ことができる。
【0045】
前述の認証/完全性モードで動作する「中レベル」セキュリティ・システムの場合、デルタ情報は図5に図示したように保護される。更に詳しく説明すると、それぞれのデルタについて、へッダ情報500が送信され、それに続けて鍵バージョン番号502、平文データ504、更に認証子506が送信される。ここでもこれらの要素の順序は重要ではない。認証子はデータ504の認証/完全性を保護しグループ・メンバーによって送信されたメッセージであることを保証するMACコード506とすることができるが、これはグループ認証鍵LGを知っているのはグループのメンバーだけだからである。別の実施態様において、メッセージ認証子として公開鍵署名認証子を使用することもできる。この場合、メッセージ認証子506はハッシュして連結したへッダ及びデータの公開鍵署名で構成する。
【0046】
好適実施態様において、鍵バージョン番号は2つの部分を有しており、これは「鍵識別子KeyIdentifier」と呼ばれるテレスペース全体で使われる独自の文字列と、「鍵バージョンKeyVersion」と呼ばれるインクリメンタルなシーケンス番号である。鍵識別子はテレスペースの別のメンバーが独自に生成する鍵同士を識別するために必要とされる。一方のメンバーが、他方のメンバーも新しい鍵を生成していることについて知らないので、鍵識別子は鍵を個別に識別できるようにする。鍵バージョンは古い鍵、現在の鍵、新しい鍵を識別するために必要とされる。安定状態では、メンバーは鍵識別子の値は異なるが鍵バージョンの値が同じ一組の鍵を使用することになる。メンバーは現在の鍵バージョンの値よりも鍵バージョンの値が小さい「古い鍵」を削除することができる。
【0047】
好適な実装において、MACコード506は、最初にデータ504と連結したへッダ500をハッシュし、次にハッシュの結果を従来のメッセージ認証アルゴリズムに沿って保護する。中間ハッシュ関数を使用して後述するような高セキュリティ・バージョンに沿った方法でMACコードを作成する。また従来のMACアルゴリズムを使用してグループ認証キーLGで単純にへッダとデータを保護すれば、中間ハッシュ関数を使用せずにこのモードを実装することも可能である。前述のように、認証/完全性モードにおいて動作する中レベルのセキュリティ・システムは、第三者が読んだり盗聴できるがグループ・メンバーだけが他のグループ・メンバーのデルタに書き込み、真似(impersonate)または成りすまし(spoof)できるようなセキュリティ・システムを作成する。
【0048】
認証/完全性/機密性モードで動作する中レベルのセキュリティ・システムは図6に図示してあるようにデルタのデータを保護する。更に詳しく説明すれば、デルタは鍵バージョン番号602及び初期ベクトル603の付いたへッダを、データ604及びメッセージ認証コード606とともに送信することで伝達される。しかし、この場合、データ604は暗号化されている。このプロトコルはグループ暗号化鍵KGで暗号化することでデルタ・データの機密性を保護しておりグループ認証子606による完全性と認証の保護が継続する。データ604は従来の暗号化アルゴリズムを用いてグループ暗号化鍵KGで暗号化され、暗号化されたデータは初期ベクトルと連結される。ここでも認証またはMACコードは好適実施態様においてへッダと平文データの連結をハッシュ化してからグループ認証鍵LGでハッシュ情報を符号化することにより形成されている。またデータとへッダ及びデータのハッシュの連結をひとつの暗号化キーKGで暗号化してからその結果をへッダ、鍵バージョン番号、初期ベクトルと連結することでこのモードを実装することも可能である。後者の暗号化は機密性と認証/完全性を両方とも保証し、2つの鍵KGとLGの間で機密性及び認証・完全性の責任を分担する別々のMAC部分を使用しなくてすむ。図6に図示した実装を実際に使用して後述する高セキュリティ・モードに沿った実装を行なうことができる。
【0049】
認証/完全性モードで動作する「高レベル」セキュリティ・システムにおいてデルタ・データは図5に図示した構成または図7に図示した構成のどちらかを用いて保護できる。このシステムで使用されるプロトコルは平文デルタ情報を送信するが、認証/完全性を保証するため、シングルターゲットの秘密鍵多重認証子か公開鍵署名認証子のいずれかを使用する。
【0050】
シングルターゲット秘密鍵多重認証子の場合、図5に図示した構成を使用する。更に詳しく説明すれば、へッダ情報500は鍵バージョン502、暗号化していないデータ504、メッセージ認証子506とともに送信される。しかし、この場合、鍵バージョン番号502は送信者と受信者全部との間の鍵バージョンのすべてを連結したもので構成する。同様に、メッセージ認証子506は送信者とそれぞれの受信者との間の個別のメッセージ認証子を連結したもので構成する。それぞれのメッセージ認証子は認証鍵で保護されるが、この認証鍵は送信者と受信者との間でのみ使用されるものである(Lij鍵の一つ)。
【0051】
更に、好適実施態様では、中間ハッシュをメッセージ認証コードに使用する。更に詳しく説明すると、へッダとデータは連結され、ハッシュされ、更に適当な認証鍵によって保護される。この場合、中間ハッシュは認証鍵それぞれに対してへッダとデルタ全体を再ハッシュするのを避けるために使用している。へッダとデルタをハッシュしたら、適当な認証鍵でハッシュした情報を単純に保護することでこのハッシュを複数回使用できる。
【0052】
別の実施態様では、公開鍵署名認証子をメッセージ認証コードとして使用する。この構成が図7に図示してある。この構成では、へッダ情報700が最初に送信され、これに暗号化されていない(A/Iモード)または暗号化された(A/I/Cモード)データ702が続く。メッセージ認証子コード704はハッシュし連結したへッダとデータの公開鍵署名から構成される。
【0053】
認証/完全性/機密性モードで動作する高レベルセキュリティ・システムは図6と図7に図示したデルタ構成でデータを保護する。基本的にこれは図5と図7に図示してある認証/完全性モードと同じであるが、グループ暗号化鍵KGでデルタ・データが暗号化され図6の場合の初期ベクトルと連結される点で異なっている。
【0054】
デジタル署名またはデジタル証明書を生成して使用するメカニズムが図8に図示してある。データ800のデジタル署名を生成するためには、多数の一般的に周知のハッシュ・アルゴリズムの一つを用いて、ステップ802に示してあるようにデータ800のハッシュ値を計算する。ハッシュしたデータはステップ804に示したように(暗号化と同様の演算で)公開鍵/秘密鍵ペアのうちの秘密鍵を用いて署名される。その結果がデジタル署名806である。更に、データがユーザのIDまたは公開鍵に関係する場合、(署名ではなく)データはデジタル「証明書」と呼ばれる。
【0055】
デジタル署名を使用するには、図8で破線より下に示してあるように有効化手順を実行する。更に詳しく説明すると、ハッシュしたデータの確認(復号に似た動作)のために公開鍵/秘密鍵ペアのうちの公開鍵を使用する署名確認アルゴリズム814へ、デジタル署名が矢印812で示したように提供され、また証明書が矢印818で示したように提供される。データ800それ自体は矢印808で示したようにハッシュ・アルゴリズム810へ提供される。このハッシュ・アルゴリズムはデジタル署名を生成するために使用したハッシュ・アルゴリズム802と同一のものである。囲み816に示したように、データの再ハッシュが確認したハッシュ・データと比較される。結果が同一であれば、確認したハッシュ・データは正しい、すなわちデータは正しく(authentically)署名に関連している。
【0056】
機密グループを形成する手順が模式的に図9に図示してありそのステップが図10に図示してある。図9に図示してあるように、グループ900は議長902とその他のN−1人のメンバーで構成され、そのうち3人がメンバー906、908、910として示してある。グループ900の形成は議長902によって管理され、議長は新しいメンバーを招待して追加する権限を与えられたメンバーである。図示した手順によれば、招待者904は初期認証の後でグループ900へ追加される。以下の議論では認証及び完全性による最高セキュリティ・モードに焦点を当てて説明する。その他の意図されるモードはこのモードから派生させることができる。
【0057】
加入手順はステップ1000から始まりステップ1002に進む。ステップ1002では、議長902が招待されることになる人904へ招待メッセージを送信する。このメッセージは図9の矢印912で模式的に示してある。このメッセージの内容は図11に示してある。メッセージはへッダ1100と、これに続く招待者の名前1102から構成され、この名前はURLやその他の識別情報とすることができる。へッダの順序は本発明の原理から逸脱することなく反転できる。招待者の名前に続くのが署名済み招待「ナンス」(nonce)1104である。署名済みナンスは議長によって生成されたタイムスタンプのハッシュ、議長902の名前/URL、招待者904の証明書(入手可能な場合)、テレスペースの名前/URL、署名つきナンスが発生することが考えられる別の状況を識別するために使用されるタグである招待「オプコード」(Opcode)を含む署名データである。
【0058】
一般的に言って、ナンスはプリンシパルAが生成してプリンシパルBへ送信するもので時間とともに変化するパラメータであり、これは任意の状況で一回だけ使用されるものである(例えば、本明細書で説明している招待プロトコルを介してAがBを招待する場合など)。実際に、ナンスは状況を定義する、言い換えればプロトコル動作の同時性を保証して再生(replay)及びインターリーブ攻撃(interleaving attack)を防止するために使用される。ナンスは秘密にしなくても良く、1回限りの独自なものであれば良い。各種システムで使用されるナンスの典型的な例としては次のようなものがあげられる:衝突しない乱数、タイムスタンプ(十分に信頼できるクロックを備えたシステム、特に信頼できる分散時刻同期プロトコルの存在下ではほぼ理想的である)、シーケンス番号。好適実施態様ではタイムスタンプが使用されている。
【0059】
本明細書の状況で重要なことは、プロトコルの実行の全部において、ナンスが(暗号学的な確実性の範囲で)絶対に(ローカル・ポリシーで決定されるなんらかの時間的制約の中で)反復できないことである。これは例えば自分が発行したナンス/招待を(プロトコルの実行に関する他の情報とともに)、不揮発記憶に、ローカル・クロックに合わせてある程度の期間(ローカル・ポリシーによって変化する)、メンバーが記憶しておくことで実現可能で、この時刻以降はナンス情報を破棄してプロトコルの実行を中断させなければならない。
【0060】
署名つきナンス1104に続くのは暗号データ1106で、これはこのメッセージで使用されるセキュリティ状態情報である。この情報は議長が選択し受信者がメッセージを正しく解釈できるようにするために必要である。更に詳しくは後述するようなワンタイム鍵で情報を暗号化するのに使用したアルゴリズムの名称の文字列を含む。またメッセージ受信者がメッセージを処理するのに必要なその他なんらかの情報、例えば鍵の長さ、ラウンド数、使用したハッシュ・アルゴリズムの名称、鍵ジェネレータ・アルゴリズムの名称、なども含む。
【0061】
暗号データ1106に続くのは、公開鍵暗号化アルゴリズムに基づいてあらかじめなんらかの合意が得られている招待者の公開鍵で暗号化したワンタイム鍵情報1108である。ワンタイム鍵は対称暗号化用の鍵で後述するように招待情報を暗号化するために一回だけ使用される。
【0062】
鍵情報に続くのが招待情報1110で、これはワンタイム鍵で暗号化されている。招待情報も前述したように議長によって生成されたタイムスタンプを含み初期ベクトルと連結できる。招待情報はテレスペース名/URLを含むアプリケーション・データで招待者904に招待を発行したアクティビティの種類について通知する。これは特に、議長902によって権限を委譲(mandated)されたものとしてテレスペース内で使用しなければならない暗号情報(例えば前述の低/中/高レベル、A/I/Cモード)を含む。このようにすると、招待者には参加するように招待されているテレスペースのセキュリティ特性が招待者に通知され、例えば招待者は参加しないと決定することができる。招待者の証明書が不明な場合、暗号化したワンタイム鍵1108を無視しタイムスタンプと招待情報1110を暗号化しないで送信する。
【0063】
招待情報1110に続くのはへッダ情報1100、招待ナンス1104、暗号化していないワンタイム鍵(メッセージに含まれる場合)、暗号データ1106、暗号化していない招待情報(タイムスタンプなし)のハッシュに対する議長の署名である。この署名は議長の証明書に対して示された情報の全部を結合するもので、議長の証明書は招待者のローカルな公開鍵証明書有効化ポリシーを介して議長に結び付けられている。
【0064】
送信される情報の最後の部分1114は議長の証明書で、議長の名称(URL/ペルソナ)、議長の公開署名確認鍵、及びその他の情報例えば公開鍵アルゴリズム識別子、暗号化公開鍵、などが含まれ、これらすべてが(一つまたはそれ以上の)なんらかの「信頼できる」認証局の署名を介して相互に結合されている。証明書は周知のまたは少なくとも招待者に識別可能ななんらかの証明書フォーマットにフォーマットされる。このフォーマットは公開鍵による証明書(ここで証明書認証局は周知の認証局の階層の内部に組み込まれている)、またはPGPやSDSIなどを使用した「信頼の輪証明書」(web−of−trust certificate)、あるいは更に単純にこの目的のためだけにその場で構成した自己署名証明書であっても良い。招待者が証明書を頼れる「信頼度」は招待者のローカル公開鍵証明書有効化ポリシーに依存する。
【0065】
このメッセージを受信すると、招待者は図15に図示してあるフローチャートに概略してあるステップをとる。招待者の手順はステップ1500から始まってステップ1502へと進み、ここで招待者が暗号データ1106を調べてメッセージの暗号化に使用されているアルゴリズムを知る。次にステップ1504で、招待者は招待者の名前を検証してその招待が招待者に向けられたものかどうかを確認する。
【0066】
次に、ステップ1506で、招待者が招待者のローカルな公開鍵有効化ポリシーに従って議長の名前/URLを含む議長の証明書を有効化する。招待者は適当な証明書有効化プロバイダ(招待者のローカル・ポリシーになっている場合にはtrivial/初期設定で「自己署名証明書をすべて信頼する」有効化アルゴリズムが実装することがある)を起動することにより行なう。
【0067】
ステップ1508で、招待者は議長の署名を確認してこの招待が本当に議長902から来たものかどうかを確かめ招待者904が本当に招待されたのかを確かめる。
【0068】
最後にステップ1510で、招待者は招待情報を復号して検証し招待者が議長の招待を受け入れたいかどうかを決定する。そして手順はステップ1512で終了する。
【0069】
図10に戻ると、招待者904が招待を受け入れることに決定した場合、ステップ1004で招待者904は議長902へ受諾メッセージを送信して応答する。このメッセージが図9では矢印914として模式的に図示してある。これ以外に、招待者が招待を受け入れないと決定した場合、エラーメッセージを招待者904から議長902へ送信する。
【0070】
受諾メッセージの内容が図12に図示してある。メッセージはへッダ1200と、これに続く署名付きの招待ナンス1202で構成され、ナンスは招待メッセージで議長から招待者へ送信されたものである。これを用いることで、議長はこの受諾メッセージが招待に応答したものであると認識できることになる。署名付きナンス1202には署名つき受諾ナンス1204が続く。署名付き受諾ナンスは招待者が生成したタイムスタンプ、招待者904の名前/URL、議長902の証明書、テレスペースの名前/URL、そして受諾オプコードを含む。
【0071】
ナンス1204には暗号データ1106と同様のセキュリティ内容暗号データ1206が続く。
【0072】
次に、公開鍵暗号化メカニズムを使用して、新しく生成したワンタイム鍵1208の公開鍵暗号を送信し、パラメータ、情報、公開鍵暗号化鍵が議長902から招待者904へ送信される(例えば公開RSA暗号鍵)。
【0073】
暗号化ワンタイム鍵1208に続くのはアプリケーション・データ1210で、これにはワンタイム鍵を使用して暗号化した2個のタイムスタンプと受諾データを含む。この情報1210は招待者904の受諾について議長902に通知するものである。
【0074】
次に、招待者904の署名を送信する。この署名はへッダ情報1200、議長の名前と招待者のナンス1202に受諾ナンス1204を連結したもの、暗号化していないワンタイム鍵、暗号データ1206と暗号化していない受諾情報(タイムスタンプなし)のハッシュによる。この署名は招待者の証明書にすべての示された情報を結合する(証明書は更に議長の証明書公開鍵有効化ポリシーを介して招待者904に結合されている)。議長902の名前がこの署名のスコープ内に含まれ招待者が署名した、議長には分かっているワンタイム鍵を議長が第三者へ送信するのを防止し、これにより招待者904を真似なければならないことに注意する。最後に、招待者の証明書1214を送信する。
このメッセージの受信時に、議長902は図16のフローチャートに示してある手順を実行する。この手順はステップ1600から始まりステップ1602に進み、ここで議長902が暗号化されたワンタイム鍵を復号し、これにより鍵を取り込む。
【0075】
次に、ステップ1604で、議長902はワンタイム鍵を使って暗号化された受諾情報を復号する。次にステップ1606で、議長は招待者の証明書を検証して招待者の名前を取り出す。
【0076】
ステップ1608で、議長902は招待ナンスを再計算して再計算したナンスと受信した招待ナンスとを調べ受諾メッセージが応答している招待がどれかを決定する。本発明の一つの態様によれば招待ナンス(図11の1104)は「ステートレス」つまり関連するタイミングとは無関係に解釈できることに注意する。例えば、メンバーAが装置1から招待者Bへ招待を発行したが後にBの受諾を装置2で受信したと仮定する。オリジナルの招待メッセージではナンスがデルタ経由でAの使用可能な全装置へ送信されたとしても、招待者Bからの受諾メッセージは招待ナンスを伝達するデルタより先に装置2に到着することがあり装置2でのソフトウェアによる比較ができない場合がある。この問題を回避するため、ナンスに関連した情報は装置2を含めた当該メンバーの装置の全部で視覚的に表示される。この表示の一例が図23に示してあり表示は例えばユーザ・インタフェース・ダイアログボックス2300経由で、またはその他の類似のメカニズムを介して行なわれる。図23に図示してあるように、3項目の情報がダイアログ・ボックス2300に表示される。これは、招待者Bの題名2302、招待者Bの証明書のメッセージ・ダイジェスト2304、及び招待メッセージ署名ナンス2305からのタイムスタンプである。
【0077】
送信者の「証明書」は重要な2項目の情報を伝達するパッケージである:これはメッセージ送信者の「題名」と送信者の「公開鍵」である。この場合、Bの題名は装置2のプロトコル・エンジンによって抽出されダイアログ・ボックス2300のテキストボックス2302に表示されている。この名前の一例としては、「wtuvell@groove.net」がある。Aはこれで受諾メッセージが招待に対応することを確認できる。
【0078】
受諾を有効化するためには、Aはすでに招待者Bの対象者名を知っているので、Aは本発明のコラボレーション・システムとは別の経路から認証のメッセージ・ダイジェストを受け取る必要がある。例えば、この情報を受け取る代表的な方法はAがBを電話で呼び出して証明書のメッセージ・ダイジェストがどのようなものなのかを尋ねることである。例えば、この計算したメッセージ・ダイジェストは「0a,1b,2c,3d;4e,5f,6a,7b;8c,9d,ae,cf;c1,d2,e3,f4;05,16,27,38;49,5a,6b,7c」といったようなものになる。
【0079】
Aが受諾メッセージを介してBの証明書を受け取ったら、メッセージ・ダイジェスト(または証明書の「フィンガープリント」)を、受諾メッセージのBの証明書1214から、従来のメッセージ・ダイジェスト・アルゴリズム(例えばMD5やSHA1など)を用いて図21と図22に図示してあるセキュリティ・サービス・アーキテクチャにより、アルゴリズム的に計算する。この再計算したメッセージ・ダイジェストがボックス2304に表示される。再計算したメッセージ・ダイジェストがすでに分かっている正しいメッセージ・ダイジェストと一致すれば、Aは提示された証明書が正しいものであるとして受け入れることができる。それ以外の場合には破棄される。この操作は「証明書有効化」と呼ばれる。
【0080】
「署名付きナンス」はメッセージの署名である。従って、メッセージのタイムスタンプと送信者の証明書を含む情報を互いに結び付ける。「再生攻撃」を避けるためには(すでに送信された正しいメッセージを再送することによる攻撃)、受諾メッセージに含まれている招待ナンス1202のタイムスタンプが受け入れ可能な範囲内にあることを確認することも必要である。タイムスタンプ情報はナンスから抽出されてダイアログボックス2300のボックス2305に表示される。この情報は、例えば、「20000407121124Zにあるnashtgiri@groove.netあての招待メッセージ」といったものである。Aは幾らか早い時刻にタイムスタンプを生成したのであるから、おそらくAはその時刻を知っている。メンバーAはタイムスタンプを解釈して情報が受け入れられるものかどうかを決定できる。メンバーAが情報を受け入れる場合には、OKボタン2306をクリックし、そうではないなら中止ボタン2308をクリックする。
【0081】
同様の問題は招待者Bが受諾を送信した装置とは別の装置でテレスペース・データを受け取った場合にも発生する。この後者の問題は同じ方法で処理される。
【0082】
次に、ステップ1610で、議長902は議長のローカル公開鍵ポリシーにしたがって招待者の証明書を有効化する。議長がすでに招待者の証明書を先の招待メッセージの時点で持っているならこのステップは省略しても良く、その時点で行なった有効化に満足している。議長は適当な証明書有効化プロバイダを起動することによりこの有効化を行なう。
【0083】
次に、ステップ1612で、議長902は招待者の署名を確認し、招待者の署名は更に受諾メッセージの認証/完全性を確認し、この受諾が本当に招待者904から来たものであることを確かめる。
【0084】
次に、ステップ1614で、議長は復号した受諾情報を検証して招待情報と一致することを確認し、議長が招待者の受諾を認めたいかどうかを決定する。
最後に、ステップ1616で、オプションで追加の署名として議長は自分自身の署名を招待者の証明書に追加することができる。この追加署名によってポリシーが有効になるのでグループ・メンバーは議長902の証明書を信頼している限り招待者の証明書を有効化できる。
【0085】
手順はステップ1618で終了し、情報が真正なものなら招待者はこれ以後「テレスペースのメンバー」となる。図10に戻って、ステップ1006に記載してあるように、議長902が「新規メンバー追加」デルタをグループ900に存在する全メンバーに送信する。これらの新規メンバー・メッセージは図9で矢印916、918、920として模式的に示してある。
【0086】
議長が他のそれまでに存在しているメンバーへ送信する新規メンバー追加メッセージの内容が図13に示してある。デルタ・メッセージはへッダ1300と、これに続けて統合鍵バージョン番号情報を含み、鍵バージョン情報はグループ鍵とすべての認証/完全性の鍵についての全部の鍵バージョン番号を連結したものである。
【0087】
統合鍵バージョン1302には、暗号化した新規グループ暗号鍵及び認証鍵の連結からなる再キーイング情報1304が続く。それぞれのメンバー対に対して、グループ暗号鍵及び認証鍵を連結したものがメンバー同士で対になった鍵を使って暗号化され、結果が初期ベクトルと連結される。これらの連結された鍵が更に連結されて統合再キーイング情報1304を形成する。新しいキーは古い/現在のグループ鍵KG/LGを置き換える。新規に追加されたメンバーは古い/現在のグループ鍵を知ることはない。この再キーイングは新規メンバーがそれ以前のテレスペース通信を記録したり読み取れないようにするために必要である。
【0088】
次に、新規グループ暗号鍵で暗号化し初期ベクトル1306と連結した参加情報を送信する。このデルタの内容は、招待者の名前に招待者の証明書と参加情報を連結したものである。参加情報は議長902が生成したアプリケーション・データで、他のグループ・メンバーが、メンバー・マネージャ情報を含めて、知る必要のある新規メンバーについての情報に関連する。またテレスペースのメンバーやその他各種情報例えば招待者の役割などのリストを含めることができる。
【0089】
最後に、メッセージ多重認証コード1308を送信する。これは議長と各メンバーの間の認証子を連結したものとすることができる。各認証子は議長からメンバーへのペアになった認証鍵L0jで保護されているハッシュ情報である。ハッシュ情報はへッダ1300と、統合新規グループ鍵情報1304と、暗号化していないデルタ情報を含む。これ以外に、メッセージ認証コードは前述のハッシュ情報の議長署名とすることができる。
【0090】
図13に示したメッセージを受け取ると、各メンバー906〜910は図17のフローチャートに示してあるステップを実行する。この手順はステップ1700で始まりステップ1702へ進み、ここでメンバーが暗号化されたグループ鍵を復号し、これによって新しいグループ鍵KG/LGを知る。しかし、各メンバーは、KG/LGで保護された古いデータが存在しないことを確認するのに必要とされる限り、古い/現在のグループ鍵KG/LGの知識を保持している必要がある。その後、各メンバーは古い鍵KG/LGを破棄しその痕跡をすべて抹消する。
【0091】
次に、ステップ1704で、暗号化されたデルタ情報を各メンバーが復号し、これによってデルタ内の情報を知る。ステップ1706では、メンバーが認証鍵で暗号化された多重認証子の項目を介して、メッセージの認証/完全性を確認する。
【0092】
次に、ステップ1708で、メンバーは議長902が(議長のIDはへッダ情報として送信される)議長であること、また新規メンバーを追加する権限があることを確かめる。
【0093】
ステップ1710では、メンバーがデルタ情報を実行する。これを行なう最中に、メンバーは招待者の名前、証明書、参加情報を含めた新規メンバー・マネージャ情報に気づく。手順はステップ1712で終了する。
【0094】
最後に、図10に戻って、ステップ1008で、矢印922で模式的に示したように、議長902が招待者904へテレスペース情報を送信する。手順はステップ1010で終了する。テレスペース情報は図14に示したメッセージとともに招待者904へ送信される。この情報はへッダ1400で始まり、ノンス1204と同一の署名つき受諾ナンスが続く。これに、図12に示した受諾メッセージに関連して説明したように暗号データ1404と暗号化したワンタイム鍵(これは新規に生成する)1406が続く。
【0095】
暗号化したワンタイム鍵1406のあとには直前のメッセージ部分にあるワンタイム鍵で暗号化されたテレスペース(TSP)データが続く。このデータはワンタイム鍵で暗号化したペイロードと連結された初期ベクトルを含む。ペイロードは招待者が生成したタイムスタンプと連結グループ暗号及び認証鍵KG/LG、及びTSPデータである。TSPデータは招待者がメンバーから受信を許可されているTSPデータのメンバーによるバージョンを含むアプリケーション・データである。
【0096】
暗号化されたTSPデータ1408には、へッダ1400、招待者の名前、署名付きナンス1402、連結グループ暗号及び認証鍵、暗号化していないワンタイム鍵、暗号情報1404、暗号化していないTSPデータを含むハッシュ情報に対する議長の署名1410が続く。最後に、議長の証明書1412が後続する。
【0097】
このメッセージを受信すると、招待者904は図18に示した手順を実行し、手順はステップ1800で始まりステップ1802へ進みここで招待者904は暗号化された1回限りの鍵(以下、ワンタイム鍵)を復号してワンタイム鍵を取り出す。
【0098】
次に、ステップ1804で、招待者はワンタイム鍵を使用して暗号化されたTSPデータを復号し、TSP情報を取り出す。次に、ステップ1806で、招待者904は署名つき受諾ナンスを再計算してこれと受信したナンスとを比較してこれが受け入れられるものであることを確認する。先に説明したように、この比較はソフトウェアでまたは視覚的検査によって行なうことができる。このノンスは議長の証明書を含んでいるので、招待者はこの証明書を再有効化する必要がない。
【0099】
ステップ1806では、招待者904が議長の署名を検証し、ステップ1808では、招待者が復号したTSPデータを初期の「作成中テレスペース」に広める。唯一残っている、なすべきことはテレスペースの他のすべてのメンバーと鍵ペアを交換することで、そのあと、招待者はテレスペースの完全なメンバーとなる。
【0100】
鍵ペアは再キーイング手順で交換でき、ここで再キーイング情報は他の情報を搬送するデルタに「ピギーバック(相乗り)」する形になる。この再キーイングを実行するための一つのプロトコルは図13に示した新規メンバー追加デルタ・メッセージで前述した。再キーイング情報は他のデルタ・メッセージに挿入することもできる。このようなピギーバック型デルタ・メッセージは通常のデルタ・メッセージだが、鍵変更(グループ/テレスペース鍵(KG/LG)、トライブ/サブグループ鍵(トライブT1、TnについてKT1/LT1、KTn/LTn)及び/または鍵ペア(Kij/Lij)のあらゆる組み合わせに同時に関係する)がデルタ・メッセージにピギーバックする点で異なっている。デルタそれ自体は同時にトライブTkに適した新しい鍵で暗号化される。新しい(再キーイングされた)鍵はこのメッセージで搬送される。鍵ペアがメッセージにピギーバックしている場合、メッセージは公開鍵署名認証子によって保護される。それ以外の場合では、メッセージは現在の鍵ペアを用いる多重認証コードによって保護される。
【0101】
このようなメッセージの一例が図19に示してある。デルタ・メッセージはへッダ1900と、これに続く統合鍵バージョン情報1902を含み、統合鍵バージョン情報は新規グループ鍵とすべての新規トライブ認証/完全性鍵についてのすべての鍵バージョン番号の連結である。
【0102】
統合鍵バージョン情報1902には第2のセクション1904が続き、これも統合鍵バージョン情報を含む。鍵ペア変更が送信中の場合、この情報は新しい鍵ペアについてのすべての鍵バージョン番号の連結を含む。別の場合は、グループ鍵とトライブ鍵を再キーイングしている場合情報1904は古いまたは現在の鍵ペアについての統合鍵バージョン情報を含む。
【0103】
統合鍵バージョン1904に続くのが統合再キーイング情報1906で、これは新しいグループ及びトライブ鍵(KG/LG及びKT/LT)の連結から構成される。各メンバーのペアについて、連結されたグループ暗号化及び認証鍵はメンバーのペアに対して鍵ペアを用いて暗号化され、その結果が初期化ベクトルに連結される。これらの連結された鍵はそれら自身連結されて統合再キーイング情報1906を形成する。新しい鍵は古い/現在のグループ鍵KG/LGを置換する。新しい鍵ペアが転送中の場合、統合グループ再キーイング情報には新しい鍵ペアに対する統合再キーイング情報が続く。各メンバーのK/L鍵は連結されそのメンバーの公開鍵を用いて暗号化される。これらの暗号化された鍵は連結されて統合鍵ペア再キーイング情報を形成する。
【0104】
次に、新しいグループ暗号化鍵で暗号化されて、新しい鍵1908に対応する初期ベクトルに連結されたデルタ情報が送信される。このデルタの内容は従来のあらゆるデルタ・メッセージとすることができる。
【0105】
最後に、メッセージ多重認証コード1910が送信される。これはメンバー間の認証子を連結したものとすることができる。それぞれの認証子は送信側メンバーから受信側メンバーへのペアになった認証鍵Lijで保護されたハッシュ情報である。ハッシュ情報はへッダ1900と、統合新規グループ鍵情報1904(またこれが送信中の場合には統合新規鍵ペア情報)、更に暗号化されてないデルタ情報を含む。ペアになった鍵がメッセージにピギーバックしている場合には、多重認証コードの代わりに、公開鍵署名認証子を送信する。
【0106】
前述のセキュリティ・システムは様々な方法で実装できる。好適実施態様では、図20に模式的に示したプロバイダ・アーキテクチャを使用する。このようなアーキテクチャが好ましいのは、前述したセキュリティ・プロトコルが「アルゴリズム中立」であることによる、つまり特定の暗号化及び保護アルゴリズムに依存していないためである。このプロトコルはアルゴリズムに中立なインフラストラクチャ例えば図20に図示してあるそれを利用できる。図20は縦方向の次元と横方向の次元で構成される2次元構造を示す。縦方向の次元は数個の抽象層から構成され、横方向の次元は縦方向の層を含めた各種アプリケーション及びサービスで構成される。最上部の層はアプリケーション層で、アプリケーションの組を含み、そのうちのアプリケーション2000と2002が図示してある。これらのアプリケーションには、分散通信システム及びコラボレーション・システム、例えば前述のコラボレーション・システムや、保護データ記憶、可用性(サービスの非拒絶)、システム管理、医療情報システム、航空管制システム、原子力発電所、軍事情報作戦指令管制システムなどを含み、これだけに限定されない。
【0107】
アプリケーション2000及び2002は一つまたはそれ以上のセキュリティ・サービスにアクセスするが、そのうちサービス2004と2006を図示してある。これらのサービスには、例えば識別、認証、完全性、機密性、プライバシー、許可、権威の代理、アカウンタビリティと非拒絶、タイムスタンプ、公証(notarization)、監査、信頼ポリシー管理、侵入検知及び復旧サービスなどを含む。
【0108】
セキュリティ・サービスは抽象プリミティブ・サービス2008と2010を含む抽象(またはアルゴリズムに中立な)プリミティブ・サービスの組み合わせにより実装される。抽象プリミティブ・サービスは実際には具象(またはアルゴリズム特異的な)プリミティブ・サービスの組み合わせによって実装される。例えば、抽象プリミティブ・サービス2008は具象プリミティブ・サービス2012、2014、2016により実装され、一方抽象プリミティブ・サービス2010は具象プリミティブ・サービス2018、2020、2022によって実装される。これらの具象プリミティブ・サービスは例えば特定の暗号サービスやプロトコルなどのサービスを含む。
【0109】
各抽象層は高次の抽象層または層群によって消費されるサービスを作成する。好適な実装では、アプリケーション2000、2002とセキュリティ・サービス2004、2006の間の関連性、ならびにセキュリティ・サービス2004、2006と抽象プリミティブ・サービス2008、2010の間の関連性は従来どおりの、これらの層の間で静的なコンパイル時に決定される結合(compile−time bindings)である。しかし抽象プリミティブ・サービス2008、2010と具象プリミティブ・サービス(2012、2014、2016、2018、2020、2022)の間の結合は、制約された方法で一つの抽象プリミティブ・サービスと一つまたはそれ以上の具象プリミティブ・サービスを関連づける動的なランタイム結合であるのが望ましい。この動的な結合は「プロバイダ・アーキテクチャ」と呼ばれ、抽象またはアルゴリズム中立なプリミティブ・サービスをなんらかの具象またはアルゴリズム特定のそれで作成することにより実装できるメカニズムであり、実装は任意の時刻にその環境内でアクティブにすることができるようなものである。
【0110】
図21と図22はプロバイダ・アーキテクチャの特定の実装を模式的に示している。オブジェクト指向プログラミング技術をこの実装では用いているが、他の等価な技術やプログラミング言語で実装することもできることは当業者に理解されるであろう。更に詳しく説明すると、図示した実装はダイナミック・リンク・ライブラリ(DLL)を使用して各種サービスを提供している。
【0111】
DLLは図21と図22のそれぞれに図示してある。図21に図示したDLL はセキュリティ・サービス・マネージャ(SSM)と呼ばれるもので、図22に図示したDLLはセキュリティ・サービス・プロバイダ(SSPまたは単にプロバイダ)と呼ばれる。セキュリティ・サブシステムのどのランタイム・インスタンシエーションにも必ず一つだけSSM DLLがロードされる。一方でSSP DLLは何個でもロードでき、それらがすべて独立しているという制限が加えられるだけである(これらがすべてシステム・レジストリなどのファイルに記録されている通りの独立したLIBIDとファイル名を有するという意味で)。SSP DLLの名称はそのデベロッパが選択する。図示したSSP DLLの例はSecProvXXX.dllというような名前がつけられていると考えられ、他のDLLはSecYYYProv.dllまたはZZZSecProv.dllというような名前をつけることができる。
【0112】
図21と図22のボックスはマイクロソフト・コモン・オブジェクト・モデル(Microsoft Common Object Model)に適合するCOMクラスを示す。これらのクラスは、エンジン・クラス(右側に示す)と非エンジン・クラス(左側に示す)の2種類のグループに大別される。COMエンジン・クラスのそれぞれは一つだけIDLインタフェースを実装してエクスポートする。例えば、エンジン・クラス2106(MessageDigest)はインタフェース2104(IMessageDigest)をエクスポートし、エンジン・クラス2118(KeyGenerator)はインタフェース2116(IKeyGenerator)をエクスポートし、エンジン・クラス2126(Cipher)はインタフェース2124(ICipher)をエクスポートする。これはインタフェース2100をエクスポートするSecurityクラス2102についても言えることである。図22に図示した具象クラスについても同じことが当てはまる。例えば、具象エンジン・クラス2204(XXXMessageDigestSpi)はインタフェース2206(IMessageDigsetSpi)をエクスポートし、エンジン・クラス2208(XXXKeyGeneratorSpi)はインタフェース2206(IKeyGeneratorSpi)をエクスポートし、エンジン・クラス2210(XXXCipherSpi)はインタフェース2212(ICipherSpi)をエクスポートする。
【0113】
プロバイダ抽象クラス2122とXXXProvider具象クラス2200(図22)で形成されるプロバイダ/XXXプロバイダ(Provider/XXXProvider)「複合クラス」についても同じことが言える。更に詳しく説明すると、Providerクラス2122はIProviderインタフェース2120をサポートし、XXXXProviderクラス2200はIProviderCtorインタフェース(図22には図示していない)をサポートする。しかし、Providerクラス2122はXXXProvider クラス2200の内部でのみ統合可能で、したがって独立してインスタンシエーションできない。つまり、IProvider2120インタフェースとIProviderCtorインタフェースの両方がProvider/XXXProvider複合クラス2122/2200によって「エクスポート」されることになる。
【0114】
Provider/XXXProvider複合クラスと図21に図示したエンジン・クラスの全部は図22に図示してある他の一つのクラスと組み合わされる(ただしこれは多数のSSPを構成することができそれぞれが多数のアルゴリズムをサポートできることから多面的な関係である)。SSM DLL(図21)のパートナーは抽象パートナーと呼ばれ、SSP DLL(図22)のパートナーは具象パートナーと呼ばれる。図21と図22の左側には、「マスター」クラスと呼ばれる2種類のCOMクラスがあり、これはSecurityクラス2102とProvider/XXXProvider複合クラス2122/2200である。Securityクラス2102が「マスター」クラスであるという意味は、各種「スレーブ」Provider/XXXProviderクラスを制御できるということである。逆に、各種Provider/XXXProviderクラスが「マスター」であるということの意味は、これらが各種のスレーブ低レベル/具象エンジン・クラスを制御すると言うことである。マスター・クラスはほとんどセキュリティ・サブシステムの内部的なもので大半のアプリケーションからは見えない。
【0115】
図21と図22の右側にはエンジン・クラスと呼ばれる2種類のCOMクラスがあり、これらは図21に図示した抽象エンジン・クラスと図22に図示した具象エンジン・クラスである。抽象エンジン・クラスはm_Engineフィールドの値に0を持っていれば純粋に抽象的であると言われる。3種類のエンジン・クラス(MessageDigest、KeyGenerator、Cipher)が説明のために図示してあるが、これらの個数は原理的に制限されない。これらのエンジン・クラスは図21と図22に図示してあるように対で発生し、低レベルのクラスが高レベルのクラスの内部に内包または封入される(m_Engineメンバーを経由する)。高レベル・エンジン・クラスの機能はセキュリティ・サービスの消費者が起動するアプリケーション・プログラミング・インタフェース(API)をエクスポートすることである。低レベル・エンジン・クラス名に見られる接尾辞「Spi」はサービス・プロバイダ・インタフェース(またはセキュリティに関して言えばセキュリティ・プロバイダ・インタフェース、また時に他の状況下ではシステム・プログラミング・インタフェース)を意味するもので、これの唯一の消費者は高レベル・エンジン・クラスである。これらの低レベル・エンジン・クラス内に実際のアルゴリズム特有の実装コードが存在する−−これが「SSP DLL」の実際に「提供する」最終的な機能である。エンジン・クラスを2つの部分に分割したことが、これらのサポートするサービスの命名構造に反映されており、完全認証サービス名は抽象/概念の接頭辞と具象/アルゴリズムの接尾辞、例えばMessageDigest.MD5というように構造化される。
【0116】
各具象SSP(XXXProviderクラス2200)は静的な情報を含み、これにはその名前(s_MyName、文字列)、バージョン(s_MyVersion、数字)、クラスID(s_MyClsid、16バイト二進数)、情報(s_MyInfo、文字列)、DLLにバンドルされているサービスのリスト(s_MySvcMap[]、文字列のペアのリスト)を含む。s_MySvcMap[]の各エントリでは、一方の文字列がそのサービスで実装するアルゴリズムの名称、他方がそのアルゴリズムを実装する具象エンジン・クラス(SecProvXXX.dllにバンドルされる)のCOM CLSID(クラスID)である。
【0117】
エンジン・クラスに加えて、セキュリティ・サブシステムは多数の非エンジン・クラスを含む。代表的な2つのクラス、KeyとKeyPairが図21に示してある。図面が示すように、このような非エンジン・クラスは相対的に通常のCOM クラスで、唯一普通とは違う特徴は(抽象)インタフェース・クラスであり(具象)実装クラスはSSM DLL(図21)とSSP DLL(図22)の間で分割される(されない)ことである。例えば、Keyクラス2110の場合だと、SSMは一般に任意のSSPの鍵がどのようなものであるべきかについての優先的な(インタフェース)知識を持っているが、SSPそれ自体はSSMによって例えばXXXKeyクラス2210によって定義されるインタフェースに準拠したKeyクラスの詳細な実装を供給する必要がある。しかしKeyPairクラス2114の場合、SSMはすでに実装についての詳細な知識を持っている−−これはKey(それがどのようなものであっても)のペアで構成される。
【0118】
セキュリティ・サブシステムをブートする場合、例えば、Securityクラス2102がランタイム時に最初にCoCreateされ、Securityクラス2102はSecurityクラスのFinalConstruct()メソッドで次のようなことを行なう。第1に、Securityクラス2102は例えばレジストリ(Registry)に保存されている構成情報を読み込む。
【0119】
次に、それぞれの構成された具象プロバイダXXXProvider(レジストリから読み出したばかりの)のProgID(またはCLSID)に基づいて、セキュリティ・クラスがXXXProvider2200のインスタンスをCoCreateし、XXXProviderのIProviderCtorインタフェース(Ctorはコンストラクタ(constructor)の意味)へのポインタを得る。XXXProviderクラスをCoCreateするこの動作は更にXXXPrividerのFinalConstruct()にXXXProvider2200内部の抽象ProviderクラスのオブジェクトをCoCreateして統合する。
【0120】
次に、いまCoCreateしたばかりのXXXProviderのIProviderCtorインタフェースを使って、Securityクラス2102がXXXProviderのno−arg−Ctor()メソッドをIProviderCtorインタフェースから呼び出す。この特別なno−arg−Ctor()メソッドはXXXProviderの名称/バージョン/情報/clsid/サービス・データを、「ハードワイヤードな」静的数値変数の位置から統合Providerオブジェクト内の非静的メンバー変数へ「アップロード」する(no−arg−Ctor()メソッドはXXXProviderの統合Providerサブオブジェクトによってエクスポートされるなんらかのメソッドを呼び出すことでこれを完了する)。
【0121】
第4に、Securityクラス2102は各種の構成された具象プロバイダを指すIProvider*の静的内部構成リストs_ProvList[]を構築する。Securityクラス2102は、Securityクラス2102がこの時点まで使っていたXXXProviderのIProviderCtor*インタフェースでQueryInterfaceを呼び出すことで各IProvider*を構築する。構成されたSSPのリストs_ProvList[]はSecurityクラス2102のgetProviders()メソッドを介してクライアントが利用できるようになる。
【0122】
アプリケーションは次のような方法でプロバイダ・アーキテクチャを実際に使用する。あるアプリケーションがMessageDigestオブジェクト上でdigest()メソッドを呼び出して特定メッセージ(バッファ)のダイジェストを実際に計算したいと想定する。アプリケーションはSSMで抽象エンジン・クラスを知っている(すなわちSecuritySvcs.dllのクラスのCLSID)。これは作成中にこの情報へリンクされたためだが、現実のアルゴリズム実装が実際に存在するSSP内の具象エンジン・クラスについては優先順位(すなわち、SecProvXXX.dllのクラスのCLSID)を知らない。したがって、アプリケーションは抽象エンジン・オブジェクトを直接CoCreateできるが、具象エンジン・オブジェクトは直接CoCreate できない。しかし、好適実施態様では、抽象エンジン・オブジェクトがgetInstance()と呼ばれるファクトリ・メソッドを有するクラス・ファクトリ・オブジェクトとして処理され、次のように、間接的に具象エンジン・オブジェクトを作成している。
【0123】
アプリケーションはMessageDigestクラス2106から純粋な抽象MessageDigestオブジェクトをCoCreateすることから開始する。このようなオブジェクトは具象エンジン・オブジェクトへ接続されないのでダイジェストを作成するためには使えない、すなわち主状態変数m_Engineは値に0を持っている(副状態変数m_AlgNameとm_ProvNameも同様)。いまCoCreateしたIMessageDigest*インタフェース2104を使って、アプリケーションはMessageDigestのgetInstance()メソッドを呼び出し、使いたいメッセージ・ダイジェスト・アルゴリズムの周知の名前を指定する。getInstance()メソッドはファクトリ・メソッドで、次のステップを実行する。第1に、getInstance()メソッドがSecurityオブジェクトでgetProviders()メソッドを呼び出して現在構成されているプロバイダのリストをフェッチする。次に、getInstance()メソッドはいまフェッチしたばかりのSSPのリストを使って、要求されたアルゴリズムをサポートする最初のSSPが見つかるまで、好適な順番で各SSPのget()メソッドを呼び出す。SSPのget()メソッドはSSPのm_SvcMap[]を使用し、アルゴリズム名を具象エンジン・クラスProgIDにマッピングする。つまりこの例では、クラス2022のget()メソッドが要求されたアルゴリズムをサポートしているMessageDigestSpi具象エンジン・クラスのProgIDを返す。
【0124】
次に、getInstance()メソッドはgetInstance()メソッドが呼び出されたMessageDigestとは別に新しく抽象MessageDigestオブジェクトをCoCreateする。まず、この新しいMessageDigestオブジェクトはもう一つの純粋な抽象エンジン・オブジェクトだが、次のステップでgetInstance()メソッドは完全な/接続されたエンジン・オブジェクトへ(すなわちm_Engineフィールドを介してこれの内部に含まれる/作成される具象エンジンとあわせて「非純粋」抽象エンジン・オブジェクトに)変化させる。
【0125】
最後に、getInstance()メソッドは新しいMessageDigestオブジェクトのconstructor()メソッドを呼び出し、パラメータとして上記で呼び出したget()オブジェクトから取得したMessageDigestSpi CLSID(またはProgID)を渡す。そのconstructor()メソッドはクラス2104からMessageDigestSpiオブジェクトのインスタンスをCoCreateし、新しいMessageDigestのm_Engineフィールドへ得られたIMessageDigestSpi*ポインタを格納する。
【0126】
つまり、getInstance()メソッドはアプリケーションへ完全に完成/接続したMessageDigestエンジン・オブジェクトを返す。この時点で、アプリケーションはエンジン・オブジェクトのdigest()メソッドを呼び出してメッセージのダイジェストを計算する。(抽象)エンジン・オブジェクトのdigest()メソッドは具象エンジン・オブジェクトのengineDigest()メソッドへの呼び出しを代理または転送して実際の作業を行なわせる。
【0127】
上記で説明した実施態様のソフトウェアによる実装は、有形の媒体例えばコンピュータで読み取り可能な媒体例えばディスケット、CDROM、ROMメモリ、または固定ディスクなどに固定されるか、モデムまたは媒体上のその他のインタフェース装置を介してコンピュータ・システムへ転送可能な一連のコンピュータ命令を含む。媒体は光またはアナログ通信線を含みこれに限定されない有形の媒体としたり、マイクロ波、赤外線またはその他の電送技術を含みこれに限定されない無線技術で実装することができる。媒体はインターネットの場合もある。一連のコンピュータ命令は本発明に関して本明細書ですでに説明した機能の全部または一部を実現する。このようなコンピュータ命令は多くのコンピュータ・アーキテクチャまたはオペレーティング・システムで使用される多数のプログラミング言語で書けることが当業者には理解されよう。更に、このような命令は、現在または将来の、半導体、磁気、光、またはその他のメモリ装置を含みこれに限定されないなんらかのメモリ技術を用いて保存したり、あるいは現在または将来の、光、赤外線、マイクロは、またはその他の伝送技術を含みこれに限定されないなんらかの通信技術を用いて伝送される。このようなコンピュータ・プログラムは印刷物または電子文書を伴なう取り出し自由な媒体として、例えばシュリンクラップ包装ソフトウェアとして配布されたり、コンピュータ・システムに例えばシステムROMや固定ディスク上にプリロードされていたり、またはサーバまたは電子掲示板から例えばインターネットまたはワールド・ワイド・ウェブなどのネットワーク上で配布されることがあると想定される。
【0128】
本発明の代表的実施態様を開示したが、本発明の利点のいくつかを実現し本発明の主旨と範囲から逸脱しない各種の変化及び変更を加えることができることは当業者に明らかであろう。例えば、説明は特定のハードウェア・システム及びオペレーティング・システムを指向したものだったが、他のハードウェアやオペレーティング・システム・ソフトウェアを説明したそれと同じ方法で使用できることは当業者には明らかであろう。例えば特定の関数を実現するために使用された特定の命令などのその他の態様ならびに本発明の概念に対するその他の変更も付録の請求の範囲によって包含されることを意図している。

【特許請求の範囲】
【請求項1】
コラボレータ装置間の鍵で保護されたメッセージで通信するコラボレータ装置のグループに公開鍵/秘密鍵ペアを有する招待者装置を追加する方法であって、
(a)新規コラボレータ装置を前記グループに追加する権限と公開鍵/秘密鍵ペアを持った議長装置として前記コラボレータ装置の少なくとも一つを選択するステップと、
(b)前記議長装置から前記招待者装置へ招待メッセージを送るステップであって、前記招待メッセージは署名済み招待ナンスと、前記招待者装置の公開鍵で暗号化して前記議長装置の秘密鍵で署名した招待情報とを含む、ステップと、
(c)前記招待者装置から前記議長装置へ受諾メッセージを送るステップであって、前記受諾メッセージは前記署名済み招待ナンスと、署名済み受諾ナンスと、前記議長装置の公開鍵で暗号化した受諾情報とを含む、ステップと、
(d)前記議長装置から前記グループの全コラボレータ装置へ新規メンバー・メッセージを送るステップであって、前記新規メンバー・メッセージは新規のコラボレータ装置間鍵を含む、ステップと、
(e)前記議長装置から前記招待者装置へグループ・データ・メッセージを送るステップであって、前記グループ・データ・メッセージは署名済み受諾ナンスと前記招待者装置の公開鍵で保護されたグループ情報とを含む、ステップと
を含むことを特徴とする方法。
【請求項2】
ステップ(b)は第1のワンタイム鍵を生成し、前記第1のワンタイム鍵で前記招待情報を暗号化して、前記招待者装置の公開鍵で前記第1のワンタイム鍵を暗号化し、前記暗号化された第1のワンタイム鍵と前記暗号化された招待情報を前記招待メッセージに含めることを含むことを特徴とする請求項1に記載の方法。
【請求項3】
ステップ(c)は第2のワンタイム鍵を生成し、前記第2のワンタイム鍵で前記受諾情報を暗号化し、前記議長装置の公開鍵で前記第2のワンタイム鍵を暗号化して、前記暗号化された第2のワンタイム鍵と前記暗号化された受諾情報を前記受諾メッセージに含めることを含むことを特徴とする請求項1に記載の方法。
【請求項4】
ステップ(e)は第3のワンタイム鍵を生成し、前記第3のワンタイム鍵で前記グループ・データ情報を暗号化し、前記招待者装置の公開鍵で前記第3のワンタイム鍵を暗号化して、前記暗号化された第3のワンタイム鍵と前記暗号化されたグループ・データ情報を前記招待メッセージに含めることを含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記招待メッセージは更にへッダと前記へッダのハッシュのデジタル署名と、前記招待ナンスと、前記第1のワンタイム鍵と、前記招待情報とを含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記招待メッセージは前記議長装置の名前と、前記議長装置の公開署名確認鍵と、前記議長装置の公開鍵とを含む議長装置のデジタル証明書を更に含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記受諾メッセージは更にへッダと、前記へッダのハッシュのデジタル署名と、前記議長装置の名前と、前記招待ナンスと、前記受諾ナンスと、前記第2のワンタイム鍵と、前記受諾情報とを含むことを特徴とする請求項1に記載の方法。
【請求項8】
前記受諾メッセージは前記招待者装置の名前と前記招待者装置の公開署名確認鍵と前記招待者装置の公開鍵とを含む招待者装置のデジタル証明書を更に含むことを特徴とする請求項1に記載の方法。
【請求項9】
ステップ(c)は前記受諾メッセージで前記議長装置により受信された前記署名済み招待ナンスの確認を含むことを特徴とする請求項1に記載の方法。
【請求項10】
前記受諾メッセージで前記議長装置により受信された前記署名済み招待ナンスの確認は、前記議長装置による前記署名済み招待ナンスの再計算と、前記再計算した署名済み招待ナンスと前記受諾メッセージで受信した前記署名済み招待ナンスとのソフトウェアによる比較とを含むことを特徴とする請求項9に記載の方法。
【請求項11】
前記受諾メッセージで前記議長装置により受信された前記署名済み招待ナンスの確認は、前記受諾メッセージの中で前記議長装置により受信された前記署名済み招待ノンスを前記議長装置の手動操作による確認のため視覚的に表示することを含むことを特徴とする請求項9に記載の方法。
【請求項12】
コラボレータ装置間の鍵で保護されたメッセージで通信するコラボレータ装置のグループに公開鍵/秘密鍵ペアを有する招待者装置を追加するための装置であって、
新規コラボレータ装置を前記グループに追加する権限と公開鍵/秘密鍵ペアを持った議長装置として前記コラボレータ装置の少なくとも一つを選択するメカニズムと、
前記議長装置から前記招待者装置へ招待メッセージを送る議長プロトコル・エンジンであって、前記招待メッセージは署名済み招待ナンスと、前記招待者装置の公開鍵で暗号化して前記議長装置の秘密鍵で署名した招待情報とを含むことを特徴とする議長プロトコル・エンジンと、
前記招待者装置から前記議長装置へ受諾メッセージを送る招待者プロトコル・エンジンであって、前記受諾メッセージは前記署名済み招待ナンスと、署名済み受諾ナンスと、前記議長装置の公開鍵で暗号化した受諾情報とを含むことを特徴とする招待者プロトコル・エンジンと、
前記議長装置から前記グループの全コラボレータ装置へ新規メンバー・メッセージを送る議長デジタル・メカニズムであって、前記新規メンバー・メッセージは新規のコラボレータ装置間鍵を含むことを特徴とする議長デルタ・メカニズムと、
前記議長装置から前記招待者装置へグループ・データ・メッセージを送る議長加入メカニズムであって、前記グループ・データ・メッセージは署名済み受諾ナンスと前記招待者装置の公開鍵で保護されたグループ情報とを含むことを特徴とする議長加入メカニズムと、
を含むことを特徴とする装置。
【請求項13】
前記議長プロトコル・エンジンは第1のワンタイム鍵を生成し、前記第1のワンタイム鍵で前記招待情報を暗号化して、前記招待者装置の公開鍵で前記第1のワンタイム鍵を暗号化し、前記暗号化された第1のワンタイム鍵と前記暗号化された招待情報を前記招待メッセージに含めることを特徴とする請求項12に記載の装置。
【請求項14】
前記招待者プロトコル・エンジンは第2のワンタイム鍵を生成し、前記第2のワンタイム鍵で前記受諾情報を暗号化し、前記議長装置の公開鍵で前記第2のワンタイム鍵を暗号化して、前記暗号化された第2のワンタイム鍵と前記暗号化された受諾情報を前記受諾メッセージに含めることを特徴とする請求項12に記載の装置。
【請求項15】
前記議長加入メカニズムは第3のワンタイム鍵を生成し、前記第3のワンタイム鍵で前記グループ・データ情報を暗号化し、前記招待者装置の公開鍵で前記第3のワンタイム鍵を暗号化して、前記暗号化された第3のワンタイム鍵と前記暗号化されたグループ・データ情報を前記招待メッセージに含めることを特徴とする請求項12に記載の装置。
【請求項16】
前記招待メッセージは更にへッダと、前記へッダのハッシュのデジタル署名と、前記招待ナンスと、前記第1のワンタイム鍵と、前記招待情報とを含むことを特徴とする請求項12に記載の装置。
【請求項17】
前記招待メッセージは更に前記議長装置の名前を含む議長装置のデジタル証明書と、前記議長装置の公開署名確認鍵と、前記議長装置の公開鍵とを含むことを特徴とする請求項12に記載の装置。
【請求項18】
前記受諾メッセージは更にへッダと、前記へッダのハッシュのデジタル署名と、前記議長装置の名前と、前記招待ナンスと、前記受諾ナンスと、前記第2のワンタイム鍵と、前記受諾情報とを含むことを特徴とする請求項12に記載の装置。
【請求項19】
前記受諾メッセージは前記招待者装置の名前と前記招待者装置の公開署名確認鍵と前記招待者装置の公開鍵とを含む招待者装置のデジタル証明書を更に含むことを特徴とする請求項12に記載の装置。
【請求項20】
前記議長プロトコル・エンジンは前記受諾メッセージの中にあって前記議長装置により受信された前記署名済み招待ナンスの確認を行なうことを特徴とする請求項12に記載の装置。
【請求項21】
前記受諾メッセージで前記議長装置により受信された前記署名済み招待ナンスの確認は、前記議長装置による前記署名済み招待ナンスの再計算と、前記再計算した署名済み招待ナンスと前記受諾メッセージの中にあって受信した前記署名済み招待ナンスとのソフトウェアによる比較とを含むことを特徴とする請求項20に記載の装置。
【請求項22】
前記受諾メッセージの中にあって前記議長装置により受信された前記署名済み招待ナンスの確認は、前記受諾メッセージで前記議長装置により受信された前記署名済み招待ノンスを前記議長装置の手動操作による確認のため視覚的に表示することを含むことを特徴とする請求項20に記載の装置。
【請求項23】
コンピュータに、コラボレータ装置間の鍵で保護されたメッセージで通信するコラボレータ装置のグループに公開鍵/秘密鍵ペアを有する招待者装置を追加する方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記方法は、
新規コラボレータ装置を前記グループに追加する権限と公開鍵/秘密鍵ペアを持った議長装置として前記コラボレータ装置の少なくとも一つを選択するステップと、
前記議長装置から前記招待者装置へ招待メッセージを送るステップであって、前記招待メッセージは署名済み招待ナンスと、前記招待者装置の公開鍵で暗号化して前記議長装置の秘密鍵で署名した招待情報とを含む、ステップと、
前記招待者装置から前記議長装置へ受諾メッセージを送るステップであって、前記受諾メッセージは前記署名済み招待ナンスと、署名済み受諾ナンスと、前記議長装置の公開鍵で暗号化した受諾情報とを含む、ステップと、
前記議長装置から前記グループの全コラボレータ装置へ新規メンバー・メッセージを送るステップであって、前記新規メンバー・メッセージは新規のコラボレータ装置間鍵を含む、ステップと、
前記議長装置から前記招待者装置へグループ・データ・メッセージを送るステップであって、前記グループ・データ・メッセージは署名済み受諾ナンスと前記招待者装置の公開鍵で保護されたグループ情報とを含む、ステップと
を含むことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項24】
前記議長装置から前記招待者装置へ招待メッセージを送るステップは、第1のワンタイム鍵を生成し、前記第1のワンタイム鍵で前記招待情報を暗号化して、前記招待者装置の公開鍵で前記第1のワンタイム鍵を暗号化し、前記暗号化された第1のワンタイム鍵と前記暗号化された招待情報を前記招待メッセージに含めることを含むことを特徴とする請求項23に記載のコンピュータ読み取り可能な記録媒体。
【請求項25】
前記招待者装置から前記議長装置へ受諾メッセージを送るステップは、第2のワンタイム鍵を生成し、前記第2のワンタイム鍵で前記受諾情報を暗号化し、前記議長装置の公開鍵で前記第2のワンタイム鍵を暗号化して、前記暗号化された第2のワンタイム鍵と前記暗号化された受諾情報を前記受諾メッセージに含めることを含むことを特徴とする請求項23に記載のコンピュータ読み取り可能な記録媒体。
【請求項26】
前記議長装置から前記招待者装置へグループ・データ・メッセージを送るステップは、第3のワンタイム鍵を生成し、前記第3のワンタイム鍵で前記グループ・データ情報を暗号化し、前記招待者装置の公開鍵で前記第3のワンタイム鍵を暗号化して、前記暗号化された第3のワンタイム鍵と前記暗号化されたグループ・データ情報を前記招待メッセージに含めることを含むことを特徴とする請求項23に記載のコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2012−19534(P2012−19534A)
【公開日】平成24年1月26日(2012.1.26)
【国際特許分類】
【出願番号】特願2011−181880(P2011−181880)
【出願日】平成23年8月23日(2011.8.23)
【分割の表示】特願2001−585004(P2001−585004)の分割
【原出願日】平成13年5月2日(2001.5.2)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】