JP2010530563A - 安全な環境におけるプロセッサ実行を制御するための装置 - Google Patents

安全な環境におけるプロセッサ実行を制御するための装置 Download PDF

Info

Publication number
JP2010530563A
JP2010530563A JP2010507668A JP2010507668A JP2010530563A JP 2010530563 A JP2010530563 A JP 2010530563A JP 2010507668 A JP2010507668 A JP 2010507668A JP 2010507668 A JP2010507668 A JP 2010507668A JP 2010530563 A JP2010530563 A JP 2010530563A
Authority
JP
Japan
Prior art keywords
context
secure processor
trust vector
processor
secure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010507668A
Other languages
English (en)
Other versions
JP5007867B2 (ja
Inventor
マイケル ビールズ,ウィリアム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DISH Technologies LLC
Original Assignee
EchoStar Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EchoStar Technologies LLC filed Critical EchoStar Technologies LLC
Publication of JP2010530563A publication Critical patent/JP2010530563A/ja
Application granted granted Critical
Publication of JP5007867B2 publication Critical patent/JP5007867B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Stored Programmes (AREA)

Abstract

本明細書に記述された種々の実施形態は、安全なコンピュータ環境(100)内でソフトウェアを実行するための装置に関する。安全なプロセッサ(104)が使用され、ソフトウェアの第一の部分からソフトウェアの第二の部分へと実行を切り替えるとき、第一のコンテキストから第二のコンテキストへのコンテキストスワップを要求するよう構成される。コンテキストマネージャ(106)は、安全なプロセッサと連通し、要求されたコンテキストスワップを受信し、開始するように構成されうる。トラストベクターベリファイヤ(108)は、安全なプロセッサとコンテキストマネージャに連通し、コンテキストマネージャからのコマンドによって、トラストベクターディスクリプタをロードするよう構成されうる。

Description

本明細書に記述される本発明の種々の実施形態は、安全な環境において一つ以上のプロセッサの実行を制御するための装置、システムおよびプロセスに関する。さらに、これらの種々の実施形態の実装は、ケーブル、衛星、電気通信、ワイヤレス、および/もしくは他のオーディオ、ビデオおよび/もしくはデータサービス提供者によって提供されるような、無線、ならびに、有線でのテレビ受信デバイスにおいてプロセッサの実行を制御することを含みうる。
[関連出願]
本出願は、2007年5月11日に出願され、本明細書にその全体が参照によって組み入れられているU.S. Provisional Application No. 60/917,582の“APPARATUS, SYSTEM AND METHOD FOR CONTROLLING PROCESSOR EXECUTION IN A SECURE ENVIRONMENT”の出願日の利益を主張する。
本明細書で記述される種々の実施形態は、ソフトウェアの一部を実行するための安全なコンピュータ環境を確立し、実行するための装置、システムおよび方法に関する。さらに詳細には、一実施形態は、コンピュータ環境リソースに対する制限されたアクセスを提供する環境においてソフトウェアの一部を実行する安全なプロセッサを提供する。
別の実施形態においては、安全なコンピュータ環境を提供するためのシステムは、安全なプロセッサ、コンテキストマネージャ、およびトラストベクター ベリファイヤを含むが、それに限定はされない。安全なプロセッサは、関連するコンテキスト、例えばソフトウェアが制限される特定のオペレーティング環境を有する、幾つかのもしくは全てのソフトウェアプログラムおよび/もしくはルーティンを実行するよう構成されうる。ソフトウェアは、例えば、方法、サブプログラム、ルーティン全アプリケーション、もしくは一つ以上のソフトウェアアプリケーションのあらゆる部分をも含みうる。少なくとも一つの実施形態においては、ソフトウェアは一つ以上のコンテキストに制限されうる。
さらに別の実施形態においては、安全なオペレーティング環境における安全なプロセッサの実行を制御するための方法は、コンテキストスワップを要求する安全なプロセッサを含む。一実施形態においては、コンテキストスワップは、ソフトウェアの異なる部分のための新規のコンテキストに対するスイッチである。一実施形態においては、コンテキストマネージャはコンテキストスワップ要求を受信する。さらなる実施形態においては、コンテキストマネージャは、トラストベクターベリファイヤにトラストベクターディスクリプタをロードする。少なくとも一つの実施形態においては、コンテキストマネージャは安全なプロセッサをリセットする。さらなる実施形態においては、トラストベクターベリファイヤは、ロードされたトラストベクターディスクリプタに基づいて、一つ以上のリソースに対しての安全なプロセッサのアクセスを制御する。
コンピュータで読み出し可能な媒体には、安全なプロセッサの実行を制御するために使用されるエンコードされたデータ構造を有することが記述される。データ構造は、安全なプロセッサのためのオペレーティング環境を定義する一つ以上のコンテキストについてのデータを含みうる。さらには、コンテキストは、任意のコンテキストを識別するフィールド、安全なプロセッサがアクセス可能なメモリの一つ以上の領域の宛先、および安全なプロセッサがアクセス可能な一つ以上のハードウェアリソースの宛先を含みうる。同様に、データ構造を実行するコンピュータシステムは、安全なプロセッサがハードウェアトラストベクターに従ってハードウェアリソースにアクセス可能かどうかを決定する。
この“ 発明の概要”は、以下の“発明を実施するための形態”にさらに記述される、簡略化された形式における概念の選択を紹介するために提供される。この“発明の概要”は、特許請求の範囲に記載された対象 の重要な特徴もしくは本質的特徴を特定することを意図するものではなく、ましてや特許請求の範囲に記載された対象の範囲を限定するために使用されることを意図するものではない。
幾つかの実施形態は、付随する図面に関連して以下に記述される。幾つかの図面内の類似する参照番号は、類似する構成要素を示す。
本明細書で記述される本発明の少なくとも一つの実施形態において使用するためのコンピュータ環境のブロック図である。 少なくとも一つの実施形態において使用するためのトラストベクターテーブルの一実施形態の簡略化されたデータ構造図である。 コンピュータ環境においてコンテキストを変更する方法、およびコンピュータ環境を維持する方法の一実施形態のフロー図である。 コンピュータ環境においてコンテキストを変更する方法、およびコンピュータ環境を維持する方法の一実施形態のフロー図である。 少なくとも一つの実施形態において使用するためのデバイスのブロック図である。 別の実施形態において使用するためのデバイスのブロック図である。 本明細書で記述される本発明の少なくとも一つの実施形態において使用するための、および/もしくは少なくとも一つの実施形態とともに使用するための、ソフトウェアコードもしくはデータのためのメモリ領域を認証する方法のフロー図である。
本開示は、付随する図面に関連して、ここで幾つかの実施形態をより十分に説明するが、図面には、考えられる実施形態の一部 が示されているに過ぎない。しかしながら、他の態様は多くの異なる形式で具現化されてもよく、本明細書で説明される実施形態に限定されると解釈されるべきではない。本明細書で説明される実施形態は、信頼されたマイクロプロセッサコンピューティングを含む方法およびシステムに関する。このようなコンピューティングは、例えば、有料衛星テレビシステムにおいて生じうる。他の実施形態は、例えば、ケーブルテレビ、テレビ放送、有線もしくはワイヤレス電気通信システム、オーディオ/ビデオ/データ配信システム、あらゆるコンテンツ配信サービス、ならびに/またはあらゆる他のコンピュータ環境をも含みうるが、そのいずれにも限定はされない。
図1に示される実施形態においては、コンピュータ環境100は、点線102によって表される安全なコンピュータ環境もしくはオペレーティング環境を含みうる。安全なコンピュータ環境もしくはオペレーティング環境102は、安全なセントラルプロセッシングユニット(“CPU”)もしくはプロセッサ104、コンテキストマネージャ106およびトラストベクターベリファイヤ108を含みうる。さらには、プロセッサ104、コンテキストマネージャ106およびトラストベクターベリファイヤ108の各々は、お互いに直接的にもしくは間接的に連通しうる。安全なプロセッサ104は、あらゆるタイプの汎用プロセッサであり、所望されるように安全になるよう特別に設計されうる。実施形態においては、コンテキストマネージャ106およびトラストベクターベリファイヤ108は、本発明の環境において使用するための、特別に設計されたハードウェアデバイス、ソフトウェアモジュール、もしくはハードウェアとソフトウェアの組み合わせでありうる。
一実施形態においては、安全なプロセッサ104は、少なくとも3つの基本的なアクティビティを実施するために動作する。そのアクティビティとは、ソフトウェアプログラム内での数学関数もしくは論理演算を実行すること、ソフトウェアプログラム内で使用されるデータを保持するため、メモリ内の異なる位置とデータをやりとりすること、ならびに/または、決定を行い、ソフトウェアプログラム内で新しい命令にジャンプすることである。これらのタスクを達成するため、安全なプロセッサ104は、(図示されていない)演算もしくは論理ユニット(ALU)、レジスタ124、メモリ122および内部メモリもしくは外部メモリ、または他のデータストレージ126を含みうる。ALUは、数学関数もしくは論理演算を実施する。レジスタ124は、安全なプロセッサ104によって実行される演算に関する情報もしくはデータを保持する。例えば、データレジスタは、ALUによって完了される数学的演算において使用されるデータ値を保持し、メモリレジスタはデータが格納されるべきメモリ126内のアドレスを保持しうる。メモリ126は、一般的には、一時的にかまたは別の方法でデータを保持する、および/もしくは格納するような、一つ以上のハードウェアデバイス、構造、もしくはコンポーネントから成る。一実施形態においては、メモリはキャッシュ122(安全なプロセッサ104によって定期的にアクセスされるデータを保持する)と、一つ以上の他のメモリ126を含む。キャッシュ122は、安全なプロセッサ104内に統合されたメモリ領域、安全なプロセッサ104へと直接接続されたメモリ、または、安全なプロセッサ104に、容易にアクセスされる、もしくはインターフェイスで接続される、メモリ126の領域である。別の実施形態においては、メモリ126は、メモリ管理ユニット(MMU)128を含み、これはメモリ126からのデータの読み出し、およびメモリ126へのデータの書き込みを制御する。メモリ126は、一つ以上のタイプのメモリ、例えば、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ハードドライブ、光学式ストレージ、もしくは、データを保持する一つ以上の他のメモリ技術から構成されうる。当業者は、安全なプロセッサ104がコンピュータシステムに関する意味に限定されることなく、本技術分野において既知の他のコンポーネントおよび機能をも含んでもよいことを理解するであろう。さらには、本明細書でのコンピュータシステムの説明は、本発明の実施形態についての説明を簡略化するために提供されており、本発明は、本明細書で記述されるコンピュータシステムに限定されるべきではない。
上述された3つのアクティビティの実施においては、安全なプロセッサ104は、ソフトウェアの一部を実行する。これらのソフトウェアの一部は、一般的には、大規模なタスクを達成するためのソフトウェアプログラムもしくはアプリケーションを形成するために結合する。一般的には、ソフトウェアの一部は、安全なプロセッサ104によって実行される一つ以上の命令である。以下では、ソフトウェアの一部は、ソフトウェアルーティン、サブルーティンもしくはモジュールと称されうる。ソフトウェアの一部を実行するとき、安全なプロセッサ104は、(図示されていない)スタックと呼ばれる抽象データ型を生成しうる。スタックは、安全なプロセッサ104が、それぞれデータもしくは命令をそこに格納したり、そこから読み出したりする、例えば、キャッシュ122もしくはメモリ126などの、メモリ内の一組のメモリアドレスでありうる。例えば、一つのデータもしくは命令がスタック内に保存されるとき、安全なプロセッサ104は、レジスタ124内に、スタックポインタ(データもしくは命令が格納されるメモリ内のアドレス)を記録しうる。データは、ソフトウェアの二つ以上の部分の間で共有され、この共有を容易にするため、データはソフトウェアの(複数の)部分に提供されるスタックおよびスタックポインタ内に格納されうる。
種々の実施形態においては、安全なプロセッサ104は、例えばソフトウェア、メモリ122/126およびリソース120の組み合わせを含む、オペレーティング環境において種々のソフトウェア部分を実行する。安全なプロセッサ104は、任意の動作を実施するために、ソフトウェア、メモリ、リソースなどを実行し、インターフェイス接続し、および/もしくは使用するように構成されうる。悪質なコードもしくはその他望まれていないコードの導入を防ぐため、および/または最小限化するため、安全なプロセッサ104のオペレーティング環境の制御を容易にするシステム、方法、装置などが提供される。
少なくとも一つの実施形態においては、安全なオペレーティング環境102は、一つ以上の“コンテキスト”によって指定されうる。コンテキストは、安全なプロセッサ104が実施することを許可された命令、関数および/もしくは演算 を指定することによって、オペレーティング環境の境界を定義する。例えば、ソフトウェアアプリケーションは、4つの命令を含みうる。コンテキストは、安全なプロセッサ104が、これらの4つの命令のうちの第一番目、これらの命令のうちの一つ以上、これらの命令の全て、それらの組み合わせなどを実行可能であることを指定しうる。すなわち、コンテキストは、指定されない命令の実施を排除するような、許可された環境を確立しうる。例えば、安全なプロセッサ104が、4つの命令のうちの一つではない命令を実行しようとする場合、エクセプション が認められ、安全なプロセッサ104は、他の命令を実行することが阻止される。
別の実施例においては、コンテキストは、安全なプロセッサがメモリアドレス1−20のみに対してアクセスすることを許可しうる。安全なプロセッサがメモリアドレス40へアクセスしようと試みた場合、エクセプションが認められ、安全なプロセッサ104は、メモリアドレス40へのアクセスが阻止される。
さらに別の実施例においては、コンテキストは、安全なプロセッサ104がハードドライブのみにアクセスを許可されることを指定しうる。安全なプロセッサ104がユーザインターフェイスデバイスへアクセスを試みると、エクセプションが認められ、安全なプロセッサ104はユーザインターフェイスへのアクセスが阻止される。
種々の実施形態においては、コンテキストマネージャ106およびトラストベクターベリファイヤ108は、コンテキストを確立し、かつ実行する。コンテキストマネージャ106は、コンテキストの変更を管理する。ソフトウェアのうちの二つ以上の部分は、それぞれ関連するコンテキストを有する。ソフトウェアの第一部分を実行するとき、第一のコンテキストは安全なオペレーティング環境を定義するために使用される。同様に、安全なプロセッサ104が、ソフトウェアの第二部分を実行するとき、異なる第二のコンテキストが、異なる安全なオペレーティング環境を定義するために使用される。ソフトウェアの部分を切り替えるため、コンテキストマネージャは、実行されるソフトウェアの新規の部分に関連付けられた新規のコンテキストを確立する。新規のコンテキストの確立においては、ソフトウェアの新規部分は、ソフトウェアのその部分に適合されたオペレーティング環境において実行する。ソフトウェアの新規部分によるコンテキストからのずれは、セキュリティエクセプションとして認められる。このように、安全なオペレーティング環境は、所望されるように安全なプロセッサ104の演算を制御するためソフトウェアの各部分のために設定される。
上述されたように、種々の実施形態は、コンテキストを実行するトラストベクターベリファイヤ108をも含みうる。トラストベクターベリファイヤ108は、安全なプロセッサ104と、リソース120およびメモリ126などの任意のシステムの他の仮想コンポーネントもしくは物理コンポーネントとの間に、仮想的に、および/もしくは物理的に(データ信号のフロー内に)配置される。トラストベクターベリファイヤ108の配置と併せて、トラストベクターベリファイヤ108は、安全なプロセッサ104、リソース120および/もしくはメモリ126の間の通信を中断するよう構成されうる。実施形態においては、トラストベクターベリファイヤ108は、任意のコンテキストを定義し、ならびに、トラストベクターベリファイヤ108が、安全なプロセッサ104による動作と比較するような情報をロードされうる。動作がトラストベクターベリファイヤ108内にロードされた情報に匹敵しない場合、その動作はそのコンテキスト内で許可されない。ロードされた情報に匹敵しない動作は、許可されたコンテキスト外である。トラストベクターベリファイヤ108は、これらの動作をエクセプションとして認め、動作が生じるのを阻止する。例えば、トラストベクターベリファイヤ108は、安全なプロセッサ104からメモリ126に対するアクセスの要求を受信し、トラストベクターベリファイヤ108は、その要求が現在のコンテキスト内で許可されるかどうかを決定し、その要求が許可されない場合には、トラストベクターベリファイヤ108は、エクセプションを認め、メモリ126へのアクセスを阻止する。
安全なプロセッサ104は、ソフトウェアの第一の部分の実行とソフトウェアの第二の部分の実行との間を定期的に切り替えるようにも構成されうる。一実施形態においては、ソフトウェアの異なる部分間の実行を切り替える前に、一つ以上のステップがシステム100の安全性を確保するために実施されうる。例えば、安全なプロセッサ104は、キャッシュ122および/もしくはMMU128をクリアして、スタック内のデータへポインタを保存する。安全なプロセッサ104は、コンテキストスワップ110のための要求(すなわち、新規の所定のコンテキストへ変更するための要求)を、コンテキストマネージャ106へと通信しうる。実施形態においては、コンテキストマネージャ106は、安全なプロセッサ104へとリセット112を送信してそれをリセットし、かつ、トラストベクターベリファイヤ108へと命令114を送信して、メモリ126から、もしくはトラストベクターベリファイヤ108によってアクセス可能な(図示されていない)他の安全なメモリから、所望のコンテキストに関連づけられたトラストベクターディスクリプタをロードする。実施形態においては、リセットは、結果として、望ましいことに、安全なプロセッサ104の一つ以上の内部状態をクリアする。このようなクリアが安全なプロセッサ104へと悪質なソフトウェアが導入されるリスクを軽減することを理解されたい。リセットは、安全なプロセッサ104の一つの、複数の、もしくは全ての状態をクリアするあらゆる方法を含みうる。別の実施形態においては、安全なプロセッサ104は、リセットの間、全ての状態情報が動作不可能かつ使用不可能な状態にされるように構成されうる。
より詳細には、少なくとも一つの実施形態のために、安全なプロセッサ104は、ブートもしくはハードリセット動作を実行することによってリセット機能を達成しうる。例えば、安全なプロセッサ104が新規のコンテキスト内の一つ以上の命令を実行する前に、このようなブートが生じうる。このようなブートは、ソフトウェアの再ロードを必要とするソフトブート、または、安全なプロセッサ104および/もしくは一つ以上の他のコンポーネントの電源のオンオフ を必要とする、ハードブートでありうることを理解されたい。望ましくは、各実施形態にとって必然ではないが、ソフトブートおよびハードブートは両方とも、キャッシュ122、レジスタ124、および/もしくはメモリ126内に格納されたデータおよび/もしくは命令のうちの(全てではない場合には)幾つかを消去する。実施形態においては、一つ以上の周知の方法が、キャッシュ122、レジスタ124、および/もしくはメモリ126内のデータもしくは命令のうちの幾つかもしくは全てを消去するために使用されうる。例えば、格納されたメモリアドレスは、以前に格納されたデータの上に新規データを書き込むことによって削除されうる。このように、安全なプロセッサ104は、第一のコンテキストのためには有用でも第二のコンテキストのために望ましくないデータおよび/もしくは命令を消去するか、さもなければ使用不可能な状態にするように構成されうる。
少なくとも一つの実施形態においては、安全なプロセッサ104は、あるコンテキストから別のコンテキストへといかなる状態情報も保持しない。すなわち、安全なプロセッサは、いかなる以前のコンテキストもしくはソフトウェアのいかなる情報も保持しないよう構成されうる。
図1に示されるように、トラストベクターベリファイヤ108は、通信パス116を介して安全なプロセッサ104と連通する。一実施形態においては、セキュリティエクセプションを妨げるために、一般的には、トラストベクターベリファイヤ108は、ハードウェアインタラプト121を安全なプロセッサ104へと送信するよう構成されうる。ハードウェアインタラプト121の受信によって、図3に関連して以下に説明されるように、安全なプロセッサ104はリセットするか、ならびに/または、別のコンテキストへブートもしくは再ブートする。この他のコンテキストは、前もって決定されているかもしくはリアルタイムで決定されうる。別の実施形態においては、トラストベクターベリファイヤ108は、セキュリティエクセプションに応じて新規のコンテキストへのコンテキストスワップを要求する間、現在のコンテキスト内のセキュリティエクセプションを処理するよう構成されうる。
トラストベクターベリファイヤ108は、種々の実施形態においては、あらゆる任意のコンテキストを実行させる情報で構成され、かつその情報をロードされうる。このような情報は、永久的にロードされるか、コンテキストスワップよりも前にロードされるか、安全なプロセッサのリセット中にロードされるか、安全なプロセッサ104がリセットされた後に、および/もしくは別の時間にロードされうる。例えば、ロードされた情報は、メモリ126もしくは(図示されていない)他の安全なメモリからロードされた、一つ以上のトラストベクターディスクリプタを含みうる。このようなメモリ126は、所望のようにトラストベクターベリファイヤ108によってのみアクセス可能なように構成されうる。他の実施形態においては、トラストベクターベリファイヤ108は、ROM、EEPROM、ハードドライブなどの一つ以上の専用メモリデバイスもしくは共有メモリデバイスを含み、ならびに/またはそれに対するアクセスを有しうる。このようなメモリは、所望のように、一つ以上のトラストベクターディスクリプタを持続的に含むように構成されうる。トラストベクターディスクリプタは、少なくとも一つの実施形態においては、安全なプロセッサ104が実行しうるソフトウェアプログラム、ルーティンおよび/もしくは命令を定義する。トラストベクターディスクリプタは、どのように、いつ、および/もしくはどのリソースに、安全なプロセッサ104がアクセスし、制御し、使用し、通信することなどが可能かを定義するようにも構成されうる。同様に、トラストベクターディスクリプタは、メモリ126か122のどちらに安全なプロセッサ104がアクセスしうるか、ならびに、安全なプロセッサ104がコンテキスト内で開始し、実行し、および完了しうる他のアクティビティを定義しうる。
トラストベクターディスクリプタの一実施形態は図2に示される。この実施形態においては、トラストベクターディスクリプタは、少なくとも一つのトラストベクターディスクリプタ202を含み、かつ、複数のトラストベクターディスクリプタ202、204もしくは206を含みうる。(複数の)トラストベクターディスクリプタは、例えば、トラストベクターテーブル(TVT)データ構造200もしくは他のあらゆる所望のデータ構造内に格納されうる。図1に関連して上述されたように、トラストベクターベリファイヤ108による使用のためにトラストベクターディスクリプタ202をロードするかさもなければ指定することによって、新規のコンテキストが確立され、安全なプロセッサ104の動作を管理する。
図2に示される実施形態にさらに示されるように、各トラストベクターディスクリプタ202、204および206は異なるコンテキストを定義することができ 、そのため異なるデータを有しうる。トラストベクターディスクリプタ202、204および206の各セクションにおけるデータは、実施形態においては、特定のデータ型である。各トラストベクターディスクリプタ202、204および206は、一つ以上の他のデータフィールドを含みうるが、記述されたデータフィールドに限定はされない。トラストベクターディスクリプタ202、204および206は、コンテキスト識別(ID)フィールド208によって識別されうる。さらなる実施形態においては、各トラストベクターディスクリプタ202、204および206は、コード開始アドレス210、コード終了アドレス212、キー番号214、ターゲットCPUおよびベクター番号(#)216、スクラブタイプ218、ハードウェアトラストベクターディスクリプタ220、メモリデータ領域222、CPUブートアドレス224、トラストベクターディスクリプタシグニチャ226およびコードシグニチャ228のためのデータフィールドを含みうる。
コード開始アドレス210およびコード終了アドレス212は、安全なプロセッサ104(図1)によって認証され、その後実行されるべきコード部分を識別する。実行されるべきコード部分を識別するための他の方法(例えばコード開始アドレスとコード長)が存在することを理解されたい。例えば、コード開始アドレス210およびコード終了アドレス212は、所望のコードを含む、一組以上の複数かつ不連続なメモリ領域 を指定しうる。このような領域は、例えば、二つ以上の開始アドレスおよび終了アドレスによってさらに指定されうる。
少なくとも一つの実施形態においては、トラストベクターディスクリプタ202、204および206は、ソフトウェア、および/もしくはその実行されるべき部分の信頼性を検証するために使用されるキー番号および/もしくは他の参照情報を含みうる。参照情報は、例えば、コードを認証するために使用されるコードのフィンガープリント(身分証明)、コードを認証するために使用されるコードのシグニチャ、および/もしくはコードのシグニチャを検証するために使用されるキーに対する参照を含みうる。さらに、複数のキーを伴う一実施形態においては、キー番号214は、生成されたシグニチャを検証し、それによってソフトウェアの一部を認証するためにどのキーを使用するか指定しうる。このような検証は、例えば、生成されたシグニチャをトラストディスクリプタシグニチャ226および/もしくはコードシグニチャ228と比較することによって生じうることを理解されたい。
ターゲットCPUフィールド216は、システムが複数のプロセッサを有する場合に、どのプロセッサを使用するか指定する指定子を提供する。図4に関連して説明されるように、ソフトウェアの一部は、一つ以上の安全なプロセッサ上で実行されうる。ベクター数フィールド216は、トラストベクターディスクリプタ202のための指定子を提供する。
スクラブタイプフィールド218は、図6に関連して記述されるように、ソフトウェアの一部をどのようにスクラブするか、すなわちソフトウェアの一部の信頼性をどのように証明するかについての情報を提供する。例えば、ソフトウェアの一部がいったん認証されるかスクラブされる場合、スクラブタイプフィールド218は、“最初の”スクラブの指定子を含みうる。他のタイプのスクラブ方法は、“連続的”スクラブ(それによってソフトウェアの一部が動作間に連続的にスクラブされる)と“スクラブしない”(ソフトウェアの一部のいかなるスクラブも必要としない)を含むが、そのいずれにも限定はされない。他の実施形態においては、他のスクラブ方法が使用されうる。
ハードウェアトラストベクターディスクリプタフィールド220は、コンテキスト内のリソースアクセスを定義するために使用されうる。さらに詳細には、ハードウェアトラストベクターディスクリプタ220は、任意のトラストベクターディスクリプタ202、204、206によって定義されるコンテキスト内で実施される動作中に、安全なプロセッサ104(図1)がインターフェイス接続したり、通信したりしうるような、周辺デバイスもしくは内部コンポーネントなどのリソースを識別する。一実施形態においては、ハードウェアトラストベクターディスクリプタ220は、ビットマップもしくはビットアレイであり、アレイの各ビットは、あるタイプのハードウェアを表す。例えば、ハードウェアトラストベクターディスクリプタ220は、“0101”として現れうる。“1”に設定された第一のビットは、プロセッサがハードドライブコントローラにアクセス可能なことを表しうる。“0”に設定された第二のビットは、プロセッサがスマートカードにアクセスできないことを表しうる。“1”に設定された第三のビットおよび“0”に設定された第四のビットは、プロセッサがI/Oポートにアクセス可能であるが、ビデオコントローラにはアクセスできないことを表しうる。ハードウェアトラストベクターディスクリプタ220内のビット数は、安全なプロセッサが使用される実施形態ごとに異なり、4ビットよりも少ないかもしくは多いビット数でもありうる。ハードウェアトラストベクターディスクリプタ220の他の実施形態が使用されうることを理解されたい。例えば、トラストベクターディスクリプタ220は、ハードウェアトラストベクター220によって識別されるもの以外は、任意の実装内で全てのリソースが安全なプロセッサに対して使用可能であるように構成されうる。他の実施形態もまた可能性があり、付随のもしくは以下に追加された請求項の範囲内に含まれる。
メモリデータ領域フィールド222もまた、コンテキスト内のリソースアクセスを定義するために使用され、さらには、安全なプロセッサ104(図1)が例えば、メモリからデータを読み出す、および/もしくはメモリへデータを書き込むためにアクセス可能なメモリ126(図1)内のアドレススペースを定義するために使用される。ハードウェアトラストベクター220に関しては、メモリデータ領域フィールド222は、開始アドレスおよび停止アドレスに基づいて、隣接ブロックとしておよび/もしくはその他のものとして、特定のアドレスによってアドレススペースを指定しうる。同様に、アドレススペースは、アファーマティブ(すなわちアクセスされうるもの)、エクセプション(すなわち、識別されるもの以外は全てがアクセス可能)もしくはその他のもので表現されうる。このように、メモリデータ領域フィールド222は、実行可能なデータが読み出されるおよび/もしくは書き込まれることが可能なアドレスを識別しうることを理解されたい。安全なプロセッサが禁止されたデータ領域からのコードを実行するおよび/もしくはデータを使用しようとした場合にセキュリティエクセプションが生じるように、一つ以上の定義されていないアドレス内に含まれるデータは、同様に実行不可能なものとして指定されうる。
一実施形態においては、アクセス可能なメモリ126(図1)の一つ以上の部分は、ソフトウェアの他の部分と共有される。さらには、ソフトウェアの各部分は一つ以上のコンテキスト内で実行しうる。このような実施形態においては、ソフトウェアの二つの部分は同一のコンテキスト内で実行されないが、ソフトウェアの一部分は、ソフトウェアの別の部分へとデータをパスする必要がありうる。メモリデータ領域フィールド222は、例えば、識別されたアドレススペースへのエクセプションアプローチを使用することによって、この状況をサポートするよう構成されうる。同様に、別の実施形態においては、メモリデータ領域フィールド222は、それによって指定されるメモリのあらゆる領域もしくは各領域のために、一つ以上のスクラブ動作に含まれるべきメモリの(複数の)領域を指定する共通のもしくは個別のスクラブビットを含みうる。
本明細書で記述される少なくとも一つの実施形態のために記述されるように、安全なプロセッサ104(図1)がコンテキストをスワップするとき、安全なプロセッサはリセットされ、かつ新規のコンテキストへとブートする。図2に関連して、CPUブートアドレスフィールド224は、メモリ126(図1)内のアドレスを提供し、そこで安全なプロセッサ104(図1)をブートする。一実施形態においては、ブートアドレス224は、フラッシュメモリにおけるオフセットである。他の実施形態においては、ブートアドレス224は、ROMアドレス、RAMアドレス、もしくはメモリ126のための他のアドレスである。一実施形態においては、各コンテキストは固有のブートアドレス224を有しうる。
トラストベクターディスクリプタ202、204および206は、シグニチャフィールド226をも含みうる。シグニチャフィールド226は、各トラストベクターディスクリプタ202、204、206を検証する上で使用するためのデータ値、例えばプライベートキーを提供する。トラストベクターディスクリプタの検証は、トラストベクターベリファイヤ108(図1)が任意のトラストベクターディスクリプタをロードするよう指示される前、もしくはその後に生じうる。さらには、シグニチャフィールド226は、任意のトラストベクターディスクリプタのフィールド208から228内のデータの幾つか、もしくは全てを検証する上で使用するためのシグニチャを提供するよう構成されうる。さらに、安全なプロセッサ104(図1)がソフトウェアの任意の部分の一部もしくは全てを実行することを許可する前に、ソフトウェアの任意の部分のうちの一部、もしくは全てが、図6に関連して説明されるようにスクラブされるか、もしくは認証される、または、ソフトウェアの任意の部分のうちのいずれもスクラブされないか認証されないことを理解されたい。
本発明の少なくとも一つの実施形態においては、トラストベクターディスクリプタは、安全なプロセッサによってそれを実行する前に、ソフトウェアコードの任意の部分を検証する上で使用するためのデータを提供する、コードシグニチャフィールド228を含むようにも構成されうる。デジタルシグニチャのあらゆるタイプがシグニチャ226および/もしくはコードシグニチャ228として使用されうることを理解されたい。例えば、デジタルシグニチャは、プライベートおよびパブリックキーシステムを使用しうる。このような認証方法は、1994年5月19日に出版された、Federal Information Processing Standard Publication 186のDigital Signature Standard(DSS)に記述され、この文書は、デジタルシグニチャ、プライベートキーシステムおよびパブリックキーシステムの使用を詳細に教示するため、その教示全体が参照によって本明細書に組み入れられている。
図3Aおよび図3Bには、コンテキストのスワップ301のプロセス300、およびセキュリティエクセプションの管理309の実施形態を示すフロー図が示される。コンテキストスワッププロセスは、コンテキストマネージャ、安全なプロセッサおよび/もしくは安全なプロセッサとコンテキストマネージャの組み合わせによって実行されうる。図3Aに示されるように、安全なプロセッサ104(図1)によって現在実行されているコンテキストは、保存される(動作303)。少なくとも一つの実施形態においては、安全なプロセッサ104(図1)は、スタックにポインタを保存し、メモリ126(図1)へあらゆる必要とされるデータを格納し、コンテキストスワップが生じる前に必要とされるあらゆる“クリーンアップ”機能を完了する。保存動作は、(図3Aに示されるように)コンテキストスワップ前に、要求に応じて、規則的な間隔で、必要とされる基準に基づいて、および/もしくはその他の理由で生じうる。コンテキストスワッププロセスは、コンテキストスワップ要求の通信(動作302)をも含みうる。この要求は、通常、安全なプロセッサからコンテキストマネージャへと送信され、コンテキストスワップが要求される前もしくはその後に生じ、種々の状況で発生しうる。
例えば、安全なプロセッサが異なるもしくは第二のコンテキストの下で、ソフトウェアの第二の部分を実行する必要がもたらされるような状況が生じたとき、安全なプロセッサ104(図1)は、ソフトウェアの第一の部分を実行していてもよい。ソフトウェアの第二の部分の実行を容易にするため、安全なプロセッサ104(図1)は図3Aで動作302によって示されるように、コンテキストマネージャ106(図1)へコンテキストをスワップする要求を通信するよう構成されうる。コンテキストスワップ要求は、例えば、安全なプロセッサ104(図1)がスワップすることを望むコンテキスト202(図2)のためのコンテキストID208(図2)を含みうる。コンテキストスワップ要求は、特定の実装もしくは使用される実施形態に依存して、追加のもしくは他の情報を含みうる。
図3Aにさらに示されるように、コンテキストスワッププロセスは、安全なプロセッサ104のリセット(動作304)を含みうる。すなわち、安全なプロセッサによって通信されたコンテキストスワップ要求を受信した後で、安全なプロセッサはコンテキストマネージャによってリセットされうる。安全なプロセッサは、望ましいことに、安全なプロセッサのキャッシュ122、MMU128、レジスタ124、メモリなどの中にあるあらゆるデータを消去し、かつ、安全なプロセッサ104(図1)から、以前のソフトウェア状態を消去する。また、種々の実施形態は、要求動作302および/もしくは保存動作303が達成されることなくリセット動作304を含みうることを理解されたい。
図3Aにさらに示されるように、コンテキストスワッププロセスは、トラストベクターベリファイヤへとトラストベクターをロードするステップ(動作306)をも含みうる。所望された場合、コンテキストマネージャ106(図1)はディスクリプタ202(図2)などのトラストベクターディスクリプタをトラストベクターベリファイヤ106(図1)へとロードする。本発明のある実施形態に関連して上述されたように、トラストベクターベリファイヤは、非アクティブ状態にあるディスクリプタを事前にロードされうる。このように、トラストベクターベリファイヤのロードは、あらゆる任意の実施形態にとってオプションである、および/もしくは不必要でありうることを容易に理解されたい。
コンテキストスワッププロセスは、トラストベクターベリファイヤにロードされた、あるいは必要に応じてその他の方法でアクティブ状態のために指定されたソフトウェアの一部が、新規のコンテキストと使用できる状態にあるように、新規のコンテキストを有効化(イネーブルに)するステップ(動作308)をも含む。幾つかの実施形態においては、トラストベクターディスクリプタ202(図2)は、生成されたシグニチャに対して、トラストベクターディスクリプタ202(図2)内に保存されたシグニチャ226(図2)を比較することによって認証されうる。このような認証は、ディスクリプタがトラストベクターベリファイヤ108へロードされる前もしくはその後に起こりうる。同様に、新規のコンテキスト下で実行されるべきソフトウェアの一部は、コードシグニチャ228(図2)を生成されたシグニチャに対して比較することによって認証されうる。トラストベクターディスクリプタとソフトウェアの一部を認証するステップは、図6に関連して以下により詳細に説明される。トラストベクターディスクリプタ202とソフトウェアの一部のロードは、望ましくは、新規のコンテキスト内のソフトウェアの実行のために安全なプロセッサを構成する。
セキュリティエクセプション309を管理するためのプロセスの実施形態は、図3Bに示される。少なくともこの実施形態のために、安全なプロセッサ104(図1)から、リソース要求がトラストベクターベリファイヤ108(図1)によって受信される。リソース要求の受信(動作310)によって、トラストベクターベリファイヤは、その要求を現在のアクティブなトラストベクターディスクリプタと比較し、その要求がそのディスクリプタに適合するかどうかを決定する(動作312)。例えば、トラストベクターベリファイヤは、要求されたメモリアドレスを、現在のアクティブなトラストベクターディスクリプタ内の認証されたメモリデータ領域222(図2)のリストと比較しうる。
要求が現在のアクティブなトラストベクターディスクリプタに適合するとき、トラストベクターベリファイヤは、安全なプロセッサとリソースとの間に通信が起こることを許可する(動作316)。例えば、トラストベクターベリファイヤは、リソース要求118(図1)を適切なリソース120(図1)へとパスする。
要求がトラストベクターディスクリプタに適合しないとき、セキュリティエクセプションがトリガーされ(動作320)、結果としてそれが安全なプロセッサのリセットをもたらす(動作330)。少なくとも一つの実施形態においては、トラストベクターベリファイヤは、命令121(図1)などのハードウェアインタラプトもしくはリセット命令を、安全なプロセッサへと送信する。さらに、少なくとも一つの実施形態では、セキュリティエクセプションが生じるとき安全なプロセッサのみならず全チップセットがリセットされうる。
プロセスは、さらに、もっとも最近トリガーされたセキュリティエクセプションが、セキュリティエクセプションの第二の発生 かどうかをオプションで決定する(動作322)ことを含みうる。もっとも最近トリガーされたセキュリティエクセプションが第二のセキュリティエクセプションではないとき、トラストベクターベリファイヤは、予め決定された期間、 もしくはリアルタイムで決定される期間、待機する(動作326)ように指示されうる。さらに、少なくとも一つの実施形態では、トラストベクターベリファイヤは、任意の待機時間が時間切れになった後でリセットされることを安全なプロセッサへと警告するようにプログラムされうる。待ち時間の間、安全なプロセッサは、追加プロセッシングアクションを達成しうるか、および/もしくは追加リソースを要求しうることを理解されたい。待機時間の時間切れによって安全なプロセッサはリセットされる(動作330)。
少なくとも一つの実施形態においては、安全なプロセッサのリセットは少なくとも二つの個別の状況下で起こりうる。第一に、安全なプロセッサ104(図1)は、コンテキストスワップに応じて、コンテキストマネージャ106(図1)によってリセットされうる。コンテキストスワップリセットは、システム100(図1)へと導入された可能性のあるあらゆる悪質なコードが、別のコンテキストに関連づけられた状態情報にアクセスすることを禁止する。第二に、一つ以上のセキュリティエクセプションに応じて、トラストベクターベリファイヤ108(図1)が、安全なプロセッサ104(図1)および/もしくはあらゆるサポート回路のハードウェアリセット、もしくはハードブートを開始するといつでも、安全なプロセッサ104はリセットされうる。この状況においては、セキュリティエクセプションハードウェアリセットは、悪質なコードが現在のコンテキスト内で認証されていないプロセスを完了するのを阻止する。このように、コンテキストスワップおよびセキュリティエクセプションは、安全なプロセッサ、メモリ、リソースなどの、安全で、および/もしくは認証された使用を容易にし、かつ、安全ではない、および/もしくは認証されていないそのようなコンポーネントの使用に対してある程度の保護を提供する、リセットを開始しうることを理解されたい。
安全なオペレーティング環境402の一実施形態を含むデバイス400の一実施形態のブロック図が、図4に示される。デバイス400は、例えば、衛星テレビコンバータデバイスでありうる。少なくとも一つの実施形態においては、デバイス400は、制御電子機器426を含み、さらに、安全なオペレーティング環境402、メインプロセッサ環境404、メモリ406、周辺インターフェイス408および(ハードドライブ434などによって外部データストレージが提供されるとき使用するための)データストレージインターフェイス410のうちの一つ以上を含みうるが、それに限定はされない。より詳細には、安全なオペレーティング環境402は、第一の安全なプロセッサ414および第一のトラストベクターベリファイヤ416を含む第一の安全なオペレーティング環境412、ならびに、第二の安全なプロセッサ420および第二のトラストベクターベリファイヤ422を含む第二の安全なオペレーティング環境418を含みうる。安全なオペレーティング環境の他の実施形態は、単一の安全なプロセッサ、複数の安全なプロセッサ、単一のベクターベリファイヤ、複数のベクターベリファイヤ、単一のオペレーティング環境もしくは複数のオペレーティング環境を含みうる。第一の安全なオペレーティング環境412および第二のオペレーティング環境418は、一つ以上の共通のもしくは専用のコンテキストマネージャ424へも動作可能なように接続されうる。このように、環境、プロセッサ、ベクターベリファイヤおよびコンテキストマネージャの種々の組み合わせが使用されうることを理解されたい。
さらに図4に示されるように、制御電子機器426は、システムバス432をも含みうる。バスとやり取りする通信は、図4に示されるように、直接的である、および/または、一つ以上のスタンドアロンもしくは統合されたバスマスターなどを介したものでありうる。例えば、安全なプロセッサ414/420は、バスマスターを含みうる。
トラストベクターベリファイヤ416、422および430は、望ましくは、安全なプロセッサからシステムバス432へ/システムバス432から安全なプロセッサへとやりとりするそれぞれの通信を媒介するよう構成される。さらには、一つ以上の安全なプロセッサ(例えば安全なプロセッサ414および420)は、制御電子機器426と同一の(並行した)もしくは異なる機能またはタスクを実行するよう構成されうることを理解されたい。例えば、プロセッサ420がセキュリティ機能(例えば、ビデオ信号の解読、ユーザ視聴権の検証、およびテレビコンバータデバイス400の他のコンポーネントとの相互作用)を処理するよう構成されるのに対し、プロセッサ414は、ディスプレイデータおよびユーザコマンドを処理するよう構成されうる。
安全なオペレーティング環境402は、安全なプロセッサ414および420、トラストベクターベリファイヤ416および422、ならびにコンテキストマネージャ424を含み、もう一つの集積回路もしくは個別のディスクリートコンポーネントで提供されうる。例えば、プロセッサ414および420は、トラストベクターベリファイヤ416および422とそれぞれ結合して、単一の集積回路もしくは二つの個別の集積回路(すなわち、安全なオペレーティング環境412および418それぞれにつき一つの集積回路)になりうる。
さらには、安全なプロセッサ414および420、トラストベクターベリファイヤ416および422、コンテキストマネージャ424および/もしくは他のコンポーネントは、ハードウェアおよび/もしくはソフトウェアのあらゆる所望の組み合わせで提供されうる。例えば、コンテキストマネージャ424は、一つ以上のプロセスを含むソフトウェアモジュールでありうる。同様に、一つ以上の論理コンポーネント を含むハードウェア回路が使用されうる。
制御電子機器426は、一つ以上の揮発性および/もしくは不揮発性メモリコンポーネント 406をも含みうる。このようなメモリデバイスの実施例は、ランダムアクセスメモリおよびフラッシュメモリを含むが、そのいずれにも限定はされない。
安全なプロセッサ414および420および/もしくはコンテキストマネージャ424は、また同様に、あるいはその代りに、(図示されていない)一つ以上の共通のもしくは個別のメモリコンポーネントまたはメモリ範囲へ接続されうる。(安全でありうる)メモリコンポーネントは、例えば、TVT200(図2)および/もしくは、一つ以上のコンテキストに対応する一つ以上のトラストベクターディスクリプタ202(図2)を格納するために使用されうる。同様に、メモリコンポーネントは、トラストベクターディスクリプタおよび/もしくはソフトウェア部分の計算されたシグニチャとリファレンスシグニチャを比較する上で使用される、計算されたハッシュを格納するように構成されうる。
コンテキストメモリ範囲、リファレンスシグニチャおよびトラストベクターディスクリプタは安全ではないメモリ406内に格納されうる。例えば、コンテキストメモリ範囲、リファレンスシグニチャ、および/もしくはトラストベクターディスクリプタは、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、スタティックRAM(SRAM)、もしくはフラッシュメモリなどの再書き込み可能な揮発性メモリ内に格納されうる。少なくとも一つの実施形態においては、コンテキストマネージャ424は、ポインタ、メモリアドレス、もしくは類似のリファレンスを使用することによってメモリ406と通信しうる。
安全なプロセッサ414および420、ならびにトラストベクターベリファイヤ416、422、および430は、少なくとも一つの実施形態においては、汎用プロセッサでありうる。安全なプロセッサは、キャッシュおよびメモリ管理ユニット(MMU)をも含みうるが、それに限定はされない。安全なプロセッサは、命令フェッチ、データ読み出し/書き込み、I/O読み出し/書き込みならびに他の機能およびルーティンを、必要とあれば実行もしうる。
一つ以上のトラストベクターベリファイヤ416、422および430は、安全なプロセッサ414および420と、システムバス432、メモリ406、周辺インターフェイス408、データストレージインターフェイス410および/もしくは制御電子機器426の他のコンポーネントとのアクセスを媒介するため、一つ以上のアドレスチェッカーを利用する。さらに、トラストベクターベリファイヤ416、422および430は、プロセッサ414、420もしくは428から、システムバス432への直接接続、ならびに、その延長による、メモリ406、周辺インターフェイス408、もしくはハードドライブインターフェイス410への直接接続を妨げる。プロセッサとバス間のゲートキーパーとして動作することによって、トラストベクターベリファイヤは、安全なプロセッサと他のシステムコンポーネントとの間の接続および/もしくは分離を制御して容易にしうる。
トラストベクターベリファイヤは、それらが使用される実施形態に依存して、あらゆる任意の時間に一つ以上のコンテキストを処理するよう構成されうる。同様に、トラストベクターベリファイヤ416は、アドレスチェッカーとして構成され、任意のコンテキストに対する有効なメモリ範囲を格納しかつ検証する。このような情報は、例えばトラストベクターディスクリプタ内の個別の入力として格納されうる。コンテキストデータを処理するその他の方法が可能であり、本発明の種々の実施形態の範囲内であることを当業者は理解するであろう。
トラストベクターベリファイヤは、一つ以上のプロセッサアクセス要求が有効範囲外であるという決定に到達したときにはいつでも、信号、フラグ、セキュリティエクセプションまたはその他によって応答するように構成されうる。同様に、トラストベクターベリファイヤは、メモリ406のあらゆる範囲にとっての読み出し、読み出し/書き込みおよび書き込みなどのアクセスモードを検証するよう構成されうる。例えば、トラストベクターベリファイヤ416は、安全なプロセッサ414による書き込み要求を受信することによって、データメモリ範囲がそれぞれのコンテキストに対する有効範囲かどうか、および、データメモリ範囲が書き込みアクセスを許可するかどうかを決定するように構成されうる。例えば、書き込みアクセスが許可されなかった場合、トラストベクターベリファイヤ416は、セキュリティエクセプションをフラグで示すよう構成されうる。
種々の実施形態においては、プログラムコードもしくはデータを格納するために使用されるメモリ範囲は、連続しているかもしくは不連続でありうる。例えば、メモリ範囲は、一つ以上のアドレスと、一つ以上のfrom-toアドレス長の形式でありうる。同様に、メモリ範囲は、一つ以上のメモリコンポーネントもしくはデバイスを使用しうる。例えば、メモリ範囲は、二つのDDR−SDRAMメモリコンポーネントを使用したり、3つのEEPROMメモリコンポーネントと組み合わせて一つのDDR−SDRAMメモリコンポーネントを使用したり、かつ/あるいは、実メモリおよび/もしくは仮想メモリならびに/またはデータストレージデバイスの他の組み合わせを使用しうる。このようなデバイスは任意の制御電子機器に対して、近位もしくは遠位でありうる。
さらに図4に関連して、トラストベクターディスクリプタは、一つ以上のコンテキストに対応する周辺コンポーネントを部分的にもしくは全体的に認証するためにも使用されうる。例えば、トラストベクターディスクリプタは、周辺インターフェイス408を介して、スマートカード436、リモート制御438、テレビ、および/もしくは他の周辺機器のうちの一つ以上へのアクセスを認証しうる。一つ以上の周辺機器は、例えば、入力ポインタおよび周辺範囲によってトラストベクターテーブル内に表されうる。範囲は、一つ以上のfrom-toアドレスの形式で表現されうる。図2に関連して説明されたように、コンテキストのトラストベクターディスクリプタ内の周辺機器を認証するためにビットマップが使用されうる。例えば、ビットマップ“0101B”は、周辺コンポーネント1(1)と3(3)を認証すると解釈される。
図4に示される実施形態においては、コンテキストマネージャ424は、安全なプロセッサ414および420上の安全なコンテキストスワップを管理することに関与する。一実施形態においては、初期段階の間、すなわち、テレビコンバータデバイス400のブートプロセスの間、コンテキストマネージャ424は、メモリ406から一つ以上のコンテキストのためのトラストベクターディスクリプタを受信する。トラストベクターディスクリプタがコンテキストマネージャ424にロードされる前に、トラストベクターディスクリプタを認証することによって、トラストベクターディスクリプタのインテグリティが検証されうる。例えば、トラストベクターディスクリプタのインテグリティは、ダイジェストを計算するためのハッシュ関数を使用し、計算されたシグニチャを生成するためにキーでダイジェストにサインし、計算されたシグニチャとリファレンスシグニチャ226(図2)とを比較することによって検証されうる。この実施例においては、計算されたシグニチャとリファレンスシグニチャとの比較が一致しない場合には、セキュリティエクセプションが生成されるか、もしくは、制御電子機器426が警告を受ける可能性があり、コンテキストマネージャ424はソフトウェアを有効化する(イネーブルにする)ことができない。
少なくとも一つの実施形態においては、トラストベクターベリファイヤ416および422は、メモリ406のある範囲もしくは複数の範囲へトラストベクターディスクリプタを制限しうる。例えば、初期段階のブートプロセス間で、かつ、トラストベクターベリファイヤ416および422が一つ以上のコマンドをコンテキストマネージャ424から受信する前に、一つ以上のトラストベクターディスクリプタは、メモリ406のうちの定義されたある範囲、もしくは複数の範囲からロードされうるが、メモリの他の範囲からはロードされない。
さらなる実施形態においては、トラストベクターディスクリプタ内にリストされた領域210(図2)から領域212(図2)までのメモリ範囲内に格納されたコードもまた、一つ以上のコンテキストのために認証されうる。同様に、コンテキストマネージャ424は、さらなるコンテキスト有効化のための認証において使用される計算されたハッシュを格納しうる。
少なくとも一つの実施形態のために図3に関連して説明されたように、安全なプロセッサ414および420は、例えば、コンテキストマネージャ424へと、コンテキストスワップの要求などの信号を伝送することによってコンテキストを変更しうる。コンテキストマネージャ424は、一つ以上のトラストベクターディスクリプタの指定を受信することによって、一つ以上のコンテキストに対応するプログラムメモリ範囲の信頼性を検証する。いったんコンテキストメモリ範囲が検証されると、コンテキストマネージャ424は、トラストベクターディスクリプタのロードのために検証されたコンテキストに対応するメモリ406の範囲もしくは複数の範囲を、トラストベクターベリファイヤ416および422に通知する。一実施形態においては、メモリ406のプログラムメモリ範囲およびデータメモリ範囲のためのリファレンスシグニチャは、初期化によって、連続的に、ランダムに、スケジュールに従って、もしくは何らかのイベントに応じて検証される。
一つ以上のコンテキストに対応するメモリ406の範囲もしくは複数の範囲および、リファレンスシグニチャは、カプセル化されるか、および/もしくは安全ではない位置に格納されうる。例えば、一つ以上のコンテキストに対応するメモリ406の範囲もしくは複数の範囲およびリファレンスシグニチャは、定義ヘッダー内にカプセル化されうる。さらには、非対称キーがシグニチャを得るために使用されうる。しかしながら、安全に格納された対称キーがシグニチャを得るためにも使用されうることを理解されたい。
再度図4に関連して、制御電子機器404は、メインプロセッサ428およびメイントラストベクターベリファイヤ430をさらに含むメインプロセッサオペレーティング環境404を含みうる。少なくとも一つの実施形態においては、メインプロセッサ環境404は、例えば、ユーザインターフェイスおよび他のソフトウェアルーティンを実行するために使用されうる。一般的には、このようなルーティンは、安全なプロセッサ414および416によって実行されるルーティンと同一レベルのセキュリティは必要としない。
さらには、Linuxオペレーティングシステムなどの安全なコンテキストスワップを実行することが不可能なあるプロセスは、一般的には、安全なプロセッサ414ではなくメインプロセッサ428によって実行される。さらには、メイン環境は、メインプロセッサによる一つ以上のリソースへのアクセスを媒介するように構成されたトラストベクターベリファイヤ430を含むよう構成されうる。さらには、コンテキストマネージャは、メイン環境から除外され、それによってメインプロセッサによるコンテキストスワップを排除する。
図5は、少なくとも一つの実施形態において使用するためのデバイスのブロック図を提供する。示されるように、デバイス500は、安全なプロセッサ410およびコンテキストマネージャ424を有する安全なオペレーティング環境502を含む。さらには、このデバイスは、メインプロセッサ512を含むメインプロセッシング環境404を含む。安全なプロセッサ410とメインプロセッサ512は、バス432を介して相互接続される。トラストベクターベリファイヤ504、506および508は、バス432へ接続され、安全なプロセッサ510および/もしくはメインプロセッサ512による一つ以上のリソースへのアクセス要求を媒介するよう構成される。トラストベクターベリファイヤ504、506、および508は、安全なプロセッサ410に対して非同期的に動作するよう構成されうる。より詳細には、コンテキストマネージャ424は、初期状態、例えばブートシークエンスの間、特定のコンテキストに関連する、もしくはより一般的にはセキュリティレベルに関連するメモリ406の範囲もしくは複数の範囲を、トラストベクターベリファイヤ504、506および508にロードする。その後、コンテキスト変更が実行されて、新規のトラストベクターディスクリプタが一つ以上のベクターベリファイヤにロードされるまで、このコンテキストは、プロセッサとリソースとの間の全ての通信のために使用されうる。このように、安全なプロセッサは、それに関連づけられたコンテキストマネージャを介して、安全なプロセッサ自身およびメインプロセッサによって使用されるベクターベリファイヤの構成を決定することが理解される。
別の実施形態においては、個別のコンポーネントは、一つより多いトラストベクターベリファイヤを有し、一つより多い安全なプロセッサは同一のベリファイヤモジュールへとアクセス可能である。例えば、複数の安全なプロセッサ構成においては、コンポーネントあたり複数のトラストベクターベリファイヤが、コンポーネントあたり二つ以上のコンテキストのさらなる非同期処理を許可する。さらに別の実施形態においては、一つ以上のコンポーネントは、トラストベクターベリファイヤ504、506および508によって媒介される別の接続なしで、もしくは別の接続に加えて、システムバス432へと個別に接続する。
ここで図6に関連して、ソフトウェア部分、トラストベクターディスクリプタ、もしくはデータのいずれかのためのメモリ範囲をスクラブするか、または認証するプロセス600が、本発明の少なくとも一つの実施形態のために示される。示されるように、ハッシュは認証のために指定されたローカルデータについて生成される(動作610)。例えば、制御電子機器426(図4)は、メモリ範囲のためのハッシュ値もしくは他の同様の値を決定する。
ハッシュはキーでサインされ、それによって計算されたシグニチャが生成される(動作612)。少なくとも一つの実施形態においては、リファレンスハッシュは、パブリックキーでサインされ、計算されたシグニチャを生成する。計算されたシグニチャは比較のために格納される(動作613)。
さらに図6に示されるように、認証プロセスは、リファレンスシグニチャを読み出すステップ(動作614)を含みうる。少なくとも一つの実施形態では、コンテキストマネージャ106(図1)は、トラストベクターデータ構造のシグニチャフィールド226(図2)もしくはコードシグニチャフィールド228(図2)のためのリファレンスシグニチャを読み出す。しかしながら、リファレンスシグニチャは異なるデータ構造から読み出されうるか、もしくは別のコンポーネントから受信されうることを理解されたい。例えば、コンテキストマネージャは、安全なメモリからシグニチャを読み出しうる。少なくとも一つの実施形態においては、以前のハッシュがリファレンスシグニチャを生成するために、プライベートキーでサインされた。
さらに図6に示されるように、認証プロセスは、リファレンスシグニチャと計算されたシグニチャを比較するステップ(動作616)を含みうる。すなわち、コンテキストマネージャ106(図1)は、パブリックキーでハッシュをサインすることによって生成される計算されたシグニチャを、トラストベクターデータ構造から読み出されたリファレンスシグニチャと数学的に比較しうる。計算されたシグニチャとリファレンスシグニチャとの比較は、ビット単位比較もしくは他のコンピュータによるプロセスによって完了されうることを理解されたい。シグニチャを比較する場合、ソフトウェア部分、トラストベクターディスクリプタ、もしくはデータが認証される。
認証プロセスは、オプションとして、認証プロセスが継続的かどうかを決定するステップ(動作618)を含む。少なくとも一つの実施形態においては、コンテキストマネージャ106(図1)は、トラストベクターディスクリプタ内のスクラブタイプデータフィールド218(図2)のための設定を決定する。例えば、継続的スクラブタイプビットがスクラブタイプデータフィールド218内に設定される場合、コンテキストマネージャ106(図1)は、認証が継続的であることを決定する。コンテキストマネージャ106(図1)は、ソフトウェア部分、トラストベクターディスクリプタ、もしくはデータとともに送信されたヘッダー内の値を調べることによって、またはメモリの別の部分における設定を読み出すことによって、または別のコンポーネントからの命令を受信することによって、認証のタイプを決定しうることを理解されたい。
認証が継続的である場合、図6に示される認証プロセスのさらなる実施形態は、同一のソフトウェア部分、トラストベクターディスクリプタ、もしくはデータに対して別の認証を実施するため、一定期間 、待機するステップ(動作620)をオプションとして含みうる。少なくとも一つの実施形態においては、コンテキストマネージャ106(図1)は、所定の期間待機し、その後、同一のソフトウェア部分、トラストベクターディスクリプタ、もしくはデータに対して別の認証を完了する。所定の期間は、1秒足らず、数秒、数分、数時間、数日などのいかなる期間でもありうる。少なくとも一つの実施形態においては、コンテキストマネージャ106(図1)内のタイマーは、所定の期間をカウントする。設定された限界に到達することによって、認証プロセスは再度実施される。
上記にしたがって、一実施形態は、安全なコンピュータ環境においてソフトウェアを実行するためのシステムを含む。システムは、ソフトウェアの第一の部分からソフトウェアの第二の部分へと実行を切り替えるとき、第一のコンテキストから第二のコンテキストへのコンテキストスワップを要求するよう構成された安全なプロセッサを含む。システムはさらに、安全なプロセッサと連通し、要求されたコンテキストスワップを受信し、コンテキストスワップを開始するよう構成されたコンテキストマネージャを含む。システムはさらに、安全なプロセッサおよびコンテキストマネージャと連通し、コンテキストマネージャからのコマンドによってトラストベクターディスクリプタをロードするよう構成されたトラストベクターベリファイヤを含む。
少なくとも一つの実施形態においては、コンテキストマネージャは、コンテキストスワップに応じて、安全なプロセッサのリセットを開始する。
少なくとも一つの実施形態においては、コンテキストマネージャは、トラストベクターディスクリプタを第二のコンテキストと関連付ける。
少なくとも一つの実施形態においては、トラストベクターベリファイヤは、トラストベクターディスクリプタにしたがって、安全なプロセッサによる一つ以上のリソースへのアクセスを制御する。
少なくとも一つの実施形態においては、システムは、コンテキストマネージャと連通する第二の安全なプロセッサを含む。第二の安全なプロセッサはソフトウェアの一つ以上の他の部分を実行し、ソフトウェアの第三の部分からソフトウェアの第四の部分へと実行を切り替えるとき、第三のコンテキストから第四のコンテキストへのコンテキストスワップを要求するよう構成される。システムは、第二の安全なプロセッサおよびコンテキストマネージャと連通し、コンテキストマネージャからのコマンドによって第二のトラストベクターディスクリプタをロードするよう構成された、第二のトラストベクターベリファイヤをも含む。トラストベクターベリファイヤは、第二のトラストベクターディスクリプタにしたがって、第二の安全なプロセッサによる一つ以上のリソースへのアクセスを制御するよう構成される。
少なくとも一つの実施形態においては、システムは、スタティックなコンテキスト内のソフトウェアの一部を実行するよう構成されたメインプロセッサを含む。システムは、メインプロセッサと連通し、トラストベクターディスクリプタをロードし、かつ、スタティックなコンテキスト内のメインプロセッサによる一つ以上のリソースへのアクセスを制御するよう構成されたメイントラストベクターベリファイヤをも含む。
少なくとも一つの実施形態においては、システムは、スタティックなコンテキスト内の動作を実行するよう構成されたメイントラストベクターベリファイヤと連通するバスマスターを含む。
少なくとも一つの実施形態においては、スタティックなコンテキスト内で実行されるソフトウェアの一部はオペレーティングシステムである。
別の実施形態は、安全なコンピュータ環境においてソフトウェアを実行するためのシステムを含む。システムは、二つ以上の安全なプロセッサを含み、各々の安全なプロセッサは、ソフトウェアの第一の部分からソフトウェアの別の部分へと実行を切り替えるとき、第一のコンテキストから別のコンテキストへのコンテキストスワップを要求するよう構成される。システムは、二つ以上の安全なプロセッサの各々と連通し、二つ以上の安全なプロセッサの少なくとも一つによって要求されるコンテキストスワップを受信するよう構成されたコンテキストマネージャをさらに含む。受信された要求に応じて、コンテキストマネージャは、要求している安全なプロセッサのリセットを開始し、少なくとも一つのリソースへのアクセスを制御する上で使用するために構成される第一のトラストベクターディスクリプタと他の要求されたコンテキストを関連付ける。コンテキストマネージャは、他の要求されたコンテキストへのスワップをさらに開始する。システムは、スタティックなコンテキスト内のオペレーティングシステムを実行するよう構成されたメインプロセッサをも含む。システムは、複数のトラストベクターベリファイヤをも含み、各々のトラストベクターベリファイヤは、安全なプロセッサとメインプロセッサのうちの少なくとも一つと連通する。トラストベクターベリファイヤは、要求されたコンテキストと関連付けられた第一のトラストベクターディスクリプタ、もしくは、メインプロセッサによる一つ以上のリソースへのアクセスを制御する上で使用するために構成されるメイントラストベクターディスクリプタをロードするように構成される。
少なくとも一つの実施形態においては、安全なプロセッサのうちの一つは、ソフトウェアの第一の部分からソフトウェアの第二の部分へと実行を切り替えるとき、第一のコンテキストから第二のコンテキストへの第一のコンテキストスワップを要求するよう構成される。
少なくとも一つの実施形態においては、安全なプロセッサのうちの一つは、ソフトウェアの第三の部分からソフトウェアの第四の部分へと実行を切り替えるとき、第三のコンテキストから第四のコンテキストへの第二のコンテキストスワップを要求するよう構成される。
少なくとも一つの実施形態においては、ソフトウェアの第二の部分と第四の部分は実質的に類似している。
別の実施形態は、ソフトウェアの一部のためのコンテキストへとスワップする要求を受信することによって、安全なオペレーティング環境においてソフトウェアを実行するための方法を含む。この方法は、プロセッサ動作の制御およびプロセッサのリセットにおいて使用するために構成されるトラストベクターディスクリプタをロードするステップを含む。
少なくとも一つの実施形態においては、トラストベクターディスクリプタは、一つ以上の周辺デバイスへのプロセッサによるアクセスを定義し、トラストベクターベリファイヤは、一つ以上の周辺デバイスへのプロセッサによるアクセスを制御する。
少なくとも一つの実施形態においては、トラストベクターディスクリプタは、ビットマップを含む。
少なくとも一つの実施形態においては、方法は、ソフトウェアの一部を認証するステップをさらに含む。
少なくとも一つの実施形態においては、認証動作は、ソフトウェアの一部のハッシュを生成するステップ、計算されたシグニチャを生成するため、生成されたハッシュにサインするステップ、リファレンスシグニチャを読み出すステップ、および、リファレンスシグニチャと計算されたシグニチャを比較するステップを含む。シグニチャが同一である場合、本方法は、ソフトウェアの一部の実行を許可するステップをさらに含む。
少なくとも一つの実施形態においては、方法は、ある期間待機するステップと、ソフトウェアの一部の第二の認証を実施するステップを含む。
少なくとも一つの実施形態においては、第二の認証は、ソフトウェアの認証が継続的なときに生じる。
少なくとも一つの実施形態においては、方法は、安全なプロセッサからのリソース要求を受信するステップと、リソース要求がトラストベクターディスクリプタに適合するかどうかを決定するステップを含む。リソース要求がトラストベクターディスクリプタに適合しない場合には、方法は、セキュリティエクセプションをトリガーするステップと安全なプロセッサをリセットするステップをさらに含む。
少なくとも一つの実施形態においては、方法は、セキュリティエクセプションが第二のセキュリティエクセプションかどうかを決定するステップをさらに含む。セキュリティエクセプションが第二のセキュリティエクセプションではない場合には、方法は、安全なプロセッサのリセット前に、ある期間待機するステップを含む。セキュリティエクセプションが第二のセキュリティエクセプションである場合には、方法は、ある期間待機することなく安全なプロセッサをリセットするステップをさらに含む。
一実施形態は、ソフトウェアの一部のためのコンテキストへのコンテキストスワップを要求するように、かつ、ソフトウェアの一部のハッシュを生成することによって、ソフトウェアの一部を認証するように構成された安全なプロセッサを含む装置である。安全なプロセッサは、計算されたシグニチャを生成するために、生成されたハッシュにサインし、リファレンスシグニチャを読み出し、かつ、リファレンスシグニチャと計算されたシグニチャを比較するようにさらに構成される。シグニチャが同一である場合には、安全なプロセッサは、ソフトウェアの一部の実行を許可する。装置は、要求されたコンテキストスワップを受信し、トラストベクターベリファイヤにトラストベクターディスクリプタをロードし、安全なプロセッサをリセットするよう構成された、コンテキストマネージャをも含む。装置は、安全なプロセッサからリソース要求を受信し、そのリソース要求がトラストベクターディスクリプタに適合するかどうかを決定するよう構成されたトラストベクターベリファイヤをも含む。トラストベクターベリファイヤは、リソース要求がトラストベクターディスクリプタに適合しない場合にセキュリティエクセプションをトリガーし、セキュリティエクセプションが第二のセキュリティエクセプションかどうかを決定するようにも構成される。トラストベクターベリファイヤは、セキュリティエクセプションが第二のセキュリティエクセプションではない場合には、安全なプロセッサをリセットする前に、ある期間待機する。しかしながら、トラストベクターベリファイヤは、セキュリティエクセプションが第二のセキュリティエクセプションである場合には、ある期間待機することなく安全なプロセッサをリセットする。
別の実施形態は、安全なプロセッサの実行を制御するためのコンピュータシステム上で実行する、エンコードされたデータ構造を有するコンピュータで読み出し可能な媒体を含む。データ構造は、一つ以上のコンテキストを含み、各コンテキストは、コンテキストを識別するコンテキスト識別フィールド、安全なプロセッサがアクセス可能なメモリ領域を指定するメモリデータ領域、および安全なプロセッサがアクセス可能なハードウェアリソースを指定するハードウェアトラストベクターを含む。コンピュータシステムは、安全なプロセッサがハードウェアトラストベクターに基づいてハードウェアリソースにアクセス可能かどうかを決定するよう構成される。
少なくとも一つの実施形態においては、ハードウェアトラストベクターは、安全なプロセッサのために許可されたアクセスのタイプを識別するビットマップである。
少なくとも一つの実施形態においては、データ構造は、コード開始アドレスフィールドを含む。
少なくとも一つの実施形態においては、データ構造は、コード終了アドレスフィールドを含む。
少なくとも一つの実施形態においては、データ構造は、キー番号フィールド、ターゲットプロセッサフィールド、ベクター番号フィールド、スクラブタイプフィールド、プロセッサブートアドレスフィールド、トラストベクターディスクリプタシグニチャフィールド、およびコードシグニチャフィールドを含む。
少なくとも一つの実施形態においては、コード開始アドレスフィールドおよびコード終了アドレスフィールドは、コンテキスト内で実行されるソフトウェアの一部のためのプログラムメモリ範囲を定義する。
少なくとも一つの実施形態においては、スクラブタイプフィールドは、ソフトウェアの一部の認証が継続的かどうかを指定する。
別の実施形態は、安全なプロセッサおよびコンピュータで読み出し可能な媒体を含むコンピュータシステムである。コンピュータで読み出し可能な媒体は、安全なプロセッサによる実行のための一つ以上のコンテキストを有するエンコードされたデータ構造を含む。各コンテキストは、コンテキスト識別フィールド、どのハードウェアリソースに安全なプロセッサがアクセス可能かを指定するハードウェアトラストベクター、コード開始アドレスフィールド、コード終了アドレスフィールド、およびプロセッサブートアドレスフィールドを含む。コード開始アドレスフィールドとコード終了アドレスフィールドは、コンテキスト内で実行されるソフトウェアの一部のためのプログラムメモリ範囲を定義する。コンピュータシステムは、安全なプロセッサがハードウェアトラストベクターに基づいてハードウェアリソースにアクセス可能かどうかを決定するよう構成される。
少なくとも一つの実施形態においては、コンテキストは、ターゲットプロセッサフィールドを含む。
別の実施形態は、悪質なソフトウェアからコンピュータシステムを保護するための方法を含む。方法は、トラストベクターディスクリプタをロードするステップを含み、トラストベクターディスクリプタはコンテキストを定義する。方法は、悪質なソフトウェアを受信するステップと、悪質なソフトウェア内の命令を実行しようとするステップをさらに含む。方法は、命令がコンテキストに対するエクセプションであることを認めるステップと、その命令を実行することを阻止するステップと安全なプロセッサをリセットするステップをさらに含む。
少なくとも一つの実施形態においては、方法は、悪質なソフトウェアのためのコンテキストスワップを受信するステップを含む。
少なくとも一つの実施形態においては、方法は悪質なソフトウェアを識別するステップを含む。
少なくとも一つの実施形態においては、悪質なソフトウェアを識別するステップは、悪質なソフトウェアのハッシュを生成するステップと、ハッシュから計算されたシグニチャを生成するステップと、リファレンスシグニチャを読み出すステップと、計算されたシグニチャをリファレンスシグニチャと比較するステップをさらに含む。計算されたシグニチャとリファレンスシグニチャが同一でない場合には、方法は、その命令を実行することを阻止するステップをさらに含む。
少なくとも一つの実施形態においては、方法はトラストベクターディスクリプタを識別するステップを含む。
少なくとも一つの実施形態においては、命令はコンテキスト内のアクセス不可能なメモリ領域内に格納される。
少なくとも一つの実施形態においては、命令は、周辺デバイスもしくはコンテキスト内でアクセス不可能なメモリ位置へのアクセスを試みる。
多数の例示的な態様および実施形態が上述されてきたが、当業者はそれらの、ある改変、置換、付加およびサブコンビネーションを理解するであろう。したがって、以下に付随する請求項および今後導入される請求項は、その趣旨および範囲内にあるように、このようなすべての改変、置換、付加および代替的組み合わせを含むものと解釈されることを意図される。
少なくとも一つの実施形態においては、トラストベクターディスクリプタ202、204および206は、ソフトウェア、および/もしくはその実行されるべき部分の信頼性を検証するために使用されるキー番号および/もしくは他の参照情報を含みうる。参照情報は、例えば、コードを認証するために使用されるコードのフィンガープリント(身分証明)、コードを認証するために使用されるコードのシグニチャ、および/もしくはコードのシグニチャを検証するために使用されるキーに対する参照を含みうる。さらに、複数のキーを伴う一実施形態においては、キー番号214は、生成されたシグニチャを検証し、それによってソフトウェアの一部を認証するためにどのキーを使用するか指定しうる。このような検証は、例えば、生成されたシグニチャをトラストベクターディスクリプタシグニチャ226および/もしくはコードシグニチャ228と比較することによって生じうることを理解されたい。
ハードウェアトラストベクターディスクリプタフィールド220は、コンテキスト内のリソースアクセスを定義するために使用されうる。さらに詳細には、ハードウェアトラストベクターディスクリプタ220は、任意のトラストベクターディスクリプタ202、204、206によって定義されるコンテキスト内で実施される動作中に、安全なプロセッサ104(図1)がインターフェイス接続したり、通信したりしうるような、周辺デバイスもしくは内部コンポーネントなどのリソースを識別する。一実施形態においては、ハードウェアトラストベクターディスクリプタ220は、ビットマップもしくはビットアレイであり、アレイの各ビットは、あるタイプのハードウェアを表す。例えば、ハードウェアトラストベクターディスクリプタ220は、“0101”として現れうる。“1”に設定された第一のビットは、プロセッサがハードドライブコントローラにアクセス可能なことを表しうる。“0”に設定された第二のビットは、プロセッサがスマートカードにアクセスできないことを表しうる。“1”に設定された第三のビットおよび“0”に設定された第四のビットは、プロセッサがI/Oポートにアクセス可能であるが、ビデオコントローラにはアクセスできないことを表しうる。ハードウェアトラストベクターディスクリプタ220内のビット数は、安全なプロセッサが使用される実施形態ごとに異なり、4ビットよりも少ないかもしくは多いビット数でもありうる。ハードウェアトラストベクターディスクリプタ220の他の実施形態が使用されうることを理解されたい。例えば、ハードウェアトラストベクターディスクリプタ220は、ハードウェアトラストベクターディスクリプタ220によって識別されるもの以外は、任意の実装内で全てのリソースが安全なプロセッサに対して使用可能であるように構成されうる。他の実施形態もまた可能性があり、付随のもしくは以下に追加された請求項の範囲内に含まれる。
メモリデータ領域フィールド222もまた、コンテキスト内のリソースアクセスを定義するために使用され、さらには、安全なプロセッサ104(図1)が例えば、メモリからデータを読み出す、および/もしくはメモリへデータを書き込むためにアクセス可能なメモリ126(図1)内のアドレススペースを定義するために使用される。ハードウェアトラストベクターディスクリプタ220に関しては、メモリデータ領域フィールド222は、開始アドレスおよび停止アドレスに基づいて、隣接ブロックとしておよび/もしくはその他のものとして、特定のアドレスによってアドレススペースを指定しうる。同様に、アドレススペースは、アファーマティブ(すなわちアクセスされうるもの)、エクセプション(すなわち、識別されるもの以外は全てがアクセス可能)もしくはその他のもので表現されうる。このように、メモリデータ領域フィールド222は、実行可能なデータが読み出されるおよび/もしくは書き込まれることが可能なアドレスを識別しうることを理解されたい。安全なプロセッサが禁止されたデータ領域からのコードを実行するおよび/もしくはデータを使用しようとした場合にセキュリティエクセプションが生じるように、一つ以上の定義されていないアドレス内に含まれるデータは、同様に実行不可能なものとして指定されうる。
図3Aにさらに示されるように、コンテキストスワッププロセスは、トラストベクターベリファイヤへとトラストベクターをロードするステップ(動作306)をも含みうる。所望された場合、コンテキストマネージャ106(図1)はディスクリプタ202(図2)などのトラストベクターディスクリプタをトラストベクターベリファイヤ108(図1)へとロードする。本発明のある実施形態に関連して上述されたように、トラストベクターベリファイヤは、非アクティブ状態にあるディスクリプタを事前にロードされうる。このように、トラストベクターベリファイヤのロードは、あらゆる任意の実施形態にとってオプションである、および/もしくは不必要でありうることを容易に理解されたい。
安全なオペレーティング環境402の一実施形態を含むデバイス400の一実施形態のブロック図が、図4に示される。デバイス400は、例えば、衛星テレビコンバータデバイスでありうる。少なくとも一つの実施形態においては、デバイス400は、制御電子機器426を含み、さらに、安全なオペレーティング環境402、メインプロセッサ環境404、メモリ406、周辺インターフェイス408および(ハードドライブ434などによって外部データストレージが提供されるとき使用するための)データストレージインターフェイス410のうちの一つ以上を含みうるが、それに限定はされない。より詳細には、安全なオペレーティング環境402は、第一の安全なプロセッサ414および第一のトラストベクターベリファイヤ416を含む第一の安全なオペレーティング環境412、ならびに、第二の安全なプロセッサ420および第二のトラストベクターベリファイヤ422を含む第二の安全なオペレーティング環境418を含みうる。安全なオペレーティング環境の他の実施形態は、単一の安全なプロセッサ、複数の安全なプロセッサ、単一のベクターベリファイヤ、複数のベクターベリファイヤ、単一のオペレーティング環境もしくは複数のオペレーティング環境を含みうる。第一の安全なオペレーティング環境412および第二の安全なオペレーティング環境418は、一つ以上の共通のもしくは専用のコンテキストマネージャ424へも動作可能なように接続されうる。このように、環境、プロセッサ、ベクターベリファイヤおよびコンテキストマネージャの種々の組み合わせが使用されうることを理解されたい。
安全なオペレーティング環境412は、安全なプロセッサ414および420、トラストベクターベリファイヤ416および422、ならびにコンテキストマネージャ424を含み、一つ以上の集積回路もしくは個別のディスクリートコンポーネントで提供されうる。例えば、プロセッサ414および420は、トラストベクターベリファイヤ416および422とそれぞれ結合して、単一の集積回路もしくは二つの個別の集積回路(すなわち、安全なオペレーティング環境412および418それぞれにつき一つの集積回路)になりうる。
再度図4に関連して、制御電子機器426は、メインプロセッサ428およびメイントラストベクターベリファイヤ430をさらに含むメインプロセッサオペレーティング環境404を含みうる。少なくとも一つの実施形態においては、メインプロセッサオペレーティング環境404は、例えば、ユーザインターフェイスおよび他のソフトウェアルーティンを実行するために使用されうる。一般的には、このようなルーティンは、安全なプロセッサ414および416によって実行されるルーティンと同一レベルのセキュリティは必要としない。
図5は、少なくとも一つの実施形態において使用するためのデバイスのブロック図を提供する。示されるように、デバイス500は、安全なプロセッサ410およびコンテキストマネージャ424を有する安全なオペレーティング環境502を含む。さらには、このデバイスは、メインプロセッサ512を含むメインプロセッサオペレーティング環境404を含む。安全なプロセッサ410とメインプロセッサ512は、バス432を介して相互接続される。トラストベクターベリファイヤ504、506および508は、バス432へ接続され、安全なプロセッサ510および/もしくはメインプロセッサ512による一つ以上のリソースへのアクセス要求を媒介するよう構成される。トラストベクターベリファイヤ504、506、および508は、安全なプロセッサ410に対して非同期的に動作するよう構成されうる。より詳細には、コンテキストマネージャ424は、初期状態、例えばブートシークエンスの間、特定のコンテキストに関連する、もしくはより一般的にはセキュリティレベルに関連するメモリ406の範囲もしくは複数の範囲を、トラストベクターベリファイヤ504、506および508にロードする。その後、コンテキスト変更が実行されて、新規のトラストベクターディスクリプタが一つ以上のベクターベリファイヤにロードされるまで、このコンテキストは、プロセッサとリソースとの間の全ての通信のために使用されうる。このように、安全なプロセッサは、それに関連づけられたコンテキストマネージャを介して、安全なプロセッサ自身およびメインプロセッサによって使用されるベクターベリファイヤの構成を決定することが理解される。
図1に示される実施形態においては、コンピュータ環境100は、によって表される安全なコンピュータ環境もしくはオペレーティング環境102を含みうる。安全なコンピュータ環境もしくはオペレーティング環境102は、安全なセントラルプロセッシングユニット(“CPU”)もしくはプロセッサ104、コンテキストマネージャ106およびトラストベクターベリファイヤ108を含みうる。さらには、プロセッサ104、コンテキストマネージャ106およびトラストベクターベリファイヤ108の各々は、お互いに直接的にもしくは間接的に連通しうる。安全なプロセッサ104は、あらゆるタイプの汎用プロセッサであり、所望されるように安全になるよう特別に設計されうる。実施形態においては、コンテキストマネージャ106およびトラストベクターベリファイヤ108は、本発明の環境において使用するための、特別に設計されたハードウェアデバイス、ソフトウェアモジュール、もしくはハードウェアとソフトウェアの組み合わせでありうる。
図5は、少なくとも一つの実施形態において使用するためのデバイスのブロック図を提供する。示されるように、デバイス500は、安全なプロセッサ414およびコンテキストマネージャ424を有する安全なオペレーティング環境502を含む。さらには、このデバイスは、メインプロセッサ512を含むメインプロセッサオペレーティング環境404を含む。安全なプロセッサ414とメインプロセッサ512は、バス432を介して相互接続される。トラストベクターベリファイヤ504、506および508は、バス432へ接続され、安全なプロセッサ414および/もしくはメインプロセッサ512による一つ以上のリソースへのアクセス要求を媒介するよう構成される。トラストベクターベリファイヤ504、506、および508は、安全なプロセッサ414に対して非同期的に動作するよう構成されうる。より詳細には、コンテキストマネージャ424は、初期状態、例えばブートシークエンスの間、特定のコンテキストに関連する、もしくはより一般的にはセキュリティレベルに関連するメモリ406の範囲もしくは複数の範囲を、トラストベクターベリファイヤ504、506および508にロードする。その後、コンテキスト変更が実行されて、新規のトラストベクターディスクリプタが一つ以上のベクターベリファイヤにロードされるまで、このコンテキストは、プロセッサとリソースとの間の全ての通信のために使用されうる。このように、安全なプロセッサは、それに関連づけられたコンテキストマネージャを介して、安全なプロセッサ自身およびメインプロセッサによって使用されるベクターベリファイヤの構成を決定することが理解される。

Claims (20)

  1. ソフトウェア命令の第一の部分および第二の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記ソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための要求を生成するよう動作可能な安全なプロセッサ(104)と、
    前記安全なプロセッサへと連通するように結合され、前記要求を受信し、前記第一のコンテキストと前記第二のコンテキスト間のコンテキストスイッチを開始し、前記第二のコンテキストはコンテキスト識別子に関連付けられる、第一のディスクリート回路(106)と、
    前記安全なプロセッサおよび前記第一のディスクリート回路へと連通するように結合され、前記コンテキスト識別子に基づいて、前記安全なプロセッサと前記安全なプロセッサに関連付けられた少なくとも一つのリソース(120)との間のアクセスを媒介するよう動作可能な、第二のディスクリート回路(108)と、
    を含むことを特徴とする装置。
  2. 前記第二のコンテキストは、トラストベクターディスクリプタに関連付けられ、前記第二のディスクリート回路は、前記第一のディスクリート回路からのコマンドに応じて、前記トラストベクターディスクリプタをロードする、
    ことを特徴とする、請求項1に記載の装置。
  3. 前記第二のディスクリート回路は、前記トラストベクターディスクリプタに基づいて、前記安全なプロセッサと前記少なくとも一つのリソースとの間の前記アクセスを媒介するよう動作可能である、
    ことを特徴とする、請求項2に記載の装置。
  4. 前記第一のディスクリート回路は、前記要求に応じて、前記安全なプロセッサのリセットを開始する、
    ことを特徴とする、請求項1に記載の装置。
  5. 前記リソースは、メモリ(126)を含み、前記第二のディスクリート回路は、前記安全なプロセッサと前記メモリとの間のアクセスを媒介する、
    ことを特徴とする、請求項1に記載の装置。
  6. 前記リソースは、少なくとも一つの周辺デバイス(408)を含み、前記第二のディスクリート回路は、前記安全なプロセッサと前記少なくとも一つの周辺デバイスとの間のアクセスを媒介する、
    ことを特徴とする、請求項1に記載の装置。
  7. スタティックなコンテキスト内の第一のソフトウェア命令を実行するよう動作可能なメインプロセッサ(512)と、
    第二のソフトウェア命令の第一の部分と第二の部分を実行するよう動作可能で、さらに、前記第二のソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記第二のソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための要求を生成するよう動作可能な安全なプロセッサ(410)と、
    前記安全なプロセッサと連通するように結合され、前記要求を受信し、前記第一のコンテキストと前記第二のコンテキストとの間のコンテキストスイッチを開始し、前記第二のコンテキストはコンテキスト識別子に関連付けられる、第一のディスクリート回路(424)と、
    前記メインプロセッサと前記安全なプロセッサに連通するよう結合されたバス(432)と、
    前記バスを介して、前記メインプロセッサと前記安全なプロセッサに連通するよう結合された、少なくとも一つのリソース(406、408、434、436)と、
    前記バスと連通するように結合され、前記コンテキスト識別子に基づいて、前記安全なプロセッサと前記メインプロセッサによる前記少なくとも一つのリソースへのアクセスを媒介するよう動作可能な、第二のディスクリート回路(504、506、508)と、
    を含む、
    ことを特徴とする装置。
  8. 前記第二のコンテキストは、トラストベクターディスクリプタに関連付けられ、前記第二のディスクリート回路は、前記第一のディスクリート回路からのコマンドに応じて、前記トラストベクターディスクリプタをロードし、前記第二のディスクリート回路は、前記トラストベクターディスクリプタに基づいて、前記メインプロセッサおよび前記安全なプロセッサによる前記少なくとも一つのリソースへの前記アクセスを媒介するよう動作可能である、
    ことを特徴とする、請求項7に記載の装置。
  9. 前記第一のディスクリート回路は、前記要求に応じて前記安全なプロセッサのリセットを開始する、
    ことを特徴とする、請求項7に記載の装置。
  10. 前記リソースは、メモリ(406)を含み、前記第二のディスクリート回路は、前記メインプロセッサと前記安全なプロセッサによる、前記メモリへのアクセスを媒介する、
    ことを特徴とする、請求項7に記載の装置。
  11. 前記リソースは、少なくとも一つの周辺デバイス(434)を含み、前記第二のディスクリート回路は、前記メインプロセッサと前記安全なプロセッサによる、前記少なくとも一つの周辺デバイスへのアクセスを媒介する、
    ことを特徴とする、請求項7に記載の装置。
  12. 前記少なくとも一つの周辺デバイスは、ハードドライブを含む、
    ことを特徴とする、請求項7に記載の装置。
  13. ソフトウェア命令の第一の部分と第二の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第一の部分に関連付けられた第一のコンテキストと、前記ソフトウェア命令の前記第二の部分に関連付けられた第二のコンテキストとの間を切り替えるための第一の要求を生成するよう動作可能な、第一の安全なプロセッサ(414)と、
    前記ソフトウェア命令の第三の部分と第四の部分を実行するよう動作可能で、さらに、前記ソフトウェア命令の前記第三の部分に関連付けられた第三のコンテキストと、前記ソフトウェア命令の前記第四の部分に関連付けられた第四のコンテキストとの間を切り替えるための第二の要求を生成するよう動作可能な、第二の安全なプロセッサ(420)と、
    前記第一の安全なプロセッサに連通するよう結合され、前記第一の要求を受信し、前記第一のコンテキストと前記第二のコンテキストの間の第一のコンテキストスイッチを開始し、前記第二のコンテキストは第一のコンテキスト識別子に関連付けられ、さらには、第二の要求を受信し、前記第三のコンテキストと前記第四のコンテキストの間の第二のコンテキストスイッチを開始し、前記第四のコンテキストは第二のコンテキスト識別子に関連付けられる、ディスクリートコンテキストマネージャ回路(424)と、
    前記第一の安全なプロセッサと前記ディスクリートコンテキストマネージャ回路に連通するよう結合され、前記第一のコンテキスト識別子に基づいて、前記安全なプロセッサと前記第一の安全なプロセッサに関連付けられた少なくとも一つのリソース(406、408、434、436)との間のアクセスを媒介するよう動作可能な、第一のディスクリートトラストベクターベリファイヤ回路(416)と、
    前記第二の安全なプロセッサと前記ディスクリートコンテキストマネージャ回路に連通するよう結合され、前記第二のコンテキスト識別子に基づいて、前記第二の安全なプロセッサと前記少なくとも一つのリソースとの間のアクセスを媒介するよう動作可能な、第二のディスクリートトラストベクターベリファイヤ回路(422)と、
    を含む、
    ことを特徴とする装置。
  14. 前記第二のコンテキストは、第一のトラストベクターディスクリプタに関連付けられ、前記第一のディスクリートトラストベクターベリファイヤは、前記ディスクリートコンテキストマネージャからのコマンドに応じて、前記第一のトラストベクターディスクリプタをロードし、前記第一のディスクリートトラストベクターベリファイヤ回路は、前記第一のトラストベクターディスクリプタに基づいて、前記第一の安全なプロセッサと前記少なくとも一つのリソースとの間の前記アクセスを媒介するよう動作可能である、
    ことを特徴とする、請求項13に記載の装置。
  15. 前記第一のディスクリートトラストベクターベリファイヤ回路は、前記要求に応じて、前記安全なプロセッサのリセットを開始する信号を生成する、
    ことを特徴とする、請求項13に記載の装置。
  16. スタティックなコンテキスト内で第二のソフトウェア命令を実行するよう動作可能なメインプロセッサ(428)と、
    前記メインプロセッサに連通するよう結合され、トラストベクターディスクリプタをロードするために前記ディスクリートコンテキストマネージャからコマンドを受信し、前記トラストベクターディスクリプタに基づいて、前記スタティックなコンテキスト内の前記少なくとも一つのリソースへの前記メインプロセッサによるアクセスを媒介する、メイントラストベクターベリファイヤ回路(430)と、
    をさらに含む、
    ことを特徴とする、請求項13に記載の装置。
  17. 前記少なくとも一つのリソースは、前記第一の安全なプロセッサ、前記第二の安全なプロセッサおよび前記メインプロセッサによってアクセス可能なメモリ(406)を含む、
    ことを特徴とする、請求項16に記載の装置。
  18. 前記少なくとも一つのリソースは、前記第一の安全なプロセッサ、前記第二の安全なプロセッサおよび前記メインプロセッサによってアクセス可能な周辺デバイス(434)を含む、
    ことを特徴とする、請求項16に記載の装置。
  19. 前記第二のソフトウェア命令は、前記スタティックなコンテキスト内で実行されるオペレーティングシステムを含む、
    ことを特徴とする、請求項17に記載の装置。
  20. 前記オペレーティングシステムは、テレビ受信機として動作可能である、
    ことを特徴とする、請求項19に記載の装置。
JP2010507668A 2007-05-11 2008-05-08 安全な環境におけるプロセッサ実行を制御するための装置 Active JP5007867B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US91758207P 2007-05-11 2007-05-11
US60/917,582 2007-05-11
PCT/US2008/063089 WO2008141100A2 (en) 2007-05-11 2008-05-08 Apparatus for controlling processor execution in a secure environment

Publications (2)

Publication Number Publication Date
JP2010530563A true JP2010530563A (ja) 2010-09-09
JP5007867B2 JP5007867B2 (ja) 2012-08-22

Family

ID=39855296

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010507668A Active JP5007867B2 (ja) 2007-05-11 2008-05-08 安全な環境におけるプロセッサ実行を制御するための装置

Country Status (11)

Country Link
US (2) US8613081B2 (ja)
EP (3) EP2156359B1 (ja)
JP (1) JP5007867B2 (ja)
KR (1) KR101058140B1 (ja)
CN (2) CN103294946B (ja)
CA (1) CA2685058C (ja)
HK (1) HK1183954A1 (ja)
IL (1) IL201697A (ja)
MX (1) MX2009012134A (ja)
TW (2) TWI536264B (ja)
WO (1) WO2008141100A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013541783A (ja) * 2010-10-20 2013-11-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 多ユーザ機密コードおよびデータを保護するためのアーキテクチャを含む方法および装置
JP2015001947A (ja) * 2013-06-18 2015-01-05 株式会社東芝 情報処理装置及びプログラム

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009113394A1 (ja) * 2008-03-14 2009-09-17 三菱電機株式会社 マルチオペレーティングシステム(os)起動装置及びマルチos起動プログラム及び記録媒体及びマルチos起動方法
US8839420B2 (en) 2009-05-01 2014-09-16 Adobe Systems Incorporated Validation of function call parameters
US8732830B2 (en) * 2009-05-28 2014-05-20 Adobe Systems Incorporated Scripting engine externalized function execution control
JP5565040B2 (ja) * 2010-03-30 2014-08-06 富士通株式会社 記憶装置、データ処理装置、登録方法、及びコンピュータプログラム
US9037895B2 (en) 2010-10-13 2015-05-19 The Trustees Of Columbia University In The City Of New York System and methods for silencing hardware backdoors
US20140149729A1 (en) 2011-07-18 2014-05-29 Ted A. Hadley Reset vectors for boot instructions
US8418230B1 (en) * 2012-08-28 2013-04-09 Netcomm Wireless Limited Apparatus and method for mobile communications and computing
US9135435B2 (en) * 2013-02-13 2015-09-15 Intel Corporation Binary translator driven program state relocation
US9183399B2 (en) 2013-02-14 2015-11-10 International Business Machines Corporation Instruction set architecture with secure clear instructions for protecting processing unit architected state information
US9298911B2 (en) * 2013-03-15 2016-03-29 Intel Corporation Method, apparatus, system, and computer readable medium for providing apparatus security
DE102013209264A1 (de) * 2013-05-17 2014-11-20 Robert Bosch Gmbh Verfahren zum Betreiben eines Kommunikationsmoduls und Kommunikationsmodul
GB2520061B (en) * 2013-11-08 2016-02-24 Exacttrak Ltd Data accessibility control
US20150294123A1 (en) * 2014-04-11 2015-10-15 Krimmeni Technologies, Inc. System and method for sharing data securely
US9503443B2 (en) * 2014-09-15 2016-11-22 Ciena Corporation Secure access systems and methods to network elements operating in a network
US20160224098A1 (en) * 2015-01-30 2016-08-04 Alexander Gendler Communicating via a mailbox interface of a processor
US10121013B2 (en) * 2015-05-07 2018-11-06 Samsung Electronics Co., Ltd. XOR-based scrambler/descrambler for SSD communication protocols
EP3271827A4 (en) * 2015-07-29 2019-02-27 Hewlett-Packard Enterprise Development LP FIREWALL FOR DETERMINING ACCESS TO A SECTION OF A MEMORY
US11250134B2 (en) 2015-08-21 2022-02-15 Cryptography Research, Inc. Secure computation environment
US10664179B2 (en) * 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
JP6763948B2 (ja) * 2015-10-23 2020-09-30 シーイーエム・コーポレーション 固相ペプチド合成における改良
US9799130B1 (en) * 2015-10-27 2017-10-24 Google Inc. Lossless spatial feature descriptor compression
DE102016009232A1 (de) 2016-07-28 2018-02-01 Giesecke+Devrient Mobile Security Gmbh Integriertes Teilnehmeridentitätsmodul mit Core-OS und Anwendungs-OS
US10452870B2 (en) 2016-12-06 2019-10-22 Dish Technologies Llc Smart card authenticated download
US10484752B2 (en) 2016-12-23 2019-11-19 DISH Technologies L.L.C. Securely paired delivery of activation codes from smart card to host set-top box
US10325077B2 (en) 2016-12-23 2019-06-18 DISH Technologies L.L.C. Strong authentication of client set-top boxes
US10484753B2 (en) 2016-12-23 2019-11-19 DISH Tchnologies L.L.C. Securely paired delivery of activation codes from smart card to remote client set-top box
US10171870B2 (en) * 2016-12-28 2019-01-01 DISH Technologies L.L.C. Forced execution of authenticated code
US10552206B2 (en) 2017-05-23 2020-02-04 Ge Aviation Systems Llc Contextual awareness associated with resources
GB2563881B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Realm execution context masking and saving
EP3699794A1 (en) * 2017-08-10 2020-08-26 Argus Cyber Security Ltd. System and method for detecting exploitation of a component connected to an in-vehicle network
US11238155B2 (en) * 2018-06-28 2022-02-01 Intel Corporation Microarchitectural mechanisms for the prevention of side-channel attacks
JP7210238B2 (ja) * 2018-11-15 2023-01-23 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及び、プログラム
US11218316B2 (en) * 2018-12-05 2022-01-04 Ares Technologies, Inc. Secure computing hardware apparatus
FR3106685B1 (fr) * 2020-01-23 2022-05-06 Renault Sas Procédé et système de sécurisation des notifications audio d’un calculateur de véhicule
WO2021211091A1 (en) * 2020-04-13 2021-10-21 KameleonSec Ltd. Secure processing engine for securing a computing system
US11403403B2 (en) 2020-04-13 2022-08-02 KameleonSec Ltd. Secure processing engine for securing a computing system
DE102020120656A1 (de) 2020-08-05 2022-02-10 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Vorrichtung und Verfahren zur Authentifizierung in einem Steuergerät

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05298119A (ja) * 1992-04-17 1993-11-12 Mitsubishi Electric Corp マイクロプロセッサのコンテキストスイッチ機構
JP2002073357A (ja) * 2000-06-20 2002-03-12 Internatl Business Mach Corp <Ibm> 並列ソフトウェア処理システム
JP2002535757A (ja) * 1999-01-12 2002-10-22 マイクロソフト コーポレイション ディスプレイ装置の画素内構成要素にマッピングされたサンプルを得るために画像データをフィルタリングする方法およびシステム
JP2005531079A (ja) * 2002-06-27 2005-10-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ バスコンフィギュレーションを備えるセキュリティプロセッサ
JP2006526188A (ja) * 2003-05-27 2006-11-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ アクセス制御バス・システム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2765361B1 (fr) * 1997-06-26 2001-09-21 Bull Cp8 Microprocesseur ou microcalculateur imprevisible
JP2002535767A (ja) * 1999-01-07 2002-10-22 レメダン エイピーエス コンピュータ用制御装置、制御装置の使用方法、制御装置を有するコンピュータ、およびコンピュータ内のユニットの接続および分離方法
US6832376B1 (en) * 1999-09-29 2004-12-14 Unisys Corporation Method and apparatus for resuse of a thread for different programmed operations
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
US20030221030A1 (en) * 2002-05-24 2003-11-27 Timothy A. Pontius Access control bus system
GB2409745B (en) 2002-11-18 2006-01-11 Advanced Risc Mach Ltd Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
KR100955284B1 (ko) 2002-11-18 2010-04-30 에이알엠 리미티드 보안 모드와 비보안 모드 사이의 프로세서 전환하는 데이터 처리장치, 데이터 처리방법 및 컴퓨터 판독가능한 기록매체
US7383587B2 (en) 2002-11-18 2008-06-03 Arm Limited Exception handling control in a secure processing system
US7730318B2 (en) * 2003-10-24 2010-06-01 Microsoft Corporation Integration of high-assurance features into an application through application factoring
US7249381B2 (en) * 2004-03-29 2007-07-24 Bryte Computer Technologies, Inc. Controller and resource management system and method with improved security for independently controlling and managing a computer system
EP1603088A1 (fr) * 2004-06-03 2005-12-07 Nagracard S.A. Composant pour module de sécurité
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
EP1619572A1 (en) * 2004-07-23 2006-01-25 Texas Instruments Incorporated System and method of identifying and preventing security violations within a computing system
US7502928B2 (en) * 2004-11-12 2009-03-10 Sony Computer Entertainment Inc. Methods and apparatus for secure data processing and transmission
CN100440893C (zh) * 2006-02-28 2008-12-03 北京航空航天大学 实现分布式访问控制与通信安全的***与方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05298119A (ja) * 1992-04-17 1993-11-12 Mitsubishi Electric Corp マイクロプロセッサのコンテキストスイッチ機構
JP2002535757A (ja) * 1999-01-12 2002-10-22 マイクロソフト コーポレイション ディスプレイ装置の画素内構成要素にマッピングされたサンプルを得るために画像データをフィルタリングする方法およびシステム
JP2002073357A (ja) * 2000-06-20 2002-03-12 Internatl Business Mach Corp <Ibm> 並列ソフトウェア処理システム
JP2005531079A (ja) * 2002-06-27 2005-10-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ バスコンフィギュレーションを備えるセキュリティプロセッサ
JP2006526188A (ja) * 2003-05-27 2006-11-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ アクセス制御バス・システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013541783A (ja) * 2010-10-20 2013-11-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 多ユーザ機密コードおよびデータを保護するためのアーキテクチャを含む方法および装置
JP2015001947A (ja) * 2013-06-18 2015-01-05 株式会社東芝 情報処理装置及びプログラム

Also Published As

Publication number Publication date
TWI457829B (zh) 2014-10-21
KR20090130121A (ko) 2009-12-17
EP2164020A3 (en) 2012-12-12
US8613081B2 (en) 2013-12-17
WO2008141100A2 (en) 2008-11-20
TW200901034A (en) 2009-01-01
IL201697A (en) 2015-08-31
HK1183954A1 (en) 2014-01-10
KR101058140B1 (ko) 2011-08-24
EP2156359B1 (en) 2014-06-25
JP5007867B2 (ja) 2012-08-22
CN103294946A (zh) 2013-09-11
US9043902B2 (en) 2015-05-26
CN101681410A (zh) 2010-03-24
TW201506789A (zh) 2015-02-16
EP2624166A2 (en) 2013-08-07
EP2164020A2 (en) 2010-03-17
WO2008141100A3 (en) 2009-05-22
CN103294946B (zh) 2016-12-07
MX2009012134A (es) 2009-11-25
IL201697A0 (en) 2010-05-31
EP2156359A2 (en) 2010-02-24
EP2164020B1 (en) 2014-02-26
EP2624166B1 (en) 2014-12-17
US20140033297A1 (en) 2014-01-30
CN101681410B (zh) 2013-06-05
CA2685058A1 (en) 2008-11-20
CA2685058C (en) 2016-11-08
TWI536264B (zh) 2016-06-01
US20080282345A1 (en) 2008-11-13
EP2624166A3 (en) 2013-09-04

Similar Documents

Publication Publication Date Title
JP5007867B2 (ja) 安全な環境におけるプロセッサ実行を制御するための装置
US8190917B2 (en) System and method for securely saving and restoring a context of a secure program loader
CN102855441B (zh) 用于执行安全环境初始化指令的***和方法
US6223284B1 (en) Method and apparatus for remote ROM flashing and security management for a computer system
US7945789B2 (en) System and method for securely restoring a program context from a shared memory
US8522322B2 (en) Platform firmware armoring technology
US8095802B2 (en) System and method for securely saving a program context to a shared memory
JP2011086026A (ja) 情報記憶装置、情報記憶プログラム、そのプログラムを記録した記録媒体及び情報記憶方法
US8738924B2 (en) Electronic system and digital right management methods thereof
US20080256599A1 (en) Apparatus and method for protecting system in virtualized environment
US7624442B2 (en) Memory security device for flexible software environment
US7143278B2 (en) Method and apparatus for offloaded enhanced boot process
JP5942612B2 (ja) 情報記憶装置及びそのアクセス判定方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100617

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20101227

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20101227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20101227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120319

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120319

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120424

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120516

R150 Certificate of patent or registration of utility model

Ref document number: 5007867

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150608

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250