説明

下位互換性のあるセキュアプロセッサとそれによるセキュアソフトウェアの実行方法

【課題】アプリケーションソフトウェアのセキュアな実行と、認証されたアプリケーションソフトウェアのみの実行を確実にする。
【解決手段】当該セキュアプロセッサは、アプリケーションソフトウェア(以下、アプリソフト)を透過的に実行するモニターモードと、アプリソフトの実行及びマルチメディアコンテンツの提示が認証されたことを検証し、アプリソフトが必要とするいかなる特別なサービスも実行し、プロセッサがコンテンツの実行権利を取得したことを検証するセキュアモードとを有する。当該セキュアプロセッサは、一般的なプロセッサと同一のハードウェアを利用し、一般的なプロセッサ用に書かれたアプリソフトを実質的な変更なしに実行可能であり、速度やリソースを大幅に減少させることなく動作できる。セキュアモードで動作される機能は、オンチップ不揮発性メモリに保存される、もしくは認証された外部ストレージから読み込まれることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は,概してセキュアプロセッサとそれによるセキュアソフトウェアの実行方法に係り,例えばアプリケーションソフトウェアのセキュアな実行を可能にするセキュアプロセッサを提供する。
【背景技術】
【0002】
現在のコンピュータシステムにおいて、マイクロプロセッサや他の処理装置による処理能力の有用性は,コンピュータシステムの価値というものを考えたとき,もはや「重要な制限」とはいえない。一方,アプリケーションソフトウェアやマルチメディアコンテンツの有用性,さらに正確には,アプリケーションソフトウェアやマルチメディアコンテンツを利用するための認証は,それらプロセッサによる実行や実演のための「本質的な制限」となった。これによる効果の一つとして,デバイスもしくはプラットフォーム上で実行されるアプリケーションソフトウェアやマルチメディアコンテンツが,多くのコンピュータシステムにとって相当価値のあるものとなった。アプリケーションソフトウェアやマルチメディアコンテンツはともに,例えばコミュニケーションネットワークや安価なCDROMメディアを利用した流通によって簡単に入手されるようになり,その結果,未許可のコピーや配信(「ソフトウェアの不正コピー」と呼ばれる)が経済的に重要な懸案事項となった。よって周知の技術における課題点は,例えば使用料が適切に支払われた場合や,信用できるコンテンツ発信元からの情報に関してコンテンツの安全性が検証された時など,使用権が認証された時のみ有益なアプリケーションソフトウェアやマルチメディアコンテンツがプロセッサ上で使用されることを確実にすることである。
【0003】
周知技術におけるもう一つの課題としては,認証または変更なしではプロセッサ上で使用できないような特性をもつアプリケーションソフトウェアやマルチメディアコンテンツの提供が求められる一方で,その特性を提供するために該アプリケーションソフトウェアやマルチメディアコンテンツを再設計または再認可することは望ましくないとされている点がある。現在相当数のアプリケーションソフトウェアやマルチメディアコンテンツが入手可能であり,それらの価値は非常に大きく,該アプリケーションソフトウェアやマルチメディアコンテンツを修正するという手段はコストがかかり,信頼性も低く,手に負えるものではない。
【0004】
したがって,元々のアプリケーションソフトウェアやマルチメディアコンテンツを大幅に修正することなく,認証されたプロセッサに対してのみアプリケーションソフトウェアやマルチメディアコンテンツの使用を制限するということは有益である。
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明はセキュアプロセッサを提供し,さらにはアプリケーションソフトウェアのセキュアな実行,認証されたアプリケーションソフトウェアのみの実行,そして認証されたマルチメディアコンテンツのみの提示を確実にすることが可能なセキュアプロセッサの使用方法およびシステムを提供する。また,認証済みコンテンツの権利や許可について購入がなされ,その確認もなされたデバイスにおいてのみそのコンテンツが再生可能となることを確実にすることは重要である。そのようなセキュアプロセッサは,モニターモードおよびセキュアモードの二つの動作モードを具備する。前者はアプリケーションソフトウェアを透過的に実行する。後者は該アプリケーションソフトウェアの実行(およびマルチメディアコンテンツの提示)が認証されたことを検証し,アプリケーションソフトウェアが必要とするいかなる特別なサービスも実行する。当該セキュアプロセッサは,アプリケーションソフトウェアに対しても,一般的なプロセッサに対しても同一のハードウェアのように見えるものであり,一般的なプロセッサ用に書かれたアプリケーションソフトウェアを実質的な変更なしに実行可能である。また該セキュアプロセッサは最小限度のハードウェアを追加することで,一般的なプロセッサと同一のハードウェアを利用し,それによりセキュアプロセッサは,アプリケーションソフトウェアの速度やリソースを大幅に減少させることなく実行できる。
【0006】
ある実施形態では,該セキュアプロセッサの一部分が元々の一般的なプロセッサ用の半導体ダイと実質的に同一であり(ダイのサイズや製造技術が異なるものを使用する場合を除いて),その結果アプリケーションソフトウェアが元々の一般的なプロセッサと同様に,該セキュアプロセッサにて確実に実行される。
【0007】
ある実施形態では,当該セキュアプロセッサが電源ONのときにセキュアモードでの実行を開始する。この初期の実行段階では,該セキュアプロセッサはセキュアコードをセキュアモードで実行する。このセキュアコードはセキュアプロセッサチップの内部のパーシステント(持続性)メモリにて管理されるので信用できる。上記同様セキュアプロセッサチップの内部のパーシステント(持続性)メモリにて管理されるセキュリティ情報に関し,セキュアコードはソース(発信元)の信頼価値や追加するソースコードの信頼性を検証し,1以上の信頼できるソース(発信元)から追加のソースコードを読み込む。このセキュリティ情報には暗号化キー,セキュアハッシュ値,または,信頼できるソースの検証や追加ソースコードの認証のためのデータなどが含まれる。
【0008】
読み込まれた追加のソースコードにより,該セキュアプロセッサが信頼できるソースからのアプリケーションソフトウェアを要求し,要求されたアプリケーションソフトウェアを該セキュアプロセッサが実行する認証を持つことを検証し,そのアプリケーションソフトウェアが正確に読み込まれるよう検証し,そのアプリケーションソフトウェアの安全性をチェックする。本発明の状況では,パーシステントメモリも信頼できるソースも,ここで述べた特別な手段を持つ必要性はない。例えば,パーシステントメモリも信頼できるソースも,セキュアプロセッサと結合したハードウェアデバイスに(ユーザーなどにより)差し替えもしくは補足されることができる。この場合セキュアプロセッサは,ソースから読み込んだコードを信頼する前に,これを連結することの安全性および信頼性を検証しハードウェアデバイスの動作を修正する。
【0009】
該セキュアプロセッサはセキュアモードを終了し,モニターモードで正しく読み込まれたアプリケーションソフトウェアを実行することができる。アプリケーションソフトウェアはオリジナルコードの大幅な変更なしに実行され,それにより一般のプロセッサと実質的に異なることのない処理環境をアプリケーションソフトウェアが得ることになる。セキュアプロセッサが監視するサービスをアプリケーションソフトウェアが必要とする場合,アプリケーションソフトウェアは一度中断し,セキュアモードが再開となり,サービスがアプリケーションソフトウェアへ供給されてセキュアモード終了となり,その結果アプリケーションソフトウェアはモニターモードでの実行を続行できる。例えば,アプリケーションソフトウェアは追加のアプリケーションソフトウェアモジュールの要求,読み込み,そして実行を要求することもできる。他のサービスとして,セキュアプロセッサは入出力動作を監視することができるが,この動作は該セキュアプロセッサにより実行可能なセキュアコードに具備されたAPI(アプリケーション・プログラミング・インターフェイス)を使用して,アプリケーションソフトウェアが要求するものである。
【0010】
該セキュアプロセッサはさらにタイマーを利用してアプリケーションソフトウェアに割り込むことも可能で,この割り込みによりセキュアモードに入って処理を実行し,再度モニターモードに戻ることも可能である。セキュアモードへ入るテクニックは複数あるが,該セキュアプロセッサはどのテクニックによってセキュアモードに入るかを判断することができる。該セキュアプロセッサはさらに外部メモリへのアクセスを記録することも可能で,それによりアプリケーションソフトウェアによる正確な実行を検証することができる。他の特徴として,該セキュアプロセッサは入出力動作を監視する(または正当性を再検討および確認する)ことも可能であり,さらにアプリケーションソフトウェアの要求に応じて(好ましくは正当性を再検討および確認した後に)セキュア動作を実行することもできる。
【0011】
例えば,該セキュアプロセッサはアプリケーションソフトウェアがアクセスしようとする外部メモリ内の位置を調べることができる。アプリケーションソフトウェアが該セキュアプロセッサにより許可された範囲外の位置にアクセスしようとすれば,該セキュアプロセッサはアプリケーションソフトウェアが不適切な動作を行っていると判断することができる。例えばこのような場合,アプリケーションソフトウェアがソフトウェアエラーを有するか,ソフトウェアウィルスを含むか,または不正な動きをするよう設計されているなど考えられる。これに応じて該セキュアプロセッサは,前述のような不当な結果を制限するための適切な動作をとる。またこのような場合に該セキュアプロセッサは,それらの外部メモリ内の位置へアプリケーションソフトウェアがアクセスするのを制限する,またはアプリケーションソフトウェアによる動作を中断する,またはアプリケーションソフトウェアのウィルスチェックやウィルス処理を実行することも可能である。
【0012】
さらに該セキュアプロセッサはアプリケーションソフトウェアに代わって暗号化または暗号解読処理を行うことも可能で,それによりアプリケーションソフトウェアの関知しないところで,標準的な動作に関し暗号化や暗号解読または他のセキュリティ機能が遂行される。例えば,アプリケーションソフトウェアは追加コードのチェック,またはサーバや外部の大容量ストレージ(記憶デバイス)や外部メモリから読み込んだマルチメディアコンテンツの信頼性のチェックを実行可能であるが,該セキュアプロセッサのユニークIDやプライベートキーにアクセスする必要はなく,該セキュアプロセッサのセキュリティ機能をフルに利用して行う。さらに例として,アプリケーションソフトウェアは外部エレメントと通信したセキュア情報の暗号化および暗号解読を実行できるが,やはり該セキュアプロセッサのユニークIDやプライベートキーにアクセスする必要はなく,該セキュアプロセッサのセキュリティ機能をフルに利用して行う。
【0013】
実施例として,該セキュアプロセッサがユニークIDを具備し,そのユニークID(および,ユニークIDに付随する暗号化または暗号解読キー)を利用して該セキュアプロセッサ固有のインスタンス(実体)を独自に識別することが可能である。このような実施形態において該セキュアプロセッサは,アプリケーションソフトウェアの代わりに暗号化または暗号解読を行う際に,ユニークIDと独自暗号化キーまたは独自暗号解読キーを利用する。例えばセキュアプロセッサが外部エレメントと通信する際に,ユニークIDと独自暗号化キーまたは独自暗号解読キーを利用し,アプリケーションソフトウェアの代わりに暗号化および暗号解読を実行する。そのような場合に該セキュアプロセッサは,DRM(デジタル著作権管理)情報を確認,交換,取得するための外部エレメントとの通信を実行する。
【0014】
該セキュアプロセッサは不揮発性メモリ(例えばNVROM)の中に,ユニークID,コード署名または暗号化ハッシュ,独自暗号化キーと独自暗号解読キー,さらには該セキュアプロセッサ固有のインスタンスに関するその他の詳細情報などを管理する。このNVROMは該セキュアプロセッサの製造および設定の際,該セキュアプロセッサ固有のインスタンスに関する詳細情報を記録するために利用される非接合ピンを含み,該ピンはNVROMが書き換え不能となるように,製造または設定後に非接合状態となる。
【0015】
ユニークID(および独自暗号化キーまたは独自暗号解読キー)を有することで,有利なセキュアプロセッサを含むシステムを提供する:
・ サーバとの通信のためのセキュアプロセッサの利用は追跡可能であり,アプリケーションソフトウェアやマルチメディアコンテンツをダウンロードするために不正動作を行おうとするユーザーは規則違反の責任を問われる。
・ ユニークIDおよび独自暗号化キーと独自暗号解読キーを内蔵することで,サーバはアプリケーションソフトウェアやマルチメディアコンテンツのダウンロードを図るセキュアブートコードなどの該セキュアプロセッサの一部を,検証または信用する必要なく該セキュアプロセッサを信頼することができる。ユニークIDおよび独自暗号化キーと独自暗号解読キーを安全に製造元が組み込んでいること信頼するだけでよい。
・ 該セキュアプロセッサを有するシステムは,セキュアプロセッサを行き来する信号への妨害などのユーザー不正行為に対し抵抗力を持ち,また該システムでは,該セキュアプロセッサと通信する極秘データはセキュリティのために暗号化できる。そうでなければ,極秘データを危険にさらそうすると,セキュアプロセッサチップの破壊を招くことになる。
【0016】
・ 該セキュアプロセッサでは,アプリケーションソフトウェアの実行やマルチメディアコンテンツの提示を行うCPUは,元々の非セキュアプロセッサと実質的に同一であり,それにより該セキュアプロセッサのセキュリティ機能を無効とする試みは,該CPUに望まれる機能をも無効とすることになる。
・ 該セキュアプロセッサは,アプリケーションソフトウェアの実行やマルチメディアコンテンツの提示を行うCPUによる権限を確実に検証することが可能である。例えば信用できるサーバ(または認証機関など他の信頼できるエレメント)は,該セキュアプロセッサによってユニークIDおよび独自暗号化キーと独自暗号解読キーを利用してその信頼性を検証できるものに対し,セキュアデジタル購入領収書(purchase receipt)を発行することができる。そのような場合,アプリケーションソフトウェアの実行やマルチメディアコンテンツの提示を行う権利を有する特定のデバイス(またはデバイスの種類)をそのセキュアデジタル購入領収書によって独自に識別することが可能である。
・ 該セキュアプロセッサはアプリケーションソフトウェアやマルチメディアコンテンツのコピー阻止およびコピー保護を強化できる。そのようなコンテンツは以下を含む可能性がある:(1)CPUが実行許可を受けた既に購入済みのアプリケーションソフトウェア,またはCPUが提示許可を受けた既に購入済みのマルチメディアコンテンツの一式,(2)前述の実行または提示を許可するデジタル著作権,(3)特定のデバイス(またはデバイスの種類)に制限するためのピアツーピアメッセージなど,CPUと他のデバイス間の利用情報。
【発明を実施するための最良の形態】
【0017】
用語集
以下に示す用語は本発明とその実施形態の態様に関する。各用語の一般的な意味は説明に役立てることを意図しており,制限するものではない。
・ 「セキュアプロセッサ」という語句は,信頼できるソフトウェアのみをサブユニット上で実行するよう確実にする能力を持つデバイスを意味する。サブユニットは「プロセッサ」または「プロセッシングユニット」を含む(ここではCPUと称す)。セキュアプロセッサにおいて,プロセッサまたはプロセッシングユニットのコンセプトには幅があり,少なくとも以下を含むことを意図している:汎用命令一式を有する汎用プロセッサ,制限された命令一式を有する特殊用途プロセッサ,プログラム命令を実行または解釈可能な特殊用途回路一式,様々なタイプのセキュアプロセッサと競合可能なファームウェアプログラム命令の一式,それらが合理的に一般化されたもの,等。
・ 「アプリケーションソフトウェア」という語句は,プロセッサによって実行または解釈されることが可能な命令またはパラメータ一式を示す。先と同様に,アプリケーションソフトウェアのコンセプトには幅があり,少なくとも以下を含むことを意図している:ソフトウェアまたはファームウェアのプログラム命令,ソフトウェアまたはファームウェアのプログラムパラメータ値,プログラミング言語コンパイラーにてコンパイル(翻訳)可能なソースコードおよびプログラミング言語インタープリターによって通訳可能なソースコード,コンパイルまたは通訳されたプログラム言語のマクロ定義,アプリケーションプログラムによって受信または実行される命令およびリクエスト,それらが合理的に一般化されたもの,等。
【0018】
・ 「マルチメディアコンテンツ」という語句は,ユーザーに対し提示されることができる情報またはパラメータの一式を示す。先と同様に,マルチメディアコンテンツのコンセプトには幅があり,少なくとも以下を含むことを意図している:ソフトウェアまたはファームウェアのプログラム命令により解釈および提示するためのデータに組み込まれたアニメーション,オーディオビジュアルムービー,動画,またはサウンド;それらデータ自体を制作するためのソフトウェアまたはファームウェアのプログラム命令に組み込まれたアニメーション,オーディオビジュアルムービー,動画,またはサウンド;DHTML,SGML,VRML,マクロメディアフラッシュなど,マルチメディアコンテンツのためのマークアップ言語に組み込まれたアニメーション,オーディオビジュアルムービー,動画,またはサウンド;アプリケーションプログラムによって受信または実行される命令およびリクエスト;それらが合理的に一般化されたもの,等。
・ 「モニターモード」および「セキュアモード」という語句は,当該セキュアプロセッサに可能な動作状況を示す。先と同様に,モニターモードおよびセキュアモードのコンセプトには幅があり,少なくとも以下を含むことを意図している:セキュアプロセッサによって実行または解釈される命令がプロセッサの性能に対し見分けのつく程度アクセスする区別可能な状況,または,セキュアモードにあるセキュアプロセッサが,モニターモードにあるセキュアプロセッサのいかなるタイプのモニタリングや制限も実行できる区別可能な状況,等。
【0019】
・ (該セキュアプロセッサによるアプリケーションソフトウェアの)「透過的な実行」の概念,および(該アプリケーションソフトウェアに対する該セキュアプロセッサの)「明白なハードウェア同一性」の概念は,該アプリケーションソフトウェアを実行する該セキュアプロセッサの性能をソフトウェアの視点で述べるもので,該アプリケーションソフトウェアがこれまで一般的なプロセッサで実行されていたということを前提とする。これにより該セキュアプロセッサは該アプリケーションソフトウェアを修正する必要なく実行可能となるが,ここに述べるセキュリティ機能は依然として保持することができる。例えば,セキュアプロセッサの一部分が元々の一般的なプロセッサ用の半導体ダイと実質的に同一であり,そのためアプリケーションソフトウェアが元々の一般的なプロセッサと同様に,該セキュアプロセッサにて確実に実行される。
・ 「電源ON」という語句は,プロセッシングユニットの初期の動作段階を示し,電気供給,リセット信号,または他の実質的な初期設定を変更した後に起きるセキュアプロセッサの状況を指す。先と同様に,電源ONのコンセプトには幅があり,ここで述べられるいかなる初期動作状況やそれが一般化されたものも含むことを意図する。
【0020】
・ 「セキュアコード」そして「セキュアブート・ローダーコード」という語句は,該セキュアプロセッサによって解釈可能であり実行可能であるプログラム命令を示し,該セキュアプロセッサが信頼性があると見なすものである。セキュアコードは,例えばセキュアプロセッサチップのパーシステント(持続性)メモリに管理されているという理由から信頼性がある。追加のソースコードも,信頼できるソースから受信した,もしくは,予め構築された「セキュアコード」または「セキュアブート・ローダーコード」によってその正確さを認証されたという理由から,「セキュアコード」として構築可能である。先と同様に,セキュアコードのコンセプトには幅があり,該セキュアプロセッサが,例えばセキュリティ機能を実行するために信頼できるような,いかなるプログラムコードも含むことを意図する。
【0021】
・ 「セキュリティ機能」および「セキュリティカーネルソフトウェア」という語句は,該セキュアプロセッサによって解釈可能であり実行可能であるプログラム命令を示し,該セキュアプロセッサにとって検証できるもので,セキュリティや認証や検証に関する機能を遂行可能とされる。例えば,デジタル署名,暗号化および暗号解読,デジタル署名の検証などの機能は,セキュリティ機能もしくはセキュリティカーネルソフトウェアによって遂行可能できる。ある実施形態では,そのようなセキュリティ機能もしくはセキュリティカーネルソフトウェアは,API(アプリケーション・プログラミング・インターフェイス)を使用するアプリケーションソフトウェアによる利用に適するよう構築可能である。実施形態では,セキュリティカーネルソフトウェアがセキュアブート・ローダーコードによって読み込まれ,その後実行される前に安全性および信頼性について検証される。セキュアプロセッサチップ内部のメモリ(好ましくは揮発性メモリ)で認証および管理されてきたセキュリティに関連するソフトウェアの部分は,「セキュアコード」のコンセプトに包含される。
【0022】
・ 「セキュアプロセッサチップ」(ここでは「チップ」とも記載される)という語句は,該セキュアプロセッサが遂行される物理的なハードウェアを示す。先と同様に,セキュアプロセッサチップはハードウェア構造およびプログラム命令を有し,該セキュアプロセッサにとって信頼性がある。そして他者がそのチップのセキュリティを干渉または侵害するのは困難である。
【0023】
本発明の範囲はここで示した定義や具体例に限定されるものではなく,それら定義や具体例,用語によって実施される最大幅なコンセプトを含むことを意図する。
【0024】
システムエレメント
図1はセキュアな実行が可能なセキュアプロセッサを含むシステムの構成図を示す。
システム100はセキュアプロセッサ110,コミュニケーションリンク120,そして少なくとも1つのソフトウェアまたはコンテンツ発信元130を有する。状況に応じて,該ソフトウェアまたはコンテンツ発信元130(ここでは信頼できるサーバ130とも記載する)は,セキュアプロセッサ110やセキュアプロセッサ110によって制御されるデバイスに対し,追加コンテンツの送信をオンライン状態またはオフライン状態にすることが可能な信頼できるサーバを含み得る。
【0025】
実施形態の一つとしてさらにシステム100は,少なくとも1つの入力デバイス141と少なくとも1つの出力デバイス142を有し,セキュアプロセッサ110によって実行されるアプリケーションソフトウェア143のコントロール下で動作するアプリケーションデバイス140を有する。
【0026】
アプリケーションデバイス140は該セキュアプロセッサがモニターモードで動作されるとき,いかなるアプリケーションも実行可能である。例えばアプリケーションデバイス140は,ゲームセンターへの設置やパーソナルコンピュータへのインストールができるような,リアルタイム・オーディオビジュアルゲームで遊ぶもしくは参加するためのデバイスを含む。しかし本発明の状況において,アプリケーションデバイス140がそれほど具体的である必要性はない。むしろ,アプリケーションデバイス140は一般に以下を含むことができる。ゲームデバイス;パーソナルコンピュータまたはパーソナルワークステーション;ポケベル,PDA(パーソナル・デジタル・アシスタント)またはその他の手のひらサイズのコンピュータ,ノート型パソコンやラップトップコンピュータ,電話,腕時計,ロケーションまたはコンディションセンサー,バイオメトリック(生物測定)センシングデバイスまたはリポーティングデバイス,ペースメーカー,遠隔測定デバイス,または遠隔自動誘導デバイス,などの携帯用デバイス。
【0027】
また,セキュアプロセッサ110が以下で述べる機能を実行可能である限り,アプリケーションデバイス140はコンピューティングプログラムに従ういかなるデバイスも含むことができる。
【0028】
信頼できるアプリケーションまたはコンテンツをチップへ追加供給するため,コミュニケーションリンク120は信頼できるサーバ130からセキュアプロセッサ110へ通じる伝送経路を有するものが考えられる。例えばコミュニケーションリンク120は,インターネットやその一部をリアルタイムで利用する,または記憶および転送を行う一以上のデバイスを利用する,または一以上の中間キャッシングデバイスを利用する,または記憶媒体を通した物理的な配信,というような伝送経路を有する。しかし,別の実施形態でコミュニケーションリンク120は,個人または公共の交換電話ネットワーク,レンタル電話または他の個人コミュニケーションリンク,ラジオトランシーバ,マイクロ波トランシーバ,ワイヤレスまたはワイヤラインモデムなど,セキュアプロセッサ110の代わりに信頼できるサーバ130と通信可能なデバイスやシステムへの伝送経路(通信経路)を含むことができる。さらにコミュニケーションリンク120は,信頼できるサーバから物理的に運送または配達される記憶媒体(CDROMなど)など,コンテンツの配給のために考えられるあらゆる技術を含む。
【0029】
信頼できるサーバ130には電子流通システムの一部としてのコンテンツ発信,配送,またはサービング事業体なども含まれる。実施形態の一つは,信頼できるサーバ130が,例えばアプリケーションソフトウェアやマルチメディアコンテンツなどの流通する全てのコンテンツに(状況に応じて)デジタル信号を発信することが可能であり,それによりセキュアプロセッサ110はそのコンテンツの信頼性を検証可能となる。実施形態の一つでは,公開鍵暗号システム(public key cryptosystem)や同様な性質を有するシステム,またはコンテンツの信頼性について検証を可能とする情報を生み出すことができるタイプの他のシステムなどと共用されるデジタル署名技術を利用して,デジタル署名が実現する。
【0030】
別の実施形態において信頼できるサーバ130には,情報のリクエストを含むメッセージを受信可能で,さらにその情報のリクエストへの反応を含むメッセージを発信可能な,論理上の遠隔デバイス(logically remote device)を含むことができる。例えば,信頼できるサーバ130は高性能PCまたはワークステーションを含むインターネットサーバを有することもできる。その他の実施形態では信頼できるサーバ130は単独型サーバであるが,しかし本発明の状況において信頼できるサーバ130がそれほど具体的である必要性はない。むしろ信頼できるサーバ130は,ここで述べる動作を可能とするいかなるデバイスも,さらにハードウェアコンポーネントまたはソフトウェアコンポーネントの双方も含むことができる。
【0031】
また本発明の状況においては信頼できるサーバ130が,特定のコンポーネントの組み合わせを有したり,単一のデバイスであったり,特定デバイスをそのまま全て有するものである必要性はない。むしろ信頼できるサーバ130は他のデバイスの一以上の部分を有するか,連結または連携して動作する一以上のデバイス(またはその部分)を有すことも可能である。さらに上述のように,信頼できるサーバ130は配送されるコンテンツの創作およびカプセル化を行ういかなるデバイスも含み,具体的にはセキュアプロセッサ110に物理的に配送される記憶媒体(CDROMなど)を書くためのデバイスが挙げられる。
【0032】
上述のように,信頼できるサーバ130はコンテンツの配送に可能ないかなる技術も含むことができる。本発明の状況において,アクチュアルオンラインのコンテンツ配送や,セキュアプロセッサ110と信頼できるサーバ130との間にライブリンクまたはリアルタイムリンクを有する必要性はない。例えばアプリケーションソフトウェアまたはマルチメディアコンテンツは,以下に上げる技術もしくはその連結・連携によって信頼できるサーバ130からセキュアプロセッサ110へ配送可能である:
【0033】
・ アプリケーションソフトウェアまたはマルチメディアコンテンツがインターアクティブ通信もしくは交換通信システムを使って配送可能である。
・ アプリケーションソフトウェアまたはマルチメディアコンテンツが物理的な記憶媒体を使って配送可能である。
・ アプリケーションソフトウェアまたはマルチメディアコンテンツが符号化または暗号化された形状で,第三者から,いかなる技術によっても配送可能であり,符号および暗号の解読キーが信頼できるサーバ130からいかなる技術によっても配送可能である。
・ アプリケーションソフトウェアまたはマルチメディアコンテンツが第三者から,いかなる技術によっても配送可能であり,証明書またはその他の信頼性の保証書が信頼できるサーバ130から,いかなる技術によっても配送可能である。
・ アプリケーションソフトウェアまたはマルチメディアコンテンツが中間ストレージやその他のタイプのキャッシングデバイスを使って,インターネットや他の配信技術を通していかなる技術によっても配送可能である。
【0034】
セキュアプロセッサ110はモニタープロセッサ111,セキュリティロジック112一式,およびセキュリティ情報113一式を含む。セキュアプロセッサ110はモニターモードまたはセキュアモードの両方で動作できる。モニターモードで動作するとき,セキュアプロセッサ110はモニタープロセッサ111を有する回路を利用する。セキュアモードで動作するとき,セキュアプロセッサ110はモニタープロセッサ111およびセキュリティロジック112を有する回路と,セキュリティ情報113を含むデータを利用する。
【0035】
1. モニタープロセッサ
モニタープロセッサ111は内部バス114,CPU A100,CPUメモリインターフェイスA103,大容量ストレージインターフェイスA135,メモリインターフェイスA140,アプリケーション固有回路A145,大容量ストレージデバイスA150,RAM A155を有する。
【0036】
内部バス114はモニタープロセッサ111の部分間で,データのリクエストやデータを含む反応などの信号を通信可能である。内部バスはCPUメモリインターフェイスA103,大容量ストレージインターフェイスA135,メモリインターフェイスA140,アプリケーション固有回路A145,大容量ストレージA150と連結する。CPU A100はここで述べた機能の実行が可能な汎用プロセッサまたは特殊用途プロセッサを有する。例えばCPU A100は,AMD社またはインテル社製造の汎用プロセッサ,DSPや内蔵マイクロコントローラなどの特殊用途プロセッサを含む。
【0037】
CPUメモリインターフェイスA103はCPU A100に連結する。CPUメモリインターフェイスA103はCPU A100からのメモリアクセスリクエストを受信し,CPU A100のRAM A155へのアクセスを記録する。一つの実施形態では,CPUメモリインターフェイスA103はそのような全てのアクセスを記録するが,他の実施形態ではCPUメモリインターフェイスA103は,セキュリティロジック112またはセキュリティ情報113によって指定された1セットの選択されたメモリ位置に特定したアクセスのみなど,記録するアクセスを選択することができる。
【0038】
大容量ストレージインターフェイスA135は大容量ストレージA150とともに適切なインターフェイス機能を実施する。大容量ストレージA150はハードディスク,フレキシブルディスク,テープ,または他のタイプの大容量ストレージを含む。
【0039】
メモリインターフェイスA140は外部メモリ(RAM A155を指す)に対して適切なインターフェイス機能を実行する。RAM A155は書き込み可能でも不可能でも,書き込み可能な場合一回のみ可能でもそれ以上でも,RAMのあらゆる形状を含む。
【0040】
アプリケーション固有回路A145は,CPU A100によってまだ実行されていない,特定のモニタープロセッサ111に特有なその他の機能を実行する。CPU A100とアプリケーション固有回路A145は互いに連結・連帯して選択された機能を実行できる。
【0041】
2. セキュリティロジック
セキュリティロジック112は,セキュアモード切替回路A105,セキュアタイマー回路A110,セキュアブートコードA115一式,アクセスコントロール回路A133,セキュアモードアクティブ信号A160,アクセスコントロール信号A163,NMI(マスク不可能な割り込み)信号A165,外部リセット信号A170の受信のためのポートA171を有する。さらにセキュリティ機能の手助けをするセキュアコードA120一式は大容量ストレージA150に保存される。
【0042】
セキュアプロセッサ110は外部リセット信号170Aに反応することができる。CPU A100はリセット信号170Aに応じて,セキュアブートコードA115の予め選択されたリセット位置へとコントロールを移動させる(つまり新しい位置にて命令の実行を開始する)。予め選択されたリセット位置もセキュアブートコードA115も,CPU A100または他のアプリケーションソフトウェアによって変更はできない。
【0043】
リセット信号170Aに応じて,セキュアモード切替回路A105はセキュアモードアクティブ信号A160を発信するが,それによりCPU A100がセキュアブートコードA115にアクセス可能となるようアクセス権がセットアップされ,命令を実行し,セキュリティ情報113を利用してデータの読み書きを行う。リセットの際には,セキュアプロセッサ110がコントロールをリセット位置へと移動させ,セキュアブートコードA115を実行し,(セキュアモードアクティブ信号A160がTRUEを示す状態で)CPU A100はチップの制限されたセキュア部分へアクセス可能となる。ある実施形態では,セキュアブートコードA115が個々の不揮発性メモリA115に保存され,その位置もコンテンツもアプリケーションソフトウェアは変更できない。
【0044】
セキュアブートコードA115は,必要とされるセキュリティチェックを実行した後,セキュアカーネルコードA120に含有されるいかなる追加のソフトウェアもセキュリティ機能も,外部大容量ストレージA150から内部RAM A120の中へ配置し読み込む。
【0045】
追加のソフトウェアを配置し読み込んだ後,CPU A100はコントロールをセキュアコードA120(=セキュアカーネルコード)へと移動させ,セキュアコードを実行開始する。セキュアコードA120によりCPU A100はアプリケーションコード143を認証・実行する準備を始める。アプリケーションコード143の実行のための準備が完了すれば,セキュアコードA120によりセキュアプロセッサ110がセキュアモードを終了する。
【0046】
セキュアプロセッサ110はさらにNMI信号A165に反応することができる。NMI信号A165は,セキュアモードでサービスが実行されるようリクエストするために,例えばアプリケーションコード143により(例えばCPU A100によって実行可能なプログラム命令により)発信される。そのようなサービスの例としては,セキュアコードA120のみが実行の権限を有するセキュア機能または他の機能を実行することである。そのようなサービスを要求するには,アプリケーションコード143はセキュリティロジック112に選択されたビットを設定する。セキュアモードロジックはセキュアモードアクティブ信号A160をTRUEとなるように設定し,それによりCPU A100はセキュアプロセッサ110のセキュア部へアクセス可能となる。同時にセキュリティロジック112はNMI信号A165をCPU A100へ送信し,CPU A100がチップ内のセキュアブートコードA115へコントロールを移動させる。セキュアブートコードA115は,アプリケーションのためのサービスを実行し,RAM A155のいくつかの共用メモリ位置へ結果を提供し,セキュリティロジック112を利用してモニターモードへ移行する。予め選択されたNMIハンドラ位置,セキュアブートコードA115,そしてセキュリティカーネルソフトウェアの読み込みおよび検証を行う方法は,CPU A100または他のアプリケーションソフトウェアは変更できない。
【0047】
ここで述べたように,セキュアカーネルコードA120は内部メモリ(不揮発性メモリ,または外部ストレージから読み込み認証された場合は揮発性メモリも)に保存される。セキュアモード切替回路A105はセキュアモードアクティブ信号A160を発信し,それによりCPU A100はセキュアブートコードA115を含む不揮発性メモリC100へアクセス可能となり,よってCPU A100は命令を実行し,セキュリティ情報113を利用してデータの読み書きを行う。
【0048】
セキュアタイマー回路A110は,セキュアモード切替回路A105によって設定されたパラメータに応じて,CPU A100へのタイマー割り込み信号を発信することができる。セキュリティロジック112はまた,セキュアタイマーのタイムアウトに応じて,NMI信号A165をCPU A100へ発信できる。これに対しCPU A100は,セキュアカーネルコードA120にある予め選択されたタイマー割り込みハンドラ位置へコントロールを移動させる。その予め選択されたタイマー割り込みハンドラ位置もセキュアカーネルコードA120も,CPU A100や他のアプリケーションソフトウェア(または外部ストレージA150に保存された他のソフトウェア)は変更できない。
【0049】
セキュアモードに入るためのその他の方法と同様に,セキュアプロセッサ110はタイマー割り込み信号A165に応じて,セキュアモードアクティブ信号A160をTRUEに設定し,その結果セキュアチップのセキュア部分へのアクセスを可能にする。
【0050】
アクセスコントロール回路A133は,セキュアモードアクティブ信号A160に応じてアクセスコントロール信号A163を発信することによってセキュアプロセッサ110のエレメントへのアクセスを制御するもので,前記エレメントはアクセスコントロールが実行されるセキュアプロセッサ110の各エレメントと連結する。セキュアモードアクティブ信号A160が,セキュアプロセッサ110がセキュアモードにあることを示す時,アクセスコントロール回路A133は,CPU A100がセキュアプロセッサ110の全てのエレメントへアクセスすることを許可する。一方,セキュアモードアクティブ信号A160が,セキュアプロセッサ110がモニターモードにあることを示すとき,アクセスコントロール回路A133は,CPU A100がセキュアプロセッサ110の下位互換性のあるモニターモード部分にのみアクセスすることを許可する。好ましい実施形態では,そのような下位互換性のあるモニターモード部分はセキュリティロジック112(セキュアモードへの移行を示すもの以外)およびセキュリティ情報113を除外する。
【0051】
さらに具体的には,セキュアモードアクティブ信号A160が,セキュアプロセッサ110がモニターモードにあることを示すとき,アクセスコントロール回路A133は,CPU A100が以下にアクセスすることを阻止する:セキュアモード切替回路A105(セキュアモードへの移行を示すもの以外),セキュアタイマー回路A110,セキュアブートコードA115,セキュアカーネルコードA120,アクセスコントロール回路A133,セキュアモードアクティブ信号A160,アクセスコントロール信号A163,リードオンリー・セキュアデータA125,リード/ライト(読み書き自在)一時的セキュア状況値A130,暗号化/暗号解読キーB101,ライセンス供与情報B102。
【0052】
3.セキュリティ情報
セキュリティ情報113は,リードオンリー・セキュアデータA125一式,リード/ライト一時的セキュア状況値A130一式,個人キー一式(公開鍵暗号システムなどから得られるもの),暗号化/暗号解読キー一式,任意のユニークID一式,署名情報B101一式を含む。
【0053】
リードオンリー・セキュアデータA125は,以下に示すようなセキュアコード一式を含む。即ち,リセット信号A170に応じて,随意のNMI信号A165に応じて,タイマー割り込み信号A165に応じて,或いはその他ではセキュアモードに移動したときに,CPU A100により実行可能となるコードなどを含む。ある実施形態では,リードオンリー・セキュアデータA125は,好ましくは個々のセキュアプロセッサ110に独自な,一またはそれ以上の個人キー一式と暗号化/暗号解読キーB101一式を有する。そのような実施形態でセキュアプロセッサ110は,公開鍵暗号システムを利用する信頼できるソース(発信元)からのメッセージを暗号解読するために暗号化/暗号解読キーB101を使う(例えば公開鍵暗号システムの個人/公開キーの個人キーを利用するなど)。そのほか,セキュアプロセッサ110は暗号化/暗号解読キーB101とは異なる他のコード署名B103一式を有し,認証のために他の技術を利用している信頼できるソースを認証する。同様に,このような実施形態においてセキュアプロセッサ110は,例えば認証された信頼できるソースから追加のセキュアコードを受信した際に,その追加セキュアコードに付随するデジタル署名またはセキュアハッシュの正確さに留意することで,メモリに読み込まれる追加セキュアコードの精度を検証するためにコード署名B101を利用する。
【0054】
ある実施形態では,リードオンリー・セキュアデータA125はキー情報B102を含み,それにより個々のセキュアプロセッサ110はソースを認証し,個々のセキュアプロセッサ110が関連するアプリケーションソフトウェアを受信または実行する権利を有することを検証できる。例えばライセンス供与情報B102は,個々のセキュアプロセッサ110が関連するアプリケーションソフトウェアを実行するライセンスを有することを示す,信頼できる専門家による署名の入った証明書を含む。そのような実施形態では,認証された信頼できるソースはライセンス供与情報B102に応じて,アプリケーションソフトウェアの読み込み及び実行のための関連機能をセキュアプロセッサ110に供給する。ある実施形態ではこれらの機能は,アプリケーションソフトウェア自体,またはセキュアプロセッサ110がアプリケーションソフトウェアを読み込み及び実行することを承認するDRM(デジタル著作権管理)証明書の双方を含む。
【0055】
リード/ライト一時的セキュア状況値A130は,セキュアプロセッサ110がセキュアコードを実行するために必要とするいかなる読み書き自在の一時的な記憶情報をも含む。ある実施形態では,セキュアプロセッサ110がその一時的な状況の全てをリード/ライト一時的セキュア状況値A130に保存し,その結果アプリケーションコードはセキュアコードによって使用されるいかなる状況情報にもアクセスできなくなる。さらにセキュアプロセッサ110は,CPU A100によって実行されるいかなるソフトウェアに対しても適切な認証や有効性チェックを行うために,CPU A100によって実行可能な命令をセキュアカーネルコードA120内に有する。リード/ライト一時的セキュア状況値A130の中にセキュアプロセッサ110の全ての一時的状況を保存することは,その一時的状況を読みセキュアプロセッサ110のセキュアモード動作のセキュリティを侵害しようとするユーザーにとって,作業要因を増やす効果がある。しかし他の実施形態では,セキュアプロセッサ110は少なくともいくつかの一時的状況を一般メモリに保存することができ,それによりアプリケーションコードはその状況に関連するいくつかの状況値にアクセス可能となる。
【0056】
動作方法
図2はセキュアの実行が可能なセキュアプロセッサの動作方法の工程系統図を示す。
方法200はシステム100によって実行される。方法200は連続して記載されるが,フローポイントや手順は個々の要素によって,連結または並行して,非同期的または同期的に,またはパイプライン式に実行可能である。方法200は特に記載のない限り,本明細書の以下にあるフローポイントや手順の順序に従って実行される必要性はない。
【0057】
1. 電源ON
フローポイント210では,セキュアプロセッサ110は電源を入れる準備ができている。
手順211では,セキュアプロセッサ110は電源が入る。
手順212では,リセット信号A170がアサートされ,そのためセキュアプロセッサ110がリセットされたことを示す。セキュアプロセッサ110がリセットされると,セキュアモードアクティブ信号A160がアサートされ(つまりTRUEにセットされ),CPU A100はセキュアブートコードA115へジャンプする(つまり実行コントロールを移動させる)。
【0058】
手順213では,CPU A100がセキュアブートコードA115へのアクセスの許可を受け,その命令を実行し,セキュリティ情報113を使って読み書きを行うことを不揮発性メモリC100(図3)に対し示すセキュアモードアクティブ信号A160を,セキュアモード切替回路A105がアサートする。その後CPU A100は,セキュアブートコードA115の中の予め選択されたリセット位置へコントロールを移動させる。
手順214では,CPU A100はセキュアブートコードA115からの命令を実行する。
手順215では,CPU A100はセキュアブートコードA115を実行する。
【0059】
ある実施形態において,以下に示すMIPSまたはMIPS互換プロセッサにおける実施例では,リセットによってセキュアモードへ入る結果となる。この実施例では,実行方法のフローポイント250から開始し,手順214と手順215に含まれる動作をとる。
・ 手順251では,リセット信号によってセキュアモードに入ることが要求される。
・ 手順252では,もしリセット位置0x1fbc0000へ後のキャッシュしていない(uncached)読み込みが行われた時のみ,セキュリティロジック112がセキュアモード信号A165をTRUEにセットする準備を行う。
・ 手順253では,CPU A100がリセット信号に応じるため,通常の実行を中断する。
・ 手順254では,CPU A100がリセット位置0x1fbc0000から次の命令を取得し,それによりリセット割り込みハンドラまたはNMI割り込みハンドラを作動する。
・ 手段255では,セキュリティロジック112がセキュアモード信号A160をTRUEにセットし,それによりチップのセキュア部へのアクセスおよびセキュアブートコードの実行を可能にする。
・ 手段256では,CPU A100がセキュアブートコードA120中のリセット割り込みハンドラもしくはNMI割り込みハンドラの実行へ進む。
【0060】
セキュアブートコードA120の実行後,大容量ストレージA150から以下の手順にてセキュリティカーネルまたはセキュリティ機能を読み込む。
セキュアブートコードA115はセキュリティ情報113を読み,暗号によって署名された,もしくは検証可能な命令を受ける。そしてそれら追加命令を内部RAM A155へ記憶する。この手順の実行のために以下のサブステップをCPU A100が実行する:
【0061】
・ サブステップ215では,セキュアモードで動作するCPU A100が,セキュアブートコードA120によって読み込まれ認証された大容量ストレージA150からのソフトウェア(サーバデバイスから取得したものである可能性もある)を実行する。ある実施形態では,セキュアモードで動作するCPU A100のみアクセス可能な,リードオンリー・セキュアデータA125に含まれる暗号化/暗号解読キーB101を利用してメッセージを暗号化する。
ある実施形態においては,CPU A100は追加命令をコミュニケーションリンクを利用して取得するが,他の実施形態ではシステム100は追加命令を(一部でも全体でも)他の手段で取得する。例えば,(1)物理的な媒体手段によって,または(2)DRM(デジタル著作権管理)証明書または他のサーバデバイスから取得される機能を有する第三者によって,それら追加命令を取得する可能性もある。
さらに,ある実施形態においては追加命令が暗号化形態によって送られるが,他の実施形態では,DRM証明書または他の機能や技術を利用して管理される追加命令への使用権を施行することで,暗号化されていない形態の追加命令を(一部でも全体でも)システム100が取得することができる。
【0062】
・ サブステップ216では,チップ内部からのセキュア情報,またはセキュアなソフトウェアやデータによって既に信頼関係を樹立した信頼できるサーバからのメッセージに関し検証済みのセキュア情報に関し,セキュアモードで動作するCPU A100がソフトウェアを認証し,その安全性を検証する。ある実施形態では,CPU A100はこの認証のためのサブステップを,リードオンリー・セキュアデータA125に含まれる暗号化キーまたはコード署名B101を使った公開鍵暗号システム,または信頼できるサーバ130からの,暗号化/暗号解読キーB101またはリードオンリー・セキュアデータA125に含まれる他の情報(例えば信頼できるサーバ130の公開キーなど)を利用して実行する。
【0063】
・ サブステップ216では,セキュアプロセッサ110がアプリケーションソフトウェアまたは他の追加命令を信頼できるサーバ130から受信する認証を受けていることを,信頼できるサーバ130が状況に応じて検証する。ある実施形態では,公開鍵暗号システム,リードオンリー・セキュアデータA125からの暗号化/暗号解読キーB101,またはライセンス供与情報B102やリードオンリー・セキュアデータA125からの他の情報を利用して,CPU A100がこの検証のためのサブステップを実行する。
【0064】
当業者ならば本明細書を熟読すれば,暗号化署名や信用されたルートキーを利用するソフトウェアやサーバからのデータの認証のためには,多くの他の技術が利用できることが理解できる。また,そのような認証が信頼できるサーバ130のためだけのものである必要はない。他の実施形態では,サーバやクライアントが互いに認証し合うこともできる。
【0065】
・ サブステップ217では,セキュアモードで動作するCPU A100が,信頼できるサーバ130からアプリケーションソフトウェアや他の追加命令を受け,それらの正確度(accuracy)を検証する。ある実施形態では,CPU A100はこの検証のためのサブステップを,公開鍵暗号システムやリードオンリー・セキュアデータA125からの暗号化/暗号解読キーB101,またはアプリケーションソフトウェアやリードオンリー・セキュアデータA125からの他の追加命令のためのセキュアハッシュを利用して実行する。
・ サブステップ218では,セキュアモードで動作するCPU A100がアプリケーションソフトウェアや他の追加命令をRAM A155に記憶する。このサブステップによりアプリケーションソフトウェアや他の追加命令がCPU A100によって実行される準備が整う。
【0066】
アプリケーションソフトウェアの認証および読み込みのための方法例を上記に述べたが,他のさらなる技術が適応されることもできる。上述のように,本発明の状況では,アプリケーションソフトウェアの認証のために必ずしも特定の技術が用いられる必要はなく,具体的には,アプリケーションソフトウェアの認証のために必ずしも信頼できるサーバ130とのインターアクティブ通信が用いられる必要はない。
【0067】
ある実施形態において,セキュアカーネルコードA120の少なくともいくらかの部分が,追加命令としてセキュアプロセッサ110によって取得される。他の実施形態では,以下の技術が利用される:
【0068】
・ 立ち上げ(電源ONまたはリセット信号の受信)では,CPU A100は,セキュアブートコードによって正しくセキュアであると検証されたセキュアカーネルコードA120の実行を強制される。
・ ブートストラップローダによってプログラムコードを読み込んだ後,CPU A100はセキュアカーネルコードA120を実行し,それにより大容量ストレージA150または他の外部デバイスから内部メモリへの,セキュリティ機能の実行のためのコードの移動およびコピーを行う。他の実施形態では,内部メモリがSRAMメモリのようなオンチップ揮発性メモリである。
【0069】
不揮発性ライトワンス(write once)メモリC110はセキュアプロセッサチップの製造段階で,例えば160ビットのセキュアハッシュまたはダイジェスト値など,暗号強度が高い署名値にて初期値の設定が行われる。ある実施形態では,前記セキュアハッシュまたはダイジェスト値は,SHAIセキュアハッシュまたは他の暗号強度が高い署名値を有する。不揮発性ライトワンスメモリの構成および初期値設定によって,セキュアプロセッサチップの製造の後,アプリケーションソフトウェアによって変更されるのを阻止する。
【0070】
セキュアカーネルコードA120のブートストラップローダ部は新しく読み込んだプログラムコードの署名を計算し,その計算した署名と,不揮発性メモリC100に既に内部記憶された予め計算されている署名とを比較する。もしその計算された署名と予め計算されている署名とが合致する場合,セキュアカーネルコードA120のブートストラップローダ部は,新しく読み込んだプログラムコードが正確で信頼できるものであると判断を下す。この判断を受けたとき,CPU A100はセキュアコードの新しく読み込んだプログラムを実行できる。
【0071】
ある実施形態では,セキュアモードにて実行されるべき追加ソフトウェアを読み込む度に,CPU A100は新しく読み込んだプログラムコードが正確で信頼できるものかどうかを再度検証する。例えばそのような場合とは(1)セキュアカーネルコードA120の一部分がRAM A155や大容量ストレージA150,または他の外部デバイスから読み込まれる時,(2)例えば新しいセキュリティ機能もしくはセキュアカーネルコードA120によって提供される新しい機能などの追加ソフトウェアが,セキュアカーネルコードA120へ追加または読み込まれるのが望ましい時である。
【0072】
ある実施形態では,CPU A100は新しく読み込まれたプログラムコードの各モジュールが正確で信頼に値するものであることをそれぞれ検証する。例えばそのような場合とは(1)複数モジュールがRAM A155,大容量ストレージA150,またはその他の外部デバイスから読み込まれた場合,各モジュールの予め計算された署名を管理する,(2)追加のソフトウェアが一連のモジュールへ読み込まれるのが望ましい時,予め計算された新しい署名を各モジュールへ順に移動させる(3)各モジュールに対し個別に予め計算された署名と,モジュール一式に対し予め計算された一署名との両方を保存する。
手順219では,セキュアプロセッサ110はセキュアモードを終了してモニターモードへと移行する。一般的なセキュアモードからの終了方法は,後述する。
【0073】
2. サービスのリクエスト
フローポイント220では,セキュアプロセッサ110はモニターモードにてアプリケーションソフトウェアを実行している。セキュアモードはアプリケーションソフトウェアからのサービスのリクエストを受ける準備ができている。
手順221では,アプリケーションソフトウェアはセキュアプロセッサ110へサービスのリクエストを提供する。
手順222では,ある実施形態において,アプリケーションソフトウェアがサービスのリクエストのためのパラメータをセキュアモードロジックの選択されたレジスタへ配置する。
【0074】
手順223では,セキュアモードロジック112がセキュアモード信号A160をTRUEにセットする。
手順224では,セキュアモードロジック112がCPU A100に対しNMI割り込み信号を発信し,それによりCPU A100はサービスのリクエストに応じるためにセキュアカーネルコードA120へコントロールを移動する。
手順225では,手順213と同様に,CPU A100はセキュアコードの予め選択された割り込みハンドラ位置へとジャンプする。セキュアモード切替回路A105はセキュアモードアクティブ信号A160をアサートするタイマーに関与し,そのセキュアモードアクティブ信号A160によってCPU A100はセキュアコードにアクセスし,命令を実行し,セキュリティ情報113を使ってデータの読み書きを行うことができる。
【0075】
手順226では,手順214と同様に,CPU A100はセキュアコードからの命令を実行する。セキュアコードはNMI割り込み(マスク不可能な割り込み)の処理を行う。
ある実施形態における,以下に示すMIPSおよびMIPS互換性プロセッサでの実施例では,アプリケーションコード143のリクエストによってセキュアモードに入るという結果を得た。この実施はフローポイントの250から開始する。
【0076】
・ アプリケーションがセキュアモードロジック中のレジスタへキャッシュしていない読み込みを実行する。これはセキュアモードロジックを,NMIリセット位置である0xbfc0000からの次の読み込みと出会ったときだけ条件に応じてセキュアモードへと移行するよう保護する。
・ 手順252では,リセット位置である0xbfc0000へ次のキャッシュしていない読み込みが行われた時のみ,セキュリティロジック112はセキュアモード信号A165をTRUEにセットする。
・ 手順253では,セキュリティロジック112によりNMI信号がCPU A100へアサートされる。
【0077】
・手順254では,CPU A100は位置0xbfc0000から次の命令をフェッチしようと試みるが,これによりリセット割り込みハンドラまたはNMI割り込みハンドラが起動する。
・手順255では,セキュリティロジック112はセキュアモード信号A165をTRUEにセットし,それによりチップのセキュア部へのアクセス及びブートセキュアコードの実行が可能となる。
・手順256では,CPU A100がセキュアコードA120にあるリセット割り込みハンドラまたはNMI割り込みハンドラの実行へ進む。
【0078】
ある実施形態では,セキュアモードロジックのレジスタはセキュアモードへ入る理由(例えばリセットのため,アプリケーションコードからリクエストがあるためなど)を示すために保持される。
セキュアカーネルはセキュアモードへ入る原因を判断し,場合によってはチップの侵入禁止領域を読み込むことでアプリケーションによってリクエストされたサービスを実行し,アプリケーションと共用するメモリ領域へ結果を返信する。
【0079】
リクエストされた動作を実行した後,セキュアカーネルはセキュアモードロジックを通って規定の終了手順(以下に述べる)を開始し,アプリケーションコード143へ戻る。
手順227では,セキュアプロセッサ110はリクエストされた動作の結果をRAM A155などの共用メモリへ保存する。
ある実施形態では,アプリケーションソフトウェアによって供給されたサービスのリクエストには,入出力動作を実行するリクエストが含まれる。そのような場合,セキュアプロセッサ110はセキュアモードで実行される少なくともいくつかの入出力動作を保留する。その結果,アプリケーションソフトウェアはセキュアコードからの補助なしではそのような入出力動作を実行できない。
【0080】
アプリケーションソフトウェアは,リクエストされたサービスが入出力動作であることを示すサービスのリクエストを,リクエストに付随するパラメータによって提示する。リクエストに付随するパラメータは,好ましくはアプリケーションソフトウェアを実質的に変更せずにそのアプリケーションソフトウェアと連携して動作を行うために,セキュアプロセッサ110に合わせて設計者によって選択されたAPI(アプリケーション・プログラミング・インターフェイス)に従う。
ある実施形態では,アプリケーションソフトウェアによって提示されたサービスのリクエストが,追加ソフトウェアの読み込みリクエストを含むこともできる。そのような実施形態では,セキュアプロセッサ110は手順214およびそのサブステップに類似した手順を踏む。これによりシステム100において手順214に類似したサブステップでは,CPU A100は信頼できるサーバ130をサーバデバイスとして認証し,大容量ストレージA150または信頼できるサーバ130から追加ソフトウェアを読み込み/受信し,さらにそのソフトウェアの信頼性や安全性を検証した後にRAM A155に記憶する。
【0081】
エラートラップまたは入出力エミュレーションは上記と同じ例示的メカニズムによってセキュアモードロジックを通って処理される。その場合セキュアモードロジックはCPUがセキュアモードへ入り,エラートラップや入出力リクエストを処理するために予め認証されたソフトウェアを必要に応じて実行するよう強制する。
手順228では,セキュアプロセッサ110はセキュアモードからモニターモードへと終了する。セキュアモードの終了のための一般的な実施例は,のちに概説する。
【0082】
3. タイマー割り込み
フローポイント230では,セキュアプロセッサ110はモニターモードにて動作中のアプリケーションソフトウェアに割り込みできるタイマーをセットしており,タイマーはオフになる準備ができている。
手順231では,手順221と同様にタイマーがオフとなり,アプリケーションソフトウェアは割り込みされる。
手順232では,手順222と同様にタイマー割り込み信号A165がアサートされ,それによりセキュアプロセッサ110の処理が割り込まれたことを示す。
MIPSまたはMIPS互換性プロセッサにおけるセキュアタイマートラップの実施例は,以下の通りである。この実施例はフローポイント250から始まる手順に類似する。
【0083】
・ セキュアタイマーは,ゼロまでカウントダウンしてセキュアタイマートラップの周期性を判断する値へとリセットするために,CPUのリセットセキュアブートソフトウェアにプログラムされる。
・ タイマーはプログラムされた設定からゼロに達するまでカウントダウンし,NMI信号A165をCPUに出力し(実行経路に割り込ませる),セキュアモードロジックが,次にキャッシュしていない読み込みのリクエストがNMIルーチン回路へ送られた場合のみ,条件に応じてセキュアモードアクティブ信号をアサートするよう保護する。
・ CPUは,タイマー割り込みが行われた時点で望まれる動作を実行するようセキュアカーネルが属するNMIルーチンを実行するためにジャンプする。
・ セキュアモードロジックは,NMI位置への読み込みが確認された時点でセキュアモードアクティブ信号をTRUEへとセットし,チップ内のセキュアリージョン(領域)へのアクセスを許可する。
・ タイマートラップの処理に関与するセキュアカーネルルーチンは,動作を実行し,最後にセキュアモードロジックを通って再度セキュアモードへ入る。
【0084】
手順236では,CPU A100はセキュアコードを出てアプリケーションソフトウェアの実行ポイントへと戻る。セキュアモード切替回路A105はセキュアモードアクティブ信号A160のアサートを停止し,それによりCPU A100にはセキュアコードへのアクセスも,命令の実行も,セキュリティ情報113を利用したデータの読み書きも許可されないことを示す。
【0085】
4. モニターメモリアクセス
フローポイント240では,セキュアプロセッサ110は,モニターモードで実行しているアプリケーションソフトウェアによる外部メモリへのアクセスを記録する準備ができている。
手順241では,CPU A100はRAM A155への読み書きを行う。この手順のために,CPU A100はCPUメモリインターフェイスA103へメモリアドレスを送る。
手順242では,CPUメモリインターフェイスA103は前記メモリアドレスを内部バス114へ伝送し,その内部バス114は該メモリアドレスをメモリインターフェイスA140およびセキュリティロジック112へと伝送する。
【0086】
手順243では,アクセスコントロール回路A133を含むセキュリティロジック112が,CPU A100がRAM A155内のメモリアドレスにアクセスすべきかどうかを判断する。ある実施形態では,CPU A100によるRAM A155内のメモリアドレスへのアクセスは常に許可される。しかし他の実施形態では,アクセスコントロール回路A133がCPU A100による選択されたメモリアドレスへのアクセスを制限することができ,そのためCPU A100がモニターモードにて動作しているときRAM A155の選択された部分は孤立する。
【0087】
手順244では,アクセスコントロール回路A133を有するセキュリティロジック112が,CPU A100によるRAM A155内の該メモリアドレスへのアクセスを記録する。ある実施形態では,CPU A100は選択されたメモリアドレスのみを記録する。例えばCPU A100がモニターモードで動作中にアクセスを記録するために,アクセスコントロール回路A133は一以上のRAM A155の部分を選択できる。しかし他の実施形態では,アクセスコントロール回路A133は前述のようなメモリアクセスの全ての記憶を試みることも,メモリアクセスのパターンに応じてメモリアクセスを記録することも,セキュアモードで動作しているCPU A100によって選択された他の基準に応じてメモリアクセスを記録することも可能である。アプリケーション仕様の制限情報は,アプリケーションが開始する通常の制限認証チェックの間,セキュリティソフトウェアによって読み込みが可能である。
【0088】
以下の実施形態では,上記メカニズムのいずれかにおけるセキュアモード終了の実施方法が上げられる。
・ セキュアモードへの移動の理由を示すレジスタがクリア(除去)される。
・ ソフトウェアがセキュアカーネルソフトウェアを実行するために使われた全てのキャッシュまたは内部メモリ領域をクリアする。
・ NMIルーチンからセキュアカーネルソフトウェアが戻る。
不揮発性メモリ
図3は実質的に消去不可能な方法で不揮発性メモリを構成するためのデバイスを含む回路の構成図を示す。
回路300は不揮発性メモリC100,ディセーブル(不可能)ロジックC110,外部プログラムロジック回路C120,非接合ピンC130,外部プログラミングピン340一式を有する。
【0089】
ある実施形態では,不揮発性メモリC100はフラッシュメモリまたは他の電気的にプログラム可能で読み込み可能なメモリを含み,それにより回路300は不揮発性メモリC100がデータでプログラムされたか否かを判断できる。本発明の状況では,ここで述べる機能を実行できる限り,不揮発性メモリC100は特定のメモリ技術を有する必要はない。
ディセーブルロジック回路C110は外部プログラムロジック回路C120と連携するが,それによりディセーブルロジック回路C110からのプログラムイネーブル信号が休止になったとき,外部プログラムロジック回路C120への入力が不可能になり,不揮発性メモリC100は外部プログラミングピンから電気的にプログラムできなくなる。
【0090】
ディセーブルロジック回路C110もまた不揮発性メモリC100に連携されており,不揮発性メモリC100からの値を読み込むこと,さらにそれらの値をプログラムイネーブル署名値と比較することが可能であり,それによりディセーブルロジック回路C110は不揮発性メモリC100が初期段階にプログラムされたか否かを判断できる。もし不揮発性メモリC100がプログラムイネーブル署名値と初期段階でプログラムされたものであれば,ディセーブルロジック回路C110は外部プログラムロジック回路C120への入力を可能にし,それにより不揮発性メモリC100は電気的にプログラム可能になる。プログラムイネーブル署名値が不在な場合,ディセーブルロジック回路C110からのプログラムイネーブル出力が不可能になる。
【0091】
非接合ピンC130は,セキュアプロセッサチップダイに配置され,ダイの実装前に精査可能な,いかなる外部ウィングや実装体にも接合されていない,電気的に伝導性のあるパッドを有する。これにより非接合ピンC130はセキュアプロセッサチップの製造時に外部回路と電気的に連結可能であるが,製造または実装の後,該非接合ピンC130は実質的にいかなる外部回路へも電気的に連結不可能となる。よってセキュアプロセッサチップの製造後そして実装前は,非接合ピンC130は不揮発性メモリC100のプログラミング時に利用が可能であるが,製造および実装が完了すると,該非接合ピン130は不揮発性メモリC100のプログラミング時に利用不可能となり,それにより外部からの不揮発性メモリC100のプログラミング動作は不可能となる。
【0092】
製造後のウエハーテストでは,非接合ピンC130は選択された電圧(ロジック“0”)と連結され,それによりディセーブルロジックC110からのプログラムイネーブル出力の状況に関わらず,外部プログラムロジック回路C120はイネーブル(有効化)され,不揮発性メモリC100は電気的にプログラム可能となる。
【0093】
独自情報の記録方法
図4は実質的に消去不可能な方法で不揮発性メモリを構成するデバイスを含む回路の動作方法を示す工程系統図を示す。
方法400はセキュアプロセッサ110の組み立ての際に,回路300に関し実行される。方法400は連続して記載されるが,フローポイントおよび手順は各々の要素によって連結または並行して,非同期的にまたは同期的に,またはパイプライン式に実行可能である。方法400は特に記載のない場合,本明細書にあるフローポイントや手順の順序に従って実行される必要性はない。
フローポイント410では,セキュアプロセッサ110の不揮発性メモリC100はプログラムされる準備ができている。ある実施形態では,この方法によってこの特定のセキュアプロセッサ110に特有なセキュリティ情報が不揮発性メモリに記録される。
【0094】
手順411では,非接合ピンC130は選択された電圧(ロジック“0”)と連結され,それにより外部プログラムロジック回路C120はイネーブル(有効化)され,不揮発性メモリC100は電気的にプログラム可能となる。
【0095】
手順412では,不揮発性メモリC100に(最後のメモリ位置に配置された)初期プログラムイネーブル署名値が電気的にプログラムされ,それにより不揮発性メモリC100はさらにプログラムされる準備が整う。
手順413では,回路300が実装され,それにより非接合ピンC130は外部回路との連結が不可能となる。
手順414では,不揮発性メモリC100が電気的にプログラムされる。
この手順が実行される実施形態においては,セキュアプロセッサ110の固有のインスタンスに特有なセキュリティ情報113は,不揮発性メモリC100に記録される。その結果,セキュアプロセッサ110の固有のインスタンスが各インスタンスごとに唯一に識別可能になり,信頼できるサーバ130に対し自らを唯一に識別できる。
【0096】
手順415では,不揮発性メモリC100がプログラムイネーブル署名値を消去するためにさらに電気的にプログラムされる。プログラムイネーブル署名値が消去されると,ディセーブルロジック回路C110が不揮発性メモリC100はもはやプログラミング不可能であると判断し,外部プログラムロジック回路C120はディセーブル(不能)となる。この結果,不揮発性メモリC100は外部プログラミングピンからさらに電子的にプログラムされることが不可能となる。
【0097】
フローポイント420では,不揮発性メモリC100にはすでにプログラムイネーブル署名値が存在せず,ディセーブルロジック回路C110が,不揮発性メモリC100はもはやプログラミング不可能であると判断し,それにより外部プログラムロジック回路C120がディセーブルとなる。セキュアプロセッサ110が電源ONになると,不揮発性メモリC100の外部プログラミングピンからのさらなる電子的プログラミングは不可能となる。
【0098】
その他の実施形態
これ以降,好ましい実施形態を開示するが,他の多くの変形形態が本発明のコンセプト,範囲または均等範囲に含まれる。これらの変形形態は当業者が本出願を熟読すれば明白である。
・ 実行可能なコードまたはセキュアコードの全てが,セキュアプロセッサ110を統合するチップ上に存在する必要性はない。他の実施形態では,セキュアプロセッサ110はRAM 155,大容量ストレージA150,または他の外部デバイスにセキュアコードや実行可能なコードを有する。
・ セキュアプロセッサ110が単独の統合チップとして実行される必要はない。他の実施形態にてセキュアプロセッサ110は,暗号化された信号や,不法なのぞき見や改竄に対してセキュアな(安全化された)信号を利用して連結される,複数のデバイスを有する。
【0099】
・ 全てのセキュアコードが一度に読み込まれる必要はない。他の実施形態にてセキュアプロセッサ110は,それぞれ異なるタイミングで(例えば順々に,またはオンデマンドで)読み込み検証されたセキュアコードの複数のセグメントを有する。第1例としては,セキュアカーネルコードA120は,セキュアモードで動作中のCPU A100によって実行される命令へ読み込み統合される一以上の追加ソフトウェアモジュールの署名を含み得る。さらに第2例としては,セキュアカーネルコードA120が,一以上の読み込み追加ソフトウェアモジュールの署名を含み,その各々の追加ソフトウェア自体が一以上の読み込み追加ソフトウェアモジュールの署名を含むような場合が考えられる。
・ メモリおよび大容量ストレージアクセスのチェックは,選択されたイベントに応じて実行される。例えばそのような選択されたイベントには,暗号化/暗号解読サービス,入出力サービス,またはアプリケーションソフトウェアによるセキュア署名や検証サービスが含まれる。さらに,そのような選択されたイベントには大容量ストレージアクセスのメモリへの定期的な妨害(N番目のアクセス毎など,Nは選択値),定期的なタイマー割り込みなどが含まれる。
【0100】
・ 認証および検証チェックは,メモリおよび大容量ストレージアクセスのチェックと同様に,選択されたイベントに応じて実行される。例えばそのような選択されたイベントには暗号化/暗号解読サービス,入出力サービス,またはアプリケーションソフトウェアによるセキュア署名や検証サービスが含まれる。さらに,そのような選択されたイベントには大容量ストレージアクセスのメモリへの定期的な妨害(N番目のアクセス毎など,Nは選択値),定期的なタイマー割り込みなどが含まれる。
【0101】
・ セキュアカーネルコードA120は上記に加え,アプリケーションソフトウェアに追加セキュリティサービスを申し込むことができる。例えばそのような追加サービスは,サーバ(上記記載の,信頼できるサーバ130以外のサーバ)や,他のメッセージングパートナー(ピアツーピアプロトコル中や,アプリケーションソフトウェアがサーバの役割を持つプロトコル中の)からのメッセージの認証および検証,サーバ(上記記載の,信頼できるサーバ130以外のサーバ)や他のメッセージングパートナーと交換したメッセージの暗号化/暗号解読,サーバ(上記記載の,信頼できるサーバ130以外のサーバ)や他のメッセージングパートナーと交換したメッセージの公開鍵暗号システム,二番目に信頼できるサーバから読み込み実行するための追加ソフトウェアの認証および検証,DRMライセンス供与情報の管理,CPU A100による実行のために読み込んだソフトウェアの定期的な(または上記のように,選択したイベントに応じた)認証および検証,などを含む。
・ セキュアカーネルコードA120は上記に加えアプリケーションソフトウェアに対しセキュリティに関連しないサービスを申し込むことができる。例えばその追加サービスには,特定デバイスドライバ,またはアプリケーションソフトウェアが動作ライセンスを有する特定ハードウェアの動作などが上げられる。
【0102】
本発明の好ましい実施形態についての上記説明は,例示および説明の目的でなされたものであり,本発明を形態そのものに限定することを意図するものではない。
当業者には,多くの変更を行うことは明白であろう。実施形態は本発明の原理を最も良く説明するために選択及び説明したものであり,これにより当業者ならば,意図する特定用途に適した種々の実施形態及び種々の変更形態を理解できるであろう。本発明の範囲は,特許請求の範囲及びその均等範囲により定められるべきである。
【図面の簡単な説明】
【0103】
【図1】セキュアの実行が可能なセキュアプロセッサを含むシステムの構成図
【図2A】セキュアの実行が可能なセキュアプロセッサの動作方法の工程系統図
【図2B】セキュアの実行が可能なセキュアプロセッサの動作方法の工程系統図
【図3】実質的に消去不可能な方法で不揮発性メモリをプログラムするデバイスを含む回路の構成図
【図4】実質的に消去不可能な方法で不揮発性メモリをプログラムするデバイスを含む回路の動作方法を示す工程系統図
【符号の説明】
【0104】
100…システム
110…セキュアプロセッサ
111…モニタープロセッサ
112…セキュリティロジック
113…セキュリティ情報
114…内部バス
120…コミュニケーションリンク
130…コンテンツ発信元または信頼するサーバ
140…アプリケーションデバイス
141…入力
142…出力
143…アプリケーションソフトウェア
A100…CPU
A103…CPU/メモリアクセス記録
A105…セキュアモード切替回路
A110…タイマー
A115…ブートコード(セキュアブートコード)
A120…カーネルコード
A125…リードオンリー・セキュアコード及びデータ
A130…リード/ライト揮発性セキュア状況値
A131…リード/ライトセキュアコード及びデータ
A133…アクセスコントロール回路
A135…大容量ストレージインターフェイス
A140…メモリインターフェイス
A145…アプリケーション固有回路
A150…大容量ストレージデバイス
A155…外部RAM
A160…セキュリティ信号
A163…アクセスコントロール信号
A165…NMI(マスク不可能な割り込み)信号
A170…リセット信号
B101…キー識別セキュリティカーネルソフトウェア署名
200…実行方法
210…電源ONの準備
211…電源ON
212…リセット信号
213…セキュアモードアクティブ信号をTRUEにセット
214…CPUがブートコードへジャンプ
215…ブートローダーを実行
216…セキュリティ機能を読み込み及び認証
217…セキュリティ機能を実行
218…アプリケーションを認証及び起動
219…セキュアモードを終了
221…リクエストを提示
222…リクエストがセキュアモードロジックに記録される
223…セキュアモードアクティブ信号をTRUEにセット
224…NMIをCPUへ
225…あらかじめ搭載されたセキュアカーネルへCPUがジャンプ
226…セキュアカーネルがサービスを実行
227…共有メモリに結果を保存
228…セキュアモードロジックを通ってセキュアモードを終了,セキュアモードアクティブ信号をFALSEにセット
230…実行方法
231…タイマーがOFFへ
232…セキュアモードロジックに記録
233…セキュアモードアクティブをTRUEにセット
234…NMIをCPUへ
235…セキュアコードを実行
236…セキュアコードを終了
240…メモリアクセスをいつでも記録するよう準備
241…リード/ライトRAM
242…アドレスをバスとロジックへ連結
243…アクセスを容認?
244…アクセスを記録
250…セキュアモードへ入る流れの図
251…セキュアモードへリクエストを入力(リセット/アプリケーション/セキュアタイマー)
252…セキュアモードロジックがセキュアモードアクティブ信号をいつでも行使するよう準備
253…NMIをCPUへ発信
254…CPUがNMIハンドラの最初の指示を読む
255…セキュアモードロジックがセキュアモードアクティブ信号を行使
256…CPUがNMIハンドラ部を実行
300…回路
340…外部プログラミングピン
C100…フラッシュメモリ
C110…ディセーブル(不可能)ロジック
C120…外部プログラムロジック
C130…非接合ピン
400…方法
410…NV(不揮発性)/RAMをいつでもプログラムするよう準備
411…非接合ピンを電圧へ連結
412…NV(不揮発性)/ROMをデフォルト値でプログラムする
413…回路をまとめる
414…NV(不揮発性)/ROMを独自データでプログラムする
415…デフォルト値を消去
420…NV(不揮発性)/ROMはプログラム不可能に

