(57)【特許請求の範囲】
【請求項１】
所定メモリに対するアクセスが許可されたオープン状態と該所定メモリに対するアクセスが禁止されたクローズ状態とを指示に応じて相互に切り換えることのできるゲートを有するメモリアクセス制御装置であって、
前記ゲートをオープン状態からクローズ状態への切り換えはできるがクローズ状態からオープン状態への切り換えができない不可逆状態にする切換制限手段と、
前記切換制限手段により前記ゲートを不可逆状態にし、且つ、前記ゲートをオープン状態に切り換えた状態で前記所定メモリに対してアクセスを行う処理の実行を開始する開始手段と、
前記開始手段により開始された前記所定メモリに対してアクセスを行う処理の実行中における異常の発生を監視する監視手段と、
前記監視手段により異常が検出された場合に前記ゲートをクローズ状態に切り換える異常対応手段と、
を具備したことを特徴とするメモリアクセス制御装置。
【請求項２】
前記ゲートは、前記不可逆状態でない場合には、前記オープン状態と前記クローズ状態との切換をプログラムからの指示によって行うことが可能であり、前記不可逆状態である場合には、プログラムからの指示によるクローズ状態からオープン状態への切り換えをできないようにしたことを特徴とする請求項１記載のメモリアクセス制御装置。
【請求項３】
前記オープン状態と前記クローズ状態との切換を行うプログラムは、前記ゲートをクローズ状態からオープン状態に切り換えるために必要な所定のキーデータとともに外部よりインストールされ、該所定のキーデータに基づいて前記ゲートをクローズ状態からオープン状態に切り換えた後に該所定のキーデータを消去することを特徴とする請求項２記載のメモリアクセス制御装置。
【請求項４】
前記不可逆状態となった場合に、再度前記ゲートをクローズ状態からオープン状態に切り換えるためには、部品の交換を行う必要があることを特徴とする請求項２記載のメモリアクセス制御装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は不正なメモリアクセスを禁止するメモリアクセス制御装置に関し、特に、メモリ上の不正プログラムの起動防止に関する。
【０００２】
【従来の技術】
通常のアプリケーションプログラムでは、そのアプリケーションプログラムが実行できれば良く、アプリケーションプログラムそのものの正当性が問題となる場合はほとんどない。
【０００３】
ところが、ある種のアプリケーションプログラムでは、何等かの審査基準（法律，法令等に規定，規制されている基準）をパスして許可を受ける必要があるものがある。そして、このような審査基準をパスした正規なアプリケーションプログラムだけでプログラム処理装置を動作させることが望まれる場合、そのプログラム処理装置に装着されているアプリケーションプログラムの正当性が問題になる。
【０００４】
【発明が解決しようとする課題】
従来では、上記のような正当性が問題となる特殊な場合に十分対応しきれておらず、例えば、不正の業者がマシンのアプリケーションプログラム（ＲＯＭ）を不正なものと交換した場合、それをチェックすることができなかった。
【０００５】
従って、プログラムが不正なものとして交換された場合でも、そのプログラムをそのまま起動することができたものであった。
本発明の課題は、不正なメモリアクセスを禁止することであり、また、メモリ上の不正なプログラムの起動を防止することである。
【０００６】
【課題を解決するための手段】
請求項１の発明の手段は次の通りである。
所定メモリに対するアクセスが許可されたオープン状態と該所定メモリに対するアクセスが禁止されたクローズ状態とを指示に応じて相互に切り換えることのできるゲートを有するメモリアクセス制御装置であって、
前記ゲートをオープン状態からクローズ状態への切り換えはできるがクローズ状態からオープン状態への切り換えができない不可逆状態にする切換制限手段と、
前記切換制限手段により前記ゲートを不可逆状態にし、且つ、前記ゲートをオープン状態に切り換えた状態で前記所定メモリに対してアクセスを行う処理の実行を開始する開始手段と、
前記開始手段により開始された前記所定メモリに対してアクセスを行う処理の実行中における異常の発生を監視する監視手段と、
前記監視手段により異常が検出された場合に前記ゲートをクローズ状態に切り換える異常対応手段と、
を具備したことを特徴としている。
【０００８】
【実施例】
以下、本発明の一実施例を図１及び図２を参照して説明する。
図２は本発明の一実施例のプログラムの起動方法の適用されたプログラム処理装置のブロック構成図であり、同図に於いて、参照番号１０は、アドレス／データバス１２を通じて各部を制御するＣＰＵである。１４は電源投入直後にＣＰＵ１０で実行される初期プログラムローディングソフトウェアプログラム（以降、ＩＰＬソフトと称す）を記憶しているＩＰＬソフトＲＯＭであり、１６は上記ＩＰＬソフトに従って初期化ソフトウェアプログラム（以降、初期化ソフトと称す）ローダ１８により外部からインストールされた初期化ソフトを記憶する初期化ソフト用ＲＡＭである。
【０００９】
２０は上記初期化ソフトに従って起動されるオペレーティングシステムプログラム（以降、ＯＳと称す）を記憶しているＯＳＲＯＭであり、２２は上記ＯＳに従って起動されるアプリケーションプログラムを記憶しているアプリＲＯＭ、２４は上記ＯＳ及びアプリケーションプログラムの処理に於いて利用されるワークＲＡＭである。２６は入力制御部２８により制御されるキーボードやマウス等を含む入力部であり、３０は表示制御部３２により制御されるＣＲＴ等を含む表示部である。
【００１０】
３４はアドレス／データバス１２上に設けられたゲート回路である。このゲート回路３４は、ＣＰＵ１０とＯＳＲＯＭ２０及びアプリＲＯＭ２２とを分離，接続するために設けられている。３６は上記ゲート回路３４の開閉を制御するゲート制御部であり、３８はゲート制御部３６からゲート回路３４へのゲートオープン信号ラインに設けられた特殊なヒューズである。このヒューズ３８は、ゲート回路３４を開いた後、焼き切られる。従って、以降は、ゲート回路３４を開く信号は伝わらない。
【００１１】
以下、上記の構成に於ける動作を説明する。
図１の（Ａ）は、電源オンによるシステム立上げ時の動作を示すフローチャートである。
【００１２】
即ち、電源がオンされると、ＣＰＵ１０は、ＩＰＬソフトＲＯＭ１４のＩＰＬソフトを起動して、まず初期化ソフトローダ１８により初期化ソフトを外部より初期化ソフト用ＲＡＭ１６にインストールする（ステップＳ１１）。そして、この初期化ソフト用ＲＡＭ１６に記憶された初期化ソフトを起動して（ステップＳ１２）、処理を終える。
【００１３】
上記ステップＳ１２で起動された初期化ソフトに従って、ＣＰＵ１０は、同図の（Ｂ）に示すような処理を実行する。この初期化ソフトは、ゲート回路３４を開くためのソフトウェアプログラムである。
【００１４】
まず、ゲート回路３４をオープンさせるための所定のキーデータを所定の順番で順次発生して、ゲート制御部３６に供給する（ステップＳ２１）。ゲート制御部３６は、このキーデータの正当性をチェックする（ステップＳ２２）。例えば、ゲート制御部３６は、上記所定のキーデータが上記所定の順番で供給されたかどうかチェックするために、それらを記憶しており、一致判定によりキーデータの正当性をチェックする。あるいは、所定のキーデータが所定の順番で供給された時に開くようなゲート回路をハードウェア的に構成するようにしても良い。
【００１５】
上記チェックの結果、全てのキーデータが一致しないときには（ステップＳ２３）、ゲート回路３４にクローズ指示を出す（ステップＳ２４）。また、上記ステップＳ２３に於いて、全キーデータが一致したと判断された時には、ゲート回路３４にオープン指示を出し（ステップＳ２５）、ヒューズ３８を焼き切る（ステップＳ２６）。
【００１６】
その後、初期化ソフト用ＲＡＭ１６に記憶されている初期化ソフト内のキーデータ部（あるいは初期化ソフト）を全て消去した後（ステップＳ２７）、ＯＳＲＯＭ２０に記憶されているＯＳを起動する（ステップＳ２８）。
【００１７】
従って、正規の初期化ソフトがインストールされない限り、ゲート回路３４は開かず、以降の処理は行われないこととなる。
ゲート回路３４がオープンされた場合には、ＣＰＵ１０は、上記ステップＳ２８で起動されたＯＳに従って、同図の（Ｃ）に示すような処理を実行する。
【００１８】
まず、アプリＲＯＭ２２に記憶されたアプリケーションプログラムの正当性をチェックする（ステップＳ３１）。これは、例えば、工場出荷時や設置後の最初の起動後の所定の時点で、アプリケーションプログラムのチェックサムやアプリＲＯＭ２２の空き容量を求めてワークＲＡＭ２４等に記憶しておき、このステップＳ３１の時点で再度それらを求めて比較することにより行うことができる。
【００１９】
そして、この正当性チェックの結果、正当でないと判断された場合には（ステップＳ３２）、ゲート制御部３６にゲートクローズを指示してゲート回路３４を閉じる（ステップＳ３３）。
【００２０】
また、上記ステップＳ３２に於いて、正当であると判断された場合には、アプリＲＯＭ２２に記憶されたアプリケーションプログラムを起動して、当該アプリケーションプログラムに従った処理を実行する（ステップＳ３４）。そして、このアプリケーションプログラムに従った処理の実行中に、例えば割り込みなどにより、所定のタイミングで異常のチェックを行い、異常が有った場合には（ステップＳ３５）、上記ステップＳ３３に進んで、ゲート制御部３６にゲートクローズを指示してゲート回路３４を閉じる。なおここで、異常とは、電池の消耗や、ＲＯＭが外されたといった何等かの異常を指すものであり、ＣＰＵ１０自体で検出しても良いし、ＣＰＵ以外の機器（センサ）が検出しても良い。
【００２１】
以上のように、ＣＰＵ１０とプログラムメモリ（ＯＳＲＯＭ２０，アプリＲＯＭ２２）とを結ぶゲート回路３４を初期化ソフトに従った所定の初期化処理のみによってオープンさせ、電池の消耗や、ＲＯＭが外されたといった何等かの異常（プログラム処理装置のＣＰＵ自体で検出しても、ＣＰＵ以外の機器が検出しても良い）があった場合には、このゲート回路３４を閉じるようにしているので、正規に初期化しない限り、プログラムメモリに従ったプログラム処理は不可能となる。
【００２２】
そして、再度ゲート回路３４を開くには、初期化ソフトを用意しなければならず、また上記特殊なヒューズ３８を取り替えなければならないため、正規な者でない限りそれらを用意できないので、不正使用者はプログラム処理装置を動作させることができない。
【００２３】
なお、上記実施例では、ＯＳによりゲート制御部３６にゲートクローズを指示してゲート回路３４を閉じさせるようにしているが、異常を検出するセンサ出力を直接ゲート回路３４のリセット信号として与え、異常検出に応じて即ゲート回路３４を閉じるようにしても良い。
【００２４】
【発明の効果】
本発明によれば、所定のメモリへのアクセス中において、例えばプログラムやデータの不正な書き換え等が原因で異常が発生した場合に、このメモリへのアクセスを自動的に禁止し、再度アクセスを許可するための正規の手続きを知らない利用者による継続した不正使用を防止することができる。
【図面の簡単な説明】
【図１】本発明の一実施例のプログラムの起動方法を説明するためのフローチャートで、（Ａ）はシステム立上げ時の処理、（Ｂ）は初期化ソフトウェアプログラムに従った処理、（Ｃ）はＯＳプログラムに従った処理をそれぞれ示す。
【図２】本発明の一実施例のプログラムの起動方法の適用されたプログラム処理装置のブロック構成図である。
【符号の説明】
１０…ＣＰＵ、１２…アドレス／データバス、１４…ＩＰＬソフトＲＯＭ、１６…初期化ソフト用ＲＡＭ、１８…初期化ソフトローダ、２０…ＯＳＲＯＭ、２２…アプリＲＯＭ、２４…ワークＲＡＭ、２６…入力部、２８…入力制御部、３０…表示部、３２…表示制御部、３４…ゲート回路、３６…ゲート制御部、３８…ヒューズ
【図１】
0003598350.tif 000002
【図２】
0003598350.tif 000003