(57)【要約】【課題】セキュアな実装を要するソフトウェアの開発者内部でも更にアクセス権を細分化する場合においても、そのキャッシュやプロセッサの汎用性を維持すること。【解決手段】主記憶メモリ２上に確保されるセキュア領域２１は開発者のデバッグ権限に応じて細分化された複数の領域２１１〜２１３が確保される。キャッシュではセキュアタグ１１４４として、開発者のデバッグ権限を示す「Ｄｅ」ビットを設け、集積回路１上のプログラムのデバッグをしている開発者の認証結果１５１１に応じた値を反映させる。この値に応じてデバッガからキャッシュへのアクセスを制限することで、細分化されたセキュア領域を判別する識別子をキャッシュのタグとして実装することが不要となる。【選択図】図１
2010134572.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティ装置であって、
プロセッサと、
前記プロセッサに内蔵されたデバッグ支援部と、
少なくとも前記プロセッサの命令を配置される主記憶メモリと、
前記プロセッサと主記憶メモリとの間の転送に用いられるメモリバスと、
前記主記憶メモリは複数の領域に分割されており、それぞれに対するアクセスを制限する主記憶メモリアクセス制限部と、
前記プロセッサに内蔵された、前記主記憶メモリの内容の一部を保持するプロセッサ内部メモリと、
前記プロセッサ内部メモリへのアクセス権限を管理するために、その要素毎に保持されるフラグと、
前記フラグに応じて前記プロセッサ内部メモリに対するアクセスを制限する内部メモリアクセス制限部と、
前記セキュリティ装置上で動作しているプログラムをデバッグしている開発者の権限を、前記主記憶メモリ上の複数の領域毎に判定するデバッガ認証部を有し、
前記主記憶メモリアクセス制限部は、上記認証部の結果に応じ開発者のアクセス権を判定し、その判定結果から個々のアクセスを制限する機能を少なくとも有し、
前記フラグには前記判定結果に対応した値を開発者権限判定フラグとして少なくとも有することを特徴とするセキュリティ装置。
【請求項２】
請求項１に記載のセキュリティ装置であって、
前記開発者権限判定フラグは単一ビットであることを特徴とするセキュリティ装置。
【請求項３】
請求項１、２に記載のセキュリティ装置であって、
前記主記憶メモリの複数の領域は、前記プロセッサからの命令アクセス、または暗号化された前記命令の復号結果を書き込むアクセスのみが許容される、複数の命令専用領域から構成されることを特徴とするセキュリティ装置。
【請求項４】
請求項１から３に記載のセキュリティ装置であって、
前記開発者の権限が異なるアプリケーションソフト毎に前記複数の命令専用領域に命令が分割して配置されることを特徴とするセキュリティ装置。
【請求項５】
請求項３、４に記載のセキュリティ装置であって、
前記プロセッサはセキュアドメインと非セキュアドメインを持ち、前記主記憶メモリの複数の領域のいずれかはセキュアドメインに属し、セキュアドメインに属する主記憶メモリ上の領域は非セキュアドメインからアクセスできないように構成され、前記フラグにはセキュアドメインに属することを示すセキュアドメインフラグを含むことを特徴とするセキュリティ装置。
【請求項６】
請求項５に記載のセキュリティ装置であって、
前記命令専用領域は、セキュアドメインの割り込み発生時に最初に実行されるハンドラ、またはセキュアドメイン・非セキュアドメインの切替時に実行される命令が少なくとも格納されることを特徴とするセキュリティ装置。
【請求項７】
請求項１から６に記載のセキュリティ装置であって、
前記フラグは、関連するプロセッサ内部メモリの要素の内容が主記憶メモリから前記メモリバスを介して転送される際に、並行して前記主記憶メモリアクセス制限部から転送されることを特徴とするセキュリティ装置。
【請求項８】
請求項１から７に記載のセキュリティ装置であって、
前記プロセッサ内部メモリが前記プロセッサ内に複数存在し、その間で主記憶メモリ上の同一アドレスに属するデータについて一貫性維持のためのアクセスを行う際、前記フラグに関しても一貫性を維持することを特徴とするセキュリティ装置。
【請求項９】
請求項１から８に記載のセキュリティ装置であって、
前記内部メモリアクセス制限部は、前記開発者権限判定フラグに応じて前記プロセッサ内部メモリへのＩＯアクセスの制限を行うことを特徴とするセキュリティ装置。
【請求項１０】
セキュリティを維持するための方法であって、
プロセッサと、
前記プロセッサに内蔵されたデバッグ支援方法と、
少なくとも前記プロセッサの命令を配置される主記憶メモリと、
前記プロセッサと主記憶メモリとの間の転送に用いられる方法と、
前記主記憶メモリは複数の領域に分割されており、それぞれに対するアクセスを制限する主記憶メモリアクセス制限方法と、
前記プロセッサに内蔵された、前記主記憶メモリの内容の一部を保持するプロセッサ内部メモリと、
前記プロセッサ内部メモリへのアクセス権限を管理するために、その要素毎に保持されるフラグと、
前記フラグに応じて前記プロセッサ内部メモリに対するアクセスを制限する内部メモリアクセス制限方法と、
前記デバッグ支援方法は、前記セキュリティ装置上で動作しているプログラムをデバッグしている開発者の権限を、前記主記憶メモリ上の複数の領域毎に判定する認証方法を有し、
前記主記憶メモリアクセス制限方法は、上記認証方法の結果に応じ開発者のアクセス権を判定し、その判定結果から個々のアクセスを制限する機能を少なくとも有し、
前記フラグには前記判定結果に対応した値を開発者権限判定フラグとして少なくとも有することを特徴とするセキュリティを維持する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサを構成要素として有する装置または方法であって、機密情報を有するマイクロプロセッサのプログラムに対して、権限の無い者がアクセスする行為を阻止することに関する。
【背景技術】
【０００２】
昨今のコンピュータ機器、民生機器の実装においては、セキュリティ関連の配慮が求められるケースが多くなっている。例えば、有価コンテンツを扱う際にはその利用方法を規定したDRM(Digital Right Management)に準拠することが求められ、コンテンツの復号に用いる鍵や再生可能回数等の権利情報等が容易に暴露したり、改竄されたりすることは単に機器を製造するメーカだけでなく、DRMを利用したサービスの枠組みに多大な影響を及ぼすことにもなりうる。他にもクレジットカード等の個人情報を不正に採取しようとしたり、単にユーザーの機器そのものに損害を与えるものなど、セキュリティのリスクとして挙げられるものは多様に存在する。
【０００３】
このような事情を踏まえ、機器内部のセキュリティ機能を従来ソフトウェアだけで実現するのではなく、ハードウェア的な機構と協調動作することで、より強固なセキュリティを実現できる実装するアーキテクチャが提案されている。その中でも代表的なものに、ARM社によるTrustZone（登録商標）がある。この技術では、（特許文献１）にあるようにソフトウェアがセキュアドメインと非セキュアドメインに分離される。そして、それを実現するために、プロセッサ内部の汎用レジスタやキャッシュ、あるいは主記憶メモリやその他ペリフェラル等のハードウェア資源も物理的または論理的にドメイン毎に隔離され、セキュアドメインの資源に対して、非セキュアドメインからアクセスが禁止されることをハードウェアが保証する。
【０００４】
具体的な構成を、図７を用いて説明する。プロセッサ１１はプロセッサコア１１１内部の状態を示すＳ状態１１１２のビットによって、セキュアドメインで動作しているか、非セキュアドメインで動作しているかが区分される。主記憶メモリ２はセキュア領域２１と非セキュア領域２１に分類され、セキュア領域２１に対してはセキュアドメインのみがアクセス権限を有する。これを実現するため、プロセッサ１１がメモリバス１６を介して主記憶メモリ２にアクセスする場合、コマンドセキュア属性１６１としてセキュアドメインである旨の情報を付加し、主記憶メモリアクセス制限部１４１ではこれを参照して、セキュア領域２１へのアクセスを許可するか否かを判別する。
【０００５】
プロセッサ１１の内部にある命令キャッシュ１１４、データキャッシュ１１５は主記憶メモリ２の内容の一部を保持する機構であり、主記憶メモリアクセス制限１４１での制限と同等の制限をキャッシュ上のデータに対しても実施することが求められる。これを実現するために、主記憶メモリ２から命令キャッシュ１１４、データキャッシュ１１５に転送する際に、リードセキュア属性として、セキュア領域に属するデータである旨の情報を付加する。命令キャッシュ１１４、データキャッシュ１１５では、この情報をキャッシュ上のセキュアタグ１１４４として格納し、キャッシュ上のデータへのアクセス制限に利用する。このようなセキュアタグ１１４４はキャッシュラインと呼ばれる単位毎に付けられ、キャッシュ内にセキュアドメインのデータや非セキュアドメインのデータが混在しても、セキュリティが破綻しないように考慮されている。
【０００６】
上述の例は、セキュアドメインに属するソフトウェアが（少なくともハードウェアが識別する必要があるものが）１種類であるモデルに基づいたものであった。一方、セキュリティ実装が必要なソフトウェアが複数種類存在することを前提にした技術も提案されている。（特許文献２）はその例である。保護するべきプログラムの種類だけメモリ上に領域が分割され、その数だけプロセッサ内部でも明確に識別される。そして、ある領域から命令を実行した際のみ、プロセッサは同一のメモリ領域に格納されてあるデータ（ロード、ストアなどのデータアクセス）が許容される。
【特許文献１】特開2004-171569号公報
【特許文献２】特開2005-129041号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
セキュリティ実装が必要になるソフトウェアの規模は年々増大しており、（特許文献１）にあるようなセキュアドメインと非セキュアドメインという分離では不都合が生じるケースが多くなっている。具体的には、機密情報を実装したソフトウェアが存在したり、ごく一部の開発者にしか契約上開示されていないソフトウェアが存在したり、複数会社が共同して開発する場合が該当する。この場合、セキュアドメインの開発者内部であっても、更にそのアクセス権限を細分化した形で管理することが望ましい。
【０００８】
これを実現するためには（特許文献２）のように主記憶メモリも複数種類に分割して、それぞれに対してアクセス権限を判定することが求められる。この場合、必然的に、プロセッサ内部のキャッシュに関しても同様の施策が求められる。すなわち、前述のキャッシュのタグに対して、主記憶メモリ上の領域の数と同じ数だけハードウェアが識別するためのセキュアタグを確保し、セキュアタグの示す値に応じてアクセスを制限するというやり方である。
【０００９】
しかしながら、主記憶メモリ上の領域の数に応じてキャッシュのタグのビット数を増加させる方法は、タグを記憶する容量の増加、プロセッサの動作周波数（特にタイミング上最もクリティカルになりやすいキャッシュヒット判定やキャッシュデータ選択にかかる時間）に対して悪影響を与える。更に、主記憶メモリ上の領域の数は機器に応じて要件が異なることが多い一方で、昨今プロセッサはIP（Intellectual Property）として販売・提供されることが多く、特定の領域数を想定した実装はIPとしての汎用性を損なうことになる。
【００１０】
本発明は、前記従来の課題を解決するもので、セキュリティ実装が必要なソフトウェア開発者内部でも更に細分化されたアクセス権限の管理が発生する場合に、プロセッサ実装に要するハード資源の抑制と、プロセッサの汎用性を損なわない形で、実現するための手法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
前記従来の課題を解決するために、本発明のセキュリティ装置は、
プロセッサと、
前記プロセッサに内蔵されたデバッグ支援部と、
少なくとも前記プロセッサの命令を配置される主記憶メモリと、
前記プロセッサと主記憶メモリとの間の転送に用いられるメモリバスと、
前記主記憶メモリは複数の領域に分割されており、それぞれに対するアクセスを制限する主記憶メモリアクセス制限部と、
前記プロセッサに内蔵された、前記主記憶メモリの内容の一部を保持するプロセッサ内部メモリと、
前記プロセッサ内部メモリへのアクセス権限を管理するために、その要素毎に保持されるフラグと、
前記フラグに応じて前記プロセッサ内部メモリに対するアクセスを制限する内部メモリアクセス制限部と、
前記デバッグ支援部は、前記セキュリティ装置上で動作しているプログラムをデバッグしている開発者の権限を、前記主記憶メモリ上の複数の領域毎に判定する認証部を有し、
前記主記憶メモリアクセス制限部は、上記認証部の結果に応じ開発者のアクセス権を判定し、その判定結果から個々のアクセスを制限する機能を少なくとも有し、
前記フラグには前記判定結果に対応した値を開発者権限判定フラグとして少なくとも有することを特徴とする。
【００１２】
また、本発明のセキュリティ装置は、
請求項１、２に記載のセキュリティ装置であって、
前記主記憶メモリの複数の領域は、前記プロセッサからの命令アクセス、または暗号化された前記命令の復号結果を書き込むアクセスのみが許容される、複数の命令専用領域から構成されることを特徴とする。
【００１３】
また、本発明のセキュリティ装置は、
請求項１から６に記載のセキュリティ装置であって、
前記フラグは、関連するプロセッサ内部メモリの要素の内容が主記憶メモリから前記メモリバスを介して転送される際に、並行して前記主記憶メモリアクセス制限部から転送されることを特徴とする。
【００１４】
また、本発明のセキュリティ装置は、
請求項１から７に記載のセキュリティ装置であって、
前記プロセッサ内部メモリが前記プロセッサ内に複数存在し、その間で主記憶メモリ上の同一アドレスに属するデータについて一貫性維持のためのアクセスを行う際、前記フラグに関しても一貫性を維持することを特徴とする。
【発明の効果】
【００１５】
以上説明したように、本発明の装置ならびに手段によれば、プロセッサに要するハード資源の抑制、プロセッサ動作周波数への影響の回避、プロセッサの汎用性の維持を実現しつつ、セキュリティ実装に関係するソフトウェアの開発者内部でも更に細分化したアクセス制限を実施するためのプロセッサ内部の機構を実現することができるという効果を有する。
【発明を実施するための最良の形態】
【００１６】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１７】
セキュリティ装置の構成
図１に本発明を実施することができる例示的な構成を示す。
【００１８】
セキュリティ装置は、その主要な機能を集積した集積回路１、集積回路１の動作に必要なプロセッサの命令やその他各種データを配置する主記憶メモリ２、補助記憶装置として動作する不揮発メモリ３、集積回路１で動作するプログラムの解析に用いるデバッガ端末４とから構成される。不揮発メモリ３はフラッシュメモリでも構わないし、ＨＤＤ（ハード・ディスク・ドライブ）でも構わない。
【００１９】
集積回路１は、プロセッサ１１、不揮発メモリ３との入出力転送を担う不揮発メモリインターフェース１２、暗号機能を持つアクセラレータである暗号・復号部１３、主記憶メモリインターフェース１４、デバッガインターフェース１５、メモリバス１６から構成される。なお、図１に示す集積回路１はその一例であり、その用途に応じて、他にも様々な機能を内包していても良い。たとえば、オーディオ・ビデオのエンコード・デコード機能やグラフィックス機能、ディスプレイデバイスやスピーカとのインターフェースなどを集積していても構わない。
【００２０】
プロセッサ１１内部に含まれるプロセッサコア１１１は、命令フェッチ、プロセッサ状態語、汎用レジスタ、プログラムカウンタ（ＰＣ）、デバッグ支援部１１１１、およびその設定レジスタ等から構成される。状態語には、プロセッサで動作している現在のプログラムが、セキュアドメインか非セキュアドメインかを示すＳ状態１１１２のビットが実装されている。セキュアドメインと非セキュアドメインのプログラムが利用する上記ハード資源はセキュリティ実装の観点から、各ドメイン毎に物理的に別に保持するか、あるいは論理的にコンテキストを切り替えるか、いずれかの方法で互いに隔離される。
【００２１】
プロセッサコア１１１がプログラムカウンタに応じて命令アクセスする際は、命令バス１１６を介してアドレス等の情報がＩ−ＭＭＵ１１２に転送され、アドレス変換（論理アドレスから物理アドレスへの変換）等の処理が行われる。変換されたアドレスは命令キャッシュ１１４に転送され、命令キャッシュ１１４に該当する命令が存在する場合は即座にプロセッサコア１１１に命令を返す。
【００２２】
命令キャッシュはキャッシュラインと呼ばれる要素の集合であり（典型的なサイズとして３２〜１２８バイト）、キャッシュライン毎に主記憶メモリ２上の命令が記憶される。個々のキャッシュラインにはタグ１１４３が実装されている。タグ１１４３には、キャッシュラインに有意の命令が存在するか否かを示すＶビット（例えば１の場合、有意のキャッシュデータ１１４２が存在）や、主記憶メモリ２上のアドレスを記憶するＡＤＤＲビット等が格納される。プロセッサコア１１１から要求された命令のアドレスがＡＤＤＲビットと一致し、かつＶビットでキャッシュデータ１１４２が有意であることが示されていれば、命令キャッシュにプロセッサコア１１１が所望するデータが存在する（キャッシュヒット）と見なされる。そうでない場合は、キャッシュミスヒットとみなされ、メモリバス１６を介して主記憶メモリ２に命令アクセスのためのリード要求が発行される。
【００２３】
やがて主記憶メモリ２から命令のリード値が転送されてきた際には、いずれかのキャッシュラインにキャッシュデータ１１４２として格納され、並行してタグ１１４３のＶビットが１に、ＡＤＤＲが主記憶メモリ上のアドレスに更新される。そして、プロセッサコア１１１に命令が転送され、命令が実行される。実行された命令がメモリへのリード・ライトを発生する命令であった場合には（例えば、ロード命令、ストア命令）、プロセッサコア１１１からデータバス１１７、Ｄ−ＭＭＵ１１３、データキャッシュ１１５、メモリバス１６を介して、主記憶メモリ２とライト転送、リード転送が行われる。Ｄ−ＭＭＵ１１３やデータキャッシュ１１５の動作はＩ−ＭＭＵ１１２や命令キャッシュ１１４とほぼ同様である。
【００２４】
デバッガ支援部１１１１は、プロセッサコア１１１でプログラムが動作している際のデバッグを支援するためのブロックである。このブロックはデバッガインターフェース１５を介して、集積回路１の外部のデバッガ端末４上で動作するデバッガから制御される。デバッガ支援部１１１１では、命令ブレーク、データブレーク等のブレークポイントの処理や、ブレーク時のプロセッサ１１の内部情報取得の動作、あるいは動作中のプロセッサ１１の内部情報のトレース出力等が行われる。また、デバッガ端末４からはデバッガインターフェースを通じて、主記憶メモリ２に直接アクセスすることも可能であり、ブレーク中の主記憶メモリ２の状態を参照することができる。これらの機構により、プロセッサ１１上のプログラムの開発者は、プログラムが思惑通りに動作しない際の原因を解析することができる。
【００２５】
デバッガ支援部１１１１やプロセッサコア１１１からは、ＩＯバス１１８を通じて、キャッシュ等のハード資源の情報にアクセスできる。命令キャッシュ１１４の例では、そのタグ１１４３やキャッシュデータ１１４２等の情報がＩＯバス１１８を通じてアクセスされうる。ＩＯバス１１８は、不揮発メモリインターフェース１２等、集積回路１に搭載されているプロセッサ１１以外のブロックに接続されていてもよく、レジスタ設定の制御など、キャッシュを介する必要のないアクセスに利用されてもよい。
【００２６】
主記憶メモリ２はＤＲＡＭ等の高速転送が可能なメモリであり、プロセッサ１１の動作に利用される命令やデータが格納される。主記憶メモリインターフェース１４はメモリバス１６を介して伝達されるリード、ライト要求を主記憶メモリ２のプロトコルに変換し、その後実際のライト、リード転送を行う。
【００２７】
主記憶メモリ２は、セキュア領域２１と非セキュア領域２２に分類されており、更にセキュア領域２１はセキュア共通領域２１０、セキュアブート領域２１１、セキュアアプリＡ命令領域２１２等の領域に更に細分化されている。これらの領域は、例えば、アドレス上の開始点と終了点によって区分される。（もしくは、4ｋＢなど、所定の大きさの単位で、どの領域に属するかを識別するテーブルを管理してもよい。）これらの情報は主記憶アクセス制限部１４１で管理されており、図２に示す領域の定義に従ってアクセス制限が実施される。アクセス制限とは、権限のあるアクセスに対しては通常通りのリード、ライト動作を許容し、そうでない場合には、ライト・リード動作が失敗に終わるように動作する（例えば、ライト：ライトマスク制御による主記憶メモリ２への上書きの禁止、リード：０データをメモリバス１６を介して返す。）。
【００２８】
以下、図２に示す主記憶メモリ２のアクセス制限に関して説明する。非セキュア領域２２は、アクセス制限が一切実施されない領域であり、非セキュアドメインのプログラムに関係する命令やデータは全てここに配置される。一方でセキュア領域２１はセキュアドメインに属するプログラムによる命令アクセス、データアクセスのみが許容される。更にセキュア領域２１は図２に示すように細分化されている。セキュアブート命令領域２１１や、セキュアアプリＡ命令領域２１２、セキュアアプリＺ命令領域２１３は、セキュアドメインのプログラムの開発者内部でも更にアクセス権のある開発者を絞りたい場合に用いる。たとえば、セキュアブート命令領域２１１は、ハードウェア割り込みまたはソフトウェア割り込み発生時に最初に実行されるハンドラや、セキュアドメインと非セキュアドメインが切り替える制御を行うプログラム等が配置される。これらは、セキュアドメインのセキュリティを確立する上で重要になる基幹部分の命令である。セキュアアプリＡ命令領域２１２以降はアプリケーション依存のプログラムであるが、その中でも他のセキュアドメインのプログラム開発者と隔離する必要があるプログラムに属する命令を配置する。この領域群にはプロセッサコア１１１からはセキュアドメインに属するプログラムの命令アクセスのみが許容されており、データアクセスは許容されない。セキュア共通領域２１０は、上記以外のセキュアドメインに属する命令・データが配置され、セキュアドメインのプログラムに属するアクセスが許容される。
【００２９】
主記憶メモリインターフェースにはメモリバス１６を介してデバッガインターフェースが接続されている。デバッガ認証部１５１はデバッガ端末４を利用している開発者を認証するブロックであり、デバッガ利用時にデバッガ端末４から認証コードが入力される。そして、その値が所定の値である場合に認証されたと判断され、そうでない場合は未認証と判断される。この認証はセキュア領域２１内部の細分化された領域毎に判定され、その認証結果１５１１として保持される。たとえば、細分化されたセキュア領域の数が１６個ある場合には１６個の認証コード列が入力され、各々所定の値であるかどうかがチェックされる。この所定の値は、デバッガ認証部１５１にハード固定された値として実装されていても良いし、セキュアドメインのプログラムのみが設定できるレジスタを通じて可変にできるよう実装されていてもよい。この認証結果１５１１は主記憶メモリアクセス制限部１４１に伝達され、デバッガインターフェース１５からのアクセス制限に利用される。例えば、セキュア共通領域とセキュアアプリＡ命令領域のみが認証されている場合には、デバッガインターフェース１５から上記領域と非セキュア領域にはアクセスできるが、他のセキュア領域へのアクセスは制限される。
【００３０】
更に主記憶メモリインターフェース１４には、メモリバス１６を介して、不揮発メモリインターフェース１２や暗号・復号部１３と接続されている。不揮発メモリ３には、プロセッサ１１が動作するプログラム等が格納されているが、このうちセキュアドメインに属するプログラムは全て暗号化されている。暗号・復号部１３は、この暗号化されたプログラムを復号する役割を担う。すなわち不揮発メモリインターフェース１２からメモリバス１６を介して、暗号化されたプログラムを受信し、暗号・復号部１３で復号する。その後、再度メモリバス１６を介して主記憶メモリ２に対して送信され、上述のセキュア領域２１のいずれかに格納される。なお、このDMA転送の制御は、セキュアドメインのソフトウェアによってのみ実行できるよう、暗号・復号部の制御レジスタにアクセス制限がされことが望ましい。あるいは、復号された平文のセキュアドメインのプログラムが、アクセス制限が実施されない非セキュア領域に格納されないよう、主記憶アクセス制限部１４１で制限されることが望ましい。
【００３１】
図３はメモリバス１６のプロトコルの一例である。クロック信号に同期してその他の信号が伝達される。プロセッサコア１１や暗号・復号部１３等のバスマスタ側がアクセスを要求する際に「バス要求」信号が出力され、バススレーブ側が応答する際に「バス応答」信号をHIGHにすることで、１回のライトやリードの転送が完結する。図３に示すのは、１回のライトと１回のリードを示している。（「リード・ライト識別」信号が１の際はライト、０の際はリードである）。バスマスタ側が「バス要求」信号をHIGHにする際、アドレス信号の他に、「コマンドセキュア属性」も同期して出力される。また、「バス応答」信号に同期してリードデータをバスマスタ側に返す際には、「リードデータセキュア属性」も同期して出力される。
【００３２】
図４は図３に示すメモリバス１６のプロトコルのうち、コマンドセキュア属性１６１とリードデータセキュア属性１６２の信号について、記載したものである。コマンドセキュア属性は４つのビットから構成される。０ビット目は、プロセッサ１１の命令アクセスであれば１、それ以外であれば０となる。このビットは主記憶アクセス制限部１４１において、セキュアブート命令領域２１１やセキュアアプリＡ命令領域等へのアクセスがあった際、命令アクセスか否かの判別するのに利用される。１ビット目は、プロセッサ１１のセキュアドメインに属するプログラムのアクセスであれば１、それ以外であれば０となる。このビットは主記憶アクセス制限部１４１において、セキュア領域２１全体のアクセス制限に利用される。２ビット目はデバッガインターフェース１５からのアクセスであれば１、それ以外であれば０となる。これは図２に示す主記憶アクセス制限部１４１の動作において、デバッガアクセスか否かの判別に利用され、デバッガアクセスであれば認証結果１５１１の値に応じてアクセス許可・不許可の判別がなされる。３ビット目は暗号・復号部１３からセキュア領域への復号アクセスであれば１、それ以外であれば０となる。このビットは主記憶アクセス制限部１４１において、セキュア領域２１全体のアクセス制限に利用される。なお、この３ビット目は暗号・復号部１３が出力するが、その出力制御はセキュアドメインのソフトウェアによってのみ管理されことが望ましい。または、復号する際に用いられる秘匿の鍵値にハードウェア的に関連付けられる（所定の鍵値を利用した場合のみ、このビットが１になる）ように制御されることが望ましい。
【００３３】
リードデータセキュア属性１６２は２つのビットから構成される。これらのビットは主記憶アクセス制限部１４１によって生成され、命令キャッシュ１１４やデータキャッシュ１１５に転送され、キャッシュ上でのアクセス制限に利用される。０ビット目は、リードされた値がセキュア領域２１に属する場合は１に、それ以外の場合は０になる。１ビット目は、リードされた値がデバッガ端末４の開発者にアクセス権限のある領域に属する場合には１、それ以外の場合には０になる。この値は、デバッガ認証部１５１から伝達される認証結果１５１１に応じて決定される。なお、リードデータセキュア属性はプロセッサ１１からのリード動作を要求するコマンドに応答する形で、リードデータと同期して転送される。しかし、そもそもコマンドの内容が不正で（例えば非セキュアドメインからセキュア領域２１に権限の無いアクセスを行った）、リード動作を制限する（例えば常に０値を返す）場合には、その値自体プロセッサ１１上で保護する必要性が無い。このため、リードデータセキュア属性も０値として出力しても良い。
【００３４】
このリードデータセキュア属性１６２は、命令キャッシュ１１４、またはデータキャッシュ１１５においてセキュアタグ１１４４として格納される。図５は、セキュアタグとして格納されるビットを説明したものである。セキュアタグＳが１の場合、主記憶メモリでのアクセス制限と同様のポリシーとして、プロセッサのセキュアドメインのプログラムからのアクセスの場合のみアクセスが許容される。そうでない場合には不正アクセスとして、ライト・リード動作がキャッシュアクセス制限部１１４１にて制限される。具体的には、プロセッサコア１１１のプロセッサ状態語を構成するＳ状態１１２が命令バス１１６、データバス１１７がキャッシュに伝達され、セキュアドメインか否かが判別される。セキュアタグＤｅが１の場合は、デバッガインターフェース１５からのキャッシュへのアクセスに用いられる、ＩＯバス１１８を介した内部情報を観測するためのアクセスが制限される。
【００３５】
ここまでに述べたように、本発明に関連するセキュアタグＤｅビットは、デバッガを利用する開発者の権限を反映する。例えば、セキュア共通領域とセキュアアプリＡ命令領域のみが認証されている場合には、これらの領域と非セキュア領域２２に属するキャッシュデータ１１４２を格納するキャッシュラインに関してＤｅビットが１となる。その結果としてデバッガからのＩＯアクセスが許容される。このため、デバッガから主記憶メモリ２へのアクセスと同様に、権限を有する開発者のみがデバッグ対象となるキャッシュラインの内部情報の観測が可能となる。本実施の形態ではセキュア領域２１が多数に細分化されたとしても、このＤｅビットを単一のビットとして実現できる。このため、プロセッサのキャッシュ実装に汎用性を持たせることができるとともに、セキュアタグ１１４１の容量の増加を回避することができる。特にプロセッサ１１に該当する部分が汎用のＩＰとして提供されることが多い昨今では、この汎用性の維持は重要である。また、このセキュアタグに応じたキャッシュアクセス制限部１１４１の動作は、ＭＭＵでのアドレス変換を介した後のアドレスをタグ１１４３のアドレスと比較するという、一般的にプロセッサの動作周波数を律速しやすい論理回路に上乗せする形で実装されることになる。このため、セキュアタグ１１４４のビット数は極力抑制できることが望ましい。
【００３６】
一般的にセキュリティ実装を考える上では、ネットワークを経由したウィルスの侵入や、フラッシュメモリ等の不揮発メモリ３を物理的にはがしてその内部を解析し更に改竄して置き換える等のリスクが存在する。しかし、ソフト開発者の中での情報隔離において、最も大きいリスクは、（意図的な、あるいは意図しない）デバッガの不正な使用である。なぜならば、デバッガを利用する環境は、上記のリスクと異なり、ソフトウェアの開発者が利用しやすいように意図した上で提供されるツールであり、このことが逆にセキュリティを実現する上でのリスクになりうるからである。本発明の機構によれば、セキュリティ実装を要するソフト開発者の中でのデバッグ権限の細分化をハード実装上の課題を回避しつつ実現することができる。
【００３７】
なお、本実施例ではプロセッサ内部のメモリとしてキャッシュメモリを想定した記載を行ったが、キャッシュメモリではなく密結合メモリ（Tightly Coupled Memory）であってもよい。密結合メモリは、コンピュータアーキテクチャ上、キャッシュと同様にプロセッサに比較的近いメモリ階層に配置される。しかし、ハードウェアだけで入れ替えの制御が実行されるキャッシュと異なり、入れ替え動作はソフトウェアの制御によって実現される。本発明の観点で言えば、密結合メモリをある一定の大きさの要素に分割し、上述のキャッシュと同様にセキュアタグ１１４４を実装し、プロセッサコアやデバッガからのアクセスに対してアクセス制限を実施すれば良い。
【００３８】
なお、本実施例では最近の高速プロセッサでは一般的な命令キャッシュ・データキャッシュが分離された、いわゆるハーバードアーキテクチャを前提に記載したが、命令キャッシュやデータキャッシュが統合されたキャッシュであっても良い。この場合は、命令アクセスのみ許容するセキュア領域のアクセス制限ポリシーを実現するため、「命令アクセスのみ許容する」ことを管理するためのセキュアタグ１１４４（たとえば、Ｉビット）を更に実装し、これをもとにアクセス制限を実施することが望ましい。また、最近の高速プロセッサでは、キャッシュの階層が本実施例で述べたような１階層だけでなく、複数の階層が存在する場合が多くなっているが、その場合であっても個々の階層のキャッシュの動作はこれまで述べてきた内容と同様である。
【００３９】
また、最近のプロセッサでは、いわゆるマルチ・プロセッサで構成されるものが多い。図６はその概略を示したものであり、プロセッサコア１１１やＩ−ＭＭＵ１１２、Ｄ−ＭＭＵ１１３、命令キャッシュ１１４やデータキャッシュ１１５等の構成は、図１とほぼ同様である。明確に異なるのは、キャッシュが複数存在し、その間でスヌープバス１１９を介して通信することである。これは、以下の２つの目的で通信される。（１）キャッシュミスヒット時のメモリアクセス待ち時間が非常に大きいため、メモリアクセスを回避する形で、キャッシュ同士でデータを参照しあう。（２）データキャッシュのデータをプロセッサコアがライト（更新）した場合にキャッシュ同士で一貫性を確保する。本発明の観点で言えば、キャッシュにアクセスするバスとして、命令バス１１６、データバス１１７、ＩＯバス１１８に加えて、スヌープバス１１９が新たなアクセス経路として追加されることになる。このため、この場合においても適切にアクセス制限を実施する必要がある。そのため、セキュアタグ１１４４によって保護対象と定義されるキャッシュデータ１１４２が他のキャッシュから参照される場合は、キャッシュデータ１１４２にセキュアタグ１１４４を付随する形で他のキャッシュに転送し、その中で図５に示すようなアクセス制限が全く同様に実装することが望ましい。
【００４０】
なお、本実施例は、発明の実施に適したものの一例にすぎず、本発明の使用または機能の範囲についてどんな制限も意味しない。またこの例示的な構成に示すコンポーネントのどれか１つまたは複数に関してどんな依存や要件を有するものとも解釈すべきではない。
【産業上の利用可能性】
【００４１】
本発明にかかるセキュリティ装置ならびにセキュリティシステムを用いれば、多種多様なセキュリティ実装要件を持つ機器における開発者間の情報管理をハードウェアとして保証することが可能になる。よって、汎用的なアプリケーションプロセッサを搭載する機器（パーソナルコンピュータ、ワークスレーション、デジタルＡＶ機器、携帯電話等）に有用である。
【図面の簡単な説明】
【００４２】
【図１】本発明の実施の形態を示す構成図
【図２】本発明の実施の形態における主記憶メモリ上のセキュア領域に対するアクセス制限の一例を示す図
【図３】本発明の実施の形態におけるメモリバスのプロトコルの一例を示す図
【図４】本発明の実施の形態におけるメモリバスのセキュア信号定義の一例を示す図
【図５】本発明の実施の形態におけるキャッシュ上のセキュアタグの一例を示す図
【図６】本発明の実施の形態における複数キャッシュ間のスヌープバスの一例を示す図
【図７】特許文献１にある従来技術を示す図
【符号の説明】
【００４３】
１    セキュリティ装置
１１    プロセッサ
１１１    プロセッサコア
１１１１    デバッグ支援部
１１１２    Ｓ状態
１１２    Ｉ−ＭＭＵ
１１３    Ｄ−ＭＭＵ
１１４    命令キャッシュ
１１４１    キャッシュアクセス制限部
１１４２    キャッシュデータ
１１４３    タグ
１１４４    セキュアタグ
１１５    命令キャッシュ
１１５１    キャッシュアクセス制限部
１１５２    キャッシュデータ
１１５３    タグ
１１５４    セキュアタグ
１１６    命令バス
１１７    データバス
１１８    ＩＯバス
１１９    スヌープバス
１２    不揮発メモリインターフェース
１３    暗号・復号部
１４    主記憶メモリインターフェース
１４１    主記憶アクセス制限部
１５    デバッガインターフェース
１５１    デバッガ認証部
１５１１    認証結果
１６    メモリバス
１６１    コマンドセキュア属性１６１
１６２    リードセキュア属性１６２
２    主記憶メモリ
２１    セキュア領域
２１０    セキュア共通領域
２１１    セキュアブート命令領域
２１２    セキュアアプリＡ命令領域
２１３    セキュアアプリＺ命令領域
２２    非セキュア領域
３    不揮発メモリ
４    デバッガ端末
【図１】
2010134572.tif 000003
【図２】
2010134572.tif 000004
【図３】
2010134572.tif 000005
【図４】
2010134572.tif 000006
【図５】
2010134572.tif 000007
【図６】
2010134572.tif 000008
【図７】
2010134572.tif 000009