(57)【特許請求の範囲】
【請求項１】
命令コード用記録手段に記録された所定の命令コードに基づいてデータを処理するデータ処理手段による記録手段へのアクセスを制御するアクセス制御装置であって、
前記記録手段へのアクセスを許可する読み出し命令および書き込み命令のコード列と当該コード列の前記命令コード用記録手段における記録位置情報とを取得する許可コード取得手段と、
前記データ処理手段が実行する命令コードのコード列と、当該コード列の前記命令コード用記録手段における記録位置情報とを、前記命令コード用記録手段からの前記命令コードの読み出し時に取得する実行コード取得手段と、
前記実行コード取得手段によって取得された前記コード列が前記許可コード取得手段によって取得された前記コード列と一致し、かつ前記実行コード取得手段によって取得された前記命令コードの記録位置情報が前記許可コード取得手段によって取得された記録位置情報と一致する場合、前記データ処理手段による前記記録手段へのアクセスを許可する制御手段と、を備えることを特徴とするアクセス制御装置。
【請求項２】
前記命令コードの前記コード列は、当該命令コードによってアクセスされる前記記録手段内の領域のアドレス情報を含み、
前記制御手段は、前記データ処理手段による命令の実行時にアクセスされる前記記録手段の領域の前記アドレス情報が、前記許可コード取得手段によって取得された前記コード列に含まれる前記アドレス情報と一致する場合、前記データ処理手段による前記記録手段へのアクセスを許可することを特徴とする請求項１に記載のアクセス制御装置。
【請求項３】
前記データ処理手段によって前記記録手段へのアクセスを伴う前記命令コードが実行された場合、前記命令コード用記録手段に記録された命令コードの少なくとも一部を用いて所定の演算をおこなう演算手段と、
前記演算手段によって算出された算出値の期待値を生成する期待値取得手段と、を備え、
前記期待値生成手段は、前記記録手段へのアクセスを伴う前記命令コードが実行される都度前記期待値を生成し、
前記制御手段は、前記算出値が前記期待値と所定の関係にある場合、前記記録手段へのアクセスを許可することを特徴とする請求項１または２に記載のアクセス制御装置。
【請求項４】
前記命令コード用記録手段に記録された所定の固定値を用いて所定の演算をおこなう演算手段を備え、
前記取得手段は、前記演算手段によって算出された算出値を取得し、
前記制御手段は、前記算出値が所定の値である場合、前記記録手段へのアクセスを許可
することを特徴とする請求項１または２に記載のアクセス制御装置。
【請求項５】
前記制御手段は、前記記録手段のうち特定のアドレス空間へのアクセスを制御することを特徴とする請求項１〜４のいずれか一つに記載のアクセス制御装置。
【請求項６】
前記制御手段による前記記録手段へのアクセスの制御状況を報知する報知手段を備えることを特徴とする請求項１〜５のいずれか一つに記載のアクセス制御装置。
【請求項７】
命令コード用記録手段に記録された所定の命令コードに基づいてデータを処理するデータ処理手段による記録手段へのアクセスを制御するアクセス制御方法であって、
前記記録手段へのアクセスを許可する読み出し命令および書き込み命令のコード列と当該コード列の前記命令コード用記録手段における記録位置情報とを取得する許可コード取得工程と、
前記データ処理手段が実行する命令コードのコード列と、当該コード列の前記命令コード用記録手段における記録位置情報とを、前記命令コード用記録手段からの前記命令コードの読み出し時に取得する実行コード取得工程と、
前記実行コード取得工程で取得された前記コード列が前記許可コード取得工程で取得された前記コード列と一致し、かつ前記実行コード取得工程で取得された前記命令コードの記録位置情報が前記許可コード取得工程で取得された記録位置情報と一致する場合、前記データ処理手段による前記記録手段へのアクセスを許可する制御工程と、を含むことを特徴とするアクセス制御方法。
【請求項８】
請求項７に記載のアクセス制御方法をコンピュータに実行させることを特徴とするアクセス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、所定の命令コードに基づいてデータを処理するデータ処理手段による記録手段へのアクセスを制御するアクセス制御装置、アクセス制御方法およびアクセス制御プログラムに関する。
【背景技術】
【０００２】
従来、回路基板、回路モジュール、電子機器装置などのデータ処理デバイスによる不正な処理を防止するための技術が提案されている。データ処理デバイスが不正な動作をおこなう原因としては、たとえば、人為的な行為に起因するもの、および、電気的・物理的なエラーに起因するものなどがある。人為的な行為としては、たとえば、制御プログラムの改ざんや認証データの改ざんなどが挙げられる。また、人為的な行為としては、たとえば、データ処理デバイス内のチップ（ＬＳＩなどの半導体装置）を不正なチップに交換したり、データ処理デバイス内に不正なチップを追加するなどの行為が挙げられる。これらは、主に不正の意図を有する者が、自己の利益に則した処理をデータ処理デバイスにおこなわせるためにおこなうものである。
【０００３】
また、電気的・物理的なエラーとしては、たとえば、命令コードの読み出し（フェッチ）時に、ビットエラーなどによって、チップがおこなう処理の命令コードのコード列が変化してしまう場合などが挙げられる。この場合、エラーによってデータ処理デバイスの処理が停止したり、データ処理デバイスの処理が暴走し、ユーザの意図しない処理が次々とおこなわれてしまう可能性がある。
【０００４】
このような不正な処理を防止するため、たとえば、中央処理装置（ＣＰＵ）が比較した結果認証コードが一致しなかった時にアプリケーションプログラムの実行アドレスを監視する手段またはアプリケーションプログラムの実行時間を監視する手段を作動させると共にアプリケーションプログラムを実行させ、プログラムが領域を越えた時またはプログラム実行時間が所定時間経過した時に装置の作動を停止させ、認証コードが比較により一致した時にアプリケーションプログラムを実行させるように構成されたマイクロプロセッサーが提案されている（たとえば、下記特許文献１参照。）。
【０００５】
また、たとえば、プログラムカウンタの値をレジスタで保持するとともに、メモリ上の保護領域のアドレスを保持するテーブル、および保護領域へのアクセスが許されている命令のアドレスを保持するテーブルを保持しておき、アクセス検出回路によって、命令の解読結果、アクセス先のアドレスとテーブルのアドレスの比較結果に基づき、保護領域へのアクセス命令かどうかを判定する。そして、保護領域へのアクセス命令が検出された場合、比較回路によってレジスタおよびテーブルのアドレスを比較して、保護領域へのアクセスが許されていないエリアから読み出された命令と判断したときに禁止信号を出力して、不正なメモリアクセスを禁止する技術が提案されている（たとえば、下記特許文献２参照）。
【０００６】
【特許文献１】特開平６−３２７８３１号公報
【特許文献２】特開平１０−２２８４２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した特許文献１にかかる技術によれば、プログラムの改ざん（または意図しない変更、以下同じ）は検知することができるものの、マイクロプロセッサー自体を不正な製品に差し替えられたり、マイクロプロセッサーの外部に不正なチップ等が追加されたことを検知することができないという問題点がある。不正な製品への差し替えや不正なチップの追加は、データ処理デバイスの所有者などであれば比較的容易におこなうことができる。このため、不正なチップへの差し替えや不正なチップの追加を検知できないと、チップへの不正防止の実効が図れないという問題点がある。
【０００８】
また、上述した特許文献１にかかる技術によれば、プログラム自体を改ざんするのではなく、プログラムによって読み書きされるデータを改ざんする不正を検知することができないという問題点がある。
【０００９】
また、特許文献２にかかる技術によれば、命令コードの解読やプログラムカウンタ値の読み込みをおこなうため、不正検出処理の工程が複雑になってしまい、開発や設計の難易度が高くなってしまうという問題点がある。また、特許文献２にかかる技術によれば、ＣＰＵ内にアクセス制御機能を搭載しているため、既存のＣＰＵを用いたデータ処理デバイスには適用することができないという問題点がある。
【００１０】
この発明は、上述した従来技術による問題点を解消するため、データ処理デバイスによる不正な処理を防止することができるアクセス制御装置、アクセス制御方法およびアクセス制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、この発明にかかるアクセス制御装置は、命令コード用記録手段に記録された所定の命令コードに基づいてデータを処理するデータ処理手段による記録手段へのアクセスを制御するアクセス制御装置であって、前記記録手段へのアクセスを許可する読み出し命令および書き込み命令のコード列と当該コード列の前記命令コード用記録手段における記録位置情報とを取得する許可コード取得手段と、前記データ処理手段が実行する命令コードのコード列と、当該コード列の前記命令コード用記録手段における記録位置情報とを、前記命令コード用記録手段からの前記命令コードの読み出し時に取得する実行コード取得手段と、前記実行コード取得手段によって取得された前記コード列が前記許可コード取得手段によって取得された前記コード列と一致し、かつ前記実行コード取得手段によって取得された前記命令コードの記録位置情報が前記許可コード取得手段によって取得された記録位置情報と一致する場合、前記データ処理手段による前記記録手段へのアクセスを許可する制御手段と、を備えることを特徴とする。
【００１２】
この発明によれば、データ処理手段が実行する命令コードに基づいて、データ処理手段による記録手段へのアクセスを制御することができる。これにより、データ処理手段の不正な処理によって、記録手段に記録されたデータを不正に書き換えられたり、データを不正に読み出されたりするのを防止することができる。データ処理は、「データの読み出し」、「データの演算」、「データの書き込み」を繰り返すことによっておこなわれる。この発明は、「データの読み出し」および「データの書き込み」を正当な命令コードの実行時にのみおこなえるよう制御することによって、不正な処理が実行されるのを防止することができる。また、この発明によれば、データ処理手段が実行する命令コードが所定のコード列であった場合のみ記録手段へのアクセスを可能とする。これにより、不正によって書き換えられた命令コードや、データ化けなどによって誤った内容の命令コードが実行されることにより、記録手段に記録されたデータを不正に書き換えられたり、データを不正に読み出されたりするのを防止することができる。また、この発明によれば、データ処理手段が実行する命令コードが、所定の位置に記録されたものである場合のみ記録手段へのアクセスを可能とする。これにより、不正な位置に記録された命令コードが実行されることにより、記録手段に記録されたデータを不正に書き換えられたり、データを不正に読み出されたりするのを防止することができる。
【００１３】
また、この発明にかかるアクセス制御装置は、上記の発明において、前記命令コードの前記コード列は、当該命令コードによってアクセスされる前記記録手段内の領域のアドレス情報を含み、前記制御手段は、前記データ処理手段による命令の実行時にアクセスされる前記記録手段の領域の前記アドレス情報が、前記許可コード取得手段によって取得された前記コード列に含まれる前記アドレス情報と一致する場合、前記データ処理手段による前記記録手段へのアクセスを許可することを特徴とする。
【００１４】
また、この発明にかかるアクセス制御装置は、上記の発明において、前記データ処理手段によって前記記録手段へのアクセスを伴う前記命令コードが実行された場合、前記命令コード用記録手段に記録された命令コードの少なくとも一部を用いて所定の演算をおこなう演算手段と、前記演算手段によって算出された算出値の期待値を生成する期待値取得手段と、を備え、前記期待値生成手段は、前記記録手段へのアクセスを伴う前記命令コードが実行される都度前記期待値を生成し、前記制御手段は、前記算出値が前記期待値と所定の関係にある場合、前記記録手段へのアクセスを許可することを特徴とする。
【００１５】
この発明によれば、命令コード用記録手段に記録された命令コードが不正に書き換えられたことを検知することができる。
【００１６】
また、この発明にかかるアクセス制御装置は、上記の発明において、前記命令コードは、命令コード用記録手段に記録されており、前記命令コード用記録手段に記録された所定の固定値を用いて所定の演算をおこなう演算手段を備え、前記取得手段は、前記演算手段によって算出された算出値を取得し、前記制御手段は、前記算出値が所定の値である場合、前記記録手段へのアクセスを許可することを特徴とする。
【００１７】
この発明によれば、命令コード用記録手段が不正な記録手段に交換されたことを検知することができる。
【００１８】
また、この発明にかかるアクセス制御装置は、上記の発明において、前記制御手段は、前記記録手段のうち特定のアドレス空間へのアクセスを制御することを特徴とする。
【００１９】
この発明によれば、記録手段のうち、機密情報などの重要な情報が記録されたアドレス空間へのアクセスを制御することによって、重要な情報が不正に書き換えられたり、不正に読み出されたりするのを防止することができる。
【００２０】
また、この発明にかかるアクセス制御装置は、上記の発明において、前記制御手段による前記記録手段へのアクセスの制御状況を報知する報知手段を備えることを特徴とする。
【００２１】
この発明によれば、データ処理手段による記録手段へのアクセスが拒否された場合、すなわち、データ処理手段によって不正なアクセスがおこなわれようとした可能性がある場合、その旨をユーザなどに報知し、データ処理手段による不正な処理を防止することができる。
【００２２】
また、この発明にかかるアクセス制御方法は、命令コード用記録手段に記録された所定の命令コードに基づいてデータを処理するデータ処理手段による記録手段へのアクセスを制御するアクセス制御方法であって、前記記録手段へのアクセスを許可する読み出し命令および書き込み命令のコード列と当該コード列の前記命令コード用記録手段における記録位置情報とを取得する許可コード取得工程と、前記データ処理手段が実行する命令コードのコード列と、当該コード列の前記命令コード用記録手段における記録位置情報とを、前記命令コード用記録手段からの前記命令コードの読み出し時に取得する実行コード取得工程と、前記実行コード取得工程で取得された前記コード列が前記許可コード取得工程で取得された前記コード列と一致し、かつ前記実行コード取得工程で取得された前記命令コードの記録位置情報が前記許可コード取得工程で取得された記録位置情報と一致する場合、前記データ処理手段による前記記録手段へのアクセスを許可する制御工程と、を含むことを特徴とする。
【００２３】
この発明によれば、データ処理手段が実行する命令コードに基づいて、データ処理手段による記録手段へのアクセスを制御することができる。これにより、データ処理手段の不正な処理によって、記録手段に記録されたデータを不正に書き換えられたり、データを不正に読み出されたりするのを防止することができる。データ処理は、「データの読み出し」、「データの演算」、「データの書き込み」を繰り返すことによっておこなわれる。この発明は、「データの読み出し」および「データの書き込み」を正当な命令コードの実行時にのみおこなえるよう制御することによって、不正な処理が実行されるのを防止することができる。また、この発明によれば、データ処理手段が実行する命令コードが所定のコード列であった場合のみ記録手段へのアクセスを可能とする。これにより、不正によって書き換えられた命令コードや、データ化けなどによって誤った内容の命令コードが実行されることにより、記録手段に記録されたデータを不正に書き換えられたり、データを不正に読み出されたりするのを防止することができる。また、この発明によれば、データ処理手段が実行する命令コードが、所定の位置に記録されたものである場合のみ記録手段へのアクセスを可能とする。これにより、不正な位置に記録された命令コードが実行されることにより、記録手段に記録されたデータを不正に書き換えられたり、データを不正に読み出されたりするのを防止することができる。
【００２４】
また、この発明にかかるアクセス制御プログラムは、上記に記載のアクセス制御方法をコンピュータに実行させることを特徴とする。
【００２５】
この発明によれば、データ処理手段が実行する命令コードに基づいて、データ処理手段による記録手段へのアクセスを制御することができる。これにより、データ処理手段の不正な処理によって、記録手段に記録されたデータを不正に書き換えられたり、データを不正に読み出されたりするのを防止することができる。データ処理は、「データの読み出し」、「データの演算」、「データの書き込み」を繰り返すことによっておこなわれる。この発明は、「データの読み出し」および「データの書き込み」を正当な命令コードの実行時にのみおこなえるよう制御することによって、不正な処理が実行されるのを防止することができる。また、この発明によれば、データ処理手段が実行する命令コードが所定のコード列であった場合のみ記録手段へのアクセスを可能とする。これにより、不正によって書き換えられた命令コードや、データ化けなどによって誤った内容の命令コードが実行されることにより、記録手段に記録されたデータを不正に書き換えられたり、データを不正に読み出されたりするのを防止することができる。また、この発明によれば、データ処理手段が実行する命令コードが、所定の位置に記録されたものである場合のみ記録手段へのアクセスを可能とする。これにより、不正な位置に記録された命令コードが実行されることにより、記録手段に記録されたデータを不正に書き換えられたり、データを不正に読み出されたりするのを防止することができる。
【発明の効果】
【００２９】
本発明にかかるアクセス制御装置、アクセス制御方法およびアクセス制御プログラムによれば、データ処理デバイスによる不正な処理を防止することができる。
【発明を実施するための最良の形態】
【００３０】
以下に添付図面を参照して、この発明にかかるアクセス制御装置、アクセス制御方法およびアクセス制御プログラムの好適な実施の形態を詳細に説明する。
【００３１】
（実施の形態１）
（データ処理装置１００のハードウェア構成）
はじめに、実施の形態１にかかるデータ処理装置１００のハードウェア構成について説明する。図１は、データ処理装置のハードウェア構成を示すブロック図である。以下の説明では、データ処理装置１００の一例としてパーソナルコンピュータに対して本発明を適用した例について説明する。
【００３２】
図１において、データ処理装置１００は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、磁気ディスクドライブ１０４と、磁気ディスク１０５と、光ディスクドライブ１０６と、光ディスク１０７と、音声Ｉ／Ｆ（インターフェース）１０８と、マイク１０９と、スピーカ１１０と、入力デバイス１１１と、映像Ｉ／Ｆ１１２と、ディスプレイ１１３と、通信Ｉ／Ｆ（インターフェース）１１４と、外部接続用Ｉ／Ｆ１１５とを備えている。また、各構成部１０１〜１１５はバス１２０によってそれぞれ接続されている。
【００３３】
まず、ＣＰＵ１０１は、データ処理装置１００の全体の制御を司る。ＲＯＭ１０２は、ブートプログラム、通信プログラム、データ解析プログラムなどのプログラムを記録している。また、ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。
【００３４】
磁気ディスクドライブ１０４は、ＣＰＵ１０１の制御にしたがって磁気ディスク１０５に対するデータの読み取り／書き込みを制御する。磁気ディスク１０５は、磁気ディスクドライブ１０４の制御で書き込まれたデータを記録する。磁気ディスク１０５としては、たとえば、ＨＤ（ハードディスク）やＦＤ（フレキシブルディスク）を用いることができる。
【００３５】
光ディスクドライブ１０６は、ＣＰＵ１０１の制御にしたがって光ディスク１０７に対するデータの読み取り／書き込みを制御する。光ディスク１０７は、光ディスクドライブ１０６の制御にしたがってデータの読み出される着脱自在な記録手段である。光ディスク１０７は、書き込み可能な記録手段を利用することもできる。また、この着脱可能な記録手段として、光ディスク１０７のほか、ＭＯ、メモリカードなどであってもよい。
【００３６】
音声Ｉ／Ｆ１０８は、音声入力用のマイク１０９および音声出力用のスピーカ１１０に接続される。マイク１０９に受音された音声は、音声Ｉ／Ｆ１０８内でＡ／Ｄ変換される。また、スピーカ１１０からは音声が出力される。また、入力デバイス１１１は、文字、数値、各種指示などの入力のための複数のキーを備えたリモコン、キーボード、マウス、タッチパネルなどが挙げられる。
【００３７】
映像Ｉ／Ｆ１１２は、ディスプレイ１１３と接続される。映像Ｉ／Ｆ１１２は、具体的には、たとえば、ディスプレイ１１３全体の制御をおこなうグラフィックコントローラと、即時表示可能な画像情報を一時的に記録するＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）などのバッファメモリと、グラフィックコントローラから出力される画像データに基づいて、ディスプレイ１１３を表示制御する制御ＩＣなどによって構成される。
【００３８】
ディスプレイ１１３には、アイコン、カーソル、メニュー、ウインドウ、あるいは文字や画像などの各種データが表示される。このディスプレイ１１３は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００３９】
通信Ｉ／Ｆ１１４は、ネットワークに接続され、ネットワークとＣＰＵ１０１とのインターフェースとして機能する。
【００４０】
外部接続用Ｉ／Ｆ１１５は、外部の機器と接続するためのインターフェース類である。外部接続用Ｉ／Ｆ１１５と外部の機器との接続は、ケーブルなどを用いて有線でおこなってもよいし、無線でおこなってもよい。外部接続用Ｉ／Ｆ１１５は、たとえば、専用の接続ケーブルのポート、無線通信用ポートなどによって構成される。
【００４１】
つぎに、データ処理装置１００におけるデータ処理ユニット２００の機能的構成について説明する。データ処理ユニット２００は、図１に示したデータ処理装置１００のハードウェア構成のうち、実質的なデータ処理をおこなう構成を機能的に示したものである。図２は、実施の形態１にかかるデータ処理ユニットの機能的構成を示すブロック図である。データ処理ユニット２００は、データ処理部２１０、データ提供部２２０、データ記録部２３０、命令コード記録部２４０によって構成される。なお、データ処理ユニット２００の各構成は、たとえば、同一の基板上や同一のモジュール（半導体デバイスなど）内に構成される。
【００４２】
データ処理部２１０は、たとえば、ＣＰＵ１０１であり、後述する命令コード記録部２４０に記録された命令コード（より詳細には、命令コードのコード列）を読み出し（フェッチ）、命令コードにしたがって制御部２１１によって各種のデータ処理をおこなう。データ処理部２１０は、制御部２１１、演算部２１２、レジスタ２１３によって構成される。制御部２１１は、データ処理装置１００の各構成部を結ぶバス１２０に信号を出力し、データの読み書きをおこない、データ処理装置１００全体の動作を制御する。演算部２１２は、後述するレジスタ２１３に読み込まれたデータに対して各種の演算をおこなう。レジスタ２１３は、演算部２１２によって処理されたデータを一時的に保持したり、後述する命令コード記録部２４０から読み出した命令コードや、それらが記録されているアドレスを保持する。
【００４３】
データ提供部２２０は、たとえば、乱数生成器や演算回路などであり、演算部２２１によってデータ処理部２１０での処理に用いるデータの生成や算出、取得をおこなう。データ提供部２２０は、演算部２２１で生成または算出したデータを記録するレジスタ２２２を有する。また、レジスタ２２２に記録されたデータへのアクセスは、アクセス制御部２２３によって制御される。
【００４４】
アクセス制御部２２３は、レジスタ２２２に記録されたデータの読み出し（アクセス）や、レジスタ２２２へのデータの書き込みを制御する。具体的には、アクセス制御部２２３は、データ処理部２１０が実行する命令コードを監視し、あらかじめ定められた命令コードが正しく実行された場合のみ、レジスタ２２２に記録されたデータの読み出しやレジスタ２２２へのデータの書き込みを許可する。
【００４５】
より詳細には、アクセス制御部２２３は、たとえば、データ処理部２１０が実行する命令のうち、レジスタ２２２へのアクセスを伴う命令の命令コードの記録元（命令コード記録部２４０におけるアドレス）および命令コードのコード列を監視する。そして、アクセス制御部２２３は、たとえば、データ処理部２１０が実行する命令が、あらかじめ許可されたアドレスに記録された命令コードであり、かつ、あらかじめ許可されたコード列である場合に、レジスタ２２２に記録されたデータへのアクセスや、レジスタ２２２へのデータの書き込みを許可する。なお、アクセス制御部２２３は、アドレスおよびコード列のうち、両方を監視してもよいし、いずれかのみを監視してもよい。また、許可する命令コードとして定められている命令コードは、単数であっても複数であってもよい。
【００４６】
データ記録部２３０は、ＲＯＭ１０２や磁気ディスク１０５、光ディスク１０７などであり、データ処理部２１０によって処理されたデータや他の機器から取得したデータ、プログラムデータなどを記録する。データ記録部２３０は、記録領域２３１およびアクセス制御部２３２によって構成される。記録領域２３１は、データ記録部２３０に記録されたデータを保持する。アクセス制御部２３２は、記録領域２３１に記録されたデータへのアクセスや、記録領域２３１へのデータの書き込みを制御する。具体的には、アクセス制御部２３２は、アクセス制御部２２３と同様に、データ処理部２１０が実行する命令コードを監視する。そして、アクセス制御部２３２は、あらかじめ定められた命令コードが正しく実行された場合のみ、記録領域２３１に記録されたデータへのアクセスを許可する。
【００４７】
なお、上述した説明では、データ提供部２２０とデータ記録部２３０とを分離する構成としたが、これらを一体とする構成であってもよい。また、データ提供部２２０とデータ記録部２３０とに、それぞれアクセス制御部２２３、２３２を設けることとしたが、いずれかにのみアクセス制御部を設ける構成としてもよい。また、データ処理部２１０の制御部２１１と、アクセス制御部２２３、２３２とをつなぐ経路は、物理的に同一の経路としてもよいし、二重化された個別の経路としてもよい。
【００４８】
命令コード記録部２４０は、ＲＯＭ１０２や磁気ディスク１０５、光ディスク１０７などであり、データ処理部２１０が実行する命令の命令コードを記録する。データ処理部２１０は、命令コード記録部２４０に記録された命令コードを読み出し、命令コードにしたがって各種のデータ処理をおこなう。命令コード記録部２４０は、図２に示すように、データ処理部２１０と分離して設けられていてもよいし、データ処理部２１０の内部に設けられていてもよい。
【００４９】
ここで、図３を用いて命令コード記録部２４０の構造について説明する。図３は、命令コード記録部の構造の一例を模式的に示す説明図である。命令コード記録部２４０の記録領域３１０には、所定の領域ごと（たとえば、１バイトごと）にアドレスが割り振られている。図示した例では、記録領域３１０にアドレス０ｘ０００〜０ｘＮＮＮが割り振られており、各アドレスは１バイト分の領域を示している。たとえば、アドレス０ｘ１００で示される領域には、命令コード列０ｘＡＢＣＤＥＦＧＨが格納されている。また、アドレス０ｘ１０４で示される領域には、命令コード列０ｘＪＫＬＭＮＯＰＱが格納されている。データ処理部２１０は、指定されたアドレスから始まる領域に格納された命令コードを読み出し、読み出した命令コードにしたがって処理をおこなう。
【００５０】
（データ処理部２１０によるデータ処理の一例）
つづいて、データ処理部２１０がおこなうデータ処理の一例について説明する。図４は、データ処理部がおこなうデータ処理の一例の手順を示すフローチャートである。データ処理部２１０は、各種の処理をおこなうが、ここでは、たとえば、データ処理装置１００に接続された接続機器などに対する認証処理をおこなう場合を例にして説明する。
【００５１】
データ処理装置１００には、各種の機器やデバイスの接続が可能であるが、ユーザやメーカーが承認していない機器やデバイスが不正に接続され、データ処理装置１００の誤作動を発生させたり、データ処理装置１００に格納されたデータが改ざんされたり、盗まれたりする恐れがある。これを防止するため、データ処理装置１００は、データ処理装置１００に接続された接続機器などに対する認証処理を定期的におこなう。
【００５２】
図４のフローチャートにおいて、データ処理部２１０は、まず、接続された機器やデバイス（以下、「接続機器」という）から認証用データを取得し（ステップＳ４０１）、取得した認証用データを用いて、データ提供部２２０によって検証値Ｖを生成させる（ステップＳ４０２）。検証値Ｖは、接続機器を認証する際に用いる値である。データ提供部２２０は、演算部２２１で検証値Ｖを生成し、レジスタ２２２に格納する。なお、ステップＳ４０１で取得した認証用データをそのまま検証値Ｖとしてもよい。
【００５３】
つぎに、データ処理部２１０は、データ提供部２２０のレジスタ２２２から検証値Ｖを読み出す（ステップＳ４０３）。データ処理部２１０は、読み出した検証値Ｖをレジスタ２１３に一時格納する（ステップＳ４０４）。そして、データ処理部２１０は、検証値Ｖをデータ記録部２３０の記録領域２３１に書き込む（ステップＳ４０５）。つづいて、データ処理部２１０は、データ提供部２２０によって期待値Ｐを生成させる（ステップＳ４０６）。期待値Ｐは、検証値Ｖの照合用に用いる値である。データ提供部２２０は、演算部２２１で期待値Ｐを生成し、レジスタ２２２に格納する。
【００５４】
データ処理部２１０は、データ提供部２２０のレジスタ２２２から期待値Ｐを読み出し（ステップＳ４０７）、さらに、データ記録部２３０の記録領域２３１から検証値Ｖを読み出す（ステップＳ４０８）。そして、データ処理部２１０は、検証値Ｖと期待値Ｐとを照合し（ステップＳ４０９）、照合結果が正しいか否かを判断する（ステップＳ４１０）。照合結果が正しいか否かは、たとえば、検証値Ｖと期待値Ｐとの間に所定の関係が成立しているか（たとえば、検証値Ｖ＝期待値Ｐなど）否かによって判断する。
【００５５】
照合結果が正しい場合（ステップＳ４１０：Ｙｅｓ）、データ処理部２１０は、接続機器を認証して（ステップＳ４１１）、本フローチャートによる処理を終了する。一方、照合結果が正しくない場合（ステップＳ４１０：Ｎｏ）、データ処理部２１０は、接続機器を認証せず（ステップＳ４１２）、本フローチャートによる処理を終了する。接続機器を認証しなかった場合、データ処理部２１０は、たとえば、データ処理装置１００のディスプレイ１１３にエラーメッセージを表示させて、不正な機器が接続されていることを報知したり、接続機器との接続を切断したりする。
【００５６】
以上のような処理により、データ処理部２１０は、データ処理装置１００に接続された接続機器などに対する認証処理をおこなう。しかしながら、たとえば、悪意を有する者（以下、「悪意者」という）によって、不正な機器が認証されるように認証処理を改ざんされてしまう場合がある。
【００５７】
たとえば、ステップＳ４０５では、データ記録部２３０の記録領域２３１に対して検証値Ｖが書き込まれている。このとき、記録領域２３１に書き込まれるのは、本来はデータ処理部２１０のレジスタ２１３に一時格納されている検証値Ｖである（ステップＳ４０４参照）。しかし、不正な命令コードによって、記録領域２３１に書き込む値をレジスタ２１３以外の場所（または、レジスタ２１３のうち検証値Ｖが格納されている領域以外の領域）に記録された値とすることが可能となる。
【００５８】
また、たとえば、ステップＳ４０３では、データ提供部２２０のレジスタ２２２から検証値Ｖが読み出されている。このとき、読み出す値をレジスタ２２２以外の場所（または、レジスタ２２２のうち検証値Ｖが格納されている領域以外の領域）に記録された値とすることが可能となる。これらの不正は、たとえば、不正なパッチなどによってデータ処理部２１０の処理を分岐させることによって可能となる。
【００５９】
このような不正がおこなわれると、正しい認証処理がおこなえず、不正な機器の接続が可能となってしまう。このため、データ処理ユニット２００では、データ提供部２２０にアクセス制御部２２３を、データ記録部２３０にアクセス制御部２３２をそれぞれ設け、レジスタ２２２や記録領域２３１に対するデータ処理部２１０からのアクセス（書き込み、読み出し）を制御する。これにより、不正な命令コードの実行によって、不正な機器が認証されてしまうのを防止している。
【００６０】
（アクセス制御部２２３，２３２によるアクセス制御）
図５は、アクセス制御部によるアクセス制御の概要を示す説明図である。なお、図５では、説明の便宜上、データ処理ユニット２００の構成を一部省略している。
【００６１】
図５に示すように、たとえば、データ記録部２３０のアクセス制御部２３２で許可する命令コードは、命令コード記録部２４０のアドレス０ｘ１０４に格納されたコード列０ｘＪＫＬＭＮＯＰＱ（ライト命令）であるとする。このとき、通常時の命令コード記録部２４０には、アドレス０ｘ１０４にコード列０ｘＪＫＬＭＮＯＰＱ（ライト命令）が記録されている。データ処理部２１０が、通常の命令コード記録部２４０のアドレス０ｘ１０４に格納されたリード命令のコード列０ｘＪＫＬＭＮＯＰＱを読み出して実行する場合（矢印α）、アクセス制御部２３２は、記録領域２３１へのデータの書き込みを許可する。
【００６２】
ところが、たとえば、不正例１のように、命令コード記録部２４０のアドレス０ｘ２００に、不正な命令コードのコード列０ｘＰＯＩＵＹＴＲＥ（ライト命令）が書き込まれてしまったとする。この場合、データ処理部２１０が、アドレス０ｘ２００のコード列０ｘＰＯＩＵＹＴＲＥ（ライト命令）を読み出して実行しても（矢印β）、許可されたアドレスから読み出された命令ではないので、アクセス制御部２３２は、記録領域２３１へのアクセスを許可しない（ライト命令を拒否する）。
【００６３】
また、たとえば、不正例２のように、命令コード記録部２４０のアドレス０ｘ０８０に、不正な命令コードのコード列０ｘＬＫＪＨＧＦＤＳが挿入されてしまったとする。この不正な命令コードは、たとえば、記録領域２３１に書き込む値の変更命令である。しかし、この命令が挿入されたことにより、許可されている命令の格納場所がずれてしまい、コード列０ｘＪＫＬＭＮＯＰＱ（ライト命令）の格納場所がアドレス０ｘ１０８となってしまっている。
【００６４】
このため、データ処理部２１０が、アドレス０ｘ１０８のコード列０ｘＪＫＬＭＮＯＰＱ（ライト命令）を読み出して実行しても（矢印γ）、許可されたアドレスから読み出された命令ではないので、アクセス制御部２３２は、記録領域２３１へのアクセスを許可しない（ライト命令を拒否する）。これにより、不正なコード列０ｘＬＫＪＨＧＦＤＳによって書き込み値が変更されたとしても、その値が記録領域２３１に書き込まれず、不正な処理を防止することができる。
【００６５】
また、アクセス制御部２２３，２３２からレジスタ２２２などへのアクセスが拒否された場合、データ処理部２１０は、不正がおこなわれている可能性がある旨を報知することとしてもよい。具体的には、たとえば、ディスプレイ１１３にエラーメッセージの表示をおこなったり、マイク１０９からエラーメッセージを音声出力するなどである。また、たとえば、通信Ｉ／Ｆ１１４を介して、データ処理装置１００の製造元や管理者などにエラーメッセージを送信してもよい。これにより、データ処理ユニット２００に不正がおこなわれた可能性がある旨をユーザなどに認識させ、調査や修理などの措置を講じさせることができる。
【００６６】
図６は、アクセス制御部によるデータ認証処理の手順を示すフローチャートである。ここでは、図４のステップＳ４０３〜Ｓ４０５（検証値Ｖをデータ提供部２２０から読み出し、データ記録部２３０に書き込むまで）の処理における、アクセス制御部２２３，２３２の処理について説明する。図６のフローチャートにおいて、データ提供部２２０のアクセス制御部２２３は、データ処理部２１０がレジスタ２２２に格納されたデータ（図４のステップＳ４０２で生成された検証値Ｖ）のリード命令を実行するまで待機する（ステップＳ６０１：Ｎｏのループ）。
【００６７】
データ処理部２１０がリード命令を実行すると（ステップＳ６０１：Ｙｅｓ）、アクセス制御部２２３は、データ処理部２１０が実行する命令が、許可するリード命令であるか否かを判断する（ステップＳ６０２）。許可するリード命令であるか否は、たとえば、リード命令が格納されていたアドレス（命令フェッチ時のアドレス）が許可したアドレスであるか否かや、データ処理部２１０が実行する命令のコード列が許可した命令のコード列と一致するか否かによって判断する。
【００６８】
データ処理部２１０が実行する命令が許可するリード命令である場合（ステップＳ６０２：Ｙｅｓ）、アクセス制御部２２３は、レジスタ２２２に格納されたデータ（検証値Ｖ）をデータ処理部２１０に出力する（ステップＳ６０３）。出力されたデータは、データ処理部２１０のレジスタ２１３に一時格納される。
【００６９】
一方、データ処理部２１０が実行する命令が許可するリード命令でない場合は（ステップＳ６０２：Ｎｏ）、レジスタ２２２に格納されたデータ（検証値Ｖ）をデータ処理部２１０に出力せずに、ステップＳ６０４に移行する。このとき、データ処理部２１０のレジスタ２１３には、データ提供部２２０からの出力がないため、「００００」「１１１１」などの非正当値が格納される。この非正当値を所定の値にしておき、その値がレジスタ２１３に格納された場合は、不正がおこなわれている可能性がある旨を報知することとしてもよい。ここで、所定の値とは、複数種類の固定値群や、あらかじめ変動規則を定めておいた変動値などである。
【００７０】
また、不正がおこなわれている可能性がある旨の報知とは、たとえば、データ処理装置１００のディスプレイ１１３に所定のメッセージやマークなどを表示させたり、マイク１０９から所定の音声メッセージや効果音を出力するなどである。また、たとえば、通信Ｉ／Ｆ１１４や外部接続用Ｉ／Ｆ１１５を介して、他の機器に所定のメッセージを送信（出力）したり、上記のようなメッセージ表示や音声出力を他の機器におこなわせるための制御信号を出力することとしてもよい。
【００７１】
つづいて、データ記録部２３０のアクセス制御部２３２は、データ処理部２１０がレジスタ２２２に格納されたデータ（検証値Ｖ）のライト命令を実行するまで待機する（ステップＳ６０４：Ｎｏのループ）。データ処理部２１０がライト命令を実行すると（ステップＳ６０４：Ｙｅｓ）、アクセス制御部２２３は、データ処理部２１０が実行する命令が、許可するライト命令であるか否かを判断する（ステップＳ６０５）。許可するライト命令であるか否かの判断は、ステップＳ６０２の判断と同様の処理によっておこなう。
【００７２】
データ処理部２１０が実行する命令が許可するライト命令である場合（ステップＳ６０５：Ｙｅｓ）、アクセス制御部２３２は、データ処理部２１０のレジスタ２１３に一時格納されているデータを記録領域２３１に書き込んで（ステップＳ６０６）、本フローチャートによる処理を終了する。一方、データ処理部２１０が実行する命令が許可するライト命令でない場合は（ステップＳ６０５：Ｎｏ）、記録領域２３１にデータを書き込まずに、本フローチャートによる処理を終了する。このとき、データ処理部２１０は、不正がおこなわれている可能性がある旨をユーザなどに報知することとしてもよい。
【００７３】
以上のような処理によって、アクセス制御部２２３，２３２は、データ処理部２１０が実行する命令コードを監視し、不正な命令コードの実行によるデータへのアクセスをおこなえないようにする。これにより、不正な命令コードの実行によって、不正な機器が認証されてしまうのを防止することができる。
【００７４】
たとえば、データ処理ユニット２００の各デバイスがトランジスタレベルで解析され複製されたり、正規の命令コード記録部２４０のメモリ種別が解析され不正な命令コードを書き込んだ同じ種別のメモリに差し替えらえる不正がおこなわれる場合がある。通常の不正検出方法では、このような不正を検出するのは困難である。しかし、データ処理ユニット２００では、命令コードのコード列や格納アドレスを監視しているため、このような不正を検出することができる。
【００７５】
また、データ処理ユニット２００によれば、上述したような人為的な不正の他、データ化けなどの電気的な原因によるデータ処理装置１００の誤作動を防止することもできる。図７は、アクセス制御部によるアクセス制御の他の例を示す説明図である。たとえば、図７に示すように、データ記録部２３０のアクセス制御部２３２で許可する命令コードが、命令コード記録部２４０のアドレス０ｘ１００に格納されたリード命令、およびアドレス０ｘ１０４に格納されたライト命令であるとする。また、命令コード記録部２４０のアドレス０ｘ１００には、コード列０ｘＡＢＣＤＥＦＧＨ（リード命令）が記録されている。
【００７６】
ここで、データ処理部２１０が命令コードを読み出す際、命令コードにデータ化け（「１」が「０」となるなど）が発生してしまう場合がある。この結果、データ処理部２１０がアドレス０ｘ１００から読み出したコード列０ｘＡＢＣＤＥＦＧＨ（リード命令）が、たとえば、コード列０ｘＡＢＣＤＥＦＧＩ（ライト命令）に置き換わってしまう場合がある（矢印δ）。この場合、データ処理装置１００がコード列０ｘＡＢＣＤＥＦＧＩ（ライト命令）を実行すると、データ記録部２３０のデータが予期しない形で書き換えられてしまう可能性がある。
【００７７】
しかし、アクセス制御部２３２では、データ処理部２１０が実行する命令コードを監視しているため、ライト命令として命令Ａ’が実行されたとしても（矢印ε）、その命令のフェッチアドレスが０ｘ１００であるため、記録領域２３１への書き込みを許可しない。また、このとき、フェッチアドレスのみならず、データ処理部２１０が実行する命令コード列を監視することとしてもよい。
【００７８】
以上説明したように、データ処理ユニット２００によれば、命令コードの読み出し時にデータ化けが生じた場合であっても、誤動作によって重要なデータが消去されてしまうのを防止することができる。また、上記のリード命令に適用すれば、誤作動により重要なデータが読み出されてしまうのを防止することができる。
【００７９】
また、データ処理ユニット２００によれば、命令コードの解読やプログラムカウンタ値の読み込みをおこなわず、ビットパターンの比較のみをおこなうため、不正検出処理の工程が複雑とならず、開発や設計の難易度を低減することができる。また、データ処理ユニット２００によれば、データ処理部２１０内にはアクセス制御機能を搭載していないため、既存のデータ処理部２１０（ＣＰＵなど）を用いたデータ処理デバイスにも適用することができる。さらに、データ処理ユニット２００によれば、データ処理部２１０によってアクセスされる側の構成（データ記録部２３０など）を主体にしてセキュリティ強度を決定することができる。
【００８０】
（実施の形態２）
実施の形態１では、アクセス制御部は、命令コードや命令コードの格納アドレスを監視した。以下に説明する実施の形態２では、アクセス制御部は、命令コードや命令コードの格納アドレスの監視に加えて、命令コードから算出されたチェック値を監視する。これにより、アクセス制御部による不正検出の精度を高めることができる。なお、以下の説明において、実施の形態１と同一の構成については同一の符号を付し、詳細な説明を省略する。
【００８１】
図８は、実施の形態２にかかるデータ処理ユニットの機能的構成を示すブロック図である。実施の形態２にかかるデータ処理ユニット８００は、実施の形態１にかかるデータ処理ユニット２００と同様に、図１に示したデータ処理装置１００のハードウェア構成のうち、実質的なデータ処理をおこなう構成を機能的に示したものである。データ処理ユニット８００は、データ処理部２１０、データ提供部２２０、データ記録部２３０、命令コード記録部２４０、およびチェック値算出部８１０によって構成される。データ処理部２１０、データ提供部２２０、データ記録部２３０の各構成は、実施の形態１にかかるデータ処理ユニット２００と同様である。
【００８２】
チェック値算出部８１０は、データ処理部２１０が実行する命令コードのコード列を命令コード記録部２４０から取得する。そして、命令コード記録部２４０から取得したコード列から、命令コードの正当性を検査するチェック値を算出する。チェック値算出部８１０によって算出されたチェック値は、アクセス制御部２２３，２３２によるレジスタ２２２および記録領域２３１に対するデータの読み書きの制御に用いられる。
【００８３】
ここで、チェック値とは、たとえば、命令コード記録部２４０に記録されたすべて（または一部）の命令コードから算出される値である。チェック値算出部８１０は、たとえば、命令コード記録部２４０に記録されたすべての命令コードに対して、ハッシュ関数による演算やパリティチェック、巡回冗長検査（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ：ＣＲＣ）、チェックサムなどの、誤り検出演算をおこなってチェック値を算出する。このように、チェック値は命令コード記録部２４０に実際に記録されている命令コードから算出される。よって、チェック値を用いて照合をおこなうことによって、命令コード記録部２４０に記録された命令コードの不正な書き換えや、命令コード記録部２４０の不正な取り替えなどを検出することができる。
【００８４】
アクセス制御部２２３，２３２は、実施の形態１で説明したように、データ処理部２１０が実行する命令コードを監視して、あらかじめ定められた命令コードが正しく実行されたか否かを判断する。これに加え、実施の形態２では、チェック値算出部８１０によって算出されたチェック値が、チェック値の期待値と等しいか否か（または、所定の関係にあるか否か）を判断する。このように、命令コードそのものの照合と、チェック値の照合を組み合わせることによって、より確実に不正を検出することができる。
【００８５】
アクセス制御部２２３，２３２が照合に用いる期待値は、たとえば、あらかじめ（製造時など）アクセス制御部２２３，２３２に記録させておく。また、アクセス制御部２２３，２３２が照合に用いる期待値を、他の構成部からアクセス制御部２２３，２３２に送信することとしてもよい。他の構成部とは、たとえば、データ処理部２１０やチェック値の期待値を生成するための専用の処理部（以下、「期待値算出部」という）などである。データ処理部２１０や期待値算出部は、あらかじめ記録されている期待値をアクセス制御部２２３，２３２に送信してもよいし、照合処理ごとに期待値を生成してもよい。また、外部接続用Ｉ／Ｆ１１５（図１参照）を介して、外部の機器からデータ処理部２１０や期待値算出部に期待値を算出するために必要な係数などを送信してもよい。このように、アクセス制御部２２３，２３２に、あらかじめチェック値用データの期待値を記録させずに、他の構成部から取得することとすれば、命令コード記録部２４０のチェック値を後発的に変更することが可能となる。
【００８６】
つぎに、チェック値算出部８１０によるチェック値算出処理について説明する。図９は、チェック値算出部によるチェック値算出処理の手順を示すフローチャートである。図９のフローチャートにおいて、チェック値算出部８１０は、アクセス制御部２２３，２３２からチェック値の取得要求を受信するまで待機する（ステップＳ９０１：Ｎｏのループ）。
【００８７】
チェック値の取得要求を受信すると（ステップＳ９０１：Ｙｅｓ）、チェック値算出部８１０は、命令コード記録部２４０からすべて（または一部）の命令コードを読み出し（ステップＳ９０２）、読み出した値に対して誤り検出用の演算をおこなってチェック値を算出する（ステップＳ９０３）。そして、チェック値算出部８１０は、ステップＳ９０３でおこなった演算によって算出された値（チェック値）をアクセス制御部２２３，２３２に送信して（ステップＳ９０４）、本フローチャートによる処理を終了する。
【００８８】
なお、図９のフローチャートにおいて、チェック値算出部８１０は、アクセス制御部２２３，２３２からチェック値の取得要求を受信した上でチェック値を算出することとしたが、これには限らない。たとえば、あらかじめ定められた条件が成立した場合などに、チェック値算出部８１０がチェック値を生成し、アクセス制御部２２３，２３２にチェック値を送信するようにしてもよい。
【００８９】
つづいて、アクセス制御部２２３，２３２によるデータ認証処理について説明する。図１０および図１１は、アクセス制御部によるデータ認証処理の手順を示すフローチャートである。ここでは、図６のフローチャートと同様に、図４のステップＳ４０３〜Ｓ４０５（検証値Ｖをデータ提供部２２０から読み出し、データ記録部２３０に書き込むまで）の処理における、アクセス制御部２２３，２３２の処理について説明する。図１０のフローチャートにおいて、データ提供部２２０のアクセス制御部２２３は、データ処理部２１０がレジスタ２２２に格納されたデータ（図４のステップＳ４０２で生成された検証値Ｖ）のリード命令を実行するまで待機する（ステップＳ１００１：Ｎｏのループ）。
【００９０】
データ処理部２１０がリード命令を実行すると（ステップＳ１００１：Ｙｅｓ）、アクセス制御部２２３は、データ処理部２１０が実行する命令が、許可するリード命令であるか否かを判断する（ステップＳ１００２）。データ処理部２１０が実行する命令が許可するリード命令である場合（ステップＳ１００２：Ｙｅｓ）、アクセス制御部２２３は、チェック値算出部８１０に対してチェック値の取得要求を送信し（ステップＳ１００３）、チェック値算出部８１０からチェック値を受信する（ステップＳ１００４）。このとき、アクセス制御部２２３は、複数に分割されたチェック値を取得してもよい。この場合、アクセス制御部２２３は、複数に分割されたチェック値を統合してから後の処理をおこなう。
【００９１】
つぎに、アクセス制御部２２３は、チェック値の期待値を取得する（ステップＳ１００５）。アクセス制御部２２３は、たとえば、あらかじめ記録されている期待値を読み出したしたり、データ処理部２１０や期待値算出部が生成した期待値を受信することによって、期待値を取得する。
【００９２】
そして、アクセス制御部２２３は、ステップＳ１００４で受信したチェック値とステップＳ１００５で取得した期待値とが、一致しているか否かを判断する（ステップＳ１００６）。なお、アクセス制御部２２３は、チェック値と期待値とが一致しているかではなく、チェック値と期待値とが所定の関係にあるか否かを判断することとしてもよい。所定の関係とは、たとえば、チェック値に所定の演算をおこなった値が、期待値と等しい、などの関係である。
【００９３】
チェック値と期待値とが一致している場合（ステップＳ１００６：Ｙｅｓ）、アクセス制御部２２３は、レジスタ２２２に格納されたデータ（検証値Ｖ）をデータ処理部２１０に出力する（ステップＳ１００７）。出力されたデータは、データ処理部２１０のレジスタ２１３に一時格納される。一方、チェック値が一致していない場合（ステップＳ１００６：Ｎｏ）、または、データ処理部２１０が実行する命令が許可するリード命令でない場合（ステップＳ１００２：Ｎｏ）、アクセス制御部２２３は、レジスタ２２２に格納されたデータ（検証値Ｖ）をデータ処理部２１０に出力せずに、ステップＳ１００８（図１１参照）に移行する。
【００９４】
図１１の説明にうつり、データ記録部２３０のアクセス制御部２３２は、データ処理部２１０がレジスタ２２２に格納されたデータ（検証値Ｖ）のライト命令を実行するまで待機する（ステップＳ１００８：Ｎｏのループ）。データ処理部２１０がライト命令を実行すると（ステップＳ１００８：Ｙｅｓ）、アクセス制御部２２３は、データ処理部２１０が実行する命令が、許可するライト命令であるか否かを判断する（ステップＳ１００９）。
【００９５】
データ処理部２１０が実行する命令が許可するライト命令である場合（ステップＳ１００９：Ｙｅｓ）、アクセス制御部２３２は、チェック値算出部８１０に対してチェック値の取得要求を送信し（ステップＳ１０１０）、チェック値算出部８１０からチェック値を受信する（ステップＳ１０１１）。つぎに、アクセス制御部２３２は、チェック値の期待値を取得する（ステップＳ１０１２）。
【００９６】
そして、アクセス制御部２２３は、ステップＳ１０１１で受信したチェック値とステップＳ１０１２で取得した期待値とが、一致しているか否かを判断する（ステップＳ１０１３）。ステップＳ１０１０〜Ｓ１０１３の処理は、ステップＳ１００３〜Ｓ１００６（図１０参照）と同様の処理によっておこなう。
【００９７】
チェック値と期待値とが一致している場合（ステップＳ１０１３：Ｙｅｓ）、アクセス制御部２３２は、データ処理部２１０のレジスタ２１３に一時格納されているデータを記録領域２３１に書き込んで（ステップＳ１０１４）、本フローチャートによる処理を終了する。一方、チェック値と期待値とが一致していない場合（ステップＳ１０１３：Ｎｏ）、または、データ処理部２１０が実行する命令が許可するライト命令でない場合（ステップＳ１００９：Ｎｏ）、記録領域２３１にデータを書き込まずに、本フローチャートによる処理を終了する。このとき、データ処理部２１０は、不正がおこなわれている可能性がある旨を報知することとしてもよい。
【００９８】
なお、上述した説明では、命令コードからチェック値を算出することとしたが、命令コードに代えて、たとえば、命令コード記録部２４０に記録されたデータ（以下、「チェック値用データ」という）を用いてチェック値を算出することとしてもよい。チェック値用データとは、たとえば、命令コード記録部２４０に記録された固定データである。なお、チェック値用データは、固定データに限らず、たとえば、変動前後のデータ値を正確に予測可能な変動データであってもよい。変動前後のデータ値を正確に予測可能とは、具体的には、たとえば、変動範囲が定まっている場合や変動規則が定まっている場合などを指す。
【００９９】
チェック値算出部８１０は、命令コード記録部２４０に記録されたチェック値用データを読み出してチェック値を算出する。また、アクセス制御部２２３，２３２は、あらかじめチェック値用データの期待値を記録している。アクセス制御部２２３，２３２は、チェック値用データの期待値からチェック値を算出し、チェック値算出部８１０が算出したチェック値と一致するか（または所定の関係にあるか）否かを判断する。なお、命令コードから算出したチェック値と、チェック値用データから算出したチェック値とを両方用いて、不正の検出をおこなってもよい。
【０１００】
以上説明したように、実施の形態２によれば、命令コードそのものの監視（実施の形態１）と合わせて、データ処理部２１０が実行する命令コードのチェック値が、チェック値算出部８１０によって算出されたチェック値と同じか否か（または、所定の関係にあるか否か）を判断する。このように、命令コードそのものの照合と、チェック値の照合を組み合わせることによって、より確実に不正を検出することができる。
【０１０１】
また、チェック値による不正検出は、命令コードそのものの監視（実施の形態１）と合わせておこなうため、チェック値の算出に比較的処理付加が軽い誤り検出方式（たとえば、パリティチェックなど）を用いても、一定の精度を得ることができる。
【０１０２】
なお、上述した説明では、データ処理装置１００としてパーソナルコンピュータに対して本発明を適用した場合について説明したが、本発明は、たとえば、携帯電話端末、家庭用ゲーム機器などの各種家庭用電子機器、自動券売機や遊技機などの各種業務用電子機器に対しても適用することができる。この場合、上述した説明中のデータ処理装置１００を各種電子機器と読み替えればよい。
【０１０３】
また、本実施の形態で説明したアクセス制御方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録手段に記録され、コンピュータによって記録手段から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【０１０４】
以上のように、本発明にかかるアクセス制御装置、アクセス制御方法、アクセス制御プログラムは、認証用情報や課金情報、個人情報などを記録した記録媒体へのアクセス制御に有用であり、特に、認証処理をおこなう認証サーバや課金処理をおこなう課金サーバ、個人情報を取り扱う業務用端末装置などに適している。
【図面の簡単な説明】
【０１０５】
【図１】データ処理装置のハードウェア構成を示すブロック図である。
【図２】実施の形態１にかかるデータ処理ユニットの機能的構成を示すブロック図である。
【図３】命令コード記録部の構造の一例を模式的に示す説明図である。
【図４】データ処理部がおこなうデータ処理の一例の手順を示すフローチャートである。
【図５】アクセス制御部によるアクセス制御の概要を示す説明図である。
【図６】アクセス制御部によるデータ認証処理の手順を示すフローチャートである。
【図７】アクセス制御部によるアクセス制御の他の例を示す説明図である。
【図８】実施の形態２にかかるデータ処理ユニットの機能的構成を示すブロック図である。
【図９】チェック値算出部によるチェック値算出処理の手順を示すフローチャートである。
【図１０】アクセス制御部によるデータ認証処理の手順を示すフローチャートである。
【図１１】アクセス制御部によるデータ認証処理の手順を示すフローチャートである。
【符号の説明】
【０１０６】
２００，８００  データ処理ユニット
２１０  データ処理部
２１１  制御部
２１２  演算部
２１３  レジスタ
２２０  データ提供部
２２１  演算部
２２２  レジスタ
２２３  アクセス制御部
２３０  データ記録部
２３１  記録領域
２３２  アクセス制御部
２４０  命令コード記録部
８１０  チェック値算出部
【図１】
0004562759.tif 000002
【図２】
0004562759.tif 000003
【図３】
0004562759.tif 000004
【図４】
0004562759.tif 000005
【図５】
0004562759.tif 000006
【図６】
0004562759.tif 000007
【図７】
0004562759.tif 000008
【図８】
0004562759.tif 000009
【図９】
0004562759.tif 000010
【図１０】
0004562759.tif 000011
【図１１】
0004562759.tif 000012