記憶装置、保護方法及び電子機器
【課題】簡便に記憶装置のセキュリティを向上させることができる記憶装置を提供すること。
【解決手段】実施形態の記憶装置は、不揮発性半導体メモリで構成された記憶部への電源の投入に伴い、経過時間のカウントを開始する。ホスト装置からコマンドが入力されると、ホスト装置で計時された現在日時を表す時刻情報と、コマンドの入力時までにカウントされたカウンタ値とに基づいて、算出部が、前回のコマンド入力から今回のコマンド入力までの経過時間を算出する。算出された経過時間を前回入力されたコマンドに含まれる時刻情報に加算した加算結果と、今回入力されたコマンドに含まれる時刻情報との時間的な大小関係に基づいて、時刻情報判定部が、前記時刻情報の整合性を判定する。無効化部は、不整合と判定された場合に、前記記憶部に記憶されたデータを無効化する。
【解決手段】実施形態の記憶装置は、不揮発性半導体メモリで構成された記憶部への電源の投入に伴い、経過時間のカウントを開始する。ホスト装置からコマンドが入力されると、ホスト装置で計時された現在日時を表す時刻情報と、コマンドの入力時までにカウントされたカウンタ値とに基づいて、算出部が、前回のコマンド入力から今回のコマンド入力までの経過時間を算出する。算出された経過時間を前回入力されたコマンドに含まれる時刻情報に加算した加算結果と、今回入力されたコマンドに含まれる時刻情報との時間的な大小関係に基づいて、時刻情報判定部が、前記時刻情報の整合性を判定する。無効化部は、不整合と判定された場合に、前記記憶部に記憶されたデータを無効化する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、記憶装置、保護方法及び電子機器に関する。
【背景技術】
【0002】
従来、記録する情報の漏洩を防止する記憶装置として、記録されるデータを自動的に暗号化する記憶装置が知られている。このような記憶装置の機能は、SED(Self Encryption Disk)機能として知られている。このSED機能を有する記憶装置において、暗号鍵は、設定されたパスワードに基づいて生成され、ホスト装置から記憶装置にパスワードが入力されることによって、暗号化されたデータが復号化可能となる。
【0003】
また、ホスト装置に接続された記憶装置をホットプラグアタックから保護するため、ホスト装置と記憶装置との双方のタイマを同期させ、この同期のための計時値を用いて両装置における認証のための共通データを生成する技術が知られている。
【0004】
しかしながら、SED機能による情報漏洩防止技術では、ホスト装置と記憶装置との間の情報の流れからパスワードが読み取られる可能性があるため、改善の余地があった。また、ホスト装置と記憶装置との間でタイマを同期する技術では、両装置の接続関係を検証することが可能であるが、タイマ同期のための処理や機構が両装置で必要となる。そのため、正しい接続関係にある場合も含めて、より簡便に記憶装置のセキュリティを向上させることが可能な技術が望まれている。
【0005】
また、情報漏洩防止のため、記憶装置としての記録スピード、読み出しスピード等に影響を与えずに暗号化するには、暗号処理回路を記憶装置に組み込まなければならず、記憶装置が複雑になるという問題があった。また、暗号装置を組み込んだ装置については、多くの国々で流通等に関して法規制があり、流通の手続きが煩雑、販売先が限定されるなどの問題もあった。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許第4357963号公報
【特許文献2】特開2003−249083号公報
【特許文献3】特開平8−306196号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明が解決しようとする課題は、簡便に記憶装置のセキュリティを向上させることができる記憶装置、保護方法及び電子機器を提供することである。
【課題を解決するための手段】
【0008】
実施形態によれば、記憶装置が提供される。記憶装置では、記憶部が、データを不揮発性半導体メモリで構成された記憶領域に記憶し、経過時間計測部が、前記記憶部への電源の投入に伴い、経過時間のカウントを開始する。受付部が、前記記憶部に接続されたホスト装置から、パスワードと前記ホスト装置で計時された現在日時を表す時刻情報とを含んだコマンドの入力を受け付ける。算出部が、前記コマンドに含まれる時刻情報と、当該コマンドの入力時までに前記経過時間計測部でカウントされたカウンタ値とに基づいて、前回のコマンド入力から今回のコマンド入力までの経過時間を算出する。加算部が、前記算出部が算出した経過時間を、前回入力されたコマンドに含まれる時刻情報に加算する。時刻情報判定部が、前記加算部の加算結果と、今回入力されたコマンドに含まれる時刻情報との時間的な大小関係に基づいて、前記時刻情報の整合性を判定する。無効化部が、前記時刻情報判定部が不整合と判定した場合に、前記記憶領域に記憶されたデータを無効化する。そして、認証部が、前記時刻情報判定部が整合と判定した場合に、今回入力されたコマンドに含まれるパスワードの認証を行い、当該認証に成功した場合に前記記憶領域へのアクセスを許可する。
【図面の簡単な説明】
【0009】
【図1】図1は、第1の実施形態に係る電子機器の構成を模式的に示す図である。
【図2】図2は、第1の実施形態に係る記憶装置の構成の一例を示すブロック図である。
【図3】図3は、NANDメモリチップに含まれる1個のブロックの構成例と、4値データ記憶方式でのしきい値分布を示す図である。
【図4】図4は、第1の実施形態に係るNANDメモリ内のデータを説明するための模式図である。
【図5】図5は、アドレス変換情報の構成例を示す図である。
【図6】図6は、第1の実施形態に係るドライブ制御回路のハードウェア的な内部構成例を示すブロック図である。
【図7】図7は、第1の実施形態に係る記憶装置の機能構成を示す図である。
【図8】図8は、記憶装置が実行するコマンド受付処理の手順を示すフローチャートである。
【図9】図9は、時刻情報判定処理の手順を示すフローチャートである。
【図10】図10は、時刻情報判定処理を説明するための図である。
【図11】図11は、第2の実施形態に係る記憶装置の構成の一例を示すブロック図である。
【図12】図12は、第2の実施形態に係るNANDメモリ内のデータを説明するための模式図である。
【図13】図13は、第2の実施形態に係るドライブ制御回路のハードウェア的な内部構成例を示すブロック図である。
【図14】図14は、第2の実施形態に係る記憶装置の機能構成を示す図である。
【図15】図15は、有効時間判定処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に添付図面を参照して、実施形態に係る記憶装置、保護方法及び電子機器を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0011】
(第1の実施形態)
本実施形態では、パスワード認証が失敗となった場合や、短時間に連続して認証コマンドが入力された場合に、不揮発性半導体メモリ内のユーザデータを読み出しできない状態にする(無効化処理)。これにより、アクセス元となったホスト装置の正当性を確認し、不正なユーザデータの読み出し(ホットプラグアタック)を防ぐ。
【0012】
図1は、第1の実施形態に係る電子機器の構成を模式的に示す図である。同図に示すように、電子機器(データ記憶システム)は、ホスト装置30Aと記憶装置20Aとを有したPC(Personal Computer)等の装置である。ホスト装置30Aは、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、計時部14、表示部15、操作入力部16および通信部17を備えている。
【0013】
CPU11は、RAM13の所定領域を作業領域として、ROM12や記憶装置20Aに予め記憶された各種プログラムを実行し、ホスト装置30Aを構成する各部の動作を統括的に制御する。
【0014】
ROM12は、不揮発性の記憶デバイスであって、ホスト装置30Aの制御に係るプログラムや各種設定情報等を書き換え不可能に記憶する。RAM13は、揮発性の記憶デバイスであって、CPU11の作業領域として機能し、各種の処理時においてスタックやバッファ等の役割を果たす。
【0015】
計時部14は、ホスト装置30Aに設けられたRTC(Real Time Clock)等の計時装置であり、現在日時を表した時刻情報を生成する。なお、時刻情報は、所定の年月日(例えば、1900年1月1日)から起算した秒数で表されている。例えば、現在日時が2010年11月12日13時14分15秒の場合、時刻情報は“D08A5F27”(16進数表記)で表される。
【0016】
表示部15は、LCD(Liquid Crystal Display)等の表示デバイスにより構成され、CPU11からの表示信号に基づいて、各種情報を表示する。操作入力部16は、各種入力キーを備え、ユーザから操作入力された情報を指示信号として受け付け、その指示信号をCPU11に出力する。なお、表示部15は、操作入力部16と一体的にタッチパネルを構成する態様としてもよい。
【0017】
通信部17は、図示しないネットワークを介して外部装置との間で通信を行う通信インタフェースであって、外部装置から受信した各種の情報をCPU11に出力し、また、CPU11から出力される各種の情報を外部装置へ送信する。
【0018】
また、本実施形態の記憶装置20Aは、ホスト装置30Aの制御に係るプログラムや各種データ等を書き換え可能に記憶する。記憶装置20Aは、例えば、SSD(Solid State Drive)やフラッシュメモリ等の、不揮発性の半導体メモリを記録媒体とした記憶装置である。
【0019】
記憶装置20Aは、予め定められたパスワードと時刻情報とに基づいて、ホスト装置30A,30Bなどのホスト装置からのアクセスが正当なアクセスか否かを判定し、正当と判定された場合にのみ記録媒体へのデータの書き込みや、データの読み出しを許可する。そのため、CPU11では、記憶装置20Aへのアクセスに際し、リード/ライト等を指示するコマンドとともに、計時部14から取得した時刻情報を含んだ認証コマンドを記憶装置20Aに送信する。なお、記憶装置20Aのアクセスに係るCPU11の動作は、ROM12に記憶されたプログラムや各種設定情報との協働により実現されるものとする。
【0020】
図2は、第1の実施形態に係る記憶装置の構成の一例を示すブロック図である。データ記憶システムは、任意のホスト装置30A,30B,…に着脱自在に接続可能な記憶装置20Aと、任意のホスト装置30A,30B,…のうち、記憶装置20Aへの接続権限をもつ正規のホスト装置30Aと、を備えている。
【0021】
記憶装置20Aは、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはCPUコアなどのホスト装置30Aと接続され、ホスト装置30Aの外部メモリとして機能する。また、記憶装置20Aは、RS232Cインタフェース(RS232C I/F)などの通信インタフェース3を介して、デバッグ用/製造検査用機器200との間でデータを送受信することができる。記憶装置20Aは、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、コントローラとしてのドライブ制御回路4Aと、揮発性半導体メモリとしてのDRAM1と、電源回路5と、状態表示用のLED6と、ドライブ内部の温度を検出する温度センサ7と、フューズ8とを備えている。そして、ドライブ制御回路4A内には、データ無効化モジュール24、パスワード認証モジュール25、データ記憶モジュール26、データ読出モジュール27、SRAM(Static Random Access Memory)115を持つ。
【0022】
本実施形態においては、不揮発性半導体メモリとしてNANDメモリ10を使用している。NANDメモリ10は、例えば、4並列動作を行う4つの並列動作要素10a〜10dを有し、1つの並列動作要素は、2つのNANDメモリパッケージを有する。各NANDメモリパッケージは、積層された複数のNANDメモリチップ(例えば、1チップ=2GB)によって構成されている。図2の場合は、各NANDメモリパッケージは、積層された4枚のNANDメモリチップによって構成されており、NANDメモリ10は64GBの容量を有する。各NANDメモリパッケージが、積層された8枚のNANDメモリチップによって構成されている場合は、NANDメモリ10は128GBの容量を有することになる。
【0023】
DRAM1は、ホスト装置30AとNANDメモリ10との間でのデータ転送用キャッシュおよび作業領域用メモリとして機能する。また、DRAM1の代わりに、FeRAMを使用してもよい。ドライブ制御回路4Aは、ホスト装置30AとNANDメモリ10との間でDRAM1を介してデータ転送制御を行うとともに、記憶装置20A内の各構成要素を制御する。また、ドライブ制御回路4Aは、状態表示用LED6にステータス表示用信号を供給するとともに、電源回路からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を自回路内および記憶装置20A内の各部に供給する機能も有している。なお、LED6は、記憶装置20自体には無く、例えばホスト装置に設けたLED6を点灯させるための信号を出力するための端子のみを設けてあってもよい。
【0024】
各NANDメモリチップは、データ消去の単位である物理ブロックを複数配列して構成されている。図3の(a)は、NANDメモリチップに含まれる1個の物理ブロックの構成例を示す回路図である。各物理ブロックは、X方向に沿って順に配列された(p+1)個のNANDストリングを備えている(pは、0以上の整数)。(p+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
【0025】
各メモリセルトランジスタMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(Metal Oxide Semiconductor Field Effect Transistor)から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)、および電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタMTは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタMTは、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
【0026】
また、メモリセルトランジスタMTは、浮遊ゲート電極を有する構造に限らず、MONOS(Metal-Oxide-Nitride-Oxide-Silicon)型など、電荷蓄積層としての窒化膜界面に電子をトラップさせることでしきい値調整可能な構造であってもよい。MONOS構造のメモリセルトランジスタMTについても同様に、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
【0027】
各NANDストリングにおいて、(q+1)個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、複数のメモリセルトランジスタMTは、隣接するもの同士で拡散領域(ソース領域若しくはドレイン領域)を共有するような形でY方向に直列接続される。
【0028】
そして、最もドレイン側に位置するメモリセルトランジスタMTから順に、制御ゲート
電極がワード線WL0〜WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
【0029】
ワード線WL0〜WLqは、物理ブロック内のNANDストリング間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。別言すれば、ブロック内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一のワード線WLに接続されている。この同一のワード線WLに接続される(p+1)個のメモリセルトランジスタMTは1ページ(物理ページ)として取り扱われ、この物理ページごとにデータの書き込みおよびデータの読み出しが行われる。
【0030】
また、ビット線BL0〜BLpは、ブロック間で、選択トランジスタST1のドレインを共通に接続している。別言すれば、複数のブロック内において同一列にあるNANDストリングは、同一のビット線BLに接続されている。
【0031】
図3の(b)は、例えば、1個のメモリセルトランジスタMTに2ビットの記憶を行う4値データ記憶方式でのしきい値分布を示す模式図である。4値データ記憶方式では、上位ページデータ“x”と下位ページデータ“y”で定義される4値データ“xy”の何れか1つをメモリセルトランジスタMTに保持可能である。
【0032】
この、4値データ“xy”は、メモリセルトランジスタMTのしきい値電圧の順に、例えば、データ“11”、“01”、“00”、“10”が割り当てられる。データ“11”は、メモリセルトランジスタMTのしきい値電圧が負の消去状態である。
【0033】
下位ページ書き込み動作においては、データ“11”(消去状態)のメモリセルトランジスタMTに対して選択的に、下位ビットデータ“y”の書き込みによって、データ“10”が書き込まれる。上位ページ書き込み前のデータ“10”のしきい値分布は、上位ページ書き込み後のデータ“01”とデータ“00”のしきい値分布の中間程度に位置しており、上位ページ書き込み後のしきい値分布よりブロードであってもよい。上位ページ書き込み動作においては、データ“11”のメモリセルと、データ“10”のメモリセルに対して、それぞれ選択的に上位ビットデータ“x”の書き込みが行われて、データ“01”およびデータ“00”が書き込まれる。
【0034】
図4は、第1の実施形態に係るNANDメモリ内のデータを説明するための模式図である。図4では、ホスト装置30Aから見たNANDメモリ10の記憶領域の区分を模式的に示している。不揮発性半導体メモリであるNANDメモリ10は、図4に示すように、一般ユーザがアクセス不可の特殊LBA(Logical Block Addressing)領域(システムエリア)11a、さらにLBAも割り当てられていない特殊領域11cと、一般ユーザがアクセス可能な通常LBA領域(ユーザエリア)11bと、に区分される。
【0035】
ここで、ユーザエリア11bは、ホスト装置30Aからのコマンド(Readコマンド/Writeコマンドなど)によってアクセス可能なLBA領域(論理アドレス領域)であるのに対し、非ユーザ領域であるシステムエリア11a、特殊領域11cは、ホスト装置30Aから発出される通常のコマンドではアクセスすることができない領域である。NANDメモリ11のうち、LBAが対応付けされていない領域が、特殊領域11cである。本実施の形態では、非ユーザ領域は、管理情報の記録等に用いられる特殊LBA領域(システムエリア)11aと、それ以外の、ファームウェアが記録された領域等、またフリーブロックFBを含むLBAが割り当てられていない領域が属する特殊領域11cで構成される。
【0036】
なお、システムエリア11a、特殊領域11cは、記憶装置20A(SSD)の内部に展開されるファームウェア(FW)を構成するモジュールが発出するコマンドによってアクセスすることが可能である。また、特殊領域11cに格納されたファームウェア(FW)は、後述のブート用プログラムによって、起動時に読み出されて例えばSRAM115に展開されて実行される。
【0037】
なお、これらのシステムエリア11a、ユーザエリア11b、特殊領域11cは、物理的にそれぞれ連続した物理領域として存在する必要はなく、NANDメモリ11の個々の物理管理単位が、それぞれこれらの領域に属する。また、個々の物理管理単位が属する領域は、固定ではなく、記憶装置20の使用とともに変化していく。例えば、特殊領域11cとして使用していたブロックが解放されフリーブロックFBとなった後、このフリーブロックFBにユーザデータが記録されると、以降は通常LBA領域11bとして使用される。このように個々の物理管理単位が属する領域は、固定ではなく、記憶装置10の使用とともに、変化していく。
【0038】
これらのシステムエリア11a、ユーザエリア11bおよび特殊エリア11cについて、具体例を用いて説明する。いま、記憶装置20Aの記憶領域のサイズを、例えば64GBとすると、この64GBの領域はユーザ領域である。なお、ここでいう64GBの領域というのは、LBAの範囲が64GBという意味であり、常に物理的に64GBのNANDメモリ11が割り当てられているという意味ではない。一方、記憶装置20Aには、ホスト装置30Aからアクセスできる当該64GBの領域(ユーザ領域)以外に、記憶装置20Aの内部情報を保存するための領域として、所定サイズ(例えば、1論理ブロック分程度)の領域(非ユーザ領域)がLBA上にマップされる。この64GBの領域がユーザエリア11bであり、所定サイズの領域がシステムエリア11aであり、これらに属さない領域が特殊領域11cである。なお、ここではファームウェアが特殊エリア11cに記録されるとしているが、特殊LBA領域に記録してもよい。
【0039】
システムエリア11aは、例えば、記憶装置20Aを管理する管理データ、SMART情報などを保存するために使用される。このシステムエリア11aに格納される管理データは、ユーザエリア11bに格納されるユーザデータと同じ管理方式でハンドリングされ、ユーザエリア11bがマップされ得る全ての論理ブロックに割り当てが可能である。
【0040】
システムエリア11aは、例えば、第1ユーザ認証情報を記憶する。第1ユーザ認証情報は、正規のホスト装置30Aを使用する正規のユーザを認証するためのものである。第1ユーザ認証情報としては、正規のユーザのパスワードPを一例として用いるが、この例に限定されない。例えば、第1ユーザ認証情報としてユーザIDを用いてもよいし、パスワードPおよびユーザIDの両方を用いてもよい。第1ユーザ認証情報は、例えば初期設定時に、パスワード認証モジュール25からシステムエリア11aに予め書込まれる。なお、ここではユーザ認証としたが、正規のホスト装置であることを認証するための機器認証情報等、なんらかの認証情報が予め書き込まれるように変更可能である。
【0041】
ユーザエリア11bは、ユーザデータDを記憶している。データ記憶モジュール26は、有効データを保持しないNANDメモリ10上に、データを記憶する機能を持つ。データ記憶モジュール26は、ホスト装置30Aから送られた論理アドレスとユーザデータDを受け取り、有効データを保持しないNANDメモリ10上のブロックに書き込み、その物理アドレスと、ホスト装置30Aから送付された論理アドレスの対応状況を、システムエリア11a内のアドレス変換情報に書込む。アドレス変換情報は、例えば、論理アドレスと物理アドレスとを対応付けした論物変換テーブルである。
【0042】
図5は、アドレス変換情報の構成例を示す図である。同図に示すように、アドレス変換情報は、ホスト装置30Aが指定する論理アドレスとしてのLBAとNANDメモリ10上でのデータ記憶位置である物理アドレスとの対応関係を示す情報である。
【0043】
データ読出モジュール27は、NANDメモリ10から、指定された論理アドレスのデータを読み出す機能を持つ。ホスト装置30Aから指定されたアドレスのデータを出力するよう要求された場合、システムエリア11a内に保持したアドレス変換情報から、ドライブ制御回路4A内のアドレス変換手段(図示せず)が、論理アドレスを物理アドレスに変換して、その物理アドレスからユーザデータDを読み出し、ホスト装置30Aに出力する。
【0044】
アドレス変換情報には、初期時は、論理アドレスに対応する物理アドレスは登録されていない。そのため、データ読出モジュール27は、読み出し要求を受けると、ホスト装置30Aによって書き込まれたものではないデータを出力、あるいはエラーをホスト装置30Aに通知するなどの動作をする。
【0045】
この実現方法としては、例えば、初期時のアドレス変換情報を、論理アドレスに対応するユーザデータDを記憶した物理アドレスが存在しない状態とし、記憶時に、論理アドレスに対応する物理アドレスを登録する。前記アドレス変換手段は、アドレス変換情報に対応する物理アドレスが存在しない場合に、例えばゼロの値のみでなるデータを出力する、もしくはエラーをホスト装置30Aに通知する。
【0046】
若しくは、例えば、初期時のアドレス変換情報を、全ての論理アドレスが1つの固定データを記憶した特殊ブロックの物理アドレスを示すようにしておく。そして、ホスト装置30Aから読み出し要求が来ると、この特殊ブロックを読み出して得たデータをホスト装置30Aに出力するようにしてもよい。
【0047】
なお、これらの例に限定されず、様々な記憶装置20Aの実現方法がある。アドレス変換情報において、論理アドレスに対応するユーザデータDを記憶した物理アドレスが登録されていない状態では、NANDメモリ10上にユーザデータDが記憶されていたとしても、ホスト装置30Aからの要求でユーザデータDを出力できない。
【0048】
本実施形態のドライブ制御回路4Aは、データ無効化モジュール24を制御する。データ無効化モジュール24は、認証失敗時のユーザデータの無効化処理を行う。ユーザデータの無効化処理は、ホスト装置30AからユーザデータDを読み出しできなくする処理である。
【0049】
図6は、第1の実施形態に係るドライブ制御回路のハードウェア的な内部構成例を示すブロック図である。ドライブ制御回路4Aは、データアクセス用バス101、第1の回路制御用バス102、および第2の回路制御用バス103を備えている。第1の回路制御用バス102には、ドライブ制御回路4A全体を制御するプロセッサ104が接続されている。第1の回路制御用バス102には、NANDメモリ10に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されたブートROM105がROMコントローラ106を介して接続されている。また、第1の回路制御用バス102には、図2に示した電源回路5からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を各部に供給するクロックコントローラ107が接続されている。
【0050】
第2の回路制御用バス103は、第1の回路制御用バス102に接続されている。第2の回路制御用バス103には、図2に示した温度センサ7からのデータを受けるためのI2C回路108、状態表示用LED6にステータス表示用信号を供給するパラレルIO(PIO)回路109、RS232C I/F3を制御するシリアルIO(SIO)回路110が接続されている。
【0051】
ATAインタフェースコントローラ(ATAコントローラ)111、第1のECC(Error Checking and Correction)回路112、NANDコントローラ113A、およびDRAMコントローラ114は、データアクセス用バス101と第1の回路制御用バス102との両方に接続されている。ATAコントローラ111は、ATAインタフェース2を介してホスト装置30Aとの間でデータを送受信する。データアクセス用バス101には、データ作業領域作業領域およびファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NANDメモリ10に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。
【0052】
NANDコントローラ113Aは、NANDメモリ10とのインタフェース処理を行うNAND I/F117、第2のECC回路118、ランダマイズ回路122、およびNANDメモリ10−DRAM20間のアクセス制御を行うDMA転送制御用DMAコントローラ119を備えている。第2のECC回路118は第2の訂正符号のエンコードを行い、また、第1の誤り訂正符合のエンコードおよびデコードを行う。第1のECC回路112は、第2の誤り訂正符号のデコードを行う。第1の誤り訂正符号、第2の誤り訂正符号は、例えば、ハミング符号、BCH(Bose Chaudhuri Hocqenghem)符号、RS(Reed Solomon)符号、或いはLDPC(Low Density Parity Check)符号等であり、第2の誤り訂正符号の訂正能力は、第1の誤り訂正符号の訂正能力よりも高いとする。ランダマイズ回路122は、NANDメモリ10に記憶させるデータをランダマイズ化する回路であるが、省略してもよい。
【0053】
ランダマイズ回路122は、例えばDMAコントローラ119と第2のECC回路118との間に配置される。なお、ランダマイズ回路122を、第2のECC回路118とNAND I/F117との間に配置してもよい。図6では、DMAコントローラ119にランダマイズ回路122を接続し、ランダマイズ回路122に第2のECC回路118を接続した場合を示している。
【0054】
不揮発性半導体メモリとして主に用いられるNANDメモリ10の特性として、データをランダム化して記録した方が、寿命が延びるという特性があり、近年の微細化の進んだNANDメモリを用いる記憶装置においては、データがランダマイズ化されて記録される。ランダム化の方式としては、可逆変換が使われるが、疑似乱数(暗号に使えるような暗号的な意味での乱数の必要はない)を使用する方法や、暗号アルゴリズムを固定鍵で使う方法がある。
【0055】
また、鍵が固定でなくとも鍵長が短ければ、暗号強度は弱まるが、NANDメモリの寿命延長上は十分である。これらのデータランダマイズ用のハードウェアは、データを保護するための暗号化機能に比べて、簡単なハードウェアで実現できる。いずれにせよ、暗号化ドライブで使うランダム化のためのハードウェアより、簡単なハードウェアでランダマイズすることが多いので、仮に記憶装置20Aを分解して、NANDメモリ10から直接データを読み出しても、容易にランダマイズ前の元データを得ることはできない。
【0056】
本実施形態のドライブ制御回路4Aは、記憶装置20Aへの電源供給が開始されてからの経過時間を計測する経過時間計測部130を備えている。経過時間計測部130は、カウントした経過時間を、プロセッサ104に送る。経過時間計測部130で計測されたカウント値は、ホスト装置30Aから認証コマンドとして送信される時刻情報との間における、時刻情報の時間的な整合性の判定に用いられる。
【0057】
次に、図7を参照して、記憶装置20Aの構成について説明する。図7は、第1の実施形態に係る記憶装置の機能構成を示す図である。図7に示すように、記憶装置20Aは、コマンド受付部201、時刻情報判定部202、パスワード認証部204、データ無効化部205A及び記憶部206を備えている。
【0058】
コマンド受付部201は、ホストIF(ATAインタフェース2)を介して入力されるコマンド(認証コマンド)の受け付けに関する制御を行う機能部である。具体的には、コマンド受付部201は、コマンドの受け付け開始時(記憶装置20Aの電源投入時)において、記憶部206に保持された起動時無効化フラグ及び不正使用フラグの状態を確認する。両フラグがセットされていない場合、コマンド受付部201は、前回の記憶装置20Aの電源断が正当に行われたと判断し、ホスト装置30Aからのコマンドの受け付けを開始する。なお、起動時無効化フラグ及び不正使用フラグの何れかがセットされていた場合、コマンド受付部201は、不正な操作が行われたと判断し、コマンドの受け付けを停止する。
【0059】
ここで、起動時無効化フラグは、記憶装置20Aに不正な操作の疑いがある所定の操作(例えば、パスワード認証の失敗等)が行われた場合にセットされるフラグ情報である。また、不正使用フラグは、不正な操作と定義された所定の操作(例えば、パスワード認証を所定回数失敗する等)が行われた場合にセットされるフラグ情報である。
【0060】
また、コマンド受付部201は、記憶装置20Aの動作中において、不正使用フラグがセットされると、ホスト装置30Aからのコマンド受け付けを所定時間停止し、この所定時間が経過した後、コマンド受け付けを再開する。なお、コマンド受け付けの停止時間は、設定情報として記憶部206(フラッシュメモリ等)に予め設定されているものとする。
【0061】
時刻情報判定部202は、ホスト装置30Aから認証コマンドとして送信される時刻情報と、経過時間計測部130でカウントされるカウンタ値とに基づいて、時刻情報の時間的な整合性を判定する時刻情報判定処理を実行する。なお、時刻情報判定処理の詳細については、後述する(図5参照)。
【0062】
パスワード認証部204は、認証コマンドに含まれるパスワードと、当該パスワードとの照合用として記憶部206に記憶された後述する照合用パスワードとを比較し、両パスワードが一致するか否かを判定することで、パスワードの認証を行う。
【0063】
また、パスワード認証部204は、一定時間あたりの認証コマンドの入力回数を検出し、この入力回数が所定の上限値を上回った場合に、認証コマンドの入力が短時間に連続して行われたと判定する。この場合、後述するようにブルートフォースアタック(総当たり攻撃)等のパスワードアタックが行われている可能性があるため、パスワード認証部204は、不正な操作と判断する。なお、不正な操作と判定する際の上限値は、設定情報として記憶部206(フラッシュメモリ等)に予め設定されているものとする。
【0064】
また、パスワード認証部204は、パスワードの不一致を確認すると(パスワード認証に失敗すると)、不正な操作の可能性があると判断し、起動時無効化フラグをセットする。さらに、パスワード認証部204は、パスワード認証に所定回数失敗すると、不正な操作と判断し、不正使用フラグをセットする。なお、パスワード認証に成功した場合には、起動時無効化フラグ及び不正使用フラグのセットの解除(クリア)し、記憶装置20Aへのアクセスを許可する。
【0065】
データ無効化部205Aは、上記各機能部の判定(判断)結果に応じて、NANDメモリ10内のユーザデータDの無効化を行う機能部である。ここで、ユーザデータの無効化とは、ホスト装置30Bなどの不正なホスト装置からユーザデータを読み出しできなくする処理である。換言すると、NANDメモリ10に記録されたデータが読み取られてしまうことを防止するものである。
【0066】
記憶部206は、記憶装置20Aが備える不揮発性メモリ(NANDメモリ10など)の所定の記憶領域により実現される機能部であって、後述するコマンド受付処理の実行に係る各種の情報を記憶する。
【0067】
具体的には、記憶部206は、コマンド受付処理の実行に係る情報として、照合用パスワード、パスワード設定日時、上述した起動時無効化フラグ及び不正使用フラグ等を記憶している。
【0068】
ここで、照合用パスワードは、記憶装置20Aの利用に係る正規のパスワードであって、ホスト装置30A,30Bなどから送信されるパスワードとの照合に用いられる。パスワード設定日時は、照合用パスワードが設定された日時を表す情報である。なお、パスワード設定日時は、上述した時刻情報と同様、所定の年月日(例えば、1900年1月1日)から起算した秒数で表されている。
【0069】
ここで、データ無効化部205Aによる、ユーザデータDの具体的な無効化方法について説明する。ユーザデータDの無効化方法としては、例えば、以下の5つの方法がある。
【0070】
(第1の無効化方法)
ユーザデータDの無効化の第1の方法として、前述のアドレス変換情報を初期化する方法がある。初期化とは、論理アドレスに対応するユーザデータDを記録した物理アドレスが無い状態にすることである。この方式の場合、アドレス変換情報の大きさは、記憶装置20A全体のデータ量に対して、非常に小さいため、きわめて短時間でユーザデータDの無効化を実施できる。
【0071】
これにより、アドレス変換情報を初期化した記憶装置20Aから、NANDメモリ10上のデータを、論理アドレスを介さずに、例えば物理アドレスを指定して読み出す手段を別に設けなければ、インタフェース経由でユーザデータDを読み出すことは不可能になる。なお、ランダマイズ回路122が備えられていれば、前述のように仮に分解して、NANDメモリ10から直接データを読み出しても、容易にランダマイズ前の元データを得ることはできない。
【0072】
なお、実際の実装にあたっては、管理の都合から、外部から与えられた論理アドレスを、機器内部の内部論理アドレスに変換して、しかるのち内部論理ブロックアドレスへ変換し、最後に物理アドレスに変換するという複数段階の構成をとることもできる。前述の説明でいうアドレス変換情報を無くすという操作は、この外部から与えられた論理アドレスから、最終的な物理アドレスへの変換過程の、何れか1箇所で行えばよい。実装の一例として、NANDメモリ10の物理アドレス空間を、機器起動時に必要な情報(ドライブ制御回路4Aの制御プログラム等)を記録した特殊領域11cと、残りの機器内部用論理アドレス空間用と、に分ける。さらに、機器内部アドレス空間は、外部から与えられる論理アドレス空間をマッピングした領域(ユーザエリア11b)と、ドライブ制御回路4Aがシステムエリア11aとして使う特殊LBA領域に分けて使うことができる。この場合、ユーザデータD用にマッピングした内部アドレス空間から物理アドレスへの変換情報のみ破棄することにより、記憶装置20Aの動作に必要なシステムエリア11aの情報を失わず、不正なホスト装置からのデータアクセスを不能にすることができる。
【0073】
(第2の無効化方法)
ユーザデータDの無効化の第2の方法として、前記NANDメモリ10内のユーザデータを記録した領域(ユーザエリア11b)を消去する方法がある。NANDメモリ10は、磁気記録を用いたハードディスクドライブとは異なり、上書きができないので、ブロック単位で消去してから記録する。そして、時間がかかるのは記録(書き込み)であるので、消去だけであれば、非常に高速に可能である。これにより、実際に記録されたデータそのものを消去することが可能である。例えば,1ブロックの消去と記録が200ms必要なところが、5ms以下で消去でき、1ブロック全体上書きによる消去の1/40以下の時間で消去が可能になる。
【0074】
なお、NANDメモリ10を用いた記憶装置20Aでは、通常の記録動作時において、前述のアドレス変換情報からブロックが除かれた時など、有効なデータを保持しなくなった時点(フリーブロックになった時点)で消去する場合と、フリーブロックになった時には消さずに、データを記録する直前に消す方法がある。
【0075】
ユーザデータDの無効化における消去では、フリーブロックになったか否かを問わず、ユーザデータDが記録されている可能性のある全ブロックを実際に消去してもよい。1つのNANDブロック中に、ユーザデータDと、記憶装置20Aの内部情報が混在して記録されている場合は、ユーザデータD以外のデータを別のブロックにコピーしてからユーザデータDを消去する。アドレス変換情報を初期化せずに、対応するブロックの情報を消去してしまうと、読みだしたデータは、エラー訂正符号も合わなくなるので、その後は読み出すと、その後は全て訂正不能UNC(Uncorrectable Error)になる。このため、ブロックを消去する場合には、前述のアドレス変換情報の消去と組み合わせることが望ましい。なお、アドレス変換情報の消去とブロックの消去は、どちらを先に行ってもよい。
【0076】
(第3の無効化方法)
さらに、ユーザデータDの無効化の第3の方法として、前記第2の無効化方法における消去を不完全な消去とする方法がある。NANDメモリ10を用いた記憶装置20Aにおいては、本方法を用いれば、データ無効化による消去を不完全ながら高速に行うことができる。
【0077】
通常のNANDメモリ10の消去は、記録可能になるまで完全消去している。NANDメモリ10を消去する場合は、対象のブロック中のワード線WL0〜WLqを選択し(ワード線の電位を0Vとし)、ビット線BL0〜BLpをフローティング状態にした後、Si基板のP−Wellに所定の電圧を所定時間加えることで、浮遊ゲート中の電子を抜き出す。その後、消去状況の確認(Erase Verify)を行い、完全に消えていなければ、また消去するという操作を数回繰り返すことによって完全に消去する。
【0078】
一方、ユーザデータDを読めなくさせることだけが目的であれば、消去操作を1回だけ行い、又は消去回数を減らし、Erase Verify(消去ベリファイ)を省略にすることにより、消去時間を短縮できる。この場合、完全にはユーザデータDが消去されていない状態だが、各セルの値はばらばらに変化しており、事実上読み出し不能になる。このように、ここでいう不完全な消去というのは、再記録には不十分だが、データ読出しの阻止という意味では十分な消去である。
【0079】
なお、消去回数は、1回に限らず複数回であってもよい。この場合であっても、完全なブロック消去より高速にユーザデータDを消去することが可能となる。また、1回の消去時間(消去電圧の印加時間)を、ユーザデータDを読み出し不能にさせるために十分な時間にするなどの調整を行ってもよい。なお、消去作業により、全セルの電圧が均等に下がるのではなく、メモリセル毎にばらばらに下がる。このため、仮にメモリセルに電位が残っていても、読み出しレベル(読み出し時にワード線に印加する電圧)を変えるなどして再現(読み出したユーザデータDの復元)することは極めて困難になる。
【0080】
なお、ユーザデータDの無効化を行う際に、Erase Verifyを行ってもよい。この場合、例えば、特開2003−249083号公報に記載の消去ベリファイなどによって、ユーザデータDの無効化を行う。
【0081】
なお、第3の無効化方法で消去したブロックに新たなユーザデータDを記録してしまうと、データ化けが発生してしまうので、新たなユーザデータDの記録前には、再度、通常の消去動作をする必要がある。フリーブロックを記録直前に消去してから使う方式のSSDであれば、特に不完全な消去をしたことを覚えておく必要はない。フリーブロック化時に消去する方式のSSDであれば、不完全な消去をしたブロックを記憶装置20A内部の管理情報として記録しておき、後に、再度完全消去する必要がある。
【0082】
(第4の無効化方法)
さらに、ユーザデータDの無効化の第4の方法として、前記第2、第3の無効化方法において、Chip内の複数ブロックを同時に消去する方法がある。この方法では、例えば特開平8−306196号公報に記載の消去方法などによって、Chip内の複数ブロックを同時に消去する。この方法により、第2、第3の無効化方法よりも、さらに高速にユーザデータDの無効化を行うことが可能となる。
【0083】
(第5の無効化方法)
さらに、ユーザデータDの無効化の第5の方法として、1回の操作で、NANDメモリchip中のデータを消す方法がある。この方法では、Chip中の全てのワード線を選択し、P−Wellに電圧を加えることによって、Chip全体を消去する。なお、この方法では消費電力が大きくなる場合があるので、複数のchipをまとめて消すことができない場合は、chipを1枚ずつ消すなどの制御が必要となる。
【0084】
なお、NANDメモリ10を用いた記憶装置20Aでは、NANDメモリ10中にも、ドライブの制御プログラムであるファームウェアや、制御プログラムが用いる前述のアドレス変換情報などの管理情報も記録される。このため、本方法を用いると、これらのデータも全て消去することになり、消去後は、記憶装置として動作しなくなる。換言すると、この方法では、ユーザデータDの消去後に記憶装置20Aがもはや機能しなくなる故障状態となる。したがって、ユーザデータDの復元を不能にすることが可能となる。
【0085】
なお、chip全体のデータ無効化としては、消去の他に、全てのメモリセルの電位が上がる方向に記録電圧をかけてユーザデータDにデータの上書きをしてもよい。具体的には、全ビット線BL0〜BLpを0にして、全ワード線WL0〜WLqにプログラム電圧を与えてしまえばよい。
【0086】
ユーザデータDの消去後は、次の起動時にブートROM105に格納されたブート用プログラムが、ファームウェアを見つけられずエラーが検出される。そして、インタフェース経由によって、またはドライブアクセス状況の通知用のLEDの信号性を利用して、ファームウェアが存在しないことを示すことにより、外部から他の故障と区別することが可能となる。
【0087】
なお、本実施形態におけるユーザデータDの無効化処理は、前述の記憶装置20A内部の全てのデータを消す方法以外が好ましい。すなわち、第1から第4の方法が好ましい。
【0088】
(その他の無効化方法)
なお、上述した方法以外にも、ユーザデータDの無効化処理は、様々な方法が考えられる。例えば、単に、前述のシステムエリア11aに、ユーザデータDが無効化処理されていることを示す情報を記録し、この記録がある場合、以後のホスト装置からの読み出し命令に応答しなくする方法がある。この場合、ホスト装置から書き込み命令を受け取る前に、少なくとも、アドレス変換情報を初期化する必要がある。もしくは、無効化処理がされている論理アドレスを記録する必要がある。また、他の方法として、実際に論理アドレスに対応するユーザデータDを全て意味の無いデータ(例えば0)で上書きしてしまう方法がある。
【0089】
以上のように、ユーザデータDの無効化処理には、様々な方法を取りうるので、ユーザデータDの無効処理にあたって使用する方法を、ホスト装置30Aから予め設定できるようにしてもよい。
【0090】
すなわち、記憶装置20Aのシステムエリア11aに、前述および後述の実施形態で述べる各種情報に加え、ユーザデータDの無効化方式を記憶させておく。この場合、消去方式によっては併用できるものもあるので、記憶できる方式は2種類以上であってもよい。パスワード認証モジュール25は、前述した各機能に加え、ユーザデータ無効化方式の設定要求を正規のホスト装置30Aから受けると、当該ユーザデータ無効化方式情報をシステムエリア11aに設定(記憶)する設定機能をもっている。
【0091】
例えば、パスワード認証モジュール25は、前述の第1の無効化方法(アドレス変換情報の初期化)のみ設定、前述の第2の無効化方法(ユーザデータを保持するブロックの完全消去)のみ設定、前述の第3の無効化方法(ユーザデータを保持するブロックの不完全消去)のみ設定、といった単独の無効化方法の設定を行ってもよい。また、パスワード認証モジュール25は、前述の第1の無効化方法(アドレス変換情報の初期化)と、前述の第3の無効化方法(不完全なユーザデータ消去)と、の組み合わせの設定を行ってもよい。これらを実現するには、ユーザデータ無効化方式のそれぞれの方式毎に、実施の可否を設定(記憶)してもよいし、可能な組み合わせ毎に番号を与え、その番号を記憶してもよい。あるいは、無効化の強度に応じてレベル付を行い、そのレベルで設定できるようにしてもよい。そして、パスワード認証モジュール25は、ユーザデータ無効化処理の実施の際、システムエリア11a内に記憶した無効化方式情報に基づいて、ユーザデータDの無効化処理を実施する機能を持っている。以上の構成により、ホスト装置30Aから設定したユーザデータ無効化方式を用いて、ユーザデータDの無効化が実行される。
【0092】
次に、図8〜図11を参照して、上述した構成の記憶装置20Aの動作について説明する。図8は、記憶装置が実行するコマンド受付処理の手順を示すフローチャートである。図示しない電源ボタンの操作によりホスト装置30Aの電源がオンとされ、記憶装置20Aへの電源供給が開始されると、経過時間計測部130はカウントを開始する(ステップS11)。
【0093】
続いて、コマンド受付部201は、記憶部206に保持された起動時無効化フラグの状態を確認し、セットされているか否かを判定する(ステップS12)。ここで、起動時無効化フラグがセットされていると判定した場合(ステップS12;Yes)、コマンド受付部201は、前回の動作時に不正な操作が行われた疑いがあると判断する。この場合、
データ無効化部205Aは、ユーザデータDを無効化し(ステップS31)、本処理を終了する。
【0094】
ステップS12において、起動時無効化フラグがセットされていないと判定した場合(ステップS12;No)、コマンド受付部201は、不正使用フラグがセットされているか否かを判定する(ステップS13)。ここで、不正使用フラグがセットされていると判定した場合(ステップS13;Yes)、コマンド受付部201は、前回の動作時に不正な操作が行われたと判断する。この場合、データ無効化部205Aは、ユーザデータDを無効化し(ステップS31)、本処理を終了する。
【0095】
また、コマンド受付部201は、起動時無効化フラグ及び不正使用フラグがともにセットされていないと判定すると(ステップS13;No)、認証コマンドの受け付けを開始し(ステップS14)、ホスト装置30Aから認証コマンドを受信するまで待機する(ステップS15;No)。そして、ホスト装置30Aから認証コマンドを受信すると(ステップS15;Yes)、時刻情報判定部202は、この認証コマンドに対し時刻情報判定処理を実行する(ステップS16)。ここで、図9を参照して、ステップS16の時刻情報判定処理について説明する。
【0096】
図9は、時刻情報判定処理の手順を示すフローチャートである。まず、時刻情報判定部202は、認証コマンドに時刻情報が含まれているか否かを判定する(ステップS161)。ここで、時刻情報が含まれていないと判定した場合(ステップS161;No)、時刻情報判定部202は、受信した認証コマンドを不正なコマンドと判断する。この場合、データ無効化部205Aは、ユーザデータDを無効化し(ステップS167)、本処理を終了する。
【0097】
また、認証コマンドに時刻情報が含まれている場合(ステップS161;Yes)、時刻情報判定部202は、記憶部206に前回受信時情報が記憶されているか否かを判定する(ステップS162)。ここで、前回受信時情報が記憶部206に記憶されていないと判定すると(ステップS162;No)、時刻情報判定部202は、ステップS168の処理に移行する。
【0098】
一方、前回受信時情報が記憶されていると判定した場合(ステップS162;Yes)、時刻情報判定部202は、この前回受信時情報を記憶部206から読み出す(ステップS163)。次いで、時刻情報判定部202は、前回受信時情報に含まれるカウンタ値と、経過時間計測部130の現在のカウント値との差分から、前回の認証コマンドを受信してから今回の認証コマンドを受信するまでの経過時間を算出する(ステップS164)。
【0099】
続いて、時刻情報判定部202は、前回受信時情報に含まれた時刻情報にステップS164で算出した経過時間を加算し、計算時刻を導出する(ステップS165)。そして、時刻情報判定部202は、この計算時刻と入力された認証コマンドに含まれる時刻情報とを比較し、時刻情報の表す値(秒数)が、計算時刻の表す値(秒数)以上か否かを判定する(ステップS166)。
【0100】
ここで、図10を参照し、上記ステップS164〜S166の動作について説明する。図10は、時刻情報判定処理を説明するための図である。まず、ホスト装置30Aにおいて、2010年11月12日13時14分15秒に認証コマンド(以下、第1認証コマンドという)が送信されると、記憶装置20Aはこの第1認証コマンドを受け付ける。図10では、第1認証コマンドに含まれるパスワードを“ABCDEFGH”としており、時刻情報を“D08A5F27”で表している。また、記憶装置20Aでは、経過時間計測部130のカウンタ値が100(秒)の時に、第1認証コマンドを受信しているため、時刻情報“D08A5F27”とカウンタ値“100”との組が、後述するステップS168の処理で前回受信時情報として記憶される。
【0101】
その後、ホスト装置30Aから、2010年11月12日13時24分15秒に認証コマンド(以下、第2認証コマンドという)が送信されると、記憶装置20Aはこの第2認証コマンドを受け付ける。図10では、第2認証コマンドに含まれるパスワードを前回同
様“ABCDEFGH”としており、時刻情報を“D08A617F”で表している。なお、記憶装置20Aでは、経過時間計測部130のカウンタ値が700(秒)の時に、第2認証コマンドを受信している。
【0102】
時刻情報判定部202は、要求コマンドが図6に示した条件の場合、第1認証コマンドを受信した際のカウンタ値“100”と、第2認証コマンドを受信した際のカウンタ値“700”との差分“600”を、第1認証コマンドを受信してから第2認証コマンドを受信するまでの経過時間とする。また、時刻情報判定部202は、第1認証コマンドに含まれる時刻情報“D08A5F27”に、経過時間“600”を加算することで、計算時間“D08A617F”を導出する。そして、時刻情報判定部202は、計算時間“D08A617F”と、第2認証コマンドに含まれた時刻情報“D08A617F”とを比較し、時間的な大小関係を判定する。
【0103】
図9に戻り、ステップS166の比較の結果、時刻情報の表す値(秒)が計算時刻の表
す値(秒)よりも小さい場合(ステップS166;No)、計算時間と時刻情報との時間
的な関係に不整合が生じるため、時刻情報判定部202は、不正(不整合)と判断する。
この場合、データ無効化部205Aは、ユーザデータDを無効化し(ステップS167)、本処理を終了する。
【0104】
また、時刻情報が計算時刻以上の場合には(ステップS166;Yes)、計算時間と時刻情報との時間的な関係に不整合が生じないため、時刻情報判定部202は正当(整合)と判断する。そして、時刻情報判定部202は、今回受信した認証コマンドに含まれる時刻情報と、この認証コマンドを受信した時の経過時間計測部130のカウンタ値とを対応付け、前回受信時情報として記憶部206に記憶し(ステップS168)、図8のステップS17に移行する。
【0105】
なお、ステップS166において、時刻情報が計算時刻を超えている場合を正当とする理由は以下のとおりである。前回受信時情報を記憶した後、記憶装置20Aが電源断となると経過時間計測部130のカウンタ値はゼロからカウントを始めることになる。この場合、時刻情報の表す値(秒)は計算時刻の表す値(秒)を上回ることになるが、これは正当な操作であるため、記憶装置20Aの使用を制限する対象とはならない。しかしながら、時刻情報が計算時刻を下回ることは、通常の使用環境では発生しないため、これを不正と判断して、記憶装置20Aの使用を制限している。
【0106】
図8に戻り、パスワード認証部204は、ステップS15で受信した認証コマンドが、短時間に連続して入力されたものか否かを判定する(ステップS18)。例えば、記憶装置20Aが、ブルートフォースアタックに晒されていると、膨大な文字列の組み合わせがパスワードとして高速に入力されることになる。そこで、ステップS18では、このような不正な操作を防止するため、認証コマンドが短時間に連続して入力されたことを検出する。換言すると、不正な操作を防止するために、所定時間内に所定回数以上の認証コマンドが入力されたことが検出される。
【0107】
ステップS18において、認証コマンドが短時間に連続して入力されていることを検出すると(ステップS18;Yes)、パスワード認証部204は、不正な操作が行われて
いると判断する。この場合、データ無効化部205Aは、ユーザデータDを無効化し(ステップS31)、本処理を終了する。
【0108】
また、ステップS18において、短時間に連続して入力されていないと判定すると(ステップS18;No)、パスワード認証部204は、受信した認証コマンドに含まれるパスワードと、記憶部206に記憶された照合用パスワードとを比較し、両パスワードが一致するか否かを判定する(ステップS19)。
【0109】
ここで、パスワードが不一致となった場合(ステップS19;No)、パスワード認証部204は、認証要求回数を1加算する(ステップS20)。なお、認証要求回数は、パスワード認証に失敗した回数を記録するための変数であって、バッファメモリや記憶部206等に保持されているものとする。
【0110】
次いで、パスワード認証部204は、不正な操作の可能性があると判断し、起動時無効化フラグをセットする(ステップS21)。続いて、パスワード認証部204は、認証要求回数が所定回数(以下、認証可能回数という)を上回ったか否かを判定し、認証可能回数以下の場合には(ステップS22;No)、パスワードの不一致をホスト装置30Aに通知し(ステップS23)、ステップS15に再び戻る。
【0111】
また、ステップS22において、認証要求回数が認証可能回数を上回ったと判定した場合(ステップS22;Yes)、パスワード認証部204は、不正使用フラグがセットされているか否かを判定する(ステップS24)。ここで、不正使用フラグがセットされている場合(ステップS24;Yes)、データ無効化部205Aは、不正な操作が行われたと判断する。この場合、データ無効化部205Aは、ユーザデータDを無効化し(ステップS31)、本処理を終了する。
【0112】
また、ステップS24において、不正使用フラグがセットされていないと判定した場合(ステップS24;No)、パスワード認証部204は、不正使用フラグをセットする(ステップS25)。コマンド受付部201は、ステップS25の不正使用フラグのセットに伴い、所定時間の間、ホスト装置30Aからのコマンドの受け付けを停止する(ステップS26)。
【0113】
ここで、ステップS26の処理は、パスワードアタックを目的としたものでなく、クラッキング(故意にNANDメモリ10上のデータを消失させること)のため、一致しないパスワードが多数回入力されるような場合に、故意にNANDメモリ10上のデータを一時的に保護することを目的としている。なお、コマンド受け付け停止期間の間、ホスト装置30A側では記憶装置20Aからのコマンド応答がないため、記憶装置20Aで異常が発生していることを検知することが可能である。そのため、記憶装置20Aの異常発生時に、管理者にメール等で記憶装置20Aの異常報知を自動で行う仕組みをホスト装置30Aに搭載することで、記憶装置20Aの異常に迅速に対処することが可能となる。
【0114】
コマンド受付部201は、所定時間が経過するまで待機し(ステップS27;No)、この所定時間が経過すると(ステップS27;Yes)、コマンドの受け付けを再開し(ステップS28)、ステップS15に再び戻る。
【0115】
一方、ステップS19において、パスワードの一致を確認した場合(ステップS19;Yes)、パスワード認証部204は、起動時無効化フラグ及び不正使用フラグをクリアするとともに、認証要求回数をゼロにリセットする(ステップS29)。そして、記憶装置20A内のMPU(図示せず)は、入力されたコマンドに応じた処理(例えば、データの読み出しや書き込み)を実行し(ステップS30)、ステップS15に再び戻る。
【0116】
以上のように、第1の実施形態によれば、ホスト装置30Aからのコマンド入力時において、記憶装置20Aでは、認証コマンドに含まれた時刻情報と、経過時間計測部130のカウント値とに基づいて当該時刻情報の整合性を判定し、整合が確認された場合にのみパスワード認証を行う。これにより、アクセス元となったホスト装置30Aの正当性を確認することができる。また、不正なホスト装置からアクセスされた場合には、記憶装置20A内のデータを無効化するので、簡便に記憶装置20Aのセキュリティを向上させることができる。
【0117】
(第2の実施形態)
つぎに、図11〜図15を用いてこの発明の第2の実施形態について説明する。第2の実施形態では、ユーザデータDを暗号化してNANDメモリ10内に記憶させるとともに、パスワード認証が失敗となった場合や、短時間に連続して認証コマンドが入力された場合に、暗号化に用いた暗号鍵を無効化する。
【0118】
図11は、第2の実施形態に係るデータ記憶システムの構成の一例を示すブロック図である。図11の各構成要素のうち図2に示す第1の実施形態のデータ記憶システムと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【0119】
本実施形態のデータ記憶システムは、記憶装置20Aの代わりに記憶装置20Bを備えている。記憶装置20Bは、ドライブ制御回路4Aの代わりに、ドライブ制御回路4Bを有している。そして、ドライブ制御回路4Bは、ドライブ制御回路4Aの有する機能に加えて、ユーザデータDを暗号化する機能、復号化する機能を有している。具体的には、ドライブ制御回路4Bは、データ無効化モジュール24、パスワード認証モジュール25、データ記憶モジュール26、データ読出モジュール27、SRAM115に加えて、暗号化モジュール21、復号化モジュール22を具備している。
【0120】
暗号化モジュール21は、ユーザ認証が成功した場合にデータ記憶モジュール26がデータを書き込む際、現在のホスト装置30A(又は30B,…)から受けたユーザデータDを含む書込要求に従い、記憶装置20Bが備えるスタティックRAM(図示せず)内の暗号鍵に基づいて書込要求内のユーザデータDを暗号化して、暗号化データEに変換する暗号化機能をもっている。
【0121】
復号化モジュール22は、ユーザ認証が成功した場合にデータ読出モジュール27がデータを書き込む際、現在のホスト装置30A(又は30B,…)から受けた読出要求に基づいて、ユーザエリア11b内の暗号化データEをスタティックRAM内の暗号鍵に基づいて復号化する復号化機能をもっている。
【0122】
例えば、記憶装置20Bは、SED機能を有しており、AES(Advanced Encryption Standard)等の所定の暗号化方式により暗号化した状態でデータを記憶する。記憶装置20Bは、予め定められたパスワードと時刻情報とに基づいて、ホスト装置からのアクセスが正当なアクセスか否かを判定し、正当と判定された場合にのみ記録媒体へのデータの書き込みや、データの読み出しを許可する。そのため、CPU11では、記憶装置20Bへのアクセスに際し、リード/ライト等を指示するコマンドとともに、予め定められた暗号化解除のためのパスワード、及び、計時部14から取得した時刻情報を含んだ認証コマンドを記憶装置20Bに送信する。
【0123】
また、本実施形態では、データ記憶モジュール26がNANDメモリ10にデータを書き込む前に、暗号化モジュール21でデータを暗号化データEに変換する。また、本実施形態では、データ読出モジュール27が、暗号化されたユーザデータD(暗号化データE)を読み出した後、復号化モジュール22で、平文のユーザデータDに戻してから、ホスト装置30Aに出力する。
【0124】
図12は、第2の実施形態に係るNANDメモリ内のデータを説明するための模式図である。本実施形態のNANDメモリ10は、システムエリア11a内に第1ユーザ認証情報とともに暗号鍵を予め記憶しておく。
【0125】
ここで、暗号鍵は、スタティックRAM(揮発性メモリ)に書き込まれる暗号鍵の一部を構成する鍵データである。本実施形態のユーザエリア11bは、暗号鍵に基づいて暗号化モジュール21により暗号化されたユーザデータDである暗号化データEを記憶している。
【0126】
図13は、第2の実施形態に係るドライブ制御回路のハードウェア的な内部構成例を示すブロック図である。図13の各構成要素のうち図6に示す第1の実施形態のドライブ制御回路4Aと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【0127】
本実施形態のドライブ制御回路4Bは、NANDコントローラ113Aの代わりにNANDコントローラ113Bを備えている。NANDコントローラ113Bは、NANDコントローラ113Aが有するランダマイズ回路122の代わりに暗号化回路121を有している。
【0128】
暗号化回路121は、NANDメモリ10に記憶させるデータを暗号化する回路である。暗号化されたデータは、乱数とみなせるため、ランダマイズ回路122と同じくNANDメモリの寿命延長効果が得られる。
【0129】
暗号化回路121は、例えばDMAコントローラ119と第2のECC回路118との間に配置される。なお、暗号化回路121を、第2のECC回路118とNAND I/F117との間に配置してもよい。図13では、DMAコントローラ119に暗号化回路121を接続し、暗号化回路121に第2のECC回路118を接続した場合を示している。
【0130】
図14は、第2の実施形態に係る記憶装置の機能構成を示す図である。図14に示すように、記憶装置20Bは、記憶装置20Aが有するデータ無効化部205Aの代わりに暗号鍵無効化部205Bを有している。具体的には、記憶装置20Bは、コマンド受付部201、時刻情報判定部202、有効時間判定部203、パスワード認証部204、暗号鍵無効化部205B及び記憶部206を備えている。
【0131】
本実施形態の有効時間判定部203は、暗号鍵を有効とする時間を定めた暗号鍵有効時間に基づき、記憶部206に記憶された暗号鍵がこの暗号鍵有効時間の範囲内か否かを判定する有効時間判定処理を実行する。なお、有効時間判定処理の詳細については、後述する(図15参照)。
【0132】
暗号鍵無効化部205Bは、時刻情報判定部202、有効時間判定部203、パスワード認証部204の各判定(判断)結果に応じて、暗号鍵の無効化を行う機能部である。ここで、暗号鍵の無効化とは、当該暗号鍵を用いたデータの暗号化/復号化を不能とすることを意味する。換言すると、NANDメモリ10に記録されたデータが読み取られてしまうことを防止するとともに、NANDメモリ10にデータが書き込まれてしまうことを防止することを目的とするものである。
【0133】
具体的な無効化方法としては、暗号鍵自体を消去する方法や、暗号鍵に更なる暗号化等を施すことで、暗号鍵を構成する文字列(データ)を他の文字列に置き換える方法等が挙げられる。なお、後者の方法を用いる場合、置き換えが行われた暗号鍵を復元(復号化)する仕組みを記憶装置20Bに実装してもよい。
【0134】
具体的には、記憶部206は、コマンド受付処理の実行に係る情報として、照合用パスワード、暗号鍵、パスワード設定日時、暗号鍵有効時間、上述した起動時無効化フラグ及び不正使用フラグ等を記憶している。
【0135】
暗号鍵は、暗号鍵無効化部205Bにより生成されたものであって、データの暗号化/復号化の際に用いられる。なお、暗号鍵の生成は照合用パスワードの設定時に行われるものとする。また、暗号鍵の生成方法は特に問わず、例えば、照合用パスワードを生成シードに用いてもよい。また、暗号鍵有効時間は、暗号鍵の有効時間(秒単位)を定めた情報であって、パスワード設定日時(暗号鍵の生成日時)を基準としている。
【0136】
次に、上述した構成の記憶装置20Bの動作について説明する。なお、図8で説明した記憶装置20Aと同様の動作については、その説明を省略する。本実施形態の記憶装置20Bは、データ無効化の代わりに、暗号鍵を無効化する。具体的には、起動時無効化フラグがセットされていると判定された場合(ステップS12;Yes)に、暗号鍵無効化部205Bが暗号鍵を無効化する。また、不正使用フラグがセットされていると判定された場合(ステップS13;Yes)に、暗号鍵無効化部205Bが暗号鍵を無効化する。また、認証コマンドが短時間に連続して入力されていることが検出されると(ステップS18;Yes)、暗号鍵無効化部205Bが暗号鍵を無効化する。また、不正使用フラグがセットされている場合(ステップS24;Yes)、暗号鍵無効化部205Bが暗号鍵を無効化する。
【0137】
また、本実施の形態では、ステップS16の時刻情報判定処理の後に、有効時間判定部203が、有効時間判定処理を実行する。以下、図15を参照して、有効時間判定処理について説明する。ここで、図15は、有効時間判定処理の手順を示すフローチャートである。
【0138】
まず、有効時間判定部203は、記憶部206に暗号鍵有効時間が設定されているか否かを判定する(ステップS171)。暗号鍵有効時間が設定されていない場合には(ステップS171;No)、図4のステップS18に移行する。また、暗号鍵有効時間が設定されていると判定した場合(ステップS171;Yes)、有効時間判定部203は、現在の経過時間計測部30のカウンタ値が暗号鍵有効時間を超えているか否かを判定する(ステップS172)。
【0139】
ステップS172において、暗号鍵有効時間を超えたと判定した場合(ステップS172;Yes)、有効時間判定部203は、暗号鍵が失効したと判断する。この場合、暗号鍵無効化部205Bは、暗号鍵を無効化し(ステップS176)、本処理を終了する。
【0140】
また、ステップS172において、経過時間計測部30のカウンタ値が暗号鍵有効時間以下と判定した場合(ステップS172;No)、暗号鍵無効化部205Bは、ステップS173の処理に移行する。なお、ステップS172の判定処理は、ホスト装置30Aの電源投入後、パスワード認証を一度も行わないまま時間が経過したケースに対応するためのものである。
【0141】
続いて、有効時間判定部203は、記憶部206からパスワード設定日時を読み出すと(ステップS173)、このパスワード設定日時に暗号鍵有効時間を加算し、計算時刻を導出する(ステップS174)。そして、有効時間判定部203は、ステップS174で導出した計算時刻と、今回受信した認証コマンドに含まれる時刻情報とを比較し、時刻情報の表す値(秒)が計算時刻の表す値(秒)を上回るか否かを判定する(ステップS175)。
【0142】
ステップS175において、時刻情報が計算時刻を上回ったと判定した場合(ステップS175;Yes)、有効時間判定部203は、暗号鍵が失効したと判断する。この場合、暗号鍵無効化部205Bは、暗号鍵を無効化し(ステップS176)、本処理を終了する。一方、ステップS175において、時刻情報が計算時刻以下と判定した場合(ステップS175;No)、図11のステップS18に移行する。
【0143】
以上のように、第2の実施形態によれば、不正なホスト装置からアクセスされた場合には、記憶装置20A内の暗号鍵を無効化するので、簡便に記憶装置20Aのセキュリティを向上させることができる。
【0144】
このように第1および第2の実施形態によれば、不正なホスト装置からアクセスされた場合には、不揮発性半導体メモリ内のユーザデータDや暗号鍵を無効化するので、簡便に記憶装置20A,20Bのセキュリティを向上させることが可能となる。
【0145】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。例えば、第2の実施形態において、無効化処理のため、暗号鍵無効化部205Bとともに、第1の実施形態のデータ無効化部205Aを備えていてもよい。さらに、設定する無効化方式情報の方式1つに暗号鍵無効化方式を加えてもよい。
【0146】
また、第2の実施形態における暗号鍵有効時間に関わる処理(ステップS171からステップS176)も、暗号鍵をデータ、暗号鍵有効時間をデータ有効時間、暗号鍵無効化をデータ無効化と読み替え、データ有効時間は、データの有効時間(秒単位)を定めた情報であって、パスワード設定日時を基準としているとすれば、第1の実施形態のように暗号化回路121が無い場合にも適用可能である。
【0147】
これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0148】
例えば、上記実施形態では、起動時無効化フラグと不正使用フラグの2つのフラグを用いる形態としたが、不正使用フラグのみ用いる形態としてもよい。また、上記実施形態では、記憶装置20A,20Bの電源投入時(起動時)において、起動時無効化フラグがセットされている場合に、ユーザデータDや暗号鍵を無効化する形態としたが、これに限らず、不正使用フラグがセットされている場合にのみユーザデータDや暗号鍵を無効化する形態としてもよい。
【符号の説明】
【0149】
4A,4B…ドライブ制御回路、10…NANDメモリ、11a…システムエリア、11b…ユーザエリア、14…計時部、20A,20B…記憶装置、21…暗号化モジュール、22…復号化モジュール、24…データ無効化モジュール、25…パスワード認証モジュール、26…データ記憶モジュール、27…データ読出モジュール、30…経過時間計測部、30A,30B…ホスト装置、121…暗号化回路、122…ランダマイズ回路、130…経過時間計測部、202…時刻情報判定部、203…有効時間判定部、204…パスワード認証部、205A…データ無効化部、205B…暗号鍵無効化部、206…記憶部。
【技術分野】
【0001】
本発明の実施形態は、記憶装置、保護方法及び電子機器に関する。
【背景技術】
【0002】
従来、記録する情報の漏洩を防止する記憶装置として、記録されるデータを自動的に暗号化する記憶装置が知られている。このような記憶装置の機能は、SED(Self Encryption Disk)機能として知られている。このSED機能を有する記憶装置において、暗号鍵は、設定されたパスワードに基づいて生成され、ホスト装置から記憶装置にパスワードが入力されることによって、暗号化されたデータが復号化可能となる。
【0003】
また、ホスト装置に接続された記憶装置をホットプラグアタックから保護するため、ホスト装置と記憶装置との双方のタイマを同期させ、この同期のための計時値を用いて両装置における認証のための共通データを生成する技術が知られている。
【0004】
しかしながら、SED機能による情報漏洩防止技術では、ホスト装置と記憶装置との間の情報の流れからパスワードが読み取られる可能性があるため、改善の余地があった。また、ホスト装置と記憶装置との間でタイマを同期する技術では、両装置の接続関係を検証することが可能であるが、タイマ同期のための処理や機構が両装置で必要となる。そのため、正しい接続関係にある場合も含めて、より簡便に記憶装置のセキュリティを向上させることが可能な技術が望まれている。
【0005】
また、情報漏洩防止のため、記憶装置としての記録スピード、読み出しスピード等に影響を与えずに暗号化するには、暗号処理回路を記憶装置に組み込まなければならず、記憶装置が複雑になるという問題があった。また、暗号装置を組み込んだ装置については、多くの国々で流通等に関して法規制があり、流通の手続きが煩雑、販売先が限定されるなどの問題もあった。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許第4357963号公報
【特許文献2】特開2003−249083号公報
【特許文献3】特開平8−306196号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明が解決しようとする課題は、簡便に記憶装置のセキュリティを向上させることができる記憶装置、保護方法及び電子機器を提供することである。
【課題を解決するための手段】
【0008】
実施形態によれば、記憶装置が提供される。記憶装置では、記憶部が、データを不揮発性半導体メモリで構成された記憶領域に記憶し、経過時間計測部が、前記記憶部への電源の投入に伴い、経過時間のカウントを開始する。受付部が、前記記憶部に接続されたホスト装置から、パスワードと前記ホスト装置で計時された現在日時を表す時刻情報とを含んだコマンドの入力を受け付ける。算出部が、前記コマンドに含まれる時刻情報と、当該コマンドの入力時までに前記経過時間計測部でカウントされたカウンタ値とに基づいて、前回のコマンド入力から今回のコマンド入力までの経過時間を算出する。加算部が、前記算出部が算出した経過時間を、前回入力されたコマンドに含まれる時刻情報に加算する。時刻情報判定部が、前記加算部の加算結果と、今回入力されたコマンドに含まれる時刻情報との時間的な大小関係に基づいて、前記時刻情報の整合性を判定する。無効化部が、前記時刻情報判定部が不整合と判定した場合に、前記記憶領域に記憶されたデータを無効化する。そして、認証部が、前記時刻情報判定部が整合と判定した場合に、今回入力されたコマンドに含まれるパスワードの認証を行い、当該認証に成功した場合に前記記憶領域へのアクセスを許可する。
【図面の簡単な説明】
【0009】
【図1】図1は、第1の実施形態に係る電子機器の構成を模式的に示す図である。
【図2】図2は、第1の実施形態に係る記憶装置の構成の一例を示すブロック図である。
【図3】図3は、NANDメモリチップに含まれる1個のブロックの構成例と、4値データ記憶方式でのしきい値分布を示す図である。
【図4】図4は、第1の実施形態に係るNANDメモリ内のデータを説明するための模式図である。
【図5】図5は、アドレス変換情報の構成例を示す図である。
【図6】図6は、第1の実施形態に係るドライブ制御回路のハードウェア的な内部構成例を示すブロック図である。
【図7】図7は、第1の実施形態に係る記憶装置の機能構成を示す図である。
【図8】図8は、記憶装置が実行するコマンド受付処理の手順を示すフローチャートである。
【図9】図9は、時刻情報判定処理の手順を示すフローチャートである。
【図10】図10は、時刻情報判定処理を説明するための図である。
【図11】図11は、第2の実施形態に係る記憶装置の構成の一例を示すブロック図である。
【図12】図12は、第2の実施形態に係るNANDメモリ内のデータを説明するための模式図である。
【図13】図13は、第2の実施形態に係るドライブ制御回路のハードウェア的な内部構成例を示すブロック図である。
【図14】図14は、第2の実施形態に係る記憶装置の機能構成を示す図である。
【図15】図15は、有効時間判定処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に添付図面を参照して、実施形態に係る記憶装置、保護方法及び電子機器を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0011】
(第1の実施形態)
本実施形態では、パスワード認証が失敗となった場合や、短時間に連続して認証コマンドが入力された場合に、不揮発性半導体メモリ内のユーザデータを読み出しできない状態にする(無効化処理)。これにより、アクセス元となったホスト装置の正当性を確認し、不正なユーザデータの読み出し(ホットプラグアタック)を防ぐ。
【0012】
図1は、第1の実施形態に係る電子機器の構成を模式的に示す図である。同図に示すように、電子機器(データ記憶システム)は、ホスト装置30Aと記憶装置20Aとを有したPC(Personal Computer)等の装置である。ホスト装置30Aは、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、計時部14、表示部15、操作入力部16および通信部17を備えている。
【0013】
CPU11は、RAM13の所定領域を作業領域として、ROM12や記憶装置20Aに予め記憶された各種プログラムを実行し、ホスト装置30Aを構成する各部の動作を統括的に制御する。
【0014】
ROM12は、不揮発性の記憶デバイスであって、ホスト装置30Aの制御に係るプログラムや各種設定情報等を書き換え不可能に記憶する。RAM13は、揮発性の記憶デバイスであって、CPU11の作業領域として機能し、各種の処理時においてスタックやバッファ等の役割を果たす。
【0015】
計時部14は、ホスト装置30Aに設けられたRTC(Real Time Clock)等の計時装置であり、現在日時を表した時刻情報を生成する。なお、時刻情報は、所定の年月日(例えば、1900年1月1日)から起算した秒数で表されている。例えば、現在日時が2010年11月12日13時14分15秒の場合、時刻情報は“D08A5F27”(16進数表記)で表される。
【0016】
表示部15は、LCD(Liquid Crystal Display)等の表示デバイスにより構成され、CPU11からの表示信号に基づいて、各種情報を表示する。操作入力部16は、各種入力キーを備え、ユーザから操作入力された情報を指示信号として受け付け、その指示信号をCPU11に出力する。なお、表示部15は、操作入力部16と一体的にタッチパネルを構成する態様としてもよい。
【0017】
通信部17は、図示しないネットワークを介して外部装置との間で通信を行う通信インタフェースであって、外部装置から受信した各種の情報をCPU11に出力し、また、CPU11から出力される各種の情報を外部装置へ送信する。
【0018】
また、本実施形態の記憶装置20Aは、ホスト装置30Aの制御に係るプログラムや各種データ等を書き換え可能に記憶する。記憶装置20Aは、例えば、SSD(Solid State Drive)やフラッシュメモリ等の、不揮発性の半導体メモリを記録媒体とした記憶装置である。
【0019】
記憶装置20Aは、予め定められたパスワードと時刻情報とに基づいて、ホスト装置30A,30Bなどのホスト装置からのアクセスが正当なアクセスか否かを判定し、正当と判定された場合にのみ記録媒体へのデータの書き込みや、データの読み出しを許可する。そのため、CPU11では、記憶装置20Aへのアクセスに際し、リード/ライト等を指示するコマンドとともに、計時部14から取得した時刻情報を含んだ認証コマンドを記憶装置20Aに送信する。なお、記憶装置20Aのアクセスに係るCPU11の動作は、ROM12に記憶されたプログラムや各種設定情報との協働により実現されるものとする。
【0020】
図2は、第1の実施形態に係る記憶装置の構成の一例を示すブロック図である。データ記憶システムは、任意のホスト装置30A,30B,…に着脱自在に接続可能な記憶装置20Aと、任意のホスト装置30A,30B,…のうち、記憶装置20Aへの接続権限をもつ正規のホスト装置30Aと、を備えている。
【0021】
記憶装置20Aは、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはCPUコアなどのホスト装置30Aと接続され、ホスト装置30Aの外部メモリとして機能する。また、記憶装置20Aは、RS232Cインタフェース(RS232C I/F)などの通信インタフェース3を介して、デバッグ用/製造検査用機器200との間でデータを送受信することができる。記憶装置20Aは、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、コントローラとしてのドライブ制御回路4Aと、揮発性半導体メモリとしてのDRAM1と、電源回路5と、状態表示用のLED6と、ドライブ内部の温度を検出する温度センサ7と、フューズ8とを備えている。そして、ドライブ制御回路4A内には、データ無効化モジュール24、パスワード認証モジュール25、データ記憶モジュール26、データ読出モジュール27、SRAM(Static Random Access Memory)115を持つ。
【0022】
本実施形態においては、不揮発性半導体メモリとしてNANDメモリ10を使用している。NANDメモリ10は、例えば、4並列動作を行う4つの並列動作要素10a〜10dを有し、1つの並列動作要素は、2つのNANDメモリパッケージを有する。各NANDメモリパッケージは、積層された複数のNANDメモリチップ(例えば、1チップ=2GB)によって構成されている。図2の場合は、各NANDメモリパッケージは、積層された4枚のNANDメモリチップによって構成されており、NANDメモリ10は64GBの容量を有する。各NANDメモリパッケージが、積層された8枚のNANDメモリチップによって構成されている場合は、NANDメモリ10は128GBの容量を有することになる。
【0023】
DRAM1は、ホスト装置30AとNANDメモリ10との間でのデータ転送用キャッシュおよび作業領域用メモリとして機能する。また、DRAM1の代わりに、FeRAMを使用してもよい。ドライブ制御回路4Aは、ホスト装置30AとNANDメモリ10との間でDRAM1を介してデータ転送制御を行うとともに、記憶装置20A内の各構成要素を制御する。また、ドライブ制御回路4Aは、状態表示用LED6にステータス表示用信号を供給するとともに、電源回路からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を自回路内および記憶装置20A内の各部に供給する機能も有している。なお、LED6は、記憶装置20自体には無く、例えばホスト装置に設けたLED6を点灯させるための信号を出力するための端子のみを設けてあってもよい。
【0024】
各NANDメモリチップは、データ消去の単位である物理ブロックを複数配列して構成されている。図3の(a)は、NANDメモリチップに含まれる1個の物理ブロックの構成例を示す回路図である。各物理ブロックは、X方向に沿って順に配列された(p+1)個のNANDストリングを備えている(pは、0以上の整数)。(p+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
【0025】
各メモリセルトランジスタMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(Metal Oxide Semiconductor Field Effect Transistor)から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)、および電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタMTは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタMTは、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
【0026】
また、メモリセルトランジスタMTは、浮遊ゲート電極を有する構造に限らず、MONOS(Metal-Oxide-Nitride-Oxide-Silicon)型など、電荷蓄積層としての窒化膜界面に電子をトラップさせることでしきい値調整可能な構造であってもよい。MONOS構造のメモリセルトランジスタMTについても同様に、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
【0027】
各NANDストリングにおいて、(q+1)個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、複数のメモリセルトランジスタMTは、隣接するもの同士で拡散領域(ソース領域若しくはドレイン領域)を共有するような形でY方向に直列接続される。
【0028】
そして、最もドレイン側に位置するメモリセルトランジスタMTから順に、制御ゲート
電極がワード線WL0〜WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
【0029】
ワード線WL0〜WLqは、物理ブロック内のNANDストリング間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。別言すれば、ブロック内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一のワード線WLに接続されている。この同一のワード線WLに接続される(p+1)個のメモリセルトランジスタMTは1ページ(物理ページ)として取り扱われ、この物理ページごとにデータの書き込みおよびデータの読み出しが行われる。
【0030】
また、ビット線BL0〜BLpは、ブロック間で、選択トランジスタST1のドレインを共通に接続している。別言すれば、複数のブロック内において同一列にあるNANDストリングは、同一のビット線BLに接続されている。
【0031】
図3の(b)は、例えば、1個のメモリセルトランジスタMTに2ビットの記憶を行う4値データ記憶方式でのしきい値分布を示す模式図である。4値データ記憶方式では、上位ページデータ“x”と下位ページデータ“y”で定義される4値データ“xy”の何れか1つをメモリセルトランジスタMTに保持可能である。
【0032】
この、4値データ“xy”は、メモリセルトランジスタMTのしきい値電圧の順に、例えば、データ“11”、“01”、“00”、“10”が割り当てられる。データ“11”は、メモリセルトランジスタMTのしきい値電圧が負の消去状態である。
【0033】
下位ページ書き込み動作においては、データ“11”(消去状態)のメモリセルトランジスタMTに対して選択的に、下位ビットデータ“y”の書き込みによって、データ“10”が書き込まれる。上位ページ書き込み前のデータ“10”のしきい値分布は、上位ページ書き込み後のデータ“01”とデータ“00”のしきい値分布の中間程度に位置しており、上位ページ書き込み後のしきい値分布よりブロードであってもよい。上位ページ書き込み動作においては、データ“11”のメモリセルと、データ“10”のメモリセルに対して、それぞれ選択的に上位ビットデータ“x”の書き込みが行われて、データ“01”およびデータ“00”が書き込まれる。
【0034】
図4は、第1の実施形態に係るNANDメモリ内のデータを説明するための模式図である。図4では、ホスト装置30Aから見たNANDメモリ10の記憶領域の区分を模式的に示している。不揮発性半導体メモリであるNANDメモリ10は、図4に示すように、一般ユーザがアクセス不可の特殊LBA(Logical Block Addressing)領域(システムエリア)11a、さらにLBAも割り当てられていない特殊領域11cと、一般ユーザがアクセス可能な通常LBA領域(ユーザエリア)11bと、に区分される。
【0035】
ここで、ユーザエリア11bは、ホスト装置30Aからのコマンド(Readコマンド/Writeコマンドなど)によってアクセス可能なLBA領域(論理アドレス領域)であるのに対し、非ユーザ領域であるシステムエリア11a、特殊領域11cは、ホスト装置30Aから発出される通常のコマンドではアクセスすることができない領域である。NANDメモリ11のうち、LBAが対応付けされていない領域が、特殊領域11cである。本実施の形態では、非ユーザ領域は、管理情報の記録等に用いられる特殊LBA領域(システムエリア)11aと、それ以外の、ファームウェアが記録された領域等、またフリーブロックFBを含むLBAが割り当てられていない領域が属する特殊領域11cで構成される。
【0036】
なお、システムエリア11a、特殊領域11cは、記憶装置20A(SSD)の内部に展開されるファームウェア(FW)を構成するモジュールが発出するコマンドによってアクセスすることが可能である。また、特殊領域11cに格納されたファームウェア(FW)は、後述のブート用プログラムによって、起動時に読み出されて例えばSRAM115に展開されて実行される。
【0037】
なお、これらのシステムエリア11a、ユーザエリア11b、特殊領域11cは、物理的にそれぞれ連続した物理領域として存在する必要はなく、NANDメモリ11の個々の物理管理単位が、それぞれこれらの領域に属する。また、個々の物理管理単位が属する領域は、固定ではなく、記憶装置20の使用とともに変化していく。例えば、特殊領域11cとして使用していたブロックが解放されフリーブロックFBとなった後、このフリーブロックFBにユーザデータが記録されると、以降は通常LBA領域11bとして使用される。このように個々の物理管理単位が属する領域は、固定ではなく、記憶装置10の使用とともに、変化していく。
【0038】
これらのシステムエリア11a、ユーザエリア11bおよび特殊エリア11cについて、具体例を用いて説明する。いま、記憶装置20Aの記憶領域のサイズを、例えば64GBとすると、この64GBの領域はユーザ領域である。なお、ここでいう64GBの領域というのは、LBAの範囲が64GBという意味であり、常に物理的に64GBのNANDメモリ11が割り当てられているという意味ではない。一方、記憶装置20Aには、ホスト装置30Aからアクセスできる当該64GBの領域(ユーザ領域)以外に、記憶装置20Aの内部情報を保存するための領域として、所定サイズ(例えば、1論理ブロック分程度)の領域(非ユーザ領域)がLBA上にマップされる。この64GBの領域がユーザエリア11bであり、所定サイズの領域がシステムエリア11aであり、これらに属さない領域が特殊領域11cである。なお、ここではファームウェアが特殊エリア11cに記録されるとしているが、特殊LBA領域に記録してもよい。
【0039】
システムエリア11aは、例えば、記憶装置20Aを管理する管理データ、SMART情報などを保存するために使用される。このシステムエリア11aに格納される管理データは、ユーザエリア11bに格納されるユーザデータと同じ管理方式でハンドリングされ、ユーザエリア11bがマップされ得る全ての論理ブロックに割り当てが可能である。
【0040】
システムエリア11aは、例えば、第1ユーザ認証情報を記憶する。第1ユーザ認証情報は、正規のホスト装置30Aを使用する正規のユーザを認証するためのものである。第1ユーザ認証情報としては、正規のユーザのパスワードPを一例として用いるが、この例に限定されない。例えば、第1ユーザ認証情報としてユーザIDを用いてもよいし、パスワードPおよびユーザIDの両方を用いてもよい。第1ユーザ認証情報は、例えば初期設定時に、パスワード認証モジュール25からシステムエリア11aに予め書込まれる。なお、ここではユーザ認証としたが、正規のホスト装置であることを認証するための機器認証情報等、なんらかの認証情報が予め書き込まれるように変更可能である。
【0041】
ユーザエリア11bは、ユーザデータDを記憶している。データ記憶モジュール26は、有効データを保持しないNANDメモリ10上に、データを記憶する機能を持つ。データ記憶モジュール26は、ホスト装置30Aから送られた論理アドレスとユーザデータDを受け取り、有効データを保持しないNANDメモリ10上のブロックに書き込み、その物理アドレスと、ホスト装置30Aから送付された論理アドレスの対応状況を、システムエリア11a内のアドレス変換情報に書込む。アドレス変換情報は、例えば、論理アドレスと物理アドレスとを対応付けした論物変換テーブルである。
【0042】
図5は、アドレス変換情報の構成例を示す図である。同図に示すように、アドレス変換情報は、ホスト装置30Aが指定する論理アドレスとしてのLBAとNANDメモリ10上でのデータ記憶位置である物理アドレスとの対応関係を示す情報である。
【0043】
データ読出モジュール27は、NANDメモリ10から、指定された論理アドレスのデータを読み出す機能を持つ。ホスト装置30Aから指定されたアドレスのデータを出力するよう要求された場合、システムエリア11a内に保持したアドレス変換情報から、ドライブ制御回路4A内のアドレス変換手段(図示せず)が、論理アドレスを物理アドレスに変換して、その物理アドレスからユーザデータDを読み出し、ホスト装置30Aに出力する。
【0044】
アドレス変換情報には、初期時は、論理アドレスに対応する物理アドレスは登録されていない。そのため、データ読出モジュール27は、読み出し要求を受けると、ホスト装置30Aによって書き込まれたものではないデータを出力、あるいはエラーをホスト装置30Aに通知するなどの動作をする。
【0045】
この実現方法としては、例えば、初期時のアドレス変換情報を、論理アドレスに対応するユーザデータDを記憶した物理アドレスが存在しない状態とし、記憶時に、論理アドレスに対応する物理アドレスを登録する。前記アドレス変換手段は、アドレス変換情報に対応する物理アドレスが存在しない場合に、例えばゼロの値のみでなるデータを出力する、もしくはエラーをホスト装置30Aに通知する。
【0046】
若しくは、例えば、初期時のアドレス変換情報を、全ての論理アドレスが1つの固定データを記憶した特殊ブロックの物理アドレスを示すようにしておく。そして、ホスト装置30Aから読み出し要求が来ると、この特殊ブロックを読み出して得たデータをホスト装置30Aに出力するようにしてもよい。
【0047】
なお、これらの例に限定されず、様々な記憶装置20Aの実現方法がある。アドレス変換情報において、論理アドレスに対応するユーザデータDを記憶した物理アドレスが登録されていない状態では、NANDメモリ10上にユーザデータDが記憶されていたとしても、ホスト装置30Aからの要求でユーザデータDを出力できない。
【0048】
本実施形態のドライブ制御回路4Aは、データ無効化モジュール24を制御する。データ無効化モジュール24は、認証失敗時のユーザデータの無効化処理を行う。ユーザデータの無効化処理は、ホスト装置30AからユーザデータDを読み出しできなくする処理である。
【0049】
図6は、第1の実施形態に係るドライブ制御回路のハードウェア的な内部構成例を示すブロック図である。ドライブ制御回路4Aは、データアクセス用バス101、第1の回路制御用バス102、および第2の回路制御用バス103を備えている。第1の回路制御用バス102には、ドライブ制御回路4A全体を制御するプロセッサ104が接続されている。第1の回路制御用バス102には、NANDメモリ10に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されたブートROM105がROMコントローラ106を介して接続されている。また、第1の回路制御用バス102には、図2に示した電源回路5からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を各部に供給するクロックコントローラ107が接続されている。
【0050】
第2の回路制御用バス103は、第1の回路制御用バス102に接続されている。第2の回路制御用バス103には、図2に示した温度センサ7からのデータを受けるためのI2C回路108、状態表示用LED6にステータス表示用信号を供給するパラレルIO(PIO)回路109、RS232C I/F3を制御するシリアルIO(SIO)回路110が接続されている。
【0051】
ATAインタフェースコントローラ(ATAコントローラ)111、第1のECC(Error Checking and Correction)回路112、NANDコントローラ113A、およびDRAMコントローラ114は、データアクセス用バス101と第1の回路制御用バス102との両方に接続されている。ATAコントローラ111は、ATAインタフェース2を介してホスト装置30Aとの間でデータを送受信する。データアクセス用バス101には、データ作業領域作業領域およびファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NANDメモリ10に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。
【0052】
NANDコントローラ113Aは、NANDメモリ10とのインタフェース処理を行うNAND I/F117、第2のECC回路118、ランダマイズ回路122、およびNANDメモリ10−DRAM20間のアクセス制御を行うDMA転送制御用DMAコントローラ119を備えている。第2のECC回路118は第2の訂正符号のエンコードを行い、また、第1の誤り訂正符合のエンコードおよびデコードを行う。第1のECC回路112は、第2の誤り訂正符号のデコードを行う。第1の誤り訂正符号、第2の誤り訂正符号は、例えば、ハミング符号、BCH(Bose Chaudhuri Hocqenghem)符号、RS(Reed Solomon)符号、或いはLDPC(Low Density Parity Check)符号等であり、第2の誤り訂正符号の訂正能力は、第1の誤り訂正符号の訂正能力よりも高いとする。ランダマイズ回路122は、NANDメモリ10に記憶させるデータをランダマイズ化する回路であるが、省略してもよい。
【0053】
ランダマイズ回路122は、例えばDMAコントローラ119と第2のECC回路118との間に配置される。なお、ランダマイズ回路122を、第2のECC回路118とNAND I/F117との間に配置してもよい。図6では、DMAコントローラ119にランダマイズ回路122を接続し、ランダマイズ回路122に第2のECC回路118を接続した場合を示している。
【0054】
不揮発性半導体メモリとして主に用いられるNANDメモリ10の特性として、データをランダム化して記録した方が、寿命が延びるという特性があり、近年の微細化の進んだNANDメモリを用いる記憶装置においては、データがランダマイズ化されて記録される。ランダム化の方式としては、可逆変換が使われるが、疑似乱数(暗号に使えるような暗号的な意味での乱数の必要はない)を使用する方法や、暗号アルゴリズムを固定鍵で使う方法がある。
【0055】
また、鍵が固定でなくとも鍵長が短ければ、暗号強度は弱まるが、NANDメモリの寿命延長上は十分である。これらのデータランダマイズ用のハードウェアは、データを保護するための暗号化機能に比べて、簡単なハードウェアで実現できる。いずれにせよ、暗号化ドライブで使うランダム化のためのハードウェアより、簡単なハードウェアでランダマイズすることが多いので、仮に記憶装置20Aを分解して、NANDメモリ10から直接データを読み出しても、容易にランダマイズ前の元データを得ることはできない。
【0056】
本実施形態のドライブ制御回路4Aは、記憶装置20Aへの電源供給が開始されてからの経過時間を計測する経過時間計測部130を備えている。経過時間計測部130は、カウントした経過時間を、プロセッサ104に送る。経過時間計測部130で計測されたカウント値は、ホスト装置30Aから認証コマンドとして送信される時刻情報との間における、時刻情報の時間的な整合性の判定に用いられる。
【0057】
次に、図7を参照して、記憶装置20Aの構成について説明する。図7は、第1の実施形態に係る記憶装置の機能構成を示す図である。図7に示すように、記憶装置20Aは、コマンド受付部201、時刻情報判定部202、パスワード認証部204、データ無効化部205A及び記憶部206を備えている。
【0058】
コマンド受付部201は、ホストIF(ATAインタフェース2)を介して入力されるコマンド(認証コマンド)の受け付けに関する制御を行う機能部である。具体的には、コマンド受付部201は、コマンドの受け付け開始時(記憶装置20Aの電源投入時)において、記憶部206に保持された起動時無効化フラグ及び不正使用フラグの状態を確認する。両フラグがセットされていない場合、コマンド受付部201は、前回の記憶装置20Aの電源断が正当に行われたと判断し、ホスト装置30Aからのコマンドの受け付けを開始する。なお、起動時無効化フラグ及び不正使用フラグの何れかがセットされていた場合、コマンド受付部201は、不正な操作が行われたと判断し、コマンドの受け付けを停止する。
【0059】
ここで、起動時無効化フラグは、記憶装置20Aに不正な操作の疑いがある所定の操作(例えば、パスワード認証の失敗等)が行われた場合にセットされるフラグ情報である。また、不正使用フラグは、不正な操作と定義された所定の操作(例えば、パスワード認証を所定回数失敗する等)が行われた場合にセットされるフラグ情報である。
【0060】
また、コマンド受付部201は、記憶装置20Aの動作中において、不正使用フラグがセットされると、ホスト装置30Aからのコマンド受け付けを所定時間停止し、この所定時間が経過した後、コマンド受け付けを再開する。なお、コマンド受け付けの停止時間は、設定情報として記憶部206(フラッシュメモリ等)に予め設定されているものとする。
【0061】
時刻情報判定部202は、ホスト装置30Aから認証コマンドとして送信される時刻情報と、経過時間計測部130でカウントされるカウンタ値とに基づいて、時刻情報の時間的な整合性を判定する時刻情報判定処理を実行する。なお、時刻情報判定処理の詳細については、後述する(図5参照)。
【0062】
パスワード認証部204は、認証コマンドに含まれるパスワードと、当該パスワードとの照合用として記憶部206に記憶された後述する照合用パスワードとを比較し、両パスワードが一致するか否かを判定することで、パスワードの認証を行う。
【0063】
また、パスワード認証部204は、一定時間あたりの認証コマンドの入力回数を検出し、この入力回数が所定の上限値を上回った場合に、認証コマンドの入力が短時間に連続して行われたと判定する。この場合、後述するようにブルートフォースアタック(総当たり攻撃)等のパスワードアタックが行われている可能性があるため、パスワード認証部204は、不正な操作と判断する。なお、不正な操作と判定する際の上限値は、設定情報として記憶部206(フラッシュメモリ等)に予め設定されているものとする。
【0064】
また、パスワード認証部204は、パスワードの不一致を確認すると(パスワード認証に失敗すると)、不正な操作の可能性があると判断し、起動時無効化フラグをセットする。さらに、パスワード認証部204は、パスワード認証に所定回数失敗すると、不正な操作と判断し、不正使用フラグをセットする。なお、パスワード認証に成功した場合には、起動時無効化フラグ及び不正使用フラグのセットの解除(クリア)し、記憶装置20Aへのアクセスを許可する。
【0065】
データ無効化部205Aは、上記各機能部の判定(判断)結果に応じて、NANDメモリ10内のユーザデータDの無効化を行う機能部である。ここで、ユーザデータの無効化とは、ホスト装置30Bなどの不正なホスト装置からユーザデータを読み出しできなくする処理である。換言すると、NANDメモリ10に記録されたデータが読み取られてしまうことを防止するものである。
【0066】
記憶部206は、記憶装置20Aが備える不揮発性メモリ(NANDメモリ10など)の所定の記憶領域により実現される機能部であって、後述するコマンド受付処理の実行に係る各種の情報を記憶する。
【0067】
具体的には、記憶部206は、コマンド受付処理の実行に係る情報として、照合用パスワード、パスワード設定日時、上述した起動時無効化フラグ及び不正使用フラグ等を記憶している。
【0068】
ここで、照合用パスワードは、記憶装置20Aの利用に係る正規のパスワードであって、ホスト装置30A,30Bなどから送信されるパスワードとの照合に用いられる。パスワード設定日時は、照合用パスワードが設定された日時を表す情報である。なお、パスワード設定日時は、上述した時刻情報と同様、所定の年月日(例えば、1900年1月1日)から起算した秒数で表されている。
【0069】
ここで、データ無効化部205Aによる、ユーザデータDの具体的な無効化方法について説明する。ユーザデータDの無効化方法としては、例えば、以下の5つの方法がある。
【0070】
(第1の無効化方法)
ユーザデータDの無効化の第1の方法として、前述のアドレス変換情報を初期化する方法がある。初期化とは、論理アドレスに対応するユーザデータDを記録した物理アドレスが無い状態にすることである。この方式の場合、アドレス変換情報の大きさは、記憶装置20A全体のデータ量に対して、非常に小さいため、きわめて短時間でユーザデータDの無効化を実施できる。
【0071】
これにより、アドレス変換情報を初期化した記憶装置20Aから、NANDメモリ10上のデータを、論理アドレスを介さずに、例えば物理アドレスを指定して読み出す手段を別に設けなければ、インタフェース経由でユーザデータDを読み出すことは不可能になる。なお、ランダマイズ回路122が備えられていれば、前述のように仮に分解して、NANDメモリ10から直接データを読み出しても、容易にランダマイズ前の元データを得ることはできない。
【0072】
なお、実際の実装にあたっては、管理の都合から、外部から与えられた論理アドレスを、機器内部の内部論理アドレスに変換して、しかるのち内部論理ブロックアドレスへ変換し、最後に物理アドレスに変換するという複数段階の構成をとることもできる。前述の説明でいうアドレス変換情報を無くすという操作は、この外部から与えられた論理アドレスから、最終的な物理アドレスへの変換過程の、何れか1箇所で行えばよい。実装の一例として、NANDメモリ10の物理アドレス空間を、機器起動時に必要な情報(ドライブ制御回路4Aの制御プログラム等)を記録した特殊領域11cと、残りの機器内部用論理アドレス空間用と、に分ける。さらに、機器内部アドレス空間は、外部から与えられる論理アドレス空間をマッピングした領域(ユーザエリア11b)と、ドライブ制御回路4Aがシステムエリア11aとして使う特殊LBA領域に分けて使うことができる。この場合、ユーザデータD用にマッピングした内部アドレス空間から物理アドレスへの変換情報のみ破棄することにより、記憶装置20Aの動作に必要なシステムエリア11aの情報を失わず、不正なホスト装置からのデータアクセスを不能にすることができる。
【0073】
(第2の無効化方法)
ユーザデータDの無効化の第2の方法として、前記NANDメモリ10内のユーザデータを記録した領域(ユーザエリア11b)を消去する方法がある。NANDメモリ10は、磁気記録を用いたハードディスクドライブとは異なり、上書きができないので、ブロック単位で消去してから記録する。そして、時間がかかるのは記録(書き込み)であるので、消去だけであれば、非常に高速に可能である。これにより、実際に記録されたデータそのものを消去することが可能である。例えば,1ブロックの消去と記録が200ms必要なところが、5ms以下で消去でき、1ブロック全体上書きによる消去の1/40以下の時間で消去が可能になる。
【0074】
なお、NANDメモリ10を用いた記憶装置20Aでは、通常の記録動作時において、前述のアドレス変換情報からブロックが除かれた時など、有効なデータを保持しなくなった時点(フリーブロックになった時点)で消去する場合と、フリーブロックになった時には消さずに、データを記録する直前に消す方法がある。
【0075】
ユーザデータDの無効化における消去では、フリーブロックになったか否かを問わず、ユーザデータDが記録されている可能性のある全ブロックを実際に消去してもよい。1つのNANDブロック中に、ユーザデータDと、記憶装置20Aの内部情報が混在して記録されている場合は、ユーザデータD以外のデータを別のブロックにコピーしてからユーザデータDを消去する。アドレス変換情報を初期化せずに、対応するブロックの情報を消去してしまうと、読みだしたデータは、エラー訂正符号も合わなくなるので、その後は読み出すと、その後は全て訂正不能UNC(Uncorrectable Error)になる。このため、ブロックを消去する場合には、前述のアドレス変換情報の消去と組み合わせることが望ましい。なお、アドレス変換情報の消去とブロックの消去は、どちらを先に行ってもよい。
【0076】
(第3の無効化方法)
さらに、ユーザデータDの無効化の第3の方法として、前記第2の無効化方法における消去を不完全な消去とする方法がある。NANDメモリ10を用いた記憶装置20Aにおいては、本方法を用いれば、データ無効化による消去を不完全ながら高速に行うことができる。
【0077】
通常のNANDメモリ10の消去は、記録可能になるまで完全消去している。NANDメモリ10を消去する場合は、対象のブロック中のワード線WL0〜WLqを選択し(ワード線の電位を0Vとし)、ビット線BL0〜BLpをフローティング状態にした後、Si基板のP−Wellに所定の電圧を所定時間加えることで、浮遊ゲート中の電子を抜き出す。その後、消去状況の確認(Erase Verify)を行い、完全に消えていなければ、また消去するという操作を数回繰り返すことによって完全に消去する。
【0078】
一方、ユーザデータDを読めなくさせることだけが目的であれば、消去操作を1回だけ行い、又は消去回数を減らし、Erase Verify(消去ベリファイ)を省略にすることにより、消去時間を短縮できる。この場合、完全にはユーザデータDが消去されていない状態だが、各セルの値はばらばらに変化しており、事実上読み出し不能になる。このように、ここでいう不完全な消去というのは、再記録には不十分だが、データ読出しの阻止という意味では十分な消去である。
【0079】
なお、消去回数は、1回に限らず複数回であってもよい。この場合であっても、完全なブロック消去より高速にユーザデータDを消去することが可能となる。また、1回の消去時間(消去電圧の印加時間)を、ユーザデータDを読み出し不能にさせるために十分な時間にするなどの調整を行ってもよい。なお、消去作業により、全セルの電圧が均等に下がるのではなく、メモリセル毎にばらばらに下がる。このため、仮にメモリセルに電位が残っていても、読み出しレベル(読み出し時にワード線に印加する電圧)を変えるなどして再現(読み出したユーザデータDの復元)することは極めて困難になる。
【0080】
なお、ユーザデータDの無効化を行う際に、Erase Verifyを行ってもよい。この場合、例えば、特開2003−249083号公報に記載の消去ベリファイなどによって、ユーザデータDの無効化を行う。
【0081】
なお、第3の無効化方法で消去したブロックに新たなユーザデータDを記録してしまうと、データ化けが発生してしまうので、新たなユーザデータDの記録前には、再度、通常の消去動作をする必要がある。フリーブロックを記録直前に消去してから使う方式のSSDであれば、特に不完全な消去をしたことを覚えておく必要はない。フリーブロック化時に消去する方式のSSDであれば、不完全な消去をしたブロックを記憶装置20A内部の管理情報として記録しておき、後に、再度完全消去する必要がある。
【0082】
(第4の無効化方法)
さらに、ユーザデータDの無効化の第4の方法として、前記第2、第3の無効化方法において、Chip内の複数ブロックを同時に消去する方法がある。この方法では、例えば特開平8−306196号公報に記載の消去方法などによって、Chip内の複数ブロックを同時に消去する。この方法により、第2、第3の無効化方法よりも、さらに高速にユーザデータDの無効化を行うことが可能となる。
【0083】
(第5の無効化方法)
さらに、ユーザデータDの無効化の第5の方法として、1回の操作で、NANDメモリchip中のデータを消す方法がある。この方法では、Chip中の全てのワード線を選択し、P−Wellに電圧を加えることによって、Chip全体を消去する。なお、この方法では消費電力が大きくなる場合があるので、複数のchipをまとめて消すことができない場合は、chipを1枚ずつ消すなどの制御が必要となる。
【0084】
なお、NANDメモリ10を用いた記憶装置20Aでは、NANDメモリ10中にも、ドライブの制御プログラムであるファームウェアや、制御プログラムが用いる前述のアドレス変換情報などの管理情報も記録される。このため、本方法を用いると、これらのデータも全て消去することになり、消去後は、記憶装置として動作しなくなる。換言すると、この方法では、ユーザデータDの消去後に記憶装置20Aがもはや機能しなくなる故障状態となる。したがって、ユーザデータDの復元を不能にすることが可能となる。
【0085】
なお、chip全体のデータ無効化としては、消去の他に、全てのメモリセルの電位が上がる方向に記録電圧をかけてユーザデータDにデータの上書きをしてもよい。具体的には、全ビット線BL0〜BLpを0にして、全ワード線WL0〜WLqにプログラム電圧を与えてしまえばよい。
【0086】
ユーザデータDの消去後は、次の起動時にブートROM105に格納されたブート用プログラムが、ファームウェアを見つけられずエラーが検出される。そして、インタフェース経由によって、またはドライブアクセス状況の通知用のLEDの信号性を利用して、ファームウェアが存在しないことを示すことにより、外部から他の故障と区別することが可能となる。
【0087】
なお、本実施形態におけるユーザデータDの無効化処理は、前述の記憶装置20A内部の全てのデータを消す方法以外が好ましい。すなわち、第1から第4の方法が好ましい。
【0088】
(その他の無効化方法)
なお、上述した方法以外にも、ユーザデータDの無効化処理は、様々な方法が考えられる。例えば、単に、前述のシステムエリア11aに、ユーザデータDが無効化処理されていることを示す情報を記録し、この記録がある場合、以後のホスト装置からの読み出し命令に応答しなくする方法がある。この場合、ホスト装置から書き込み命令を受け取る前に、少なくとも、アドレス変換情報を初期化する必要がある。もしくは、無効化処理がされている論理アドレスを記録する必要がある。また、他の方法として、実際に論理アドレスに対応するユーザデータDを全て意味の無いデータ(例えば0)で上書きしてしまう方法がある。
【0089】
以上のように、ユーザデータDの無効化処理には、様々な方法を取りうるので、ユーザデータDの無効処理にあたって使用する方法を、ホスト装置30Aから予め設定できるようにしてもよい。
【0090】
すなわち、記憶装置20Aのシステムエリア11aに、前述および後述の実施形態で述べる各種情報に加え、ユーザデータDの無効化方式を記憶させておく。この場合、消去方式によっては併用できるものもあるので、記憶できる方式は2種類以上であってもよい。パスワード認証モジュール25は、前述した各機能に加え、ユーザデータ無効化方式の設定要求を正規のホスト装置30Aから受けると、当該ユーザデータ無効化方式情報をシステムエリア11aに設定(記憶)する設定機能をもっている。
【0091】
例えば、パスワード認証モジュール25は、前述の第1の無効化方法(アドレス変換情報の初期化)のみ設定、前述の第2の無効化方法(ユーザデータを保持するブロックの完全消去)のみ設定、前述の第3の無効化方法(ユーザデータを保持するブロックの不完全消去)のみ設定、といった単独の無効化方法の設定を行ってもよい。また、パスワード認証モジュール25は、前述の第1の無効化方法(アドレス変換情報の初期化)と、前述の第3の無効化方法(不完全なユーザデータ消去)と、の組み合わせの設定を行ってもよい。これらを実現するには、ユーザデータ無効化方式のそれぞれの方式毎に、実施の可否を設定(記憶)してもよいし、可能な組み合わせ毎に番号を与え、その番号を記憶してもよい。あるいは、無効化の強度に応じてレベル付を行い、そのレベルで設定できるようにしてもよい。そして、パスワード認証モジュール25は、ユーザデータ無効化処理の実施の際、システムエリア11a内に記憶した無効化方式情報に基づいて、ユーザデータDの無効化処理を実施する機能を持っている。以上の構成により、ホスト装置30Aから設定したユーザデータ無効化方式を用いて、ユーザデータDの無効化が実行される。
【0092】
次に、図8〜図11を参照して、上述した構成の記憶装置20Aの動作について説明する。図8は、記憶装置が実行するコマンド受付処理の手順を示すフローチャートである。図示しない電源ボタンの操作によりホスト装置30Aの電源がオンとされ、記憶装置20Aへの電源供給が開始されると、経過時間計測部130はカウントを開始する(ステップS11)。
【0093】
続いて、コマンド受付部201は、記憶部206に保持された起動時無効化フラグの状態を確認し、セットされているか否かを判定する(ステップS12)。ここで、起動時無効化フラグがセットされていると判定した場合(ステップS12;Yes)、コマンド受付部201は、前回の動作時に不正な操作が行われた疑いがあると判断する。この場合、
データ無効化部205Aは、ユーザデータDを無効化し(ステップS31)、本処理を終了する。
【0094】
ステップS12において、起動時無効化フラグがセットされていないと判定した場合(ステップS12;No)、コマンド受付部201は、不正使用フラグがセットされているか否かを判定する(ステップS13)。ここで、不正使用フラグがセットされていると判定した場合(ステップS13;Yes)、コマンド受付部201は、前回の動作時に不正な操作が行われたと判断する。この場合、データ無効化部205Aは、ユーザデータDを無効化し(ステップS31)、本処理を終了する。
【0095】
また、コマンド受付部201は、起動時無効化フラグ及び不正使用フラグがともにセットされていないと判定すると(ステップS13;No)、認証コマンドの受け付けを開始し(ステップS14)、ホスト装置30Aから認証コマンドを受信するまで待機する(ステップS15;No)。そして、ホスト装置30Aから認証コマンドを受信すると(ステップS15;Yes)、時刻情報判定部202は、この認証コマンドに対し時刻情報判定処理を実行する(ステップS16)。ここで、図9を参照して、ステップS16の時刻情報判定処理について説明する。
【0096】
図9は、時刻情報判定処理の手順を示すフローチャートである。まず、時刻情報判定部202は、認証コマンドに時刻情報が含まれているか否かを判定する(ステップS161)。ここで、時刻情報が含まれていないと判定した場合(ステップS161;No)、時刻情報判定部202は、受信した認証コマンドを不正なコマンドと判断する。この場合、データ無効化部205Aは、ユーザデータDを無効化し(ステップS167)、本処理を終了する。
【0097】
また、認証コマンドに時刻情報が含まれている場合(ステップS161;Yes)、時刻情報判定部202は、記憶部206に前回受信時情報が記憶されているか否かを判定する(ステップS162)。ここで、前回受信時情報が記憶部206に記憶されていないと判定すると(ステップS162;No)、時刻情報判定部202は、ステップS168の処理に移行する。
【0098】
一方、前回受信時情報が記憶されていると判定した場合(ステップS162;Yes)、時刻情報判定部202は、この前回受信時情報を記憶部206から読み出す(ステップS163)。次いで、時刻情報判定部202は、前回受信時情報に含まれるカウンタ値と、経過時間計測部130の現在のカウント値との差分から、前回の認証コマンドを受信してから今回の認証コマンドを受信するまでの経過時間を算出する(ステップS164)。
【0099】
続いて、時刻情報判定部202は、前回受信時情報に含まれた時刻情報にステップS164で算出した経過時間を加算し、計算時刻を導出する(ステップS165)。そして、時刻情報判定部202は、この計算時刻と入力された認証コマンドに含まれる時刻情報とを比較し、時刻情報の表す値(秒数)が、計算時刻の表す値(秒数)以上か否かを判定する(ステップS166)。
【0100】
ここで、図10を参照し、上記ステップS164〜S166の動作について説明する。図10は、時刻情報判定処理を説明するための図である。まず、ホスト装置30Aにおいて、2010年11月12日13時14分15秒に認証コマンド(以下、第1認証コマンドという)が送信されると、記憶装置20Aはこの第1認証コマンドを受け付ける。図10では、第1認証コマンドに含まれるパスワードを“ABCDEFGH”としており、時刻情報を“D08A5F27”で表している。また、記憶装置20Aでは、経過時間計測部130のカウンタ値が100(秒)の時に、第1認証コマンドを受信しているため、時刻情報“D08A5F27”とカウンタ値“100”との組が、後述するステップS168の処理で前回受信時情報として記憶される。
【0101】
その後、ホスト装置30Aから、2010年11月12日13時24分15秒に認証コマンド(以下、第2認証コマンドという)が送信されると、記憶装置20Aはこの第2認証コマンドを受け付ける。図10では、第2認証コマンドに含まれるパスワードを前回同
様“ABCDEFGH”としており、時刻情報を“D08A617F”で表している。なお、記憶装置20Aでは、経過時間計測部130のカウンタ値が700(秒)の時に、第2認証コマンドを受信している。
【0102】
時刻情報判定部202は、要求コマンドが図6に示した条件の場合、第1認証コマンドを受信した際のカウンタ値“100”と、第2認証コマンドを受信した際のカウンタ値“700”との差分“600”を、第1認証コマンドを受信してから第2認証コマンドを受信するまでの経過時間とする。また、時刻情報判定部202は、第1認証コマンドに含まれる時刻情報“D08A5F27”に、経過時間“600”を加算することで、計算時間“D08A617F”を導出する。そして、時刻情報判定部202は、計算時間“D08A617F”と、第2認証コマンドに含まれた時刻情報“D08A617F”とを比較し、時間的な大小関係を判定する。
【0103】
図9に戻り、ステップS166の比較の結果、時刻情報の表す値(秒)が計算時刻の表
す値(秒)よりも小さい場合(ステップS166;No)、計算時間と時刻情報との時間
的な関係に不整合が生じるため、時刻情報判定部202は、不正(不整合)と判断する。
この場合、データ無効化部205Aは、ユーザデータDを無効化し(ステップS167)、本処理を終了する。
【0104】
また、時刻情報が計算時刻以上の場合には(ステップS166;Yes)、計算時間と時刻情報との時間的な関係に不整合が生じないため、時刻情報判定部202は正当(整合)と判断する。そして、時刻情報判定部202は、今回受信した認証コマンドに含まれる時刻情報と、この認証コマンドを受信した時の経過時間計測部130のカウンタ値とを対応付け、前回受信時情報として記憶部206に記憶し(ステップS168)、図8のステップS17に移行する。
【0105】
なお、ステップS166において、時刻情報が計算時刻を超えている場合を正当とする理由は以下のとおりである。前回受信時情報を記憶した後、記憶装置20Aが電源断となると経過時間計測部130のカウンタ値はゼロからカウントを始めることになる。この場合、時刻情報の表す値(秒)は計算時刻の表す値(秒)を上回ることになるが、これは正当な操作であるため、記憶装置20Aの使用を制限する対象とはならない。しかしながら、時刻情報が計算時刻を下回ることは、通常の使用環境では発生しないため、これを不正と判断して、記憶装置20Aの使用を制限している。
【0106】
図8に戻り、パスワード認証部204は、ステップS15で受信した認証コマンドが、短時間に連続して入力されたものか否かを判定する(ステップS18)。例えば、記憶装置20Aが、ブルートフォースアタックに晒されていると、膨大な文字列の組み合わせがパスワードとして高速に入力されることになる。そこで、ステップS18では、このような不正な操作を防止するため、認証コマンドが短時間に連続して入力されたことを検出する。換言すると、不正な操作を防止するために、所定時間内に所定回数以上の認証コマンドが入力されたことが検出される。
【0107】
ステップS18において、認証コマンドが短時間に連続して入力されていることを検出すると(ステップS18;Yes)、パスワード認証部204は、不正な操作が行われて
いると判断する。この場合、データ無効化部205Aは、ユーザデータDを無効化し(ステップS31)、本処理を終了する。
【0108】
また、ステップS18において、短時間に連続して入力されていないと判定すると(ステップS18;No)、パスワード認証部204は、受信した認証コマンドに含まれるパスワードと、記憶部206に記憶された照合用パスワードとを比較し、両パスワードが一致するか否かを判定する(ステップS19)。
【0109】
ここで、パスワードが不一致となった場合(ステップS19;No)、パスワード認証部204は、認証要求回数を1加算する(ステップS20)。なお、認証要求回数は、パスワード認証に失敗した回数を記録するための変数であって、バッファメモリや記憶部206等に保持されているものとする。
【0110】
次いで、パスワード認証部204は、不正な操作の可能性があると判断し、起動時無効化フラグをセットする(ステップS21)。続いて、パスワード認証部204は、認証要求回数が所定回数(以下、認証可能回数という)を上回ったか否かを判定し、認証可能回数以下の場合には(ステップS22;No)、パスワードの不一致をホスト装置30Aに通知し(ステップS23)、ステップS15に再び戻る。
【0111】
また、ステップS22において、認証要求回数が認証可能回数を上回ったと判定した場合(ステップS22;Yes)、パスワード認証部204は、不正使用フラグがセットされているか否かを判定する(ステップS24)。ここで、不正使用フラグがセットされている場合(ステップS24;Yes)、データ無効化部205Aは、不正な操作が行われたと判断する。この場合、データ無効化部205Aは、ユーザデータDを無効化し(ステップS31)、本処理を終了する。
【0112】
また、ステップS24において、不正使用フラグがセットされていないと判定した場合(ステップS24;No)、パスワード認証部204は、不正使用フラグをセットする(ステップS25)。コマンド受付部201は、ステップS25の不正使用フラグのセットに伴い、所定時間の間、ホスト装置30Aからのコマンドの受け付けを停止する(ステップS26)。
【0113】
ここで、ステップS26の処理は、パスワードアタックを目的としたものでなく、クラッキング(故意にNANDメモリ10上のデータを消失させること)のため、一致しないパスワードが多数回入力されるような場合に、故意にNANDメモリ10上のデータを一時的に保護することを目的としている。なお、コマンド受け付け停止期間の間、ホスト装置30A側では記憶装置20Aからのコマンド応答がないため、記憶装置20Aで異常が発生していることを検知することが可能である。そのため、記憶装置20Aの異常発生時に、管理者にメール等で記憶装置20Aの異常報知を自動で行う仕組みをホスト装置30Aに搭載することで、記憶装置20Aの異常に迅速に対処することが可能となる。
【0114】
コマンド受付部201は、所定時間が経過するまで待機し(ステップS27;No)、この所定時間が経過すると(ステップS27;Yes)、コマンドの受け付けを再開し(ステップS28)、ステップS15に再び戻る。
【0115】
一方、ステップS19において、パスワードの一致を確認した場合(ステップS19;Yes)、パスワード認証部204は、起動時無効化フラグ及び不正使用フラグをクリアするとともに、認証要求回数をゼロにリセットする(ステップS29)。そして、記憶装置20A内のMPU(図示せず)は、入力されたコマンドに応じた処理(例えば、データの読み出しや書き込み)を実行し(ステップS30)、ステップS15に再び戻る。
【0116】
以上のように、第1の実施形態によれば、ホスト装置30Aからのコマンド入力時において、記憶装置20Aでは、認証コマンドに含まれた時刻情報と、経過時間計測部130のカウント値とに基づいて当該時刻情報の整合性を判定し、整合が確認された場合にのみパスワード認証を行う。これにより、アクセス元となったホスト装置30Aの正当性を確認することができる。また、不正なホスト装置からアクセスされた場合には、記憶装置20A内のデータを無効化するので、簡便に記憶装置20Aのセキュリティを向上させることができる。
【0117】
(第2の実施形態)
つぎに、図11〜図15を用いてこの発明の第2の実施形態について説明する。第2の実施形態では、ユーザデータDを暗号化してNANDメモリ10内に記憶させるとともに、パスワード認証が失敗となった場合や、短時間に連続して認証コマンドが入力された場合に、暗号化に用いた暗号鍵を無効化する。
【0118】
図11は、第2の実施形態に係るデータ記憶システムの構成の一例を示すブロック図である。図11の各構成要素のうち図2に示す第1の実施形態のデータ記憶システムと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【0119】
本実施形態のデータ記憶システムは、記憶装置20Aの代わりに記憶装置20Bを備えている。記憶装置20Bは、ドライブ制御回路4Aの代わりに、ドライブ制御回路4Bを有している。そして、ドライブ制御回路4Bは、ドライブ制御回路4Aの有する機能に加えて、ユーザデータDを暗号化する機能、復号化する機能を有している。具体的には、ドライブ制御回路4Bは、データ無効化モジュール24、パスワード認証モジュール25、データ記憶モジュール26、データ読出モジュール27、SRAM115に加えて、暗号化モジュール21、復号化モジュール22を具備している。
【0120】
暗号化モジュール21は、ユーザ認証が成功した場合にデータ記憶モジュール26がデータを書き込む際、現在のホスト装置30A(又は30B,…)から受けたユーザデータDを含む書込要求に従い、記憶装置20Bが備えるスタティックRAM(図示せず)内の暗号鍵に基づいて書込要求内のユーザデータDを暗号化して、暗号化データEに変換する暗号化機能をもっている。
【0121】
復号化モジュール22は、ユーザ認証が成功した場合にデータ読出モジュール27がデータを書き込む際、現在のホスト装置30A(又は30B,…)から受けた読出要求に基づいて、ユーザエリア11b内の暗号化データEをスタティックRAM内の暗号鍵に基づいて復号化する復号化機能をもっている。
【0122】
例えば、記憶装置20Bは、SED機能を有しており、AES(Advanced Encryption Standard)等の所定の暗号化方式により暗号化した状態でデータを記憶する。記憶装置20Bは、予め定められたパスワードと時刻情報とに基づいて、ホスト装置からのアクセスが正当なアクセスか否かを判定し、正当と判定された場合にのみ記録媒体へのデータの書き込みや、データの読み出しを許可する。そのため、CPU11では、記憶装置20Bへのアクセスに際し、リード/ライト等を指示するコマンドとともに、予め定められた暗号化解除のためのパスワード、及び、計時部14から取得した時刻情報を含んだ認証コマンドを記憶装置20Bに送信する。
【0123】
また、本実施形態では、データ記憶モジュール26がNANDメモリ10にデータを書き込む前に、暗号化モジュール21でデータを暗号化データEに変換する。また、本実施形態では、データ読出モジュール27が、暗号化されたユーザデータD(暗号化データE)を読み出した後、復号化モジュール22で、平文のユーザデータDに戻してから、ホスト装置30Aに出力する。
【0124】
図12は、第2の実施形態に係るNANDメモリ内のデータを説明するための模式図である。本実施形態のNANDメモリ10は、システムエリア11a内に第1ユーザ認証情報とともに暗号鍵を予め記憶しておく。
【0125】
ここで、暗号鍵は、スタティックRAM(揮発性メモリ)に書き込まれる暗号鍵の一部を構成する鍵データである。本実施形態のユーザエリア11bは、暗号鍵に基づいて暗号化モジュール21により暗号化されたユーザデータDである暗号化データEを記憶している。
【0126】
図13は、第2の実施形態に係るドライブ制御回路のハードウェア的な内部構成例を示すブロック図である。図13の各構成要素のうち図6に示す第1の実施形態のドライブ制御回路4Aと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【0127】
本実施形態のドライブ制御回路4Bは、NANDコントローラ113Aの代わりにNANDコントローラ113Bを備えている。NANDコントローラ113Bは、NANDコントローラ113Aが有するランダマイズ回路122の代わりに暗号化回路121を有している。
【0128】
暗号化回路121は、NANDメモリ10に記憶させるデータを暗号化する回路である。暗号化されたデータは、乱数とみなせるため、ランダマイズ回路122と同じくNANDメモリの寿命延長効果が得られる。
【0129】
暗号化回路121は、例えばDMAコントローラ119と第2のECC回路118との間に配置される。なお、暗号化回路121を、第2のECC回路118とNAND I/F117との間に配置してもよい。図13では、DMAコントローラ119に暗号化回路121を接続し、暗号化回路121に第2のECC回路118を接続した場合を示している。
【0130】
図14は、第2の実施形態に係る記憶装置の機能構成を示す図である。図14に示すように、記憶装置20Bは、記憶装置20Aが有するデータ無効化部205Aの代わりに暗号鍵無効化部205Bを有している。具体的には、記憶装置20Bは、コマンド受付部201、時刻情報判定部202、有効時間判定部203、パスワード認証部204、暗号鍵無効化部205B及び記憶部206を備えている。
【0131】
本実施形態の有効時間判定部203は、暗号鍵を有効とする時間を定めた暗号鍵有効時間に基づき、記憶部206に記憶された暗号鍵がこの暗号鍵有効時間の範囲内か否かを判定する有効時間判定処理を実行する。なお、有効時間判定処理の詳細については、後述する(図15参照)。
【0132】
暗号鍵無効化部205Bは、時刻情報判定部202、有効時間判定部203、パスワード認証部204の各判定(判断)結果に応じて、暗号鍵の無効化を行う機能部である。ここで、暗号鍵の無効化とは、当該暗号鍵を用いたデータの暗号化/復号化を不能とすることを意味する。換言すると、NANDメモリ10に記録されたデータが読み取られてしまうことを防止するとともに、NANDメモリ10にデータが書き込まれてしまうことを防止することを目的とするものである。
【0133】
具体的な無効化方法としては、暗号鍵自体を消去する方法や、暗号鍵に更なる暗号化等を施すことで、暗号鍵を構成する文字列(データ)を他の文字列に置き換える方法等が挙げられる。なお、後者の方法を用いる場合、置き換えが行われた暗号鍵を復元(復号化)する仕組みを記憶装置20Bに実装してもよい。
【0134】
具体的には、記憶部206は、コマンド受付処理の実行に係る情報として、照合用パスワード、暗号鍵、パスワード設定日時、暗号鍵有効時間、上述した起動時無効化フラグ及び不正使用フラグ等を記憶している。
【0135】
暗号鍵は、暗号鍵無効化部205Bにより生成されたものであって、データの暗号化/復号化の際に用いられる。なお、暗号鍵の生成は照合用パスワードの設定時に行われるものとする。また、暗号鍵の生成方法は特に問わず、例えば、照合用パスワードを生成シードに用いてもよい。また、暗号鍵有効時間は、暗号鍵の有効時間(秒単位)を定めた情報であって、パスワード設定日時(暗号鍵の生成日時)を基準としている。
【0136】
次に、上述した構成の記憶装置20Bの動作について説明する。なお、図8で説明した記憶装置20Aと同様の動作については、その説明を省略する。本実施形態の記憶装置20Bは、データ無効化の代わりに、暗号鍵を無効化する。具体的には、起動時無効化フラグがセットされていると判定された場合(ステップS12;Yes)に、暗号鍵無効化部205Bが暗号鍵を無効化する。また、不正使用フラグがセットされていると判定された場合(ステップS13;Yes)に、暗号鍵無効化部205Bが暗号鍵を無効化する。また、認証コマンドが短時間に連続して入力されていることが検出されると(ステップS18;Yes)、暗号鍵無効化部205Bが暗号鍵を無効化する。また、不正使用フラグがセットされている場合(ステップS24;Yes)、暗号鍵無効化部205Bが暗号鍵を無効化する。
【0137】
また、本実施の形態では、ステップS16の時刻情報判定処理の後に、有効時間判定部203が、有効時間判定処理を実行する。以下、図15を参照して、有効時間判定処理について説明する。ここで、図15は、有効時間判定処理の手順を示すフローチャートである。
【0138】
まず、有効時間判定部203は、記憶部206に暗号鍵有効時間が設定されているか否かを判定する(ステップS171)。暗号鍵有効時間が設定されていない場合には(ステップS171;No)、図4のステップS18に移行する。また、暗号鍵有効時間が設定されていると判定した場合(ステップS171;Yes)、有効時間判定部203は、現在の経過時間計測部30のカウンタ値が暗号鍵有効時間を超えているか否かを判定する(ステップS172)。
【0139】
ステップS172において、暗号鍵有効時間を超えたと判定した場合(ステップS172;Yes)、有効時間判定部203は、暗号鍵が失効したと判断する。この場合、暗号鍵無効化部205Bは、暗号鍵を無効化し(ステップS176)、本処理を終了する。
【0140】
また、ステップS172において、経過時間計測部30のカウンタ値が暗号鍵有効時間以下と判定した場合(ステップS172;No)、暗号鍵無効化部205Bは、ステップS173の処理に移行する。なお、ステップS172の判定処理は、ホスト装置30Aの電源投入後、パスワード認証を一度も行わないまま時間が経過したケースに対応するためのものである。
【0141】
続いて、有効時間判定部203は、記憶部206からパスワード設定日時を読み出すと(ステップS173)、このパスワード設定日時に暗号鍵有効時間を加算し、計算時刻を導出する(ステップS174)。そして、有効時間判定部203は、ステップS174で導出した計算時刻と、今回受信した認証コマンドに含まれる時刻情報とを比較し、時刻情報の表す値(秒)が計算時刻の表す値(秒)を上回るか否かを判定する(ステップS175)。
【0142】
ステップS175において、時刻情報が計算時刻を上回ったと判定した場合(ステップS175;Yes)、有効時間判定部203は、暗号鍵が失効したと判断する。この場合、暗号鍵無効化部205Bは、暗号鍵を無効化し(ステップS176)、本処理を終了する。一方、ステップS175において、時刻情報が計算時刻以下と判定した場合(ステップS175;No)、図11のステップS18に移行する。
【0143】
以上のように、第2の実施形態によれば、不正なホスト装置からアクセスされた場合には、記憶装置20A内の暗号鍵を無効化するので、簡便に記憶装置20Aのセキュリティを向上させることができる。
【0144】
このように第1および第2の実施形態によれば、不正なホスト装置からアクセスされた場合には、不揮発性半導体メモリ内のユーザデータDや暗号鍵を無効化するので、簡便に記憶装置20A,20Bのセキュリティを向上させることが可能となる。
【0145】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。例えば、第2の実施形態において、無効化処理のため、暗号鍵無効化部205Bとともに、第1の実施形態のデータ無効化部205Aを備えていてもよい。さらに、設定する無効化方式情報の方式1つに暗号鍵無効化方式を加えてもよい。
【0146】
また、第2の実施形態における暗号鍵有効時間に関わる処理(ステップS171からステップS176)も、暗号鍵をデータ、暗号鍵有効時間をデータ有効時間、暗号鍵無効化をデータ無効化と読み替え、データ有効時間は、データの有効時間(秒単位)を定めた情報であって、パスワード設定日時を基準としているとすれば、第1の実施形態のように暗号化回路121が無い場合にも適用可能である。
【0147】
これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0148】
例えば、上記実施形態では、起動時無効化フラグと不正使用フラグの2つのフラグを用いる形態としたが、不正使用フラグのみ用いる形態としてもよい。また、上記実施形態では、記憶装置20A,20Bの電源投入時(起動時)において、起動時無効化フラグがセットされている場合に、ユーザデータDや暗号鍵を無効化する形態としたが、これに限らず、不正使用フラグがセットされている場合にのみユーザデータDや暗号鍵を無効化する形態としてもよい。
【符号の説明】
【0149】
4A,4B…ドライブ制御回路、10…NANDメモリ、11a…システムエリア、11b…ユーザエリア、14…計時部、20A,20B…記憶装置、21…暗号化モジュール、22…復号化モジュール、24…データ無効化モジュール、25…パスワード認証モジュール、26…データ記憶モジュール、27…データ読出モジュール、30…経過時間計測部、30A,30B…ホスト装置、121…暗号化回路、122…ランダマイズ回路、130…経過時間計測部、202…時刻情報判定部、203…有効時間判定部、204…パスワード認証部、205A…データ無効化部、205B…暗号鍵無効化部、206…記憶部。
【特許請求の範囲】
【請求項1】
データを不揮発性半導体メモリで構成された記憶領域に記憶する記憶部と、
前記記憶部への電源の投入に伴い、経過時間のカウントを開始する経過時間計測部と、
前記記憶部に接続されたホスト装置から、パスワードと前記ホスト装置で計時された現在日時を表す時刻情報とを含んだコマンドの入力を受け付ける受付部と、
前記コマンドに含まれる時刻情報と、当該コマンドの入力時までに前記経過時間計測部でカウントされたカウンタ値とに基づいて、前回のコマンド入力から今回のコマンド入力までの経過時間を算出する算出部と、
前記算出部が算出した経過時間を、前回入力されたコマンドに含まれる時刻情報に加算する加算部と、
前記加算部の加算結果と、今回入力されたコマンドに含まれる時刻情報との時間的な大小関係に基づいて、前記時刻情報の整合性を判定する時刻情報判定部と、
前記時刻情報判定部が不整合と判定した場合に、前記記憶領域に記憶されたデータを無効化する無効化部と、
前記時刻情報判定部が整合と判定した場合に、今回入力されたコマンドに含まれるパスワードの認証を行い、当該認証に成功した場合に前記記憶領域へのアクセスを許可する認証部と、
を備えることを特徴とする記憶装置。
【請求項2】
前記データを前記記憶領域に記憶する際には、前記記憶領域中での論理的な記憶位置を示す論理アドレスが前記ホスト装置によって指定され、
前記記憶部は、前記論理アドレスと前記記憶領域中のアドレスである物理アドレスとの対応関係を示すアドレス変換情報に基づいて、前記論理アドレスを前記物理アドレスに変換するとともに、変換された物理アドレスの位置に前記データを記憶し、
前記無効化部は、前記アドレス変換情報に対して、前記論理アドレスに対応する物理アドレスを無くすように変更することによって、前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1に記載の記憶装置。
【請求項3】
前記無効化部は、前記ホスト装置から書き込まれたデータを含むブロック内のデータを、前記記憶領域から消去することを特徴とする請求項1に記載の記憶装置。
【請求項4】
前記不揮発性半導体メモリは、NAND型フラッシュメモリであり、
前記NAND型フラッシュメモリは、記憶しているデータを完全消去する際に消去が完了しているか否かの確認処理が行なわれるとともに、消去が不完全である場合には、消去の完了が確認されるまで消去処理が繰り返され、
前記無効化部は、前記ホスト装置から書き込まれたデータを含むブロック内のデータを消去する場合、消去が完了しているか否かの確認処理を行わずに消去することを特徴とする請求項3に記載の記憶装置。
【請求項5】
前記不揮発性半導体メモリは、NAND型フラッシュメモリであり、
前記記憶部は、当該記憶部の動作を制御する制御プログラムおよび前記アドレス変換情報を記憶し、
前記無効化部は、前記記憶部を構成するNAND型フラッシュメモリのチップ全体を消去することによって、前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1に記載の記憶装置。
【請求項6】
前記不揮発性半導体メモリは、NAND型フラッシュメモリであり、
前記記憶部は、当該記憶部の動作を制御する制御プログラムおよび前記アドレス変換情報を記憶し、
前記無効化部は、前記記憶部を構成するNAND型フラッシュメモリのチップ全体にデータの上書きを行うことによって、前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1に記載の記憶装置。
【請求項7】
前記時刻情報判定部は、今回入力されたコマンドに含まれる時刻情報の表す日時が、前記算出部が算出した経過時間の表す日時と一致又は超えた場合に、整合と判定することを特徴とする請求項1乃至請求項6のいずれか1つに記載の記憶装置。
【請求項8】
一定時間あたりの前記コマンドの入力回数を検出し、当該入力回数が所定の上限値を超えたか否かを判定する判定部を更に備え、
前記判定部が上限値を超えたと判定した場合に、前記無効化部が前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1乃至請求項7のいずれか1つに記載の記憶装置。
【請求項9】
前記受付部は、前記認証部による前記パスワードの認証が所定回数失敗した場合、前記コマンドの受け付けを所定時間停止することを特徴とする請求項1乃至請求項8のいずれか1つに記載の記憶装置。
【請求項10】
前記記憶部は、前記データを暗号鍵に基づいて暗号化された暗号化データを記憶するとともに、前記暗号化データは前記暗号鍵に基づいて復号化され、
前記暗号鍵を有効とする時間を定めた暗号鍵有効時間と、前記経過時間計測部のカウンタ値とを比較し、当該カウンタ値が前記暗号鍵有効時間を超えた場合に、前記暗号鍵が失効したと判定する有効時間判定部を更に備え、
前記無効化部は、前記有効時間判定部が前記暗号鍵有効時間の範囲外と判定した場合に、前記暗号鍵を無効化することによって、前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1に記載の記憶装置。
【請求項11】
前記有効時間判定部は、前記パスワードが設定された日時を表すパスワード設定日時に前記暗号鍵有効時間を加算し、この加算結果の表す日時が、前記コマンドに含まれる時刻情報の表す日時を超えた場合に、前記暗号鍵が失効したと判定することを特徴とする請求項10に記載の記憶装置。
【請求項12】
前記無効化部は、前記暗号鍵を消去又は他の文字列に置き換えることによって、前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1に記載の記憶装置。
【請求項13】
データを不揮発性半導体メモリで構成された記憶領域に記憶する記憶部への電源の投入に伴い、経過時間のカウントを開始する経過時間計測ステップと、
前記記憶部に接続されたホスト装置から、パスワードと前記ホスト装置で計時された現在日時を表す時刻情報とを含んだコマンドの入力を受け付ける受付ステップと、
前記コマンドに含まれる時刻情報と、当該コマンドの入力時までに前記経過時間計測ステップでカウントされたカウンタ値とに基づいて、前回のコマンド入力から今回のコマンド入力までの経過時間を算出する算出ステップと、
前記算出ステップで算出された経過時間を、前回入力されたコマンドに含まれる時刻情報に加算する加算ステップと、
前記加算ステップでの加算結果と、今回入力されたコマンドに含まれる時刻情報との時間的な大小関係に基づいて、前記時刻情報の整合性を判定する時刻情報判定ステップと、
前記時刻情報判定ステップで不整合と判定された場合に、前記記憶領域に記憶されたデータを無効化する無効化ステップと、
前記時刻情報判定ステップで整合と判定された場合に、今回入力されたコマンドに含まれるパスワードの認証を行い、当該認証に成功した場合に前記記憶領域へのアクセスを許可する認証ステップと、
を含むことを特徴とする保護方法。
【請求項14】
データを不揮発性半導体メモリで構成された記憶領域に記憶する記憶部と、
現在日時を表した時刻情報を生成する計時部と、
前記記憶部へのアクセスに際し、予め定められたパスワードと前記時刻情報とを含んだコマンドを前記記憶部に送信する送信部と、
前記記憶部への電源の投入に伴い、経過時間のカウントを開始する経過時間計測部と、
前記送信部から前記コマンドの入力を受け付ける受付部と、
前記コマンドに含まれる時刻情報と、当該コマンドの入力時までに前記経過時間計測部でカウントされたカウンタ値とに基づいて、前回のコマンド入力から今回のコマンド入力までの経過時間を算出する算出部と、
前記算出部が算出した経過時間を、前回入力されたコマンドに含まれる時刻情報に加算する加算部と、
前記加算部の加算結果と、今回入力されたコマンドに含まれる時刻情報との時間的な大小関係に基づいて、前記時刻情報の整合性を判定する時刻情報判定部と、
前記時刻情報判定部が不整合と判定した場合に、前記記憶領域に記憶されたデータを無効化する無効化部と、
前記時刻情報判定部が整合と判定した場合に、今回入力されたコマンドに含まれるパスワードの認証を行い、当該認証に成功した場合に前記記憶領域へのアクセスを許可する認証部と、
を備える電子機器。
【請求項1】
データを不揮発性半導体メモリで構成された記憶領域に記憶する記憶部と、
前記記憶部への電源の投入に伴い、経過時間のカウントを開始する経過時間計測部と、
前記記憶部に接続されたホスト装置から、パスワードと前記ホスト装置で計時された現在日時を表す時刻情報とを含んだコマンドの入力を受け付ける受付部と、
前記コマンドに含まれる時刻情報と、当該コマンドの入力時までに前記経過時間計測部でカウントされたカウンタ値とに基づいて、前回のコマンド入力から今回のコマンド入力までの経過時間を算出する算出部と、
前記算出部が算出した経過時間を、前回入力されたコマンドに含まれる時刻情報に加算する加算部と、
前記加算部の加算結果と、今回入力されたコマンドに含まれる時刻情報との時間的な大小関係に基づいて、前記時刻情報の整合性を判定する時刻情報判定部と、
前記時刻情報判定部が不整合と判定した場合に、前記記憶領域に記憶されたデータを無効化する無効化部と、
前記時刻情報判定部が整合と判定した場合に、今回入力されたコマンドに含まれるパスワードの認証を行い、当該認証に成功した場合に前記記憶領域へのアクセスを許可する認証部と、
を備えることを特徴とする記憶装置。
【請求項2】
前記データを前記記憶領域に記憶する際には、前記記憶領域中での論理的な記憶位置を示す論理アドレスが前記ホスト装置によって指定され、
前記記憶部は、前記論理アドレスと前記記憶領域中のアドレスである物理アドレスとの対応関係を示すアドレス変換情報に基づいて、前記論理アドレスを前記物理アドレスに変換するとともに、変換された物理アドレスの位置に前記データを記憶し、
前記無効化部は、前記アドレス変換情報に対して、前記論理アドレスに対応する物理アドレスを無くすように変更することによって、前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1に記載の記憶装置。
【請求項3】
前記無効化部は、前記ホスト装置から書き込まれたデータを含むブロック内のデータを、前記記憶領域から消去することを特徴とする請求項1に記載の記憶装置。
【請求項4】
前記不揮発性半導体メモリは、NAND型フラッシュメモリであり、
前記NAND型フラッシュメモリは、記憶しているデータを完全消去する際に消去が完了しているか否かの確認処理が行なわれるとともに、消去が不完全である場合には、消去の完了が確認されるまで消去処理が繰り返され、
前記無効化部は、前記ホスト装置から書き込まれたデータを含むブロック内のデータを消去する場合、消去が完了しているか否かの確認処理を行わずに消去することを特徴とする請求項3に記載の記憶装置。
【請求項5】
前記不揮発性半導体メモリは、NAND型フラッシュメモリであり、
前記記憶部は、当該記憶部の動作を制御する制御プログラムおよび前記アドレス変換情報を記憶し、
前記無効化部は、前記記憶部を構成するNAND型フラッシュメモリのチップ全体を消去することによって、前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1に記載の記憶装置。
【請求項6】
前記不揮発性半導体メモリは、NAND型フラッシュメモリであり、
前記記憶部は、当該記憶部の動作を制御する制御プログラムおよび前記アドレス変換情報を記憶し、
前記無効化部は、前記記憶部を構成するNAND型フラッシュメモリのチップ全体にデータの上書きを行うことによって、前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1に記載の記憶装置。
【請求項7】
前記時刻情報判定部は、今回入力されたコマンドに含まれる時刻情報の表す日時が、前記算出部が算出した経過時間の表す日時と一致又は超えた場合に、整合と判定することを特徴とする請求項1乃至請求項6のいずれか1つに記載の記憶装置。
【請求項8】
一定時間あたりの前記コマンドの入力回数を検出し、当該入力回数が所定の上限値を超えたか否かを判定する判定部を更に備え、
前記判定部が上限値を超えたと判定した場合に、前記無効化部が前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1乃至請求項7のいずれか1つに記載の記憶装置。
【請求項9】
前記受付部は、前記認証部による前記パスワードの認証が所定回数失敗した場合、前記コマンドの受け付けを所定時間停止することを特徴とする請求項1乃至請求項8のいずれか1つに記載の記憶装置。
【請求項10】
前記記憶部は、前記データを暗号鍵に基づいて暗号化された暗号化データを記憶するとともに、前記暗号化データは前記暗号鍵に基づいて復号化され、
前記暗号鍵を有効とする時間を定めた暗号鍵有効時間と、前記経過時間計測部のカウンタ値とを比較し、当該カウンタ値が前記暗号鍵有効時間を超えた場合に、前記暗号鍵が失効したと判定する有効時間判定部を更に備え、
前記無効化部は、前記有効時間判定部が前記暗号鍵有効時間の範囲外と判定した場合に、前記暗号鍵を無効化することによって、前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1に記載の記憶装置。
【請求項11】
前記有効時間判定部は、前記パスワードが設定された日時を表すパスワード設定日時に前記暗号鍵有効時間を加算し、この加算結果の表す日時が、前記コマンドに含まれる時刻情報の表す日時を超えた場合に、前記暗号鍵が失効したと判定することを特徴とする請求項10に記載の記憶装置。
【請求項12】
前記無効化部は、前記暗号鍵を消去又は他の文字列に置き換えることによって、前記記憶領域に記憶されたデータを無効化することを特徴とする請求項1に記載の記憶装置。
【請求項13】
データを不揮発性半導体メモリで構成された記憶領域に記憶する記憶部への電源の投入に伴い、経過時間のカウントを開始する経過時間計測ステップと、
前記記憶部に接続されたホスト装置から、パスワードと前記ホスト装置で計時された現在日時を表す時刻情報とを含んだコマンドの入力を受け付ける受付ステップと、
前記コマンドに含まれる時刻情報と、当該コマンドの入力時までに前記経過時間計測ステップでカウントされたカウンタ値とに基づいて、前回のコマンド入力から今回のコマンド入力までの経過時間を算出する算出ステップと、
前記算出ステップで算出された経過時間を、前回入力されたコマンドに含まれる時刻情報に加算する加算ステップと、
前記加算ステップでの加算結果と、今回入力されたコマンドに含まれる時刻情報との時間的な大小関係に基づいて、前記時刻情報の整合性を判定する時刻情報判定ステップと、
前記時刻情報判定ステップで不整合と判定された場合に、前記記憶領域に記憶されたデータを無効化する無効化ステップと、
前記時刻情報判定ステップで整合と判定された場合に、今回入力されたコマンドに含まれるパスワードの認証を行い、当該認証に成功した場合に前記記憶領域へのアクセスを許可する認証ステップと、
を含むことを特徴とする保護方法。
【請求項14】
データを不揮発性半導体メモリで構成された記憶領域に記憶する記憶部と、
現在日時を表した時刻情報を生成する計時部と、
前記記憶部へのアクセスに際し、予め定められたパスワードと前記時刻情報とを含んだコマンドを前記記憶部に送信する送信部と、
前記記憶部への電源の投入に伴い、経過時間のカウントを開始する経過時間計測部と、
前記送信部から前記コマンドの入力を受け付ける受付部と、
前記コマンドに含まれる時刻情報と、当該コマンドの入力時までに前記経過時間計測部でカウントされたカウンタ値とに基づいて、前回のコマンド入力から今回のコマンド入力までの経過時間を算出する算出部と、
前記算出部が算出した経過時間を、前回入力されたコマンドに含まれる時刻情報に加算する加算部と、
前記加算部の加算結果と、今回入力されたコマンドに含まれる時刻情報との時間的な大小関係に基づいて、前記時刻情報の整合性を判定する時刻情報判定部と、
前記時刻情報判定部が不整合と判定した場合に、前記記憶領域に記憶されたデータを無効化する無効化部と、
前記時刻情報判定部が整合と判定した場合に、今回入力されたコマンドに含まれるパスワードの認証を行い、当該認証に成功した場合に前記記憶領域へのアクセスを許可する認証部と、
を備える電子機器。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2012−221257(P2012−221257A)
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願番号】特願2011−86756(P2011−86756)
【出願日】平成23年4月8日(2011.4.8)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願日】平成23年4月8日(2011.4.8)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]