(57)【要約】【課題】情報の漏洩を防止可能なコントローラ及びデータストレージシステムを提供すること。【解決手段】データを保持可能な記憶装置１０、６０を制御するコントローラ２０、５０であって、前記コントローラ２０、５０の有する識別情報に基づいて擬似乱数を生成する擬似乱数発生回路３１と、前記擬似乱数を用いて、記憶装置１０、６０への書き込みデータをスクランブルするスクランブル回路３２とを具備する。【選択図】図８
2011134125.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機器に接続可能とされ、データを保持可能な記憶装置を制御するコントローラであって、
前記コントローラの有する識別情報に基づいて擬似乱数を生成する擬似乱数発生回路と、
前記ホスト機器から受信したデータを、前記擬似乱数を用いてスクランブルするスクランブル回路と
を具備するコントローラ。
【請求項２】
前記チップ識別情報は、前記コントローラの有するチップ位置情報を少なくとも含む
ことを特徴とする請求項１記載のコントローラ。
【請求項３】
前記疑似乱数発生回路及び前記スクランブル回路を制御する制御回路を更に備え、
前記制御回路は、前記ホスト機器からスクランブル命令を受信した際には、前記スクランブル回路に対して前記データのスクランブルを命令して、スクランブルされた前記データの書き込みを前記記憶装置へ命令し、
前記スクランブル命令を受信しない際には、前記スクランブル回路に対して前記書き込みデータのスクランブルを命令することなく、非暗号化の前記データの書き込みを前記記憶装置へ命令する
ことを特徴とする請求項１記載のコントローラ。
【請求項４】
前記スクランブル回路は、複数のスクランブル方法を用いてデータのスクランブルが可能であり、
前記制御回路は、前記チップ識別情報に基づいて、前記複数のスクランブル方法から特定のスクランブル方法を選択する
ことを特徴とする請求項１記載のコントローラ。
【請求項５】
データを保持可能な記憶装置と、
前記記憶装置を制御可能なコントローラとを備え、
前記コントローラは、
前記コントローラの有する識別情報に基づいて擬似乱数を生成する擬似乱数発生回路と、
前記擬似乱数を用いて、記憶装置への書き込みデータをスクランブルするスクランブル回路と
を具備するデータストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラ及びデータストレージシステムに関する。
【背景技術】
【０００２】
近年、携帯電話やパーソナルコンピュータでは、データを暗号化して記憶媒体に書き込むことにより、情報の流出を防止する手法が取られている。また暗号化の一例としては、擬似乱数を用いる方法がある。疑似乱数は、ある初期値（以下、シード値と呼ぶ）を元にして生成される。そして、このシード値に基づいて生成された擬似乱数を用いて、データが暗号化される（特許文献１参照）。
【０００３】
しかし上記従来の方法においては、シード値は、記憶媒体を制御するコントローラ毎、またはファームウェアのバージョン毎に共通化していることがある。この場合、第三者がある製品についてシード値を一旦把握すると、同一型番の製品の全てについての暗号化データを解読出来き、情報の流出につながるというおそれがあった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１５７８３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、情報の漏洩を防止可能なコントローラ及びデータストレージシステムを提供する。
【課題を解決するための手段】
【０００６】
この発明の一態様に係るコントローラは、ホスト機器に接続可能とされ、データを保持可能な記憶装置を制御するコントローラであって、前記コントローラの有する識別情報に基づいて擬似乱数を生成する擬似乱数発生回路と、前記ホスト機器から受信したデータを、前記擬似乱数を用いてスクランブルするスクランブル回路とを具備する。
【０００７】
また、この発明の一態様に係るデータストレージシステムは、データを保持可能な記憶装置と、前記記憶装置を制御可能なコントローラとを備え、前記コントローラは、前記コントローラの有する識別情報に基づいて擬似乱数を生成する擬似乱数発生回路と、前記擬似乱数を用いて、記憶装置への書き込みデータをスクランブルするスクランブル回路とを具備する。
【発明の効果】
【０００８】
本発明によれば、情報の漏洩を防止可能なコントローラ及びデータストレージシステムを提供できる。
【図面の簡単な説明】
【０００９】
【図１】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図２】この発明の第１の実施形態に係るメモリカードにおける信号ピンに対する信号割り当てを示す図。
【図３】本発明の第１の実施形態に係るメモリカードのブロック図。
【図４】本発明の第１の実施形態に係るＮＡＮＤ型フラッシュメモリのメモリセルアレイの回路図。
【図５】本発明の第１の実施形態に係るＮＡＮＤ型フラッシュメモリの閾値分布を示すグラフ。
【図６】本発明の第１の実施形態に係るレジスタの概念図。
【図７】本発明の第１の実施形態に係るウェハマップ。
【図８】本発明の第１の実施形態に係るエンコーダ／デコーダのブロック図。
【図９】本発明の第１の実施形態に係るスクランブルテーブルの概念図。
【図１０】本発明の第２の実施形態に係るハードディスク装置の概念図。
【発明を実施するための形態】
【００１０】
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１１】
[第１の実施形態]  
＜メモリシステムの全体構成について＞  
この発明の第１の実施形態に係るコントローラ及びデータストレージシステムについて、図１を用いて説明する。図１は、本実施形態に係るコントローラ及びデータストレージシステムのブロック図であり、ＳＤTMメモリカード（以下、単にメモリカード２と呼ぶ）をデータストレージシステムを一例として用いた構成について示している。メモリカード２は、その内部にＮＡＮＤ型フラッシュメモリ１０及びこのＮＡＮＤ型フラッシュメモリを制御するコントローラ２０を備える。メモリカード２は、ホスト機器１と接続可能で、ホスト機器１からＮＡＮＤ型フラッシュメモリへのデータ書き込み及び消去や、ＮＡＮＤ型フラッシュメモリからホスト機器１へのデータの読み出しを行えるようになっている。
【００１２】
ホスト機器１は、ホストバスインタフェース（以下、単にホストバスと呼ぶことがある）５を介して接続されるメモリカード２に対しアクセスを行うためのハードウェアおよびソフトウェアを備えている。
【００１３】
メモリカード２は、ＮＡＮＤ型フラッシュメモリと、それを制御するコントローラを含む。またホスト機器１に接続された時に電源供給を受けて動作し、ホスト機器１からのアクセスに応じた処理を行う。メモリカード２は、例えばＮＡＮＤ型フラッシュメモリを備え、ホスト機器１の要求に従ってデータを保存し、また保存したデータを読み出してホスト機器１に出力する。以下、メモリカード２の構成の詳細について説明する。
【００１４】
＜メモリカード２の構成について＞  
図１に示すようにメモリカード２は、ホスト機器１とホストバスインタフェース５を介して情報の授受を行う。メモリカード２は、ＮＡＮＤ型フラッシュメモリチップ（単にＮＡＮＤ型フラッシュメモリ、またはフラッシュメモリと呼ぶことがある）１０、フラッシュメモリチップ１０を制御するコントローラ２０、および複数の信号ピン（第１ピン乃至第９ピン）を備えている。
【００１５】
複数の信号ピンは、コントローラ２０と電気的に接続されている。第１ピン乃至第９ピンに対する信号の割り当ては、例えば図２に示すようになっている。図２は、第１ピン乃至第９ピンと、それらに割り当てられた信号とを示す表である。
【００１６】
データ０乃至データ３は、第７ピン、第８ピン、第９ピン、および第１ピンにそれぞれ割り当てられている。第１ピンは、また、カード検出信号に対しても割り当てられている。さらに、第２ピンはコマンドに割り当てられ、第３ピンおよび第６ピンは接地電位Ｖssに、第４ピンは電源電位Ｖddに、第５ピンはクロック信号に割り当てられている。
【００１７】
また、メモリカード２は、ホスト機器１に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器１に設けられたホストコントローラ（図示せず）は、これら第１ピン乃至第９ピンを介してメモリカード２内のコントローラ２０と各種信号およびデータを通信する。例えば、メモリカード２にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第２ピンを介してコントローラ２０にシリアルな信号として送出する。このとき、コントローラ２０は、第５ピンに供給されているクロック信号に応答して、第２ピンに与えられる書き込みコマンドを取り込む。
【００１８】
ここで、前述したように、書き込みコマンドは、第２ピンのみを利用してコントローラ２０にシリアルに入力される。コマンドの入力に割り当てられている第２ピンは、図２に示すように、データ３用の第１ピンと接地電位Ｖss用の第３ピンとの間に配置されている。複数の信号ピンとそれに対するホストバスインタフェース５は、ホスト機器１内のホストコントローラとメモリカード２とが通信するのに使用される。
【００１９】
これに対し、フラッシュメモリ１０とコントローラ２０との間の通信は、後述するＮＡＮＤ型フラッシュメモリ用のＮＡＮＤバスインタフェース（以下、単にＮＡＮＤバスと呼ぶことがある）２１によって行われる。したがって、ここでは図示しないが、フラッシュメモリ１０とコントローラ２０とは例えば８ビットの入出力（Ｉ／Ｏ）線により接続されている。
【００２０】
例えば、コントローラ２０がフラッシュメモリ１０にデータを書き込む際には、コントローラ２０は、これらＩ／Ｏ線を介してデータ入力コマンド８０Ｈ、カラムアドレス、ページアドレス、データ、およびプログラムコマンド１０Ｈ（或いはキャッシュプログラムコマンド１５Ｈ）をフラッシュメモリ１０に順次入力する。ここで、コマンド８０Ｈの“Ｈ”は１６進数を示すものであり、実際には“１０００００００”という８ビットの信号が、８ビットのＩ／Ｏ線にパラレルに与えられる。つまり、このＮＡＮＤバスインタフェース２１では、複数ビットのコマンドがパラレルに与えられる。
【００２１】
また、ＮＡＮＤバスインタフェース２１では、フラッシュメモリ１０に対するコマンドとデータが同じＩ／Ｏ線を共用して通信されている。このように、ホスト機器１内のホストコントローラとメモリカード２とが通信するインタフェース（ホストバス５）と、フラッシュメモリ１０とコントローラ２０とが通信するインタフェース（ＮＡＮＤバス２１）とは異なる。
【００２２】
次に、メモリカード２に含まれるＮＡＮＤ型フラッシュメモリ１０及びコントローラ２０の構成の詳細について説明する。
【００２３】
＜ＮＡＮＤフラッシュメモリ１０の構成について＞  
まずＮＡＮＤ型フラッシュメモリ１０について、図３を用いて説明する。図３は、ＮＡＮＤ型フラッシュメモリ１０のブロック図である。
【００２４】
図示するようにＮＡＮＤ型フラッシュメモリ１０は、メモリセルアレイ１１、ロウデコーダ１２、ページバッファ１３、電圧発生回路１４、Ｉ／Ｏバッファ１５、及び制御部１６を備える。これらは、同一の半導体基板上に集積形成されている。
【００２５】
メモリセルアレイ１１は、複数のメモリセルトランジスタを備え、データを記憶する。メモリセルアレイ１１の構成について、図４を用いて説明する。図４はメモリセルアレイ１１の回路図である。
【００２６】
図示するようにメモリセルアレイ１１は、複数のブロックＢＬＫ（ＢＬＫ０〜ＢＬＫｍ（ｍは１以上の自然数））を備え、該ブロックＢＬＫ０〜ＢＬＫｍの各々は、複数のＮＡＮＤストリング６を備えている。ＮＡＮＤストリング６の各々は、例えば６４個のメモリセルトランジスタＭＴと、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（例えば浮遊ゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲートを備えた、ｎチャネルＭＯＳトランジスタである。なお、メモリセルトランジスタＭＴは、電荷蓄積層が絶縁物で形成されたＭＯＮＯＳ構造を備えていても良い。またＮＡＮＤストリング６内のメモリセルトランジスタＭＴの個数は６４個に限られず、８個、１６個、３２個、１２８個、または２５６個等であってもよく、その数は限定されるものではない。ＮＡＮＤストリング６内においてメモリセルトランジスタＭＴは、隣接するもの同士でソース、ドレインを共有している。そして、選択トランジスタＳＴ１、ＳＴ２間に、その電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタＭＴの一端側のドレイン領域は選択トランジスタＳＴ１のソース領域に接続され、他端側のソース領域は選択トランジスタＳＴ２のドレイン領域に接続されている。
【００２７】
同一行にあるメモリセルトランジスタＭＴの制御ゲートは、ワード線ＷＬ（ＷＬ０〜ＷＬ６３）のいずれかに共通接続され、同一行にあるメモリセルトランジスタＭＴの選択トランジスタＳＴ１、ＳＴ２のゲート電極は、それぞれセレクトゲート線ＳＧＤ、ＳＧＳに共通接続されている。また、メモリセルアレイ１１において同一列にある選択トランジスタＳＴ１のドレインは、いずれかのビット線ＢＬ（ＢＬ０〜ＢＬｎ（ｎは２以上の自然数））に共通接続される。選択トランジスタＳＴ２のソースはソース線ＳＬに共通接続される。
【００２８】
同一のワード線ＷＬに接続された複数のメモリセルトランジスタＭＴには一括してデータが書き込まれ、この単位をページと呼ぶ。更に、データの消去はブロックＢＬＫ単位で行われる。
【００２９】
上記メモリセルトランジスタＭＴは、電荷蓄積層に注入された電荷量に応じて、例えば４種類の閾値電圧を有し、これによって４種類のデータを記憶可能とされている。図５は、メモリセルトランジスタＭＴの閾値分布を示すグラフである。
【００３０】
図示するようにメモリセルトランジスタＭＴは、閾値電圧の低い順に、“０”、“１”、“２”、“３”データを保持可能である。例えば“０”データを保持するメモリセルトランジスタＭＴの閾値電圧Ｖth０は、Ｖth０＜Ｖ０１である。“１”データを保持するメモリセルトランジスタＭＴの閾値電圧Ｖth１は、Ｖ０１＜Ｖth１＜Ｖ１２である。“２”データを保持するメモリセルトランジスタＭＴの閾値電圧Ｖth２は、Ｖ１２＜Ｖth２＜Ｖ２３である。“３”データを保持するメモリセルトランジスタＭＴの閾値電圧Ｖth３は、Ｖ２３＜Ｖth３である。そして、例えばＶ０１＝０Ｖである。
【００３１】
図３に戻って説明を続ける。ロウデコーダ１２は、データの書き込み動作時、読み出し動作時、及び消去時において、Ｉ／Ｏバッファ１５を介してコントローラ２０から与えられたロウアドレスに基づいて、メモリセルアレイ１１のロウ方向を選択する。より具体的には、ロウデコーダ１２はワード線ＷＬ及びセレクトゲート線ＳＧＤ、ＳＧＳを選択する。そしてロウデコーダ１１は、選択ワード線ＷＬ、非選択ワード線ＷＬ、及びセレクトゲート線ＳＧＤ、ＳＧＳに、適切な電圧を転送する。
【００３２】
ページバッファ１３は、データの書き込み時には、書き込みデータをビット線ＢＬに転送する。これにより、選択ワード線ＷＬに接続されたメモリセルトランジスタＭＴに対してデータを書き込む。またデータの読み出し時には、ビット線ＢＬに読み出されたデータをセンス・増幅し、その結果をＩ／Ｏバッファ１５に出力する。
【００３３】
電圧発生回路１４は、制御部１６の制御に従って、データの書き込み動作、消去動作、及び読み出し動作に必要な電圧を発生し、ロウデコーダ１２に供給する。ロウデコーダ１２は、電圧発生回路１４から与えられた電圧を、選択ワード線ＷＬ、非選択ワード線ＷＬ、セレクトゲート線ＳＧＤ、ＳＧＳ、及びメモリセルアレイ１１が形成されたウェル領域に印加する。
【００３４】
Ｉ／Ｏバッファ１５は、データの書き込み時には、コントローラ２０から供給された書き込みデータ、アドレス、及び書き込みコマンドを、一時的に保持する。そして、アドレスをロウデコーダ１２へ転送し、アドレス及び書き込みコマンドを制御部１６に転送し、書き込みデータをページバッファ１３へ転送する。またデータの読み出し時には、書き込み時と同様にアドレス及び読み出しコマンドを受信する。そしてアドレス及び読み出しコマンドを制御部１６に転送し、またアドレスをロウデコーダ１２に転送する。そして、ページバッファ１３から受け取った読み出しデータをコントローラ２０へ出力する。
【００３５】
次に制御部１６について説明する。制御部１６は、ＮＡＮＤ型フラッシュメモリ１０全体の動作を制御する。すなわち、コントローラ２０から与えられた上記アドレス及びコマンドに基づいて、データの書き込み動作、読み出し動作、及び消去動作必要なシーケンスを実行する。
【００３６】
＜コントローラ２０の構成について＞  
次にコントローラ２０について、図３を参照して説明する。コントローラ２０は、ホスト機器１の命令に従って、ＮＡＮＤ型フラッシュメモリ１０の動作を制御する。より具体的には、ＮＡＮＤ型フラッシュメモリ１０に対するデータの書き込み、読み出し、消去動作を制御し、また読み出しデータについてのエラー訂正や、書き込みデータについてのパリティの生成等も行う。そのためコントローラ２０は、例えば上記ＮＡＮＤフラッシュメモリ１０の物理状態（例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理する。
【００３７】
図３に示すようにコントローラ２０は、ＳＤインタフェース２１、ＭＰＵ（micro processing unit）２２、ＲＯＭ（read only memory）２３、ＲＡＭ（random access memory）２４、ＮＡＮＤインタフェース２５、ＥＣＣ回路２６、レジスタ２７、エンコーダ２８、及びヒューズブロック２９を含んでいる。これらは、同一の半導体基板上に集積形成される。ＮＡＮＤ型フラッシュメモリ１０とコントローラ２０は、同一の半導体基板上に形成されても良いし、別々の半導体基板上に形成されても良い。本実施形態は、両者がそれぞれ別の半導体基板上に形成される場合を例に説明する。
【００３８】
ＳＤインタフェース２１は、コントローラ２０とホスト機器１との間のインタフェース処理を行う。ＳＤインタフェース２１は、ホスト機器１から、例えばＳＤコマンド、アドレス、及び書き込みデータ等を受信する。そしてＳＤインタフェース２１は、受信したＳＤコマンドをＭＰＵ２２に転送し、またアドレス及び書き込みデータを例えばＲＡＭ２４に格納する。更に、ホスト機器１に対して出力すべきデータを、ＭＰＵ２２の命令に従って出力する。
【００３９】
ＭＰＵ２２は、メモリカード２全体の動作を制御する。ＭＰＵ２２は、例えばメモリカード２が電源供給を受けたときに、ＲＯＭ２３に格納されているファームウェア（制御プログラム）をＲＡＭ２４上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ２４上に作成する。また、ＭＰＵ２２は、ホスト機器１から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、ＮＡＮＤ型フラッシュメモリ１０に対して所定の処理を実行する。さらに、ＭＰＵ２２は、エンコーダ２８を制御して、書き込みデータのスクランブルを行う。書き込みデータのスクランブルについては、後に詳述する。
【００４０】
ＲＯＭ２３は、ＭＰＵ２２により制御される制御プログラム等を格納する。
【００４１】
ＲＡＭ２４は、ＭＰＵ２２の作業エリアとして使用され、制御プログラムや各種のテーブル（表）を記憶する。
【００４２】
ＮＡＮＤインタフェース２５は、メモリントローラ２０とＮＡＮＤ型フラッシュメモリ１０との間のインタフェース処理を行う。すなわちＮＡＮＤインタフェース２５はＭＰＵ２２の命令に従って、ＭＰＵ２２によって発行された命令（書き込み命令、読み出し命令、消去命令等）、アドレス、書き込みデータ等をＮＡＮＤ型フラッシュメモリ１０へ出力する。またＮＡＮＤ型フラッシュメモリ１０から供給される読み出しデータを受信し、ＲＡＭ２４に格納する。
【００４３】
ＥＣＣ回路２６は、データのエラー訂正を行う。より具体的にはＥＣＣ回路２６は、読み出したページデータにつき、エラーの検出を行い、エラーが検出された場合にはエラー訂正を行う。またデータの書き込み時には、エラー訂正に必要なパリティを生成する。
【００４４】
レジスタ２７は、ＣＳＲ、ＣＩＤ、ＲＣＡ、ＤＳＲ、ＣＳＤ、ＳＣＲ、ＯＣＲ等各種レジスタを有する。レジスタ２７の具体的な構成について図６を用いて説明する。図示するように、ＣＳＲ（card status register）は、通常動作において使用され、例えばエラー情報が記憶される。ＣＩＤ、ＲＣＡ、ＤＳＲ、ＣＳＤ、ＳＣＲ、ＯＣＲは、主にメモリカード２の初期化時に使用される。ＣＩＤ（card identification number）には、メモリカード２の個体番号が記憶される。ＲＣＡ（relative card address）には、相対カードアドレスが記憶される。ＤＳＲ（driver stage register）には、メモリカード２のバス駆動力等が記憶される。ＣＳＤ（card specific data）には、メモリカード２の特性パラメータ値が記憶される。ＳＣＲ（SD configuration data register）には、メモリカード２のデータ配置が記憶される。ＯＣＲ（operation condition resister）には、メモリカード２の動作範囲電圧に制限のある場合、動作電圧が記憶される。
【００４５】
ヒューズブロック２９は、複数のヒューズ素子を備えており、複数ビット（例えば８ビット）のデータを保持可能とされる。ヒューズブロック２９のヒューズ素子は、コントローラ２０固有の情報を保持する。言い換えれば、当該コントローラ２０を搭載されたＳＤメモリカード２に固有の値、つまりメモリカード製品固有の値を保持する。
【００４６】
より具体的には、ヒューズブロック２９のヒューズ素子内に保持される値は、コントローラ２０が形成される半導体基板の、半導体ウェハ中における位置情報であっても良い。または、当該メモリカード２についての製品コード、ロット番号、またはウェハ番号であっても良いし、またこれらの組み合わせであっても良い。
【００４７】
半導体基板の半導体ウェハ中における位置情報について、図７を用いて説明する。図７は、コントローラ２０の製造過程における半導体ウェハの外観図であり、半導体ウェハのＸＹ座標を図示したものである。
【００４８】
図示するように、コントローラ２０は、半導体ウェハの状態において、半導体基板上に形成され、その後、ダイシング工程によって半導体ウェハから切り出され、個々のチップとなる。上記位置情報とは、この切り出されたチップが、半導体ウェハ中において、どの位置にあったものであるか、ということを示す情報である。
【００４９】
例えば図７に示すように、あるコントローラ２０が形成されたチップは、ウェハ状態では、斜線で示した領域にあったと仮定する。すると、当該チップの半導体ウェハ内における位置は、Ｘ＝“５”、Ｙ＝“１”である。従ってヒューズブロック２９内のヒューズ素子には、Ｘ＝“０００００１０１”、Ｙ＝“０００００００１”なる情報が書き込まれる（２進数表示）。
【００５０】
勿論、ＸＹ座標だけでなく、先述した製品コード、ロット番号、ウェハ番号が書き込まれても良いし、またはこれらの情報に基づいて生成した新たな情報が書き込まれても良い。これらの、コントローラ２０固有の情報を、以下ではチップ識別情報と呼ぶことがある。
【００５１】
次に、エンコーダ２８について説明する。エンコーダ２８は、データの書き込み時において、書き込みデータをスクランブルする。そしてエンコーダ２８でスクランブルされたデータが、ＮＡＮＤ型フラッシュメモリ１０に書き込まれる。図８はエンコーダ２８のブロック図である。
【００５２】
図示するようにエンコーダ２８は、レジスタ３０、疑似乱数発生回路３１、及びスクランブル回路３２を備えている。レジスタ３０は、ヒューズブロック２９から読み出された情報を保持する。この情報は、例えば８ビットである。
【００５３】
疑似乱数発生回路３１は、レジスタ３０に保持される値をシード（seed）値として、疑似乱数を発生する。疑似乱数発生回路３１の構成は特に限定されるものでは無いが、例えばリニアフィードバックシフトレジスタを用いることが出来る。疑似乱数発生回路３１は、例えばＭＰＵ２２の命令に従って疑似乱数の発生を行う。なお、シード値が例えば“００００００００”であった場合、疑似乱数発生回路３１は擬似乱数を発生させることが出来ない場合がある。この場合には、擬似乱数発生回路３１は入力されたシード値を、例えば“１１１１１１１１”に変換した後、この変換した値をシード値に用いて擬似乱数を発生させてもよい。
【００５４】
スクランブル回路３２は、データの書き込み時において、ＲＡＭ２４から読み出した書き込みデータを、疑似乱数発生回路３１で発生された疑似乱数に基づいてスクランブルする。より具体的には、例えば８ビットの書き込みデータと、８ビットの疑似乱数との排他的論理和（ＸＯＲ）演算を行う。そして演算結果をスクランブルデータとして、ＲＡＭ２４に格納する。
【００５５】
スクランブル回路３２によって、データは図９に示すようにスクランブルされる（スクランブルされたデータをスクランブルデータと呼ぶ）。図９は、疑似乱数によって取り得る書き込みデータのスクランブルパターンを示す表である。
【００５６】
図示するように、パターン０が選択された際には、書き込みデータの上位ビット及び下位ビットは正転される。つまり、スクランブルデータは、スクランブル回路３２に入力された書き込みデータと同じである。パターン１が選択された際には、上位ビットのみが反転される。つまり書き込みデータが“００”であれば、スクランブルデータは“１０”となる。パターン２が選択された際には、下位ビットのみが反転される。つまり書き込みデータが“００”であれば、スクランブルデータは“０１”となる。パターン３が選択された際には、上位ビット及び下位ビットの両方が反転される。つまり書き込みデータが“００”であれば、スクランブルデータは“１１”となる。いずれのパターンが選択されるかは、疑似乱数発生回路３１で生成された疑似乱数、つまりレジスタ３０に保持されるシード値によって決定される。
【００５７】
＜データの書き込み動作について＞  
次に、ホスト機器１からの書き込みデータをＮＡＮＤ型フラッシュメモリ１０に書き込む際のコントローラ２０の動作について説明する。
【００５８】
まずホスト機器１から、書き込みコマンド、書き込みデータ、及びアドレスが、ＳＤインタフェース２１で受信される。ＳＤインタフェース２１は、書き込みコマンドをＭＰＵ２２に供給すると共に、書き込みデータとアドレスをＲＡＭ２４に格納する。
【００５９】
書き込みコマンドを受信したＭＰＵ２２は、ＲＡＭ２４から書き込みデータを読み出してエンコーダ２８に供給すると共に、エンコーダ２８に対して疑似乱数の発生と書き込みデータのスクランブルを命令する。するとエンコーダ２８は、レジスタ３０に保持されるシード値に基づいて疑似乱数を発生する。またスクランブル回路３２は、疑似乱数発生回路３１によって発生された疑似乱数を用いて書き込みデータをスクランブルする。そしてスクランブルデータをＲＡＭ２４に格納する。
【００６０】
引き続きＭＰＵ２２は、ＮＡＮＤ型フラッシュメモリ１０に対する書き込みコマンドを発行し、この書き込みコマンドと、ＲＡＭ２４内のスクランブルデータと、アドレスとを、ＮＡＮＤインタフェース２５を介してＮＡＮＤ型フラッシュメモリ１０に出力する。
【００６１】
＜本実施形態に係る効果＞
疑似乱数発生回路で用いられるシード値は、製品毎やファームウェア毎に共通の値である場合第三者がある１つの製品について何らかの方法でシード値を知得が出来れば、同じ型番の他の製品についてもデータの解読が可能となる可能性がある。
【００６２】
しかし、本実施形態に係る構成であると、シード値は、各コントローラ２０に固有の値例えば、コントローラチップの製造時の半導体ウェハ中の位置情報等が用いられる。つまり、シード値はコントローラ２０毎のレジスタが個々に有する情報を用いるので、型番が同じであっても個々製品毎にスクランブルパターンは異なるこのことから、型番が同じ製品であっても、データスクランブル時に用いる疑似乱数が異なり、ある１つの製品についてのシード値が知得されたとしても、同じ型番の他の製品について解読されることを防止出来る。
【００６３】
このようなデータスクランブルによる暗号化処理は、データを記憶するメモリ領域を分散する効果もあるので、ＮＡＮＤ型などのフラッシュメモリが微細化とともに生じる隣接メモリセルからの影響によりプログラムディスターブ等の影響を低減する、という側面も有する。
【００６４】
[第２の実施形態]  
次に、この発明の第２の実施形態に係るコントローラ及びデータストレージシステムについて説明する。本実施形態は、例えばパーソナルコンピュータなどに搭載されたハードディスク（ＨＤＤ）へデータの書き込みを行う際、そのデータに暗号化処理を実行するコントローラ及びデータストレージシステムに関する。そして、暗号化処理に用いる疑似乱数を、第１の実施形態と同様にコントローラ固有の値をシードに用いて生成するものである。
【００６５】
＜ＨＤＤ装置４０の全体構成について＞  
図１０は、本実施形態に係るＨＤＤ装置４０のブロック図である。図示するようにＨＤＤ装置４０は、コントローラ５０及び磁気ディスク６０を備えている。
【００６６】
＜磁気ディスク６０の構成について＞  
磁気ディスク６０は、データを記録する。磁気ディスク６０において、例えば表面が、データの磁気記録される記録面となる。そして、磁気ディスク６０の記録面に対応して磁気ヘッド（図示せず）が配置されている。この磁気ヘッドは、磁気ディスク６０へのデータ書き込み及び磁気ディスクからのデータ読み出しに用いられる。なお、磁気ディスク６０の裏面も記録面として機能し、その記録面に対応して上記磁気ヘッドと同様の磁気ヘッドが配置されていても良い。またハードディスク４０は、単一の磁気ディスク６０を備えた構成であってもよいし、磁気ディスク６０が複数枚積層配置された構成であっても構わない。
【００６７】
＜コントローラ５０の構成について＞  
図１０に示すようにコントローラ５０は、インタフェース５１、５２、ＭＰＵ５３、ＲＡＭ５４、ＲＯＭ５５、エンコーダ５６、及びヒューズブロック５７を備えている。これらは同一の基板上に集積形成されている。
【００６８】
インタフェース５１は、例えばＡＴＡ（ＩＤＥ）バスであり、図示せぬホスト機器（例えばパーソナルコンピュータ等）との間のインタフェース処理を行う。インタフェース５１は、ホスト機器から、例えばコマンド及び書き込みデータ等を受信する。そしてインタフェース５１は、受信したコマンドをＭＰＵ５３に転送し、また書き込みデータを例えばＲＡＭ５４に格納する。更に、ホスト機器に対して出力すべきデータを、ＭＰＵ５３の命令に従って出力する。
【００６９】
インタフェース５２は、磁気ディスク６０とコントローラ５０との間のインタフェース処理を行う。インタフェース５２は、書き込みデータ等を磁気ディスク６０に出力し、また磁気ディスク６０からの読み出しデータを受信する。
【００７０】
ＭＰＵ５３は、ＨＤＤ装置４０全体の動作を制御する。ＭＰＵ５３は、ホスト機器より転送された書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、磁気ディスク６０に対して所定の処理を実行する。具体的には、磁気ディスクのトラック位置に応じた書き込み電圧の制御・読み書きする際の変調、及びデータの入出力の制御などを行う。またＭＰＵ５３は、例えばＨＤＤ装置４０が電源供給を受けたときに、ＲＯＭ５５に格納されているファームウェア（制御プログラム）をＲＡＭ５４上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ５４上に作成する。更にＭＰＵ５３は、エンコーダ５６を制御して、書き込みデータの暗号化を行う。書き込みデータの暗号化処理については、後に詳述する。
【００７１】
ヒューズブロック５７は、上記第１の実施形態で説明したヒューズブロック２９とほぼ同様であるので詳細な説明は省略する。ヒューズブロック５７は複数のヒューズ素子を備えており、複数ビット（例えば８ビット）のデータを保持可能とされる。ヒューズブロック５７のヒューズ素子は、コントローラ５０固有の情報、この第２の実施形態ではＨＤＤ装置の製品固有の値を保持する。
【００７２】
ＲＯＭ５５は、ＭＰＵ５３により制御される制御プログラム等を格納する。また、例えばベンダー番号などを含むファームウェア情報を保持する。
【００７３】
エンコーダ５６は、ホスト機器から与えられた磁気ディスク６０への書き込みデータを暗号化する。エンコーダ５５の構成は、基本的には第１の実施形態と同様であるが、図８の構成において、スクランブル回路を暗号化回路に置き換えた点が異なる。エンコーダ５６は、レジスタ３０、疑似乱数発生回路３１、及び暗号化回路（以下では便宜上、暗号化回路３２と呼ぶ）を備えている。レジスタ３０及び疑似乱数発生回路３１は、第１の実施形態と同様であるので、詳細な説明は省略する。暗号化回路３２は、磁気ディスク６０への書き込みデータを、疑似乱数発生回路３１で発生された疑似乱数を用いて暗号化する。そして暗号化された書き込みデータをＲＡＭ５４に格納され、その後ＭＰＵ５３によって磁気ディスク６０に書き込まれる。
【００７４】
＜本実施形態に係る効果＞  
本実施形態に係る構成であると、情報漏洩を防止するために、ＨＤＤ装置にデータを暗号化して記録することが出来る。そしてこの暗号化は、本実施形態では、コントローラ５０にユニークな値（コントローラチップの位置情報等）が、疑似乱数発生回路のシード値として用いられる。従って、第１の実施形態と同様に、暗号化データの解読を効果的に防止出来る。
【００７５】
また上記第１、第２の実施形態では、エンコーダ２８、５６がそれぞれデータのスクランブル及び暗号化を行う場合を例に説明した。しかし、これらの処理をＭＰＵ２２、５３が行っても良い。またコントローラ２０、５０内部では無くホスト機器１で行われても良い。この場合、ホスト機器１はコントローラ２０、５０のチップ識別情報を受け取り、これに基づいてホスト機器１がスクランブルまたは暗号化を行う。またエンコーダ２８、５６がホスト機器１内に設けられていても良い。
【００７６】
また第２の実施形態で説明したＨＤＤ装置は、ホスト機器１の筐体内に配置される内蔵型でもよいし、筐体外に配置される外付け型のいずれでもよい。
【００７７】
また上記第１、第２の実施形態において、エンコーダ２８、５６によるスクランブルや暗号化処理のオン・オフを、ユーザ側で設定できる構成としても良い。例えば第１の実施形態では、メモリカード２を、書き込み命令と共にスクランブル命令も共に受信可能としても良い。そしてスクランブル命令を受信した場合には、ＭＰＵ２２は疑似乱数発生回路３１に対して疑似乱数の発生を命令すると共に、スクランブル回路３２に対してスクランブルを命令する。他方、スクランブル命令を受信しない場合には、ＭＰＵ２２は疑似乱数の発生及びスクランブルを命令しない。従って後者の場合には、データはスクランブルされることなくＮＡＮＤ型フラッシュメモリ１０に書き込まれる。第２の実施形態における暗号化処理も同様である。
【００７８】
そして、これらのスクランブルや暗号化処理のオン・オフは、ホスト機器からの信号によって命令されてもよいし、メモリカード２やＨＤＤ装置４０に配置された切り替えスイッチ等によって命令されてもよい。
【００７９】
また、第１、第２の実施形態において、スクランブル回路３２は擬似乱数以外のデータと書き込みデータとをスクランブルさせてもよい。つまり、例えば擬似乱数発生回路３１から擬似乱数を発生させず、シード値を書き込みデータとスクランブルしてもよい。この場合シード値が、例えば“００００００００”であった場合、スクランブル回路３２がこのシード値を基にスクランブルできない場合がある。この場合には、スクランブル回路３２は入力されたシード値を、例えば“１１１１１１１１”に変換した後、この変換した値をシード値に用いて書き込みデータとスクランブルさせてもよい。
【００８０】
また上記第２の実施形態においては、疑似乱数を生成する際のシード値として、ヒューズブロック５７内のチップ識別情報を用いる場合を例に説明した。しかし、暗号化という観点からは、より複雑な（例えばビット数の多い）値をシードに用いることが好ましい。このため、例えばヒューズブロック５７から読み出したチップ識別情報と、例えばＲＯＭ５５内に格納したベンダー番号等の情報とを組み合わせたデータを、シードとして用いても良い。これにより、より解読され難い暗号化が可能となる。このことは、第１の実施形態にも適用可能なことは言うまでも無い。
【００８１】
さらにシード値のために用いるチップ識別情報は、コントローラ２０内のヒューズブロック２９、５７から取得しなくてもよい。
【００８２】
つまり、第１の実施形態では、ＮＡＮＤ型フラッシュメモリ１０にヒューズブロック２９を更に搭載させ、そのヒューズブロック２９が格納するチップ識別情報を取得し、そのチップ識別情報に基づきデータのスクランブル化を行ってもよい。つまり、この場合のチップ識別情報は、ＮＡＮＤ型フラッシュメモリ１０が製造される際の、シリコン基板上の位置に応じた値である。この場合には、コントローラ２０とＮＡＮＤ型フラッシュメモリ１０とは異なるシリコンチップ上に形成されていることから、当然ながら両者のチップ識別情報の値は異なることになる。
【００８３】
また、第２の実施形態では、出荷前に磁気ディスク６０のシステム領域に、磁気ディスク６０毎に異なるシリアル番号を識別情報として書き込んでおく。そして、コントローラ５０がこの磁気ディスク６０に格納された識別情報を取得し、データの暗号化を行うようにしてもよい。この場合においても、磁気ディスク６０が有する識別情報と、ヒューズブロック５７に格納されたチップ識別情報とは異なる値とされる。
【００８４】
このことから、上記第１の実施形態においてコントローラ２０とＮＡＮＤ型フラッシュメモリ１０とにそれぞれ搭載されたヒューズブロック２９に格納されたチップ識別情報とをそれぞれ取得し、これらを組み合わせて新たなシード値としてもよい。同様に、第２の実施形態においても、コントローラ５０のヒューズブロック５７が格納する識別情報と磁気ディスク６０が格納する識別情報とをそれぞれ取得し、これらを組み合わせて新たなシード値としてもよい。
【００８５】
なお、上記第１、第２の実施形態ではチップ識別情報の具体例として、半導体ウェハ中におけるＸＹ座標、製品コード、ロット番号、及びウェハ番号を例に説明したが、これらの情報に限らず、コントローラに固有の情報であれば限定されるものでは無い。
【００８６】
また、上記第１の実施形態において、メモリセルアレイ１１のワード線ＷＬ（ページ）毎にスクランブルのパターンを変えてもよい。例えば、チップ識別情報に、データの書き込み対象となるページアドレス情報を加えてシード値を生成しても良い。これにより、例えばあるページにデータを書き込む場合には、図９のパターン１が選択され、また別のページにデータを書き込む場合にはパターン２が選択される、ということも可能である。
【００８７】
また、上記第１、第２の実施形態では、データの書き込み時におけるスクランブル及び暗号化処理についてのみ説明したが、データの読み出し時は、書き込み時と逆の処理を行うことで、データの解読が可能である。つまり、第１の実施形態であれば、図示せぬデコーダが、疑似乱数発生回路３１で発生された疑似乱数（スクランブル時に用いた疑似乱数）を用いて読み出しデータを復号化する。第２の実施形態においても同様である。
【００８８】
また、第１の実施形態において、書き込みデータの暗号化を更に行っても良い。つまり、ホスト機器１からデータの書き込み命令があると、例えばＭＰＵ２２またはエンコーダ２８（または図示せぬ暗号化回路）が、書き込みデータに対し暗号化処理を実行する。その後、暗号化された書き込みデータに対して、上述のようにスクランブル（乱数化）を実行してもよい。この際、書き込みデータは、ヒューズブロック２９が保持するチップ識別情報に基づいて生成された疑似乱数によって暗号化されてもよい。
【００８９】
また、第１の実施形態においてＮＡＮＤ型フラッシュメモリ１０とコントローラ２０とがワンチップで形成されていても良い。この場合、ヒューズブロック２９は記憶媒体(例えば、この場合はＮＡＮＤ型フラッシュメモリ１０)側に搭載されてもよい。そしてコントローラ２０はその記憶媒体側に搭載されたヒューズブロック２９からチップ識別情報を読み出し、そのチップ識別情報に基づきスクランブル処理のシード値に加え、データの加工を行なってもよい。
【００９０】
また、上記実施形態においては、データのスクランブル方式（ＸＯＲ演算や他の演算方法）、または暗号化方式が、ヒューズブロック２９、５７内のチップ識別情報に基づいて選択されても良い。疑似乱数及びデータの加工方法をチップ識別情報によって変化させることで、より情報漏洩を防止出来る。
【００９１】
また、上記第１の実施形態では、ＳＤメモリカードを一例に挙げて説明したが、これに限らない。つまり、データを保持可能であれば、ＭＭＣカード、ＵＳＢフラッシュメモリ、及びフラッシュＳＳＤ（Solid State Disk）等にも適用可能である。また記憶媒体が有する記憶装置はＮＡＮＤ型フラッシュメモリに限らず、ＮＯＲ型フラッシュメモリ等、他のフラッシュメモリであっても良いし、または強誘電体メモリ等の他の不揮発性半導体メモリであってもよい。また、第２の実施形態ではＨＤＤ装置を例に挙げて説明したが、暗号化処理を行う記憶装置であれば、ＨＤＤ装置に限定されない。
【００９２】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【符号の説明】
【００９３】
１…ホスト機器、２…メモリカード、５…ホストバスインタフェース、６…ＮＡＮＤストリング、１０…ＮＡＮＤ型フラッシュメモリ、１１…メモリセルアレイ、１２…ロウデコーダ、１３…ページバッファ、１４…電圧発生回路、１５…Ｉ／Ｏバッファ、１６…制御部、２０、５０…コントローラ、２１、２５、４６、５２…インタフェース、２２、５３…ＭＰＵ、２３、５５…ＲＯＭ、２４、５４…ＲＡＭ、２６…ＥＣＣ回路、２７…レジスタ、２８、５６…エンコーダ、２９、５７…ヒューズブロック、３１…擬似乱数発生回路、３２…スクランブル回路、４０…ハードディスク装置、５１…ＡＴＡ、６０…磁気ディスク
【図１】
2011134125.tif 000003
【図２】
2011134125.tif 000004
【図３】
2011134125.tif 000005
【図４】
2011134125.tif 000006
【図５】
2011134125.tif 000007
【図６】
2011134125.tif 000008
【図７】
2011134125.tif 000009
【図８】
2011134125.tif 000010
【図９】
2011134125.tif 000011
【図１０】
2011134125.tif 000012