説明

記憶装置、データ記憶方法、及びデータコントローラ

【課題】利用者の管理負担を軽減しつつセキュリティレベルを向上させることができる記憶装置を提供すること。
【解決手段】実施形態の記憶装置は、ホスト装置から送られてくるデータを記憶する不揮発性の記憶部を備えている。ホスト側暗号処理部は、第1の暗号鍵を用いて前記データを暗号化し第1のデータとして出力する。メディア側暗号処理部は、前記データが書き込まれる前記記憶部内の位置情報を用いて生成した第2の暗号鍵を用いて前記第1のデータをさらに暗号化し第2のデータとして前記記憶部に記憶させる。そして、前記第2のデータを読み出して前記記憶部内に書き戻す場合には、書き戻す位置の情報を用いて第3の暗号鍵を生成する。そして、前記第2の暗号鍵を用いて前記第2のデータを前記第1のデータに復号化し、当該第1のデータを前記第3の暗号鍵を用いて再暗号化し前記記憶部に記憶させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、記憶装置、データ記憶方法、及びデータコントローラに関する。
【背景技術】
【0002】
従来から、SSD(Solid State Drive)という記憶装置が提供されている。SSDは、半導体メモリであるフラッシュメモリを使用している。そして、近年、PC(Personal Computer)に内蔵される記憶装置として、HDDの代わりにSSDが使用される傾向が高まりつつある。
【0003】
このようなSSDでは、サーバのバックアップなどで長期保存されるデータを暗号化しておく場合がある。このような場合であっても、暗号化されたデータは、同一の値で同一の物理位置に配置されているので、装置が取り外され、故意に装置の不揮発領域が解析された場合には、データの物理位置が特定され、集中的に攻撃を受ける可能性があった。このため、定期的な暗号鍵の変更(再暗号化:Re-Encryption)処理が推奨されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−173853号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術を用いたSSDでは、再暗号化処理を行う際に利用者が暗号鍵を設定する必要があった。このため、装置側が任意のタイミングで再暗号化処理を行うことはできなかった。また、暗号鍵の設定管理のため、再暗号化処理の終了まで利用者が拘束されるという問題があった。
【0006】
また、再暗号化処理に数時間単位の時間を要する場合があり、その期間中は暗号鍵を常に設定しておく必要がある。そして、再暗号化処理の際には、暗号鍵で暗号化されたデータが復号されて平文に戻された後、再暗号化されるので、再暗号化処理中は、装置内に平文でデータを晒すリスクを負うことになるという問題があった。
【0007】
本発明は、上記に鑑みてなされたものであって、利用者の管理負担を軽減しつつセキュリティレベルを向上させることができる記憶装置、データ記憶方法、及びデータコントローラを提供することを目的とする。
【課題を解決するための手段】
【0008】
実施形態の記憶装置は、ホスト装置から送られてくるデータを記憶する不揮発性の記憶部と、ホスト側暗号処理部と、メディア側暗号処理部と、を備えている。前記ホスト側暗号処理部は、外部入力されるユーザ認証情報に基づいて前記記憶部から第1の暗号鍵を読み出すとともに、前記第1の暗号鍵を用いて前記データを暗号化し、暗号化した第1のデータを出力する。また、前記メディア側暗号処理部は、前記データが書き込まれる前記記憶部内の書き込み位置の情報を用いて第2の暗号鍵を生成するとともに、前記第2の暗号鍵を用いて前記第1のデータをさらに暗号化し、当該さらに暗号化した第2のデータを前記記憶部の第1の位置に記憶させる。そして、前記記憶部内から前記第2のデータを前記第1の位置から読み出して前記記憶部内の第2の位置に書き戻す場合には、前記メディア側暗号処理部が前記第2の暗号鍵を用いて前記第2のデータを前記第1のデータに復号化する。さらに、前記メディア側暗号処理部は、前記第2の位置の情報を用いて第3の暗号鍵を生成する。さらに、前記メディア側暗号処理部は、復号化した第1のデータを前記第3の暗号鍵を用いて再暗号化し、当該再暗号化した第3のデータを前記記憶部の第2の位置に記憶させる。
【図面の簡単な説明】
【0009】
【図1】図1は、第1の実施形態に係るSSD装置の構成を示すブロック図である。
【図2】図2は、再暗号化処理の処理手順を示す図である。
【図3】図3は、コンパクションを説明するための図である。
【図4】図4は、第2の実施形態に係るSSD装置の構成を示すブロック図である。
【図5】図5は、情報処理装置として用いられるPCのハードウェア構成を示す図である。
【発明を実施するための形態】
【0010】
以下に添付図面を参照して、実施形態に係る記憶装置、データ記憶方法、及びデータコントローラを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0011】
(第1の実施形態)
図1は、第1の実施形態に係るSSD装置の構成を示すブロック図である。SSD装置(記憶装置)1Aは、パーソナルコンピュータ(以下、PCという)やCPUコアなどのホストシステム(情報処理装置)2に接続されている。SSD装置1Aは、ホストシステム2の外部メモリとして機能する。
【0012】
本実施形態のSSD装置1Aは、利用者がログインの際に外部入力するパスワードを用いて取得されるユーザ暗号鍵を用いてデータを暗号化しておく。また、データを格納するブロックの位置に基づいて生成されるブロック暗号鍵を用いて、データをさらに暗号化しておく。そして、データの格納位置を変更する際(例えばコンパクション時)には、暗号化に用いたブロック暗号鍵を用いてデータを復号化し、新たなブロック暗号鍵を用いて、再暗号化処理を行う。これにより、SSD装置1Aは、ブロック暗号鍵で暗号化されたデータに対して再暗号化処理(暗号化処理のやり直し)を行う。
【0013】
SSD装置1Aは、ホストコントローラ3Aと、バッファメモリ6と、メディアコントローラ7Aと、ストレージメディア10と、を有している。ホストコントローラ3Aは、ホストシステム2とバッファメモリ6との間のデータ転送制御を行う。ホストコントローラ3Aは、ホストI/F4と、ホスト側暗号処理部5と、を備えている。
【0014】
ホストI/F4は、SSD装置1Aとホストシステム2との間のデータ通信を行う通信インタフェースである。ホスト側暗号処理部5は、ホストシステム2から送られてくるデータを、ユーザ暗号鍵14を用いて暗号化し、バッファメモリ6に送る。また、ホスト側暗号処理部5は、バッファメモリ6内のデータを、ユーザ暗号鍵14を用いて復号化し、ホストI/F4を介してホストシステム2に送る。
【0015】
バッファメモリ6は、ホストシステム2とストレージメディア10との間で、データ転送用キャッシュ及び作業領域用メモリなどとして機能する。バッファメモリ6の作業領域用メモリには、各種管理テーブル(後述の論物変換テーブルなど)が格納される。
【0016】
バッファメモリ6は、例えばDRAM(Dynamic Random Access Memory)などの揮発性半導体メモリである。なお、DRAMの代わりに、FeRAM(Ferroelectric RAM)、MRAM(Magnetoresistive RAM)、PRAM(Phase change RAM)などの不揮発性ランダムアクセスメモリを用いてもよい。
【0017】
メディアコントローラ7Aは、バッファメモリ6とストレージメディア10との間のデータ転送制御を行う。メディアコントローラ7Aは、メディア側暗号処理部8と、書き込み管理部9と、を備えている。
【0018】
メディア側暗号処理部8は、バッファメモリ6内のデータ(ユーザ暗号鍵14で暗号化されたデータ)を、ブロック暗号鍵15とブロック書き込み回数情報11を用いて暗号化し、暗号化(2重暗号化)したデータ(ユーザ暗号鍵14およびブロック暗号鍵15で暗号化されたデータ)をストレージメディア10に記憶させる。また、メディア側暗号処理部8は、ストレージメディア10内のデータをブロック暗号鍵15とブロック書き込み回数情報11を用いて復号化する。
【0019】
また、メディア側暗号処理部8は、ストレージメディア10内のデータを所定のタイミング(後述のコンパクション時やウェアレベリング時)で再暗号化し、再暗号化したデータ(ユーザ暗号鍵14およびブロック暗号鍵15で暗号化されたデータ)をストレージメディア10に記憶させる。再暗号化処理は、ストレージメディア10内に記憶されているデータをブロック暗号鍵15で復号化した後、再度、暗号化してストレージメディア10内に記憶させる処理(保存中のデータに対する暗号鍵の架け替え)である。再暗号化の際には、ブロック暗号鍵15が新たに生成されるので、再暗号化前のデータと、再暗号化後のデータとは、異なることとなる。
【0020】
書き込み管理部9は、ストレージメディア10へのデータの書き込み管理を行う。ホストシステム2からの要求により書き込みが行われるデータには、論理アドレス(Logical Block Address:LBA)が割り当てられる。ホストシステム2から送信される書き込みコマンドには、書き込みが要求されるデータと、当該データに割り当てられた論理アドレスとが含まれる。ストレージメディア10において、書き込みが要求されたデータが書き込まれるブロックは、書き込み管理部9が、データに割り当てられた論理アドレスとは無関係に決定する。書き込み管理部9は、後述の論物変換テーブルに基づいて、ストレージメディア10内におけるデータの読み書きを行う。
【0021】
ストレージメディア10は、半導体チップからなる不揮発性半導体メモリとしての記憶素子(半導体記憶装置)であり、例えばNAND型のフラッシュメモリを用いて構成されている。ストレージメディア10は、ページと呼ばれる単位で読み書きが可能であり、複数ページがまとまってブロックと呼ばれる消去単位の記憶領域を構成している。そして、ストレージメディア10は、複数のブロックで構成されている。
【0022】
ここで、ストレージメディア10への書き込み方式について説明する。NAND型のメモリでは、追記方式が採用される。この追記方式では、ブロック単位でデータの消去を行い、消去済みのブロックに対してページ単位で書き込みを行う。すなわち、NAND型の半導体メモリにおいては、消去済みのブロックのうち書き込みがまだ行われていないページに対して書き込みが可能であり、既に書き込みが行なわれたページに対する上書きは不可能である。
【0023】
このため、データの書き込み要求において指定された論理アドレスが再度指定されて新たなデータの書き込みがホストシステム2から要求されると、SSD装置1Aは、消去済みのブロックのうちの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。
【0024】
上述の追記方式において、書き込みを続けることにより、無効にされたページが増えてくると、ストレージメディア10において書き込みを実現可能な容量が少なくなってくる。そして、書き込みが可能な新規の消去済みのブロック、即ち、消去後に書き込みがまだ行なわれていないブロック(フリーブロックという)が少なくなり、フリーブロックの確保が不可能になった時点で書き込み不能となってしまう。これを防ぐために、メディアコントローラ7Aは、適当なタイミングでガベージコレクションを行なう。NAND型の半導体メモリにおいて行なうガベージコレクションは、特にコンパクションという。
【0025】
コンパクションは、追加書き込みによって無効となったデータ領域を再利用するため、有効データを集めて空き領域(フリーブロック)に再配置した後、有効データが無くなった領域(ブロック)を消去して空き領域(フリーブロック)とする処理である。換言すると、コンパクションは、有効なデータを読み出して、新しいブロックに書き直す処理である。
【0026】
また、SSD装置1Aは、ストレージメディア10のそれぞれの記憶エリア(領域)ごとの書き換え回数を平準化(平滑化)するウェアレベリングを行なっている。SSD装置1Aでは、書き込みデータに対し、コンパクションやウェアレベリングと呼ばれる処理が、装置内のバックグラウンド処理として実行される。
【0027】
ストレージメディア10は、ブロック書き込み回数情報11と、ユーザデータ12と、書き込み位置管理情報13と、ユーザ暗号鍵14と、ブロック暗号鍵15と、を格納している。
【0028】
ブロック書き込み回数情報11は、ブロック単位ごとのデータ書き込み回数を示す情報である。ユーザデータ12は、ホストシステム2から書き込まれるデータである。
【0029】
書き込み位置管理情報13は、例えば論物変換テーブル(アドレス変換テーブル)などである。論物変換テーブルは、ホストシステム2で指定された論理アドレス(LBA)とストレージメディア10内のデータの格納位置を指定する物理アドレスとの対応関係を示すものである。論物変換テーブルは、SSD装置1Aおよびホストシステム2を用いて構成されるメモリシステムの起動時等の所定タイミングで、バッファメモリ6に展開される。メディアコントローラ7Aは、データ書き込みやデータ消去等に伴い論理アドレスと物理アドレスとの対応関係が更新された場合、バッファメモリ6に展開された論物変換テーブルを更新する。
【0030】
ユーザ暗号鍵14は、ホストシステム2から送られてくるデータの暗号化に用いられる暗号鍵である。ユーザ暗号鍵14は、パスワードなどのユーザ認証情報に基づいて、ストレージメディア10内からホスト側暗号処理部5に読み出される。
【0031】
ブロック暗号鍵15は、ユーザ暗号鍵14で暗号化されたデータをさらに暗号化する際や再暗号化の際に用いられる暗号鍵である。ブロック暗号鍵15は、ユーザデータ12が書き込まれるストレージメディア10内の位置(ブロックの位置)を用いて生成される。
【0032】
SSD装置1Aでは、メディアコントローラ内の制御ファームウェアがコンパクションなどと同時にメディア側暗号処理部8による再暗号化を制御する。また、メディアコントローラ内の制御ファームウェアが、ブロック書き込み回数情報11を用いたメディア側暗号処理部8によるデータの暗号化を制御する。
【0033】
ホストシステム2から送られてくるデータは、ホストI/F4を介してホスト側暗号処理部5に送られる。このとき、ホストシステム2からホストコントローラ3Aへは、パスワードなどのユーザ認証情報が入力される。このユーザ認証情報に基づいて、ホストコントローラ3Aは、ストレージメディア10からユーザ暗号鍵14を読み出して、ユーザ暗号鍵14をホスト側暗号処理部5に設定する。
【0034】
ユーザ暗号鍵14がホスト側暗号処理部5に設定されている状態(利用者のログオン時)では、ストレージメディア10内のユーザデータ12を正しく読み書きすることが可能となる。ホスト側暗号処理部5は、ユーザ暗号鍵14を用いて、ホストシステム2から送られてくるデータを暗号化する。そして、ホスト側暗号処理部5は、暗号化したデータ(以下、ホスト側暗号化データという)をバッファメモリ6に記憶させる。
【0035】
メディア側暗号処理部8は、バッファメモリ6のホスト側暗号化データを、ブロック暗号鍵15とブロック書き込み回数情報11を用いてさらに暗号化し、暗号化したデータ(以下、メディア側暗号化データという)をストレージメディア10に記憶させる。
【0036】
この後、必要に応じて、コンパクションやウェアレベリングが行われる。コンパクションやウェアレベリングは、例えば、ユーザ暗号鍵14がホスト側暗号処理部5に設定されていない状態で(利用者のログオフ時に)行われる。本実施形態では、コンパクションやウェアレベリングを行う際に、メディア側暗号処理部8がメディア側暗号化データの再暗号化を行う。
【0037】
図2は、再暗号化処理の処理手順を示す図である。SSD装置1Aによるデータの再暗号化処理は、例えば、コンパクションを行う場合やウェアレベリングを行う場合などに行われる。ここでは、SSD装置1Aがコンパクションを行う際の再暗号化処理について説明する。また、ここではユーザデータ12がコンパクション対象のデータである場合について説明する。
【0038】
メディア側暗号化データとしてのユーザデータ12は、ストレージメディア10内に格納されている。コンパクションが開始されると(ステップS5)、ユーザデータ12のうちコンパクション対象となるデータ(新たなブロックに移動させられるデータ)が、ストレージメディア10からバッファメモリ6に読み出される。具体的には、コンパクション対象となるデータが、書き込み管理部9を経由してメディア側暗号処理部8に送られる。これにより、メディア側暗号処理部8は、ブロック暗号鍵15とブロック書き込み回数情報11を用いて、コンパクション対象となるデータを復号化し(ステップS10)、復号化したデータをバッファメモリ6に送る。バッファメモリ6に展開されるデータは、ホスト側暗号化データ(ユーザ暗号鍵14で暗号化されたデータ)である。
【0039】
書き込み管理部9は、コンパクション対象となるデータを新規に書き込むフリーブロックの書き込み回数を1だけ加算し、これにより、ブロック書き込み回数情報11を更新する(ステップS20)。
【0040】
そして、バッファメモリ6上で有効ブロックを集約し、フリーブロックへの書き込みデータを作成する。これにより、バッファメモリ6上でコンパクションが実行される(ステップS30)。
【0041】
ここで、コンパクションの処理手順について説明する。図3は、コンパクションの処理手順を説明するための図である。図3では、SSD装置1Aにおける書き込みとコンパクションの遷移ブロック図を示している。
【0042】
ここでは、ブロックb1〜b4が存在し、各ブロックb1〜b4がページ1〜3を有している場合のコンパクションについて説明する。図3の(a)は、最初の書き込み状態を示している。最初の書き込み状態は、例えば、ブロックb1のページ1〜3にデータA1〜C1が書き込まれ、ブロックb2のページ1〜3にデータD1〜F1が書き込まれ、ブブロックb3,b4がフリーブロックである。
【0043】
データC1、データD1、データF1に対し、更新書き込みがホストシステム2から指示された場合、ブロックb1の旧データに対して物理的な上書きではなく、図3の(b)に示すようにフリーブロックであるブロックb3に新たなデータをページ単位の追加書きで書き込まれる。
【0044】
具体的には、ブロックb2のページ3に書き込まれていたデータF1が、再暗号化されてブロックb3のページ1にデータF2として書き込まれる。つぎに、ブロックb2のページ1に書き込まれていたデータD1が、再暗号化されてブロックb3のページ2にデータD2として書き込まれる。さらに、ブロックb1のページ3に書き込まれていたデータC1が、再暗号化されてブロックb3のページ3にデータC2として書き込まれる。
【0045】
そして、ブロックb1の旧書き込み箇所のデータが無効にされる。ここでは、ブロックb2のページ3に書き込まれていたデータF1、ブロックb2のページ1に書き込まれていたデータD1、ブロックb1のページ3に書き込まれていたデータC1が、それぞれ無効化される。
【0046】
図3の(b)におけるブロックb1,b2のように、無効データが多くなると、ブロックの利用効率が落ちる。このため、無効データの多くなったブロック内の有効データを、定期的にフリーブロックに移動・集約する。そして、移動元のブロック内に格納されていたデータを消去してフリーブロックへと変更させる(コンパクション)。
【0047】
具体的には、有効データを、書き込み管理部9を経由してバッファメモリ6に読み出す。ここでは、図3の(c)に示すように、ブロックb1のページ1に書き込まれているデータA1と、ブロックb1のページ2に書き込まれているデータB1と、ブロックb2のページ2に書き込まれているデータE1と、がバッファメモリ6に読み出される。そして、データB1,E1,A2が再暗号化されてブロックb4のページ1〜3にデータB2、データE2、データA2として書き込まれる。
【0048】
このとき、書き込み管理部9からブロックb4へのデータ書き込みと同時にブロックb1、b2内のデータを消去してフリーブロックへと変更する。これにより、利用領域の最適化(コンパクション)が実行される。
【0049】
なお、コンパクションは、ブロックの書き込み頻度を平滑化させるため、無効データの少ないブロックに対しても定期的に実行される。さらに、ブロックの書き込み頻度を平滑化させるため、ウェアレベリングとして、使用中のブロックとフリーブロックの入れ替えも定期的に実行される。
【0050】
SSD装置1Aでは、バッファメモリ6上でコンパクションが実行されてフリーブロックへ書き込むデータが作成されると、メディア側暗号処理部8は、ホスト側暗号化データの書き込まれる物理位置(フリーブロックの物理位置)と、乱数と、ブロック書き込み回数情報11と、を用いて、物理ブロック単位毎にブロック暗号鍵15を生成する。メディア側暗号処理部8は、更新されたブロック暗号鍵15を用いて、フリーブロックへ書き込むデータを再暗号化する(ステップS40)。メディア側暗号処理部8で生成されたブロック暗号鍵15は、ストレージメディア10内に格納しておく。
【0051】
書き込みブロックは、一度データが書き込まれると消去しない限り、再度書き込みを行うことはできない。そこで、本実施形態では、データの暗号化にブロック書き込み回数情報11を用いる。例えば、ブロック書き込み回数情報11を、ブロック暗号鍵15を生成する際のSEEDとして用いる。これにより、ブロックへの書き込み回数が、生成されるブロック暗号鍵15に影響を与える。このため、もし同一データが再度同じブロックに書き込まれることがあったとしても、ブロック暗号鍵15が異なるので、メディア側暗号化データが、以前のメディア側暗号化データと同じデータパターンにはならない。
【0052】
なお、ブロック暗号鍵15は、ブロック書き込み回数情報11を用いることなく、ホスト側暗号化データの書き込まれる物理位置と、乱数と、を用いて生成してもよい。この場合であっても、暗号鍵は、ホスト側暗号化データが書き込まれる物理位置に依存する。このため、ホスト側暗号化データが異なるブロックへ書込まれる場合には、書き込む位置を変更するだけでデータパターンが異なることとなり、暗号鍵15の再生が不要となる。
【0053】
再暗号化されたデータ(暗号化データ)は、ホスト側暗号化データとして、書き込み管理部9がストレージメディア10に書き戻す(ステップS50)。なお、実際の書き込みはページ単位で行われるので、ページ鍵はブロック暗号鍵から派生、またはブロック内のオフセットから生成される。
【0054】
書き込み管理部9は、コンパクション対象の全データを再暗号化してコンパクションしたか否かを判断する(ステップS60)。コンパクションが終了していない場合(コンパクションされていないデータが残っている場合)(ステップS60、No)、ステップS10〜S60の処理が繰り返される。一方、コンパクションが終了すると(ステップS60、Yes)、書き込み管理部9は、ステップS30の処理によって無効になったブロックを消去してフリーブロックにする。なお、ステップS30の処理によって無効になったブロックの消去は、無効になった時点でフリーブロックにしてもよい。
【0055】
ホスト側暗号化データが再暗号化されることにより、ホスト側暗号化データは、ストレージメディア10内で新たな物理位置に格納される。このため、書き込み管理部9は、書き込み位置管理情報13を更新する。このとき、書き込み位置管理情報13は、ユーザデータ12と同様にメディア側暗号処理部8にて、ブロック暗号鍵15およびブロック書き込み回数情報11を用いて再暗号化しておく(ステップS70)。そして、書き込み管理部9は、再暗号化した書き込み位置管理情報13をストレージメディア10に書き込む(ステップS80)。
【0056】
このように、本実施形態では、ホスト側暗号処理部5とは別にメディア側暗号処理部8が設けられている。そして、メディア側暗号処理部8に物理ブロック単位の鍵と、ブロック書き込み回数情報11と、を用いてデータの暗号化を行っている。
【0057】
これにより、再暗号化の際にユーザ暗号鍵が不要となるので、ユーザ暗号鍵14がホスト側暗号処理部5に設定されていない状態で再暗号化を行なうことが可能となる。また、メディア側暗号化データに対して再暗号化を行うので、平文が展開されることはない。したがって、平文データを晒すことなくLBA単位で暗号化された状態を維持したまま、再暗号化処理を行なうことが可能となる。また、SSD装置1A内の情報のみで再暗号化を行うので、コンパクションと同時に再暗号化を実施することが可能となる。
【0058】
また、書き込み位置管理情報13を、ブロック暗号鍵15およびブロック書き込み回数情報11を用いて再暗号化しているので、書き込み位置管理情報13の解析を防止できる。したがって、ストレージメディア10内に格納されているデータの物理位置が特定されることを防止できる。
【0059】
なお、コンパクション対象のデータは、ユーザデータ12に限らず、何れのデータ(例えば、ブロック書き込み回数情報11、書き込み位置管理情報13、ユーザ暗号鍵14、ブロック暗号鍵15)であってもよい。また、本実施の形態では、コンパクションやウェアレベリングの際に再暗号化を行う場合について説明したが、定期的な暗号鍵変更の際に、再暗号化してもよい。
【0060】
また、本実施の形態では、SSD装置1Aによる再暗号化を例に挙げているが、他のストレージ装置であっても、データの書き込み物理位置を意図的に変更させることでSSD装置1Aと同様の効果を得ることは可能である。
【0061】
このように第1の実施形態によれば、ユーザ暗号鍵14とブロック暗号鍵15を用いてデータを暗号化するとともに、ブロック暗号鍵15を用いてデータを再暗号化するので、利用者の管理負担を軽減しつつセキュリティレベルを向上させることが可能となる。
【0062】
また、コンパクションやウェアレベリングと再暗号化の両立が可能となるので、装置解析によって長期保存された重要データを危険にさらすことがなくなり、セキュリティレベルを向上させることが可能となる。
【0063】
また、書き込み位置管理情報13などの重要情報を暗号化することが可能となるので、物理位置を特定されることによるデータ破壊および解析に対し、セキュリティレベルを向上させることが可能となる。
【0064】
(第2の実施形態)
つぎに、図4および図5を用いてこの発明の第2の実施形態について説明する。第2の実施形態では、第1の実施形態におけるホスト側暗号処理部5とメディア側暗号処理部8とを1つの構成要素で構成する。
【0065】
図4は、第2の実施形態に係るSSD装置の構成を示すブロック図である。図4の各構成要素のうち図1に示す第1の実施形態のSSD装置1Aと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【0066】
SSD装置1Bは、SSD装置1Aと同様の機能を有した装置であり、ホストコントローラ3Bと、バッファメモリ6と、メディアコントローラ7Bと、ストレージメディア10と、暗号処理部20と、を有している。
【0067】
ホストコントローラ3Bは、ホストシステム2と暗号処理部20とに接続されている。また、暗号処理部20は、ホストコントローラ3B、バッファメモリ6、メディアコントローラ7B、ストレージメディア10に接続されている。また、バッファメモリ6は、暗号処理部20、メディアコントローラ7Bに接続されている。そして、ストレージメディア10が、暗号処理部20、メディアコントローラ7Bに接続されている。
【0068】
ホストコントローラ3Bは、ホストI/F4を備え、メディアコントローラ7Bは、書き込み管理部9を備えている。暗号処理部20は、ホスト側暗号処理部5の機能とメディア側暗号処理部8の機能とを合わせた機能を備えている。
【0069】
ホストシステム2から送られてくるデータは、ホストI/F4を介して暗号処理部20に送られる。このとき、ホストシステム2からホストコントローラ3Bへは、パスワードなどのユーザ認証情報が入力される。これにより、ホストコントローラ3Bは、ストレージメディア10からユーザ暗号鍵14を読み出して、読み出したユーザ暗号鍵14を暗号処理部20に設定する。
【0070】
ユーザ暗号鍵14が暗号処理部20に設定されている状態(利用者のログオン時)では、ストレージメディア10内のユーザデータ12を正しく読み書きすることが可能となる。例えば、暗号処理部20は、ユーザ暗号鍵14を用いて、ホストシステム2から送られてくるデータを暗号化する。そして、暗号処理部20は、暗号化したデータを、ホスト側暗号化データとしてバッファメモリ6に記憶させる。
【0071】
暗号処理部20は、バッファメモリ6のホスト側暗号化データを、ブロック暗号鍵15とブロック書き込み回数情報11を用いてさらに暗号化し、暗号化したデータを、ユーザデータ12としてストレージメディア10に記憶させる。
【0072】
この後、必要に応じて、コンパクションやウェアレベリングが行われる。ユーザデータ12をコンパクションするタイミングになると、ユーザデータ12のうちコンパクション対象となるデータが、ストレージメディア10からバッファメモリ6に読み出される。これにより、暗号処理部20は、ブロック暗号鍵15とブロック書き込み回数情報11を用いて、コンパクション対象となるデータを復号化し、復号化したデータをバッファメモリ6に送る。バッファメモリ6に展開されるデータは、ホスト側暗号化データ(ユーザ暗号鍵14で暗号化されたデータ)である。そして、暗号処理部20は、ホスト側暗号化データの書き込まれる物理位置(フリーブロックの物理位置)と、乱数と、ブロック書き込み回数情報11と、を用いて、物理ブロック単位毎にブロック暗号鍵15を作成する。暗号処理部20は、更新されたブロック暗号鍵15を用いて、フリーブロックへ書き込むデータを再暗号化する。
【0073】
そして、再暗号化されたデータは、ホスト側暗号化データとして、書き込み管理部9がストレージメディア10に書き戻す。コンパクションが終了すると、書き込み管理部9は、コンパクションによって無効になったブロックを消去してフリーブロックにする。
【0074】
SSD装置1A,1Bは、情報処理装置の記憶手段として利用される。図5は、情報処理装置として用いられるPCのハードウェア構成を示す図である。ここでは、SSD装置1Bを備えた情報処理装置500について説明する。
【0075】
図5に示すように、情報処理装置500は、CPU501と、RAM502と、ROM503と、電源ユニット504と、入力インタフェース(I/F)505と、SSD装置1Bと、を備えている。
【0076】
本実施の形態の情報処理装置500では、電源ユニット504により電源が投入された場合に、ROM503に格納されていたBIOS(Basic Input/Output System)がCPU501により読み出され、RAM502を作業領域として動作する。
【0077】
以上説明したとおり、第1および第2の実施形態によれば、利用者の管理負担を軽減しつつセキュリティレベルを向上させることが可能となる。
【0078】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0079】
1A,1B…SSD装置、2…ホストシステム、3A,3B…ホストコントローラ、5…ホスト側暗号処理部、7A,7B…メディアコントローラ、8…メディア側暗号処理部、10…ストレージメディア、11…ブロック書き込み回数情報、12…ユーザデータ、13…書き込み位置管理情報、14…ユーザ暗号鍵、15…ブロック暗号鍵、20…暗号処理部、500…情報処理装置、b1〜b4…ブロック

