(57)【特許請求の範囲】
【請求項１】
分散システム内でネットワークによって接続された複数のコンピュータの間で転送される複数のオブジェクトをセキュリティポリシーにしたがって認証するための前記分散システムのセキュリティシステムにおいて、
前記複数のコンピュータの各コンピュータは、
いずれのセキュリティプロトコルに依存しないセキュリティポリシー言語で記載され、
前記複数のコンピュータの複数のユーザおよび前記複数のオブジェクトを認証すること、前記複数のオブジェクトを暗号化すること、および当該暗号化された複数のオブジェクトを解読することに使用されるデータを有し、
前記複数のユーザおよび前記複数のオブジェクトを認証し、前記複数のオブジェクトを暗号化し、当該暗号化された複数のオブジェクトを解読するための、複数のコンピュータ実行可能なセキュリティコンポーネントを定義する
セキュリティポリシーを記憶するための記憶デバイスと、
前記セキュリティポリシーによって定義された前記複数のコンピュータ実行可能なセキュリティコンポーネントを実行することによって、前記複数のユーザおよび前記複数のオブジェクトを認証し、前記複数のオブジェクトを暗号化し、当該暗号化された複数のオブジェクトを解読する、処理デバイスと
を備え、
前記分散システムのセキュリティシステムは、
前記分散システム内の前記複数のコンピュータのうちの第１のコンピュータから、前記セキュリティポリシーによって定義された前記複数のコンピュータ実行可能なセキュリティコンポーネントによって、第１のセキュリティプロトコルでフォーマットされ、第１のトランスポートプロトコルを使用して送信された、前記複数のオブジェクトのうちのあるオブジェクトを受信すること、および
前記オブジェクトを、前記セキュリティポリシーによって定義された前記複数のコンピュータ実行可能なセキュリティコンポーネントによって認証して解読することができるように、前記第１のセキュリティプロトコルと異なる第２のセキュリティプロトコルでフォーマットし、前記第1のトランスポートプロトコルと異なる第２のトランスポートプロトコルを使用して前記分散システム内の前記複数のコンピュータのうちの第２のコンピューティングデバイスに送信する
ように構成されることを特徴とする分散システムのセキュリティシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータセキュリティシステムの分野に関する。より詳細には、本発明は、分散コンピュータシステムにセキュリティをもたらす方法およびデバイスを提供する。
【０００３】
【従来の技術】
分散コンピューティングシステム内で伝送されるデータを保護するために、セキュリティフレームワークが開発されている。既存のセキュリティフレームワークは、1組のプライバシー、セキュリティ、適応性、スケーラビリティの程度を有する。たとえば、Kerberosシステムは、第三者と鍵を共用するユーザによる安全な通信を提供する。安全な通信を行うために、各当事者がその第三者に接続し、その第三者によって発行された鍵を使用する。様々な欠点の中でも、Kerberosシステムは、第三者が互いに通信している諸ユーザのアイデンティティを追跡することを可能にする。さらに、第三者が鍵を発行するため、第三者はメッセージを解読することができる。Kerberosシステムは固定されている。すなわち、管理者は、展開のオプションの中で柔軟性に制限を受ける。
【０００４】
他の既存のセキュリティシステムは、長所と制限とを有する。たとえば、公開鍵と秘密鍵のインフラストラクチャを使用するセキュリティシステムは、時間とコストのかかる暗号化ステップと解読ステップを含むことがある。時間のかかる暗号化ステップおよび解読ステップは、頻繁に実行しすぎた場合にセキュリティシステムのスケーラビリティを制限することがある。また、PKIインフラストラクチャは、取消し問題を有することがしばしばあり、多くは、複数のトラステッドルート(trust roots)または相互証明(cross-certification)の管理の問題に対処していない。大抵の解決策は、特定の目的、たとえばSSLまたはIPsecのために設計されている。既存のセキュリティシステムはまた、一般に特定の暗号技術に集中している。たとえば、Kerberosは対称鍵を使用し、PKIは公開鍵を使用する。
【０００７】
【発明が解決しようとする課題】
当技術分野では、分散コンピューティングシステムと共に使用するために、セキュリティプロトコルに依存せず、インターネットなど広域ネットワークと共に使用するためにスケーリングし、使用される下地の暗号メカニズムから独立している一般セキュリティフレームワーク(generic security framework)が必要とされている。
【０００８】
【課題を解決するための手段】
本発明は、トランスポート/セキュリティプロトコルに依存せず、複数の暗号技術をサポートすることができる一般セキュリティフレームワークを提供することにより、従来技術の1つまたは複数の問題および制限を克服する。このセキュリティフレームワークは、フレームワークのコンポーネント、その特性、能力、要件、対話を説明することができるセキュリティポリシーを使用する。このポリシーは、セキュリティポリシー言語を使用して表される。このセキュリティポリシー言語は、アプリケーションコードを変更することなく、異なるセキュリティコンポーネントを定義し、また構成することを可能にする。このメカニズムを使用して、特定の展開を必要とする特定の1組のセキュリティサービスを定義することができる。さらに、このセキュリティコンポーネントは、セキュリティサービスを分割して、柔軟性とスケーラビリティとを高めることを可能にする。言語内のセキュリティセマンティクスを取り込むことにより、基礎となる実施物は抽象化され、それにより「仮想分散セキュリティシステム」を生み出す。さらに、セキュリティセマンティクスを言語で表した状態で、基礎となるプロトコルが抽象化され、異なるプラットフォーム、技術、プロトコルをセキュリティランタイムにサポートさせることができる。最後に、言語形態のセキュリティポリシー定義により、セキュリティシステムのプルーフを構築することが可能である。
【０００９】
本発明については例を介して説明するが図に限定されることはない。なお、図において同様な参照番号が類似の要素を示す。
【００１０】
【発明の実施の形態】
本発明の態様は、様々な分散コンピューティングシステム環境での使用に適している。分散コンピューティング環境では、通信ネットワークを介してリンクされている遠隔コンピュータデバイスによってタスクが実行される可能性がある。本発明の実施形態は、専用コンピュータデバイスおよび/または汎用コンピュータデバイスを含むことができ、それぞれ、コンピュータ実行可能命令を実行するための中央処理装置(CPU)または他の処理手段、実行可能命令を記憶するためのコンピュータ可読媒体、情報を表示し、または出力するためのディスプレイまたは他の出力手段、情報を入力するためのキーボードまたは他の入力手段など、標準的なコンピュータハードウェアを含むことができる。適切なコンピュータデバイスの例は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能なコンシューマエレクトロニクス、ネットワークPCS、ミニコンピュータ、メインフレームコンピュータなどを含む。
【００１１】
本発明について、パーソナルコンピュータまたはサーバによって実行される、プログラムモジュールなどコンピュータ実行可能命令の一般的な状況において述べる。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。一般に、プログラムモジュールの機能は、様々な環境で望ましいように組み合わせる、または分散させることができる。
【００１２】
本発明の範囲内の実施形態はまた、実行命令を有するコンピュータ可読媒体を含む。そのようなコンピュータ可読媒体は、汎用または専用コンピュータがアクセスすることができる任意の使用可能な媒体とすることができる。例として、また制限しないものとして、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは所望の実行可能命令を記憶するために使用でき、汎用または専用コンピュータがアクセスすることができる任意の他の媒体を含むことができる。上記の組合せもまた、コンピュータ可読媒体の範囲内に含むべきである。たとえば、実行可能命令は、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに一定の機能または機能群を実行させる命令およびデータを含む。
【００１３】
図1は、本発明を実施することができる適切な分散コンピューティングシステム100動作環境の例を示す。分散コンピューティングシステム100は、適切な動作環境の一例にすぎず、本発明の使用または機能の範囲について何ら制限を示唆するものではない。システム100は、通信ネットワーク102を含むものとして示されている。使用されている特定のネットワーク実施物は、たとえば、任意のタイプのローカルエリアネットワーク(LAN)とその関連するLANトポロジおよびプロトコル、単純なポイント・ツー・ポイントネットワーク(直接のモデム対モデム接続など)、ならびに公共のインターネットや、Microsoft7 Networkなど商業ベースのネットワークサービスを含むワイドエリアネットワーク(WAN)実施物で構成することができる。システムはまた、インターネットに結合されたLANなど複数の通信ネットワークを含むことができる。
【００１４】
コンピュータデバイス104、コンピュータデバイス106、コンピュータデバイス108は、通信デバイスを介して通信ネットワーク102に結合することができる。ネットワークインターフェースまたはアダプタを使用して、コンピュータデバイス104、106、108をLANに接続することができる。通信ネットワーク102がWANをふくむ場合は、WANを介して通信を確立するためにモデムまたは他の手段を使用することができる。コンピュータデバイス104、106、108は、当技術分野で周知である形で通信ネットワーク102を介して互いに通信することができる。TCP/IP、イーサネット（登録商標）、FTP、HTTPなど、様々な周知のプロトコルのいずれかが存在するものと仮定する。
【００１５】
コンピュータデバイス104、106、108は、通信ネットワーク102を介して、コンテンツ、アプリケーション、メッセージおよび他のオブジェクトを交換することができる。本発明のいくつかの態様では、コンピュータデバイス108を、サーバコンピュータまたはサーバファームで実施することができる。コンピュータデバイス108はまた、コンピュータデバイス104および106にサービスを提供するように構成することができる。
【００１６】
図2は、本発明の一実施形態による仮想分散セキュリティシステムのアーキテクチャを示す。アプリケーション202a、202b、202cは、セキュリティ関連のオペレーションのために仮想分散セキュリティシステム204を使用する。仮想分散セキュリティシステム204は、1つまたは複数のセキュリティポリシー210a-210cを使用することができる(セキュリティ規則および手続きを確立し、1つまたは複数のプロトコル206a-206cおよびトランスポート208a-208cと共にセキュリティポリシーを実施するため)。本発明の一実施形態では、アプリケーション202a、202b、202cまたは他のエンティティは、セキュリティポリシーの使用に関して折衝することができる。具体的には、エンティティ群はメッセージを交換し、カスタムセキュリティポリシーとして使用するためにセキュリティポリシー210a-210cに関して折衝することができる。セキュリティポリシー210a-210cについては以下に詳しく述べ、共通の、または異なるセキュリティポリシー言語で記述される。一実施形態では、仮想分散セキュリティシステム204は、1組のアプリケーションプログラミングインターフェース(API)で実施される。しかし、仮想分散セキュリティシステム204を実施するために多数の代替メカニズムがあることは、当業者には理解される。たとえば、他の実施形態では、仮想分散セキュリティシステム204を1組のサービスと共に完全に分散し、および／または実施することができよう。さらに他の実施形態では、仮想分散セキュリティシステム204を1組のJava（登録商標）ビーンズまたは他のJava（登録商標）言語デリバティブで実施することができよう。
【００１７】
セキュリティポリシー210a-210cは、システムのコンポーネントの挙動、またはシステムの全体的なセキュリティセマンティクスを説明することができる。たとえば、メッセージを送信するとき、セキュリティポリシーは、特有の形でメッセージに署名すること、または特有の形態の複数の署名が存在しなければならないこと、一定の信任状が存在しなければならず、および少なくとも1部分のメッセージが暗号化されていることを要求することができる。他の例では、セキュリティポリシーは、サービスにアクセスする前にたどらなければならないステップを識別することができる。
【００１８】
セキュリティポリシーは、システム管理者またはアプリケーション開発者が書き著すことができる。従来技術の方法のように数の限られたアクセス制御規則の代わりに、本発明の態様は、セキュリティポリシーを作成し、または修正することにより、ユーザまたはアプリケーションが新しいアクセス他の規則を作成することを可能にする。たとえば、特定のサービスの場合、管理者は、ユーザが特別な読取りアクセス権を有することを望むことができる。従来技術のシステムでは、使用できる権利がセキュリティシステム内にハードコード化されている。たとえば、Windows（登録商標） NTオペレーティングシステムは、32個の定義済み許可権を有する。本発明の場合、管理者は、セキュリティポリシーを定義し、または編集することによって新しい権利を定義することができる。セキュリティポリシーは、能力ベースとすることができる。すなわち、アプリケーションが能力を定義することができ、仮想分散セキュリティシステム204がその能力を提供することができる。
【００１９】
セキュリティポリシー210a-210cは、セキュリティポリシー言語で書き著すことができる。セキュリティポリシー言語は、セキュリティコンポーネント、その特性、能力、要件、対話セマンティクス、および他のセキュリティ面を説明するために使用することができる。そのような言語は多数の様々な形態で表現できるであろうことは当業者には理解されよう。いくつかの実施形態では、セキュリティ言語は、Prologまたは何らかのデリバティブなど論理ベースの言語とすることができる。他の実施形態では、セキュリティ言語は、規則ベースの、または手続きベースのものとすることができる。当然ながら、セキュリティ言語は、論理ベース、規則ベース、または手続きベースのどんな組合せとすることもできる。一実施形態では、セキュリティポリシー210a-210cが、XML(extensible markup language)ドキュメントで実施される。
【００２０】
図3は、セキュリティポリシーによって定義することができるセキュリティコンポーネント306a-306iの1組の例を示す。セキュリティコンポーネント306a-306iは、ライブラリルーチン、別個のサービス、または他のメカニズムで実施することができる。アプリケーション302はサービス304と対話する。セキュリティコンポーネント306a-306iは、この通信のためのセキュリティ環境を提供する。
【００２１】
アイデンティティコンポーネント306aは、プリンシパルを認証し、アイデンティティの信頼できるプルーフを提供するメカニズムを提供することができる。アイデンティティのプルーフは、信任状、チケット、ライセンス、またはコンポーネント306aを識別するために受入可能な他のメカニズムと共に確立することができる。本発明の態様について、ライセンスに関連して以下に述べる。ライセンスは、1組のアサーションを含み、オーソリティによって署名される。代替実施形態では、信任状、チケットまたは他のメカニズムを使用できることは当業者には理解されよう。
【００２２】
アドミッションコンポーネント306bは、サービス304のトラスト領域へのアクセスを調節するためのメカニズムを提供することができる。アドミッションコンポーネント306bは、外部信任状を内部信任状にマップする。たとえば、アプリケーション302は、公開鍵信任状をアドミッションコンポーネント306bに提供し、アドミッションコンポーネント306bは、対称鍵信任状をアプリケーション302に返すことができる。
【００２３】
許可コンポーネント306cは、権利、能力または他のアクセス制御情報をプリフェッチするためのメカニズムを提供することができる。許可コンポーネント306cは、サービス304が、許可コンポーネント306cから受け取った署名済み信任状を、アプリケーション302によって要求されたオペレーションに必要な権利/能力と比較することを可能にする。権利を比較することは、特に権利が変化しない実施形態において、一般に権利を「フェッチ」するよりサービス304にとって効率的である。
【００２４】
共用鍵コンポーネント306dは、サービス304と、セキュリティコンポーネント306と、サービス304のトラスト領域内に存在する他のサービスとの間で秘密を安全に共用するためのメカニズムを提供することができる。たとえば、アドミッションサービス306bが対称鍵ライセンスを返した場合は、そのトラスト領域について共用鍵を使用してそれを符号化することができる。サービス304は、アドミッションサービス306bによって使用される共用鍵を共用鍵サービス306dから取得し、その共用鍵を使用してライセンスを復号することができる。
【００２５】
取消しコンポーネント306eは、取消しを追跡するためのメカニズムを提供することができる。たとえば、トラスト領域の外で発行された信任状を、たとえば証明書取消しリスト(CRLS)を使用して、取消しのために監視することができよう。取消しコンポーネント306eはまた、トラスト領域内の慣用を監視し、誤用されている信任状、チケット、ライセンス、または他のメカニズムを取り消すことができる。たとえば、管理者は、呼出し制限、時間制限、頻度制限などの制限をアプリケーション302用のライセンスにセットすることができる。呼出し制限は、ライセンスを使用することができる回数を制限することができる。時間制限は、ライセンスを特定の時間に制限することができ、頻度制限は、所与の時間内でライセンスを使用することができる回数を制限することができる。アプリケーション302がこれらの制限を超えた場合には、ライセンスを取り消すことができる。測定システムと結合すると、サービス妨害攻撃にさらされることを、特にそれが偶発的な場合に制限するためのメカニズムが得られる。このメカニズムはまた、サーバファームを扱うときに重要である。従来技術のシステムでは、一般に制限がサーバの数で割られ、それに応じて割り振られる。たとえば、サーバが10あり、20の呼出し制限がある場合、個々の各サーバは、2の呼出し制限を有することになる。他の従来技術のシステムでは、呼出し制限が各サーバに適用される。その結果、サーバが10、呼出し制限が20の場合、実際の呼出し制限は200となることがある。取消しコンポーネント306eは、サーバすべての活動を追跡し、確実に呼出し制限を超えないようにする。当然ながら、サーバと、取消しコンポーネント306eまたは測定システムとの間の伝播遅延により、いくつかの場合には呼出し制限をわずかに超える可能性がある。
【００２６】
トラストコンポーネント306fは、トラスト関係を管理するためのメカニズムを提供する。トラストコンポーネント306fは、トラストポリシーまたはトラストステートメントを使用して、エンティティがどのように信頼されるか、および／またはエンティティが信頼される範囲を示すことができる。トラスト関係は、第2のエンティティにライセンスを発行するオーソリティを第1のエンティティが信頼するとき、第1のエンティティに第2のエンティティを信頼させる。いくつかの実施形態では、エンティティがトラストの範囲を定義する。たとえば、第1のエンティティは、一定のURL群とのトランザクションについて第2のエンティティを信頼する。トラスト関係は、暗号コンポーネントを含むことができる。たとえば、公開鍵実施形態の場合、証明チェーンが処理され、最後に証明書がTA(trusted authority)によって署名される可能性がある。このメカニズムは、信頼されるアイデンティティとその証明書を維持し、それにより、適切な認可なくそれらを変更することができないようにする。同様に、ある当事者は、他の当事者の証明書のルートを信頼することができないが、証明書に副署し、またはその副署を信頼することができる(相互証明)。多数の状況では、様々なアプリケーションやサービス、あるいはサービスのインスタンス(たとえば、ファーム)にわたってトラストを共用する。そのような環境では、トラストコンポーネント306fは、通知すべき信頼する当事者のためのメカニズムを提供し、信頼される当事者の追加、変更、または削除を含む更新を取得する。それだけには限らないがポーリングやイベンティングを含む更新を配布するために複数のメカニズムがある可能性があり、セキュリティポリシーは、使用可能なオプションのうちで選択をすることができることは当業者には理解される。
【００２７】
トラストコンポーネント306fは、企業または組織にまたがるトラストメカニズムを提供する。たとえば、アプリケーション302は、特定の契約でサービス304と共に動作し、部品注文や追跡を扱うことができる。アプリケーション302とサービス304は異なる会社で動作する一方、アプリケーション302とサービス304はまた、どちらも部品会社など他のエンティティと対話する。アプリケーション302とサービス304は、いずれかのエンティティを選択して信頼する。いずれかのエンティティは部品会社(たとえば、その下請け会社)を指定し、信頼される。
【００２８】
記憶コンポーネント306gは、ライセンスなど信任状（credentials)を記憶し、取り出し、暗号化し、管理するためのメカニズムを提供する。記憶コンポーネント306gは、ロックボックス(個人的な記憶装置)、ディレクトリ、レジストリ、エスクロー、または他の記憶メカニズムとして使用する。さらに、記憶コンポーネント306gは、定期取消しチェックを含め、記憶されたライセンスを確認し、信任状に副署し、記憶コンポーネント306gを信頼する当事者が処理を最適化し、また妥当性検査を省くことを可能にする。
【００２９】
一実施形態では、記憶コンポーネント306gの機能は、図4に示すディレクトリ402など、ディレクトリで実施する。ライセンスの所有者は、必要に応じてライセンスを取り出して使用する。ディレクトリ402は、複数のライセンスを記憶するためにメモリモジュール404を含む。メモリモジュール404は、例示のためにすぎないが、消費者Aに属する3つのライセンス406、410、414と共に示されている。さらに、ライセンスが示されているが、秘密鍵など他の信任状を使用することができることが当業者には理解されよう。メモリモジュール404は、任意の数のエンティティに属し、任意の数のオーソリティによって発行されたライセンスを含むことができる。ライセンス406はオーソリティ408によって発行され、ライセンス410はオーソリティ412によって発行され、ライセンス414はオーソリティ416によって発行された。
【００３０】
ディレクトリ402はまた、プロセッサ418と、メモリモジュール404内に記憶された1つまたは複数のライセンスの状態を確認するために使用することができる確認モジュール420とを含むことができる。図5は、プロセッサ418および確認モジュール420が使用してライセンスの状態を確認することができる例示的な方法を示す。ステップ502では、ディレクトリ402が、オーソリティによってライセンス所有者に発行された少なくとも1つのライセンスをメモリ内に記憶する。たとえば、ライセンス406は、オーソリティ408によって発行されたものであり、メモリモジュール404内に記憶される。次いでステップ504では、ディレクトリ402がライセンスの識別メッセージをオーソリティに定期的に送信する。ディレクトリは、毎時間、毎日、毎週、またはどんな他の間隔で識別情報を送信するようにも構成する。本発明の一実施形態では、この間隔が、ライセンスを発行したオーソリティによって決定される。たとえば、オーソリティは、より敏感なライセンスについてより頻繁に更新を得たいと望む可能性がある。識別メッセージは、ライセンス識別番号、たとえばライセンス406について「156DVX22」を含むことができる。オーソリティは、ライセンス識別番号を使用して、ライセンスが取り消されたのか、交換されたのか、それとも修正されたのか判断する。一代替実施形態では、1つまたは複数のオーソリティが、最初に識別メッセージを受信することなく状態メッセージをディレクトリ402に定期的に送信する。たとえば、オーソリティは、ライセンスの状態が変化したときディレクトリに状態メッセージを送信することができる。エンティティが切断されている、またはオフラインになっているときには、ポーリングおよび同期を使用する。
【００３１】
ステップ506では、ディレクトリがオーソリティから、ライセンスの状態を示す少なくとも1つの状態メッセージを受け取る。状態メッセージは、ライセンスが依然として有効であること、取り消されていること、修正されていること、またはいくつかの他の状態を示すことができる。ステップ508では、状態メッセージがライセンスを修正するための命令を含むかどうか判断する。状態メッセージが修正命令を含む場合は、ステップ510でライセンスが修正される。ライセンスは、その範囲または持続期間を拡張または制限し、あるいはアサーションまたは条件を修正することによって修正する。次いでステップ512では、ライセンスがそのライセンスを削除するための命令を含むかどうか判断する。ライセンスは、発行オーソリティによって取り消されているとき削除する。そのライセンスを削除すべきであることを状態メッセージが示す場合には、ステップ514でライセンスが削除される。
【００３２】
ディレクトリ402は、ステップ516でライセンスの要求をライセンス所有者から受け取ることができる。ライセンス所有者は、たとえばそのライセンスをライセンス所有者が使用したいと望むときライセンスを要求する。発行オーソリティがライセンスを取り消していないとき、ディレクトリ402は、ステップ518でそのライセンスをライセンス所有者に送信する。
【００３３】
図3に戻ると、インテグリティ（完全性）コンポーネント306hは、メッセージの一部分に(デジタルで)署名し、セキュリティポリシーに従って、受信されたメッセージのインテグリティおよび署名を確認するための機能を提供する。秘匿性コンポーネント306iは、メッセージの一部分を暗号化し、解読するためのメカニズムを提供する。インテグリティコンポーネント306hおよび秘匿性コンポーネント306iを実施するために多数のメカニズムを使用することができること、およびいくつかの実施形態では、セキュリティポリシーが、使用可能なオプションから選択をすることが当業者には理解されよう。
【００３４】
基礎となるプロトコルおよびトランスポートを抽象化する利点の1つは、抽象化により他のシステムとの共同利用が容易になることである。図6は、仮想分散セキュリティシステム604を使用してアプリケーション602がどのように既存のセキュリティコンポーネント606と通信することができるかを示す。仮想分散セキュリティシステム602はセキュリティポリシー608内に含まれる情報に基づいて最も適切なプロトコル610およびトランスポート612を選択することができるため、相互利用が可能である。本発明の一実施形態では、プロトコル610は構成可能なプロトコルとすることができる。仮想分散セキュリティシステム604は、アプリケーション602が使用できるアプリケーションプログラミングインターフェース(API)で1組のサービスとして構築する。APIは、アプリケーション602と仮想分散セキュリティシステム604が様々な異なるメカニズム、たとえば、それだけには限らないがRPC、SOAP、または共用メモリを介して互いに通信することを可能にする。
【００３５】
図7は、許可処理に使用することができるセキュリティポリシー700の要素を示す。ポリシー700は、各サービス704に関連付けられたセキュリティ権702と、アイデンティティへの権利のマッピング706とを定義する。そのようなマッピングは、それだけには限らないが名前、オーソリティ、信任状タイプ、関連するグループ、または関連する役割を含む多数の基準に基づくことが可能であろう。ポリシー700はまた、サービス704が受け取る異なるメッセージ704a-704cと、メッセージ704a-704cのそれぞれの要件708とを定義することができる。たとえば、1つまたは複数の信任状、インテグリティ、秘匿性、権利の要件は、メッセージによって変わる可能性がある。すなわち、メッセージに署名し、またはメッセージを暗号化することが必要とされる可能性があり、また使用するためにメッセージが、サポートされる/必要とされるアルゴリズムを示す可能性がある。ポリシー700は、アドミッションコンポーネント710からXMLライセンスが必要とされる一例を示す。さらに、どのアプリケーションプロトコル要素に署名しなければならないかを、またメッセージに必要なアプリケーションプロトコル要素を要件が指定する。
【００３６】
セキュリティポリシーを作成するために使用されるポリシー言語は、セキュリティプリミティブを使用してコンポーネントの機能を定義することができる。セキュリティプリミティブは、従来のプログラミング要素と組み合わせることができる。セキュリティプリミティブは様々な形態をとることができることが当業者には理解されよう。一実施形態では、プリミティブを、パラメータの使用によって制御される「ライセンスを作成」または「ライセンスの記憶を管理」のような上位の構成体とすることができよう。たとえば、図8に示す、アドミッションコンポーネント804のためのポリシー802は、「ライセンスLによって署名された鍵Yを使用して名前NについてタイプXのライセンスを作成」を表すことができよう。他の実施形態では、プリミティブを非常に低位の構成体、たとえば「タイプXのためのテンプレートをフェッチし、名前をNで置き換え、データフィールドを10/24/2001にセットし、オーソリティフィールドをZにセットし、鍵フィールドをYにセットし、アルゴリズムYを使用してライセンスLで名前、日付、オーソリティ、鍵のフィールド群に署名する」とすることができよう。当然ながら、本発明の他の実施形態は、様々なレベルの構成体を組み合わせることができる。
【００３７】
セキュリティポリシー802などのセキュリティポリシーは、コードを記述することなく分散セキュリティシステムの定義を可能にする。様々な利点の中でも、コードの記述および再記述を必要としないセキュリティシステムは、カスタムコンポーネントを挿入して特定のステップを増やし、または戻すことを可能にする。そのようなコンポーネントは、それだけには限らないが、本来のプロセッサコード、Java（登録商標）ビーンズもしくは他のJava（登録商標）言語デリバティブ、またはMicrosoft CLRモジュールによって提供することができよう。
【００３８】
本発明の一態様では、各セキュリティモジュールについて独立して説明することができ、次いで、セキュリティポリシーが、モジュールを組み合わせる方法、およびモジュールを展開する方法を示すことができる。そのような情報は、ポリシーの一部、または独立した展開メカニズムの一部とすることができる。モジュールを説明し、組み合わせて、展開する際に柔軟性を実現することは、分散セキュリティシステムが分割、複製、およびファーミングをサポートすることを可能にする。たとえば図9では、ポリシー902は、サービスコンポーネント904a-904gを別個のパーティション906a-906cに分割する方法を指定することができよう。セキュリティ関連のサービスに加えて、図9に示す教示は、非セキュリティ関連のサービスに適用できることが当業者には理解されよう。
【００３９】
同様に、図10に示すポリシー1000などのポリシーは、どのパーティション1002a-1002cを分散コンピューティングシステム内のシステム1004a-1004fに展開するかをさらに指定することができよう。システム1004a-1004fは、アプリケーション、コンピューティングデバイス、マルチプロセッサシステムの別個のプロセッサ、または他のハードウェアもしくはソフトウェアで実施することができる。図10に示すように、単一のパーティションが分散コンピューティングシステムの複数のシステム上に存在する。
【００４０】
分散セキュリティシステムは、暗号オブジェクトおよびオペレーションを抽象化して、基礎となる暗号技術からシステムを独立させることができる。ライセンスについては上述しており、他の当事者に与えてそれ自体を識別する信任状とすることができる。ライセンスの例は、X.509証明書およびKerberosチケットを含む。「テスタメント(testament)」は、ライセンスまたはライセンス内の鍵を所有していることを証明するために当事者が使用するプルーフとする。たとえば、X.509証明書は公開鍵を含み、対応するテスタメントは、関連付けられた秘密鍵とすることができる。同様に、Kerberosチケットは暗号化された対称鍵を含み、テスタメントは対称鍵そのものとすることができる。
【００４１】
セキュリティポリシーは、ライセンスやテスタメントなど要素を使用して、署名、確認、暗号化、解読などのオペレーションを使用してメッセージを安全にするために単一のプログラミングモデルを作成する。メッセージに署名するために、ライセンス所有者は、たとえばメッセージの要約をそのテスタメントで暗号化する。ライセンスの所持者は、署名を確認する。同様に、メッセージを暗号化するために、エンティティは、受取者のライセンス内の鍵を使用する。受取者は、受取者に属するテスタメントを使用してメッセージを解読する。公開鍵を使用する実施形態では、生成された対称鍵でメッセージを暗号化し、その対称鍵は、ライセンスからの公開鍵で暗号化する。
【００４２】
図11は、エンティティ1102が他のエンティティ1106にメッセージ1104を送信する一例を示す。エンティティ1102は、ライセンス1108とテスタメント1110を所有する。同様に、エンティティ1106は、ライセンス1112とテスタメント1114を所有する。エンティティ1102および1106は、メッセージ1104を安全にしたいと望む。エンティティ1102は、メッセージ1104の要約を計算し、次いでその要約をそのテスタメント1110で暗号化することによって、メッセージ1104上で署名オペレーション1116を開始する。次いで、エンティティ1102は、暗号化オペレーション1124を実行する。エンティティ1102は鍵1118を作成し、鍵1118でメッセージ1104を暗号化する。次いで、鍵1118を、エンティティ1106に属するライセンス1112を使用して暗号化する。鍵1118の暗号化は、ライセンス1112内にある鍵で鍵1118を暗号化することを必要とする可能性がある。暗号化されたメッセージ、暗号化された鍵、および署名は、エンティティ1106に送信される。本発明の他の実施形態では、鍵ではなく信任状を使用する。
【００４３】
エンティティ1106は、解読オペレーション1120を実行して、そのテスタメント1114を使用して鍵1118を解読する。エンティティ1106は、鍵1118を使用してメッセージ1104を解読する。次いで、エンティティ1106は、確認オペレーション1122を実行する。エンティティ1106は、メッセージ1104の要約を計算し、計算された要約を、ライセンス1108を使用してエンティティ1102によって送信された要約と比較する。
【００４４】
本発明の利点の1つは、ライセンス1108および1112が公開鍵、対称鍵、要約鍵、または他の形態の信任状を含むかどうかに関わりなく、エンティティ1102および1106のために動作するアプリケーションを同じとすることができることである。暗号アルゴリズムの細部は、アプリケーションではなくセキュリティシステムによって処理する。セキュリティシステムで暗号アルゴリズムを処理することは、異種の信任状が使用されるとき特に望ましい。つまり、ライセンス1108および1112は、さまざまな暗号技法を使用する。従来のシステムでは、アプリケーションはこれを意識し、多様な暗号技法の存在のために特に符号化される。本発明は暗号技法を抽象化し、アプリケーションが使用されている暗号技術について意識していることを必要としない。結果として、セキュリティポリシーを変更することによって、暗号技法をいつでも変更することができる。
【００４５】
開示されたセキュリティモデルを使用して、より豊かな環境を作成することができる。たとえば、図3について述べている間、アドミッションコンポーネント306bが公開鍵信任状を受け入れて、対称鍵ライセンスを生成することができることを示した。アドミッションコンポーネント306b内、または任意の他のサービス内の論理は、使用されるライセンスのタイプに関わりなく同じとすることができる。そのようなサービスの場合、単に対称鍵ライセンスを使用することによってサービスのスケーラビリティを高めることができる。ライセンスを受け取って、次いで他のライセンスを発行するオペレーションは、再発行オペレーションとして定義される。というのは、コンポーネント306bがそれ自体のフォーマットを使用して送信者のライセンスを「再発行」するためである。いくつかの場合には、コンポーネント306bまたは同様のコンポーネントが、同じ鍵と共にライセンスを返すことができよう。たとえば、コンポーネント306cがXMLライセンスだけ受け入れるため、コンポーネント306bがX.509証明書を受け入れて、一方、同じ公開鍵と共にXMLライセンスを返すことができる。
【００４６】
再発行は、代行オペレーションの基礎を形成する。当事者Aは、他の当事者B特定の代行を行うことができる。そのために、Aは代行(ならびに条件)を指定するBのライセンスを再発行し、発行オーソリティとしてライセンスに署名する。この新しいライセンスを使用するために、Bは、ライセンス、所有者のプルーフ(たとえば署名)、およびAのライセンス(受取者がそれを有していない場合)を提示ことが必要とされる可能性がある。次いで、受取者は、Bがライセンスを所有し、Aがそれを発行したこと、およびライセンス内の代行物がAのライセンスに正しく対応していることを確認する。暗号技術の抽象化、および特有のライセンスフォーマットは、任意の特定の時間で、暗号技術またはライセンスフォーマットから独立して一貫したプログラミングモデルをアプリケーションが使用することを可能にする。
【００４７】
ライセンスおよび鍵抽象化の他の使用法は、サービススケーラビリティである。既存のシステムは、一般に通信のために特別な鍵を作成するとき制限される。というのは、クライアントとサービスだけが鍵を分かっており、サービスの状態がスケーラビリティを制限するためである。既存の手法は、サービスがサーバファームの一部として実施されるとき制限がある。本発明の態様は、サービスが送信者のライセンスを再発行することを可能にし、セッション鍵を提供する一方、ファーム全体にわたって共用される秘密の鍵でそれを暗号化し、おそらく共用鍵サービス306dを使用する。したがって、メッセージを受け取るファーム内のサーバは、セッション鍵を抽象化することができ、ファーム上で状態を維持することが必要とされないため、メッセージを理解し、処理することができる。同様に、既存のシステムでは、クライアントがファームの一部であるとき問題が発生する。上述した技法はまた、クライアントファームメンバがメッセージをサービスできるように、クライアントが使用して、その回答で使用するためにサービスにライセンスを提供することができる。
【００４８】
セキュリティ信任状は、シンプルオブジェクトアクセスプロトコルSOAPを使用してコンポーネントとサービスの間で渡すことができる。本発明の一実施形態では、ライセンスなどの信任状は、SOAP「信任状」ヘッダに含むことにより、SOAPメッセージと共に渡すことができる。このヘッダは、どんなタイプの信任状を渡すことも可能にすることができる。メッセージインテグリティは、SOAP「インテグリティ」ヘッダ内にデジタル署名または他のインテグリティメカニズムを含むことにより、SOAPメッセージに関連付けることができる。たとえば、このヘッダは、W3C標準内に定義されるように、XML署名(Signature)を含むことができる。メッセージ秘匿性は、XMLタグ暗号化技術をSOAPメッセージと関連付けることによって達成することができる。そのような方式の1つが、W3Cによって定義されているように、XML暗号化標準(Encryption standard)である。メッセージ添付物の秘匿性は、SOAP「秘匿性」ヘッダ内に暗号化された添付物のマニフェスト(および暗号メタデータ)を含むことによって達成することができる。
【図面の簡単な説明】
【図１】例示的な分散コンピューティングシステム動作環境の図である。
【図２】本発明の一実施形態による仮想分散セキュリティシステムのアーキテクチャの図である。
【図３】本発明の一実施形態によるセキュリティポリシーによって定義することができるセキュリティコンポーネントの1組の例の図である。
【図４】本発明の一実施形態によるライセンスディレクトリの図である。
【図５】本発明の一実施形態に従って、ディレクトリによって使用され、ライセンスの状態を確認することができる方法の図である。
【図６】本発明の一実施形態に従って、仮想分散セキュリティシステムを使用するアプリケーションがどのように既存のセキュリティコンポーネントと通信することができるかを示す図である。
【図７】本発明の一実施形態に従って、許可処理のために使用することができるセキュリティポリシーの要素の図である。
【図８】本発明の一実施形態によるセキュリティポリシーの図である。
【図９】本発明の一実施形態に従って、サービスコンポーネントを分割する方法を指定するセキュリティポリシーの図である。
【図１０】本発明の一実施形態に従って、分割されたサービスコンポーネントをシステムにどのように展開することができるかを指定するセキュリティポリシーの図である。
【図１１】本発明の一実施形態による安全なメッセージを送信する方法の図である。
【符号の説明】
100  分散コンピューティングシステム
102  通信ネットワーク
104  コンピュータデバイス
106  コンピュータデバイス
108  コンピュータデバイス
202a  アプリケーション
202b  アプリケーション
202c  アプリケーション
204  仮想分散セキュリティシステム
206a  プロトコル
206b  プロトコル
206c  プロトコル
208a  トランスポート
208b  トランスポート
208c  トランスポート
210a  セキュリティポリシー
210b  セキュリティポリシー
210c  セキュリティポリシー
302  アプリケーション
304  サービス
306a  アイデンティティコンポーネント
306b  アドミッションコンポーネント
306c  許可コンポーネント
306d  共用鍵コンポーネント
306e  取消しコンポーネント
306f  トラストコンポーネント
306g  記憶コンポーネント
306h  インテグリティコンポーネント
306i  秘匿性コンポーネント
402  ディレクトリ
404  メモリモジュール
406  ライセンス
408  オーソリティ
410  ライセンス
412  オーソリティ
414  ライセンス
416  オーソリティ
418  プロセッサ
420  確認モジュール
602  アプリケーション
604  仮想分散セキュリティシステム
606  既存のセキュリティコンポーネント
608  セキュリティポリシー
610  プロトコル
612  トランスポート
700  ポリシー
702  セキュリティ権
704  サービス
704a  メッセージ1
704b  メッセージ2
704c  メッセージ3
706  マッピング
708  要件
710  アドミッションコンポーネント
802  セキュリティポリシー
804  アドミッションコンポーネント
902  ポリシー
904a  アイデンティティコンポーネント
904b  アドミッションコンポーネント
904c  許可コンポーネント
904d  共用鍵コンポーネント
904e  取消しコンポーネント
904f  トラストコンポーネント
904g  記憶コンポーネント
906a  パーティション1
906b  パーティション2
906c  パーティション3
1000  ポリシー
1002a  パーティション1
1002b  パーティション2
1002c  パーティション3
1004a  システム1
1004b  システム2
1004c  システム3
1004d  システム4
1004e  システム5
1004f  システム6
1102  エンティティ
1104  メッセージ
1106  エンティティ
1108  ライセンス
1110  テスタメント
1112  ライセンス
1114  テスタメント
1116  署名
1118  鍵
1120  解読
1122  確認
1124  暗号化
【図１】
0004445698.tif 000002
【図２】
0004445698.tif 000003
【図３】
0004445698.tif 000004
【図４】
0004445698.tif 000005
【図５】
0004445698.tif 000006
【図６】
0004445698.tif 000007
【図７】
0004445698.tif 000008
【図８】
0004445698.tif 000009
【図９】
0004445698.tif 000010
【図１０】
0004445698.tif 000011
【図１１】
0004445698.tif 000012