説明

セキュリティを実現する装置、および方法

【課題】セキュアな実装を要するソフトウェアの開発者内部でも更にアクセス権を細分化する場合においても、そのキャッシュやプロセッサの汎用性を維持すること。
【解決手段】主記憶メモリ2上に確保されるセキュア領域21は開発者のデバッグ権限に応じて細分化された複数の領域211〜213が確保される。キャッシュではセキュアタグ1144として、開発者のデバッグ権限を示す「De」ビットを設け、集積回路1上のプログラムのデバッグをしている開発者の認証結果1511に応じた値を反映させる。この値に応じてデバッガからキャッシュへのアクセスを制限することで、細分化されたセキュア領域を判別する識別子をキャッシュのタグとして実装することが不要となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はマイクロプロセッサを構成要素として有する装置または方法であって、機密情報を有するマイクロプロセッサのプログラムに対して、権限の無い者がアクセスする行為を阻止することに関する。
【背景技術】
【0002】
昨今のコンピュータ機器、民生機器の実装においては、セキュリティ関連の配慮が求められるケースが多くなっている。例えば、有価コンテンツを扱う際にはその利用方法を規定したDRM(Digital Right Management)に準拠することが求められ、コンテンツの復号に用いる鍵や再生可能回数等の権利情報等が容易に暴露したり、改竄されたりすることは単に機器を製造するメーカだけでなく、DRMを利用したサービスの枠組みに多大な影響を及ぼすことにもなりうる。他にもクレジットカード等の個人情報を不正に採取しようとしたり、単にユーザーの機器そのものに損害を与えるものなど、セキュリティのリスクとして挙げられるものは多様に存在する。
【0003】
このような事情を踏まえ、機器内部のセキュリティ機能を従来ソフトウェアだけで実現するのではなく、ハードウェア的な機構と協調動作することで、より強固なセキュリティを実現できる実装するアーキテクチャが提案されている。その中でも代表的なものに、ARM社によるTrustZone(登録商標)がある。この技術では、(特許文献1)にあるようにソフトウェアがセキュアドメインと非セキュアドメインに分離される。そして、それを実現するために、プロセッサ内部の汎用レジスタやキャッシュ、あるいは主記憶メモリやその他ペリフェラル等のハードウェア資源も物理的または論理的にドメイン毎に隔離され、セキュアドメインの資源に対して、非セキュアドメインからアクセスが禁止されることをハードウェアが保証する。
【0004】
具体的な構成を、図7を用いて説明する。プロセッサ11はプロセッサコア111内部の状態を示すS状態1112のビットによって、セキュアドメインで動作しているか、非セキュアドメインで動作しているかが区分される。主記憶メモリ2はセキュア領域21と非セキュア領域21に分類され、セキュア領域21に対してはセキュアドメインのみがアクセス権限を有する。これを実現するため、プロセッサ11がメモリバス16を介して主記憶メモリ2にアクセスする場合、コマンドセキュア属性161としてセキュアドメインである旨の情報を付加し、主記憶メモリアクセス制限部141ではこれを参照して、セキュア領域21へのアクセスを許可するか否かを判別する。
【0005】
プロセッサ11の内部にある命令キャッシュ114、データキャッシュ115は主記憶メモリ2の内容の一部を保持する機構であり、主記憶メモリアクセス制限141での制限と同等の制限をキャッシュ上のデータに対しても実施することが求められる。これを実現するために、主記憶メモリ2から命令キャッシュ114、データキャッシュ115に転送する際に、リードセキュア属性として、セキュア領域に属するデータである旨の情報を付加する。命令キャッシュ114、データキャッシュ115では、この情報をキャッシュ上のセキュアタグ1144として格納し、キャッシュ上のデータへのアクセス制限に利用する。このようなセキュアタグ1144はキャッシュラインと呼ばれる単位毎に付けられ、キャッシュ内にセキュアドメインのデータや非セキュアドメインのデータが混在しても、セキュリティが破綻しないように考慮されている。
【0006】
上述の例は、セキュアドメインに属するソフトウェアが(少なくともハードウェアが識別する必要があるものが)1種類であるモデルに基づいたものであった。一方、セキュリティ実装が必要なソフトウェアが複数種類存在することを前提にした技術も提案されている。(特許文献2)はその例である。保護するべきプログラムの種類だけメモリ上に領域が分割され、その数だけプロセッサ内部でも明確に識別される。そして、ある領域から命令を実行した際のみ、プロセッサは同一のメモリ領域に格納されてあるデータ(ロード、ストアなどのデータアクセス)が許容される。
【特許文献1】特開2004-171569号公報
【特許文献2】特開2005-129041号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
セキュリティ実装が必要になるソフトウェアの規模は年々増大しており、(特許文献1)にあるようなセキュアドメインと非セキュアドメインという分離では不都合が生じるケースが多くなっている。具体的には、機密情報を実装したソフトウェアが存在したり、ごく一部の開発者にしか契約上開示されていないソフトウェアが存在したり、複数会社が共同して開発する場合が該当する。この場合、セキュアドメインの開発者内部であっても、更にそのアクセス権限を細分化した形で管理することが望ましい。
【0008】
これを実現するためには(特許文献2)のように主記憶メモリも複数種類に分割して、それぞれに対してアクセス権限を判定することが求められる。この場合、必然的に、プロセッサ内部のキャッシュに関しても同様の施策が求められる。すなわち、前述のキャッシュのタグに対して、主記憶メモリ上の領域の数と同じ数だけハードウェアが識別するためのセキュアタグを確保し、セキュアタグの示す値に応じてアクセスを制限するというやり方である。
【0009】
しかしながら、主記憶メモリ上の領域の数に応じてキャッシュのタグのビット数を増加させる方法は、タグを記憶する容量の増加、プロセッサの動作周波数(特にタイミング上最もクリティカルになりやすいキャッシュヒット判定やキャッシュデータ選択にかかる時間)に対して悪影響を与える。更に、主記憶メモリ上の領域の数は機器に応じて要件が異なることが多い一方で、昨今プロセッサはIP(Intellectual Property)として販売・提供されることが多く、特定の領域数を想定した実装はIPとしての汎用性を損なうことになる。
【0010】
本発明は、前記従来の課題を解決するもので、セキュリティ実装が必要なソフトウェア開発者内部でも更に細分化されたアクセス権限の管理が発生する場合に、プロセッサ実装に要するハード資源の抑制と、プロセッサの汎用性を損なわない形で、実現するための手法を提供することを目的とする。
【課題を解決するための手段】
【0011】
前記従来の課題を解決するために、本発明のセキュリティ装置は、
プロセッサと、
前記プロセッサに内蔵されたデバッグ支援部と、
少なくとも前記プロセッサの命令を配置される主記憶メモリと、
前記プロセッサと主記憶メモリとの間の転送に用いられるメモリバスと、
前記主記憶メモリは複数の領域に分割されており、それぞれに対するアクセスを制限する主記憶メモリアクセス制限部と、
前記プロセッサに内蔵された、前記主記憶メモリの内容の一部を保持するプロセッサ内部メモリと、
前記プロセッサ内部メモリへのアクセス権限を管理するために、その要素毎に保持されるフラグと、
前記フラグに応じて前記プロセッサ内部メモリに対するアクセスを制限する内部メモリアクセス制限部と、
前記デバッグ支援部は、前記セキュリティ装置上で動作しているプログラムをデバッグしている開発者の権限を、前記主記憶メモリ上の複数の領域毎に判定する認証部を有し、
前記主記憶メモリアクセス制限部は、上記認証部の結果に応じ開発者のアクセス権を判定し、その判定結果から個々のアクセスを制限する機能を少なくとも有し、
前記フラグには前記判定結果に対応した値を開発者権限判定フラグとして少なくとも有することを特徴とする。
【0012】
また、本発明のセキュリティ装置は、
請求項1、2に記載のセキュリティ装置であって、
前記主記憶メモリの複数の領域は、前記プロセッサからの命令アクセス、または暗号化された前記命令の復号結果を書き込むアクセスのみが許容される、複数の命令専用領域から構成されることを特徴とする。
【0013】
また、本発明のセキュリティ装置は、
請求項1から6に記載のセキュリティ装置であって、
前記フラグは、関連するプロセッサ内部メモリの要素の内容が主記憶メモリから前記メモリバスを介して転送される際に、並行して前記主記憶メモリアクセス制限部から転送されることを特徴とする。
【0014】
また、本発明のセキュリティ装置は、
請求項1から7に記載のセキュリティ装置であって、
前記プロセッサ内部メモリが前記プロセッサ内に複数存在し、その間で主記憶メモリ上の同一アドレスに属するデータについて一貫性維持のためのアクセスを行う際、前記フラグに関しても一貫性を維持することを特徴とする。
【発明の効果】
【0015】
以上説明したように、本発明の装置ならびに手段によれば、プロセッサに要するハード資源の抑制、プロセッサ動作周波数への影響の回避、プロセッサの汎用性の維持を実現しつつ、セキュリティ実装に関係するソフトウェアの開発者内部でも更に細分化したアクセス制限を実施するためのプロセッサ内部の機構を実現することができるという効果を有する。
【発明を実施するための最良の形態】
【0016】
以下本発明の実施の形態について、図面を参照しながら説明する。
【0017】
セキュリティ装置の構成
図1に本発明を実施することができる例示的な構成を示す。
【0018】
セキュリティ装置は、その主要な機能を集積した集積回路1、集積回路1の動作に必要なプロセッサの命令やその他各種データを配置する主記憶メモリ2、補助記憶装置として動作する不揮発メモリ3、集積回路1で動作するプログラムの解析に用いるデバッガ端末4とから構成される。不揮発メモリ3はフラッシュメモリでも構わないし、HDD(ハード・ディスク・ドライブ)でも構わない。
【0019】
集積回路1は、プロセッサ11、不揮発メモリ3との入出力転送を担う不揮発メモリインターフェース12、暗号機能を持つアクセラレータである暗号・復号部13、主記憶メモリインターフェース14、デバッガインターフェース15、メモリバス16から構成される。なお、図1に示す集積回路1はその一例であり、その用途に応じて、他にも様々な機能を内包していても良い。たとえば、オーディオ・ビデオのエンコード・デコード機能やグラフィックス機能、ディスプレイデバイスやスピーカとのインターフェースなどを集積していても構わない。
【0020】
プロセッサ11内部に含まれるプロセッサコア111は、命令フェッチ、プロセッサ状態語、汎用レジスタ、プログラムカウンタ(PC)、デバッグ支援部1111、およびその設定レジスタ等から構成される。状態語には、プロセッサで動作している現在のプログラムが、セキュアドメインか非セキュアドメインかを示すS状態1112のビットが実装されている。セキュアドメインと非セキュアドメインのプログラムが利用する上記ハード資源はセキュリティ実装の観点から、各ドメイン毎に物理的に別に保持するか、あるいは論理的にコンテキストを切り替えるか、いずれかの方法で互いに隔離される。
【0021】
プロセッサコア111がプログラムカウンタに応じて命令アクセスする際は、命令バス116を介してアドレス等の情報がI−MMU112に転送され、アドレス変換(論理アドレスから物理アドレスへの変換)等の処理が行われる。変換されたアドレスは命令キャッシュ114に転送され、命令キャッシュ114に該当する命令が存在する場合は即座にプロセッサコア111に命令を返す。
【0022】
命令キャッシュはキャッシュラインと呼ばれる要素の集合であり(典型的なサイズとして32〜128バイト)、キャッシュライン毎に主記憶メモリ2上の命令が記憶される。個々のキャッシュラインにはタグ1143が実装されている。タグ1143には、キャッシュラインに有意の命令が存在するか否かを示すVビット(例えば1の場合、有意のキャッシュデータ1142が存在)や、主記憶メモリ2上のアドレスを記憶するADDRビット等が格納される。プロセッサコア111から要求された命令のアドレスがADDRビットと一致し、かつVビットでキャッシュデータ1142が有意であることが示されていれば、命令キャッシュにプロセッサコア111が所望するデータが存在する(キャッシュヒット)と見なされる。そうでない場合は、キャッシュミスヒットとみなされ、メモリバス16を介して主記憶メモリ2に命令アクセスのためのリード要求が発行される。
【0023】
やがて主記憶メモリ2から命令のリード値が転送されてきた際には、いずれかのキャッシュラインにキャッシュデータ1142として格納され、並行してタグ1143のVビットが1に、ADDRが主記憶メモリ上のアドレスに更新される。そして、プロセッサコア111に命令が転送され、命令が実行される。実行された命令がメモリへのリード・ライトを発生する命令であった場合には(例えば、ロード命令、ストア命令)、プロセッサコア111からデータバス117、D−MMU113、データキャッシュ115、メモリバス16を介して、主記憶メモリ2とライト転送、リード転送が行われる。D−MMU113やデータキャッシュ115の動作はI−MMU112や命令キャッシュ114とほぼ同様である。
【0024】
デバッガ支援部1111は、プロセッサコア111でプログラムが動作している際のデバッグを支援するためのブロックである。このブロックはデバッガインターフェース15を介して、集積回路1の外部のデバッガ端末4上で動作するデバッガから制御される。デバッガ支援部1111では、命令ブレーク、データブレーク等のブレークポイントの処理や、ブレーク時のプロセッサ11の内部情報取得の動作、あるいは動作中のプロセッサ11の内部情報のトレース出力等が行われる。また、デバッガ端末4からはデバッガインターフェースを通じて、主記憶メモリ2に直接アクセスすることも可能であり、ブレーク中の主記憶メモリ2の状態を参照することができる。これらの機構により、プロセッサ11上のプログラムの開発者は、プログラムが思惑通りに動作しない際の原因を解析することができる。
【0025】
デバッガ支援部1111やプロセッサコア111からは、IOバス118を通じて、キャッシュ等のハード資源の情報にアクセスできる。命令キャッシュ114の例では、そのタグ1143やキャッシュデータ1142等の情報がIOバス118を通じてアクセスされうる。IOバス118は、不揮発メモリインターフェース12等、集積回路1に搭載されているプロセッサ11以外のブロックに接続されていてもよく、レジスタ設定の制御など、キャッシュを介する必要のないアクセスに利用されてもよい。
【0026】
主記憶メモリ2はDRAM等の高速転送が可能なメモリであり、プロセッサ11の動作に利用される命令やデータが格納される。主記憶メモリインターフェース14はメモリバス16を介して伝達されるリード、ライト要求を主記憶メモリ2のプロトコルに変換し、その後実際のライト、リード転送を行う。
【0027】
主記憶メモリ2は、セキュア領域21と非セキュア領域22に分類されており、更にセキュア領域21はセキュア共通領域210、セキュアブート領域211、セキュアアプリA命令領域212等の領域に更に細分化されている。これらの領域は、例えば、アドレス上の開始点と終了点によって区分される。(もしくは、4kBなど、所定の大きさの単位で、どの領域に属するかを識別するテーブルを管理してもよい。)これらの情報は主記憶アクセス制限部141で管理されており、図2に示す領域の定義に従ってアクセス制限が実施される。アクセス制限とは、権限のあるアクセスに対しては通常通りのリード、ライト動作を許容し、そうでない場合には、ライト・リード動作が失敗に終わるように動作する(例えば、ライト:ライトマスク制御による主記憶メモリ2への上書きの禁止、リード:0データをメモリバス16を介して返す。)。
【0028】
以下、図2に示す主記憶メモリ2のアクセス制限に関して説明する。非セキュア領域22は、アクセス制限が一切実施されない領域であり、非セキュアドメインのプログラムに関係する命令やデータは全てここに配置される。一方でセキュア領域21はセキュアドメインに属するプログラムによる命令アクセス、データアクセスのみが許容される。更にセキュア領域21は図2に示すように細分化されている。セキュアブート命令領域211や、セキュアアプリA命令領域212、セキュアアプリZ命令領域213は、セキュアドメインのプログラムの開発者内部でも更にアクセス権のある開発者を絞りたい場合に用いる。たとえば、セキュアブート命令領域211は、ハードウェア割り込みまたはソフトウェア割り込み発生時に最初に実行されるハンドラや、セキュアドメインと非セキュアドメインが切り替える制御を行うプログラム等が配置される。これらは、セキュアドメインのセキュリティを確立する上で重要になる基幹部分の命令である。セキュアアプリA命令領域212以降はアプリケーション依存のプログラムであるが、その中でも他のセキュアドメインのプログラム開発者と隔離する必要があるプログラムに属する命令を配置する。この領域群にはプロセッサコア111からはセキュアドメインに属するプログラムの命令アクセスのみが許容されており、データアクセスは許容されない。セキュア共通領域210は、上記以外のセキュアドメインに属する命令・データが配置され、セキュアドメインのプログラムに属するアクセスが許容される。
【0029】
主記憶メモリインターフェースにはメモリバス16を介してデバッガインターフェースが接続されている。デバッガ認証部151はデバッガ端末4を利用している開発者を認証するブロックであり、デバッガ利用時にデバッガ端末4から認証コードが入力される。そして、その値が所定の値である場合に認証されたと判断され、そうでない場合は未認証と判断される。この認証はセキュア領域21内部の細分化された領域毎に判定され、その認証結果1511として保持される。たとえば、細分化されたセキュア領域の数が16個ある場合には16個の認証コード列が入力され、各々所定の値であるかどうかがチェックされる。この所定の値は、デバッガ認証部151にハード固定された値として実装されていても良いし、セキュアドメインのプログラムのみが設定できるレジスタを通じて可変にできるよう実装されていてもよい。この認証結果1511は主記憶メモリアクセス制限部141に伝達され、デバッガインターフェース15からのアクセス制限に利用される。例えば、セキュア共通領域とセキュアアプリA命令領域のみが認証されている場合には、デバッガインターフェース15から上記領域と非セキュア領域にはアクセスできるが、他のセキュア領域へのアクセスは制限される。
【0030】
更に主記憶メモリインターフェース14には、メモリバス16を介して、不揮発メモリインターフェース12や暗号・復号部13と接続されている。不揮発メモリ3には、プロセッサ11が動作するプログラム等が格納されているが、このうちセキュアドメインに属するプログラムは全て暗号化されている。暗号・復号部13は、この暗号化されたプログラムを復号する役割を担う。すなわち不揮発メモリインターフェース12からメモリバス16を介して、暗号化されたプログラムを受信し、暗号・復号部13で復号する。その後、再度メモリバス16を介して主記憶メモリ2に対して送信され、上述のセキュア領域21のいずれかに格納される。なお、このDMA転送の制御は、セキュアドメインのソフトウェアによってのみ実行できるよう、暗号・復号部の制御レジスタにアクセス制限がされことが望ましい。あるいは、復号された平文のセキュアドメインのプログラムが、アクセス制限が実施されない非セキュア領域に格納されないよう、主記憶アクセス制限部141で制限されることが望ましい。
【0031】
図3はメモリバス16のプロトコルの一例である。クロック信号に同期してその他の信号が伝達される。プロセッサコア11や暗号・復号部13等のバスマスタ側がアクセスを要求する際に「バス要求」信号が出力され、バススレーブ側が応答する際に「バス応答」信号をHIGHにすることで、1回のライトやリードの転送が完結する。図3に示すのは、1回のライトと1回のリードを示している。(「リード・ライト識別」信号が1の際はライト、0の際はリードである)。バスマスタ側が「バス要求」信号をHIGHにする際、アドレス信号の他に、「コマンドセキュア属性」も同期して出力される。また、「バス応答」信号に同期してリードデータをバスマスタ側に返す際には、「リードデータセキュア属性」も同期して出力される。
【0032】
図4は図3に示すメモリバス16のプロトコルのうち、コマンドセキュア属性161とリードデータセキュア属性162の信号について、記載したものである。コマンドセキュア属性は4つのビットから構成される。0ビット目は、プロセッサ11の命令アクセスであれば1、それ以外であれば0となる。このビットは主記憶アクセス制限部141において、セキュアブート命令領域211やセキュアアプリA命令領域等へのアクセスがあった際、命令アクセスか否かの判別するのに利用される。1ビット目は、プロセッサ11のセキュアドメインに属するプログラムのアクセスであれば1、それ以外であれば0となる。このビットは主記憶アクセス制限部141において、セキュア領域21全体のアクセス制限に利用される。2ビット目はデバッガインターフェース15からのアクセスであれば1、それ以外であれば0となる。これは図2に示す主記憶アクセス制限部141の動作において、デバッガアクセスか否かの判別に利用され、デバッガアクセスであれば認証結果1511の値に応じてアクセス許可・不許可の判別がなされる。3ビット目は暗号・復号部13からセキュア領域への復号アクセスであれば1、それ以外であれば0となる。このビットは主記憶アクセス制限部141において、セキュア領域21全体のアクセス制限に利用される。なお、この3ビット目は暗号・復号部13が出力するが、その出力制御はセキュアドメインのソフトウェアによってのみ管理されことが望ましい。または、復号する際に用いられる秘匿の鍵値にハードウェア的に関連付けられる(所定の鍵値を利用した場合のみ、このビットが1になる)ように制御されることが望ましい。
【0033】
リードデータセキュア属性162は2つのビットから構成される。これらのビットは主記憶アクセス制限部141によって生成され、命令キャッシュ114やデータキャッシュ115に転送され、キャッシュ上でのアクセス制限に利用される。0ビット目は、リードされた値がセキュア領域21に属する場合は1に、それ以外の場合は0になる。1ビット目は、リードされた値がデバッガ端末4の開発者にアクセス権限のある領域に属する場合には1、それ以外の場合には0になる。この値は、デバッガ認証部151から伝達される認証結果1511に応じて決定される。なお、リードデータセキュア属性はプロセッサ11からのリード動作を要求するコマンドに応答する形で、リードデータと同期して転送される。しかし、そもそもコマンドの内容が不正で(例えば非セキュアドメインからセキュア領域21に権限の無いアクセスを行った)、リード動作を制限する(例えば常に0値を返す)場合には、その値自体プロセッサ11上で保護する必要性が無い。このため、リードデータセキュア属性も0値として出力しても良い。
【0034】
このリードデータセキュア属性162は、命令キャッシュ114、またはデータキャッシュ115においてセキュアタグ1144として格納される。図5は、セキュアタグとして格納されるビットを説明したものである。セキュアタグSが1の場合、主記憶メモリでのアクセス制限と同様のポリシーとして、プロセッサのセキュアドメインのプログラムからのアクセスの場合のみアクセスが許容される。そうでない場合には不正アクセスとして、ライト・リード動作がキャッシュアクセス制限部1141にて制限される。具体的には、プロセッサコア111のプロセッサ状態語を構成するS状態112が命令バス116、データバス117がキャッシュに伝達され、セキュアドメインか否かが判別される。セキュアタグDeが1の場合は、デバッガインターフェース15からのキャッシュへのアクセスに用いられる、IOバス118を介した内部情報を観測するためのアクセスが制限される。
【0035】
ここまでに述べたように、本発明に関連するセキュアタグDeビットは、デバッガを利用する開発者の権限を反映する。例えば、セキュア共通領域とセキュアアプリA命令領域のみが認証されている場合には、これらの領域と非セキュア領域22に属するキャッシュデータ1142を格納するキャッシュラインに関してDeビットが1となる。その結果としてデバッガからのIOアクセスが許容される。このため、デバッガから主記憶メモリ2へのアクセスと同様に、権限を有する開発者のみがデバッグ対象となるキャッシュラインの内部情報の観測が可能となる。本実施の形態ではセキュア領域21が多数に細分化されたとしても、このDeビットを単一のビットとして実現できる。このため、プロセッサのキャッシュ実装に汎用性を持たせることができるとともに、セキュアタグ1141の容量の増加を回避することができる。特にプロセッサ11に該当する部分が汎用のIPとして提供されることが多い昨今では、この汎用性の維持は重要である。また、このセキュアタグに応じたキャッシュアクセス制限部1141の動作は、MMUでのアドレス変換を介した後のアドレスをタグ1143のアドレスと比較するという、一般的にプロセッサの動作周波数を律速しやすい論理回路に上乗せする形で実装されることになる。このため、セキュアタグ1144のビット数は極力抑制できることが望ましい。
【0036】
一般的にセキュリティ実装を考える上では、ネットワークを経由したウィルスの侵入や、フラッシュメモリ等の不揮発メモリ3を物理的にはがしてその内部を解析し更に改竄して置き換える等のリスクが存在する。しかし、ソフト開発者の中での情報隔離において、最も大きいリスクは、(意図的な、あるいは意図しない)デバッガの不正な使用である。なぜならば、デバッガを利用する環境は、上記のリスクと異なり、ソフトウェアの開発者が利用しやすいように意図した上で提供されるツールであり、このことが逆にセキュリティを実現する上でのリスクになりうるからである。本発明の機構によれば、セキュリティ実装を要するソフト開発者の中でのデバッグ権限の細分化をハード実装上の課題を回避しつつ実現することができる。
【0037】
なお、本実施例ではプロセッサ内部のメモリとしてキャッシュメモリを想定した記載を行ったが、キャッシュメモリではなく密結合メモリ(Tightly Coupled Memory)であってもよい。密結合メモリは、コンピュータアーキテクチャ上、キャッシュと同様にプロセッサに比較的近いメモリ階層に配置される。しかし、ハードウェアだけで入れ替えの制御が実行されるキャッシュと異なり、入れ替え動作はソフトウェアの制御によって実現される。本発明の観点で言えば、密結合メモリをある一定の大きさの要素に分割し、上述のキャッシュと同様にセキュアタグ1144を実装し、プロセッサコアやデバッガからのアクセスに対してアクセス制限を実施すれば良い。
【0038】
なお、本実施例では最近の高速プロセッサでは一般的な命令キャッシュ・データキャッシュが分離された、いわゆるハーバードアーキテクチャを前提に記載したが、命令キャッシュやデータキャッシュが統合されたキャッシュであっても良い。この場合は、命令アクセスのみ許容するセキュア領域のアクセス制限ポリシーを実現するため、「命令アクセスのみ許容する」ことを管理するためのセキュアタグ1144(たとえば、Iビット)を更に実装し、これをもとにアクセス制限を実施することが望ましい。また、最近の高速プロセッサでは、キャッシュの階層が本実施例で述べたような1階層だけでなく、複数の階層が存在する場合が多くなっているが、その場合であっても個々の階層のキャッシュの動作はこれまで述べてきた内容と同様である。
【0039】
また、最近のプロセッサでは、いわゆるマルチ・プロセッサで構成されるものが多い。図6はその概略を示したものであり、プロセッサコア111やI−MMU112、D−MMU113、命令キャッシュ114やデータキャッシュ115等の構成は、図1とほぼ同様である。明確に異なるのは、キャッシュが複数存在し、その間でスヌープバス119を介して通信することである。これは、以下の2つの目的で通信される。(1)キャッシュミスヒット時のメモリアクセス待ち時間が非常に大きいため、メモリアクセスを回避する形で、キャッシュ同士でデータを参照しあう。(2)データキャッシュのデータをプロセッサコアがライト(更新)した場合にキャッシュ同士で一貫性を確保する。本発明の観点で言えば、キャッシュにアクセスするバスとして、命令バス116、データバス117、IOバス118に加えて、スヌープバス119が新たなアクセス経路として追加されることになる。このため、この場合においても適切にアクセス制限を実施する必要がある。そのため、セキュアタグ1144によって保護対象と定義されるキャッシュデータ1142が他のキャッシュから参照される場合は、キャッシュデータ1142にセキュアタグ1144を付随する形で他のキャッシュに転送し、その中で図5に示すようなアクセス制限が全く同様に実装することが望ましい。
【0040】
なお、本実施例は、発明の実施に適したものの一例にすぎず、本発明の使用または機能の範囲についてどんな制限も意味しない。またこの例示的な構成に示すコンポーネントのどれか1つまたは複数に関してどんな依存や要件を有するものとも解釈すべきではない。
【産業上の利用可能性】
【0041】
本発明にかかるセキュリティ装置ならびにセキュリティシステムを用いれば、多種多様なセキュリティ実装要件を持つ機器における開発者間の情報管理をハードウェアとして保証することが可能になる。よって、汎用的なアプリケーションプロセッサを搭載する機器(パーソナルコンピュータ、ワークスレーション、デジタルAV機器、携帯電話等)に有用である。
【図面の簡単な説明】
【0042】
【図1】本発明の実施の形態を示す構成図
【図2】本発明の実施の形態における主記憶メモリ上のセキュア領域に対するアクセス制限の一例を示す図
【図3】本発明の実施の形態におけるメモリバスのプロトコルの一例を示す図
【図4】本発明の実施の形態におけるメモリバスのセキュア信号定義の一例を示す図
【図5】本発明の実施の形態におけるキャッシュ上のセキュアタグの一例を示す図
【図6】本発明の実施の形態における複数キャッシュ間のスヌープバスの一例を示す図
【図7】特許文献1にある従来技術を示す図
【符号の説明】
【0043】
1 セキュリティ装置
11 プロセッサ
111 プロセッサコア
1111 デバッグ支援部
1112 S状態
112 I−MMU
113 D−MMU
114 命令キャッシュ
1141 キャッシュアクセス制限部
1142 キャッシュデータ
1143 タグ
1144 セキュアタグ
115 命令キャッシュ
1151 キャッシュアクセス制限部
1152 キャッシュデータ
1153 タグ
1154 セキュアタグ
116 命令バス
117 データバス
118 IOバス
119 スヌープバス
12 不揮発メモリインターフェース
13 暗号・復号部
14 主記憶メモリインターフェース
141 主記憶アクセス制限部
15 デバッガインターフェース
151 デバッガ認証部
1511 認証結果
16 メモリバス
161 コマンドセキュア属性161
162 リードセキュア属性162
2 主記憶メモリ
21 セキュア領域
210 セキュア共通領域
211 セキュアブート命令領域
212 セキュアアプリA命令領域
213 セキュアアプリZ命令領域
22 非セキュア領域
3 不揮発メモリ
4 デバッガ端末

