以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
図1は、本発明の実施の形態に係るメモリシステム1の構成を示す図である。図1に示すようにメモリシステム1は、ホスト装置2と、ホスト装置2に着脱自在に接続されたメモリ装置3とを備えて構成されている。ホスト装置2は、例えばパーソナルコンピュータ等の情報処理装置であり、メモリ装置3は、ホスト装置2から電源供給を受けて動作する付属装置、例えばフラッシュメモリのメモリカードである。他の例として、情報処理装置はプリンタ又は複合機の本体であり、付属装置はトナーカートリッジである。あるいは、情報処理装置はゲーム機の本体であり、付属装置はゲームプログラムが格納されたメモリカードである。
図2は、ホスト装置2の構成を簡略化して示す図である。図2に示すようにホスト装置2は、SoC(System on a Chip)11及びメモリインタフェース12等の複数の処理ブロックを備えて構成されている。SoC11は、バス21を介して相互に接続された、CPU22、コマンドバッファ23、及びデータバッファ24等の複数の処理ブロックを備えて構成されている。SoC11及びメモリインタフェース12には、電源供給部VCC1から電源が供給される。
図3は、メモリ装置3の構成を簡略化して示す図である。図3に示すようにメモリ装置3は、CPU31、メモリコントローラ32、メモリコア33、ホストインタフェース34、及びメモリコアインタフェース35等の複数の処理ブロックを備えて構成されている。これら複数の処理ブロックには、電源供給部VCC2から抵抗素子Rを介して電源が供給される。また、メモリ装置3は、電流値測定回路36及び認証制御回路37を備えている。電流値測定回路36は、抵抗素子Rの両端電圧を測定することにより、電源供給部VCC2からこれら複数の処理ブロックに流れる電流の電流値を測定する。
CPU31はソフトウェア処理部として機能し、メモリコントローラ32はディジタル処理回路として機能し、メモリコア33は記憶処理部として機能する。メモリコア33の特定のアドレス領域には、後述する期待値データ201が格納されている。
図4は、メモリコントローラ32の構成を簡略化して示す図である。図4に示すようにメモリコントローラ32は、復号回路41及び暗号回路42を備えて構成されている。
図5は、認証制御回路37の構成を示す図である。認証制御回路37は、バス51を介して相互に接続された、CPU52、復号器53、期待値格納メモリ54、実測値格納メモリ55、ADC(Analog to Digital Converter)56、及び、ROM又はRAM等の記憶部57を備えて構成されている。記憶部57には、プログラム101が格納されている。
図6は、図5に示したプログラム101をCPU52が実行することによって実現される機能を示す図である。記憶部57から読み出したプログラム101をCPU52が実行することによって、CPU52は制御部61及び判定部62として機能する。
図7は、判定部62が備える機能を示す図である。図7に示すように判定部62は、実測電流値取得部71、期間設定部72、平均値算出部73、期待値取得部74、及び真贋判定部75として機能する。
換言すれば、プログラム101は、付属装置としてのメモリ装置3に搭載されるコンピュータを、制御部61、実測電流値取得部71、期間設定部72、平均値算出部73、期待値取得部74、及び真贋判定部75として機能させるためのプログラムである。なお、制御部61及び判定部62の機能は、CPU52によるソフトウェア処理によって実現する場合に限らず、専用回路等を用いたハードウェア処理によって実現しても良い。
図8は、正規品のメモリ装置3の消費電流特性の一例を示す図である。メモリ装置3の通常動作は、複数の期間Pにおいて実行される処理を意味する。図8に示した例では、通常動作が実行される通常動作期間は、この順に並ぶ7つの期間P1〜P7に区分されている。例えば、期間P1は起動直後のパワーオン期間であり、期間P2,P7はスタンバイ期間であり、期間P3はコマンドを復号化するコマンド復号期間であり、期間P4はソフトウェア処理期間であり、期間P5はメモリコア33へのアクセス準備期間であり、期間P6はホスト装置2へのデータ送信期間である。
パワーオン期間P1においては、図3に示した各処理ブロック(CPU31、メモリコントローラ32、及びメモリコア33等)への電源供給が開始されるため、メモリ装置3の消費電流の絶対値は極めて大きく、また、その変動量Z1も極めて大きい。
スタンバイ期間P2,P7においては、図3に示した各処理ブロックはいずれも動作を休止しているため、メモリ装置3の消費電流の絶対値は極めて小さく、また、その変動量Z2も極めて小さい。なお、スタンバイ期間(休止期間)には、図3に示した各処理ブロックが、次回に受信するコマンドの入力や割り込み命令の入力を待機している待機期間も含まれる。
コマンド復号期間P3においては、図3に示した各処理ブロックのうちメモリコントローラ32のみが単独で動作しており、メモリ装置3の消費電流の絶対値は比較的小さく、また、その変動量Z3も比較的小さい。図4を参照して、復号回路41によるリードコマンドの復号化処理が、このコマンド復号期間P3に実行される。
ソフトウェア処理期間P4においては、図3に示した各処理ブロックのうちCPU31のみが単独で動作しており、メモリ装置3の消費電流の絶対値は比較的小さく、また、その変動量Z4も比較的小さい。リードコマンドに記述されている論理アドレスをメモリコア33の物理アドレスへ変換する処理が、このソフトウェア処理期間P4に実行される。
アクセス準備期間P5においては、図3に示した各処理ブロックのうちメモリコア33のみが単独で動作しており、メモリ装置3の消費電流の絶対値は比較的小さく、また、その変動量Z5も比較的小さい。読み出し対象のコンテンツデータが格納されているブロック及びページを選択する処理が、このアクセス準備期間P5に実行される。
データ送信期間P6においては、図3に示した各処理ブロックのうちメモリコントローラ32、メモリコア33、ホストインタフェース34、及びメモリコアインタフェース35が動作しており、メモリ装置3の消費電流の絶対値は比較的大きく、また、その変動量Z6も比較的大きい。図3,4を参照して、メモリコア33からメモリコアアンタフェース35へのコンテンツデータの転送処理、メモリコアインタフェース35からメモリコントローラ32へのコンテンツデータの転送処理、暗号回路42によるコンテンツデータの暗号化処理、メモリコントローラ32からホストインタフェース34へのコンテンツデータの転送処理、及び、ホストインタフェース34からホスト装置2へのコンテンツデータの送信処理が、このデータ送信期間P6に実行される。
本実施の形態では、メモリ装置3が正規品であるか非正規品であるかの真贋判定を行う判定対象期間が、期間P1〜P7の中から設定される。具体的には、期間P1〜P7のうち、スタンバイ期間と、図3に示した各処理ブロック(CPU31、メモリコントローラ32、及びメモリコア33等)のうち一の処理ブロックが単独で動作している単独動作期間との中から選択された少なくとも一つの期間が、判定対象期間として設定される。なお、上記単独動作期間においては、消費電流の変動量Zはしきい値Th1未満である。
図9は、消費電流の変動量Z1〜Z6としきい値Th1〜Th3との関係を示す図である。しきい値Th1は、データ送信期間P6における変動量Z6と、アクセス準備期間P5における変動量Z5との間の値に設定されている。また、変動量Z5と、コマンド復号期間P3における変動量Z3又はソフトウェア処理期間P4における変動量Z4との間の値として、しきい値Th2が設定されており、変動量Z3又は変動量Z4と、スタンバイ期間P2における変動量Z2との間の値として、しきい値Th3が設定されている。
期間P3〜P5はいずれも、一の処理ブロックが単独で動作する期間であり、かつ、変動量Z3〜Z5はいずれも、しきい値Th1未満である。従って、いずれの期間P3〜P5も判定対象期間として設定することができる。また、スタンバイ期間P2,P7も判定対象期間として設定することができる。
図10は、様々な判定対象期間と、各判定対象期間に対応して設定される期待値データ201との関係を示す図である。正規品のメモリ装置3であれば、実装される半導体デバイスの種類や各デバイスの製造プロセスが厳密に管理されているため、各判定対象期間におけるメモリ装置3の消費電流特性はほぼ一定である。そこで、各判定対象期間の消費電流特性を示す情報が工場出荷前に作成されて、暗号化された期待値データ201(図3参照)として、メモリコア33の特定のアドレス領域に格納されている。
アクセス準備期間P5を判定対象期間として設定する場合には、アクセス準備期間P5に関する基準平均値Aが、暗号化された期待値データ201として用いられる。具体的には、製品出荷前に正規品のサンプルのメモリ装置を対象としてメモリコアへのアクセス準備動作を実行し、当該メモリ装置の消費電流値を測定する。そして、アクセス準備期間における消費電流値の平均値(基準平均値A)を算出して、その基準平均値Aを期待値データ201として、製品のメモリ装置3のメモリコア33に格納する。
ソフトウェア処理期間P4を判定対象期間として設定する場合には、ソフトウェア処理期間P4に関する基準平均値Aの上限値AH及び下限値ALが、暗号化された期待値データ201として用いられる。具体的には、製品出荷前に正規品のサンプルのメモリ装置を対象として所定のソフトウェア処理を実行し、上記と同様の手法によって、ソフトウェア処理期間に関する基準平均値Aを算出する。そして、この処理を複数回繰り返すことによって複数の基準平均値Aを算出し、その中の最大値及び最小値として、上限値AH及び下限値ALを求める。そして、その上限値AH及び下限値ALを期待値データ201として、製品のメモリ装置3のメモリコア33に格納する。
コマンド復号期間P3を判定対象期間として設定する場合には、コマンド復号期間P3に関する基準平均値Aの上限値AHと下限値ALとの差分値Dが、暗号化された期待値データ201として用いられる。具体的には、製品出荷前に正規品のサンプルのメモリ装置を対象としてコマンド復号動作を実行し、上記と同様の手法によって、コマンド復号期間に関する基準平均値Aの上限値AH及び下限値ALを求める。そして、上限値AHから下限値ALを減算した値として、差分値Dを算出する。そして、その差分値Dを期待値データ201として、製品のメモリ装置3のメモリコア33に格納する。なお、コマンド復号期間P3に関する期待値データ201は、ソフトウェア処理期間P4に関する期待値データ201と同様の手法によって設定しても良く、逆に、ソフトウェア処理期間P4に関する期待値データ201は、コマンド復号期間P3に関する期待値データ201と同様の手法によって設定しても良い。
スタンバイ期間P2を判定対象期間として設定する場合には、スタンバイ期間P2に関する基準平均値Aの上限値AH及び下限値AL、並びに、当該スタンバイ期間P2に関する上限値AHと下限値ALとの差分値Dが、暗号化された期待値データ201として用いられる。具体的には、製品出荷前に正規品のサンプルのメモリ装置を対象としてスタンバイ動作を実行し、上記と同様の手法によって、スタンバイ期間に関する基準平均値Aの上限値AH及び下限値ALと、それらの差分値Dとを求める。そして、上限値AH、下限値AL、及び差分値Dを期待値データ201として、製品のメモリ装置3のメモリコア33に格納する。
なお、以上の説明では正規品のメモリ装置を対象として期待値データ201を設定する例について述べたが、排除対象となる非正規品が既に特定されている場合には、正規品に関する期待値データ201に代えて、非正規品に関する期待値データ201をメモリコア33に格納しても良い。例えば、正規品に関する基準平均値Aを期待値データ201として用いる場合には、実測平均値(詳細は後述する)と基準平均値Aとが一致するか否かによって、メモリ装置3が正規品であるか否かを判定できる。一方、非正規品に関する基準平均値Aを期待値データ201として用いる場合には、実測平均値と基準平均値Aとが一致するか否かによって、メモリ装置3が非正規品であるか否かを判定できる。上限値AH、下限値AL、及び差分値Dについても同様である。
本実施の形態の例では、アクセス準備期間P5を判定対象期間として設定し、かつ、正規品に関する基準平均値Aを期待値データ201として用いる例について説明する。
図11は、メモリ装置3の自己真贋判定処理の流れを示すフローチャートである。以下、図1〜11を参照して、真贋判定処理の内容について詳細に説明する。
メモリ装置3がホスト装置2に接続されることによって電源供給部VCC1,VCC2からの電源供給が開始されると、まずステップSP100においてCPU52(期間設定部72)は、期間P1〜P7の中から、真贋判定処理の実行対象となる少なくとも一つの判定対象期間を設定する。期間設定部72は、予め定められた規則に従って判定対象期間を静的に変更することができ、あるいは、真贋判定処理の累積実行回数やメモリシステム1の稼働状況等に応じて判定対象期間を動的に変更することができる。本実施の形態の例では、期間設定部72はアクセス準備期間P5を判定対象期間として設定する。
次にステップSP101においてCPU52(制御部61)は、メモリコア33から所望の期待値データ201を読み出すための読み出しアドレスを、メモリコアインタフェース35に入力する。当該読み出しアドレスはメモリコアインタフェース35からメモリコア33に入力され、これによって、所望の期待値データ201がメモリコア33から読み出される。
本実施の形態の例では、アクセス準備期間P5が判定対象期間として設定されているため、アクセス準備期間P5に関する基準平均値Aと、それに対応する所定の許容誤差値を示すデータとが、所望の期待値データ201としてメモリコア33から読み出される。許容誤差値は、アクセス準備期間P5に関する消費電流値の変動量Z5等に応じて、プラスマイナス数%からプラスマイナス10数%の範囲内で最適な値が予め設定されている。
読み出された期待値データ201は、暗号化された状態で、メモリコアインタフェース35を介して認証制御回路37に入力される。認証制御回路37は、期待値データ201を復号器53に入力する。復号器53は、暗号化されている期待値データ201を復号化する。復号化された期待値データ201は、期待値格納メモリ54に格納される。本実施の形態の例では、アクセス準備期間P5に関する基準平均値Aと、それに対応する所定の許容誤差値を示すデータとが、期待値格納メモリ54に格納される。
次にステップSP102においてCPU52(制御部61)は、ADC56を駆動するとともに、真贋判定処理のための所定のコンテンツデータを読み出すリードコマンドを発行することにより、メモリ装置3に電力消費動作を開始させる。当該リードコマンドは、メモリコントローラ32に入力される。コマンド復号期間P3において、復号回路41は、当該リードコマンドを復号化し、復号化後の読み出しアドレスをメモリコアインタフェース35に入力する。ソフトウェア処理期間P4において、CPU31は、論理アドレスとして記述されている当該読み出しアドレスを、メモリコア33の物理アドレスに変換する。アクセス準備期間P5において、メモリコア33は、物理アドレスに変換された読み出しアドレスに基づいて、所定のコンテンツデータが格納されているブロック及びページを選択する。データ送信期間P6において、メモリコア33は、当該コンテンツデータの読み出しを開始する。メモリコア33から読み出された当該コンテンツデータは、メモリコアインタフェース35を介して暗号回路42に入力される。暗号回路42は、メモリコアインタフェース35から入力されたコンテンツデータを暗号化し、暗号化後のコンテンツデータをホストインタフェース34に入力する。ホストインタフェース34は、当該コンテンツデータをホスト装置2に送信する。
CPU52(制御部61)は、上記所定のコンテンツデータを読み出すリードコマンドの送信処理が完了してからの経過時間をカウントすることによって、あるいは、チップセレクト信号の論理状態を監視することによって、メモリ装置3が期間P2〜P7のどの状態にあるかを認識することができる。
次にステップSP103においてCPU52(実測電流値取得部71)は、判定対象期間において電流値測定回路36によって測定された実測電流値を取得する。電源供給部VCC2からの電源供給が開始されたことにより、抵抗素子Rに電流が流れる。電流値測定回路36は、抵抗素子Rの両端電圧を所定のサンプリング周波数(例えば1MHz〜数MHz)でサンプリングすることによって、電源供給部VCC2から流れ出る電流の電流値を実測する。実測された電流値は、図示しないプリアンプによって増幅された後、ADC56によってAD変換され、その後、実測値格納メモリ55に格納される。実測電流値取得部71は、判定対象期間(この例ではアクセス準備期間P5)において測定された複数の実測電流値を、実測値格納メモリ55から取得する。なお、ADC56によるAD変換よりも前にプリアンプによって実測電流値を増幅する上記の構成に代えて、ADC56によるAD変換よりも後に乗算器によって実測電流値を増幅する構成を採用しても良い。
次にステップSP104においてCPU52(平均値算出部73)は、ステップSP103で取得した複数の実測電流値の平均値を算出することにより、アクセス準備期間P5に関する実測電流値の平均値(実測平均値)を求める。
次にステップSP105においてCPU52(期待値取得部74)は、アクセス準備期間P5に関する基準平均値Aと、それに対応する所定の許容誤差値を示すデータとを、期待値格納メモリ54から取得する。
次にステップSP106においてCPU52(真贋判定部75)は、ステップSP104で算出された実測平均値と、ステップSP105で取得された基準平均値Aとを比較する。真贋判定部75は、実測平均値と基準平均値Aとの差が、期待値格納メモリ54から取得した許容誤差値以下であるか否かを判定する。
次にステップSP107においてCPU52(真贋判定部75)は、実測平均値と基準平均値Aとの差が許容誤差値以下である場合には、メモリ装置3は正規品であると判定して、真贋判定処理を終了する。一方、その差が許容誤差値より大きい場合には、真贋判定部75は、メモリ装置3は非正規品であると判定して、非正規品であるメモリ装置3を排除するための処理を開始する。例えば、ステップSP108において電源供給部VCC2からの電源供給を停止する。なお、非正規品は粗悪品であることが多いため、非正規品に関する実測平均値は、正規品に関する基準平均値Aよりも高くなる傾向が強い。
なお、以上の説明では、複数の実測電流値から実測平均値を求める演算を、CPU52のソフトウェア処理によって実行する例について述べた。しかし、電流値測定回路36の膨大なサンプリング数に起因してCPU52の処理負荷が増大することを回避すべく、これらの演算は、専用の演算器を用いたハードウェア処理によって実行しても良い。
このように本実施の形態に係るメモリ装置3(真贋判定装置)によれば、平均値算出部73は、判定対象期間(本実施の形態の例ではアクセス準備期間P5)において実測電流値取得部71によって取得された実測電流値に基づいて実測平均値を算出し、真贋判定部75は、平均値算出部73によって算出された実測平均値に関連する実測値(本実施の形態の例では実測平均値に等しい)と、期待値取得部74によって取得された期待値(本実施の形態の例では基準平均値A)との比較結果に基づいて、メモリ装置3が正規品であるか非正規品であるかを判定する。従って、判定対象期間において実行している動作が正規品と非正規品とで異なる場合は、非正規品(又は正規品)の実測値は、正規品(又は非正規品)の期待値と大きく異なるため、メモリ装置3の真贋判定を容易に行うことができる。また、判定対象期間において実行している動作が正規品と非正規品とで同一の場合であっても、正規品と非正規品とでは半導体デバイスの構造や製造プロセスが異なるため、非正規品(又は正規品)の実測値は、正規品(又は非正規品)の期待値と異なる。従って、メモリ装置3の真贋判定を容易に行うことができる。しかも、期間設定部72は、メモリ装置3の通常動作期間P1〜P7の中から、複数の処理ブロック(CPU31、メモリコントローラ32、及びメモリコア33等)の休止期間P2,P7と、一の処理ブロックが単独で動作している少なくとも一つの単独動作期間P3〜P5とを特定し、当該休止期間P2,P7及び当該少なくとも一つの単独動作期間P3〜P5の中から少なくとも一つの判定対象期間(本実施の形態の例ではアクセス準備期間P5)を設定する。休止期間P2,P7及び少なくとも一つの単独動作期間P3〜P5の中から判定対象期間を設定することにより、消費電流の変動が小さい期間が判定対象期間として設定されるため、平均値に関連する実測値及び期待値のばらつきは抑制される。さらに、判定対象期間の設定の自由度を高めることができるため、メモリ装置3の真贋判定を高精度に行うことができる。
また、本実施の形態に係るメモリ装置3によれば、上記少なくとも一つの単独動作期間P3〜P5の消費電流の変動Zは、いずれも第1のしきい値Th1未満である。従って、平均値に関連する実測値及び期待値のばらつきはさらに抑制されるため、メモリ装置3の真贋判定をより高精度に行うことができる。
また、本実施の形態に係るメモリ装置3によれば、真贋判定部75は、アクセス準備期間P5に関する実測平均値と、アクセス準備期間P5に関する基準平均値Aとの比較結果に基づいて、メモリ装置3が正規品であるか非正規品であるかを判定する。従って、実測平均値と基準平均値Aとを比較するという簡易な処理によって、メモリ装置3の真贋判定を行うことが可能となる。
また、本実施の形態に係るメモリ装置3によれば、期間設定部72は、消費電流の変動が第2のしきい値Th2以上であるアクセス準備期間P5(第1の期間)を、判定対象期間(第1の判定対象期間)として設定する。このように、消費電流の変動が比較的大きいアクセス準備期間P5を判定対象期間として設定する場合には、たとえ正規品であっても実測平均値のばらつきはある程度大きいため、平均値の最大値・最小値やその差分値を用いずに単純に実測平均値と基準平均値Aとを比較することによって、誤判定を効果的に防止することが可能となる。
また、本実施の形態に係るメモリ装置3によれば、メモリコア33が単独で動作するアクセス準備期間P5は、消費電流の変動が比較的大きい(第2のしきい値Th2以上かつ第1のしきい値Th1未満)期間であるため、メモリコア33の単独動作期間を判定対象期間として設定することにより、実測平均値と基準平均値Aとの比較結果に基づく真贋判定を好適に行うことが可能となる。
また、本実施の形態に係るメモリ装置3によれば、期待値データ201はメモリ装置3のメモリコア33(記憶部)に記憶されている。メモリ装置3の期待値データ201は、デバイスの構造や製造プロセス等に依存するため、デバイス毎に異なる。従って、あるメモリ装置3に関して求めた期待値データ201を、そのメモリ装置3のメモリコア33に記憶しておくことにより、デバイス毎に異なる期待値データ201を簡易に管理することが可能となる。
<変形例1>
上記実施の形態ではアクセス準備期間P5を判定対象期間として設定する例について述べたが、本変形例では、ソフトウェア処理期間P4を判定対象期間として設定する例について説明する。
上記の通り、ソフトウェア処理期間P4においては、図3に示した各処理ブロックのうちCPU31のみが単独で動作しており、メモリ装置3の消費電流の絶対値は比較的小さく、また、その変動量Z4も比較的小さい。また、図10に示したように、ソフトウェア処理期間P4を判定対象期間として設定する場合には、ソフトウェア処理期間P4に関する基準平均値Aの上限値AH及び下限値ALが、暗号化された期待値データ201としてメモリコア33に格納されている。
図11を参照して、ステップSP100においてCPU52(期間設定部72)は、ソフトウェア処理期間P4を判定対象期間として設定する。
ステップSP101においてCPU52(制御部61)は、メモリコア33から期待値データ201を読み出す。本変形例では、ソフトウェア処理期間P4に関する基準平均値Aの上限値AH及び下限値ALと、それらに対応する所定の許容誤差値を示すデータとが、期待値格納メモリ54に格納される。
ステップSP102においてCPU52(制御部61)は、ADC56を駆動するとともに、メモリ装置3に電力消費動作を開始させる。
ステップSP103においてCPU52(実測電流値取得部71)は、判定対象期間(本変形例ではソフトウェア処理期間P4)において測定された複数の実測電流値を、実測値格納メモリ55から取得する。
ステップSP104においてCPU52(平均値算出部73)は、ステップSP103で取得した複数の実測電流値の平均値を算出することにより、ソフトウェア処理期間P4に関する実測平均値を求める。CPU52は、ステップSP102〜SP104の処理を所定のN回(Nは複数)繰り返し実行することにより、ソフトウェア処理期間P4に関するN個の実測平均値を求める。そして、N個の実測平均値の中の最大値と最小値とを求める。
ステップSP105においてCPU52(期待値取得部74)は、ソフトウェア処理期間P4に関する基準平均値Aの上限値AH及び下限値ALと、それらに対応する所定の許容誤差値を示すデータとを、期待値格納メモリ54から取得する。
ステップSP106においてCPU52(真贋判定部75)は、ステップSP104で求められた実測平均値の最大値及び最小値と、ステップSP105で取得された基準平均値Aの上限値AH及び下限値ALとをそれぞれ比較する。
ステップSP107においてCPU52(真贋判定部75)は、実測平均値の最大値が、基準平均値Aの上限値AHに許容誤差値を加算した値以下であり、かつ、実測平均値の最小値が、基準平均値Aの下限値ALから許容誤差値を減算した値以上である場合には、メモリ装置3は正規品であると判定して、真贋判定処理を終了する。一方、実測平均値の最大値が、基準平均値Aの上限値AHに許容誤差値を加算した値より大きい場合、又は、実測平均値の最小値が、基準平均値Aの下限値ALから許容誤差値を減算した値未満である場合には、真贋判定部75は、メモリ装置3は非正規品であると判定して、非正規品であるメモリ装置3を排除するための処理を開始する。
本変形例に係るメモリ装置3によれば、真贋判定部75は、実測平均値の最大値及び最小値と、基準平均値Aの上限値AH及び下限値ALとのそれぞれの比較結果に基づいて、メモリ装置3が正規品であるか非正規品であるかを判定する。従って、実測平均値の最大値及び最小値と基準平均値Aの上限値及び下限値とをそれぞれ比較するという比較的簡易な処理によって、メモリ装置3の真贋判定を高精度に行うことが可能となる。
また、本変形例に係るメモリ装置3によれば、期間設定部72は、消費電流の変動が第3のしきい値Th3以上かつ第2のしきい値Th2未満であるソフトウェア処理期間P4(第2の期間)を、判定対象期間(第2の判定対象期間)として設定する。このように、消費電流の変動が比較的小さいソフトウェア処理期間P4を判定対象期間として設定する場合には、実測平均値のばらつきはある程度小さいため、実測平均値の最大値及び最小値と基準平均値Aの上限値AH及び下限値ALとをそれぞれ比較することによって、メモリ装置3の真贋判定を高精度に行うことが可能となる。
また、本変形例に係るメモリ装置3によれば、CPU31(ソフトウェア処理部)が単独で動作するソフトウェア処理期間P4は、消費電流の変動が比較的小さい(第3のしきい値Th3以上かつ第2のしきい値Th2未満)期間であるため、CPU31の単独動作期間を判定対象期間として設定することにより、実測平均値の最大値及び最小値と基準平均値Aの上限値AH及び下限値ALとの比較結果に基づく真贋判定を好適に行うことが可能となる。
<変形例2>
上記実施の形態ではアクセス準備期間P5を判定対象期間として設定する例について述べたが、本変形例では、コマンド復号期間P3を判定対象期間として設定する例について説明する。
上記の通り、コマンド復号期間P3においては、図3に示した各処理ブロックのうちメモリコントローラ32のみが単独で動作しており、メモリ装置3の消費電流の絶対値は比較的小さく、また、その変動量Z3も比較的小さい。また、図10に示したように、コマンド復号期間P3を判定対象期間として設定する場合には、コマンド復号期間P3に関する基準平均値Aの上限値AHと下限値ALとの差分値Dが、暗号化された期待値データ201としてメモリコア33に格納されている。
図11を参照して、ステップSP100においてCPU52(期間設定部72)は、コマンド復号期間P3を判定対象期間として設定する。
ステップSP101においてCPU52(制御部61)は、メモリコア33から期待値データ201を読み出す。本変形例では、コマンド復号期間P3に関する基準平均値Aの上限値AHと下限値ALとの差分値Dと、それに対応する所定の許容誤差値を示すデータとが、期待値格納メモリ54に格納される。
ステップSP102においてCPU52(制御部61)は、ADC56を駆動するとともに、メモリ装置3に電力消費動作を開始させる。
ステップSP103においてCPU52(実測電流値取得部71)は、判定対象期間(本変形例ではコマンド復号期間P3)において測定された複数の実測電流値を、実測値格納メモリ55から取得する。
ステップSP104においてCPU52(平均値算出部73)は、ステップSP103で取得した複数の実測電流値の平均値を算出することにより、コマンド復号期間P3に関する実測平均値を求める。CPU52は、ステップSP102〜SP104の処理を所定のN回繰り返し実行することにより、コマンド復号期間P3に関するN個の実測平均値を求める。そして、N個の実測平均値の中の最大値と最小値とを求め、当該最大値と当該最小値との差分値を算出する。
ステップSP105においてCPU52(期待値取得部74)は、コマンド復号期間P3に関する基準平均値Aの上限値AHと下限値ALとの差分値Dと、それに対応する所定の許容誤差値を示すデータとを、期待値格納メモリ54から取得する。
ステップSP106においてCPU52(真贋判定部75)は、ステップSP104で算出された実測平均値の最大値と最小値との差分値と、ステップSP105で取得された基準平均値Aの上限値AHと下限値ALとの差分値Dとをそれぞれ比較する。
ステップSP107においてCPU52(真贋判定部75)は、実測平均値の最大値と最小値との差分値が、基準平均値Aの上限値AHと下限値ALとの差分値Dに許容誤差値を加算した値以下である場合には、メモリ装置3は正規品であると判定して、真贋判定処理を終了する。一方、実測平均値の最大値と最小値との差分値が、基準平均値Aの上限値AHと下限値ALとの差分値Dに許容誤差値を加算した値より大きい場合には、真贋判定部75は、メモリ装置3は非正規品であると判定して、非正規品であるメモリ装置3を排除するための処理を開始する。
本変形例に係るメモリ装置3によれば、真贋判定部75は、実測平均値の最大値と最小値との差分値と、基準平均値Aの上限値AHと下限値ALとの差分値Dとの比較結果に基づいて、メモリ装置3が正規品であるか非正規品であるかを判定する。従って、実測平均値の最大値と最小値との差分値と、基準平均値Aの上限値AHと下限値ALとの差分値Dとを比較するという比較的簡易な処理によって、メモリ装置3の真贋判定を高精度に行うことが可能となる。
また、本変形例に係るメモリ装置3によれば、期間設定部72は、消費電流の変動が第3のしきい値Th3以上かつ第2のしきい値Th2未満であるコマンド復号期間P3(第3の期間)を、判定対象期間(第3の判定対象期間)として設定する。このように、消費電流の変動が比較的小さいコマンド復号期間P3を判定対象期間として設定する場合には、実測平均値のばらつきはある程度小さいため、実測平均値の最大値と最小値との差分値と、基準平均値Aの上限値AHと下限値ALとの差分値Dとを比較することによって、メモリ装置3の真贋判定を高精度に行うことが可能となる。
また、本変形例に係るメモリ装置3によれば、メモリコントローラ32(ディジタル処理回路)が単独で動作するコマンド復号期間P3は、消費電流の変動が比較的小さい(第3のしきい値Th3以上かつ第2のしきい値Th2未満)期間であるため、メモリコントローラ32の単独動作期間を判定対象期間として設定することにより、実測平均値の最大値と最小値との差分値と、基準平均値Aの上限値AHと下限値ALとの差分値Dとの比較結果に基づく真贋判定を好適に行うことが可能となる。
なお、コマンド復号期間P3を判定対象期間とする真贋判定処理は、ソフトウェア処理期間P4を判定対象期間とする真贋判定処理(上記変形例1)と同様の手法によって実行しても良く、逆に、ソフトウェア処理期間P4を判定対象期間とする真贋判定処理は、コマンド復号期間P3を判定対象期間とする真贋判定処理と同様の手法によって実行しても良い。
<変形例3>
上記実施の形態ではアクセス準備期間P5を判定対象期間として設定する例について述べたが、本変形例では、スタンバイ期間P2を判定対象期間として設定する例について説明する。
上記の通り、スタンバイ期間P2においては、図3に示した各処理ブロック(CPU31、メモリコントローラ32、及びメモリコア33等)はいずれも動作を休止しており、メモリ装置3の消費電流の絶対値は極めて小さく、また、その変動量Z2も極めて小さい。また、図11に示したように、スタンバイ期間P2を判定対象期間として設定する場合には、スタンバイ期間P2に関する基準平均値Aの上限値AH、下限値AL、及び差分値Dが、暗号化された期待値データ201としてメモリコア33に格納されている。
図11を参照して、ステップSP100においてCPU52(期間設定部72)は、スタンバイ期間P2を判定対象期間として設定する。
ステップSP101においてCPU52(制御部61)は、メモリコア33から期待値データ201を読み出す。本変形例では、スタンバイ期間P2に関する基準平均値Aの上限値AH、下限値AL、及び差分値Dと、それらに対応する所定の許容誤差値を示すデータとが、期待値格納メモリ54に格納される。
ステップSP102においてCPU52(制御部61)は、ADC56を駆動するとともに、メモリ装置3に電力消費動作を開始させる。
ステップSP103においてCPU52(実測電流値取得部71)は、判定対象期間(本変形例ではスタンバイ期間P2)において測定された複数の実測電流値を、実測値格納メモリ55から取得する。
ステップSP104においてCPU52(平均値算出部73)は、ステップSP103で取得した複数の実測電流値の平均値を算出することにより、スタンバイ期間P2に関する実測平均値を求める。CPU52は、ステップSP102〜SP104の処理を所定のN回繰り返し実行することにより、スタンバイ期間P2に関するN個の実測平均値を求める。そして、N個の実測平均値の中の最大値と最小値とを求め、当該最大値と当該最小値との差分値を算出する。
ステップSP105においてCPU52(期待値取得部74)は、スタンバイ期間P2に関する基準平均値Aの上限値AH、下限値AL、及び差分値Dと、それらに対応する所定の許容誤差値を示すデータとを、期待値格納メモリ54から取得する。
ステップSP106においてCPU52(真贋判定部75)は、ステップSP104で求められた実測平均値の最大値、最小値、及び差分値と、ステップSP105で取得された基準平均値Aの上限値AH、下限値AL、及び差分値Dとをそれぞれ比較する。
ステップSP107においてCPU52(真贋判定部75)は、実測平均値の最大値が、基準平均値Aの上限値AHに許容誤差値を加算した値以下であり、かつ、実測平均値の最小値が、基準平均値Aの下限値ALから許容誤差値を減算した値以上であり、かつ、実測平均値の最大値と最小値との差分値が、基準平均値Aの上限値AHと下限値ALとの差分値Dに許容誤差値を加算した値以下である場合には、メモリ装置3は正規品であると判定して、真贋判定処理を終了する。一方、実測平均値の最大値が、基準平均値Aの上限値AHに許容誤差値を加算した値より大きい場合、又は、実測平均値の最小値が、基準平均値Aの下限値ALから許容誤差値を減算した値未満である場合、又は、実測平均値の最大値と最小値との差分値が、基準平均値Aの上限値AHと下限値ALとの差分値Dに許容誤差値を加算した値より大きい場合には、真贋判定部75は、メモリ装置3は非正規品であると判定して、非正規品であるメモリ装置3を排除するための処理を開始する。
本変形例に係るメモリ装置3によれば、真贋判定部75は、実測平均値の最大値、最小値、及び差分値と、基準平均値Aの上限値AH、下限値AL、及び差分値Dとのそれぞれの比較結果に基づいて、メモリ装置3が正規品であるか非正規品であるかを判定する。このように、実測平均値の最大値及び最小値と基準平均値Aの上限値AH及び下限値ALとの比較結果と、実測平均値の差分値と基準平均値Aの差分値Dとの比較結果とに基づいて、真贋判定を行うことにより、メモリ装置3の真贋判定を高精度に行うことが可能となる。
また、本変形例に係るメモリ装置3によれば、期間設定部72は、消費電流の変動が第3のしきい値Th3未満であるスタンバイ期間P2(第4の期間)を、判定対象期間(第4の判定対象期間)として設定する。このように、消費電流の変動が極めて小さいスタンバイ期間P2を判定対象期間として設定する場合には、実測平均値のばらつきは極めて小さいため、実測平均値の最大値、最小値、及び差分値と、基準平均値Aの上限値AH、下限値AL、及び差分値Dとをそれぞれ比較することによって、メモリ装置3の真贋判定を高精度に行うことが可能となる。
また、本変形例に係るメモリ装置3によれば、スタンバイ期間P2は消費電流の変動が極めて小さい(第3のしきい値Th3未満)期間であるため、スタンバイ期間P2を判定対象期間として設定することにより、実測平均値の最大値、最小値、及び差分値と、基準平均値Aの上限値AH、下限値AL、及び差分値Dとのそれぞれの比較結果に基づく真贋判定を好適に行うことが可能となる。
<変形例4>
上記実施の形態及び上記変形例1〜3では一つの期間のみを判定対象期間として設定する例について述べたが、複数の期間を判定対象期間として設定することもできる。
本変形例では、スタンバイ期間P2、コマンド復号期間P3、ソフトウェア処理期間P4、及びアクセス準備期間P5を判定対象期間として設定し、かつ、正規品に関する期待値データ201を用いる例について説明する。
メモリ装置3のメモリコア33には、正規品のメモリ装置を対象とする消費電流値の測定によって予め設定された、正規品に関する期待値データ201が格納されている。本変形例において、期待値データ201には、スタンバイ期間P2に関する上限値AH、下限値AL、及び差分値Dと、コマンド復号期間P3に関する差分値Dと、ソフトウェア処理期間P4に関する上限値AH及び下限値ALと、アクセス準備期間P5に関する基準平均値Aと、それらに対応する所定の許容誤差値を示すデータとが含まれる。
CPU52(制御部61)は、メモリコア33から期待値データ201を読み出して、期待値格納メモリ54に格納する。
CPU52(判定部62)は、上記変形例3と同様の処理を実行することにより、スタンバイ期間P2に関する実測平均値の最大値、最小値、及び差分値と、スタンバイ期間P2に関する基準平均値Aの上限値AH、下限値AL、及び差分値Dとをそれぞれ比較する。また、CPU52(判定部62)は、上記変形例2と同様の処理を実行することにより、コマンド復号期間P3に関する実測平均値の差分値と、コマンド復号期間P3に関する基準平均値Aの差分値Dとを比較する。また、CPU52(判定部62)は、上記変形例1と同様の処理を実行することにより、ソフトウェア処理期間P4に関する実測平均値の最大値及び最小値と、ソフトウェア処理期間P4に関する基準平均値Aの上限値AH及び下限値ALとをそれぞれ比較する。また、CPU52(判定部62)は、上記実施の形態と同様の処理を実行することにより、アクセス準備期間P5に関する実測平均値と、アクセス準備期間P5に関する基準平均値Aとをそれぞれ比較する。
そして、CPU52(真贋判定部75)は、4つの判定対象期間の全てにおいてメモリ装置3が正規品であることを示す比較結果(例えばアクセス準備期間P5に関しては、実測平均値と基準平均値Aとの差が許容誤差値以下であるという比較結果)が得られた場合には、メモリ装置3は正規品であると判定する。一方、4つの判定対象期間のうちの少なくとも一つの判定対象期間においてメモリ装置3が正規品でないことを示す比較結果(例えばアクセス準備期間P5に関しては、実測平均値と基準平均値Aとの差が許容誤差値より大きいという比較結果)が得られた場合には、メモリ装置3は非正規品であると判定する。
本変形例に係るメモリ装置3によれば、真贋判定部75は、複数の判定対象期間の全てにおいてメモリ装置3が正規品であることを示す比較結果が得られた場合に、メモリ装置3は正規品であると判定し、複数の判定対象期間のうちの少なくとも一つの判定対象期間においてメモリ装置3が正規品でないことを示す比較結果が得られた場合に、メモリ装置3は非正規品であると判定する。従って、複数の判定対象期間の一部において非正規品の消費電流特性が正規品のそれと異なる場合であっても、非正規品が誤って正規品と判定される事態を回避することが可能となる。
なお、真贋判定部75は、複数の判定対象期間のうち、メモリ装置3が正規品であることを示す比較結果が得られた判定対象期間の割合が所定のしきい値以上である場合に、メモリ装置3は正規品であると判定し、当該割合が当該所定のしきい値未満である場合に、メモリ装置3は非正規品であると判定しても良い。所定のしきい値は、要求される判定精度等に応じて最適な値が設定され、少なくとも51%以上の値に設定される。この例によれば、例えば、突発的なノイズ等に起因して一部の判定対象期間において正規品の実測平均値が増減した場合であっても、正規品が誤って非正規品と判定される事態を回避することが可能となる。
<変形例5>
上記変形例4では正規品に関する期待値データ201を用いる例について説明したが、本変形例では、非正規品に関する期待値データ201を用いる例について説明する。
本変形例では、スタンバイ期間P2、コマンド復号期間P3、ソフトウェア処理期間P4、及びアクセス準備期間P5を判定対象期間として設定し、かつ、非正規品に関する期待値データ201を用いる例について説明する。
メモリ装置3のメモリコア33には、非正規品のメモリ装置を対象とする消費電流値の測定によって予め設定された、非正規品に関する期待値データ201が格納されている。本変形例において、期待値データ201には、スタンバイ期間P2に関する上限値AH、下限値AL、及び差分値Dと、コマンド復号期間P3に関する差分値Dと、ソフトウェア処理期間P4に関する上限値AH及び下限値ALと、アクセス準備期間P5に関する基準平均値Aと、それらに対応する所定の許容誤差値を示すデータとが含まれる。
CPU52(制御部61)は、メモリコア33から期待値データ201を読み出して、期待値格納メモリ54に格納する。
CPU52(判定部62)は、上記変形例3と同様の処理を実行することにより、スタンバイ期間P2に関する実測平均値の最大値、最小値、及び差分値と、スタンバイ期間P2に関する基準平均値Aの上限値AH、下限値AL、及び差分値Dとをそれぞれ比較する。また、CPU52(判定部62)は、上記変形例2と同様の処理を実行することにより、コマンド復号期間P3に関する実測平均値の差分値と、コマンド復号期間P3に関する基準平均値Aの差分値Dとを比較する。また、CPU52(判定部62)は、上記変形例1と同様の処理を実行することにより、ソフトウェア処理期間P4に関する実測平均値の最大値及び最小値と、ソフトウェア処理期間P4に関する基準平均値Aの上限値AH及び下限値ALとをそれぞれ比較する。また、CPU52(判定部62)は、上記実施の形態と同様の処理を実行することにより、アクセス準備期間P5に関する実測平均値と、アクセス準備期間P5に関する基準平均値Aとをそれぞれ比較する。
そして、CPU52(真贋判定部75)は、4つの判定対象期間の全てにおいてメモリ装置3が非正規品であることを示す比較結果(例えばアクセス準備期間P5に関しては、実測平均値と基準平均値Aとの差が許容誤差値以下であるという比較結果)が得られた場合には、メモリ装置3は非正規品であると判定する。一方、4つの判定対象期間のうちの少なくとも一つの判定対象期間においてメモリ装置3が非正規品でないことを示す比較結果(例えばアクセス準備期間P5に関しては、実測平均値と基準平均値Aとの差が許容誤差値より大きいという比較結果)が得られた場合には、メモリ装置3は正規品であると判定する。
本変形例に係るメモリ装置3によれば、真贋判定部75は、複数の判定対象期間の全てにおいてメモリ装置3が非正規品であることを示す比較結果が得られた場合に、メモリ装置3は非正規品であると判定し、複数の判定対象期間のうちの少なくとも一つの判定対象期間においてメモリ装置3が非正規品でないことを示す比較結果が得られた場合に、メモリ装置3は正規品であると判定する。従って、複数の判定対象期間の一部において正規品の消費電流特性が非正規品のそれと同一となる場合であっても、正規品が誤って非正規品と判定される事態を回避することが可能となる。
なお、真贋判定部75は、複数の判定対象期間のうち、メモリ装置3が非正規品であることを示す比較結果が得られた判定対象期間の割合が所定のしきい値以上である場合に、メモリ装置3は非正規品であると判定し、当該割合が当該所定のしきい値未満である場合に、メモリ装置3は正規品であると判定しても良い。所定のしきい値は、要求される判定精度等に応じて最適な値が設定され、少なくとも51%以上の値に設定される。この例によれば、複数の判定対象期間の一部において非正規品の消費電流特性が正規品のそれと異なる場合であっても、非正規品が誤って正規品と判定される事態を回避することが可能となる。
<変形例6>
上記実施の形態及び上記変形例1〜5では、メモリ装置3が自己真贋判定を行う例(つまりメモリ装置3が真贋判定装置である例)について述べたが、上記実施の形態及び上記変形例1〜5と同様の処理及び構成によって、ホスト装置2が自己真贋判定を行う(つまりホスト装置2が真贋判定装置である)こともできる。
図12は、ホスト装置2の構成を簡略化して示す図である。図12に示すようにホスト装置2は、SoC11及びメモリインタフェース12等の複数の処理ブロックを備えて構成されている。これら複数の処理ブロックには、電源供給部VCC1から抵抗素子Rを介して電源が供給される。また、ホスト装置2は、電流値測定回路13及び記憶部14を備えている。電流値測定回路13は、抵抗素子Rの両端電圧を測定することにより、電源供給部VCC1からこれら複数の処理ブロックに流れる電流の電流値を測定する。記憶部14には、期待値データ202が格納されている。
SoC11は、バス21を介して相互に接続された、CPU22、復号器25、期待値格納メモリ26、実測値格納メモリ27、ADC28、コマンドバッファ23、データバッファ24、及び、ROM又はRAM等の記憶部29を備えて構成されている。記憶部29には、プログラム102が格納されている。
図13は、メモリ装置3の構成を簡略化して示す図である。図13に示すようにメモリ装置3は、CPU31、メモリコントローラ32、メモリコア33、ホストインタフェース34、及びメモリコアインタフェース35等の複数の処理ブロックを備えて構成されている。これら複数の処理ブロックには、電源供給部VCC2から電源が供給される。
図14は、図12に示したプログラム102をCPU22が実行することによって実現される機能を示す図である。記憶部29から読み出したプログラム102をCPU22が実行することによって、CPU22は制御部81及び判定部82として機能する。
図15は、判定部82が備える機能を示す図である。図15に示すように判定部68は、実測電流値取得部91、期間設定部92、平均値算出部93、期待値取得部94、及び真贋判定部95として機能する。
換言すれば、プログラム102は、情報処理装置としてのホスト装置2に搭載されるコンピュータを、制御部81、実測電流値取得部91、期間設定部92、平均値算出部93、期待値取得部94、及び真贋判定部95として機能させるためのプログラムである。なお、制御部81及び判定部82の機能は、CPU22によるソフトウェア処理によって実現する場合に限らず、専用回路等を用いたハードウェア処理によって実現しても良い。
本変形例では、ホスト装置2が正規品であるか非正規品であるかの真贋判定を行う判定対象期間が、ホスト装置2の通常動作期間の中から設定される。具体的には、上記実施の形態と同様に、ホスト装置2の通常動作期間のうち、スタンバイ期間と、図12に示した各処理ブロック(SoC11及びメモリインタフェース12等)のうち一の処理ブロックが単独で動作している単独動作期間との中から選択された少なくとも一つの期間が、判定対象期間として設定される。
本変形例には上記実施の形態を適用することが可能である。この場合、上記実施の形態と同様に、平均値算出部93は、判定対象期間において実測電流値取得部91によって取得された実測電流値に基づいて実測平均値を算出し、真贋判定部95は、平均値算出部93によって算出された実測平均値に関連する実測値と、期待値取得部94によって取得された期待値との比較結果に基づいて、ホスト装置2が正規品であるか非正規品であるかを判定する。
また、本変形例には上記変形例1を適用することも可能である。この場合、上記変形例1と同様に、真贋判定部95は、実測平均値の最大値及び最小値と、基準平均値Aの上限値AH及び下限値ALとのそれぞれの比較結果に基づいて、ホスト装置2が正規品であるか非正規品であるかを判定する。
また、本変形例には上記変形例2を適用することも可能である。この場合、上記変形例2と同様に、真贋判定部95は、実測平均値の最大値と最小値との差分値と、基準平均値Aの上限値AHと下限値ALとの差分値Dとの比較結果に基づいて、ホスト装置2が正規品であるか非正規品であるかを判定する。
また、本変形例には上記変形例3を適用することも可能である。この場合、上記変形例3と同様に、真贋判定部95は、実測平均値の最大値、最小値、及び差分値と、基準平均値Aの上限値AH、下限値AL、及び差分値Dとのそれぞれの比較結果に基づいて、ホスト装置2が正規品であるか非正規品であるかを判定する。
また、重複した記載となるため詳細な説明は省略するが、本変形例には上記変形例4又は上記変形例5を適用することも可能である。