【特許請求の範囲】
【請求項1】
ホスト装置から送られてくるデータを記憶する不揮発性の記憶部と、
外部入力されるユーザ認証情報に基づいて前記記憶部から第1の暗号鍵を読み出すとともに、前記第1の暗号鍵を用いて前記データを暗号化し、暗号化した第1のデータを出力するホスト側暗号処理部と、
前記データが書き込まれる前記記憶部内の書き込み位置の情報を用いて第2の暗号鍵を生成するとともに、前記第2の暗号鍵を用いて前記第1のデータをさらに暗号化し、当該さらに暗号化した第2のデータを前記記憶部の第1の位置に記憶させるメディア側暗号処理部と、
を備え、
前記記憶部内から前記第2のデータを前記第1の位置から読み出して前記記憶部内の第2の位置に書き戻す場合には、前記メディア側暗号処理部が前記第2の暗号鍵を用いて前記第2のデータを前記第1のデータに復号化するとともに、前記第2の位置の情報を用いて第3の暗号鍵を生成し、復号化した第1のデータを前記第3の暗号鍵を用いて再暗号化し、当該再暗号化した第3のデータを前記記憶部の第2の位置に記憶させる記憶装置。
【請求項2】
前記メディア側暗号処理部は、前記第2の暗号鍵を、前記記憶部内における前記第2の位置を含むデータ消去単位毎のデータ書き換え回数をさらに用いて生成する請求項1に記載の記憶装置。
【請求項3】
前記記憶部から有効なデータを読み出して新しいブロックに書き直す処理であるコンパクションの際に、前記メディア側暗号処理部が、前記再暗号化を行い、当該再暗号化した第3のデータを前記記憶部の第2の位置に記憶させる請求項1または2に記載の記憶装置。
【請求項4】
前記記憶部内のデータ書き換え回数を平準化するウェアレベリングの際に、前記メディア側暗号処理部が、前記再暗号化を行い、当該再暗号化した第3のデータを前記記憶部の第2の位置に記憶させる請求項1または2に記載の記憶装置。
【請求項5】
前記記憶部は、前記ホスト装置で指定された論理アドレスと前記記憶部内で前記データが書き込まれる位置を指定する物理アドレスとの対応関係を示す書き込み位置情報をさらに記憶し、
前記メディア側暗号処理部は、前記第2の暗号鍵を用いて前記書き込み位置情報を暗号化し、暗号化した前記書き込み位置情報を前記記憶部に記憶させる請求項1乃至4のいずれか1つに記載の記憶装置。
【請求項6】
前記記憶部は、NAND型のフラッシュメモリを用いて構成されている請求項1乃至5のいずれか1つに記載の記憶装置。
【請求項7】
ホスト装置から送られてくるデータを記憶する不揮発性の記憶部内から、外部入力されるユーザ認証情報に基づいて第1の暗号鍵を読み出すとともに、前記第1の暗号鍵を用いて前記データを暗号化し、暗号化した第1のデータを出力する第1の暗号化ステップと、
前記データが書き込まれる前記記憶部内の書き込み位置の情報を用いて第2の暗号鍵を生成するとともに、前記第2の暗号鍵を用いて前記第1のデータをさらに暗号化し、当該さらに暗号化した第2のデータを前記記憶部の第1の位置に記憶させる第2の暗号化ステップと、
を含み、
前記記憶部内から前記第2のデータを前記第1の位置から読み出して前記記憶部内の第2の位置に書き戻す場合には、前記第2の暗号鍵を用いて前記第2のデータを前記第1のデータに復号化するとともに、前記第2の位置の情報を用いて第3の暗号鍵を生成し、復号化した第1のデータを前記第3の暗号鍵を用いて再暗号化し、当該再暗号化した第3のデータを前記記憶部の第2の位置に記憶させるデータ記憶方法。
【請求項8】
ホスト装置から送られてくるデータを記憶する不揮発性の記憶部内から、外部入力されるユーザ認証情報に基づいて前記記憶部から第1の暗号鍵を読み出すとともに、前記第1の暗号鍵を用いて前記データを暗号化し、暗号化した第1のデータを出力するホスト側暗号処理部と、
前記データが書き込まれる前記記憶部内の書き込み位置の情報を用いて第2の暗号鍵を生成するとともに、前記第2の暗号鍵を用いて前記第1のデータをさらに暗号化し、当該さらに暗号化した第2のデータを前記記憶部の第1の位置に記憶させるメディア側暗号処理部と、
を備え、
前記記憶部内から前記第2のデータを前記第1の位置から読み出して前記記憶部内の第2の位置に書き戻す場合には、前記メディア側暗号処理部が前記第2の暗号鍵を用いて前記第2のデータを前記第1のデータに復号化するとともに、前記第2の位置の情報を用いて第3の暗号鍵を生成し、復号化した第1のデータを前記第3の暗号鍵を用いて再暗号化し、当該再暗号化した第3のデータを前記記憶部の第2の位置に記憶させるデータコントローラ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate