(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022112286
(43)【公開日】2022-08-02
(54)【発明の名称】メモリシステムおよび制御方法
(51)【国際特許分類】
G06F 21/62 20130101AFI20220726BHJP
G09C 1/00 20060101ALI20220726BHJP
【FI】
G06F21/62 354
G09C1/00 620Z
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2021008054
(22)【出願日】2021-01-21
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】神戸 友樹
(57)【要約】
【課題】ホストの負荷を軽減し、個人情報の保護を含む安全なデータ管理を可能とするメモリシステムを提供する。
【解決手段】実施形態によれば、メモリシステムは、不揮発性メモリと、不揮発性メモリを制御するコントローラと、を具備する。コントローラは、関係データベースを定義または操作するデータベース操作命令を含むコマンドをホストから受信可能に構成され、ホストからのコマンドに応じて関係データベースを構築し、関係データベースを不揮発性メモリに格納し、関係データベースにデータを書き込み、または、関係データベースからデータを読み出す、ように構成されている。
【選択図】
図7
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、
関係データベースを定義または操作するデータベース操作命令を含むコマンドをホストから受信可能に構成され、前記ホストからのコマンドに応じて関係データベースを構築し、前記関係データベースを前記不揮発性メモリに格納し、前記関係データベースにデータを書き込み、または、前記関係データベースからデータを読み出すように構成されている
メモリシステム。
【請求項2】
前記コントローラは、前記関係データベースへ書き込むデータを暗号化し、前記関係データベースから暗号化された状態で読み出されたデータを復号するようにさらに構成されている
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、準識別子の属性の列のデータを要求するクエリを含む前記コマンドに応じて、前記準識別子の属性の列のデータがk-匿名性を満たす場合に前記準識別子の属性の列のデータを前記ホストに返信し、準識別子の属性の列のデータがk-匿名性を満たさない場合にエラーを前記ホストに返信するようにさらに構成されている
請求項1または2に記載のメモリシステム。
【請求項4】
前記コントローラは、センシティブ属性の列のデータを要求するクエリを含む前記コマンドに応じて、エラーを前記ホストに返信し、または、センシティブ属性の列のデータを前記ホストに返信しない、ようにさらに構成されている
請求項3に記載のメモリシステム。
【請求項5】
前記コントローラは、センシティブ属性の列と非センシティブ属性の列とを含む複数の列のデータを要求するクエリを含む前記コマンドに応じて、非センシティブ属性の列のデータを前記ホストに返信し、センシティブ属性の列のデータを前記ホストに返信しない、ようにさらに構成されている
請求項3に記載のメモリシステム。
【請求項6】
前記コントローラは、前記関係データベースへのデータの書き込み時または前記関係データベースからのデータの読み出し時、予め指定された列のデータを予め指定された規則に基づいて一般化するようにさらに構成されている
請求項3~5のいずれか1項に記載のメモリシステム。
【請求項7】
不揮発性メモリを有するメモリシステムの制御方法であって、
関係データベースを定義または操作するデータベース操作命令を含むコマンドをホストから受信し、
前記ホストからのコマンドに応じて、関係データベースを構築し、前記関係データベースを前記不揮発性メモリに格納し、前記関係データベースへデータを書き込み、または、前記関係データベースからデータを読み出す、
制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよび制御方法に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。HDD(hard disk drive)やSSD(solid state drive)などのメモリシステムは、サーバやパーソナルコンピュータなどの情報処理装置のストレージとして使用されている。
【0003】
また、近年、データのセキュリティに対する関心が高まっている。さらには、GDPR(general data protection regulation)など、個人情報の取り扱いについての規制が強化されている。これに伴い、たとえば個人情報を含むビッグデータをメモリシステムに蓄積して解析するホスト、つまりサーバやパーソナルコンピュータなどの情報処理装置の負荷が増加している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2020-119298号公報
【特許文献2】米国特許第9811478号明細書
【特許文献3】米国特許第10460110号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の1つの実施形態は、ホストの負荷を軽減し、かつ、個人情報を安全に管理することができるメモリシステムおよび制御方法を提供する。
【課題を解決するための手段】
【0006】
実施形態によれば、メモリシステムは、不揮発性メモリと、不揮発性メモリを制御するコントローラと、を具備する。コントローラは、関係データベースを定義または操作するデータベース操作命令を含むコマンドをホストから受信可能に構成され、ホストからのコマンドに応じて関係データベースを構築し、関係データベースを不揮発性メモリに格納し、関係データベースにデータを書き込み、または、関係データベースからデータを読み出す、ように構成されている。
【図面の簡単な説明】
【0007】
【
図1】ホストと接続されている実施形態のメモリシステムの一構成例を示す図
【
図2】実施形態のメモリシステムを含む情報処理システムと、比較例のメモリシステムを含む情報処理システムとの、データの授受に関する違いを示す図
【
図3】実施形態のメモリシステムが受信し得る、関係データベース(表)を定義するためのコマンドの一例を示す図
【
図4】実施形態のメモリシステムが受信し得る、関係データベース(表)にデータを挿入するためのコマンドの一例を示す図
【
図5】実施形態のメモリシステムが受信し得る、関係データベース(表)からデータを検索するためのコマンドの一例を示す図
【
図6】実施形態のメモリシステムにおけるクエリに対する応答許可条件の一覧を示す図
【
図7】実施形態のメモリシステムのクエリに対する応答例を示す図
【
図8】実施形態のメモリシステムのクエリ受信時における処理手順の一例を示す図
【発明を実施するための形態】
【0008】
以下、実施の形態について、図面を参照して説明する。
【0009】
図1は、本実施形態のメモリシステム1の一構成例を示す図である。
図1には、メモリシステム1と、メモリシステム1に接続されるホスト2と、メモリシステム1とホスト2とを接続するインタフェース3とを含む、情報処理システムの一構成例が併せて示されている。
【0010】
ホスト2は、サーバやパーソナルコンピュータなどの情報処理装置である。
【0011】
インタフェース3は、ホスト2とメモリシステム1を接続する。インタフェース3は、たとえばPCI Express(PCIe)TM、イーサネットTMに準拠する。
【0012】
メモリシステム1は、HDDやSSDなどのストレージ装置として実現され得る。ここでは、メモリシステム1がSSDとして実現されている例を示す。メモリシステム1は、コントローラ11、DRAM(Dynamic Random Access Memory)12およびNAND型フラッシュメモリ(NANDメモリ)13を有する。
【0013】
コントローラ11は、たとえばSoC(system on a chip)として構成される。コントローラ11は、ホスト2が発行するコマンドに基づき、ホスト2から送信されてくるデータのNANDメモリ13への書き込み処理や、ホスト2が要求するデータのNANDメモリ13からの読み出し処理などを実行する。
【0014】
コントローラ11は、NANDメモリ13に書き込むデータを暗号化してもよい。この場合、コントローラ11は、NANDメモリ13から読み出される暗号化されたデータを復号する。
【0015】
コントローラ11は、制御部110、ホストインタフェース部120、DRAMインタフェース部130、NANDインタフェース部140を有する。コントローラ11の各部の機能は、専用ハードウェアによって実現されてもよく、プロセッサがプログラムを実行することにより実現されてもよい。
【0016】
ホストインタフェース部120は、ホスト2との通信を制御する。ホストインタフェース部120は、データベース操作命令を含むコマンドを送受信することが可能なコマンドフォーマットを有する独自のインタフェース仕様に準拠する。ホストインタフェース部120は、NVM Express(NVMe)TMのような既存のインタフェース仕様であって、用途を任意に定めることができるコマンド(たとえばベンダーユニークコマンド)を、データベース操作命令を含むコマンドの送受信用として定義するインタフェース仕様に準拠してもよい。
【0017】
データベース操作命令は、データベースを定義したり操作したりすることを命令する。データベースの操作とは、データの挿入、削除、検索(取り出し)を含む。データベースの例は、関係データベース(リレーショナルデータベース)、オブジェクト指向データベース、キー・バリュー型データベースである。以下の説明では、データベースは関係データベースであるものとする。
【0018】
データベース操作命令はデータベース言語によって記述され得る。データベース言語はたとえば構造化問い合わせ言語である。また、データベース言語はたとえばSQL文である。以下の説明では、データベース言語はSQL文であるものとする。
【0019】
つまり、本実施形態のメモリシステム1は、SQL文含むコマンドをホスト2から受信可能に構成される。より具体的には、コントローラ11は、ホスト2から受け取ったSQL文に応じて関係データベース(表)を構築し、または、関係データベースを操作する。
【0020】
DRAMインタフェース部130は、DRAM12に対するデータアクセス(ライト/リード)を制御する。NANDインタフェース部140は、NANDメモリ13に対するデータアクセスを制御する。
【0021】
制御部110は、メモリシステム1を統合的に制御するモジュールである。より具体的には、制御部110は、ホストインタフェース部120、DRAMインタフェース部130、NANDインタフェース部140を制御する。制御部110は、たとえば1以上のプロセッサ(不図示)によって構成される。制御部110は、ファームウェアなどと称されるプログラムを実行することで、クエリ処理部111、暗号化/復号部112として機能する。ファームウェアは、たとえばメモリシステム1の電源オン時やリセット時に、NANDメモリ13からコントローラ11内のメモリ(不図示)にロードされる。
【0022】
クエリ処理部111は、ホスト2から送られてくるSQL文に対応する処理を実行する。より具体的には、クエリ処理部111は、関係データベースを構築したり、関係データベースをNANDメモリ13上に格納したり、関係データベースにデータを書き込んだり、関係データベースからデータを読み出したりする。関係データベースから目的のデータを検索して読み出すことを要求するSQL文は、クエリとも称される。
【0023】
本実施形態のメモリシステム1におけるクエリ処理部111は、SQL文に対応する処理を実行する際、プライバシー保護データマイニング(PPDM)などのような、個人のプライバシーを守りながらデータ分析を行う機能を実現するために、匿名化のための処理を併せて実行し得る。クエリ処理部111は、たとえば、k-匿名化のための処理を実行し得る。
【0024】
k-匿名化は、各行が一個人に対応し、各列が個人の属性を表す、n行m列の表形式のデータベースを扱う場合において、k-1人以下の個人を区別することができないようにすることである。k-匿名化において、個人を一意に示す属性を識別子と称する。単体では個人を特定できないが、複数の組み合わせによって個人を特定し得る属性を準識別子と称する。準識別子の列は、k-匿名性列とも称する。他人に知られたくない属性をセンシティブ属性と称する。センシティブ属性は、公開されるとプライバシーが侵害されるような個人情報を含む属性である。センシティブ属性の列は、秘密列とも称する。
【0025】
クエリ処理部111は、ホスト2からのSQL文がセンシティブ属性の列のデータを要求するクエリであった場合、このクエリに対し、エラーを返信する。センシティブ属性の列のデータだけでなく、非センシティブ属性の列のデータも要求するクエリであった場合には、クエリ処理部111は、エラーを返信してもよいし、非センシティブ属性の列のデータのみを返信してもよい。つまり、本実施形態のメモリシステム1は、センシティブ属性の列のデータを、クエリに対する応答としては返信しない。
【0026】
また、クエリ処理部111は、ホスト2からのSQL文が準識別子の列のデータを要求するクエリであった場合、検索結果がk-匿名性を満たすか否かを判定する。k-匿名性を満たすとは、準識別子の列のデータからk-1人以下の個人を区別することができないことである。たとえば、「住所(都道府県)」、「性別」、「年齢」の準識別子が存在する場合、「東京」、「男性」、「32才」など、どの属性値の組み合わせにおいてもk人以上の個人が該当することである。クエリ処理部111は、検索結果がk-匿名性を満たさない場合、このクエリに対し、エラーを返信する。つまり、本実施形態のメモリシステム1は、準識別子の列のデータを、k-匿名性を満たす場合のみ、クエリに対する応答として返信する。換言すれば、本実施形態のメモリシステム1は、k-匿名性を満たさない場合には、準識別子の列のデータを、クエリに対する応答としては返信しない。
【0027】
さらに、クエリ処理部111は、ある列に対して一般化の設定が行われている場合、この列へデータの書き込み時または当該列からのデータの読み出し時、予め指定された規則に基づく一般化の処理を実行する。一般化とは、たとえば「年齢」という準識別子の列のデータの場合、10~19を10(代)、20~29を20(代)といったようにデータを加工することである。列からのデータの読み出し時に一般化を実行する場合、関係データベース(表)上には元の値が保持されているので、一般化の規則を動的に設定することができる。たとえば、前述の「年齢」という準識別子の列のデータについて、10~14を10、15~19を15といったように粒度を細分化することも可能である。なお、この一般化は、クエリ処理部111ではなく、関係データベースへのデータの挿入をSQL文で要求するホスト2が実行するようにしてもよい。
【0028】
コントローラ11は、関係データベースの操作やデータの暗号化/復号を行う際の作業領域として、DRAM12を使用する。なお、作業領域は、コントローラ11内のSRAM(不図示)などであってもよい。つまり、DRAM12はメモリシステム1にとって必須ではない。
【0029】
暗号化/復号部112は、関係データベースへ書き込むデータを暗号化し、また、関係データベースから暗号化された状態で読み出されたデータを復号する。クエリ処理部111は、DRAM12を介して暗号化/復号部112との間でデータを授受する。より具体的には、クエリ処理部111は、NANDメモリ13上の関係データベースへ書き込むデータをDRAM12に格納し、当該DRAM12上のデータの暗号化を暗号化/復号部112に依頼する。クエリ処理部111は、暗号化/復号部112によって暗号化されたデータをNANDメモリ13上の関係データベースへ書き込む。また、クエリ処理部111は、NANDメモリ13上の関係データベースから読み出した、暗号化された状態のデータをDRAM12に格納し、当該DRAM12上のデータの復号を暗号化/復号部112に依頼する。クエリ処理部111は、暗号化/復号部112によって復号されたデータを使用して、ホスト2からのクエリに対応するデータの検索を実行する。
【0030】
図2は、本実施形態のメモリシステム1を含む情報処理システムと、比較例のメモリシステム1xを含む情報処理システムとの、データの授受に関する一比較例を示す図である。
【0031】
図2(A)には、インタフェース3xによって比較例のメモリシステム1xとホスト2xとが接続される情報処理システムが示されている。ホスト2xは、アクセス対象のデータに関連付けられた論理アドレスを含むリードコマンドやライトコマンドをメモリシステム1xに送信する。論理アドレスの例は論理ブロックアドレス(LBA)である。
【0032】
図2(A)の情報処理システムにおいては、ホスト2xが、SQL文に対応する処理を実行する。つまり、SQL文に対応する処理のために、CPU21xや主メモリ22xなど、ホスト2xのリソースが消費される。また、ホスト2xが、匿名化のための処理を実行しなければならない。たとえば、データマイニングプログラムが発行するSQL文がセンシティブ属性の列のデータを要求するクエリであった場合、ホスト2xがエラーを生成する処理をしなければならない。また、データマイニングプログラムが発行するSQL文がセンシティブ属性の列のデータと非センシティブ属性の列のデータを併せて要求するクエリであった場合には、ホスト2xが、エラーを生成し、または、非センシティブ属性の列のデータを抽出する処理をしなければならない。
【0033】
また、
図2(A)の情報処理システムにおいては、準識別子の列のデータに関する匿名化のための処理を、通常、ホスト2xがデータベースの構築時に行う。従って、一般化の規則を変更するなど、動的にk-匿名化を行うことは難しい。また、クエリに応じた検索結果がk-匿名性を満たすか否かをホスト2xにおいて判定し、k-匿名性を満たさない場合に当該クエリに対してエラーを生成する場合、CPU21xの負荷はさらに増加する。かつ、データマイニングのために蓄積するデータに適した匿名化の処理を実行するプログラムを用意することなども必要となる。
【0034】
また、
図2(A)の情報処理システムにおいては、ホスト2xは、クエリに応じた検索を実行するために、論理アドレス(LBA)を指定したリードコマンドをメモリシステム1xに対して発行する。ホスト2xは、当該リードコマンドの応答としてメモリシステム1xから送られてくるデータ(data)を主メモリ22xに格納する。データがメモリシステム1xのNANDメモリ13xに暗号化されて格納される場合、ホスト2xは、クエリに応じた検索を実行するために、暗号化された状態で読み出されるデータの復号を実行する。つまり、主メモリ22x上に、平文のデータ(a1)が存在する機会が発生する。従って、主メモリ22x上に平文の状態で個人情報が存在し、これが外部に漏洩する危険性を否定できない。また、データの暗号化/復号も、CPU21xの負荷を増加させる。
【0035】
データの暗号化/復号をメモリシステム1xで行う場合、ホスト2xにおけるCPU21xの負荷を軽減できる。しかしながら、ホスト2xの主メモリ22x上に平文の状態で個人情報が存在する機会を生じさせてしまう点は同じである。また、データ(a2)がNANDメモリ13xに平文で格納される場合、メモリシステム1xまたはNANDメモリ13xが持ち去られ、平文の状態の個人情報が盗み取られるおそれがある。
【0036】
一方、
図2(B)には、本実施形態のメモリシステム1を含む情報処理システムが示されている。
【0037】
図2(B)の情報処理システムにおいては、本実施形態のメモリシステム1を用いるだけで、プライバシー保護データマイニングのための匿名化が実現される。さらには、個人情報を安全に管理することが実現される。
【0038】
たとえば、ホスト2で動作するデータマイニングプログラムが、センシティブ属性の列のデータを要求するクエリを発行したとする。ホスト2は、このクエリ(SQL文)をコマンドとしてメモリシステム1に対して発行する。
【0039】
メモリシステム1は、ホスト2から受け取ったクエリがセンシティブ属性の列のデータを要求するクエリであった場合、このクエリに対し、エラーを返信する。ホスト2から受け取ったクエリがセンシティブ属性の列のデータと非センシティブ属性の列のデータを併せて要求するクエリであった場合には、メモリシステム1は、エラーを返信し、または、非センシティブ属性の列のデータのみを返信する。
【0040】
また、メモリシステム1は、クエリに応じた検索結果がk-匿名性を満たすか否かを判定し、k-匿名性を満たさない場合、このクエリに対し、エラーを返信する。
【0041】
つまり、
図2(B)の情報処理システムにおいては、ホスト2は、匿名化を何ら考慮することなく、クエリをメモリシステム1に送信すればよい。すなわち、本実施形態のメモリシステム1を使用するだけで、個人のプライバシーを守りながらデータ分析を行うプライバシー保護データマイニング機能を実現することができる。かつ、CPU21の負荷を軽減することができる。
【0042】
また、ホスト2へは、センシティブ属性の列のデータを含まず、かつ、k-匿名性を満たしている検索結果(Result)が返信される(b1)。従って、ホスト2内に個人情報(センシティブ属性)が存在する機会は生じない。つまり、ホスト2において個人情報が漏洩する危険性は排除される。また、CPU21によって様々なプログラムが実行され得るホスト2内のメモリとは異なり、メモリシステム1のDRAM12は、コントローラ11の制御の下、不正なアクセスを排除できるので、当該DRAM12からの個人情報(b2)の漏洩も防止できる。また、暗号化が施されたデータがNANDメモリ13に格納されるため(b3)、メモリシステム1またはNANDメモリ13が持ち去られたとしても、平文の状態の個人情報が盗み取られることはない。
【0043】
図3は、本実施形態のメモリシステム1がホスト2から受信し得る、関係データベース(表)を定義するためのコマンドの一例を示す図である。
【0044】
図3においては、関係データベース(表)を定義するためのコマンドを、「CREATE」として表記している。CREATEコマンドは、CREATEコマンド用のコマンドIDと、表の名称(表名)と、k-匿名化情報と、1以上の列情報とを含む。
【0045】
コマンドIDは、コマンドを一意に示す識別情報である。
【0046】
表の名称は、複数の表の中から目的の表を指定するための情報である。表の名称は、たとえばデータの挿入時(INSERT)や検索時(SELECT)に使用される。INSERTコマンドとSELECTコマンドとの一例については後述する(
図4、
図5)。
【0047】
k-匿名化情報は、kの設定値である。たとえばk-匿名化情報に「2」が設定された場合、2人以下の個人が区別されないように匿名化のための処理が実行される。
【0048】
列情報は、列の名称、属性、一般化要否の各情報を含む。列の名称は、複数の列の中から目的の列を指定するための情報である。列の名称は、たとえばデータの検索時(SELECT)に使用される。属性は、その列が識別子、準識別子、センシティブ属性のいずれであるのかを示す情報である。一般化要否は、データに対して一般化を行うか否かを示す情報である。一般化を行う場合、たとえば、複数の一般化規則の中から適用すべき一般化規則を示す情報が付加される。一般化規則の例としては、(a)年齢の1桁目を0に置き換えて、10代、20代とする、(b)住所の市区町村以下を削除して、都道府県のみとする、などが挙げられる。
【0049】
ホスト2は、このCREATEコマンドを、本実施形態のメモリシステム1に対して発行することによって、様々な関係データベースをメモリシステム1に構築することができる。
【0050】
メモリシステム1は、CREATEコマンドを受信すると、指定された1以上の列情報に対応する1以上の列を有する、指定された名称の表を作成し、NANDメモリ13に格納する。また、メモリシステム1は、この表からのデータの取得に関して、指定されたk-匿名化情報で示されるkの値以下の個人が区別されることを禁止する。
【0051】
ホスト2は、関係データベースにデータを挿入するためのコマンド(INSERT)を発行することによって、構築した関係データベースにデータを蓄積していくことができる。この時、ホスト2からメモリシステム1へ平文の個人情報が送信されるが、既存の暗号通信技術を利用することで、個人情報の漏洩を防止することができる。
【0052】
図4は、INSERTコマンドの一例を示す図である。INSERTコマンドは、INSERTコマンド用のコマンドIDと、表の名称(表名)と、1以上の値とを含む。
【0053】
コマンドIDは、コマンドを一意に示す識別情報である。
【0054】
表の名称は、複数の表の中から目的の表を指定するための情報である。INSERTコマンドのSQL文において、表の名称は、たとえば「INTO 表の名称」と指定される。
【0055】
値は、表中の列に格納するデータである。INSERTコマンドのSQL文において、値は、たとえば「VALUES(値(1)、…、値(N))」と指定される。
【0056】
たとえば「INSERT INTO T1 VALUES (1,’abc’,10)」というINSERTコマンドを受信した場合、メモリシステム1は、3つの列を含むT1という名前の表の中に、1つ目の列に「1」、2つ目の列に「abc」、3つ目の列に「10」が格納される行を挿入する。データの書き込み時に一般化の処理を実行する場合、メモリシステム1は、INSERTコマンドの受信時、一般化の実行が指定された列へ書き込む値を、予め指定された一般化規則に基づいて加工する。
【0057】
図5は、SELECTコマンドの一例を示す図である。SELECTコマンドは、SELECTコマンド用のコマンドIDと、表の名称(表名)と、1以上の列の名称(列名)と、1以上の条件とを含む。
【0058】
コマンドIDは、コマンドを一意に示す識別情報である。
【0059】
表の名称は、複数の表の中から目的の表を指定するための情報である。SELECTコマンドのSQL文において、表の名称は、たとえば「FROM 表の名称」と指定される。
【0060】
列の名称は、表中の複数の列の中からデータ取得対象の列を指定するための情報である。SELECTコマンドのSQL文において、列の名称は、たとえば「SELECT 列の名称(1)、…、列の名称(M)」と指定される。データ取得対象の列を指定することに代えて、条件に合致する行の数を返却することを指定することもできる。この場合、たとえば「SELECT Count(*)WHERE 条件(1)、…、条件(M)」と指定される。
【0061】
条件は、表中の複数の行の中から目的の行を検索するための情報である。条件は、検査対象の列の名称と、比較値とを含む。検査対象の列の名称と、データ取得対象の列の名称とは、互いに異なっていてもよい。SELECTコマンドのSQL文において、条件は、たとえば「WHERE 条件(1)、…、条件(M)」と指定される。メモリシステム1は、条件に合致する行の指定された列のデータを読み出す。なお、条件が指定されない場合は、メモリシステム1は、指定された列の名称に対応する列の、すべての行のデータを読み出してもよい。
【0062】
データの読み出し時に一般化の処理を実行する場合、メモリシステム1は、SELECTコマンドの受信時、一般化の実行が指定された列から読み出された値を、予め指定された一般化規則に基づいて加工する。
【0063】
図6は、本実施形態のメモリシステム1におけるクエリ(SELECTコマンド)に対する応答許可条件の一覧を示す図である。
【0064】
図6に示すように、本実施形態のメモリシステム1は、条件1、条件2の2つの応答許可条件をもつ。
条件1:秘密列(センシティブ属性の列)のデータが要求されていない。
条件2:検索結果がk-匿名性を満たす。
【0065】
上記2つの応答許可条件の一方または両方を満たさない場合、本実施形態のメモリシステム1は、クエリに対し、たとえばエラーを返信する。または、メモリシステム1は、クエリに対し成功の応答をしたうえで、センシティブ属性の列のデータを送信しない(たとえば空データを送信する)。
【0066】
なお、条件1については、非センシティブ属性の列のデータも要求されている場合、本実施形態のメモリシステム1は、クエリに対し、非センシティブ属性の列のデータのみを返信してもよい。
【0067】
図7は、本実施形態のメモリシステム1のクエリ(SELECTコマンド)に対する応答例を示す図である。
図7においては、SELECTコマンドの引数のうち、表の名称は省略されている。
【0068】
ここでは、列201~列204からなる関係データベース(表)200が構築されている場合を想定する。列201(列の名称:AAA)は、識別子である。列202(列の名称:BBB)は、センシティブ属性である。列203(列の名称:CCC)と、列204(列の名称:DDD)とは、準識別子である。列204のデータに対しては、関係データベース200への書き込み時または関係データベース200からの読出し時において、予め指定された規則に基づく一般化が実行される。また、k-匿名化のkの値として、「2」が設定されていることを想定する。
【0069】
まず、ホスト2から、列201のデータと列202のデータとを要求するクエリ(c1)を受領した場合を想定する。このクエリは、センシティブ属性の列202のデータを要求しているので、メモリシステム1は、当該クエリに対し、エラーを返信する。なお、メモリシステム1は、非センシティブ属性の列201のデータのみ返信するようにしてもよい。
【0070】
次に、ホスト2から、列202のデータの値が15よりも大きい行の数を要求するクエリ(c2)を受領した場合を想定する。このクエリは、センシティブ属性の列202のデータを要求していない。また、このクエリの検索結果は、検索条件(BBB>15)に合致する行の数であり、準識別子の列203、列204のデータを含まない。検索条件(BBB>15)に合致する行は、2行目と4行目とである。メモリシステム1は、このクエリに対し、検索結果として「2」を返信する。
【0071】
次に、列202のデータの値が15よりも大きい行の、列203のデータを要求するクエリ(c3)を受領した場合を想定する。このクエリは、センシティブ属性の列202のデータを要求していない。一方、このクエリの検索結果は、準識別子の列203のデータを含む。検査条件(BBB>15)に合致する行は、2行目と4行目とである。2行目の列203のデータは「A」、4行目の列203のデータも「A」である。従って、検索結果に含まれる準識別子の列203のデータからは、k-1(2-1=1)以下の個人を区別することができない。よって、この検索結果は、k-匿名性を満たしている。メモリシステム1は、このクエリに対し、検索結果として、2行目の列203のデータである「A」と、4行目の列203のデータである「A」とを返信する。
【0072】
次に、列202のデータの値が12よりも小さい行の、列204のデータを要求するクエリ(c4)を受領した場合を想定する。このクエリは、センシティブ属性の列202のデータを要求していない。一方、このクエリの検索結果は、準識別子の列204のデータを含む。検査条件(BBB<12)に合致する行は、1行目のみである。つまり、k-1(2-1=1)以下の個人を区別することができてしまう。よって、この検索結果は、k-匿名性を満たしていない。メモリシステム1は、このクエリに対し、エラーを返信する。
【0073】
図8は、実施形態のメモリシステム1のクエリ受信時における処理手順の一例を示す図である。
【0074】
メモリシステム1は、受信したクエリを解析する(S101)。より具体的には、メモリシステム1のクエリ処理部111は、秘密列(センシティブ属性の列)のデータを要求するものか否かを調べる。クエリが秘密列のデータを要求している場合(S102:YES)、メモリシステム1は、このクエリに対し、エラーを返信し(S103)、当該クエリの処理を終了する。
【0075】
一方、クエリが秘密列のデータを要求していない場合(S102:NO)、メモリシステム1は、当該クエリに応じた検索を実行する(S104)。この際、NANDメモリ13上の関係データベースから、暗号化された状態で読み出されるデータの復号が、DRAM12上において行われる。メモリシステム1は、当該復号されたDRAM12上のデータを用いて、クエリに応じた検索を実行する。
【0076】
メモリシステム1は、検索結果を解析する(S105)。より具体的には、メモリシステム1のクエリ処理部111は、検索結果がk-匿名性を満たしているか否かを調べる。検索結果がk-匿名性を満たしていない場合(S106:NO)、メモリシステム1は、このクエリに対し、エラーを返信し(S103)、当該クエリの処理を終了する。
【0077】
一方、検索結果がk-匿名性を満たしている場合(S106:YES)、メモリシステム1は、当該クエリへの応答として、検索結果を返信する(S107)。
【0078】
このように、データベース言語を含むコマンドをホスト2から受信可能に構成される本実施形態のメモリシステム1においては、ホスト2にてクエリの処理を実行することが不要となるので、ホスト2のリソースの消費を軽減し、また、負荷を軽減することができる。クエリの処理の際、メモリシステム1は、k-匿名化の処理も実行するので、ホスト2の負荷をさらに軽減することができる。また、ホスト2でクエリの処理を実行することを不要とすることで、平文の個人情報がホスト2内に存在する機会を無くし、個人情報の漏洩を防止することができる。メモリシステム1にてk-匿名化の処理も実行することで、動的にk-匿名化を実行することも可能となる。
【0079】
さらに、メモリシステム1でデータの暗号化および復号を実行することで、ホスト2の負荷をさらに軽減することができる。
【0080】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0081】
1…メモリシステム、2…ホスト、3…インタフェース、11…コントローラ、12…DRAM、13…NANDメモリ、110…制御部、111…クエリ処理部、112…暗号化/復号部、120…ホストインタフェース部、130…DRAMインタフェース部、140…NANDインタフェース部、200…関係データベース。