JP5582971B2 - メモリ保護方法および情報処理装置 - Google Patents

メモリ保護方法および情報処理装置 Download PDF

Info

Publication number
JP5582971B2
JP5582971B2 JP2010247843A JP2010247843A JP5582971B2 JP 5582971 B2 JP5582971 B2 JP 5582971B2 JP 2010247843 A JP2010247843 A JP 2010247843A JP 2010247843 A JP2010247843 A JP 2010247843A JP 5582971 B2 JP5582971 B2 JP 5582971B2
Authority
JP
Japan
Prior art keywords
access
protection
area
memory
protection area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010247843A
Other languages
English (en)
Other versions
JP2011146030A (ja
Inventor
秀典 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2010247843A priority Critical patent/JP5582971B2/ja
Priority to US12/949,247 priority patent/US8478960B2/en
Priority to CN201010592027.6A priority patent/CN102096642B/zh
Publication of JP2011146030A publication Critical patent/JP2011146030A/ja
Application granted granted Critical
Publication of JP5582971B2 publication Critical patent/JP5582971B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Description

本発明はプログラムによる不正アクセスからメモリを保護するメモリ保護方法および情報処理装置に関する。
従来、プログラムによる不正アクセスからメモリを保護する方法としては、中央処理装置(CPU)の実行モードとメモリ管理装置(MMU)の機能とを連動させることが一般的であった。例えば、特権モードと非特権モード(もしくは複数のレベルを有する特権モード)の実行を区別するCPUを用いて、MMUの機能により特権モード(もしくは高特権モード)でアクセス可能な領域といずれの実行モードでもアクセス可能な領域とを設定する。これにより、非特権モードによる不正アクセスから特権モードでのみ使用することが可能なメモリ領域を設けることが出来る。この方法では、保護される領域を実行モードに依存せずに自由に設定することは出来ないが、組込みソフトウェアはすべてが特権モードで実行されることが多くある。
同一の実行モードで実行されるプログラムによる不正アクセスからメモリを保護する方法としては、プログラムを一つ以上のモジュールに分割し、それぞれを固有の仮想アドレス空間に配置する方法が知られている。一般的に、異なる仮想アドレス空間に配置された機能モジュールは別のアドレス空間に配置されたメモリ領域に直接アクセスする(OS等を介さずにアクセスする)ことが出来ない。そのため、アドレス空間に配置されたモジュール間の不正アクセス(unauthorized access)を防ぐことが出来る。一方、この方法ではモジュール間の機能呼び出しに伴い異なるモジュールのデータにアクセスするためにはオペレーティングシステム(OS)の機能を利用する必要がある。OS内部では一般的にデータのコピーが行われるため、別モジュールのデータを直接アクセスする場合と比べて実行効率の面で劣る。
単一アドレス空間で不正アクセスからメモリを保護する方法としては、単一アドレス空間を区分した領域とモジュールとの両方に識別子を用いる方法が知られている(例えば、特許文献1)。モジュールは自身の識別子と異なる識別子が付与された領域にはアクセスすることが許されていない。そこで、異なるモジュールにアクセスする際には特殊な空間切り替えプログラムを実行することでアクセス先の識別子をアクセス前にプログラムの識別子に変更する。さらに、アクセス後に元の識別子に復帰させることで機能呼び出し以外のアクセスを制限する。この場合、データへのアクセスはアドレス指定により直接行うことが可能であるが、機能呼び出しにおいて識別子に関する操作が必要なので直接的な関数コールにおけるデータ参照より実行効率の面で劣る。
特開2002−189633号公報
従来、メモリ保護機能を利用する場合には、異なる保護領域に含まれるデータにアクセスする際に間接的な機能呼び出しを用いる必要があった。そのため、保護領域が異なる特定のモジュールからのアクセスを信頼できる場合でも、アクセス元のモジュールは間接的な機能呼び出しを用いなければならなかった。間接的な機能呼び出しは直接的な機能呼び出しよりも実行効率が低く、実行効率が低下するという問題があった。
本発明はアクセス先のモジュールから信頼度が高いと判定されたモジュールからは直接的な手続き呼び出しおよびアクセスを可能にして実行効率の低下を軽減し、信頼度が低いと判定されたモジュールからのアクセスは間接的な機能呼び出しを実行していない場合には不正アクセスとして検出し、間接的な機能呼び出しを実行している場合には正当なアクセスとして許可するメモリ保護技術を提供する。
本発明の一つの側面にかかるメモリ保護方法は、メモリのアドレス空間を二つ以上の保護領域に分割し、プログラムによる保護領域への不正アクセスから前記メモリを保護するメモリ保護方法であって、
情報処理装置の定義手段が、保護領域の間の関係を定義する定義工程と、
前記情報処理装置の判定手段が、前記保護領域の間の前記関係が包含関係である場合に、被包含保護領域から包含保護領域へは直接アクセス不可として、包含保護領域から被包含保護領域へは直接アクセス可能として判定する判定工程と、
前記情報処理装置のメモリ管理手段が、直接アクセス可能と判定されたアクセスに対して直接的なアクセスを許可し、直接アクセス不可と判定されたアクセスについて直接的なアクセスを禁止するメモリ管理工程と、を有し、
前記判定工程は、前記直接アクセス可能と判定された保護領域と、前記直接アクセス不可と判定された保護領域と、の判定の結果を、前記保護領域の間の関係を定めたアクセス権管理テーブルに格納し、
前記直接アクセス不可と判定された保護領域に対するアクセスが要求された場合に、前記メモリ管理工程は、前記アクセス権管理テーブルに格納されている前記直接アクセス不可と判定された保護領域を前記直接アクセス可能な保護領域として変更し、前記直接アクセス不可と判定された保護領域への間接的なアクセスを許可することを特徴とする。
本発明によれば、信頼度が高いと判定された保護領域に対しては直接的なアクセスを可能にして実行効率の低下を軽減し、信頼度が低いと判定された保護領域への直接的なアクセスを不正アクセスとして抑制するメモリ保護技術の提供が可能になる。
実施形態1の情報処理装置の構成を説明する図。 実施形態1の情報処理装置の構成を説明する図。 保護領域間の階層関係を説明するための図。 (a)単一アドレス空間上の保護領域の配置を説明するための図、(b)アクセス権管理テーブルの初期設定を説明するための図。 実施形態1における間接的な手続き呼び出しを実現する処理を説明するためのフローチャート。 実施形態2の情報処理装置の構成を説明する図。 例外時アクセス権管理テーブルの初期設定を示す図。 実施形態2の例外ハンドラを実行する処理のフローチャート。 実施形態3の情報処理装置の構成を説明する図。 図7のフローチャートに従って手続き呼び出しを変換した後の呼び出し関係を例示的に説明する図。 保護領域以外への手続き呼び出しを間接的な手続き呼び出しに変換する処理を説明するフローチャート。 (a)保護領域階層関係定義テーブルを説明するための図、(b)例外時アクセス領域定義テーブルが保持する情報を示す図。 アクセス識別子を有するアクセス権管理テーブルを説明するための図。 アクセス制御ベクタを説明するための図。
<実施形態1>
実施形態1における情報処理システムは情報処理装置1および情報処理装置2の二つの情報処理装置から構成される。情報処理装置1では検証対象プログラムから検証対象イメージを生成し、情報処理装置2では検証対象イメージを実行し検証する。
図1Aに実施形態1にかかる情報処理装置1の構成を示す。中央処理装置(CPU)101は図1Aの情報処理装置1の全体を制御する。メモリ102は、変更を必要としないプログラムやパラメータを格納するROMや外部装置などから供給されるプログラムやデータを一時記憶するRAMから構成される。入出力インタフェース103は情報処理装置2との接続を確保する。システムバス104はCPU101、メモリ102、および入出力インタフェース103の各ユニットを通信可能に接続する。
メモリ102上の検証対象プログラム105は不正アクセスを含む可能性があるプログラムであり、本実施形態ではモジュールA、モジュールB、モジュールC、モジュールDから構成されるとする。不正アクセスはプログラムの欠陥などにより発生するアクセスであり、意図通りに発生するアクセスは正当アクセス(authorized access)とする。検証対象プログラム105では、呼び出し元モジュールを信頼可能な場合の機能呼び出しは直接的な関数コールとして記述されているとする。それ以外の機能呼び出しは後述の間接的な手続き呼び出しとして記述されているとする。また、モジュール間のアクセスは機能呼び出しにおいてのみ必要とされるものとする。テーブル106(保護領域階層関係定義テーブル)は保護領域間の階層関係を定義する。プログラム(検証対象イメージ生成プログラム107)は検証対象イメージを生成する。
図1Bに実施形態1にかかる情報処理装置2の構成を示す。情報処理装置2は、メモリのアドレス空間を二つ以上の保護領域に分割し、プログラムによる保護領域への不正アクセスからメモリを保護することが可能である。中央処理装置(CPU)111は情報処理装置2の全体を制御する。メモリ112は、変更を必要としないプログラムやパラメータを格納するROMや情報処理装置1から供給されるプログラムやデータを一時記憶するRAMから構成される。メモリ管理装置としてのメモリ管理ユニット113はCPU101から他のユニットへ要求されたアクセスの正当性を判断する。メモリ管理ユニット113はMemory Management Unit (MMU)あるいはMemory Protection Unit(MPU)であり、CPU111に内蔵されていてもよい。メモリ管理ユニット113はアクセス権管理テーブル119を参照して、CPU111からメモリ112へのアクセスを許可あるいは制限する。アクセス権管理テーブル119はメモリ112上に配置されてもよい。メモリ管理ユニット113は、CPU111からのアクセス要求を受けると、アクセス先アドレスに対応するエントリをアクセス権管理テーブル119から検索し、アクセス可能な保護領域へのアクセスか、アクセス不可の保護領域へのアクセスかを判定する。メモリ管理ユニット113は、制限されたアクセスの要求を検出するとCPU111にその事象を伝達する。入出力インタフェース114は情報処理装置1との接続を確保する。ただし、入出力インタフェース114は検証対象イメージ116の実行中に割り込みを発生させることはない。システムバス115はCPU111、メモリ112、メモリ管理ユニット113、および入出力インタフェース114の各ユニットを通信可能に接続する。
メモリ112上の検証対象イメージ116は情報処理装置1から渡される。オペレーティングシステム117はメモリ管理ユニット113の初期設定を行う。初期アクセス権保持テーブル118はアクセス権管理テーブル119の初期設定値を保持する。
図1Cに保護領域間の階層関係を概念的に示す。保護領域はモジュールのデータを保護するための領域である。例えば、モジュールA用の保護領域はモジュールAのデータを保護するための領域である。モジュールC用の保護領域はモジュールA用の保護領域とモジュールB用の保護領域とに包含され、モジュールA、B、C、D用の保護領域はオペレーティングシステムの保護領域に包含されているものとする。それ以外の関係(包含関係でない関係)は対等関係であるとする。保護領域が包含関係にある場合、包含する保護領域から被包含保護領域へのアクセスには不正アクセスは含まれないとする。それに対し、被包含保護領域から包含領域へのアクセスや対等関係にある保護領域へのアクセスには不正アクセスが含まれる可能性があるとする。
図8(a)は図1Cに示した保護領域間の関係を定義する保護領域階層関係定義テーブル106を例示する図である。保護領域の階層関係を定義するには、保護領域の包含関係のみを保護領域階層関係定義テーブル106に記述する。記述されない保護領域間の関係は対等関係である。例えば、モジュールA用の保護領域とモジュールB用の保護領域の関係は対等関係である。
まず、情報処理装置1における処理を説明する。情報処理装置1では検証対象イメージ生成プログラム107が保護領域階層関係定義テーブル106を参照して保護領域間の信頼関係を判定する。保護領域間の関係が包含関係である場合、被包含保護領域から包含保護領域に対しては信頼度が高いと判定し、包含保護領域から被包含保護領域に対しては信頼度が低いと判定する。それに対し、対等関係にある場合(包含関係でない場合)、互いの保護領域に対しては信頼度が低いと判定する。例えば、図1Cにおいては、オペレーティングシステム117用の保護領域121(包含保護領域)は他の全ての保護領域(被包含保護領域)を包含する。したがって、オペレーティングシステム117用の保護領域121は他のすべての保護領域から信頼度が高いと判定される。一方、モジュールA用の保護領域122とモジュールB用の保護領域123は対等関係にある。そのため、モジュールA用とモジュールB用の保護領域は、それぞれから信頼度が低いと判定される。
検証対象イメージ生成プログラム107はさらに検証対象プログラム105をコンパイルし、検証対象イメージ116を生成する。コンパイル結果には検証対象イメージ116に関する単一アドレス空間上の配置情報が含まれる。検証対象イメージ、単一アドレス空間上の配置情報、保護領域間の信頼関係に関する判定結果は情報処理装置1から情報処理装置2に入出力インタフェース103および入出力インタフェース114経由で渡される。
次に、情報処理装置2における処理を説明する。情報処理装置2では検証対象イメージ116の単一アドレス空間上の配置情報と保護領域の信頼関係の判定結果を、OSの単一アドレス空間上の配置情報と併せて初期アクセス権保持テーブル118に保持する。
図2(a)に、オペレーティングシステムおよび検証対象イメージに割り当てられた領域の単一アドレス空間上での配置例を示す。各モジュールの保護領域に割り当てられたアドレス範囲はそれぞれのプログラムに割り当てられたメモリ領域に対応する。例えば、オペレーティングシステム用の保護領域に対するアドレス範囲は0x0000から0x0FFFであり、オペレーティングシステム117に割り当てられたメモリ上の領域はこの範囲のアドレスによってのみアクセス可能である。
図2(b)に、初期アクセス権保持テーブル118の例を示す。この初期設定により、信頼度が高いと判定された保護領域と、信頼度が低いと判定された保護領域と、の判定の結果をアクセス権管理テーブル119に格納する。この初期設定によれば、アクセス元のモジュールから信頼度が高いと判定された保護領域からのアクセスが許可され、信頼度が低いと判定された保護領域からのアクセスが制限される。
信頼度が低いと判定された保護領域からのアクセスを情報処理装置2において実現するには間接的な手続き呼び出しを用いる。間接的な手続き呼び出しを用いれば、その手続き呼び出しを実行中においてのみ、信頼度が低いと判定された保護領域からのアクセスが可能になる。
図3に、間接的な手続き呼び出しを実現する処理を示す。ここでは、モジュールAがモジュールBの手続きを間接的に呼び出す場合を例に処理の流れを説明する。まず、モジュールAの実行において間接的な手続き呼び出しが行われた場合、モジュールAは間接手続き呼び出しの処理としてモジュールA用の保護領域とモジュールB用の保護領域を一時的に融合(結合)する。これはステップS302において、モジュールAがアクセス権管理テーブル119の内容を書き換えることにより実現する。すなわち、アクセス先であるモジュールBの保護領域に割り当てられたアドレス範囲0x2800から0x2FFFに対するモジュールAからのアクセスに対するエントリをアクセス禁止からアクセス許可に書き換える。これによりモジュールAによるモジュールBへのアクセスが許可される。次に、ステップS303において、アクセス先のモジュールBが提供する所望の手続きをモジュールAが関数コールにより直接的に呼び出す。最後に、関数コールからのリターン後に、融合した保護領域をモジュールAが再度融合前の保護領域に分離する。これはステップS304において、アクセス権管理テーブル119を元の設定値に書き戻し、アドレス範囲0x2800から0x2FFFに対するモジュールAからのアクセスを禁止することで実現する。
上述の保護領域の融合あるいは分離は、モジュールAに対するアクセス権管理テーブルの有効範囲を変更することで実現してもよい。例として図9Aに示すアクセス権管理テーブル961および図9Bに示すアクセス権制御ベクタ962を有するMMUを利用する場合の実現方法を説明する。アクセス権管理テーブル961はアクセス先のアドレス範囲に対してアクセス識別子を保持し、アクセス識別子とアクセス権制御ベクタ962の組み合わせによりアクセスの可否を判定する。アクセス権制御ベクタ962は32ビットのビット列であり、各ビットがアクセス識別子1から31に対応する。アクセス先のアドレス範囲に付与されたアクセス識別子に対応するビットがアクセス権制御ベクタ962において設定されている場合、そのアドレス範囲へのアクセスが許可される。そうではなく、対応するビットがクリアされている場合にはアクセスが制限される。例えば、モジュールAの実行開始時にはアクセス権制御ベクタ962は0xaになる。間接的な手続き呼び出しにおいて保護領域を融合あるいは分離する場合にはそれぞれアクセス権制御ベクタ962の対応ビットを設定、クリアすることにより実現する。例えば、モジュールAの実行において、モジュールAの保護領域とモジュールBの保護領域を融合するには、アクセス権制御ベクタ962においてアクセス識別子3に対応するビットを設定する。逆に分離するには、アクセス識別子3に対応するビットをクリアする。
以上の構成によれば、信頼度が低いと判定された保護領域からの機能呼び出しには間接的な手続き呼び出しが用いられ、信頼度が高いと判定された保護領域からの機能呼び出しには直接的な手続き呼び出しが用いられる。間接的な機能呼び出し以外における信頼度が低いと判定された保護領域からの直接的なアクセスは不正アクセスとして検出される(直接アクセス不可)。一方、信頼度が高いと判定された保護領域からのアクセスは直接的な関数コールにおいても許可される(直接アクセス可能)。直接的な手続き呼び出しは間接的な手続き呼び出しより実行効率が高いため、メモリ保護による実行効率の低下を抑えることが出来る。
本実施形態によれば、信頼度が高い保護領域に対しては直接的な手続き呼び出しを可能にして実行効率の低下を軽減し、信頼度が低いと判定された保護領域への間接的な手続き呼び出し以外におけるアクセスを不正アクセスとして禁止するメモリ保護技術の提供が可能になる。
<実施形態2>
実施形態2の情報処理システムは情報処理装置1および情報処理装置3の二つの情報処理装置から構成され、情報処理装置1は実施形態1のものと同じである。図4Aに実施形態2にかかる情報処理装置3の構成を示す。実施形態2の情報処理装置3のメモリ管理ユニット402は例外時アクセス権管理テーブル406を有する。例外時アクセス権管理テーブル406はメモリ408上にあってもよい。単一アドレス空間上の保護領域の配置および保護領域間の関係は実施形態1と同様である。
入出力インタフェース114は、外部記憶装置や情報処理装置3のユーザとのやりとりを実現する入出力機器として機能することが可能である。さらに入出力インタフェース114は外部装置へ接続するネットワーク機器を接続可能にし、CPU401に対して割込みを通知することが可能である。割り込みは検証対象イメージ116の実行中にも発生する可能性がある。CPU401は例外処理を実行するための例外モードとそれ以外の処理を実行するための通常モードとを有し、割込みの入力を受理すると例外モードに遷移する。メモリ管理ユニット402はCPU401の実行モードを認識し、CPU401が通常モードのときはアクセス権管理テーブル405を参照してアクセスの可否を判断する。そして、メモリ管理ユニット402はCPU401が例外モードのときは例外時アクセス権管理テーブル406を参照してアクセスの可否を判断する。アクセス権管理テーブル405および例外時アクセス権管理テーブル406に保持される情報は実施形態1におけるアクセス権管理テーブル119と同じである。
メモリ408上の例外時アクセス領域定義テーブル407は情報処理装置3において生成されてもよいし、検証対象イメージ116とともに情報処理装置1から渡されてもよい。図8(b)に例外時アクセス領域定義テーブル407が保持する情報を示す。例外時アクセス領域定義テーブル407は、例外処理ごとにアクセスする可能性のある領域を定義するテーブルである。例えば、例外ハンドラEXP1は0x0000から0x0FFFのアドレス範囲にのみアクセスする可能性があり、例外ハンドラISR2は0x0000から0x0FFFおよび0x3A00から0x37FFのアドレス範囲にアクセスする可能性がある。
図4Bに、例外時アクセス権管理テーブル406の初期設定を例示する。この初期設定によれば、CPU401が例外モードに遷移した直後には、オペレーティングシステムに割り当てたアドレス空間0x0000から0x0FFFのみがアクセス可能である。
図5に、例外の発生により例外ハンドラを実行する処理を示す。ここでは、ISR2を呼び出す場合の処理を例に処理を説明する。まず、CPUが例外モードになるとOSに制御が移る。OSはステップS502において、例外時アクセス領域定義テーブル407を参照して、例外ハンドラISR2がアクセスする保護領域を特定する。ステップS503では、例外時アクセス権管理テーブル406の設定(図4B)を変更し、例外ハンドラISR2による0x0000から0x0FFFおよび0x3A00から0x3FFFのアドレス範囲に対するアクセスを許可する。次に、ステップS504で例外ハンドラISR2を呼び出す。例外ハンドラISR2の終了後、ステップS505において、例外時アクセス権管理テーブル406の設定を変更し、例外発生前の状態に復帰させる。上記以外の動作は実施形態1と同様である。
以上の構成によれば、例外ハンドラの実行において、アクセスを必要としない保護領域のメモリを不正アクセスによる破壊から防ぐことができる。また、例外ハンドラはアクセスを必要とする保護領域に対して間接的な機能呼び出しを用いずに直接的にアクセス可能であるため、メモリ保護による割り込み処理の応答性の低下を抑えることが出来る。
<実施形態3>
実施形態3の情報処理システムは情報処理装置2および情報処理装置4の二つの情報処理装置から構成され、情報処理装置2は実施形態1のものと同じである。図6Aに実施形態3にかかる情報処理装置4の構成を示す。実施形態1との違いは、検証対象プログラム605における機能呼び出しが全て直接的な関数コールとして記述されていることである。また、公開手続き一覧テーブル606を有することも、実施形態1と相違する。公開手続き一覧テーブル606は保護領域間で呼び出すことが許可された手続きのシンボル名を列挙したテーブルである。
図7に、異なる保護領域への直接的な手続き呼び出しを間接的な手続き呼び出しに変換する処理を示す。検証対象イメージ生成プログラム607は検証対象プログラム605における手続き呼び出しの置換をコンパイル時に行う。まず、ステップS702において、別モジュールから呼び出される手続きのリストを生成する。ステップS703において、ステップS702で生成されたリストから、公開手続き一覧テーブル606に含まれない手続きを削除する。次に、ステップS704において、リストに残ったそれぞれの手続きを図3に示した手順に従って間接的に呼び出す手続きを検証対象プログラム605に追加する。さらに、ステップS705において、ステップS704で追加された手続きのシンボル名を、そこから間接的に呼び出される手続きのシンボル名にプレフィックス__を付与した文字列とする。最後に、ステップS706において、検証対象プログラム605における保護領域をまたぐ手続き呼び出しにおいて、呼び出される手続き名がステップS703で生成したリストに含まれていれば、手続き名にプレフィックス__を付与する。
ステップS704で追加された手続きは、それを呼び出すモジュールが直接呼び出せる領域に配置する。例えば、どのモジュールにも割り当てられていない0x3800から0x39FFのアドレス範囲を全てのモジュールからアクセス可能な領域として設定して、そこに追加された手続きを配置すれば全てのモジュールから直接的に呼び出すことが可能になる。
図6Bは、図7のフローチャートに従って手続き呼び出しを変換した後の呼び出し関係を例示的に説明する概念図である。図6Bでは、モジュールA651からモジュールB652に対する直接的な関数コール(procB)が、変換処理において追加された手続き653への呼び出し(_procB)に変換されている。一方、追加された手続き653は直接的な関数コールによりモジュールB652の手続きを呼び出す。その結果、モジュールA651からモジュールB652への機能呼び出しは間接的な手続き呼び出しになる。上記以外の動作は実施形態1と同様である。
本発明は、複数の保護領域における包含関係に基づいて直接的なアクセスを禁止するか否かを判定し、判定結果に応じて記述を変えるコンパイラに適用してもよい。
以上の構成によれば、検証対象プログラム605を開発者が変更しなくても保護領域間の関係を変更することが可能であり、プログラムを変更する場合と比較して開発効率を向上させることが出来る。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (11)

  1. メモリのアドレス空間を二つ以上の保護領域に分割し、プログラムによる保護領域への不正アクセスから前記メモリを保護するメモリ保護方法であって、
    情報処理装置の定義手段が、保護領域の間の関係を定義する定義工程と、
    前記情報処理装置の判定手段が、前記保護領域の間の前記関係が包含関係である場合に、被包含保護領域から包含保護領域へは直接アクセス不可として、包含保護領域から被包含保護領域へは直接アクセス可能として判定する判定工程と、
    前記情報処理装置のメモリ管理手段が、直接アクセス可能と判定されたアクセスに対して直接的なアクセスを許可し、直接アクセス不可と判定されたアクセスについて直接的なアクセスを禁止するメモリ管理工程と、
    を有し、
    前記判定工程は、前記直接アクセス可能と判定された保護領域と、前記直接アクセス不可と判定された保護領域と、の判定の結果を、前記保護領域の間の関係を定めたアクセス権管理テーブルに格納し、
    前記直接アクセス不可と判定された保護領域に対するアクセスが要求された場合に、前記メモリ管理工程は、前記アクセス権管理テーブルに格納されている前記直接アクセス不可と判定された保護領域を前記直接アクセス可能な保護領域として変更し、前記直接アクセス不可と判定された保護領域への間接的なアクセスを許可することを特徴とするメモリ保護方法。
  2. 前記判定工程は、前記保護領域の間の前記関係が包含関係でない場合に、互いの保護領域は直接アクセス不可であると判定することを特徴とする請求項1に記載のメモリ保護方法。
  3. 前記直接アクセス不可と判定された保護領域への間接的なアクセスが終了した後に、前記メモリ管理工程は、前記直接アクセス可能な保護領域として変更された保護領域を、前記直接アクセス不可の保護領域に戻し、当該保護領域への直接的なアクセスを不正アクセスとして禁止することを特徴とする請求項に記載のメモリ保護方法。
  4. 前記メモリには、例外処理ごとにアクセスされる可能性のある保護領域を定義する例外時アクセス領域定義テーブルが格納されていることを特徴とする請求項に記載のメモリ保護方法。
  5. 前記情報処理装置の入力手段が、例外処理として割込み処理の入力を受け付ける入力工程を更に有し、
    前記メモリ管理工程は、前記入力工程で前記例外処理として割込み処理の入力が受け付けられた場合に、前記例外時アクセス領域定義テーブルを参照して、前記割込み処理によりアクセスされる可能性のある保護領域を求め、当該保護領域が、前記アクセス権管理テーブルにおいて前記直接アクセス可能と判定された保護領域として格納されている場合に、前記アクセスする可能性のある保護領域に対する直接的なアクセスを許可することを特徴とする請求項に記載のメモリ保護方法。
  6. 前記割込み処理により前記アクセスされる可能性のある保護領域が、前記アクセス権管理テーブルにおいて前記直接アクセス不可と判定された保護領域として格納されている場合に、
    前記メモリ管理工程は、前記アクセス権管理テーブルに格納されている前記直接アクセス不可と判定された保護領域を前記直接アクセス可能な保護領域として変更し、前記アクセスされる可能性のある保護領域への間接的なアクセスを許可することを特徴とする請求項に記載のメモリ保護方法。
  7. 前記割込み処理が終了した後に、前記メモリ管理工程は、前記アクセス権管理テーブルに格納されている、前記直接アクセス可能な保護領域として変更された保護領域を、前記直接アクセス不可の保護領域に戻し、当該保護領域への直接的なアクセスを不正アクセスとして禁止することを特徴とする請求項に記載のメモリ保護方法。
  8. 前記メモリ管理工程はプログラムの記述を生成する工程であって、直接的なアクセスを許可するアクセスは関数コールによって記述され、直接的なアクセスを禁止するアクセスは間接的な手続き呼び出しによって記述されることを特徴とする請求項1に記載のメモリ保護方法。
  9. 前記メモリ管理工程はプログラムを実行する工程であって、直接的なアクセスを許可する場合には関数コールによるアクセスを実行し、直接的なアクセスを禁止する場合には間接的な手続き呼び出しによるアクセスを実行することを特徴とする請求項1に記載のメモリ保護方法。
  10. メモリのアドレス空間を二つ以上の保護領域に分割し、プログラムによる保護領域への不正アクセスから前記メモリを保護するメモリ保護方法であって、
    情報処理装置のメモリ管理手段が、信頼度が高いモジュールから前記保護領域へのアクセスに対して関数コールによって直接アクセスし、信頼度が高くないモジュールから前記保護領域への関数コールによる直接アクセスを禁止して間接的な手続き呼び出しによってアクセスする工程を有し、
    前記工程は、前記直接アクセスが可能な保護領域と、前記直接アクセスが禁止された保護領域とを、前記保護領域の間の関係を定めたアクセス権管理テーブルに格納し、
    前記直接アクセスが禁止された保護領域に対するアクセスが要求された場合に、前記工程は、前記アクセス権管理テーブルに格納されている前記直接アクセスが禁止された保護領域を前記直接アクセスが可能な保護領域として変更し、前記直接アクセスが禁止された保護領域への間接的なアクセスを許可することを特徴とするメモリ保護方法。
  11. メモリのアドレス空間を二つ以上の保護領域に分割し、プログラムによる保護領域への不正アクセスから前記メモリを保護する情報処理装置であって、
    保護領域の間の関係を定義する定義手段と、
    前記保護領域の間の前記関係が包含関係である場合に、被包含保護領域から包含保護領域へは直接アクセス不可として、包含保護領域から被包含保護領域へは直接アクセス可能として判定する判定手段と、
    直接アクセス可能と判定されたアクセスに対して直接的なアクセスを許可し、直接アクセス不可と判定されたアクセスについて直接的なアクセスを禁止するメモリ管理手段と、
    を備え
    前記判定手段は、前記直接アクセス可能と判定された保護領域と、前記直接アクセス不可と判定された保護領域と、の判定の結果を、前記保護領域の間の関係を定めたアクセス権管理テーブルに格納し、
    前記直接アクセス不可と判定された保護領域に対するアクセスが要求された場合に、前記メモリ管理手段は、前記アクセス権管理テーブルに格納されている前記直接アクセス不可と判定された保護領域を前記直接アクセス可能な保護領域として変更し、前記直接アクセス不可と判定された保護領域への間接的なアクセスを許可することを特徴とする情報処理装置。
JP2010247843A 2009-12-15 2010-11-04 メモリ保護方法および情報処理装置 Expired - Fee Related JP5582971B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010247843A JP5582971B2 (ja) 2009-12-15 2010-11-04 メモリ保護方法および情報処理装置
US12/949,247 US8478960B2 (en) 2009-12-15 2010-11-18 Information processing apparatus and memory protection method
CN201010592027.6A CN102096642B (zh) 2009-12-15 2010-12-13 存储器保护装置及存储器保护方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009284547 2009-12-15
JP2009284547 2009-12-15
JP2010247843A JP5582971B2 (ja) 2009-12-15 2010-11-04 メモリ保護方法および情報処理装置

Publications (2)

Publication Number Publication Date
JP2011146030A JP2011146030A (ja) 2011-07-28
JP5582971B2 true JP5582971B2 (ja) 2014-09-03

Family

ID=44129744

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010247843A Expired - Fee Related JP5582971B2 (ja) 2009-12-15 2010-11-04 メモリ保護方法および情報処理装置

Country Status (3)

Country Link
US (1) US8478960B2 (ja)
JP (1) JP5582971B2 (ja)
CN (1) CN102096642B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5582971B2 (ja) * 2009-12-15 2014-09-03 キヤノン株式会社 メモリ保護方法および情報処理装置
CN102592083B (zh) * 2011-12-27 2014-12-10 深圳国微技术有限公司 用于提高soc芯片***安全的存储保护控制器及方法
JP5914145B2 (ja) 2012-05-01 2016-05-11 ルネサスエレクトロニクス株式会社 メモリ保護回路、処理装置、およびメモリ保護方法
DE102012218363A1 (de) * 2012-10-09 2014-04-10 Continental Automotive Gmbh Verfahren zur Steuerung eines getrennten Ablaufs von verknüpften Programmblöcken und Steuergerät
GB2522906B (en) * 2014-02-10 2021-07-14 Advanced Risc Mach Ltd Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address
KR20150101683A (ko) * 2014-02-27 2015-09-04 삼성전자주식회사 자기 암호화 드라이브 및 그것을 포함한 유저 장치
DE102015223335A1 (de) * 2015-11-25 2017-06-01 Robert Bosch Gmbh Verfahren zum Betreiben eines Mikrocontrollers
US10824572B2 (en) 2016-09-09 2020-11-03 Cylance Inc. Memory space protection
JP6737189B2 (ja) * 2017-01-18 2020-08-05 トヨタ自動車株式会社 不正判定システム及び不正判定方法
GB2570474B (en) 2018-01-26 2020-04-15 Advanced Risc Mach Ltd Region fusing
US11334501B2 (en) 2020-01-28 2022-05-17 Hewlett Packard Enterprise Development Lp Access permissions for memory regions

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677546A (en) * 1984-08-17 1987-06-30 Signetics Guarded regions for controlling memory access
US5280614A (en) * 1990-08-21 1994-01-18 International Business Machines Corporation Apparatus and method for controlling access to data using domains
JP2002189633A (ja) 2000-12-21 2002-07-05 Nec Corp 仮想空間のメモリ保護方法及び装置
US7266658B2 (en) * 2002-09-12 2007-09-04 International Business Machines Corporation System, method, and computer program product for prohibiting unauthorized access to protected memory regions
US6829762B2 (en) * 2002-10-10 2004-12-07 International Business Machnies Corporation Method, apparatus and system for allocating and accessing memory-mapped facilities within a data processing system
JP4559937B2 (ja) * 2005-09-01 2010-10-13 株式会社東芝 プログラム生成装置
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
US20100280817A1 (en) * 2009-04-30 2010-11-04 Spansion Llc Direct pointer access and xip redirector for emulation of memory-mapped devices
JP5582971B2 (ja) * 2009-12-15 2014-09-03 キヤノン株式会社 メモリ保護方法および情報処理装置

Also Published As

Publication number Publication date
JP2011146030A (ja) 2011-07-28
CN102096642A (zh) 2011-06-15
US8478960B2 (en) 2013-07-02
CN102096642B (zh) 2014-02-12
US20110145531A1 (en) 2011-06-16

Similar Documents

Publication Publication Date Title
JP5582971B2 (ja) メモリ保護方法および情報処理装置
US20230128711A1 (en) Technologies for trusted i/o with a channel identifier filter and processor-based cryptographic engine
KR101477080B1 (ko) 메모리 액세스 보안 관리
US7444668B2 (en) Method and apparatus for determining access permission
US9626303B2 (en) Data processing apparatus and address space protection method
JP5225003B2 (ja) メモリ保護方法、情報処理装置、メモリ保護プログラム及びメモリ保護プログラムを記録した記録媒体
US8955062B2 (en) Method and system for permitting access to resources based on instructions of a code tagged with an identifier assigned to a domain
WO2009107330A1 (ja) 情報処理装置及びその制御方法
JPWO2006134691A1 (ja) 情報処理装置、復旧装置、プログラム及び復旧方法
WO2006022161A1 (ja) 情報通信装置及びプログラム実行環境制御方法
JP2007287103A (ja) マイクロコンピュータ及びメモリアクセスの制御方法
JP2006523347A (ja) 周辺装置アクセス保護を有するデータ処理システムおよびその方法
JP2009129394A (ja) 情報処理装置及びそのプログラム実行制御方法
CN112818327A (zh) 基于TrustZone的用户级代码和数据安全可信保护方法及装置
US20080178261A1 (en) Information processing apparatus
JP2010238193A (ja) 情報処理プログラム、情報処理装置および情報処理方法
JP2007109053A (ja) バスアクセス制御装置
JP4335940B2 (ja) データ処理装置及びデータ処理装置における周辺装置保護方法
JP2005084721A (ja) マイクロコンピュータ
JP2007310834A (ja) データ保護方法、情報処理装置及びオペレーティングシステム
JP2005157502A (ja) 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
JP6438381B2 (ja) 電子制御装置
JP5380392B2 (ja) 半導体装置、バスインターフェース装置、およびコンピュータシステム
JP5324676B2 (ja) プロセッサ、バスインターフェース装置、およびコンピュータシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131101

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140404

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140530

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140617

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140715

LAPS Cancellation because of no payment of annual fees