【特許請求の範囲】
【請求項1】
アプリケーションソフトウェアをプロセッシングユニットによって実行する方法であって,以下の手順を含む:
前記プロセッシングユニットが前記アプリケーションソフトウェアを実行する権限を与えられていることを検証すること;
前記プロセッシングユニットのモニターモードとセキュアモードとを区別すること;
さらに
前記モニターモードでの前記プロセッシングユニットは,前記アプリケーションソフトウェアを前記アプリケーションソフトウェアに対し透過的に実行可能であり,
前記セキュアモードでの前記プロセッシングユニットは,前記プロセッシングユニットが前記アプリケーションソフトウェアを実行する権限を与えられていることを検証すること。
【請求項2】
一般のプロセッサの半導体ダイによって実行可能であっても前記セキュアモードには反応しない命令を,前記モニターモードにおける前記プロセッシングユニットの一部分によって実質的に同様に実行する手順を含む,請求項1記載の方法。
【請求項3】
前記アプリケーションソフトウェアから要求され,前記アプリケーションソフトウェアが実行する権限を与えられた特別なサービスを,前記プロセッシングユニットによって実行する手順を含む,請求項1記載の方法。
【請求項4】
複数の技術の少なくとも一つに応じて,前記モニターモードに割り込み前記セキュアモードへ入る;そして
前記セキュアモードのときは,どの技術によって前記セキュアモードへ入ったかを判断する手順を含む,請求項1記載の方法。
【請求項5】
割り込み,リセット信号,またはタイマーの少なくとも一つに応じて,前記モニターモードへ割り込み,セキュアモードへ入る手順を含む,請求項1記載の方法。
【請求項6】
前記セキュアモードにおいて前記セキュアモードを終了し,前記モニターモードにて前記アプリケーションソフトウェアを実行する手順を含む,請求項1記載の方法。
【請求項7】
前記アプリケーションソフトウェアのオリジナルコードを実質的に変更せずに前記アプリケーションソフトウェアを実行し,それにより前記アプリケーションソフトウェアが一般的なプロセッサと実質的に変わらないプロセッサ環境を得る手順を含む,請求項6記載の方法。
【請求項8】
前記セキュアプロセッサが監視するサービスを前記アプリケーションソフトウェアが必要とするとき,前記アプリケーションソフトウェアが割り込みを行うことで前記セキュアモードが再度作動し,アプリケーションソフトウェアへ前記サービスが送られ,前記セキュアモードが終了し,それによって前記アプリケーションソフトウェアがモニターモードにて実行を続けることが可能となる手順を含む,請求項6記載の方法。
【請求項9】
電源投入の際に前記セキュアモードにて命令を実行する手順を含む,請求項1記載の方法。
【請求項10】
前記電源投入に応じて,前記プロセッシングユニットを有するチップ内部にある持続性メモリに保存されたセキュアコードを実行する手順を含み,前記セキュアコードの実行手順が,
一以上の信頼できる発信元から追加コードを読み込むこと;
前記信頼できる発信元の信頼性を検証すること;
前記追加コードのコンテンツの安全性を検証すること;
を含む,請求項9記載の方法。
【請求項11】
前記電源投入に応じて,前記プロセッシングユニットを有するチップ内部にある持続性メモリに保存されたセキュアコードを実行する手順を含み,前記セキュアコードの実行手順が,
一以上の信頼できる発信元から追加コードを読み込むこと;
前記信頼できる発信元の信頼性を検証すること;
前記追加コードのコンテンツの安全性を検証すること;
を含み,そして,
信頼性とコンテンツの安全性を検証する前記手順が,前記チップ内部にある前記持続性メモリに応えて実行される,請求項9記載の方法。
【請求項12】
前記電源投入に応じて,前記プロセッシングユニットを有するチップ内部にある持続性メモリに保存されたセキュアコードを実行する手順を含み,前記セキュアコードの実行手順が,
一以上の信頼できる発信元から追加コードを読み込むこと;
前記信頼できる発信元の信頼性を検証すること;
前記追加コードのコンテンツの安全性を検証すること;
を含み,そして,
信頼性とコンテンツの安全性を検証する前記手順が,前記チップ内部にある前記持続性メモリに応えて実行される,さらに
前記チップ内部にある持続性メモリが:暗号化キー,セキュアハッシュ値,または前記信頼できる発信元の検証や前記追加コードの認証のための他のデータ,の少なくとも一つを有する,請求項9記載の方法。
【請求項13】
前記アプリケーションソフトウェアが,前記セキュアモードにて実行されるための命令を少なくとも一つ有する,請求項1記載の方法。
【請求項14】
前記セキュアモードにおける実行のための少なくとも一つの前記命令が,セキュアカーネルコード一式の代わりに前記プロセッシングユニットによって実行可能な追加機能を含む,請求項13記載の方法。
【請求項15】
前記セキュアモードにおける実行のための少なくとも一つの前記命令が,セキュアカーネルコード一式の代わりに前記プロセッシングユニットによって実行可能な追加機能を含み,前記追加機能が追加セキュアカーネルコードの認証を含む,請求項13記載の方法。
【請求項16】
前記検証の手順がセキュアソフトウェア一式の実行を含み,前記セキュアソフトウェア一式が,前記プロセッシングユニットが追加セキュアソフトウェア一式のセキュアモードでの実行のための認証を受けているか否かの判断を含む,請求項1記載の方法。
【請求項17】
前記追加セキュアソフトウェア一式が,
追加セキュアソフトウェアの読み込みのための少なくとも一つの機能と,
前記プロセッシングユニットが前記追加セキュアソフトウェアを実行するために認証されていることを検証するための少なくとも一つの機能を有する,請求項16記載の方法。
【請求項18】
前記追加セキュアソフトウェア一式が,
アプリケーションソフトウェアの読み込みのための少なくとも一つの機能と,
前記プロセッシングユニットが前記アプリケーションソフトウェアを実行するために認証されていることを検証するための少なくとも一つの機能を有する,請求項16記載の方法。
【請求項19】
プロセッシングユニットによって命令を実行する方法であって,
前記プロセッシングユニットが少なくともセキュアモードとモニターモードとを示すセキュリティ信号を含むこと;
前記プロセッシングユニットが,前記セキュリティ信号がセキュアモードを示すとき,前記セキュリティ信号に応じて少なくとも一つのセキュア機能にアクセスし,前記セキュリティ信号がモニターモードを示すとき,前記セキュリティ信号に応じて前記セキュア機能へのアクセスを拒否すること;の手順を含み,
外部発信元および前記外部発信元の信頼性が前記プロセッシングユニットによって検証可能であるということを条件に,前記セキュア機能が外部命令を記録する手順を含む方法。
【請求項20】
前記セキュリティ信号が前記セキュアモードを示すときのみ,前記プロセッシングユニットが前記プロセッシングユニットに連結された少なくとも一つのセキュア回路へアクセスを許可される手順を含む,請求項19記載の方法。
【請求項21】
前記プロセッシングユニットへ連結されたメモリまたは大容量ストレージに保存されたアプリケーションコード一式を実行し,前記セキュリティ信号に反応しない実質的に同一な非セキュアプロセッシングユニットにて実行される前記アプリケーションコードを実質的に変更せずに前記実行手順が完了する手順を含む,請求項19記載の方法。
【請求項22】
前記プロセッシングユニットに連結されたメモリまたは大容量ストレージに保存されたアプリケーションコード一式を,前記プロセッシングユニットが前記モニターモードにて動作されているときに,前記プロセッシングユニットによって実行する手順を含む,請求項19記載の方法。
【請求項23】
前記一セキュア機能が,前記外部発信元からの前記外部命令を受け取り,前記外部命令が実質的に正確であると検証する手順を含む,請求項19記載の方法。
【請求項24】
前記プロセッサユニットによる外部デバイスへのアクセスを監視する手順と;
前記の監視手順が前記セキュリティ信号およびアクセスルール一式に反応し,前記プロセッシングユニットが前記アクセスルールを侵害して前記外部デバイスにアクセスしようとする時,その動作に応じて少なくとも一つのセキュア機能を実行する手順を含む,請求項19記載の方法。
【請求項25】
前記プロセッシングユニットより要求されたアクセス数;
前記プロセッシングユニットが実行する命令数;
前記セキュアモードにて動作している前記プロセッシングユニットによって設定されたパラメータ;
前記プロセッシングユニットが動作している間のインターバル;
の少なくとも一つに応じて,前記の監視手順が前記プロセッシングユニットのアクセスに反応する,請求項24記載の方法。
【請求項26】
前記プロセッシングユニットによるリードオンリーアクセスのためのセキュア情報一式を保存する順序を含む,請求項19記載の方法。
【請求項27】
前記の保存手順が不揮発性メモリから前記セキュア情報一式を読み込む手順を含む,請求項26記載の方法。
【請求項28】
前記の保存手順が,不揮発性メモリから前記セキュア情報一式を読み込む手順と,前記セキュアプロセッサの実装時に前記不揮発性メモリへの書き込みを不可能とする手順を含む,請求項26記載の方法。
【請求項29】
前記の保存手順が,不揮発性メモリから前記セキュア情報一式を読み込む手順と,前記セキュアプロセッサの実装時に前記不揮発性メモリの書き込みを不可能とする手順を含み,さらに前記不可能とする手順が非接合ピンを実質的にアクセス不能にする手順を含む,請求項26記載の方法。
【請求項30】
前記の保存手順が不揮発性メモリから前記セキュア情報一式を読み込む手順を含み,前記セキュア情報一式が前記セキュアプロセッサ特有である,請求項26記載の方法。
【請求項31】
前記一つのセキュア機能が,
前記外部発信元からの前記外部命令を受けること;
前記外部命令に応じたデータを生成すること;
前記外部命令に応じたデータと少なくともいくつかの前記セキュア情報とを比較し,それにより前記プロセッシングユニットは前記外部命令が正確であることを検証可能となること;
の手順を含む,請求項19記載の方法。
【請求項32】
前記の生成手順が,前記外部命令に応じて算出された署名値を決定し,
前記の比較手順が,前記算出署名値と前記セキュア情報に記録されている署名値との一致を試みる,請求項31記載の方法。
【請求項33】
前記外部命令を受ける手順が,
前記外部命令を集合的に含むメッセージ一式を受けること;
前記外部命令を集合的に含む記憶媒体一式を受けること,の少なくともどちらかを含む,請求項31記載の方法。
【請求項34】
前記一つのセキュア機能が,
前記外部発信元からの前記外部命令を要求すること;
前記外部命令へ前記セキュア情報に応じたデータを送り,それによって前記外部発信元は,前記プロセッシングユニットが前記外部命令を実行する権限を有することを検証可能になること;
前記外部発信元からの前記外部命令を受けること;
の手順を含む,請求項19記載の方法。
【請求項35】
前記外部命令が,アプリケーションソフトウェアまたは追加セキュアコードの少なくともどちらかを含む,請求項34記載の方法。
【請求項36】
セキュアモードとモニターモードとを有するプロセッサにて命令を実行する方法であって,
前記プロセッサがセキュアモードにて実行するとき,前記プロセッサがモニターモードにて実行するときにはアクセスを持たないセキュア機能の少なくとも一つにアクセスすること;
前記プロセッサが,起動状態または割り込み状態のどちらかの間に前記セキュアモードにて実行するが,前記割り込み状態はマスク不可能な割り込み(NMI)とタイマー割り込みのどちらにも反応すること;
前記プロセッサがセキュアモードに入るとき,前記プロセッサはコントロールをセキュアコード一式へと移動させるが,前記セキュアコードは前記プロセッサがモニターモードにて実行するときは変更不可能であること;
前記起動状態に関する前記セキュアコード一式が,前記プロセッサによって実行可能な命令を含み,前記外部命令の外部発信元および前記外部発信元の信頼性がセキュア情報一式に応じて前記プロセッサによって検証可能であるということを条件に,セキュアコードへ外部命令を追加するよう前記プロセッサに対し命令すること;
の手順を含む方法。
【請求項37】
アプリケーションソフトウェアの実行が可能なプロセッシングユニットを含む装置であって,
前記プロセッシングユニットが前記アプリケーションソフトウェアを実行する権限を有することを検証可能であり;
前記プロセッシングユニットはモニターモードとセキュアモードを有し,モニターモードにおいて前記プロセッシングユニットは,前記アプリケーションソフトウェアを前記アプリケーションソフトウェアに対し透過的に実行可能であり,前記セキュアモードにおいて前記プロセッシングユニットは,前記プロセッシングユニットが前記アプリケーションソフトウェアを実行する権限を有することを検証可能である装置。
【請求項38】
前記モニターモードにおいて命令の実行が可能な前記プロセッシングユニットの一部分が,前記セキュアモードには反応しない一般のプロセッサの半導体ダイと実質的に同一である,請求項37記載の装置。
【請求項39】
前記セキュアモードにおける前記プロセッシングユニットが,前記アプリケーションソフトウェアから要求され承認されたいかなるサービスも実行可能である,請求項37記載の装置。
【請求項40】
前記プロセッシングユニットが複数の技術の少なくとも一つに応えて,前記モニターモードに割り込み前記セキュアモードに入ることが可能であり,前記セキュアモードではどの技術によって前記セキュアモードへ入ったかを判断できる,請求項37記載の装置。
【請求項41】
前記プロセッシングユニットが,前記モニターモードに割り込みが可能であり,割り込み,リセット信号,タイマーの少なくとも一つに応じて前記セキュアモードに入ることが可能な,請求項37記載の装置。
【請求項42】
前記プロセッシングユニットが,前記セキュアモードにおいて前記セキュアモードを終了し,前記モニターモードにおいて前記アプリケーションソフトウェアの実行が可能な,請求項37記載の装置。
【請求項43】
前記アプリケーションソフトウェアが該アプリケーションソフトウェアのオリジナルコードを実質的に変更せずに実行され,それにより該アプリケーションソフトウェアが一般プロセッサと実質的に変わりないプロセッサ環境を得る,請求項42記載の装置。
【請求項44】
前記アプリケーションソフトウェアが前記セキュアプロセッサが監視するサービスを必要とするとき,前記アプリケーションソフトウェアが割り込みを行うことで前記セキュアモードが再度作動し,前記サービスは前記アプリケーションソフトウェアへ送られ,前記セキュアモードは終了し,それによって前記アプリケーションソフトウェアは前記モニターモードにて実行を続けることが可能となる,請求項42記載の装置。
【請求項45】
前記アプリケーションソフトウェアが前記セキュアモードでの実行のための少なくとも一つの命令を含む,請求項37記載の装置
【請求項46】
前記セキュアモードでの実行のための少なくとも一つの前記命令が,セキュアカーネルコード一式の代わりに前記プロセッシングユニットにて実行可能な追加機能を含む,請求項45記載の装置。
【請求項47】
前記セキュアモードでの実行のための少なくとも一つの前記命令が,セキュアカーネルコード一式の代わりに前記プロセッシングユニットにて実行可能な追加機能を含み,前記追加機能が追加セキュアカーネルコードの認証を含む,請求項45記載の装置。
【請求項48】
前記プロセッシングユニットがセキュアソフトウェアの実行が可能であり,前記セキュアソフトウェアが,追加ソフトウェアの前記セキュアモードでの実行を認証するための少なくとも一つの機能を含む事を特徴とする,請求項37記載の装置。
【請求項49】
前記セキュアソフトウェアが,
追加セキュアソフトウェアの読み込みのための少なくとも一つの機能と,
前記プロセッシングユニットが前記追加セキュアソフトウェアを実行する権限を有することを検証するための少なくとも一つの機能を含む,請求項48記載の装置。
【請求項50】
前記セキュアソフトウェアが,
アプリケーションソフトウェアの読み込みのための少なくとも一つの機能と,
前記プロセッシングユニットが前記アプリケーションソフトウェアを実行する権限を有することを検証するための少なくとも一つの機能を含む,請求項48記載の装置。
【請求項51】
前記プロセッシングユニットが電源投入の際に前記セキュアモードにて命令を実行する,請求項37記載の装置。
【請求項52】
前記プロセッシングユニットが,前記電源投入に応じて,前記プロセッシングユニットを有するチップ内部にある持続性メモリに保存されたセキュアコードを実行し,前記セキュアコードが前記プロセッシングユニットに対し
一以上の信頼できる発信元から追加コードを読み込むこと;
前記信頼できる発信元の信頼性を検証すること;
前記追加コードのコンテンツの安全性を検証すること;
を実行するよう指示する命令を含む,請求項51記載の装置。
【請求項53】
前記プロセッシングユニットが,前記電源投入に応じて,前記プロセッシングユニットを有するチップ内部にある持続性メモリで保存されたセキュアコードを実行し,前記セキュアコードが前記プロセッシングユニットに対し
一以上の信頼できる発信元から追加コードを読み込むこと;
前記信頼できる発信元の信頼性を検証すること;
前記追加コードのコンテンツの安全性を検証すること;
を実行するよう指示する命令を含み,
前記信頼性とコンテンツの安全性の検証手順が前記チップ内部の前記持続性メモリに応じて実行される,請求項51記載の装置。
【請求項54】
前記プロセッシングユニットが,前記電源投入に応じて,前記プロセッシングユニットを有するチップ内部にある持続性メモリに保存されたセキュアコードを実行し,前記セキュアコードが前記プロセッシングユニットに対し
一以上の信頼できる発信元から追加コードを読み込むこと;
前記信頼できる発信元の信頼性を検証すること;
前記追加コードのコンテンツの安全性を検証すること;
を実行するよう指示する命令を含み,
前記信頼性とコンテンツの安全性の検証手順が前記チップ内部の前記持続性メモリに応じて実行され,
前記チップ内部の前記持続性メモリが:暗号化キー,セキュアハッシュ値,または前記信頼できる発信元の検証や前記追加コードの認証のための他のデータ,の少なくとも一つを有する,請求項51記載の装置。
【請求項55】
命令の実行が可能なプロセッシングユニット;と
少なくともセキュアモードおよびモニターモードを示すセキュリティ信号を含む装置であって;
前記プロセッシングユニットが前記セキュリティ信号に反応し,さらに前記プロセッシングユニットが,前記モニターモードで命令を実行している時にはアクセスを有しない少なくとも一つのセキュア機能に,前記セキュアモードにて命令を実行している時にアクセスし;
外部発信元および前記外部発信元の信頼性が前記プロセッシングユニットによって検証可能であるということを条件に,少なくとも一つの前記セキュア機能が外部命令を追加するよう前記プロセッシングユニットに対し指示する命令を含む。
【請求項56】
前記セキュリティ信号に反応し,前記プロセッシングユニットに連結された少なくとも一つのセキュア回路に連結されたセキュリティ要素を含み,前記セキュリティ要素が,前記セキュリティ信号が前記セキュアモードを示す時のみ前記プロセッシングユニットの前記セキュア回路へのアクセスを許可する,請求項55記載の装置。
【請求項57】
前記プロセッシングユニットに連結され,メモリまたは大容量ストレージに保存されたアプリケーションコード一式を含み,
それにより前記プロセッシングユニットがモニターモードで前記アプリケーションコードを実施する,請求項55記載の装置。
【請求項58】
前記プロセッシングユニットに連結され,メモリまたは大容量ストレージに保存されたアプリケーションコード一式を含み,前記アプリケーションコードが,前記セキュリティ信号に反応しない実質的に同一な非セキュアプロセッシングユニットにて実行可能であり,
それによって前記プロセッシングユニットが,前記セキュアモードを示している前記セキュリティ信号に応じて,実質的な変更なしに前記アプリケーションコードの実行が可能となる,請求項55記載の装置。
【請求項59】
前記一つのセキュア機能が,
前記外部発信元から前記外部命令を受けること;
前記外部命令が正確であることを検証すること;
の実行を前記プロセッシングユニットに対し指示する命令を含む,請求項55記載の装置。
【請求項60】
前記プロセッシングユニットに連結されたモニター回路を含み,前記モニター回路が,前記プロセッシングユニットによる外部デバイスへのアクセスをモニターすることが可能であり;
前記モニター回路が,前記セキュリティ信号とアクセスルール一式に対し反応し,前記プロセッシングユニットが前記アクセスルールの侵害となる外部デバイスへのアクセスを試みるとき,前記モニター回路が前記アクセスに応じて少なくとも一つのセキュア機能を実行することが可能である,請求項55記載の装置。
【請求項61】
前記プロセッシングユニットによって要求されたアクセス数;
前記プロセッシングユニットが実行する命令数;
前記セキュアモードにて動作中の前記プロセッシングユニットによって設定されたパラメータ;
前記プロセッシングユニットが動作している間のインターバル;
の少なくとも一つに応じて,前記モニター回路が前記プロセッシングユニットによるアクセスに反応する,請求項60記載の装置。
【請求項62】
前記プロセッシングユニットによるリードオンリーアクセスのためのセキュア情報一式を含む,請求項55記載の装置。
【請求項63】
前記セキュア情報一式が不揮発性メモリに保存された情報を含む,請求項62記載の装置。
【請求項64】
前記セキュア情報一式が,不揮発性メモリに保存され,前記セキュアプロセッサに特有な情報を含む,請求項62記載の装置。
【請求項65】
前記セキュア情報一式が不揮発性メモリに保存された情報を含み,前記不揮発性メモリが前記不揮発性メモリへの書き込みを可能にする回路を含み,前記回路が前記セキュアプロセッサの実装時には無効である,請求項62記載の装置。
【請求項66】
前記セキュア情報一式が不揮発性メモリに保存された情報を含み,前記不揮発性メモリが前記不揮発性メモリへの書き込みを可能にする回路を含み,前記回路が前記セキュアプロセッサの実装時には実質的にアクセス不可能であるピンを有する,請求項62記載の装置。
【請求項67】
前記セキュア情報一式が前記チップに実質的に特有な自己認識値または個人キー情報一式を含み,それにより前記チップが,選択されたコンテンツ一式またはソフトウェアを前記コンテンツの消費および前記ソフトウェアの実行の認証を受けているときに前記チップのみによって実行可能であることを確実にすることが可能な,請求項66記載の装置。
【請求項68】
前記チップが購入領収書,ライセンス,またはその他のデジタル著作権マネージメントデータの信頼性を検証可能であり,それにより選択されたコンテンツやソフトウェア一式が信頼に値する,前記チップに認証されたものであることを前記チップが検証可能となる,請求項67記載の装置
【請求項69】
前記セキュアチップが,購入領収書,ライセンス,またはその他のデジタル著作権マネージメントデータの信頼性を検証する動作に応じて,前記コンテンツの消費や前記ソフトウェアの実行を許可することが可能である,請求項68記載の装置。
【請求項70】
前記領収書が,
前記チップを実質的に識別するために十分な情報,および
前記コンテンツやソフトウェアに実質的に特有な自己認識値を実質的に識別するために十分な情報を含む,請求項68記載の装置。
【請求項71】
前記キー情報と前記実質的に特有な自己認識値とを組み合わせる手段を含み,それにより知的財産を施行するためのデジタル著作権マネージメント計画が実施される,請求項66記載の装置
【請求項72】
前記セキュア情報の少なくとも一部分が,公開キー/シークレット個人キーシステム,またはシンメトリック暗号化/暗号解読キーを利用してデジタル署名される,請求項66記載の装置。
【請求項73】
前記セキュアチップが,前記デジタル署名の検証に応じて,前記コンテンツの消費または前記ソフトウェアの実行を許可することが可能な,請求項72記載の装置。
【請求項74】
前記セキュア情報の少なくとも一部分が,公開キー/シークレット個人キーシステム,またはシンメトリック暗号化/暗号解読キーを利用して暗号化される,請求項66記載の装置。
【請求項75】
前記セキュアチップが,前記セキュア情報の前記一部分の暗号解読のための動作に応じて,前記コンテンツの消費および前記ソフトウェアの実行を許可することが可能な,請求項74記載の装置。
【請求項76】
前記一つのセキュア機能が,
前記外部発信元から前記外部命令を受けること;
前記外部命令に応じたデータを生成すること;
前記セキュア情報の少なくとも幾つかと,前記外部命令に応じた前記データとを比較し,それにより前記プロセッシングユニットが前記外部命令が正確であることを検証可能になること;
を前記プロセッシングユニットに対し実行するよう指示する命令を含む,請求項55記載の装置
【請求項77】
前記生成手順が,前記外部命令に応じて算出署名値を決定する手順を含み;
前記比較手順が,前記算出署名値を前記セキュア情報が有する記録済みの署名値に一致させることを試みる手順を含む,請求項76記載の装置。
【請求項78】
前記命令を受ける手順が,
前記外部命令を集合的に含むメッセージ一式を受けること;
前記外部命令を集合的に含む記憶媒体一式を受けること,の少なくともどちらかを含む,請求項76記載の装置。
【請求項79】
前記一つのセキュア機能が,
前記外部発信元からの前記外部命令を要求すること;
前記外部発信元へ前記セキュア情報に応じたデータを送り,それにより前記外部発信元は,前記プロセッシングユニットが前記外部命令の実行のための認証を受けていることを検証可能となること;
前記外部発信元から前記外部命令を受け取ること;
を前記プロセッシングユニットに対し実行するよう指示する命令を含む,請求項55記載の装置
【請求項80】
前記外部命令が,アプリケーションソフトウェアまたは追加セキュアコードの少なくともどちらかを含む,請求項79記載の装置。
【請求項81】
前記セキュリティ信号が,リセット状態にも割り込み状態にも反応し,前記割り込み状態が,マスク不可能な割り込みにもタイマー割り込みにも反応し;
前記セキュリティ信号に応じて,前記プロセッシングユニットがコントロールを前記セキュア機能へ移動し,前記セキュア機能が,前記プロセッシングユニットが前記モニターモードで命令を実行するときには変更不可能である,請求項55記載の装置。
【請求項82】
前記プロセッシングユニットが,前記セキュア機能に応じてコントロールを終了機能へ移動し,前記終了機能が,前記モニターモードにおける前記プロセッシングユニットによって,いかなるセキュア情報も使用から外すことが可能である,請求項81記載の装置。
【請求項83】
前記プロセッシングユニットが前記セキュア機能のためのパラメータを通過させることが可能であり,
それにより前記マスク不可能な割り込みに応じて,前記セキュア機能は少なくとも一つの前記セキュア機能をアプリケーションソフトウェアの命令通りに実行し,前記アプリケーションソフトウェアが前記モニターモードにおける前記プロセッシングユニットによって実行される,請求項81記載の装置。
【請求項84】
前記プロセッシングユニットが前記セキュア機能のためのパラメータを通過させることが可能であり,
それにより前記マスク不可能な割り込みに応じて,前記セキュア機能は少なくとも一つの前記セキュア機能をアプリケーションソフトウェアの命令通りに実行し,前記アプリケーションソフトウェアが前記モニターモードにおける前記プロセッシングユニットによって実行され,
前記セキュア機能が次の少なくとも一つの機能:暗号化認証機能,暗号化署名機能,暗号化セキュア機能,暗号化または暗号解読機能,暗号化キーまたは暗号解読キーを含む機能,セキュアハッシュ機能,を含む,請求項81記載の装置。
【請求項85】
コンピュータ機器によって解釈可能な命令を含むメモリまたは大容量ストレージであって,前記命令では:
プロセッシングユニットによってアプリケーションソフトウェアを実行する;
前記プロセッシングユニットが前記アプリケーションソフトウェアを実行する権限を有することを検証する;
前記プロセッシングユニットのモニターモードとセキュアモードとを区別し,前記モニターモードでは前記プロセッシングユニットは透過的にアプリケーションソフトウェアを実行可能であり,前記セキュアモードでは前記プロセッシングユニットは前記アプリケーションソフトウェアを実行する権限を有することを検証可能である。
【請求項86】
コンピュータ機器によって解釈可能な命令を含む,請求項85記載のメモリまたは大容量ストレージであって,前記命令では,
前記セキュアモードには反応しない一般のプロセッサの半導体ダイによって実行可能である命令と,実質的に同一な命令を,前記モニターモードにて前記プロセッシングユニットの一部分によって実行する。
【請求項87】
コンピュータ機器によって解釈可能な命令を含む,請求項85記載のメモリまたは大容量ストレージであって,前記命令では,
前記モニターモードにおける前記プロセッシングユニットが,前記アプリケーションソフトウェアによって要求され認証されたいかなるサービスも実行する。
【請求項88】
コンピュータ機器によって解釈可能な命令を含む,請求項85記載のメモリまたは大容量ストレージであって,前記命令では,
複数の技術の少なくとも一つに応じて前記モニターモードに割り込み,また前記セキュアモードへ入り;
前記セキュアモードにおいて,どの技術によって前記セキュアモード入ったかを判断する。
【請求項89】
コンピュータ機器によって解釈可能な命令を含む,請求項85記載のメモリまたは大容量ストレージであって,前記命令では,
割り込み,リセット信号,タイマーの少なくとも一つに応じて前記モニターモードへ割り込み,前記セキュアモードに入る。
【請求項90】
コンピュータ機器によって解釈可能な命令を含む,請求項85記載のメモリまたは大容量ストレージであって,
前記セキュアモードにおいて,前記セキュアモードを終了し前記モニターモードにおいて前記アプリケーションソフトウェアを実行する手順を含む。
【請求項91】
コンピュータ機器によって解釈可能な命令を含む,請求項90記載のメモリまたは大容量ストレージであって,前記命令では,
前記アプリケーションソフトウェアを,前記アプリケーションソフトウェアのオリジナルコードの実質的な変更なしに実行し,それによって該アプリケーションソフトウェアが一般のプロセッサとは実質的に異ならないプロセッサ環境を得る。
【請求項92】
コンピュータ機器によって解釈可能な命令を含む,請求項90記載のメモリまたは大容量ストレージであって,前記命令では,
前記アプリケーションソフトウェアが前記セキュアプロセッサが監視するサービスを必要とするとき,前記アプリケーションソフトウェアが割り込みを行うことで前記セキュアモードが再度作動し,アプリケーションソフトウェアへ前記サービスが送られ,前記セキュアモードが終了し,それによって前記アプリケーションソフトウェアがモニターモードにて実行を続行する。
【請求項93】
コンピュータ機器によって解釈可能な命令を含む,請求項85記載のメモリまたは大容量ストレージであって,前記命令では,
電源投入の際に前記セキュアモードにおいて命令を実行する。
【請求項94】
コンピュータ機器によって解釈可能な命令を含む,請求項93記載のメモリまたは大容量ストレージであって,前記命令では,
前記電源投入に応じて,前記プロセッシングユニットを有するチップ内部にある持続性メモリに保存されたセキュアコードを実行する。また前記セキュアコードの実行手順が,
一以上の信頼できる発信元から追加コードを読み込むこと;
前記信頼できる発信元の信頼性を検証すること;
前記追加コードのコンテンツの安全性を検証すること;を含む。
【請求項95】
コンピュータ機器によって解釈可能な命令を含む,請求項93記載のメモリまたは大容量ストレージであって,前記命令では,
前記電源投入に応じて,前記プロセッシングユニットを有するチップ内部にある持続性メモリに保存されたセキュアコードを実行する。また前記セキュアコードの実行手順が,
一以上の信頼できる発信元から追加コードを読み込むこと;
前記信頼できる発信元の信頼性を検証すること;
前記追加コードのコンテンツの安全性を検証すること;を含み,
さらに,信頼性とコンテンツの安全性を検証する前記手順が前記チップ内部にある前記持続性メモリに応えて実行される。
【請求項96】
コンピュータ機器によって解釈可能な命令を含む,請求項93記載のメモリまたは大容量ストレージであって,前記命令では,
前記電源投入に応じて,前記プロセッシングユニットを有するチップ内部にある持続性メモリに保存されたセキュアコードを実行する。また前記セキュアコードの実行手順が,
一以上の信頼できる発信元から追加コードを読み込むこと;
前記信頼できる発信元の信頼性を検証すること;
前記追加コードのコンテンツの安全性を検証すること;を含み,
さらに,信頼性とコンテンツの安全性を検証する前記手順が前記チップ内部にある前記持続性メモリに応えて実行され,
さらに,前記チップ内部にある持続性メモリが:暗号化キー,セキュアハッシュ値,または前記信頼できる発信元の検証や前記追加コードの認証のための他のデータ,の少なくとも一つを有する。
【請求項97】
前記アプリケーションソフトウェアが前記セキュアモードにおける実行のための少なくとも一つの命令を含む,請求項85記載のメモリまたは大容量ストレージ。
【請求項98】
前記セキュアモードにおける実行のための少なくとも一つの前記命令が,セキュアカーネルコード一式の代わりに前記プロセッシングユニットによって実行可能な追加機能を含む,請求項97記載のメモリまたは大容量ストレージ。
【請求項99】
前記セキュアモードにおける実行のための少なくとも一つの前記命令が,セキュアカーネルコード一式の代わりに前記プロセッシングユニットによって実行可能な追加機能を含み,前記追加機能が追加セキュアカーネルコードの認証を含む,請求項97記載のメモリまたは大容量ストレージ。
【請求項100】
コンピュータ機器によって解釈可能な命令を含むメモリまたは大容量ストレージであって,前記命令では,
プロセッシングユニットによって命令を実行する。前記プロセッシングユニットが少なくともセキュアモードとモニターモードとを示すセキュリティ信号を含む;
前記プロセッシングユニットが,前記セキュリティ信号がセキュアモードを示すとき,前記セキュリティ信号に応じて少なくとも一つのセキュア機能にアクセスし,前記セキュリティ信号がモニターモードを示すとき,前記セキュリティ信号に応じて前記セキュア機能へのアクセスを拒否する;
外部発信元および前記外部発信元の信頼性が前記プロセッシングユニットによって検証可能であるということを条件に,前記セキュア機能が外部命令を記録する。
【請求項101】
コンピュータ機器によって解釈可能な命令を含む,請求項100記載のメモリまたは大容量ストレージであって,前記命令では,
前記セキュリティ信号が前記セキュアモードを示めすときのみ,前記プロセッシングユニットに連結されたセキュア回路の少なくとも一つに前記プロセッシングユニットがアクセスを許可される。
【請求項102】
コンピュータ機器によって解釈可能な命令を含む,請求項100記載のメモリまたは大容量ストレージであって,前記命令では,
前記プロセッシングユニットへ連結されたメモリまたは大容量ストレージに保存されたアプリケーションコード一式を実行し,前記セキュリティ信号に反応しない実質的に同一な非セキュアプロセッシングユニットにて実行される前記アプリケーションコードを実質的に変更せずに前記の実行手順が完了される。
【請求項103】
コンピュータ機器によって解釈可能な命令を含む,請求項100記載のメモリまたは大容量ストレージであって,前記命令では,
前記プロセッシングユニットが前記モニターモードで動作するとき,前記プロセッシングユニットへ連結するメモリまたは大容量ストレージに保存されたアプリケーションコード一式を,前記プロセッシングユニットによって実行する。
【請求項104】
前記一つのセキュア機能が,
前記外部発信元からの前記外部命令を要求すること;
前記外部命令へ前記セキュア情報に応じたデータを送り,それによって前記外部発信元は前記プロセッシングユニットが前記外部命令を実行する権限を有することを検証可能になること;
前記外部発信元からの前記外部命令を受けること;
の手順を含む,請求項100記載のメモリまたは大容量ストレージ。
【請求項105】
コンピュータ機器によって解釈可能な命令を含む,請求項100記載のメモリまたは大容量ストレージであって,前記命令では,
前記プロセッサユニットによる外部デバイスへのアクセスを監視する;
前記の監視手順が前記セキュリティ信号およびアクセスルール一式に反応し,前記プロセッシングユニットが前記アクセスルールを侵害して前記外部デバイスにアクセスしようとする時,その動作に応じて少なくとも一つのセキュア機能を実行する。
【請求項106】
前記プロセッシングユニットより要求されたアクセス数;
前記プロセッシングユニットが実行する命令数;
前記セキュアモードにて動作している前記プロセッシングユニットによって設定されたパラメータ;
前記プロセッシングユニットが動作する間のインターバル;
の少なくとも一つに応じて,前記の監視手順が前記プロセッシングユニットのアクセスに反応する,請求項105記載のメモリまたは大容量ストレージ。
【請求項107】
コンピュータ機器によって解釈可能な命令を含む,請求項100記載のメモリまたは大容量ストレージであって,前記命令では,
前記プロセッシングユニットによるリードオンリーアクセスのためのセキュア情報一式を保存する。
【請求項108】
前記の保存手順が不揮発性メモリから前記セキュア情報一式を読み込む手順を含む,請求項107記載のメモリまたは大容量ストレージ。
【請求項109】
前記の保存手順が,不揮発性メモリから前記セキュア情報一式を読み込む手順と,前記セキュアプロセッサの実装時に前記不揮発性メモリへの書き込みを不可能とする手順を含む,請求項107記載のメモリまたは大容量ストレージ。
【請求項110】
前記の保存手順が,不揮発性メモリから前記セキュア情報一式を読み込む手順と,前記セキュアプロセッサの実装時に前記不揮発性メモリへの書き込みを不可能とする手順を含み,さらに前記不可能とする手順が非接合ピンを実質的にアクセス不能にする手順を含む,請求項107記載のメモリまたは大容量ストレージ。
【請求項111】
前記の保存手順が不揮発性メモリから前記セキュア情報一式を読み込む手順を含み,前記セキュア情報一式が前記セキュアプロセッサ特有である,請求項107記載のメモリまたは大容量ストレージ。
【請求項112】
前記一つのセキュア機能が,
前記外部発信元からの前記外部命令を受けること;
前記外部命令に応じたデータを生成すること;
前記外部命令に応じたデータと少なくともいくつかの前記セキュア情報とを比較し,それにより前記プロセッシングユニットは前記外部命令が正確であることを検証可能となること;
の手順を含む,請求項100記載のメモリまたは大容量ストレージ。
【請求項113】
前記の生成手順が,前記外部命令に応じて算出された署名値を決定し,
前記の比較手順が,前記算出署名値と前記セキュア情報に記録されている署名値との一致を試みる,請求項112記載のメモリまたは大容量ストレージ。
【請求項114】
前記外部命令を受ける手順が,
前記外部命令を集合的に含むメッセージ一式を受けること;
前記外部命令を集合的に含む記憶媒体一式を受けること,の少なくともどちらかを含む,請求項112記載のメモリまたは大容量ストレージ。
【請求項115】
コンピュータ機器によって解釈可能な命令を含む,メモリまたは大容量ストレージであって,前記命令では:
セキュアモードとモニターモードとを有するプロセッサにて命令を実行する;
前記プロセッサがセキュアモードにて実行するとき,前記プロセッサがモニターモードにて実行するときにはアクセスを持たないセキュア機能の少なくとも一つにアクセスする;
前記プロセッサが,起動状態または割り込み状態のどちらかの間に前記セキュアモードにて実行し,前記割り込み状態はマスク不可能な割り込み(NMI)とタイマー割り込みのどちらにも反応する;
前記プロセッサがセキュアモードに入るとき,前記プロセッサはコントロールをセキュアコード一式へと移動させ,前記セキュアコードは前記プロセッサがモニターモードにて実行するときは変更不可能である;
前記起動状態に関する前記セキュアコード一式が,前記プロセッサによって実行可能な命令を含み,前記外部命令の外部発信元およびセキュア情報一式に応じて前記プロセッサによって検証可能な前記外部発信元の信頼性に応えて,セキュアコードへ外部命令を追加するよう前記プロセッサに対し命令する。

【図1】
image rotate

image rotate

image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2007−524883(P2007−524883A)
【公表日】平成19年8月30日(2007.8.30)
【国際特許分類】
【出願番号】特願2006−503366(P2006−503366)
【出願日】平成16年2月6日(2004.2.6)
【国際出願番号】PCT/US2004/003413
【国際公開番号】WO2004/072787
【国際公開日】平成16年8月26日(2004.8.26)
【出願人】(505286718)ブロードオン コミュニケーションズ コーポレーション (8)
【氏名又は名称原語表記】BroadOn Communications Corp.
【住所又は居所原語表記】3400 Hillview Avenue,Building5,Palo Alto,California 94304 US
【Fターム(参考)】