(57)【特許請求の範囲】
【請求項１】
秘密データのための揮発性メモリ中の守秘記憶機構、およびオペレーティング・システムと相互作用するためのインターフェースを設けるためのプログラム命令を含むセキュリティ・モジュール、とともに用いるコンピュータ実装の方法であって、前記方法は、
プロセッサのプロセッサ・キャッシュ中に、秘密鍵によって解読可能な暗号形式で前記セキュリティ・モジュールを構成しているデータを格納するステップと、
前記プロセッサを安全モードに切り替えるステップと、
前記安全モードに切り替える前記ステップに応じて書込みオペレーションを無効にするステップであって、前記書込みオペレーションは、前記セキュリティ・モジュールを構成している前記データを前記プロセッサ・キャッシュから揮発性メモリに書込むオペレーションである、前記無効にするステップと、
前記プロセッサ・キャッシュ中で、前記秘密鍵によって前記セキュリティ・モジュールを構成している前記データを解読するステップと、
前記守秘記憶機構の外側の前記揮発性メモリの部分へのアクセスを阻止するために動的アドレス変換を設定するステップと、
前記セキュリティ・モジュールの前記インターフェースを介してデータを受信するステップと、
前記プロセッサ・キャッシュの中で前記セキュリティ・モジュールによって、前記セキュリティ・モジュールの前記インターフェースを介して受信された前記データを、公開鍵を使って暗号化するステップと、
前記書込みオペレーションを有効にするステップと、
前記プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、
を含む方法。
【請求項２】
非セキュア・フラグをタグされたデータに対する前記書込みオペレーションを無効にするステップ、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記プロセッサ・キャッシュが、第一レベル・キャッシュ（群）のセットおよび第二レベル・キャッシュ（群）のセットを含む、請求項１に記載の方法。
【請求項４】
前記セキュリティ・モジュールの前記インターフェースが、暗号化アーキテクチャを用いるアプリケーション・プログラミング・インターフェースの形態である、請求項１に記載の方法。
【請求項５】
前記プロセッサによって、割込み要求を受信するステップと、
前記割込み要求に応答して、前記セキュリティ・モジュールの実行を一時停止するステップと、
前記セキュリティ・モジュールの前記暗号化の後で、割込み処理プログラムに制御を渡すステップと、
をさらに含む、請求項１に記載の方法。
【請求項６】
前記割込み要求を終了するステップと、
前記割込み要求の前記終了に応じて、前記セキュリティ・モジュールを再開するステップと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記揮発性メモリの前記守秘記憶機構へのアクセスをシリアライズするためセマフォ・メカニズムを用いて、複数のプログラムの間で前記セキュリティ・モジュールを共用するステップ、
をさらに含む、請求項１に記載の方法。
【請求項８】
請求項１〜７の何れか１項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項９】
請求項８に記載の前記コンピュータ・プログラムをコンピュータ可読ストレージ媒体に記録した、ストレージ媒体。
【請求項１０】
請求項１〜７の何れか１項に記載の方法の各ステップをコンピュータ・ハードウェアによる手段として
構成した、コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化関連オペレーション（例えば、対象データの暗号化、対象データの解読、鍵管理）を行うために用いるセキュリティ・モジュール（ＳＭ：ｓｅｃｕｒｉｔｙ  ｍｏｄｕｌｅ）に関する。
【背景技術】
【０００２】
ハードウェア・セキュリティ・モジュール（ＨＳＭ：ｈａｒｄｗａｒｅ  ｓｅｃｕｒｉｔｙ  ｍｏｄｕｌｅ）は、厳密認証のためのデジタル鍵を保護、管理し、暗号化処理を提供する物理的コンピューティング・デバイスである。これらのモジュールは、従来から、コンピュータまたはネットワーク・サーバに直接装着するプラグイン・カードまたは外部デバイスの形で出回っている。ＨＳＭは、ロギングおよび警告など、改ざんの証拠を提供し、改ざんの検出に応じて鍵を削除するなど、改ざんへの抵抗を提供するための制御を処理することができる。各モジュールは、改ざんおよびバス利用カード探索を防止するための１つ以上の安全な暗号化プロセッサ・チップを包含する。
【０００３】
多くのＨＳＭシステムは、コンピュータのオペレーティング・システムを介して包蔵された形態で、もしくは、外部のスマート・カードまたは何らかの他のセキュリティ・トークンを使って、それらシステムが扱う鍵を安全にバックアップするための手段を有する。多くの場合、ＨＳＭは、公開鍵インフラストラクチャ、またはオンライン・バンキング用途など、ミッションクリティカルなインフラストラクチャの一部であるため、ＨＳＭは、通常、高可用性のためにクラスタ化することが可能である。一部のＨＳＭは、データ・センタ環境の高可用性要求に適応し、事業の継続を可能にするため、二重の電源、および冷却ファンなど現場交換が可能な部品を備えている。
【０００４】
ＨＳＭの安全な囲い内で、特別に開発されたモジュールを実行する能力を持つＨＳＭはほとんどない。かかる能力は、例えば、特別なアルゴリズムまたはビジネス・ロジックを安全な制御された環境で実行しなければならない場合には有用である。このようなモジュールは、元来のＣ言語、ＮＥＴ、Ｊａｖａ（Ｒ）、または他のプログラミング言語で開発することが可能である。これらの実行エンジンは、用途特化コードの安全確保の利益を提供しながらＨＳＭの連邦情報処理規格（ＦＩＰＳ：Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄ）またはコモン・クライテリア検証にも適合する。
【０００５】
ハードウェア・セキュリティ・モジュールは、デジタル鍵を使用する任意のアプリケーションにおいて用いることができる。通常、これらの鍵は高価値であるに違いない、すなわち、鍵が情報漏洩された場合、その持ち主には大きな悪影響があろう。ＨＳＭの機能は、（ｉ）オンボードでの安全な暗号鍵の生成、（ｉｉ）オンボードでの安全な暗号鍵の保管および管理、（ｉｉｉ）暗号資料の使用、および（ｉｖ）極秘データ資料の使用、および（ｖ）アプリケーション・サーバに完全な非対称暗号および対称暗号オフロードすること、である。また、ＨＳＭは、データベースに対する透過データ暗号鍵を管理するように展開される。ＨＳＭは、暗号鍵を含め、これらの資料を、許可されていない使用および潜在的攻撃者からの論理的および物理的双方の保護を提供する。ほとんどのＨＳＭによって取り扱われる暗号化資料は、公開鍵暗号で使用される非対称鍵の対（および証明）である。また、一部のＨＳＭは、対称鍵および他の任意のデータを取り扱うこともできる。
【０００６】
物理的ＨＳＭは生産コストが極めて高価である。さらに、ＨＳＭは、仮想マシン（またはドメインの定量の少なくとも１つ）に専用である。しかして、メインフレーム・コンピュータ中に多くの仮想マシンがあると、全ての仮想マシンをカバーするために十分な物理的ＨＳＭがないことがあるが、プライバシー／セキュリティ要件はなお適用される。現在通常的に用いられているＨＳＭでは、暗号化処理のために暗号化メモリ・メカニズムを使うことが可能である。ＨＳＭの使用の他にも、通常、金融取引および個人識別などの電子処理に対して使われる、或る種の市販の暗号化アクセラレータまたは内蔵マイクロプロセッサを備えたプラスチック・カードも用いることができる。中央処理装置支援暗号化機能（ＣＰＡＣＦ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｏｒ  Ａｓｓｉｓｔ  ｆｏｒ  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｆｕｎｃｔｉｏｎ）またはネットワークＨＳＭとして知られるメカニズムのような、或る種の市販の情報セキュリティ・ソリューションもこれらの目的のために使用が可能である。
【０００７】
さらに、仮想化アプリケーション環境の外側で秘密データを格納し操作するためのソフトウェア・スイートである、いわゆる仮想ＨＳＭ（ＶＨＳＭ：Ｖｉｒｔｕａｌ  ＨＳＭ）も使用できる。ＨＳＭはコンピュータに接続された物理的デバイスであるが、このソフトウェアは、リナックス・ベースのＯｐｅｎＶＺ（Ｒ）コンテナ技術に基づいて、仮想環境中で、アプリケーション・プログラミング・インターフェース（ＡＰＩ：ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を介してＨＳＭの機能を提供する。
【０００８】
この仮想ＨＳＭのアーキテクチャは、以下の主要コンポーネントから成る。（ｉ）ＶＨＳＭ仮想環境（ＶＨＳＭ  ＶＥ：ＶＨＳＭ  ｖｉｒｔｕａｌ  ｅｎｖｉｒｏｎｍｅｎｔ）は、ＶＨＳＭサーバおよび安全ストレージを包含する隔離環境である。このサーバは秘密データのオペレーションを実行し、ストレージは暗号化ユーザ・データを保管する。さらに、伝送によってクライアントとサーバ仮想環境との間でデータ交換する伝送層は、（ｉ）リナックス・ベースのＮｅｔｌｉｎｋ（Ｒ）ソケット技術、および（ｉｉ）クライアント環境からＶＨＳＭサーバにアクセスするためのクライアントＡＰＩおよび付随するユーティリティを備えたクライアント仮想環境に基づいている。
【０００９】
さらに、当該技術分野において、エンクレーブと呼ばれるメモリの秘密領域を割り当てるためのユーザ・レベルでのコード化を可能にする、市販のＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ（中央処理装置））コード命令のセットがある。通常のプロセス・メモリと違って、「エンクレーブ」は、より高位の特権レベルで実行されているプロセスに対しても保護されている。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
前の段落で述べたＣＰＵ中のＣＰＵ命令に対するサポートは、ＣＰＵＩＤコマンド「Ｓｔｒｕｃｔｕｒｅｄ  Ｅｘｔｅｎｄｅｄ  Ｆｅａｔｕｒｅ  Ｌｅａｆ（構造化拡張フィーチャ・リーフ）」、ＥＢＸ  ｂｉｔ０２中に示されているが、アプリケーションへのその利用には、ＣＰＵＩＤ  ｂｉｔには反映されていない、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ（基本入力／出力システム））のサポートとオプトインの有効化とが必要である。前の段落で述べたＣＰＵ命令は、特別な信頼できるメモリ、換言すればプロセッサ留保のメモリに基づいている。さらなるコードは平文でマシンに送信される。
【課題を解決するための手段】
【００１１】
セキュリティ・モジュールを備えたコンピュータ・システム・ソフトウェアが提案され、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、このコンピュータ・システムは、少なくとも１つのプロセッサ・キャッシュを備えた少なくとも１つのプロセッサを含み、該インターフェースへのアクセスに応答して、本ソフトウェアは、（ｉ）コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、（ｉｉ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、（ｉｉｉ）プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、（ｉｖ）セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、（ｖ）インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、（ｖｉ）プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、（ｖｉｉ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、（ｖｉｉｉ）プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、を実行する。
【００１２】
有利には、セキュリティ・モジュールを備えた本発明のソフトウェアは、ソフトウェア、ファームウェア、もしくはハードウェアまたはこれらの組み合せにおいて、仮想ハードウェア・セキュリティ・モジュールをエミュレートすることが可能である。しかして、エミュレートされたセキュリティ・モジュールは、改ざんができず、システム管理者を信頼する必要がない。顧客は、自分自身の仮想セキュリティ・モジュールをプログラムし、そのセキュリティ・モジュールに自分自身の秘密事項または証明を組み入れ、エミュレートされたセキュリティ・モジュールでそれらを遠隔のシステムに展開することが可能である。ソフトウェア／ハードウェアは、セキュリティ・モジュールのコンテンツを暗号化すること、および読み取りアクセス処理を制限することによって、本仮想セキュリティ・モジュールのメモリもしくはインターフェースまたはその両方を保護する。解読されたセキュリティ・モジュールは、内部の情報を含め、決して処理装置チップから離去することはない。セキュリティ・モジュールのインターフェースは、オペレーティング・システムが管理することを可能にし、特に、オペレーティング・システムが、暗号化された状態においてだけ守秘記憶機構のコンテンツを読み出すことを可能にする。プロセッサ・キャッシュからメモリへの書込みプログラム・コードは、とりわけ自己書き換えコードに関連させてもよい。
【００１３】
或る実施形態によれば、非セキュア・フラグをタグされたデータに対しては、メモリへの書込みオペレーションを無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
【００１４】
或る実施形態によれば、プロセッサ・キャッシュは、少なくとも第一レベル・キャッシュおよび第二レベル・キャッシュを含んでよい。異なるレベルのキャッシュを備えたプロセッサは、特定のプログラムまたはデータへのアクセスを無効にするために、異なる属性を有するプログラムまたはデータの可用性を制御することを有利に可能にする。
【００１５】
或る実施形態によれば、本セキュリティ・モジュールに対するインターフェースは、暗号化アーキテクチャを用いて、アプリケーション・プログラミング・インターフェースとして実装することができる。このようにして、顧客は、自分の秘密データに対する高い安全性が保証された自分自身のセキュリティ・モジュールをプログラムすることが可能である。
【００１６】
或る実施形態によれば、プロセッサへの割込み要求の間、本セキュリティ・モジュールの実行を一次停止することが可能で、割込み処理プログラムに制御を渡す前に、セキュリティ・モジュールを暗号化することができる。しかして、有利には、セキュリティ・モジュールの解読された秘密データへのアクセスを阻止することが可能である。
【００１７】
或る実施形態によれば、本セキュリティ・モジュールは、割込み要求の終了後に再開することができる。このようにして、割込み要求による中断の後にあっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
【００１８】
或る実施形態によれば、本セキュリティ・モジュールは、セキュリティ・モジュールの管理された休止の後で再開することができる。このようにして、割込み要求による中断の後であっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
【００１９】
或る実施形態によれば、複数のプログラムの間で共用されているセキュリティ・モジュールは、セキュリティ・モジュールによって使われているメモリの領域へのアクセスをシリアライズするために、セマフォ・メカニズムを用いてよい。しかして、相異なるプログラムによる同じメモリ領域もしくはデータまたはその両方の使用は、１つのプログラムのデータの別のプログラムによる破壊のリスクなしに、同期化された仕方で達成することができる。
【００２０】
或る実施形態によれば、プロセッサ上のマルチスレッディング処理における或るスレッドの実行において、セキュリティ・モジュールの実行の間は、マルチスレッディングは無効にすることが可能である。このようにして、プロセッサがスレッドの間でキャッシュを共用している場合にあっても、経時消失によるセキュリティ・モジュールのキャッシュ・ラインの喪失、もしくは他のスレッドによる解読データへのアクセスの問題またはその両方を回避することができる。
【００２１】
或る実施形態によれば、或るキャッシュ・ラインが他のスレッドにアクセスするのを妨止するため、もしくは、キャッシュ・ラインが他のスレッドによって消去されまたは経時消失するのを阻止するため、またはその両方のために、キャッシュ・ラインに非セキュア・フラグをタグすることが可能である。これにより、スレッドの間でキャッシュを共用しているプロセッサにおいて、有効化されたマルチスレッディングにあっても、無許可スレッドによるキャッシュへのアクセスを回避することができる。
【００２２】
或る実施形態によれば、プロセッサ上でマルチスレッディング処理中の或るスレッドの実行において、スレッドの間で共用されているキャッシュは、セキュリティ・モジュールの実行の間は無効化することが可能で、キャッシュ・ラインは、マルチスレッディングを再開する前に消去することができる。このようにして、経時消失によるセキュリティ・モジュールのキャッシュ・ラインの喪失、もしくは他のスレッドによる解読データへのアクセスまたはその両方の問題を回避することができる。
【００２３】
さらに、前述のソフトウェアが実装された、コンピュータ・システムのファームウェアが提案される。エミュレートされたセキュリティ・モジュールを備えたソフトウェアの実装は、コンピュータ・システムのセキュリティ・レベルを有利な仕方でさらに増大することができる。
【００２４】
さらに、セキュリティ・モジュールをソフトウェア中に実装するための、少なくとも１つのプロセッサ・キャッシュを含む少なくとも１つのプロセッサを備えた処理装置が提案され、本処理装置は、少なくとも１つの別のキャッシュ、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、該プロセッサは、該インターフェースへのアクセスに応答して、（ｉ）安全モードに切り替わっていれば、プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にし、（ｉｉ）プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読し、（ｉｉｉ）セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定し、（ｉｖ）インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行し、（ｖ）プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化し、（ｖｉ）通常のオペレーティング・システム・モードに切り替わっていれば、プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするように、構成される。
【００２５】
有利には、セキュリティ・モジュールをソフトウェア中に実装する本発明の処理装置は、ソフトウェア、ファームウェアもしくはハードウェア中、またはこれらの組み合せの中で、ハードウェア・セキュリティ・モジュールをエミュレートすることを可能にする。しかして、かかるエミュレートされたセキュリティ・モジュールは改ざんすることができないので、システム管理者を信頼する必要がない。顧客は、自分自身の仮想セキュリティ・モジュールをプログラムし、そのセキュリティ・モジュールに自分自身の秘密事項または証明を組み入れ、エミュレートされたセキュリティ・モジュールでそれらを遠隔のシステムに展開することが可能である。ソフトウェア／ハードウェアは、セキュリティ・モジュールのコンテンツを暗号化すること、および読み取りアクセス処理を制限することによって、本仮想セキュリティ・モジュールのメモリもしくはインターフェースまたはその両方を保護する。解読されたセキュリティ・モジュールは、内部の情報を含め、決して処理装置チップから離去することはない。セキュリティ・モジュールのインターフェースは、オペレーティング・システムが、暗号化された状態においてだけ、守秘記憶機構のコンテンツを管理し読み出すことを可能にする。
【００２６】
或る実施形態によれば、メモリへの書込みオペレーションは、非セキュア・フラグをタグされたデータに対しては無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
【００２７】
或る実施形態によれば、プロセッサは、少なくとも第一レベル・キャッシュおよび第二レベル・キャッシュを含んでよく、さらに、該プロセッサは少なくとも第三レベル・キャッシュも含んでよく、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方は、第一もしくは第二キャッシュ・レベルまたはその両方、および第三キャッシュ・レベル中で使用されるときは解読されていてよい。異なるレベルのキャッシュを備えたプロセッサは、特定のプログラムまたはデータへのアクセスを無効にするために、異なる属性を有するプログラムまたはデータの可用性を制御することを有利に可能にする。
【００２８】
或る実施形態によれば、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方は、処理装置から離去するときは暗号化することができる。このようにして、セキュリティ・モジュール中に符号化された顧客データ、および、セキュリティ・モジュールを用い、インターフェースを介して顧客のプログラムによりアクセスされるデータに対する高度な守秘性が保証可能となる。
【００２９】
或る実施形態によれば、メモリ上で対比検証処理を行う上で、セマフォ・メカニズムを用いて、諸プロセスの間で共用されているメモリの領域へのアクセスをシリアライズすることができる。しかして、有利には、セキュリティ・モジュールを共用している複数のプロセスが、相互の間で、セキュリティ・モジュールのキャッシュ・ラインを使用しようとしている場合に、メモリの一貫性を維持することが可能である。
【００３０】
或る実施形態によれば、トランザクショナル・メモリの実行において、諸プロセスの間で共用されているメモリの領域へのアクセスをシリアライズするためにセマフォ・メカニズムを用いてよい。しかして、有利には、セキュリティ・モジュールを共用している複数のプロセスが、相互の間で、セキュリティ・モジュールのキャッシュ・ラインを使用しようとしている場合に、メモリの一貫性を維持することが可能である。
【００３１】
或る実施形態によれば、プロセッサへの割込み要求の間は、本セキュリティ・モジュールの実行は一次停止することが可能で、割込み処理プログラムに制御を渡す前に、セキュリティ・モジュールを暗号化しておくことができる。有利には、こうして、セキュリティ・モジュールの解読された秘密データへのアクセスを防止することが可能である。
【００３２】
或る実施形態によれば、本セキュリティ・モジュールは、割込み要求の終了後に再開することができる。このようにして、割込み要求による中断の後にあっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
【００３３】
或る実施形態によれば、本セキュリティ・モジュールは、セキュリティ・モジュールの管理された休止の後で再開することができる。このようにして、割込み要求による中断の後にあっても、セキュリティ・モジュールの信頼可能な作動が達成可能である。
【００３４】
或る実施形態によれば、プロセッサ上でマルチスレッディング中の或るスレッドの実行において、セキュリティ・モジュールの実行の間は、マルチスレッディングは無効にすることができる。このようにして、プロセッサがスレッドの間でキャッシュを共用している場合でも、経時消失によるセキュリティ・モジュールのキャッシュ・ラインの喪失、もしくは他のスレッドによる解読データへのアクセスの問題またはその両方を回避することができる。
【００３５】
或る実施形態によれば、或るキャッシュ・ラインが他のスレッドにアクセスするのを妨止するため、もしくは、キャッシュ・ラインが他のスレッドによって消去されまたは経時消失するのを阻止するため、またはその両方のために、キャッシュ・ラインに非セキュア・フラグをタグすることが可能である。しかして、無許可スレッドによるキャッシュへのアクセスを回避することができる。
【００３６】
或る実施形態によれば、プロセッサ上でマルチスレッディング中のスレッドの実行において、スレッドの間で共用されているキャッシュは、セキュリティ・モジュールの実行の間は無効化することが可能で、キャッシュ・ラインは、マルチスレッディング再開する前に消去することができる。このようにして、経時消失によるセキュリティ・モジュールのキャッシュ・ラインも喪失、もしくは他のスレッドによる解読データへのアクセスまたはその両方の問題は回避することができる。
【００３７】
セキュリティ・モジュールが作動している間にマルチスレッディングが可能にされると、別のスレッドがキャッシュ・ラインをロードし、これにより、現在、非セキュアとタグされているキャッシュ・ラインを置き換えるかもしれない。かかる状況は、対比検証と同様に取り扱うことができ、もしくは、ＮＳ−フラグをセットされているキャッシュ・ラインは、他のスレッドで置き換えられることから保護され、しかして経時消失から保護されることが可能であろう。
【００３８】
さらにまた、セキュリティ・モジュールをコンピュータ・システム・ソフトウェア中に実装するための有利な方法が提案され、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、このコンピュータ・システムは、少なくとも１つのプロセッサ・キャッシュを備えた少なくとも１つのプロセッサを含み、本方法は、該インターフェースへのアクセスに応答して、（ｉ）コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、（ｉｉ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、（ｉｉｉ）プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、（ｉｖ）セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、（ｖ）インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、（ｖｉ）プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、（ｖｉｉ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、（ｖｉｉｉ）プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、のソフトウェア・オペレーションを含む。
【００３９】
有利には、セキュリティ・モジュールを備えた本発明のソフトウェアは、ソフトウェア、ファームウェアもしくはハードウェアの中、またはこれらの組み合せの中で、ハードウェア・セキュリティ・モジュールをエミュレートすることを可能にする。しかして、エミュレートされたセキュリティ・モジュールは改ざんすることができないので、システム管理者を信頼する必要がない。顧客は、自分自身の仮想セキュリティ・モジュールをプログラムし、そのセキュリティ・モジュールに自分自身の秘密事項または証明を取り込み、エミュレートされたセキュリティ・モジュールでそれらを遠隔のシステムに展開することが可能である。ソフトウェア／ハードウェアは、セキュリティ・モジュールのコンテンツを暗号化すること、および読み取りアクセス処理を制限することによって、本仮想セキュリティ・モジュールのメモリもしくはインターフェースまたはその両方を保護する。解読されたセキュリティ・モジュールは、内部の情報を含め、決して処理装置チップから離去することはない。セキュリティ・モジュールのインターフェースは、オペレーティング・システムが管理することを可能にし、特に、オペレーティング・システムが、暗号化された状態においてだけ守秘記憶機構のコンテンツを読み出すことを可能にする。
【００４０】
或る実施形態によれば、メモリへの書込みオペレーションは、非セキュア・フラグをタグされたデータに対しては無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
【００４１】
さらにまた、セキュリティ・モジュールをコンピュータ・システム・ソフトウェア中に実装するための有利なコンピュータ・プログラム製品が提案され、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、このコンピュータ・システムは、少なくとも１つのプロセッサ・キャッシュを備えた少なくとも１つのプロセッサを含み、本コンピュータ・プログラム製品は、具現化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含み、コンピュータによって実行可能なこのプログラム命令は、該インターフェースへのアクセスに応答して、コンピュータに、（ｉ）コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、（ｉｉ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、（ｉｉｉ）プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、（ｉｖ）セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、（ｖ）インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、（ｖｉ）プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、（ｖｉｉ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、（ｖｉｉｉ）プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、のソフトウェア・オペレーションを含む方法を実行させる。
【００４２】
或る実施形態によれば、メモリへの書込みオペレーションは、非セキュア・フラグをタグされたデータに対しては無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
【００４３】
さらになお、データ処理プログラムの実行のため、少なくとも１つのプロセッサを備えた少なくとも１つの処理装置を備える有利なデータ処理システムが提案され、該プログラムは、コンピュータ・システム・ソフトウェア中にセキュリティ・モジュールを実装するためのコンピュータ可読プログラム命令を含み、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中の公開鍵で暗号化され、該インターフェースへのアクセスに応答して、このソフトウェアは、（ｉ）コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、（ｉｉ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、（ｉｉｉ）プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、（ｉｖ）セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、（ｖ）インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、（ｖｉ）プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、（ｖｉｉ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、（ｖｉｉｉ）プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、を実行する。
【００４４】
或る実施形態によれば、非セキュア・フラグをタグされたデータに対しては、メモリへの書込みオペレーションを無効にすることができる。非セキュア・フラグの使用は、プロセッサ・チップから離去することが許されるデータと許されないデータとを区別することを有利に可能にする。
【００４５】
或る実施形態によれば、揮発性メモリの中に、秘密データのための守秘記憶機構とオペレーティング・システムと相互作用するためのインターフェースとを設けるためのプログラム命令を含む、セキュリティ・モジュールとともに使用するための方法、コンピュータ・プログラム製品、もしくはシステムまたはこれらの組み合せがあり、該オペレーティング・システムは、（ｉ）プロセッサのプロセッサ・キャッシュ中に、秘密鍵によって解読可能な暗号化形態のセキュリティ・モジュールを構成するデータを格納するステップと、（ｉｉ）コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、（ｉｉｉ）安全モードへの切り替えに応じて、書込みオペレーションを無効にするステップであって、この書込みオペレーションは、セキュリティ・モジュールを構成するデータをプロセッサ・キャッシュから揮発性メモリに書込むオペレーションである、該無効にするステップと、（ｉｖ）プロセッサ・キャッシュ中で、セキュリティ・モジュールを構成するデータを秘密鍵を使って解読するステップと、（ｖ）守秘記憶機構の外側の揮発性メモリの部分へのアクセスを阻止するため、動的アドレス変換を設定するステップと、（ｖｉ）セキュリティ・モジュールのインターフェースを介してデータを受信するステップと、（ｖｉｉ）プロセッサ・キャッシュ中で、セキュリティ・モジュールのインターフェースを介して受信されたデータを、セキュリティ・モジュールによって公開鍵を使って暗号化するステップと、（ｖｉｉｉ）書込みオペレーションを有効にするステップと、（ｉｘ）プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、のオペレーションを実行する（必ずしも上記の順序ではない）。
【００４６】
前述および他の目的と利点と併せ本発明は、以下の諸実施形態の詳細な説明から最善に理解できようが、但し、これらの実施形態に限定はされない。
【図面の簡単な説明】
【００４７】
【図１】本発明の或る実施形態による、コンピュータ・システム・ソフトウェア上へのセキュリティ・モジュールの実装のブロック図を表す。
【図２】本発明の或る実施形態による、セキュリティ・モジュールを備えたコンピュータ・システムのキャッシュおよびメモリの階層を表す。
【図３】本発明の或る実施形態による、２つのプログラムが、セマフォ・ロッキング・メカニズムによりアクセスを制限されながら、共用のセキュリティ・モジュールを使用するためのフロー図を表す。
【図４】本発明の或る実施形態による、コンピュータ・システム・ソフトウェア上に実装されたセキュリティ・モジュールを使用するためのフローチャートを表す。
【図５】本発明による方法を実行するためのデータ処理システムの或る例示の実施形態を表す。
【発明を実施するための形態】
【００４８】
これら図面において、同じエレメントは同等な参照符号で参照される。これら図面は、単なる概略的表現であり、本発明の具体的パラメータを反映することは意図されていない。さらに、これら図面は、本発明の典型的な実施形態だけを表しており、したがって、本発明の範囲を限定していると見なすべきではない。
【００４９】
背景技術のセクションで前述したように、エンクレーブと呼ばれるメモリの秘密領域を割り当てるためのユーザ・レベルでのコード化を可能にする、市販のＣＰＵ（中央処理装置）コード命令のセットがある。本発明のいくつかの実施形態は、これを（ｉ）（ＣＰＵＩＤを使用するので）アプリケーションの特徴検出のため複雑さがます、もしくは（ｉｉ）（情報が平文で送信されるので）セキュリティ問題が生じる、またはその両方の可能性があると認識することができる。
【００５０】
本例示的な諸実施形態は、（ｉ）セキュリティ・モジュールを備え、本セキュリティ・モジュールは、秘密データのための守秘記憶機構、およびセキュリティ・モジュールと相互作用するためのオペレーティング・システム用のインターフェースを有し、（ｉｉ）格納されたセキュリティ・モジュールはコンピュータ・システムのメモリ中で公開鍵を使って暗号化され、（ｉｉｉ）該コンピュータ・システムは、少なくとも１つのプロセッサ・キャッシュを備えた少なくとも１つのプロセッサを含む、コンピュータ・システム・ソフトウェア、を提供する。
【００５１】
本明細書において、これら例示的な諸実施形態は、場合によっては、説明の明瞭化のためだけの例として、具体的な技術を用いて説明される。これら例示的な諸実施形態は、インターフェースへのアクセスのために用いられることができ、ソフトウェアは、（ｉ）コンピュータ・システムのプロセッサを安全モードに切り替えるステップと、（ｉｉ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、（ｉｉｉ）プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、（ｉｖ）セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、（ｖ）インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、（ｖｉ）プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、（ｖｉｉ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、（ｖｉｉｉ）プロセッサを通常のオペレーティング・システム・モードに切り替えるステップと、を実行すると。
【００５２】
図１は、本発明の或る実施形態による、コンピュータ・システム・ソフトウェア上への、仮想ハードウェア・セキュリティ・モジュール（ｖＨＳＭ：ｖｉｒｔｕａｌ  ｈａｒｄｗａｒｅ  ｓｅｃｕｒｉｔｙ  ｍｏｄｕｌｅ）として示された、セキュリティ・モジュール１２の実装のブロック図を表す。また、セキュリティ・モジュール１２を実装するためのソフトウェアも、コンピュータ・システム２１２のファームウェア１０中に実装することが可能である。
【００５３】
図１のコンピュータ・システム２１２は、少なくとも１つのプロセッサ・キャッシュ２０を備えた少なくとも１つのプロセッサ１６を含み、プロセッサ１６は、インターフェース４０を使ってファームウェア／ハードウェア（ＦＷ／ＨＷ：ｆｉｒｍｗａｒｅ／ｈａｒｄｗａｒｅ）環境１０中で動作している。セキュリティ・モジュール１２へのインターフェース４０は、暗号化アーキテクチャを用いるアプリケーション・プログラミング・インターフェースとして実装される。プロセッサ・キャッシュ２０は、例えば図２に示されるように、少なくとも第一レベル・キャッシュ２２、２４および第二レベル・キャッシュ２６、２８を含んでよい。コンピュータ・システム２１２は、メモリ１８をさらに含み、オペレーティング・システムＯＳ（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）によって作動される、プログラム１４の実行が可能である。
【００５４】
セキュリティ・モジュール１２は、秘密データのための守秘記憶機構を有し、顧客は、保護されたビルド環境４８でソフトウェア開発キット（ＳＤＫ：ｓｏｆｔｗａｒｅ  ｄｅｖｅｌｏｐｍｅｎｔ  ｋｉｔ）５０を使って該モジュールを生成することができる。セキュリティ・モジュール１２は、プログラム１４の要求によって、コンピュータ・システム２１２のメモリ１８中の公開鍵４２を使って暗号化されて格納される。公開鍵４２は証明の公開部分であり、顧客が利用可能である。セキュリティ・モジュール１２は、この公開鍵４２によって暗号化され、コンピュータ・システム２１２に送信される。セキュリティ・モジュール１２のプログラム・コードは、暗号化アーキテクチャによって記述されたインターフェース４０を実装する。インターフェース４０は、オペレーティング・システムが、セキュリティ・モジュール１２の守秘記憶機構のコンテンツを暗号化された状態で管理し読み出すために、セキュリティ・モジュール１２と相互作用するための機能を果たす。
【００５５】
プログラム１４による、インターフェース４０、セキュリティ・モジュール１２のアドレスの参照、およびメモリ１８の入力／出力領域へのメモリ・ポインタへのアクセスが、インターフェース４０に送られる。ソフトウェアによって、コンピュータ・システム２１２のプロセッサ１６が安全モードに切り替えられる。セキュリティ・モジュール１２のプログラム・コードによって、非セキュア・フラグをタグされたデータに対して、プロセッサ・キャッシュ２０からメモリ１８へのデータの書込みオペレーションが無効にされる。セキュリティ・モジュール１２のプログラム・コードもしくはデータまたはその両方は、プロセッサ・キャッシュ２０の中で秘密鍵４４を使って解読される。セキュリティ・モジュール１２によって使われている領域の外側のメモリ１８へのアクセスを阻止するために動的アドレス変換が設定されるが、但し、セキュリティ・モジュール１２の入力／出力領域へのアクセスはなお許され、そのメモリ・ポインタは前もって送られている。ソフトウェアは、送られてきたパラメータを使ってセキュリティ・モジュール１２の実行をトリガする。インターフェース４０上に提供されたデータに対してセキュリティ・モジュール１２のプログラム・コードが実行される。その後、セキュリティ・モジュール１２のプログラム・コードによって、セキュリティ・モジュール・モードを終了するための命令が実行される。当該データは、プロセッサ・キャッシュ２０中で、ソフトウェアによって公開鍵４２を使って暗号化される。セキュリティ・モジュール１２のプログラム・コードに対する、プロセッサ・キャッシュ２０からメモリ１８へのデータの書込みオペレーションが、ソフトウェアによって再有効化される。暗号化されたデータがメモリ１８に書き戻され、ソフトウェアによって、プロセッサ１６は通常のオペレーティング・システム・モードに切り替え戻される。プログラム１４は、セキュリティ・モジュールのオペレーションの結果を回収し、その通常のオペレーションを継続する。
【００５６】
図２は、本発明の或る実施形態による、セキュリティ・モジュールを備えたコンピュータ・システム２１２のキャッシュおよびメモリの階層を表す。処理装置２１６は、コンピュータ・システム２１２の一部として、少なくともプロセッサ・キャッシュ２０、２２、２４、２６、２８を含む少なくとも１つのプロセッサ１６によって、セキュリティ・モジュールをソフトウェア中に実装する役割を果たし、該処理装置は、少なくとも別のキャッシュ３０を含む。図２中の実施形態に示されたプロセッサ１６は、２つの第一レベル・キャッシュ（命令キャッシュとしてＬ１ｉおよびデータ・キャッシュとしてＬ１ｄ）２２、２４ならびに２つの第二レベル・キャッシュ（命令キャッシュとしてＬ２ｉおよびデータ・キャッシュとしてＬ２ｄ）２６、２８を含む。処理装置２１６は、第三レベル・キャッシュ３０（Ｌ３）をさらに含む。また、図２の実施形態中のコンピュータ・システム２１２は、第四レベル・キャッシュ３２（Ｌ４）および主メモリ１８も含む。キャッシュ・ラインは、通常、２５６バイトの長さを有する。この実施形態のレベル１および２のキャッシュ２２、２４、２６、２８は、例えば、８×６４ビットのキャッシュ・ラインを含む。命令キャッシュ２２および２６は、一般に読み取り専用（ＲＯ：ｒｅａｄ−ｏｎｌｙ）として構成され、一方、データ・キャッシュ２４および２８ならびにレベル３キャッシュ３０のコンテンツは、（ｉ）読み取り専用（ＲＯ）、（ｉｉ）専有使用（ＥＸ：ｅｘｃｌｕｓｉｖｅ）、または（ｉｉｉ）トランザクション・メモリ（ＴＸ：ｔｒａｎｓａｃｔｉｏｎａｌ  ｍｅｍｏｒｙ）とフラグされてよい。レベル４キャッシュ３２は、システム・コントローラ（ＳＣ：ｓｙｓｔｅｍ  ｃｏｎｔｒｏｌｌｅｒ）に関連する。
【００５７】
有利には、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方は、第一もしくは第二レベル・キャッシュまたはその両方２２、２４、２６、２８中、および第三レベル・キャッシュ３０中で用いられるときには解読される。これは、プログラム・コードもしくはデータまたはその両方に、非セキュア・フラグ（ＮＯＮ−ＳＥＣＵＲＥ＝ＮＳ）をタグすることによって達成される。プログラム・コードもしくはデータまたはその両方は、処理装置２１６から離去するときには暗号化され、しかして、レベル４キャッシュ３２およびメモリ１８は、（決してＮＳでなく）安全としてタグされたプログラム・コードもしくはデータまたはその両方だけを受信する。
【００５８】
パフォーマンスの観点からは、プロセッサ・チップ１６内に所在可能なキャッシュ・ラインの量が重要である。しかして、キャッシュ・レベル１、２および３に対しＮＳフラグ／タグが用いられる。
【００５９】
また、命令処理とデータ処理との間には区別がある。当然ながらデータは格納される必要があり、しかして、セキュリティ・モジュールは、通常、解読されたデータが流出しないことを確実にする。これもまたＮＳフラグによって達成される。非セキュア・データは、チップ・キャッシュのレベルをまたがってライト・バック、またはライト・スルーできない。命令は、通常、読み取り専用でフェッチされる。但し、（例えば、Ｌ２とＬ３との間の境界に対比して、Ｌ１とＬ２との間の境界で）暗号化／解読オペレーションが行われる場所によっては、解読された命令のキャッシュ・ラインがＬ１からＬ２にライト・スルーしてもよい。
【００６０】
命令キャッシュ２２および２６は、データ・キャッシュ２４および２８から押し進めてこられた非セキュア・キャッシュ・ラインを受け取る。休止中は、非セキュア・キャッシュ・ラインは、データ・キャッシュ２４および２８ならびに命令キャッシュ２２および２６から消去される。レベル３キャッシュ３０中の非セキュアとマークされたデータは、決して処理装置２１６を離去することはなく、だが、処理装置２１６から離去する前には、まず暗号化される。
【００６１】
メモリ一貫性メカニズムの一部として対比検証プロセス（ＸＩ）を行う上で、該対比検証プロセスは、キャッシュ・ラインが解読されている可能性のある、キャッシュ２２、２４、２６、２８、および３０から、キャッシュ・ラインを除去する。システムの潜在的故障可能性があるので、この対比検証は保留または棄却されてはならないので、セキュリティ・モジュールは、キャッシュ・メモリのハードウェア拡張の役割をする。例えば、状態ＤＯ  ＮＯＴ  ＳＴＯＲＥ（格納不可）がキャッシュ中のキャッシュ・ラインに追加され、当該キャッシュ中で、同じキャッシュ・ラインを暗号化または解読することが可能である。
【００６２】
ＸＩは、変更されないＮＳフラグされたキャッシュ・ラインを除去してよく、これは当然再フェッチすることができよう。このとき特別な処置は必要がなく、あるいはＸＩが修正されたキャッシュ・ラインを除去することも可能で、これは特別にフェッチされていなければならない。これは、いろいろなオプションをもたらすかもしれない。
【００６３】
セキュリティ・モジュール（ｖＨＳＭ）の記憶機構が、セキュリティ・モジュールの呼び出し時から既に生じていれば、ＸＩ処理は、キャッシュ・ラインが格納されるまで遅延されてよい。ｖＨＳＭが自然に完了された場合、変更は格納されＸＩ応答が送信される。ｖＨＳＭのオペレーションが割込み可能点で停止された場合、変更は格納されＸＩ応答が送信される。
【００６４】
ｖＨＳＭの記憶機構が呼び出し時から生じていない場合、ｖＨＳＭのオペレーションは、休止／無効にされるかもしれない。このとき、全ての修正済みのｖＨＳＭデータは廃棄され、ＸＩ応答が送信される。
【００６５】
セキュリティ・モジュールが複数のプロセスの間で共用される場合、対比検証プロセスは、それぞれのプロセスからキャッシュ・ラインを取得することも可能であろう。このときセキュリティ・モジュールのオペレーションは休止されてよい。フォアワード・プロセスが保証されていないので、プロセスの間で共用されているメモリ１８の領域へのアクセスをシリアライズするためにセマフォ・メカニズムが用いられる。かかる状況では、フォアワード・プログレス・エスカレーションがトリガされる。
【００６６】
このメカニズムは、トランザクショナル・メモリ・オペレーションの実行に類似しており、プロセスの間で共用されているメモリ１８の領域へのアクセスをシリアライズするためにセマフォ・メカニズムが用いられる。また、この状況でも、フォアワード・プログレス・エスカレーションがトリガされる。
【００６７】
マルチスレッディングが可能で、セキュリティ・モジュールが作動している場合、別のスレッドがキャッシュ・ラインをロードし、現在ＮＳとフラグされているキャッシュ・ラインと置き換えるかもしれない。かかる状況は、対比検証、またはＮＳフラグをセットされたキャッシュ・ラインのいずれかと同様に取り扱うことができ、もしくは他のスレッドに置き換えられることから保護され、しかして経時消失から保護されてもよく、またはその両方が行われてもよい。
【００６８】
図３は、本発明の或る実施形態による、２つのプログラムＡおよびＢが、セマフォ・ロッキング・メカニズムによりアクセスを制限されながら、共用のセキュリティ・モジュール（ｖＨＳＭ）を使用するためのフロー図を表す。
【００６９】
図３によれば、セキュリティ・モジュールは、該セキュリティ・モジュールによって使われているメモリの領域へのアクセスをシリアライズするためにセマフォ・ロッキング・メカニズムを使いながら、複数のプログラムの間で共用することができる。セキュリティ・モジュールを使用する前に、プログラムＡとＢとは、オペレーションＳ３００とＳ３０２とで、自分達のためにセキュリティ・モジュールをロックしようと試みることになる。これらプログラムのいずれかが、セマフォを取得、すなわち、オペレーションＳ３０４でセキュリティ・モジュールをロックした場合、そのことがオペレーションＳ３０８とＳ３１４とで確認され、該プログラムのいずれかは、オペレーションＳ３０６と３１６とでセキュリティ・モジュールを使用する。セマフォを取得しなかったプログラムは、オペレーションＳ３００とＳ３０２とで、セキュリティ・モジュールをロックする試みに戻る。セキュリティ・モジュールを有効に使用した後、該モジュールは、オペレーションＳ３１０とＳ３１８とでそれを使用したプログラムによって解放されてよい。しかして、セキュリティ・モジュールは、他のプログラムがオペレーションＳ３０４でこれを使用することが自由になる。
【００７０】
割込みは、異なるプログラムに制御を与えるかもしれず、そのプログラムは、セキュリティ・モジュールの解読されたメモリ領域にアクセスしてはならないことになっている。有利には、適正なアドレスによる、処理装置のレベル１キャッシュへのアクセスが、このメモリへのアクセスを提供することができる。割込み要求に対しては遅れることなく処置する必要があるため、セキュリティ・モジュールはフォワード・プログレス・エスカレーションを確実にすることが可能で、これにより状態を内部的に追跡する。しかして、ソフトウェアは、割込みコードに分岐する前にセキュリティ・モジュールを暗号化することができる。プロセッサに対する割込み要求の過程で、セキュリティ・モジュールの実行は一時停止され、割込み処理プログラムに制御を渡す前にセキュリティ・モジュールは暗号化される。セキュリティ・モジュールは、割込み要求の終了の後で再開される。しかして、セキュリティ・モジュールは、該セキュリティ・モジュールの制御された休止の後再開することが可能である。
【００７１】
プロセッサ上でのマルチスレッディング処理における或るスレッドの実行の過程でも、セキュリティ・モジュールの実行の間は、マルチスレッディングは無効にされてよい。プロセッサが他のスレッド・キャッシュを実行していると、セキュリティ・モジュールのキャッシュ・ラインが経時消失で失われるかもしれず、または他のスレッドがセキュリティ・モジュールの解読されたデータにアクセスするかもしれない。
【００７２】
解読されたキャッシュ・ラインを他のスレッドから隠しておく処理のために以下の２つのオプションがある。（ｉ）マルチスレッディングを停止し、キャッシュを消去してから、マルチスレッディングを再開する、または（ｉｉ）各キャッシュ・ラインに非セキュア・フラグをタグし、キャッシュ・アクセス・ヒット対比ロジックにおいて、アクセスが許されるスレッドだけが合致するように該フラグを使用することができる。上記により、非セキュア・フラグの設定、またはキャッシュの消去のためにソフトウェアが用いられてよい。このことは、他のスレッドへのキャッシュ・ラインのアクセスを妨止するため、もしくは、キャッシュ・ラインが、他のスレッドによって消去されまたは経時消失するのを阻止するため、またはその両方のために、諸キャッシュ・ラインに非セキュア・フラグをタグすることによって達成することができる。
【００７３】
あるいは、セキュリティ・モジュールの実行の間は、スレッド間のキャッシュの共用を無効にすることも可能で、マルチスレッディングを再開する前にキャッシュ・ラインを消去することが可能である。
【００７４】
図４は、本発明の或る実施形態による、コンピュータ・システム・ソフトウェア上に実装されたセキュリティ・モジュールを使用するためのフローチャートを表す。しかして、ソフトウェア中にセキュリティ・モジュールを実装するための方法もまた詳細に理解することが可能である。
【００７５】
オペレーションＳ４００で、コンピュータ・システム上で実行されている或るプログラムが、セキュリティ・モジュールのオペレーションを必要とする場合、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方、あるいはそれらの部分が、オペレーションＳ４０２でメモリ中にロードされる。オペレーション４０４での、プログラムによる、暗号化アーキテクチャを備えたインターフェースへのアクセスは、セキュリティ・モジュールのアドレス、およびメモリの入力／出力領域へのメモリ・ポインタを参照する。次いで、オペレーションＳ４０６で、その情報が該インターフェースに送られる。オペレーションＳ４０８で、ソフトウェアによって、コンピュータ・システムのプロセッサが安全モードに切り替えられる。次に、オペレーションＳ４１０で、非セキュア・フラグをタグされたデータに対して、セキュリティ・モジュールのプログラム・コードによって、プロセッサ・キャッシュからメモリへの書込みオペレーションが無効にされる。オペレーションＳ４１２で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方が、プロセッサ・キャッシュの中で秘密鍵を使って解読される。動的アドレス変換（ＤＡＴ：Ｄｙｎａｍｉｃ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）は、オペレーションＳ４１４で、セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスは阻止するが、セキュリティ・モジュールの入力／出力領域へのアクセスは、そのメモリ・ポインタが以前に渡されており、なお許すように構成される。オペレーションＳ４１６で、ソフトウェアは、渡されたパラメータを使ってセキュリティ・モジュールの実行をトリガし、次いで、オペレーションＳ４１８で、インターフェース上に提供されたデータに対し、セキュリティ・モジュールのプログラム・コードを実行する。次いで、オペレーションＳ４２０で、セキュリティ・モジュールのプログラム・コードによって、セキュリティ・モジュール・モードを終了するための命令が実行される。オペレーションＳ４２２で、ソフトウェアによって、プロセッサ・キャッシュ中で、公開鍵を使ってデータが暗号化される。オペレーションＳ４２４で、セキュリティ・モジュールのプログラム・コードに対し、プロセッサ・キャッシュからメモリへのデータの書込みオペレーションが、ソフトウェアによって再有効化される。オペレーションＳ４２６で、暗号データがメモリ中に書き戻され、プロセッサは、ソフトウェアによって通常のオペレーティング・システム・モードに切り替え戻される。オペレーションＳ４２８で、当該プログラムは、入力／出力領域からセキュリティ・モジュールのオペレーションの結果を回収し、その通常の実行を継続する。
【００７６】
ここで図５を参照すると、データ処理装置２１０の一例の概略図が示されている。データ処理システム２１０は、適切なデータ処理システムの単なる一例であって、本明細書に記載された本発明の実施形態の使用の範囲、または機能性に関しいかなる限定をも示唆することは意図されていない。上記に関係なく、データ処理システム２１０は、上記で述べた機能性のいずれをも実装し、実行する能力を有する。
【００７７】
少なくとも１つのプロセッサを備えた少なくとも１つの処理装置２１６を備えるデータ処理システム２１０が、（ｉ）コンピュータ・システム・ソフトウェア中にセキュリティ・モジュールを実装するためのコンピュータ可読プログラム命令と、（ｉｉ）秘密データのための守秘記憶機構、および守秘記憶機構のコンテンツを管理し読み出すためのオペレーティング・システム用のインターフェースを有するセキュリティ・モジュールと、（ｉｉｉ）コンピュータ・システム２１２のメモリ中の公開鍵で暗号化された、格納されたセキュリティ・モジュールと、を含むデータ処理プログラム２４０の実行のために、使用されてよい。インターフェースへのアクセスに応答して、該ソフトウェアは、（ａ）コンピュータ・システム２１２のプロセッサ１６を安全モードに切り替えるステップと、（ｂ）プロセッサ・キャッシュ２０からメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを無効にするステップと、（ｃ）プロセッサ・キャッシュ中で、セキュリティ・モジュールのプログラム・コードもしくはデータまたはその両方を、秘密鍵を使って解読するステップと、（ｄ）セキュリティ・モジュールによって使用されている領域の外側のメモリへのアクセスを阻止するため、動的アドレス変換を設定するステップと、（ｅ）インターフェース上に提供されたデータに対しセキュリティ・モジュールのプログラム・コードを実行するステップと、（ｆ）プロセッサ・キャッシュ中で、公開鍵を使ってデータを暗号化するステップと、（ｇ）プロセッサ・キャッシュからメモリへの、セキュリティ・モジュールのプログラム・コードおよびデータの書込みオペレーションを有効にするステップと、（ｈ）プロセッサ１６を通常のオペレーティング・システム・モードに切り替えるステップと、を実行することができる。非セキュア・フラグをタグされたデータに対し、メモリへの書込みオペレーションは無効にされてよい。
【００７８】
データ処理システム２１０中には、コンピュータ・システム／サーバ２１２があり、これは、数多の他の汎用または特殊用途のコンピューティング・システム環境または構成とともに動作可能である。コンピュータ・システム／サーバ２１２とともに用いるために適し得る、周知のコンピューティング・システム、環境、もしくは構成またはその組み合せには、以下に限らないが、（ｉ）パーソナル・コンピュータ・システム、（ｉｉ）サーバ・コンピュータ・システム、（ｉｉｉ）シン・クライアント、（ｉｖ）シック・クライアント、（ｖ）ハンドヘルドまたはラップトップ・デバイス、（ｖｉ）マルチプロセッサ・システム、（ｖｉｉ）マイクロプロセッサ・ベースのシステム、（ｖｉｉｉ）セット・トップ・ボックス、（ｉｘ）プログラマブル消費者用電子機器、（ｘ）ネットワークＰＣ、（ｘｉ）ミニコンピュータ・システム、（ｘｉｉ）メインフレーム・コンピュータ・システム、（ｘｉｉｉ）上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境など、を含む。
【００７９】
コンピュータ・システム／サーバ２１２は、コンピュータ・システムによって実行されるプログラム・モジュールなど、コンピュータ・システム実行可能命令の一般的文脈で表すことが可能である。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装する、（ｉ）ルーティン、（ｉｉ）プログラム、（ｉｉｉ）オブジェクト、（ｉｖ）、コンポーネント、（ｖ）ロジック、（ｖｉ）データ構造体などを含んでよい。コンピュータ・システム／サーバ２１２は、通信ネットワークを介してリンクされた遠隔の処理デバイス群によってタスクが実行される、分散型クラウド・コンピューティング環境中で実践することが可能である。分散型クラウド・コンピューティング環境では、諸プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよび遠隔両方のコンピュータ・システム・ストレージ媒体中に配置されてよい。
【００８０】
図５に示されるように、データ処理システム２１０中のコンピュータ・システム／サーバ２１２は、汎用のコンピューティング・デバイスの形で示されている。コンピュータ・システム／サーバ２１２は、以下に限らないが、（ｉ）１つ以上のプロセッサまたは処理装置２１６、（ｉｉ）システム・メモリ２２８、および（ｉｉｉ）システム・メモリ２２８を含め様々なシステム・コンポーネントをプロセッサ２１６に連結しているバス２１８を含んでよい。
【００８１】
バス２１８は、（ｉ）メモリ・バスまたはメモリ・コントローラ、（ｉｉ）周辺機器バス、（ｉｉｉ）アクセラレーテッド・グラフィックス・ポート、または（ｉｖ）様々なバス・アーキテクチャのいずれかを使ったプロセッサまたはローカル・バス、を含むいくつかの種類のいずれか１つ以上を表す。限定でなく例として、かかるアーキテクチャは、（ａ）業界標準アーキテクチャ（ＩＳＡ：Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、（ｂ）マイクロ・チャネル・アーキテクチャ（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、（ｃ）拡張ＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、（ｄ）ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ：Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカル・バス、（ｅ）周辺機器相互接続（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含む。
【００８２】
コンピュータ・システム／サーバ２１２は、通常、様々なコンピュータ・システム可読媒体を含む。かかる媒体は、コンピュータ・システム／サーバ２１２によるアクセスが可能な任意の媒体であってよく、これには、（ｉ）揮発性媒体、（ｉｉ）不揮発性媒体、（ｉｉｉ）着脱式媒体、および（ｉｖ）固定式媒体が含まれる。
【００８３】
システム・メモリ２２８は、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）２３０もしくはキャッシュ・メモリ２３２またはその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ２１２は、他の着脱式／固定式／揮発性／不揮発性コンピュータ・システム・ストレージ媒体をさらに含んでよい。単なる例として、ストレージ・システム２３４は、固定式、不揮発性磁気媒体からの読み取り、およびこれへの書込みのために設けることができる（図示されていず、通常、「ハード・ドライブ」と呼ばれる）。図示されていないが、着脱式の不揮発性磁気ディスク（例えば、「フレキシブル・ディスク」）から読み取りこれに書込むための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などの着脱式の不揮発性光ディスクから読み取りこれに書込むための光ディスク・ドライブを設けることが可能である。かかるインスタンスにおいて、その各々は、１つ以上のデータ媒体インターフェースによってバス２１８に接続することができる。後記でさらに提示し説明するように、メモリ２２８は、本発明の諸実施形態の機能を遂行するように構成されたプログラム・モジュールの（例えば、少なくとも１つの）セットを有する少なくとも１つのプログラム製品を含むことが可能である。
【００８４】
プログラム・モジュール２４２の（少なくとも１つの）セットを有するプログラム／ユーティリティ２４０は、（ｉ）限定でなく例として、メモリ２２８中に、（ｉｉ）オペレーティング・システムとして、（ｉｉｉ）１つ以上のアプリケーション・プログラムとして、（ｉｖ）他のプログラム・モジュールとして、および（ｖ）プログラム・データとして、格納されてよい。オペレーティング・システム、１つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組み合せ、の各々はネットワーキング環境の実装を含んでよい。プログラム・モジュール２４２は、本明細書に記載した本発明の諸実施形態の機能もしくは方法またはその両方を全般的に遂行する。
【００８５】
また、コンピュータ・システム／サーバ２１２は、（ｉ）キーボード、（ｉｉ）ポインティング・デバイス、（ｉｉｉ）ディスプレイ２２４、（ｉｖ）ユーザがコンピュータ・システム／サーバ２１２とやり取りするのを可能にする１つ以上のデバイス、もしくは（ｖ）コンピュータ・システム／サーバ２１２が１つ以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（例えば、ネットワーク・カード、モデムなど）またはこれらの組み合せなど、１つ以上の外部デバイス２１４と通信することが可能である。かかる通信は、入力／出力（Ｉ／Ｏ）インターフェース２２２を介して行うことができる。さらになお、コンピュータ・システム／サーバ２１２は、（ａ）ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、（ｂ）一般広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、もしくはネットワーク・アダプタ２２０を介する公衆ネットワーク（例えば、インターネット）またはこれらの組み合せなど、１つ以上のネットワークと通信することが可能である。図示のように、ネットワーク・アダプタ２２０は、バス２１８を介して、コンピュータ・システム／サーバ２１２の他のコンポーネントと通信する。当然のことながら、図示はされていないが、コンピュータ・システム／サーバ２１２とともに、他のハードウェアのコンポーネントもしくはソフトウェアのコンポーネントまたはその両方を用いることができよう。諸例には、以下に限らないが、（１）マイクロコード、（２）デバイス・ドライバ、（３）冗長処理装置、（４）外部のディスク・ドライブ・アレイ、（５）ＲＡＩＤシステム、（６）テープ・ドライブ、および（７）データ・アーカイバル・ストレージ・システムが含まれる。
【００８６】
本発明は、（ｉ）システム、（ｉｉ）方法、もしくは（ｉｉｉ）コンピュータ・プログラム製品またはこれらの組み合せであってよい。このコンピュータ・プログラム製品は、プロセッサに本発明の諸態様を遂行させるための、コンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体（または媒体群を）含むことが可能である。
【００８７】
このコンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納できる有形のデバイスとすることができる。該コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、（ｉ）電子ストレージ・デバイス、（ｉｉ）磁気ストレージ・デバイス、（ｉｉｉ）光ストレージ・デバイス、（ｉｖ）電磁気ストレージ・デバイス、（ｖ）半導体ストレージ・デバイス、または（ｖｉ）または上記の任意の適切な組み合せであってよい。該コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的なリストには、（ａ）携帯型コンピュータ・ディスケット、（ｂ）ハードディスク、（ｃ）ランダム・アクセス・メモリ（ＲＡＭ）、（ｄ）読み取り専用メモリ、（ｅ）消去およびプログラム可能読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、（ｆ）静的ランダム・アクセス・メモリ（ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ  ）、（ｇ）携帯型コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、（ｈ）デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）、（ｉ）メモリ・スティック、（ｊ）フレキシブル・ディスク、（ｋ）記録された命令を有する、パンチ・カードまたは溝中の隆起構造体など、機械的に符号化されたデバイス、および（ｌ）上記の任意の適切な組み合せが含まれる。本明細書で用いるコンピュータ可読ストレージ媒体は、（１）無線波または他の自由に伝搬する電磁波、（２）導波管または他の送信媒体を介して伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、または（３）ワイヤを通って送信される電気信号など、本質的に一時的な信号として解釈されるべきではない。
【００８８】
本明細書に記載されたコンピュータ可読プログラム命令は、（ｉ）コンピュータ可読ストレージ媒体から、（ｉｉ）外部のコンピュータに、（ｉｉｉ）外部のストレージ・デバイスに、例えば、インターネット、（ｉｖ）ローカル・エリア・ネットワーク、（ｖ）広域ネットワーク、もしくは（ｖｉ）ワイヤレス・ネットワーク、またはこれらの組み合せ、などのネットワークを介して、それぞれのコンピューティング／処理デバイスにダウンロードすることができる。このネットワークは、（ａ）銅送信ケーブル、（ｂ）光送信ファイバ、（ｃ）ワイヤレス送信、（ｄ）ルータ、（ｅ）ファイヤーウォール、（ｆ）交換機、（ｇ）ゲートウェイ・コンピュータ、もしくは（ｈ）エッジ・サーバまたはこれらの組み合せを含んでよい。各コンピューティング／処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体中に保存するために転送する。
【００８９】
本発明のオペレーションを遂行するためのコンピュータ可読プログラム命令は、（ｉ）アセンブラ命令、（ｉｉ）命令セットアーキテクチャ（ＩＳＡ：ｉｎｓｔｒｕｃｔｉｏｎ−ｓｅｔ−ａｒｃｈｉｔｅｃｔｕｒｅ）命令、（ｉｉｉ）マシン命令、（ｉｖ）マシン依存命令、（ｖ）マイクロコード、（ｖｉ）ファームウェア命令、（ｖｉｉ）状態設定データ、または（ｖｉｉｉ）Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、１つ以上のプログラミング言語の任意の組み合せで記述されたソース・コードもしくはオブジェクト・コードであってよい。このコンピュータ可読プログラム命令は、（ａ）全面的にユーザのコンピュータで、（ｂ）部分的にユーザのコンピュータで、（ｃ）スタンドアロン・ソフトウェア・パッケージとして、（ｄ）一部をユーザのコンピュータで一部を遠隔コンピュータで、または（ｅ）前面的に遠隔のコンピュータまたはサーバで、実行することができる。後者の場合は、（１）ローカル・エリア・ネットワーク（ＬＡＮ）、（２）広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは（３）（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うことも可能である。いくつかの実施形態において、例えば、（Ｉ）プログラマブル・ロジック回路構成、（ＩＩ）フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、または（ＩＩＩ）プログラマブル・ロジック・アレイ（ＰＬＡ：ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ａｒｒａｙ）を含む電気回路構成は、本発明の諸態様を実行するために、コンピュータ可読プログラム命令の状態情報を用いて該電気回路構成を個人用に設定することにより、該コンピュータ可読プログラム命令を実行することができる。
【００９０】
本明細書では、本発明の諸態様は、本発明の諸実施形態による、（ｉ）方法、（ｉｉ）装置（システム）、および（ｉｉｉ）コンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら説明されている。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合せは、コンピュータ可読プログラム命令によって実装することが可能である。
【００９１】
これらのコンピュータ可読プログラム命令を、（ｉ）汎用コンピュータ、（ｉｉ）特殊用途コンピュータ、または（ｉｉｉ）マシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するための手段を生成するようにすることができる。また、（ａ）コンピュータ、（ｂ）プログラム可能データ処理装置、もしくは（ｃ）他のデバイス、またはこれらの組み合せに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ可読プログラム命令を、コンピュータ可読ストレージ媒体に格納し、格納された命令を有するコンピュータ可読ストレージ媒体が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能／動作の諸態様を実装する命令群を包含する製造品を構成するようにすることができる。
【００９２】
さらに、これらコンピュータ可読プログラム命令を、（ｉ）コンピュータ、（ｉｉ）他のプログラム可能データ処理装置、または（ｉｉｉ）他のデバイスにロードし、（ａ）そのコンピュータ上で、（ｂ）他のプログラム可能装置上で、または他のデバイス上で一連のオペレーション・ステップを実施させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上で、（ｃ）他のプログラム可能装置上でもしくは（ｄ）他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。
【００９３】
諸図面中のフローチャートおよびブロック図は、本発明の様々な実施形態による、（ａ）システム、（ｂ）方法、および（ｃ）コンピュータ・プログラム製品から可能となる実装の（ｉ）アーキテクチャ、（ｉｉ）機能性、および（ｉｉｉ）オペレーションを表している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能（群）を実装するための一つ以上の実行可能命令を含む、（１）モジュール、（２）セグメント、または（３）命令の部分を表し得る。一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われてよい。例えば、連続して示された２つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合せは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステムによって実装でき、または特殊用途ハードウェアとコンピュータ命令との組み合せによって実行できることにも留意すべきである。
【００９４】
本発明の様々な実施形態の説明は、例示目的で提示されたもので、網羅的であることも、または開示された実施形態に限定することも意図されていない。当業者には、本発明の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。本明細書で用いられた用語は、諸実施形態の原理、実際上の応用、または市販の技術の技術的な改良を最善に説明し、他の当業者が本明細書に開示された諸実施形態を理解できるように選択されたものである。
【図１】
0006955619.tif 000002
【図２】
0006955619.tif 000003
【図３】
0006955619.tif 000004
【図４】
0006955619.tif 000005
【図５】
0006955619.tif 000006