(57)【要約】  本発明は、システムオンチップまたはマイクロコントローラのためのセキュリティアーキテクチャおよび方法に関する。一実施形態による方法は、第１の中央処理装置（ＣＰＵ）が第１のアドレスを指定するステップを含む。本方法において、第１のアドレスに対して、少なくとも４つのセキュリティ属性のうちの１つであるセキュリティ属性が識別される。また、識別されたセキュリティ属性に基づいて第１のアドレスによって識別されたメモリ位置への第１のＣＰＵによるアクセスが拒否され得る。【選択図】図２
2020504393.tif 000002
【特許請求の範囲】
【請求項１】
第１の中央処理装置（ＣＰＵ）が第１のアドレスを指定するステップと、
前記第１のアドレスに対して、少なくとも４つのセキュリティ属性のうちの１つであるセキュリティ属性を識別するステップと、
識別された前記セキュリティ属性に基づいて前記第１のアドレスによって識別されたメモリ位置への前記ＣＰＵによるアクセスを拒否するステップと、
を含む、
方法。
【請求項２】
前記ＣＰＵによるアクセスを拒否するステップは、前記ＣＰＵに対するセキュリティ状態に基づく、
請求項１に記載の方法。
【請求項３】
前記第１のアドレスに対するセキュリティ属性と、前記ＣＰＵに対するセキュリティ状態とを比較するステップをさらに含み、
前記ＣＰＵに対するセキュリティ状態と、前記第１のアドレスに対するセキュリティ属性とが適合しないという判定に応答して、前記ＣＰＵによるアクセスが拒否される、
請求項２に記載の方法。
【請求項４】
前記第１のアドレスを含むアドレス空間内の第１のアドレス範囲を識別するステップをさらに含み、
前記第１のアドレスに対するセキュリティ属性は、前記第１の範囲の識別に応答して識別される、
請求項１に記載の方法。
【請求項５】
第１のレジスタに含まれる情報に基づいて、前記第１のアドレス範囲を算出するステップをさらに含む、
請求項４に記載の方法。
【請求項６】
第１のＣＰＵを備える集積回路によって実施される方法であって、
前記第１のＣＰＵが、第１のソフトウェアコンポーネントの第１の命令を実行する該第１のＣＰＵに応答して、第１のアドレスを指定するステップと、
前記第１のアドレスに対するセキュリティ属性と、前記第１のＣＰＵに対するセキュリティ状態とが適合しない場合、前記第１のアドレスによって識別された第１のメモリ位置へのアクセスを拒否するステップと、
前記第１のアドレスに対するセキュリティ属性と、前記第１のＣＰＵに対するセキュリティ属性とが適合する場合、前記第１のメモリ位置へのアクセスを許可するステップと、
を含み、
前記第１のＣＰＵに対するセキュリティ状態は、前記第１のＣＰＵに対する少なくとも３つの異なるセキュリティ状態のうちの１つを定義する、
方法。
【請求項７】
前記第１のＣＰＵに対するセキュリティ状態は、ｘビット値に関連し、
前記第１のＣＰＵに対するセキュリティ状態は、２ｘセキュリティ状態のうちの１つである、
請求項６に記載の方法。
【請求項８】
前記第１のＣＰＵに対するセキュリティ状態を、異なるセキュリティ状態に更新するステップを含む、
請求項６に記載の方法。
【請求項９】
前記第１のアドレスと、複数のアドレス範囲とを比較するステップをさらに含み、前記アドレス範囲は、前記セキュリティ属性にそれぞれマッピングされ、
前記アドレス範囲のうちの１つは、他の前記アドレス範囲よりも多くのアドレスを含む、
請求項６に記載の方法。
【請求項１０】
前記アドレス範囲は、それぞれの開始アドレスおよびアドレス範囲の長さによって定義される、
請求項９に記載の方法。
【請求項１１】
前記第１のメモリ位置にアクセスして、第１の命令セットの命令の１つである第１の命令をフェッチするステップをさらに含み、
前記第１の命令セットは、第２のソフトウェアコンポーネントを呼び出すための命令を含む、
請求項６に記載の方法。
【請求項１２】
前記第１の命令セットは、複数のソフトウェア要素にそれぞれ対応する複数の命令セットのうちの１つである、
請求項１１に記載の方法。
【請求項１３】
第１の中央処理装置（ＣＰＵ）による実行が可能な命令を格納するためのメモリであって、
前記メモリに格納された前記命令の実行に応答して実施される方法を有し、
前記方法は、
アドレス空間内の第１のメモリ位置にアクセスするための第１のアドレスを前記ＣＰＵが生成するステップと、
前記第１のアドレスに対するセキュリティ属性と、前記第１のＣＰＵに対するセキュリティ状態とが適合しない場合、前記第１のメモリ位置への前記第１のＣＰＵによるアクセスを拒否するステップと、
前記第１のアドレスに対するセキュリティ属性と、前記第１のＣＰＵに対するセキュリティ属性とが適合する場合、前記第１のメモリ位置へのアクセスを許可するステップと、
を含み、
前記第１のアドレスに対するセキュリティ属性は、少なくとも４つの異なるセキュリティ属性のうちの１つを定義し、
前記第１のＣＰＵに対するセキュリティ状態は、少なくとも３つの異なるセキュリティ状態のうちの１つを定義する、
メモリ。
【請求項１４】
前記セキュリティ属性は、ｘビット値を含み、
前記第１のアドレスに対するセキュリティ属性は、２ｘセキュリティ属性のうちの１つである、
請求項１３に記載のメモリ。
【請求項１５】
前記方法は、前記第１のアドレスと、複数のアドレス範囲とを比較するステップをさらに含み、前記アドレス範囲は、前記セキュリティ属性にそれぞれマッピングされ、
前記アドレス範囲のうちの１つは、他の前記アドレス範囲よりも多くのアドレスを含む、
請求項１３に記載のメモリ。
【請求項１６】
前記アドレス範囲は、それぞれの開始アドレスおよびアドレス範囲の長さによってそれぞれのレジスタ内で定義される、
請求項１５に記載のメモリ。
【請求項１７】
前記方法は、
前記第１のメモリ位置にアクセスして、第１の命令セットの命令の１つである第１の命令を読み取るステップと、
前記第１の命令セットを実行するステップと、
前記第１の命令セットの実行に応答して、前記第１のＣＰＵのセキュリティ状態を変更するステップと、
をさらに含み、
前記第１の命令セットは、複数の命令セットのうちの１つであり、
前記複数の命令セットは、前記第１のＣＰＵに対するセキュリティ状態を更新するようそれぞれ構成される、
請求項１３に記載のメモリ。
【請求項１８】
前記複数の命令セットは、複数のソフトウェア要素にそれぞれ対応する、
請求項１６に記載のメモリ。
【請求項１９】
前記複数の命令セットは、前記複数のソフトウェア要素をそれぞれ呼び出すための命令をそれぞれ含む、
請求項１８に記載のメモリ。
【請求項２０】
フラッシュメモリ、ランダムアクセスメモリおよびレジスタメモリを含むメモリと、
前記メモリ内の第１のメモリ位置にアクセスするための第１のアドレスを生成する第１の中央処理装置（ＣＰＵ）と、
前記第１のアドレスに対するセキュリティ属性と、前記第１のＣＰＵに対するセキュリティ状態とが適合しない場合、前記第１のメモリ位置へのアクセスをブロックする回路と、
を備え、
前記第１のＣＰＵに対するセキュリティ状態は、前記第１のＣＰＵに対する少なくとも３つの異なるセキュリティ状態のうちの１つを定義する、
システムオンチップ（ＳｏＣ）。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、米国特許法３５Ｕ．Ｓ．Ｃ．§１１９（ｅ）に基づいて、Ｓｕｄｈｉｎ  Ｍｉｓｈｒａを発明者とする「Ｓｅｃｕｒｉｔｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ａｎｄ  Ｍｅｔｈｏｄ」と題する２０１７年１月１０日出願の米国仮特許出願第６２／４４４，５０２号の国内優先権を主張し、その開示の全体は、あらゆる目的のために参照により本明細書に完全に記載されるよう組み込まれる。
【背景技術】
【０００２】
システムオンチップ（ＳｏＣ）は、チップ上のコンピュータとみなされている。マイクロコントローラ（ＭＣＵ）も、チップ上のコンピュータとみなされている。ＳｏＣおよびＭＣＵは、それぞれ半導体ダイ上に形成された集積回路の形態をとる。ＳｏＣおよびＭＣＵは、いずれも組み込みソフトウェアの命令を実行する中央処理装置（ＣＰＵ）を採用している。ＳｏＣは、通常２つまたは３つ以上のＣＰＵを採用し、ＭＣＵは、単一のＣＰＵを採用している。ＳｏＣとＭＣＵとの間のその他の相違点は軽微である。以下、ＳｏＣを用いて本発明を説明するが、本発明はこれに限定されるものではないことに留意されたい。
【０００３】
ＳｏＣは、様々なハードウェア構造をそれぞれ有する。その一方で、ほとんどすべてのＳｏＣは、ＣＰＵに加えて、フラッシュメモリ、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、レジスタ等を含むメモリコンポーネントを有する。フラッシュおよびＲＯＭには、通常、ソフトウェアや情報が格納される。ソフトウェアは、メインアプリケーション、機能ライブラリ、ハードウェア抽象化レイヤー（ＨＡＬ）ドライバ、通信スタック、リアルタイムＯＳ（ＲＴＯＳ）、システム構成コード等を含む相互接続されたコンポーネントを有することができる。情報、データおよびソフトウェアは、ＳｏＣのリソースと呼ばれる場合が多い。
【０００４】
上述したように、ＳｏＣは、組み込みソフトウェアの命令を実行するためのいくつかのＣＰＵを含む。以下、２つのＣＰＵを含むＳｏＣを用いて本発明を説明するが、本発明はこれに限定されるものではないことに留意されたい。典型的なＣＰＵは、メモリからフェッチされた命令に従って算術演算および論理演算を行う演算装置（ＡＬＵ）と、ＡＬＵにオペランドを送信し、ＡＬＵ演算の結果を格納するレジスタと、ＣＰＵの動作を制御する制御部とを含む。ＡＬＵは、追加のコンポーネントをさらに含んでもよい。また、ＳｏＣは、汎用のタイマー、汎用の入出力（ＧＰＩＯ）ポート、またはシリアル通信コントローラのような周辺機器を有する。これらの周辺機器は、ＣＰＵと協働して、多くの場合リアルタイム処理の制約を伴いながら、より大きな機械的または電気的システム内で特定の関数を実施する。
【０００５】
ＳｏＣ内の通信サブシステムは、ＣＰＵ、周辺機器およびメモリコンポーネントの間でデータ、命令およびアドレスの伝送を可能にする。いくつかのＳｏＣにおける通信サブシステムは、ネットワークオンチップ（ＮｏＣ）の形態をとる。ＮｏＣ技術は、ＳｏＣコンポーネント間の情報の伝送にネットワーキングの理論および方法を適用する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＣＰＵは、命令を実行している間に、メモリ（例えばフラッシュ、ＲＡＭ、レジスタ等）にアクセスするためのトランザクションを実施する。例えば、ＣＰＵは、ＲＡＭまたはレジスタに対するデータの読み書きを行うためのメモリアクセストランザクションを実施することができる。あるいは、ＣＰＵは、実行される命令をフラッシュメモリからフェッチするためのメモリアクセストランザクションを実施することができる。ほとんどのアクセストランザクションは、アドレスフェーズとデータフェーズとを含む。説明の便宜上、本発明におけるすべてのアクセストランザクションは、アドレスフェーズとデータフェーズとを含むこととする。ＣＰＵは、アドレスフェーズ中に、後続のデータフェーズ中にＣＰＵがデータを読み書きするアドレスまたは命令をフェッチするアドレスを指定する。
【課題を解決するための手段】
【０００７】
本発明は、第１の中央処理装置（ＣＰＵ）を含むシステムオンチップまたはマイクロコントローラのためのセキュリティアーキテクチャおよび方法に関する。本発明の一実施形態による方法は、第１のＣＰＵがアクセストランザクション中に第１のアドレスを指定するステップを含む。本方法において、第１のアドレスに対して、少なくとも４つのセキュリティ属性のうちの１つであるセキュリティ属性が識別される。また、識別されたセキュリティ属性に基づいて第１のアドレスによって識別されたメモリ位置へのアクセスがアクセストランザクション中にブロックされ得る。
【図面の簡単な説明】
【０００８】
本発明は、添付の図面を当業者が参照することによって明らかになる多数の目的、特徴および利点によって、よりよく理解されるであろう。
【図１】ＳｏＣのためのアドレス空間の一例を示す図である。
【図２】本発明の一実施形態を採用したＳｏＣの一例を示すブロック図である。
【図３】図２のＳｏＣ内に採用された信頼ゾーン構成レジスタの一例を示すブロック図である。
【図４】図２のＳｏＣのためのアドレス空間の一例を示す図である。
【図５】図２のＳｏＣ内に採用されたセキュリティ構成コントローラの一例を示すブロック図である。
【図６】図５のセキュリティ構成コントローラ内に採用されたヒット検出部の一例を示すブロック図である。
【図７】図２のＳｏＣ内に採用された外部認証ユニットを示すブロック図である。
【図８】本発明の一実施形態による方法の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
異なる図面における類似または同一の要素には、同じ参照符号を用いる。
【００１０】
機能ライブラリ、通信スタック、情報およびデータのようなＳｏＣリソースは、メモリコンポーネント（例えばＲＡＭ、フラッシュメモリ、レジスタ等）内に格納される。ＣＰＵ上で実行されるソフトウェアによる不正アクセスからこれらのリソースを保護する必要がある。ＡＲＭ  Ｈｏｌｄｉｎｇｓ  ｐｌｃ（ＡＲＭ社）が提供するセキュリティサブシステムであるＴｒｕｓｔＺｏｎｅ−Ｍは、不正アクセスからリソースを保護することができる。しかしながら、以下で詳述するように、ＴｒｕｓｔＺｏｎｅ−Ｍにはいくつかの制限がある。
【００１１】
各ＳｏＣは、アドレス空間またはマップを有する。アドレス空間またはマップは、物理的なメモリ位置（例えばＲＡＭセル、レジスタ等）にそれぞれ対応する１つまたは複数の個別アドレス範囲を定義する。いくつかのアドレスは、ＳｏＣの外部にあるメモリ位置に対応してもよい。ＴｒｕｓｔＺｏｎｅ−Ｍ（以下、ＴＺＭ）では、ＳｏＣアドレス空間を信頼ゾーンと呼ばれる論理ユニットに分割する必要がある。図１には、ＴＺＭの原則に従って等しい大きさ（すなわち５１２ＭＢ）を有する信頼ゾーンに分割されたＳｏＣアドレス空間の一例が示されている。大きさ、アドレス空間内での位置および基本セキュリティ属性を含むＴＺＭの信頼ゾーンの機能は、静的である。
【００１２】
リソース（例えばデータ、ソフトウェア等）は、メモリコンポーネント（例えばフラッシュメモリ）内に格納され、次いで信頼ゾーンにマッピングされる。すなわち、リソースは信頼ゾーンにマッピングされる。各信頼ゾーンには、１つまたは３つの基本セキュリティ属性（セキュア（Ｓ）、非セキュア（ＮＳ）、非セキュア／呼び出し可能（ＮＳＣ））が割り当てられる。図１に図示しないが、ＴＺＭのアドレス空間内には、非セキュア／呼び出し可能信頼ゾーンが１つだけ存在する。なお、アドレス空間内に非セキュア信頼ゾーンが複数存在してもよいことに留意されたい。しかしながら、以下において、単一の非セキュア信頼ゾーンを用いて本発明を説明する。
【００１３】
レジスタに保持されるデータのようなリソースがセキュア信頼ゾーンにマッピングされている場合、そのリソースはセキュアであるとみなされる。ソフトウェアコンポーネントのようなリソースが非セキュア信頼ゾーンにマッピングされている場合、そのリソースは非セキュアであるとみなされる。また、リソースが非セキュア／呼び出し可能信頼ゾーンにマッピングされている場合、そのリソースは非セキュア／呼び出し可能であるとみなされる。
【００１４】
ＴＺＭは、認証ユニット（ＡＵ）と呼ばれるデバイスを採用している。ＡＵは、アクセストランザクションのアドレスフェーズ中にＣＰＵによって指定されたアドレスの基本セキュリティ属性を判定する。すなわち、ＡＵは、ＣＰＵ指定アドレスがセキュアか、非セキュアか、非セキュア／呼び出し可能かを判定する。メモリアクセストランザクション（以下、トランザクション）のアドレスフェーズ中にＣＰＵによって指定されたアドレスは、そのアドレスの信頼ゾーンに応じて、セキュア、非セキュア、または非セキュア／呼び出し可能であるとみなされる。すなわち、アドレスがセキュア信頼ゾーン、非セキュア信頼ゾーン、または非セキュア／呼び出し可能信頼ゾーンにある場合、そのアドレスは、セキュア、非セキュア、または非セキュア／呼び出し可能であるとそれぞれみなされる。
【００１５】
ＴＺＭでは、セキュアおよび非セキュアの２つの基本セキュリティ状態のうちの１つにおいてＣＰＵが動作する必要がある。ＣＰＵの基本セキュリティ状態は、特別な命令によって、非セキュアからセキュアに、またはセキュアから非セキュアに切り替えることができる。これらの特別な命令は、「セキュリティゲートウェイ」と呼ばれるソフトウェアコンポーネントにのみ含まれる。セキュリティゲートウェイは、非セキュア／呼び出し可能信頼ゾーンにのみマッピングされる。以下で詳述するように、セキュリティゲートウェイは、ベニア（Ｖｅｎｅｅｒ）と呼ばれるコンポーネントからなる。ＳＧは、実行されたときに、ＣＰＵの基本セキュリティ状態を非セキュアからセキュアに遷移させる特別な命令である。セキュリティゲートウェイの各ベニアは、ＳＧ命令のインスタンスを１つだけ含む。セキュリティゲートウェイとそのベニアについては、以下で詳述する。
【００１６】
ＴＺＭでは、ＣＰＵの基本セキュリティ状態と、トランザクション中にＣＰＵによって指定されたアドレスの基本セキュリティ属性とが適合する必要がある。言い換えると、ＣＰＵ上で実行されるソフトウェアコンポーネントの基本セキュリティ状態と、ソフトウェアコンポーネントがアクセスしようとしているアドレスの基本セキュリティ属性とが適合する必要がある。アドレスの基本セキュリティ属性が非セキュアまたは非セキュア／呼び出し可能（例えばアドレスが非セキュア／呼び出し可能信頼ゾーンにあるベニアエントリポイントに対応する）と判定された場合、そのアドレスのコンテンツ（例えばデータや命令）へのＣＰＵおよび実行されるソフトウェアコンポーネントによるアクセスが、ＣＰＵの基本セキュリティ状態に関係なく、許可される。アドレスがセキュアと判定され且つＣＰＵがセキュア状態にある場合に限り、そのアドレスのコンテンツへのＣＰＵによるアクセスが許可される。したがって、アドレスがセキュアであるとみなされ且つＣＰＵが非セキュア状態にある場合、アドレスのコンテンツへのＣＰＵによるアクセスがブロックされる。
【００１７】
セキュリティ適合性要件は、不正アクセスからリソースを保護するための基盤である。この概念を、関数呼び出しを用いて説明することができる。関数は、呼び出されたときに指定のタスクを実行する自己完結型ソフトウェアコンポーネントの一例である。関数は、通常、データを取り込んでそれを処理する。関数は、結果を返すこともできる。関数がフラッシュメモリに書き込まれてプログラムされると、メインアプリケーションまたは他のソフトウェアコンポーネントの様々なポイントから呼び出すだけで、関数を繰り返し使用することができる。また、関数を他の関数から呼び出すこともできる。
【００１８】
関数は、他のリソースと同様に、セキュア信頼ゾーン、非セキュア信頼ゾーン、または非セキュア／呼び出し可能信頼ゾーンにマッピングされる。ＣＰＵ上で実行されるソフトウェアが関数を呼び出そうとすると、ＡＵは、その関数のアドレスの基本セキュリティ属性を判定する。このとき、アドレスの基本セキュリティ属性と、ＣＰＵの基本セキュリティ状態とが比較される。呼び出された関数のエントリポイントが非セキュア信頼ゾーンまたは非セキュア／呼び出し可能信頼ゾーンにマッピングされている場合、関数呼び出しはブロックされない。関数がセキュア信頼ゾーンにマッピングされ且つＣＰＵがセキュア状態にある場合、関数呼び出しはブロックされない。関数がセキュア信頼ゾーンにマッピングされ且つＣＰＵが非セキュア状態にある場合、関数呼び出しが不正であるとみなされてブロックされる。
【００１９】
上述したように、ＴＺＭにはセキュリティゲートウェイが設けられる。セキュリティゲートウェイの主な目的は、セキュア関数の正当な呼び出しまたは他のセキュアリソースへの非セキュアソフトウェアコンポーネントによるアクセスを可能にすることである。すなわち、非セキュアソフトウェアがセキュア関数を含むセキュアリソースを呼び出すことができる正当且つ間接的な方法を提供することで、セキュリティゲートウェイが動作する。
【００２０】
上述したように、セキュリティゲートウェイは、非セキュア／呼び出し可能信頼ゾーンにマッピングされる。セキュリティゲートウェイには、ベニアと呼ばれるセキュリティ状態遷移ラッパーコードが含まれ、ベニアは、それぞれ呼び出し可能エントリポイントを有する。コンピュータプログラミングにおいて、エントリポイントとは、制御が１つのソフトウェアコンポーネントから別のソフトウェアコンポーネントに移されて、その別のソフトウェアコンポーネントにＣＰＵが入り込んで処理が開始される位置である。セキュリティゲートウェイの各ベニアは、呼び出されたときにサービスを提供するセキュア関数にそれぞれ対応する。ＣＰＵ上で実行されるソフトウェアコンポーネントは、ベニアに対応するセキュア関数を直接呼び出す代わりに、ベニアを呼び出すことができる。各ベニアのエントリポイントが非セキュア／呼び出し可能信頼ゾーンにマッピングされるため、その時点でＣＰＵが非セキュア状態にあっても、ベニアに対するソフトウェアの呼び出しはブロックされない。説明の便宜上、ソフトウェアコンポーネントがベニアを呼び出したときに、ＣＰＵが非セキュア状態にあるとする。呼び出されたベニアは、上述した特別な命令であるＳＧを使用して、ＣＰＵの基本セキュリティ状態を非セキュアからセキュアに変更するよう動作する。ＣＰＵの基本セキュリティ状態が変更された後に、ベニアは、対応するセキュア関数を直接呼び出す。ＣＰＵの基本セキュリティ状態がセキュアに切り替えられているため、この呼び出しはブロックされない。セキュア関数は、ＣＰＵがセキュア状態にある間にサービスを実行する。サービスがレンダリングされて制御がベニアに返されると、ベニアは別の特別な命令を使用してＣＰＵの基本セキュリティ状態を非セキュアに戻す。ＣＰＵの基本状態が非セキュアに戻された後に、ＣＰＵは、ベニアを呼び出した時点からソフトウェアコンポーネントの実行を再開する。
【００２１】
上述したように、ＴＺＭは、信頼ゾーンの基本セキュリティ属性をセキュア、非セキュアおよび非セキュア／呼び出し可能の３つのタイプに制限する。また、ＴＺＭは、ＣＰＵの基本セキュリティ状態をセキュアおよび非セキュアに制限する。これらの制限にはいくつかの問題がある。そのうちの１つは、セキュア状態にある間のＣＰＵ上で実行されるソフトウェアコンポーネントによる制限なしメモリアクセスに関する。上述したように、セキュア状態にある間にＣＰＵ上で実行される任意のソフトウェアは、任意のセキュアリソース（すなわちセキュア信頼ゾーンにマッピングされたリソース）にアクセスすることができる。例えば、呼び出されたセキュア関数がＣＰＵ上で実行される間に、関数は、セキュアデータを含む他のすべてのセキュアリソースに制限なしでアクセスすることができる。そのため、セキュア状態にある間のＣＰＵ上で実行されるソフトウェアコンポーネントによる、任意のセキュアリソースへのアクセスを禁止することができない。
【００２２】
ＴＺＭの別の問題は、信頼ゾーン構成に対する単純化されたアプローチに関する。図１には、５１２ＭＢの信頼ゾーンに分割されたＳｏＣアドレス空間が示されている。この厳密な分割によって、アドレス空間が断片化される場合がある。したがって、不連続的なフラッシュおよび／またはＲＡＭメモリチャンクによるサポートが必要となり、これは、ハードウェアの設計を複雑化する。ＴＺＭの信頼ゾーンの境界には柔軟性がないため、同じメモリタイプを有する信頼ゾーンを複数隣接して設けることができない。様々なリソースを適切な信頼ゾーンにマッピングするためには、この強制的な対称性は最適ではない。ＴＺＭの信頼ゾーンの境界や位置は静的であり、これは、様々なセキュリティ属性を必要とする複数のソフトウェアコンポーネントのレイアウトに問題を生じさせる場合がある。他にも不利な点がある。
【００２３】
拡張セキュア信頼ゾーンおよび拡張ＣＰＵセキュア状態
本発明は、上述した問題および他の問題を解決する。ＴＺＭと同様に、本発明は、セキュア信頼ゾーン、非セキュア信頼ゾーンおよび非セキュア／呼び出し可能信頼ゾーンを採用している。しかしながら、本発明のセキュア信頼ゾーンは拡張されている。すなわち、セキュア信頼ゾーンには、いくつかの異なるセキュリティレベルまたは信頼レベルのうちのいずれかが割り当てられる。本発明の信頼ゾーンのタイプ、大きさおよび位置は、動的（すなわち静的ではない）に割り当てられる。また、本発明では、ＣＰＵのセキュア状態も拡張されている。従来と同様に、ＣＰＵは、セキュア状態または非セキュア状態で動作する。しかしながら、本発明では、ＣＰＵのセキュア状態は、いくつかの異なるセキュリティレベルまたは信頼レベルのうちのいずれかに拡張される。これらの概念およびそれらが提供する利点については、以下で詳述する。
【００２４】
拡張セキュア信頼ゾーンのセキュリティ属性
本発明は、非セキュア信頼ゾーン、非セキュア／呼び出し可能信頼ゾーンおよび２つまたは３つ以上の信頼レベルを持つセキュア信頼ゾーンを含む４つまたは５つ以上の信頼ゾーンを採用している。以下、非セキュア信頼ゾーン、非セキュア／呼び出し可能信頼ゾーン、および４つの信頼レベルを持つセキュア信頼ゾーンを含む６つのタイプの信頼ゾーンを用いて本発明を説明するが、本発明はこれに限定されるものではないことに留意されたい。説明の便宜上、セキュア信頼ゾーンを、セキュア／信頼レベル０（Ｓ／ＴＬ０）、セキュア／信頼レベル１（Ｓ／ＴＬ１）、セキュア／信頼レベル２（Ｓ／ＴＬ２）およびセキュア／信頼レベル３（Ｓ／ＴＬ３）とする。以下に説明する実施形態において、非セキュア／呼び出し可能信頼ゾーンを１つだけ採用している。別の実施形態において、非セキュア／呼び出し可能信頼ゾーンを複数採用することができる。
【００２５】
信頼ゾーン構成レジスタ（ＴＺＣＲ）は、識別子、ＳｏＣアドレス空間内での位置、大きさおよびセキュリティ属性を含むそれぞれの信頼ゾーンの機能を定義するために使用される。識別子を使用することで、それぞれの信頼ゾーンにマッピングされたリソースを識別することができる。ＴＺＣＲのコンテンツは、変更され得る。ブート時にＴＺＣＲに適切な値を書き込むことで、システム構成ソフトウェアは、信頼ゾーンの１つまたは複数の機能を確立することができる。ＴＺＣＲは、初回のシステム構成が実施された後に、構成または再構成され得る。
【００２６】
セキュリティ構成コントローラ
セキュリティ構成コントローラと呼ばれるデバイスは、ＴＺＣＲを使用してアドレスの信頼ゾーンを識別する。識別された信頼ゾーンを使用して、アドレスのセキュリティ属性（例えばＳ／ＴＬ１）を判定することができる。
【００２７】
外部認証ユニット（ＥＡＵ）
以下、セキュア状態または非セキュア状態で動作するよう構成されたＣＰＵを用いて本発明を説明するが、本発明はこれに限定されるものではないことに留意されたい。ＥＡＵは、ＣＰＵのセキュア状態を拡張する。各ＣＰＵに対して設けられた単一のＥＡＵを用いて本発明を説明するが、本発明はこれに限定されるものではないことに留意されたい。別の実施形態において、ＳｏＣ内の各命令キャッシュまたは各データキャッシュに対してＥＡＵが設けられてもよい。
【００２８】
ＥＡＵは、セキュア状態で動作する間にＣＰＵの信頼レベルを定義する。以下の説明の便宜上、ＣＰＵに対してＳ／ＴＬ０〜Ｓ／ＴＬ３の４つの信頼レベルのうちの１つを定義するＥＡＵを用いて本発明を説明するが、本発明において、信頼レベルの数は４つに限定されるものではないことに留意されたい。ＥＡＵとは、その名称（Ｅｘｔｅｒｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｕｎｉｔ）が示すように、ＣＰＵの外部にあるデバイスである。
【００２９】
ＥＡＵは、セキュアリソースをセキュアソフトウェアコンポーネントによる不正アクセスから保護する。上述したように、本発明では、アドレスチェックがＣＰＵレベルで行われることを前提としている。ＣＰＵが非セキュア状態にある場合、セキュアリソースへのＣＰＵによるアクセスが拒否される。また、ＣＰＵがセキュア状態にある場合、ＥＡＵは、セキュアリソースへのＣＰＵアクセスをブロックすることができる。例えば、アクセストランザクション中にＣＰＵによって指定されたアドレスのセキュリティ属性が特定の信頼レベル（例えばＳ／ＴＬ１）としてセキュアであると判定され且つアドレスのセキュリティ属性とＣＰＵの信頼レベルとが適合しない場合、ＣＰＵがセキュア状態であっても、トランザクションはＥＡＵによってブロックされる。すなわち、ＣＰＵ上で実行されるソフトウェアコンポーネントがセキュリティ属性Ｓ／ＴＬ１を持つ信頼ゾーンにマッピングされた関数を呼び出し且つＣＰＵの信頼レベルがセキュリティ属性Ｓ／ＴＬ１を持つリソースへのアクセスに適していない場合、ＥＡＵはその呼び出しをブロックする。
【００３０】
一実施形態において、各ＥＡＵは、それぞれのセキュリティ状態レジスタ（ＳＳＲ）を含むまたはそれに関連付けられる。各ＳＳＲは、以下ＦＥＮＣＥ値と呼ぶマルチビット値を保持する。ＦＥＮＣＥ値は、それぞれのＣＰＵに対する拡張セキュア状態を定義する。一実施形態において、ＦＥＮＣＥ値の各ビット位置はそれぞれの信頼レベルに対応する。以下、ビット位置がＳ／ＴＬ０〜Ｓ／ＴＬ３の４つの信頼レベルにそれぞれ対応する４ビットのＦＥＮＣＥ値（ＳＳＲｂ０〜ＳＳＲｂ３）を用いて本発明を説明するが、本発明において、セキュア信頼レベルの数は４つに限定されるものではなく、４つよりも少ないまたは４つより多いセキュア信頼レベルも考えられることに留意されたい。以下で詳述するように、ＣＰＵに対するＦＥＮＣＥ値のすべてのビットが設定（すなわちＦＥＮＣＥ値が「１１１１」）されると、ＥＡＵは、ＣＰＵがベニアの命令（例えばＲｎをＳＳＲレジスタの１つとして、「ＭＯＶ  Ｒｎ，＃ＦＥＮＣＥ」）を実行しようとしている場合を除いて、非セキュアリソースまたは非セキュア／呼び出し可能リソースのみへの対応するＣＰＵによるアクセスを許可する。ＣＰＵに対するＦＥＮＣＥ値のすべてのビットがクリア（すなわちＦＥＮＣＥ値が「００００」）されると、ＥＡＵ回路は、セキュアリソースへのアクセスをブロックしない。すなわち、ＥＡＵは、セキュア状態にある間にＣＰＵ上で実行されるソフトウェアコンポーネントによる、すべてのセキュア信頼ゾーンへのアクセスを許可する。なお、上述したように、本実施形態において、ＣＰＵが非セキュア状態で動作する場合、任意のセキュア信頼ゾーン（例えばＳ／ＴＬ３のセキュア信頼ゾーン）へのアクセスは、対応するＳＳＲ内のＦＥＮＣＥ値に関係なく、ＣＰＵレベルでブロックされる。
【００３１】
ＦＥＮＣＥ値において、設定ビットとクリアビットとが混在してもよい。個別にクリアされたビットは、対応するセキュリティ属性を持つセキュアリソースへのＣＰＵアクセスを有効にする。また、個別に設定されたビットは、対応するセキュリティ属性を持つセキュアリソースへのＣＰＵアクセスを無効にする。例えば、ＦＥＮＣＥ値が「０１０１」に等しい場合、ＥＡＵ回路は、セキュリティ属性Ｓ／ＴＬ３またはＳ／ＴＬ１が割り当てられたセキュア信頼ゾーンにマッピングされたリソースへのＣＰＵによるアクセスを許可し、セキュリティ属性Ｓ／ＴＬ２またはＳ／ＴＬ０が割り当てられたセキュア信頼ゾーンにマッピングされたリソースへのＣＰＵによるアクセスをブロックする。
【００３２】
拡張ベニアにある命令は、ＳＳＲ内のＦＥＮＣＥ値を更新することができる。これらの拡張ベニアすなわちそれらの命令は、非セキュア／呼び出し可能信頼ゾーンにマッピングされた「拡張セキュリティゲートウェイ」でのみ利用可能である。拡張ベニアの詳細については、以下で詳述する。
【００３３】
アーキテクチャ例
図２には、上述した概念を採用したＳｏＣ２００の一例が示されているが、本発明はこれに限定されるものではないことに留意されたい。ＳｏＣ２００は、通信システム２２２を介してメモリデバイスおよび周辺機器２１０〜２２０に結合された２つのＣＰＵ２０２を含む。説明の便宜上、ＣＰＵ２０２ＡとＣＰＵ２０２Ｂとは、実質的に同様または同一のものである。通信システム２２２は、ＮｏＣの形態をとることができる。
【００３４】
近年用いられるほとんどのＣＰＵは、当該技術分野において既知の命令キャッシュおよびデータキャッシュと関連して動作する。各キャッシュは、キャッシュコントローラを含む。図示および説明の便宜上、図２には、１つのキャッシュ２０４と、それに対応するキャッシュコントローラ２０６が示されている。キャッシュ２０４は、データキャッシュまたは命令キャッシュのいずれかの形態をとることができる。以下、キャッシュコントローラ２０６においてアクセストランザクションをブロックするセキュリティシステムを用いて本発明を説明する。
【００３５】
ＣＰＵ２０２は、それぞれのＥＡＵ回路２２６に結合され、ＥＡＵ回路２２６は、セキュリティ構成コントローラ回路２３０に結合される。セキュリティ構成コントローラ回路２３０とＥＡＵ回路２２６とを組み合わせることで、回路は互いに作用して、セキュアリソースへの不正アクセスを防止することができる。セキュリティ構成コントローラ回路２３０は、アクセストランザクション中にＣＰＵ２０２によって指定されたアドレスのコード化されたセキュリティ属性を判定する。以下で詳述するように、セキュリティ属性と、対応するＳＳＲ内で定義されたＦＥＮＣＥ値とが適合しない場合、ＥＡＵ２２６は、ＣＰＵ２０２がベニアの命令を実行している場合を除いて、セキュリティ違反（ＳＶ）信号をアサートする。ＥＡＵ２２６は、ＳＶ信号をキャッシュコントローラ２０６に伝送し、キャッシュコントローラ２０６は、ＳＶ信号のアサーションに応答して適切に動作して、アクセストランザクションを中止させる。また、ＥＡＵ２２６は、コード化されたセキュリティ属性に基づいて、対応するＣＰＵに対するＣＰＵレベル信号を生成する。これらの信号は、アドレスの基本セキュリティ属性（すなわちセキュア、非セキュア、または非セキュア／呼び出し可能）と、ＣＰＵの基本セキュリティ状態（すなわちセキュアまたは非セキュア）との適合性をチェックするために使用される。
【００３６】
ＥＡＵ２２６およびセキュリティ構成コントローラ２３０は、ＣＰＵ２０２の外部にあるハードウェアの形態をとる。ＥＡＵ２２６およびセキュリティ構成コントローラ２３０がハードウェア内に実装されるので、ＥＡＵ２２６およびセキュリティ構成コントローラ２３０は、アクセスをブロックするというＥＡＵの判定がアクセストランザクションのアドレスフェーズ中に行われるように、迅速に動作することができる。これは、対応するデータフェーズの最初のバスサイクル中にトランザクションを中止するのに十分な時間である。
【００３７】
セキュリティ構成コントローラ
上述したように、本発明は、それぞれの信頼ゾーンを定義するＴＺＣＲを採用している。引き続き図２を参照しながら図３を参照すると、セキュリティ構成コントローラ２３０の一例に採用された３２個のＴＺＣＲ３００が示されているが、本発明において、ＴＺＣＲの数は３２に限定されるものではないことに留意されたい。引き続き図２および図３を参照しながら図４を参照すると、ＴＺＣＲ３００を介して複数の信頼ゾーンに分割されたＳｏＣ２００のアドレス空間４００の一例が示されている。図４には、それぞれのセキュア信頼ゾーンおよび非セキュア信頼ゾーンにマッピングされたリソースが示されている。また、アドレス空間４００には、拡張セキュリティゲートウェイ（ＥＳＧ）がマッピングされた非セキュア／呼び出し可能信頼ゾーンが示されている。図示する一例において、セキュリティ構成コントローラ２３０は、３２個のＴＺＣＲを含むが、そのうちの２５個だけがアドレス空間４００を分割するために使用される。使用される２５個のＴＺＣＲは、図４に示す２５個のセキュア信頼ゾーン、非セキュア信頼ゾーンおよび非セキュア／呼び出し可能信頼ゾーンにそれぞれ対応する。
【００３８】
図４に示す各リソースは、名称（例えばブート、ＲＴＯＳ、ＨＡＬ、ＥＳＧ、デバイスドライバ、データ、ＲＡＭ等）によって識別される。また、図４には、物理的にリソースを含むＳｏＣメモリのタイプも示されている。例えば、図４には、フラッシュメモリ内に物理的に格納されたＨＡＬとして識別されたリソースと、ＲＯＭ内に物理的に格納されたブートとして識別されたリソースとが示されている。図４では、いくつかの信頼ゾーンが同じ大きさを有しているように見えるが、実際は異なる大きさを有している。例えば、「ＨＡＬ」リソースがマッピングされる信頼ゾーンは、「ブート」リソースがマッピングされる信頼ゾーンよりも大きい。
【００３９】
各ＴＺＣＲ３００は、対応する信頼ゾーンに対する信頼ゾーン番号（例えばＴＺ２０）を識別するマルチビット信頼ゾーン識別値を格納する。図示する一実施形態において、ＴＺＣＲ３００は、４ビットの信頼ゾーン識別値（すなわちＴＺｂ３〜ＴＺｂ０）を格納するが、本発明はこれに限定されるものではないことに留意されたい。別の実施形態において、５ビットの信頼ゾーン識別値（すなわちＴＺｂ４〜ＴＺｂ０）を使用して信頼ゾーン番号を識別することができる。また、各ＴＺＣＲ３００は、アドレス空間４００内で対応する信頼ゾーンの基本アドレスまたは開始アドレスを定義する基本アドレスＢＡ［３１：ｘ］を格納する。以下、３２ビットのアドレスを用いて本発明を説明する。図示する一実施形態において、ＢＡは、信頼ゾーンの開始アドレスの上位ビット（すなわち［３１：ｘ］）を含む。
【００４０】
また、各ＴＺＣＲ３００は、４ビットでエンコードされたレングス値（すなわちＬｂ０〜Ｌｂ３）を格納する。レングス値は、対応する信頼ゾーンの大きさを定義する。以下に示す表１には、信頼ゾーンのレングス値に対するエンコーディング例が示されているが、本発明はこれに限定されるものではない。
【００４１】
【表１】
2020504393.tif 000003
【００４２】
また、各ＴＺＣＲ３００は、対応する信頼ゾーンに対するセキュリティ属性（例えばＳ／ＴＬ１）をエンコードする３ビットのセキュリティ属性値（すなわちＳＡｂ０〜ＳＡｂ２）を格納する。表２には、セキュリティ属性に対するエンコーディング例が示されているが、本発明はこれに限定されるものではない。
【００４３】
【表２】
2020504393.tif 000004
【００４４】
信頼ゾーンの信頼ゾーン番号、基本アドレス、長さおよび／またはセキュリティ属性は、対応するＴＺＣＲ３００のコンテンツを変更することで、構成または再構成され得る。一実施形態において、ＴＺＣＲ３００のコンテンツは、セキュア信頼ゾーンにマッピングされるプラットフォームソフトウェアによって変更され得る。これにより、組み込みソフトウェアが必要とする変更に対応して、ＳｏＣがフィールドにある間に更新に対応することができる。
【００４５】
セキュリティ構成コントローラ２３０は、ＴＺＣＲ３００のコンテンツを使用して、アクセストランザクションＡＴ中にＣＰＵ２０２によって指定されたデータまたは命令アドレスＡＤＤＲを含む信頼ゾーンを判定する。引き続き図２〜図４を参照しながら図５を参照すると、セキュリティ構成コントローラ２３０の一実施例に関連するコンポーネントが示されている。セキュリティ構成コントローラ２３０は、図３に示すＴＺＣＲ３００を含む。また、セキュリティ構成コントローラ２３０は、それぞれのヒット検出部５００を含む。図６には、ヒット検出部５００の一実施例に関連するコンポーネントが示されている。各ヒット検出部５００は、アドレスＡＤＤＲ（すなわちＡＤＤＲ［３１：ｘ］）の上位ビットを受信する。また、各ヒット検出部５００は、対応するＴＺＣＲ３００から基本アドレスＢＡ［３１：ｘ］およびエンコードされた信頼ゾーンのレングス値（すなわちＬｂ３〜Ｌｂ０）を受信する。信頼ゾーンのレングスデコーダ６０２は、上記の表１に従って、エンコードされた信頼ゾーンのレングス値を対応するマルチビット値にデコードする。加算器６０４は、デコーダ６０２の出力を基本アドレスＢＡ［３１：ｘ］に加算して、対応するＴＺＣＲによって定義された信頼ゾーンに対する上位参照アドレスを生成する。比較器６０６は、上位参照アドレスとＡＤＤＲ［３１：ｘ］とを比較する。別の比較器６０８は、ＡＤＤＲ［３１：ｘ］と信頼ゾーンに対する下位参照アドレスである基本アドレスＢＡ［３１：ｘ］とを比較する。ＡＤＤＲ［３１：ｘ］が上位参照アドレスと下位参照アドレスとの間にある場合、ＡＮＤゲート６１０が範囲ヒット信号をアサートする。範囲ヒット信号は、対応する信頼ゾーンにＡＤＤＲ［３１：ｘ］があることを示す。
【００４６】
再び図５を参照すると、セレクタ５０４は、ヒット検出部５００からの出力を受信する。また、セレクタ５０４は、各ＴＺＣＲ３００から、エンコードされたセキュリティ属性値（すなわちＳＡｂ０〜ＳＡｂ２）を受信する。また、セレクタ５０４は、各ＴＺＣＲから信頼ゾーン識別番号を受信してもよい。ヒット検出部５００のうちの１つだけが、ＡＤＤＲ［３１：ｘ］を受信するセキュリティ構成コントローラ２３０に応答して、範囲ヒット信号をアサートする。セレクタ５０４は、範囲ヒット信号をアサートしたヒット検出部５００に対応するエンコードされたセキュリティ属性値を選択する。選択されたエンコードされたセキュリティ属性値は、ＡＤＤＲ［３１：ｘ］を送信したＥＡＵ２２６に送信される。このようにして、セキュリティ構成コントローラ２３０は、アクセストランザクション中にＣＰＵ２０２によって指定されたアドレスＡＤＤＲ［３１：ｘ］に対するエンコードされたセキュリティ属性値を本質的に判定する。また、セレクタ５０４は、範囲ヒット信号をアサートしたヒット検出部５００に対応する信頼ゾーン識別番号を選択および送信することができる。
【００４７】
外部認証ユニット（ＥＡＵ）
ＥＡＵ２２６は、ＣＰＵ２０２によって生成された各アドレスＡＤＤＲに対するセキュリティ属性と、対応するＳＳＲ内のＦＥＮＣＥ値とをチェックする。引き続き図２〜図６を参照ながら図７を参照すると、ＥＡＵ回路２２６の一例に関連するコンポーネントが示されている。図示するように、ＥＡＵ２２６は、ＣＰＵ２０２に対する４ビットのＦＥＮＣＥ値（すなわちＳＳＲｂ３〜ＳＳＲｂ０）を含むローカルＳＳＲ７０２を有するまたはそれに関連付けられる。上述したように、ＳＳＲｂ３〜ＳＳＲｂ０は、Ｓ／ＴＬ３〜Ｓ／ＴＬ０にそれぞれ対応する。ＳＳＲｂ３〜ＳＳＲｂ０は、ＣＰＵ２０２に対する拡張セキュア状態を定義する。すなわち、ＳＳＲｂ３〜ＳＳＲｂ０は、セキュアアクセストランザクション中のＣＰＵ２０２に対するアクセス権を定義する。以下で詳述するように、一実施形態において、ビットＳＳＲｂｘが論理値１に設定されると、ＥＡＵ２２６は、ＣＰＵが非セキュア／呼び出し可能信頼ゾーンにおいて命令をフェッチまたは実行している間にアクセスが起きた場合を除いて、セキュリティ属性Ｓ／ＴＬｘを持つアドレスＡＤＤＲにおける命令またはデータへのＣＰＵ２０２によるアクセスを拒否する。したがって、ＳＳＲｂ３〜ＳＳＲｂ０が「１０１０」に設定されると、ＥＡＵ２２６は、セキュリティ属性Ｓ／ＴＬ３またはＳ／ＴＬ１を持つアドレスのコンテンツへのＣＰＵアクセスをブロックし、セキュリティ属性Ｓ／ＴＬ２またはＳ／ＴＬ０を持つアドレスのコンテンツへのＣＰＵアクセスを許可する。以下で詳述するように、ＳＳＲ７０２内のＦＥＮＣＥ値は、ベニア内の命令によって変更され得る。
【００４８】
ＥＡＵ２２６は、セキュリティ違反（ＳＶ）回路７００を含む。ＣＰＵの信頼レベルと適合しないセキュア信頼レベルを持つアドレスＡＤＤＲにおけるコンテンツに対応するＣＰＵがアクセスしようとするときに、上記回路は、ＳＶをアサートする（すなわちＳＶを論理値１とする）。しかしながら、ＣＰＵによって指定されたアドレスＡＤＤＲにおけるコンテンツにＣＰＵがアクセスしようとするときおよび非セキュア／呼び出し可能な命令をフェッチまたは実行するときに、ＳＶ回路は、ＳＶ信号をアサートしない。図２に示すように、対応するキャッシュコントローラ２０４がＳＶ信号を受信する。ＳＶがアサートされたときに、キャッシュコントローラは、トランザクションのデータフェーズ中にＣＰＵアクセスをブロックする。
【００４９】
引き続き図７を参照すると、ＳＶ回路７００は、ＳＶ抑制回路７０１と、拡張セキュア状態チェック回路７０３とを含む。また、ＥＡＵ２２６は、デコーダ７１０を含む。デコーダ７１０は、セレクタ２３０によってアドレスＡＤＤＲに対して送信されるエンコードされたセキュリティ属性ＳＡｂ２〜ＳＡｂ０に基づいて、ＣＰＵ２０２に対するＡＵＮＣＫ、ＡＵＮＳＣ、ＡＵＮＳおよびＡＵＩＤＶを生成する。これらの信号は、各アドレスＡＤＤＲの基本セキュリティ属性をエンコードするために使用される。以下の表３には、エンコーディング例が示されている。
【００５０】
【表３】
2020504393.tif 000005
【００５１】
上述したように、アドレスＡＤＤＲに対する基本セキュリティ属性と、ＣＰＵレベルにおける基本セキュリティ状態とがチェックされる。
【００５２】
拡張セキュア状態チェック回路７０３は、ＡＤＤＲに対するデコードされたセキュリティ属性と、対応するＳＳＲ７０２内のＦＥＮＣＥ値とをチェックする。拡張セキュア状態チェック回路７０３は、ＡＮＤ回路７０４と、ＯＲ回路７０６と、デコーダ７０８と、Ｄ型フリップフロップ７１０と、ＡＮＤゲート７２２とを含む。各ＡＮＤ回路７０４は、セレクタ５０４によって送信されるエンコードされたセキュリティ属性値の最上位ビットであるＳＡｂ２の反転を受信する。ＳＡｂ２が設定された状態で、ＣＰＵ２０２がセキュアではない信頼ゾーンにアクセスしようとすると、ＥＡＵ回路は、ＳＳＲ７０２内のＦＥＮＣＥ値に関係なく、ＣＰＵ２０２によるアクセスをブロックしない。デコーダ７０８は、選択されたセキュリティ属性値の下位ビットＳＡｂ１およびＳＡｂ０を受信してデコードする。デコーダ７０８による出力は、図示するようにＡＮＤゲート７０４に送信される。ビットＳＡｂ１およびＳＡｂ０を受信するデコーダ７０８に応答して、デコーダ７０８による４つの出力のうちの１つだけがアサートされる。例えば、ＳＡｂ１およびＳＡｂ０が設定された状態では、デコーダ７０８は、ＡＮＤゲート７０４−４に送信される出力のみをアサートする。また、ＡＮＤゲート７０４は、図示するようにＳＳＲ７０２内に保持されるＦＥＮＣＥ値のそれぞれのビットを受信する。ＡＮＤゲート７０４のいずれかがその出力をアサートした場合、ＯＲゲート７０６は、出力信号をアサートする。これは、ブロックする必要がある不正なアクセストランザクションであることを示す。動作を説明するために、ＣＰＵ２０２がソフトウェアコンポーネントＳを実行している間にＣＰＵ２０２がアドレスＡＤＤＲ［３１：ｘ］を指定するとする。さらに、ＳＳＲ７０２内のＦＥＮＣＥ値が「１０１０」に設定されているとする。ＥＡＵ２２６は、ＡＤＤＲ［３１：ｘ］に対して、ＳＡｂ２＝０、ＳＡｂ１＝１およびＳＡｂ０＝０をセレクタ５０４によって判定されたエンコードされたセキュリティ属性値として受信する。本実施例において、デコーダ７０２は、セキュリティ属性値の下位ビットをデコードし、ＡＮＤゲート７０４−２に送信される出力信号をアサートする。ＡＮＤゲート７０４−２は、ＳＳＲｂ１＝１を入力として、その出力をアサートする。次いで、ＯＲゲート７０６は、その出力信号をアサートし、出力信号は、Ｄ型フリップフロップ７１０によってラッチされる。対応するＣＰＵが非セキュア／呼び出し可能信頼ゾーンから命令をフェッチまたは実行していない場合、ＡＮＤゲート７２２への両方の入力がアサートされ、次いで、ＡＮＤゲート７２２は、ＳＶ信号をアサートする。キャッシュコントローラ２２４は、ＳＶ信号のアサーションに応答して、ソフトウェアコンポーネントＳによるアクセスをブロックする。
【００５３】
ＳＶ抑制回路７０１は、対応するＣＰＵがベニアの命令を実行しているときに、拡張セキュア状態チェック回路７０３の動作を抑制する。ＳＶ拡張セキュア状態チェック回路７０３が抑制されると、リソース（すなわちＳＳＲ７０２）のセキュリティ属性とそれぞれのＳＳＲ７０２内で定義されるＣＰＵの拡張セキュリティ状態とが適合しない場合であっても、ＣＰＵはセキュアリソースにアクセスすることができる。抑制回路７０１は、マルチプレクサ７１２と、Ｄ型フリップフロップ７１４と、インバータ７１６と、マルチプレクサ制御回路７１８とを含む。一般に、ＳＶ抑制回路７０１は、対応するＣＰＵが非セキュア／呼び出し可能信頼ゾーンの外にある命令を実行しているときに、ＳＶＳｕｐｒｅｓｓ＝論理値１をＡＮＤゲート７２２に出力する。その一方で、ＳＶ抑制回路７０１は、対応するＣＰＵが非セキュア／呼び出し可能信頼ゾーン内にある命令を実行しているときに、ＳＶＳｕｐｒｅｓｓ＝論理値０をＡＮＤゲート７２２に出力する。この場合、拡張セキュア状態チェック回路７０３は、ＣＰＵがＳＳＲｂ３〜ＳＳＲｂ０と適合しないセキュリティ属性を持つアドレスＡＤＤＲにアクセスしようとしている場合であっても、ＳＶをアサートすることができない。
【００５４】
開示された一実施形態において、ＣＰＵ２０２は、パイプライン処理を実施する。パイプライン処理では、例えば、フェッチ、デコード、実行およびデータ転送を含むステージにおいてＲＩＳＣ命令が実行される。マルチプレクサ制御回路７１８は、これらのパイプラインステージに対応するステータス信号（例えばＨＰＲＯＴ［０］やＨＲＥＡＤＹ）を受信する。図示する一実施例において、命令がフェッチされているときにＨＰＲＯＴ［０］がハイにアサートされ、前のデータ転送が完了しているときにＨＲＥＡＤＹがアサートされる。非セキュア／呼び出し可能信頼ゾーンからの命令のフェッチ中に、ＡＵＮＳＣ信号は、上述したように論理値１としてアサートされる。非セキュア／呼び出し可能命令がフェッチされている間にＨＰＲＯＴ［０］＝論理値０且つＨＲＥＡＤＹ＝論理値１である状態で、マルチプレクサ制御回路７１８は、論理値０を生成する。これにより、マルチプレクサ７１２は、Ｄ型フリップフロップ７１４への入力としてＡＵＮＳＣを選択する。その結果、Ｄ型フリップフロップ７１４は、ＡＵＮＳＣ＝論理値１を捕捉する。Ｄ型フリップフロップ７１４は、非セキュア／呼び出し可能領域の外にある命令がフェッチされるまで、ＡＵＮＳＣ＝論理値１、すなわちＳＶＳｕｐｐｒｅｓｓ＝論理値０を保持し続ける。この場合、Ｄ型フリップフロップは、ＡＵＳＮＣ＝論理値０を捕捉および保持し、次いで、ＳＶＳｕｐｒｅｓｓ信号を論理値１に変化させる。ＳＶＳｕｐｒｅｓｓが論理値１である状態で、ＥＡＵ回路７００は、対応するＳＳＲレジスタ７０２内で定義されるＣＰＵの拡張セキュリティ状態と適合しないセキュリティ属性を持つアドレスへのアクセスをブロックする。
【００５５】
図８には、アクセストランザクションＡＴのアドレスフェーズ中にＥＡＵ回路７００およびセキュリティ構成コントローラ２３０によって行われる処理の一例に関連するステップが示されている。図示するように、図８に示す処理は、ステップ８０２から開始する。ステップ８０２では、ＥＡＵ２２６は、アクセストランザクションＡＴのアドレスフェーズ中にＣＰＵ２０２によって指定されたアドレスＡＤＤＲ［３１：ｘ］を受信する。ＥＡＵ２２６は、セキュリティ構成コントローラ２３０に上位ビットＡＤＤＲ［３１：ｘ］を転送する。ステップ８０４では、セキュリティ構成コントローラ２３０は、ＡＤＤＲ［３１：ｘ］を使用してＡＤＤＲ［３１：ｘ］の信頼ゾーンを判定する。ＥＡＵ２２６は、ステップ８０４で判定された信頼ゾーンに対するセキュリティ属性値ＳＡｂ１〜ＳＡｂ２をセキュリティ構成コントローラ２３０から受信する。ステップ８０６では、ＥＡＵ２２６の拡張セキュア状態チェック回路７０３は、ＡＤＤＲ［３１：ｘ］に対するセキュリティ属性値をデコードする。ステップ８１０では、ＥＡＵ２２６の拡張セキュア状態チェック回路７０３は、デコードされたセキュリティ属性と、ＳＳＲ７０２によって指定されたＦＥＮＣＥ値とを比較する。ＡＤＤＲ［３１：ｘ］のセキュリティレベルとＦＥＮＣＥ値とが適合しない且つ抑制回路７０１がＳＶＳｕｐｐｒｅｓｓ＝論理値１をＡＮＤ回路７２２に出力した場合、ＥＡＵ２２６は、ステップ８１４において、ＳＶ信号をアサートしてキャッシュコントローラ２２４にトランザクションＡＴを中止させる。この動作によって、バスフォールト例外が生じる。また、ＳＶ信号のアサーションは、ＥＡＵ２２６のフォールトレジスタ（図示せず）内の情報（例えばステップ８０４および８０５で判定されたセキュリティ属性および信頼ゾーン番号、不正アドレスＡＤＤＲ、バスインタフェース信号等）を捕捉させる。これは、バス例外処理ルーチンを用いたさらなる処理に使用される。
【００５６】
ＥＡＵ２２６がＳＳＲ７０２内のＦＥＮＣＥ値とＡＤＤＲ［３１：ｘ］のデコードされたセキュリティ属性とが適合すると判定し且つ抑制回路７０１がＳＶＳｕｐｒｅｓｓ＝論理値１をＡＮＤ回路７２２に出力した場合、ＥＡＵ２２６はＳＶ信号をアサートせず、キャッシュコントローラ２２４はトランザクションＡＴを続行させ、それに応じてリソースＲがアクセスされる。
【００５７】
ＳＳＲ７０２がリソースのセキュリティ属性と適合しないＦＥＮＣＥ値を保持する場合、ＥＡＵ２２６は、非セキュア／呼び出し可能信頼ゾーン内の命令の実行に応答してＣＰＵがセキュアリソースにアクセスしようとしている場合を除いて、セキュアリソースへのＣＰＵ２０２による直接アクセスをブロックする。したがって、セキュアソフトウェアリソースがマッピングされたセキュア信頼ゾーンのセキュリティ属性と、ＳＳＲ７０２内のＦＥＮＣＥ値とが適合しない場合、ＣＰＵ２０２上で実行されるソフトウェアＳは、そのリソースを直接呼び出すことができない。しかしながら、本発明は、拡張セキュリティゲートウェイ（ＥＳＧ）を提供している。ソフトウェアコンポーネントＳは、拡張セキュリティゲートウェイを介して、ソフトウェアコンポーネントＳの拡張セキュア状態と適合しないセキュア信頼レベルを持つ信頼ゾーンにマッピングされたセキュアソフトウェアサービスを間接的に呼び出すことができる。以下、セキュア関数Ｆを呼び出すソフトウェアコンポーネントＳを用いて本発明を説明する。
【００５８】
ＥＳＧは、拡張ベニアを含む。各拡張ベニアは、呼び出し可能なエントリポイントを有する。ＥＳＧは、非セキュア／呼び出し可能信頼ゾーンにマッピングされる。これは、ＣＰＵ２０２のセキュリティ状態およびＳＳＲ７０２内のＦＥＮＣＥ値に関係なく、ＣＰＵ２０２が拡張ベニアを直接呼び出すことができることを意味する。各拡張ベニアは、それぞれのセキュア関数または他のセキュアソフトウェアリソースに対応する。ＣＰＵ２０２上で実行されるソフトウェアＳは、関数Ｆを直接呼び出すのではなく、拡張ベニアを呼び出す。呼び出された拡張ベニアの特別な命令ＳＧは、ＣＰＵの基本セキュリティ状態をセキュアに遷移させる。また、呼び出された拡張ベニアの保護された命令セットが、ＳＳＲ７０２内のＦＥＮＣＥ値を、関数Ｆがマッピングされた信頼ゾーンのセキュリティ属性と適合する値に更新する。拡張ベニアは、ＦＥＮＣＥ値が更新された後に、対応する関数Ｆを直接呼び出す。この時点でＣＰＵ２０２はセキュア状態にあり且つＳＳＲ７０２内のＦＥＮＣＥ値と関数Ｆに対するセキュリティ属性とが適合するため、ＥＡＵ２２６は呼び出しをブロックしない。関数Ｆによって提供するサービスがレンダリングされると、拡張ベニアは、保護された別の命令セットを使用して、ＳＳＲ７０２のＦＥＮＣＥ値を元の値に戻す。また、拡張ベニアは、別の特別な命令を使用して、ＣＰＵ２０２の基本セキュリティ状態を元の状態に戻す。その後、ＣＰＵ２０２は、ソフトウェアコンポーネントＳの実行を再開する。すべての正当な拡張ベニアが特別なＳＧ命令から開始され且つ非セキュア／呼び出し可能信頼ゾーンにあるため、また、拡張ベニアが信頼性の高いプラットフォーム構築ソフトウェアによって構成され且つセキュアな製造現場においてフラッシュメモリにロードされるため、ソフトウェアコンポーネントＳによる拡張ベニアの改ざんは不可能である。非セキュア信頼ゾーンは、信頼性の高いセキュア構成コードによってセキュアブート中に構成される。
【００５９】
各拡張ベニアは、ＳＳＲ７０２内に新しいＦＥＮＣＥ値を格納してＳＳＲ７０２を更新し、関数Ｆのような対応するソフトウェアリソースを呼び出し、ＳＳＲ７０２を元のＦＥＮＣＥ値に戻すことができる命令を含む。新しいＦＥＮＣＥ値をＳＳＲ７０２内にロードする命令と、対応するセキュアソフトウェアリソースを呼び出す命令とを除いたベニアは、それぞれ互いに同一のものであってもよい。一実施形態において、拡張ベニアの命令「ＭＯＶ  Ｒｎ，＃ＦＥＮＣＥ」は、ＳＳＲ７０２内にロードされる新しいＦＥＮＣＥ値「＃ＦＥＮＣＥ」を定義し、命令「ＢＬ  ＳｅｒｖｉｃｅＦｕｎｃｔｉｏｎ１」は、セキュアソフトウェアリソース「ＳｅｒｖｉｃｅＦｕｎｃｔｉｏｎ１」を呼び出す。＃ＦＥＮＣＥは、ソフトウェアＳによって間接的にアクセスされるセキュアソフトウェアリソースＳｅｒｖｉｃｅＦｕｎｃｔｉｏｎ１のセキュリティ属性と適合する。＃ＦＥＮＣＥは、ベニア間で異なっていてもよく、ＳｏＣ２００で展開されたアプリケーションの構成アドレスマップが採用するセキュリティポリシーに従って決定される。いくつかのベニアでは、同じ＃ＦＥＮＣＥ値が使用されてもよい。命令ＢＬ  ＳｅｒｖｉｃｅＦｕｎｃｔｉｏｎ１は、ＣＰＵ２０２によって実行されると、ＭＯＶ  Ｒｎ，＃ＦＥＮＣＥ等の後に適切なセキュアソフトウェアリソースを呼び出し、ＳＳＲ７０２内のＦＥＮＣＥ値を更新する。拡張ベニアは、要求されたセキュアソフトウェアリソースの関数がレンダリングされた後に、ＳＳＲ７０２内のＦＥＮＣＥ値を拡張ベニア呼び出し前の値に戻す。
【００６０】
拡張セキュアリソースへのＣＰＵ２０２によるアクセスは、ＳｏＣで展開されたアドレスマップ構成が採用するアクセスポリシーに依存する。アドレスマップ構成は柔軟であり、信頼ゾーンに割り当てられたセキュリティ属性と、ＭＯＶ  ｌｒ，＃ＦＥＮＣＥ等を含む拡張ベニアの命令に使用される＃ＦＥＮＣＥ値とを選択することで実装され得る。アドレスマップ構成によって、例えば、同格または階層型のアクセス権が付与され得る。同格のアクセス権ポリシーでは、１つの信頼レベルを持つセキュア信頼ゾーンにマッピングされたソフトウェア要素は、異なる信頼レベルを持つセキュア信頼ゾーンにマッピングされたリソースに直接アクセスすることができない。つまり、ソフトウェア要素は、同じ信頼レベルを持つセキュアリソースのみアクセスすることができる。階層型のポリシーでは、１つの信頼レベルを持つセキュア信頼ゾーンにマッピングされたソフトウェア要素は、より低い信頼レベルを持つセキュア信頼ゾーンにマッピングされたリソースに直接アクセスすることができる。例えば、本質的に階層型であるアドレスマップ構成では、信頼ゾーンの信頼レベルは、Ｓ／ＴＬ０がＳ／ＴＬ１より高く、Ｓ／ＴＬ１がＳ／ＴＬ２より高く、Ｓ／ＴＬ２がＳ／ＴＬ３より高い。これは、アドレス空間３００においてＳ／ＴＬ０のソフトウェア（すなわち信頼ゾーンＳ／ＴＬ０にマッピングされたソフトウェア）が任意のセキュアリソースに直接アクセスすることができ、アドレス空間３００においてＳ／ＴＬ１のソフトウェアがＳ／ＴＬ０のリソースを除いた任意のセキュアリソースに直接アクセスすることができ、アドレス空間３００においてＳ／ＴＬ２のソフトウェアがＳ／ＴＬ１およびＳ／ＴＬ０のリソースを除いた任意のセキュアリソースに直接アクセスすることができ、アドレス空間３００においてＳ／ＴＬ３のソフトウェアがＳ／ＴＬ１、Ｓ／ＴＬ２およびＳ／ＴＬ０のリソースを除いた任意のセキュアリソースに直接アクセスすることができることを意味する。
【００６１】
本発明をいくつかの実施形態と関連して説明したが、本発明は本明細書に記載の特定の形態に限定されるものではない。本発明は、添付の特許請求の範囲に定義された本発明の範囲に合理的に含まれる代替形態、変形例および等価形態を包含することができる。
【図１】
2020504393.tif 000006
【図２】
2020504393.tif 000007
【図３】
2020504393.tif 000008
【図４】
2020504393.tif 000009
【図５】
2020504393.tif 000010
【図６】
2020504393.tif 000011
【図７】
2020504393.tif 000012
【図８】
2020504393.tif 000013
【国際調査報告】
2020504393.tif 000014