(57)【要約】【課題】  外部接続装置からＩＣカード等のコンピュータシステムへ送信されて格納された不正プログラムの実行を防止可能なコンピュータシステムを提供する。【解決手段】  ＣＰＵ３と、通信回路４と、第１及び第２のコンピュータプログラムを格納する第１メモリ領域５と、第１のコンピュータプログラム格納領域、通信回路で受信したデータ格納領域、ＣＰＵのプログラム実行時に使用するデータ格納領域を含む第２メモリ領域６を備えてなるコンピュータシステムに対して、プログラム実行対象が第１のコンピュータプログラムである場合に、実行対象のプログラムコードの格納場所が第１メモリ領域内または第２メモリ領域内の第１のコンピュータプログラムの格納領域内である場合にはプログラム実行を許可し、前記格納場所が第２メモリ領域内の第１のコンピュータプログラムの格納領域外である場合にはプログラム実行を禁止する制御を行う。【選択図】        図１
2008009650.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピュータプログラム及び第２のコンピュータプログラムを実行可能なＣＰＵと、外部接続機器から送信されるデータを受信可能な通信回路と、前記第１及び第２のコンピュータプログラムを格納する第１メモリ領域と、前記第１のコンピュータプログラムの格納領域、前記通信回路で受信したデータの格納領域、及び、前記ＣＰＵのプログラム実行時に使用するデータの格納領域を含む第２メモリ領域と、を備えてなるコンピュータシステムに対して、
前記ＣＰＵによるプログラム実行の対象が前記第１のコンピュータプログラムであることを認識した場合に、実行対象のプログラムコードの格納場所が前記第１メモリ領域内または前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内である場合には前記プログラム実行を許可し、前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域外である場合には前記プログラム実行を禁止する制御を行うことを特徴とするプログラム実行制御回路。
【請求項２】
前記ＣＰＵによるプログラム実行の対象が前記第２のコンピュータプログラムであることを認識した場合に、実行対象のプログラムコードの格納場所が前記第１メモリ領域内である場合には前記プログラム実行を許可し、前記格納場所が前記第２メモリ領域内である場合には前記プログラム実行を禁止する制御を行うことを特徴とする請求項１に記載のプログラム実行制御回路。
【請求項３】
前記ＣＰＵによるプログラム実行の対象が前記第１のコンピュータプログラムであるか前記第２のコンピュータプログラムであるかを区別するフラグと、
前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域の境界アドレスを記憶する境界アドレスレジスタと、
実行対象のプログラムコードの格納場所を指定する前記第１または第２メモリ領域のアドレスと、前記境界アドレスレジスタに記憶された前記境界アドレスを比較して、前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内であるか否かを判定するアドレス比較器と、を備え、
前記フラグが前記ＣＰＵによるプログラム実行の対象が前記第１のコンピュータプログラムであることを示し、且つ、前記アドレス比較器が、前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内であると判定した場合には、実行対象の前記プログラムコードを前記第１または第２メモリ領域から読み出すための命令フェッチ期間に、前記第２メモリ領域に対する読み出し制御信号を出力し、
前記フラグが前記ＣＰＵによるプログラム実行の対象が前記第２のコンピュータプログラムであることを示すか、或いは、前記アドレス比較器が、前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域外であると判定した場合には、前記命令フェッチ期間に、前記第２メモリ領域に対する読み出し制御信号を出力しないことを特徴とする請求項２に記載のプログラム実行制御回路。
【請求項４】
請求項１〜３の何れか１項に記載のプログラム実行制御回路と、
第１のコンピュータプログラム及び第２のコンピュータプログラムを実行可能なＣＰＵと、
外部接続機器から送信されるデータを受信可能な通信回路と、
前記第１及び第２のコンピュータプログラムを格納可能な第１メモリ領域と、
前記第１のコンピュータプログラムの格納領域、前記通信回路で受信したデータの格納領域、及び、前記ＣＰＵのプログラム実行時に使用するデータの格納領域を含む第２メモリ領域と、
を備えてなることを特徴とするコンピュータシステム。
【請求項５】
前記第１メモリ領域が不揮発性メモリで構成され、前記第２メモリ領域が揮発性メモリで構成されていることを特徴とする請求項４に記載のコンピュータシステム。
【請求項６】
前記プログラム実行制御回路が、請求項３に記載のプログラム実行制御回路であって、
前記第１メモリ領域に、前記第１のコンピュータプログラムとしてシステムプログラムが、前記第２のコンピュータプログラムとしてアプリケーションプログラムが、夫々格納されており、
前記システムプログラムが、
前記ＣＰＵがリセットされた後に起動され、前記プログラム実行制御回路内に設けられた前記境界アドレスレジスタに前記境界アドレスを設定する第１ステップと、
前記プログラム実行制御回路内に設けられた前記フラグを前記ＣＰＵによるプログラム実行の対象が前記第１のコンピュータプログラムである状態に設定する第２ステップと、
前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域に、前記システムプログラムの一部または全部を格納する第３ステップと、を有することを特徴とする請求項４または５に記載のコンピュータシステム。
【請求項７】
前記システムプログラムが、
前記通信回路が前記外部接続機器から送信されたコマンドデータを受信したか否かを判定する第４ステップと、
前記第４ステップで前記コマンドデータの受信が判定された場合に、前記コマンドデータを前記第２メモリ領域内の前記通信回路で受信したデータの格納領域内に格納する第５ステップと、
前記コマンドデータが前記アプリケーションプログラムの起動コマンドであるか否かを判定する第６ステップと、
前記第６ステップで前記コマンドデータが前記アプリケーションプログラムの起動コマンドであると判定された場合に、前記フラグを前記ＣＰＵによるプログラム実行の対象が前記第２のコンピュータプログラムである状態に設定する第７ステップと、
前記アプリケーションプログラムを起動させる第８ステップと、
前記アプリケーションプログラムの実行が終了した後に、前記フラグを前記ＣＰＵによるプログラム実行の対象が前記第１のコンピュータプログラムである状態に設定する第９ステップと、を更に有することを特徴とする請求項６に記載のコンピュータシステム。
【請求項８】
前記アプリケーションプログラムが、
前記システムプログラムの前記第８ステップにおいて起動された後に、前記通信回路が前記外部接続機器から送信されたコマンドデータを受信したか否かを判定する第１ステップと、
前記第１ステップで前記コマンドデータの受信が判定された場合に、前記コマンドデータを前記第２メモリ領域内の前記通信回路で受信したデータの格納領域内に格納する第２ステップと、
前記コマンドデータが前記アプリケーションプログラムの終了コマンドであるか否かを判定する第３ステップと、
前記第３ステップで前記コマンドデータが前記アプリケーションプログラムの終了コマンドであると判定された場合に、前記システムプログラムの前記第９ステップに移行する第４ステップと、を有することを特徴とする請求項７に記載のコンピュータシステム。
【請求項９】
前記システムプログラムが、
前記第６ステップで前記コマンドデータが前記システムプログラムの起動コマンドであると判定された場合に、実行対象の前記システムプログラムの格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内であるか否かを判定する第１０ステップと、
前記第１０ステップで前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内であると判定された場合に、前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内に格納された前記システムプログラムを実行するステップと、
前記第１０ステップで前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内でないと判定された場合に、前記第１メモリ領域内に格納された前記システムプログラムを実行するステップと、を更に有することを特徴とする請求項７または８に記載のコンピュータシステム。
【請求項１０】
請求項４〜９の何れか１項に記載のコンピュータシステムを搭載してなることを特徴とするＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部接続装置との通信インタフェースを有するＩＣカード等のコンピュータシステムに関し、より詳細には、外部接続装置からＩＣカードの揮発性メモリ内に受信したコマンドデータを悪意のあるプログラムコードとして不正に実行することによるＩＣカード内のデータの改竄や不正読み出しの実行を防止するために、揮発性メモリ内のプログラムコードの実行を制御するプログラム実行制御回路に関する。
【背景技術】
【０００２】
ＣＰＵ（中央演算処理装置）、不揮発性メモリ、揮発性メモリ等を備えたＩＣチップを、プラスチック製のカード内に実装したＩＣカードは、現在広く利用されている磁気カードに比べ、より大量のデータを扱え、セキュリティ性に優れていることから普及し始めている。
【０００３】
ＩＣカードは、図６及び図７に示すように、端末ＰＣ２１とＩＣカードリーダ・ライタ２２（Ｒ／Ｗ）から構成される外部接続装置２３から送信されるコマンドＡＰＤＵ（Ａｐｐｌｉｃａｔｉｏｎ  Ｄａｔａ  Ｕｎｉｔ）２４を受信し、ＩＣカード２０内でコマンドの内容を判定し、コマンド内容に応じた処理をＩＣカード２０内で行い、処理結果を外部接続装置２３へレスポンスＡＰＤＵ２５として返信することを基本動作とする。
【０００４】
外部接続装置から送信されるコマンドＡＰＤＵの形式は、図８に示すようにＩＣカードの国際規格であるＩＳＯ／ＩＥＣ７８１６−４に規定されている。図８に示すＣＬＡ，ＩＮＳ，Ｐ１，Ｐ２の４バイトは、コマンドヘッダと呼びＩＣカードに対する処理の種別を表す。ＣＬＡはアプリケーションを定義するデータであり、ＩＮＳは命令コードであり、Ｐ１とＰ２はコマンドＡＰＤＵのパラメータである。また、Ｌｃ，Ｄａｔａ，Ｌｅはコマンド本体であり、コマンドの処理情報を含む。Ｌｃはデータ長を示し、Ｄａｔａはデータフィールドを示し、ＬｅはＩＣカードから返送されるレスポンスＡＰＤＵのデータ長を示す。レスポンスＡＰＤＵのＳＷ１とＳＷ２はＩＣカード上のステータス情報である。
【０００５】
例えば、ＩＣカードに情報を書き込むコマンドは、コマンドヘッダ部にＩＣカード書き込みコマンドを格納し、コマンドＡＰＤＵのコマンド本体に書き込みデータを格納して、外部接続装置からＩＣカードへ送信される。ＩＣカードは受信したコマンドＡＰＤＵのコマンドヘッダを判別し、書き込みコマンドと判定した場合、コマンドＡＰＤＵのコマンド本体の情報をＩＣカードに書き込み、その結果を図８に示す形式のレスポンスＡＰＤＵとして外部接続装置に送信する。
【０００６】
ＩＣカードがコマンドＡＰＤＵとして受信したデータは、一般的にＩＣカードのアプリケーションプログラムが利用する揮発性メモリ（ＲＡＭ）内の受信バッファへ格納される。
【０００７】
ＩＣカードのＣＰＵは、不揮発性メモリに格納されたプログラムコードを実行して処理を行う。また、揮発性メモリに予めデータを格納し、そのデータをプログラムコードとして実行することも可能である。即ち、受信バッファに格納されたコマンドＡＰＤＵをプログラムコードとして実行することも可能である。
【０００８】
外部接続装置からＩＣカードに送信されるコマンドＡＰＤＵには本来ＩＣカードのコマンドデータを正しく含めるべきである。しかし、コマンドＡＰＤＵに、本来のコマンドデータでなく、プログラムコードを含めることも可能である。コマンドＡＰＤＵに組み込まれたプログラムコードが、受信バッファ上に格納され、そのプログラムコードをＩＣカードのＣＰＵが実行することも可能である。
【０００９】
ＩＣカードのＣＰＵは、実行すべきプログラムコードのアドレスを示すプログラムカウンタを内蔵しており、プログラムコードが実行される毎に、例えばプログラムカウンタの値は加算される。
【００１０】
通常状態のＩＣカードの処理では、揮発性メモリ内の受信バッファ上のアドレスをプログラムカウンタに設定して、受信バッファ上のデータをプログラムコードとして実行することは、まずあり得ない。
【００１１】
しかし、外部からの攻撃によって、プログラムカウンタが操作され、プログラムカウンタに受信バッファ上のアドレスが設定された場合、受信バッファ上にあるコマンドデータがプログラムコードとして実行される虞がある。
【００１２】
悪意のある攻撃者が、不正を行うプログラムコードを組み込んでコマンドＡＰＤＵをＩＣカードに送信し、ＩＣカードの揮発性メモリ内の受信バッファ上に不正を行うプログラムコードを格納し、その受信バッファ上のアドレスにプログラムカウンタを設定することに成功した場合、不正なプログラムコードが実行され、ＩＣカードの内部データが読み出されたり、改竄されたりする可能性がある。
【００１３】
プログラムカウンタの操作は、ＩＣカードのＣＰＵに何らかのノイズを与えることでＣＰＵを暴走させ、プログラムカウンタを本来実行するアドレスとは違うアドレスに移行させる手法が考えられる。
【００１４】
斯かる外部接続装置からＩＣカードの揮発性メモリに送信されて格納された不正プログラムの実行を防止する方法として、例えば下記の特許文献１に開示された方法がある。当該特許文献１には、外部ソースから送信されるデータに組み込まれた悪意のあるプログラムコードを実行不可能な状態に変換してメモリに記憶することで、外部からのセキュリティ攻撃を防止し、メモリに記憶したデータを使用する場合は、逆変換を行うことが開示されている。このように対策することで、外部ソースからのデータは、コンピュータシステムが実行できない形態でメモリに記憶され、これにより、そのデータに組み込まれた悪意のあるコードの実行が抑止される。
【００１５】
この従来方法を図９に示すフローチャートに従って説明する。先ず、Ｓ３０１ステップで乱数を生成する。次に、Ｓ３０２ステップで外部ソースからデータを受信する。Ｓ３０３ステップでは、Ｓ３０１ステップで生成した乱数を使用してＳ３０２ステップで受信したデータを変換し、Ｓ３０４ステップで変換されたデータをメモリに記憶する。ここでメモリに記憶されたデータは、コンピュータシステムが実行できない形式となっている。Ｓ３０５ステップでは、メモリが必要としたときにデータを取り出す。Ｓ３０６ステップでは、Ｓ３０５ステップで取り出したデータを逆変換して、元のデータへ戻す。Ｓ３０７ステップで、逆変換したデータを使用する。
【００１６】
【特許文献１】特開２０００−２２２２０２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、特許文献１に開示された上記従来方法は、受信したデータの変換及び逆変換が必要であるため、高度な変換を用いると時間を要し、リアルタイム性が損なわれてしまう。また、逆変換して元に戻したデータがメモリ内に存在すると、その時点で外部からの攻撃によって、そのデータ中に組み込まれた悪意のあるコードが実行される危険性がある。
【００１８】
また、一般的にＩＣカードには、システムプログラム（ＯＳ：オペレーティング・システム）と各種サービスに対応したアプリケーションプログラムが、ＩＣカードの不揮発性メモリ内に搭載されている。一方、揮発性メモリ（ＲＡＭ）は各プログラムの作業用領域として利用される。
【００１９】
システムプログラム実行中において、システムプログラムのプログラムコードは、当該プログラムが格納された不揮発性メモリ上から実行されるだけとは限らない。つまり、不揮発性メモリへデータを書き込んだり、更新したりするプログラムコードや電力消費を抑える目的のプログラムコードは、システムプログラムによって予め不揮発性メモリから揮発性メモリへ転送して、実行される場合がある。
【００２０】
ここで、揮発性メモリ上でのプログラムコードの実行を全て禁止すれば、外部接続装置からＩＣカードの揮発性メモリへ送信されて格納された不正プログラムの実行を防止することは可能であるが、上述のようなシステムプログラムを揮発性メモリ上で実行する必要のある処理が実行不可能となる。
【００２１】
本発明は、上記問題点に鑑みてなされたものであり、その目的は、第１に、外部接続装置からＩＣカード等のコンピュータシステムへ送信されて格納された不正プログラムの実行を防止可能なプログラムコードの実行を制御するプログラム実行制御回路を提供する点にあり、第２に、上記不正プログラムの実行を防止して、ＩＣカード等のコンピュータシステム内に格納されたデータに対する削除、改竄、漏洩等を防止可能なメモリ保護機能を有するコンピュータシステムを提供する点にある。
【課題を解決するための手段】
【００２２】
上記目的を達成するための本発明に係るプログラム実行制御回路は、第１のコンピュータプログラム及び第２のコンピュータプログラムを実行可能なＣＰＵと、外部接続機器から送信されるデータを受信可能な通信回路と、前記第１及び第２のコンピュータプログラムを格納する第１メモリ領域と、前記第１のコンピュータプログラムの格納領域、前記通信回路で受信したデータの格納領域、及び、前記ＣＰＵのプログラム実行時に使用するデータの格納領域を含む第２メモリ領域と、を備えてなるコンピュータシステムに対して、前記ＣＰＵによるプログラム実行の対象が前記第１のコンピュータプログラムであることを認識した場合に、実行対象のプログラムコードの格納場所が前記第１メモリ領域内または前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内である場合には前記プログラム実行を許可し、前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域外である場合には前記プログラム実行を禁止する制御を行うことを第１の特徴とする。
【００２３】
上記第１の特徴のプログラム実行制御回路によれば、第１のコンピュータプログラムの実行中に外部接続機器から受信して第２メモリ領域の所定の格納領域に格納されたデータは、プログラムコードとしての実行が禁止されるため、受信したデータの中に悪意のあるプログラムコードが含まれていたとしても、それが実行されることによって発生するデータの改竄や不正読み出しを防止することができる。また、第１のコンピュータプログラムの実行中は、第１のコンピュータプログラム専用に割り当てられた第２メモリ領域内の格納領域内に格納されたデータをプログラムコードとして実行することが可能であるため、第１のコンピュータプログラムを第２メモリ領域上で実行する必要のある処理が可能となる。
【００２４】
更に、本発明に係るプログラム実行制御回路は、上記第１の特徴に加えて、前記ＣＰＵによるプログラム実行の対象が前記第２のコンピュータプログラムであることを認識した場合に、実行対象のプログラムコードの格納場所が前記第１メモリ領域内である場合には前記プログラム実行を許可し、前記格納場所が前記第２メモリ領域内である場合には前記プログラム実行を禁止する制御を行うことを第２の特徴とする。
【００２５】
上記第２の特徴のプログラム実行制御回路によれば、第２のコンピュータプログラムの実行中に外部接続機器から受信して第２メモリ領域に格納されたデータは、プログラムコードとしての実行が禁止されるため、受信したデータの中に悪意のあるプログラムコードが含まれていたとしても、それが実行されることによって発生するデータの改竄や不正読み出しを防止することができる。更に、第２のコンピュータプログラムが、第２メモリ領域内に格納された第１のコンピュータプログラムを誤って実行することを防止できる。
【００２６】
更に、本発明に係るプログラム実行制御回路は、上記第２の特徴に加えて、前記ＣＰＵによるプログラム実行の対象が前記第１のコンピュータプログラムであるか前記第２のコンピュータプログラムであるかを区別するフラグと、前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域の境界アドレスを記憶する境界アドレスレジスタと、実行対象のプログラムコードの格納場所を指定する前記第１または第２メモリ領域のアドレスと、前記境界アドレスレジスタに記憶された前記境界アドレスを比較して、前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内であるか否かを判定するアドレス比較器とを備え、前記フラグが前記ＣＰＵによるプログラム実行の対象が前記第１のコンピュータプログラムであることを示し、且つ、前記アドレス比較器が、前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内であると判定した場合には、実行対象の前記プログラムコードを前記第１または第２メモリ領域から読み出すための命令フェッチ期間に、前記第２メモリ領域に対する読み出し制御信号を出力し、前記フラグが前記ＣＰＵによるプログラム実行の対象が前記第２のコンピュータプログラムであることを示すか、或いは、前記アドレス比較器が、前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域外であると判定した場合には、前記命令フェッチ期間に、前記第２メモリ領域に対する読み出し制御信号を出力しないことを第３の特徴とする。
【００２７】
上記第３の特徴のプログラム実行制御回路によれば、上記第１または第２の特徴を有するプログラム実行制御回路を具体的に実現できる。
【００２８】
上記目的を達成するための本発明に係るコンピュータシステムは、上記第１乃至第３の何れか１つの特徴のプログラム実行制御回路と、第１のコンピュータプログラム及び第２のコンピュータプログラムを実行可能なＣＰＵと、外部接続機器から送信されるデータを受信可能な通信回路と、前記第１及び第２のコンピュータプログラムを格納可能な第１メモリ領域と、前記第１のコンピュータプログラムの格納領域、前記通信回路で受信したデータの格納領域、及び、前記ＣＰＵのプログラム実行時に使用するデータの格納領域を含む第２メモリ領域と、を備えてなることを第１の特徴とする。
【００２９】
更に、本発明に係るコンピュータシステムは、上記第１の特徴に加えて、前記第１メモリ領域が不揮発性メモリで構成され、前記第２メモリ領域が揮発性メモリで構成されていることを第２の特徴とする。
【００３０】
更に、本発明に係るコンピュータシステムは、上記第１または第２の特徴に加えて、前記プログラム実行制御回路が、上記第３の特徴のプログラム実行制御回路であって、前記第１メモリ領域に、前記第１のコンピュータプログラムとしてシステムプログラムが、前記第２のコンピュータプログラムとしてアプリケーションプログラムが、夫々格納されており、前記システムプログラムが、前記ＣＰＵがリセットされた後に起動され、前記プログラム実行制御回路内に設けられた前記境界アドレスレジスタに前記境界アドレスを設定する第１ステップと、前記プログラム実行制御回路内に設けられた前記フラグを前記ＣＰＵによるプログラム実行の対象が前記第１のコンピュータプログラムである状態に設定する第２ステップと、前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域に、前記システムプログラムの一部または全部を格納する第３ステップと、を有することを第３の特徴とする。
【００３１】
更に、本発明に係るコンピュータシステムは、上記第３の特徴に加えて、前記システムプログラムが、前記通信回路が前記外部接続機器から送信されたコマンドデータを受信したか否かを判定する第４ステップと、前記第４ステップで前記コマンドデータの受信が判定された場合に、前記コマンドデータを前記第２メモリ領域内の前記通信回路で受信したデータの格納領域内に格納する第５ステップと、前記コマンドデータが前記アプリケーションプログラムの起動コマンドであるか否かを判定する第６ステップと、前記第６ステップで前記コマンドデータが前記アプリケーションプログラムの起動コマンドであると判定された場合に、前記フラグを前記ＣＰＵによるプログラム実行の対象が前記第２のコンピュータプログラムである状態に設定する第７ステップと、前記アプリケーションプログラムを起動させる第８ステップと、前記アプリケーションプログラムの実行が終了した後に、前記フラグを前記ＣＰＵによるプログラム実行の対象が前記第１のコンピュータプログラムである状態に設定する第９ステップと、を更に有することを第４の特徴とする。
【００３２】
更に、本発明に係るコンピュータシステムは、上記第４の特徴に加えて、前記アプリケーションプログラムが、前記システムプログラムの前記第８ステップにおいて起動された後に、前記通信回路が前記外部接続機器から送信されたコマンドデータを受信したか否かを判定する第１ステップと、前記第１ステップで前記コマンドデータの受信が判定された場合に、前記コマンドデータを前記第２メモリ領域内の前記通信回路で受信したデータの格納領域内に格納する第２ステップと、前記コマンドデータが前記アプリケーションプログラムの終了コマンドであるか否かを判定する第３ステップと、前記第３ステップで前記コマンドデータが前記アプリケーションプログラムの終了コマンドであると判定された場合に、前記システムプログラムの前記第９ステップに移行する第４ステップと、を有することを第５の特徴とする。
【００３３】
更に、本発明に係るコンピュータシステムは、上記第４または第５の特徴に加えて、前記システムプログラムが、前記第６ステップで前記コマンドデータが前記システムプログラムの起動コマンドであると判定された場合に、実行対象の前記システムプログラムの格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内であるか否かを判定する第１０ステップと、前記第１０ステップで前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内であると判定された場合に、前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内に格納された前記システムプログラムを実行するステップと、前記第１０ステップで前記格納場所が前記第２メモリ領域内の前記第１のコンピュータプログラムの格納領域内でないと判定された場合に、前記第１メモリ領域内に格納された前記システムプログラムを実行するステップと、を更に有することを第６の特徴とする。
【００３４】
上記各特徴のコンピュータシステムによれば、第１または第２のコンピュータプログラムの実行中に外部接続機器から受信して第２メモリ領域の所定の格納領域に格納されたデータは、プログラムコードとしての実行が禁止されるため、受信したデータの中に悪意のあるプログラムコードが含まれていたとしても、それが実行されることによって発生するデータの改竄や不正読み出しを防止することができる。
【００３５】
更に、本発明に係るＩＣカードは、上記何れかの特徴のコンピュータシステムを搭載してなることを特徴とする。
【００３６】
上記特徴のＩＣカードによれば、外部接続装置からＩＣカードへ送信されて格納された不正プログラムの実行を防止して、ＩＣカード内に格納されたデータに対する削除、改竄、漏洩等を防止可能となる。
【発明を実施するための最良の形態】
【００３７】
以下、本発明に係るプログラム実行制御回路及びコンピュータシステム（以下、適宜「本発明回路」及び「本発明システム」と略称する）の実施形態を図面に基づいて説明する。
【００３８】
本実施形態では、本発明回路は、ＣＰＵ（中央演算処理装置）、外部接続機器から送信されるデータを受信可能な通信回路、不揮発性メモリ、及び、揮発性メモリを備えてなるコンピュータシステムに適用され、また、本発明システムは、当該コンピュータシステムの各構成要素と本発明回路を備えた１または複数のＩＣチップを、プラスチック製のカード内に実装したＩＣカードとして提供される場合を想定する。
【００３９】
本実施形態におけるＩＣカードの基本システムは、従来と同様に、図６に示すような構成となる。端末ＰＣ２１とＩＣカードリーダ・ライタ２２は、外部接続装置２３としてＩＣカード２０と接触型インタフェース、または、非接触型のインタフェースを用いて通信が行われる。図６における外部接続装置２３とＩＣカード２０のコマンドの交換は、従来と同様に、図７に示されるように、コマンドＡＰＤＵ２４が外部接続装置２３からＩＣカード２０へ送信され、コマンドＡＰＤＵ２４に対する処理結果をＩＣカード２０からレスポンスＡＰＤＵ２５として外部接続装置２３へ送信することによって成立する。
【００４０】
本発明システム（図６に示すＩＣカード２０）の更に詳細な構成を図１に示す。本発明システム１は、ＣＰＵ３、通信回路４、不揮発性メモリ５、揮発性メモリ６、及び、本発明回路２を備えて構成されている。
【００４１】
ＣＰＵ３は、不揮発性メモリ５と揮発性メモリ６に格納されたプログラムコードを読み出してＩＣカードにおける処理を行う。
【００４２】
通信回路４は、外部接続装置２３との間でデータの送受信、具体的には、コマンドＡＰＤＵの受信とレスポンスＡＰＤＵの送信を行うための通信インタフェース回路で、接触型インタフェース、または、非接触型のインタフェースを提供する。
【００４３】
不揮発性メモリ５はフラッシュメモリ等の半導体不揮発性メモリで構成され、揮発性メモリ６はＳＲＡＭやＤＲＡＭ等の半導体ランダムアクセスメモリで構成され、不揮発性メモリ５のアドレス領域によって第１メモリ領域が画定され、揮発性メモリ６のアドレス領域によって第１メモリ領域とは異なる第２メモリ領域が画定され、何れのメモリ領域もＣＰＵ３からアクセス可能である。
【００４４】
不揮発性メモリ５によって提供される第１メモリ領域には、ＩＣカードのシステムプログラムのプログラムコード（第１コンピュータプログラムに相当）、及び、ＩＣカードもアプリケーションプログラムのプログラムコード（第２コンピュータプログラムに相当）が格納される。
【００４５】
揮発性メモリ６によって提供される第２メモリ領域は、図３に示すように、システムプログラムのプログラムコード専用の格納領域Ｒ１と、通信回路４が受信したデータ（コマンドＡＰＤＵ）の格納領域である受信バッファ７（Ｒ２）と、ＣＰＵ３がシステムプログラムまたはアプリケーションプログラムの実行時にデータのリード・ライトに使用するデータ格納領域（一時作業領域）Ｒ３に区分されている。第２メモリ領域内のシステムプログラムのプログラムコード専用の格納領域Ｒ１には、システムプログラムの内の第２メモリ領域上で実行する必要のあるプログラムコードが格納される。当該プログラムコードの処理対象としては、不揮発性メモリ５内のデータの書き換え等の処理等が含まれる。
【００４６】
本発明回路２は、揮発性メモリ６によって提供される第２メモリ領域内に格納されたプログラムコードをＣＰＵ３が実行可能か否かを制御する。以下、本発明回路２の回路構成及び回路動作を、図２を参照して説明する。
【００４７】
図２は、本発明回路２の一回路構成例を示す回路構成図である。図２に示すように、本発明回路２は、フラグ１０、境界アドレスレジスタ１１、アドレス比較器１２、論理積（ＡＮＤ）回路１３、論理和（ＯＲ）回路１４によって構成される。本発明回路２は、図１に示すＣＰＵ３による第２メモリ領域上に格納されたプログラムコードの実行を許可或いは禁止するために、揮発性メモリ６からのプログラムコードの読み出しの可否を制御する。
【００４８】
フラグ１０は、ＣＰＵ３によるプログラム実行の対象がシステムプログラムであるかアプリケーションプログラムであるかを区別する１ビットの識別子Ｆを記憶する。フラグ１０に記憶された識別子Ｆが“論理値１”（以下、単に“１”と表記する）の場合はシステムプログラムが実行中または実行開始直前であることを示し、識別子Ｆが“論理値０” （以下、単に“０”と表記する）の場合はアプリケーションプログラムが実行中または実行開始直前であることを示す。尚、フラグ１０への識別子Ｆの設定は、後述するようにＣＰＵ３によるシステムプログラムによって実行される。
【００４９】
境界アドレスレジスタ１１は、第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１の境界アドレスを記憶する。具体的には、第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１（アドレス領域）が、その他の受信バッファＲ２や一時作業領域Ｒ３のアドレス領域より下位側に位置するように第２メモリ領域内が区画されている場合では、境界アドレスは、格納領域Ｒ１の最上位アドレスまたは格納領域Ｒ２、Ｒ３の最下位アドレスとなる。
【００５０】
アドレス比較器１２は、アドレス信号と境界アドレスレジスタ１１に記憶された境界アドレスが入力され、夫々のアドレス値を比較して、実行対象のプログラムコードの格納場所を指定するアドレス信号のアドレス値が、第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１内であるか否かを判定する。アドレス信号のアドレス値が第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１内である場合には、“１”を出力し、格納領域Ｒ１外（つまり、格納領域Ｒ２、Ｒ３内）である場合には、“０”を出力する。具体的には、第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１が、その他の受信バッファＲ２や一時作業領域Ｒ３のアドレス領域より下位側に位置するように第２メモリ領域内が区画され、境界アドレスが格納領域Ｒ１の最上位アドレスで規定されている場合を想定すると、アドレス信号のアドレス値が境界アドレスのアドレス値と同じか下位にある場合には“１”を出力し、アドレス信号のアドレス値が境界アドレスのアドレス値より上位にある場合には“０”を出力する。
【００５１】
ＡＮＤ回路１３は３入力ＡＮＤ回路で、フラグ１０の出力（識別子Ｆ）とアドレス比較器１２と命令フェッチ信号Ｓｉｆが夫々入力され、出力がＯＲ回路１４に入力される。命令フェッチ信号Ｓｉｆは、ＣＰＵ３が第１または第２メモリ領域内に格納されたプログラムコードを読み出すための命令フェッチ期間に出力される読み出し制御信号である。命令フェッチ信号Ｓｉｆは“１”で活性化状態となる。
【００５２】
ＯＲ回路１４は２入力ＯＲ回路で、ＡＮＤ回路１３の出力と第２読み出し制御信号Ｓ２ｒｄが夫々入力され、出力が揮発性メモリ６の読み出し制御信号ＲＤとして、揮発性メモリ６に入力される。第２読み出し制御信号Ｓ２ｒｄは、ＣＰＵ３がプログラムコードをフェッチして、フェッチした命令の実行時に第２メモリ領域内のデータを読み出すために出力される読み出し制御信号である。第２読み出し制御信号Ｓ２ｒｄは“１”で活性化状態となる。
【００５３】
従って、ＡＮＤ回路１３の全ての入力が“１”であるか、或いは、第２読み出し制御信号Ｓ２ｒｄが“１”の場合に、読み出し制御信号ＲＤが“１”となって活性化される。ここで、ＣＰＵ３による揮発性メモリ６からのプログラムコードの読み出しの可否を制御する場合に着目すれば、第２読み出し制御信号Ｓ２ｒｄの信号レベルは“０”であるので、読み出し制御信号ＲＤの状態は、実質的には、ＡＮＤ回路１３の各入力の信号レベルによって決定されることになる。つまり、フラグ１０の識別子Ｆが“１”でＣＰＵ３によるプログラム実行の対象がシステムプログラムであり、且つ、アドレス比較器１２の出力が“１”で実行対象のシステムプログラムのプログラムコードが第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１内である場合に、命令フェッチ信号Ｓｉｆに同期して読み出し制御信号ＲＤが出力され、第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１内に格納されたプログラムコードの読み出しが許可される。
【００５４】
また、フラグ１０の識別子Ｆが“０”でＣＰＵ３によるプログラム実行の対象がアプリケーションプログラムである場合は、読み出し制御信号ＲＤは実行対象のプログラムコードの格納場所に関係無く活性化されず、プログラムコードの読み出しが禁止される。更に、フラグ１０の識別子Ｆが“１”でＣＰＵ３によるプログラム実行の対象がシステムプログラムであっても、アドレス比較器１２の出力が“０”で実行対象のプログラムコードが第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１内にない場合も、同様にプログラムコードの読み出しが禁止される。
【００５５】
図３は、以上の本発明回路の回路動作による制御状態を要約して示すメモリマップであり、フラグ１０の識別子Ｆと実行対象のプログラムコードの格納場所を示すアドレスによるプログラムコードの実行許可または実行禁止状態を示す。尚、図３において、システムプログラム実行中、即ち識別子Ｆが“１”の場合のメモリマップを左側（図３（Ａ））に配置し、アプリケーションプログラム実行中、即ち識別子Ｆが“０”の場合のメモリマップを右側（図３（Ｂ））に配置している。
【００５６】
図３に示すように、フラグ１０の識別子Ｆが“１”の場合は、システムプログラム専用の格納領域Ｒ１は、プログラムコードの実行が許可され、受信バッファＲ２と一時作業領域Ｒ３は、プログラムコードの実行が禁止される。また、フラグ１０の識別子Ｆが“０”の場合は、第２メモリ領域の全域（Ｒ１，Ｒ２，Ｒ３）について、プログラムコードの実行が禁止される。
【００５７】
次に、本発明回路２に対する制御を含む本発明システムの実行動作について、図４に示すフローチャートを参照して説明する。
【００５８】
先ず、ステップＳ１００において、ＣＰＵ３がリセットされると、ＣＰＵ３内のプログラムカウンタはリセット直後の初期アドレス、即ち不揮発性メモリ６（第１メモリ領域）のシステムプログラムの先頭アドレスにセットされる。
【００５９】
次に、ステップＳ１０１において、第１メモリ領域内に格納されたシステムプログラムが実行を開始する。
【００６０】
引き続きステップＳ１０２において、ＣＰＵ３によるシステムプログラムの実行によって、本発明回路２の境界アドレスレジスタ１１に境界アドレスがセットされる。
【００６１】
引き続きステップＳ１０３において、システムプログラムの実行によって、本発明回路２のフラグ１０に“１”がセットされ、システムプログラムの実行状態が識別可能となる。
【００６２】
引き続きステップＳ１０４において、システムプログラムの実行によって、必要なプログラムコードが、第１メモリ領域から第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１へ転送及び格納される。
【００６３】
以上のステップＳ１０１からＳ１０４までのシステムプログラムの実行によって、本発明回路２は、図３（Ａ）のメモリマップに示すように、第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１上でのプログラムコードの実行を許可可能な制御状態となる。
【００６４】
引き続きステップＳ１０５において、システムプログラムの実行によって、外部接続装置２３から通信回路４へコマンドＡＰＤＵが送信されたか否かを判定する。
【００６５】
ステップＳ１０５において、コマンドＡＰＤＵの送信が有る場合（ＹＥＳ分岐）、システムプログラムの実行によって、ステップＳ１０６に移行して、コマンドＡＰＤＵを第２メモリ領域内の受信バッファ（Ｒ２）７に格納する。これ以後、仮に受信バッファ７に格納されたコマンドＡＰＤＵが悪意を持ったプログラムコードであったとしても、図３（Ａ）のメモリマップに示すように、受信バッファ（Ｒ２）７は、プログラムコードの実行が禁止されているため、プログラムコードの不正実行は防止される。尚、ステップＳ１０５において、コマンドＡＰＤＵの送信が無い場合（ＮＯ分岐）は、ステップＳ１０５の判定動作が繰り返される。
【００６６】
引き続きステップＳ１０７において、システムプログラムの実行によって、ステップＳ１０６で受信バッファ（Ｒ２）７に格納したコマンドＡＰＤＵの内容を判定する。ステップＳ１０７において、コマンドＡＰＤＵがアプリケーションプログラムの起動コマンドであれば（ＹＥＳ分岐）、ステップＳ１０８へ移行し、そうでない場合（システムプログラムの起動コマンドである場合）は（ＮＯ分岐）、ステップＳ１１１へ移行する。
【００６７】
ステップＳ１０８において、システムプログラムの実行によって、本発明回路２のフラグ１０に“０”がセットされ、アプリケーションプログラムの実行状態が識別可能となる。ステップＳ１０８の実行処理によって、本発明回路２は、図３（Ｂ）のメモリマップに示すように、第２メモリ領域上でのプログラムコードの実行を禁止する制御状態となる。
【００６８】
引き続きステップＳ１０９において、ＣＰＵ３によるアプリケーションプログラムの処理が実行される。
【００６９】
ここで、ステップＳ１０９におけるアプリケーションプログラムの実行処理について、図５に示すフローチャートを参照して説明する。
【００７０】
先ず、ステップＳ１０９において、システムプログラムの実行によって、図５に示すアプリケーションプログラムの実行処理がサブルーチンコールされる。これにより、ステップＳ２００において、ＣＰＵ３のプログラムカウンタは、第１メモリ領域内のアプリケーションプログラムの先頭アドレスにセットされ、ステップＳ２０１において、第１メモリ領域内に格納されたアプリケーションプログラムが起動する。
【００７１】
引き続きステップＳ２０２において、アプリケーションプログラムの実行によって、外部接続装置２３から通信回路４へコマンドＡＰＤＵが送信されたか否かを判定する。
【００７２】
ステップＳ２０２において、コマンドＡＰＤＵの送信が有る場合（ＹＥＳ分岐）、アプリケーションの実行によって、ステップＳ２０３に移行して、コマンドＡＰＤＵを第２メモリ領域内の受信バッファ（Ｒ２）７に格納する。これ以後、仮に受信バッファ７に格納されたコマンドＡＰＤＵが悪意を持ったプログラムコードであったとしても、図３（Ｂ）のメモリマップに示すように、受信バッファ（Ｒ２）７は、プログラムコードの実行が禁止されているため、プログラムコードの不正実行は防止される。更に、第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１及び一時作業領域Ｒ３についても、プログラムコードの実行が禁止されるため、アプリケーションプログラムから、第２メモリ領域内にあるプログラムコードを誤って実行することを防止できる。尚、ステップＳ２０２において、コマンドＡＰＤＵの送信が無い場合（ＮＯ分岐）は、ステップＳ２０２の判定動作が繰り返される。
【００７３】
引き続きステップＳ２０４において、アプリケーションプログラムの実行によって、ステップＳ２０３で受信バッファ（Ｒ２）７に格納したコマンドＡＰＤＵの内容を判定する。ステップＳ２０４において、コマンドＡＰＤＵがアプリケーションプログラムの終了コマンドであれば（ＹＥＳ分岐）、ステップＳ２０６へ移行し、そうでない場合は（ＮＯ分岐）、ステップＳ２０５へ移行して、アプリケーションプログラムの処理を継続する。
【００７４】
ステップＳ２０６へ移行すると、サブルーチンから元の図４に示すメインルーチンのステップＳ１１０に戻る。
【００７５】
ステップＳ１１０において、システムプログラムの実行によって、本発明回路２のフラグ１０に“１”がセットされ、システムプログラムの実行状態が識別可能となる。ステップＳ１１０の実行処理によって、本発明回路２は、図３（Ａ）のメモリマップに示すように、第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１上でのプログラムコードの実行を許可可能な制御状態に復帰する。
【００７６】
ステップＳ１０７の判定において、コマンドＡＰＤＵがシステムプログラムの起動コマンドであってアプリケーションプログラムの起動コマンドでなかったため、ステップＳ１１１に移行した場合は、システムプログラムの実行によって、ステップＳ１０６で受信バッファ（Ｒ２）７に格納したコマンドＡＰＤＵの内容を判定し、コマンドＡＰＤＵが第２メモリ領域内に格納されたシステムプログラムの起動コマンドであれば（ＹＥＳ分岐）、ステップＳ１１２へ移行し、そうでない場合、ステップＳ１１３へ移行する。
【００７７】
ステップＳ１１２において、第２メモリ領域内のシステムプログラム専用の格納領域Ｒ１で、第２メモリ領域で実行する必要のあるシステムプログラムのコマンド処理を実行する。また、ステップＳ１１３において、第１メモリ領域上でシステムプログラムのコマンド処理を実行する。
【００７８】
以上、本発明回路２及び本発明システム１により、外部接続装置２３から本発明システム１の揮発性メモリへ送信されて格納された不正プログラムの実行を確実に防止でき、更に、ＩＣカードのシステムプログラムの実行中には、システムプログラムに割り当てられた揮発性メモリ領域のプログラムコード実行を可能とし、ＩＣカードのアプリケーションプログラムの実行中には、揮発性メモリの全領域のプログラムコードの実行を禁止できるようになり、ＩＣカード内に格納されたデータに対する削除、改竄、漏洩等を防止可能なメモリ保護機能が提供される。
【００７９】
〈別実施形態〉
次に、本発明の別実施形態につき説明する。
【００８０】
〈１〉上記実施形態では、本発明システム１は、ＣＰＵ３、通信回路４、不揮発性メモリ５、揮発性メモリ６、及び、本発明回路２を備えた１または複数のＩＣチップを、プラスチック製のカード内に実装したＩＣカードとして提供される場合を想定したが、必ずしもＩＣカードの形態で提供される場合に限定されるものではない。
【００８１】
〈２〉また、本発明システム１が複数のＩＣチップで構成される場合において、ＣＰＵ３と揮発性メモリ６が個別のＩＣチップで構成される場合に、本発明回路２が、ＣＰＵ３と揮発性メモリ６とは別のＩＣチップで構成されても構わないし、また、ＣＰＵ３と揮発性メモリ６の何れか一方のＩＣチップ内に形成されても構わない。
【００８２】
〈３〉上記実施形態では、図２に本発明回路２の一回路構成例を例示したが、本発明回路２は、図２に示す回路構成に限定されるものではない。また、上記実施形態では、本発明回路２の入力信号及び出力信号の活性化状態が“論理値１”で規定される場合を想定したが、当該信号の一部または全部の活性化状態を“論理値０”で規定するようにしても構わない。また、フラグ１０の識別子Ｆ、及び、アドレス比較器１２の出力の各論理値の規定も上記実施形態に限定されものではない。従って、本発明回路２の回路構成は、各信号の論理値の規定に応じて適宜変更されることになる。
【産業上の利用可能性】
【００８３】
本発明に係るプログラム実行制御回路及びコンピュータシステムは、外部接続装置との通信インタフェースを有するＩＣカード等のコンピュータシステムに利用可能である。
【図面の簡単な説明】
【００８４】
【図１】本発明に係るコンピュータシステムの一実施形態におけるシステム構成例を示すブロック図
【図２】本発明に係るプログラム実行制御回路の一実施形態における回路構成例を示す回路構成図
【図３】本発明に係るプログラム実行制御回路の一実施形態における回路動作による制御状態を要約して示すメモリマップ
【図４】本発明に係るコンピュータシステムの一実施形態におけるシステムプログラムの処理手順を説明するフローチャート
【図５】図４に示すシステムプログラムの処理手順中におけるアプリケーションプログラムの実行処理を説明するフローチャート
【図６】ＩＣカードの基本システム構成を説明する図
【図７】ＩＣカードの基本的なコマンドの流れを説明する図
【図８】ＩＣカードのコマンドＡＰＤＵとレスポンスＡＰＤＵのデータ構造を説明する図
【図９】外部から受信した不正プログラムの実行を防止する従来方法を示すフローチャート
【符号の説明】
【００８５】
１：    本発明に係るコンピュータシステム
２：    本発明に係るプログラム実行制御回路
３：    ＣＰＵ
４：    通信回路
５：    不揮発性メモリ
６：    揮発性メモリ
７：    受信バッファ
１０：  フラグ
１１：  境界アドレスレジスタ
１２：  アドレス比較器
１３：  論理積（ＡＮＤ）回路
１４：  論理和（ＯＲ）回路
２０：  ＩＣカード
２１：  端末ＰＣ
２２：  ＩＣカードリーダ・ライタ
２３：  外部接続装置
２４：  コマンドＡＰＤＵ
２５：  レスポンスＡＰＤＵ
Ｆ：    フラグに記憶された識別子
ＲＤ：  読み出し制御信号
Ｒ１：  第２メモリ領域内のシステムプログラムのプログラムコード専用の格納領域
Ｒ２：  第２メモリ領域内の通信回路が受信したデータの格納領域（受信バッファ）
Ｒ３：  第２メモリ領域内のＣＰＵのプログラム実行時に使用するデータの格納領域
Ｓｉｆ：  命令フェッチ信号
Ｓ２ｒｄ：  第２読み出し制御信号
【図１】
2008009650.tif 000003
【図２】
2008009650.tif 000004
【図３】
2008009650.tif 000005
【図４】
2008009650.tif 000006
【図５】
2008009650.tif 000007
【図６】
2008009650.tif 000008
【図７】
2008009650.tif 000009
【図８】
2008009650.tif 000010
【図９】
2008009650.tif 000011