【特許請求の範囲】
【請求項1】
セキュリティ装置であって、
プロセッサと、
前記プロセッサに内蔵されたデバッグ支援部と、
少なくとも前記プロセッサの命令を配置される主記憶メモリと、
前記プロセッサと主記憶メモリとの間の転送に用いられるメモリバスと、
前記主記憶メモリは複数の領域に分割されており、それぞれに対するアクセスを制限する主記憶メモリアクセス制限部と、
前記プロセッサに内蔵された、前記主記憶メモリの内容の一部を保持するプロセッサ内部メモリと、
前記プロセッサ内部メモリへのアクセス権限を管理するために、その要素毎に保持されるフラグと、
前記フラグに応じて前記プロセッサ内部メモリに対するアクセスを制限する内部メモリアクセス制限部と、
前記セキュリティ装置上で動作しているプログラムをデバッグしている開発者の権限を、前記主記憶メモリ上の複数の領域毎に判定するデバッガ認証部を有し、
前記主記憶メモリアクセス制限部は、上記認証部の結果に応じ開発者のアクセス権を判定し、その判定結果から個々のアクセスを制限する機能を少なくとも有し、
前記フラグには前記判定結果に対応した値を開発者権限判定フラグとして少なくとも有することを特徴とするセキュリティ装置。
【請求項2】
請求項1に記載のセキュリティ装置であって、
前記開発者権限判定フラグは単一ビットであることを特徴とするセキュリティ装置。
【請求項3】
請求項1、2に記載のセキュリティ装置であって、
前記主記憶メモリの複数の領域は、前記プロセッサからの命令アクセス、または暗号化された前記命令の復号結果を書き込むアクセスのみが許容される、複数の命令専用領域から構成されることを特徴とするセキュリティ装置。
【請求項4】
請求項1から3に記載のセキュリティ装置であって、
前記開発者の権限が異なるアプリケーションソフト毎に前記複数の命令専用領域に命令が分割して配置されることを特徴とするセキュリティ装置。
【請求項5】
請求項3、4に記載のセキュリティ装置であって、
前記プロセッサはセキュアドメインと非セキュアドメインを持ち、前記主記憶メモリの複数の領域のいずれかはセキュアドメインに属し、セキュアドメインに属する主記憶メモリ上の領域は非セキュアドメインからアクセスできないように構成され、前記フラグにはセキュアドメインに属することを示すセキュアドメインフラグを含むことを特徴とするセキュリティ装置。
【請求項6】
請求項5に記載のセキュリティ装置であって、
前記命令専用領域は、セキュアドメインの割り込み発生時に最初に実行されるハンドラ、またはセキュアドメイン・非セキュアドメインの切替時に実行される命令が少なくとも格納されることを特徴とするセキュリティ装置。
【請求項7】
請求項1から6に記載のセキュリティ装置であって、
前記フラグは、関連するプロセッサ内部メモリの要素の内容が主記憶メモリから前記メモリバスを介して転送される際に、並行して前記主記憶メモリアクセス制限部から転送されることを特徴とするセキュリティ装置。
【請求項8】
請求項1から7に記載のセキュリティ装置であって、
前記プロセッサ内部メモリが前記プロセッサ内に複数存在し、その間で主記憶メモリ上の同一アドレスに属するデータについて一貫性維持のためのアクセスを行う際、前記フラグに関しても一貫性を維持することを特徴とするセキュリティ装置。
【請求項9】
請求項1から8に記載のセキュリティ装置であって、
前記内部メモリアクセス制限部は、前記開発者権限判定フラグに応じて前記プロセッサ内部メモリへのIOアクセスの制限を行うことを特徴とするセキュリティ装置。
【請求項10】
セキュリティを維持するための方法であって、
プロセッサと、
前記プロセッサに内蔵されたデバッグ支援方法と、
少なくとも前記プロセッサの命令を配置される主記憶メモリと、
前記プロセッサと主記憶メモリとの間の転送に用いられる方法と、
前記主記憶メモリは複数の領域に分割されており、それぞれに対するアクセスを制限する主記憶メモリアクセス制限方法と、
前記プロセッサに内蔵された、前記主記憶メモリの内容の一部を保持するプロセッサ内部メモリと、
前記プロセッサ内部メモリへのアクセス権限を管理するために、その要素毎に保持されるフラグと、
前記フラグに応じて前記プロセッサ内部メモリに対するアクセスを制限する内部メモリアクセス制限方法と、
前記デバッグ支援方法は、前記セキュリティ装置上で動作しているプログラムをデバッグしている開発者の権限を、前記主記憶メモリ上の複数の領域毎に判定する認証方法を有し、
前記主記憶メモリアクセス制限方法は、上記認証方法の結果に応じ開発者のアクセス権を判定し、その判定結果から個々のアクセスを制限する機能を少なくとも有し、
前記フラグには前記判定結果に対応した値を開発者権限判定フラグとして少なくとも有することを特徴とするセキュリティを維持する方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2010−134572(P2010−134572A)
【公開日】平成22年6月17日(2010.6.17)
【国際特許分類】
【出願番号】特願2008−308163(P2008−308163)
【出願日】平成20年12月3日(2008.12.3)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】