(57)【特許請求の範囲】
【請求項１】
ＣＰＵ及びそれにより実行される複数のプログラムそれぞれを記憶するメモリを搭載する装置におけるプログラム間のアクセスを監視するアクセス監視装置において、
各プログラム毎に、アクセスが許可される前記メモリのアドレスに関する情報を含むアクセス許可情報を格納するテーブルと、
書き込み用メモリと、
前記ＣＰＵから前記メモリに出力される信号を取得し、所定の管理プログラムによってあらかじめ設定される前記ＣＰＵによって実行されるプログラムに対応するアクセス許可情報に基づいて、前記ＣＰＵからの前記信号に含まれるアドレスを監視することによって、前記ＣＰＵにより実行されているプログラムの不正アクセスを検出する検出器とを備え、
前記検出器は、不正アクセスを検出すると、前記不正アクセスに対応する情報を前記書き込み用メモリに書き込むとともに、前記ＣＰＵに割り込みを発生させ、前記管理プログラムによる前記書き込み用メモリに書き込まれた情報に対応する割り込み処理を前記ＣＰＵに実行させ、
前記検出器は、前記ＣＰＵによって実行されるプログラムにより前記書き込み用メモリに当該プログラムの終了が書き込まれたことを検知すると、前記ＣＰＵに割り込みを発生させることを特徴とするアクセス監視装置。
【請求項２】
請求項１において、
前記検出器は、前記ＣＰＵに割り込みを発生させる場合、前記設定されたアクセス許可情報を、前記管理プログラムに対応するアクセス許可情報に切り換えることを特徴とするアクセス監視装置。
【請求項３】
請求項１において、
前記管理プログラムは、前記メモリの全領域にアクセス可能であることを特徴とするアクセス監視装置。
【請求項４】
請求項１において、
前記管理プログラムは、前記メモリに書き換え不能に格納され、前記管理プログラム以外の他のプログラムは、前記管理プログラムの格納領域にアクセス可能であることを特徴とするアクセス監視装置。
【請求項５】
請求項１において、
前記アクセス許可情報は、前記メモリのアドレスに対応するリード及び／又はライトの許可に関する情報を有し、
前記検出器は、不正アクセスを検出すると、前記アクセス許可情報に基づいて、前記ＣＰＵから前記メモリに出力されるリード信号及び／又はライト信号を遮断することを特徴とするアクセス監視装置。
【請求項６】
請求項１において、
前記アクセス許可情報は、前記メモリのアドレスに対応するインストラクション実行及び／又はデータアクセスの許可に関する情報を有し、
前記検出器は、不正アクセスを検出すると、前記アクセス許可情報に基づいて、前記ＣＰＵから前記メモリに出力されるインストラクション信号及び／又はデータアクセス信号を遮断することを特徴とするアクセス監視装置。
【請求項７】
ＣＰＵ及びそれにより実行される複数のプログラムそれぞれを記憶するメモリを搭載する装置におけるプログラム間のアクセスを監視するアクセス監視方法において、
各プログラム毎に、アクセスが許可される前記メモリの領域に関する情報を含むアクセス許可情報を用意し、
所定の管理プログラムによって、前記ＣＰＵによって実行されるプログラムに対応する前記アクセス許可情報を所定のアクセス監視装置に設定し、
前記ＣＰＵから前記メモリに出力されるアクセス信号を前記アクセス監視装置によって取得し、
前記設定されたアクセス許可情報に基づいて、前記アクセス監視装置により前記ＣＰＵからの前記アクセス信号に対応する前記メモリの領域を監視することによって、前記ＣＰＵにより実行されているプログラムの不正アクセスを検出し、
前記アクセス監視装置が不正アクセスを検出すると、前記アクセス監視装置により前記不正アクセスに対応する情報を前記アクセス監視装置の書き込み用メモリに書き込むとともに、前記ＣＰＵに割り込みを発生させ、前記管理プログラムによる前記書き込み用メモリに書き込まれた情報に対応する割り込み処理を前記ＣＰＵに実行させ、
前記アクセス監視装置が前記ＣＰＵによって実行されるプログラムにより前記書き込み用メモリに当該プログラムの終了が書き込まれたことを検知すると、前記アクセス監視装置により前記ＣＰＵに割り込みを発生させることを特徴とするアクセス監視方法。
【請求項８】
請求項７において、
不正アクセスが検出された場合、前記設定されたアクセス許可情報を、前記管理プログラムに対応するアクセス許可情報に強制的に切り換えることを特徴とするアクセス監視方法。
【請求項９】
請求項７において、
前記管理プログラムは、前記メモリの全領域にアクセス可能であることを特徴とするアクセス監視方法。
【請求項１０】
請求項７において、
前記管理プログラムは、前記メモリに書き換え不能領域に格納され、前記管理プログラム以外の他のプログラムは、前記管理プログラム領域にアクセス可能であることを特徴とするアクセス監視方法。
【請求項１１】
請求項７において、
前記アクセス許可情報は、前記メモリのアドレスに対応するリード及び／又はライトの許可に関する情報を有し、
不正アクセスを検出すると、前記アクセス許可情報に基づいて、前記ＣＰＵから前記メモリに出力されるリード信号及び／又はライト信号を遮断することを特徴とするアクセス検出方法。
【請求項１２】
請求項７において、
前記アクセス許可情報は、前記メモリのアドレスに対応するインストラクション実行及び／又はデータアクセスの許可に関する情報を有し、
不正アクセスを検出すると、前記アクセス許可情報に基づいて、前記ＣＰＵから前記メモリに出力されるインストラクション信号及び／又はデータアクセス信号を遮断することを特徴とするアクセス検出方法。
【請求項１３】
請求項７において、
前記ＣＰＵにより実行されるプログラムが、ダイレクトメモリアクセス要求を発生する場合、
前記設定されたアクセス許可情報に基づいて、ダイレクトメモリアクセスを制御するプログラムにより、前記ダイレクトメモリアクセス要求に対応する前記メモリのアクセス領域を監視し、前記ＣＰＵにより実行されているプログラムの不正アクセスを検出することを特徴とするアクセス監視方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のプログラムを実行する中央演算装置（ＣＰＵ）を有する装置のセキュリティに関し、特に、該装置におけるプログラム間の不正アクセスを監視するアクセス監視装置及びアクセス監視方法に関する。
【０００２】
【従来の技術】
近年、電子商取引などが普及するに従って、セキュリティの高い電子マネー端末やＡＴＭ(Automatic Teller Machine)などの電子取引装置が求められている。
電子取引装置は、ＯＳ(Operating System)、アプリケーションや各種ドライバなど複数のプログラムを搭載し、内蔵のＣＰＵがそれらを実行する。このとき、各アプリケーションのセキュリティを確保するには、装置内の内蔵RAM上に展開された複数のアプリケーションを互いに隔離する必要がある。アプリケーションの隔離とは、あるアプリケーションの実行によって、RAM上における別のアプリケーションの展開領域に不正にアクセスすることを防止することである。
【０００３】
【発明が解決しようとする課題】
図５は、装置に搭載されるプログラムの構造図である。図５において、アプリケーションＡ、Ｂ、・・・やドライバＡ、Ｂ、Ｃ、・・・などの各プログラムは、ＯＳによって管理される。
【０００４】
図６は、プログラム実行状況の模式図である。装置内のメモリ（RAM）上には、実行される複数のプログラムが展開されている。ＣＰＵは、実行するプログラムに対応するメモリ領域にアクセスし、実行するプログラムを読み出す。しかしながら、従来においては、各プログラムは、ソフトウェア的に隔離されているだけなので、プログラムの書き換えにより、あるプログラムの実行によって、別のプログラムを読み出すことも可能となる（図中の波線矢印）。
【０００５】
さらに具体的には、各プログラムは、時分割的には１つのプログラムしか動作しないので、ＯＳによって、アプリケーションなどのプログラムの動作を完全に制御することは不可能である。従って、あるプログラムの作成者が、故意に他のプログラムのメモリ領域を見ようとするために、プログラムを書き換えたり、実行中のプログラムの暴走などが発生すると、他のプログラム領域が容易に不正アクセスすることが可能である。
【０００６】
このように、従来の装置では、あるプログラムがセキュリティ上重要な情報（例えば暗証番号など）をメモリ領域に展開した場合、他のプログラムからその領域に物理的にアクセスされるおそれがあり、プログラムをソフトウェア的に隔離するだけでは、絶対的な隔離は保証されないという問題がある。
【０００７】
また、あるプログラムを装置に搭載し、その動作を確認しても、その後、装置に他のプログラムを搭載してしまうと、元のプログラムに影響がないか、元のプログラムが正しく動作するかなどを保証することができなくなる。従って、元のプログラムの動作検証を他のプログラム搭載後に最初から検証し直さなくてはならなかった。
【０００８】
そこで、本発明の目的は、複数のプログラムを搭載する装置において、プログラム間の不正アクセスを監視するアクセス監視装置及びアクセス監視方法を提供することにある。
【０００９】
【課題を解決するための手段】
上記目的を達成するために、本発明では、プログラムのアクセス違反を、ハードウェアであるアクセス監視装置が監視する。アクセス監視装置は、ＣＰＵからメモリに出力される信号を取得する。そして、アクセス監視装置は、各プログラムに許可されるメモリ領域の情報であるアクセス許可テーブルを内蔵し、それを参照することによって、ＣＰＵからの信号のアクセス違反を検出する。このように、ハードウェアで不正アクセスを監視することで、ソフトウェアの書き換えなどによる不正アクセスを防止することができる。
【００１０】
上記目的を達成するための本発明のアクセス監視装置は、ＣＰＵ及びそれにより実行される複数のプログラムそれぞれを記憶するメモリを搭載する装置におけるプログラム間のアクセスを監視するアクセス監視装置において、各プログラム毎に、アクセスが許可される前記メモリのアドレスに関する情報を含むアクセス許可情報を格納するテーブルと、書き込み用メモリと、前記ＣＰＵから前記メモリに出力される信号を取得し、所定の管理プログラムによってあらかじめ設定される前記ＣＰＵによって実行されるプログラムに対応するアクセス許可情報に基づいて、前記ＣＰＵからの前記信号に含まれるアドレスを監視することによって、前記ＣＰＵにより実行されているプログラムの不正アクセスを検出する検出器とを備え、前記検出器は、不正アクセスを検出すると、前記不正アクセスに対応する情報を前記書き込み用メモリに書き込むとともに、前記ＣＰＵに割り込みを発生させ、前記管理プログラムによる前記書き込み用メモリに書き込まれた情報に対応する割り込み処理を前記ＣＰＵに実行させ、前記検出器は、前記ＣＰＵによって実行されるプログラムにより前記書き込み用メモリに当該プログラムの終了が書き込まれたことを検知すると、前記ＣＰＵに割り込みを発生させることを特徴とする。
【００１４】
また、検出器は、ＣＰＵに割り込みを発生させる場合、設定されたアクセス許可情報を、管理プログラムに対応するアクセス許可情報に切り換える。
【００１５】
管理プログラムは、メモリの全領域にアクセス可能であって、また、管理プログラムは、メモリに書き換え不能に格納され、管理プログラム以外の他のプログラムは、管理プログラムの格納領域にアクセス可能である。
【００１６】
また、好ましくは、アクセス許可情報は、メモリのアドレスに対応するリード及び／又はライトの許可に関する情報を有し、
検出器は、不正アクセスを検出すると、アクセス許可情報に基づいて、ＣＰＵからメモリに出力されるリード信号及び／又はライト信号を遮断してもよい。
【００１７】
また、好ましくは、アクセス許可情報は、メモリのアドレスに対応するインストラクション実行及び／又はデータアクセスの許可に関する情報を有し、
検出器は、不正アクセスを検出すると、アクセス許可情報に基づいて、ＣＰＵからメモリに出力されるインストラクション信号及び／又はデータアクセス信号を遮断してもよい。
【００１８】
上記目的を達成するためのアクセス監視方法は、ＣＰＵ及びそれにより実行される複数のプログラムそれぞれを記憶するメモリを搭載する装置におけるプログラム間のアクセスを監視するアクセス監視方法において、各プログラム毎に、アクセスが許可される前記メモリの領域に関する情報を含むアクセス許可情報を用意し、所定の管理プログラムによって、前記ＣＰＵによって実行されるプログラムに対応する前記アクセス許可情報を所定のアクセス監視装置に設定し、前記ＣＰＵから前記メモリに出力されるアクセス信号を前記アクセス監視装置によって取得し、前記設定されたアクセス許可情報に基づいて、前記アクセス監視装置により前記ＣＰＵからの前記アクセス信号に対応する前記メモリの領域を監視することによって、前記ＣＰＵにより実行されているプログラムの不正アクセスを検出し、前記アクセス監視装置が不正アクセスを検出すると、前記アクセス監視装置により前記不正アクセスに対応する情報を前記アクセス監視装置の書き込み用メモリに書き込むとともに、前記ＣＰＵに割り込みを発生させ、前記管理プログラムによる前記書き込み用メモリに書き込まれた情報に対応する割り込み処理を前記ＣＰＵに実行させ、前記アクセス監視装置が前記ＣＰＵによって実行されるプログラムにより前記書き込み用メモリに当該プログラムの終了が書き込まれたことを検知すると、前記アクセス監視装置により前記ＣＰＵに割り込みを発生させることを特徴とする。
【００１９】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。しかしながら、本発明の技術的範囲が、本実施の形態に限定されるものではない。
【００２０】
図１は、本発明の実施の形態におけるアクセス監視装置の構成図である。本発明では、あるプログラムの実行によるメモリ領域に展開された他のプログラムへの不正アクセスをハードウェア、即ち、図１における監視装置１によって検出することにより、各プログラム間の隔離を絶対的に保証する。
【００２１】
図１において、ＣＰＵ２は、内部メモリ、レジスタ、外部デバイスなどＣＰＵ２によってアクセスされるデバイス群３（以下、代表して、メモリと称す）に各種信号（アドレス信号ＡＤ、データ信号ＤＴ、ストローブ信号（リード信号、ライト信号、インストラクション信号、データアクセス信号など）ＳＴＲＯＢＥＳなど）を出力する。アクセス監視装置１は、ＣＰＵ２から出力される信号を監視する。
【００２２】
アクセス監視装置１は、アクセス監視情報１１、アクセス違反検出器１２、アクセス違反／終了情報１３を有する。アクセス監視情報１１及びアクセス違反／終了情報１３は、例えば、アクセス監視装置１に内蔵されるレジスタに格納される。さらに、アクセス監視情報１１は、実行中アプリケーション情報１１１及びアクセス許可領域の情報テーブル（以下、アクセス許可テーブルと称す）１１２を有する。実行中アプリケーション情報１１１は、後述する各プログラムを識別するための識別番号を有する。アクセス許可テーブル１１２は、各アプリケーションに対応するアクセス許可領域の情報を有する。アクセス違反検出器１２は、比較器などから構成され、以下に後述するように、ＣＰＵ２から出力される信号（アドレス信号、ストローブ信号など）を、アクセス監視情報１１に基づいて監視する。
【００２３】
また、アクセス違反検出器１２は、各プログラムの終了やアクセス違反を検知すると、アクセス違反情報やプログラム終了情報を、レジスタ（書き込み用メモリ）にアクセス違反／終了情報１３として書き込むとともに、ＣＰＵ２に対して割り込み（ＩＮＴ）を発生させる。
【００２４】
図２は、本発明の実施の形態におけるアクセス監視装置に搭載されるプログラムの構造を説明するための図である。図２（ａ）において、本発明の実施の形態の監視装置１は、図１２との比較において、さらに、アクセス監視情報（実行中アプリケーション情報１１１、アクセス許可テーブル１１２）１１、アクセス違反／終了情報１３を管理するプログラムであるアプリケーションマネージャ（管理プログラム）を搭載する。また、アプリケーションマネージャが、各アプリケーションの起動、終了を管理する。
【００２５】
また、本発明の実施の形態では、各プログラムに対して、各プログラムを識別子が割り当てられる。例えば、識別子として「０」〜「１５」までの番号（識別番号）が割り当てられる場合、識別番号は、図２（ｂ）に示すように定義される。即ち、識別番号「０」には、ＯＳ、アプリケーションマネージャ、ドライバ、ハンドラ類が割り当てられる。そして、識別番号「０」は特別な番号であって、識別番号「０」のプログラムについては、内部メモリ３内の全ての領域に対するアクセスが許可される。従って、上述におけるアクセス許可テーブル１１２において、識別番号「０」に対応するテーブルは必要ない。
【００２６】
また、識別番号「０」以外の識別番号「１」〜「１５」には、個々のアプリケーションが割り当てられる。識別番号「１」〜「１５」のアプリケーションについては、アクセス許可テーブル１１２により指定された内部メモリ３の領域にのみアクセスが許可される。識別番号「１」〜「１５」のプログラムが、アクセス許可テーブル１１２で指定されていない領域にアクセスした場合、アクセス違反検出器２は、アクセス違反を検出する。
【００２７】
図３は、本発明の実施の形態における内部メモリの領域を説明する図である。
図３に示される領域Ａ〜Ｅにおいて、領域Ａは、識別番号「０」のプログラムがアクセス可能な領域であって、ＯＳなどが格納される。領域Ｂは、識別番号「０」〜「１５」全てのアプリケーションがアクセス可能な領域であって、アプリケーションマネージャが格納される。アプリケーションマネージャは、後述するように、識別番号「１」〜「１５」までのプログラムを起動する場合に、アクセス監視情報１１の実行中アプリケーション情報１１１を、識別番号「０」からその起動するアプリケーションの識別番号に書き換える。このとき、この書き換えは、起動されるアプリケーションに処理が移る前に行われるので、書き換えが行われた瞬間に、識別番号「０」のアプリケーションマネージャによる処理はアクセス違反として検出されるという不都合が生じる。
【００２８】
この不都合を解消するために、本発明の実施の形態では、図３に示すように、アプリケーションマネージャは、全ての識別番号のプログラムがアクセスできる領域Ｂに格納される。即ち、識別番号の書き換えルーチンは、全てのプログラムがアクセス可能な領域で行われる。従って、識別番号「１」〜「１５」のアプリケーションに対応する各アクセス許可テーブル１１２は、各アプリケーションに対応する領域（例えば、図３の領域Ｄ、Ｅ）に加えて、領域Ｂのアドレス情報を有する。また、アプリケーションマネージャを不正に書き換えられるのを防止するため、アプリケーションマネージャは、書き換え不能な内部ROMに書き込まれる。
【００２９】
領域Ｃは、例えば、ドライバ、ハンドラ類の使用領域であって、識別番号「０」のプログラムがアクセス可能である。さらに、領域Ｄ、Ｅは、それぞれアプリケーション１、２の使用領域であって、それぞれの識別番号と識別番号「０」のプログラムがアクセス可能である。
【００３０】
図４は、本発明の実施の形態におけるアクセス制御処理フローチャートを示す図である。図４では、例として、識別番号「１」のアプリケーション（以下、単にアプリケーション１と称す）の起動及び終了について説明する。
【００３１】
アプリケーション１を起動する場合、まず、ＯＳからアプリケーションマネージャへの“アプリケーション１の起動依頼”が発行される（Ｓ２０）。そうすると、アプリケーションマネージャは、アクセス監視情報１１の実行中アプリケーション情報１１１を識別番号「０」から「１」に書き換える（Ｓ３０）。これにより、アクセス違反検出器１２は、アプリケーション１に対応するアクセス許可テーブル１１２を選択して、ＣＰＵ２からの各種アクセス信号を監視する。アプリケーションマネージャは、実行中アプリケーション情報１１１を書き換えると、アプリケーション１を呼び出す（Ｓ３１）。
【００３２】
アプリケーション１が起動されて（Ｓ５０）、アプリケーション１の処理が実行される（Ｓ５１）。図３の矢印▲２▼に、アプリケーション１の実行を模式的に示す。そして、アプリケーション１の処理中に、例えば、デバイスの利用要求が発生すると（Ｓ５２）。次に説明する割り込み処理が開始する。割り込み処理は、デバイスの利用要求に限らず、単にアプリケーション１を終了させたい場合のアプリケーション終了でも実行される。
【００３３】
デバイスの利用要求やアプリケーション終了などで割り込み処理を実行させる場合、アプリケーション１は、監視装置１のアクセス違反／終了情報１３に割り込み情報を書き込む（Ｓ５３）。割り込み情報は、割り込み要因（デバイス利用要求、アプリケーション終了、アクセス違反など）も含む。アクセス違反検出器１２は、アクセス違反／終了情報１３も常時監視している。アクセス違反検出器１２は、割り込み情報が書き込まれたことを検出すると、ＣＰＵ２に対して割り込み(INT)を発生させ、さらに、アクセス監視情報１１の実行中アプリケーション情報１１１を識別番号「１」から「０」に書き換える（Ｓ４０）。割り込みが発生すると、ＣＰＵ２は、図３の領域Ａ内における割り込みテーブル領域の割り込みルーチンを実行し（図３の矢印▲３▼）、アプリケーションマネージャに処理を移す（図３の矢印▲４▼）。
【００３４】
アプリケーションマネージャは、アクセス違反／終了情報１３内の割り込み情報を分析し、割り込み要因を判断する（Ｓ３２）。割り込み要因が、デバイスの利用要求である場合、アプリケーションマネージャは、ＯＳに処理を移し、ＯＳがデバイスを呼び出す（デバイスコール）（Ｓ２１）。そうすると、デバイスに対応する例えばハンドラが起動し（Ｓ１０）、デバイスへのアクセス処理が実行される（Ｓ１１）。その後ハンドラが終了する（Ｓ１２）と、再度ＯＳを経由してアプリケーションマネージャに処理が移る。アプリケーションマネージャは、ステップＳ３０、Ｓ３１同様に、実行中アプリケーション情報１１１を識別番号「０」から「１」に書き換え（Ｓ３３）、アプリケーション１を呼び出す（Ｓ３４）。これにより、アプリケーション１の処理が再開する（Ｓ５４）。
【００３５】
アプリケーション１の処理中に、アプリケーション１に対応するアクセス許可テーブル１１２で許可されていないメモリ領域へのアクセス信号が出力されると、アクセス違反検出器１２はアクセス違反（不正アクセス）を検出する（Ｓ５５）。アクセス違反検出器１２は、アクセス違反を検出すると、アクセス違反／終了情報１３に割り込み情報としてアクセス違反要因を書き込むとともに、ＣＰＵ２に対して割り込み(INT)を発生させる。なお、アクセス違反検出器１２は、複数のアクセス違反要因が設定されたアクセスコントロールテーブルを内蔵し、それを参照して、検出されたアクセス違反に対応するアクセス違反要因を決定する。
【００３６】
さらに、アクセス違反検出器１２は、割り込みを発生させるとともに、ステップＳ４０と同様に、アクセス監視情報１１の実行中アプリケーション情報１１１を識別番号「１」から「０」に書き換える（Ｓ４１）。そして、上述同様に、割り込みが発生すると、ＣＰＵ２は、図３の領域Ａ内における割り込みテーブル領域の割り込みルーチンを実行し（図３の矢印▲５▼）、アプリケーションマネージャに処理を移す（図３の矢印▲４▼）。
【００３７】
アプリケーションマネージャは、アクセス違反／終了情報１３内のアクセス違反要因を分析し、割り込み要因を判断する（Ｓ３５）。アクセス違反要因の種類に応じて、異なる処理が設定されていてもよい。例えば、アプリケーションマネージャは、再度、実行中アプリケーション情報１１１を識別番号「０」から「１」に書き換え（Ｓ３６）、アプリケーション１を呼び出す（Ｓ３７）。このとき、アプリケーションマネージャは、アプリケーション１にエラー通知する。これにより、アプリケーション１は終了する（Ｓ５６）。このとき、アプリケーション１は、監視装置１のアクセス違反／終了情報１３にアプリケーション終了に対応する割り込み情報を書き込む（Ｓ５７）。アクセス違反検出器１２は、割り込み情報が書き込まれたことを検出すると、ＣＰＵ２に対して割り込み(INT)を発生させ、さらに、アクセス監視情報１１の実行中アプリケーション情報１１１を識別番号「１」から「０」に書き換える（Ｓ４２）。割り込みが発生すると、上述同様に、アプリケーションマネージャにより割り込み要因が分析され（Ｓ３８）、割り込み要因がアプリケーション終了である場合、アプリケーションは既に終了しているので、処理はＯＳに戻る（Ｓ２３）。
【００３８】
なお、ステップＳ３５で判断される割り込み要因に応じて、アプリケーション１の中で、アプリケーションを終了させずに、ＯＳにおいて、アプリケーションのタスクを削除する処理が行われてもよい（KILL処理）（Ｓ２２）。
【００３９】
このように、本発明の実施の形態によれば、アクセス監視装置１がプログラムのアクセス違反をハードウェア的に監視する。アクセス監視装置１は、各プログラムに許可されるメモリ領域の情報であるアクセス許可テーブルを内蔵し、それを参照することによって、アクセス違反を検出する。従って、プログラムの書き換えなどによる不正なアクセスを防止することができる。
【００４０】
また、各プログラム毎のアクセス許可テーブルを制御するアプリケーションマネージャは、内部ROMに書き込まれるので、アプリケーションマネージャの書き換えは不可能である。従って、アクセス許可テーブルを書き換えることによる不正アクセスも防止され、プログラム間の不正アクセスを絶対的に保証することが実現される。
【００４１】
アクセス許可テーブルが設定されたプログラムは、アクセス許可テーブルにより、内部メモリなどへのアクセスに制限を受ける。アクセス許可テーブルに違反するアクセスを試みると、ハードウェアであるアクセス監視装置１により、ＣＰＵ２に自動的に割り込みを発生させる。そして、ＣＰＵ２の処理は、アプリケーションマネージャによるアクセス違反対応処理に強制的に移行する。
【００４２】
一方、アクセス許可テーブルが設定されたプログラムは、その終了やデバイス利用要求（デバイスリクエスト）にも、割り込みを利用する。上述したように、デバイス利用要求やプログラム終了時に、アクセス監視装置１のレジスタ１３に所定の情報を書き込むことで、アクセス監視装置１は、ＣＰＵ２に割り込みを発生させる。この割り込み処理により、アプリケーションマネージャによるデバイス利用要求処理、プログラム終了処理が実行される。これは、アクセス監視装置１に、実行中のプログラムの変更を認識させるため、アクセス監視装置１内の実行中プログラム情報１１１内の識別番号をアプリケーションマネージャにより変更する必要があるからである。
【００４３】
また、アクセス監視情報１１やアクセス違反／終了情報１３を格納するレジスタの領域は、識別番号「０」のプログラム（特に、アプリケーションマネージャ）のみがアクセス可能な領域とされる。これは、他の識別番号のアプリケーションが不正に自己の識別番号を書き換えるのを防止するためである。
【００４４】
さらに、本発明の実施の形態では、図１に示されるように、アクセス監視装置１は、ＣＰＵ２からのアドレス信号に加えて、ストローブ信号（リード信号、ライト信号、インストラクション信号、データアクセス信号など）も監視する。アクセス許可テーブルには、アクセス許可領域に加えてアクセス条件も設定される。アクセス条件は、例えば、所定のメモリ領域に対するリード許可／不許可、ライト許可／不許可、リード・ライトともに許可／不許可であり、さらには、所定のメモリ領域に対するインストラクション実行の許可／不許可、データアクセスの許可／不許可、インストラクション実行・データアクセスともに許可／不許可である。
【００４５】
アクセス監視装置１は、アクセス許可テーブル１１２のアクセス条件に違反する場合、ストローブ線のゲート４を閉じることにより、不正アクセスを防止してもよい。このように、物理的にストローブ線を遮断して、ストローブ信号を内部メモリ３への到達させないことで、不正アクセスを防止することも可能である。なお、この場合、アクセス監視装置１は、ＣＰＵ２に割り込みを発生させる必要はない（もちろん発生させてもよい）。
【００４６】
また、上述の実施の形態において、ドライバ、ハンドラ類は、アプリケーションマネージャ、ＯＳと同じ識別番号「０」に設定されるが、アプリケーション同様に、識別番号「０」以外の番号が与えられてもよい。但し、アプリケーションによる直接操作は許可されないので、アプリケーションとは、異なる番号が与えられる。また、アプリケーションマネージャ、ＯＳの識別番号は、「０」であることはなく、アプリケーションの識別番号と異なればよい。
【００４７】
（別の実施の形態）
次に、本発明の別の実施の形態について説明する。本実施の形態では、アプリケーションがＤＭＡ (Direct Memory Access) 要求を発生した場合の処理について説明する。ＤＭＡ転送によって、デバイス（メモリなど）は、ＣＰＵを介することなく高速なデータ転送が可能となる。即ち、ＤＭＡ転送は、ＣＰＵの管理外で行われるので、ＤＭＡ転送では、ＣＰＵからデバイスに対する信号が出力されず、本発明のアクセス監視装置は、ＤＭＡ転送での不正アクセスを監視することができない。そこで、本実施の形態では、ＤＭＡ転送の場合は、アプリケーションレベル０に設定されるＤＭＡコントロールハンドラ（制御プログラム）によって不正アクセスを監視する。
【００４８】
図７は、本発明の別の実施の形態におけるアクセス制御処理フローチャートを示す図である。図７では、識別番号「Ｘ（Ｘ＝１〜１５）」のアプリケーション（以下、単にアプリケーションＸと称す）の起動及び終了について説明する。
【００４９】
アプリケーションＸを起動する場合、まず、ＯＳからアプリケーションマネージャへの“アプリケーションＸの起動依頼”が発行される（Ｓ１２０）。そうすると、アプリケーションマネージャは、アクセス監視情報１１の実行中アプリケーション情報１１１を識別番号「０」から「Ｘ」に書き換える（Ｓ１３０）。これにより、アクセス違反検出器１２は、アプリケーションＸに対応するアクセス許可テーブル１１２を選択して、ＣＰＵ２からの各種アクセス信号を監視する。
アプリケーションマネージャは、実行中アプリケーション情報１１１を書き換えると、アプリケーションＸを呼び出す（Ｓ１３１）。
【００５０】
アプリケーションＸが起動されて（Ｓ１５０）、アプリケーションＸの処理中に、例えば、メモリ３のアプリケーション１のアクセス許可領域へのデータ書き込みが行われ（Ｓ１５１）、このデータのＤＭＡ要求が発生すると（Ｓ１５２）、図４で説明した割り込み処理が開始する。
【００５１】
即ち、アプリケーションＸは、監視装置１のアクセス違反／終了情報１３に、ＤＭＡ要求に対応するＤＭＡリクエストシステムコールを割り込み情報として書き込む（Ｓ１５３）。ＤＭＡリクエストシステムコールは、転送元先頭アドレス、転送先先頭アドレス、転送データレングスなどのパラメータを有する。アクセス違反検出器１２は、割り込み情報が書き込まれたことを検出すると、ＣＰＵ２に対して割り込み(INT)を発生させ、さらに、アクセス監視情報１１の実行中アプリケーション情報１１１を識別番号「Ｘ」から「０」に書き換える（Ｓ１４０）。割り込みが発生すると、上述のように、ＣＰＵ２は、アプリケーションマネージャに処理を移す。
【００５２】
アプリケーションマネージャは、アクセス違反／終了情報１３内の割り込み情報を分析し、割り込み要因を判断する（Ｓ１３２）。本実施の形態では、割り込み要因はＤＭＡ要求であるので、アプリケーションマネージャは、ＯＳに処理を移し、ＯＳがＤＭＡコントロールハンドラを起動する（Ｓ１２１）。起動されたＤＭＡコントロールハンドラは、アクセス違反監視装置１のアクセス許可テーブル１１２を参照して、ＤＭＡリクエストシステムコールに含まれるパラメータにの不正アクセスを判定する（Ｓ１１０）。具体的には、ＤＭＡリクエストシステムコールに含まれるパラメータにおいて、
（１）転送元の先頭アドレス〜当該先頭アドレス＋転送データレングスまでのメモリ領域が、アプリケーションＸのリード許可領域であるか否か、さらに、
（２）転送先の先頭アドレス〜当該先頭アドレス＋転送データレングスまでのメモリ領域が、アプリケーションＸのライト許可領域であるか否かが判定される。
【００５３】
ＤＭＡコントロールハンドラは、不正アクセスと判定すると、ＯＳは、不正アクセス通知を受信し（Ｓ１２２）、さらに、ＯＳは、不正アクセス通知をアプリケーションマネージャに転送し、処理をアプリケーションマネージャに移す。
【００５４】
アプリケーションマネージャは、実行中アプリケーション情報１１１を識別番号「０」から「Ｘ」に書き換え（Ｓ１３３）、アプリケーションＸを再度呼び出す（Ｓ１３４）。このとき、アプリケーションマネージャは、アプリケーションＸにエラー通知する。これにより、アプリケーションＸは終了処理を行う（Ｓ１５４）。このとき、アプリケーションＸは、監視装置１のアクセス違反／終了情報１３にアプリケーション終了に対応するＥＸＩＴリクエストシステムコールを割り込み情報として書き込む（Ｓ１５５）。アクセス違反検出器１２は、割り込み情報が書き込まれたことを検出すると、ＣＰＵ２に対して割り込み(INT)を発生させ、さらに、アクセス監視情報１１の実行中アプリケーション情報１１１を識別番号「Ｘ」から「０」に書き換える（Ｓ１４１）。割り込みが発生すると、上述同様に、アプリケーションマネージャにより割り込み要因が分析される（Ｓ１３５）。本実施の形態では、割り込み要因がアプリケーション終了であるので、ＯＳは、アプリケーションＥＸＩＴ処理を行い（Ｓ１２３）、次のタスク処理に移行する（Ｓ１２４）。
【００５５】
一方、ステップＳ１１０において、不正アクセスでない場合、ＤＭＡコントロールハンドラは、ＤＭＡ命令を発行し（Ｓ１１１）、ＤＭＡ転送が実行される。
ＤＭＡ転送が終了すると、ＯＳは、ＤＭＡ完了通知を受信する（Ｓ１２５）。さらに、ＯＳは、ＤＭＡ完了通知をアプリケーションマネージャに転送し、処理をアプリケーションマネージャに移す。
【００５６】
アプリケーションマネージャは、実行中アプリケーション情報１１１を識別番号「０」から「Ｘ」に書き換え（Ｓ１３６）、アプリケーションＸを再度呼び出す（Ｓ１３７）。これにより、アプリケーションＸの処理が継続する（Ｓ１５６）。
【００５７】
このように、アプリケーションにおいてＤＭＡ要求が発生した場合、ＤＭＡコントロールハンドラが、起動しているアプリケーションのＤＭＡ要求に対するアクセス領域をチェックし、不正アクセスを検出する。
【００５８】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【００５９】
【発明の効果】
以上、本発明によれば、ＣＰＵ及びそれにより実行される複数のプログラムを搭載する装置において、プログラム間の不正アクセスを防止することができ、装置のセキュリティを高められる。
【図面の簡単な説明】
【図１】本発明の実施の形態における監視装置の構成図である。
【図２】本発明の実施の形態における監視装置に搭載されるプログラムの構造を説明するための図である。
【図３】本発明の実施の形態における内部メモリの領域を説明する図である。
【図４】本発明の実施の形態におけるアクセス制御処理フローチャートを示す図である。
【図５】装置に搭載される従来のプログラムの構造図である。
【図６】プログラム実行状況の模式図である。
【図７】本発明の別の実施の形態におけるアクセス制御処理フローチャートを示す図である。
【符号の説明】
１  監視装置
２  ＣＰＵ
３  内部メモリ
１１  アクセス監視情報
１２  アクセス違反検出器
１３  アクセス違反／終了情報
１１１  実行中アプリケーション情報
１１２  アクセス許可テーブル
【図１】
0004522548.tif 000002
【図２】
0004522548.tif 000003
【図３】
0004522548.tif 000004
【図４】
0004522548.tif 000005
【図５】
0004522548.tif 000006
【図６】
0004522548.tif 000007
【図７】
0004522548.tif 000008