前の段落で述べたCPU中のCPU命令に対するサポートは、CPUIDコマンド「Structured Extended Feature Leaf(構造化拡張フィーチャ・リーフ)」、EBX bit02中に示されているが、アプリケーションへのその利用には、CPUID bitには反映されていない、BIOS(Basic Input/Output System(基本入力/出力システム))のサポートとオプトインの有効化とが必要である。前の段落で述べたCPU命令は、特別な信頼できるメモリ、換言すればプロセッサ留保のメモリに基づいている。さらなるコードは平文でマシンに送信される。
セキュリティ・モジュールを備えたコンピュータ・システム・ソフトウェアが提案され、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、このコンピュータ・システムは、少なくとも1つのプロセッサ・キャッシュを備えた少なくとも1つのプロセッサを含み、該インターフェースへのアクセスに応答して、本ソフトウェアは、(i)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(ii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(iii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(iv)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(v)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(vi)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(vii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(viii)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、を実行する。
有利には、セキュリティ・モジュールを備えた本発明のソフトウェアは、ソフトウェア、ファームウェア、もしくはハードウェアまたはこれらの組み合せにおいて、仮想ハードウェア・セキュリティ・モジュールをエミュレートすることが可能である。しかして、エミュレートされたセキュリティ・モジュールは、改ざんができず、システム管理者を信頼する必要がない。顧客は、自分自身の仮想セキュリティ・モジュールをプログラムし、そのセキュリティ・モジュールに自分自身の秘密事項または証明を組み入れ、エミュレートされたセキュリティ・モジュールでそれらを遠隔のシステムに展開することが可能である。ソフトウェア/ハードウェアは、セキュリティ・モジュールのコンテンツを暗号化すること、および読み取りアクセス処理を制限することによって、本仮想セキュリティ・モジュールのメモリもしくはインターフェースまたはその両方を保護する。解読されたセキュリティ・モジュールは、内部の情報を含め、決して処理装置チップから離去することはない。セキュリティ・モジュールのインターフェースは、オペレーティング・システムが管理することを可能にし、特に、オペレーティング・システムが、暗号化された状態においてだけ守秘記憶機構のコンテンツを読み出すことを可能にする。プロセッサ・キャッシュからメモリへの書込みプログラム・コードは、とりわけ自己書き換えコードに関連させてもよい。
或る実施形態によれば、非セキュア・フラグをタグされたデータに対しては、メモリへの書込みオペレーションを無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
或る実施形態によれば、プロセッサ・キャッシュは、少なくとも第一レベル・キャッシュおよび第二レベル・キャッシュを含んでよい。異なるレベルのキャッシュを備えたプロセッサは、特定のプログラムまたはデータへのアクセスを無効にするために、異なる属性を有するプログラムまたはデータの可用性を制御することを有利に可能にする。
或る実施形態によれば、本セキュリティ・モジュールに対するインターフェースは、暗号化アーキテクチャを用いて、アプリケーション・プログラミング・インターフェースとして実装することができる。このようにして、顧客は、自分の秘密データに対する高い安全性が保証された自分自身のセキュリティ・モジュールをプログラムすることが可能である。
或る実施形態によれば、プロセッサへの割込み要求の間、本セキュリティ・モジュールの実行を一次停止することが可能で、割込み処理プログラムに制御を渡す前に、セキュリティ・モジュールを暗号化することができる。しかして、有利には、セキュリティ・モジュールの解読された秘密データへのアクセスを阻止することが可能である。
或る実施形態によれば、本セキュリティ・モジュールは、割込み要求の終了後に再開することができる。このようにして、割込み要求による中断の後にあっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
或る実施形態によれば、本セキュリティ・モジュールは、セキュリティ・モジュールの管理された休止の後で再開することができる。このようにして、割込み要求による中断の後であっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
或る実施形態によれば、複数のプログラムの間で共用されているセキュリティ・モジュールは、セキュリティ・モジュールによって使われているメモリの領域へのアクセスをシリアライズするために、セマフォ・メカニズムを用いてよい。しかして、相異なるプログラムによる同じメモリ領域もしくはデータまたはその両方の使用は、1つのプログラムのデータの別のプログラムによる破壊のリスクなしに、同期化された仕方で達成することができる。
或る実施形態によれば、プロセッサ上のマルチスレッディング処理における或るスレッドの実行において、セキュリティ・モジュールの実行の間は、マルチスレッディングは無効にすることが可能である。このようにして、プロセッサがスレッドの間でキャッシュを共用している場合にあっても、経時消失によるセキュリティ・モジュールのキャッシュ・ラインの喪失、もしくは他のスレッドによる解読データへのアクセスの問題またはその両方を回避することができる。
或る実施形態によれば、或るキャッシュ・ラインが他のスレッドにアクセスするのを妨止するため、もしくは、キャッシュ・ラインが他のスレッドによって消去されまたは経時消失するのを阻止するため、またはその両方のために、キャッシュ・ラインに非セキュア・フラグをタグすることが可能である。これにより、スレッドの間でキャッシュを共用しているプロセッサにおいて、有効化されたマルチスレッディングにあっても、無許可スレッドによるキャッシュへのアクセスを回避することができる。
或る実施形態によれば、プロセッサ上でマルチスレッディング処理中の或るスレッドの実行において、スレッドの間で共用されているキャッシュは、セキュリティ・モジュールの実行の間は無効化することが可能で、キャッシュ・ラインは、マルチスレッディングを再開する前に消去することができる。このようにして、経時消失によるセキュリティ・モジュールのキャッシュ・ラインの喪失、もしくは他のスレッドによる解読データへのアクセスまたはその両方の問題を回避することができる。
さらに、前述のソフトウェアが実装された、コンピュータ・システムのファームウェアが提案される。エミュレートされたセキュリティ・モジュールを備えたソフトウェアの実装は、コンピュータ・システムのセキュリティ・レベルを有利な仕方でさらに増大することができる。
さらに、セキュリティ・モジュールをソフトウェア中に実装するための、少なくとも1つのプロセッサ・キャッシュを含む少なくとも1つのプロセッサを備えた処理装置が提案され、本処理装置は、少なくとも1つの別のキャッシュ、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、該プロセッサは、該インターフェースへのアクセスに応答して、(i)安全モードに切り替わっていれば、プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にし、(ii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読し、(iii)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定し、(iv)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行し、(v)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化し、(vi)通常のオペレーティング・システム・モードに切り替わっていれば、プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするように、構成される。
有利には、セキュリティ・モジュールをソフトウェア中に実装する本発明の処理装置は、ソフトウェア、ファームウェアもしくはハードウェア中、またはこれらの組み合せの中で、ハードウェア・セキュリティ・モジュールをエミュレートすることを可能にする。しかして、かかるエミュレートされたセキュリティ・モジュールは改ざんすることができないので、システム管理者を信頼する必要がない。顧客は、自分自身の仮想セキュリティ・モジュールをプログラムし、そのセキュリティ・モジュールに自分自身の秘密事項または証明を組み入れ、エミュレートされたセキュリティ・モジュールでそれらを遠隔のシステムに展開することが可能である。ソフトウェア/ハードウェアは、セキュリティ・モジュールのコンテンツを暗号化すること、および読み取りアクセス処理を制限することによって、本仮想セキュリティ・モジュールのメモリもしくはインターフェースまたはその両方を保護する。解読されたセキュリティ・モジュールは、内部の情報を含め、決して処理装置チップから離去することはない。セキュリティ・モジュールのインターフェースは、オペレーティング・システムが、暗号化された状態においてだけ、守秘記憶機構のコンテンツを管理し読み出すことを可能にする。
或る実施形態によれば、メモリへの書込みオペレーションは、非セキュア・フラグをタグされたデータに対しては無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
或る実施形態によれば、プロセッサは、少なくとも第一レベル・キャッシュおよび第二レベル・キャッシュを含んでよく、さらに、該プロセッサは少なくとも第三レベル・キャッシュも含んでよく、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方は、第一もしくは第二キャッシュ・レベルまたはその両方、および第三キャッシュ・レベル中で使用されるときは解読されていてよい。異なるレベルのキャッシュを備えたプロセッサは、特定のプログラムまたはデータへのアクセスを無効にするために、異なる属性を有するプログラムまたはデータの可用性を制御することを有利に可能にする。
或る実施形態によれば、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方は、処理装置から離去するときは暗号化することができる。このようにして、セキュリティ・モジュール中に符号化された顧客データ、および、セキュリティ・モジュールを用い、インターフェースを介して顧客のプログラムによりアクセスされるデータに対する高度な守秘性が保証可能となる。
或る実施形態によれば、メモリ上で対比検証処理を行う上で、セマフォ・メカニズムを用いて、諸プロセスの間で共用されているメモリの領域へのアクセスをシリアライズすることができる。しかして、有利には、セキュリティ・モジュールを共用している複数のプロセスが、相互の間で、セキュリティ・モジュールのキャッシュ・ラインを使用しようとしている場合に、メモリの一貫性を維持することが可能である。
或る実施形態によれば、トランザクショナル・メモリの実行において、諸プロセスの間で共用されているメモリの領域へのアクセスをシリアライズするためにセマフォ・メカニズムを用いてよい。しかして、有利には、セキュリティ・モジュールを共用している複数のプロセスが、相互の間で、セキュリティ・モジュールのキャッシュ・ラインを使用しようとしている場合に、メモリの一貫性を維持することが可能である。
或る実施形態によれば、プロセッサへの割込み要求の間は、本セキュリティ・モジュールの実行は一次停止することが可能で、割込み処理プログラムに制御を渡す前に、セキュリティ・モジュールを暗号化しておくことができる。有利には、こうして、セキュリティ・モジュールの解読された秘密データへのアクセスを防止することが可能である。
或る実施形態によれば、本セキュリティ・モジュールは、割込み要求の終了後に再開することができる。このようにして、割込み要求による中断の後にあっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
或る実施形態によれば、本セキュリティ・モジュールは、セキュリティ・モジュールの管理された休止の後で再開することができる。このようにして、割込み要求による中断の後にあっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
或る実施形態によれば、プロセッサ上でマルチスレッディング中の或るスレッドの実行において、セキュリティ・モジュールの実行の間は、マルチスレッディングは無効にすることができる。このようにして、プロセッサがスレッドの間でキャッシュを共用している場合でも、経時消失によるセキュリティ・モジュールのキャッシュ・ラインの喪失、もしくは他のスレッドによる解読データへのアクセスの問題またはその両方を回避することができる。
或る実施形態によれば、或るキャッシュ・ラインが他のスレッドにアクセスするのを妨止するため、もしくは、キャッシュ・ラインが他のスレッドによって消去されまたは経時消失するのを阻止するため、またはその両方のために、キャッシュ・ラインに非セキュア・フラグをタグすることが可能である。しかして、無許可スレッドによるキャッシュへのアクセスを回避することができる。
或る実施形態によれば、プロセッサ上でマルチスレッディング中のスレッドの実行において、スレッドの間で共用されているキャッシュは、セキュリティ・モジュールの実行の間は無効化することが可能で、キャッシュ・ラインは、マルチスレッディング再開する前に消去することができる。このようにして、経時消失によるセキュリティ・モジュールのキャッシュ・ラインも喪失、もしくは他のスレッドによる解読データへのアクセスまたはその両方の問題は回避することができる。
セキュリティ・モジュールが作動している間にマルチスレッディングが可能にされると、別のスレッドがキャッシュ・ラインをロードし、これにより、現在、非セキュアとタグされているキャッシュ・ラインを置き換えるかもしれない。かかる状況は、対比検証と同様に取り扱うことができ、もしくは、NS−フラグをセットされているキャッシュ・ラインは、他のスレッドで置き換えられることから保護され、しかして経時消失から保護されることが可能であろう。
さらにまた、セキュリティ・モジュールをコンピュータ・システム・ソフトウェア中に実装するための有利な方法が提案され、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、このコンピュータ・システムは、少なくとも1つのプロセッサ・キャッシュを備えた少なくとも1つのプロセッサを含み、本方法は、該インターフェースへのアクセスに応答して、(i)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(ii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(iii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(iv)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(v)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(vi)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(vii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(viii)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、のソフトウェア・オペレーションを含む。
有利には、セキュリティ・モジュールを備えた本発明のソフトウェアは、ソフトウェア、ファームウェアもしくはハードウェアの中、またはこれらの組み合せの中で、ハードウェア・セキュリティ・モジュールをエミュレートすることを可能にする。しかして、エミュレートされたセキュリティ・モジュールは改ざんすることができないので、システム管理者を信頼する必要がない。顧客は、自分自身の仮想セキュリティ・モジュールをプログラムし、そのセキュリティ・モジュールに自分自身の秘密事項または証明を取り込み、エミュレートされたセキュリティ・モジュールでそれらを遠隔のシステムに展開することが可能である。ソフトウェア/ハードウェアは、セキュリティ・モジュールのコンテンツを暗号化すること、および読み取りアクセス処理を制限することによって、本仮想セキュリティ・モジュールのメモリもしくはインターフェースまたはその両方を保護する。解読されたセキュリティ・モジュールは、内部の情報を含め、決して処理装置チップから離去することはない。セキュリティ・モジュールのインターフェースは、オペレーティング・システムが管理することを可能にし、特に、オペレーティング・システムが、暗号化された状態においてだけ守秘記憶機構のコンテンツを読み出すことを可能にする。
或る実施形態によれば、メモリへの書込みオペレーションは、非セキュア・フラグをタグされたデータに対しては無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
さらにまた、セキュリティ・モジュールをコンピュータ・システム・ソフトウェア中に実装するための有利なコンピュータ・プログラム製品が提案され、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、このコンピュータ・システムは、少なくとも1つのプロセッサ・キャッシュを備えた少なくとも1つのプロセッサを含み、本コンピュータ・プログラム製品は、具現化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含み、コンピュータによって実行可能なこのプログラム命令は、該インターフェースへのアクセスに応答して、コンピュータに、(i)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(ii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(iii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(iv)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(v)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(vi)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(vii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(viii)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、のソフトウェア・オペレーションを含む方法を実行させる。
或る実施形態によれば、メモリへの書込みオペレーションは、非セキュア・フラグをタグされたデータに対しては無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
さらになお、データ処理プログラムの実行のため、少なくとも1つのプロセッサを備えた少なくとも1つの処理装置を備える有利なデータ処理システムが提案され、該プログラムは、コンピュータ・システム・ソフトウェア中にセキュリティ・モジュールを実装するためのコンピュータ可読プログラム命令を含み、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、該インターフェースへのアクセスに応答して、このソフトウェアは、(i)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(ii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(iii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(iv)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(v)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(vi)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(vii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(viii)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、を実行する。
或る実施形態によれば、非セキュア・フラグをタグされたデータに対しては、メモリへの書込みオペレーションを無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
或る実施形態によれば、揮発性メモリの中に、秘密データのための守秘記憶機構とオペレーティング・システムと相互作用するためのインターフェースとを設けるためのプログラム命令を含む、セキュリティ・モジュールとともに使用するための方法、コンピュータ・プログラム製品、もしくはシステムまたはこれらの組み合せがあり、該オペレーティング・システムは、(i)プロセッサのプロセッサ・キャッシュ中に、秘密鍵によって解読可能な暗号化形態のセキュリティ・モジュールを構成するデータを格納するステップと、(ii)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(iii)安全モードへの切り替えに応じて、書込みオペレーションを無効にするステップであって、この書込みオペレーションは、セキュリティ・モジュールを構成するデータをプロセッサ・キャッシュから揮発性メモリに書込むオペレーションである、該無効にするステップと、(iv)プロセッサ・キャッシュ中で、セキュリティ・モジュールを構成するデータを秘密鍵を使って解読するステップと、(v)守秘記憶機構の外側の揮発性メモリの部分へのアクセスを阻止するため、動的アドレス変換を設定するステップと、(vi)セキュリティ・モジュールのインターフェースを介してデータを受信するステップと、(vii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのインターフェースを介して受信されたデータを、セキュリティ・モジュールによって公開鍵を使って暗号化するステップと、(viii)書込みオペレーションを有効にするステップと、(ix)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、のオペレーションを実行する(必ずしも上記の順序ではない)。
前述および他の目的と利点と併せ本発明は、以下の諸実施形態の詳細な説明から最善に理解できようが、但し、これらの実施形態に限定はされない。
これら図面において、同じエレメントは同等な参照符号で参照される。これら図面は、単なる概略的表現であり、本発明の具体的パラメータを反映することは意図されていない。さらに、これら図面は、本発明の典型的な実施形態だけを表しており、したがって、本発明の範囲を限定していると見なすべきではない。
背景技術のセクションで前述したように、エンクレーブと呼ばれるメモリの秘密領域を割り当てるためのユーザ・レベルでのコード化を可能にする、市販のCPU(中央処理装置)コード命令のセットがある。本発明のいくつかの実施形態は、これを(i)(CPUIDを使用するので)アプリケーションの特徴検出のため複雑さがます、もしくは(ii)(情報が平文で送信されるので)セキュリティ問題が生じる、またはその両方の可能性があると認識することができる。
本例示的な諸実施形態は、(i)セキュリティ・モジュールを備え、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、(ii)格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中で公開鍵を使って暗号化され、(iii)該コンピュータ・システムは、少なくとも1つのプロセッサ・キャッシュを備えた少なくとも1つのプロセッサを含む、コンピュータ・システム・ソフトウェア、を提供する。
本明細書において、これら例示的な諸実施形態は、場合によっては、説明の明瞭化のためだけの例として、具体的な技術を用いて説明される。これら例示的な諸実施形態は、インターフェースへのアクセスのために用いられることができ、ソフトウェアは、(i)コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、(ii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(iii)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(iv)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(v)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(vi)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(vii)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(viii)プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、を実行すると。
図1は、本発明の或る実施形態による、コンピュータ・システム・ソフトウェア上への、仮想ハードウェア・セキュリティ・モジュール(vHSM:virtual hardware security module)として示された、セキュリティ・モジュール12の実装のブロック図を表す。また、セキュリティ・モジュール12を実装するためのソフトウェアも、コンピュータ・システム212のファームウェア10中に実装することが可能である。
図1のコンピュータ・システム212は、少なくとも1つのプロセッサ・キャッシュ20を備えた少なくとも1つのプロセッサ16を含み、プロセッサ16は、インターフェース40を使ってファームウェア/ハードウェア(FW/HW:firmware/hardware)環境10中で動作している。セキュリティ・モジュール12へのインターフェース40は、暗号化アーキテクチャを用いるアプリケーション・プログラミング・インターフェースとして実装される。プロセッサ・キャッシュ20は、例えば図2に示されるように、少なくとも第一レベル・キャッシュ22、24および第二レベル・キャッシュ26、28を含んでよい。コンピュータ・システム212は、メモリ18をさらに含み、オペレーティング・システムOS(operating system)によって作動される、プログラム14の実行が可能である。
セキュリティ・モジュール12は、秘密データのための守秘記憶機構を有し、顧客は、保護されたビルド環境48でソフトウェア開発キット(SDK:software development kit)50を使って該モジュールを生成することができる。セキュリティ・モジュール12は、プログラム14の要求によって、コンピュータ・システム212のメモリ18中の公開鍵42を使って暗号化されて格納される。公開鍵42は証明の公開部分であり、顧客が利用可能である。セキュリティ・モジュール12は、この公開鍵42によって暗号化され、コンピュータ・システム212に送信される。セキュリティ・モジュール12のプログラム・コードは、暗号化アーキテクチャによって記述されたインターフェース40を実装する。インターフェース40は、オペレーティング・システムが、セキュリティ・モジュール12の守秘記憶機構のコンテンツを暗号化された状態で管理し読み出すために、セキュリティ・モジュール12と相互作用するための機能を果たす。
プログラム14による、インターフェース40、セキュリティ・モジュール12のアドレスの参照、およびメモリ18の入力/出力領域へのメモリ・ポインタへのアクセスが、インターフェース40に送られる。ソフトウェアによって、コンピュータ・システム212のプロセッサ16が安全モードに切り替えられる。セキュリティ・モジュール12のプログラム・コードによって、非セキュア・フラグをタグされたデータに対して、プロセッサ・キャッシュ20からメモリ18へのデータの書込みオペレーションが無効にされる。セキュリティ・モジュール12のプログラム・コードもしくはデータまたはその両方は、プロセッサ・キャッシュ20の中で秘密鍵44を使って解読される。セキュリティ・モジュール12によって使われている領域の外側のメモリ18へのアクセスを阻止するために動的アドレス変換が設定されるが、但し、セキュリティ・モジュール12の入力/出力領域へのアクセスはなお許され、そのメモリ・ポインタは前もって送られている。ソフトウェアは、送られてきたパラメータを使ってセキュリティ・モジュール12の実行をトリガする。インターフェース40上に提供されたデータに対してセキュリティ・モジュール12のプログラム・コードが実行される。その後、セキュリティ・モジュール12のプログラム・コードによって、セキュリティ・モジュール・モードを終了するための命令が実行される。当該データは、プロセッサ・キャッシュ20中で、ソフトウェアによって公開鍵42を使って暗号化される。セキュリティ・モジュール12のプログラム・コードに対する、プロセッサ・キャッシュ20からメモリ18へのデータの書込みオペレーションが、ソフトウェアによって再有効化される。暗号化されたデータがメモリ18に書き戻され、ソフトウェアによって、プロセッサ16は通常のオペレーティング・システム・モードに切り替え戻される。プログラム14は、セキュリティ・モジュールのオペレーションの結果を回収し、その通常のオペレーションを継続する。
図2は、本発明の或る実施形態による、セキュリティ・モジュールを備えたコンピュータ・システム212のキャッシュおよびメモリの階層を表す。処理装置216は、コンピュータ・システム212の一部として、少なくともプロセッサ・キャッシュ20、22、24、26、28を含む少なくとも1つのプロセッサ16によって、セキュリティ・モジュールをソフトウェア中に実装する役割を果たし、該処理装置は、少なくとも別のキャッシュ30を含む。図2中の実施形態に示されたプロセッサ16は、2つの第一レベル・キャッシュ(命令キャッシュとしてL1iおよびデータ・キャッシュとしてL1d)22、24ならびに2つの第二レベル・キャッシュ(命令キャッシュとしてL2iおよびデータ・キャッシュとしてL2d)26、28を含む。処理装置216は、第三レベル・キャッシュ30(L3)をさらに含む。また、図2の実施形態中のコンピュータ・システム212は、第四レベル・キャッシュ32(L4)および主メモリ18も含む。キャッシュ・ラインは、通常、256バイトの長さを有する。この実施形態のレベル1および2のキャッシュ22、24、26、28は、例えば、8×64ビットのキャッシュ・ラインを含む。命令キャッシュ22および26は、一般に読み取り専用(RO:read−only)として構成され、一方、データ・キャッシュ24および28ならびにレベル3キャッシュ30のコンテンツは、(i)読み取り専用(RO)、(ii)専有使用(EX:exclusive)、または(iii)トランザクション・メモリ(TX:transactional memory)とフラグされてよい。レベル4キャッシュ32は、システム・コントローラ(SC:system controller)に関連する。
有利には、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方は、第一もしくは第二レベル・キャッシュまたはその両方22、24、26、28中、および第三レベル・キャッシュ30中で用いられるときには解読される。これは、プログラム・コードもしくはデータまたはその両方に、非セキュア・フラグ(NON−SECURE=NS)をタグすることによって達成される。プログラム・コードもしくはデータまたはその両方は、処理装置216から離去するときには暗号化され、しかして、レベル4キャッシュ32およびメモリ18は、(決してNSでなく)安全としてタグされたプログラム・コードもしくはデータまたはその両方だけを受信する。
パフォーマンスの観点からは、プロセッサ・チップ16内に所在可能なキャッシュ・ラインの量が重要である。しかして、キャッシュ・レベル1、2および3に対しNSフラグ/タグが用いられる。
また、命令処理とデータ処理との間には区別がある。当然ながらデータは格納される必要があり、しかして、セキュリティ・モジュールは、通常、解読されたデータが流出しないことを確実にする。これもまたNSフラグによって達成される。非セキュア・データは、チップ・キャッシュのレベルをまたがってライト・バック、またはライト・スルーできない。命令は、通常、読み取り専用でフェッチされる。但し、(例えば、L2とL3との間の境界に対比して、L1とL2との間の境界で)暗号化/解読オペレーションが行われる場所によっては、解読された命令のキャッシュ・ラインがL1からL2にライト・スルーしてもよい。
命令キャッシュ22および26は、データ・キャッシュ24および28から押し進めてこられた非セキュア・キャッシュ・ラインを受け取る。休止中は、非セキュア・キャッシュ・ラインは、データ・キャッシュ24および28ならびに命令キャッシュ22および26から消去される。レベル3キャッシュ30中の非セキュアとマークされたデータは、決して処理装置216を離去することはなく、だが、処理装置216から離去する前には、まず暗号化される。
メモリ一貫性メカニズムの一部として対比検証プロセス(XI)を行う上で、該対比検証プロセスは、キャッシュ・ラインが解読されている可能性のある、キャッシュ22、24、26、28、および30から、キャッシュ・ラインを除去する。システムの潜在的故障可能性があるので、この対比検証は保留または棄却されてはならないので、セキュリティ・モジュールは、キャッシュ・メモリのハードウェア拡張の役割をする。例えば、状態DO NOT STORE(格納不可)がキャッシュ中のキャッシュ・ラインに追加され、当該キャッシュ中で、同じキャッシュ・ラインを暗号化または解読することが可能である。
XIは、変更されないNSフラグされたキャッシュ・ラインを除去してよく、これは当然再フェッチすることができよう。このとき特別な処置は必要がなく、あるいはXIが修正されたキャッシュ・ラインを除去することも可能で、これは特別にフェッチされていなければならない。これは、いろいろなオプションをもたらすかもしれない。
セキュリティ・モジュール(vHSM)の記憶機構が、セキュリティ・モジュールの呼び出し時から既に生じていれば、XI処理は、キャッシュ・ラインが格納されるまで遅延されてよい。vHSMが自然に完了された場合、変更は格納されXI応答が送信される。vHSMのオペレーションが割込み可能点で停止された場合、変更は格納されXI応答が送信される。
vHSMの記憶機構が呼び出し時から生じていない場合、vHSMのオペレーションは、休止/無効にされるかもしれない。このとき、全ての修正済みのvHSMデータは廃棄され、XI応答が送信される。
セキュリティ・モジュールが複数のプロセスの間で共用される場合、対比検証プロセスは、それぞれのプロセスからキャッシュ・ラインを取得することも可能であろう。このときセキュリティ・モジュールのオペレーションは休止されてよい。フォアワード・プロセスが保証されていないので、プロセスの間で共用されているメモリ18の領域へのアクセスをシリアライズするためにセマフォ・メカニズムが用いられる。かかる状況では、フォアワード・プログレス・エスカレーションがトリガされる。
このメカニズムは、トランザクショナル・メモリ・オペレーションの実行に類似しており、プロセスの間で共用されているメモリ18の領域へのアクセスをシリアライズするためにセマフォ・メカニズムが用いられる。また、この状況でも、フォアワード・プログレス・エスカレーションがトリガされる。
マルチスレッディングが可能で、セキュリティ・モジュールが作動している場合、別のスレッドがキャッシュ・ラインをロードし、現在NSとフラグされているキャッシュ・ラインと置き換えるかもしれない。かかる状況は、対比検証、またはNSフラグをセットされたキャッシュ・ラインのいずれかと同様に取り扱うことができ、もしくは他のスレッドに置き換えられることから保護され、しかして経時消失から保護されてもよく、またはその両方が行われてもよい。
図3は、本発明の或る実施形態による、2つのプログラムAおよびBが、セマフォ・ロッキング・メカニズムによりアクセスを制限されながら、共用のセキュリティ・モジュール(vHSM)を使用するためのフロー図を表す。
図3によれば、セキュリティ・モジュールは、該セキュリティ・モジュールによって使われているメモリの領域へのアクセスをシリアライズするためにセマフォ・ロッキング・メカニズムを使いながら、複数のプログラムの間で共用することができる。セキュリティ・モジュールを使用する前に、プログラムAとBとは、オペレーションS300とS302とで、自分達のためにセキュリティ・モジュールをロックしようと試みることになる。これらプログラムのいずれかが、セマフォを取得、すなわち、オペレーションS304でセキュリティ・モジュールをロックした場合、そのことがオペレーションS308とS314とで確認され、該プログラムのいずれかは、オペレーションS306と316とでセキュリティ・モジュールを使用する。セマフォを取得しなかったプログラムは、オペレーションS300とS302とで、セキュリティ・モジュールをロックする試みに戻る。セキュリティ・モジュールを有効に使用した後、該モジュールは、オペレーションS310とS318とでそれを使用したプログラムによって解放されてよい。しかして、セキュリティ・モジュールは、他のプログラムがオペレーションS304でこれを使用することが自由になる。
割込みは、異なるプログラムに制御を与えるかもしれず、そのプログラムは、セキュリティ・モジュールの解読されたメモリ領域にアクセスしてはならないことになっている。有利には、適正なアドレスによる、処理装置のレベル1キャッシュへのアクセスが、このメモリへのアクセスを提供することができる。割込み要求に対しては遅れることなく処置する必要があるため、セキュリティ・モジュールはフォワード・プログレス・エスカレーションを確実にすることが可能で、これにより状態を内部的に追跡する。しかして、ソフトウェアは、割込みコードに分岐する前にセキュリティ・モジュールを暗号化することができる。プロセッサに対する割込み要求の過程で、セキュリティ・モジュールの実行は一時停止され、割込み処理プログラムに制御を渡す前にセキュリティ・モジュールは暗号化される。セキュリティ・モジュールは、割込み要求の終了の後で再開される。しかして、セキュリティ・モジュールは、該セキュリティ・モジュールの制御された休止の後再開することが可能である。
プロセッサ上でのマルチスレッディング処理における或るスレッドの実行の過程でも、セキュリティ・モジュールの実行の間は、マルチスレッディングは無効にされてよい。プロセッサが他のスレッド・キャッシュを実行していると、セキュリティ・モジュールのキャッシュ・ラインが経時消失で失われるかもしれず、または他のスレッドがセキュリティ・モジュールの解読されたデータにアクセスするかもしれない。
解読されたキャッシュ・ラインを他のスレッドから隠しておく処理のために以下の2つのオプションがある。(i)マルチスレッディングを停止し、キャッシュを消去してから、マルチスレッディングを再開する、または(ii)各キャッシュ・ラインに非セキュア・フラグをタグし、キャッシュ・アクセス・ヒット対比ロジックにおいて、アクセスが許されるスレッドだけが合致するように該フラグを使用することができる。上記により、非セキュア・フラグの設定、またはキャッシュの消去のためにソフトウェアが用いられてよい。このことは、他のスレッドへのキャッシュ・ラインのアクセスを妨止するため、もしくは、キャッシュ・ラインが、他のスレッドによって消去されまたは経時消失するのを阻止するため、またはその両方のために、諸キャッシュ・ラインに非セキュア・フラグをタグすることによって達成することができる。
あるいは、セキュリティ・モジュールの実行の間は、スレッド間のキャッシュの共用を無効にすることも可能で、マルチスレッディングを再開する前にキャッシュ・ラインを消去することが可能である。
図4は、本発明の或る実施形態による、コンピュータ・システム・ソフトウェア上に実装されたセキュリティ・モジュールを使用するためのフローチャートを表す。しかして、ソフトウェア中にセキュリティ・モジュールを実装するための方法もまた詳細に理解することが可能である。
オペレーションS400で、コンピュータ・システム上で実行されている或るプログラムが、セキュリティ・モジュールのオペレーションを必要とする場合、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方、あるいはそれらの部分が、オペレーションS402でメモリ中にロードされる。オペレーション404での、プログラムによる、暗号化アーキテクチャを備えたインターフェースへのアクセスは、セキュリティ・モジュールのアドレス、およびメモリの入力/出力領域へのメモリ・ポインタを参照する。次いで、オペレーションS406で、その情報が該インターフェースに送られる。オペレーションS408で、ソフトウェアによって、コンピュータ・システムのプロセッサが安全モードに切り替えられる。次に、オペレーションS410で、非セキュア・フラグをタグされたデータに対して、セキュリティ・モジュールのプログラム・コードによって、プロセッサ・キャッシュからメモリへの書込みオペレーションが無効にされる。オペレーションS412で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方が、プロセッサ・キャッシュの中で秘密鍵を使って解読される。動的アドレス変換(DAT:Dynamic address translation)は、オペレーションS414で、セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスは阻止するが、セキュリティ・モジュールの入力/出力領域へのアクセスは、そのメモリ・ポインタが以前に渡されており、なお許すように構成される。オペレーションS416で、ソフトウェアは、渡されたパラメータを使ってセキュリティ・モジュールの実行をトリガし、次いで、オペレーションS418で、インターフェース上に提供されたデータに対し、セキュリティ・モジュールのプログラム・コードを実行する。次いで、オペレーションS420で、セキュリティ・モジュールのプログラム・コードによって、セキュリティ・モジュール・モードを終了するための命令が実行される。オペレーションS422で、ソフトウェアによって、プロセッサ・キャッシュ中で、公開鍵を使ってデータが暗号化される。オペレーションS424で、セキュリティ・モジュールのプログラム・コードに対し、プロセッサ・キャッシュからメモリへのデータの書込みオペレーションが、ソフトウェアによって再有効化される。オペレーションS426で、暗号データがメモリ中に書き戻され、プロセッサは、ソフトウェアによって通常のオペレーティング・システム・モードに切り替え戻される。オペレーションS428で、当該プログラムは、入力/出力領域からセキュリティ・モジュールのオペレーションの結果を回収し、その通常の実行を継続する。
ここで図5を参照すると、データ処理装置210の一例の概略図が示されている。データ処理システム210は、適切なデータ処理システムの単なる一例であって、本明細書に記載された本発明の実施形態の使用の範囲、または機能性に関しいかなる限定をも示唆することは意図されていない。上記に関係なく、データ処理システム210は、上記で述べた機能性のいずれをも実装し、実行する能力を有する。
少なくとも1つのプロセッサを備えた少なくとも1つの処理装置216を備えるデータ処理システム210が、(i)コンピュータ・システム・ソフトウェア中にセキュリティ・モジュールを実装するためのコンピュータ可読プログラム命令と、(ii)秘密データのための守秘記憶機構、および守秘記憶機構のコンテンツを管理し読み出すためのオペレーティング・システム用のインターフェースを有するセキュリティ・モジュールと、(iii)コンピュータ・システム212のメモリ中の公開鍵で暗号化された、格納されたセキュリティ・モジュールと、を含むデータ処理プログラム240の実行のために、使用されてよい。インターフェースへのアクセスに応答して、該ソフトウェアは、(a)コンピュータ・システム212のプロセッサ16を安全モードに切り替えるステップと、(b)プロセッサ・キャッシュ20からメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、(c)プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、(d)セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、(e)インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、(f)プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、(g)プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、(h)プロセッサ16を通常のオペレーティング・システム・モードに切り替えるステップと、を実行することができる。非セキュア・フラグをタグされたデータに対し、メモリへの書込みオペレーションは無効にされてよい。
データ処理システム210中には、コンピュータ・システム/サーバ212があり、これは、数多の他の汎用または特殊用途のコンピューティング・システム環境または構成とともに動作可能である。コンピュータ・システム/サーバ212とともに用いるために適し得る、周知のコンピューティング・システム、環境、もしくは構成またはその組み合せには、以下に限らないが、(i)パーソナル・コンピュータ・システム、(ii)サーバ・コンピュータ・システム、(iii)シン・クライアント、(iv)シック・クライアント、(v)ハンドヘルドまたはラップトップ・デバイス、(vi)マルチプロセッサ・システム、(vii)マイクロプロセッサ・ベースのシステム、(viii)セット・トップ・ボックス、(ix)プログラマブル消費者用電子機器、(x)ネットワークPC、(xi)ミニコンピュータ・システム、(xii)メインフレーム・コンピュータ・システム、(xiii)上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境など、を含む。
コンピュータ・システム/サーバ212は、コンピュータ・システムによって実行されるプログラム・モジュールなど、コンピュータ・システム実行可能命令の一般的文脈で表すことが可能である。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装する、(i)ルーティン、(ii)プログラム、(iii)オブジェクト、(iv)、コンポーネント、(v)ロジック、(vi)データ構造体などを含んでよい。コンピュータ・システム/サーバ212は、通信ネットワークを介してリンクされた遠隔の処理デバイス群によってタスクが実行される、分散型クラウド・コンピューティング環境中で実践することが可能である。分散型クラウド・コンピューティング環境では、諸プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよび遠隔両方のコンピュータ・システム・ストレージ媒体中に配置されてよい。
図5に示されるように、データ処理システム210中のコンピュータ・システム/サーバ212は、汎用のコンピューティング・デバイスの形で示されている。コンピュータ・システム/サーバ212は、以下に限らないが、(i)1つ以上のプロセッサまたは処理装置216、(ii)システム・メモリ228、および(iii)システム・メモリ228を含め様々なシステム・コンポーネントをプロセッサ216に連結しているバス218を含んでよい。
バス218は、(i)メモリ・バスまたはメモリ・コントローラ、(ii)周辺機器バス、(iii)アクセラレーテッド・グラフィックス・ポート、または(iv)様々なバス・アーキテクチャのいずれかを使ったプロセッサまたはローカル・バス、を含むいくつかの種類のいずれか1つ以上を表す。限定でなく例として、かかるアーキテクチャは、(a)業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、(b)マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、(c)拡張ISA(Enhanced ISA)バス、(d)ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、(e)周辺機器相互接続(PCI:Peripheral Component Interconnect)バスを含む。
コンピュータ・システム/サーバ212は、通常、様々なコンピュータ・システム可読媒体を含む。かかる媒体は、コンピュータ・システム/サーバ212によるアクセスが可能な任意の媒体であってよく、これには、(i)揮発性媒体、(ii)不揮発性媒体、(iii)着脱式媒体、および(iv)固定式媒体が含まれる。
システム・メモリ228は、ランダム・アクセス・メモリ(RAM:random access memory)230もしくはキャッシュ・メモリ232またはその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ212は、他の着脱式/固定式/揮発性/不揮発性コンピュータ・システム・ストレージ媒体をさらに含んでよい。単なる例として、ストレージ・システム234は、固定式、不揮発性磁気媒体からの読み取り、およびこれへの書込みのために設けることができる(図示されていず、通常、「ハード・ドライブ」と呼ばれる)。図示されていないが、着脱式の不揮発性磁気ディスク(例えば、「フレキシブル・ディスク」)から読み取りこれに書込むための磁気ディスク・ドライブ、およびCD−ROM、DVD−ROM、または他の光媒体などの着脱式の不揮発性光ディスクから読み取りこれに書込むための光ディスク・ドライブを設けることが可能である。かかるインスタンスにおいて、その各々は、1つ以上のデータ媒体インターフェースによってバス218に接続することができる。後記でさらに提示し説明するように、メモリ228は、本発明の諸実施形態の機能を遂行するように構成されたプログラム・モジュールの(例えば、少なくとも1つの)セットを有する少なくとも1つのプログラム製品を含むことが可能である。
プログラム・モジュール242の(少なくとも1つの)セットを有するプログラム/ユーティリティ240は、(i)限定でなく例として、メモリ228中に、(ii)オペレーティング・システムとして、(iii)1つ以上のアプリケーション・プログラムとして、(iv)他のプログラム・モジュールとして、および(v)プログラム・データとして、格納されてよい。オペレーティング・システム、1つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組み合せ、の各々はネットワーキング環境の実装を含んでよい。プログラム・モジュール242は、本明細書に記載した本発明の諸実施形態の機能もしくは方法またはその両方を全般的に遂行する。
また、コンピュータ・システム/サーバ212は、(i)キーボード、(ii)ポインティング・デバイス、(iii)ディスプレイ224、(iv)ユーザがコンピュータ・システム/サーバ212とやり取りするのを可能にする1つ以上のデバイス、もしくは(v)コンピュータ・システム/サーバ212が1つ以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)またはこれらの組み合せなど、1つ以上の外部デバイス214と通信することが可能である。かかる通信は、入力/出力(I/O)インターフェース222を介して行うことができる。さらになお、コンピュータ・システム/サーバ212は、(a)ローカル・エリア・ネットワーク(LAN:local area network)、(b)一般広域ネットワーク(WAN:wide area network)、もしくはネットワーク・アダプタ220を介する公衆ネットワーク(例えば、インターネット)またはこれらの組み合せなど、1つ以上のネットワークと通信することが可能である。図示のように、ネットワーク・アダプタ220は、バス218を介して、コンピュータ・システム/サーバ212の他のコンポーネントと通信する。当然のことながら、図示はされていないが、コンピュータ・システム/サーバ212とともに、他のハードウェアのコンポーネントもしくはソフトウェアのコンポーネントまたはその両方を用いることができよう。諸例には、以下に限らないが、(1)マイクロコード、(2)デバイス・ドライバ、(3)冗長処理装置、(4)外部のディスク・ドライブ・アレイ、(5)RAIDシステム、(6)テープ・ドライブ、および(7)データ・アーカイバル・ストレージ・システムが含まれる。
本発明は、(i)システム、(ii)方法、もしくは(iii)コンピュータ・プログラム製品またはこれらの組み合せであってよい。このコンピュータ・プログラム製品は、プロセッサに本発明の諸態様を遂行させるための、コンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または媒体群を)含むことが可能である。
このコンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納できる有形のデバイスとすることができる。該コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、(i)電子ストレージ・デバイス、(ii)磁気ストレージ・デバイス、(iii)光ストレージ・デバイス、(iv)電磁気ストレージ・デバイス、(v)半導体ストレージ・デバイス、または(vi)または上記の任意の適切な組み合せであってよい。該コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的なリストには、(a)携帯型コンピュータ・ディスケット、(b)ハードディスク、(c)ランダム・アクセス・メモリ(RAM)、(d)読み取り専用メモリ、(e)消去およびプログラム可能読み取り専用メモリ(EPROM:erasable programmable read−only memoryまたはフラッシュ・メモリ)、(f)静的ランダム・アクセス・メモリ(SRAM:static random access memory )、(g)携帯型コンパクトディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、(h)デジタル多用途ディスク(DVD:digital versatile disk)、(i)メモリ・スティック、(j)フレキシブル・ディスク、(k)記録された命令を有する、パンチ・カードまたは溝中の隆起構造体など、機械的に符号化されたデバイス、および(l)上記の任意の適切な組み合せが含まれる。本明細書で用いるコンピュータ可読ストレージ媒体は、(1)無線波または他の自由に伝搬する電磁波、(2)導波管または他の送信媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または(3)ワイヤを通って送信される電気信号など、本質的に一時的な信号として解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、(i)コンピュータ可読ストレージ媒体から、(ii)外部のコンピュータに、(iii)外部のストレージ・デバイスに、例えば、インターネット、(iv)ローカル・エリア・ネットワーク、(v)広域ネットワーク、もしくは(vi)ワイヤレス・ネットワーク、またはこれらの組み合せ、などのネットワークを介して、それぞれのコンピューティング/処理デバイスにダウンロードすることができる。このネットワークは、(a)銅送信ケーブル、(b)光送信ファイバ、(c)ワイヤレス送信、(d)ルータ、(e)ファイヤーウォール、(f)交換機、(g)ゲートウェイ・コンピュータ、もしくは(h)エッジ・サーバまたはこれらの組み合せを含んでよい。各コンピューティング/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体中に保存するために転送する。
本発明のオペレーションを遂行するためのコンピュータ可読プログラム命令は、(i)アセンブラ命令、(ii)命令セットアーキテクチャ(ISA:instruction−set−architecture)命令、(iii)マシン命令、(iv)マシン依存命令、(v)マイクロコード、(vi)ファームウェア命令、(vii)状態設定データ、または(viii)Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、1つ以上のプログラミング言語の任意の組み合せで記述されたソース・コードもしくはオブジェクト・コードであってよい。このコンピュータ可読プログラム命令は、(a)全面的にユーザのコンピュータで、(b)部分的にユーザのコンピュータで、(c)スタンドアロン・ソフトウェア・パッケージとして、(d)一部をユーザのコンピュータで一部を遠隔コンピュータで、または(e)前面的に遠隔のコンピュータまたはサーバで、実行することができる。後者の場合は、(1)ローカル・エリア・ネットワーク(LAN)、(2)広域ネットワーク(WAN)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(3)(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことも可能である。いくつかの実施形態において、例えば、(I)プログラマブル・ロジック回路構成、(II)フィールド・プログラマブル・ゲート・アレイ(FPGA:field−programmable gate array)、または(III)プログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電気回路構成は、本発明の諸態様を実行するために、コンピュータ可読プログラム命令の状態情報を用いて該電気回路構成を個人用に設定することにより、該コンピュータ可読プログラム命令を実行することができる。
本明細書では、本発明の諸態様は、本発明の諸実施形態による、(i)方法、(ii)装置(システム)、および(iii)コンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら説明されている。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合せは、コンピュータ可読プログラム命令によって実装することが可能である。
これらのコンピュータ可読プログラム命令を、(i)汎用コンピュータ、(ii)特殊用途コンピュータ、または(iii)マシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するための手段を生成するようにすることができる。また、(a)コンピュータ、(b)プログラム可能データ処理装置、もしくは(c)他のデバイス、またはこれらの組み合せに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ可読プログラム命令を、コンピュータ可読ストレージ媒体に格納し、格納された命令を有するコンピュータ可読ストレージ媒体が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能/動作の諸態様を実装する命令群を包含する製造品を構成するようにすることができる。
さらに、これらコンピュータ可読プログラム命令を、(i)コンピュータ、(ii)他のプログラム可能データ処理装置、または(iii)他のデバイスにロードし、(a)そのコンピュータ上で、(b)他のプログラム可能装置上で、または他のデバイス上で一連のオペレーション・ステップを実施させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上で、(c)他のプログラム可能装置上でもしくは(d)他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するためのプロセスを提供するようにすることも可能である。
諸図面中のフローチャートおよびブロック図は、本発明の様々な実施形態による、(a)システム、(b)方法、および(c)コンピュータ・プログラム製品から可能となる実装の(i)アーキテクチャ、(ii)機能性、および(iii)オペレーションを表している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、(1)モジュール、(2)セグメント、または(3)命令の部分を表し得る。一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われてよい。例えば、連続して示された2つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合せは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステムによって実装でき、または特殊用途ハードウェアとコンピュータ命令との組み合せによって実行できることにも留意すべきである。
本発明の様々な実施形態の説明は、例示目的で提示されたもので、網羅的であることも、または開示された実施形態に限定することも意図されていない。当業者には、本発明の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。本明細書で用いられた用語は、諸実施形態の原理、実際上の応用、または市販の技術の技術的な改良を最善に説明し、他の当業者が本明細書に開示された諸実施形態を理解できるように選択されたものである。