(57)【要約】【課題】コードまたはデータあるいはその両方の認証と、保護された実行環境を提供すること。【解決手段】本発明は、コードまたはデータの認証のために、ローカル記憶域を動的に区分し、かつ区分解除することを提供する。ローカル記憶域は、隔離部と非隔離部に区分される。コードまたはデータは隔離部にロードされる。このコードまたはデータは、ローカル記憶域の隔離部中で認証される。認証後、このコードが実行される。実行後、付加プロセッサ・ユニットの隔離された領域内のメモリが消去され、付加プロセッサ・ユニットはローカル記憶域内の隔離部を区分解除する。【選択図】図１
2005018770.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを安全にロードし、実行するための方法であって、
付加プロセッサ複合体（ＡＰＣ）を隔離状態に移行させるステップと、
ロード・イメージを前記隔離されたＡＰＣにロードするステップと、
前記隔離されたＡＰＣ中で前記ロード・イメージを認証するステップと、
前記ロード・イメージの認証に成功した場合、前記ロード・イメージを実行するステップと、
前記ロード・イメージをクリアするステップと、
前記ロード・イメージの実行が完了した後、前記ＡＰＣのプロセッサをクリアされた非隔離状態に戻すステップとを含む方法。
【請求項２】
前記ロードされたイメージの少なくとも一部分を暗号解除するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記ロード・イメージの認証に失敗した場合、隔離状態にある前記ＡＰＣのプロセッサを停止させるステップと、認証の失敗をＭＰＵに知らせるステップとをさらに含む、請求項１に記載の方法。
【請求項４】
前記ＡＰＵはローカル・メモリと付加プロセッサ（ＡＰＵ）とを備え、ローカル・メモリを一般の通信領域とＡＰＵによってのみアクセス可能な領域に区分することによって、隔離を実施するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記ＡＰＵ上のパーベイシブ（pervasive）・インターフェースまたはデバッグ・インターフェースあるいはその両方をディセーブルすることによって、隔離を実施するステップをさらに含む、請求項４に記載の方法。
【請求項６】
ローカル記憶域に動的に割り振られた区分内でコードまたはデータを認証するためのシステムであって、
隔離領域と非隔離領域に区分される前記ローカル記憶域と、
前記ローカル記憶域の前記隔離領域に前記コードまたはデータをロードするために使用可能であり、さらに前記ローカル記憶域のコンテンツを認証するために使用可能であるロードおよび終了状態マシーンと、
前記ローカル記憶域中で前記認証されたコードを実行するように構成され、前記ローカル記憶域に結合された付加プロセッサ（ＡＰＵ）とを備えるシステム。
【請求項７】
前記ＡＰＵが隔離されている、請求項６に記載のシステム。
【請求項８】
前記ＡＰＵが、ローカル記憶域隔離解除コマンドを発行するようにさらに構成される、請求項６に記載のシステム。
【請求項９】
前記ＡＰＵが、前記隔離された区分に対する消去コマンドを発行するようにさらに構成される、請求項６に記載のシステム。
【請求項１０】
前記ローカル記憶域に間接的に結合された主演算処理装置（ＭＰＵ）をさらに備える、請求項６に記載のシステム。
【請求項１１】
前記ＡＰＵが、前記ローカル記憶域の前記隔離された領域内にある標識（indicia）に前記ＭＰＵがアクセスすることを拒否するように構成される、請求項１０に記載のシステム。
【請求項１２】
コードまたはデータの認証のために、ローカル記憶域を動的に区分し、かつ区分解除するための方法であって、
前記ローカル記憶域を隔離部と非隔離部に区分するステップと、
コードまたはデータを前記隔離部にロードするステップと、
前記ローカル記憶域の前記隔離部中で前記コードまたはデータを認証するステップとを含む方法。
【請求項１３】
前記ローカル記憶域を区分する前記ステップがロード・コマンドによって開始される、請求項１２に記載の方法。
【請求項１４】
前記ロード・コマンドが主演算処理装置（ＭＰＵ）によって発行される、請求項１３に記載の方法。
【請求項１５】
前記ローカル記憶域の前記隔離部中で、認証されたコードまたはデータを実行するステップをさらに含む、請求項１２に記載の方法。
【請求項１６】
前記認証されたコードを実行する前記ステップの後、前記ローカル記憶域の前記隔離部中のコードまたはデータを消去するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記ローカル記憶域を区分解除して非隔離状態にするステップをさらに含む、請求項１６に記載の方法。
【請求項１８】
前記区分解除ステップが、終了コマンドの実行によって開始される、請求項１７に記載の方法。
【請求項１９】
マスタ・キーを使用して、前記ロードされたコードから少なくとも１つの暗号化された鍵を暗号解除するステップと、
前記少なくとも１つの暗号解除された鍵を用いて、追加のロードされたコードまたはデータを暗号解除するステップとをさらに含む、請求項１２に記載の方法。
【請求項２０】
コードまたはデータの認証のためにローカル記憶域を動的に区分するためのプロセッサであって、コンピュータ・プログラムを含み、前記コンピュータ・プログラムが、
付加プロセッサ・ユニット（ＡＰＵ）を隔離部と非隔離部に区分するためのコンピュータ・コードと、
コードまたはデータを前記隔離部にロードするためのコンピュータ・コードと、
前記隔離部中でコードまたはデータを認証するためのコンピュータ・コードとを備えるプロセッサ。
【請求項２１】
コンピュータ・システム中にあるコードまたはデータを認証するためにローカル記憶域を動的に区分するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラムが、
付加プロセッサ・ユニット（ＡＰＵ）を隔離部と非隔離部に区分するためのコンピュータ・コードと、
コードを前記隔離部にロードするためのコンピュータ・コードと、
前記隔離部中でコードを認証するためのコンピュータ・コードとを備えるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にチップ中のコードまたはデータあるいはその両方の認証に関し、より詳細には、付加プロセッサ・ユニット（attached processor unit）の隔離部（isolated section）内にあるコードまたはデータあるいはその両方の認証および保護に関する。
【背景技術】
【０００２】
今日のマイクロプロセッサでは、セキュリティ機能をサポートすることの重要性が増している。１つの主な理由は、プロセッサをネットワーク化することが増加しているからである。ネットワークとの通信はモニタすることができ、したがって信頼することができない。このセキュリティの欠如により、構成要素であるネットワーク化プロセッサ中で認証機能および暗号化機能を実施することが必要となり得る。
【０００３】
決済システムを使用可能にするなど、ビジネス目的にネットワーク化コンピュータを使用するには、データと、ネットワーク全体にわたって配布される場合は、コードとの認証および保護が必要である。一般に、認証は、コードまたはデータが改竄またはその他の形で改変されたかどうかに関する判定として定義される。ネットワーク化システム中のハードウェアおよびソフトウェアは知的所有権のあるもの（proprietary）でもよい。その場合は、オペレーティング・システム・イメージを呼出しまたは開始する前に、それを認証する機能のサポートが必要となる。知的所有権のないシステム上では、ユーザは自分が選択したどのようなソフトウェアでも走らせることができる。知的所有権のあるシステム上では、ソフトウェアはシステム構築者によって制御される。システムはオープン・ソースでもよいが、知的所有権のあるものである。
【０００４】
このネットワークはまた、無許可のアクセスまたは使用から保護すべきソフトウェア、オーディオ、およびビデオなどのコンテンツを配布するためにも使用できる。このネットワークはさらに、決済システムにも使用できる。これらの配布機能はすべて、コードまたはデータへの無許可のアクセスが行われないようにするセキュリティ構造をコンピュータ・システム中に提供することに依存している。
【０００５】
初期のオペレーティング・システム・イメージが改竄されていないことを保証するセキュリティ用ハードウェア構造を提供することができる。しかし、システムが開始した後では、セキュリティ構造の完全性は、オペレーティング・システムのセキュリティに依存している。しかし、オペレーティング・システムは安全ではないことがあり、最大で週に1度の割合でセキュリティの手直しが必要になるものもある。頻繁に発見されるこれらのセキュリティ上の欠陥は、許可されていない第３者がコードにアクセスするための絶好の機会となっている。
【０００６】
他の従来型システムは、ハードウェアに基づくセキュリティ機能を２つの方法のうちの一方で提供する。第１のものは、コンピュータ・システム中の独立したセキュリティ・チップであり、ＴＣＡ（商標）（trusted computing alliance）によって指定されるような、認証機能、暗号化機能、鍵管理機能を提供することができる。かかる独立したチップには、そのインターフェース・プロトコルをこれらのセキュリティ機能に限定できるという利点がある。こうすると、かかるチップにソフトウェア攻撃を仕掛けるのを非常に難しくすることができる。一方、このチップはマイクロプロセッサから独立しているので、インターフェースをモニタし、プロトコルを迂回するのが比較的容易である。したがって、例えばこのタイプの構造では、認証されたオペレーティング・システム・イメージが比較的容易に置き換えられるので、安全なブート機能を実施するための十分な保護を提供しない。
【０００７】
従来のセキュリティ・ハードウェアの別のタイプの実装形態は、プロセッサに一体化されたセキュリティ・ユニットを含むものであり、これは、例えばプロセッサの入出力（Ｉ／Ｏ）、またはメモリ・インターフェースに接続されてもよい。これらの一体化されたセキュリティ・デバイスはプロセッサ・チップに認証機能または暗号化機能あるいはその両方を提供する。かかる構成は、このプロセッサとこのようなユニットの間のインターフェースが容易にモニタされないという利点を有しており、したがって、独立したセキュリティ・チップよりも高度の保護を提供する。しかし、この構成のいくつかの欠点は、このユニットがプロセッサ・チップ上のかなりのシリコン面積を占有することがあり、通常はるかに高コストの技術によって実装されること、およびこのようなユニットは、妥当なコスト（面積）で実現しようとする場合、基本的な機能しか提供できないことである。言い換えると、このユニットは、一般にプログラム可能ではなく、提供できる一連のセキュリティ機能には限界がある。第３の限界は、オペレーティング・システムが汚染された場合、オンチップ・バス上の通信がモニタされるおそれのあることである。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、従来型のハードウェアに基づくセキュリティ構造の少なくともいくつかの欠点を克服する、ハードウェアに基づくセキュリティ構造が求められている。
【課題を解決するための手段】
【０００９】
本発明は、プロセッサに結合されたローカル記憶域をコードまたはデータの認証のために区分し、かつ区分解除することによって、プロセッサをセキュリティ機能向けに動的に構成することを提供する。このローカル記憶域は隔離部と非隔離部に区分される。コードまたはデータは隔離部にロードされる。コードまたはデータはこのローカル記憶域の隔離部で認証される。一態様では、このコードまたはデータはまた、暗号解除される。他の態様では、プロセッサ・インターフェースは、隔離状態ではディセーブルされる。
【００１０】
本発明および本発明の利点をより完全に理解するために、添付図面とともに以下の詳細な説明を次に参照する。
【発明を実施するための最良の形態】
【００１１】
以下の議論では、本発明の十分な理解を提供するために、多くの具体的細部について述べる。しかし、本発明は、かかる特定の細部がなくとも実施できることが当業者には理解されよう。他の例では、不必要な細部で本発明を不明確にしないために、周知の諸エレメントを概略図またはブロック図の形式で示してある。さらに、ほとんどの部分で、ネットワーク通信、電磁信号伝送技法などに関する細部は除外しているが、それは、かかる細部は、本発明を完全に理解するために必要であるとは考えられず、また当業者には理解できる範囲内にあると考えられるためである。
【００１２】
この説明の残りの部分では、処理装置（ＰＵ）は、ある装置中で演算処理用の単独のプロセッサであるとする。このような状況では、このＰＵは通常、ＭＰＵ（main processing unit主演算処理装置）と呼ばれる。この処理装置はまた、所与の計算装置用に開発されたいくつかの方法またはアルゴリズムに従って計算負荷を共用する多くの処理装置の１つでもよい。この説明の残りの部分では、プロセッサへのすべての参照で、ＭＰＵが装置中で単独の計算エレメントであろうと、ＭＰＵが他のＭＰＵとこの計算エレメントを共用していようと、別段の指示のない限り、ＭＰＵの用語を使用するものとする。
【００１３】
さらに、別段の指示のない限り、本明細書に述べるすべての機能は、ハードウェアもしくはソフトウェア、またはそれらのいくつかの組合せで実施されることに留意されたい。しかし、好ましい実施形態では、別段の指示のない限り、これらの諸機能は、コンピュータ・プログラム・コード、ソフトウェア、またはかかる機能を実施するようにコーディングされた集積回路あるいはそれらの組合せなどのコードに従って、コンピュータまたは電子データ・プロセッサなどのプロセッサによって実施される。
【００１４】
図１を参照すると、ローカル記憶域（ＬＳ）１１０を、隔離部１１２と非隔離（汎用アクセス）部１１１に区分することによってコードを認証するシステム１００が開示されている。ＬＳ１１０は、ＬＳバス１１５を介して付加プロセッサ・ユニット（ＡＰＵ）１２０に結合される。一般に、ＡＰＵは、主メモリまたはシステム・メモリ（図示せず）に代わって、ＬＳ１１０などのローカル・メモリにアクセスする処理デバイスである。ＡＰＵは通常、特定のコマンドおよびルーチンを走らせるように設計されており、これにより、処理速度および処理効率を高めることができる。
【００１５】
ＬＳ１１０はさらに、バス１３３を介してバス・インターフェース・ユニット（ＢＩＵ）１４０に結合される。一般に、ＢＩＵ１４０は、バス１２７を介してＬＳ１１０と（オンチップの）プロセッサ・バス１５０の間に結合された接続部として機能する。さらに、ＡＰＵ１２０は、ＢＩＵ１４０を使用してオンチップ・バス１５０から、コマンドもしくはデータを発行し、または受け取ることができる。ＭＰＵ１３０は、それ自体のバス・インターフェース・ユニット（図示せず）を用いて、バス１３５を介してオンチップのプロセッサ・バス１５０に結合される。
【００１６】
さらに、システム１００は、ロード／終了（load/exit）状態マシーン（ＬＥＳＭ）１４５を備える。このＬＥＳＭ１４５は、マスタ・キーを含む。ＬＥＳＭ１４５は、ロード状態マシーン・コマンド（ロード機能ともいう）実行中にマスタ・キーを利用する。システム１００では、ロード／終了状態マシーンはＢＩＵ１４０の一部分である。ＡＰＵ制御バス１３８は、ＬＥＳＭ１４５とＡＰＵ１２０の間に結合される。一般に、ＡＰＵ制御バス１３８は、ＬＥＳＭ１４５によりロードまたは終了コマンドを実行する際に、コマンドをＡＰＵ１２０に運ぶのに使用される。このバスはまた、ＡＰＵ１２０がＬＥＳＭ１４５に諸コマンド（終了コマンドなど）を発行するのに使用することができる。図１では、ＬＳ１１０、ＡＰＵ１２０、ＢＩＵ１４０の集合体およびそれらのそれぞれのバスは、一般に付加プロセッサ複合体（ＡＰＣ）１８０と称することができる。マスタ・キーは、別な方法でアクセスすることはできず、各システムに対して一意的なものにすることができる。
【００１７】
一般に、システム１００では、セキュア（secure）な処理は、ＬＳ１１０の隔離部１１２のメモリ区域内で行われる。隔離部１１２内部のメモリには、ＡＰＵ１２０だけからアドレス指定可能である。しかし、ＭＰＵ１３０は、汎用アクセス域１１１中のメモリにアクセスでき、その他にＡＰＵ１２０上の外部／内部デバッグ、検査、および診断用インターフェースなどのルーチンにアクセスできる。言い換えると、ＭＰＵ１３０は、隔離または非隔離状態にあるローカル記憶域中のメモリ位置にロード／記憶コマンドまたはＤＭＡコマンドを発行することができるが、隔離状態では、非隔離領域だけに限定される。ＡＰＣ１８０へのコマンドには、「ロード」および「終了」コマンド、ならびにＡＰＣ１８０の開始、停止を含む他の様々なコマンド、およびデバッグ用の様々なコマンドが含まれる。レジスタ・ファイルへのダイレクト・アクセス、外部デバッグおよび制御機能、または隔離状態で保護される、ＡＰＣ１８０の他の状態を提供するすべてのコマンドは、ＡＰＣが隔離状態にあるときはディセーブルされる。
【００１８】
隔離部１１２は、「ロード」コマンドによって呼び出され、「終了」コマンドによって解放される。「終了」コマンドが発行されたとき、ＬＳ１１０全体が、汎用アクセス・メモリ１１１になる。ロード・コマンドは通常ＭＰＵ１３０によって発行される。終了コマンドは、通常ＡＰＵ１２０によって発行されるが、特別な場合にはＭＰＵ１３０が発行する。ロード・コマンドは、ＬＳ１１０を汎用アクセス部１１１と隔離部１１２に区分する。ロード・コマンドはさらに、システム・メモリからローカル記憶域１１０の隔離領域１１２に、コードまたはデータ（ロード・イメージ）あるいはその両方を転送し、マスタ・キーを使用して、このコードおよびデータの認証または暗号解除あるいはその両方を行う。認証および暗号解除は、ＳＨＡ（secure hash algorithm）、ＤＥＳ（data encryption standard）、またはＲＳＡ（Rivest,Shamirand Adleman algorithm）などのアルゴリズムおよび機能によって実施することができるが、他の認証機能および暗号解除の機能およびアルゴリズムも本発明の範囲に含まれることが当業者には理解されよう。
【００１９】
アプリケーションのロードされたイメージが認証に成功した場合、ＬＥＳＭ１４５は、隔離された領域中にロードされたイメージ内にあるアドレスで、ＡＰＵ１２０の実行を開始する。終了コマンドは、ＬＳ１１０とＡＰＵ１２０内の状態情報とをクリアし、ＬＳ１１０を区分解除して汎用アクセス部１１１にする。
【００２０】
隔離部１１２は、隔離部１１２内の機密のデータおよびコードへのアクセスを、ＡＰＵ１２０から発行されたコマンドだけに限定する。一般に、隔離部１１２へと区分することにより、ＡＰＵ１２０以外の他の装置が、隔離部１１２内に記憶されたコードまたは情報を複製し、修正し、あるいはその他の形で破壊することが回避される。ＬＳ１１０中での処理は、そうでなければオペレーティング・システムによって汎用メモリ中で実施されることになる処理を回避する。さらに、ＬＳ１１０の隔離域１１２中で機密コードを処理することにより、システム１００を制御するオペレーティング・システムが汚染されていたとしても、システム１００の内部または外部にある他の装置によってそのコードが複製されまたは破壊される可能性が回避される。
【００２１】
ロード機能およびロード・コマンドにより、ロードされたコードの認証が成功したと判定された場合、次いでＬＳ１１０の隔離域中のコード・イメージが呼び出され実行される。次いで、このコード・イメージはさらに、暗号化、暗号解除、認証、オペレーティング・システムの検証（例えば、システムのブート時、またはハイバネーション状態からの復帰後に）、鍵管理などのセキュリティ機能をシステムに提供することができる。
【００２２】
一実施形態では、あるコード・セクションが隔離部１１２にロードされ、認証される。次いで、このコード・セクションまたは関連するデータ・セクションから鍵を抽出し、デコード／暗号解除するためにマスタ・キーが使用される。マスタ・キーは、次いで隔離部１１２内で消去され、ロードされたコードに制御が渡されて「ロード」機能を完了する。次いで、第２のアプリケーションを、数セグメントずつ、隔離部１１２中にロードすることができ、元のコード・セクションから暗号解除した暗号解除鍵を使用して認証することができる。言い換えると、ロード・コマンドは、ロードされたイメージ・セクションの暗号解除など鍵生成機構および鍵抽出機構を実装することによって、ロードされたアプリケーションの認証を提供する。すべての認証にマスタ・キーを使用するのではなく、アプリケーションの認証には暗号解除されたキーを用いることによって、このマスタ・キーをシステム内でほとんどさらさなくて済むようにすることができる。マスタ・キーに追加の保護レベルを提供することに加えて、このプロセスでは、ハードウェアではなくソフトウェアで第２のロード機能を実施しており、したがってセキュアなアプリケーションをロードするために使用する認証アルゴリズムまたは暗号解除アルゴリズムあるいはその両方に対して追加の柔軟性および性能を提供する。したがって、このセキュアなアプリケーションは、マスタ・キーを用いて暗号解除された暗号解除鍵を使用して検証および認証される。
【００２３】
コード・イメージが認証され、実行を終了した後、ＡＰＵ１２０は終了コマンドを発行する。終了機能は、終了コマンドによって呼び出されるが、ＬＳ１１０の隔離領域１１２を解放して汎用アクセス部１１１と連続するものとして使用することができる唯一の方法である。終了コマンドはまた、隔離状態を解放して汎用アクセス部１１１とする前に、隔離部１１２中のすべての情報を消去する。消去は、システム１００内の処理が、その他の停止、休止、または中止状態の場合でも行うことができる。後者の場合では、終了機能は通常、ＭＰＵ１３０によって呼び出される。
【００２４】
システム１００では、終了機能は、通常ＡＰＵ１１０によって呼び出される。しかし、呼び出された後、終了コマンドの様々なサブルーチンが自動的に実施される。言い換えると、隔離部１１２内のメモリのクリアは、終了コマンドが発行された後に自動的に行われ、ＡＰＵ１１０内のレジスタ・ファイルなども同様である。終了コマンドはまた、ＡＰＵ１２０が非隔離状態である場合も同様に呼び出すことができ、この場合、終了コマンドは、高速のＬＳ１１０初期化機能として働く。
【００２５】
一実施形態では、コードの検証および認証プロセスが満足すべきものであると見なされた場合、ロード機能は、ロードされたコード・イメージの実行を開始することによってそのオペレーションを完了する。しかし、その検証プロセスが不満足なものであると見なされた場合は、ＡＰＵ１２０は、ローカル記憶域１１０内で隔離部１１２を維持する。したがって、ＡＰＵ１２０は、再開できない（non-resumable）停止状態における隔離状態にある（図２の状態２５０）ものと見なされる。この時点で、次いでＭＰＵ１３０が、新しいロード要求または終了要求を発行することができる。
【００２６】
一実施形態では、システム１００のロード機能およびその他の属性を活動化するために、隔離イネーブル・ビット(isolate enable bit)を使用する。言い換えると、このビットが１にセットされた場合、ロード・コマンドを受け取る能力がイネーブルされる。この隔離イネーブル・ビットが０にセットされた場合、システム１００は、隔離領域１１２の作成を開始できない。しかし、終了機能は、不揮発性の隔離イネーブル・ビットの設定いかんにかかわらず、利用可能である。したがって、終了コマンドが、簡便なＬＳ１１０の初期化機能として使用できるようになる。
【００２７】
他の実施形態では、ロード・コマンドまたは終了コマンドが発行される前に、ＡＰＵ１２０によるコードおよび関連する直接メモリ・アクセス・データの以前の転送オペレーションが、ＡＰＵ１２０中で走っていたコードによって完全に完了される。他の実施形態では、複数のＡＰＵ１２０が、オンチップ・コヒーレント・バス（on-chip coherent bus）を用いて、ＭＰＵ１３０などの汎用マイクロプロセッサと組み合わされている。この実施形態では、オペレーティング・システムは、ＭＰＵ１３０などの汎用プロセッサ上で走っており、ＡＰＵ１２０は、オペレーティング・システムにより、セキュリティ機能または他のタスクを提供するように動的に構成することができる。言い換えると、セキュリティ機能が必要な（すなわち、隔離有効イネーブル・ビットが１に等しい）とき、ＡＰＵ１２０をプログラム可能なセキュリティ・コプロセッサとして動的に構成することができる。しかし、ＡＰＵ１２０はまた、別のときに非隔離モードで使用すべく他のタスクに使用することもできる。このようにすると、ロード機能および終了機能をサポートすれば、セキュリティ機能がサポートされる。
【００２８】
他の実施形態では、システム１００は、複数の付加プロセッサ複合体（ＡＰＣ）１８０を有する。各ＡＰＣ１８０は、ＭＰＵ１３０によって決定されるそれ自体のロード移行および終了移行を行う。
【００２９】
次に図２を参照すると、状態図２００が開示されている。開始移行２１０が行われた後、次いで状態図は、初期のシステム・コンフィグレーションに応じて非隔離状態２２０または隔離状態２３０へ進む。分りやすくするため、状態図２００は、始めに状態２２０へ進むものとして示している。しかし、状態図２００は、状態２２０または状態２３０のいずれへも進むことができることを当業者なら理解されよう。
【００３０】
状態２２０では、ＬＳ１１０は隔離部１１２を有していない。そうではなくて、ＬＳ１１０全体が汎用アクセス状態１１１にある。ＡＰＣ１８０は、非隔離状態にあると称する。一般に、これは、ＡＰＣ１８０がＬＳ１１０の内部に隔離部１１２を作成するように命令されていないことを意味する。
【００３１】
次いで、必要に応じてセキュアなローダまたはセキュアなアプリケーションを開始するために、ＭＰＵ１３０がロード・コマンドを発行する。移行２４０で、マスタ・キーの値を用いることによって、コードまたはデータあるいはその両方からなるロード・イメージがロードされ、認証され、または暗号解除され、あるいはそれらの組合せが行われる。暗号解除は少なくとも１つの暗号解除鍵を生成するために使用でき、この鍵は次に、隔離部１１２内に記憶した他のコードを検証するために使用できる。いずれにしても、検証手続きが満足なものである場合、ロード機能は、ロードされたコード・イメージの実行を開始する。一実施形態では、このコードは、セキュアなローダであり、前述のように、第２の鍵を使用してセキュアなアプリケーションのローディングを担当する。しかし、別の実施形態では、このコードは、それ自体が決済システム、暗号解除、認証、鍵管理などセキュアであるべきアプリケーションでもよい。
【００３２】
状態２３０への移行では、ＡＰＵ１２０によってロード・コマンドが発行された後で、コード認証の前に、ＡＰＵ１２０上で処理しているどのような命令も中断される。また、状態２３０への移行中では、ＭＰＵ１３０によるＬＳ１１０の隔離部１１２への書き込み要求は、ＡＰＵ１２０によって無視され、ＭＰＵ１３０によるＬＳ１１０の隔離部１１２の読取り要求は、値０または他の定数を戻す。ＬＳ１１０の隔離部１１２が作成される（アクセスは、ＡＰＵ１２０によって開始されたロード／記憶のコマンドまたは命令の取り出しだけに限定される）。ＡＰＵ１２０のデバッグ／検査／診断用インターフェースのすべてに対するアクセスは、ディセーブルされる。ＬＳ１１０の非隔離／汎用アクセス領域１１１は、ＡＰＵ１２０が隔離部１１２の区分コマンドを発行していないときと同じアクセス権を保存する。さらに、ＡＰＵ１２０の非同期割込みは、少なくともＬＳ１１０の一部が隔離状態１１２にあるとき、ディセーブルされる。
【００３３】
状態２３０への移行では、ＡＰＵ１２０の外部からアクセス可能ないくつかのレジスタが、通常６４ビットの直接メモリ・アクセス・アドレスを取得するためにアクセスされる。この６４ビット直接メモリ・アクセス・アドレスは、ＡＰＵ１２０の隔離部１１２にロードすべきコード・イメージの指定点に相当する。認証または暗号解除あるいはその両方を行うべきコードまたはデータあるいはその両方が見つかった後、ＬＳ１１０の隔離部１１２は、認証または暗号解除あるいはその両方を行うべきコードまたはデータあるいはその両方で上書きされる。
【００３４】
しかし、ロードされたコードまたはデータあるいはその両方が認証されない場合、状態２５０に進み、ダウンロードされたコードのそれ以上の認証は中止される。状態２５０で、認証に失敗した場合、ＭＰＵ１３０にはこの認証失敗が通知されるが、ＡＰＵ１２０は隔離状況のままであり、ＬＳ１１０はその隔離領域１１２を保存する。一実施形態では、このＭＰＵ１３０の通知は、停止（stop）および信号（signal）コマンドによって実施される。しかし、認証失敗が通知された後でも、ＭＰＵ１３０は、ＡＰＵ１２０に発行したコマンドによって、隔離部１１２内に記憶されたコードにアクセスすることができない。
【００３５】
しかし、ロード・イメージが認証された場合、状態２３０で、隔離部１１２内でのコード・イメージの実行が終了した後、ＡＰＵ１２０は、終了コマンドを発行する。典型的なセキュアなアプリケーションは、例えば、ＳＳＬ（secure sockets layer）プロトコルや、セキュアな鍵管理、電子決済管理、「バーチャル・マネー（virtual money）」の保管、オペレーティング・システム・イメージの定期的な検証などに用いられる、認証、暗号化、または暗号解除機能であり得る。言い換えると、セキュアなアプリケーションとは、一般に、アプリケーションのセキュリティおよび完全性を重視するアプリケーションとして定義することができる。
【００３６】
一実施形態では、ＡＰＵ１２０は認証されたコードを実行する。ＡＰＵ１２０が終了コマンドを発行後、すべてのＡＰＵ１２０のレジスタ、およびＬＳ１１０の隔離部１１２が、消去または上書きされる。これは、先に隔離部１１２内に存在したどのコードにも、任意のデバイスの教唆によってアクセスできないことを保証するために行うことができる。ＬＳ１１０へのアクセスは制限されておらず、ＡＰＵ１２０のデバッグ／検査／診断用インターフェースへのアクセスは、終了プロセスの完了後、再びイネーブルされる。最後に、ＡＰＵ１２０の非隔離状態への移行は、ＡＰＵ１２０がＭＰＵ１３０に通知したとき完了する。これは、ＡＰＵ１２０を停止させ、ＭＰＵ１３０に信号を送る命令によって実施することができる。
【００３７】
しかし、停止状態２５０に入った後、ＭＰＵ１３０は、ＡＰＣ１８０に終了コマンドを発行することができる。終了コマンドは、隔離部１１２を解放し、状態２２０へ進めるようにする。あるいは、停止状態２５０で、ＭＰＵ１３０がＡＰＣ１８０へ別のロード・コマンドを発行し、それによって、認証すべき他のまたは異なるコードをロードすることができる。
【００３８】
本発明は、多くの形態および実施形態をとることができることを理解されたい。したがって、本発明の趣旨または範囲を逸脱することなく、前述の内容にいくつかの変形を加えることができる。本明細書に概要を示した機能により、様々なプログラミング・モデルが可能となってくる。この開示は、好ましい特定のプログラミング・モデルとして読むべきではなく、これらのプログラミング・モデルがその上に構築できる、その基礎となるメカニズムを対象とする。
【００３９】
本発明を、その好ましい実施形態のいくつかに即して述べてきたが、開示の実施形態は、限定的な性質のものではなく例示的なものであり、前述の開示において、広範囲の変形形態、修正形態、変更形態、および代用形態が企図され、いくつかの例では、本発明のいくつかの特徴は、その他の特徴をそれに対応して使用することなく、用いることができることに留意されたい。前述の好ましい実施形態を検討することにより、当業者には、このような多くの変形形態、および修正形態が望ましいと考えられることもあり得る。したがって、添付の特許請求の範囲は、広義に、かつ本発明の範囲に適合する形で解釈するのが適切である。
【図面の簡単な説明】
【００４０】
【図１】認証または暗号解除すべきコードまたはデータの隔離がローカル記憶域内で行われるシステムの概略図である。
【図２】付加プロセッサ・ユニット（ＡＰＵ）によって開始される隔離状態と非隔離状態の間の移行を示す状態図である。
【符号の説明】
【００４１】
１００  システム
１１０  ローカル記憶域（ＬＳ）
１１１  非隔離（汎用アクセス）部、汎用アクセス領域、汎用アクセス・メモリ
１１２  隔離部、隔離領域
１１５  ＬＳバス
１２０  付加プロセッサ・ユニット（ＡＰＵ）
１２７  バス
１３０  ＭＰＵ
１３３  バス
１３５  バス
１３８  ＡＰＵ制御バス
１４０  バス・インターフェース・ユニット（ＢＩＵ）
１４５  ロード／終了状態マシーン（ＬＥＳＭ）
１５０  オンチップ・プロセッサ・バス
１８０  付加プロセッサ複合体（ＡＰＣ）
【図１】
2005018770.tif 000003
【図２】
2005018770.tif 000004