(57)【要約】本明細書に記述された種々の実施形態は、安全なコンピュータ環境（１００）内でソフトウェアを実行するための装置に関する。安全なプロセッサ（１０４）が使用され、ソフトウェアの第一の部分からソフトウェアの第二の部分へと実行を切り替えるとき、第一のコンテキストから第二のコンテキストへのコンテキストスワップを要求するよう構成される。コンテキストマネージャ（１０６）は、安全なプロセッサと連通し、要求されたコンテキストスワップを受信し、開始するように構成されうる。トラストベクターベリファイヤ（１０８）は、安全なプロセッサとコンテキストマネージャに連通し、コンテキストマネージャからのコマンドによって、トラストベクターディスクリプタをロードするよう構成されうる。
2010530563.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア命令の第一の部分および第二の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記ソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための要求を生成するよう動作可能な安全なプロセッサ（１０４）と、
前記安全なプロセッサへと連通するように結合され、前記要求を受信し、前記第一のコンテキストと前記第二のコンテキスト間のコンテキストスイッチを開始し、前記第二のコンテキストはコンテキスト識別子に関連付けられる、第一のディスクリート回路（１０６）と、
前記安全なプロセッサおよび前記第一のディスクリート回路へと連通するように結合され、前記コンテキスト識別子に基づいて、前記安全なプロセッサと前記安全なプロセッサに関連付けられた少なくとも一つのリソース（１２０）との間のアクセスを媒介するよう動作可能な、第二のディスクリート回路（１０８）と、
を含むことを特徴とする装置。
【請求項２】
前記第二のコンテキストは、トラストベクターディスクリプタに関連付けられ、前記第二のディスクリート回路は、前記第一のディスクリート回路からのコマンドに応じて、前記トラストベクターディスクリプタをロードする、
ことを特徴とする、請求項１に記載の装置。
【請求項３】
前記第二のディスクリート回路は、前記トラストベクターディスクリプタに基づいて、前記安全なプロセッサと前記少なくとも一つのリソースとの間の前記アクセスを媒介するよう動作可能である、
ことを特徴とする、請求項２に記載の装置。
【請求項４】
前記第一のディスクリート回路は、前記要求に応じて、前記安全なプロセッサのリセットを開始する、
ことを特徴とする、請求項１に記載の装置。
【請求項５】
前記リソースは、メモリ（１２６）を含み、前記第二のディスクリート回路は、前記安全なプロセッサと前記メモリとの間のアクセスを媒介する、
ことを特徴とする、請求項１に記載の装置。
【請求項６】
前記リソースは、少なくとも一つの周辺デバイス（４０８）を含み、前記第二のディスクリート回路は、前記安全なプロセッサと前記少なくとも一つの周辺デバイスとの間のアクセスを媒介する、
ことを特徴とする、請求項１に記載の装置。
【請求項７】
スタティックなコンテキスト内の第一のソフトウェア命令を実行するよう動作可能なメインプロセッサ（５１２）と、
第二のソフトウェア命令の第一の部分と第二の部分を実行するよう動作可能で、さらに、前記第二のソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記第二のソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための要求を生成するよう動作可能な安全なプロセッサ（４１０）と、
前記安全なプロセッサと連通するように結合され、前記要求を受信し、前記第一のコンテキストと前記第二のコンテキストとの間のコンテキストスイッチを開始し、前記第二のコンテキストはコンテキスト識別子に関連付けられる、第一のディスクリート回路（４２４）と、
前記メインプロセッサと前記安全なプロセッサに連通するよう結合されたバス（４３２）と、
前記バスを介して、前記メインプロセッサと前記安全なプロセッサに連通するよう結合された、少なくとも一つのリソース（４０６、４０８、４３４、４３６）と、
前記バスと連通するように結合され、前記コンテキスト識別子に基づいて、前記安全なプロセッサと前記メインプロセッサによる前記少なくとも一つのリソースへのアクセスを媒介するよう動作可能な、第二のディスクリート回路（５０４、５０６、５０８）と、
を含む、
ことを特徴とする装置。
【請求項８】
前記第二のコンテキストは、トラストベクターディスクリプタに関連付けられ、前記第二のディスクリート回路は、前記第一のディスクリート回路からのコマンドに応じて、前記トラストベクターディスクリプタをロードし、前記第二のディスクリート回路は、前記トラストベクターディスクリプタに基づいて、前記メインプロセッサおよび前記安全なプロセッサによる前記少なくとも一つのリソースへの前記アクセスを媒介するよう動作可能である、
ことを特徴とする、請求項７に記載の装置。
【請求項９】
前記第一のディスクリート回路は、前記要求に応じて前記安全なプロセッサのリセットを開始する、
ことを特徴とする、請求項７に記載の装置。
【請求項１０】
前記リソースは、メモリ（４０６）を含み、前記第二のディスクリート回路は、前記メインプロセッサと前記安全なプロセッサによる、前記メモリへのアクセスを媒介する、
ことを特徴とする、請求項７に記載の装置。
【請求項１１】
前記リソースは、少なくとも一つの周辺デバイス（４３４）を含み、前記第二のディスクリート回路は、前記メインプロセッサと前記安全なプロセッサによる、前記少なくとも一つの周辺デバイスへのアクセスを媒介する、
ことを特徴とする、請求項７に記載の装置。
【請求項１２】
前記少なくとも一つの周辺デバイスは、ハードドライブを含む、
ことを特徴とする、請求項７に記載の装置。
【請求項１３】
ソフトウェア命令の第一の部分と第二の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記ソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための第一の要求を生成するよう動作可能な、第一の安全なプロセッサ（４１４）と、
前記ソフトウェア命令の第三の部分と第四の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第三の部分に関連付けられた第三のコンテキストと、前記ソフトウェア命令の前記第四の部分に関連付けられた第四のコンテキストとの間を切り替えるための第二の要求を生成するよう動作可能な、第二の安全なプロセッサ（４２０）と、
前記第一の安全なプロセッサに連通するよう結合され、前記第一の要求を受信し、前記第一のコンテキストと前記第二のコンテキストの間の第一のコンテキストスイッチを開始し、前記第二のコンテキストは第一のコンテキスト識別子に関連付けられ、さらには、第二の要求を受信し、前記第三のコンテキストと前記第四のコンテキストの間の第二のコンテキストスイッチを開始し、前記第四のコンテキストは第二のコンテキスト識別子に関連付けられる、ディスクリートコンテキストマネージャ回路（４２４）と、
前記第一の安全なプロセッサと前記ディスクリートコンテキストマネージャ回路に連通するよう結合され、前記第一のコンテキスト識別子に基づいて、前記安全なプロセッサと前記第一の安全なプロセッサに関連付けられた少なくとも一つのリソース（４０６、４０８、４３４、４３６）との間のアクセスを媒介するよう動作可能な、第一のディスクリートトラストベクターベリファイヤ回路（４１６）と、
前記第二の安全なプロセッサと前記ディスクリートコンテキストマネージャ回路に連通するよう結合され、前記第二のコンテキスト識別子に基づいて、前記第二の安全なプロセッサと前記少なくとも一つのリソースとの間のアクセスを媒介するよう動作可能な、第二のディスクリートトラストベクターベリファイヤ回路（４２２）と、
を含む、
ことを特徴とする装置。
【請求項１４】
前記第二のコンテキストは、第一のトラストベクターディスクリプタに関連付けられ、前記第一のディスクリートトラストベクターベリファイヤは、前記ディスクリートコンテキストマネージャからのコマンドに応じて、前記第一のトラストベクターディスクリプタをロードし、前記第一のディスクリートトラストベクターベリファイヤ回路は、前記第一のトラストベクターディスクリプタに基づいて、前記第一の安全なプロセッサと前記少なくとも一つのリソースとの間の前記アクセスを媒介するよう動作可能である、
ことを特徴とする、請求項１３に記載の装置。
【請求項１５】
前記第一のディスクリートトラストベクターベリファイヤ回路は、前記要求に応じて、前記安全なプロセッサのリセットを開始する信号を生成する、
ことを特徴とする、請求項１３に記載の装置。
【請求項１６】
スタティックなコンテキスト内で第二のソフトウェア命令を実行するよう動作可能なメインプロセッサ（４２８）と、
前記メインプロセッサに連通するよう結合され、トラストベクターディスクリプタをロードするために前記ディスクリートコンテキストマネージャからコマンドを受信し、前記トラストベクターディスクリプタに基づいて、前記スタティックなコンテキスト内の前記少なくとも一つのリソースへの前記メインプロセッサによるアクセスを媒介する、メイントラストベクターベリファイヤ回路（４３０）と、
をさらに含む、
ことを特徴とする、請求項１３に記載の装置。
【請求項１７】
前記少なくとも一つのリソースは、前記第一の安全なプロセッサ、前記第二の安全なプロセッサおよび前記メインプロセッサによってアクセス可能なメモリ（４０６）を含む、
ことを特徴とする、請求項１６に記載の装置。
【請求項１８】
前記少なくとも一つのリソースは、前記第一の安全なプロセッサ、前記第二の安全なプロセッサおよび前記メインプロセッサによってアクセス可能な周辺デバイス（４３４）を含む、
ことを特徴とする、請求項１６に記載の装置。
【請求項１９】
前記第二のソフトウェア命令は、前記スタティックなコンテキスト内で実行されるオペレーティングシステムを含む、
ことを特徴とする、請求項１７に記載の装置。
【請求項２０】
前記オペレーティングシステムは、テレビ受信機として動作可能である、
ことを特徴とする、請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記述される本発明の種々の実施形態は、安全な環境において一つ以上のプロセッサの実行を制御するための装置、システムおよびプロセスに関する。さらに、これらの種々の実施形態の実装は、ケーブル、衛星、電気通信、ワイヤレス、および／もしくは他のオーディオ、ビデオおよび／もしくはデータサービス提供者によって提供されるような、無線、ならびに、有線でのテレビ受信デバイスにおいてプロセッサの実行を制御することを含みうる。
【０００２】
［関連出願］
本出願は、２００７年５月１１日に出願され、本明細書にその全体が参照によって組み入れられているU.S. Provisional Application No. 60/917,582の“APPARATUS, SYSTEM AND METHOD FOR CONTROLLING PROCESSOR EXECUTION IN A SECURE ENVIRONMENT”の出願日の利益を主張する。
【発明の概要】
【０００３】
本明細書で記述される種々の実施形態は、ソフトウェアの一部を実行するための安全なコンピュータ環境を確立し、実行するための装置、システムおよび方法に関する。さらに詳細には、一実施形態は、コンピュータ環境リソースに対する制限されたアクセスを提供する環境においてソフトウェアの一部を実行する安全なプロセッサを提供する。
【０００４】
別の実施形態においては、安全なコンピュータ環境を提供するためのシステムは、安全なプロセッサ、コンテキストマネージャ、およびトラストベクター ベリファイヤを含むが、それに限定はされない。安全なプロセッサは、関連するコンテキスト、例えばソフトウェアが制限される特定のオペレーティング環境を有する、幾つかのもしくは全てのソフトウェアプログラムおよび／もしくはルーティンを実行するよう構成されうる。ソフトウェアは、例えば、方法、サブプログラム、ルーティン全アプリケーション、もしくは一つ以上のソフトウェアアプリケーションのあらゆる部分をも含みうる。少なくとも一つの実施形態においては、ソフトウェアは一つ以上のコンテキストに制限されうる。
【０００５】
さらに別の実施形態においては、安全なオペレーティング環境における安全なプロセッサの実行を制御するための方法は、コンテキストスワップを要求する安全なプロセッサを含む。一実施形態においては、コンテキストスワップは、ソフトウェアの異なる部分のための新規のコンテキストに対するスイッチである。一実施形態においては、コンテキストマネージャはコンテキストスワップ要求を受信する。さらなる実施形態においては、コンテキストマネージャは、トラストベクターベリファイヤにトラストベクターディスクリプタをロードする。少なくとも一つの実施形態においては、コンテキストマネージャは安全なプロセッサをリセットする。さらなる実施形態においては、トラストベクターベリファイヤは、ロードされたトラストベクターディスクリプタに基づいて、一つ以上のリソースに対しての安全なプロセッサのアクセスを制御する。
【０００６】
コンピュータで読み出し可能な媒体には、安全なプロセッサの実行を制御するために使用されるエンコードされたデータ構造を有することが記述される。データ構造は、安全なプロセッサのためのオペレーティング環境を定義する一つ以上のコンテキストについてのデータを含みうる。さらには、コンテキストは、任意のコンテキストを識別するフィールド、安全なプロセッサがアクセス可能なメモリの一つ以上の領域の宛先、および安全なプロセッサがアクセス可能な一つ以上のハードウェアリソースの宛先を含みうる。同様に、データ構造を実行するコンピュータシステムは、安全なプロセッサがハードウェアトラストベクターに従ってハードウェアリソースにアクセス可能かどうかを決定する。
【０００７】
この“ 発明の概要”は、以下の“発明を実施するための形態”にさらに記述される、簡略化された形式における概念の選択を紹介するために提供される。この“発明の概要”は、特許請求の範囲に記載された対象 の重要な特徴もしくは本質的特徴を特定することを意図するものではなく、ましてや特許請求の範囲に記載された対象の範囲を限定するために使用されることを意図するものではない。
【図面の簡単な説明】
【０００８】
幾つかの実施形態は、付随する図面に関連して以下に記述される。幾つかの図面内の類似する参照番号は、類似する構成要素を示す。
【図１】本明細書で記述される本発明の少なくとも一つの実施形態において使用するためのコンピュータ環境のブロック図である。
【図２】少なくとも一つの実施形態において使用するためのトラストベクターテーブルの一実施形態の簡略化されたデータ構造図である。
【図３Ａ】コンピュータ環境においてコンテキストを変更する方法、およびコンピュータ環境を維持する方法の一実施形態のフロー図である。
【図３Ｂ】コンピュータ環境においてコンテキストを変更する方法、およびコンピュータ環境を維持する方法の一実施形態のフロー図である。
【図４】少なくとも一つの実施形態において使用するためのデバイスのブロック図である。
【図５】別の実施形態において使用するためのデバイスのブロック図である。
【図６】本明細書で記述される本発明の少なくとも一つの実施形態において使用するための、および／もしくは少なくとも一つの実施形態とともに使用するための、ソフトウェアコードもしくはデータのためのメモリ領域を認証する方法のフロー図である。
【発明を実施するための形態】
【０００９】
本開示は、付随する図面に関連して、ここで幾つかの実施形態をより十分に説明するが、図面には、考えられる実施形態の一部 が示されているに過ぎない。しかしながら、他の態様は多くの異なる形式で具現化されてもよく、本明細書で説明される実施形態に限定されると解釈されるべきではない。本明細書で説明される実施形態は、信頼されたマイクロプロセッサコンピューティングを含む方法およびシステムに関する。このようなコンピューティングは、例えば、有料衛星テレビシステムにおいて生じうる。他の実施形態は、例えば、ケーブルテレビ、テレビ放送、有線もしくはワイヤレス電気通信システム、オーディオ／ビデオ／データ配信システム、あらゆるコンテンツ配信サービス、ならびに／またはあらゆる他のコンピュータ環境をも含みうるが、そのいずれにも限定はされない。
【００１０】
図１に示される実施形態においては、コンピュータ環境１００は、点線１０２によって表される安全なコンピュータ環境もしくはオペレーティング環境を含みうる。安全なコンピュータ環境もしくはオペレーティング環境１０２は、安全なセントラルプロセッシングユニット（“ＣＰＵ”）もしくはプロセッサ１０４、コンテキストマネージャ１０６およびトラストベクターベリファイヤ１０８を含みうる。さらには、プロセッサ１０４、コンテキストマネージャ１０６およびトラストベクターベリファイヤ１０８の各々は、お互いに直接的にもしくは間接的に連通しうる。安全なプロセッサ１０４は、あらゆるタイプの汎用プロセッサであり、所望されるように安全になるよう特別に設計されうる。実施形態においては、コンテキストマネージャ１０６およびトラストベクターベリファイヤ１０８は、本発明の環境において使用するための、特別に設計されたハードウェアデバイス、ソフトウェアモジュール、もしくはハードウェアとソフトウェアの組み合わせでありうる。
【００１１】
一実施形態においては、安全なプロセッサ１０４は、少なくとも３つの基本的なアクティビティを実施するために動作する。そのアクティビティとは、ソフトウェアプログラム内での数学関数もしくは論理演算を実行すること、ソフトウェアプログラム内で使用されるデータを保持するため、メモリ内の異なる位置とデータをやりとりすること、ならびに／または、決定を行い、ソフトウェアプログラム内で新しい命令にジャンプすることである。これらのタスクを達成するため、安全なプロセッサ１０４は、（図示されていない）演算もしくは論理ユニット（ＡＬＵ）、レジスタ１２４、メモリ１２２および内部メモリもしくは外部メモリ、または他のデータストレージ１２６を含みうる。ＡＬＵは、数学関数もしくは論理演算を実施する。レジスタ１２４は、安全なプロセッサ１０４によって実行される演算に関する情報もしくはデータを保持する。例えば、データレジスタは、ＡＬＵによって完了される数学的演算において使用されるデータ値を保持し、メモリレジスタはデータが格納されるべきメモリ１２６内のアドレスを保持しうる。メモリ１２６は、一般的には、一時的にかまたは別の方法でデータを保持する、および／もしくは格納するような、一つ以上のハードウェアデバイス、構造、もしくはコンポーネントから成る。一実施形態においては、メモリはキャッシュ１２２（安全なプロセッサ１０４によって定期的にアクセスされるデータを保持する）と、一つ以上の他のメモリ１２６を含む。キャッシュ１２２は、安全なプロセッサ１０４内に統合されたメモリ領域、安全なプロセッサ１０４へと直接接続されたメモリ、または、安全なプロセッサ１０４に、容易にアクセスされる、もしくはインターフェイスで接続される、メモリ１２６の領域である。別の実施形態においては、メモリ１２６は、メモリ管理ユニット（ＭＭＵ）１２８を含み、これはメモリ１２６からのデータの読み出し、およびメモリ１２６へのデータの書き込みを制御する。メモリ１２６は、一つ以上のタイプのメモリ、例えば、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、ハードドライブ、光学式ストレージ、もしくは、データを保持する一つ以上の他のメモリ技術から構成されうる。当業者は、安全なプロセッサ１０４がコンピュータシステムに関する意味に限定されることなく、本技術分野において既知の他のコンポーネントおよび機能をも含んでもよいことを理解するであろう。さらには、本明細書でのコンピュータシステムの説明は、本発明の実施形態についての説明を簡略化するために提供されており、本発明は、本明細書で記述されるコンピュータシステムに限定されるべきではない。
【００１２】
上述された３つのアクティビティの実施においては、安全なプロセッサ１０４は、ソフトウェアの一部を実行する。これらのソフトウェアの一部は、一般的には、大規模なタスクを達成するためのソフトウェアプログラムもしくはアプリケーションを形成するために結合する。一般的には、ソフトウェアの一部は、安全なプロセッサ１０４によって実行される一つ以上の命令である。以下では、ソフトウェアの一部は、ソフトウェアルーティン、サブルーティンもしくはモジュールと称されうる。ソフトウェアの一部を実行するとき、安全なプロセッサ１０４は、（図示されていない）スタックと呼ばれる抽象データ型を生成しうる。スタックは、安全なプロセッサ１０４が、それぞれデータもしくは命令をそこに格納したり、そこから読み出したりする、例えば、キャッシュ１２２もしくはメモリ１２６などの、メモリ内の一組のメモリアドレスでありうる。例えば、一つのデータもしくは命令がスタック内に保存されるとき、安全なプロセッサ１０４は、レジスタ１２４内に、スタックポインタ（データもしくは命令が格納されるメモリ内のアドレス）を記録しうる。データは、ソフトウェアの二つ以上の部分の間で共有され、この共有を容易にするため、データはソフトウェアの（複数の）部分に提供されるスタックおよびスタックポインタ内に格納されうる。
【００１３】
種々の実施形態においては、安全なプロセッサ１０４は、例えばソフトウェア、メモリ１２２／１２６およびリソース１２０の組み合わせを含む、オペレーティング環境において種々のソフトウェア部分を実行する。安全なプロセッサ１０４は、任意の動作を実施するために、ソフトウェア、メモリ、リソースなどを実行し、インターフェイス接続し、および／もしくは使用するように構成されうる。悪質なコードもしくはその他望まれていないコードの導入を防ぐため、および／または最小限化するため、安全なプロセッサ１０４のオペレーティング環境の制御を容易にするシステム、方法、装置などが提供される。
【００１４】
少なくとも一つの実施形態においては、安全なオペレーティング環境１０２は、一つ以上の“コンテキスト”によって指定されうる。コンテキストは、安全なプロセッサ１０４が実施することを許可された命令、関数および／もしくは演算 を指定することによって、オペレーティング環境の境界を定義する。例えば、ソフトウェアアプリケーションは、４つの命令を含みうる。コンテキストは、安全なプロセッサ１０４が、これらの４つの命令のうちの第一番目、これらの命令のうちの一つ以上、これらの命令の全て、それらの組み合わせなどを実行可能であることを指定しうる。すなわち、コンテキストは、指定されない命令の実施を排除するような、許可された環境を確立しうる。例えば、安全なプロセッサ１０４が、４つの命令のうちの一つではない命令を実行しようとする場合、エクセプション が認められ、安全なプロセッサ１０４は、他の命令を実行することが阻止される。
【００１５】
別の実施例においては、コンテキストは、安全なプロセッサがメモリアドレス１−２０のみに対してアクセスすることを許可しうる。安全なプロセッサがメモリアドレス４０へアクセスしようと試みた場合、エクセプションが認められ、安全なプロセッサ１０４は、メモリアドレス４０へのアクセスが阻止される。
【００１６】
さらに別の実施例においては、コンテキストは、安全なプロセッサ１０４がハードドライブのみにアクセスを許可されることを指定しうる。安全なプロセッサ１０４がユーザインターフェイスデバイスへアクセスを試みると、エクセプションが認められ、安全なプロセッサ１０４はユーザインターフェイスへのアクセスが阻止される。
【００１７】
種々の実施形態においては、コンテキストマネージャ１０６およびトラストベクターベリファイヤ１０８は、コンテキストを確立し、かつ実行する。コンテキストマネージャ１０６は、コンテキストの変更を管理する。ソフトウェアのうちの二つ以上の部分は、それぞれ関連するコンテキストを有する。ソフトウェアの第一部分を実行するとき、第一のコンテキストは安全なオペレーティング環境を定義するために使用される。同様に、安全なプロセッサ１０４が、ソフトウェアの第二部分を実行するとき、異なる第二のコンテキストが、異なる安全なオペレーティング環境を定義するために使用される。ソフトウェアの部分を切り替えるため、コンテキストマネージャは、実行されるソフトウェアの新規の部分に関連付けられた新規のコンテキストを確立する。新規のコンテキストの確立においては、ソフトウェアの新規部分は、ソフトウェアのその部分に適合されたオペレーティング環境において実行する。ソフトウェアの新規部分によるコンテキストからのずれは、セキュリティエクセプションとして認められる。このように、安全なオペレーティング環境は、所望されるように安全なプロセッサ１０４の演算を制御するためソフトウェアの各部分のために設定される。
【００１８】
上述されたように、種々の実施形態は、コンテキストを実行するトラストベクターベリファイヤ１０８をも含みうる。トラストベクターベリファイヤ１０８は、安全なプロセッサ１０４と、リソース１２０およびメモリ１２６などの任意のシステムの他の仮想コンポーネントもしくは物理コンポーネントとの間に、仮想的に、および／もしくは物理的に（データ信号のフロー内に）配置される。トラストベクターベリファイヤ１０８の配置と併せて、トラストベクターベリファイヤ１０８は、安全なプロセッサ１０４、リソース１２０および／もしくはメモリ１２６の間の通信を中断するよう構成されうる。実施形態においては、トラストベクターベリファイヤ１０８は、任意のコンテキストを定義し、ならびに、トラストベクターベリファイヤ１０８が、安全なプロセッサ１０４による動作と比較するような情報をロードされうる。動作がトラストベクターベリファイヤ１０８内にロードされた情報に匹敵しない場合、その動作はそのコンテキスト内で許可されない。ロードされた情報に匹敵しない動作は、許可されたコンテキスト外である。トラストベクターベリファイヤ１０８は、これらの動作をエクセプションとして認め、動作が生じるのを阻止する。例えば、トラストベクターベリファイヤ１０８は、安全なプロセッサ１０４からメモリ１２６に対するアクセスの要求を受信し、トラストベクターベリファイヤ１０８は、その要求が現在のコンテキスト内で許可されるかどうかを決定し、その要求が許可されない場合には、トラストベクターベリファイヤ１０８は、エクセプションを認め、メモリ１２６へのアクセスを阻止する。
【００１９】
安全なプロセッサ１０４は、ソフトウェアの第一の部分の実行とソフトウェアの第二の部分の実行との間を定期的に切り替えるようにも構成されうる。一実施形態においては、ソフトウェアの異なる部分間の実行を切り替える前に、一つ以上のステップがシステム１００の安全性を確保するために実施されうる。例えば、安全なプロセッサ１０４は、キャッシュ１２２および／もしくはＭＭＵ１２８をクリアして、スタック内のデータへポインタを保存する。安全なプロセッサ１０４は、コンテキストスワップ１１０のための要求（すなわち、新規の所定のコンテキストへ変更するための要求）を、コンテキストマネージャ１０６へと通信しうる。実施形態においては、コンテキストマネージャ１０６は、安全なプロセッサ１０４へとリセット１１２を送信してそれをリセットし、かつ、トラストベクターベリファイヤ１０８へと命令１１４を送信して、メモリ１２６から、もしくはトラストベクターベリファイヤ１０８によってアクセス可能な（図示されていない）他の安全なメモリから、所望のコンテキストに関連づけられたトラストベクターディスクリプタをロードする。実施形態においては、リセットは、結果として、望ましいことに、安全なプロセッサ１０４の一つ以上の内部状態をクリアする。このようなクリアが安全なプロセッサ１０４へと悪質なソフトウェアが導入されるリスクを軽減することを理解されたい。リセットは、安全なプロセッサ１０４の一つの、複数の、もしくは全ての状態をクリアするあらゆる方法を含みうる。別の実施形態においては、安全なプロセッサ１０４は、リセットの間、全ての状態情報が動作不可能かつ使用不可能な状態にされるように構成されうる。
【００２０】
より詳細には、少なくとも一つの実施形態のために、安全なプロセッサ１０４は、ブートもしくはハードリセット動作を実行することによってリセット機能を達成しうる。例えば、安全なプロセッサ１０４が新規のコンテキスト内の一つ以上の命令を実行する前に、このようなブートが生じうる。このようなブートは、ソフトウェアの再ロードを必要とするソフトブート、または、安全なプロセッサ１０４および／もしくは一つ以上の他のコンポーネントの電源のオンオフ を必要とする、ハードブートでありうることを理解されたい。望ましくは、各実施形態にとって必然ではないが、ソフトブートおよびハードブートは両方とも、キャッシュ１２２、レジスタ１２４、および／もしくはメモリ１２６内に格納されたデータおよび／もしくは命令のうちの（全てではない場合には）幾つかを消去する。実施形態においては、一つ以上の周知の方法が、キャッシュ１２２、レジスタ１２４、および／もしくはメモリ１２６内のデータもしくは命令のうちの幾つかもしくは全てを消去するために使用されうる。例えば、格納されたメモリアドレスは、以前に格納されたデータの上に新規データを書き込むことによって削除されうる。このように、安全なプロセッサ１０４は、第一のコンテキストのためには有用でも第二のコンテキストのために望ましくないデータおよび／もしくは命令を消去するか、さもなければ使用不可能な状態にするように構成されうる。
【００２１】
少なくとも一つの実施形態においては、安全なプロセッサ１０４は、あるコンテキストから別のコンテキストへといかなる状態情報も保持しない。すなわち、安全なプロセッサは、いかなる以前のコンテキストもしくはソフトウェアのいかなる情報も保持しないよう構成されうる。
【００２２】
図１に示されるように、トラストベクターベリファイヤ１０８は、通信パス１１６を介して安全なプロセッサ１０４と連通する。一実施形態においては、セキュリティエクセプションを妨げるために、一般的には、トラストベクターベリファイヤ１０８は、ハードウェアインタラプト１２１を安全なプロセッサ１０４へと送信するよう構成されうる。ハードウェアインタラプト１２１の受信によって、図３に関連して以下に説明されるように、安全なプロセッサ１０４はリセットするか、ならびに／または、別のコンテキストへブートもしくは再ブートする。この他のコンテキストは、前もって決定されているかもしくはリアルタイムで決定されうる。別の実施形態においては、トラストベクターベリファイヤ１０８は、セキュリティエクセプションに応じて新規のコンテキストへのコンテキストスワップを要求する間、現在のコンテキスト内のセキュリティエクセプションを処理するよう構成されうる。
【００２３】
トラストベクターベリファイヤ１０８は、種々の実施形態においては、あらゆる任意のコンテキストを実行させる情報で構成され、かつその情報をロードされうる。このような情報は、永久的にロードされるか、コンテキストスワップよりも前にロードされるか、安全なプロセッサのリセット中にロードされるか、安全なプロセッサ１０４がリセットされた後に、および／もしくは別の時間にロードされうる。例えば、ロードされた情報は、メモリ１２６もしくは（図示されていない）他の安全なメモリからロードされた、一つ以上のトラストベクターディスクリプタを含みうる。このようなメモリ１２６は、所望のようにトラストベクターベリファイヤ１０８によってのみアクセス可能なように構成されうる。他の実施形態においては、トラストベクターベリファイヤ１０８は、ＲＯＭ、ＥＥＰＲＯＭ、ハードドライブなどの一つ以上の専用メモリデバイスもしくは共有メモリデバイスを含み、ならびに／またはそれに対するアクセスを有しうる。このようなメモリは、所望のように、一つ以上のトラストベクターディスクリプタを持続的に含むように構成されうる。トラストベクターディスクリプタは、少なくとも一つの実施形態においては、安全なプロセッサ１０４が実行しうるソフトウェアプログラム、ルーティンおよび／もしくは命令を定義する。トラストベクターディスクリプタは、どのように、いつ、および／もしくはどのリソースに、安全なプロセッサ１０４がアクセスし、制御し、使用し、通信することなどが可能かを定義するようにも構成されうる。同様に、トラストベクターディスクリプタは、メモリ１２６か１２２のどちらに安全なプロセッサ１０４がアクセスしうるか、ならびに、安全なプロセッサ１０４がコンテキスト内で開始し、実行し、および完了しうる他のアクティビティを定義しうる。
【００２４】
トラストベクターディスクリプタの一実施形態は図２に示される。この実施形態においては、トラストベクターディスクリプタは、少なくとも一つのトラストベクターディスクリプタ２０２を含み、かつ、複数のトラストベクターディスクリプタ２０２、２０４もしくは２０６を含みうる。（複数の）トラストベクターディスクリプタは、例えば、トラストベクターテーブル（ＴＶＴ）データ構造２００もしくは他のあらゆる所望のデータ構造内に格納されうる。図１に関連して上述されたように、トラストベクターベリファイヤ１０８による使用のためにトラストベクターディスクリプタ２０２をロードするかさもなければ指定することによって、新規のコンテキストが確立され、安全なプロセッサ１０４の動作を管理する。
【００２５】
図２に示される実施形態にさらに示されるように、各トラストベクターディスクリプタ２０２、２０４および２０６は異なるコンテキストを定義することができ 、そのため異なるデータを有しうる。トラストベクターディスクリプタ２０２、２０４および２０６の各セクションにおけるデータは、実施形態においては、特定のデータ型である。各トラストベクターディスクリプタ２０２、２０４および２０６は、一つ以上の他のデータフィールドを含みうるが、記述されたデータフィールドに限定はされない。トラストベクターディスクリプタ２０２、２０４および２０６は、コンテキスト識別（ＩＤ）フィールド２０８によって識別されうる。さらなる実施形態においては、各トラストベクターディスクリプタ２０２、２０４および２０６は、コード開始アドレス２１０、コード終了アドレス２１２、キー番号２１４、ターゲットＣＰＵおよびベクター番号（＃）２１６、スクラブタイプ２１８、ハードウェアトラストベクターディスクリプタ２２０、メモリデータ領域２２２、ＣＰＵブートアドレス２２４、トラストベクターディスクリプタシグニチャ２２６およびコードシグニチャ２２８のためのデータフィールドを含みうる。
【００２６】
コード開始アドレス２１０およびコード終了アドレス２１２は、安全なプロセッサ１０４（図１）によって認証され、その後実行されるべきコード部分を識別する。実行されるべきコード部分を識別するための他の方法（例えばコード開始アドレスとコード長）が存在することを理解されたい。例えば、コード開始アドレス２１０およびコード終了アドレス２１２は、所望のコードを含む、一組以上の複数かつ不連続なメモリ領域 を指定しうる。このような領域は、例えば、二つ以上の開始アドレスおよび終了アドレスによってさらに指定されうる。
【００２７】
少なくとも一つの実施形態においては、トラストベクターディスクリプタ２０２、２０４および２０６は、ソフトウェア、および／もしくはその実行されるべき部分の信頼性を検証するために使用されるキー番号および／もしくは他の参照情報を含みうる。参照情報は、例えば、コードを認証するために使用されるコードのフィンガープリント（身分証明）、コードを認証するために使用されるコードのシグニチャ、および／もしくはコードのシグニチャを検証するために使用されるキーに対する参照を含みうる。さらに、複数のキーを伴う一実施形態においては、キー番号２１４は、生成されたシグニチャを検証し、それによってソフトウェアの一部を認証するためにどのキーを使用するか指定しうる。このような検証は、例えば、生成されたシグニチャをトラストディスクリプタシグニチャ２２６および／もしくはコードシグニチャ２２８と比較することによって生じうることを理解されたい。
【００２８】
ターゲットＣＰＵフィールド２１６は、システムが複数のプロセッサを有する場合に、どのプロセッサを使用するか指定する指定子を提供する。図４に関連して説明されるように、ソフトウェアの一部は、一つ以上の安全なプロセッサ上で実行されうる。ベクター数フィールド２１６は、トラストベクターディスクリプタ２０２のための指定子を提供する。
【００２９】
スクラブタイプフィールド２１８は、図６に関連して記述されるように、ソフトウェアの一部をどのようにスクラブするか、すなわちソフトウェアの一部の信頼性をどのように証明するかについての情報を提供する。例えば、ソフトウェアの一部がいったん認証されるかスクラブされる場合、スクラブタイプフィールド２１８は、“最初の”スクラブの指定子を含みうる。他のタイプのスクラブ方法は、“連続的”スクラブ（それによってソフトウェアの一部が動作間に連続的にスクラブされる）と“スクラブしない”（ソフトウェアの一部のいかなるスクラブも必要としない）を含むが、そのいずれにも限定はされない。他の実施形態においては、他のスクラブ方法が使用されうる。
【００３０】
ハードウェアトラストベクターディスクリプタフィールド２２０は、コンテキスト内のリソースアクセスを定義するために使用されうる。さらに詳細には、ハードウェアトラストベクターディスクリプタ２２０は、任意のトラストベクターディスクリプタ２０２、２０４、２０６によって定義されるコンテキスト内で実施される動作中に、安全なプロセッサ１０４（図１）がインターフェイス接続したり、通信したりしうるような、周辺デバイスもしくは内部コンポーネントなどのリソースを識別する。一実施形態においては、ハードウェアトラストベクターディスクリプタ２２０は、ビットマップもしくはビットアレイであり、アレイの各ビットは、あるタイプのハードウェアを表す。例えば、ハードウェアトラストベクターディスクリプタ２２０は、“０１０１”として現れうる。“１”に設定された第一のビットは、プロセッサがハードドライブコントローラにアクセス可能なことを表しうる。“０”に設定された第二のビットは、プロセッサがスマートカードにアクセスできないことを表しうる。“１”に設定された第三のビットおよび“０”に設定された第四のビットは、プロセッサがＩ／Ｏポートにアクセス可能であるが、ビデオコントローラにはアクセスできないことを表しうる。ハードウェアトラストベクターディスクリプタ２２０内のビット数は、安全なプロセッサが使用される実施形態ごとに異なり、４ビットよりも少ないかもしくは多いビット数でもありうる。ハードウェアトラストベクターディスクリプタ２２０の他の実施形態が使用されうることを理解されたい。例えば、トラストベクターディスクリプタ２２０は、ハードウェアトラストベクター２２０によって識別されるもの以外は、任意の実装内で全てのリソースが安全なプロセッサに対して使用可能であるように構成されうる。他の実施形態もまた可能性があり、付随のもしくは以下に追加された請求項の範囲内に含まれる。
【００３１】
メモリデータ領域フィールド２２２もまた、コンテキスト内のリソースアクセスを定義するために使用され、さらには、安全なプロセッサ１０４（図１）が例えば、メモリからデータを読み出す、および／もしくはメモリへデータを書き込むためにアクセス可能なメモリ１２６（図１）内のアドレススペースを定義するために使用される。ハードウェアトラストベクター２２０に関しては、メモリデータ領域フィールド２２２は、開始アドレスおよび停止アドレスに基づいて、隣接ブロックとしておよび／もしくはその他のものとして、特定のアドレスによってアドレススペースを指定しうる。同様に、アドレススペースは、アファーマティブ（すなわちアクセスされうるもの）、エクセプション（すなわち、識別されるもの以外は全てがアクセス可能）もしくはその他のもので表現されうる。このように、メモリデータ領域フィールド２２２は、実行可能なデータが読み出されるおよび／もしくは書き込まれることが可能なアドレスを識別しうることを理解されたい。安全なプロセッサが禁止されたデータ領域からのコードを実行するおよび／もしくはデータを使用しようとした場合にセキュリティエクセプションが生じるように、一つ以上の定義されていないアドレス内に含まれるデータは、同様に実行不可能なものとして指定されうる。
【００３２】
一実施形態においては、アクセス可能なメモリ１２６（図１）の一つ以上の部分は、ソフトウェアの他の部分と共有される。さらには、ソフトウェアの各部分は一つ以上のコンテキスト内で実行しうる。このような実施形態においては、ソフトウェアの二つの部分は同一のコンテキスト内で実行されないが、ソフトウェアの一部分は、ソフトウェアの別の部分へとデータをパスする必要がありうる。メモリデータ領域フィールド２２２は、例えば、識別されたアドレススペースへのエクセプションアプローチを使用することによって、この状況をサポートするよう構成されうる。同様に、別の実施形態においては、メモリデータ領域フィールド２２２は、それによって指定されるメモリのあらゆる領域もしくは各領域のために、一つ以上のスクラブ動作に含まれるべきメモリの（複数の）領域を指定する共通のもしくは個別のスクラブビットを含みうる。
【００３３】
本明細書で記述される少なくとも一つの実施形態のために記述されるように、安全なプロセッサ１０４（図１）がコンテキストをスワップするとき、安全なプロセッサはリセットされ、かつ新規のコンテキストへとブートする。図２に関連して、ＣＰＵブートアドレスフィールド２２４は、メモリ１２６（図１）内のアドレスを提供し、そこで安全なプロセッサ１０４（図１）をブートする。一実施形態においては、ブートアドレス２２４は、フラッシュメモリにおけるオフセットである。他の実施形態においては、ブートアドレス２２４は、ＲＯＭアドレス、ＲＡＭアドレス、もしくはメモリ１２６のための他のアドレスである。一実施形態においては、各コンテキストは固有のブートアドレス２２４を有しうる。
【００３４】
トラストベクターディスクリプタ２０２、２０４および２０６は、シグニチャフィールド２２６をも含みうる。シグニチャフィールド２２６は、各トラストベクターディスクリプタ２０２、２０４、２０６を検証する上で使用するためのデータ値、例えばプライベートキーを提供する。トラストベクターディスクリプタの検証は、トラストベクターベリファイヤ１０８（図１）が任意のトラストベクターディスクリプタをロードするよう指示される前、もしくはその後に生じうる。さらには、シグニチャフィールド２２６は、任意のトラストベクターディスクリプタのフィールド２０８から２２８内のデータの幾つか、もしくは全てを検証する上で使用するためのシグニチャを提供するよう構成されうる。さらに、安全なプロセッサ１０４（図１）がソフトウェアの任意の部分の一部もしくは全てを実行することを許可する前に、ソフトウェアの任意の部分のうちの一部、もしくは全てが、図６に関連して説明されるようにスクラブされるか、もしくは認証される、または、ソフトウェアの任意の部分のうちのいずれもスクラブされないか認証されないことを理解されたい。
【００３５】
本発明の少なくとも一つの実施形態においては、トラストベクターディスクリプタは、安全なプロセッサによってそれを実行する前に、ソフトウェアコードの任意の部分を検証する上で使用するためのデータを提供する、コードシグニチャフィールド２２８を含むようにも構成されうる。デジタルシグニチャのあらゆるタイプがシグニチャ２２６および／もしくはコードシグニチャ２２８として使用されうることを理解されたい。例えば、デジタルシグニチャは、プライベートおよびパブリックキーシステムを使用しうる。このような認証方法は、１９９４年５月１９日に出版された、Federal Information Processing Standard Publication 186のDigital Signature Standard(DSS)に記述され、この文書は、デジタルシグニチャ、プライベートキーシステムおよびパブリックキーシステムの使用を詳細に教示するため、その教示全体が参照によって本明細書に組み入れられている。 
【００３６】
図３Ａおよび図３Ｂには、コンテキストのスワップ３０１のプロセス３００、およびセキュリティエクセプションの管理３０９の実施形態を示すフロー図が示される。コンテキストスワッププロセスは、コンテキストマネージャ、安全なプロセッサおよび／もしくは安全なプロセッサとコンテキストマネージャの組み合わせによって実行されうる。図３Ａに示されるように、安全なプロセッサ１０４（図１）によって現在実行されているコンテキストは、保存される（動作３０３）。少なくとも一つの実施形態においては、安全なプロセッサ１０４（図１）は、スタックにポインタを保存し、メモリ１２６（図１）へあらゆる必要とされるデータを格納し、コンテキストスワップが生じる前に必要とされるあらゆる“クリーンアップ”機能を完了する。保存動作は、（図３Ａに示されるように）コンテキストスワップ前に、要求に応じて、規則的な間隔で、必要とされる基準に基づいて、および／もしくはその他の理由で生じうる。コンテキストスワッププロセスは、コンテキストスワップ要求の通信（動作３０２）をも含みうる。この要求は、通常、安全なプロセッサからコンテキストマネージャへと送信され、コンテキストスワップが要求される前もしくはその後に生じ、種々の状況で発生しうる。
【００３７】
例えば、安全なプロセッサが異なるもしくは第二のコンテキストの下で、ソフトウェアの第二の部分を実行する必要がもたらされるような状況が生じたとき、安全なプロセッサ１０４（図１）は、ソフトウェアの第一の部分を実行していてもよい。ソフトウェアの第二の部分の実行を容易にするため、安全なプロセッサ１０４（図１）は図３Ａで動作３０２によって示されるように、コンテキストマネージャ１０６（図１）へコンテキストをスワップする要求を通信するよう構成されうる。コンテキストスワップ要求は、例えば、安全なプロセッサ１０４（図１）がスワップすることを望むコンテキスト２０２（図２）のためのコンテキストＩＤ２０８（図２）を含みうる。コンテキストスワップ要求は、特定の実装もしくは使用される実施形態に依存して、追加のもしくは他の情報を含みうる。
【００３８】
図３Ａにさらに示されるように、コンテキストスワッププロセスは、安全なプロセッサ１０４のリセット（動作３０４）を含みうる。すなわち、安全なプロセッサによって通信されたコンテキストスワップ要求を受信した後で、安全なプロセッサはコンテキストマネージャによってリセットされうる。安全なプロセッサは、望ましいことに、安全なプロセッサのキャッシュ１２２、ＭＭＵ１２８、レジスタ１２４、メモリなどの中にあるあらゆるデータを消去し、かつ、安全なプロセッサ１０４（図１）から、以前のソフトウェア状態を消去する。また、種々の実施形態は、要求動作３０２および／もしくは保存動作３０３が達成されることなくリセット動作３０４を含みうることを理解されたい。
【００３９】
図３Ａにさらに示されるように、コンテキストスワッププロセスは、トラストベクターベリファイヤへとトラストベクターをロードするステップ（動作３０６）をも含みうる。所望された場合、コンテキストマネージャ１０６（図１）はディスクリプタ２０２（図２）などのトラストベクターディスクリプタをトラストベクターベリファイヤ１０６（図１）へとロードする。本発明のある実施形態に関連して上述されたように、トラストベクターベリファイヤは、非アクティブ状態にあるディスクリプタを事前にロードされうる。このように、トラストベクターベリファイヤのロードは、あらゆる任意の実施形態にとってオプションである、および／もしくは不必要でありうることを容易に理解されたい。
【００４０】
コンテキストスワッププロセスは、トラストベクターベリファイヤにロードされた、あるいは必要に応じてその他の方法でアクティブ状態のために指定されたソフトウェアの一部が、新規のコンテキストと使用できる状態にあるように、新規のコンテキストを有効化（イネーブルに）するステップ（動作３０８）をも含む。幾つかの実施形態においては、トラストベクターディスクリプタ２０２（図２）は、生成されたシグニチャに対して、トラストベクターディスクリプタ２０２（図２）内に保存されたシグニチャ２２６（図２）を比較することによって認証されうる。このような認証は、ディスクリプタがトラストベクターベリファイヤ１０８へロードされる前もしくはその後に起こりうる。同様に、新規のコンテキスト下で実行されるべきソフトウェアの一部は、コードシグニチャ２２８（図２）を生成されたシグニチャに対して比較することによって認証されうる。トラストベクターディスクリプタとソフトウェアの一部を認証するステップは、図６に関連して以下により詳細に説明される。トラストベクターディスクリプタ２０２とソフトウェアの一部のロードは、望ましくは、新規のコンテキスト内のソフトウェアの実行のために安全なプロセッサを構成する。
【００４１】
セキュリティエクセプション３０９を管理するためのプロセスの実施形態は、図３Ｂに示される。少なくともこの実施形態のために、安全なプロセッサ１０４（図１）から、リソース要求がトラストベクターベリファイヤ１０８（図１）によって受信される。リソース要求の受信（動作３１０）によって、トラストベクターベリファイヤは、その要求を現在のアクティブなトラストベクターディスクリプタと比較し、その要求がそのディスクリプタに適合するかどうかを決定する（動作３１２）。例えば、トラストベクターベリファイヤは、要求されたメモリアドレスを、現在のアクティブなトラストベクターディスクリプタ内の認証されたメモリデータ領域２２２（図２）のリストと比較しうる。
【００４２】
要求が現在のアクティブなトラストベクターディスクリプタに適合するとき、トラストベクターベリファイヤは、安全なプロセッサとリソースとの間に通信が起こることを許可する（動作３１６）。例えば、トラストベクターベリファイヤは、リソース要求１１８（図１）を適切なリソース１２０（図１）へとパスする。
【００４３】
要求がトラストベクターディスクリプタに適合しないとき、セキュリティエクセプションがトリガーされ（動作３２０）、結果としてそれが安全なプロセッサのリセットをもたらす（動作３３０）。少なくとも一つの実施形態においては、トラストベクターベリファイヤは、命令１２１（図１）などのハードウェアインタラプトもしくはリセット命令を、安全なプロセッサへと送信する。さらに、少なくとも一つの実施形態では、セキュリティエクセプションが生じるとき安全なプロセッサのみならず全チップセットがリセットされうる。
【００４４】
プロセスは、さらに、もっとも最近トリガーされたセキュリティエクセプションが、セキュリティエクセプションの第二の発生 かどうかをオプションで決定する（動作３２２）ことを含みうる。もっとも最近トリガーされたセキュリティエクセプションが第二のセキュリティエクセプションではないとき、トラストベクターベリファイヤは、予め決定された期間、 もしくはリアルタイムで決定される期間、待機する（動作３２６）ように指示されうる。さらに、少なくとも一つの実施形態では、トラストベクターベリファイヤは、任意の待機時間が時間切れになった後でリセットされることを安全なプロセッサへと警告するようにプログラムされうる。待ち時間の間、安全なプロセッサは、追加プロセッシングアクションを達成しうるか、および／もしくは追加リソースを要求しうることを理解されたい。待機時間の時間切れによって安全なプロセッサはリセットされる（動作３３０）。
【００４５】
少なくとも一つの実施形態においては、安全なプロセッサのリセットは少なくとも二つの個別の状況下で起こりうる。第一に、安全なプロセッサ１０４（図１）は、コンテキストスワップに応じて、コンテキストマネージャ１０６（図１）によってリセットされうる。コンテキストスワップリセットは、システム１００（図１）へと導入された可能性のあるあらゆる悪質なコードが、別のコンテキストに関連づけられた状態情報にアクセスすることを禁止する。第二に、一つ以上のセキュリティエクセプションに応じて、トラストベクターベリファイヤ１０８（図１）が、安全なプロセッサ１０４（図１）および／もしくはあらゆるサポート回路のハードウェアリセット、もしくはハードブートを開始するといつでも、安全なプロセッサ１０４はリセットされうる。この状況においては、セキュリティエクセプションハードウェアリセットは、悪質なコードが現在のコンテキスト内で認証されていないプロセスを完了するのを阻止する。このように、コンテキストスワップおよびセキュリティエクセプションは、安全なプロセッサ、メモリ、リソースなどの、安全で、および／もしくは認証された使用を容易にし、かつ、安全ではない、および／もしくは認証されていないそのようなコンポーネントの使用に対してある程度の保護を提供する、リセットを開始しうることを理解されたい。
【００４６】
安全なオペレーティング環境４０２の一実施形態を含むデバイス４００の一実施形態のブロック図が、図４に示される。デバイス４００は、例えば、衛星テレビコンバータデバイスでありうる。少なくとも一つの実施形態においては、デバイス４００は、制御電子機器４２６を含み、さらに、安全なオペレーティング環境４０２、メインプロセッサ環境４０４、メモリ４０６、周辺インターフェイス４０８および（ハードドライブ４３４などによって外部データストレージが提供されるとき使用するための）データストレージインターフェイス４１０のうちの一つ以上を含みうるが、それに限定はされない。より詳細には、安全なオペレーティング環境４０２は、第一の安全なプロセッサ４１４および第一のトラストベクターベリファイヤ４１６を含む第一の安全なオペレーティング環境４１２、ならびに、第二の安全なプロセッサ４２０および第二のトラストベクターベリファイヤ４２２を含む第二の安全なオペレーティング環境４１８を含みうる。安全なオペレーティング環境の他の実施形態は、単一の安全なプロセッサ、複数の安全なプロセッサ、単一のベクターベリファイヤ、複数のベクターベリファイヤ、単一のオペレーティング環境もしくは複数のオペレーティング環境を含みうる。第一の安全なオペレーティング環境４１２および第二のオペレーティング環境４１８は、一つ以上の共通のもしくは専用のコンテキストマネージャ４２４へも動作可能なように接続されうる。このように、環境、プロセッサ、ベクターベリファイヤおよびコンテキストマネージャの種々の組み合わせが使用されうることを理解されたい。
【００４７】
さらに図４に示されるように、制御電子機器４２６は、システムバス４３２をも含みうる。バスとやり取りする通信は、図４に示されるように、直接的である、および／または、一つ以上のスタンドアロンもしくは統合されたバスマスターなどを介したものでありうる。例えば、安全なプロセッサ４１４／４２０は、バスマスターを含みうる。
【００４８】
トラストベクターベリファイヤ４１６、４２２および４３０は、望ましくは、安全なプロセッサからシステムバス４３２へ／システムバス４３２から安全なプロセッサへとやりとりするそれぞれの通信を媒介するよう構成される。さらには、一つ以上の安全なプロセッサ（例えば安全なプロセッサ４１４および４２０）は、制御電子機器４２６と同一の（並行した）もしくは異なる機能またはタスクを実行するよう構成されうることを理解されたい。例えば、プロセッサ４２０がセキュリティ機能（例えば、ビデオ信号の解読、ユーザ視聴権の検証、およびテレビコンバータデバイス４００の他のコンポーネントとの相互作用）を処理するよう構成されるのに対し、プロセッサ４１４は、ディスプレイデータおよびユーザコマンドを処理するよう構成されうる。
【００４９】
安全なオペレーティング環境４０２は、安全なプロセッサ４１４および４２０、トラストベクターベリファイヤ４１６および４２２、ならびにコンテキストマネージャ４２４を含み、もう一つの集積回路もしくは個別のディスクリートコンポーネントで提供されうる。例えば、プロセッサ４１４および４２０は、トラストベクターベリファイヤ４１６および４２２とそれぞれ結合して、単一の集積回路もしくは二つの個別の集積回路（すなわち、安全なオペレーティング環境４１２および４１８それぞれにつき一つの集積回路）になりうる。
【００５０】
さらには、安全なプロセッサ４１４および４２０、トラストベクターベリファイヤ４１６および４２２、コンテキストマネージャ４２４および／もしくは他のコンポーネントは、ハードウェアおよび／もしくはソフトウェアのあらゆる所望の組み合わせで提供されうる。例えば、コンテキストマネージャ４２４は、一つ以上のプロセスを含むソフトウェアモジュールでありうる。同様に、一つ以上の論理コンポーネント を含むハードウェア回路が使用されうる。
【００５１】
制御電子機器４２６は、一つ以上の揮発性および／もしくは不揮発性メモリコンポーネント ４０６をも含みうる。このようなメモリデバイスの実施例は、ランダムアクセスメモリおよびフラッシュメモリを含むが、そのいずれにも限定はされない。
【００５２】
安全なプロセッサ４１４および４２０および／もしくはコンテキストマネージャ４２４は、また同様に、あるいはその代りに、（図示されていない）一つ以上の共通のもしくは個別のメモリコンポーネントまたはメモリ範囲へ接続されうる。（安全でありうる）メモリコンポーネントは、例えば、ＴＶＴ２００（図２）および／もしくは、一つ以上のコンテキストに対応する一つ以上のトラストベクターディスクリプタ２０２（図２）を格納するために使用されうる。同様に、メモリコンポーネントは、トラストベクターディスクリプタおよび／もしくはソフトウェア部分の計算されたシグニチャとリファレンスシグニチャを比較する上で使用される、計算されたハッシュを格納するように構成されうる。
【００５３】
コンテキストメモリ範囲、リファレンスシグニチャおよびトラストベクターディスクリプタは安全ではないメモリ４０６内に格納されうる。例えば、コンテキストメモリ範囲、リファレンスシグニチャ、および／もしくはトラストベクターディスクリプタは、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、もしくはフラッシュメモリなどの再書き込み可能な揮発性メモリ内に格納されうる。少なくとも一つの実施形態においては、コンテキストマネージャ４２４は、ポインタ、メモリアドレス、もしくは類似のリファレンスを使用することによってメモリ４０６と通信しうる。
【００５４】
安全なプロセッサ４１４および４２０、ならびにトラストベクターベリファイヤ４１６、４２２、および４３０は、少なくとも一つの実施形態においては、汎用プロセッサでありうる。安全なプロセッサは、キャッシュおよびメモリ管理ユニット（ＭＭＵ）をも含みうるが、それに限定はされない。安全なプロセッサは、命令フェッチ、データ読み出し／書き込み、Ｉ／Ｏ読み出し／書き込みならびに他の機能およびルーティンを、必要とあれば実行もしうる。
【００５５】
一つ以上のトラストベクターベリファイヤ４１６、４２２および４３０は、安全なプロセッサ４１４および４２０と、システムバス４３２、メモリ４０６、周辺インターフェイス４０８、データストレージインターフェイス４１０および／もしくは制御電子機器４２６の他のコンポーネントとのアクセスを媒介するため、一つ以上のアドレスチェッカーを利用する。さらに、トラストベクターベリファイヤ４１６、４２２および４３０は、プロセッサ４１４、４２０もしくは４２８から、システムバス４３２への直接接続、ならびに、その延長による、メモリ４０６、周辺インターフェイス４０８、もしくはハードドライブインターフェイス４１０への直接接続を妨げる。プロセッサとバス間のゲートキーパーとして動作することによって、トラストベクターベリファイヤは、安全なプロセッサと他のシステムコンポーネントとの間の接続および／もしくは分離を制御して容易にしうる。
【００５６】
トラストベクターベリファイヤは、それらが使用される実施形態に依存して、あらゆる任意の時間に一つ以上のコンテキストを処理するよう構成されうる。同様に、トラストベクターベリファイヤ４１６は、アドレスチェッカーとして構成され、任意のコンテキストに対する有効なメモリ範囲を格納しかつ検証する。このような情報は、例えばトラストベクターディスクリプタ内の個別の入力として格納されうる。コンテキストデータを処理するその他の方法が可能であり、本発明の種々の実施形態の範囲内であることを当業者は理解するであろう。
【００５７】
トラストベクターベリファイヤは、一つ以上のプロセッサアクセス要求が有効範囲外であるという決定に到達したときにはいつでも、信号、フラグ、セキュリティエクセプションまたはその他によって応答するように構成されうる。同様に、トラストベクターベリファイヤは、メモリ４０６のあらゆる範囲にとっての読み出し、読み出し／書き込みおよび書き込みなどのアクセスモードを検証するよう構成されうる。例えば、トラストベクターベリファイヤ４１６は、安全なプロセッサ４１４による書き込み要求を受信することによって、データメモリ範囲がそれぞれのコンテキストに対する有効範囲かどうか、および、データメモリ範囲が書き込みアクセスを許可するかどうかを決定するように構成されうる。例えば、書き込みアクセスが許可されなかった場合、トラストベクターベリファイヤ４１６は、セキュリティエクセプションをフラグで示すよう構成されうる。
【００５８】
種々の実施形態においては、プログラムコードもしくはデータを格納するために使用されるメモリ範囲は、連続しているかもしくは不連続でありうる。例えば、メモリ範囲は、一つ以上のアドレスと、一つ以上のfrom-toアドレス長の形式でありうる。同様に、メモリ範囲は、一つ以上のメモリコンポーネントもしくはデバイスを使用しうる。例えば、メモリ範囲は、二つのＤＤＲ−ＳＤＲＡＭメモリコンポーネントを使用したり、３つのＥＥＰＲＯＭメモリコンポーネントと組み合わせて一つのＤＤＲ−ＳＤＲＡＭメモリコンポーネントを使用したり、かつ／あるいは、実メモリおよび／もしくは仮想メモリならびに／またはデータストレージデバイスの他の組み合わせを使用しうる。このようなデバイスは任意の制御電子機器に対して、近位もしくは遠位でありうる。
【００５９】
さらに図４に関連して、トラストベクターディスクリプタは、一つ以上のコンテキストに対応する周辺コンポーネントを部分的にもしくは全体的に認証するためにも使用されうる。例えば、トラストベクターディスクリプタは、周辺インターフェイス４０８を介して、スマートカード４３６、リモート制御４３８、テレビ、および／もしくは他の周辺機器のうちの一つ以上へのアクセスを認証しうる。一つ以上の周辺機器は、例えば、入力ポインタおよび周辺範囲によってトラストベクターテーブル内に表されうる。範囲は、一つ以上のfrom-toアドレスの形式で表現されうる。図２に関連して説明されたように、コンテキストのトラストベクターディスクリプタ内の周辺機器を認証するためにビットマップが使用されうる。例えば、ビットマップ“０１０１Ｂ”は、周辺コンポーネント１（１）と３（３）を認証すると解釈される。
【００６０】
図４に示される実施形態においては、コンテキストマネージャ４２４は、安全なプロセッサ４１４および４２０上の安全なコンテキストスワップを管理することに関与する。一実施形態においては、初期段階の間、すなわち、テレビコンバータデバイス４００のブートプロセスの間、コンテキストマネージャ４２４は、メモリ４０６から一つ以上のコンテキストのためのトラストベクターディスクリプタを受信する。トラストベクターディスクリプタがコンテキストマネージャ４２４にロードされる前に、トラストベクターディスクリプタを認証することによって、トラストベクターディスクリプタのインテグリティが検証されうる。例えば、トラストベクターディスクリプタのインテグリティは、ダイジェストを計算するためのハッシュ関数を使用し、計算されたシグニチャを生成するためにキーでダイジェストにサインし、計算されたシグニチャとリファレンスシグニチャ２２６（図２）とを比較することによって検証されうる。この実施例においては、計算されたシグニチャとリファレンスシグニチャとの比較が一致しない場合には、セキュリティエクセプションが生成されるか、もしくは、制御電子機器４２６が警告を受ける可能性があり、コンテキストマネージャ４２４はソフトウェアを有効化する（イネーブルにする）ことができない。
【００６１】
少なくとも一つの実施形態においては、トラストベクターベリファイヤ４１６および４２２は、メモリ４０６のある範囲もしくは複数の範囲へトラストベクターディスクリプタを制限しうる。例えば、初期段階のブートプロセス間で、かつ、トラストベクターベリファイヤ４１６および４２２が一つ以上のコマンドをコンテキストマネージャ４２４から受信する前に、一つ以上のトラストベクターディスクリプタは、メモリ４０６のうちの定義されたある範囲、もしくは複数の範囲からロードされうるが、メモリの他の範囲からはロードされない。
【００６２】
さらなる実施形態においては、トラストベクターディスクリプタ内にリストされた領域２１０（図２）から領域２１２（図２）までのメモリ範囲内に格納されたコードもまた、一つ以上のコンテキストのために認証されうる。同様に、コンテキストマネージャ４２４は、さらなるコンテキスト有効化のための認証において使用される計算されたハッシュを格納しうる。
【００６３】
少なくとも一つの実施形態のために図３に関連して説明されたように、安全なプロセッサ４１４および４２０は、例えば、コンテキストマネージャ４２４へと、コンテキストスワップの要求などの信号を伝送することによってコンテキストを変更しうる。コンテキストマネージャ４２４は、一つ以上のトラストベクターディスクリプタの指定を受信することによって、一つ以上のコンテキストに対応するプログラムメモリ範囲の信頼性を検証する。いったんコンテキストメモリ範囲が検証されると、コンテキストマネージャ４２４は、トラストベクターディスクリプタのロードのために検証されたコンテキストに対応するメモリ４０６の範囲もしくは複数の範囲を、トラストベクターベリファイヤ４１６および４２２に通知する。一実施形態においては、メモリ４０６のプログラムメモリ範囲およびデータメモリ範囲のためのリファレンスシグニチャは、初期化によって、連続的に、ランダムに、スケジュールに従って、もしくは何らかのイベントに応じて検証される。
【００６４】
一つ以上のコンテキストに対応するメモリ４０６の範囲もしくは複数の範囲および、リファレンスシグニチャは、カプセル化されるか、および／もしくは安全ではない位置に格納されうる。例えば、一つ以上のコンテキストに対応するメモリ４０６の範囲もしくは複数の範囲およびリファレンスシグニチャは、定義ヘッダー内にカプセル化されうる。さらには、非対称キーがシグニチャを得るために使用されうる。しかしながら、安全に格納された対称キーがシグニチャを得るためにも使用されうることを理解されたい。
【００６５】
再度図４に関連して、制御電子機器４０４は、メインプロセッサ４２８およびメイントラストベクターベリファイヤ４３０をさらに含むメインプロセッサオペレーティング環境４０４を含みうる。少なくとも一つの実施形態においては、メインプロセッサ環境４０４は、例えば、ユーザインターフェイスおよび他のソフトウェアルーティンを実行するために使用されうる。一般的には、このようなルーティンは、安全なプロセッサ４１４および４１６によって実行されるルーティンと同一レベルのセキュリティは必要としない。
【００６６】
さらには、Ｌｉｎｕｘオペレーティングシステムなどの安全なコンテキストスワップを実行することが不可能なあるプロセスは、一般的には、安全なプロセッサ４１４ではなくメインプロセッサ４２８によって実行される。さらには、メイン環境は、メインプロセッサによる一つ以上のリソースへのアクセスを媒介するように構成されたトラストベクターベリファイヤ４３０を含むよう構成されうる。さらには、コンテキストマネージャは、メイン環境から除外され、それによってメインプロセッサによるコンテキストスワップを排除する。
【００６７】
図５は、少なくとも一つの実施形態において使用するためのデバイスのブロック図を提供する。示されるように、デバイス５００は、安全なプロセッサ４１０およびコンテキストマネージャ４２４を有する安全なオペレーティング環境５０２を含む。さらには、このデバイスは、メインプロセッサ５１２を含むメインプロセッシング環境４０４を含む。安全なプロセッサ４１０とメインプロセッサ５１２は、バス４３２を介して相互接続される。トラストベクターベリファイヤ５０４、５０６および５０８は、バス４３２へ接続され、安全なプロセッサ５１０および／もしくはメインプロセッサ５１２による一つ以上のリソースへのアクセス要求を媒介するよう構成される。トラストベクターベリファイヤ５０４、５０６、および５０８は、安全なプロセッサ４１０に対して非同期的に動作するよう構成されうる。より詳細には、コンテキストマネージャ４２４は、初期状態、例えばブートシークエンスの間、特定のコンテキストに関連する、もしくはより一般的にはセキュリティレベルに関連するメモリ４０６の範囲もしくは複数の範囲を、トラストベクターベリファイヤ５０４、５０６および５０８にロードする。その後、コンテキスト変更が実行されて、新規のトラストベクターディスクリプタが一つ以上のベクターベリファイヤにロードされるまで、このコンテキストは、プロセッサとリソースとの間の全ての通信のために使用されうる。このように、安全なプロセッサは、それに関連づけられたコンテキストマネージャを介して、安全なプロセッサ自身およびメインプロセッサによって使用されるベクターベリファイヤの構成を決定することが理解される。
【００６８】
別の実施形態においては、個別のコンポーネントは、一つより多いトラストベクターベリファイヤを有し、一つより多い安全なプロセッサは同一のベリファイヤモジュールへとアクセス可能である。例えば、複数の安全なプロセッサ構成においては、コンポーネントあたり複数のトラストベクターベリファイヤが、コンポーネントあたり二つ以上のコンテキストのさらなる非同期処理を許可する。さらに別の実施形態においては、一つ以上のコンポーネントは、トラストベクターベリファイヤ５０４、５０６および５０８によって媒介される別の接続なしで、もしくは別の接続に加えて、システムバス４３２へと個別に接続する。
【００６９】
ここで図６に関連して、ソフトウェア部分、トラストベクターディスクリプタ、もしくはデータのいずれかのためのメモリ範囲をスクラブするか、または認証するプロセス６００が、本発明の少なくとも一つの実施形態のために示される。示されるように、ハッシュは認証のために指定されたローカルデータについて生成される（動作６１０）。例えば、制御電子機器４２６（図４）は、メモリ範囲のためのハッシュ値もしくは他の同様の値を決定する。
【００７０】
ハッシュはキーでサインされ、それによって計算されたシグニチャが生成される（動作６１２）。少なくとも一つの実施形態においては、リファレンスハッシュは、パブリックキーでサインされ、計算されたシグニチャを生成する。計算されたシグニチャは比較のために格納される（動作６１３）。
【００７１】
さらに図６に示されるように、認証プロセスは、リファレンスシグニチャを読み出すステップ（動作６１４）を含みうる。少なくとも一つの実施形態では、コンテキストマネージャ１０６（図１）は、トラストベクターデータ構造のシグニチャフィールド２２６（図２）もしくはコードシグニチャフィールド２２８（図２）のためのリファレンスシグニチャを読み出す。しかしながら、リファレンスシグニチャは異なるデータ構造から読み出されうるか、もしくは別のコンポーネントから受信されうることを理解されたい。例えば、コンテキストマネージャは、安全なメモリからシグニチャを読み出しうる。少なくとも一つの実施形態においては、以前のハッシュがリファレンスシグニチャを生成するために、プライベートキーでサインされた。
【００７２】
さらに図６に示されるように、認証プロセスは、リファレンスシグニチャと計算されたシグニチャを比較するステップ（動作６１６）を含みうる。すなわち、コンテキストマネージャ１０６（図１）は、パブリックキーでハッシュをサインすることによって生成される計算されたシグニチャを、トラストベクターデータ構造から読み出されたリファレンスシグニチャと数学的に比較しうる。計算されたシグニチャとリファレンスシグニチャとの比較は、ビット単位比較もしくは他のコンピュータによるプロセスによって完了されうることを理解されたい。シグニチャを比較する場合、ソフトウェア部分、トラストベクターディスクリプタ、もしくはデータが認証される。
【００７３】
認証プロセスは、オプションとして、認証プロセスが継続的かどうかを決定するステップ（動作６１８）を含む。少なくとも一つの実施形態においては、コンテキストマネージャ１０６（図１）は、トラストベクターディスクリプタ内のスクラブタイプデータフィールド２１８（図２）のための設定を決定する。例えば、継続的スクラブタイプビットがスクラブタイプデータフィールド２１８内に設定される場合、コンテキストマネージャ１０６（図１）は、認証が継続的であることを決定する。コンテキストマネージャ１０６（図１）は、ソフトウェア部分、トラストベクターディスクリプタ、もしくはデータとともに送信されたヘッダー内の値を調べることによって、またはメモリの別の部分における設定を読み出すことによって、または別のコンポーネントからの命令を受信することによって、認証のタイプを決定しうることを理解されたい。
【００７４】
認証が継続的である場合、図６に示される認証プロセスのさらなる実施形態は、同一のソフトウェア部分、トラストベクターディスクリプタ、もしくはデータに対して別の認証を実施するため、一定期間 、待機するステップ（動作６２０）をオプションとして含みうる。少なくとも一つの実施形態においては、コンテキストマネージャ１０６（図１）は、所定の期間待機し、その後、同一のソフトウェア部分、トラストベクターディスクリプタ、もしくはデータに対して別の認証を完了する。所定の期間は、１秒足らず、数秒、数分、数時間、数日などのいかなる期間でもありうる。少なくとも一つの実施形態においては、コンテキストマネージャ１０６（図１）内のタイマーは、所定の期間をカウントする。設定された限界に到達することによって、認証プロセスは再度実施される。
【００７５】
上記にしたがって、一実施形態は、安全なコンピュータ環境においてソフトウェアを実行するためのシステムを含む。システムは、ソフトウェアの第一の部分からソフトウェアの第二の部分へと実行を切り替えるとき、第一のコンテキストから第二のコンテキストへのコンテキストスワップを要求するよう構成された安全なプロセッサを含む。システムはさらに、安全なプロセッサと連通し、要求されたコンテキストスワップを受信し、コンテキストスワップを開始するよう構成されたコンテキストマネージャを含む。システムはさらに、安全なプロセッサおよびコンテキストマネージャと連通し、コンテキストマネージャからのコマンドによってトラストベクターディスクリプタをロードするよう構成されたトラストベクターベリファイヤを含む。
【００７６】
少なくとも一つの実施形態においては、コンテキストマネージャは、コンテキストスワップに応じて、安全なプロセッサのリセットを開始する。
【００７７】
少なくとも一つの実施形態においては、コンテキストマネージャは、トラストベクターディスクリプタを第二のコンテキストと関連付ける。
【００７８】
少なくとも一つの実施形態においては、トラストベクターベリファイヤは、トラストベクターディスクリプタにしたがって、安全なプロセッサによる一つ以上のリソースへのアクセスを制御する。
【００７９】
少なくとも一つの実施形態においては、システムは、コンテキストマネージャと連通する第二の安全なプロセッサを含む。第二の安全なプロセッサはソフトウェアの一つ以上の他の部分を実行し、ソフトウェアの第三の部分からソフトウェアの第四の部分へと実行を切り替えるとき、第三のコンテキストから第四のコンテキストへのコンテキストスワップを要求するよう構成される。システムは、第二の安全なプロセッサおよびコンテキストマネージャと連通し、コンテキストマネージャからのコマンドによって第二のトラストベクターディスクリプタをロードするよう構成された、第二のトラストベクターベリファイヤをも含む。トラストベクターベリファイヤは、第二のトラストベクターディスクリプタにしたがって、第二の安全なプロセッサによる一つ以上のリソースへのアクセスを制御するよう構成される。
【００８０】
少なくとも一つの実施形態においては、システムは、スタティックなコンテキスト内のソフトウェアの一部を実行するよう構成されたメインプロセッサを含む。システムは、メインプロセッサと連通し、トラストベクターディスクリプタをロードし、かつ、スタティックなコンテキスト内のメインプロセッサによる一つ以上のリソースへのアクセスを制御するよう構成されたメイントラストベクターベリファイヤをも含む。
【００８１】
少なくとも一つの実施形態においては、システムは、スタティックなコンテキスト内の動作を実行するよう構成されたメイントラストベクターベリファイヤと連通するバスマスターを含む。
【００８２】
少なくとも一つの実施形態においては、スタティックなコンテキスト内で実行されるソフトウェアの一部はオペレーティングシステムである。
【００８３】
別の実施形態は、安全なコンピュータ環境においてソフトウェアを実行するためのシステムを含む。システムは、二つ以上の安全なプロセッサを含み、各々の安全なプロセッサは、ソフトウェアの第一の部分からソフトウェアの別の部分へと実行を切り替えるとき、第一のコンテキストから別のコンテキストへのコンテキストスワップを要求するよう構成される。システムは、二つ以上の安全なプロセッサの各々と連通し、二つ以上の安全なプロセッサの少なくとも一つによって要求されるコンテキストスワップを受信するよう構成されたコンテキストマネージャをさらに含む。受信された要求に応じて、コンテキストマネージャは、要求している安全なプロセッサのリセットを開始し、少なくとも一つのリソースへのアクセスを制御する上で使用するために構成される第一のトラストベクターディスクリプタと他の要求されたコンテキストを関連付ける。コンテキストマネージャは、他の要求されたコンテキストへのスワップをさらに開始する。システムは、スタティックなコンテキスト内のオペレーティングシステムを実行するよう構成されたメインプロセッサをも含む。システムは、複数のトラストベクターベリファイヤをも含み、各々のトラストベクターベリファイヤは、安全なプロセッサとメインプロセッサのうちの少なくとも一つと連通する。トラストベクターベリファイヤは、要求されたコンテキストと関連付けられた第一のトラストベクターディスクリプタ、もしくは、メインプロセッサによる一つ以上のリソースへのアクセスを制御する上で使用するために構成されるメイントラストベクターディスクリプタをロードするように構成される。
【００８４】
少なくとも一つの実施形態においては、安全なプロセッサのうちの一つは、ソフトウェアの第一の部分からソフトウェアの第二の部分へと実行を切り替えるとき、第一のコンテキストから第二のコンテキストへの第一のコンテキストスワップを要求するよう構成される。
【００８５】
少なくとも一つの実施形態においては、安全なプロセッサのうちの一つは、ソフトウェアの第三の部分からソフトウェアの第四の部分へと実行を切り替えるとき、第三のコンテキストから第四のコンテキストへの第二のコンテキストスワップを要求するよう構成される。
【００８６】
少なくとも一つの実施形態においては、ソフトウェアの第二の部分と第四の部分は実質的に類似している。
【００８７】
別の実施形態は、ソフトウェアの一部のためのコンテキストへとスワップする要求を受信することによって、安全なオペレーティング環境においてソフトウェアを実行するための方法を含む。この方法は、プロセッサ動作の制御およびプロセッサのリセットにおいて使用するために構成されるトラストベクターディスクリプタをロードするステップを含む。
【００８８】
少なくとも一つの実施形態においては、トラストベクターディスクリプタは、一つ以上の周辺デバイスへのプロセッサによるアクセスを定義し、トラストベクターベリファイヤは、一つ以上の周辺デバイスへのプロセッサによるアクセスを制御する。
【００８９】
少なくとも一つの実施形態においては、トラストベクターディスクリプタは、ビットマップを含む。
【００９０】
少なくとも一つの実施形態においては、方法は、ソフトウェアの一部を認証するステップをさらに含む。
【００９１】
少なくとも一つの実施形態においては、認証動作は、ソフトウェアの一部のハッシュを生成するステップ、計算されたシグニチャを生成するため、生成されたハッシュにサインするステップ、リファレンスシグニチャを読み出すステップ、および、リファレンスシグニチャと計算されたシグニチャを比較するステップを含む。シグニチャが同一である場合、本方法は、ソフトウェアの一部の実行を許可するステップをさらに含む。
【００９２】
少なくとも一つの実施形態においては、方法は、ある期間待機するステップと、ソフトウェアの一部の第二の認証を実施するステップを含む。
【００９３】
少なくとも一つの実施形態においては、第二の認証は、ソフトウェアの認証が継続的なときに生じる。
【００９４】
少なくとも一つの実施形態においては、方法は、安全なプロセッサからのリソース要求を受信するステップと、リソース要求がトラストベクターディスクリプタに適合するかどうかを決定するステップを含む。リソース要求がトラストベクターディスクリプタに適合しない場合には、方法は、セキュリティエクセプションをトリガーするステップと安全なプロセッサをリセットするステップをさらに含む。
【００９５】
少なくとも一つの実施形態においては、方法は、セキュリティエクセプションが第二のセキュリティエクセプションかどうかを決定するステップをさらに含む。セキュリティエクセプションが第二のセキュリティエクセプションではない場合には、方法は、安全なプロセッサのリセット前に、ある期間待機するステップを含む。セキュリティエクセプションが第二のセキュリティエクセプションである場合には、方法は、ある期間待機することなく安全なプロセッサをリセットするステップをさらに含む。
【００９６】
一実施形態は、ソフトウェアの一部のためのコンテキストへのコンテキストスワップを要求するように、かつ、ソフトウェアの一部のハッシュを生成することによって、ソフトウェアの一部を認証するように構成された安全なプロセッサを含む装置である。安全なプロセッサは、計算されたシグニチャを生成するために、生成されたハッシュにサインし、リファレンスシグニチャを読み出し、かつ、リファレンスシグニチャと計算されたシグニチャを比較するようにさらに構成される。シグニチャが同一である場合には、安全なプロセッサは、ソフトウェアの一部の実行を許可する。装置は、要求されたコンテキストスワップを受信し、トラストベクターベリファイヤにトラストベクターディスクリプタをロードし、安全なプロセッサをリセットするよう構成された、コンテキストマネージャをも含む。装置は、安全なプロセッサからリソース要求を受信し、そのリソース要求がトラストベクターディスクリプタに適合するかどうかを決定するよう構成されたトラストベクターベリファイヤをも含む。トラストベクターベリファイヤは、リソース要求がトラストベクターディスクリプタに適合しない場合にセキュリティエクセプションをトリガーし、セキュリティエクセプションが第二のセキュリティエクセプションかどうかを決定するようにも構成される。トラストベクターベリファイヤは、セキュリティエクセプションが第二のセキュリティエクセプションではない場合には、安全なプロセッサをリセットする前に、ある期間待機する。しかしながら、トラストベクターベリファイヤは、セキュリティエクセプションが第二のセキュリティエクセプションである場合には、ある期間待機することなく安全なプロセッサをリセットする。
【００９７】
別の実施形態は、安全なプロセッサの実行を制御するためのコンピュータシステム上で実行する、エンコードされたデータ構造を有するコンピュータで読み出し可能な媒体を含む。データ構造は、一つ以上のコンテキストを含み、各コンテキストは、コンテキストを識別するコンテキスト識別フィールド、安全なプロセッサがアクセス可能なメモリ領域を指定するメモリデータ領域、および安全なプロセッサがアクセス可能なハードウェアリソースを指定するハードウェアトラストベクターを含む。コンピュータシステムは、安全なプロセッサがハードウェアトラストベクターに基づいてハードウェアリソースにアクセス可能かどうかを決定するよう構成される。
【００９８】
少なくとも一つの実施形態においては、ハードウェアトラストベクターは、安全なプロセッサのために許可されたアクセスのタイプを識別するビットマップである。
【００９９】
少なくとも一つの実施形態においては、データ構造は、コード開始アドレスフィールドを含む。
【０１００】
少なくとも一つの実施形態においては、データ構造は、コード終了アドレスフィールドを含む。
【０１０１】
少なくとも一つの実施形態においては、データ構造は、キー番号フィールド、ターゲットプロセッサフィールド、ベクター番号フィールド、スクラブタイプフィールド、プロセッサブートアドレスフィールド、トラストベクターディスクリプタシグニチャフィールド、およびコードシグニチャフィールドを含む。
【０１０２】
少なくとも一つの実施形態においては、コード開始アドレスフィールドおよびコード終了アドレスフィールドは、コンテキスト内で実行されるソフトウェアの一部のためのプログラムメモリ範囲を定義する。
【０１０３】
少なくとも一つの実施形態においては、スクラブタイプフィールドは、ソフトウェアの一部の認証が継続的かどうかを指定する。
【０１０４】
別の実施形態は、安全なプロセッサおよびコンピュータで読み出し可能な媒体を含むコンピュータシステムである。コンピュータで読み出し可能な媒体は、安全なプロセッサによる実行のための一つ以上のコンテキストを有するエンコードされたデータ構造を含む。各コンテキストは、コンテキスト識別フィールド、どのハードウェアリソースに安全なプロセッサがアクセス可能かを指定するハードウェアトラストベクター、コード開始アドレスフィールド、コード終了アドレスフィールド、およびプロセッサブートアドレスフィールドを含む。コード開始アドレスフィールドとコード終了アドレスフィールドは、コンテキスト内で実行されるソフトウェアの一部のためのプログラムメモリ範囲を定義する。コンピュータシステムは、安全なプロセッサがハードウェアトラストベクターに基づいてハードウェアリソースにアクセス可能かどうかを決定するよう構成される。
【０１０５】
少なくとも一つの実施形態においては、コンテキストは、ターゲットプロセッサフィールドを含む。
【０１０６】
別の実施形態は、悪質なソフトウェアからコンピュータシステムを保護するための方法を含む。方法は、トラストベクターディスクリプタをロードするステップを含み、トラストベクターディスクリプタはコンテキストを定義する。方法は、悪質なソフトウェアを受信するステップと、悪質なソフトウェア内の命令を実行しようとするステップをさらに含む。方法は、命令がコンテキストに対するエクセプションであることを認めるステップと、その命令を実行することを阻止するステップと安全なプロセッサをリセットするステップをさらに含む。
【０１０７】
少なくとも一つの実施形態においては、方法は、悪質なソフトウェアのためのコンテキストスワップを受信するステップを含む。
【０１０８】
少なくとも一つの実施形態においては、方法は悪質なソフトウェアを識別するステップを含む。
【０１０９】
少なくとも一つの実施形態においては、悪質なソフトウェアを識別するステップは、悪質なソフトウェアのハッシュを生成するステップと、ハッシュから計算されたシグニチャを生成するステップと、リファレンスシグニチャを読み出すステップと、計算されたシグニチャをリファレンスシグニチャと比較するステップをさらに含む。計算されたシグニチャとリファレンスシグニチャが同一でない場合には、方法は、その命令を実行することを阻止するステップをさらに含む。
【０１１０】
少なくとも一つの実施形態においては、方法はトラストベクターディスクリプタを識別するステップを含む。
【０１１１】
少なくとも一つの実施形態においては、命令はコンテキスト内のアクセス不可能なメモリ領域内に格納される。
【０１１２】
少なくとも一つの実施形態においては、命令は、周辺デバイスもしくはコンテキスト内でアクセス不可能なメモリ位置へのアクセスを試みる。
【０１１３】
多数の例示的な態様および実施形態が上述されてきたが、当業者はそれらの、ある改変、置換、付加およびサブコンビネーションを理解するであろう。したがって、以下に付随する請求項および今後導入される請求項は、その趣旨および範囲内にあるように、このようなすべての改変、置換、付加および代替的組み合わせを含むものと解釈されることを意図される。
【図１】
2010530563.tif 000003
【図２】
2010530563.tif 000004
【図３Ａ】
2010530563.tif 000005
【図３Ｂ】
2010530563.tif 000006
【図４】
2010530563.tif 000007
【図５】
2010530563.tif 000008
【図６】
2010530563.tif 000009
【手続補正書】
【提出日】平成21年12月29日(2009.12.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェア命令の第一の部分および第二の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記ソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための要求を生成するよう動作可能な安全なプロセッサ（１０４）と、
前記安全なプロセッサへと連通するように結合され、前記要求を受信し、前記第一のコンテキストと前記第二のコンテキスト間のコンテキストスイッチを開始し、前記第二のコンテキストはコンテキスト識別子に関連付けられる、第一のディスクリート回路（１０６）と、
前記安全なプロセッサおよび前記第一のディスクリート回路へと連通するように結合され、前記コンテキスト識別子に基づいて、前記安全なプロセッサと前記安全なプロセッサに関連付けられた少なくとも一つのリソース（１２０）との間のアクセスを媒介するよう動作可能な、第二のディスクリート回路（１０８）と、
を含むことを特徴とする装置。
【請求項２】
前記第二のコンテキストは、トラストベクターディスクリプタに関連付けられ、前記第二のディスクリート回路は、前記第一のディスクリート回路からのコマンドに応じて、前記トラストベクターディスクリプタをロードする、
ことを特徴とする、請求項１に記載の装置。
【請求項３】
前記第二のディスクリート回路は、前記トラストベクターディスクリプタに基づいて、前記安全なプロセッサと前記少なくとも一つのリソースとの間の前記アクセスを媒介するよう動作可能である、
ことを特徴とする、請求項２に記載の装置。
【請求項４】
前記第一のディスクリート回路は、前記要求に応じて、前記安全なプロセッサのリセットを開始する、
ことを特徴とする、請求項１に記載の装置。
【請求項５】
スタティックなコンテキスト内の第一のソフトウェア命令を実行するよう動作可能なメインプロセッサ（５１２）と、
第二のソフトウェア命令の第一の部分と第二の部分を実行するよう動作可能で、さらに、前記第二のソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記第二のソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための要求を生成するよう動作可能な安全なプロセッサ（４１０）と、
前記安全なプロセッサと連通するように結合され、前記要求を受信し、前記第一のコンテキストと前記第二のコンテキストとの間のコンテキストスイッチを開始し、前記第二のコンテキストはコンテキスト識別子に関連付けられる、第一のディスクリート回路（４２４）と、
前記メインプロセッサと前記安全なプロセッサに連通するよう結合されたバス（４３２）と、
前記バスを介して、前記メインプロセッサと前記安全なプロセッサに連通するよう結合された、少なくとも一つのリソース（４０６、４０８、４３４、４３６）と、
前記バスと連通するように結合され、前記コンテキスト識別子に基づいて、前記安全なプロセッサと前記メインプロセッサによる前記少なくとも一つのリソースへのアクセスを媒介するよう動作可能な、第二のディスクリート回路（５０４、５０６、５０８）と、
を含む、
ことを特徴とする装置。
【請求項６】
前記第二のコンテキストは、トラストベクターディスクリプタに関連付けられ、前記第二のディスクリート回路は、前記第一のディスクリート回路からのコマンドに応じて、前記トラストベクターディスクリプタをロードし、前記第二のディスクリート回路は、前記トラストベクターディスクリプタに基づいて、前記メインプロセッサおよび前記安全なプロセッサによる前記少なくとも一つのリソースへの前記アクセスを媒介するよう動作可能である、
ことを特徴とする、請求項５に記載の装置。
【請求項７】
前記第一のディスクリート回路は、前記要求に応じて前記安全なプロセッサのリセットを開始する、
ことを特徴とする、請求項５に記載の装置。
【請求項８】
ソフトウェア命令の第一の部分と第二の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記ソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための第一の要求を生成するよう動作可能な、第一の安全なプロセッサ（４１４）と、
前記ソフトウェア命令の第三の部分と第四の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第三の部分に関連付けられた第三のコンテキストと、前記ソフトウェア命令の前記第四の部分に関連付けられた第四のコンテキストとの間を切り替えるための第二の要求を生成するよう動作可能な、第二の安全なプロセッサ（４２０）と、
前記第一の安全なプロセッサに連通するよう結合され、前記第一の要求を受信し、前記第一のコンテキストと前記第二のコンテキストの間の第一のコンテキストスイッチを開始し、前記第二のコンテキストは第一のコンテキスト識別子に関連付けられ、さらには、第二の要求を受信し、前記第三のコンテキストと前記第四のコンテキストの間の第二のコンテキストスイッチを開始し、前記第四のコンテキストは第二のコンテキスト識別子に関連付けられる、ディスクリートコンテキストマネージャ回路（４２４）と、
前記第一の安全なプロセッサと前記ディスクリートコンテキストマネージャ回路に連通するよう結合され、前記第一のコンテキスト識別子に基づいて、前記第一の安全なプロセッサと前記第一の安全なプロセッサに関連付けられた少なくとも一つのリソース（４０６、４０８、４３４、４３６）との間のアクセスを媒介するよう動作可能な、第一のディスクリートトラストベクターベリファイヤ回路（４１６）と、
前記第二の安全なプロセッサと前記ディスクリートコンテキストマネージャ回路に連通するよう結合され、前記第二のコンテキスト識別子に基づいて、前記第二の安全なプロセッサと前記少なくとも一つのリソースとの間のアクセスを媒介するよう動作可能な、第二のディスクリートトラストベクターベリファイヤ回路（４２２）と、
を含む、
ことを特徴とする装置。
【請求項９】
前記第二のコンテキストは、第一のトラストベクターディスクリプタに関連付けられ、前記第一のディスクリートトラストベクターベリファイヤ回路は、前記ディスクリートコンテキストマネージャ回路からのコマンドに応じて、前記第一のトラストベクターディスクリプタをロードし、前記第一のディスクリートトラストベクターベリファイヤ回路は、前記第一のトラストベクターディスクリプタに基づいて、前記第一の安全なプロセッサと前記少なくとも一つのリソースとの間の前記アクセスを媒介するよう動作可能である、
ことを特徴とする、請求項８に記載の装置。
【請求項１０】
前記第一のディスクリートトラストベクターベリファイヤ回路は、前記要求に応じて、前記安全なプロセッサのリセットを開始する信号を生成する、
ことを特徴とする、請求項８に記載の装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
少なくとも一つの実施形態においては、トラストベクターディスクリプタ２０２、２０４および２０６は、ソフトウェア、および／もしくはその実行されるべき部分の信頼性を検証するために使用されるキー番号および／もしくは他の参照情報を含みうる。参照情報は、例えば、コードを認証するために使用されるコードのフィンガープリント（身分証明）、コードを認証するために使用されるコードのシグニチャ、および／もしくはコードのシグニチャを検証するために使用されるキーに対する参照を含みうる。さらに、複数のキーを伴う一実施形態においては、キー番号２１４は、生成されたシグニチャを検証し、それによってソフトウェアの一部を認証するためにどのキーを使用するか指定しうる。このような検証は、例えば、生成されたシグニチャをトラストベクターディスクリプタシグニチャ２２６および／もしくはコードシグニチャ２２８と比較することによって生じうることを理解されたい。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
ハードウェアトラストベクターディスクリプタフィールド２２０は、コンテキスト内のリソースアクセスを定義するために使用されうる。さらに詳細には、ハードウェアトラストベクターディスクリプタ２２０は、任意のトラストベクターディスクリプタ２０２、２０４、２０６によって定義されるコンテキスト内で実施される動作中に、安全なプロセッサ１０４（図１）がインターフェイス接続したり、通信したりしうるような、周辺デバイスもしくは内部コンポーネントなどのリソースを識別する。一実施形態においては、ハードウェアトラストベクターディスクリプタ２２０は、ビットマップもしくはビットアレイであり、アレイの各ビットは、あるタイプのハードウェアを表す。例えば、ハードウェアトラストベクターディスクリプタ２２０は、“０１０１”として現れうる。“１”に設定された第一のビットは、プロセッサがハードドライブコントローラにアクセス可能なことを表しうる。“０”に設定された第二のビットは、プロセッサがスマートカードにアクセスできないことを表しうる。“１”に設定された第三のビットおよび“０”に設定された第四のビットは、プロセッサがＩ／Ｏポートにアクセス可能であるが、ビデオコントローラにはアクセスできないことを表しうる。ハードウェアトラストベクターディスクリプタ２２０内のビット数は、安全なプロセッサが使用される実施形態ごとに異なり、４ビットよりも少ないかもしくは多いビット数でもありうる。ハードウェアトラストベクターディスクリプタ２２０の他の実施形態が使用されうることを理解されたい。例えば、ハードウェアトラストベクターディスクリプタ２２０は、ハードウェアトラストベクターディスクリプタ２２０によって識別されるもの以外は、任意の実装内で全てのリソースが安全なプロセッサに対して使用可能であるように構成されうる。他の実施形態もまた可能性があり、付随のもしくは以下に追加された請求項の範囲内に含まれる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
メモリデータ領域フィールド２２２もまた、コンテキスト内のリソースアクセスを定義するために使用され、さらには、安全なプロセッサ１０４（図１）が例えば、メモリからデータを読み出す、および／もしくはメモリへデータを書き込むためにアクセス可能なメモリ１２６（図１）内のアドレススペースを定義するために使用される。ハードウェアトラストベクターディスクリプタ２２０に関しては、メモリデータ領域フィールド２２２は、開始アドレスおよび停止アドレスに基づいて、隣接ブロックとしておよび／もしくはその他のものとして、特定のアドレスによってアドレススペースを指定しうる。同様に、アドレススペースは、アファーマティブ（すなわちアクセスされうるもの）、エクセプション（すなわち、識別されるもの以外は全てがアクセス可能）もしくはその他のもので表現されうる。このように、メモリデータ領域フィールド２２２は、実行可能なデータが読み出されるおよび／もしくは書き込まれることが可能なアドレスを識別しうることを理解されたい。安全なプロセッサが禁止されたデータ領域からのコードを実行するおよび／もしくはデータを使用しようとした場合にセキュリティエクセプションが生じるように、一つ以上の定義されていないアドレス内に含まれるデータは、同様に実行不可能なものとして指定されうる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３９
【補正方法】変更
【補正の内容】
【００３９】
図３Ａにさらに示されるように、コンテキストスワッププロセスは、トラストベクターベリファイヤへとトラストベクターをロードするステップ（動作３０６）をも含みうる。所望された場合、コンテキストマネージャ１０６（図１）はディスクリプタ２０２（図２）などのトラストベクターディスクリプタをトラストベクターベリファイヤ１０８（図１）へとロードする。本発明のある実施形態に関連して上述されたように、トラストベクターベリファイヤは、非アクティブ状態にあるディスクリプタを事前にロードされうる。このように、トラストベクターベリファイヤのロードは、あらゆる任意の実施形態にとってオプションである、および／もしくは不必要でありうることを容易に理解されたい。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
安全なオペレーティング環境４０２の一実施形態を含むデバイス４００の一実施形態のブロック図が、図４に示される。デバイス４００は、例えば、衛星テレビコンバータデバイスでありうる。少なくとも一つの実施形態においては、デバイス４００は、制御電子機器４２６を含み、さらに、安全なオペレーティング環境４０２、メインプロセッサ環境４０４、メモリ４０６、周辺インターフェイス４０８および（ハードドライブ４３４などによって外部データストレージが提供されるとき使用するための）データストレージインターフェイス４１０のうちの一つ以上を含みうるが、それに限定はされない。より詳細には、安全なオペレーティング環境４０２は、第一の安全なプロセッサ４１４および第一のトラストベクターベリファイヤ４１６を含む第一の安全なオペレーティング環境４１２、ならびに、第二の安全なプロセッサ４２０および第二のトラストベクターベリファイヤ４２２を含む第二の安全なオペレーティング環境４１８を含みうる。安全なオペレーティング環境の他の実施形態は、単一の安全なプロセッサ、複数の安全なプロセッサ、単一のベクターベリファイヤ、複数のベクターベリファイヤ、単一のオペレーティング環境もしくは複数のオペレーティング環境を含みうる。第一の安全なオペレーティング環境４１２および第二の安全なオペレーティング環境４１８は、一つ以上の共通のもしくは専用のコンテキストマネージャ４２４へも動作可能なように接続されうる。このように、環境、プロセッサ、ベクターベリファイヤおよびコンテキストマネージャの種々の組み合わせが使用されうることを理解されたい。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００４９
【補正方法】変更
【補正の内容】
【００４９】
安全なオペレーティング環境４１２は、安全なプロセッサ４１４および４２０、トラストベクターベリファイヤ４１６および４２２、ならびにコンテキストマネージャ４２４を含み、一つ以上の集積回路もしくは個別のディスクリートコンポーネントで提供されうる。例えば、プロセッサ４１４および４２０は、トラストベクターベリファイヤ４１６および４２２とそれぞれ結合して、単一の集積回路もしくは二つの個別の集積回路（すなわち、安全なオペレーティング環境４１２および４１８それぞれにつき一つの集積回路）になりうる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
再度図４に関連して、制御電子機器４２６は、メインプロセッサ４２８およびメイントラストベクターベリファイヤ４３０をさらに含むメインプロセッサオペレーティング環境４０４を含みうる。少なくとも一つの実施形態においては、メインプロセッサオペレーティング環境４０４は、例えば、ユーザインターフェイスおよび他のソフトウェアルーティンを実行するために使用されうる。一般的には、このようなルーティンは、安全なプロセッサ４１４および４１６によって実行されるルーティンと同一レベルのセキュリティは必要としない。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６７
【補正方法】変更
【補正の内容】
【００６７】
図５は、少なくとも一つの実施形態において使用するためのデバイスのブロック図を提供する。示されるように、デバイス５００は、安全なプロセッサ４１０およびコンテキストマネージャ４２４を有する安全なオペレーティング環境５０２を含む。さらには、このデバイスは、メインプロセッサ５１２を含むメインプロセッサオペレーティング環境４０４を含む。安全なプロセッサ４１０とメインプロセッサ５１２は、バス４３２を介して相互接続される。トラストベクターベリファイヤ５０４、５０６および５０８は、バス４３２へ接続され、安全なプロセッサ５１０および／もしくはメインプロセッサ５１２による一つ以上のリソースへのアクセス要求を媒介するよう構成される。トラストベクターベリファイヤ５０４、５０６、および５０８は、安全なプロセッサ４１０に対して非同期的に動作するよう構成されうる。より詳細には、コンテキストマネージャ４２４は、初期状態、例えばブートシークエンスの間、特定のコンテキストに関連する、もしくはより一般的にはセキュリティレベルに関連するメモリ４０６の範囲もしくは複数の範囲を、トラストベクターベリファイヤ５０４、５０６および５０８にロードする。その後、コンテキスト変更が実行されて、新規のトラストベクターディスクリプタが一つ以上のベクターベリファイヤにロードされるまで、このコンテキストは、プロセッサとリソースとの間の全ての通信のために使用されうる。このように、安全なプロセッサは、それに関連づけられたコンテキストマネージャを介して、安全なプロセッサ自身およびメインプロセッサによって使用されるベクターベリファイヤの構成を決定することが理解される。
【手続補正書】
【提出日】平成22年6月17日(2010.6.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェア命令の第一の部分および第二の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記ソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための要求を生成するよう動作可能な安全なプロセッサ（１０４）と、
前記安全なプロセッサへと連通するように結合され、前記要求を受信し、前記第一のコンテキストと前記第二のコンテキスト間のコンテキストスイッチを開始し、前記第二のコンテキストはコンテキスト識別子に関連付けられる、第一のディスクリート回路（１０６）と、
前記安全なプロセッサおよび前記第一のディスクリート回路へと連通するように結合され、前記コンテキスト識別子に基づいて、前記安全なプロセッサと前記安全なプロセッサに関連付けられた少なくとも一つのリソース（１２０）との間のアクセスを媒介するよう動作可能な、第二のディスクリート回路（１０８）と、
を含むことを特徴とする装置。
【請求項２】
前記第二のコンテキストは、トラストベクターディスクリプタに関連付けられ、前記第二のディスクリート回路は、前記第一のディスクリート回路からのコマンドに応じて、前記トラストベクターディスクリプタをロードする、
ことを特徴とする、請求項１に記載の装置。
【請求項３】
前記第二のディスクリート回路は、前記トラストベクターディスクリプタに基づいて、前記安全なプロセッサと前記少なくとも一つのリソースとの間の前記アクセスを媒介するよう動作可能である、
ことを特徴とする、請求項２に記載の装置。
【請求項４】
前記第一のディスクリート回路は、前記要求に応じて、前記安全なプロセッサのリセットを開始する、
ことを特徴とする、請求項１に記載の装置。
【請求項５】
スタティックなコンテキスト内の第一のソフトウェア命令を実行するよう動作可能なメインプロセッサ（５１２）と、
第二のソフトウェア命令の第一の部分と第二の部分を実行するよう動作可能で、さらに、前記第二のソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記第二のソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための要求を生成するよう動作可能な安全なプロセッサ（４１４）と、
前記安全なプロセッサと連通するように結合され、前記要求を受信し、前記第一のコンテキストと前記第二のコンテキストとの間のコンテキストスイッチを開始し、前記第二のコンテキストはコンテキスト識別子に関連付けられる、第一のディスクリート回路（４２４）と、
前記メインプロセッサと前記安全なプロセッサに連通するよう結合されたバス（４３２）と、
前記バスを介して、前記メインプロセッサと前記安全なプロセッサに連通するよう結合された、少なくとも一つのリソース（４０６、４０８、４３４、４３６）と、
前記バスと連通するように結合され、前記コンテキスト識別子に基づいて、前記安全なプロセッサと前記メインプロセッサによる前記少なくとも一つのリソースへのアクセスを媒介するよう動作可能な、第二のディスクリート回路（５０４、５０６、５０８）と、
を含む、
ことを特徴とする装置。
【請求項６】
前記第二のコンテキストは、トラストベクターディスクリプタに関連付けられ、前記第二のディスクリート回路は、前記第一のディスクリート回路からのコマンドに応じて、前記トラストベクターディスクリプタをロードし、前記第二のディスクリート回路は、前記トラストベクターディスクリプタに基づいて、前記メインプロセッサおよび前記安全なプロセッサによる前記少なくとも一つのリソースへの前記アクセスを媒介するよう動作可能である、
ことを特徴とする、請求項５に記載の装置。
【請求項７】
前記第一のディスクリート回路は、前記要求に応じて前記安全なプロセッサのリセットを開始する、
ことを特徴とする、請求項５に記載の装置。
【請求項８】
ソフトウェア命令の第一の部分と第二の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記ソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための第一の要求を生成するよう動作可能な、第一の安全なプロセッサ（４１４）と、
前記ソフトウェア命令の第三の部分と第四の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第三の部分に関連付けられた第三のコンテキストと、前記ソフトウェア命令の前記第四の部分に関連付けられた第四のコンテキストとの間を切り替えるための第二の要求を生成するよう動作可能な、第二の安全なプロセッサ（４２０）と、
前記第一の安全なプロセッサに連通するよう結合され、前記第一の要求を受信し、前記第一のコンテキストと前記第二のコンテキストの間の第一のコンテキストスイッチを開始し、前記第二のコンテキストは第一のコンテキスト識別子に関連付けられ、さらには、第二の要求を受信し、前記第三のコンテキストと前記第四のコンテキストの間の第二のコンテキストスイッチを開始し、前記第四のコンテキストは第二のコンテキスト識別子に関連付けられる、ディスクリートコンテキストマネージャ回路（４２４）と、
前記第一の安全なプロセッサと前記ディスクリートコンテキストマネージャ回路に連通するよう結合され、前記第一のコンテキスト識別子に基づいて、前記第一の安全なプロセッサと前記第一の安全なプロセッサに関連付けられた少なくとも一つのリソース（４０６、４０８、４３４、４３６）との間のアクセスを媒介するよう動作可能な、第一のディスクリートトラストベクターベリファイヤ回路（４１６）と、
前記第二の安全なプロセッサと前記ディスクリートコンテキストマネージャ回路に連通するよう結合され、前記第二のコンテキスト識別子に基づいて、前記第二の安全なプロセッサと前記少なくとも一つのリソースとの間のアクセスを媒介するよう動作可能な、第二のディスクリートトラストベクターベリファイヤ回路（４２２）と、
を含む、
ことを特徴とする装置。
【請求項９】
前記第二のコンテキストは、第一のトラストベクターディスクリプタに関連付けられ、前記第一のディスクリートトラストベクターベリファイヤ回路は、前記ディスクリートコンテキストマネージャ回路からのコマンドに応じて、前記第一のトラストベクターディスクリプタをロードし、前記第一のディスクリートトラストベクターベリファイヤ回路は、前記第一のトラストベクターディスクリプタに基づいて、前記第一の安全なプロセッサと前記少なくとも一つのリソースとの間の前記アクセスを媒介するよう動作可能である、
ことを特徴とする、請求項８に記載の装置。
【請求項１０】
前記第一のディスクリートトラストベクターベリファイヤ回路は、前記要求に応じて、前記安全なプロセッサのリセットを開始する信号を生成する、
ことを特徴とする、請求項８に記載の装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
図１に示される実施形態においては、コンピュータ環境１００は、線によって表される安全なコンピュータ環境もしくはオペレーティング環境１０２を含みうる。安全なコンピュータ環境もしくはオペレーティング環境１０２は、安全なセントラルプロセッシングユニット（“ＣＰＵ”）もしくはプロセッサ１０４、コンテキストマネージャ１０６およびトラストベクターベリファイヤ１０８を含みうる。さらには、プロセッサ１０４、コンテキストマネージャ１０６およびトラストベクターベリファイヤ１０８の各々は、お互いに直接的にもしくは間接的に連通しうる。安全なプロセッサ１０４は、あらゆるタイプの汎用プロセッサであり、所望されるように安全になるよう特別に設計されうる。実施形態においては、コンテキストマネージャ１０６およびトラストベクターベリファイヤ１０８は、本発明の環境において使用するための、特別に設計されたハードウェアデバイス、ソフトウェアモジュール、もしくはハードウェアとソフトウェアの組み合わせでありうる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００６７
【補正方法】変更
【補正の内容】
【００６７】
図５は、少なくとも一つの実施形態において使用するためのデバイスのブロック図を提供する。示されるように、デバイス５００は、安全なプロセッサ４１４およびコンテキストマネージャ４２４を有する安全なオペレーティング環境５０２を含む。さらには、このデバイスは、メインプロセッサ５１２を含むメインプロセッサオペレーティング環境４０４を含む。安全なプロセッサ４１４とメインプロセッサ５１２は、バス４３２を介して相互接続される。トラストベクターベリファイヤ５０４、５０６および５０８は、バス４３２へ接続され、安全なプロセッサ４１４および／もしくはメインプロセッサ５１２による一つ以上のリソースへのアクセス要求を媒介するよう構成される。トラストベクターベリファイヤ５０４、５０６、および５０８は、安全なプロセッサ４１４に対して非同期的に動作するよう構成されうる。より詳細には、コンテキストマネージャ４２４は、初期状態、例えばブートシークエンスの間、特定のコンテキストに関連する、もしくはより一般的にはセキュリティレベルに関連するメモリ４０６の範囲もしくは複数の範囲を、トラストベクターベリファイヤ５０４、５０６および５０８にロードする。その後、コンテキスト変更が実行されて、新規のトラストベクターディスクリプタが一つ以上のベクターベリファイヤにロードされるまで、このコンテキストは、プロセッサとリソースとの間の全ての通信のために使用されうる。このように、安全なプロセッサは、それに関連づけられたコンテキストマネージャを介して、安全なプロセッサ自身およびメインプロセッサによって使用されるベクターベリファイヤの構成を決定することが理解される。
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図３Ｂ
【補正方法】変更
【補正の内容】
【図３Ｂ】
2010530563.tif 000010
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2010530563.tif 000011
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2010530563.tif 000012
【国際調査報告】
2010530563.tif 000013
2010530563.tif 000014
2010530563.tif 000015