(57)【要約】【課題】利用者の管理負担を軽減しつつセキュリティレベルを向上させることができる記憶装置を提供すること。【解決手段】実施形態の記憶装置は、ホスト装置から送られてくるデータを記憶する不揮発性の記憶部を備えている。ホスト側暗号処理部は、第１の暗号鍵を用いて前記データを暗号化し第１のデータとして出力する。メディア側暗号処理部は、前記データが書き込まれる前記記憶部内の位置情報を用いて生成した第２の暗号鍵を用いて前記第１のデータをさらに暗号化し第２のデータとして前記記憶部に記憶させる。そして、前記第２のデータを読み出して前記記憶部内に書き戻す場合には、書き戻す位置の情報を用いて第３の暗号鍵を生成する。そして、前記第２の暗号鍵を用いて前記第２のデータを前記第１のデータに復号化し、当該第１のデータを前記第３の暗号鍵を用いて再暗号化し前記記憶部に記憶させる。【選択図】図１
2013062616.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置から送られてくるデータを記憶する不揮発性の記憶部と、
外部入力されるユーザ認証情報に基づいて前記記憶部から第１の暗号鍵を読み出すとともに、前記第１の暗号鍵を用いて前記データを暗号化し、暗号化した第１のデータを出力するホスト側暗号処理部と、
前記データが書き込まれる前記記憶部内の書き込み位置の情報を用いて第２の暗号鍵を生成するとともに、前記第２の暗号鍵を用いて前記第１のデータをさらに暗号化し、当該さらに暗号化した第２のデータを前記記憶部の第１の位置に記憶させるメディア側暗号処理部と、
を備え、
前記記憶部内から前記第２のデータを前記第１の位置から読み出して前記記憶部内の第２の位置に書き戻す場合には、前記メディア側暗号処理部が前記第２の暗号鍵を用いて前記第２のデータを前記第１のデータに復号化するとともに、前記第２の位置の情報を用いて第３の暗号鍵を生成し、復号化した第１のデータを前記第３の暗号鍵を用いて再暗号化し、当該再暗号化した第３のデータを前記記憶部の第２の位置に記憶させる記憶装置。
【請求項２】
前記メディア側暗号処理部は、前記第２の暗号鍵を、前記記憶部内における前記第２の位置を含むデータ消去単位毎のデータ書き換え回数をさらに用いて生成する請求項１に記載の記憶装置。
【請求項３】
前記記憶部から有効なデータを読み出して新しいブロックに書き直す処理であるコンパクションの際に、前記メディア側暗号処理部が、前記再暗号化を行い、当該再暗号化した第３のデータを前記記憶部の第２の位置に記憶させる請求項１または２に記載の記憶装置。
【請求項４】
前記記憶部内のデータ書き換え回数を平準化するウェアレベリングの際に、前記メディア側暗号処理部が、前記再暗号化を行い、当該再暗号化した第３のデータを前記記憶部の第２の位置に記憶させる請求項１または２に記載の記憶装置。
【請求項５】
前記記憶部は、前記ホスト装置で指定された論理アドレスと前記記憶部内で前記データが書き込まれる位置を指定する物理アドレスとの対応関係を示す書き込み位置情報をさらに記憶し、
前記メディア側暗号処理部は、前記第２の暗号鍵を用いて前記書き込み位置情報を暗号化し、暗号化した前記書き込み位置情報を前記記憶部に記憶させる請求項１乃至４のいずれか１つに記載の記憶装置。
【請求項６】
前記記憶部は、ＮＡＮＤ型のフラッシュメモリを用いて構成されている請求項１乃至５のいずれか１つに記載の記憶装置。
【請求項７】
ホスト装置から送られてくるデータを記憶する不揮発性の記憶部内から、外部入力されるユーザ認証情報に基づいて第１の暗号鍵を読み出すとともに、前記第１の暗号鍵を用いて前記データを暗号化し、暗号化した第１のデータを出力する第１の暗号化ステップと、
前記データが書き込まれる前記記憶部内の書き込み位置の情報を用いて第２の暗号鍵を生成するとともに、前記第２の暗号鍵を用いて前記第１のデータをさらに暗号化し、当該さらに暗号化した第２のデータを前記記憶部の第１の位置に記憶させる第２の暗号化ステップと、
を含み、
前記記憶部内から前記第２のデータを前記第１の位置から読み出して前記記憶部内の第２の位置に書き戻す場合には、前記第２の暗号鍵を用いて前記第２のデータを前記第１のデータに復号化するとともに、前記第２の位置の情報を用いて第３の暗号鍵を生成し、復号化した第１のデータを前記第３の暗号鍵を用いて再暗号化し、当該再暗号化した第３のデータを前記記憶部の第２の位置に記憶させるデータ記憶方法。
【請求項８】
ホスト装置から送られてくるデータを記憶する不揮発性の記憶部内から、外部入力されるユーザ認証情報に基づいて前記記憶部から第１の暗号鍵を読み出すとともに、前記第１の暗号鍵を用いて前記データを暗号化し、暗号化した第１のデータを出力するホスト側暗号処理部と、
前記データが書き込まれる前記記憶部内の書き込み位置の情報を用いて第２の暗号鍵を生成するとともに、前記第２の暗号鍵を用いて前記第１のデータをさらに暗号化し、当該さらに暗号化した第２のデータを前記記憶部の第１の位置に記憶させるメディア側暗号処理部と、
を備え、
前記記憶部内から前記第２のデータを前記第１の位置から読み出して前記記憶部内の第２の位置に書き戻す場合には、前記メディア側暗号処理部が前記第２の暗号鍵を用いて前記第２のデータを前記第１のデータに復号化するとともに、前記第２の位置の情報を用いて第３の暗号鍵を生成し、復号化した第１のデータを前記第３の暗号鍵を用いて再暗号化し、当該再暗号化した第３のデータを前記記憶部の第２の位置に記憶させるデータコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置、データ記憶方法、及びデータコントローラに関する。
【背景技術】
【０００２】
従来から、ＳＳＤ（Solid  State  Drive）という記憶装置が提供されている。ＳＳＤは、半導体メモリであるフラッシュメモリを使用している。そして、近年、ＰＣ(Personal  Computer)に内蔵される記憶装置として、ＨＤＤの代わりにＳＳＤが使用される傾向が高まりつつある。
【０００３】
このようなＳＳＤでは、サーバのバックアップなどで長期保存されるデータを暗号化しておく場合がある。このような場合であっても、暗号化されたデータは、同一の値で同一の物理位置に配置されているので、装置が取り外され、故意に装置の不揮発領域が解析された場合には、データの物理位置が特定され、集中的に攻撃を受ける可能性があった。このため、定期的な暗号鍵の変更（再暗号化：Re-Encryption）処理が推奨されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１７３８５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術を用いたＳＳＤでは、再暗号化処理を行う際に利用者が暗号鍵を設定する必要があった。このため、装置側が任意のタイミングで再暗号化処理を行うことはできなかった。また、暗号鍵の設定管理のため、再暗号化処理の終了まで利用者が拘束されるという問題があった。
【０００６】
また、再暗号化処理に数時間単位の時間を要する場合があり、その期間中は暗号鍵を常に設定しておく必要がある。そして、再暗号化処理の際には、暗号鍵で暗号化されたデータが復号されて平文に戻された後、再暗号化されるので、再暗号化処理中は、装置内に平文でデータを晒すリスクを負うことになるという問題があった。
【０００７】
本発明は、上記に鑑みてなされたものであって、利用者の管理負担を軽減しつつセキュリティレベルを向上させることができる記憶装置、データ記憶方法、及びデータコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施形態の記憶装置は、ホスト装置から送られてくるデータを記憶する不揮発性の記憶部と、ホスト側暗号処理部と、メディア側暗号処理部と、を備えている。前記ホスト側暗号処理部は、外部入力されるユーザ認証情報に基づいて前記記憶部から第１の暗号鍵を読み出すとともに、前記第１の暗号鍵を用いて前記データを暗号化し、暗号化した第１のデータを出力する。また、前記メディア側暗号処理部は、前記データが書き込まれる前記記憶部内の書き込み位置の情報を用いて第２の暗号鍵を生成するとともに、前記第２の暗号鍵を用いて前記第１のデータをさらに暗号化し、当該さらに暗号化した第２のデータを前記記憶部の第１の位置に記憶させる。そして、前記記憶部内から前記第２のデータを前記第１の位置から読み出して前記記憶部内の第２の位置に書き戻す場合には、前記メディア側暗号処理部が前記第２の暗号鍵を用いて前記第２のデータを前記第１のデータに復号化する。さらに、前記メディア側暗号処理部は、前記第２の位置の情報を用いて第３の暗号鍵を生成する。さらに、前記メディア側暗号処理部は、復号化した第１のデータを前記第３の暗号鍵を用いて再暗号化し、当該再暗号化した第３のデータを前記記憶部の第２の位置に記憶させる。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態に係るＳＳＤ装置の構成を示すブロック図である。
【図２】図２は、再暗号化処理の処理手順を示す図である。
【図３】図３は、コンパクションを説明するための図である。
【図４】図４は、第２の実施形態に係るＳＳＤ装置の構成を示すブロック図である。
【図５】図５は、情報処理装置として用いられるＰＣのハードウェア構成を示す図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、実施形態に係る記憶装置、データ記憶方法、及びデータコントローラを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１１】
（第１の実施形態）
図１は、第１の実施形態に係るＳＳＤ装置の構成を示すブロック図である。ＳＳＤ装置（記憶装置）１Ａは、パーソナルコンピュータ（以下、ＰＣという）やＣＰＵコアなどのホストシステム（情報処理装置）２に接続されている。ＳＳＤ装置１Ａは、ホストシステム２の外部メモリとして機能する。
【００１２】
本実施形態のＳＳＤ装置１Ａは、利用者がログインの際に外部入力するパスワードを用いて取得されるユーザ暗号鍵を用いてデータを暗号化しておく。また、データを格納するブロックの位置に基づいて生成されるブロック暗号鍵を用いて、データをさらに暗号化しておく。そして、データの格納位置を変更する際（例えばコンパクション時）には、暗号化に用いたブロック暗号鍵を用いてデータを復号化し、新たなブロック暗号鍵を用いて、再暗号化処理を行う。これにより、ＳＳＤ装置１Ａは、ブロック暗号鍵で暗号化されたデータに対して再暗号化処理（暗号化処理のやり直し）を行う。
【００１３】
ＳＳＤ装置１Ａは、ホストコントローラ３Ａと、バッファメモリ６と、メディアコントローラ７Ａと、ストレージメディア１０と、を有している。ホストコントローラ３Ａは、ホストシステム２とバッファメモリ６との間のデータ転送制御を行う。ホストコントローラ３Ａは、ホストＩ／Ｆ４と、ホスト側暗号処理部５と、を備えている。
【００１４】
ホストＩ／Ｆ４は、ＳＳＤ装置１Ａとホストシステム２との間のデータ通信を行う通信インタフェースである。ホスト側暗号処理部５は、ホストシステム２から送られてくるデータを、ユーザ暗号鍵１４を用いて暗号化し、バッファメモリ６に送る。また、ホスト側暗号処理部５は、バッファメモリ６内のデータを、ユーザ暗号鍵１４を用いて復号化し、ホストＩ／Ｆ４を介してホストシステム２に送る。
【００１５】
バッファメモリ６は、ホストシステム２とストレージメディア１０との間で、データ転送用キャッシュ及び作業領域用メモリなどとして機能する。バッファメモリ６の作業領域用メモリには、各種管理テーブル（後述の論物変換テーブルなど）が格納される。
【００１６】
バッファメモリ６は、例えばＤＲＡＭ（Dynamic  Random  Access  Memory）などの揮発性半導体メモリである。なお、ＤＲＡＭの代わりに、ＦｅＲＡＭ（Ferroelectric  ＲＡＭ）、ＭＲＡＭ（Magnetoresistive  ＲＡＭ）、ＰＲＡＭ（Phase  change  ＲＡＭ）などの不揮発性ランダムアクセスメモリを用いてもよい。
【００１７】
メディアコントローラ７Ａは、バッファメモリ６とストレージメディア１０との間のデータ転送制御を行う。メディアコントローラ７Ａは、メディア側暗号処理部８と、書き込み管理部９と、を備えている。
【００１８】
メディア側暗号処理部８は、バッファメモリ６内のデータ（ユーザ暗号鍵１４で暗号化されたデータ）を、ブロック暗号鍵１５とブロック書き込み回数情報１１を用いて暗号化し、暗号化（２重暗号化）したデータ（ユーザ暗号鍵１４およびブロック暗号鍵１５で暗号化されたデータ）をストレージメディア１０に記憶させる。また、メディア側暗号処理部８は、ストレージメディア１０内のデータをブロック暗号鍵１５とブロック書き込み回数情報１１を用いて復号化する。
【００１９】
また、メディア側暗号処理部８は、ストレージメディア１０内のデータを所定のタイミング（後述のコンパクション時やウェアレベリング時）で再暗号化し、再暗号化したデータ（ユーザ暗号鍵１４およびブロック暗号鍵１５で暗号化されたデータ）をストレージメディア１０に記憶させる。再暗号化処理は、ストレージメディア１０内に記憶されているデータをブロック暗号鍵１５で復号化した後、再度、暗号化してストレージメディア１０内に記憶させる処理（保存中のデータに対する暗号鍵の架け替え）である。再暗号化の際には、ブロック暗号鍵１５が新たに生成されるので、再暗号化前のデータと、再暗号化後のデータとは、異なることとなる。
【００２０】
書き込み管理部９は、ストレージメディア１０へのデータの書き込み管理を行う。ホストシステム２からの要求により書き込みが行われるデータには、論理アドレス（Logical  Block  Address:LBA）が割り当てられる。ホストシステム２から送信される書き込みコマンドには、書き込みが要求されるデータと、当該データに割り当てられた論理アドレスとが含まれる。ストレージメディア１０において、書き込みが要求されたデータが書き込まれるブロックは、書き込み管理部９が、データに割り当てられた論理アドレスとは無関係に決定する。書き込み管理部９は、後述の論物変換テーブルに基づいて、ストレージメディア１０内におけるデータの読み書きを行う。
【００２１】
ストレージメディア１０は、半導体チップからなる不揮発性半導体メモリとしての記憶素子（半導体記憶装置）であり、例えばＮＡＮＤ型のフラッシュメモリを用いて構成されている。ストレージメディア１０は、ページと呼ばれる単位で読み書きが可能であり、複数ページがまとまってブロックと呼ばれる消去単位の記憶領域を構成している。そして、ストレージメディア１０は、複数のブロックで構成されている。
【００２２】
ここで、ストレージメディア１０への書き込み方式について説明する。ＮＡＮＤ型のメモリでは、追記方式が採用される。この追記方式では、ブロック単位でデータの消去を行い、消去済みのブロックに対してページ単位で書き込みを行う。すなわち、ＮＡＮＤ型の半導体メモリにおいては、消去済みのブロックのうち書き込みがまだ行われていないページに対して書き込みが可能であり、既に書き込みが行なわれたページに対する上書きは不可能である。
【００２３】
このため、データの書き込み要求において指定された論理アドレスが再度指定されて新たなデータの書き込みがホストシステム２から要求されると、ＳＳＤ装置１Ａは、消去済みのブロックのうちの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。
【００２４】
上述の追記方式において、書き込みを続けることにより、無効にされたページが増えてくると、ストレージメディア１０において書き込みを実現可能な容量が少なくなってくる。そして、書き込みが可能な新規の消去済みのブロック、即ち、消去後に書き込みがまだ行なわれていないブロック（フリーブロックという）が少なくなり、フリーブロックの確保が不可能になった時点で書き込み不能となってしまう。これを防ぐために、メディアコントローラ７Ａは、適当なタイミングでガベージコレクションを行なう。ＮＡＮＤ型の半導体メモリにおいて行なうガベージコレクションは、特にコンパクションという。
【００２５】
コンパクションは、追加書き込みによって無効となったデータ領域を再利用するため、有効データを集めて空き領域（フリーブロック）に再配置した後、有効データが無くなった領域（ブロック）を消去して空き領域（フリーブロック）とする処理である。換言すると、コンパクションは、有効なデータを読み出して、新しいブロックに書き直す処理である。
【００２６】
また、ＳＳＤ装置１Ａは、ストレージメディア１０のそれぞれの記憶エリア（領域）ごとの書き換え回数を平準化（平滑化）するウェアレベリングを行なっている。ＳＳＤ装置１Ａでは、書き込みデータに対し、コンパクションやウェアレベリングと呼ばれる処理が、装置内のバックグラウンド処理として実行される。
【００２７】
ストレージメディア１０は、ブロック書き込み回数情報１１と、ユーザデータ１２と、書き込み位置管理情報１３と、ユーザ暗号鍵１４と、ブロック暗号鍵１５と、を格納している。
【００２８】
ブロック書き込み回数情報１１は、ブロック単位ごとのデータ書き込み回数を示す情報である。ユーザデータ１２は、ホストシステム２から書き込まれるデータである。
【００２９】
書き込み位置管理情報１３は、例えば論物変換テーブル（アドレス変換テーブル）などである。論物変換テーブルは、ホストシステム２で指定された論理アドレス（ＬＢＡ）とストレージメディア１０内のデータの格納位置を指定する物理アドレスとの対応関係を示すものである。論物変換テーブルは、ＳＳＤ装置１Ａおよびホストシステム２を用いて構成されるメモリシステムの起動時等の所定タイミングで、バッファメモリ６に展開される。メディアコントローラ７Ａは、データ書き込みやデータ消去等に伴い論理アドレスと物理アドレスとの対応関係が更新された場合、バッファメモリ６に展開された論物変換テーブルを更新する。
【００３０】
ユーザ暗号鍵１４は、ホストシステム２から送られてくるデータの暗号化に用いられる暗号鍵である。ユーザ暗号鍵１４は、パスワードなどのユーザ認証情報に基づいて、ストレージメディア１０内からホスト側暗号処理部５に読み出される。
【００３１】
ブロック暗号鍵１５は、ユーザ暗号鍵１４で暗号化されたデータをさらに暗号化する際や再暗号化の際に用いられる暗号鍵である。ブロック暗号鍵１５は、ユーザデータ１２が書き込まれるストレージメディア１０内の位置（ブロックの位置）を用いて生成される。
【００３２】
ＳＳＤ装置１Ａでは、メディアコントローラ内の制御ファームウェアがコンパクションなどと同時にメディア側暗号処理部８による再暗号化を制御する。また、メディアコントローラ内の制御ファームウェアが、ブロック書き込み回数情報１１を用いたメディア側暗号処理部８によるデータの暗号化を制御する。
【００３３】
ホストシステム２から送られてくるデータは、ホストＩ／Ｆ４を介してホスト側暗号処理部５に送られる。このとき、ホストシステム２からホストコントローラ３Ａへは、パスワードなどのユーザ認証情報が入力される。このユーザ認証情報に基づいて、ホストコントローラ３Ａは、ストレージメディア１０からユーザ暗号鍵１４を読み出して、ユーザ暗号鍵１４をホスト側暗号処理部５に設定する。
【００３４】
ユーザ暗号鍵１４がホスト側暗号処理部５に設定されている状態（利用者のログオン時）では、ストレージメディア１０内のユーザデータ１２を正しく読み書きすることが可能となる。ホスト側暗号処理部５は、ユーザ暗号鍵１４を用いて、ホストシステム２から送られてくるデータを暗号化する。そして、ホスト側暗号処理部５は、暗号化したデータ（以下、ホスト側暗号化データという）をバッファメモリ６に記憶させる。
【００３５】
メディア側暗号処理部８は、バッファメモリ６のホスト側暗号化データを、ブロック暗号鍵１５とブロック書き込み回数情報１１を用いてさらに暗号化し、暗号化したデータ（以下、メディア側暗号化データという）をストレージメディア１０に記憶させる。
【００３６】
この後、必要に応じて、コンパクションやウェアレベリングが行われる。コンパクションやウェアレベリングは、例えば、ユーザ暗号鍵１４がホスト側暗号処理部５に設定されていない状態で（利用者のログオフ時に）行われる。本実施形態では、コンパクションやウェアレベリングを行う際に、メディア側暗号処理部８がメディア側暗号化データの再暗号化を行う。
【００３７】
図２は、再暗号化処理の処理手順を示す図である。ＳＳＤ装置１Ａによるデータの再暗号化処理は、例えば、コンパクションを行う場合やウェアレベリングを行う場合などに行われる。ここでは、ＳＳＤ装置１Ａがコンパクションを行う際の再暗号化処理について説明する。また、ここではユーザデータ１２がコンパクション対象のデータである場合について説明する。
【００３８】
メディア側暗号化データとしてのユーザデータ１２は、ストレージメディア１０内に格納されている。コンパクションが開始されると（ステップＳ５）、ユーザデータ１２のうちコンパクション対象となるデータ（新たなブロックに移動させられるデータ）が、ストレージメディア１０からバッファメモリ６に読み出される。具体的には、コンパクション対象となるデータが、書き込み管理部９を経由してメディア側暗号処理部８に送られる。これにより、メディア側暗号処理部８は、ブロック暗号鍵１５とブロック書き込み回数情報１１を用いて、コンパクション対象となるデータを復号化し（ステップＳ１０）、復号化したデータをバッファメモリ６に送る。バッファメモリ６に展開されるデータは、ホスト側暗号化データ（ユーザ暗号鍵１４で暗号化されたデータ）である。
【００３９】
書き込み管理部９は、コンパクション対象となるデータを新規に書き込むフリーブロックの書き込み回数を１だけ加算し、これにより、ブロック書き込み回数情報１１を更新する（ステップＳ２０）。
【００４０】
そして、バッファメモリ６上で有効ブロックを集約し、フリーブロックへの書き込みデータを作成する。これにより、バッファメモリ６上でコンパクションが実行される（ステップＳ３０）。
【００４１】
ここで、コンパクションの処理手順について説明する。図３は、コンパクションの処理手順を説明するための図である。図３では、ＳＳＤ装置１Ａにおける書き込みとコンパクションの遷移ブロック図を示している。
【００４２】
ここでは、ブロックｂ１〜ｂ４が存在し、各ブロックｂ１〜ｂ４がページ１〜３を有している場合のコンパクションについて説明する。図３の（ａ）は、最初の書き込み状態を示している。最初の書き込み状態は、例えば、ブロックｂ１のページ１〜３にデータＡ１〜Ｃ１が書き込まれ、ブロックｂ２のページ１〜３にデータＤ１〜Ｆ１が書き込まれ、ブブロックｂ３，ｂ４がフリーブロックである。
【００４３】
データＣ１、データＤ１、データＦ１に対し、更新書き込みがホストシステム２から指示された場合、ブロックｂ１の旧データに対して物理的な上書きではなく、図３の（ｂ）に示すようにフリーブロックであるブロックｂ３に新たなデータをページ単位の追加書きで書き込まれる。
【００４４】
具体的には、ブロックｂ２のページ３に書き込まれていたデータＦ１が、再暗号化されてブロックｂ３のページ１にデータＦ２として書き込まれる。つぎに、ブロックｂ２のページ１に書き込まれていたデータＤ１が、再暗号化されてブロックｂ３のページ２にデータＤ２として書き込まれる。さらに、ブロックｂ１のページ３に書き込まれていたデータＣ１が、再暗号化されてブロックｂ３のページ３にデータＣ２として書き込まれる。
【００４５】
そして、ブロックｂ１の旧書き込み箇所のデータが無効にされる。ここでは、ブロックｂ２のページ３に書き込まれていたデータＦ１、ブロックｂ２のページ１に書き込まれていたデータＤ１、ブロックｂ１のページ３に書き込まれていたデータＣ１が、それぞれ無効化される。
【００４６】
図３の（ｂ）におけるブロックｂ１，ｂ２のように、無効データが多くなると、ブロックの利用効率が落ちる。このため、無効データの多くなったブロック内の有効データを、定期的にフリーブロックに移動・集約する。そして、移動元のブロック内に格納されていたデータを消去してフリーブロックへと変更させる（コンパクション）。
【００４７】
具体的には、有効データを、書き込み管理部９を経由してバッファメモリ６に読み出す。ここでは、図３の（ｃ）に示すように、ブロックｂ１のページ１に書き込まれているデータＡ１と、ブロックｂ１のページ２に書き込まれているデータＢ１と、ブロックｂ２のページ２に書き込まれているデータＥ１と、がバッファメモリ６に読み出される。そして、データＢ１，Ｅ１，Ａ２が再暗号化されてブロックｂ４のページ１〜３にデータＢ２、データＥ２、データＡ２として書き込まれる。
【００４８】
このとき、書き込み管理部９からブロックｂ４へのデータ書き込みと同時にブロックｂ１、ｂ２内のデータを消去してフリーブロックへと変更する。これにより、利用領域の最適化（コンパクション）が実行される。
【００４９】
なお、コンパクションは、ブロックの書き込み頻度を平滑化させるため、無効データの少ないブロックに対しても定期的に実行される。さらに、ブロックの書き込み頻度を平滑化させるため、ウェアレベリングとして、使用中のブロックとフリーブロックの入れ替えも定期的に実行される。
【００５０】
ＳＳＤ装置１Ａでは、バッファメモリ６上でコンパクションが実行されてフリーブロックへ書き込むデータが作成されると、メディア側暗号処理部８は、ホスト側暗号化データの書き込まれる物理位置（フリーブロックの物理位置）と、乱数と、ブロック書き込み回数情報１１と、を用いて、物理ブロック単位毎にブロック暗号鍵１５を生成する。メディア側暗号処理部８は、更新されたブロック暗号鍵１５を用いて、フリーブロックへ書き込むデータを再暗号化する（ステップＳ４０）。メディア側暗号処理部８で生成されたブロック暗号鍵１５は、ストレージメディア１０内に格納しておく。
【００５１】
書き込みブロックは、一度データが書き込まれると消去しない限り、再度書き込みを行うことはできない。そこで、本実施形態では、データの暗号化にブロック書き込み回数情報１１を用いる。例えば、ブロック書き込み回数情報１１を、ブロック暗号鍵１５を生成する際のＳＥＥＤとして用いる。これにより、ブロックへの書き込み回数が、生成されるブロック暗号鍵１５に影響を与える。このため、もし同一データが再度同じブロックに書き込まれることがあったとしても、ブロック暗号鍵１５が異なるので、メディア側暗号化データが、以前のメディア側暗号化データと同じデータパターンにはならない。
【００５２】
なお、ブロック暗号鍵１５は、ブロック書き込み回数情報１１を用いることなく、ホスト側暗号化データの書き込まれる物理位置と、乱数と、を用いて生成してもよい。この場合であっても、暗号鍵は、ホスト側暗号化データが書き込まれる物理位置に依存する。このため、ホスト側暗号化データが異なるブロックへ書込まれる場合には、書き込む位置を変更するだけでデータパターンが異なることとなり、暗号鍵１５の再生が不要となる。
【００５３】
再暗号化されたデータ（暗号化データ）は、ホスト側暗号化データとして、書き込み管理部９がストレージメディア１０に書き戻す（ステップＳ５０）。なお、実際の書き込みはページ単位で行われるので、ページ鍵はブロック暗号鍵から派生、またはブロック内のオフセットから生成される。
【００５４】
書き込み管理部９は、コンパクション対象の全データを再暗号化してコンパクションしたか否かを判断する（ステップＳ６０）。コンパクションが終了していない場合（コンパクションされていないデータが残っている場合）（ステップＳ６０、Ｎｏ）、ステップＳ１０〜Ｓ６０の処理が繰り返される。一方、コンパクションが終了すると（ステップＳ６０、Ｙｅｓ）、書き込み管理部９は、ステップＳ３０の処理によって無効になったブロックを消去してフリーブロックにする。なお、ステップＳ３０の処理によって無効になったブロックの消去は、無効になった時点でフリーブロックにしてもよい。
【００５５】
ホスト側暗号化データが再暗号化されることにより、ホスト側暗号化データは、ストレージメディア１０内で新たな物理位置に格納される。このため、書き込み管理部９は、書き込み位置管理情報１３を更新する。このとき、書き込み位置管理情報１３は、ユーザデータ１２と同様にメディア側暗号処理部８にて、ブロック暗号鍵１５およびブロック書き込み回数情報１１を用いて再暗号化しておく（ステップＳ７０）。そして、書き込み管理部９は、再暗号化した書き込み位置管理情報１３をストレージメディア１０に書き込む（ステップＳ８０）。
【００５６】
このように、本実施形態では、ホスト側暗号処理部５とは別にメディア側暗号処理部８が設けられている。そして、メディア側暗号処理部８に物理ブロック単位の鍵と、ブロック書き込み回数情報１１と、を用いてデータの暗号化を行っている。
【００５７】
これにより、再暗号化の際にユーザ暗号鍵が不要となるので、ユーザ暗号鍵１４がホスト側暗号処理部５に設定されていない状態で再暗号化を行なうことが可能となる。また、メディア側暗号化データに対して再暗号化を行うので、平文が展開されることはない。したがって、平文データを晒すことなくＬＢＡ単位で暗号化された状態を維持したまま、再暗号化処理を行なうことが可能となる。また、ＳＳＤ装置１Ａ内の情報のみで再暗号化を行うので、コンパクションと同時に再暗号化を実施することが可能となる。
【００５８】
また、書き込み位置管理情報１３を、ブロック暗号鍵１５およびブロック書き込み回数情報１１を用いて再暗号化しているので、書き込み位置管理情報１３の解析を防止できる。したがって、ストレージメディア１０内に格納されているデータの物理位置が特定されることを防止できる。
【００５９】
なお、コンパクション対象のデータは、ユーザデータ１２に限らず、何れのデータ（例えば、ブロック書き込み回数情報１１、書き込み位置管理情報１３、ユーザ暗号鍵１４、ブロック暗号鍵１５）であってもよい。また、本実施の形態では、コンパクションやウェアレベリングの際に再暗号化を行う場合について説明したが、定期的な暗号鍵変更の際に、再暗号化してもよい。
【００６０】
また、本実施の形態では、ＳＳＤ装置１Ａによる再暗号化を例に挙げているが、他のストレージ装置であっても、データの書き込み物理位置を意図的に変更させることでＳＳＤ装置１Ａと同様の効果を得ることは可能である。
【００６１】
このように第１の実施形態によれば、ユーザ暗号鍵１４とブロック暗号鍵１５を用いてデータを暗号化するとともに、ブロック暗号鍵１５を用いてデータを再暗号化するので、利用者の管理負担を軽減しつつセキュリティレベルを向上させることが可能となる。
【００６２】
また、コンパクションやウェアレベリングと再暗号化の両立が可能となるので、装置解析によって長期保存された重要データを危険にさらすことがなくなり、セキュリティレベルを向上させることが可能となる。
【００６３】
また、書き込み位置管理情報１３などの重要情報を暗号化することが可能となるので、物理位置を特定されることによるデータ破壊および解析に対し、セキュリティレベルを向上させることが可能となる。
【００６４】
（第２の実施形態）
つぎに、図４および図５を用いてこの発明の第２の実施形態について説明する。第２の実施形態では、第１の実施形態におけるホスト側暗号処理部５とメディア側暗号処理部８とを１つの構成要素で構成する。
【００６５】
図４は、第２の実施形態に係るＳＳＤ装置の構成を示すブロック図である。図４の各構成要素のうち図１に示す第１の実施形態のＳＳＤ装置１Ａと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【００６６】
ＳＳＤ装置１Ｂは、ＳＳＤ装置１Ａと同様の機能を有した装置であり、ホストコントローラ３Ｂと、バッファメモリ６と、メディアコントローラ７Ｂと、ストレージメディア１０と、暗号処理部２０と、を有している。
【００６７】
ホストコントローラ３Ｂは、ホストシステム２と暗号処理部２０とに接続されている。また、暗号処理部２０は、ホストコントローラ３Ｂ、バッファメモリ６、メディアコントローラ７Ｂ、ストレージメディア１０に接続されている。また、バッファメモリ６は、暗号処理部２０、メディアコントローラ７Ｂに接続されている。そして、ストレージメディア１０が、暗号処理部２０、メディアコントローラ７Ｂに接続されている。
【００６８】
ホストコントローラ３Ｂは、ホストＩ／Ｆ４を備え、メディアコントローラ７Ｂは、書き込み管理部９を備えている。暗号処理部２０は、ホスト側暗号処理部５の機能とメディア側暗号処理部８の機能とを合わせた機能を備えている。
【００６９】
ホストシステム２から送られてくるデータは、ホストＩ／Ｆ４を介して暗号処理部２０に送られる。このとき、ホストシステム２からホストコントローラ３Ｂへは、パスワードなどのユーザ認証情報が入力される。これにより、ホストコントローラ３Ｂは、ストレージメディア１０からユーザ暗号鍵１４を読み出して、読み出したユーザ暗号鍵１４を暗号処理部２０に設定する。
【００７０】
ユーザ暗号鍵１４が暗号処理部２０に設定されている状態（利用者のログオン時）では、ストレージメディア１０内のユーザデータ１２を正しく読み書きすることが可能となる。例えば、暗号処理部２０は、ユーザ暗号鍵１４を用いて、ホストシステム２から送られてくるデータを暗号化する。そして、暗号処理部２０は、暗号化したデータを、ホスト側暗号化データとしてバッファメモリ６に記憶させる。
【００７１】
暗号処理部２０は、バッファメモリ６のホスト側暗号化データを、ブロック暗号鍵１５とブロック書き込み回数情報１１を用いてさらに暗号化し、暗号化したデータを、ユーザデータ１２としてストレージメディア１０に記憶させる。
【００７２】
この後、必要に応じて、コンパクションやウェアレベリングが行われる。ユーザデータ１２をコンパクションするタイミングになると、ユーザデータ１２のうちコンパクション対象となるデータが、ストレージメディア１０からバッファメモリ６に読み出される。これにより、暗号処理部２０は、ブロック暗号鍵１５とブロック書き込み回数情報１１を用いて、コンパクション対象となるデータを復号化し、復号化したデータをバッファメモリ６に送る。バッファメモリ６に展開されるデータは、ホスト側暗号化データ（ユーザ暗号鍵１４で暗号化されたデータ）である。そして、暗号処理部２０は、ホスト側暗号化データの書き込まれる物理位置（フリーブロックの物理位置）と、乱数と、ブロック書き込み回数情報１１と、を用いて、物理ブロック単位毎にブロック暗号鍵１５を作成する。暗号処理部２０は、更新されたブロック暗号鍵１５を用いて、フリーブロックへ書き込むデータを再暗号化する。
【００７３】
そして、再暗号化されたデータは、ホスト側暗号化データとして、書き込み管理部９がストレージメディア１０に書き戻す。コンパクションが終了すると、書き込み管理部９は、コンパクションによって無効になったブロックを消去してフリーブロックにする。
【００７４】
ＳＳＤ装置１Ａ，１Ｂは、情報処理装置の記憶手段として利用される。図５は、情報処理装置として用いられるＰＣのハードウェア構成を示す図である。ここでは、ＳＳＤ装置１Ｂを備えた情報処理装置５００について説明する。
【００７５】
図５に示すように、情報処理装置５００は、ＣＰＵ５０１と、ＲＡＭ５０２と、ＲＯＭ５０３と、電源ユニット５０４と、入力インタフェース（Ｉ／Ｆ）５０５と、ＳＳＤ装置１Ｂと、を備えている。
【００７６】
本実施の形態の情報処理装置５００では、電源ユニット５０４により電源が投入された場合に、ＲＯＭ５０３に格納されていたＢＩＯＳ（Basic  Input/Output  System）がＣＰＵ５０１により読み出され、ＲＡＭ５０２を作業領域として動作する。
【００７７】
以上説明したとおり、第１および第２の実施形態によれば、利用者の管理負担を軽減しつつセキュリティレベルを向上させることが可能となる。
【００７８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７９】
１Ａ，１Ｂ…ＳＳＤ装置、２…ホストシステム、３Ａ，３Ｂ…ホストコントローラ、５…ホスト側暗号処理部、７Ａ，７Ｂ…メディアコントローラ、８…メディア側暗号処理部、１０…ストレージメディア、１１…ブロック書き込み回数情報、１２…ユーザデータ、１３…書き込み位置管理情報、１４…ユーザ暗号鍵、１５…ブロック暗号鍵、２０…暗号処理部、５００…情報処理装置、ｂ１〜ｂ４…ブロック
【図１】
2013062616.tif 000003
【図２】
2013062616.tif 000004
【図３】
2013062616.tif 000005
【図４】
2013062616.tif 000006
【図５】
2013062616.tif 000007