説明

プロセッサ

【課題】物理攻撃による誤動作が生じた場合でも、メモリ領域に対する不正アクセスの拡大を防止する高度な保護機能を有すること。
【解決手段】メモリ12のメモリ領域は、プログラムが記憶され、かつ該プログラムの開始アドレスを示すエントリポイントが定められた複数の保護ドメインで構成され、保護ドメインは、エントリポイントが指示された場合にはアクセスが許可され、エントリポイントが指示されていない場合にはアクセスが禁止されるように切り替えられる。CPU16が保護ドメイン1のプログラムを実行中に、保護ドメイン2に遷移する場合には、保護ドメイン2について定められたエントリポイントを指示する保護ドメイン遷移命令を実行する。保護ドメイン遷移命令が実行されると、切替部20が、保護ドメイン1に対するアクセスを禁止し、保護ドメイン2に対するアクセスを許可するように切り替える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ領域に対する不正アクセスからメモリ上のプログラム及びデータを保護するメモリアクセス保護機能を有するプロセッサに関する。
【背景技術】
【0002】
従来、メモリ領域に対する不正アクセスからメモリ上のプログラム及びデータを保護することが行われている。
【0003】
例えば、仮想メモリアドレス空間の特定の領域が特権モードのプロセスによってのみアクセス可能であるか、または、ユーザモードまたは特権モードの両方のプロセスによってアクセス可能であるかを、仮想メモリアドレスと対応付けされたアクセス制御データパラメータとしてMMU(メモリ管理ユニット)やMPU(メモリプロテクションユニット)で管理し、このアクセス制御データを変更する権限を、メモリアドレス空間内の特定の定義された位置に記憶された命令に制限するメモリドメインを基にしたデータ処理システム内のセキュリティ制御が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−257734公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記特許文献1の技術では、セキュリティを破るための物理攻撃などによって誤動作を生じさせることにより、不正に情報を読み出すプログラムを紛れ込まされたり、権限を表すビットがノイズの影響を受けて不正にアクセス制御データを変更することのできる権限に変更されたりすると、MMUやMPUが操作され、あらゆるメモリ領域がアクセス可能となって、データの読み出しや改ざんが可能になってしまう、という問題がある。
【0006】
本発明は、上記問題を解消するためになされたものであり、物理攻撃による誤動作が生じた場合でも、メモリ領域に対する不正アクセスの拡大を防止する高度な保護機能を有するプロセッサを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明のプロセッサは、プログラムが記憶され、かつ該プログラムの開始アドレスを示すエントリポイントが定められ、前記エントリポイントが指示された場合にはアクセスが許可され、前記エントリポイントが指示されていない場合にはアクセスが禁止されるように切り替えられる保護ドメインを複数有する記憶手段と、アクセスが許可された所定の保護ドメインに記憶されたプログラムを実行すると共に、該プログラムの実行中に、他の保護ドメインに記憶されたプログラムを実行するためにプログラム実行対象の保護ドメインに遷移する場合に、前記プログラム実行対象の保護ドメインについて定められたエントリポイントを指示する命令を実行する制御手段と、保護ドメインが遷移する前に、前記所定の保護ドメインに対するアクセスを禁止し、前記プログラム実行対象の保護ドメインに対するアクセスを許可するように切り替える切替手段とを含んで構成することができる。
【0008】
本発明のプロセッサによれば、記憶手段は、プログラムが記憶され、かつ該プログラムの開始アドレスを示すエントリポイントが定められた複数の保護ドメインを有しており、保護ドメインへのアクセスは、エントリポイントが指示された場合にはアクセスが許可され、エントリポイントが指示されていない場合にはアクセスが禁止されるように切り替えられる。制御手段は、アクセスが許可された所定の保護ドメインに記憶されたプログラムを実行すると共に、該プログラムの実行中に、他の保護ドメインに記憶されたプログラムを実行するためにプログラム実行対象の保護ドメインに遷移する場合に、プログラム実行対象の保護ドメインについて定められたエントリポイントを指示する命令を実行する。これにより、指示されたエントリポイントが属するプログラム実行対象の保護ドメインのエントリポイントによって示される開始アドレスからプログラムが実行される。そして、切替手段が、保護ドメインが遷移する前に、所定の保護ドメインに対するアクセスを禁止し、プログラム実行対象の保護ドメインに対するアクセスを許可するように切り替える。
【0009】
このように、保護ドメイン間の遷移は、保護ドメイン毎に定められたエントリポイントを介してのみ可能となり、保護ドメインが遷移する前には、所定の保護ドメインはアクセスが禁止され、遷移先となるプログラム実行対象の保護ドメインはアクセスが許可されるように切り替えられるため、物理攻撃による誤動作が生じた場合でも、メモリ領域に対する不正アクセスは、プログラム実行中の保護ドメイン内に留まり、不正アクセスによる被害の拡大を防止することができる。
【0010】
また、前記保護ドメインの各々に、複数のエントリポイント、及び前記エントリポイントの各々に対応したアクセスの許可またはアクセスの禁止を示すアクセス許否情報を定めることができる。また、起動時に、前記アクセス許否情報を読み出して記憶するためのアクセス許可情報記憶手段を含んで構成するようにしてもよい。
【発明の効果】
【0011】
以上説明したように、本発明のプロセッサによれば、物理攻撃による誤動作が生じた場合でも、メモリ領域に対する不正アクセスの拡大を防止する高度な保護機能を有する、という効果が得られる。
【図面の簡単な説明】
【0012】
【図1】本実施の形態のメモリ保護機能付プロセッサの構成を示す概略図である。
【図2】メモリ空間を示す図である。
【図3】エントリポイントの構成の一例を示す表である。
【図4】アクセス許否情報の一例を示す表である。
【発明を実施するための形態】
【0013】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0014】
図1は、本実施の形態のメモリ保護機能付プロセッサ10の構成を示す概略図である。メモリ保護機能付プロセッサ10は、メモリ12に結合されたプロセッサ部14で構成されている。
【0015】
図2に、メモリ12のメモリ空間を示す。メモリ空間は複数のメモリ領域に分割されており、いくつかのメモリ領域をまとめて1つの保護ドメインとして定義している。保護ドメインの各々は、保護ドメイン内のメモリ領域に対して、実行可能、読み出し可能、書き込み可能を設定することができ、例えば、プログラム領域、読み出し可能データ領域、読み書き可能データ領域、スタック領域、及びヒープ領域を含んで構成することができる。また、2つ以上の保護ドメインで共通に使用することができる共有領域を設けることができる。共有領域は、後述するように、所定の保護ドメインから他の保護ドメインへ遷移する場合に、読み出し時の引数や戻り値などの必要なデータを受け渡すために使用される。
【0016】
各保護ドメインは、複数のエントリポイントを有し、エントリポイントは、図3に示すように、エントリポイントが属する保護ドメイン、及びエントリポイント通過後のプログラム開始アドレスを保持する。各保護ドメインへのアクセスは、このエントリポイントを通過して、プログラム開始アドレスを取得することにより、エントリポイントが示すプログラム開始アドレスからのみ可能となる。エントリポイントの通過は、後述する特別の命令(保護ドメイン遷移命令または復帰命令)の実行、または、ソフトウェア割り込み命令の実行、割り込み、例外の発生により行う。特別の命令の種類の違いにより、それぞれ対応するエントリポイントを設けておく。
【0017】
エントリポイントをメモリ空間内に配置する場合は、エントリポイント番号を所定の規則でアドレスに変換し、そのアドレスにエントリポイントの属する保護ドメインとプログラム開始アドレスの情報を記憶するように構成できる。所定の規則とは、例えば、「(アドレス)=(エントリポイントテーブルの先頭アドレス)+(エントリポイント番号)*8」のように定めることができる。
【0018】
また、各保護ドメインに含まれるメモリ領域に対するアクセスの許否を定めたアクセス許否情報が、保護ドメイン毎に定められている。アクセス許否情報は、例えば、図4に示すように、メモリ領域の先頭アドレスとそのサイズ、およびアクセス許否情報を示す情報のテーブルで定めることができる。各エントリポイントで指定されるプログラム開始アドレスは、実行許可のあるメモリ領域内にあるように決められる。保護ドメインが異なる場合、一切のアクセスが許可されない。例えば、保護ドメイン1のプログラムは、保護ドメイン2の許可されている領域に対してもアクセスすることは禁止される。保護ドメイン間の共有領域を指定するには、異なる保護ドメインで同じ領域を指定する。保護ドメイン1のプログラムが、エントリポイント3を通過すると、保護ドメイン2に切り替わり、開始アドレスNnnnnnnnからサイズVvvvの範囲の領域が読み出し許可、開始アドレスPpppppppからサイズWwwwの範囲の領域が読み出し及び実行許可、開始アドレスQqqqqqqqからサイズXxxxの範囲の領域が読み出し及び書き込み許可となる。さらに、エントリポイント3のプログラム開始アドレスDdddddddは実行許可領域、例えば、開始アドレスPpppppppからサイズWwwwの範囲のどこかに決められている。
【0019】
また、アクセス許否情報は、保護ドメイン毎だけでなく、保護ドメイン内のエントリポイントのそれぞれに対応してアクセスの許可またはアクセスの禁止を示す許否情報を定めることもできる。
【0020】
プロセッサ部14は、メモリに記憶されたプログラムを実行するCPU16、メモリ12に記憶されたアクセス許否情報が登録されるアクセス許否情報記憶部18、及びアクセス可能な保護ドメインを切り替える切替部20を含んで構成されている。
【0021】
アクセス許否情報記憶部18には、起動時にメモリ12から読み出された保護ドメイン毎に定められたアクセス許否情報が、例えば、図4に示すような一覧形式で記憶される。なお、アクセス許否情報記憶部18に記憶された情報は、起動時以外書き換えることができない構成とする。このため、従来技術のように、起動中にアクセス許否情報を書き替える必要がない。
【0022】
切替部20は、特別の命令が実行されて保護ドメインが遷移する際に、遷移元の保護ドメインへのアクセスを禁止し、遷移先の保護ドメインへのアクセスを許可するように切り替える。特別の命令とは、遷移先の保護ドメインについて定められたエントリポイントを指定する命令であり、所定の保護ドメインでプログラムを実行中に生じる保護ドメイン遷移命令または復帰命令をいう。また、割り込み、例外が発生した場合、及びソフトウェア割り込み命令を実行した場合は、あたかも予め定められたエントリポイントを指定した保護ドメイン遷移命令が実行されたかのようなふるまいをする。割り込み、例外、ソフトウェア割り込みが生じる場合には、それまで実行していたプログラムとは通常関係しないプログラムの実行が必要となるため、それまで実行していたプログラムとのメモリ領域の分離を行うため、保護ドメインを切り替えることが必要になる。このため、割り込み、例外、ソフトウェア割り込み命令に対応したエントリポイント(例えば、エントリポイント0は割り込み用、エントリポイント1は例外用)を設計時において固定的に定めておき、割り込み、例外、ソフトウェア割り込み命令が生じた場合には、各々の命令に対応したエントリポイントを通過して所定の保護ドメインがアクセス可能となるように切り替えを行う。
【0023】
次に、本実施の形態のプロセッサ10の動作について説明する。
【0024】
まず、プロセッサ10が起動されると、メモリ12からアクセス許否情報を読み出して、アクセス許否情報記憶部18に記憶する。
【0025】
次に、CPU16でプログラムを実行する。ここで、CPU16が実行するプログラムが記憶された保護ドメインを保護ドメイン1とすると、切替部20は、保護ドメイン1へのアクセスのみを可能とし、その他の保護ドメインへのアクセスを禁止するように切り替える。また、保護ドメイン1の各メモリ領域へのアクセスの許否は、アクセス許否情報記憶部18に記憶されたアクセス許否情報に基づいて判断される。
【0026】
保護ドメイン1に記憶されたプログラムを実行中に、保護ドメイン2へ遷移する場合は、保護ドメイン遷移命令を実行して、保護ドメイン2を示すエントリポイント(例えば、エントリポイント4)を指定する。この命令を受けて、切替部20は、保護ドメイン1へのアクセスを禁止し、保護ドメイン2へのアクセスを許可するように切り替える。そして、エントリポイント4が示す開始アドレスEeeeeeeeから、保護ドメイン2のプログラムが実行される。また、保護ドメイン1への戻り番地及びプログラムステータスワードが保護ドメイン2のスタック領域に退避される。
【0027】
保護ドメイン1から保護ドメイン2へ戻る場合は、保護ドメイン1へ戻したい情報を保護ドメイン1と保護ドメイン2との共有領域にコピーし、保護ドメイン復帰命令を実行する。これにより、保護ドメイン2のスタック領域に退避されていた戻り番地へ分岐すると同時に、切替部20は、保護ドメイン2へのアクセスを禁止し、保護ドメイン1へのアクセスを許可するように切り替える。そして、保護ドメイン1から保護ドメイン2への保護ドメイン遷移命令を実行した後のアドレスからプログラムの実行を開始する。
【0028】
なお、上記動作では、保護ドメイン遷移命令及び復帰命令を実行した場合を例に説明したが、割り込み、例外の発生、及びソフトウェア割り込み命令を実行した場合においても、同様に動作する。
【0029】
以上説明したように、本実施の形態のプロセッサによれば、保護ドメイン間の遷移が可能な柔軟な構成をとりつつ、特別な命令の実行によりエントリポイントを介して開始アドレスを取得することによってのみ他の保護ドメインへ遷移することができるため、物理攻撃による誤動作が生じた場合でも、メモリ領域に対する不正アクセスは、プログラムを実行中の保護ドメイン内に留まり、不正アクセスによる被害の拡大を防止することができる。
【符号の説明】
【0030】
10 メモリ保護機能付プロセッサ
12 メモリ
14 プロセッサ部
16 CPU
18 アクセス許否情報記憶部
20 切替部

