IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022050899
(43)【公開日】2022-03-31
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 21/60 20130101AFI20220324BHJP
【FI】
G06F21/60 320
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2020157075
(22)【出願日】2020-09-18
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001634
【氏名又は名称】特許業務法人 志賀国際特許事務所
(72)【発明者】
【氏名】小林 弘知
(72)【発明者】
【氏名】工藤 喜之
(72)【発明者】
【氏名】梅澤 健太郎
(57)【要約】
【課題】データの秘匿性の向上を図ることができるメモリシステムを提供することである。
【解決手段】実施形態のメモリシステムは、不揮発性メモリと、不揮発性メモリを制御するコントローラとを持つ。コントローラは、メモリシステムが存在する位置に基づいてデータの暗号化及び復号に係る情報を生成し、前記情報を用いて、不揮発性メモリへの書き込みデータの暗号化または不揮発性メモリからの読み出しデータの復号の少なくとも1つの処理を可能な状態にするように構成されている。
【選択図】図8
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
前記不揮発性メモリを制御するコントローラと、
を備えたメモリシステムであって、
前記コントローラは、
前記メモリシステムが存在する位置に基づいてデータの暗号化及び復号に係る情報を生成し、
前記情報を用いて、前記不揮発性メモリへの書き込みデータの暗号化または前記不揮発性メモリからの読み出しデータの復号の少なくとも1つの処理を可能な状態にする、
ように構成されているメモリシステム。
【請求項2】
前記コントローラは、
異なる前記位置に対応して異なる前記情報を生成する
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、
前記位置が第1の所定の範囲内であるか否かを検証し、
前記位置が前記第1の所定の範囲内にある場合に前記情報を生成し、
前記位置が前記第1の所定の範囲外にある場合に前記情報を生成しない、
請求項1に記載のメモリシステム。
【請求項4】
前記コントローラはプロセッサを含み、
前記プロセッサは、
前記位置が前記第1の所定の範囲内にある場合に、前記不揮発性メモリへのアクセスを制御するファームウェアを実行し、
前記位置が前記第1の所定の範囲外にある場合に、前記ファームウェアを実行しない、
請求項3に記載のメモリシステム。
【請求項5】
前記コントローラは、
外部装置からの要求に応じてホストが発行するアクセス要求に応じて、前記不揮発性メモリへのデータの書き込みまたは前記不揮発性メモリからのデータの読み出しを制御し、
前記外部装置が存在する位置が第2の所定の範囲内であるか否かを検証し、
前記外部装置が存在する位置が前記第2の所定の範囲内である場合に前記情報を生成し、
前記外部装置が存在する位置が前記第2の所定の範囲外である場合に前記情報を生成しない、
請求項1から請求項4の何れか一項に記載のメモリシステム。
【請求項6】
前記コントローラは、
前記外部装置が前記ホストへ前記要求を送信した時刻が所定の時刻範囲内であるか否かをさらに検証し、
前記時刻が前記所定の時刻範囲内である場合に前記情報を生成し、
前記時刻が前記所定の時刻範囲外である場合に前記情報を生成しない、
請求項5に記載のメモリシステム。
【請求項7】
前記メモリシステムが存在する位置の特定に使用される電波を受信するアンテナをさらに備える、
請求項1から請求項6の何れか一項に記載のメモリシステム。
【請求項8】
前記アンテナは、
GNSSの人工衛星から送信される電波を受信するアンテナである、
請求項7に記載のメモリシステム。
【請求項9】
前記コントローラは、複数の半導体集積回路によって構成されている
請求項1に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
メモリシステムが記憶するデータを読み出す動作は、メモリセルに接続されたワード線に判定電圧を印加することで行われる。メモリシステムが持ち出された場合などには、そのメモリシステムのデータへのアクセスは、容易に行われる可能性が高い。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第10095638号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明が解決しようとする課題は、データの秘匿性の向上を図ることができるメモリシステムを提供することである。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、不揮発性メモリと、不揮発性メモリを制御するコントローラとを持つ。コントローラは、メモリシステムが存在する位置に基づいてデータの暗号化及び復号に係る情報を生成し、前記情報を用いて、不揮発性メモリへの書き込みデータの暗号化または不揮発性メモリからの読み出しデータの復号の少なくとも1つの処理を可能な状態にするように構成されている。
【図面の簡単な説明】
【0006】
図1】第1の実施形態の第1情報処理装置の構成の一例を示す図。
図2】第1の実施形態の基準電圧情報の一例を示す図。
図3】第1の実施形態の通信処理装置の構成を示すブロック図。
図4】第1の実施形態に係る第1の所定の範囲の設定の一例を示す図。
図5】第1の実施形態のメモリチップの構成の一例を示すブロック図。
図6】第1の実施形態のメモリセルアレイの構成の一例を示す図。
図7】第1の実施形態のメモリセルのしきい値電圧分布の一例を示す図。
図8】第1の実施形態のメモリシステムの処理フローの一例を示す図。
図9】第1の実施形態の第1変形例のCPUの構成の一例を示す図。
図10】第1の実施形態の第1変形例のNANDコントローラの一例を示す図。
図11】第1の実施形態の第1変形例のCPU及びNANDコントローラの構成の一例を示す図。
図12】第1の実施形態の第2変形例のメモリコントローラの構成の一例を示す図。
図13】第2の実施形態の通信処理装置の構成の一例を示す図。
図14】第2の実施形態のメモリシステムの処理フローの一例を示す図。
図15】第2の実施形態の第1変形例のCPUの構成の一例を示す図。
図16】第2の実施形態の第1変形例のNANDコントローラの構成の一例を示す図。
図17】第2の実施形態の第1変形例のCPU及びNANDコントローラの構成の一例を示す図。
図18】第2の実施形態の第2変形例のメモリコントローラの構成の一例を示す図。
図19】第3の実施形態の情報処理システムの構成の一例を示す図。
図20】第3の実施形態の第2情報処理装置の構成の一例を示す図。
図21】第3の実施形態の通信処理装置の構成の一例を示す図。
図22】第3の実施形態に係る第2の所定の範囲の一例を示す図。
図23】第3の実施形態のメモリシステムの処理フローの一例を示す図。
図24】第3の実施形態の第1変形例のCPUの構成の一例を示す図。
図25】第3の実施形態の第1変形例のNANDコントローラの構成の一例を示す図。
図26】第3の実施形態の第1変形例のCPU及びNANDコントローラの構成の一例を示す図。
図27】第3の実施形態の第2変形例のメモリコントローラの構成の一例を示す図。
図28】タイムスタンプサーバに接続された第4の実施形態の情報処理システムの構成の一例を示す図。
図29】第4の実施形態の第2情報処理装置の構成の一例を示す図。
図30】第4の実施形態の通信処理装置の構成の一例を示す図。
図31】第4の実施形態の所定の時刻の範囲の一例を示す図。
図32】第4の実施形態のメモリシステムの処理フローの一例を示す図。
図33】第4の実施形態の第1変形例のCPUの構成の一例を示す図。
図34】第4の実施形態の第1変形例のNANDコントローラの構成の一例を示す図。
図35】第4の実施形態の第1変形例のCPU及びNANDコントローラの構成の一例を示す図。
図36】第4の実施形態の第2変形例のメモリコントローラの構成の一例を示す図。
【発明を実施するための形態】
【0007】
以下、実施形態の情報処理システムについて図面を参照して説明する。以下の説明では、同一または類似の機能を有する構成に同一の符号を付し、重複する説明を省略する場合がある。本明細書で「XXに基づく」とは、「少なくともXXに基づく」ことを意味し、XXに加えて別の要素に基づく場合も含む。また「XXに基づく」とは、XXを直接に用いる場合に限定されず、XXに対して演算や加工が行われたものに基づく場合も含む。「XX」は、任意の要素(例えば任意の情報)である。
【0008】
本明細書では「読み出し」を「リード」と称する場合があり、「書き込み」を「ライト」と称する場合がある。また本明細書で「書き込む」、「記憶する」、「保存する」は互いに同じ意味で用いられている。このためこれら用語は互いに読み替え可能である。本明細書で「接続」とは、機械的な接続に限定されず、電気的な接続を含む。本明細書である構成要素が「取得する」とは、その構成要素の外部から得る場合に限定されず、その構成要素が自ら算出する場合も含む。本明細書では「ビット線ごと」、「ビット線単位」は、「カラム(column)ごと」、「カラム(column)単位」と互いに読み替え可能である。
【0009】
また本明細書で「YYを用いて暗号化する/復号する」とは、YYを直接的に用いて(すなわち、YYそのものを鍵情報として用いて)暗号化/復号が行われる場合に限定されず、YYを間接的に用いて(例えば、YYに対して演算や加工が行われて生成された鍵情報を用いて)暗号化/復号が行われる場合も含む。「YY」は、任意の要素(例えば任意の情報)である。
【0010】
(第1の実施形態)
<第1情報処理装置の構成>
図1は、第1の実施形態による第1情報処理装置10の構成の一例を示す図である。第1情報処理装置10は、メモリシステム20aと、ホスト装置20bと、を備える。第1情報処理装置10では、メモリシステム20aの存在する位置に基づいて、そのメモリシステム20aへのアクセスが制限される。第1情報処理装置10は、例えばデータセンターに設けられる。
【0011】
メモリシステム20aは、ホスト装置20bと接続される。ホスト装置20bは、例えば、サーバ装置、パーソナルコンピュータ、またはモバイル型の情報処理装置である。メモリシステム20aは、ホスト装置20bの外部記憶装置として機能する。ホスト装置20bは、メモリシステム20aに対するアクセス要求(リード要求およびライト要求)を発行することができる。
【0012】
メモリシステム20aは、メモリコントローラ201と、NANDメモリ202と、アンテナ203と、通信処理装置204と、を備える。メモリコントローラ201とNANDメモリ202とは、複数のチャネルで接続される。アンテナ203と通信処理装置204とは、信号線によって接続される。通信処理装置204とメモリコントローラ201とは、信号線によって接続される。メモリコントローラ201は、「コントローラ」の一例である。NANDメモリ202は、「メモリ装置」の一例である。メモリコントローラ201、NANDメモリ202、アンテナ203、および通信処理装置204は、例えばプリント基板上に実装される。
【0013】
アンテナ203は、GNSS(Global Navigation Satellite System)の人工衛星から送信される電波を受信する。なお、GNSSの例としては、GPS(Global Positioning System)が挙げられる。
【0014】
メモリコントローラ201は、ホストインターフェースコントローラ(ホストI/Fコントローラ)2011、RAM(Random Access Memory)2012、ROM(Read Only Memory)2013、CPU(Central Processing Unit)2014、ECC(Error Correcting Code)回路2015、およびNANDコントローラ2016を含む。これらの機能部は、バスで互いに接続されている。例えば、メモリコントローラ201は、これらの機能部が1つのチップに実装されたSoC(System on a Chip)のような半導体集積回路で構成されている。ただし、これらの機能部の一部は、メモリコントローラ201の外部に設けられてもよい。
【0015】
ホストI/Fコントローラ2011は、CPU2014による制御の下で、ホスト装置20bとメモリシステム20aとの間の通信インターフェースの制御、およびホスト装置20bとRAM2012との間のデータ転送の制御を実行する。
【0016】
RAM2012は、例えば、SDRAM(Synchronous Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)であるが、これらに限定されない。RAM2012は、ホスト装置20bとNANDメモリ202との間のデータ転送のためのバッファとして機能する。また、RAM2012は、CPU2014にワークエリアを提供する。RAM2012には、メモリシステム20aの動作時に、NANDメモリ202またはROM2013に記憶されているファームウェア(プログラム)がロードされる。
【0017】
CPU2014は、ハードウェアプロセッサの一例である。CPU2014は、例えばRAM2012にロードされたファームウェアを実行することで、さまざまな処理を実行する。CPU2014の構成とCPU2014が行う処理の詳細については後述する。なお、処理毎に複数のCPU2014が設けられてもよい。
【0018】
ECC回路2015は、NANDメモリ202への書き込み対象のデータ(以下、「書き込みデータ」とも称する)に対してエラー訂正のための符号化を行う。ECC回路2015は、NANDメモリ202から読み出されたデータ(以下、「読み出しデータ」とも称する)にエラーが含まれる場合、書き込み動作時に付与したエラー訂正符号に基づき、読み出しデータに対してエラー訂正を実行する。
【0019】
NANDコントローラ2016は、各チャネル(ch.0,ch.1)を制御する。NANDコントローラ2016は、CPU2014による制御の下で、RAM2012とNANDメモリ202との間のデータ転送の制御を実行する。
【0020】
NANDメモリ202は、複数(ここでは4つ)の、不揮発性半導体メモリチップ2021を有する。本実施形態では、メモリコントローラ201は、2つのチャネル(ch.0,ch.1)を有する。メモリコントローラ201は、1つまたは3つ以上のチャネルを有してもよい。図1に示す例では、各チャネルには、2つのメモリチップ2021が接続されている。なお、各チャネルに、3以上のメモリチップ2021が接続されてもよい。
【0021】
各チャネルは、I/O(Input/Output)信号線、制御信号線、CE(チップイネーブル)信号線、RY(レディー)/BY(ビジー)信号線を含む。I/O信号線は、データ、アドレス、および各種コマンドを伝送する。メモリコントローラ201は、I/O信号線を介して、読み出しコマンド、書き込みコマンド、および消去コマンドをメモリチップ2021に送信する。制御信号線は、WE(ライトイネーブル)信号線、RE(リードイネーブル)信号線、CLE(コマンドラッチイネーブル)信号線、ALE(アドレスラッチイネーブル)信号線、WP(ライトプロテクト)信号線などを含む。CE信号線は、メモリチップ2021が選択中であることを示す信号を伝送する。RY/BY信号線は、NANDメモリ202が動作中か否かを示す信号を伝送する。RY/BY信号線は、例えば、非動作中に対応するレディー状態(RY)をハイレベルで示し、動作中に対応するビジー状態(BY)をローレベルで示す。
【0022】
メモリシステム20aの動作開始時に、例えばメモリチップ2021に記憶されている判定電圧情報2012aが、RAM2012にロードされる。判定電圧情報2012aは、NANDメモリ202に対する読み出し動作において、後述する各ワード線WLに印加する判定電圧の値の決定に用いられる設定情報である。判定電圧情報2012aは、基準電圧情報2012bを含む。メモリチップ2021に含まれるメモリセルは、しきい値電圧に応じてデータを不揮発に記憶する。メモリセルのしきい値電圧は、プログラムディスターブ(Program Disturb)、リードディスターブ(Read Disturb)、またはデータリテンション(Data Retention)などのストレスの影響により変化し得る。このため、判定電圧情報2012aは、判定電圧を補正するための補正値の情報を含むものであってもよい。
【0023】
図2は、判定電圧情報2012aに含まれる基準電圧情報2012bの一例を示す図である。図4において、VAD~VOGの値は、それぞれ、判定電圧VA~VGの基準値(例えば初期設定値)を示す値である。基準電圧情報2012bは、複数のメモリチップ2021に対して共通に(同じ値が)設定されてもよい。基準電圧情報2012bは、メモリチップ2021毎に個別に設定されてもよい。
【0024】
メモリコントローラ201は、判定電圧情報2012aに基づいて各ワード線WLに印加する判定電圧の値を算出する。メモリコントローラ201は、算出した値の判定電圧を印加することをNANDメモリ202に指示する。
【0025】
<通信処理装置の構成>
図3は、通信処理装置204の構成の一例を示す図である。通信処理装置204は、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、およびアクセス処理部204fとして機能する。通信処理装置204は、例えば、CPU(Central Processing Unit)、FPGA(Field Programmable Gate Array)、ASIC(application specific integrated circuit)のような半導体集積回路である。
【0026】
取得部204aは、人工衛星からアンテナ203を介して電波を受信する。
【0027】
特定部204bは、取得部204aが受信した電波に基づいて、メモリシステム20aの位置を特定する。例えば、特定部204bは、取得部204aが4つの異なる人工衛星のそれぞれから受信した電波に基づいて、メモリシステム20aの位置を特定する。具体的には、電波には、その電波を送信した人工衛星固有の識別子の情報と、その電波を送信した時刻の情報とが含まれる。特定部204bは、電波の伝播速度(すなわち、光速)、電波の送信時刻、および、電波の受信時刻から、メモリシステム20aと4つの人工衛星それぞれとの距離を算出する。そして、特定部204bは、求めた4つの距離が1つに交わる点を特定することにより、メモリシステム20aの位置を特定する。なお、計算上は3つの距離の情報があればメモリシステム20aの位置が特定できるが、各時刻には時計の精度に起因するわずかな誤差が含まれる。そのため、特定部204bは、3つの距離の情報にもう1つの距離の情報を追加して誤差を補正する処理を行う。なお、位置は、例えば、緯度および経度によって示される。ただし、位置は、緯度および経度に加えて標高によって示されるものであってもよい。
【0028】
署名部204cは、特定部204bが特定したメモリシステム20aの位置データに対して所定の署名データを付与する。例えば、署名部204cは、RSAアルゴリズムに基づき、秘密鍵を用いて位置データに所定の署名データを付与する。秘密鍵は、例えばUSB(Universal Serial Bus)ドングルなどのハードウェアセキュリティモジュール機器に格納される。署名部204cによるこの処理により、これ以降、特定部204bが特定したメモリシステム20aの位置の改ざんを防止することができる。
【0029】
第1判定部204dは、特定部204bが特定したメモリシステム20aの位置が第1の所定の範囲内にあるか否かを判定する。第1の所定の範囲は、外部からホスト装置20bを介してメモリシステム20aへアクセス可能なメモリシステム20aの位置として設定される。例えば、第1の所定の範囲としてあるデータセンターの内部が設定される場合、特定部204bによるメモリシステム20aの位置の特定精度、および、データセンターの広さを考慮して、データセンターの緯度と経度に対して、それぞれ許容範囲が設定される。この第1の所定の範囲は、例えば、メモリシステム20aの動作開始時に、メモリチップ2021からRAM2012にロードされる。図4は、第1の所定の範囲の設定の一例を示す図である。図4では、メモリシステム20aが設置されている緯度と経度に対して、緯度についての許容範囲と経度についての許容範囲とを規定することによって、第1の所定の範囲が示されている。第1判定部204dは、このような第1の所定の範囲に関する情報を読み出す。第1判定部204dは、読み出した第1の所定の範囲と、特定部204bが特定したメモリシステム20aの位置とを比較することによって、メモリシステム20aの位置が第1の所定の範囲内にあるか否かを判定することができる。
【0030】
生成部204eは、特定部204bが特定したメモリシステム20aの位置に基づいて、データを暗号化する際に用いる暗号鍵を生成する。生成部204eは、メモリシステム20aの位置に応じて異なる暗号鍵を生成するものであってもよい。暗号鍵はデータの暗号化及び復号に係る情報の一例である。例えば、メモリシステム20aの位置が第1の所定の範囲内にあると第1判定部204dが判定した場合、生成部204eは、暗号鍵を生成する。また、メモリシステム20aの位置が第1の所定の範囲外にあると第1判定部204dが判定した場合、生成部204eは、暗号鍵を生成しない。
【0031】
また、生成部204eは、メモリシステム20aが外部からホスト装置20bを介してデータの読み出し要求を受けた場合、特定部204bが特定したメモリシステム20aの位置に基づいて、暗号化されたデータを復号する際に用いる復号鍵を生成する。生成部204eは、メモリシステム20aの位置に応じて異なる復号鍵を生成するものであってもよい。復号鍵はデータの暗号化及び復号に係る情報の一例である。例えば、メモリシステム20aが外部からホスト装置20bを介してデータの読み出し要求を受け、メモリシステム20aの位置が第1の所定の範囲内にあると第1判定部204dが判定した場合、生成部204eは、復号鍵を生成する。また、メモリシステム20aが外部からホスト装置20bを介してデータの読み出し要求を受け、メモリシステム20aの位置が第1の所定の範囲外にあると第1判定部204dが判定した場合、生成部204eは、復号鍵を生成しない。
【0032】
また、生成部204eは、メモリシステム20aの位置データに対して付与された署名データが署名部204cの署名データであるか否かを所定の公開鍵を用いて判定する。所定の公開鍵は、署名部204cが署名データの付与に使用する秘密鍵と対を成す。すなわち、所定の公開鍵は、署名データを生成部204eが読み取り可能なデータに復号する公開鍵である。
【0033】
アクセス処理部204fは、生成部204eがデータの暗号化及び復号に係る情報を生成した場合、生成部204eが生成したデータの暗号化及び復号に係る情報を用いて、NANDメモリ202へ書き込むデータをCPU2014が暗号化すること、または、NANDメモリ202から読み出したデータをCPU2014が復号すること、の少なくとも1つの処理を可能な状態にする。
【0034】
例えば、メモリシステム20aがデータの書き込み要求を受け、生成部204eが暗号鍵を生成した場合、アクセス処理部204fは、生成部204eが生成した暗号鍵をメモリコントローラ201に送信する。メモリコントローラ201のCPU2014は、暗号鍵を用いてNANDメモリ202へ書き込む書き込みデータを暗号化する。そして、メモリコントローラ201のNANDコントローラ2016は、暗号化したデータをNANDメモリ202へ書き込む。
【0035】
また、例えば、メモリシステム20aがデータの読み出し要求を受け、生成部204eが復号鍵を生成した場合、アクセス処理部204fは、生成部204eが生成した復号鍵をメモリコントローラ201に送信する。メモリコントローラ201のNANDコントローラ2016は、暗号化されたデータをNANDメモリ202から読み出す。そして、メモリコントローラ201のCPU2014は、生成部204eが生成した復号鍵を用いてNANDメモリ202から読み出された暗号化されたデータを復号する。
【0036】
<メモリチップの構成>
図5は、メモリチップ2021の構成の一例を示す図である。メモリチップ2021は、例えば、I/O信号処理回路2021a、制御信号処理回路2021b、チップ制御回路2021c、RY/BY生成回路2021d、コマンドレジスタ2021e、アドレスレジスタ2021f、ロウデコーダ2021g、カラムデコーダ2021h、データレジスタ2021i、センスアンプ2021j、およびメモリセルアレイ2021kを有する。
【0037】
I/O信号処理回路2021aは、メモリコントローラ201とメモリチップ2021との間でI/O信号を送受信するためのバッファ回路である。I/O信号処理回路2021aがラッチしたコマンド、アクセス先を指定するアドレス、およびデータは、それぞれ、コマンドレジスタ2021e、アドレスレジスタ2021f、およびデータレジスタ2021iに格納される。
【0038】
アドレスレジスタ2021fに格納されたアドレスは、チップ番号、ロウアドレス、およびカラムアドレスを含む。チップ番号は、メモリチップ2021を区別するための識別情報である。チップ番号、ロウアドレス、およびカラムアドレスは、それぞれ、チップ制御回路2021c、ロウデコーダ2021g、およびカラムデコーダ2021hに読み出される。
【0039】
制御信号処理回路2021bは、制御信号を受け付ける。制御信号処理回路2021bは、受け付けた制御信号に基づいて、I/O信号処理回路2021aが受け付けたI/O信号の格納先のレジスタの振り分けを実行する。また、制御信号処理回路2021bは、受け付けた制御信号をチップ制御回路2021cに転送する。
【0040】
チップ制御回路2021cは、制御信号処理回路2021bを介して受信する各種制御信号に基づいて状態遷移する回路である。チップ制御回路2021cは、メモリチップ2021の動作を制御する。
【0041】
RY/BY生成回路2021dは、チップ制御回路2021cによる制御の下でRY/BY信号線の状態をレディー状態(RY)とビジー状態(BY)との間で遷移させる。
【0042】
センスアンプ2021jは、読み出し動作において、メモリセルアレイ2021kに含まれるメモリセルMT(図6参照)の状態をセンスする。センスアンプ2021jは、センスされた状態に基づいて読み出しデータを生成する。センスアンプ2021jは、生成した読み出しデータをデータレジスタ2021iに格納する。データレジスタ2021iに格納された読み出しデータは、データ線を通じてI/O信号処理回路2021aに送られ、I/O信号処理回路2021aからメモリコントローラ201へ転送される。
【0043】
メモリセルアレイ2021kは、複数のメモリセルMTを有し、データを記憶する。詳しく述べると、メモリセルアレイ2021kは、複数の物理ブロックBLK(図6参照)を有する。各物理ブロックBLKは、複数のメモリセルMTを含む。物理ブロックBLKは、データ消去の最小単位である。すなわち、1つの物理ブロックBLKに記憶されている全てのデータは、一括して消去される。以下では、「物理ブロック」を単に「ブロック」と称する。
【0044】
ロウデコーダ2021g、カラムデコーダ2021hの動作については後述する。
【0045】
<メモリセルアレイの構成>
図6は、メモリセルアレイ2021kの構成の一例を示す図である。メモリセルアレイ2021kは、例えば、複数のメモリセルMTが立体状に配置された三次元構造のNANDメモリである。メモリセルアレイ2021kは、複数のブロックBLK(BLK0,BLK1,…)を有する。例えば、メモリセルアレイ2021kは、数百から数千のブロックBLKを有する。
【0046】
図6に示すように、m(mは自然数)本のビット線BL(BL0~BLm-1)の各々は、各ブロックBLKにおいて、複数(例えばm個)のストリングSTRと接続されている。各ストリングSTRは、1つの第1選択ゲートトランジスタST、複数のメモリセルMT(MT0~MT7)、および1つの第2選択ゲートトランジスタDTを含む。第1選択ゲートトランジスタST、複数のメモリセルMT、および第2選択ゲートトランジスタDTは、この順で、ソース線CELSRCと1つのビット線BLとの間に直列に接続されている。相違する複数のビット線BL(BL0~BLm-1)とそれぞれ接続された複数(m個)のストリングSTRは、1つのストリングユニットSUを構成する。各ブロックBLKは、複数(例えば4つ)のストリングユニットSU(SU0~SU3)を含む。
【0047】
第1選択ゲートトランジスタSTの制御ゲート電極は、第1選択ゲート線(ソース側選択ゲート線)SGSLに接続されている。第1選択ゲート線SGSLは、第1選択ゲートトランジスタSTの制御ゲート電極を制御する制御信号線である。第1選択ゲートトランジスタSTは、第1選択ゲート線SGSLを通じて印加される電圧に基づき、複数のメモリセルMTとソース線CELSRCとの間を選択的に接続する。第1選択ゲート線SGSLは、ストリングユニットSU(SU0~SU3)毎に独立して接続されてもよい。
【0048】
第2選択ゲートトランジスタDTの制御ゲート電極は、第2選択ゲート線(ドレイン側選択ゲート線)SGDL(SGDL0~SGDL3)に接続されている。第2選択ゲート線SGDLは、第2選択ゲートトランジスタDTの制御ゲート電極を制御する制御信号線である。第2選択ゲートトランジスタDTは、第2選択ゲート線SGDLを通じて印加される電圧に基づき、複数のメモリセルMTとビット線BLとの間を選択的に接続する。
【0049】
各メモリセル(メモリセルトランジスタ)MTは、積層ゲート構造を有したMOSFET(Metal Oxide Semiconductor Field Effect Transistor)で構成される。積層ゲート構造は、例えば、トンネル酸化膜を介在して形成されたフローティングゲートと、フローティングゲート上にゲート絶縁膜を介在して形成された制御ゲート電極とを含む。フローティングゲートに蓄えられる電荷の数に応じてメモリセルMTのしきい値電圧が変化する。メモリセルMTは、書き込みによりフローティングゲートに負の電荷が注入され、消去によりフローティングゲートから負の電荷が引き抜かれる。各メモリセルMTは、2つ以上のデータ値のうちいずれか1つが書き込まれ得る。各メモリセルMTは、しきい値電圧の違いに応じて1つ以上のデータ値のなかの1つを不揮発に記憶する。
【0050】
各ブロックBLKにおいて、各メモリセルMTの制御ゲート電極は、それぞれに対応するワード線WLに接続されている。例えば、メモリセルMT0~MT7の制御ゲート電極には、ワード線WL0~WL7がそれぞれ接続されている。各ワード線WLは、メモリセルアレイ2021kにおいて1行(1つのロウrow)に並ぶ一群のメモリセルMTを選択するための制御信号線であり、それら1行に並ぶ一群のメモリセルMTに共通に接続されている。各メモリセルMTは、ワード線WLとビット線BLとの交差部に設けられている。読み出しまたは書き込みが行われるメモリセルMTに接続されたワード線WL(以下、「選択ワード線WL」とも称する)に、ある電圧を印加することで、メモリセルMTの読み出しまたは書き込みが可能になる。メモリセルMTの読み出しおよび書き込みについては後ほど説明する。
【0051】
各ブロックBLKにおいて、相違するストリングSTRに含まれる複数のメモリセルMTには、同じアドレスに対応するワード線WLが共通に接続されている。ワード線WLを共有する複数のメモリセルMTの組は、セルユニットCUと称される。1つのセルユニットCUに含まれる複数のメモリセルMTは、一括してデータが書き込まれ、また一括してデータが読み出される。1つのセルユニットCUの記憶空間は、1つまたは複数のページを含む。
【0052】
メモリシステム20aは、各メモリセルMTに複数ビットの値を記憶可能に構成され得る。例えば、各メモリセルMTがn(n≧2)ビットの値を記憶可能な場合、ワード線WL(セルユニットCU)当たりの記憶容量は、nページ分のサイズに等しくなる。ここでは一例として、各メモリセルMTが3ビットの値を記憶するトリプルレベルセル(TLC)モードで動作する場合について説明する。
【0053】
トリプルレベルセル(TLC)モードでは、各ワード線WLに3ページ分のデータが記憶され得る。1つのワード線WLに含まれる3つのページのうち、先に書き込みがなされるページをロアーページ、ロアーページの後に書き込みがなされるページをミドルページ、ミドルページの後に書き込みがなされるページをアッパーページと称する。なお、1つのワード線WLに含まれる複数のページの一部または全てのページに対して一括にプログラム(すなわち書き込み)が実行されるモードがあってもよい。
【0054】
<メモリセルのしきい値電圧分布>
図7は、メモリセルMTのしきい値電圧分布を示す図である。図7において、横軸は、メモリセルMTのしきい値電圧を表し、縦軸は、あるしきい値電圧を有するメモリセルMTの数を表す。各メモリセルMTがトリプルレベルセル(TLC)モードで動作する場合、メモリセルMTのしきい値電圧分布は、8つの分布(Lob)を含む。
【0055】
トリプルレベルセル(TLC)モードによれば、各メモリセルMTは、アッパーページに属するデータ“x”と、ミドルページに属するデータ“y”と、ロアーページに属するデータ“z”とで定義される8値データ“xyz”を記憶可能である。データ“x”、データ“y”、およびデータ“z”の値は、符号“0”または符号“1”である。
【0056】
各メモリセルMTのしきい値電圧は、分布Er、分布A、分布B、分布C、分布D、分布E、分布F、分布Gの8つの分布のいずれかに属するように制御される。各分布と8値データ“xyz”のデータ値との対応は、予め設定される。例えば、分布Erにはデータ値“111”が割り当てられる。分布Aにはデータ値“110”が割り当てられる。分布Bにはデータ値“100”が割り当てられる。分布Cにはデータ値“000”が割り当てられる。分布Dにはデータ値“010”が割り当てられる。分布Eにはデータ値“011”が割り当てられる。分布Fにはデータ値“001”が割り当てられる。分布Gにはデータ値“101”が割り当てられる。なお、各分布とデータ値との対応は、上記に限定されない。
【0057】
ここで、NANDメモリ202のロウデコーダ2021g、カラムデコーダ2021h、データレジスタ2021i、およびセンスアンプ2021jについて、図5も用いて説明する。ロウデコーダ2021g、カラムデコーダ2021h、データレジスタ2021i、およびセンスアンプ2021jは、メモリセルアレイ2021kに対する周辺回路の一部である。周辺回路は、チップ制御回路2021cによる制御に基づいてメモリセルアレイ2021kに対するアクセス(読み出し、書き込み、および消去)を実行する。
【0058】
例えば書き込み動作において、カラムデコーダ2021hは、カラムアドレスに対応したビット線BLを選択して活性化する。センスアンプ2021jは、カラムデコーダ2021hにより選択されたビット線BLの電位を0ボルトとする。ロウデコーダ2021gは、ロウアドレスに対応したワード線WLに、プログラミングパルスを印加する。プログラミングパルスは、例えば印加毎に電圧が徐々に高くなるパルスである。これにより、選択されたビット線BLと選択されたワード線WLとの交差部に位置するメモリセルMTのフローティングゲートに電荷が注入される。その結果、メモリセルMTのしきい値電圧が上昇する。センスアンプ2021jは、プログラミングパルスの印加毎に、書き込み対象のメモリセルMTのしきい値電圧がデータレジスタ2021iに格納されているデータに応じた電圧に到達したか否かを確認する。センスアンプ2021jによる確認結果に応じて、メモリセルMTのしきい値電圧が書き込むデータ値に応じた電圧に到達するまで、ロウデコーダ2021gはプログラミングパルスの印加を継続する。
【0059】
一方で、読み出し動作において、センスアンプ2021jは、ビット線BLに電源電位Vccをプリチャージする。ロウデコーダ2021gは、選択ワード線WLにデータ値(“111”、“110”、“100”、“000”、“010”、“011”、“001”、“101”)毎の分布を特定するための複数種類の判定電位(リード電圧)を順次印加する。また、ロウデコーダ2021gは、非選択のワード線WLにはリードパス電位を印加し、非選択のワード線WLに属するメモリセルMTを導通状態にしておく。センスアンプ2021jは、プリチャージにより蓄えられた電荷がどの判定電圧が印加されたときにソース線CELSRCに流出したかを検知することによって対象のメモリセルMTに記憶されているデータ値を判定する。
【0060】
例えば、図7に示すように、分布Erと分布Aとの間に判定電圧VAが設定される場合、判定電圧VA未満のしきい値電圧を有するメモリセルMTは、分布Erに属すると判断される。また、分布Aと分布Bとの間に判定電圧VBが設定される場合、判定電圧VB未満のしきい値電圧を有するメモリセルMTは、分布Erまたは分布Aに属すると判断される。同様に、図7に示すように、隣接する2つの分布間に判定電圧が設定され、この判定電圧未満のしきい値電圧を有するメモリセルMTは、2つの分布のうちしきい値電圧が低い分布(またはその分布よりもしきい値電圧が低い分布)に属すると判断される。
【0061】
<メモリシステムが行う処理>
次に、メモリシステム20aが行う処理について説明する。図8は、メモリシステム20aの処理フローの一例を示す図である。
【0062】
メモリシステム20aが起動すると、CPU2014は、NANDメモリ202またはROM2013からファームウェアを読み出し、RAM2012にロードする。そして、CPU2014は、ファームウェアに含まれる第1プログラムPG1を実行する(ステップS1)。ここでの起動は、メモリシステム20aの電源がオフ状態からオン状態に切り替わり、メモリシステム20aが動作可能な状態になること、また、メモリシステム20aがリセットされてから、メモリシステム20aが動作可能な状態になることを含む。CPU2014が第1プログラムPG1を実行することにより、メモリシステム20aは、外部からホスト装置20bを介してアクセス要求を受け付ける状態となる。
【0063】
ホスト装置20bは、外部からアクセス要求を受けると、メモリシステム20aにそのアクセス要求を出力する。CPU2014は、ホストI/Fコントローラ2011を介してアクセス要求を受ける。
【0064】
CPU2014がアクセス要求を受けた場合、取得部204aは、人工衛星からアンテナ203を介して電波を受信する(ステップS2)。
【0065】
特定部204bは、取得部204aが受信した電波に基づいて、メモリシステム20aの位置を特定する(ステップS3)。署名部204cは、特定部204bが特定したメモリシステム20aの位置に対して所定の署名データを付与する(ステップS4)。署名部204cによるこの処理により、これ以降、特定部204bが特定したメモリシステム20aの位置の改ざんを防止することができる。
【0066】
第1判定部204dは、署名データが署名部204cの署名データであるか否かを判定する(ステップS5)。第1判定部204dは、署名データが署名部204cの署名データでないと判定した場合(ステップS5においてNO)、処理をステップS2に戻す。また、第1判定部204dは、署名データが署名部204cの署名データであると判定した場合(ステップS5においてYES)、特定部204bが特定したメモリシステム20aの位置が第1の所定の範囲内にあるか否かを判定する(ステップS6)。第1判定部204dは、例えばメモリコントローラ201のRAM2012から第1の所定の範囲に関する情報を読み出す。第1判定部204dは、読み出した第1の所定の範囲と、特定部204bが特定したメモリシステム20aの位置とを比較する。
【0067】
生成部204eは、特定部204bが特定したメモリシステム20aの位置に基づいて、データを暗号化及び復号する際に用いる暗号化及び復号に係る情報を生成する。
【0068】
具体的には、メモリシステム20aの位置が第1の所定の範囲外にあると第1判定部204dが判定した場合(ステップS6においてNO)、生成部204eはデータの暗号化及び復号に係る情報を生成せずに、処理をステップS2に戻す。
【0069】
メモリシステム20aの位置が第1の所定の範囲内にあると第1判定部204dが判定した場合(ステップS6においてYES)、生成部204eはデータの暗号化及び復号に係る情報を生成する(ステップS7)。生成部204eが生成するデータの暗号化及び復号に係る情報は、メモリシステム20aの位置に応じて異なるものであってもよい。
【0070】
生成部204eがデータの暗号化及び復号に係る情報を生成した場合、アクセス処理部204fは、生成部204eが生成したデータの暗号化及び復号に係る情報を用いて、NANDメモリ202へ書き込むデータをCPU2014が暗号化すること、または、NANDメモリ202から読み出したデータをCPU2014が復号すること、の少なくとも1つの処理を可能な状態にする(ステップS8)。
【0071】
<利点>
以上、第1の実施形態による第1情報処理装置10について説明した。第1情報処理装置10において、生成部204eは、メモリシステム20aが存在する位置に基づいてデータの暗号化及び復号に係る情報を生成する。アクセス処理部204fは、生成部204eが生成したデータの暗号化及び復号に係る情報を用いて、NANDメモリ202へ書き込むデータをCPU2014が暗号化すること、または、NANDメモリ202から読み出たデータをCPU2014が復号すること、の少なくとも1つの処理を可能な状態にする。
【0072】
メモリシステム20aをこのように構成することにより、NANDメモリ202が記憶するデータへアクセスできる条件が制限され、その条件を満たさない場合には、データの暗号化及び復号に係る情報が生成されない。その結果、第1の実施形態による第1情報処理装置10により、メモリシステム20aが記憶するデータの外部への漏洩の可能性を低減させることができる。つまり、第1の実施形態による第1情報処理装置10により、メモリシステム20aにおけるデータの秘匿性の向上を図ることができる。
【0073】
また、生成部204eが生成するデータの暗号化及び復号に係る情報は、メモリシステム20aの位置に応じて異なるものであってもよい。こうすることにより、データが書き込まれた時のメモリシステム20aの位置と、データを読み出す時のメモリシステム20aの位置が異なる場合には、データを正しく復号することができない。その結果、メモリシステム20aにおけるデータの秘匿性をより向上させることができる。
【0074】
(第1の実施形態の第1変形例)
上述の第1の実施形態では、メモリシステム20aにおいて、通信処理装置204が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、およびアクセス処理部204fとして機能するものとして説明した。しかしながら、第1の実施形態の第1変形例では、メモリシステム20aにおいて、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、およびアクセス処理部204fの一部またはすべてが、CPU2014またはNANDコントローラ2016に備えられるものであってもよい。例えば、図9に示すように、CPU2014が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、およびアクセス処理部204fのすべてを備えるものであってもよい。また、例えば、図10に示すように、NANDコントローラ2016が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、およびアクセス処理部204fのすべてを備えるものであってもよい。また、例えば、図11に示すように、CPU2014が、取得部204a、特定部204b、および署名部204cを備え、NANDコントローラ2016が、第1判定部204d、生成部204e、およびアクセス処理部204fを備えるものであってもよい。
【0075】
(第1の実施形態の第2変形例)
また、第1の実施形態の第2変形例では、メモリシステム20aにおいて、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、およびアクセス処理部204fの一部またはすべてを、通信処理装置204、CPU2014、およびNANDコントローラ2016とは別にメモリコントローラ201が備えるものであってもよい。例えば、図12に示すように、メモリコントローラ201が、通信処理装置204、CPU2014、およびNANDコントローラ2016とは別に取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、およびアクセス処理部204fのすべてを備えるものであってもよい。なお、図12では、ホストインターフェースコントローラ2011、RAM2012、ROM2013、およびECC回路2015の記載を省略している。
【0076】
(第2の実施形態)
第2の実施形態による第1情報処理装置10では、メモリシステム20aの起動時に、メモリシステム20aの存在する位置に基づいて、ファームウェアFW1に含まれる第1プログラムPG1を実行するか否かが判定される。
【0077】
<通信処理装置の構成>
図13は、通信処理装置204の構成の一例を示す図である。通信処理装置204は、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、および起動部204hとして機能する。
【0078】
第2判定部204gは、メモリシステム20aが存在する位置に基づいて、第1プログラムPG1を実行するか否かを判定する。
【0079】
例えば、第2判定部204gは、メモリシステム20aの位置が第1の所定の範囲内にあると第1判定部204dが判定した場合、第1プログラムPG1を実行すると判定する。また、第2判定部204gは、メモリシステム20aの位置が第1の所定の範囲外にあると第1判定部204dが判定した場合、第1プログラムPG1を実行しないと判定する。
【0080】
起動部204hは、第2判定部204gの判定結果に基づいて、メモリコントローラ201のCPU2014に第1プログラムPG1を実行させる。
【0081】
例えば、起動部204hは、第1プログラムPG1を実行すると第2判定部204gが判定した場合、CPU2014に第1プログラムPG1を実行させる。また、起動部204hは、第1プログラムPG1を実行しないと第2判定部204gが判定した場合、CPU2014に第1プログラムPG1を実行させない。
【0082】
<メモリシステムが行う処理>
次に、メモリシステム20aが行う処理について説明する。図14は、メモリシステム20aの処理フローの一例を示す図である。
【0083】
メモリシステム20aが起動すると、通信処理装置204の第2判定部204gは、メモリシステム20aが存在する位置に基づいて、第1プログラムPG1を実行するか否かを判定する(ステップS11)。具体的には、第2判定部204gは、メモリシステム20aの位置が第1の所定の範囲内にあると第1判定部204dが判定した場合、第1プログラムPG1を実行すると判定する。また、第2判定部204gは、メモリシステム20aの位置が第1の所定の範囲外にあると第1判定部204dが判定した場合、第1プログラムPG1を実行しないと判定する。
【0084】
第2判定部204gが第1プログラムPG1を実行すると判定した場合(ステップS11においてYES)、起動部204hは、メモリコントローラ201のCPU2014にファームウェアをROM2013から読み出させる(ステップS12)。そして、CPU2014は、ファームウェアに含まれる第1プログラムPG1を実行する(ステップS13)。このステップS13の処理によって、メモリシステム20aは、外部からアクセス要求を受け付ける状態となる。メモリシステム20aは、図8に示すステップS1以降の処理を実行することができるようになる。
【0085】
第2判定部204gは、第1プログラムPG1を実行しないと判定した場合(ステップS11においてNO)、処理を終了する。
【0086】
<利点>
以上、第2の実施形態による第1情報処理装置10について説明した。第1情報処理装置10のメモリシステム20aにおいて、第2判定部204gは、メモリシステム20aが存在する位置に基づいて、第1プログラムPG1を実行するか否かを判定する。起動部204hは、第2判定部204gの判定結果に基づいて、CPU2014に第1プログラムPG1を実行させる。
【0087】
第1の実施形態による第1情報処理装置10では、メモリシステム20aの位置に関わらず、ホスト装置20bからメモリシステム20aに対してコマンドを発行できる。例えば、メモリシステム20aの位置が、第1の所定の範囲内にない場合、暗号化されたデータの読み出しおよび新規データの書き込みはできないが、それ以外のホスト装置20bからのコマンドは、メモリシステム20aが受け付けることができる。一方、第2の実施形態による第1情報処理装置10では、メモリシステム20aの位置に応じ、ホスト装置20bからメモリシステム20aへのコマンド発行そのものができないようにすることができる。例えば、メモリシステム20aの位置が、第1の所定の範囲内にない場合、ホスト装置20bがメモリシステム20aを認識すらできなくすることができる。その結果、第2の実施形態による第1情報処理装置10は、第1の実施形態による第1情報処理装置10よりも、メモリシステム20aが記憶するデータの外部への漏洩の可能性をさらに低減させることができる。つまり、第2の実施形態による第1情報処理装置10は、第1の実施形態による第1情報処理装置10よりも、さらにメモリシステム20aにおけるデータの秘匿性の向上を図ることができる。
【0088】
(第2の実施形態の第1変形例)
上述の第2の実施形態では、メモリシステム20aにおいて、通信処理装置204が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、および起動部204hとして機能するものとして説明した。しかしながら、第2の実施形態の第1変形例では、メモリシステム20aにおいて、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、および起動部204hの一部またはすべてが、CPU2014またはNANDコントローラ2016に備えられるものであってもよい。例えば、図15に示すように、CPU2014が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、および起動部204hのすべてを備えるものであってもよい。また、例えば、図16に示すように、NANDコントローラ2016が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、および起動部204hのすべてを備えるものであってもよい。また、例えば、図17に示すように、CPU2014が、取得部204a、特定部204b、署名部204c、および第1判定部204dを備え、NANDコントローラ2016が、生成部204e、アクセス処理部204f、第2判定部204g、および起動部204hを備えるものであってもよい。
【0089】
(第2の実施形態の第2変形例)
また、第2の実施形態の第2変形例では、メモリシステム20aにおいて、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、および起動部204hの一部またはすべてを、通信処理装置204、CPU2014、およびNANDコントローラ2016とは別にメモリコントローラ201が備えるものであってもよい。例えば、図18に示すように、メモリコントローラ201が、通信処理装置204、CPU2014、およびNANDコントローラ2016とは別に取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、および起動部204hのすべてを備えるものであってもよい。なお、図18では、ホストインターフェースコントローラ2011、RAM2012、ROM2013、およびECC回路2015の記載を省略している。
【0090】
(第3の実施形態)
<情報処理システムの構成>
図19は、第3の実施形態による情報処理システム1の構成の一例を示す図である。図19に示すように、情報処理システム1は、第1情報処理装置10と、第2情報処理装置20(外部装置の一例)と、を備える。第1情報処理装置10は、ネットワークNWを介して第2情報処理装置20と接続され得る。第3の実施形態による情報処理システム1では、メモリシステム20aが第2情報処理装置20からアクセス要求を受けた場合に、その要求と共に第2情報処理装置20から送信される第2情報処理装置20の位置データに基づいて、メモリシステム20aがデータの暗号化及び復号に係る情報を生成するか否かが判定される。
【0091】
<第2情報処理装置の構成>
図20は、第3の実施形態による第2情報処理装置20の構成の一例を示す図である。第2情報処理装置20は、第1情報処理装置10が記憶するデータにアクセスするための装置である。第2情報処理装置20は、例えばラップトップPCのようなモバイル型の情報処理端末である。図20に示すように、第2情報処理装置20は、通信部101、処理部102、第1取得部103、特定部104、および署名部105を備える。通信部101、処理部102、第1取得部103、特定部104、および署名部105は、例えば、1つまたは複数のCPU(Central Processing Unit)、FPGA(Field Programmable Gate Array)、ASIC(application specific integrated circuit)のような集積回路で構成され得る。また、第2情報処理装置20は、アンテナ10aを備える。
【0092】
通信部101は、第1情報処理装置10が備えるホスト装置20bを介してメモリシステム20aと通信を行う。
【0093】
処理部102は、通信部101を介して、メモリシステム20aへデータを書き込む処理、または、メモリシステム20aからデータを読み出す処理を試みる。
【0094】
第1取得部103は、人工衛星からアンテナ10aを介して電波を受信する。
【0095】
特定部104は、第1取得部103が受信した電波に基づいて、第2情報処理装置20の位置を特定する。例えば、特定部104は、第1の実施形態において特定部204bがGPSを用いてメモリシステム20aの位置を特定した方法と同様に、第2情報処理装置20の位置を特定する。すなわち、特定部104は、第1取得部103が4つの異なる人工衛星のそれぞれから受信した電波に基づいて、第2情報処理装置20の位置を特定する。なお、位置は、例えば、緯度および経度によって示される。ただし、位置は、緯度および経度に加えて標高によって示されるものであってもよい。
【0096】
署名部105は、アクセス要求と共に第1情報処理装置10に送信する第2情報処理装置20の位置データに所定の署名データを付与する。例えば、署名部105は、RSAアルゴリズムに基づき、秘密鍵を用いて位置データに所定の署名データを付与する。秘密鍵は、例えばUSB(Universal Serial Bus)ドングルなどのハードウェアセキュリティモジュール機器に格納される。そして、署名部105は、アクセス要求と共に、署名データを付与した位置データを第1情報処理装置10に送信する。
【0097】
<通信処理装置の構成>
図21は、第1情報処理装置10が備える通信処理装置204の構成の一例を示す図である。通信処理装置204は、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、および第1検証部204jとして機能する。
【0098】
第3判定部204iは、署名データが第2情報処理装置20の署名データであるか否かを所定の公開鍵を用いて判定する。所定の公開鍵は、第2情報処理装置20が署名データの付与に使用する秘密鍵と対を成す。すなわち、所定の公開鍵は、署名データを第3判定部204iが読み取り可能なデータに復号する公開鍵である。
【0099】
第1検証部204jは、署名データが第2情報処理装置20の署名データであると第3判定部204iが判定した場合、メモリシステム20aの処理を継続させる。また、第1検証部204jは、署名データが第2情報処理装置20の署名データでないと第3判定部204iが判定した場合、メモリシステム20aの処理を終了させる。
【0100】
第1検証部204jは、署名データが第2情報処理装置20の署名データであると第3判定部204iが判定した場合、第2情報処理装置20から受けた第2情報処理装置20の位置データによって示される第2情報処理装置20の位置が、第2の所定の範囲内にあるか否かを検証する。第2の所定の範囲は、第2情報処理装置20がメモリシステム20aへアクセス可能な第2情報処理装置20の位置として設定される。この第2の所定の範囲は、例えば、メモリシステム20aの動作開始時に、メモリチップ2021からRAM2012にロードされる。図22は、第2の所定の範囲の一例を示す図である。図22では、第2情報処理装置20がメモリシステム20aへアクセス可能な緯度と経度に対して、緯度についての許容範囲と経度についての許容範囲とを規定することによって、第2の所定の範囲が示されている。第1検証部204jは、RAM2012に書き込まれているこのような第2の所定の範囲に関する情報を読み出す。第1検証部204jは、読み出した第2の所定の範囲と、第2情報処理装置20から受けた第2情報処理装置20の位置データとを比較することによって、第2情報処理装置20の位置が第2の所定の範囲内であるか否かを検証することができる。
【0101】
生成部204eは、第2情報処理装置20の位置が第2の所定範囲内であると第1検証部204jが検証した場合に、データの暗号化及び復号に係る情報を生成する。
【0102】
例えば、ホスト装置20bは、第2情報処理装置20からデータの書き込み要求を受けると、メモリシステム20aにその書き込み要求を出力する。CPU2014がホストI/Fコントローラ2011を介して書き込み要求を受け、第2情報処理装置20の位置が第2の所定の範囲内であると第1検証部204jが検証した場合、生成部204eは、メモリシステム20aが存在する位置に基づいて暗号鍵を生成する。また、第2情報処理装置20の位置が第2の所定の範囲内でないと第1検証部204jが検証した場合、生成部204eは、暗号鍵を生成しない。
【0103】
また、例えば、ホスト装置20bは、第2情報処理装置20からデータの読み出し要求を受けると、メモリシステム20aにその読み出し要求を出力する。CPU2014がホストI/Fコントローラ2011を介して読み出し要求を受け、第2情報処理装置20の位置が第2の所定範囲内であると第1検証部204jが検証した場合、生成部204eは、メモリシステム20aが存在する位置に基づいて復号鍵を生成する。また、第2情報処理装置20の位置が第2の所定の範囲内でないと第1検証部204jが検証した場合、生成部204eは、復号鍵を生成しない。
【0104】
アクセス処理部204fは、生成部204eがデータの暗号化及び復号に係る情報を生成した場合、生成部204eが生成したデータの暗号化及び復号に係る情報を用いて、NANDメモリ202へ書き込むデータをCPU2014が暗号化すること、または、NANDメモリ202から読み出したデータをCPU2014が復号すること、の少なくとも1つの処理を可能な状態にする。
【0105】
例えば、アクセス処理部204fは、生成部204eが暗号鍵を生成した場合、生成部204eが生成した暗号鍵をメモリコントローラ201に送信する。メモリコントローラ201のCPU2014は、暗号鍵を用いてNANDメモリ202へ書き込む書き込みデータを暗号化する。そして、メモリコントローラ201のNANDコントローラ2016は、暗号化したデータをNANDメモリ202へ書き込む。
【0106】
また、例えば、アクセス処理部204fは、生成部204eが復号鍵を生成した場合、生成部204eが生成した復号鍵をメモリコントローラ201に送信する。メモリコントローラ201のNANDコントローラ2016は、暗号化されたデータをNANDメモリ202から読み出す。そして、メモリコントローラ201のCPU2014は、生成部204eが生成した復号鍵を用いて、NANDメモリ202から読み出された暗号化されたデータを復号する。
【0107】
<メモリシステムが行う処理>
次に、メモリシステム20aが行う処理について説明する。図23は、メモリシステム20aの処理フローの一例を示す図である。
【0108】
第2情報処理装置20は、アクセス要求と共に、署名データを付与した位置データをホスト装置20bに送信する。ホスト装置20bは、アクセス要求と共に、署名データを付与した位置データをメモリシステム20aに送信する。
【0109】
通信処理装置204の第3判定部204iは、署名データが第2情報処理装置20の署名データであるか否かを所定の公開鍵を用いて判定する(ステップS21)。
【0110】
第3判定部204iは、署名データが第2情報処理装置20の署名データでないと判定した場合(ステップS21においてNO)、処理を終了させる。
【0111】
また、署名データが第2情報処理装置20の署名データであると第3判定部204iが判定した場合(ステップS21においてYES)、第1検証部204jは、第2情報処理装置20から受けた第2情報処理装置20の位置データによって示される第2情報処理装置20の位置が第2の所定の範囲内であるか否かを検証する(ステップS22)。
【0112】
具体的には、第1検証部204jは、RAM2012に書き込まれている第2の所定の範囲に関する情報を読み出す。そして、第1検証部204jは、読み出した第2の所定の範囲と、第2情報処理装置20から受けた第2情報処理装置20の位置データとを比較する。
【0113】
第1検証部204jは、第2情報処理装置20の位置が第2の所定の範囲内でないと検証した場合(ステップS22においてNO)、処理を終了する。
【0114】
第2情報処理装置20の位置が第2の所定の範囲内であると第1検証部204jが検証した場合(ステップS22においてYES)、生成部204eは、データの暗号化及び復号に係る情報を生成する(ステップS23)。
【0115】
具体的には、第2情報処理装置20の位置が第2の所定の範囲内であると第1検証部204jが検証した場合、生成部204eは、メモリシステム20aが存在する位置に基づいて暗号鍵を生成する。暗号鍵は、データの暗号化及び復号に係る情報の一例である。また、第1情報処理装置10の位置が第2の所定の範囲内でないと第1検証部204jが検証した場合、生成部204eは、暗号鍵を生成しない。
【0116】
また、具体的には、第2情報処理装置20の位置が第2の所定の範囲内であると第1検証部204jが検証した場合、生成部204eは、メモリシステム20aが存在する位置に基づいて復号鍵を生成する。復号鍵は、データの暗号化及び復号に係る情報の一例である。また、第2情報処理装置20の位置が第2の所定の範囲内でないと第1検証部204jが検証した場合、生成部204eは、復号鍵を生成しない。
【0117】
アクセス処理部204fは、生成部204eがデータの暗号化及び復号に係る情報を生成した場合、生成部204eが生成したデータの暗号化及び復号に係る情報を用いて、NANDメモリ202へ書き込むデータをCPU2014が暗号化すること、または、NANDメモリ202から読み出したデータをCPU2014が復号すること、の少なくとも1つの処理を可能な状態にする(ステップS6)。
【0118】
<利点>
以上、第3の実施形態による情報処理システム1について説明した。情報処理システム1のメモリシステム20aにおいて、署名データが第2情報処理装置20の署名データであると第3判定部204iが判定した場合、第1検証部204jは、第2情報処理装置20から受けた第2情報処理装置20の位置データが示す第2情報処理装置20の位置が第2の所定の範囲内であるか否かを検証する。
【0119】
メモリシステム20aをこのように構成することにより、第2情報処理装置20からメモリシステム20aへ送信された第2情報処理装置20の位置データに対する改ざんの有無を判定することができる。よって、第3の実施形態による情報処理システム1が備える第1情報処理装置10は、第1~第2の実施形態による第1情報処理装置10に比べて、メモリシステム20aが記憶するデータへアクセスできる条件がより制限される。その条件を満たさない場合には、データの暗号化及び復号に係る情報が生成されず、メモリシステム20aが記憶するデータへアクセスすることができない。その結果、第3の実施形態による第1情報処理装置10は、第1~第2の実施形態による第1情報処理装置10よりも、メモリシステム20aが記憶するデータの外部への漏洩の可能性をさらに低減させることができる。つまり、第3の実施形態による第1情報処理装置10は、第1~第2の実施形態による第1情報処理装置10よりも、さらにメモリシステム20aにおけるデータの秘匿性の向上を図ることができる。
【0120】
(第3の実施形態の第1変形例)
上述の第3の実施形態では、メモリシステム20aにおいて、通信処理装置204が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、および第1検証部204jとして機能するものとして説明した。しかしながら、第3の実施形態の第1変形例では、メモリシステム20aにおいて、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、および第1検証部204jの一部またはすべてが、CPU2014またはNANDコントローラ2016に備えられるものであってもよい。例えば、図24に示すように、CPU2014が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、および第1検証部204jのすべてを備えるものであってもよい。また、例えば、図25に示すように、NANDコントローラ2016が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、および第1検証部204jのすべてを備えるものであってもよい。また、例えば、図26に示すように、CPU2014が、取得部204a、特定部204b、署名部204c、第1判定部204d、および生成部204eを備え、NANDコントローラ2016が、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、および第1検証部204jを備えるものであってもよい。
【0121】
(第3の実施形態の第2変形例)
また、第3の実施形態の第2変形例では、メモリシステム20aにおいて、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、および第1検証部204jの一部またはすべてを、通信処理装置204、CPU2014、およびNANDコントローラ2016とは別にメモリコントローラ201が備えるものであってもよい。例えば、図27に示すように、メモリコントローラ201が、通信処理装置204、CPU2014、およびNANDコントローラ2016とは別に取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、および第1検証部204jのすべてを備えるものであってもよい。なお、図27では、ホストインターフェースコントローラ2011、RAM2012、ROM2013、およびECC回路2015の記載を省略している。
【0122】
(第4の実施形態)
第4の実施形態による情報処理システム1では、第2情報処理装置20からメモリシステム20aへアクセス可能な時間帯が制限されており、メモリシステム20aがその時間帯におけるアクセスであるか否かを検証する。
【0123】
<情報処理システムの構成>
図28は、第4の実施形態による情報処理システム1の構成の一例を示す図である。情報処理システム1は、第1情報処理装置10と、第2情報処理装置20と、を備える。図28に示すように、情報処理システム1は、サーバ30と接続可能である。サーバ30は、タイムスタンプを発行するタイムスタンプサーバである。タイムスタンプとは、信頼の置ける時刻に、あるデジタル情報に対し、変更、改ざんがあったかどうかを検知できる情報を付与し、その時刻以降に、そのデジタル情報の内容に変更・改ざんがあったかどうかを証明できるものである。
【0124】
<第2情報処理装置の構成>
図29は、第4の実施形態による第2情報処理装置20の構成の一例を示す図である。図29に示すように、第2情報処理装置20は、通信部101、処理部102、第1取得部103、特定部104、署名部105、および第2取得部106を備える。また、第2情報処理装置20は、アンテナ10aを備える。
【0125】
第2取得部106は、サーバ30からタイムスタンプを取得する。
【0126】
署名部105は、アクセス要求、第2情報処理装置20の位置データと共に第1情報処理装置10に送信するタイムスタンプに、所定の署名データを付与する。そして、署名部105は、アクセス要求、第2情報処理装置20の位置データと共に、署名データを付与したタイムスタンプを第1情報処理装置10に送信する。
【0127】
<通信処理装置の構成>
図30は、通信処理装置204の構成の一例を示す図である。通信処理装置204は、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、第1検証部204j、および第2検証部204kとして機能する。
【0128】
第2検証部204kは、第2情報処理装置20から受けたタイムスタンプにより示される時刻が所定の時刻の範囲内であるか否かを検証する。タイムスタンプは時刻情報の一例である。所定の時刻の範囲は、第2情報処理装置20がメモリシステム20aへアクセス可能な時刻の範囲として設定される。この所定の時刻の範囲は、例えば、メモリシステム20aの動作開始時に、メモリチップ2021からRAM2012にロードされる。図31は、所定の時刻の範囲の一例を示す図である。図31では、第2情報処理装置20がメモリシステム20aへアクセス可能な開始時刻と終了時刻とによって、所定の時刻の範囲が示されている。第2検証部204kは、RAM2012に書き込まれているこのような所定の時刻の範囲(つまり、アクセス可能な開始時刻とアクセス可能な終了時刻)を読み出す。第2検証部204kは、読み出した所定の時刻の範囲と、第2情報処理装置20から受けたタイムスタンプが示す時刻とを比較することによって、第2情報処理装置20のタイムスタンプが示す時刻が所定の時刻の範囲内であるか否かを検証することができる。
【0129】
生成部204eは、第2情報処理装置20の位置が第2の所定の範囲内であると第1検証部204jが検証し、タイムスタンプにより示される時刻が所定の時刻の範囲内であると第2検証部204kが検証した場合に、データの暗号化及び復号に係る情報を生成する。
【0130】
例えば、ホスト装置20bは、第2情報処理装置20からデータの書き込み要求を受けると、メモリシステム20aにその書き込み要求を出力する。CPU2014は、ホストI/Fコントローラ2011を介して書き込み要求を受ける。CPU2014が書き込み要求を受け、第2情報処理装置20の位置が第2の所定の範囲内であると第1検証部204jが検証し、タイムスタンプが所定の時刻の範囲内であると第2検証部204kが検証した場合、生成部204eは、メモリシステム20aが存在する位置に基づいて暗号鍵を生成する。暗号鍵はデータの暗号化及び復号に係る情報の一例である。また、CPU2014が書き込み要求を受け、第2情報処理装置20の位置が第2の所定の範囲内でないと第1検証部204jが検証した、または、タイムスタンプが所定の時刻の範囲内でないと第2検証部204kが検証した場合、生成部204eは、暗号鍵を生成しない。
【0131】
また、例えば、ホスト装置20bは、第2情報処理装置20からデータの読み出し要求を受けると、メモリシステム20aにその読み出し要求を出力する。CPU2014は、ホストI/Fコントローラ2011を介して読み出し要求を受ける。CPU2014が読み出し要求を受け、第2情報処理装置20の位置が第2の所定の範囲内であると第1検証部204jが検証し、タイムスタンプが所定の時刻の範囲内であると第2検証部204kが検証した場合、生成部204eは、メモリシステム20aが存在する位置に基づいて復号鍵を生成する。復号鍵はデータの暗号化及び復号に係る情報の一例である。また、CPU2014が読み出し要求を受け、第2情報処理装置20の位置が第2の所定の範囲内でないと第1検証部204jが検証した、または、タイムスタンプが所定の時刻の範囲内でないと第2検証部204kが検証した場合、生成部204eは、復号鍵を生成しない。
【0132】
アクセス処理部204fは、生成部204eがデータの暗号化及び復号に係る情報を生成した場合、生成部204eが生成したデータの暗号化及び復号に係る情報を用いて、NANDメモリ202へ書き込むデータをCPU2014が暗号化すること、または、NANDメモリ202から読み出したデータをCPU2014が復号すること、の少なくとも1つの処理を可能な状態にする。
【0133】
例えば、アクセス処理部204fは、生成部204eが暗号鍵を生成した場合、生成部204eが生成した暗号鍵をメモリコントローラ201に送信する。メモリコントローラ201のCPU2014は、暗号鍵を用いてNANDメモリ202へ書き込む書き込みデータを暗号化する。そして、メモリコントローラ201のNANDコントローラ2016は、暗号化したデータをNANDメモリ202へ書き込む。また、アクセス処理部204fは、生成部204eが復号鍵を生成した場合、生成部204eが生成した復号鍵をメモリコントローラ201に送信する。メモリコントローラ201のNANDコントローラ2016は、暗号化されたデータをNANDメモリ202から読み出す。そして、メモリコントローラ201のCPU2014は、生成部204eが生成した復号鍵を用いて、NANDメモリ202から読み出された暗号化されたデータを復号する。
【0134】
<メモリシステムが行う処理>
次に、メモリシステム20aが行う処理について説明する。図32は、メモリシステム20aの処理フローの一例を示す図である。
【0135】
第2情報処理装置20は、アクセス要求、位置データと共に、署名データを付与したタイムスタンプをホスト装置20bに送信する。ホスト装置20bは、アクセス要求、位置データと共に、署名データを付与したタイムスタンプをメモリシステム20aに送信する。
【0136】
通信処理装置204の第3判定部204iは、署名データが第2情報処理装置20の署名データであるか否かを所定の公開鍵を用いて判定する(ステップS31)。
【0137】
第3判定部204iは、署名データが第2情報処理装置20の署名データでないと判定した場合(ステップS31においてNO)、処理を終了させる。
【0138】
また、署名データが第2情報処理装置20の署名データであると第3判定部204iが判定した場合(ステップS31においてYES)、第1検証部204jは、第2情報処理装置20から受けた第2情報処理装置20の位置データによって示される第2情報処理装置20の位置が第2の所定の範囲内であるか否かを検証する(ステップS32)。
【0139】
具体的には、第1検証部204jは、RAM2012に書き込まれている第2の所定の範囲に関する情報を読み出す。そして、第1検証部204jは、読み出した第2の所定の範囲と、第2情報処理装置20から受けた第2情報処理装置20の位置データとを比較する。
【0140】
第1検証部204jは、第2情報処理装置20の位置が第2の所定の範囲内でないと検証した場合(ステップS32においてNO)、処理を終了する。
【0141】
第2情報処理装置20の位置が第2の所定の範囲内であると第1検証部204jが検証した場合(ステップS32においてYES)、第2検証部204kは、第2情報処理装置20から受けたタイムスタンプが所定の時刻の範囲内であるか否かを検証する(ステップS33)。
【0142】
具体的には、第2検証部204kは、RAM2012に書き込まれている所定の時刻の範囲に関する情報を読み出す。第2検証部204kは、読み出した所定の時刻の範囲と、第2情報処理装置20から受けたタイムスタンプが示す時刻とを比較する。第2検証部204kは、タイムスタンプが示す時刻が所定の時刻の範囲内にあるか否かを検証する。
【0143】
第2検証部204kは、タイムスタンプが所定の時刻の範囲内でないと検証した場合(ステップS33においてNO)、処理を終了する。
【0144】
タイムスタンプが所定の時刻の範囲内あると第2検証部204kが検証した場合(ステップS33においてYES)、生成部204eは、データの暗号化及び復号に係る情報を生成する(ステップS23)。
【0145】
具体的には、ホスト装置20bは、第2情報処理装置20からデータの書き込み要求を受けると、メモリシステム20aにその書き込み要求を出力する。CPU2014は、ホストI/Fコントローラ2011を介して書き込み要求を受ける。CPU2014が書き込み要求を受け、第2情報処理装置20の位置が第2の所定の範囲内であると第1検証部204jが検証し、第2情報処理装置20から受けたタイムスタンプが所定の時刻の範囲内であると第2検証部204kが検証した場合、生成部204eは、メモリシステム20aが存在する位置に基づいて暗号鍵を生成する。暗号鍵は、データの暗号化及び復号に係る情報の一例である。また、CPU2014が書き込み要求を受け、第2情報処理装置20の位置が第2の所定の範囲内でないと第1検証部204jが検証した場合、または、第2情報処理装置20から受けたタイムスタンプが所定の時刻の範囲内でないと第2検証部204kが検証した場合、生成部204eは、暗号鍵を生成しない。
【0146】
また、具体的には、ホスト装置20bは、第2情報処理装置20からデータの読み出し要求を受けると、メモリシステム20aにその読み出し要求を出力する。CPU2014は、ホストI/Fコントローラ2011を介して読み出し要求を受ける。CPU2014が読み出し要求を受け、第2情報処理装置20の位置が第2の所定の範囲内であると第1検証部204jが検証し、第2情報処理装置20から受けたタイムスタンプが所定の時刻の範囲内であると第2検証部204kが検証した場合、生成部204eは、メモリシステム20aが存在する位置に基づいて復号鍵を生成する。復号鍵は、データの暗号化及び復号に係る情報の一例である。また、CPU2014が読み出し要求を受け、第2情報処理装置20の位置が第2の所定の範囲内でないと第1検証部204jが検証した場合、または、第2情報処理装置20から受けたタイムスタンプが所定の時刻の範囲内でないと第2検証部204kが検証した場合、生成部204eは、復号鍵を生成しない。
【0147】
アクセス処理部204fは、生成部204eがデータの暗号化及び復号に係る情報を生成した場合、生成部204eが生成したデータの暗号化及び復号に係る情報を用いて、NANDメモリ202へ書き込むデータをCPU2014が暗号化すること、または、NANDメモリ202から読み出したデータをCPU2014が復号すること、の少なくとも1つの処理を可能な状態にする(ステップS6)。
【0148】
<利点>
以上、第4の実施形態による情報処理システム1について説明した。情報処理システム1のメモリシステム20aにおいて、第2検証部204kは、第2情報処理装置20から受けたタイムスタンプが所定の時刻の範囲内であるか否かを検証する。
【0149】
メモリシステム20aをこのように構成することにより、第2情報処理装置20から受けたタイムスタンプが所定の時刻の範囲内でないと第2検証部204kが検証した場合、生成部204eは、データの暗号化及び復号に係る情報を生成しない。よって、第4の実施形態による第1情報処理装置10は、第1~第3の実施形態による第1情報処理装置10に比べて、メモリシステム20aが記憶するデータへアクセスできる条件がより制限される。その結果、第4の実施形態による第1情報処理装置10は、第1~第3の実施形態による第1情報処理装置10よりも、メモリシステム20aが記憶するデータの外部への漏洩の可能性をさらに低減させることができる。つまり、第4の実施形態による第1情報処理装置10は、第1~第3の実施形態による第1情報処理装置10よりも、さらにメモリシステム20aにおけるデータの秘匿性の向上を図ることができる。
【0150】
(第4の実施形態の第1変形例)
上述の第4の実施形態では、メモリシステム20aにおいて、通信処理装置204が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、第1検証部204j、および第2検証部204kとして機能するものとして説明した。しかしながら、第4の実施形態の第1変形例では、メモリシステム20aにおいて、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、第1検証部204j、および第2検証部204kの一部またはすべてが、CPU2014またはNANDコントローラ2016に備えられるものであってもよい。例えば、図33に示すように、CPU2014が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、第1検証部204j、および第2検証部204kのすべてを備えるものであってもよい。また、例えば、図34に示すように、NANDコントローラ2016が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、第1検証部204j、および第2検証部204kのすべてを備えるものであってもよい。また、例えば、図35に示すように、CPU2014が、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204eおよびアクセス処理部204fを備え、NANDコントローラ2016が、第2判定部204g、起動部204h、第3判定部204i、第1検証部204j、および第2検証部204kを備えるものであってもよい。
【0151】
(第4の実施形態の第2変形例)
また、第4の実施形態の第2変形例では、取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、第1検証部204j、および第2検証部204kの一部またはすべてを、通信処理装置204、CPU2014、およびNANDコントローラ2016とは別にメモリコントローラ201が備えるものであってもよい。例えば、図36に示すように、メモリコントローラ201が、通信処理装置204、CPU2014、およびNANDコントローラ2016とは別に取得部204a、特定部204b、署名部204c、第1判定部204d、生成部204e、アクセス処理部204f、第2判定部204g、起動部204h、第3判定部204i、第1検証部204j、および第2検証部204kのすべてを備えるものであってもよい。なお、図36では、ホストインターフェースコントローラ2011、RAM2012、ROM2013、およびECC回路2015の記載を省略している。
【0152】
上記の実施形態および変形例において、暗号鍵と復号鍵は別のものとして説明したが、別の実施形態では暗号鍵と復号鍵とは同一の鍵であってもよい。
【0153】
以上、いくつかの実施形態および変形例について説明したが、実施形態は上記例に限定されない。上述した実施形態および変形例は、互いに組み合わされて実現されてもよい。メモリコントローラ201の機能の一部または全部は、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)、またはFPGA(Field Programmable Gate Array)などのハードウェア(回路部;circuitryを含む)によって実現されてもよい。また、本明細書における「第1」、「第2」などの序数は、説明の便宜上のものであり、順序を入れ替えて付け直されてもよい。
【0154】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0155】
1…情報処理システム、10…第1情報処理装置、10a…アンテナ、20…第2情報処理装置、20a…メモリシステム、20b…ホスト装置、30…サーバ、101…通信部、102…処理部、103…第1取得部、104…特定部、105…署名部、106…第2取得部、201…メモリコントローラ、NANDメモリ、203…アンテナ、204a…取得部、204b…特定部、204c…署名部、204d…第1判定部、204e…生成部、204f…アクセス処理部、204g…第2判定部、204h…起動部、204i…第3判定部、204j…第1検証部、204k…第2検証部、2011…ホストI/Fコントローラ、2012…RAM、2012a…判定電圧情報、2012b…基準電圧情報、2013…ROM、2014…CPU、2015…ECC回路、2016…NANDコントローラ、2021…メモリチップ、2021a…I/O信号処理回路、2021b…制御信号処理回路、2021c…チップ制御回路、2021d…RY/BY生成回路、2021e…コマンドレジスタ、2021f…アドレスレジスタ、2021g…ロウデコーダ、2021h…カラムデコーダ、2021i…データレジスタ、2021j…センスアンプ、2021k…メモリセルアレイ、BLK…物理ブロック、MT…メモリセル、WL…ワード線。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36