(57)【要約】【課題】物理攻撃による誤動作が生じた場合でも、メモリ領域に対する不正アクセスの拡大を防止する高度な保護機能を有すること。【解決手段】メモリ１２のメモリ領域は、プログラムが記憶され、かつ該プログラムの開始アドレスを示すエントリポイントが定められた複数の保護ドメインで構成され、保護ドメインは、エントリポイントが指示された場合にはアクセスが許可され、エントリポイントが指示されていない場合にはアクセスが禁止されるように切り替えられる。ＣＰＵ１６が保護ドメイン１のプログラムを実行中に、保護ドメイン２に遷移する場合には、保護ドメイン２について定められたエントリポイントを指示する保護ドメイン遷移命令を実行する。保護ドメイン遷移命令が実行されると、切替部２０が、保護ドメイン１に対するアクセスを禁止し、保護ドメイン２に対するアクセスを許可するように切り替える。【選択図】図１
2010186386.tif 000002
【特許請求の範囲】
【請求項１】
プログラムが記憶され、かつ該プログラムの開始アドレスを示すエントリポイントが定められ、前記エントリポイントが指示された場合にはアクセスが許可され、前記エントリポイントが指示されていない場合にはアクセスが禁止されるように切り替えられる保護ドメインを複数有する記憶手段と、
アクセスが許可された所定の保護ドメインに記憶されたプログラムを実行すると共に、該プログラムの実行中に、他の保護ドメインに記憶されたプログラムを実行するためにプログラム実行対象の保護ドメインに遷移する場合に、前記プログラム実行対象の保護ドメインについて定められたエントリポイントを指示する命令を実行する制御手段と、
保護ドメインが遷移する前に、前記所定の保護ドメインに対するアクセスを禁止し、前記プログラム実行対象の保護ドメインに対するアクセスを許可するように切り替える切替手段と、
を含むプロセッサ。
【請求項２】
前記保護ドメインの各々に、複数のエントリポイント、及び前記エントリポイントの各々に対応したアクセスの許可またはアクセスの禁止を示すアクセス許否情報を定めた請求項１記載のプロセッサ。
【請求項３】
起動時に、前記アクセス許否情報を読み出して記憶するためのアクセス許可情報記憶手段を含む請求項２記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ領域に対する不正アクセスからメモリ上のプログラム及びデータを保護するメモリアクセス保護機能を有するプロセッサに関する。
【背景技術】
【０００２】
従来、メモリ領域に対する不正アクセスからメモリ上のプログラム及びデータを保護することが行われている。
【０００３】
例えば、仮想メモリアドレス空間の特定の領域が特権モードのプロセスによってのみアクセス可能であるか、または、ユーザモードまたは特権モードの両方のプロセスによってアクセス可能であるかを、仮想メモリアドレスと対応付けされたアクセス制御データパラメータとしてＭＭＵ（メモリ管理ユニット）やＭＰＵ（メモリプロテクションユニット）で管理し、このアクセス制御データを変更する権限を、メモリアドレス空間内の特定の定義された位置に記憶された命令に制限するメモリドメインを基にしたデータ処理システム内のセキュリティ制御が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２５７７３４公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１の技術では、セキュリティを破るための物理攻撃などによって誤動作を生じさせることにより、不正に情報を読み出すプログラムを紛れ込まされたり、権限を表すビットがノイズの影響を受けて不正にアクセス制御データを変更することのできる権限に変更されたりすると、ＭＭＵやＭＰＵが操作され、あらゆるメモリ領域がアクセス可能となって、データの読み出しや改ざんが可能になってしまう、という問題がある。
【０００６】
本発明は、上記問題を解消するためになされたものであり、物理攻撃による誤動作が生じた場合でも、メモリ領域に対する不正アクセスの拡大を防止する高度な保護機能を有するプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明のプロセッサは、プログラムが記憶され、かつ該プログラムの開始アドレスを示すエントリポイントが定められ、前記エントリポイントが指示された場合にはアクセスが許可され、前記エントリポイントが指示されていない場合にはアクセスが禁止されるように切り替えられる保護ドメインを複数有する記憶手段と、アクセスが許可された所定の保護ドメインに記憶されたプログラムを実行すると共に、該プログラムの実行中に、他の保護ドメインに記憶されたプログラムを実行するためにプログラム実行対象の保護ドメインに遷移する場合に、前記プログラム実行対象の保護ドメインについて定められたエントリポイントを指示する命令を実行する制御手段と、保護ドメインが遷移する前に、前記所定の保護ドメインに対するアクセスを禁止し、前記プログラム実行対象の保護ドメインに対するアクセスを許可するように切り替える切替手段とを含んで構成することができる。
【０００８】
本発明のプロセッサによれば、記憶手段は、プログラムが記憶され、かつ該プログラムの開始アドレスを示すエントリポイントが定められた複数の保護ドメインを有しており、保護ドメインへのアクセスは、エントリポイントが指示された場合にはアクセスが許可され、エントリポイントが指示されていない場合にはアクセスが禁止されるように切り替えられる。制御手段は、アクセスが許可された所定の保護ドメインに記憶されたプログラムを実行すると共に、該プログラムの実行中に、他の保護ドメインに記憶されたプログラムを実行するためにプログラム実行対象の保護ドメインに遷移する場合に、プログラム実行対象の保護ドメインについて定められたエントリポイントを指示する命令を実行する。これにより、指示されたエントリポイントが属するプログラム実行対象の保護ドメインのエントリポイントによって示される開始アドレスからプログラムが実行される。そして、切替手段が、保護ドメインが遷移する前に、所定の保護ドメインに対するアクセスを禁止し、プログラム実行対象の保護ドメインに対するアクセスを許可するように切り替える。
【０００９】
このように、保護ドメイン間の遷移は、保護ドメイン毎に定められたエントリポイントを介してのみ可能となり、保護ドメインが遷移する前には、所定の保護ドメインはアクセスが禁止され、遷移先となるプログラム実行対象の保護ドメインはアクセスが許可されるように切り替えられるため、物理攻撃による誤動作が生じた場合でも、メモリ領域に対する不正アクセスは、プログラム実行中の保護ドメイン内に留まり、不正アクセスによる被害の拡大を防止することができる。
【００１０】
また、前記保護ドメインの各々に、複数のエントリポイント、及び前記エントリポイントの各々に対応したアクセスの許可またはアクセスの禁止を示すアクセス許否情報を定めることができる。また、起動時に、前記アクセス許否情報を読み出して記憶するためのアクセス許可情報記憶手段を含んで構成するようにしてもよい。
【発明の効果】
【００１１】
以上説明したように、本発明のプロセッサによれば、物理攻撃による誤動作が生じた場合でも、メモリ領域に対する不正アクセスの拡大を防止する高度な保護機能を有する、という効果が得られる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態のメモリ保護機能付プロセッサの構成を示す概略図である。
【図２】メモリ空間を示す図である。
【図３】エントリポイントの構成の一例を示す表である。
【図４】アクセス許否情報の一例を示す表である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００１４】
図１は、本実施の形態のメモリ保護機能付プロセッサ１０の構成を示す概略図である。メモリ保護機能付プロセッサ１０は、メモリ１２に結合されたプロセッサ部１４で構成されている。
【００１５】
図２に、メモリ１２のメモリ空間を示す。メモリ空間は複数のメモリ領域に分割されており、いくつかのメモリ領域をまとめて１つの保護ドメインとして定義している。保護ドメインの各々は、保護ドメイン内のメモリ領域に対して、実行可能、読み出し可能、書き込み可能を設定することができ、例えば、プログラム領域、読み出し可能データ領域、読み書き可能データ領域、スタック領域、及びヒープ領域を含んで構成することができる。また、２つ以上の保護ドメインで共通に使用することができる共有領域を設けることができる。共有領域は、後述するように、所定の保護ドメインから他の保護ドメインへ遷移する場合に、読み出し時の引数や戻り値などの必要なデータを受け渡すために使用される。
【００１６】
各保護ドメインは、複数のエントリポイントを有し、エントリポイントは、図３に示すように、エントリポイントが属する保護ドメイン、及びエントリポイント通過後のプログラム開始アドレスを保持する。各保護ドメインへのアクセスは、このエントリポイントを通過して、プログラム開始アドレスを取得することにより、エントリポイントが示すプログラム開始アドレスからのみ可能となる。エントリポイントの通過は、後述する特別の命令（保護ドメイン遷移命令または復帰命令）の実行、または、ソフトウェア割り込み命令の実行、割り込み、例外の発生により行う。特別の命令の種類の違いにより、それぞれ対応するエントリポイントを設けておく。
【００１７】
エントリポイントをメモリ空間内に配置する場合は、エントリポイント番号を所定の規則でアドレスに変換し、そのアドレスにエントリポイントの属する保護ドメインとプログラム開始アドレスの情報を記憶するように構成できる。所定の規則とは、例えば、「（アドレス）＝（エントリポイントテーブルの先頭アドレス）＋（エントリポイント番号）＊８」のように定めることができる。
【００１８】
また、各保護ドメインに含まれるメモリ領域に対するアクセスの許否を定めたアクセス許否情報が、保護ドメイン毎に定められている。アクセス許否情報は、例えば、図４に示すように、メモリ領域の先頭アドレスとそのサイズ、およびアクセス許否情報を示す情報のテーブルで定めることができる。各エントリポイントで指定されるプログラム開始アドレスは、実行許可のあるメモリ領域内にあるように決められる。保護ドメインが異なる場合、一切のアクセスが許可されない。例えば、保護ドメイン１のプログラムは、保護ドメイン２の許可されている領域に対してもアクセスすることは禁止される。保護ドメイン間の共有領域を指定するには、異なる保護ドメインで同じ領域を指定する。保護ドメイン１のプログラムが、エントリポイント３を通過すると、保護ドメイン２に切り替わり、開始アドレスＮｎｎｎｎｎｎｎからサイズＶｖｖｖの範囲の領域が読み出し許可、開始アドレスＰｐｐｐｐｐｐｐからサイズＷｗｗｗの範囲の領域が読み出し及び実行許可、開始アドレスＱｑｑｑｑｑｑｑからサイズＸｘｘｘの範囲の領域が読み出し及び書き込み許可となる。さらに、エントリポイント３のプログラム開始アドレスＤｄｄｄｄｄｄｄは実行許可領域、例えば、開始アドレスＰｐｐｐｐｐｐｐからサイズＷｗｗｗの範囲のどこかに決められている。
【００１９】
また、アクセス許否情報は、保護ドメイン毎だけでなく、保護ドメイン内のエントリポイントのそれぞれに対応してアクセスの許可またはアクセスの禁止を示す許否情報を定めることもできる。
【００２０】
プロセッサ部１４は、メモリに記憶されたプログラムを実行するＣＰＵ１６、メモリ１２に記憶されたアクセス許否情報が登録されるアクセス許否情報記憶部１８、及びアクセス可能な保護ドメインを切り替える切替部２０を含んで構成されている。
【００２１】
アクセス許否情報記憶部１８には、起動時にメモリ１２から読み出された保護ドメイン毎に定められたアクセス許否情報が、例えば、図４に示すような一覧形式で記憶される。なお、アクセス許否情報記憶部１８に記憶された情報は、起動時以外書き換えることができない構成とする。このため、従来技術のように、起動中にアクセス許否情報を書き替える必要がない。
【００２２】
切替部２０は、特別の命令が実行されて保護ドメインが遷移する際に、遷移元の保護ドメインへのアクセスを禁止し、遷移先の保護ドメインへのアクセスを許可するように切り替える。特別の命令とは、遷移先の保護ドメインについて定められたエントリポイントを指定する命令であり、所定の保護ドメインでプログラムを実行中に生じる保護ドメイン遷移命令または復帰命令をいう。また、割り込み、例外が発生した場合、及びソフトウェア割り込み命令を実行した場合は、あたかも予め定められたエントリポイントを指定した保護ドメイン遷移命令が実行されたかのようなふるまいをする。割り込み、例外、ソフトウェア割り込みが生じる場合には、それまで実行していたプログラムとは通常関係しないプログラムの実行が必要となるため、それまで実行していたプログラムとのメモリ領域の分離を行うため、保護ドメインを切り替えることが必要になる。このため、割り込み、例外、ソフトウェア割り込み命令に対応したエントリポイント（例えば、エントリポイント０は割り込み用、エントリポイント１は例外用）を設計時において固定的に定めておき、割り込み、例外、ソフトウェア割り込み命令が生じた場合には、各々の命令に対応したエントリポイントを通過して所定の保護ドメインがアクセス可能となるように切り替えを行う。
【００２３】
次に、本実施の形態のプロセッサ１０の動作について説明する。
【００２４】
まず、プロセッサ１０が起動されると、メモリ１２からアクセス許否情報を読み出して、アクセス許否情報記憶部１８に記憶する。
【００２５】
次に、ＣＰＵ１６でプログラムを実行する。ここで、ＣＰＵ１６が実行するプログラムが記憶された保護ドメインを保護ドメイン１とすると、切替部２０は、保護ドメイン１へのアクセスのみを可能とし、その他の保護ドメインへのアクセスを禁止するように切り替える。また、保護ドメイン１の各メモリ領域へのアクセスの許否は、アクセス許否情報記憶部１８に記憶されたアクセス許否情報に基づいて判断される。
【００２６】
保護ドメイン１に記憶されたプログラムを実行中に、保護ドメイン２へ遷移する場合は、保護ドメイン遷移命令を実行して、保護ドメイン２を示すエントリポイント（例えば、エントリポイント４）を指定する。この命令を受けて、切替部２０は、保護ドメイン１へのアクセスを禁止し、保護ドメイン２へのアクセスを許可するように切り替える。そして、エントリポイント４が示す開始アドレスＥｅｅｅｅｅｅｅから、保護ドメイン２のプログラムが実行される。また、保護ドメイン１への戻り番地及びプログラムステータスワードが保護ドメイン２のスタック領域に退避される。
【００２７】
保護ドメイン１から保護ドメイン２へ戻る場合は、保護ドメイン１へ戻したい情報を保護ドメイン１と保護ドメイン２との共有領域にコピーし、保護ドメイン復帰命令を実行する。これにより、保護ドメイン２のスタック領域に退避されていた戻り番地へ分岐すると同時に、切替部２０は、保護ドメイン２へのアクセスを禁止し、保護ドメイン１へのアクセスを許可するように切り替える。そして、保護ドメイン１から保護ドメイン２への保護ドメイン遷移命令を実行した後のアドレスからプログラムの実行を開始する。
【００２８】
なお、上記動作では、保護ドメイン遷移命令及び復帰命令を実行した場合を例に説明したが、割り込み、例外の発生、及びソフトウェア割り込み命令を実行した場合においても、同様に動作する。
【００２９】
以上説明したように、本実施の形態のプロセッサによれば、保護ドメイン間の遷移が可能な柔軟な構成をとりつつ、特別な命令の実行によりエントリポイントを介して開始アドレスを取得することによってのみ他の保護ドメインへ遷移することができるため、物理攻撃による誤動作が生じた場合でも、メモリ領域に対する不正アクセスは、プログラムを実行中の保護ドメイン内に留まり、不正アクセスによる被害の拡大を防止することができる。
【符号の説明】
【００３０】
１０   メモリ保護機能付プロセッサ
１２   メモリ
１４   プロセッサ部
１６   ＣＰＵ
１８   アクセス許否情報記憶部
２０   切替部
【図１】
2010186386.tif 000003
【図２】
2010186386.tif 000004
【図３】
2010186386.tif 000005
【図４】
2010186386.tif 000006