【特許請求の範囲】
【請求項1】
プログラムが記憶され、かつ該プログラムの開始アドレスを示すエントリポイントが定められ、前記エントリポイントが指示された場合にはアクセスが許可され、前記エントリポイントが指示されていない場合にはアクセスが禁止されるように切り替えられる保護ドメインを複数有する記憶手段と、
アクセスが許可された所定の保護ドメインに記憶されたプログラムを実行すると共に、該プログラムの実行中に、他の保護ドメインに記憶されたプログラムを実行するためにプログラム実行対象の保護ドメインに遷移する場合に、前記プログラム実行対象の保護ドメインについて定められたエントリポイントを指示する命令を実行する制御手段と、
保護ドメインが遷移する前に、前記所定の保護ドメインに対するアクセスを禁止し、前記プログラム実行対象の保護ドメインに対するアクセスを許可するように切り替える切替手段と、
を含むプロセッサ。
【請求項2】
前記保護ドメインの各々に、複数のエントリポイント、及び前記エントリポイントの各々に対応したアクセスの許可またはアクセスの禁止を示すアクセス許否情報を定めた請求項1記載のプロセッサ。
【請求項3】
起動時に、前記アクセス許否情報を読み出して記憶するためのアクセス許可情報記憶手段を含む請求項2記載のプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate