(57)【要約】【課題】暗号化キーを効率的に管理する。【解決手段】暗号化キーを管理し、生成するためのシステム、方法及び媒体を開示する。一つの実施形態において、プロセッサは、暗号化キー処理コンピュータ・コードを実行し、アプリケーション・プログラムからキー要求を受信する。プロセッサは、要求しているアプリケーション・プログラムが、要求されるキーの受領を認可されたマシン対象範囲内にあるかどうかを判定する。認可されている場合、プロセッサは、キー・マップを生成し、該キー・マップをアプリケーション・プログラムに送信して、アプリケーション・プログラムがキー・マップの中の一つ以上のキーにアクセスできるようにする。キーは、設定可能なスケジュールに従って自動的に更新される。【選択図】図１
2008109662.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上のキーを要求するアプリケーション・プログラムが前記要求された一つ以上のキーの受領を認可されているかどうか判定し、前記要求されたキーのマップを生成するキー・マネージャと、
事前設定可能な時間に少なくとも一つのキー生成イベントをスケジュールするキー・スケジューラと、
スケジュールされたキー生成イベントにおいて前記少なくとも一つのキーを生成するキー・ゼネレータであって、前記生成されたキーは、キー・セット及びキー・セット群と関連付けられ、キー・セットは一つ以上のキーを含み、キー・セット群は一つ以上のキー・セットを含む、キー・ゼネレータと、
前記少なくとも一つの生成されたキーを該キーの属性とともに格納し、各キーが該キーの属性のセットと関連付けられるようにするキー・ストアとを
含む暗号化キー・マネジメント・システム。
【請求項２】
前記キー・マネージャは、前記アプリケーション・プログラムが、前記キー・セットに対する所定対象範囲内にあるかどうかを判定する、請求項１に記載のシステム。
【請求項３】
前記キー・マネージャは、前記要求されたキーの受領を認可してもらうために実行中前記アプリケーション・プログラムが常駐していなければならないノード又はサーバを特定した対象範囲を設定する、請求項２に記載のシステム。
【請求項４】
前記キー・マネージャは、キー・セット群に関連する対象範囲を、前記キー・セット群内のキー・セットに関連する最も狭い対象範囲と少なくとも同じ狭さに設定する、請求項２に記載のシステム。
【請求項５】
前記キー・ストアは、キー・セット又はキー・セット群の中の各キーのバージョン番号を含むキー属性を格納する、請求項１に記載のシステム。
【請求項６】
前記キー・マネージャは、一つ以上のキーを要求する前記アプリケーション・プログラムの所在場所が、前記要求されたキー・セット又はキー・セット群に対し特定された対象範囲内であるかどうかを判定する、請求項１に記載のシステム。
【請求項７】
前記キー・マネージャは、キー・セット又はキー・セット群の中のすべてのキーを読み出すメソッドを実行する、請求項１に記載のシステム。
【請求項８】
前記キー・マネージャは、キー・セット又はキー・セット群の中の最新のキーだけを読み出すメソッドを実行する、請求項１に記載のシステム。
【請求項９】
キー・セット又はキー・セット群に関連する少なくとも一つのキーの提供を求めるアプリケーション・プログラムからの要求を受信するステップであって、キー・セットは少なくとも一つのキーを含み、キー・セット群は少なくとも一つのキー・セットを含む、受信ステップと、
前記アプリケーション・プログラムが前記関連するキー・セット又はキー・セット群に対し特定された対象範囲内にあるかどうかを判定するステップと、
前記アプリケーション・プログラムが前記関連する対象範囲内にある場合には、前記キー・セット又はキー・セット群に関連する前記少なくとも一つのキーのマップを生成するステップと、
設定可能なスケジュールに従って、前記少なくとも一つのキーを生成し、前記キー・セット又はキー・セット群に含めるステップとを
含む、暗号化キーを管理する方法。
【請求項１０】
エイリアスをバージョン番号とともにキーに関連付けるステップであって、キー・セットの中のキーの最新バージョンは前記スケジュールに従って最後に生成された前記キーの前記バージョンである、関連付けステップをさらに含む、請求項９に記載の方法。
【請求項１１】
同じキーのすべてのバージョンは同じエイリアス接頭辞を有する、請求項１０に記載の方法。
【請求項１２】
キー・セット群に関連するキーの提供を求めるアプリケーション・プログラムからの要求は、キー・セットの中の最新のキーだけのマップを生成する特定の要求とすることができる、請求項９に記載の方法。
【請求項１３】
前記対象範囲として、要求されたキーの受領を認可してもらうように、前記キーの要求時に前記アプリケーション・プログラムが常駐していなければならないノード又はサーバを特定することができる、請求項９に記載の方法。
【請求項１４】
キー・セット群に関連する対象範囲は、前記キー・セット群内のキー・セットに関連する最も狭い対象範囲と少なくとも同じ狭さである、請求項９に記載の方法。
【請求項１５】
請求項９乃至１４のいずれか１項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・システム内の暗号化の分野に関する。さらに具体的には、本発明はコンピュータ・システム内での暗号化キーの管理及び生成に関する。
【背景技術】
【０００２】
さまざまな多くの種類のコンピューティング・システムが、世界中で広く使われている。これらのコンピューティング・システムには、パーソナル・コンピュータ、サーバ、メインフレーム、及びさまざまな単独型及び内蔵型のコンピューティング・デバイスが含まれる。多くのＰＣネットワーク、メインフレーム、及びミニコンを通して普及するアプリケーション及び情報と共に、クライアント−サーバ型システムが広がり続けている。ネットワークによって接続された分散システムで、ユーザは、多くのアプリケーション・プログラム、データベース、ネットワーク・システム、オペレーティング・システム、及びメインフレーム・アプリケーションにアクセスすることができる。コンピュータは、個人及び企業に、ワード・プロセッシング、表計算、及び会計を含む多数のソフトウエア・アプリケーションを提供する。さらに、ネットワークを使い、ｅメール、ウエブサイト、インスタント・メッセージ、及びウエブ会議を介して、異なる場所にいる人々の間で高速な交信が可能である。
【０００３】
高性能、単一チップのマイクロプロセッサに対する一般的アーキテクチャは、高速実行のために多用される命令を小さく簡易化したセットにしていることが特徴である、縮小命令セット・コンピュータ（ＲＩＳＣ）アーキテクチャである。このようなＲＩＳＣアーキテクチャにおいては、複雑な命令が、非常に高速で複数ステップにて実行される簡単な命令の小さなセットを含んでいる。これらのステップは、特定の簡単な命令を実行するようになされた演算ユニット群で実施される。スーパースカラ・アーキテクチャでは、これらの演算ユニット群には、通常、並行して動作するロード／格納ユニット、整数算術／論理ユニット、浮動小数点算術／論理ユニット、及びグラフィカル論理ユニットが含まれる。プロセッサのアーキテクチャの中では、オペレーティング・システムが、プロセッサとプロセッサ周辺構成部品との動作を制御する。実行可能アプリケーション・プログラムは、コンピュータのハード・ドライブに格納される。コンピュータのプロセッサはユーザの入力に応じてアプリケーション・プログラムを実行する。
【０００４】
このように、最近のシステムでは、サーバを含め、複数のコンピュータがネットワークを通して一緒に結ばれている。各コンピュータは、特定の機能を実施するためのアプリケーション・プログラムを実行することができる。これらのアプリケーション・プログラムには、ワードプロセッシング、ｅメール、グラフィックス、文書閲覧及びマークアップ、表計算、データベース、音楽プレーヤ、インターネット・エキスプローラ、フォトショップ、ゲーム、アンチ・ウイルス、さらに、挙げられないほど数多くの他のアプリケーション・プログラムを含めることができる。多くのアプリケーション・プログラムでは、プログラム・データの暗号化又は解読あるいはその両方が行われる。例えば、ｅメール送信者は、ｅメールを受信者に送信する前にメールを暗号化することができる。暗号化されたメールの受信者は、送信者から受信した該暗号化メールの解読が必要となる。別のアプリケーションでは、送信者は、文書を送信する前にそれにデジタル署名をすることができる。デジタル署名の操作には暗号化が必要となる。さらに、暗号化によってデジタル署名を検証することができる。暗号化を用いるアプリケーションの他の事例は数多い。
【０００５】
暗号化又は解読あるいはその両方を実施するためには、アプリケーション・プログラムは、キーを持たねばならず、そのキーを使って暗号化／解読を行うための既知のアルゴリズムを実施しなければならない。こうして、アプリケーション・プログラムは、暗号化を必要とする機密的なデータを取り扱うことができる。例えば、アプリケーション・プログラムはファイルを暗号化することができる。暗号化は、キーを持たない者がファイルを読むのを防止する。さらに、ファイルの中のデータに署名することもできる。データに署名がされると、検知されずに該データを変更することはできない。
【０００６】
インターネットの出現とコンピュータ使用の広範囲な普及とともに、ますます多くの商取引が電子的に行われるようになっている。この「ｅコマース」を促進するため、コンピューティング・ネットワークは暗号化とデジタル署名とを用いている。暗号化により、ユーザはネットワークを介して交信するメッセージを秘密にすることができる。解読により、暗号化した相手からの元のメッセージを再生することができる。ユーザは、デジタル署名により文書に電子的に署名することができる。デジタル署名を形成するには、公開キー暗号法システムによる暗号化が必要である。該システムは、２つの異なった、だが数学的に関係のある「キー」を使うアルゴリズムを用いており、一つのキーはデジタル署名を生成するためのものであり他方はデジタル署名を検証するためのものである。このような２つのキーを用いるコンピュータ装置及びソフトウエアは、しばしば、集合的に「非対称暗号システム」と呼ばれている。
【０００７】
デジタル署名のための非対称暗号システムの相補キーは、プライベート・キー及び公開キーと呼ばれる。署名者は、プライベート・キーを使ってデジタル署名を生成する。理想的には、署名者だけが、自分のプライベート・キーにアクセスできる。公開キーは、通常、極めて広範囲に知らされるものである。署名を確認するために、当事者は公開キーを使って該署名を検証する。これらペアのキーは数学的に関連しているが、公開キーから計算的にプライベート・キーを導き出すのは実行不可能である。しかして、多くの人々が、所与の署名者の公開キーを知ることができ、それを使って署名者の署名を検証することはできるが、これらの人々は、署名者のプライベート・キーにアクセスして該署名者の署名を偽造することはできない。これは「不可逆性」の原理による。
【０００８】
デジタル署名を生成し検証するための基本的プロセスは、「ハッシュ関数」である。ハッシュ関数は、「ハッシュ結果」の形でデジタル表現又は「フィンガープリント」を生成するアルゴリズムである。一般的に、ハッシュ結果はメッセージよりもはるかに小さいが、それにもかかわらず、メッセージに対し実質的に唯一性を持つ。署名者のプライベート・キーを使い、このハッシュ結果を暗号化してデジタル署名が生成される。同じハッシュ関数が使われている場合、メッセージに対しどのような変更がされても、必ず異なるハッシュ結果を生成する。確かなハッシュ関数に対しては、ハッシュ値から元のメッセージを計算的に導き出すのは実行不可能である。従って、ハッシュ関数によれば、デジタル署名を生成するソフトウエアを、より少ない想定内のデータ量で操作させることができ、さらに元のメッセージコンテントに対する堅固な証拠となる相関関係を提供することができる。
【０００９】
文書又は他の任意の情報項目に署名するため、署名者は、まず、署名対象とするものの境界を正確に区切る。証明対象の区切られた情報を「メッセージ」という。次いで、署名者のソフトウエアの中のハッシュ関数は、（あらゆる実用的用途において）メッセージに対し唯一のハッシュ結果を計算する。署名者のソフトウエアは、次いでユーザのプライベート・キーを使って、ハッシュ結果をデジタル署名に暗号化する。得られたデジタル署名は、かくして該メッセージ及び署名を作成するため使われたプライベート・キーの双方に対し固有のものとなる。
【００１０】
署名者が署名されたメッセージを送信する際には、署名のないメッセージも送信される。受信者は、該ユーザの公開キーを使って暗号ハッシュを解読し署名を検証する。また、受信者は、未署名のメッセージをハッシュ化する。次いで２つのハッシュ結果が対比される。２つのハッシュ結果が同一の場合にだけ署名は検証されたことになる。これらハッシュ結果が同一であれば、受信者が受信したメッセージは送信者の署名したものということになる。しかして、送信者は、受信者により受信され検証されたメッセージに自分は署名していないと否認することはできない。デジタル署名の検証者は、署名が特定の人によってなされたものであることの保証を得なければならない。この保証は、証明書の中で特定された公開キーを使って検証できる署名が該証明書で識別される当事者のものであると証明する証明書を発行してくれる信頼できる第三者から得られる。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
かくのごとく、多くのアプリケーション・プログラムは、文書を暗号化し署名するためのキーを持っていなければならない。このようなキーを管理し生成する方法が必要とされる。
【課題を解決するための手段】
【００１２】
本発明は、暗号化のためのキーを管理し生成する方法及び媒体を提供する。一つの実施形態において、暗号化キー・マネジメント・システムは、キー・マネージャを含む。キー・マネージャは、一つ以上のキーを要求するアプリケーション・プログラムが、要求された一つ以上のキーの受領を認可されているのかどうかを判定し、されていれば、キー・マップを生成しアプリケーション・プログラムに送信する。該システムは、事前設定可能な時間にキー生成イベントをスケジュールするキー・スケジューラを含む。キー・ゼネレータは、スケジュールされたキー生成イベントにおいてキーを生成する。生成されたキーは、キー・セット及びキー・セット群と関連付けられる。キー・セットは一つ以上のキーを含み、キー・セット群は一つ以上のキー・セットを含む。キー・ストアは、各キーが該キーの一組の属性に関連付けられるように、生成されたキーを該キーの属性に従って格納する。キーの属性には、エイリアス、バージョン、及びキーが属するキー・セット名を含めることができる。
【００１３】
実施形態には、キーを管理し生成する方法が含まれる。該方法は、キー・セット又はキー・セット群に関連するキーの提供を求めるアプリケーション・プログラムからの要求を受信するステップを含む。キー・セットは、少なくとも一つのキーを含み、キー・セット群は少なくとも一つのキー・セットを含む。該方法は、アプリケーション・プログラムが、関連するキー・セット又はキー・セット群に対し特定された対象範囲内にあるかどうかを判定するステップを含む。アプリケーション・プログラムが所定対象範囲内にある場合、該キー・セット又はキー・セット群に関連するキーのマップが生成される。また、該方法は、設定可能なスケジュールに従ってキーを生成し、該キーをキー・セット又はキー・セット群に含めるステップを含む。
【００１４】
本発明の別の実施形態は、データ処理システムで実行されると、該システムに暗号化キーを管理し生成するための一連のオペレーションを実施させる機能を持つ命令を含むコンピュータ・プログラムを提供する。この一連のオペレーションは、キー・セット又はキー・セット群の中の一つ以上のキーの提供を求めるアプリケーション・プログラムからの要求を受信する作業を一般に含む。該オペレーションは、アプリケーション・プログラムが、当該キー・セット又はキー・セット群の所定対象範囲内にあるかどうかを判定する作業をさらに含む。一連のオペレーションには、アプリケーション・プログラムが所定対象範囲内にある場合、要求されたキーのマップを生成する作業が含まれる。所定対象範囲は、プロセス（Ｊａｖａ（登録商標）プロセス）、ノード（特定のマシンのすべてのＪａｖａ（登録商標）プロセス）、ノード・グループ（２以上のノード）、クラスタ（特定のアプリケーションに関連するＪａｖａ（登録商標）プロセスの分類）、又はセル（全環境を含むノードの群）のような各種の組み分けとして定義される。所定対象範囲をこれらのいずれかとすることができる。所定対象範囲に基づき、キー・セット又はキー・セット群を選択するための識別がされる。また、該オペレーションは、所定のスケジュールに従って新しいキー又はキー・セットを生成する作業を含む。これにより、マップには、古いキーはもとより、最近に生成されたキーが含まれる。
【発明を実施するための最良の形態】
【００１５】
以降の詳細説明を読み、添付の図面を参照することによって、本発明の利点は明確となろう。図中の同じ参照記号は同様な要素を示す。
【００１６】
以下は、添付の図面に描かれた本発明の例示的な実施形態の詳細な説明である。これら例示的な実施形態は、本発明が明確に伝わる程度に詳細である。但し、提示する詳細さの程度は、実施形態の予想される変形を制限するものでなく、反対に、本発明は、添付された特許請求内容に規定された本発明の精神及び範囲内に含まれる変形、均等物、及び代替を網羅するよう意図されている。以下の詳細な説明は、当業者には明らかなさまざまな実施形態を提供しようとするものである。
【００１７】
暗号化キーを管理し生成するためのシステム、方法、及び媒体を開示する。一つの実施形態において、プロセッサは、暗号化キー処理コードを実行して、アプリケーション・プログラムからのキー要求を受信する。プロセッサは、要求しているアプリケーション・プログラムが、要求されたキーの受領を認可された対象マシン範囲内にあるノード又はサーバで実行されているかどうかを判定する。範囲内である場合、プロセッサはキー・マップを生成して該キー・マップをアプリケーション・プログラムに送信し、アプリケーション・プログラムがキー・マップ中の一つ以上のキーを得られるようにする。これらのキーは、設定可能なスケジュールに従って自動的に更新される。しかして、アプリケーション・プログラムは、最新のキー又は従前のキーあるいはその両方を受領することができる。キーを必ず十分に新しいものにしておき、暴力的な攻撃で解読できないようにするためにスケジュールに従ってキーを生成すればよい。このようにしておけば、システムはより定期的にキーを変更することもできるようになり、これにより、キー長を小さくし、高いレベルのセキュリティを維持しながら、暗号化の効率を向上することができる。
【００１８】
図１は、本発明の一つの実施形態に従って実装されたコンピュータ又はサーバのようなデジタル・システム１１６（本明細書では、マシンともいう）を示す。デジタル・システム１１６は、ＢＩＯＳ（Basis Input/Output System（基本入力／出力システム））コード１０４及びオペレーティング・システム（ＯＳ：Operating System）コード１０６に従って動作可能なプロセッサ１００を含む。ＢＩＯＳ及びＯＳコードは記憶装置１０８に格納される。ＢＩＯＳコードは通常読取り専用メモリ（ＲＯＭ）に格納され、ＯＳコードは通常デジタル・システム１１６のハード・ドライブに格納される。デジタル・システム１１６は、物理的にプロセッサ１００に近接配置されたレベル２（Ｌ２）キャッシュ１０２を含む。また、記憶装置１０８はプロセッサ１００が実行する他のプログラムを格納し、データ１０９も格納する。
【００１９】
一つの実施形態において、後記するように、記憶装置１０８は、暗号化キーを管理し生成するためのコンピュータ・コード１０７を格納している。このコンピュータ・コードは、プロセッサに、各種の暗号化キー管理及びキー生成機能を実施するための命令を実行させる。例えば、プロセッサ１００は、キー・セット又はキー・セット群の中に一組のキーを生成するコードを実行する。また、プロセッサ１００は、キーをその各種の属性に関連付けるコードを実行する。プロセッサ１００は、同様にキーを求めるアプリケーションが所定対象範囲内にあるかどうかを判定するコードを実行する。また、プロセッサ１００は、キー生成イベントの時間を判断する。
【００２０】
プロセッサ１００は、オンチップのレベル１（Ｌ１）キャッシュ１９０、命令フェッチャ１３０、制御回路１６０、及び演算ユニット群１５０を含む。レベル１キャッシュ１９０は、実行時間がせまった命令を受信し格納する。命令フェッチャ１３０は記憶装置から命令を取り出す。演算ユニット群１５０は、命令が指示するオペレーションを実行する。一つの実施形態において、これらの命令は、インタフェース・モジュールに指定されたキー・セット又はキー・セット群を識別する命令を含む。該命令は、プロセッサ１００に、キーを要求しているアプリケーション・プログラムが、要求されたキーの受領を認可されているかどうかを判定させる。該命令は、さらに、プロセッサ１００に、キー格納場所から要求されるキー群を読み出して、これらキーのマップを生成させる。
【００２１】
演算ユニット群１５０には、ロード／格納ユニット、整数算術／論理ユニット、浮動小数点算術／論理ユニット、及びグラフィカル論理ユニットを含めることができる。各演算ユニットは、命令フェッチャ１３０により取出された命令の実行ステップを実施するためのステージ群を含む。スーパースカラ・アーキテクチャでは、異なる演算ユニットが並行して動作する。しかして、演算ユニット群１５０は、並行して動作し、暗号化キー管理プロセスを実施するための命令を実行する一組の異なる種類のユニットを含む。
【００２２】
制御回路１６０は、命令フェッチャ１３０及び演算ユニット群１５０を制御する。さらに、制御回路１６０は、演算ユニット群１５０から、制御判断に関連する情報を受信する。例えば、制御回路１６０は、実行パイプラインでのデータ・キャッシュ・ミスが生じた場合、その通知を受け機能麻痺を処理する。
【００２３】
さらに、通常、デジタル・システム１１６は、トラステッド・プラットフォーム・モジュール、メモリ・コントローラ、ランダム・アクセス・メモリ（ＲＡＭ）、周辺ドライバ、システム・モニタ、キーボード、カラー映像モニタ、一つ以上のフレキシブル・ディスケット・ドライブ、固定ディスク・ハード・ドライブのような一つ以上のリムーバブル非揮発性媒体ドライブ、ＣＤ及びＤＶＤドライブ、マウスのようなポインティング・デバイス、及びネットワーク・インタフェース・アダプタなどの、図示されていない他の構成要素及びサブシステムを含む。デジタル・システム１１６には、パーソナル・コンピュータ、ワークステーション、サーバ、メインフレーム・コンピュータ、ノート又はラップトップ・コンピュータ、デスクトップ・コンピュータ、又は類似機器を含めることができる。また、プロセッサ１００を、入力／出力デバイス１１０を介してサーバ１１２と連通させることができる。サーバ１１２は、システム１１６を他のコンピュータ及びサーバ１１４に接続することができる。しかして、デジタル・システム１１６は、インターネット又はローカル・イントラネットあるいはその両方のようなコンピュータのネットワークに入れることができる。さらに、サーバ１１２は、テープ・ドライブ記憶装置、ハード・ディスク・アレイ、ＲＡＭ、ＲＯＭなどを含む他の記憶装置にアクセスすることができる。
【００２４】
しかして、デジタル・システム１１６の動作の一つのモードにおいて、Ｌ２キャッシュは、プロセッサ１００のプロセッサ・パイプラインで処理される予定のデータと命令とを記憶装置１０８から受信する。Ｌ２キャッシュ１０２は、高速処理を実現するために、プロセッサ１００に物理的に近接して配置された高速メモリである。Ｌ２キャッシュは、複数の命令スレッドに対する命令群を記憶装置１０８から受信する。このような命令群には、ロード及び格納命令、分岐命令、算術論理命令、浮動小数点命令などを含めることができる。Ｌ１キャッシュ１９０は、プロセッサ内部に配置され、望ましくはＬ２キャッシュ１０２から受信したデータ及び命令を包含する。理想的には、プログラム命令を実行する時間が近付くと、命令は存在する場合そのデータとともに、まずＬ２キャッシュに、次いで実行時間が差し迫るとＬ１キャッシュに渡される。
【００２５】
演算ユニット群１５０は、Ｌ１キャッシュ１９０から受信した命令を実行する。演算ユニット群１５０の各々のユニットは、命令の特定のセットを実行するようになされている。命令群を異なった演算ユニットに送り、並行して実施させることができる。演算ユニット群１５０によって処理されたデータは、整数レジスタ・ファイル及び浮動小数点レジスタ・ファイル（図示せず）からアクセスし、これらに格納することができる。また、これらレジスタ・ファイルの格納データについては、オンボードのＬ１キャッシュ１９０あるいは外部のキャッシュ又はメモリから受信したり、これらに転送したりすることができる。プロセッサは、ロード命令を実行することによって、Ｌ１キャッシュのようなメモリからプロセッサのレジスタへデータをロードすることができる。プロセッサは、格納命令を実行することによって、レジスタからのデータをメモリ中に格納することができる。
【００２６】
デジタル・システム１１６は、そのオペレーティング・システム、ＢＩＯＳ、アプリケーション・プログラム実行のコード、及び暗号化キー処理コード、ならびにファイル及びデータを格納するための自分の記憶装置を持つことになる。コンピュータの記憶装置には、読取り専用メモリ（ＲＯＭ）、ＤＲＡＭ及びＳＲＡＭに搭載されたキャッシュ・メモリ、ハード・ディスク・ドライブ、ＣＤドライブ、及びＤＶＤドライブが含まれる。サーバも同様にそれ自体の記憶装置を有し、テープ・ドライブ及びハード・ディスク・アレイのような他の記憶装置へのアクセスを制御することができる。各コンピュータは、それ自体のアプリケーション・プログラムを格納し実行することができる。データベースなどの一部のアプリケーション・プログラムはサーバに配置される。これにより、各コンピュータは、サーバに格納された同じデータベースにアクセスすることができる。さらに、各コンピュータは、サーバを介して他の記憶装置にアクセスすることができる。
【００２７】
マシン１１６は、キーを管理し生成するためのコンピュータ・コード１０７を格納することができる。このコンピュータ・コードは、プロセッサ１００によって実行され、スケジュールに従って生成される暗号化キーを生成、規定し、該キーへの制限されたアクセスを提供する。図２は、キーを管理、生成、及び伝達するための実施形態のブロック図を示す。暗号化キーを管理し生成するための暗号化キー・プロセッサ２００が示されている。また、暗号化キー・プロセッサ２００と連通するインタフェース・モジュール２５０が示されている。該暗号化キー・プロセッサは、暗号化キーを管理、生成し、これらのキーを、要求しているインタフェース・モジュールに伝達するためのコンピュータ・コードを実行するプロセッサである。インタフェース・モジュールは、プロセッサに実行され、作動中のアプリケーション・プログラムとシステムの他の部分との間のインタフェースを提供するコンピュータ・コードである。オペレーションの過程において、インタフェース・モジュールを使っているアプリケーション・プログラムは、暗号化キー・プロセッサに対し、暗号化又はデジタル署名あるいはその両方を行うため、暗号化キーを要求することができる。
【００２８】
一つの実施形態において、暗号化キー処理ソフトウエアは、インタフェース・モジュール・ソフトウエアを実行するのと同じプロセッサによって実行される。暗号化キー・プロセッサは、バックグラウンドで動作している。別の実施形態では、暗号化キー処理ソフトウエアは一つのデジタル・システムのプロセッサに実行され、インタフェース・モジュール・ソフトウエアは異なったデジタル・システムのプロセッサに実行される。しかして、暗号化キー・プロセッサは、他の複数のコンピュータ及びサーバのためのキーを管理することができ、要求されたキーに対し、どのコンピュータ及びサーバが権利を有するかを判定することができる。
【００２９】
暗号化キー・プロセッサ２００は、キー・マネージャ２０２を含む。キー・マネージャ２０２はキーの生成及び管理に関連するさまざまな機能を持つ。キー・マネージャ２０２の一つの機能は、キーを、システム管理者に規定されたそれぞれの属性に関連付けることである。キーの属性は、キーが属するキー・セットの名称、キーのエイリアス、キーに対するパスワード、追跡キー・リファレンスの数、キーへのアクセス対象範囲などを含む。アプリケーションから、インタフェース・モジュールを介して一つ以上のキーの要求が受信されると、キー・マネージャ２０２によって実行される、所定のキー・セット又はキー・セット群内の利用可能なキーのマップを生成する方法が呼出される。但し、キー・マネージャ２０２は、要求しているマシンが要求された一つ以上のキーの受領を認可されているかどうかをまず判定する。されていれば、利用可能キーのマップが提供される。次いで、インタフェース・モジュール２５０がマップの中の必要なキーを識別する。要求しているマシンが、要求されたキーの所定対象範囲内にない場合、キー・マネージャ２０２は、該要求は認可されないとのメッセージを、要求しているインタフェース・モジュールに送信する。
【００３０】
キー・ストア２０４は、キー及びキー・エイリアスの両方を格納する。キー・ストア２０４は、少なくとも２種類のキーを格納することができる。一つの種類は、データの暗号化及び解読両方に使われる単一型のキーである。この種類のキーを本明細書では秘密キーという。また、キー・ストア２０４は、公開／プライベート暗号化システムのためのキー・ペアを格納する。このようなシステムにおいては、キー・ペアの一つのキーはプライベート・キーであり、該キー・ペアのもう一方のキーは公開キーである。プライベート・キーはその所有者によって秘密に保持され、所有者がデータを暗号化又はデータに署名、あるいはその両方を行う際に使用される。公開キーはプライベート・キーよりも広く知らされており、データを解読し又は署名を検証するために使うことができる。また、キー・ストア２０４は、キー・マネージャ２０２が各キーに関連付けた属性も保存する。これらの属性には、キーのエイリアス、キー・セット名及びキー・セット群名が含まれる。なお、キー・ストア２０４を、図２に示すように暗号化キー・ソフトウエアを実行するのと同じマシンの中のメモリとすることもでき、キー・ストアを別のマシンに所在するメモリとすることもできる。キー・ストアがリモートにある場合、キー・マネージャは、当該リモート・マシンについての情報を有し、キー・ストアが物理的に所在する場所にリモート・コールを行って必要なキーを読み出す。
【００３１】
キー・マネージャ２０２は、秘密キー又は公開／プライベート・キー・ペアの生成を要求することができる。キー又はキー・ペアの生成はキー・ゼネレータ２０６によって行われる。スケジューラ２０８によって設定されたスケジュールに従ってキー・ゼネレータ２０６が呼出し、新しいキーを作成することができる。スケジューラ２０８は、キー・マネージャ２０２から受け取った頻度指定に従って次のキー生成イベントの時間を設定する。キー生成イベントの時間に達すると、スケジューラ２０８は、キー・ゼネレータ２０６に新しいキーを生成させ、該イベントをキー・マネージャ２０２に連絡する。
【００３２】
キー・ゼネレータ２０６には、秘密キーを生成するための第一キー・ゼネレータ、及び公開／プライベート・キー・ペアを生成するための第二キー・ゼネレータを含めることができる。言い換えれば、秘密キーと、公開／プライベート・キー・ペアとは２つの異なるアルゴリズムによって生成される。キー・ストア２０４は、キー・ゼネレータ２０６からキーを受信し格納する。キー・マネージャ２０２は、権限保持者が指定したパラメータにより設定されたスケジュールに従って、定期的にキー・ゼネレータ２０６を呼出す。しかして、一つの実施形態において、権限保持者は、新しいキーを生成する頻度（キー生成イベントの間隔日数）及び曜日とその日の時間とを指定することができる。
【００３３】
前記のように、暗号化キー・プロセッサ処理２００を、インタフェース・モジュール処理２５０が実施されるのと同じマシンで行うことができ、異なるマシンで行うこともできる。インタフェース・モジュール２５０の処理は、図１に示すようなプロセッサで実行される。インタフェース・モジュール２５０は、キー・セット・ヘルパ２５２及びキー・セット群ヘルパ２５４を含む。キー・セット・ヘルパ２５２は、キー・セットの中のキーへのアクセスを得るための処理である。キー・セット群ヘルパ２５４は、キー・セット群の中のキーへのアクセスを得るための処理である。例えば、キー・セット・ヘルパ２５４は、オーバレイするアプリケーション・プログラムに代わって、秘密キーの最新バージョンを要求することができる。インタフェース・モジュール２５０は、この要求を暗号化キー・プロセッサ２００に送信する。キー・マネージャ２０２は、要求しているアプリケーション・プログラムが、要求されるキーの受領を認可されてるかどうかを判定する。次いで、キー・マネージャ２０２は要求されたキーの最新バージョンを読み出すことができる。一つの実施形態では、インタフェース・モジュールは、旧バージョンのキーを要求することができ、キー・マネージャはこれを提供することができる。暗号化キー処理において、追跡される旧バージョンの数は権限保持者によって指定される。これにより、アプリケーション・プログラムは、旧キーで暗号化されたデータを解読することができる。
【００３４】
このように、暗号化キー・プロセッサは暗号化キーを管理する。暗号化キー・プロセッサは、アプリケーション・プログラムから、ゲット・キー・メソッド呼び出しを受信する。ゲット・キー・メソッド呼び出しでは、キー・セット又はキー・セット群の名前が指定される。各キー・セットは少なくとも一つのキーを有し、各キー・セット群は少なくとも一つのキー・セットを有する。ゲット・キー・メソッドを実行する前に、暗号化キー・プロセッサは、要求しているアプリケーション・プログラムが、指名されたキー・セット又はキー・セット群の所定対称範囲内にあるのかどうかを判定する。アプリケーション・プログラムが所定対象範囲内にある場合、暗号化キー・プロセッサは、要求されたキーのマップを生成する。例えば、一つのゲット・キー・メソッドは、キー・セット群の中のすべてのキーを呼出す。そこで、暗号化キー・プロセッサは、そのキー・セット群の中のすべてのキーのマップを生成することになろう。このマップは、インタフェース・モジュールを介してアプリケーション・プログラムに送信される。アプリケーション・プログラムは、該マップ中の一つ以上の任意のキーを選定することができる。
【００３５】
キー・セットは、キー・リファレンスで構成される。キー・リファレンスは、実際の暗号化キーを参照するエイリアスを使用する。エイリアスはあるキーに対する簡易名称である。各キーは自分を示すエイリアスを有する。実際のキーは、キー・ストアに格納しておき、そのエイリアスを呼出すことで読み出すことができる。以下のコード・ブロックは、キー・ペアのキー・セットを規定する。
＜ｋｅｙＳｅｔｓ  ｘｍｉ：ｉｄ＝“ＫｅｙＳｅｔ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿１”ｎａｍｅ＝“ＮｏｄｅＬＴＰＡＫｅｙＰａｉｒ”
ａｌｉａｓＰｒｅｆｉｘ＝“ＬＴＰＡＫｅｙＰａｉｒ”
このコード・ブロックはキー・セットを生成又は規定し、該キー・セットを名前で識別する。また、該コードはエイリアスの接頭辞を規定する。該接頭辞はキー・エイリアスの前に付けられる。しかして、キー・セット中のキーは特定の接頭辞と関連付けられることになる。
【００３６】
以下のブロックは、パスワード、追跡されるキー・リファレンスの最大数、旧キーを消去するかどうかを示す属性を規定する。
ｐａｓｓｗｏｒｄ＝“｛ｘｏｒ｝ＨＲＹＮＦＡｔｒｂｘＥｗＯｚｐｖｂｈｗ６ＭｚＭ＝”
ｍａｘＫｅｙＲｅｆｅｒｅｎｃｅ＝“２”
ｄｅｌｅｔｅＯｌｄＫｅｙｓ＝“ｔｒｕｅ”
ＫｅｙＳｅｔレベルでパスワードを規定することができ、この場合はキー・セット中のすべてのキーが同じパスワードを持つ、あるいはＫｅｙＲｅｆｅｒｅｎｃｅレベルで規定でき、この場合は各キーが該レベルに関連するパスワードを持つ。任意の時間において追跡されるキー・リファレンスの最大数は、ｍａｘＫｅｙＲｅｆｅｒｅｎｃｅ属性によって設定される。この変数は追跡されるキーの数を格納する。追跡対象キーの最大数に達したならば、次のキー生成イベントにおいて旧いキーは除去されて新しいキーが加えられる。例えば、ｍａｘＫｅｙＲｅｆｅｒｅｎｃｅが２の場合、当該キー・セットはどの時点においても２つのキー・リファレンスしか持たない。ｄｅｌｅｔｅＯｌｄＫｅｙｓ属性が真の場合、ＫｅｙＳｔｏｒｅ属性が参照するＫｅｙＳｔｏｒｅから旧キーが除去される。ＫｅｙＳｔｏｒｅ属性は、キーが格納されるキー・ストアを指定する。
【００３７】
以下のブロックは、キー種類を規定し、キー・セットに対するキー・ストアの場所を設定する。
ｋｅｙＧｅｎｅｒａｔｉｏｎＣｌａｓｓ＝“ｃｏｍ．ｉｂｍ．ｗｓ．ｓｅｃｕｒｉｔｙ．ｌｔｐａ．ＬＴＰＡＫｅｙＰａｉｒＧｅｎｅｒａｔｏｒ”
ｉｓＫｅｙＰａｉｒ＝“ｔｒｕｅ”
ｋｅｙＳｔｏｒｅ＝“ＫｅｙＳｔｏｒｅ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿３”
キーは、ｋｅｙＧｅｎｅｒａｔｉｏｎＣｌａｓｓ属性に参照される、アプリケーション固有のクラスにより生成される。このクラスは、ｉｓＫｅｙＰａｉｒ属性が真か偽かに応じて、ＫｅｙＧｅｎｅｒａｔｏｒ、又はＫｅｙＰａｉｒＧｅｎｅｒａｔｏｒインタフェースのいずれかを実行する。
【００３８】
次のブロックは、管理範囲を特定する。
＜ｍａｎａｇｅｍｅｎｔＳｃｏｐｅｓ  ｘｍｉ：ｉｄ＝“ＭａｎａｇｅｍｅｎｔＳｃｏｐｅ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿１”
ｓｃｏｐｅＮａｍｅ＝“（ｃｅｌｌ）：ＢＩＲＫＴ４０Ｎｏｄｅ０１Ｃｅｌｌ：（ｎｏｄｅ）：ＢＩＲＫＴ４０Ｎｏｄｅ０１”
ｓｃｏｐｅＴｙｐｅ＝“ｎｏｄｅ”／＞
ＫｅｙＳｅｔに特定された管理範囲は、セル名、及びＫｅｙＳｅｔを見ることのできるノードのノード名を示す。この可視性は、継承的性質を有し、そのノードのどのメンバ（アプリケーション・サーバ）もこれらのキーを見ることができる。但し、他のノードのメンバはこれらのキーを見ることはできない。一つの実施形態では、管理範囲を単一のサーバにセットすることができる。
【００３９】
以下のブロックは、エイリアスを持つキー・リファレンスを規定する。
＜ｋｅｙＲｅｆｅｒｅｎｃｅ  ｘｍｉ：ｉｄ＝“ＫｅｙＲｅｆｅｒｅｎｃｅ＿１１２８３９１３５６８８４”ｋｅｙＡｌｉａｓ＝“ＬＴＰＡＫｅｙＰａｉｒ＿８”
ｖｅｒｓｉｏｎ＝“８”／＞
＜ｋｅｙＲｅｆｅｒｅｎｃｅ  ｘｍｉ：ｉｄ＝“ＫｅｙＲｅｆｅｒｅｎｃｅ＿１１２８４３３２１５３７３”ｋｅｙＡｌｉａｓ＝“ＬＴＰＡＫｅｙ１Ｐａｉｒ＿９”
ｖｅｒｓｉｏｎ＝“９”／＞
これら２つのコード・ブロックの各々は、キー・リファレンス、キー・エイリアス、及びキー・バージョンを規定することによってキーを定義している。新しいキーが生成される場合、キー・リファレンス中のバージョン番号が増分され、ＫｅｙＳｔｏｒｅに格納されているキー・エイリアスは、ａｌｉａｓＰｒｅｆｉｘ属性によって接頭辞を付される。こうして、キー・セットはキー・リファレンス群で構成される。キー・リファレンスは、エイリアスを使って実際の暗号化キーを参照する。エイリアスは、キーの短縮された名称である。各キーは、自分を参照するためのエイリアスを有する。実際のキーはキー・ストアに格納されており、エイリアスを呼びだすことによってキーを読取ることができる。
＜／ｋｅｙＳｅｔｓ＞
これは、キー・ペア・セットを規定するコード・ブロックを終了させる。
【００４０】
以下のコード・ブロックは秘密キーＫｅｙＳｅｔを規定する：
＜ｋｅｙＳｅｔｓ  ｘｍｉ：ｉｄ＝“ＫｅｙＳｅｔ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿２”
ｎａｍｅ＝“ＮｏｄｅＬＴＰＡＳｅｃｒｅｔ”ａｌｉａｓＰｒｅｆｉｘ＝“ＬＴＰＡＳｅｃｒｅｔ”
ｐａｓｓｗｏｒｄ＝“｛ｘｏｒ｝ＨＲＹＮＦＡｔｒｂｘＥｗＯｚｐｖｂｈｗ６ＭｚＭ＝”
ｍａｘＫｅｙＲｅｆｅｒｅｎｃｅｓ＝“２”
ｄｅｌｅｔｅＯｌｄＫｅｙｓ＝“ｔｒｕｅ”
ｋｅｙＧｅｎｅｒａｔｉｏｎＣｌａｓｓ＝“ｃｏｍ．ｉｂｍ．ｗｓ．ｓｅｃｕｒｉｔｙ．ｌｔｐａ．ＬＴＰＡＫｅｙＧｅｎｅｒａｔｏｒ”
ｋｅｙＳｔｏｒｅ＝“ＫｅｙＳｔｏｒｅ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿３”
ｍａｎａｇｅｍｅｎｔＳｃｏｐｅ＝“ＭａｎａｇｅｍｅｎｔＳｃｏｐｅ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿１”＞
＜ｋｅｙＲｅｆｅｒｅｎｃｅ  ｘｍｉ：ｉｄ＝“ＫｅｙＲｅｆｅｒｅｎｃｅ＿１１２８３９１３５９５６８”ｋｅｙＡｌｉａｓ＝“ＬＴＰＡＳｅｃｒｅｔ＿８”ｖｅｒｓｉｏｎ＝“８”／＞
＜ｋｅｙＲｅｆｅｒｅｎｃｅ  ｘｍｉ：ｉｄ＝“ＫｅｙＲｅｆｅｒｅｎｃｅ＿１１２８４３３２１７２１５”ｋｅｙＡｌｉａｓ＝“ＬＴＰＡＳｅｃｒｅｔ＿９”ｖｅｒｓｉｏｎ＝“９”／＞
＜／ｋｅｙＳｅｔｓ＞
【００４１】
キー・セットをグループ化して単一の実体として管理することができる。これはＫｅｙＳｅｔＧｒｏｕｐと呼ばれ、次のコード・ブロックにより定義される：
＜ｋｅｙＳｅｔＧｒｏｕｐ  ｘｍｉ：ｉｄ＝“ＫｅｙＳｅｔＧｒｏｕｐ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿１”
ｎａｍｅ＝“ＮｏｄｅＬＴＰＡＫｅｙＳｅｔＧｒｏｕｐ”
ａｕｔｏＧｅｎｅｒａｔｅ＝“ｔｒｕｅ”
このコードは、キー・セット群を生成又は規定し、名前によって識別する。ａｕｔｏＧｅｎｅｒａｔｅ属性は、スケジュールに従って代替キーを生成して置き換えるかどうかを規定する。
【００４２】
次のブロックは、スケジュール・オブジェクトを参照する属性を規定する。
ｗｓＳｃｈｅｄｕｌｅ＝“ＷＳＳｃｈｅｄｕｌｅ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿１”
次のブロックは、どのキー・セットが群に所属するかを規定する。
ｋｅｙＳｅｔ＝“ＫｅｙＳｅｔ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿１ＫｅｙＳｅｔ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿２”
次のブロックは、キー・セット群の中のキーに対するアクセスの対象範囲を特定する。
ｍａｎａｇｅｍｅｎｔＳｃｏｐｅ＝“ＭａｎａｇｅｍｅｎｔＳｃｏｐｅ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿１”／＞
しかして、上記で定義されたＫｅｙＳｅｔＧｒｏｕｐは、それ自体の対象範囲を持つが、それは、該キー・セット群が含むＫｅｙＳｅｔの対象範囲と少なくとも同等か又はもっと限定的でなければならない（例、ノードで定義された範囲を持つＫｅｙＳｅｔＧｒｏｕｐは、サーバ定義範囲を持つＫｅｙＳｅｔを包含することはできない）。一つの実施形態では、自動キー生成を構成するためには、ＫｅｙＳｅｔはＫｅｙＳｅｔＧｒｏｕｐのメンバでなければならない。ＫｅｙＳｅｔＧｒｏｕｐは、一つ以上のＫｅｙＳｅｔを包含することができる。
【００４３】
ｗｓＳｃｈｅｄｕｌｅ属性は、次のキー生成イベントをいつ開始するかを設定するスケジュール・オブジェクトを参照する。ＫｅｙＳｅｔＧｒｏｕｐに対するキー生成イベントでは、各キー・セットのｋｅｙＧｅｎｅｒａｔｉｏｎＣｌａｓｓに対する、ｇｅｎｅｒａｔｅＫｅｙ又はｇｅｎｅｒａｔｅＫｅｙＰａｉｒメソッドが呼出される。該メソッドは、各ＫｅｙＳｅｔに対する新しいキー・バージョンを生成する（加えて、場合に応じ旧バージョンはキー・セットから排除される）。以下にスケジュール設定の例を示す：
＜ｗｓＳｃｈｅｄｕｌｅｓ  ｘｍｉ：ｉｄ＝“ＷＳＳｃｈｅｄｕｌｅ＿ＢＩＲＫＴ４０Ｎｏｄｅ０１＿１”
ｎａｍｅ＝“ＬＴＰＡＫｅｙＳｅｔＧｅｎｅｒａｔｉｏｎＳｃｈｅｄｕｌｅ”
ｆｒｅｑｕｅｎｃｙ＝“９０”
ｄａｙＯｆＷｅｅｋ＝“１”
ｈｏｕｒ＝“２２”
ｍｉｎｕｔｅ＝“００”
ｎｅｘｔＧｅｎｅｒａｔｉｏｎＴｉｍｅ＝“１１３６１７４４０１３３５”／＞
これを使って、次のキー生成イベントを行う将来の日付を生成することができる。この日付は、ｎｅｘｔＧｅｎｅｒａｔｉｏｎＴｉｍｅ属性の中に存続する。この日付が経過すると、上記のｆｒｅｑｕｅｎｃｙ（頻度）、ｄａｙＯｆＷｅｅｋ（曜日）、ｈｏｕｒ（時間）及びｍｉｎｕｔｅ（分）に基づいて新しい日付と時間が生成される。
【００４４】
ｉｓＫｅｙＰａｉｒ属性が「真」の場合、ｋｅｙＧｅｎｅｒａｔｉｏｎＣｌａｓｓによって、ＫｅｙＰａｉｒ生成インタフェースが実行される。これを使って、一般に署名に用いられる公開／プライベート・キーのペアが生成される。該キー・ペアを、ｊａｖａ．ｓｅｃｕｒｉｔｙ．ＰｕｂｌｉｃＫｅｙ及びｊａｖａ．ｓｅｃｕｒｉｔｙ．ＰｒｉｖａｔｅＫｅｙとすることができる。もしくは、該キー・ペアを、ｊａｖａ．ｓｅｃｕｒｉｔｙ．ｃｅｒｔ．Ｃｅｒｔｉｆｉｃａｔｅ（これはｊａｖａ．ｓｅｃｕｒｉｔｙ．ＰｕｂｌｉｃＫｅｙを包含している）及びｊａｖａ．ｓｅｃｕｒｉｔｙ．ＰｒｉｖａｔｅＫｅｙとすることができる。しかして、次が、キー・ペアの生成メソッドである：
ｇｅｎｅｒａｔｅＫｅｙＰａｉｒ（）；
スケジュールされた時間になって、又はマニュアルでの要求によって、キー・ペアを生成しなければならない場合、キー・マネージャは、いつでもこの方法を実行することになる。同様に、秘密キーの生成メソッドを次に示す。
ｇｅｎｅｒａｔｅＫｅｙ（）；
【００４５】
関連するメソッドに
ｖｏｉｄ  ｉｎｉｔ（ｊａｖａ．ｕｔｉｌ．Ｐｒｏｐｅｒｔｉｅｓ  ｃｕｓｔｏｍＰｒｏｐｓ）がある。
キー・マネージャは、このメソッドを実行して、ＫｅｙＳｅｔに設定された一切のカスタム・プロパティをインタフェース・モジュールに送る。以下のコード・ラインは、カスタム・プロパティを規定した例である：
＜ｐｒｏｐｅｒｔｉｅｓ  ｘｍｉ：ｉｄ＝“Ｐｒｏｐｅｒｔｙ＿１”ｎａｍｅ＝“ｋｅｙ＿ｌｅｎｇｔｈ”ｖａｌｕｅ＝“１０２４”ｒｅｑｕｉｒｅｄ＝“ｆａｌｓｅ”／＞
＜ｐｒｏｐｅｒｔｉｅｓ  ｘｍｉ：ｉｄ＝“Ｐｒｏｐｅｒｔｙ＿１”ｎａｍｅ＝“ｋｅｙ＿ａｌｇｏｒｉｔｈｍ”ｖａｌｕｅ＝“ＲＳＡ”ｒｅｑｕｉｒｅｄ＝“ｆａｌｓｅ”／＞
これらの例示プロパティ仕様書の１番目は、１０２４のキー長さ値のキー・プロパティを規定している。２番目のプロパティ仕様書は、キーを生成するアルゴリズムを規定し、この場合はＲＳＡである（ＲＳＡは、発明者Ｒｉｖｅｓｔ（リベスト）、Ｓｈａｍｉｒ（シャミール）、及びＡｄｌｅｍａｎ（アドルマン）から命名されたアルゴリズム）。ｒｅｑｕｉｒｅｄ属性は、規定された値がなければならないかどうかを示す。
【００４６】
図３は、前述したキー生成２２４及びキー・ペア生成２２２メソッドを含むキー・マネージャ２０２のブロック図を示す。また、キー・マネージャ２０２は、要求されたキーをキー・ストアから回収するメソッドも含む。しかして、キー・セット群ヘルパが以下のメソッドを呼出し、キー・マネージャが実行して、キー・セット群の中の全キーのキー・マップを得ることになる：
ｇｅｔＡｌｌＫｅｙｓＦｏｒＫｅｙＳｅｔＧｒｏｕｐ（エレメント２２６）；
これは次の呼出しによって実行される：
ｐｕｂｌｉｃ  ｊａｖａ．ｕｔｉｌ．Ｍａｐ  ｇｅｔＡｌｌＫｅｙｓＦｏｒＫｅｙＳｅｔＧｒｏｕｐ（ｊａｖａ．ｌａｎｇ．Ｓｔｒｉｎｇ  ｋｅｙＳｅｔＧｒｏｕｐＮａｍｅ）ｔｈｒｏｗｓ  ＫｅｙＥｘｃｅｐｔｉｏｎ，ｊａｖａ．ｌａｎｇ．ＳｅｃｕｒｉｔｙＥｘｃｅｐｔｉｏｎ
キー・セット群には、一つ以上のキー・セットの各々のキーが包含されていることを思い起こす。各キー・セットは一つ以上のキーを有する。このメソッドの呼出しにおいて、キー・セット群ヘルパは、キー・セット群の名前を指定しなければならない。暗号化キー・マネージャは、該メソッドを呼出しているインタフェース・モジュールが、指定されたキー・セット群の管理範囲内にあるかどうかを判定する。
【００４７】
指定された群の中のキーは、秘密キー又は公開／プライベート・キー・ペアあるいはその両方である。秘密キーがインタフェース・モジュールに返されたとき、インタフェース・モジュールは、キーの種類又はアルゴリズムについて認識しない。該モジュールは、キー・マネージャからアプリケーション・プログラムへ単にキーを手渡すだけである。アプリケーション・プログラムは、使用するキーの種類及びアルゴリズムを認知している。以下は、マップ中のキーをバージョンでソートする例である：
｛ｖｅｒｓｉｏｎ＿２＝｛ＬＴＰＡＳｅｃｒｅｔ＿２＝ｊａｖａｘ．ｃｒｙｐｔｏ．ｓｐｅｃ．ＳｅｃｒｅｔＫｅｙＳｐｅｃ＠１６８３３，
ＬＴＰＡＫｅｙＰａｉｒ＿２＝ｃｏｍ．ｉｂｍ．ｗｅｂｓｐｈｅｒｅ．ｃｒｙｐｔｏ．ＫｅｙＰａｉｒ＠５ｅ２２５ｅ２２｝，
ｖｅｒｓｉｏｎ＿３＝｛ＬＴＰＡＳｅｃｒｅｔ＿３＝ｊａｖａｘ．ｃｒｙｐｔｏ．ｓｐｅｃ．ＳｅｃｒｅｔＫｅｙＳｐｅｃ＠ｆｆｆｅ８ｂ５９，
ＬＴＰＡＫｅｙＰａｉｒ＿３＝ｃｏｍ．ｉｂｍ．ｗｅｂｓｐｈｅｒｅ．ｃｒｙｐｔｏ．ＫｅｙＰａｉｒ＠１ｃｅｃ１ｃｅｃ｝，
ｖｅｒｓｉｏｎ＿４＝｛ＬＴＰＡＫｅｙＰａｉｒ＿４＝ｃｏｍ．ｉｂｍ．ｗｅｂｓｐｈｅｒｅ．ｃｒｙｐｔｏ．ＫｅｙＰａｉｒ＠５ｂｄ４５ｂｄ４，
ＬＴＰＡＳｅｃｒｅｔ＿４＝ｊａｖａｘ．ｃｒｙｐｔｏ．ｓｐｅｃ．ＳｅｃｒｅｔＫｅｙＳｐｅｃ＠１７８１ｄ｝｝
該メソッドは、キー・セット群中のキー・セットの中のキーのキー・リファレンスのマップを返す。各入力項はキー・エイリアス（例、ＬＴＰＡＫｅｙＰａｉｒ＿２）及びキーを有する。一つの実施形態において、エイリアスはハッシュ化され、ハッシュ・オブジェクトが生成される。マップはインタフェース・モジュールに送信され、該モジュールはマップを、該インタフェース・モジュールと同じプロセッサに実行されているオーバーレイのアプリケーション・プログラムに転送する。アプリケーション・プログラムは、マップを受信するとそれを調べて所望のキーを選定することができる。例えば、アプリケーション・プログラムが最も旧い秘密キーを欲し、リストが時間順になっている場合、該プログラムは、単に、リストの最初の秘密キー入力欄を選択する。
【００４８】
キー・セット群ヘルパが次のメソッドを呼出し、キー・マネージャが実行して、キー・セット群中の最新のキーを読み出すことができよう。
ｇｅｔＬａｔｅｓｔＫｅｙｓＦｏｒＫｅｙＳｅｔＧｒｏｕｐ（エレメント２２８）；
キー・セット群は、群の中にキーの最新バージョンを有しており、キーの旧バージョンを群の中に保持することができる。このメソッドは、最新キーだけのキー・リファレンス・マップを返す。以下はこれらリファレンスの例である。
｛ＬＴＰＡＫｅｙＰａｉｒ＿４＝ｃｏｍ．ｉｂｍ．ｗｅｂｓｐｈｅｒｅ．ｃｒｙｐｔｏ．ＫｅｙＰａｉｒ＠５ｂｄ４５ｂｄ４，
ＬＴＰＡＳｅｃｒｅｔ＿４＝ｊａｖａｘ．ｃｒｙｐｔｏ．ｓｐｅｃ．ＳｅｃｒｅｔＫｅｙＳｐｅｃ＠１７８１ｄ｝
【００４９】
キー・セット・ヘルパが次のメソッドを呼出し、キー・マネージャが実行して、キー・セットのすべてのキーを読み出すことができよう。
ｇｅｔＡｌｌＫｅｙｓＦｏｒＫｅｙＳｅｔ（エレメント２３０）；
このメソッドは、キー・セット中のすべてのキーのマップを返す。以下は、ＫｅｙＳｅｔ名“ＣｅｌｌＬＴＰＡＳｅｃｒｅｔ”からのキーの例である。
｛ＬＴＰＡＳｅｃｒｅｔ＿２＝ｊａｖａｘ．ｃｒｙｐｔｏ．ｓｐｅｃ．ＳｅｃｒｅｔＫｅｙＳｐｅｃ＠１６８３３，
ＬＴＰＡＳｅｃｒｅｔ＿３＝ｊａｖａｘ．ｃｒｙｐｔｏ．ｓｐｅｃ．ＳｅｃｒｅｔＫｅｙＳｐｅｃ＠ｆｆｆｅ８ｂ５９，｝
以下は、ＫｅｙＳｅｔ名“ＣｅｌｌＬＴＰＡＫｅｙＰａｉｒ”からのキーの例である。
｛ＬＴＰＡＫｅｙＰａｉｒ＿４＝ｃｏｍ．ｉｂｍ．ｗｅｂｓｐｈｅｒｅ．ｃｒｙｐｔｏ．ＫｅｙＰａｉｒ＠５ｂｄ４５ｂｄ４，
ＬＴＰＡＫｅｙＰａｉｒ＿２＝ｃｏｍ．ｉｂｍ．ｗｅｂｓｐｈｅｒｅ．ｃｒｙｐｔｏ．ＫｅｙＰａｉｒ＠５ｅ２２５ｅ２２，
ＬＴＰＡＫｅｙＰａｉｒ＿３＝ｃｏｍ．ｉｂｍ．ｗｅｂｓｐｈｅｒｅ．ｃｒｙｐｔｏ．ＫｅｙＰａｉｒ＠１ｃｅｃ１ｃｅｃ｝
【００５０】
キー・セット・ヘルパが次の方法を呼出し、キー・マネージャが実行して、キー・セットから最新のキーを読み出すことができよう。
ｇｅｔＬａｔｅｓｔＫｅｙＦｏｒＫｅｙＳｅｔ（エレメント２３２）；
このメソッドは、ＫｅｙＳｅｔの種類に応じて、Ｊａｖａ（登録商標）セキュリティ・キー・インスタンス、又はＩＢＭ（Ｒ）  ｗｅｂｓｐｈｅｒｅ．ｃｒｙｐｔｏキー・ペア・インスタンスのいずれかを包含するオブジェクトを返す。しかして、該メソッドは秘密キー又はキー・ペアを返すことができる。キー・ペアを、公開キーとプライベート・キーとに、又は証明書とプライベート・キーとにすることができる。このメソッドにより返されるオブジェクトのフォーマットは、キーの種類によって決まる。以下は、ＫｅｙＳｅｔ名“ＣｅｌｌＬＴＰＡＳｅｃｒｅｔ”からの最新キーの例である。
ｊａｖａｘ．ｃｒｙｐｔｏ．ｓｐｅｃ．ＳｅｃｒｅｔＫｅｙＳｐｅｃ＠１７８１ｄ
以下は、ＫｅｙＳｅｔ名“ＣｅｌｌＬＴＰＡＫｅｙＰａｉｒ”からの最新キーの例である。
ｃｏｍ．ｉｂｍ．ｗｅｂｓｐｈｅｒｅ．ｃｒｙｐｔｏ．ＫｅｙＰａｉｒ＠５ｂｄ４５ｂｄ４
【００５１】
図４は、前述した暗号化キー・プロセッサのオペレーションのフローチャート３００の実施形態を示す。暗号化キー・プロセッサは、インタフェース・モジュールから、キー・セット又はキー・セット群の中のキーを得るメソッドの呼出しを受信する（エレメント３０２）。例えば、インタフェース・モジュールは、キー・セット群中の最新のキーを得るためのメソッドｇｅｔＬａｔｅｓｔＫｅｙＦｏｒＫｅｙＳｅｔを呼出すことができる。Ｊａｖａ（登録商標）２セキュリティが有効の場合、このメソッドへのアクセスには許可が必要となる（エレメント３０４）。許可が得られない場合、キー・マネージャは、要求しているインタフェース・モジュールにエラーを返す（エレメント３０８）。許可が得られた場合、キー・マネージャは、次いで、要求しているマシンが要求されたキーに対するアクセス対象のマシン所定管理範囲に入っているかどうかを判定する（エレメント３０６）。しかして、例えば、アプリケーション・プログラムを実行しているサーバが、要求されたキーの管理範囲属性に特定されたノードに含まれているとする。この場合、暗号化キー・プロセッサは、呼出しを受けたゲット・キー・メソッドを実行するステップに進むことになる（エレメント３１０）。含まれていなければ、キー・マネージャは、インタフェース・モジュールにエラーを返す（エレメント３０８）。
【００５２】
実行される（エレメント３１０）呼出しゲット・キー・メソッドについては、前述のものも含め複数のゲット・キー・メソッドの一つとすることができる。呼出したゲット・キー・メソッドを実行することによって、該ゲット・キー・メソッドに指定されたキー・セット又はキー・セット群の中のキーのマップが作成される。一つの実施形態において、この、要求されたキーへのキー・リファレンスを包含するマップの要素はハッシュ化されハッシュ・マップが生成される（エレメント３１２）。暗号化キー・プロセッサは該マップをインタフェース・モジュールに送信し（エレメント３１４）、該モジュールはマップをアプリケーション・プログラムに渡す。次いでアプリケーション・プログラムは、マップから一つ以上の所望のキーを選定する。例えば、アプリケーション・プログラムは、マップから所与のエイリアスのキーを選定することができる。あるいは、アプリケーションは、秘密キー又は公開／プライベート・キー・ペアの特定のバージョンについてマップを探索することができる。
【００５３】
図５は、インタフェース・モジュールと、該モジュールを使うアプリケーション・プログラムのオペレーションに対するフロー・チャート４００の実施形態を示す。アプリケーション・プログラムがあるキーを必要とする場合、アプリケーション・プログラムは、そのキーが属するキー・セット又はキー・セット群名を特定する（エレメント４０２）。インタフェース・モジュールのキー・セット群ヘルパ又はキー・セット・ヘルパのいずれかが、特定されたキー・セット群又はキー・セットの、もしくは、特定されたキー・セット群又はキー・セットのサブグループのマップを提供するゲット・キー・メソッドを呼出すことになる（エレメント４０４）。呼出されたゲット・キー・メソッドに応えて、キー・マネージャは結果を送信し、インタフェース・モジュールが受信することになり、一つの実施形態では、該結果をエラー又は要求されたキー・マップいずれかとすることができる（エレメント４０６）。
【００５４】
キー・マネージャがエラーを返した場合（エレメント４０８）、アプリケーション・プログラムはエラーを処理する（エレメント４１０）。エラーの処理には、ビデオ・モニタ上に「不許可」といったメッセージ入りのウィンドウの表示を含めることができよう。キー・マネージャがマップを返す場合、キー・セット・ヘルパ又はキー・セット群ヘルパは、該マップをアプリケーション・プログラムに手渡す。アプリケーション・プログラムは、キー・マネージャから提供されたマップの中の所望キーを調べる（エレメント４１２）。次いで、アプリケーション・プログラムは、マップから所望する一つ以上のキーを選定する（エレメント４１４）。例えば、アプリケーション・プログラムは、最初に、ファイルを解読するため最旧の秘密キーを選定することができよう。次いで、文書にデジタル署名をするため最新のキー・ペアを選定することができよう。
【００５５】
図６は、キー生成のスケジューリングに対するフロー・チャート５００の実施形態を示す。暗号化キー・プロセッサのソフトウエアの実行が開始されると、キー生成頻度ステートメントが受信され、実行されて新しいキーを生成するための所定頻度が設定される（エレメント５０２）。暗号化キー・プロセッサは、この情報を使って次のキー生成イベントをスケジュールする（エレメント５０４）。該システムは、時間をモニタし（エレメント５０６）、現在がキー生成イベントの時間かどうかを判定する（エレメント５０８）。まだであれば、システムは時間のモニタを続ける（エレメント５０６）。時間であれば、キー・マネージャは、キー生成メソッドを呼出す（エレメント５１０）。キー・マネージャは、新しいキーをそれらの属性とともにキー・ストアに格納する（エレメント５１２）。
【００５６】
このように、オペレーション過程においてはいくつかの並行した関連する処理が行われる。オペレーションの一つの様態において、プロセッサは、ゲット・キー要求を受信し、呼出しているアプリケーション・プログラムがキーの受け取りを認可されているかどうかを判定し、キーのマップを生成し、該マップを要求するアプリケーション・プログラムに転送する。オペレーションの別の様態では、インタフェース・モジュールがゲット・キー・メソッドを呼出し、キー・マップを受信する。次いで、アプリケーション・プログラムがキー・マップの中の所望の一つ以上のキーを選定する。さらにオペレーションの第三の様態において、プロセッサは、キー生成イベントをスケジュールし、時間をモニタし、キー生成イベントを実施する時間かどうかを判断する。キー生成イベントにおいて、一つ以上のキー・セットの各々に対して新しいキーを生成することができる。
【００５７】
本発明は、全面的にハードウエアの実施形態、全面的にソフトウエアの実施形態、又はハードウエア及びソフトウエアの双方を含む実施形態の形を取ることができる。一つの実施形態において、本発明はソフトウエアに実装され、これには、以下に限らないがファームウエア、常駐ソフトウエア、マイクロコードなどが含まれる。さらに、実施形態を、図１に示すようなコンピュータ又は任意の命令実行システムに用いられる又はこれらと関連して使われるプログラム・コードを具えた、マシンがアクセス可能、可読の媒体から利用できるコンピュータ・プログラムの形態とすることができる。本明細書の目的の上で、マシン・アクセス可能、コンピュータ可使用、又はコンピュータ可読の媒体については、命令実行システム、装置、又はデバイスに用いられる又はこれらと関連して使われる、プログラムを包含、格納、伝達、伝播、又は伝送できる任意の器材とすることができる。該媒体を、電子、磁気、光学、電磁気、赤外、又は半導体システム（又は装置又はデバイス）もしくは伝播媒体とすることができる。マシンがアクセス可能媒体の例には、半導体又は固体メモリ、磁気テープ、リムーバブル・コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、固形磁気ディスク、及び光学ディスクが含まれる。光学ディスクの現時点での例には、読取り専用コンパクト・ディスク（ＣＤ−ＲＯＭ）、読み／書きコンパクト・ディスク（ＣＤ−Ｒ／Ｗ）、及びＤＶＤが含まれる。
【００５８】
プログラム・コードを格納又は実行あるいはその両方を行うのに適したデータ処理システムには、システム・バスを介して、直接又は間接的にメモリと結合された少なくとも一つのプロセッサが含まれよう。メモリ・エレメントには、プログラム・コードの実際の実行中に使われるローカル・メモリ１０８、大容量記憶装置、キャッシュ・メモリ１０２，１９０を含めることができ、該キャッシュは、少なくとも一部のプログラム・コードの一時的な保存を提供して、実行中に大容量記憶装置からコードを読み出し必要回数を削減する。入力／出力又はＩ／Ｏデバイス（以下に限らないが、キーボード、ディスプレイ、ポインティング・デバイス等を含む）を、直接に、又は介在Ｉ／Ｏコントローラを通してシステムに連結することができる。また、ネットワーク・アダプタをシステムに結合し、個人又は公衆ネットワークを介在させて、該データ処理システムを、他のデータ処理システム又はリモートのプリンタ又は記憶装置に連結させることができる。モデム、ケーブル・モデム、及びイーサネット（登録商標）カードは、現在利用可能なネットワーク・アダプタのごく一部である。
【００５９】
しかして、本発明の別の実施形態は、データ処理システムで実行されると、該システムに暗号化キーを管理するための一連のオペレーションを実施させる機能を持つ命令を含むコンピュータ・プログラムを提供する。一連のオペレーションは、一般に、アプリケーション・プログラムから要求を受信し、キー・セット又はキー・セット群の中の一つ以上のキーを提供する作業を含む。キー・セットは少なくとも一つのキーを含み、キー・セット群は、少なくとも一つのキー・セットを含む。該オペレーションは、アプリケーション・プログラムが、当該キー・セット又はキー・セット群に対し特定された対象範囲に入っているかどうかを判定する作業を含む。一連のオペレーションは、アプリケーション・プログラムが所定対象範囲中にある場合に、要求されたキーのマップを生成する作業を含む。一連の作業は、所定のスケジュールに従って、キー・セットの新しいキーを生成する作業をさらに含む。
【００６０】
該オペレーションには、各キーのバージョン番号を格納し、キー・バージョン番号を当該キーに関連付ける作業をさらに含めることができる。これにより、エイリアス接頭辞とバージョン番号とによってキーを識別することができる。該オペレーションには、アプリケーション・プログラムに指定されたキー・セット又はキー・セット群から最新のキーを得る作業をさらに含めることができる。対象範囲として、要求キーの受領を認可してもらうよう、アプリケーション・プログラムが実行中に常駐しているべきノード又はサーバを特定することができる。一部の実施形態において、キー・セット群に関連する対象範囲は、そのキー・セット群内の、キー・セットに関連する最も狭い対象範囲と少なくとも同じ狭さである。
【００６１】
本発明及びその利点の一部をいくつかの実施形態について詳しく説明したが、添付の特許請求範囲に明示した本発明の精神及び範囲から逸脱することなく、これら実施形態にさまざまな変更、置換え、及び変形を加えることが可能なことを理解すべきである。本発明の実施形態は複数の目的を達成することができるが、添付の請求内容の範囲に含まれるあらゆる実施形態が、あらゆる目的を達成するわけではない。さらに、本出願の範囲は、本明細書に記載された工程、マシン、製造、組成物、手段、方法、及びステップの実施形態に限定する意図はされていない。当業者には、本明細書に記載された対応実施形態と実質的に同一の機能を遂行又は実質的に同一の結果を達成する、既存のあるいは今後開発される工程、マシン、製造、組成物、手段、方法、又はステップを、本発明に従って活用できることは、本発明の開示から自明であろう。従って、添付の特許請求は、その範囲の中に、こういった工程、マシン、製造、組成物、手段、方法、又はステップを含むよう意図されている。
【図面の簡単な説明】
【００６２】
【図１】ネットワーク内のデジタル・システムの実施形態を示す。該デジタル・システムは、暗号化キー管理ソフトウエアを実行することができる。
【図２】インタフェース・モジュールと連通している暗号化キー・プロセッサの実施形態を示す。
【図３】キー・マネージャのブロック図を示す。
【図４】アプリケーション・プログラムに要求されたキーを読み出すための実施形態のフローチャートを示す。
【図５】インタフェース・モジュールの、キーを呼出して選定するオペレーションの実施形態のフローチャートを示す。
【図６】スケジュールに従って新しいキーを生成するための実施形態のフローチャートを示す。
【符号の説明】
【００６３】
１００  プロセッサ
１０２  Ｌ２キャッシュ
１０４  ＢＩＯＳコード
１０６  ＯＳコード
１０７  暗号化プログラム
１０８  記憶装置
１０９  データ
１１０  入力／出力インタフェース
１１２  サーバ
１１４  他のコンピュータ及びサーバ
１１６  デジタル・システム
１３０  命令フェッチャ
１５０  演算ユニット
１６０  制御回路
１９０  Ｌ１キャッシュ
【図１】
2008109662.tif 000003
【図２】
2008109662.tif 000004
【図３】
2008109662.tif 000005
【図４】
2008109662.tif 000006
【図５】
2008109662.tif 000007
【図６】
2008109662.tif 000008