JP2013149137A - マイクロコンピュータ、メモリ装置、不正メモリアクセス検出方法 - Google Patents
マイクロコンピュータ、メモリ装置、不正メモリアクセス検出方法 Download PDFInfo
- Publication number
- JP2013149137A JP2013149137A JP2012010013A JP2012010013A JP2013149137A JP 2013149137 A JP2013149137 A JP 2013149137A JP 2012010013 A JP2012010013 A JP 2012010013A JP 2012010013 A JP2012010013 A JP 2012010013A JP 2013149137 A JP2013149137 A JP 2013149137A
- Authority
- JP
- Japan
- Prior art keywords
- data
- offset
- memory
- address
- unauthorized access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】、不正アクセスの検出精度の高い(セキュリティ性の高い)マイクロコンピュータ、メモリ装置、及び不正メモリアクセス検出方法を提供すること
【解決手段】プログラム領域セルマトリックス109には、通常データが配置され、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータがデータ領域内の空き領域に配置される。オフセット保持回路102は、メモリ10への不正アクセスの検出に用いるオフセットを保持する。加算器103は、メモリ10に対する読み出しリクエストに含まれる読み出しアドレスと、オフセット保持回路102から供給されたオフセットと、を用いた演算を行う。比較部105は、加算器103による演算結果と、読み出しデータの比較を行い、比較結果に応じてメモリ10に対する不正アクセスを検出する。
【選択図】図1
【解決手段】プログラム領域セルマトリックス109には、通常データが配置され、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータがデータ領域内の空き領域に配置される。オフセット保持回路102は、メモリ10への不正アクセスの検出に用いるオフセットを保持する。加算器103は、メモリ10に対する読み出しリクエストに含まれる読み出しアドレスと、オフセット保持回路102から供給されたオフセットと、を用いた演算を行う。比較部105は、加算器103による演算結果と、読み出しデータの比較を行い、比較結果に応じてメモリ10に対する不正アクセスを検出する。
【選択図】図1
Description
本発明は、マイクロコンピュータ、メモリ装置、及び不正メモリアクセス検出方法に関し、特に不正なメモリアクセスを検出するマイクロコンピュータ、メモリ装置、及び不正メモリアクセス検出方法に関する。
近年、製品の価格競争の激化に伴い、製品に実装する部品の数を減らすために不揮発性メモリ搭載のマイクロコンピュータの使用が増加している。このような状況において、製品のデータコピーや悪意あるデータ改変を防ぐために、不揮発性メモリの情報漏洩防止の工夫が重要となる。
不揮発性メモリからの不正読み出しを防止する手法の一つに、アドレス監視により不正読み出しを検知する手法がある。この手法によれば、セキュリティ性を高めることができる。
特許文献1には、不正読み出しを防止した不揮発性メモリが開示されている。当該不揮発性メモリの構成、及び動作を以下に説明する。図10は、特許文献1に記載の不揮発性メモリにおけるパスワード読み出し保護手法の概念を示す図である。
図10は、不揮発性メモリ内の各記憶領域が示されている。不揮発性メモリは、書き換えも読み出しも通常通り行うことができる主メモリ領域62が設けられる。パスワード領域61は、主メモリ領域62へのアクセスに必要となるパスワードを保持する領域である。トラップアドレス領域60は、パスワード領域61の一部を構成する領域であり、パスワード領域61内のトラップアドレスを指定する。メモリアクセスのためにパスワード認証を行う際にトラップアドレスに対してアクセスが行われた場合、パスワード領域61からのパスワードの読み出しを禁止する。トラップアドレスを避けてアクセスが行われた場合、パスワード領域61内のパスワードの読み出しを許可する。
携帯電話やICカード等の製造者は、パスワード領域61内の所定のアドレス領域を上述のトラップアドレス領域60に設定する。これにより、デバイス外部からの書き換え、及び読み出しを行うことが出来ないトラップアドレス領域60が不揮発性メモリ内に設けられる。
図10の例では、アドレス2、5、K、Lがトラップアドレスとして設定される。従って、有効なパスワードは、アドレス2、5、K、L以外の領域に記録される。
トラップアドレス領域60は、パスワード領域61と同様に、不揮発性メモリの製造者が1回だけ書き込むことができる領域である。その後、トラップアドレス領域60に対してライトプロテクトが行われ、改竄が出来ない構成となっている。トラップアドレス領域60に対しては、外部からの読み出し用回路が設けられていない。そのため、トラップアドレス領域60のアドレス等を外部から把握することはほぼ不可能である。
図11は、図10に示す不揮発性メモリの詳細構成を示すブロック図である。不揮発性メモリ70は、パスワード領域701(上述のパスワード領域61に対応)と、主メモリ領域702(上述の主メモリ領域62に対応)と、トラップアドレス領域703(上述のトラップアドレス領域60に対応)と、を備える。上述のように、トラップアドレス領域703は、パスワード領域701の一領域である。
CPU等からのアドレス信号は、アドレス保持部704によりラッチされ、Xデコーダ705及びYデコーダ706に供給される。Xデコーダ705は、アドレス信号に対応して選択されるワード線を駆動し、Yデコーダ706は、アドレス信号に対応して選択されるYゲート714を導通させる。入出力バッファ707は、データ入出力端子DQ(図示せず)と接続し、データ保持部708の保持する読み出しデータを出力し、入力される書き込みデータを取り込む。
コマンドデコーダ709には、所定のコマンドCMDがアドレス端子やデータ入出力端子から供給される。コマンドデコーダ709は、供給されたコマンドをデコード(解読)し、解読したコマンドに対応する内部制御信号を生成する。例えば、コマンドデコーダ709は、ライトコマンドに対応して、書き込み制御信号Q3を生成し、Q3の供給により書込電圧生成回路710に書き込み電圧を発生させる。書き込み電圧の発生に応じて、書込電圧生成回路710は、セルマトリクス内のセルへの書き込みを有効にする。
比較部711は、アドレス信号Addと、トラップアドレス領域703に含まれる各トラップアドレスと、を比較する。ライトプロテクト素子712は、トラップアドレス領域703のライトプロテクトを行う。
不揮発性メモリ70を内蔵する携帯電話等の設計者は、最初にトラップアドレス設定コマンドをコマンドデコーダ709に供給する。コマンドデコーダ709は、制御信号Q1を供給することにより、トラップアドレス領域703を設定する。トラップアドレスの設定後に、コマンドデコーダ709は、制御信号Q4をライトプロテクト素子712に供給する。これにより、トラップアドレス領域703は、外部からの書き換えが不可能となる。さらに、トラップアドレス領域703への読み出し回路は、設けられていない。
設定したトラップアドレスの情報は、不揮発性メモリ70にアクセスするCPU(図示せず)にも通知される。当該通知も、CPU外からは読み出すことが出来ない。
通常の読み出し動作において、CPUは、パスワード領域701を読み出すリードコマンドをコマンドデコーダ709に発行する。ここでCPUは、トラップアドレスを把握しているため、トラップアドレスを回避しつつパスワードの読み出すリードリクエストを発行する。コマンドデコーダ709は、リードコマンドに応じて制御信号Q2により比較部711を活性状態にする。そして比較部711は、CPUから供給されたアドレス信号がトラップアドレスのいずれかと一致するか否かの比較を行う。
比較部711が上述の一致を検出した場合、不正アクセスであるため、ブレーク信号Q5またはQ6を生成する。ブレーク信号Q5に応答して、データ保持部708の前段に設置されたデータ反転回路713は、パスワード領域701から読み出されたデータを反転して出力する。あるいは、ブレーク信号Q6に応答して、書込電圧生成回路710が活性化される。書込電圧生成回路710は、パスワード領域701内のパスワードを破壊(消去)する。
なお、特許文献2にも、特許文献1と同様に読み出し禁止アドレス登録メモリ(上述のトラップアドレス相当)を有する不揮発性半導体記憶装置が開示されている。
上述の特許文献1及び特許文献2に記載の技術では、セキュリティ性能が十分ではないという問題がある。以下、当該問題について説明する。
上述のように、特許文献1に記載の不揮発性メモリでは、パスワード領域701は、主メモリ領域702とは異なる領域に設けられている。そして、トラップアドレス領域703は、パスワード領域701内に設けられている。そのため、一度パスワード領域701内のパスワードを用いて認証処理に成功した場合(比較部711による比較により正常なアクセスと判定された場合)、その後の不正なアクセスを自由に行えてしまう。すなわち、パスワード領域701に対する認証が一度成功した場合、主メモリ領域702に対する不正アクセスに対して何らの対応を取ることが出来ない。このため、主メモリ領域703内のデータに対するセキュリティが十分ではない。
一実施の形態によれば、マイクロコンピュータは、
データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリを備え、
前記メモリへの不正アクセスの検出に用いる前記オフセットを保持するオフセット保持回路と、
前記メモリに対する読み出しリクエストに含まれる読み出しアドレスと、前記オフセット保持回路から供給された前記オフセットと、を用いた演算を行う演算部と、
前記演算器による演算結果と、読み出しデータの比較を行い、比較結果に応じて前記メモリに対する不正アクセスを検出する比較部と、を有する、ものである。
データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリを備え、
前記メモリへの不正アクセスの検出に用いる前記オフセットを保持するオフセット保持回路と、
前記メモリに対する読み出しリクエストに含まれる読み出しアドレスと、前記オフセット保持回路から供給された前記オフセットと、を用いた演算を行う演算部と、
前記演算器による演算結果と、読み出しデータの比較を行い、比較結果に応じて前記メモリに対する不正アクセスを検出する比較部と、を有する、ものである。
一実施の形態によれば、メモリ装置は、データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリ装置であって、
不正アクセスの検出に用いる前記オフセットを保持するオフセット保持回路と、
読み出しリクエストに含まれる読み出しアドレスと、前記オフセット保持回路から供給された前記オフセットと、を用いた演算を行う演算部と、
前記演算器による演算結果と、読み出しデータの比較を行い、比較結果に応じて不正アクセスを検出する比較部と、を備える、ものである。
不正アクセスの検出に用いる前記オフセットを保持するオフセット保持回路と、
読み出しリクエストに含まれる読み出しアドレスと、前記オフセット保持回路から供給された前記オフセットと、を用いた演算を行う演算部と、
前記演算器による演算結果と、読み出しデータの比較を行い、比較結果に応じて不正アクセスを検出する比較部と、を備える、ものである。
一実施の形態によれば、不正メモリアクセス検出方法は、
データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリ、に対する不正アクセス検出方法であって、
前記メモリへの不正アクセスの検出に用いる前記オフセットと、前記メモリに対する読み出しリクエストに含まれる読み出しアドレスと、を用いた演算を行い、
当該演算結果と、読み出しデータの比較を行い、比較結果に応じて前記メモリに対する不正アクセスを検出する、ものである。
データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリ、に対する不正アクセス検出方法であって、
前記メモリへの不正アクセスの検出に用いる前記オフセットと、前記メモリに対する読み出しリクエストに含まれる読み出しアドレスと、を用いた演算を行い、
当該演算結果と、読み出しデータの比較を行い、比較結果に応じて前記メモリに対する不正アクセスを検出する、ものである。
前記一実施の形態によれば、データを保持するデータ領域内の空き領域にトラップデータを設定するため、通常データとトラップデータがデータ領域内で混在する。これにより、通常データの隠蔽性が高まり、セキュリティ性能を向上させることができる。
前記一実施の形態によれば、不正アクセスの検出精度の高い(セキュリティ性の高い)マイクロコンピュータ、メモリ装置、及び不正メモリアクセス検出方法を提供することができる。
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。図1は、本実施の形態にかかるマイクロコンピュータの構成を示すブロック図である。マイクロコンピュータ1は、不揮発性メモリ10と、CPU(Central Processing Unit)20と、MEMC(Memory Controller)30と、を備える。
以下、図面を参照して本発明の実施の形態について説明する。図1は、本実施の形態にかかるマイクロコンピュータの構成を示すブロック図である。マイクロコンピュータ1は、不揮発性メモリ10と、CPU(Central Processing Unit)20と、MEMC(Memory Controller)30と、を備える。
CPU20は、マイクロコンピュータ1を制御する演算装置である。CPU20は、各種のプログラムを実行する。CPU20は、後述するコマンドデコーダ101に不揮発性メモリ10に対するコマンドを発行する。また、CPU20は、MEMC30を介して不揮発性メモリ10に対する読み出し/書き込みを行う。MEMC30は、バスを介して不揮発性メモリ10に対する読み出し/書き込みを制御する。MEMC30は、読み出し/書き込み時に不揮発性メモリ10に対して読み出しアドレスRAを発行し、データの入出力(D1)を行う。
不揮発性メモリ10は、例えばROM(Read Only Memory)やFLASH ROMが該当する。不揮発性メモリ10は、コマンドデコーダ101と、オフセット保持回路102と、加算器103と、アドレス保持部104と、比較部105と、書込電圧生成回路106と、Xデコーダ107と、Yデコーダ108と、プログラム領域セルマトリックス109と、Yゲート110と、データ反転回路111と、データ保持部112と、入出力バッファ113と、を備える。
コマンドデコーダ101は、CPU20からコマンド入力C1を受け取り、当該コマンドをデコード(解読)し、デコードしたコマンドに対応する内部制御信号(Q1〜Q3)を生成する。例えば、コマンドデコーダ101は、ライトコマンドに対応して、書き込み制御信号Q3を生成し、Q3の供給により書込電圧生成回路106に書き込み電圧を発生させる。書き込み電圧に応じて、書込電圧生成回路106は、プログラム領域セルマトリックス109内のセルへの書き込みを有効にする。また、コマンドデコーダ101は、リードコマンドに応じて、内部制御信号Q1及びQ2を生成(有効化)する。
アドレス保持部104は、読み出しアドレスRAをラッチする。アドレス保持部104は、ラッチした読み出しアドレスRAをXデコーダ107及びYデコーダ108に供給する。さらに、アドレス保持部104は、読み出しアドレスRAを加算器103に供給する。Xデコーダ107は、読み出しアドレスRAに対応して選択されるワード線を駆動する。Yデコーダ108は、読み出しアドレスRAに対応して選択されるYゲート110を導通させる。Yゲート110は、読み出したデータRDを比較部105及びデータ反転回路111に供給する。
入出力バッファ113は、データ入出力D1と接続され、MEMC30とのデータの受け渡しに用いられるバッファである。
オフセット保持回路102は、オフセットOSを保持している。オフセットOSは、不揮発性メモリ10への不正アクセス(不正なデータ読み出し等)を検出するために用いる値である。オフセットOSは、後述する装置2による初期化コマンドによって値がオフセット保持回路102に入力される。オフセット保持回路102は、コマンドデコーダ101から供給される内部制御信号Q1が有効になった場合、オフセットOSを加算器103に供給する。
加算器103は、アドレス保持部104から供給される読み出しアドレスRAと、オフセット保持回路102から供給されるオフセットOSと、を加算する。加算器103は、加算結果RESを比較部105に供給する。
比較部105は、コマンドデコーダ101から供給される内部制御信号Q2が有効の場合に動作する。比較部105は、加算器103の出力する加算結果RESと、Yゲート110から供給される読み出しデータRDと、を比較する。比較部105は、当該比較により両者が一致した場合には、不正読み出しが生じたことを検出する。
図3、図5を参照して後述するが、オフセットOSと、読み出しアドレスRAと、の加算値が読み出しデータRDと等しくなる場合、不正読み出しであると検出できるように、オフセットOSの値は設定されている。また、プログラム領域セルマトリックス109の空き領域(通常のデータが設定されない領域)には、オフセットOSとアドレスを加算した値がトラップデータとして設定される。
不正読み出しを検出した場合、比較部105は、ブレーク信号Q5またはQ6を有効にして出力する。ブレーク信号Q5に応答して、データ反転回路111は、プログラム領域セルマトリックス109から読み出されたデータRDを反転してデータ保持部112に供給する。これにより、データRDが正しいデータではなくなり、不正読み出しを防止することができる。
または、ブレーク信号Q6に応答して、書込電圧生成回路106が活性化される。活性化された書込電圧生成回路106は、プログラム領域セルマトリックス109内のデータを破壊(消去)する。これにより、不正なアクセスに応答して正しいデータを受け渡す危険が無くなる。なお、不正読み出しを検出した場合、当該読み出しに応答しないこととしても良い。
プログラム領域セルマトリックス109は、データ領域を持つ記憶領域である。プログラム領域セルマトリックス109は、データ領域内に、通常のデータ(通常データ)とともに、不正アクセス(不正読み出し)を検出するためのトラップデータを保持する。通常データ及びトラップデータの配置は、後述する設定ツールが決定する。通常データ及びトラップデータは、後述の装置2から発行される初期化コマンドによって設定される。
次に、図2を参照して、図1に示すマイクロコンピュータ1と、当該マイクロコンピュータ1に対して設定を行う装置2と、の関係を説明する。装置2は、マイクロコンピュータ1に対して初期設定を行う装置である。詳細には、装置2は、設定ツールにより生成した出力ファイルを用いて初期化コマンドをマイクロコンピュータ1に対して発行する。当該初期化コマンドは、プログラム領域セルマトリックス109にトラップデータを設定するとともに、オフセット保持回路102にオフセットOSを設定するコマンドである。装置2は、たとえば内部メモリやCPUを備える一般的なパーソナルコンピュータであればよい。装置2は、内部に設定ツール(図3を用いて後述する)を備える。装置2は、例えば設定ツールをコンパイラの一機能として実行する。なお、装置2は、図示しない書き込み装置を介してマイクロコンピュータ1に対して書き込み処理(初期化コマンドの発行)を行う。
コンパイラは、任意のコンピュータ内で動作するプログラムである。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
続いて、図3を参照して、図1に示すマイクロコンピュータ1に対して設定を行う設定ツールの詳細について説明する。設定ツール40は、外部記憶装置50と接続可能(データの受け渡しが可能)となっている。設定ツール40は、たとえば装置2のコンパイラの一機能として実現され、記憶装置50はたとえば装置2内のハードディスクである。設定ツール40は、入力ファイル51を読み出し、所定の設定内容を出力ファイル52に書き込む。
設定ツール40は、配置アドレステーブル41と、配置データテーブル42と、を有する。また、設定ツール40は、オフセットの計算値を保持する設定オフセット43と、配置アドレステーブル41及び配置データテーブル42の参照番号を示すテーブル番号44と、を記憶する。
配置アドレステーブル41及び配置データテーブル42には、入力ファイル51に記載のデータが初期値として与えられる。設定ツール40は、この初期値を基に、上述のオフセット保持回路102に保持させるオフセットOSを算出する。また、設定ツール40は、プログラム領域セルマトリックス109内のデータの配置(通常データの配置、及びトラップデータの配置)を算出する。詳細な算出方法は、図5及び図7を参照して後述する。設定ツール40は、算出したオフセットOS、及びプログラム領域セルマトリックス109内のデータ配置を出力ファイル52に書き込む。そして、装置2は、この出力ファイル52を基に、オフセット保持回路102にオフセットOSを設定するとともに、プログラム領域セルマトリックス109内にデータ(通常データ、トラップデータ)を設定する。
次に、図4を参照して、マイクロコンピュータ1での不正読み出し検出に関する動作を説明する。図4は、本実施の形態にかかるマイクロコンピュータ1の不正読み出し検出に関する動作を示すフローチャートである。
コマンドデコーダ101は、入力されたコマンドC1がリードコマンドであるか否かを判定する(S11)。リードコマンドではない場合(S11:NO)、コマンドデコーダ101は、不正読み出し検出の処理を終了する。
リードコマンドである場合(S11:YES)、コマンドデコーダ101は、制御信号Q1及びQ2を有効にする。これに応じて、比較部105は、以下の式(1)を満たすか否かを判定する(S12)。
読み出しデータRD = 読み出しアドレスRA + オフセットOS ―――式(1)
読み出しデータRD = 読み出しアドレスRA + オフセットOS ―――式(1)
式(1)を満たす場合(S12:YES)、比較部105は、不正読み出しが生じたことを検出する。そして、比較部105は、不正読み出しに対する対応としてブレーク信号Q5またはQ6を有効にする(S13)。
一方、式(1)を満たさない場合(S12:NO)、比較部105は、不正読み出しが発生しなかったと判定し、処理を終了する。
続いて、設定ツール40によるオフセットOS及びプログラム領域セルマトリックス109内のデータ配置の算出方法について説明する。まず、図3及び図5を参照して、オフセットOSの第1の算出方法を説明する。図5は、オフセットOS及びプログラム領域セルマトリックス109内のデータ配置の第1の算出方法を示すフローチャートである。
設定ツール40は、入力ファイル51から設定すべきアドレスとデータの情報を取得し、取得した情報を配置アドレステーブル41、配置データテーブル42にそれぞれ設定する(S21)。この際、対応するデータとアドレスは、同じテーブル番号の位置に配置するようにする。例えば、図3では、アドレス"00001000H"にデータ"FFFFFFFFH"が設定されるため、両者は、テーブル番号"0"の位置に設定される。
また、設定ツール40は、設定オフセット43の初期値を0(または適当な値)に設定する(S22)。さらに、設定ツール40は、テーブル番号44を初期値である0に設定する(S23)。このテーブル番号44の値は、配置アドレステーブル41と、配置データテーブル42と、を対応付けて走査するための値である。
設定ツール40は、テーブル番号44の値を基に、配置アドレステーブル41と、配置データテーブル42と、から値を抽出する。なお、以下の記載において、配置アドレステーブル41から抽出した値を配置アドレスと呼称し、配置データテーブル42から抽出した値を配置データと呼称する。例えば、図3の例では、テーブル番号44が"1"である場合、設定ツール40は、配置アドレス"00001004H"及び配置データ"00001004H"を抽出する。
設定ツール40は、抽出した配置アドレス、配置データ、及び設定オフセット43を下記の式(2)に代入し、右辺と左辺が一致するか否かを判定する(S24)。
配置データ = 配置アドレス +設定オフセット43 ―――式(2)
配置データ = 配置アドレス +設定オフセット43 ―――式(2)
右辺と左辺が一致した場合(S24:YES)、設定ツール40は、設定オフセット43の値を更新(インクリメント)する(S25)。そして、設定ツール40は、S23から処理を再開する。すなわち、設定ツール40は、更新した設定オフセット43を用いて、テーブル(配置アドレステーブル41、配置データテーブル42)の先頭(テーブル番号43="0")から再度比較処理を行う。
右辺と左辺が一致しなかった場合(S24:NO)、設定ツール40は、テーブル番号44の値を更新(インクリメント)する(S26)。これにより、配置アドレステーブル41及び配置データテーブル42の参照位置を更新する。
設定ツール40は、テーブル(配置アドレステーブル41、配置データテーブル42)内の全てのデータのチェックが終了したか否かを判定する(S27)。終了していない場合(S27:NO)、設定ツール40は、S24から処理を再開する。
全てのデータのチェックが終了している場合(S27:YES)、設定ツール40は、設定オフセット43の値を出力ファイル52に書き込む(S28)。例えば、設定オフセット43の値が"00000100H"である場合、出力ファイル52に当該値を書き込む。
設定ツール40は、配置アドレステーブル41に存在しない各アドレス(空き領域)に充填するトラップデータを算出する。トラップデータは、以下の式(3)により算出される。
トラップデータ = 配置アドレス + 設定オフセット43―――式(3)
トラップデータ = 配置アドレス + 設定オフセット43―――式(3)
例えば、図3の例では、アドレス"00001008H"には設定対象のデータがない(配置アドレステーブル41内に"00001008H"のデータがない)。ここで、設定オフセット43が"00000100H"と算出された場合、設定ツール40は、アドレス"00001008H"に設定するトラップアドレスを"00001108H"と算出する。
設定ツール40は、通常のデータとその書き込み先であるアドレス、及びトラップデータ及びその書き込み先であるアドレス、の双方を出力ファイル52に書き込む(S29)。
以上の処理により、設定ツール40は、オフセット保持回路102に設定するオフセット、プログラム領域セルマトリックス109に設定するトラップデータ、及びそのトラップデータを設定するアドレス、を算出する。
図6は、上記の出力ファイル52を用いてプログラム領域セルマトリックス109を設定した場合の概念図である。図示するように、プログラム領域セルマトリックス109には、通常のデータとトラップデータが混在する形で配置される。なお、プログラム領域セルマトリックス109を読み出そうとする悪意のあるユーザからは、どのアドレスに通常のデータが配置されており、どのアドレスにトラップデータが配置されているのかは、完全に隠蔽される(分からない状態となる)。
次に、図3及び図7を参照して、オフセットOS及びプログラム領域セルマトリックス109内のデータ配置の第2の算出方法を説明する。図7は、オフセットOS及びプログラム領域セルマトリックス109内のデータ配置の第2の算出方法を示すフローチャートである。なお、図7において、図5と同一の符号を付した処理は、図5と同様の処理である。そのため、同一処理については、必要に応じて説明を省略する。
当該算出方法を実施する場合、設定ツール40は、各アドレスと各データの差分値(図3には図示せず)を記憶する。
設定ツール40は、図5に示す算出方法と同様に、テーブルの設定(S21)及び各種初期化(S22、S23)を行う。設定ツール40は、アドレスとデータの組ごとに差分値を算出する(S31)。この差分値の算出を、テーブル全体に対して行う(テーブル番号を更新しながらテーブルの末尾データまで継続的に行う)。
たとえば、設定ツール40は、図3では、アドレス"00001000H"とデータ"FFFFFFFFH"の差分を算出し、当該差分値を記憶する。同様に、設定ツール40は、図3の例では、アドレス"00001004H"とデータ"00001004H"の差分を算出し、当該差分値を記憶する。この処理を全てのアドレスとデータの組に対して行う。
設定ツール40は、全ての差分値の算出が終わった後に(S27:YES)、算出した全ての差分値を基に、設定オフセット43の値を算出する(S32)。設定ツール40は、算出した全ての差分値に含まれない値を設定オフセットの値とする。例えば、設定ツール40は、算出した全ての差分値のうち最大値よりも大きい値を設定オフセット43の値に設定する。
設定ツール40は、設定オフセット43の算出後に、図5に示す方法と同様に、設定オフセット43を出力ファイル52に書き込み(S28)、トラップデータの設定を行う(S29)。
なお、図5及び図7に示す算出方法はあくまで一例であり、他の算出方法を用いてオフセットOSの値の算出、及びトラップデータの設定を行っても良い。
続いて図8を参照して、本実施の形態にかかるマイクロコンピュータ1の動作を説明する。図8は、本実施の形態にかかるマイクロコンピュータ1の動作を示す模式図である。オフセット保持回路102には、オフセットOSとして"00000100H"が設定されている。また、プログラム領域セルマトリックス109には、図示するようにデータ(トラップデータを含む)が設定されている。
アドレス"00001000H"には、データ"FFFFFFFFH"が格納されている。ここで、アドレス"00001000H"に対する命令フェッチコマンドが不揮発性メモリ10に入力された場合、コマンドデコーダ101は、リードコマンドの入力ではないため、内部制御信号Q1及び内部制御信号Q2を有効にしない。内部制御信号Q2が有効とならない場合、比較部105は、動作を開始しない。そのため、不正読み出しの判定が行われない(図8 条件cond1)。
次に、アドレス"00001000H"に対するリードコマンドが不揮発性メモリ10に入力された場合、コマンドデコーダ101は、内部制御信号Q1及び内部制御信号Q2を有効にする。比較部105は、制御信号Q2が有効となったため、アドレス"00001000H"にオフセットOS"00000100H"を加算した値と、データ"FFFFFFFFH"と、が一致するか否かを判定する。ここで加算値が"00001100H"であるため、比較部105は、不正読み出しが生じなかったと判定する(図8 条件cond2)。
アドレス"00001008H"に対するリードコマンドが不揮発性メモリ10に入力された場合、コマンドデコーダ101は、内部制御信号Q1及び内部制御信号Q2を有効にする。比較部105は、内部制御信号Q2が有効となったため、アドレス"00001008H"にオフセットOS"00000100H"を加算した値と、データ"00001108H"と、が一致するか否かを判定する。ここで加算値が"00001108H"であるため、比較部105は、不正読み出しが生じたと判定する(図8 条件cond3)。
続いて、本実施の形態にかかるマイクロコンピュータの効果について説明する。上述のように、本実施の形態にかかるマイクロコンピュータ1では、データを保持するデータ領域内の空き領域にトラップデータが設定される。そのため、通常データとトラップデータがデータ領域内(プログラム領域セルマトリックス109内)に混在して配置される(図6)。これにより、通常データの隠蔽性が高まり、セキュリティ性能を向上させることができる。
更に、ユーザ(マイクロコンピュータ1の製造者)は、設定ツール40に入力する入力ファイル41を編集する(通常データの数を増減する)ことにより、トラップデータの数の増減を調整することができる。これにより、簡単にセキュリティ性能の調整を行うことが可能になる。
さらにまた、トラップデータは、データ領域(プログラム領域セルマトリックス109)内の空き領域に設定される。これにより、使用されていない空き領域の有効活用を行うことができる。
また、図1に示すように、マイクロコンピュータ1は、加算器103や比較部105という簡素な構成(基本演算のみを行う処理回路、処理部)のみを用いて不正アクセスの検出を行う。これにより、パスワード認証回路等の規模の大きい回路が不要となり、回路規模を削減することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
例えば、上述の例では、リードコマンドが生じた場合にのみ不正読み出しの検出を行ったが必ずしもこれに限られない。命令フェッチや書き込み等の際にも上記した手法により不正なメモリアクセス(不正アクセス)を検出しても良い。
また、図5、図7の例では、配置アドレステーブル41及び配置データテーブル42の先頭(テーブル番号44="0")から設定オフセット43の算出処理を行ったが、テーブルの終端から設定オフセット43の算出処理を行っても良いことは勿論である(テーブルサイズがnである場合、テーブル番号44の初期値をnとして、nをデクリメントしてもよい)。
さらにまた、マイクロコンピュータ1は、加算器103を有する構成として説明したが必ずしも加算処理に限られず、マイクロコンピュータ1は、加算器103にかわり減算器を有する構成としても良い。すなわち、マイクロコンピュータ1は、オフセットとアドレスを用いて演算を行う演算器を有する構成であればよい。
図1においては、不揮発性メモリ10がコマンドデコーダ101等を備える構成として説明したが必ずしもこれに限られない。コマンドデコーダ101等は、MEMC30の構成要素として設けられても良い。
上述の説明では、装置2は、設定ツール40の出力した出力ファイル52を基に、不揮発性メモリ10の使用前にプログラム領域セルマトリックス109及びオフセットOSを設定していた。しかしながら、装置2は、不揮発性メモリ10の使用中に出力ファイル52を再算出し、プログラム領域セルマトリックス109を更新しても良い。当該概念を図9を参照して説明する。
設定ツール40は、不揮発性メモリ10の使用前に生成した出力ファイル52を参照する。設定ツール40は、トラップデータを設定したアドレスを参照し、トラップデータを通常のデータに置き換えるアドレスを決定する。この決定の際に、設定ツール40は、現在トラップアドレスが設定されているアドレスと、現在設定されているオフセットと、の加算値が、これから設定するデータと等しくならないようにアドレスを決定する。
設定ツール40は、選択したアドレスに、設定対象のデータを上書きするように出力ファイル52を書き換える。装置2は、この出力ファイル52を用いてプログラム領域セルマトリックス109の再設定を行う。図9(A)は、当該出力ファイル52を用いてプログラム領域セルマトリックス109の再設定を行った場合の概念を示す図である。これにより、例えば、マイクロコンピュータ1の使用中にパッチ(修正プログラム)に関するデータを不揮発性メモリ10に書き込むことが可能になる。
同様に、設定ツール40は、通常のデータを設定したアドレスを参照し、通常のデータをトラップデータに置き換えるアドレスを決定する。この際、設定ツール40は、以前使用していたものの既に不要となったデータが設定されているアドレスを選択すればよい。そして、設定ツール40は、当該アドレスと、現在設定されているオフセットと、を加算した値をトラップデータとする。
設定ツール40は、選択したアドレスに、トラップデータを上書きするように出力ファイル52を書き換える。装置2は、この出力ファイル52を用いてプログラム領域セルマトリックス109の再設定を行う。図9(B)は、当該出力ファイル52を用いてプログラム領域セルマトリックス109の再設定を行った場合の概念を示す図である。これにより、マイクロコンピュータ1の使用後に不要となったデータの書き込みアドレスを不正アクセスの検出に用いることができ、セキュリティ性能をさらに向上することが可能となる。
1 マイクロコンピュータ
2 装置
10 不揮発性メモリ
101 コマンドデコーダ
102 オフセット保持回路
103 加算器
104 アドレス保持回路
105 比較部
106 書込電圧生成回路
107 Xデコーダ
108 Yデコーダ
109 プログラム領域セルマトリックス
110 Yゲート
111 データ反転回路
112 データ保持部
113 入出力バッファ
20 CPU
30 MEMC
40 設定ツール
41 配置アドレステーブル
42 配置データテーブル
43 設定オフセット
44 テーブル番号
50 外部記憶装置
51 入力ファイル
52 出力ファイル
2 装置
10 不揮発性メモリ
101 コマンドデコーダ
102 オフセット保持回路
103 加算器
104 アドレス保持回路
105 比較部
106 書込電圧生成回路
107 Xデコーダ
108 Yデコーダ
109 プログラム領域セルマトリックス
110 Yゲート
111 データ反転回路
112 データ保持部
113 入出力バッファ
20 CPU
30 MEMC
40 設定ツール
41 配置アドレステーブル
42 配置データテーブル
43 設定オフセット
44 テーブル番号
50 外部記憶装置
51 入力ファイル
52 出力ファイル
Claims (12)
- データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリを備え、
前記メモリへの不正アクセスの検出に用いる前記オフセットを保持するオフセット保持回路と、
前記メモリに対する読み出しリクエストに含まれる読み出しアドレスと、前記オフセット保持回路から供給された前記オフセットと、を用いた演算を行う演算部と、
前記演算器による演算結果と、読み出しデータの比較を行い、比較結果に応じて前記メモリに対する不正アクセスを検出する比較部と、を有するマイクロコンピュータ。 - 前記演算部は、前記読み出しアドレスと前記オフセットと、を加算した加算結果を算出し、
前記比較部は、前記加算結果と、読み出しデータと、が一致した場合に不正アクセスであると判定することを特徴とする請求項1に記載のマイクロコンピュータ。 - 前記オフセットは、前記メモリに配置した前記通常データの各々と、その配置アドレスと、の差分値のいずれにも含まれない値であることを特徴とする請求項1または請求項2に記載のマイクロコンピュータ。
- 前記トラップデータは、前記通常データにより上書き可能であることを特徴とする請求項1乃至請求項3のいずれか1項に記載のマイクロコンピュータ。
- 前記通常データは、前記トラップデータにより上書き可能であることを特徴とする請求項1乃至請求項4のいずれか1項に記載のマイクロコンピュータ。
- 請求項1乃至請求項5のいずれか1項に記載のマイクロコンピュータと、
前記データ領域へのデータ配置、及び前記オフセット保持回路に対する前記オフセットの設定を行う装置と、
を備えるシステム。 - データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリ、に対する不正アクセス検出方法であって、
前記メモリへの不正アクセスの検出に用いる前記オフセットと、前記メモリに対する読み出しリクエストに含まれる読み出しアドレスと、を用いた演算を行い、
当該演算結果と、読み出しデータの比較を行い、比較結果に応じて前記メモリに対する不正アクセスを検出する、
不正アクセス検出方法。 - 前記オフセットは、前記メモリに配置した前記通常データの各々と、その配置アドレスと、の差分値のいずれにも含まれない値であることを特徴とする請求項7に記載の不正アクセス検出方法。
- データ領域内に通常データを配置し、かつ、不正アクセスを検出するためのオフセットから算出したトラップデータを、前記データ領域内の空き領域に配置したメモリ装置であって、
不正アクセスの検出に用いる前記オフセットを保持するオフセット保持回路と、
読み出しリクエストに含まれる読み出しアドレスと、前記オフセット保持回路から供給された前記オフセットと、を用いた演算を行う演算部と、
前記演算器による演算結果と、読み出しデータの比較を行い、比較結果に応じて不正アクセスを検出する比較部と、
を備えるメモリ装置。 - 前記オフセットは、前記メモリに配置した前記通常データの各々と、その配置アドレスと、の差分値のいずれにも含まれない値であることを特徴とする請求項9に記載のメモリ装置。
- メモリへの不正アクセスを検出するためのオフセットの算出、及び前記メモリのデータ配置領域に対する通常データ及び前記オフセットから定まるトラップデータの配置、にかかる処理をコンピュータに実行させるプログラムであって、
前記メモリに設定する通常データ及び当該通常データの配置アドレスが記載された入力情報を受信する受信処理と、
前記入力情報に含まれる各通常データとそれらの各配置アドレスとの比較演算に応じて前記オフセットを算出するオフセット算出処理と、
前記通常データを配置しない空きアドレスと、前記オフセットと、に基づいて前記空きアドレスに設定する前記トラップデータを算出するトラップデータ算出処理と、
を実行させる、プログラム。 - 前記オフセット算出処理では、
前記入力情報に含まれる各通常データと各配置アドレスとの差分値を算出し、算出したすべての差分値に含まれない値を前記オフセットとして決定することを特徴とする請求項11に記載のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012010013A JP2013149137A (ja) | 2012-01-20 | 2012-01-20 | マイクロコンピュータ、メモリ装置、不正メモリアクセス検出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012010013A JP2013149137A (ja) | 2012-01-20 | 2012-01-20 | マイクロコンピュータ、メモリ装置、不正メモリアクセス検出方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013149137A true JP2013149137A (ja) | 2013-08-01 |
Family
ID=49046566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012010013A Pending JP2013149137A (ja) | 2012-01-20 | 2012-01-20 | マイクロコンピュータ、メモリ装置、不正メモリアクセス検出方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013149137A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021521513A (ja) * | 2018-04-16 | 2021-08-26 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスへのトラップ・コードの投入 |
WO2023017572A1 (ja) * | 2021-08-11 | 2023-02-16 | 富士通株式会社 | 情報処理プログラム、情報処理方法および情報処理装置 |
US11755735B2 (en) | 2018-04-16 | 2023-09-12 | International Business Machines Corporation | Speculatively executing conditional branches of code when detecting potentially malicious activity |
-
2012
- 2012-01-20 JP JP2012010013A patent/JP2013149137A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021521513A (ja) * | 2018-04-16 | 2021-08-26 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスへのトラップ・コードの投入 |
JP7175549B2 (ja) | 2018-04-16 | 2022-11-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 潜在的に悪意のあるコードを検出するためのトラップ・アドレス範囲を生成するために、プログラムを実行するプロセスの実行パスへのトラップ・コードの投入 |
US11755735B2 (en) | 2018-04-16 | 2023-09-12 | International Business Machines Corporation | Speculatively executing conditional branches of code when detecting potentially malicious activity |
WO2023017572A1 (ja) * | 2021-08-11 | 2023-02-16 | 富士通株式会社 | 情報処理プログラム、情報処理方法および情報処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10515023B2 (en) | System for address mapping and translation protection | |
JP5469254B2 (ja) | プロセッサスワップ無しという条件を検出するメカニズムおよびブート中の高速バスキャリブレーションの修正変更 | |
KR101687277B1 (ko) | 시스템 온 칩 디바이스들에서의 키 폐기 | |
KR102183852B1 (ko) | 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치 | |
JP2015036988A (ja) | データ記憶装置とその異常電圧からの保護方法 | |
US10445154B2 (en) | Firmware-related event notification | |
CN110457236B (zh) | 存储系统以及对存储系统执行和验证写保护的方法 | |
TWI576698B (zh) | 跨電源週期維持安全處理環境 | |
US8639916B2 (en) | Method of maintaining software integrity | |
WO2017133559A1 (zh) | 安全启动方法及装置 | |
US9075751B2 (en) | Secure data protection with improved read-only memory locking during system pre-boot | |
JP2015537274A (ja) | 低電力状態の間にメモリ領域を保護する方法及び装置 | |
US8751817B2 (en) | Data processing apparatus and validity verification method | |
KR20120092222A (ko) | 보안 부팅 방법 및 보안 부트 이미지 생성 방법 | |
JP2015032317A (ja) | データ記憶装置とアクセス制御方法 | |
US10885196B2 (en) | Executing protected code | |
US20070226478A1 (en) | Secure boot from secure non-volatile memory | |
US9542113B2 (en) | Apparatuses for securing program code stored in a non-volatile memory | |
US10157149B2 (en) | Memory device and host device | |
JP2013149137A (ja) | マイクロコンピュータ、メモリ装置、不正メモリアクセス検出方法 | |
US20190325142A1 (en) | Warm boot attack mitigations for non-volatile memory modules | |
CN116578327B (zh) | 一种程序更新方法、装置及电子设备和存储介质 | |
JP5561791B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
JP2017208058A (ja) | 情報処理装置 | |
JP2009271597A (ja) | プロセッサ |