(57)【要約】【課題】、不正アクセスの検出精度の高い（セキュリティ性の高い）マイクロコンピュータ、メモリ装置、及び不正メモリアクセス検出方法を提供すること【解決手段】プログラム領域セルマトリックス１０９には、通常データが配置され、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータがデータ領域内の空き領域に配置される。オフセット保持回路１０２は、メモリ１０への不正アクセスの検出に用いるオフセットを保持する。加算器１０３は、メモリ１０に対する読み出しリクエストに含まれる読み出しアドレスと、オフセット保持回路１０２から供給されたオフセットと、を用いた演算を行う。比較部１０５は、加算器１０３による演算結果と、読み出しデータの比較を行い、比較結果に応じてメモリ１０に対する不正アクセスを検出する。【選択図】図１
2013149137.tif 000002
【特許請求の範囲】
【請求項１】
データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリを備え、
前記メモリへの不正アクセスの検出に用いる前記オフセットを保持するオフセット保持回路と、
前記メモリに対する読み出しリクエストに含まれる読み出しアドレスと、前記オフセット保持回路から供給された前記オフセットと、を用いた演算を行う演算部と、
前記演算器による演算結果と、読み出しデータの比較を行い、比較結果に応じて前記メモリに対する不正アクセスを検出する比較部と、を有するマイクロコンピュータ。
【請求項２】
前記演算部は、前記読み出しアドレスと前記オフセットと、を加算した加算結果を算出し、
前記比較部は、前記加算結果と、読み出しデータと、が一致した場合に不正アクセスであると判定することを特徴とする請求項１に記載のマイクロコンピュータ。
【請求項３】
前記オフセットは、前記メモリに配置した前記通常データの各々と、その配置アドレスと、の差分値のいずれにも含まれない値であることを特徴とする請求項１または請求項２に記載のマイクロコンピュータ。
【請求項４】
前記トラップデータは、前記通常データにより上書き可能であることを特徴とする請求項１乃至請求項３のいずれか１項に記載のマイクロコンピュータ。
【請求項５】
前記通常データは、前記トラップデータにより上書き可能であることを特徴とする請求項１乃至請求項４のいずれか１項に記載のマイクロコンピュータ。
【請求項６】
請求項１乃至請求項５のいずれか１項に記載のマイクロコンピュータと、
前記データ領域へのデータ配置、及び前記オフセット保持回路に対する前記オフセットの設定を行う装置と、
を備えるシステム。
【請求項７】
データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリ、に対する不正アクセス検出方法であって、
前記メモリへの不正アクセスの検出に用いる前記オフセットと、前記メモリに対する読み出しリクエストに含まれる読み出しアドレスと、を用いた演算を行い、
当該演算結果と、読み出しデータの比較を行い、比較結果に応じて前記メモリに対する不正アクセスを検出する、
不正アクセス検出方法。
【請求項８】
前記オフセットは、前記メモリに配置した前記通常データの各々と、その配置アドレスと、の差分値のいずれにも含まれない値であることを特徴とする請求項７に記載の不正アクセス検出方法。
【請求項９】
データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリ装置であって、
不正アクセスの検出に用いる前記オフセットを保持するオフセット保持回路と、
読み出しリクエストに含まれる読み出しアドレスと、前記オフセット保持回路から供給された前記オフセットと、を用いた演算を行う演算部と、
前記演算器による演算結果と、読み出しデータの比較を行い、比較結果に応じて不正アクセスを検出する比較部と、
を備えるメモリ装置。
【請求項１０】
前記オフセットは、前記メモリに配置した前記通常データの各々と、その配置アドレスと、の差分値のいずれにも含まれない値であることを特徴とする請求項９に記載のメモリ装置。
【請求項１１】
メモリへの不正アクセスを検出するためのオフセットの算出、及び前記メモリのデータ配置領域に対する通常データ及び前記オフセットから定まるトラップデータの配置、にかかる処理をコンピュータに実行させるプログラムであって、
前記メモリに設定する通常データ及び当該通常データの配置アドレスが記載された入力情報を受信する受信処理と、
前記入力情報に含まれる各通常データとそれらの各配置アドレスとの比較演算に応じて前記オフセットを算出するオフセット算出処理と、
前記通常データを配置しない空きアドレスと、前記オフセットと、に基づいて前記空きアドレスに設定する前記トラップデータを算出するトラップデータ算出処理と、
を実行させる、プログラム。
【請求項１２】
前記オフセット算出処理では、
前記入力情報に含まれる各通常データと各配置アドレスとの差分値を算出し、算出したすべての差分値に含まれない値を前記オフセットとして決定することを特徴とする請求項１１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータ、メモリ装置、及び不正メモリアクセス検出方法に関し、特に不正なメモリアクセスを検出するマイクロコンピュータ、メモリ装置、及び不正メモリアクセス検出方法に関する。
【背景技術】
【０００２】
近年、製品の価格競争の激化に伴い、製品に実装する部品の数を減らすために不揮発性メモリ搭載のマイクロコンピュータの使用が増加している。このような状況において、製品のデータコピーや悪意あるデータ改変を防ぐために、不揮発性メモリの情報漏洩防止の工夫が重要となる。
【０００３】
不揮発性メモリからの不正読み出しを防止する手法の一つに、アドレス監視により不正読み出しを検知する手法がある。この手法によれば、セキュリティ性を高めることができる。
【０００４】
特許文献１には、不正読み出しを防止した不揮発性メモリが開示されている。当該不揮発性メモリの構成、及び動作を以下に説明する。図１０は、特許文献１に記載の不揮発性メモリにおけるパスワード読み出し保護手法の概念を示す図である。
【０００５】
図１０は、不揮発性メモリ内の各記憶領域が示されている。不揮発性メモリは、書き換えも読み出しも通常通り行うことができる主メモリ領域６２が設けられる。パスワード領域６１は、主メモリ領域６２へのアクセスに必要となるパスワードを保持する領域である。トラップアドレス領域６０は、パスワード領域６１の一部を構成する領域であり、パスワード領域６１内のトラップアドレスを指定する。メモリアクセスのためにパスワード認証を行う際にトラップアドレスに対してアクセスが行われた場合、パスワード領域６1からのパスワードの読み出しを禁止する。トラップアドレスを避けてアクセスが行われた場合、パスワード領域６１内のパスワードの読み出しを許可する。
【０００６】
携帯電話やＩＣカード等の製造者は、パスワード領域６１内の所定のアドレス領域を上述のトラップアドレス領域６０に設定する。これにより、デバイス外部からの書き換え、及び読み出しを行うことが出来ないトラップアドレス領域６０が不揮発性メモリ内に設けられる。
【０００７】
図１０の例では、アドレス２、５、Ｋ、Ｌがトラップアドレスとして設定される。従って、有効なパスワードは、アドレス２、５、Ｋ、Ｌ以外の領域に記録される。
【０００８】
トラップアドレス領域６０は、パスワード領域６１と同様に、不揮発性メモリの製造者が１回だけ書き込むことができる領域である。その後、トラップアドレス領域６０に対してライトプロテクトが行われ、改竄が出来ない構成となっている。トラップアドレス領域６０に対しては、外部からの読み出し用回路が設けられていない。そのため、トラップアドレス領域６０のアドレス等を外部から把握することはほぼ不可能である。
【０００９】
図１１は、図１０に示す不揮発性メモリの詳細構成を示すブロック図である。不揮発性メモリ７０は、パスワード領域７０１（上述のパスワード領域６１に対応）と、主メモリ領域７０２（上述の主メモリ領域６２に対応）と、トラップアドレス領域７０３（上述のトラップアドレス領域６０に対応）と、を備える。上述のように、トラップアドレス領域７０３は、パスワード領域７０１の一領域である。
【００１０】
ＣＰＵ等からのアドレス信号は、アドレス保持部７０４によりラッチされ、Ｘデコーダ７０５及びＹデコーダ７０６に供給される。Ｘデコーダ７０５は、アドレス信号に対応して選択されるワード線を駆動し、Ｙデコーダ７０６は、アドレス信号に対応して選択されるＹゲート７１４を導通させる。入出力バッファ７０７は、データ入出力端子ＤＱ（図示せず）と接続し、データ保持部７０８の保持する読み出しデータを出力し、入力される書き込みデータを取り込む。
【００１１】
コマンドデコーダ７０９には、所定のコマンドＣＭＤがアドレス端子やデータ入出力端子から供給される。コマンドデコーダ７０９は、供給されたコマンドをデコード（解読）し、解読したコマンドに対応する内部制御信号を生成する。例えば、コマンドデコーダ７０９は、ライトコマンドに対応して、書き込み制御信号Ｑ３を生成し、Ｑ３の供給により書込電圧生成回路７１０に書き込み電圧を発生させる。書き込み電圧の発生に応じて、書込電圧生成回路７１０は、セルマトリクス内のセルへの書き込みを有効にする。
【００１２】
比較部７１１は、アドレス信号Ａｄｄと、トラップアドレス領域７０３に含まれる各トラップアドレスと、を比較する。ライトプロテクト素子７１２は、トラップアドレス領域７０３のライトプロテクトを行う。
【００１３】
不揮発性メモリ７０を内蔵する携帯電話等の設計者は、最初にトラップアドレス設定コマンドをコマンドデコーダ７０９に供給する。コマンドデコーダ７０９は、制御信号Ｑ１を供給することにより、トラップアドレス領域７０３を設定する。トラップアドレスの設定後に、コマンドデコーダ７０９は、制御信号Ｑ４をライトプロテクト素子７１２に供給する。これにより、トラップアドレス領域７０３は、外部からの書き換えが不可能となる。さらに、トラップアドレス領域７０３への読み出し回路は、設けられていない。
【００１４】
設定したトラップアドレスの情報は、不揮発性メモリ７０にアクセスするＣＰＵ（図示せず）にも通知される。当該通知も、ＣＰＵ外からは読み出すことが出来ない。
【００１５】
通常の読み出し動作において、ＣＰＵは、パスワード領域７０１を読み出すリードコマンドをコマンドデコーダ７０９に発行する。ここでＣＰＵは、トラップアドレスを把握しているため、トラップアドレスを回避しつつパスワードの読み出すリードリクエストを発行する。コマンドデコーダ７０９は、リードコマンドに応じて制御信号Ｑ２により比較部７１１を活性状態にする。そして比較部７１１は、ＣＰＵから供給されたアドレス信号がトラップアドレスのいずれかと一致するか否かの比較を行う。
【００１６】
比較部７１１が上述の一致を検出した場合、不正アクセスであるため、ブレーク信号Ｑ５またはＱ６を生成する。ブレーク信号Ｑ５に応答して、データ保持部７０８の前段に設置されたデータ反転回路７１３は、パスワード領域７０１から読み出されたデータを反転して出力する。あるいは、ブレーク信号Ｑ６に応答して、書込電圧生成回路７１０が活性化される。書込電圧生成回路７１０は、パスワード領域７０１内のパスワードを破壊（消去）する。
【００１７】
なお、特許文献２にも、特許文献１と同様に読み出し禁止アドレス登録メモリ（上述のトラップアドレス相当）を有する不揮発性半導体記憶装置が開示されている。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２００１−５７２９号公報
【特許文献２】特開２００４−５７８５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１９】
上述の特許文献１及び特許文献２に記載の技術では、セキュリティ性能が十分ではないという問題がある。以下、当該問題について説明する。
【００２０】
上述のように、特許文献１に記載の不揮発性メモリでは、パスワード領域７０１は、主メモリ領域７０２とは異なる領域に設けられている。そして、トラップアドレス領域７０３は、パスワード領域７０１内に設けられている。そのため、一度パスワード領域７０１内のパスワードを用いて認証処理に成功した場合（比較部７１１による比較により正常なアクセスと判定された場合）、その後の不正なアクセスを自由に行えてしまう。すなわち、パスワード領域７０１に対する認証が一度成功した場合、主メモリ領域７０２に対する不正アクセスに対して何らの対応を取ることが出来ない。このため、主メモリ領域７０３内のデータに対するセキュリティが十分ではない。
【課題を解決するための手段】
【００２１】
一実施の形態によれば、マイクロコンピュータは、
データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリを備え、
前記メモリへの不正アクセスの検出に用いる前記オフセットを保持するオフセット保持回路と、
前記メモリに対する読み出しリクエストに含まれる読み出しアドレスと、前記オフセット保持回路から供給された前記オフセットと、を用いた演算を行う演算部と、
前記演算器による演算結果と、読み出しデータの比較を行い、比較結果に応じて前記メモリに対する不正アクセスを検出する比較部と、を有する、ものである。
【００２２】
一実施の形態によれば、メモリ装置は、データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリ装置であって、
不正アクセスの検出に用いる前記オフセットを保持するオフセット保持回路と、
読み出しリクエストに含まれる読み出しアドレスと、前記オフセット保持回路から供給された前記オフセットと、を用いた演算を行う演算部と、
前記演算器による演算結果と、読み出しデータの比較を行い、比較結果に応じて不正アクセスを検出する比較部と、を備える、ものである。
【００２３】
一実施の形態によれば、不正メモリアクセス検出方法は、
データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリ、に対する不正アクセス検出方法であって、
前記メモリへの不正アクセスの検出に用いる前記オフセットと、前記メモリに対する読み出しリクエストに含まれる読み出しアドレスと、を用いた演算を行い、
当該演算結果と、読み出しデータの比較を行い、比較結果に応じて前記メモリに対する不正アクセスを検出する、ものである。
【００２４】
前記一実施の形態によれば、データを保持するデータ領域内の空き領域にトラップデータを設定するため、通常データとトラップデータがデータ領域内で混在する。これにより、通常データの隠蔽性が高まり、セキュリティ性能を向上させることができる。
【発明の効果】
【００２５】
前記一実施の形態によれば、不正アクセスの検出精度の高い（セキュリティ性の高い）マイクロコンピュータ、メモリ装置、及び不正メモリアクセス検出方法を提供することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施の形態１にかかるマイクロコンピュータの構成を示すブロック図である。
【図２】本発明の実施の形態１にかかるマイクロコンピュータを含むシステムの構成を示すブロック図である。
【図３】本発明の実施の形態１にかかる設定ツールの構成を示すブロック図である。
【図４】本発明の実施の形態１にかかるマイクロコンピュータの不正読み出し検出に関する動作を示すフローチャートである。
【図５】本発明の実施の形態１にかかる設定ツールの設定動作を示すフローチャートである。
【図６】本発明の実施の形態１にかかるプログラム領域セルマトリックスの内部構成を示す概念図である。
【図７】本発明の実施の形態１にかかる設定ツールの設定動作を示すフローチャートである。
【図８】本発明の実施の形態１にかかるマイクロコンピュータの動作を示す模式図である。
【図９】本発明の実施の形態１にかかるプログラム領域セルマトリックスの内部構成を示す概念図である。
【図１０】特許文献１に記載の不揮発性メモリの内部の各記憶領域を示す概念図である。
【図１１】特許文献１に記載の不揮発性メモリの構成を示すブロック図である。
【発明を実施するための形態】
【００２７】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。図１は、本実施の形態にかかるマイクロコンピュータの構成を示すブロック図である。マイクロコンピュータ１は、不揮発性メモリ１０と、ＣＰＵ（Central Processing Unit）２０と、ＭＥＭＣ（Memory Controller）３０と、を備える。
【００２８】
ＣＰＵ２０は、マイクロコンピュータ１を制御する演算装置である。ＣＰＵ２０は、各種のプログラムを実行する。ＣＰＵ２０は、後述するコマンドデコーダ１０１に不揮発性メモリ１０に対するコマンドを発行する。また、ＣＰＵ２０は、ＭＥＭＣ３０を介して不揮発性メモリ１０に対する読み出し／書き込みを行う。ＭＥＭＣ３０は、バスを介して不揮発性メモリ１０に対する読み出し／書き込みを制御する。ＭＥＭＣ３０は、読み出し／書き込み時に不揮発性メモリ１０に対して読み出しアドレスＲＡを発行し、データの入出力（Ｄ１）を行う。
【００２９】
不揮発性メモリ１０は、例えばＲＯＭ（Read Only Memory）やＦＬＡＳＨ  ＲＯＭが該当する。不揮発性メモリ１０は、コマンドデコーダ１０１と、オフセット保持回路１０２と、加算器１０３と、アドレス保持部１０４と、比較部１０５と、書込電圧生成回路１０６と、Ｘデコーダ１０７と、Ｙデコーダ１０８と、プログラム領域セルマトリックス１０９と、Ｙゲート１１０と、データ反転回路１１１と、データ保持部１１２と、入出力バッファ１１３と、を備える。
【００３０】
コマンドデコーダ１０１は、ＣＰＵ２０からコマンド入力Ｃ１を受け取り、当該コマンドをデコード（解読）し、デコードしたコマンドに対応する内部制御信号（Ｑ１〜Ｑ３）を生成する。例えば、コマンドデコーダ１０１は、ライトコマンドに対応して、書き込み制御信号Ｑ３を生成し、Ｑ３の供給により書込電圧生成回路１０６に書き込み電圧を発生させる。書き込み電圧に応じて、書込電圧生成回路１０６は、プログラム領域セルマトリックス１０９内のセルへの書き込みを有効にする。また、コマンドデコーダ１０１は、リードコマンドに応じて、内部制御信号Ｑ１及びＱ２を生成（有効化）する。
【００３１】
アドレス保持部１０４は、読み出しアドレスＲＡをラッチする。アドレス保持部１０４は、ラッチした読み出しアドレスＲＡをＸデコーダ１０７及びＹデコーダ１０８に供給する。さらに、アドレス保持部１０４は、読み出しアドレスＲＡを加算器１０３に供給する。Ｘデコーダ１０７は、読み出しアドレスＲＡに対応して選択されるワード線を駆動する。Ｙデコーダ１０８は、読み出しアドレスＲＡに対応して選択されるＹゲート１１０を導通させる。Ｙゲート１１０は、読み出したデータＲＤを比較部１０５及びデータ反転回路１１１に供給する。
【００３２】
入出力バッファ１１３は、データ入出力Ｄ１と接続され、ＭＥＭＣ３０とのデータの受け渡しに用いられるバッファである。
【００３３】
オフセット保持回路１０２は、オフセットＯＳを保持している。オフセットＯＳは、不揮発性メモリ１０への不正アクセス（不正なデータ読み出し等）を検出するために用いる値である。オフセットＯＳは、後述する装置２による初期化コマンドによって値がオフセット保持回路１０２に入力される。オフセット保持回路１０２は、コマンドデコーダ１０１から供給される内部制御信号Ｑ１が有効になった場合、オフセットＯＳを加算器１０３に供給する。
【００３４】
加算器１０３は、アドレス保持部１０４から供給される読み出しアドレスＲＡと、オフセット保持回路１０２から供給されるオフセットＯＳと、を加算する。加算器１０３は、加算結果ＲＥＳを比較部１０５に供給する。
【００３５】
比較部１０５は、コマンドデコーダ１０１から供給される内部制御信号Ｑ２が有効の場合に動作する。比較部１０５は、加算器１０３の出力する加算結果ＲＥＳと、Ｙゲート１１０から供給される読み出しデータＲＤと、を比較する。比較部１０５は、当該比較により両者が一致した場合には、不正読み出しが生じたことを検出する。
【００３６】
図３、図５を参照して後述するが、オフセットＯＳと、読み出しアドレスＲＡと、の加算値が読み出しデータＲＤと等しくなる場合、不正読み出しであると検出できるように、オフセットＯＳの値は設定されている。また、プログラム領域セルマトリックス１０９の空き領域（通常のデータが設定されない領域）には、オフセットＯＳとアドレスを加算した値がトラップデータとして設定される。
【００３７】
不正読み出しを検出した場合、比較部１０５は、ブレーク信号Ｑ５またはＱ６を有効にして出力する。ブレーク信号Ｑ５に応答して、データ反転回路１１１は、プログラム領域セルマトリックス１０９から読み出されたデータＲＤを反転してデータ保持部１１２に供給する。これにより、データＲＤが正しいデータではなくなり、不正読み出しを防止することができる。
【００３８】
または、ブレーク信号Ｑ６に応答して、書込電圧生成回路１０６が活性化される。活性化された書込電圧生成回路１０６は、プログラム領域セルマトリックス１０９内のデータを破壊（消去）する。これにより、不正なアクセスに応答して正しいデータを受け渡す危険が無くなる。なお、不正読み出しを検出した場合、当該読み出しに応答しないこととしても良い。
【００３９】
プログラム領域セルマトリックス１０９は、データ領域を持つ記憶領域である。プログラム領域セルマトリックス１０９は、データ領域内に、通常のデータ（通常データ）とともに、不正アクセス（不正読み出し）を検出するためのトラップデータを保持する。通常データ及びトラップデータの配置は、後述する設定ツールが決定する。通常データ及びトラップデータは、後述の装置２から発行される初期化コマンドによって設定される。
【００４０】
次に、図２を参照して、図１に示すマイクロコンピュータ１と、当該マイクロコンピュータ１に対して設定を行う装置２と、の関係を説明する。装置２は、マイクロコンピュータ１に対して初期設定を行う装置である。詳細には、装置２は、設定ツールにより生成した出力ファイルを用いて初期化コマンドをマイクロコンピュータ１に対して発行する。当該初期化コマンドは、プログラム領域セルマトリックス１０９にトラップデータを設定するとともに、オフセット保持回路１０２にオフセットＯＳを設定するコマンドである。装置２は、たとえば内部メモリやＣＰＵを備える一般的なパーソナルコンピュータであればよい。装置２は、内部に設定ツール（図３を用いて後述する）を備える。装置２は、例えば設定ツールをコンパイラの一機能として実行する。なお、装置２は、図示しない書き込み装置を介してマイクロコンピュータ１に対して書き込み処理（初期化コマンドの発行）を行う。
【００４１】
コンパイラは、任意のコンピュータ内で動作するプログラムである。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００４２】
続いて、図３を参照して、図１に示すマイクロコンピュータ１に対して設定を行う設定ツールの詳細について説明する。設定ツール４０は、外部記憶装置５０と接続可能（データの受け渡しが可能）となっている。設定ツール４０は、たとえば装置２のコンパイラの一機能として実現され、記憶装置５０はたとえば装置２内のハードディスクである。設定ツール４０は、入力ファイル５１を読み出し、所定の設定内容を出力ファイル５２に書き込む。
【００４３】
設定ツール４０は、配置アドレステーブル４１と、配置データテーブル４２と、を有する。また、設定ツール４０は、オフセットの計算値を保持する設定オフセット４３と、配置アドレステーブル４１及び配置データテーブル４２の参照番号を示すテーブル番号４４と、を記憶する。
【００４４】
配置アドレステーブル４１及び配置データテーブル４２には、入力ファイル５１に記載のデータが初期値として与えられる。設定ツール４０は、この初期値を基に、上述のオフセット保持回路１０２に保持させるオフセットＯＳを算出する。また、設定ツール４０は、プログラム領域セルマトリックス１０９内のデータの配置（通常データの配置、及びトラップデータの配置）を算出する。詳細な算出方法は、図５及び図７を参照して後述する。設定ツール４０は、算出したオフセットＯＳ、及びプログラム領域セルマトリックス１０９内のデータ配置を出力ファイル５２に書き込む。そして、装置２は、この出力ファイル５２を基に、オフセット保持回路１０２にオフセットＯＳを設定するとともに、プログラム領域セルマトリックス１０９内にデータ（通常データ、トラップデータ）を設定する。
【００４５】
次に、図４を参照して、マイクロコンピュータ１での不正読み出し検出に関する動作を説明する。図４は、本実施の形態にかかるマイクロコンピュータ１の不正読み出し検出に関する動作を示すフローチャートである。
【００４６】
コマンドデコーダ１０１は、入力されたコマンドＣ１がリードコマンドであるか否かを判定する（Ｓ１１）。リードコマンドではない場合（Ｓ１１：ＮＯ）、コマンドデコーダ１０１は、不正読み出し検出の処理を終了する。
【００４７】
リードコマンドである場合（Ｓ１１：ＹＥＳ）、コマンドデコーダ１０１は、制御信号Ｑ１及びＱ２を有効にする。これに応じて、比較部１０５は、以下の式（１）を満たすか否かを判定する（Ｓ１２）。
読み出しデータＲＤ  ＝  読み出しアドレスＲＡ  ＋  オフセットＯＳ  ―――式（１）
【００４８】
式（１）を満たす場合（Ｓ１２：ＹＥＳ）、比較部１０５は、不正読み出しが生じたことを検出する。そして、比較部１０５は、不正読み出しに対する対応としてブレーク信号Ｑ５またはＱ６を有効にする（Ｓ１３）。
【００４９】
一方、式（１）を満たさない場合（Ｓ１２：ＮＯ）、比較部１０５は、不正読み出しが発生しなかったと判定し、処理を終了する。
【００５０】
続いて、設定ツール４０によるオフセットＯＳ及びプログラム領域セルマトリックス１０９内のデータ配置の算出方法について説明する。まず、図３及び図５を参照して、オフセットＯＳの第１の算出方法を説明する。図５は、オフセットＯＳ及びプログラム領域セルマトリックス１０９内のデータ配置の第１の算出方法を示すフローチャートである。
【００５１】
設定ツール４０は、入力ファイル５１から設定すべきアドレスとデータの情報を取得し、取得した情報を配置アドレステーブル４１、配置データテーブル４２にそれぞれ設定する（Ｓ２１）。この際、対応するデータとアドレスは、同じテーブル番号の位置に配置するようにする。例えば、図３では、アドレス"００００１０００Ｈ"にデータ"ＦＦＦＦＦＦＦＦＨ"が設定されるため、両者は、テーブル番号"０"の位置に設定される。
【００５２】
また、設定ツール４０は、設定オフセット４３の初期値を０（または適当な値）に設定する（Ｓ２２）。さらに、設定ツール４０は、テーブル番号４４を初期値である０に設定する（Ｓ２３）。このテーブル番号４４の値は、配置アドレステーブル４１と、配置データテーブル４２と、を対応付けて走査するための値である。
【００５３】
設定ツール４０は、テーブル番号４４の値を基に、配置アドレステーブル４１と、配置データテーブル４２と、から値を抽出する。なお、以下の記載において、配置アドレステーブル４１から抽出した値を配置アドレスと呼称し、配置データテーブル４２から抽出した値を配置データと呼称する。例えば、図３の例では、テーブル番号４４が"１"である場合、設定ツール４０は、配置アドレス"００００１００４Ｈ"及び配置データ"００００１００４Ｈ"を抽出する。
【００５４】
設定ツール４０は、抽出した配置アドレス、配置データ、及び設定オフセット４３を下記の式（２）に代入し、右辺と左辺が一致するか否かを判定する（Ｓ２４）。
配置データ  ＝  配置アドレス  ＋設定オフセット４３  ―――式（２）
【００５５】
右辺と左辺が一致した場合（Ｓ２４：ＹＥＳ）、設定ツール４０は、設定オフセット４３の値を更新（インクリメント）する（Ｓ２５）。そして、設定ツール４０は、Ｓ２３から処理を再開する。すなわち、設定ツール４０は、更新した設定オフセット４３を用いて、テーブル（配置アドレステーブル４１、配置データテーブル４２）の先頭（テーブル番号４３＝"０"）から再度比較処理を行う。
【００５６】
右辺と左辺が一致しなかった場合（Ｓ２４：ＮＯ）、設定ツール４０は、テーブル番号４４の値を更新（インクリメント）する（Ｓ２６）。これにより、配置アドレステーブル４１及び配置データテーブル４２の参照位置を更新する。
【００５７】
設定ツール４０は、テーブル（配置アドレステーブル４１、配置データテーブル４２）内の全てのデータのチェックが終了したか否かを判定する（Ｓ２７）。終了していない場合（Ｓ２７：ＮＯ）、設定ツール４０は、Ｓ２４から処理を再開する。
【００５８】
全てのデータのチェックが終了している場合（Ｓ２７：ＹＥＳ）、設定ツール４０は、設定オフセット４３の値を出力ファイル５２に書き込む（Ｓ２８）。例えば、設定オフセット４３の値が"０００００１００Ｈ"である場合、出力ファイル５２に当該値を書き込む。
【００５９】
設定ツール４０は、配置アドレステーブル４１に存在しない各アドレス（空き領域）に充填するトラップデータを算出する。トラップデータは、以下の式（３）により算出される。
トラップデータ  ＝ 配置アドレス  ＋  設定オフセット４３―――式（３）
【００６０】
例えば、図３の例では、アドレス"００００１００８Ｈ"には設定対象のデータがない（配置アドレステーブル４１内に"００００１００８Ｈ"のデータがない）。ここで、設定オフセット４３が"０００００１００Ｈ"と算出された場合、設定ツール４０は、アドレス"００００１００８Ｈ"に設定するトラップアドレスを"００００１１０８Ｈ"と算出する。
【００６１】
設定ツール４０は、通常のデータとその書き込み先であるアドレス、及びトラップデータ及びその書き込み先であるアドレス、の双方を出力ファイル５２に書き込む（Ｓ２９）。
【００６２】
以上の処理により、設定ツール４０は、オフセット保持回路１０２に設定するオフセット、プログラム領域セルマトリックス１０９に設定するトラップデータ、及びそのトラップデータを設定するアドレス、を算出する。
【００６３】
図６は、上記の出力ファイル５２を用いてプログラム領域セルマトリックス１０９を設定した場合の概念図である。図示するように、プログラム領域セルマトリックス１０９には、通常のデータとトラップデータが混在する形で配置される。なお、プログラム領域セルマトリックス１０９を読み出そうとする悪意のあるユーザからは、どのアドレスに通常のデータが配置されており、どのアドレスにトラップデータが配置されているのかは、完全に隠蔽される（分からない状態となる）。
【００６４】
次に、図３及び図７を参照して、オフセットＯＳ及びプログラム領域セルマトリックス１０９内のデータ配置の第２の算出方法を説明する。図７は、オフセットＯＳ及びプログラム領域セルマトリックス１０９内のデータ配置の第２の算出方法を示すフローチャートである。なお、図７において、図５と同一の符号を付した処理は、図５と同様の処理である。そのため、同一処理については、必要に応じて説明を省略する。
【００６５】
当該算出方法を実施する場合、設定ツール４０は、各アドレスと各データの差分値（図３には図示せず）を記憶する。
【００６６】
設定ツール４０は、図５に示す算出方法と同様に、テーブルの設定（Ｓ２１）及び各種初期化（Ｓ２２、Ｓ２３）を行う。設定ツール４０は、アドレスとデータの組ごとに差分値を算出する（Ｓ３１）。この差分値の算出を、テーブル全体に対して行う（テーブル番号を更新しながらテーブルの末尾データまで継続的に行う）。
【００６７】
たとえば、設定ツール４０は、図３では、アドレス"００００１０００Ｈ"とデータ"ＦＦＦＦＦＦＦＦＨ"の差分を算出し、当該差分値を記憶する。同様に、設定ツール４０は、図３の例では、アドレス"００００１００４Ｈ"とデータ"００００１００４Ｈ"の差分を算出し、当該差分値を記憶する。この処理を全てのアドレスとデータの組に対して行う。
【００６８】
設定ツール４０は、全ての差分値の算出が終わった後に（Ｓ２７：ＹＥＳ）、算出した全ての差分値を基に、設定オフセット４３の値を算出する（Ｓ３２）。設定ツール４０は、算出した全ての差分値に含まれない値を設定オフセットの値とする。例えば、設定ツール４０は、算出した全ての差分値のうち最大値よりも大きい値を設定オフセット４３の値に設定する。
【００６９】
設定ツール４０は、設定オフセット４３の算出後に、図５に示す方法と同様に、設定オフセット４３を出力ファイル５２に書き込み（Ｓ２８）、トラップデータの設定を行う（Ｓ２９）。
【００７０】
なお、図５及び図７に示す算出方法はあくまで一例であり、他の算出方法を用いてオフセットＯＳの値の算出、及びトラップデータの設定を行っても良い。
【００７１】
続いて図８を参照して、本実施の形態にかかるマイクロコンピュータ１の動作を説明する。図８は、本実施の形態にかかるマイクロコンピュータ１の動作を示す模式図である。オフセット保持回路１０２には、オフセットＯＳとして"０００００１００Ｈ"が設定されている。また、プログラム領域セルマトリックス１０９には、図示するようにデータ（トラップデータを含む）が設定されている。
【００７２】
アドレス"００００１０００Ｈ"には、データ"ＦＦＦＦＦＦＦＦＨ"が格納されている。ここで、アドレス"００００１０００Ｈ"に対する命令フェッチコマンドが不揮発性メモリ１０に入力された場合、コマンドデコーダ１０１は、リードコマンドの入力ではないため、内部制御信号Ｑ１及び内部制御信号Ｑ２を有効にしない。内部制御信号Ｑ２が有効とならない場合、比較部１０５は、動作を開始しない。そのため、不正読み出しの判定が行われない（図８  条件ｃｏｎｄ１）。
【００７３】
次に、アドレス"００００１０００Ｈ"に対するリードコマンドが不揮発性メモリ１０に入力された場合、コマンドデコーダ１０１は、内部制御信号Ｑ１及び内部制御信号Ｑ２を有効にする。比較部１０５は、制御信号Ｑ２が有効となったため、アドレス"００００１０００Ｈ"にオフセットＯＳ"０００００１００Ｈ"を加算した値と、データ"ＦＦＦＦＦＦＦＦＨ"と、が一致するか否かを判定する。ここで加算値が"００００１１００Ｈ"であるため、比較部１０５は、不正読み出しが生じなかったと判定する（図８  条件ｃｏｎｄ２）。
【００７４】
アドレス"００００１００８Ｈ"に対するリードコマンドが不揮発性メモリ１０に入力された場合、コマンドデコーダ１０１は、内部制御信号Ｑ１及び内部制御信号Ｑ２を有効にする。比較部１０５は、内部制御信号Ｑ２が有効となったため、アドレス"００００１００８Ｈ"にオフセットＯＳ"０００００１００Ｈ"を加算した値と、データ"００００１１０８Ｈ"と、が一致するか否かを判定する。ここで加算値が"００００１１０８Ｈ"であるため、比較部１０５は、不正読み出しが生じたと判定する（図８  条件ｃｏｎｄ３）。
【００７５】
続いて、本実施の形態にかかるマイクロコンピュータの効果について説明する。上述のように、本実施の形態にかかるマイクロコンピュータ１では、データを保持するデータ領域内の空き領域にトラップデータが設定される。そのため、通常データとトラップデータがデータ領域内（プログラム領域セルマトリックス１０９内）に混在して配置される（図６）。これにより、通常データの隠蔽性が高まり、セキュリティ性能を向上させることができる。
【００７６】
更に、ユーザ（マイクロコンピュータ１の製造者）は、設定ツール４０に入力する入力ファイル４１を編集する（通常データの数を増減する）ことにより、トラップデータの数の増減を調整することができる。これにより、簡単にセキュリティ性能の調整を行うことが可能になる。
【００７７】
さらにまた、トラップデータは、データ領域（プログラム領域セルマトリックス１０９）内の空き領域に設定される。これにより、使用されていない空き領域の有効活用を行うことができる。
【００７８】
また、図１に示すように、マイクロコンピュータ１は、加算器１０３や比較部１０５という簡素な構成（基本演算のみを行う処理回路、処理部）のみを用いて不正アクセスの検出を行う。これにより、パスワード認証回路等の規模の大きい回路が不要となり、回路規模を削減することができる。
【００７９】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００８０】
例えば、上述の例では、リードコマンドが生じた場合にのみ不正読み出しの検出を行ったが必ずしもこれに限られない。命令フェッチや書き込み等の際にも上記した手法により不正なメモリアクセス（不正アクセス）を検出しても良い。
【００８１】
また、図５、図７の例では、配置アドレステーブル４１及び配置データテーブル４２の先頭（テーブル番号４４＝"０"）から設定オフセット４３の算出処理を行ったが、テーブルの終端から設定オフセット４３の算出処理を行っても良いことは勿論である（テーブルサイズがｎである場合、テーブル番号４４の初期値をｎとして、ｎをデクリメントしてもよい）。
【００８２】
さらにまた、マイクロコンピュータ１は、加算器１０３を有する構成として説明したが必ずしも加算処理に限られず、マイクロコンピュータ１は、加算器１０３にかわり減算器を有する構成としても良い。すなわち、マイクロコンピュータ１は、オフセットとアドレスを用いて演算を行う演算器を有する構成であればよい。
【００８３】
図１においては、不揮発性メモリ１０がコマンドデコーダ１０１等を備える構成として説明したが必ずしもこれに限られない。コマンドデコーダ１０１等は、ＭＥＭＣ３０の構成要素として設けられても良い。
【００８４】
上述の説明では、装置２は、設定ツール４０の出力した出力ファイル５２を基に、不揮発性メモリ１０の使用前にプログラム領域セルマトリックス１０９及びオフセットＯＳを設定していた。しかしながら、装置２は、不揮発性メモリ１０の使用中に出力ファイル５２を再算出し、プログラム領域セルマトリックス１０９を更新しても良い。当該概念を図９を参照して説明する。
【００８５】
設定ツール４０は、不揮発性メモリ１０の使用前に生成した出力ファイル５２を参照する。設定ツール４０は、トラップデータを設定したアドレスを参照し、トラップデータを通常のデータに置き換えるアドレスを決定する。この決定の際に、設定ツール４０は、現在トラップアドレスが設定されているアドレスと、現在設定されているオフセットと、の加算値が、これから設定するデータと等しくならないようにアドレスを決定する。
【００８６】
設定ツール４０は、選択したアドレスに、設定対象のデータを上書きするように出力ファイル５２を書き換える。装置２は、この出力ファイル５２を用いてプログラム領域セルマトリックス１０９の再設定を行う。図９（Ａ）は、当該出力ファイル５２を用いてプログラム領域セルマトリックス１０９の再設定を行った場合の概念を示す図である。これにより、例えば、マイクロコンピュータ１の使用中にパッチ（修正プログラム）に関するデータを不揮発性メモリ１０に書き込むことが可能になる。
【００８７】
同様に、設定ツール４０は、通常のデータを設定したアドレスを参照し、通常のデータをトラップデータに置き換えるアドレスを決定する。この際、設定ツール４０は、以前使用していたものの既に不要となったデータが設定されているアドレスを選択すればよい。そして、設定ツール４０は、当該アドレスと、現在設定されているオフセットと、を加算した値をトラップデータとする。
【００８８】
設定ツール４０は、選択したアドレスに、トラップデータを上書きするように出力ファイル５２を書き換える。装置２は、この出力ファイル５２を用いてプログラム領域セルマトリックス１０９の再設定を行う。図９（Ｂ）は、当該出力ファイル５２を用いてプログラム領域セルマトリックス１０９の再設定を行った場合の概念を示す図である。これにより、マイクロコンピュータ１の使用後に不要となったデータの書き込みアドレスを不正アクセスの検出に用いることができ、セキュリティ性能をさらに向上することが可能となる。
【符号の説明】
【００８９】
１  マイクロコンピュータ
２  装置
１０  不揮発性メモリ
１０１  コマンドデコーダ
１０２  オフセット保持回路
１０３  加算器
１０４  アドレス保持回路
１０５  比較部
１０６  書込電圧生成回路
１０７  Ｘデコーダ
１０８  Ｙデコーダ
１０９  プログラム領域セルマトリックス
１１０  Ｙゲート
１１１  データ反転回路
１１２  データ保持部
１１３  入出力バッファ
２０  ＣＰＵ
３０  ＭＥＭＣ
４０  設定ツール
４１  配置アドレステーブル
４２  配置データテーブル
４３  設定オフセット
４４  テーブル番号
５０  外部記憶装置
５１  入力ファイル
５２  出力ファイル
【図１】
2013149137.tif 000003
【図２】
2013149137.tif 000004
【図３】
2013149137.tif 000005
【図４】
2013149137.tif 000006
【図５】
2013149137.tif 000007
【図６】
2013149137.tif 000008
【図７】
2013149137.tif 000009
【図８】
2013149137.tif 000010
【図９】
2013149137.tif 000011
【図１０】
2013149137.tif 000012
【図１１】
2013149137.tif 000013