(57)【要約】      （修正有）【課題】異なる規格の類似の機能を併用できるストレージ装置及び制御方法を提供する。【解決手段】ストレージ装置１２は、ホスト１４と通信可能であり、不揮発性の記憶媒体３６と、記憶媒体に接続される制御部１８と、を具備する。制御部は、暗号鍵を用いてデータを暗号化し、暗号化されたデータを記憶媒体に書き込む。更に、制御部は、記憶媒体の第１領域に書き込まれるデータの暗号化のための第１暗号鍵と、記憶媒体の第１領域以外の第２領域に書き込まれるデータの暗号化のため第２暗号鍵とを管理する。第１領域がライトプロテクトされており第２領域がライトプロテクトされていない場合、ホスト１４から初期化要求を受信したことに応じ、第１暗号鍵を更新せず、第２暗号鍵を更新する。【選択図】図６
2020150497.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の記憶媒体と、
前記記憶媒体に接続される制御部と、
を具備し、ホストと通信可能なストレージ装置であって、
前記制御部は、
暗号鍵を用いてデータを暗号化し、
暗号化されたデータを前記記憶媒体に書き込み、
前記記憶媒体の第１領域に書き込まれるデータの暗号化のための第１暗号鍵と、前記記憶媒体の前記第１領域以外の第２領域に書き込まれるデータの暗号化のため第２暗号鍵とを管理し、
前記第１領域がライトプロテクトされており前記第２領域がライトプロテクトされていない場合、前記ホストから初期化要求を受信したことに応じ、前記第１暗号鍵を更新せず、前記第２暗号鍵を更新する
ストレージ装置。
【請求項２】
前記制御部は、
暗号鍵がそれぞれ割り当てられ、前記ホストにより管理されない複数のレンジを前記第１領域に設定するように構成され、
第１の数の暗号鍵を管理し、
前記ホストからの要求に応じ、未使用の暗号鍵数を前記ホストに通知するものであり、
前記ホストに通知される前記未使用の暗号鍵数の初期値は前記第１の数から前記複数のレンジの数を減じて得られた値であり、
前記ホストに通知される前記未使用の暗号鍵数は前記複数のレンジのいずれかが前記第１領域に設定される毎に１つ減少する
請求項１記載のストレージ装置。
【請求項３】
前記制御部は、前記ホストから前記初期化要求を受信する前に前記第２領域に書き込まれているデータを、前記更新後の第２暗号鍵で再暗号化する
請求項１記載のストレージ装置。
【請求項４】
前記制御部は、前記ホストからコマンドを受信したことに応じ、前記第２暗号鍵を更新することにより前記第２領域に書き込まれているデータを無効化するように構成されており、
前記コマンドに基づき、前記第１暗号鍵を更新することにより前記第１領域に書き込まれているデータを無効化する動作、又は、前記第１暗号鍵を更新しないことにより前記第１領域に書き込まれているデータを無効化しない動作、のいずれかを選択する
請求項１記載のストレージ装置。
【請求項５】
前記制御部は、
前記ホストからコマンドを受信したことに応じ、前記記憶媒体の記憶領域にレンジを配置し、前記レンジをロックするように構成されており、
前記コマンドが前記第１領域に前記レンジを配置させるコマンドである場合、前記第１領域へ前記レンジを配置せず、エラー信号を前記ホストに送信し、
前記コマンドが前記第１領域に配置された前記レンジをロックさせるコマンドである場合、前記レンジをロックせず、エラー信号を前記ホストに送信する
請求項１記載のストレージ装置。
【請求項６】
前記制御部は、
暗号鍵がそれぞれ割り当てられ、前記ホストにより管理されない複数のレンジを前記第１領域に設定し、
前記ホストからコマンドを受信したことに応じ、前記レンジに割り当てられた前記暗号鍵を更新するように構成されており、
前記コマンドが前記第１領域に設定された前記レンジに割り当てられた前記暗号鍵を更新させるコマンドである場合、前記第１領域に設定された前記レンジに割り当てられた前記暗号鍵を更新せず、エラー信号を前記ホストに送信する
請求項１記載のストレージ装置。
【請求項７】
前記制御部は、
前記第１領域に設定され前記第１暗号鍵を管理する第１レンジと、前記第２領域に設定され前記第２暗号鍵を管理する第２レンジと、を管理し、
前記第１レンジのリードロックまたはライトロックは前記ホストから管理可能であり、
前記第２レンジのリードロックまたはライトロックは前記ホストから管理不可能である
請求項１記載のストレージ装置。
【請求項８】
前記制御部は、
前記ホストから前記第１領域にレンジを配置する命令を受信する前に前記第１領域に配置される予定のレンジの属性を前記第１領域の全領域に配置されるレンジであることを示す属性に変更し、
前記レンジの属性を、前記ホストからライトプロテクトされた領域に配置されるレンジである事を示す属性に変更し、
前記ホストから前記第１領域にレンジを配置する命令を受信すると、前記ライトプロテクトされた領域に配置されるレンジであることを示す属性を有する前記レンジを前記第１領域に配置する
請求項７記載のストレージ装置。
【請求項９】
前記制御部は、
前記第２領域の一部分であり、ライトプロテクトされる予定の一部分に関する通知を前記ホストから受信し、
前記ホストからのコマンドを受信したことに応じ、前記記憶媒体の記憶領域にレンジを配置するように構成されており、
前記コマンドが前記ライトプロテクトされる予定の一部分にレンジを配置するコマンドである場合、前記一部分に前記レンジを配置しない
請求項１記載のストレージ装置。
【請求項１０】
前記制御部は、
第１権限のユーザにより発行される第１コマンド又は前記第１権限とは異なる第２権限のユーザにより発行される第２コマンドを受信し、
前記第１コマンドを受信したことに応じ、前記第１暗号鍵を更新せず、前記第２暗号鍵を更新し、
前記第２コマンドを受信したことに応じ、前記第１暗号鍵と前記第２暗号鍵を更新する
請求項１記載のストレージ装置。
【請求項１１】
前記制御部は、
前記第１領域をライトプロテクトするためのコマンド、前記初期化要求、あるいは前記第１領域に設定されたレンジに割り当てられた暗号鍵を更新させるコマンドを受信した場合の前記ストレージ装置の動作内容を示す情報を、前記ホストに送信する
請求項１記載のストレージ装置。
【請求項１２】
不揮発性の記憶媒体と、
前記記憶媒体に接続される制御部と、
を具備し、ホストと通信可能なストレージ装置であって、
前記制御部は、
平文データを前記記憶媒体に書き込み、
前記記憶媒体の第１領域がライトプロテクトされており、前記記憶媒体の前記第１領域以外の第２領域がライトプロテクトされていない場合、前記ホストから初期化要求を受信したことに応じ、前記第１領域に書き込まれているデータを消去せず、前記第２領域に書き込まれているデータを消去する
ストレージ装置。
【請求項１３】
前記制御部は、
前記ホストからコマンドを受信したことに応じ、前記記憶媒体に書き込まれているデータを消去するように構成されており、
前記コマンドに基づき、前記第１領域に記録されている前記データを消去する動作、又は、前記第１領域に記録されている前記データを消去しない動作、のいずれかを選択する
請求項１２記載のストレージ装置。
【請求項１４】
前記制御部は、
前記ホストからコマンドを受信したことに応じ、前記記憶媒体の記憶領域にレンジを配置し、前記レンジをロックするように構成されており、
前記コマンドが前記第１領域に前記レンジを配置させるコマンドである場合、前記第１領域へ前記レンジを配置せず、エラー信号を前記ホストに送信し、
前記コマンドが前記第１領域に配置された前記レンジをロックさせるコマンドである場合、前記レンジをロックせず、エラー信号を前記ホストに送信する
請求項１２記載のストレージ装置。
【請求項１５】
前記制御部は、
前記ホストにより管理されない複数のレンジを前記第１領域に設定し、
前記ホストからコマンドを受信したことに応じ、前記記憶媒体に書き込まれているデータを消去するように構成されており、
前記コマンドが前記第１領域に書き込まれている前記データを消去するコマンドである場合、前記第１領域に書き込まれた前記データを消去せず、エラー信号を前記ホストに送信する
請求項１２記載のストレージ装置。
【請求項１６】
前記制御部は、
前記第１領域に設定され、リードロックまたはライトロックが前記ホストから設定可能な第１レンジと、前記第２領域に設定され、リードロックまたはライトロックが前記ホストから設定可能な第２レンジと、を管理する、
請求項１２記載のストレージ装置。
【請求項１７】
前記制御部は、
前記ホストから前記第１領域に第２レンジを配置する命令を受信すると、前記第２レンジのリードロックまたはライトロックが前記ホストから管理可能とするように前記第２レンジの属性を変更する
請求項１３記載のストレージ装置。
【請求項１８】
前記制御部は、
前記第２領域の一部分であり、ライトプロテクトされる予定の一部分に関する通知を前記ホストから受信し、
前記ホストからコマンドを受信したことに応じ、前記記憶媒体の記憶領域にレンジを配置するように構成されており、
前記コマンドが前記ライトプロテクトされる予定の一部分にレンジを配置するコマンドである場合、前記一部分に前記レンジを配置しない
請求項１２記載のストレージ装置。
【請求項１９】
前記制御部は、
第１権限のユーザにより発行される第１コマンド又は前記第１権限とは異なる第２権限のユーザにより発行される第２コマンドを受信し、
前記第１コマンドを受信したことに応じ、前記第２領域に書き込まれている前記データを消去し、前記第１領域に書き込まれている前記データを消去せず、
前記第２コマンドを受信したことに応じ、前記第１領域に書き込まれている前記データと前記第２領域に書き込まれている前記データを消去する
請求項１２記載のストレージ装置。
【請求項２０】
前記制御部は、前記第１領域をライトプロテクトするためのコマンドあるいは前記初期化要求を受信した場合の前記ストレージ装置の動作内容を示す情報を前記ホストに送信する
請求項１２記載のストレージ装置。
【請求項２１】
不揮発性の記憶媒体と、前記記憶媒体に接続される制御部と、を具備し、ホストと通信可能なストレージ装置の制御方法であって、
暗号鍵を用いてデータを暗号化することと、
暗号化されたデータを前記記憶媒体に書き込むことと、
前記記憶媒体の第１領域に書き込まれるデータの暗号化のための第１暗号鍵と、前記記憶媒体の前記第１領域以外の第２領域に書き込まれるデータの暗号化のため第２暗号鍵とを管理することと、
前記第１領域がライトプロテクトされており前記第２領域がライトプロテクトされていない場合、前記ホストから初期化要求を受信したことに応じ、前記第１暗号鍵を更新せず、前記第２暗号鍵を更新することと、
を具備する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はストレージ装置及び制御方法に関する。
【背景技術】
【０００２】
ストレージ装置に関係する種々の規格があり、その一例として、ＴＣＧ（登録商標）（Trusted Computing Group Storage）が策定しているTCG Storage Security Subsystem Class: Opal（非特許文献１）がある。この規格では、ストレージ装置の少なくとも一部の領域をリードロック及び／又はライトロックするためのロック機能が定義されている。さらに、この規格のオプションとして、TCG Storage Opal SSC Feature Set: Configurable Namespace Locking Specification（非特許文献５）がある。このオプション規格では、不揮発性メモリのＬＢＡ（Logical Block Address）により指定される１又は複数の論理ブロックからなるネームスペース（namespace）単位でリードロック及び／又はライトロックするためのロック機能が定義されている。
【０００３】
一方、ストレージ装置の他の規格として、NVM Express（登録商標）（ＮＶＭｅ（登録商標）とも称する）Revision 1.3c（非特許文献３）がある。この規格のオプションとして、NVM Express 1.3 Ratified TPs (TP4005a)（非特許文献４）がある。このオプション規格では、不揮発性メモリのＬＢＡにより指定される１又は複数の論理ブロックからなるネームスペース単位でストレージ装置にライトプロテクトするためのライトプロテクション機能が定義されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】TCG Storage Security Subsystem Class: Opal、［オンライン］、［平成３０年１１月１９日検索］、インターネット〈URL: https://trustedcomputinggroup.org/wp-content/uploads/TCG_Storage-Opal_SSC_v2.01_rev1.00.pdf〉
【非特許文献２】TCG Storage Security Subsystem Class: Pyrite、［オンライン］、［平成３０年１１月１９日検索］、インターネット〈URL: https://trustedcomputinggroup.org/wp-content/uploads/TCG_Storage-Pyrite_SSC_v2.00_r1.00_PUB.pdf〉
【非特許文献３】NVM Express Revision 1.3、［オンライン］、［平成３０年１１月１９日検索］、インターネット〈URL: http://nvmexpress.org/wp-content/uploads/NVM_Express_Revision_1.3.pdf〉
【非特許文献４】NVM Express 1.3 Ratified TPs (TP4005a) 、［オンライン］、［平成３０年１１月１９日検索］、インターネット〈URL: http://nvmexpress.org/wp-content/uploads/NVM-Express-1.3-Ratified-TPs.zip〉
【非特許文献５】TCG Storage Opal SSC Feature Set: Configurable Namespace Locking Specification Version 1.00 DRAFT, Revision 1.19, 27 June 2016) 、［オンライン］、［平成３０年１１月１９日検索］、インターネット〈URL: https://www.trustedcomputinggroup.org/wp-content/uploads/TCG_Storage_Feature_Set_Namespaces_phase_1b_v1_00_r1_19_public-review.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＴＣＧ規格に基づくロック機能とＮＶＭｅ規格に基づくライトプロテクション機能は、ともに記憶領域の少なくとも一部分の領域に対するデータの書き込み（消去も含む）を禁止することにより、記憶領域の少なくとも一部分の領域のデータを保護するものである。しかし、ＴＣＧ規格に基づくロック機能とＮＶＭｅ規格に基づくライトプロテクション機能の両方を併用する動作の詳細は両規格において規定されていない。このようなことはＴＣＧ規格とＮＶＭｅ規格との間のみならず、類似の機能を有するストレージ装置に関する他の複数の規格の間でも生じ得る。
【０００６】
本発明の目的は、異なる規格に基づく類似の機能を併用できるストレージ装置及び制御方法を提供することである。
【課題を解決するための手段】
【０００７】
実施形態によるストレージ装置は、ホストと通信可能であり、不揮発性の記憶媒体と、前記記憶媒体に接続される制御部と、を具備する。前記制御部は、暗号鍵を用いてデータを暗号化し、暗号化されたデータを前記記憶媒体に書き込み、前記記憶媒体の第１領域に書き込まれるデータの暗号化のための第１暗号鍵と、前記記憶媒体の前記第１領域以外の第２領域に書き込まれるデータの暗号化のため第２暗号鍵とを管理し、前記第１領域がライトプロテクトされており前記第２領域がライトプロテクトされていない場合、前記ホストから初期化要求を受信したことに応じ、前記第１暗号鍵を更新せず、前記第２暗号鍵を更新する。
【図面の簡単な説明】
【０００８】
【図１】ＴＣＧ規格に基づくレンジ機能によるレンジ配置の一例を示す図である。
【図２】ホストがストレージ装置のライトプロテクション機能を指定するライトプロテクションコマンドの一例を示す図である。
【図３】ライトプロテクションステートの遷移の一例を示す状態遷移図である。
【図４】ＴＣＧ規格に基づくレンジ配置とレンジ設定の一例を示す図である。
【図５】第１実施形態によるストレージ装置を含む情報処理システムの一例を示す図である。
【図６】第１実施形態によるストレージ装置の構成の一例を示す図である。
【図７】レンジ管理部が管理するレンジ管理テーブル＃１の一例を示す図である。
【図８Ａ】レンジ管理テーブル＃１の一状態を示す図である。
【図８Ｂ】レンジ管理テーブル＃１の他の状態を示す図である。
【図８Ｃ】レンジ管理テーブル＃１の他の状態を示す図である。
【図８Ｄ】レンジ管理部が管理するレンジ管理テーブル＃２の一例を示す図である。
【図９】GenKeyコマンドが発行された時の暗号鍵管理部の動作の一例を示すフローチャートである。
【図１０】未使用暗号鍵数の初期値の一例を説明する図である。
【図１１】リバートＳＰコマンドにパラメータを追加した実施形態により新コマンドの一例を示す図である。
【図１２】レンジ設定部が管理するレンジ管理テーブル＃１の他の例を示す図である。
【図１３】第１実施形態のグループ１に属する動作例を示す図である。
【図１４】第１実施形態のグループ２に属する動作例を示す図である。
【図１５】第１実施形態のグループ３に属する動作例を示す図である。
【図１６】第１実施形態のグループ４に属する動作例を示す図である。
【図１７】第１実施形態のグループ５に属する動作例を示す図である。
【図１８】第１実施形態のグループ６に属する動作例を示す図である。
【図１９Ａ】動作例Ａ１の処理の流れの一例の前半を示すフローチャートである。
【図１９Ｂ】動作例Ａ１の処理の流れの一例の後半を示すフローチャートである。
【図２０Ａ】動作例Ａ２の処理の流れの一例の前半を示すフローチャートである。
【図２０Ｂ】動作例Ａ２の処理の流れの一例の後半を示すフローチャートである。
【図２１】動作例Ｂの処理の流れの一例を示すフローチャートである。
【図２２】動作例Ｃの処理の流れの一例を示すフローチャートである。
【図２３】動作例Ｄの処理の流れの一例を示すフローチャートである。
【図２４】動作例Ｅの処理の流れの一例を示すフローチャートである。
【図２５】動作例Ｆの処理の流れの一例を示すフローチャートである。
【図２６】動作例Ｒ１の処理の流れの一例を示すフローチャートである。
【図２７】動作例Ｒ２の処理の流れの一例を示すフローチャートである。
【図２８】動作例Ｓの処理の流れの一例を示すフローチャートである。
【図２９】動作例Ｔの処理の流れの一例を示すフローチャートである。
【図３０】動作例Ｇ１の処理の流れの一例を示すフローチャートである。
【図３１】動作例Ｇ２の処理の流れの一例を示すフローチャートである。
【図３２】動作例Ｈ１の処理の流れの一例を示すフローチャートである。
【図３３】動作例Ｈ２の処理の流れの一例を示すフローチャートである。
【図３４】動作例Ｉ１の処理の流れの一例を示すフローチャートである。
【図３５】動作例Ｉ２の処理の流れの一例を示すフローチャートである。
【図３６】動作例Ｊ１の処理の流れの一例を示すフローチャートである。
【図３７】動作例Ｊ２の処理の流れの一例を示すフローチャートである。
【図３８】動作例Ｋの処理の流れの一例を示すフローチャートである。
【図３９】動作例Ｕの処理の流れの一例を示すフローチャートである。
【図４０】動作例Ｎの処理の流れの一例を示すフローチャートである。
【図４１】動作例Ｏの処理の流れの一例を示すフローチャートである。
【図４２】動作例Ｍの処理の流れの一例を示すフローチャートである。
【図４３】動作例Ｌの処理の流れの一例を示すフローチャートである。
【図４４】動作例Ｐの処理の流れの一例を示すフローチャートである。
【図４５】動作例Ｑの処理の流れの一例を示すフローチャートである。
【図４６】動作例Ｖの処理の流れの一例を示すフローチャートである。
【図４７】動作例Ｗでストレージ装置がホストに動作を通知するコマンドの一例を示す図である。
【図４８】第２実施形態によるストレージ装置の構成の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。また、複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。なお、以下の説明において、「接続」は直接接続のみならず、他の要素を介して接続されることも意味する。ＴＣＧの規格書の中ではホストとストレージ装置の間でやりとりされる命令はメソッドという用語を用いて説明されているが、この明細書では説明を簡略化するためＴＣＧ規格で定義されているメソッドをコマンドと呼ぶ。
【００１０】
［ＴＣＧ規格とＮＶＭｅ規格の概要］
実施形態のストレージ装置は、既存のＴＣＧ規格に基づく機能と既存のＮＶＭｅ規格に基づくライトプロテクション機能とを両立させた規格に対応するものである。実施形態に関係する既存のＴＣＧ規格と既存のＮＶＭｅ規格の概要を説明する。
【００１１】
ＴＣＧ規格はデータ暗号化機能を定義する。暗号化機能を実現するために、ストレージ装置は乱数生成器と、乱数生成器により発生された乱数に基づいて暗号鍵を生成する暗号鍵管理部を備える。ストレージ装置に入力されたユーザデータが暗号鍵で暗号化され、暗号化データがストレージ装置の記憶媒体に書き込まれる。記憶媒体は、大容量の不揮発性の記憶媒体、例えばＮＡＮＤ型フラッシュメモリ、磁気ディスク等からなる。記憶媒体から読み出された暗号化データは書き込みの際に使用された暗号鍵を用いて復号処理され、ユーザデータが復号される。なお、暗号化機能の有効（データを暗号化する）、無効（データを暗号化しない）はコマンドにより切り替えることはできず、ストレージ装置の製造時に暗号化機能の有効か無効かが決められる。
【００１２】
ＴＣＧ規格はストレージ装置の少なくとも一部の領域をリードロック及び／又はライトロックするロック機能を定義する。領域をロックする権限及び／又は領域のロックを解除する権限(Authority)はＰＩＮ（Personal Identification Number）を用いて設定することができる。ストレージ装置の少なくとも一部の領域がリードロック又はライトロックされると、ストレージ装置は、ホストからこの領域に対するリードコマンド又はライトコマンドを受信しても、リード処理又はライト処理を実行せず、ホストにエラー信号を送信する。これによりロックされた領域の記録データが保護される。ロックされる領域は後述するレンジ(Range)である。
【００１３】
ＴＣＧ規格はレンジ機能も定義する。レンジ機能によれば、ストレージ装置の記憶領域の少なくとも一部の領域にレンジが配置可能であり、ロック機能の有効、無効がレンジ毎に設定可能である。レンジの一例はＮＶＭｅ規格で定義しているネームスペースを含む。レンジは複数の粒度で配置されることができる。レンジは、例えば、図１に示すように、ストレージ装置全体に配置されるグローバルレンジ（Global Range）、ネームスペース全体に配置されるネームスペース・グローバルレンジ（Namespace Global Range）、ネームスペースの中の１又は複数のＬＢＡ（Logical Block Address）範囲に配置されるネームスペース・ノングローバルレンジ（Namespace Non-Global Range）等を含むことができる。ネームスペース毎にレンジを設定すると、ネームスペース毎にロック機能を有効（ロックをかけることができるようにする）、無効（ロックをかけることができないようにする）のいずれかとすることができる。
【００１４】
１つのＬＢＡ範囲に複数のネームスペース・ノングローバルレンジを配置することはできない。例えば、ＬＢＡｘ〜ＬＢＡｙ（ｘ＜ｙ）までのＬＢＡ範囲に２つ以上のネームスペース・ノングローバルレンジを配置することはできない。ＬＢＡａ〜ＬＢＡｃのＬＢＡ範囲に１つのネームスペース・ノングローバルレンジを配置し、ＬＢＡｂ〜ＬＢＡｄ（ａ＜ｂ＜ｃ＜ｄ）のＬＢＡ範囲に別のネームスペース・ノングローバルレンジを配置することはできない。さらに、２つ以上のネームスペースに亘って１つのネームスペース・グローバルレンジを配置することもできない。
【００１５】
暗号化機能の有効、無効はレンジ毎に設定することはできず、ストレージ装置全体に対して暗号化機能の有効、無効が設定される。データ暗号化機能が有効である場合、暗号鍵はストレージ装置のみに存在するため、暗号鍵が更新（消去も含む）されると、記録した暗号化データが復号できなくなり、記録データは無効化（Invalidate）される。このデータ無効化はデータ消去と等価である。この暗号鍵の更新はクリプト・イレーズ（Crypto Erase）機能としてＴＣＧ規格に定義されている。暗号鍵のサイズは１２８ビット又は２５６ビット程度と小さいため、暗号鍵を更新（消去）する処理は一瞬で完了する。このため、クリプト・イレーズ機能によるデータ無効化処理は高速に実行される。また、暗号鍵を用いずに暗号化データからオリジナルデータ（平文データ）を復元することは暗号理論により計算量的に困難であると考えられているので、クリプト・イレーズ機能により記録データを安全に消去することが可能である。
【００１６】
ＴＣＧ規格はデータ消去（Data Sanitization）機能も定義する。この機能は記憶媒体に記録されているデータを消去する機能であり、消去の方法は、ブロック・イレーズ（Block Erase）やオーバーライト・イレーズ（Overwrite Erase）によってデータをビット単位又はブロック単位で消去する方法、アンマップ（Unmap）によって管理テーブル（たとえば論理アドレス／物理アドレス変換テーブルなど）内の管理情報を削除することによってデータを読み出し不能にする方法、及びデータが記憶媒体のどのブロックに記憶されているかを示すポインタをリセットするライトポインタリセット等を含む。
【００１７】
ブロック・イレーズやオーバーライト・イレーズは、データを記録しているセルのデータを元のデータとは異なるデータに書き換える、または破壊することにより消去するため、その後データの読み出しは非常に困難であるが、消去にかかる時間は長くかかる。一方、アンマップやライトポインタリセットは、データそのものは操作しないため高速にデータを消去できるが、実際の記録データは記憶媒体に残っているため、情報漏洩に対する安全性は劣る。
【００１８】
ＴＣＧ規格はアクティベート（Activate）機能も定義する。ＴＣＧ規格ではストレージ装置はコマンドにより非アクティブ（Inactive）状態とアクティブ（Active）状態の間で状態が遷移する。初期状態ではストレージ装置は非アクティブ状態でもアクティブ状態でもどちらでも良いが、以下では、ストレージ装置の初期状態が非アクティブ状態であるものとして説明する。初期状態（ここでは、非アクティブ状態とする）のストレージ装置ではレンジは存在せず、ロック機能は無効であるが、暗号化機能は有効であり、ストレージ装置全体で単一の暗号鍵が用いられる。初期状態のストレージ装置は、アクティベートコマンドを受け取ると、アクティブ状態になる。アクティブ状態のストレージ装置では、ロック機能とレンジ機能を有効にすることができる。すなわち、その後のコマンドでストレージ装置の記憶領域にレンジを配置したり、配置したレンジにリードロック及び／又はライトロックをかけたりする事が可能になる。
【００１９】
ＴＣＧ規格はストレージ装置を初期状態に戻すリバート（Revert）機能も定義する。ストレージ装置が初期状態に戻される場合、データが無効化又は消去されるとともにロック機能を有効にするために設定されたＰＩＮが初期値に戻され、ロック機能も無効とされる。暗号化機能の有効、無効はコマンドにより切り替えることはできず、常に有効か無効である。暗号化機能が有効である場合、クリプト・イレーズによりデータが無効化される。しかし、暗号化機能が有効である場合でも、ブロック・イレーズやアンマップによりデータを消去しても良い。暗号化機能が無効な場合、ブロック・イレーズかアンマップの何れかによりデータが消去される。通常、リバート機能を実現するためのリバートコマンド及びリバートＳＰコマンドはストレージ装置の廃棄時もしくはパーソナルコンピュータ（ＰＣ）ベンダもしくはストレージ装置のベンダでの再製造時にホストから発行される。リバートコマンド及びリバートＳＰコマンドの詳細は後述するが、以下の説明では、断りが無い限り、リバートコマンドはリバートコマンド及びリバートＳＰコマンドの総称として使われる。
【００２０】
一方、ＮＶＭｅ規格はライトプロテクション機能を定義する。ホストはコマンドによりネームスペース単位でライトを禁止（ライトプロテクト）できる。なお、リードを禁止（リードプロテクト）するコマンドは定義されていない。ライトプロテクション機能はＮＶＭｅ規格のオプション機能であるため、ストレージ装置がライトプロテクション機能をサポートしているかどうかをホストに示す必要がある。ホストはストレージ装置がサポートしているコマンドやフューチャーを確かめるためのアイデンティファイ（Identify）コマンドをストレージ装置へ発行することができる。ストレージ装置は、アイデンティファイコマンドを受けると、自身がサポートしているコマンドやフューチャーを示すレスポンスをホストに返送する。
【００２１】
レスポンスは、ストレージ装置がサポートしているライトプロテクション機能の詳細を示すフィールドを含む。ライトプロテクション機能とは、ホストがネームスペースのライトプロテクションステートを制御することを可能とする機能である。ライトプロテクションステートは、図３を参照して後述する状態遷移図に示すように、例えばノーライトプロテクト（No Write Protect）ステート、ライトプロテクト（Write Protect）ステート、ライトプロテクト・アンティル・パワーサイクル（Write Protect Until Power Cycle）ステート、パーマネント・ライトプロテクト（Permanent Write Protect）ステートの４つのステートを含む。
【００２２】
ノーライトプロテクトステートはネームスペースがライトプロテクトされていないステートである。ライトプロテクトステートはネームスペースがライトプロテクトされているステートである。ライトプロテクト・アンティル・パワーサイクルステートは次のパワーサイクルまではネームスペースがライトプロテクトされているステートである。パーマネント・ライトプロテクトステートはネームスペースが永久的にライトプロテクトされているステートである。ライトプロテクト・アンティル・パワーサイクル以外のライトプロテクションステートではパワーサイクルが発生してもライトプロテクションステートは不変である。
【００２３】
ストレージ装置がサポートしているライトプロテクション機能を示すフィールドを含むレスポンスを受信したホストは、ストレージ装置の或るネームスペースのライトプロテクションステートを指定することができる。ホストは、ネームスペースを指定してライトプロテクションコマンドを発行する。図２はライトプロテクションコマンドに含まれるライトプロテクションステートフィールドの一例を示す。例えば、ライトプロテクションコマンドはＮＶＭｅ規格のＣｏｍｍａｎｄ  Ｄｗｏｒｄ１１で指定される。
【００２４】
ライトプロテクションステートフィールドは例えば３ビットであり、ホストはライトプロテクションステートフィールドのビット２〜ビット０の値に応じて次のようにライトプロテクションステートを指定する。
000b: ノーライトプロテクトステート
001b: ライトプロテクトステート
010b: ライトプロテクト・アンティル・パワーサイクルステート
011b: パーマネント・ライトプロテクトステート
100b to 111b:  リザーブド（Reserved）
図３はライトプロテクションステートの遷移を示す状態遷移図である。ライトプロテクト・アンティル・パワーサイクルステートからノーライトプロテクトステートへの遷移以外のステート遷移は図２に示したライトプロテクションステートフィールドを含むライトプロテクションコマンドに基づく。遷移を示す矢印に付記されている数字はライトプロテクションコマンドに含まれるライトプロテクションステートフィールドの値であり、遷移条件を示す。ネームスペースが作成されたばかりの初期状態では、ネームスペースのライトプロテクションステートは、ノーライトプロテクトステートである。ノーライトプロテクトステートでライトプロテクションコマンドが発行されると、ライトプロテクションステートフィールドの値に応じて、ネームスペースのライトプロテクションステートはライトプロテクトステート、ライトプロテクト・アンティル・パワーサイクルステート又はパーマネント・ライトプロテクトステートに遷移する。
【００２５】
ライトプロテクト・アンティル・パワーサイクルステートでリセット信号のアサートや電源断による再起動などによってパワーサイクルのイベントが発生すると、ネームスペースのライトプロテクションステートはノーライトプロテクトステートに遷移する。このようにライトプロテクションステートの変更にはＰＩＮは不要で、ライトプロテクションコマンドだけでライトプロテクションステート（パーマネント・ライトプロテクトステート以外）を変更できる。なお、パーマネント・ライトプロテクトステートは他のステートに遷移することはない。ネームスペースのライトプロテクションステートがパーマネント・ライトプロテクトステートの場合、ライトプロテクションステートを変更するライトプロテクションコマンドが発行されても、ライトプロテクションコマンドは実行されず、エラー信号がホストに返送される。
【００２６】
ライトプロテクションステートがライトプロテクトステートのネームスペースは、ホストからライトプロテクションコマンドが発行されない限り、ストレージ装置の電源がシャットダウンされてもライトプロテクションステートはライトプロテクトステートを維持する。しかし、ライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルステートのネームスペースについては現在のパワーサイクルではライトプロテクション機能が有効であるが、次のパワーサイクルではライトプロテクションステートはノーライトプロテクトステートに遷移する。そのため、必要があれば、ライトプロテクションステートをノーライトプロテクトステートからライトプロテクトステートへ遷移させるライトプロテクションコマンドを次のパワーサイクルで再度ストレージ装置へ発行する必要がある。なお、ライトプロテクションステートの例は、図３に示す４つのステートに限定されない。さらに、状態遷移の例も図３に示す遷移に限定されない。
【００２７】
近年ＣＤ−ＲＯＭ等の外部記憶媒体のドライブを備えないＰＣが増えたことにより、リカバリー用ＯＳは外部記憶媒体ではなくＰＣに内蔵のストレージ装置内に格納されるようになってきている。リカバリー用ＯＳは、ＰＣを工場出荷時のＯＳ及びその状態に戻すためのソフトウエアである。エンドユーザはストレージ装置内のリカバリー用ＯＳを間違って削除することもあり得る。この誤削除を防止するために、リカバリー用ＯＳを格納するネームスペースとＯＳ及びユーザデータを格納するネームスペースとを分けておき、ＰＣ出荷前にＰＣベンダの工場でリカバリー用ＯＳ格納用のネームスペースに対してライトプロテクションステートをライトプロテクトステート又はパーマネント・ライトプロテクトステートに遷移させるライトプロテクションコマンドを発行しておく。これにより、ライトプロテクションステートがライトプロテクトステートのネームスペースへの書き込みが禁止され、リカバリー用ＯＳが間違ってエンドユーザにより削除されることが防止される。なお、エンドユーザがリカバリー用ＯＳ格納用のネームスペースに対してライトプロテクションステートをライトプロテクトステート又はパーマネント・ライトプロテクトステートに遷移させるライトプロテクションコマンドを発行し、ネームスペースをライトプロテクトすることも可能である。
【００２８】
このように、特定の領域へのユーザデータの書き込み（消去も含む）を禁止するという目的ではＴＣＧ規格に基づくロック機能とＮＶＭｅ規格に基づくライトプロテクション機能は類似している。ただし、ＮＶＭｅ規格に基づくライトプロテクション機能は想定しているユースケースが狭く、それだけシンプルな仕様になっている。一方、ＴＣＧ規格に基づくロック機能は様々なユースケースを想定しているため、複雑な仕様になっている。例えば、ＮＶＭｅ規格では、ライトプロテクション機能を有効／無効とする設定にはＰＩＮが不要であり、ライトプロテクトの解除は基本的にコマンドだけでできる。ただし、ネームスペースのライトプロテクションステートがパーマネント・ライトプロテクトステートに遷移したら、他のライトプロテクションステートに遷移できないし、ライトプロテクト・アンティル・パワーサイクルステートはコマンドでは解除できず、次のパワーサイクルの発生により解除される。ＴＣＧ規格では、ライトロックを解除するにはＰＩＮが必要である。また、ライトロック機能の有効、無効を設定することも可能であるが、設定の変更にはＰＩＮが必要である。
【００２９】
また、ＴＣＧ規格では、ストレージ装置を初期状態に戻すためのリバートコマンド及びリバートＳＰ（Security Provider）コマンドも定義されている。ホストからリバートコマンドを受けると、ストレージ装置はロック状態を解除するとともに、データを消去する。リバートコマンドとライトプロテクションコマンドはそれぞれ独立している規格化団体で策定されているため、両コマンドがともに発行された場合の動作をそれぞれの規格は考慮していない。
【００３０】
例えば、ＴＣＧ規格に基づく動作がＮＶＭｅ規格に基づく動作より優先して実行される（すなわち、ＴＣＧ規格に基づく初期化の権限がＮＶＭｅ規格に基づくライトプロテクトの権限より強い）と仮定すると、リバートコマンドによりストレージ装置を初期化する場合、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースのデータまで無効化又は消去されてしまう。この場合、ライトプロテクトされたネームスペースに格納されているリカバリー用ＯＳまで無効化又は消去され、リカバリーＯＳを用いてＰＣを工場出荷時のＯＳ及びその状態に戻すことができなくなってしまう。
【００３１】
反対に、ＮＶＭｅ規格に基づく動作がＴＣＧ規格に基づく動作より優先して実行される（すなわち、ＮＶＭｅ規格に基づくライトプロテクトの権限がＴＣＧ規格に基づく初期化の権限より強い）と仮定すると、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースにＴＣＧ規格に基づきレンジを配置しようとしても、ストレージ装置はレンジを配置せず、ホストにはエラー信号を返送する。又はＮＶＭｅ規格に基づきライトプロテクトされたネームスペースにＴＣＧ規格に基づき配置されたレンジに対してライトロック又はリードロックをかけようとしても、ストレージ装置はライトロック又はリードロックを実行せず、ホストにエラー信号を返送する。しかし、既存のＴＣＧ規格に準拠したホストはネームスペースがＮＶＭｅ規格に基づきライトプロテクトされていることが分からず、レンジ配置又はレンジのロック設定で何故エラー信号が返送されたのか分からない。
【００３２】
ＴＣＧ規格に基づくレンジの配置とレンジの設定を図４を参照して説明する。ここでは、説明の便宜上、レンジの種類はネームスペースに配置されるネームスペース・グローバルレンジとする。ホストからレンジ配置コマンドが発行されると、コマンドで指定されたネームスペースにネームスペース・グローバルレンジが配置される。レンジ配置コマンドは、例えばＴＣＧ規格で定義されているアサインコマンド（Assign method）により実現される。レンジが配置されると、図４（ａ）に示すような配置テーブルにネームスペース・グローバルレンジとネームスペースとの対応関係が登録される。図４（ａ）は、ネームスペース・グローバルレンジＲ１がネームスペースＮＳ３に配置され、ネームスペース・グローバルレンジＲ２がネームスペースＮＳ１に配置されたことを示す。ネームスペースにネームスペース・グローバルレンジが配置される毎に配置テーブルが更新される。
【００３３】
次に、配置されたレンジに対してロック機能を有効とするためのレンジ設定コマンドがホストから発行されると、図４（ｂ）に示すような設定テーブルに、コマンドで指定されたレンジのリードロック機能及び／又はライトロック機能が有効（True）か無効（False）かが登録される。レンジ設定コマンドは、例えばＴＣＧ規格で定義されているセットコマンド（Set method）により実現される。さらに、有効状態のロック機能を無効状態に変更する、またはその逆に無効状態のロック機能を有効状態に変更するためのＰＩＮも設定される。簡略化のための図４（ｂ）ではレンジにＰＩＮが対応しているように記述したが、実際には、ＰＩＮは、例えばＴＣＧ規格で定義されているオーソリティ（Authorityと称する）に設定される。ホストがユーザ１のAuthorityのＰＩＮを設定し、レンジのロック機能の有効／無効の設定権限がAuthorityに付与される。つまり、レンジを管理するテーブル（レンジ、リードロックの状態、ライトロックの状態、アクセスコントロールを示すテーブルのエントリー番号）と、アクセスコントロールを管理するテーブル（どのAuthorityがどの権限を有するかを管理するテーブル）と、Authorityを管理するテーブル（Authorityの種別と、それに対応したＰＩＮの値から構成されるテーブル）の３つのテーブルから構成される。以下では簡略化のために、３つのテーブルを統合した図４（ｂ）の形態で説明する。図４（ｂ）は、レンジＲ１のリードロック機能とライトロック機能がともに有効（True）であり、レンジＲ１にユーザ１のAuthorityのＰＩＮであるＰＩＮ１が設定されたこと及びレンジＲ２のリードロック機能は有効（True）であり、ライトロック機能は無効（False）であり、レンジＲ２にユーザ２のAuthorityのＰＩＮであるＰＩＮ２が設定されたことを示す。
【００３４】
レンジの配置とレンジに対するロック機能の設定の実行順番は上記の逆でも良い。すなわち、図４（ｂ）に示すようにレンジのロック機能が先に設定され、次にロック機能が設定されたレンジが図４（ａ）に示すようにネームスペースに配置されても良い。
なお、ネームスペースにレンジを配置してもロック機能を設定しなければ、ＰＩＮを入力せずともそのレンジにリード又はライトできるので、レンジを配置してもロック機能が設定されていなければ、レンジが配置されていないことと等価である。そのため、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースに関してＴＣＧ規格に基づくレンジ配置コマンドが発行され、そのネームスペースにレンジを配置しようとした場合、その時点でエラー信号を直ぐにホストに返送せずに、ライトプロテクトされたネームスペースに配置されたレンジにリードロック機能またはライトロック機能を有効、無効を設定しようとした時にエラー信号をホストに返送しても良い。その場合でも、ネームスペースがライトプロテクトされていることが分からない既存のＴＣＧ規格に準拠したホストは、レンジの設定で何故エラー信号が返送されたのか分からない。
【００３５】
一実施形態は、ＴＣＧ規格に基づくロック機能とＮＶＭｅ規格に基づくライトプロテクション機能が併用された場合の動作を規定するものである。例えば、一実施形態では、ＮＶＭｅ規格に基づき或るネームスペースがライトプロテクトされ、ＴＣＧ規格に基づきネームスペース毎に異なる暗号鍵が設定される。一実施形態では、この状態でＴＣＧ規格に基づきストレージ装置を初期化するためのリバートコマンドが発行された場合の種々の動作例を定義する。動作の一例では、リバートコマンドが発行されたとしても、ライトプロテクトされているネームスペースに配置されたネームスペース・グローバルレンジについては暗号鍵の更新が禁止される。これによって、ＴＣＧ規格に基づくリバートコマンドの実行時にＮＶＭｅ規格に基づきライトプロテクトされたネームスペースのデータを保護する事が可能となる。
【００３６】
［第１実施形態の構成］  
図５は第１実施形態のストレージ装置１２を含む情報処理システムの構成例を示す。ストレージ装置１２はホスト装置１４に接続され、ホスト装置１４から送信されるデータを自身の記憶媒体に書き込む又は自身の記憶媒体から読み出したデータをホスト装置１４へ送信する。ストレージ装置１２とホスト装置１４との間のインターフェースは、ＳＣＳＩ、ＡＴＡ、ＮＶＭＥｘｐｒｅｓｓ（登録商標）、ｅ・ＭＭＣ等がある。図５（ａ）に示すように、１つのストレージ装置１２が１つのホスト装置１４に対して一対一で接続されても良い。また、図５（ｂ）に示すように、複数のストレージ装置１２がネットワーク１６を介してホスト装置１４に対して多対一で接続されても良い。各ストレージ装置がネットワーク１６に直接に接続されても良いし、複数のストレージ装置が図示しないエキスパンダー、スイッチ等を介してネットワーク１６に接続されても良い。図５（ａ）では、ホスト装置１４はＰＣ等の電子機器である。図５（ｂ）では、ホスト装置１４はサーバ等である。図５（ａ）に示すストレージ装置１２は、ＰＣベンダによりホスト装置１４としてのＰＣの筐体内に組み込まれても良い。１台のストレージ装置１２を使うユーザの人数は１人に限られない。１台のストレージ装置１２が複数のユーザにより使用される場合もある。例えば、図５（ｂ）に示すように、ホスト装置１４が複数のユーザに対して仮想マシンを提供するサービスを行う場合、１台のストレージ装置１２が複数の領域（例えばネームスペース、レンジ、パーティション）に分割され、各領域が各ユーザの仮想マシンとなることが可能である。
【００３７】
図６はストレージ装置１２の構成の一例を示す。
ストレージ装置１２はデータ蓄積部３６と、コントローラ１８とを備える。データ蓄積部３６は不揮発性の記憶装置であり、例えばフラッシュメモリから構成される。コントローラ１８は複数の機能部からなる。各機能部あるいは複数又は全ての機能部はＣＰＵやSystem-on-a-chip（ＳｏＣ）が実行するソフトウエアあるいはファームウェアによって実現されても良いし、各機能を実行するハードウェアによって実現されても良い。ソフトウエアあるいはファームウェアはデータ蓄積部３６の領域、たとえばホスト装置１４がＬＢＡで指定する範囲外の領域に格納されている。コントローラ１８はインターフェース（Ｉ／Ｆ）処理部２２を含む。Ｉ／Ｆ処理部２２は例えば上記したインターフェースを介してホスト装置１４と接続される。Ｉ／Ｆ処理部２２には、コントローラ１８内のリード／ライト処理部２４、認証処理部２６、認可処理部２８及びライトプロテクト制御部３２が接続される。
【００３８】
リード／ライト処理部２４は暗号処理部３４に接続され、暗号処理部３４はデータ蓄積部３６に接続される。データ蓄積部３６は大容量の不揮発性の記憶媒体、例えばフラッシュメモリ、磁気ディスク等からなる。
認可処理部２８は認証処理部２６、レンジ設定部４８、ロック制御部５２及び初期化処理部５８に接続される。レンジ設定部４８は初期設定部５４、レンジ検査部３８、暗号鍵管理部４２、ロック制御部５２、レンジ管理部６４及びライトプロテクト管理／検査部５６に接続される。
【００３９】
レンジ検査部３８はリード／ライト処理部２４に接続される。暗号鍵管理部４２は暗号処理部３４、乱数生成部４４、初期化処理部５８及び未使用鍵数管理部６２に接続される。
認証処理部２６はストレージ装置１２へのアクセス制御を行うためにホストから指定されたAuthorityに対応するＰＩＮを用いてユーザ認証を行う。認証処理部２６にはＰＩＮ管理部４６が接続される。ＰＩＮ管理部４６はデータ蓄積部３６又はデータ蓄積部３６とは異なるフラッシュメモリの領域に格納された複数のAuthority及びＰＩＮ、例えば所有者ＰＩＮ（Security Identifier：ＳＩＤとも称する）４６ａ、管理者ＰＩＮ（AdminＰＩＮとも称する）４６ｂ、ラベルＰＩＮ（ＰＳＩＤとも称する）４６ｃ、ユーザＰＩＮ４６ｄ等を管理する。なお、Authorityの種別とＰＩＮは別なものだが、ここでは説明を簡略化するために、ＰＩＮをAuthorityの意味として表現する。つまり正確にはホストから所有者であること証明するために所有者ＰＩＮを用いて認証するという意味を、「所有者ＰＩＮで認証する」という簡易的な表現で以下述べる。同様に、正確には管理者のAuthorityはXの権限を有すると表現するところ、以下では簡易的に「管理者ＰＩＮはXの権限を有する」と表現する。ユーザ権限を階層化するために、管理者ＰＩＮ４６ｂとユーザＰＩＮ４６ｄが設定されている。Authorityは発行できるコマンドの種類を定義するものである。例えば、所有者ＰＩＮ４６ａで認証されたホストのアプリケーションは、アクティベートコマンドとリバートコマンドを発行する権限を有する。どのＰＩＮで（どのAuthorityで）何のコマンドを発行できるかは認可処理部２８で管理されている。アクティベートコマンドはロック機能を有効化するためのコマンドである。リバートコマンドはＰＩＮを初期値に戻し、ロック機能を無効にし、データを強制消去するためのコマンドである。管理者ＰＩＮ４６ｂはリバートＳＰコマンドを発行する権限を有する。リバートＳＰコマンドはＰＩＮを初期値に戻し、ロック機能を無効にするためのコマンドであり、データ強制無効化又は消去については無効化又は消去するかどうかをパラメータで指定できるコマンドである。リバートＳＰコマンドもＴＣＧ規格で定義されるコマンドである。ラベルＰＩＮ４６ｃはリバートコマンドを発行する権限を有する。ユーザＰＩＮ４６ｄはコマンドを発行する権限を有しないが、ユーザに割り当てられた領域のロックを解除（アンロック）することができる。
【００４０】
ユーザはストレージ装置１２を何らかの理由で工場出荷時の状態に戻したいことがある。例えば、ストレージ装置１２を破棄する時はストレージ装置１２の所有者はデータ蓄積部３６に格納されたユーザデータがストレージ装置１２から流出することを防止したいといったことが考えられる。ストレージ装置１２を工場出荷時の状態に戻す初期化は、ユーザデータの無効化又は消去（たとえば読み出せないようにすること）と工場出荷後に設定されたＰＩＮの初期化の両方を含む。ここでは、ストレージ装置１２の初期化には特定のＰＩＮ、例えば所有者ＰＩＮ４６ａ、管理者ＰＩＮ４６ｂまたはラベルＰＩＮ４６ｃが必要であるとする。ＴＣＧ規格では、ホスト装置１４はリバートコマンドあるいはリバートＳＰコマンドを発行することによりストレージ装置を初期状態に戻すことができる。
【００４１】
ストレージ装置１２はＴＣＧ規格に基づくロック機能も備え、レンジ毎にロック機能を有効、無効とすることができる。ロック機能の有効、無効を変更するためには、予め設定されたＰＩＮ（例えば管理者ＰＩＮ４６ｂ）が必要である。
ホスト装置１４はコマンドを発行する前にコマンドの発行元ユーザ（例えば、ホスト装置１４のユーザ）のauthorityとＰＩＮをストレージ装置１２に送信する。認証処理部２６は、ホスト装置１４から送信されたＰＩＮがＰＩＮ管理部４６により管理されているauthorityのＰＩＮの値と一致するか否かを判定することによりユーザ認証を行う。その後、同一セッションでホスト装置１４がコマンドをストレージ装置１２に発行すると、認可処理部２８はコマンド発行元のユーザが当該コマンドを発行する権限があるか否かを確認する。
【００４２】
例えば、所有者ＰＩＮ４６ａで認証されたユーザに限り、ストレージ装置１２を初期状態に戻すためのリバートコマンドを発行可能であると認可処理部２８が管理していたとする。所有者ＰＩＮ４６ａで認証が成功したユーザ（Authority）がホスト装置１４からストレージ装置１２を初期化するためのリバートコマンドを発行した場合、認可処理部２８はコマンドを発行したユーザはリバートコマンドの発行権限があると判定する。もし、ユーザＰＩＮ４６ｄで認証が成功したユーザがリバートコマンドを発行した場合、認可処理部２８はコマンドを発行したユーザはリバートコマンドの発行権限がないと判定する。認可処理部２８は、リバートコマンドを発行したユーザがリバートコマンドを発行する権限があると判定した場合、リバートコマンドを初期化処理部５８に転送し、ＰＩＮを初期値に再設定させるとともに、レンジ設定部４８に対してロック機能を無効にする指示を送信する。
【００４３】
また、認可処理部２８はユーザＰＩＮ４６ｄまたは管理者ＰＩＮ４６ｂで認証が成功した場合に限って、ホストから発行されたアンロックコマンドをロック制御部５２に転送する。ロック制御部５２はストレージ装置１２をアンロックする（ロックされている状態を解除し、リード／ライトアクセスできるようにする）動作を行う。なお、ラベルＰＩＮ４６ｃで認証が成功した場合、認可処理部２８はアンロックコマンドの認可処理に失敗し、その結果としてホストから発行されたアンロックコマンドをロック制御部５２に転送しないので、ストレージ装置１２のロックは解除されない。
【００４４】
ロック制御部５２はデータ蓄積部３６のロック機能をレンジ管理部６４で管理されるレンジ単位で有効、無効とすることができる。
レンジ管理部６４はロック機能が定義されるレンジがストレージ装置１２全体であるのか、ネームスペース全体であるのか、又はネームスペース内の特定のＬＢＡ範囲であるのかと、各レンジのロック機能が有効か無効かを管理する。この管理のために、レンジ管理部６４は、例えば図７に示すようなレンジ管理テーブル＃１を備える。図７に示す管理テーブル＃１はデータ蓄積部３６以外のフラッシュメモリ又はデータ蓄積部３６に格納される。ＴＣＧ規格では、１つのネームスペースには複数のＬＢＡ範囲が配置可能であり、各ＬＢＡ範囲にネームスペース・ノングローバルレンジが配置され得る。レンジ管理テーブル＃１のネームスペース・グローバルレンジの欄は、レンジがネームスペース・グローバルレンジ（ネームスペース・グローバルレンジはグローバルレンジを含む）である（Ｔ）か、ネームスペース・グローバルレンジではない（Ｆ）かを示す。
【００４５】
レンジ管理テーブル＃１の一例は、「グローバルレンジ」というレンジはストレージ装置全体（全てのネームスペース）に配置され、「グローバルレンジ」に対して、リードロックは有効（Ｔ）とされ、ライトロックは無効（Ｆ）とされ、仮想レンジではない（Ｆ）ことを示す。詳細は後述するが、仮想レンジは、ホスト装置１４からの指示がなく設定され、ストレージ装置１２が内部実装として管理するレンジであり、ロック機能を持たない。同様に、レンジ管理テーブル＃１は、「レンジ１」というネームスペース・グローバルレンジはネームスペース１に配置され、「レンジ１」に対して、リードロックもライトロックも有効（Ｔ）とされ、仮想レンジではない（Ｆ）ことを示し、「レンジ２」というネームスペース・ノングローバルレンジはネームスペース１に配置され、「レンジ２」に対して、リードロックもライトロックも無効（Ｆ）とされ、仮想レンジではない（Ｆ）ことを示し、「レンジ３」というネームスペース・ノングローバルレンジはネームスペース１に配置され、「レンジ３」に対して、リードロックもライトロックも無効（Ｆ）とされ、仮想レンジではない（Ｆ）ことを示し、「レンジＡ」という仮想レンジはネームスペース２に設定されていることを示し、「レンジＢ」という仮想レンジはネームスペース３に設定されていることを示す。これにより、ストレージ装置の少なくとも一部の領域をリードロック及び／又はライトロックすることができる。
【００４６】
図６の説明に戻り、レンジ検査部３８は、ホスト装置１４から供給されるリードコマンド、ライトコマンドに含まれるアドレス範囲がどのレンジに属するかを検査し、レンジのリードロック、ライトロックの設定状態に応じてリードコマンド、ライトコマンドの実行を許可するか禁止するかを判断し、判断結果をリード／ライト処理部２４に供給する。リード／ライト処理部２４が、ホスト装置１４から供給されるリードコマンド、ライトコマンドの実行をこの判断結果に応じて制御することにより、ＴＣＧ規格に基づくレンジのリードロック、ライトロックが実現される。
【００４７】
ロック制御部５２は、ホスト装置１４からのレンジ配置コマンドに応じてネームスペースに配置されたレンジに対してレンジ設定コマンドに基づいてリードロック又はライトロックをかけ得る状態とするか否か、すなわちロック機能を有効とするか無効とするかをレンジ設定部４８に指示する。
【００４８】
リード／ライト処理部２４は、Ｉ／Ｆ処理部２２を介してホスト装置１４から入力されるライトコマンドに基づき、Ｉ／Ｆ処理部２２を介してホスト装置１４から入力されるユーザデータを暗号処理部３４に送信する。暗号処理部３４は暗号鍵を用いてリード／ライト処理部２４から送信されたユーザデータを暗号化し、暗号化データをデータ蓄積部３６に記録（ライトとも称する）する。
【００４９】
暗号処理部３４はデータ蓄積部３６から再生（リードとも称する）した暗号化データを、記録時に用いた暗号鍵と同じものを用いて復号処理し、元のユーザデータを復号し、復号されたユーザデータをＩ／Ｆ処理部２２を介してホスト装置１４へ出力する。
暗号鍵管理部４２は、乱数生成部４４によって生成されるランダムな値に基づいて暗号鍵を作成し、データ蓄積部３６又はデータ蓄積部３６とは異なるフラッシュメモリに格納する。暗号処理部３４はこの鍵を用いてユーザデータを暗号化する。暗号化のアルゴリズムの一例はAdvanced Encryption Standard(AES)のような公知の共通鍵アルゴリズムがある。
【００５０】
ライトプロテクト制御部３２は、ホスト装置１４からどのネームスペースをどのライトプロテクションステートでライトプロテクトするかを指定したライトプロテクションコマンドを受け取ると、ライトプロテクトするネームスペースとライトプロテクションステートをライトプロテクト管理／検査部５６に設定する。
【００５１】
ライトプロテクト管理／検査部５６は、どのネームスペースがどのライトプロテクションステートでライトプロテクトされているかを管理する。ライトプロテクト管理／検査部５６は、ライトコマンドを受け取ると、どのネームスペースについてのライトコマンドかを検査し、そのネームスペースのライトプロテクションステートに応じてライトコマンドの実行を許可するか禁止するかを判断し、判断結果をリード／ライト処理部２４に送る。これにより、ライトプロテクトされたネームスペースに関するライトアクセスが禁止され、ライトプロテクトされたネームスペースのデータが保護される。
【００５２】
従来技術では、ホスト装置１４がグローバルレンジに加えて複数のネームスペース・グローバルレンジを配置すれば、ネームスペース毎の暗号鍵の更新／非更新を制御することが可能であるが、ホスト装置１４がグローバルレンジしか配置しない場合、ネームスペース毎の暗号鍵の更新は不可能であった。さらに、従来技術ではリバートコマンドもしくはリバートＳＰコマンド実行時にグローバルレンジの鍵を更新してしまうため、任意のネームスペースの鍵は更新せず、それ以外のネームスペースの鍵を更新するといった制御も不可能であった。実施形態では、ホスト装置１４が１つのグローバルレンジしか配置しない場合（ネームスペース・グローバルレンジを配置しない場合）でも、リバートコマンド実行時にネームスペース毎の暗号鍵の更新／非更新を制御することが可能である。
【００５３】
これを可能とするために、レンジ管理部６４は仮想レンジを備える。従来技術では、レンジはホスト装置１４が明示的にコマンドを送信することで図１に示したようにレンジのＬＢＡ範囲を設定したり、各レンジに対してリードロック及び／又はライトロックの設定をしたりした。仮想レンジは、ホスト装置１４からはコマンドによって設定する事はできず、ストレージ装置１２の内部実装として管理されるレンジである。初期設定部５４は、ネームスペースを作成すると、ネームスペース・グローバルレンジが配置されていないネームスペースに対してストレージ装置１２の内部実装として仮想レンジを設定するようレンジ設定部４８に指示するとともに、仮想レンジ、すなわちネームスペース毎に暗号鍵を分けて管理するよう暗号鍵管理部４２に指示する。すなわち、グローバルレンジしか存在しない場合、従来技術ではホスト装置１４が平文で書き込んだユーザデータは、グローバルレンジの暗号鍵で暗号化してデータ蓄積部３６に蓄積していたが、実施形態ではユーザデータはネームスペース毎にアサインされた仮想レンジの暗号鍵で暗号化される。つまり、実施形態ではホスト装置１４が平文でユーザデータを図７のレンジ管理テーブル＃１に示すネームスペース２に書き込もうとすると、ストレージ装置１２はネームスペース２の仮想レンジＡの暗号鍵を用いて暗号化する。同様にホスト装置１４が平文でユーザデータをネームスペース３に書き込もうとすると、ストレージ装置１２はネームスペース３の仮想レンジＢの暗号鍵を用いて暗号化する。グローバルレンジの鍵はユーザデータ暗号化には利用されない。前述のように、仮想レンジをホスト装置１４から設定することはできないため、ホスト装置は仮想レンジを指定して暗号鍵を破棄する事はできない。その代わり、ホスト装置１４がグローバルレンジの暗号鍵を更新（破棄）するコマンドを送信すると、ストレージ装置１２は仮想レンジの暗号鍵を更新（破棄）する。ホスト装置１４が配置するグローバルレンジ又はネームスペース・グローバルレンジはロック機能を持つが、レンジ設定部４８が設定する仮想レンジはロック機能を持たない。そのため、仮想レンジは、ＰＩＮでロックを設定したり解除したりする機能も持たない。
【００５４】
レンジ管理部６４はどのネームスペースがライトプロテクトされているか否か、どのネームスペースに仮想レンジが設定されているかを管理する。
以下、暗号鍵管理部４２の動作を説明するが、以下の説明は、下記の手順を実施することを前提としている。まず、初期状態では図８Ａに示すようにグローバルレンジしか存在しない。グローバルレンジに対して、リードロックは有効とされ、ライトロックは無効とされている。図８Ａ、図８Ｂ、図８Ｃはレンジ管理テーブル＃１の内容の変化を示す。
【００５５】
ホスト装置１４はＮＶＭｅ規格に基づくネームスペース作成コマンドを発行し、ストレージ装置１２の初期設定部５４はコマンドで指定されたデータ蓄積部３６の領域にネームスペース１、ネームスペース２を作成する。ストレージ装置１２では、ホスト装置１４からの指示を受けることなく、ネームスペース１、ネームスペース２に対して仮想レンジＡ、仮想レンジＢが設定され、各仮想レンジ、すなわちネームスペース毎に暗号鍵が割り当てられる。これにより、レンジ管理テーブル＃１の内容は図８Ｂに示すような状態になる。
【００５６】
その後、ホスト装置１４はＴＣＧ規格に基づくレンジ配置コマンドを発行し、レンジ設定部４８はコマンドで指定されたネームスペース（例えばネームスペース１）にネームスペース・グローバルレンジ１を配置する。この際、レンジ設定部４８はネームスペース１に設定された仮想レンジをネームスペース・グローバルレンジ１として設定する。ネームスペース・グローバルレンジに対して、リードロックもライトロックも無効とされている。これにより、レンジ管理テーブル＃１の内容は図８Ｃに示すような状態になる。
【００５７】
次に、ホスト装置１４はＮＶＭｅ規格に基づくライトプロテクトコマンドを発行し、ライトプロテクト管理／検査部５６はコマンドで指定されたネームスペース（例えばネームスペース２）にライトプロテクト設定を行う。これにより、図８Ｄに示すような状態になる。図８Ｄはレンジ管理部６４が管理するレンジ管理テーブル＃２の一例を示す。レンジ管理テーブル＃２はデータ蓄積部３６の領域、たとえばホスト装置１４がＬＢＡで指定する範囲外の領域に格納される。
【００５８】
上述したように、仮想レンジはストレージ装置の内部実装であるので、ホスト装置１４は認識できないレンジである。従来技術では、初期状態で暗号鍵はグローバルレンジというレンジの暗号鍵しか備えていない。実施形態では、初期状態でネームスペースが作成されると各ネームスペースに仮想レンジが設定され、各ネームスペース分の暗号鍵が仮想レンジに設定される。
【００５９】
図７に示すレンジ１、レンジ２、レンジ３はホスト装置１４がストレージ装置１２に対して明示的に設定するレンジである。ホスト装置１４によってレンジ２をネームスペース２に割り当てられたネームスペース・グローバルレンジとして設定するコマンドを送信すると、レンジ設定部４８は、もともとネームスペース２に割り当てられていた仮想レンジＡを図７に示すレンジ２の設定に変更する。この際、レンジ２（仮想レンジ２）の暗号鍵を更新してもよい。
【００６０】
図７のような状態のストレージ装置１２において、全ての仮想レンジの暗号鍵がグローバルレンジの暗号鍵となる。すなわち、グローバルレンジの暗号鍵は存在しない。
従来技術では、リバートコマンドを実行する際、グローバルレンジの暗号鍵を更新する処理が行われる。同様に、グローバルレンジに対するGenKeyコマンドでは、グローバルレンジの暗号鍵を更新する処理が行われる。
【００６１】
実施形態では、リバートコマンドを実行する際、全ての仮想レンジの暗号鍵を更新する処理が行われる。しかし、ＮＶＭｅ規格に基づくライトプロテクト機能が有効であり、少なくとも１つのネームスペースがライトプロテクトされている場合、ライトプロテクトされているネームスペースの仮想レンジの暗号鍵は更新されない。このため、ホスト装置１４が１つのグローバルレンジしか配置しない場合（ネームスペース・グローバルレンジを配置しない場合）でも、リバートコマンド実行時にネームスペース毎の暗号鍵の更新／非更新を制御することが可能である。これによって、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースのデータをＴＣＧ規格に基づくリバートコマンドの実行時に保護する事が可能となり、ＴＣＧ規格に基づくリバートコマンドとＮＶＭｅ規格に基づくライトプロテクション機能とを併用することができる。
【００６２】
ホスト装置１４はリバートコマンドを発行する前にコマンド発行元ユーザのＰＩＮをストレージ装置１２に送信する。認証処理部２６はＰＩＮを用いてコマンドの発行元のユーザ認証を行う。認証処理部２６でＰＩＮによるユーザ認証が成功すると、認可処理部２８は、認証が成功したＰＩＮの種類に基づいて、コマンドの発行元がコマンドを発行可能な権限を有するかどうかの判定処理を行う。認可処理部２８は、発行元がリバートコマンドの発行権限があると判定すると、リバートコマンドを初期化処理部５８に転送し、ＰＩＮを初期値に再設定する。初期化処理部５８は、リバートコマンドを受け取ると、ライトプロテクト管理／検査部５６にどのネームスペースがライトプロテクトされているかを問い合わせる。初期化処理部５８は、ライトプロテクトされているネームスペースに設定された仮想レンジの暗号鍵は更新せずに、ライトプロテクトされているネームスペース以外のネームスペースに設定された仮想レンジの暗号鍵を更新するように暗号鍵管理部４２に指示する。これにより、ＮＶＭｅ規格に基づきライトプロテクトされているネームスペースの暗号鍵がＴＣＧ規格に基づくリバートコマンドにより更新されることが防止され、ライトプロテクトされているネームスペースに格納されているデータ、例えばリカバリー用のＯＳが消去されることが防止される。
【００６３】
ネームスペースがライトプロテクトされている場合の暗号鍵の更新の例を２つ説明する。先ず、１つのネームスペース１がライトプロテクトされ、他のネームスペースはライトプロテクトされておらず、グローバルレンジしか配置されていない状況を仮定する。ここで、リバートコマンドが発行されると、暗号鍵管理部４２は、ライトプロテクトされたネームスペース１に設定された仮想レンジ１を除く他の全ての仮想レンジの暗号鍵を更新する。すなわち、ライトプロテクトされたネームスペース１に設定された仮想レンジ１の暗号鍵は更新されない。
【００６４】
次に、１つのネームスペース１がライトプロテクトされ、他のネームスペースはライトプロテクトされておらず、グローバルレンジが配置され、さらにライトプロテクトされていない各ネームスペースにネームスペース・グローバルレンジが配置された状況を仮定する。ここで、リバートコマンドが発行されると、暗号鍵管理部４２は、ライトプロテクトされていない全てのネームスペースに配置されたネームスペース・グローバルレンジの暗号鍵を更新するが、ライトプロテクトされたネームスペースに配置された仮想レンジの鍵は更新しない。
【００６５】
暗号鍵管理部４２は、ＴＣＧ規格で定義されるGenKeyコマンドを受信すると、暗号鍵を更新する処理を行う。GenKeyコマンドは１つのレンジを指定して、そのレンジの暗号鍵を更新するコマンドであり、レンジがグローバルレンジの場合と、レンジがネームスペース・グローバルレンジの場合と、レンジがネームスペース・ノングローバルレンジの場合を含む。
【００６６】
図９を参照して、暗号鍵管理部４２の暗号鍵更新処理の一例を説明する。
ステップＳ３０２で暗号鍵管理部４２はGenKeyコマンドを受信すると、ステップＳ３０４で暗号鍵管理部４２はGenKeyコマンドの対象はグローバルレンジであるか否かを判定する。GenKeyコマンドの対象がグローバルレンジである場合（ステップＳ３０４の判定結果がＹＥＳ）、ステップＳ３０６で、暗号鍵管理部４２は、ライトプロテクト管理／検査部５６にどのネームスペースがライトプロテクトされているかを問い合わせ、ライトプロテクトされていない仮想レンジの暗号鍵を更新するが、ライトプロテクトされているネームスペースに設定された仮想レンジの暗号鍵は更新しない。
【００６７】
GenKeyコマンドの対象がグローバルレンジでない場合（ステップＳ３０４の判定結果がＮＯ）、ステップＳ３０８で、暗号鍵管理部４２は、ライトプロテクト管理／検査部５６にGenKeyコマンドの対象のネームスペースがライトプロテクトされているかを問い合わせ、GenKeyコマンドの対象のネームスペースがライトプロテクトされているか否かを判定する。
【００６８】
GenKeyコマンドの対象のネームスペースがライトプロテクトされている場合、ステップＳ３１２で、暗号鍵管理部４２は、GenKeyコマンドの対象のネームスペースに設定されたネームスペース・グローバルレンジの暗号鍵を更新せず、ホスト装置１４にエラー信号を送信する。GenKeyコマンドの対象のネームスペースがライトプロテクトされていない場合、ステップＳ３１４で、GenKeyコマンドの対象のネームスペースに設定されたネームスペース・グローバルレンジの暗号鍵を更新する。エラー信号は、単にコマンドレスポンスのエラーを示すだけでも良いが、エラーコードを定義し、そのエラーコードを含むエラー信号を送信しても良い。ステップＳ３１２で送信されるエラー信号が含むエラーコードは、ＮＶＭｅ規格に基づくライトプロテクト機能が有効なのでＴＣＧ規格に基づくGenKeyコマンドが実行できないというＮＶＭｅ優先を示すものでも良い。
【００６９】
このため、ライトプロテクトされたネームスペースにリカバリー用ＯＳを格納しておけば、GenKeyコマンドの対象がグローバルレンジの場合、ステップＳ３０６で説明したように、ライトプロテクトされているネームスペースの暗号鍵は更新されない。また、GenKeyコマンドの対象がネームスペース・グローバルレンジであり、ネームスペース・グローバルレンジが配置されたネームスペースがライトプロテクトされている場合、ステップＳ３１２で説明したように、ライトプロテクトされているネームスペースの暗号鍵は更新されない。その結果、リカバリー用ＯＳがGenKeyコマンドにより消去されることを防止できる。
【００７０】
暗号鍵管理部４２が格納する暗号鍵の数には制限がある。例えば、ネームスペースの数が最大で１６であり、各ネームスペースに配置できるネームスペース・ノングローバルレンジの数が最大で８とすると、理想的にはレンジの数は最大で１２８個持てる必要がある。つまり最大で１２８個の暗号鍵を持てる必要があるが、ストレージ装置１２の設計によっては暗号鍵管理部４２は数十個程度の暗号鍵しか格納できないことがある。レンジを割り当てる度に暗号鍵を一つ消費していくため、暗号鍵管理部４２が格納する暗号鍵を使いきってしまうと、以後は割り当て済みレンジを削除しない限りは新しいレンジが割り当てられなくなってしまう。そのため、未使用鍵数管理部６２は未使用の鍵の数を管理している。ホスト装置１４は、ストレージ装置１２が残りいくつのレンジが割り当て可能か把握するために、未使用鍵数管理部６２が管理する未使用鍵数を読むためのコマンドをストレージ装置１２に送り、未使用鍵数管理部６２はホスト装置１４に未使用鍵数を通知する。未使用鍵数は、１つレンジが配置され、レンジに暗号鍵が設定されたら１つ減らされる。
【００７１】
上述したストレージ装置では、１つのネームスペースに配置可能なレンジの数とネームスペースの数との積に基づいてレンジの最大数を決めているが、先ずレンジの最大数を決めて、そのレンジをネームスペースにどのように割り当てるかは自由である構成としてもよい。例えば、レンジの最大数が１２９、つまりストレージ装置１２の暗号鍵管理部４２が最大で管理できる暗号鍵の数が１２９の場合、ストレージ装置全体に１個のグローバルレンジを割り当て、第１のネームスペースに１２０個のネームスペース・ノングローバルレンジを割り当て、第２のネームスペースに８個のネームスペース・ノングローバルレンジを割り当ててもよい。この場合、第３のネームスペース以降のネームスペースには１つもレンジが割り当てられない。
【００７２】
また、未使用鍵数管理部６２は、ストレージ装置１２がライトプロテクション機能をサポートしているかをライトプロテクト管理／検査部５６に問い合わせる。本実施形態では、ライトプロテクト管理／検査部５６からライトプロテクション機能をサポートしている旨の応答があった場合、暗号鍵（仮想レンジの鍵）がネームスペース毎に設定されていれば、リバートコマンド、リバートＳＰコマンド又はGenKeyコマンドが発行されてもライトプロテクトされているネームスペースはコマンドの対象外（すなわち、ライトプロテクトされているネームスペースに設定されたネームスペース・グローバルレンジの暗号鍵を更新しない）とすることができる。未使用暗号鍵数の初期値は使用可能な暗号鍵の最大数であり、未使用暗号鍵数の初期値を設定することは、暗号鍵を予約することである。従来技術では、未使用暗号鍵数の初期値はサポート可能なレンジの数である。すなわち、ハードウェアとして管理可能な鍵の数はサポート可能なレンジの数と等しい。実施形態では、未使用暗号鍵数の初期値は、図１０（ａ）に示すように（１）暗号鍵管理部４２が格納し得る鍵の数−サポート可能なネームスペースの数、あるいは図１０（ｂ）に示すように（２）暗号鍵管理部４２が格納し得る鍵の数−ライトプロテクト可能なネームスペースの数としても良い。（１）の場合、暗号鍵管理部４２が管理可能な鍵の数はサポート可能なネームスペースの数とサポート可能なレンジの数の和となる。このため、未使用暗号鍵数の初期値は従来技術の初期値より少なくなるが、暗号鍵を予め予約しておくという概念を導入することにより、ライトプロテクトされたネームスペースの鍵を更新しないことが実現される。どのネームスペースが何時ライトプロテクトの設定がされるかはユーザの設定次第であるので、予測できない。また、いくつのネームスペースがライトプロテクトされるかもユーザの設定次第であるので、予測できない。予測できないが、暗号鍵を予約しておくことにより、予約した数までの個数のネームスペースはライトプロテクト可能となる。
【００７３】
ＴＣＧ規格で定義されるリバートコマンドはＰＩＮを初期化し、ロック機能を無効とし、ストレージ装置１２全体のデータを強制消去するためのコマンドである。ＴＣＧ規格で定義されるリバートＳＰコマンドはＰＩＮを初期化し、ロック機能を無効とするためのコマンドであり、ストレージ装置１２全体のデータを強制消去するか否かを決めるパラメータを含む。リバートコマンド及びリバートＳＰコマンドは、レンジ毎にデータを強制消去するか否（データを残す）かを指定することはできない。
【００７４】
実施形態では、仮想レンジ毎にデータを消去、すなわち暗号鍵を更新するか否かをホスト装置１４が指定することができる。ホスト装置１４は、(i)ネームスペースがライトプロテクトされていたら、ネームスペースのデータを消去するな、又は(ii)ネームスペースがライトプロテクトされていても、ネームスペースのデータを消去せよの何れかをホスト装置１４が指定することができる。(i)が指定されると、ストレージ装置１２は仮想レンジが設定されているネームスペースの暗号鍵は更新せずそのままとするが、仮想レンジが設定されていないネームスペースの暗号鍵は更新する。(ii)が指令されると、ストレージ装置１２は仮想レンジが設定されているネームスペースを含む全てのネームスペースの暗号鍵を更新する。ホスト装置１４による指定の例は、データ消去コマンドに(i)又は(ii)の何れかを指定するパラメータを持たせることがある。
【００７５】
データ消去コマンドとしてリバートＳＰコマンドを使用する場合、図１１に示すようなパラメータをコマンドに付加するようにリバートＳＰコマンドを変形し、新リバートＳＰコマンドとすることが考えられる。パラメータは暗号化鍵を更新しない仮想レンジを指定する情報を含み得る。(ii)を指定するパラメータの一例は、アップデート・オールキー（Update All Keys）パラメータであり、このパラメータがコマンドに付加されている場合は、新リバートＳＰコマンドが実行されると、仮にライトプロテクトされたネームスペースがあったとしても全てのネームスペースの暗号鍵が更新される。(i)を指定するパラメータの一例はキープ・バーチャルレンジ１キー（Keep Virtual  Range 1 Key）パラメータ〜キープ・バーチャルレンジｎキー（Keep Virtual Range n Key）パラメータであり、これらのパラメータがコマンドに付加されている場合は、新リバートＳＰコマンドが実行されても仮想レンジ１〜仮想レンジｎが設定されたネームスペース１〜ネームスペースｎの暗号鍵が更新されず、仮想レンジが設定されていないネームスペースの暗号鍵のみ更新される。以下、断りが無い限り、リバートコマンドはリバートコマンド、リバートＳＰコマンド及び新リバートＳＰコマンドの総称として使われる。
【００７６】
ライトプロテクトされたネームスペースに設定された仮想レンジの暗号鍵を更新するか否かを新リバートＳＰコマンドにパラメータを追加して選択することを説明したが、リバートコマンドに同様なパラメータを追加しても選択することができる。さらに、リバートＳＰコマンドあるいはリバートコマンドに限らず、仮想レンジの暗号鍵を更新するか否かを指定するパラメータを備える新たなコマンドを定義しても良い。
【００７７】
レンジ管理部６４は、ＴＣＧ規格で定義されているグローバルレンジ、ネームスペース・グローバルレンジ、ネームスペース・ノングローバルレンジに加えて、ＮＶＭｅ規格に基づきライトプロテクトされているネームスペースに配置が許可されるように定義された特殊なレンジ（ライトプロテクトレンジ（Write Protect Range）と称する）を管理しても良い。従来技術ではレンジはライトロックとリードロックを設定することが可能だが、ライトプロテクトレンジはＴＣＧ規格に基づくリードロックのみ可能でライトロックを設定することができないレンジである。これにより、ＮＶＭｅ規格に基づくライトプロテクション機能とＴＣＧ規格に基づくリードロック機能を併用することができる。レンジの種類（ライトプロテクトレンジであるか否か）をレンジの属性で定義してもよい。例えば、図１２に示すように、図７に示すレンジ管理テーブルに対してレンジ毎に当該レンジに配置される予定のレンジの属性がライトプロテクトレンジである（Ｔ）か否（Ｆ）かを示す情報を追加してもよい。レンジ管理部６４は、ライトプロテクトされたネームスペースにネームスペース・グローバルレンジを配置するようにレンジ管理部６４から指示された場合、ライトプロテクトレンジの属性を持つレンジをライトプロテクトされたネームスペースに配置しても良い。ホスト装置１４はライトプロテクトされているネームスペースにレンジを配置する前に、セットコマンドにより、図１２のレンジ管理テーブルの当該レンジの属性をＦ（非ライトプロテクトレンジ）からＴ（ライトプロテクトレンジ）に変更し、ライトプロテクトレンジの属性を持つネームスペース・グローバルレンジをライトプロテクトされているネームスペースに配置する。ライトプロテクトされたネームスペースにライトプロテクトレンジの属性を持つネームスペース・グローバルレンジを配置しようとした場合、レンジ管理部６４はエラー信号をホスト装置１４に返送しない。ライトプロテクトされたネームスペースにライトプロテクトレンジの属性を持つネームスペース・グローバルレンジが配置され、ライトプロテクトされたネームスペースに対してＴＣＧ規格に基づくライトロック機能を有効にするためのレンジ設定コマンド又はGenKeyコマンドが発行された場合、レンジ管理部６４は、ＮＶＭｅ規格に基づくライトプロテクト機能が有効なのでＴＣＧ規格に基づくレンジ機能が実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号をホスト装置１４に返送する。また、これ以外の方法として、ライトプロテクトレンジの属性を持つネームスペース・グローバルレンジを配置する特殊なコマンド（たとえば、ライトプロテクトレンジアサインコマンド）を定義し、ホストからライトプロテクトされたネームスペースにライトプロテクトレンジの属性を持つネームスペース・グローバルレンジを配置する場合に、このライトプロテクトレンジアサインコマンドを利用するようにしてもよい。
【００７８】
図６の説明に戻り、ＰＩＮ管理部４６は、所有者ＰＩＮ４６ａ、管理者ＰＩＮ４６ｂ、ラベルＰＩＮ４６ｃ、ユーザＰＩＮ４６ｄに加えてフォース・リバート（Force Revert）ＰＩＮを管理して良い。フォース・リバートＰＩＮはＮＶＭｅ規格に基づくライトプロテクション機能によりライトプロテクトされているネームスペースに設定された仮想レンジの暗号鍵も含めた全てのネームスペースの暗号鍵をＴＣＧ規格に基づくリバートコマンドにより更新し、ストレージ装置を初期状態に戻し、全てのデータを消去するためのものである。暗号鍵の更新は、乱数生成部４４で新たな乱数を生成させ、更新前の暗号鍵の値を消去し、暗号鍵の値にその乱数の値を設定すること（すなわち、暗号鍵の値が乱数の値に入れ替えられること）により行われる。初期化処理部５８は、フォース・リバートＰＩＮの権限でリバートコマンドを実行する場合、上述した初期化処理に加えて、ライトプロテクト管理／検査部５６に対してＮＶＭｅ規格に従いネームスペースに設定したライトプロテクション機能を無効にする指示を出しても良い。このため、フォース・リバートＰＩＮの権限でリバートコマンドが実行される場合、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースに配置された仮想レンジまたはライトプロテクトレンジの属性を持つネームスペース・グローバルレンジも含めて全てのレンジの暗号鍵が更新される。なお、フォース・リバートＰＩＮの権限で実行され、ストレージ装置を初期状態にするコマンドはリバートコマンドとは別に定義しても良い。ここでは、別に定義されるコマンドをフォース・リバートコマンドと称する。なお、フォース・リバートコマンドを定義するが、フォース・リバートＰＩＮを定義せずに、従来の管理者ＰＩＮにフォース・リバートコマンドを実行可能とする権限を与えてもよい。なお、フォース・リバートコマンドでライトロックを解除するようにしてもよい。
【００７９】
レンジ管理部６４は、レンジのライトロック／リードロック機能の有効、無効の設定をレンジの配置前に行うことが可能である。レンジ設定部４８は、ライトプロテクトされたネームスペースにネームスペース・グローバルレンジを配置しようとする場合、レンジがライトロックされていれば、ライトプロテクトされたネームスペースにライトロックされているレンジの配置を許可してもよい。ただし、これ以降、そのレンジに対するライトロックの有効、無効の設定変更を認めないようにしても良い。もしも、そのレンジに対するライトロックの有効、無効の設定を変更しようとしたら、レンジ設定部４８は、ライトロックを有効にすることは禁止するが、(a)リードロックは許可しても良い（GenKeyコマンドは禁止）、(b)GenKeyコマンドは許可しても良い（リードロック禁止）、又は(c)リードロックとGenKeyコマンドは許可しても良い。レンジ設定部４８は、レンジがライトロックされていなければ、ライトプロテクトされたネームスペースにレンジを配置しようとする場合、レンジの配置を禁止し、ＮＶＭｅ規格に基づくライトプロテクト機能が有効なのでＴＣＧ規格に基づくレンジ機能が実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号をホスト装置１４に返送する。
【００８０】
初期化処理部５８と暗号鍵管理部４２では、リバートコマンドやGenKeyコマンドが発行された場合、ネームスペースがライトプロテクトされている場合、エラー信号をホスト装置１４に返送すると説明した。しかし、ライトプロテクションステートはライトプロテクトステート、ライトプロテクト・アンティル・パワーサイクルステート、パーマネント・ライトプロテクトステートを含み、ライトプロテクトステート、ライトプロテクト・アンティル・パワーサイクルステートはノーライトプロテクトステートに遷移し得る。そのため、リバートコマンドやGenKeyコマンドが発行された場合のみ、対象のネームスペースのライトプロテクションステートがパーマネント・ライトプロテクトステートであれば、初期化処理部５８と暗号鍵管理部４２はエラー信号をホスト装置１４に返送しても良い。リバートコマンドやGenKeyコマンドが発行された場合又は対象のネームスペースのライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルステートの場合、暗号鍵を現状のまま保持し、次のパワーサイクルで暗号鍵を更新してネームスペースのデータを無効化しても良い。リバートコマンドやGenKeyコマンドが発行された場合又は対象のネームスペースのライトプロテクションステートがノーライトプロテクトステートの場合、ネームスペースの暗号鍵を更新し、データを無効化しても良い。
【００８１】
同様に、フォース・リバートＰＩＮの権限でリバートコマンド又はフォース・リバートコマンドが発行される場合のみ、ネームスペースのライトプロテクションステートの種類によって動作を異ならせても良い。例えば、ネームスペースのライトプロテクションステートがパーマネント・ライトプロテクトステートの場合、初期化処理部５８は、ＮＶＭｅ規格に基づくライトプロテクト機能が有効なのでＴＣＧ規格に基づく初期化機能が実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号をホスト装置１４に返送し、それ以外のライトプロテクションステートの場合、ライトプロテクトされているネームスペースの暗号鍵を更新し、データを無効化しても良い。
【００８２】
［第１実施形態の動作例］
ストレージ装置の少なくとも一部分のデータを保護するためのＮＶＭｅ規格に基づくライトプロテクトコマンドとＴＣＧ規格に基づくレンジ配置コマンド（又はレンジ設定コマンド）がともに発行され、さらにストレージ装置を初期化するためのＴＣＧ規格に基づくリバートコマンド又はGenKeyコマンドが発行された場合の実施形態の種々の動作例を説明する。図１３〜図１９は実施形態の動作例の概要を示す図である。
【００８３】
動作例は次のような６グループに分類される。全ての動作例は図６で示したストレージ装置１２の各構成要素の設定により実現される。
第１グループは、図１３に示すように、ＴＣＧ規格に基づく動作とＮＶＭｅ規格に基づく動作が共に実行される、すなわちＴＣＧ規格とＮＶＭｅ規格が完全に共存可能な動作例Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｒ、Ｓ、Ｔを含む。
【００８４】
第２グループは、図１４に示すように、ＴＣＧ規格に基づく動作とＮＶＭｅ規格に基づく動作が共に実行されるが、ＴＣＧ規格に基づく動作の一部の実行に制限がある動作例Ｇ、Ｈ、Ｉ、Ｊ、Ｋ、Ｕを含む。
第３グループは、図１５に示すように、ＴＣＧ規格に基づく動作とＮＶＭｅ規格に基づく動作が共に実行されるが、ＮＶＭｅ規格に基づく動作の一部の実行に制限がある動作例Ｎ、Ｏを含む。
【００８５】
第４グループは、図１６に示すように、ＴＣＧ規格とＮＶＭｅ規格の共存が不可であり、ＴＣＧ規格に基づく動作が優先される動作例Ｍを含む。
第５グループは、図１７に示すように、ＴＣＧ規格とＮＶＭｅ規格の共存が不可であり、ＮＶＭｅ規格に基づく動作が優先される動作例Ｌ、Ｐ、Ｑを含む。
【００８６】
第６グループは、図１８に示すように、その他であり、動作例Ｖ、Ｗを含む。
以下、各動作例の処理の流れを図１９Ａ〜図４７を参照して説明する。
第１グループの動作例Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｒ、Ｓ、Ｔと第２グループの動作例Ｇ、Ｈ、Ｉ、Ｊ、Ｋ、Ｕは、（ｉ）先ず、ＮＶＭｅ規格に基づくライトプロテクション機能の設定（ライトプロテクトコマンドの発行）が行われ、次にＴＣＧ規格に基づくレンジ機能とロック機能の設定（レンジ配置コマンド又はレンジ設定コマンドの発行）が行われる第１例と、（ｉｉ）先ず、ＴＣＧ規格に基づくレンジ機能とロック機能の設定が行われ、次にＮＶＭｅ規格に基づくライトプロテクション機能の設定が行われる第２例を含む。第１例と第２例を区別するために、動作例Ａの第１例を動作例Ａ１、第２例を動作例Ａ２と表す。第１、第２グループの他の動作例も同様に第１例と第２例を含む。
【００８７】
第３グループの動作例Ｎ、Ｏでは、先ず、ＴＣＧ規格に基づくレンジ機能とロック機能の設定が行われ、次にＮＶＭｅ規格に基づくライトプロテクション機能の設定が行われる。
第４グループの動作例Ｍでは、ＴＣＧ規格に基づきアクティベートされた状態でＮＶＭｅ規格に基づくライトプロテクション機能の設定が行われる。
【００８８】
第５グループの動作例Ｌでは、先ず、ＮＶＭｅ規格に基づくライトプロテクション機能の設定が行われ、次にＴＣＧ規格に基づくレンジ機能とロック機能の設定が行われる。第５グループの動作例Ｐ、Ｑでは、ストレージ装置１２がライトプロテクション機能をサポートしているか否かが判定され、判定結果に応じてＴＣＧ規格に基づくアクティベート機能が可能か否かの設定が行われる。
【００８９】
第６グループの動作例では、ＴＣＧ規格に基づくレンジ機能とロック機能の設定とＮＶＭｅ規格に基づくライトプロテクション機能の設定との実行順番は無関係である。
ＴＣＧ規格とＮＶＭｅ規格の完全共存が可能な「ライトプロテクトされたネームスペースに設定された仮想レンジの暗号鍵をリバートコマンドが発行されても更新しない」動作例Ａ１、Ａ２の処理の一例をそれぞれ図１９Ａ、図１９Ｂ、図２０Ａ、図２０Ｂを参照して説明する。
【００９０】
動作例Ａ１では、図１９Ａ、図１９Ｂに示すように、ステップＳ１２でＩ／Ｆ処理部２２はアクティベートコマンドを受信する。ステップＳ１４で初期化処理部５８はアクティベートコマンドを実行し、アクティベートコマンドの実行によりストレージ装置１２はアクティブ状態とされ、レンジ機能とロック機能が有効とされる。
【００９１】
ネームスペースが存在しない状態でホスト装置１４からネームスペース作成コマンドを受信する（ステップＳ１６）と、ステップＳ１８で、ストレージ装置１２の初期設定部５４は、少なくとも１つのネームスペースを作成し、作成したネームスペースにホスト装置１４の指示を受けることなく仮想レンジを設定するようレンジ設定部４８に指示し、仮想レンジに暗号鍵を割り当てるよう暗号鍵管理部４２に指示する。
【００９２】
ステップＳ２０でＩ／Ｆ処理部２２はホスト装置１４からリバートコマンドを受信する。この段階で受信するリバートコマンドの実行は許可されており、ステップＳ２２で初期化処理部５８はリバートコマンドを実行する。リバートコマンドの実行により、ストレージ装置１２は初期状態（非アクティブ状態）とされ、データは無効化又は消去され、ロック機能は無効とされる。リバートコマンドはレンジやＰＩＮ等のＴＣＧ規格が規定する設定を初期化するものであり、リバートコマンドによる初期化はネームスペースには影響を与えない。すなわち、リバートコマンドによる初期化によってネームスペースが削除されたり、作成されたりすることはない。図６に示すストレージ装置１２は暗号処理部３４を備えているが、図４８を参照して後述するように、他の実施形態では、暗号処理部３４を備えていないストレージ装置も存在する。本実施形態では、ストレージ装置が暗号処理部３４を備えているので、初期化の際、クリプト・イレーズによるデータ無効化又はブロック・イレーズ、オーバーライト・イレーズ又はアンマップによるデータ消去が行われ得る。以下の説明では、初期化の際、データ消去ではなく、データ無効化が行われるとする。平文データを格納する他の実施形態のストレージ装置の場合、初期化の際、ブロック・イレーズ、オーバーライト・イレーズ又はアンマップによるデータ消去が行われ得る。
【００９３】
ステップＳ２４でＩ／Ｆ処理部２２はＮＶＭｅ規格に基づくライトプロテクション機能によりネームスペースをライトプロテクトするためのライトプロテクトコマンドを受信する。
ステップＳ２６でライトプロテクト制御部３２はライトプロテクトコマンドで指定されたネームスペースをライトプロテクトするようライトプロテクト管理／検査部５６に設定する。この設定により、指定されたネームスペースが指定のライトプロテクションステートでライトプロテクトされる。
【００９４】
ステップＳ２８でＩ／Ｆ処理部２２はリバートコマンドを受信する。
ステップＳ３０で、ロック制御部５２はロック状態を解除するとともに、初期化処理部５８はリバートコマンドを実施形態固有の態様で実行する。初期化処理部５８は、暗号鍵管理部４２が管理しているライトプロテクトされているネームスペースに設定された仮想レンジの暗号鍵を更新せず、ライトプロテクトされているネームスペースのデータを無効化せず、データを残すが、それ以外の暗号鍵を任意の他の鍵に更新し、ライトプロテクト設定されていないネームスペースのデータを無効化する。
【００９５】
ステップＳ３２でＩ／Ｆ処理部２２はＴＣＧ規格に基づくロック機能に関するレンジ配置コマンドを受信する。
ステップＳ３４でレンジ設定部４８はレンジ配置コマンドを実行し、レンジ配置コマンドで指定されたネームスペースにネームスペース・グローバルレンジを配置するとともに暗号鍵を割り当てる。
【００９６】
ステップＳ３６でストレージ装置１２はロック機能に関するレンジ設定コマンドを受信する。
ステップＳ３８でレンジ設定部４８はレンジ設定コマンドを実行し、ネームスペース・グローバルレンジにリードロック／ライトロックをかける。ステップＳ３８以前の状態では、あるネームスペースのライトプロテクトが有効で、かつそのネームスペースにレンジを配置し、当該レンジにライトロックを設定した状態であるケースがある。ステップＳ３８でレンジ設定部４８はネームスペースにライトロックをかけると、ネームスペースにライトプロテクトとライトロックが二重にかかっている状態となる。実施形態では、このような状態が許可される。そして、この状態のネームスペースにデータ書き込みをしようとする場合、リード／ライト処理部２４はレンジ検査部３８にレンジがライトプロテクトされているか否かを問い合わせるとともに、ライトプロテクト管理／検査部５６にネームスペースがライトプロテクトされているか否かを問い合わせる。リード／ライト処理部２４はレンジ検査部３８からレンジがライトプロテクトされている旨の返答又はライトプロテクト管理／検査部５６からネームスペースがライトプロテクトされている旨の返答があった場合、リード／ライト処理部２４は、書き込み不可を示すエラーをホスト装置１４に返しても良いし、ＴＣＧ規格に基づくライトエラーをホスト装置１４に返しても良い。このように、ネームスペースにライトプロテクトとライトロックが二重にかけられた状態であれば、仮にライトロックをコマンドで解除したとしても、ライトプロテクトが有効であるので、ライトは失敗する。
【００９７】
なお、ステップＳ３２、Ｓ３６に示すように、レンジ配置コマンドをレンジ設定コマンドより先に受信するが、この順番は逆、すなわちレンジ設定コマンドをレンジ配置コマンドより先に受信してもよい。
ステップＳ４０でストレージ装置１２はリバートコマンドを受信する。
【００９８】
ステップＳ４２で、ロック制御部５２はロック状態を解除するとともに、初期化処理部５８はリバートコマンドを実施形態固有の態様で実行する。ステップＳ３０と同様に、初期化処理部５８はライトプロテクトされているネームスペースに設定された仮想レンジの暗号鍵を更新せず、ライトプロテクトされているネームスペースのデータを無効化せず、データを残すが、それ以外の暗号鍵を乱数生成部４４で生成した任意の他の鍵（乱数）に更新し、ライトプロテクトされていないネームスペースのデータを無効化する。
【００９９】
ステップＳ４４でストレージ装置１２はいずれかのネームスペース・グローバルレンジを指定するGenKeyコマンドを受信する。
ステップＳ４６で、暗号鍵管理部４２は、GenKeyコマンドの対象であるネームスペース・グローバルレンジが配置されたネームスペースがライトプロテクトされているか否かをライトプロテクト管理／検査部５６に対して問い合わせる。ライトプロテクト管理／検査部５６からコマンド対象のネームスペースがライトプロテクトされていない旨の返答が来た場合（ステップＳ４６の判定結果がＮＯ）、暗号鍵管理部４２は、ステップＳ４８で、乱数生成部４４で新たな乱数を生成させ、その乱数の値に入れ替えることにより、GenKeyコマンドの対象であるネームスペースの暗号鍵を更新する。暗号鍵が更新されると、当該ネームスペースのデータを読み出し、データを復号しても、暗号化の際と暗号鍵が異なっているので、データを正常に復号することができず、意味のないデータが読み出され、データが無効化される。ライトプロテクト管理／検査部５６からコマンド対象のネームスペースがライトプロテクトされている旨の返答が来た場合（ステップＳ４６の判定結果がＹＥＳ）、暗号鍵管理部４２は、ステップＳ５０で、GenKeyコマンドの対象であるネームスペースの暗号鍵を更新せず、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効なのでＴＣＧ規格に基づくGenKeyコマンドが実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号を送信する。暗号鍵が更新されないので、当該ネームスペースのデータを読み出し、データを復号すると、データが正常に復号されるので、データが残されることになる。
【０１００】
なお、ステップＳ４０、Ｓ４４に示すように、リバートコマンドをGenkeyコマンドより先に受信するが、この順番は逆、すなわちGenkeyコマンドをリバートコマンドより先に受信してもよい。
また、図１９Ａ、図１９Ｂに示していないが、ステップＳ１６、Ｓ２０、Ｓ２８、Ｓ３２、Ｓ３６、Ｓ４０、Ｓ４４でコマンドを受信した後、発行元のＰＩＮ認証が行われ、ＰＩＮ認証が成功している。
【０１０１】
動作例Ａ２の処理の一例を図２０Ａ、図２０Ｂに示す。動作例Ａ２はストレージ装置１２がアクティブ状態とされるステップＳ２２までは動作例Ａ１と同じである。動作例Ａ２では、この後、動作例Ａ１と同じ処理が、動作例Ａ１の順番とは異なる順番で実行される。
【０１０２】
ステップＳ５２で、ステップＳ３２と同様に、ストレージ装置１２はレンジ配置コマンドを受信する。ステップＳ５４で、ステップＳ３４と同様に、レンジ設定部４８はレンジ配置コマンドを実行し、レンジ配置コマンドで指定されたネームスペースにネームスペース・グローバルレンジを配置するとともに暗号鍵を割り当てる。
【０１０３】
ステップＳ５６で、ステップＳ３６と同様に、ストレージ装置１２はレンジ設定コマンドを受信する。ステップＳ５８で、ステップＳ３８と同様に、レンジ設定部４８はレンジ設定コマンドを実行し、ネームスペース・グローバルレンジにリードロック／ライトロックをかける。なお、動作例Ａ１と同様に、レンジ設定コマンドをレンジ配置コマンドより先に受信してもよい。
【０１０４】
ステップＳ６０で、ステップＳ２８と同様に、ストレージ装置１２はリバートコマンドを受信する。ステップＳ６２で、ステップＳ３０と同様に、ロック制御部５２はロック状態を解除するとともに、初期化処理部５８はリバートコマンドを実行する。
ステップＳ６４で、ステップＳ２４と同様に、ストレージ装置１２はライトプロテクトコマンドを受信する。ステップＳ６６で、ステップＳ２６と同様に、ライトプロテクト制御部３２はライトプロテクトコマンドで指定されたネームスペースをライトプロテクトするようライトプロテクト管理／検査部５６に設定する。この設定により、指定されたネームスペースが指定のライトプロテクションステートでライトプロテクトされる。
【０１０５】
ステップＳ６８で、ステップＳ４０と同様に、ストレージ装置１２はリバートコマンドを受信する。ステップＳ７０で、ステップＳ４２と同様に、ロック制御部５２はロック状態を解除するとともに、初期化処理部５８はリバートコマンドを実施形態固有の態様で実行する。初期化処理部５８はライトプロテクトされているネームスペースに設定された仮想レンジの暗号鍵を更新せず、ライトプロテクトされているネームスペースのデータを無効化せず、ライトプロテクトされているネームスペースのデータを残すが、それ以外の暗号鍵を任意の他の鍵に更新し、ライトプロテクトされていないネームスペースのデータを無効化する。
【０１０６】
ステップＳ７２で、ステップＳ４４と同様に、ストレージ装置１２はいずれかのネームスペース・グローバルレンジを指定するGenKeyコマンドを受信する。ステップＳ７４で、ステップ４６と同様に、暗号鍵管理部４２は、GenKeyコマンドの対象であるネームスペースがライトプロテクトされているか否かをライトプロテクト管理／検査部５６に問い合わせる。ライトプロテクト管理／検査部５６からコマンド対象のネームスペースがライトプロテクトされていない旨の返答が来た場合（ステップＳ７４の判定結果がＮＯ）、暗号鍵管理部４２は、ステップＳ７６で、GenKeyコマンドの対象のネームスペース・グローバルレンジが配置されたネームスペースの暗号鍵を乱数生成部４４で生成した任意の他の鍵（乱数）に更新し、GenKeyコマンドの対象のネームスペースのデータを無効化する。ライトプロテクト管理／検査部５６からコマンド対象のネームスペースがライトプロテクトされている旨の返答が来た場合（ステップＳ７４の判定結果がＹＥＳ）、暗号鍵管理部４２は、ステップＳ７８で、GenKeyコマンドの対象のネームスペースの暗号鍵を更新せず、データを残すとともに、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効なのでＴＣＧ規格に基づくGenKeyコマンドが実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号を送信する。なお、動作例Ａ１と同様に、GenKeyコマンドをリバートコマンドより先に受信してもよい。
【０１０７】
また、図２０Ａ、図２０Ｂに示していないが、ステップＳ１６、Ｓ２０、Ｓ５２、Ｓ５６、Ｓ６０、Ｓ６８、Ｓ７２でコマンドを受信した後、発行元のＰＩＮ認証が行われ、ＰＩＮ認証が成功している。
動作例Ａによれば、ＴＣＧ規格に基づくリバートコマンドが実行されても、ＮＶＭｅ規格によりライトプロテクトされたネームスペースのデータを無効化せずにストレージ装置１２に残すことができる。
【０１０８】
以下、動作例Ｂ以降の他の動作例を説明するが、他の動作例において動作例Ａの処理と同じ処理は説明を省略し、動作例Ａの処理と異なる処理のみ説明する。
ＴＣＧ規格とＮＶＭｅ規格の完全共存が可能な「リバートコマンドが発行された場合、ライトプロテクトされたネームスペースに設定された仮想レンジの暗号鍵を更新する／しないはコマンドのパラメータに基づく」動作例Ｂの処理の一例を図２１を参照して説明する。
【０１０９】
図２１（ａ）に示す動作例Ｂ１では、図１９Ｂに示した動作例Ａ１の「リバートコマンド受信」ステップＳ４０の代わりのステップＳ４０Ｂで、ストレージ装置１２は仮想レンジの鍵を更新するか否かを指定するパラメータを含む新リバートＳＰコマンドを受信する。新リバートコマンドの例は図１１に示すような変形リバートコマンドを含む。動作例Ａ１の「リバートコマンド実行」ステップＳ４２の代わりのステップＳ４２Ｂで、初期化処理部５８は新リバートＳＰコマンドを実行し、暗号鍵管理部４２が管理している暗号鍵を更新する。ただし、新リバートＳＰコマンドにキープ・バーチャルレンジキーパラメータが含まれており、キープ・バーチャルレンジキーパラメータがライトプロテクトされたネームスペースに設定された仮想レンジを指定する場合、初期化処理部５８は、暗号鍵管理部４２が管理する「キープ・バーチャルレンジキーパラメータで指定される仮想レンジの暗号鍵」を更新しない。
【０１１０】
図２１（ｂ）に示す動作例Ｂ２では、動作例Ｂ１と同様に、図２０Ｂに示した動作例Ａ２の「リバートコマンド受信」ステップＳ６８の代わりのステップＳ６８Ｂで、ストレージ装置１２は新リバートＳＰコマンドを受信し、動作例Ａ２の「リバートコマンド実行」ステップＳ７０の代わりのステップＳ７０Ｂで、初期化処理部５８は新リバートＳＰコマンドを実行し、暗号鍵を更新する。ただし、新リバートＳＰコマンドにキープ・バーチャルレンジキーパラメータが含まれており、キープ・バーチャルレンジキーパラメータがライトプロテクトされたネームスペースに設定された仮想レンジを指定する場合、初期化処理部５８は、暗号鍵管理部４２が管理する「キープ・バーチャルレンジキーパラメータで指定される仮想レンジの暗号鍵」を更新しない。
【０１１１】
動作例Ｂによれば、暗号鍵を更新しない仮想レンジを指定するパラメータを含む新リバートＳＰコマンドを発行することにより、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースのデータを無効化する／しないをコマンドのパラメータにより選択することができる。
【０１１２】
ＴＣＧ規格とＮＶＭｅ規格の完全共存が可能な「ライトプロテクトされたネームスペースがあったとしても、ライトプロテクトされたネームスペースに設定された仮想レンジの暗号鍵とストレージ装置全体に配置されたグローバルレンジの暗号鍵をリバートコマンドによって更新する」動作例Ｃの処理の一例を図２２を参照して説明する。
【０１１３】
図２２（ａ）に示す動作例Ｃ１では、図１９Ｂに示した動作例Ａ１の「リバートコマンド実行」ステップＳ４２の代わりのステップＳ４２Ｃで、ライトプロテクトされたネームスペースがあったとしても、初期化処理部５８は、暗号鍵管理部４２が管理する「すべての仮想レンジの暗号鍵」をリバートコマンドによって更新する。
【０１１４】
図２２（ｂ）に示す動作例Ｃ２では、図２０Ｂに示した動作例Ａ２の「リバートコマンド実行」ステップＳ７０の代わりのステップＳ７０Ｃで、ライトプロテクトされたネームスペースがあったとしても、初期化処理部５８は、暗号鍵管理部４２が管理する「すべての仮想レンジの暗号鍵」をリバートコマンドによって更新する。
【０１１５】
動作例Ｃによれば、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースがあったとしても、ＴＣＧ規格に基づくリバートコマンドの実行により、ライトプロテクトされたネームスペースに設定された仮想レンジを含む、すべての仮想レンジの暗号鍵を更新し、データを無効化することができる。
【０１１６】
ＴＣＧ規格とＮＶＭｅ規格の完全共存が可能な「ライトプロテクトされたネームスペースがあったとしても、ライトプロテクトされたネームスペースに設定された仮想レンジを含む、すべての仮想レンジの暗号鍵をリバートコマンドによって更新し、ライトプロテクトされたネームスペースのデータを更新後の暗号鍵で再暗号化し、データを残す」動作例Ｄの処理の一例を図２３を参照して説明する。
【０１１７】
図２３（ａ）に示す動作例Ｄ１では、図１９Ｂに示した動作例Ａ１のステップＳ４２の代わりにステップＳ４２−１Ｄ、ステップＳ４２−２Ｄが実行される。ステップＳ４２−１Ｄで、ライトプロテクトされたネームスペースがあったとしても、初期化処理部５８は、暗号鍵管理部４２が管理している「ライトプロテクトされたネームスペースに設定された仮想レンジを含む、すべての仮想レンジの暗号鍵」をリバートコマンドによって任意の他の鍵に更新する。ステップＳ４２−２Ｄで暗号処理部３４はライトプロテクトされたネームスペースのデータを更新後の暗号鍵で再暗号化する。
【０１１８】
図２３（ｂ）に示す動作例Ｄ２では、図２０Ｂに示した動作例Ａ２のステップＳ７０の代わりにステップＳ７０−１Ｄ、ステップＳ７０−２Ｄが実行される。ステップＳ７０−１Ｄで、ライトプロテクトされたネームスペースがあったとしても、初期化処理部５８は、レンジ管理部６４が管理している「ライトプロテクトされたネームスペースに設定された仮想レンジを含む、すべての仮想レンジの暗号鍵」をリバートコマンドによって任意の他の鍵に更新する。ステップＳ７０−２Ｄで暗号処理部３４はライトプロテクトされたネームスペースのデータを更新後の暗号鍵で再暗号化する。
【０１１９】
動作例Ｄによれば、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースがあったとしても、ＴＣＧ規格に基づくリバートコマンドの実行により、ライトプロテクトされたネームスペースに設定された仮想レンジを含む、すべての仮想レンジの暗号鍵を更新するが、ライトプロテクトされたネームスペースのデータを更新後の暗号鍵で再暗号化するので、ライトプロテクトされたネームスペースのデータを無効化せずにストレージ装置１２に残すことができる。これにより、ホスト装置１４から見れば、ライトプロテクトのステートと、データは維持される事になる。
【０１２０】
ＴＣＧ規格とＮＶＭｅ規格の完全共存が可能な「ライトプロテクトされたネームスペースに設定されたネームスペース・グローバルレンジについてGenKeyコマンドの実行を禁止する」動作例Ｅの処理の一例を図２４を参照して説明する。
図２４（ａ）に示す動作例Ｅ１では、図１９Ｂに示した動作例Ａ１の「GenKeyコマンド受信」ステップＳ４４の次のステップＳ４６Ｅで、暗号鍵管理部４２は、GenKeyコマンドの対象であるネームスペース・グローバルレンジが配置されたネームスペースがライトプロテクトされているか否かをライトプロテクト管理／検査部５６に対して問い合わせる。GenKeyコマンド対象のネームスペースがライトプロテクトされている場合、暗号鍵管理部４２は、ライトプロテクトされたネームスペースに設定された仮想レンジの暗号鍵の更新、すなわちGenKeyコマンドの実行を禁止し、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効なのでＴＣＧ規格に基づくGenKeyコマンドが実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号を返送する。
【０１２１】
図２４（ｂ）に示す動作例Ｅ２では、図２０Ｂに示した動作例Ａ２の「GenKeyコマンド受信」ステップＳ７２の次のステップＳ７４Ｅで、暗号鍵管理部４２は、GenKeyコマンドの対象であるネームスペース・グローバルレンジが配置されたネームスペースがライトプロテクトされているか否かをライトプロテクト管理／検査部５６に対して問い合わせる。GenKeyコマンド対象のネームスペースがライトプロテクトされている場合、暗号鍵管理部４２は、ライトプロテクトされたネームスペースに設定された仮想レンジの暗号鍵の更新、すなわちGenKeyコマンドの実行を禁止し、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効なのでＴＣＧ規格に基づくGenKeyコマンドが実行できないというＮＶＭｅ優先を示すエラーコードを含むＮＶＭｅ優先を示すエラーコードを含むエラー信号を返送する。
【０１２２】
動作例Ｅによれば、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースに設定された仮想レンジについてＴＣＧ規格に基づくGenKeyコマンドの実行が禁止されるので、ライトプロテクトされたネームスペースに設定された仮想レンジの暗号鍵の更新が防止される。
【０１２３】
ＴＣＧ規格とＮＶＭｅ規格の完全共存が可能な「ライトプロテクトされたネームスペースに設定された仮想レンジについてGenKeyコマンドの実行を許可する」動作例Ｆの処理の一例を図２５を参照して説明する。
図２５（ａ）に示す動作例Ｆ１では、図１９Ｂに示した動作例Ａ１の「GenKeyコマンド受信」ステップＳ４４の次のステップＳ４６Ｆで、暗号鍵管理部４２は、GenKeyコマンドの対象であるネームスペース・グローバルレンジが配置されたネームスペースがライトプロテクトされていても、当該ネームスペースに設定された仮想レンジの暗号鍵の更新、すなわちGenKeyコマンドの実行を許可し、GenKeyコマンドを実行する。
【０１２４】
図２５（ｂ）に示す動作例Ｆ２では、図２０Ｂに示した動作例Ａ２の「GenKeyコマンド受信」ステップＳ７２の次のステップＳ７４Ｆで、暗号鍵管理部４２は、GenKeyコマンドの対象であるネームスペース・グローバルレンジが配置されたネームスペースがライトプロテクトされていても、当該ネームスペースに設定された仮想レンジの暗号鍵の更新、すなわちGenKeyコマンドの実行を許可し、GenKeyコマンドを実行する。
【０１２５】
動作例Ｆによれば、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースに設定された仮想レンジについてＴＣＧ規格に基づくGenKeyコマンドの実行が許可されるので、ライトプロテクトされたネームスペースに設定された仮想レンジの暗号鍵が更新される。
【０１２６】
ＴＣＧ規格とＮＶＭｅ規格の完全共存が可能な「ライトプロテクトされたネームスペース専用の新たなレンジ（ライトプロテクトレンジ）を定義する」動作例Ｒ（グループ１の動作例Ｅ、Ｆ及び後述するグループ２の動作例Ｉ、Ｊ、Ｋの変形例）の処理の一例を図２６、図２７を参照して説明する。
【０１２７】
図２６に示す動作例Ｒ１では、図１９Ａに示した動作例Ａ１の「リバートコマンド実行」ステップＳ３０と「レンジ配置コマンド受信」ステップＳ３２の間に２つのステップＳ３１−１Ｒ、Ｓ３１−２Ｒが追加され、「レンジ配置コマンド受信」ステップＳ３２がステップＳ３２Ｒに変更され、「レンジ配置コマンド実行」ステップＳ３４がステップＳ３４Ｒに変更される。
【０１２８】
ステップＳ３０のリバートコマンドの実行後、ステップＳ３１−１Ｒでストレージ装置１２はライトプロテクトされたネームスペースに配置される予定のネームスペース・グローバルレンジの属性をライトプロテクトレンジに変更するセットコマンドを受信する。ステップＳ３１−２Ｒでレンジ管理部６４はライトプロテクトされたネームスペースに配置される予定のネームスペース・グローバルレンジの属性をライトプロテクトレンジに変更する。ステップＳ３２Ｒでライトプロテクトされたネームスペースにネームスペース・グローバルレンジを配置するレンジ配置コマンドを受信する。ステップＳ３４Ｒでレンジ設定部４８はレンジ配置コマンドを実行し、レンジ配置コマンドで指定されたネームスペース（ライトプロテクトされたネームスペース）に属性がライトプロテクトレンジであるネームスペース・グローバルレンジ（ライトプロテクトレンジ）を配置する。
【０１２９】
図２７に示す動作例Ｒ２では、図２０Ａに示した動作例Ａ２の「アクティベートコマンド実行」ステップＳ２２と「レンジ配置コマンド受信」ステップＳ５２の間に２つのステップＳ５１−１Ｒ、Ｓ５１−２Ｒが追加され、「レンジ配置コマンド受信」ステップＳ５２がステップＳ５２Ｒに変更され、「レンジ配置コマンド実行」ステップＳ５４がステップＳ５４Ｒに変更される。
【０１３０】
ステップＳ２２のアクティベートコマンドの実行後、ステップＳ５１−１Ｒでストレージ装置１２はライトプロテクトされたネームスペースに配置される予定のネームスペース・グローバルレンジの属性をライトプロテクトレンジに変更するセットコマンドを受信する。ステップＳ５１−２Ｒでレンジ管理部６４はライトプロテクトされたネームスペースに配置される予定のネームスペース・グローバルレンジの属性をライトプロテクトレンジに変更する。ステップＳ５２Ｒでライトプロテクトされたネームスペースにネームスペース・グローバルレンジを配置するレンジ配置コマンドを受信する。ステップＳ５４Ｒでレンジ設定部４８はレンジ配置コマンドを実行し、レンジ配置コマンドで指定されたネームスペース（ライトプロテクトされたネームスペース）に属性がライトプロテクトレンジであるネームスペース・グローバルレンジを配置する。レンジ設定部４８、レンジ配置コマンドで指定されたネームスペース（ライトプロテクトされたネームスペース）に属性がライトプロテクトレンジでないネームスペース・グローバルレンジをライトプロテクトされたネームスペースに配置するレンジ配置コマンドであった場合、そのコマンドが実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号を返送する。
【０１３１】
動作例Ｒによれば、ＮＶＭｅ規格に基づきライトプロテクトされたネームスペースにネームスペース・グローバルレンジを配置することができ、ＴＣＧ規格に基づくロック機能を利用することができる。
ＴＣＧ規格とＮＶＭｅ規格の完全共存が可能な「データ消去処理（Data Sanitization）の実行中はライトプロテクトコマンドの実行を禁止する」動作例Ｓの処理の一例を図２８を参照して説明する。動作例Ｓは動作例Ａ１又はＡ２に続く処理であるので、動作例Ｓ１の処理と動作例Ｓ２の処理は同じである。
【０１３２】
すなわち、動作例Ｓ１又は動作例Ｓ２では、図１９Ｂの最後の処理の「Genkeyコマンド実行」ステップＳ４８又はＳ５０（「リバートコマンド実行」ステップＳ４２の場合もある）又は図２０Ｂの最後の処理の「Genkeyコマンド実行」ステップＳ７６又はＳ７８（「リバートコマンド実行」ステップＳ７０の場合もある）の後で、ステップＳ１０２に示すように、ストレージ装置１２はデータ消去コマンドを受信する。ステップＳ１０４で初期化処理部５８はブロック・イレーズ、オーバーライト・イレーズ、アンマップ又はライトポインタリセットにより記録データを消去するデータ消去処理を開始する。データ蓄積部３６の容量、データ蓄積部３６に格納するデータの容量と、データ消去の方法に依存して、データ消去処理に要する時間は異なる。従って、データ消去処理に時間がかかり、このデータ消去処理が完了するまでの間にホスト装置１４はライトプロテクトコマンドを送信する可能性がある。ステップＳ１０６でストレージ装置１２はライトプロテクトコマンドを受信する。ステップＳ１０８でライトプロテクト管理／検査部５６は初期化処理部５８にデータ消去処理中であるか否かを問い合わせる。初期化処理部５８から消去処理中という返答が返ってきた場合（ステップＳ１０８の判定結果がＹＥＳ）、ライトプロテクト管理／検査部５６は、ライトプロテクトコマンドの実行を禁止し、ライトプロテクトコマンドをエラーとする旨をライトプロテクト制御部３２に伝え、ライトプロテクト制御部３２がホスト装置１４に、ＴＣＧ規格に基づくデータ消去コマンドの機能が有効であるのでＮＶＭｅ規格に基づくライトプロテクト機能が実行できないというＴＣＧ優先を示すエラーコードを含むエラー信号を送信する。または図示しないが、ライトプロテクト管理／検査部５６は、初期化処理部５８から消去処理完了の返答が返ってくるまでライトプロテクトコマンドの実行を禁止し、ライトプロテクトコマンドの実行を保留し、消去処理完了の返答が返ってきた場合に、ライトプロテクト制御部３２はライトプロテクトコマンドの実行を許可し、ライトプロテクトコマンドで指定されたネームスペースを指定のライトプロテクションステートでライトプロテクトするようライトプロテクト管理／検査部５６に設定してもよい。
【０１３３】
初期化処理部５８から消去処理中という返答が返ってこない場合（ステップＳ１０８の判定結果がＮＯ）、つまり消去処理が完了している場合、ステップＳ１１２で、ライトプロテクト制御部３２はライトプロテクトコマンドの実行を許可し、ライトプロテクトコマンドで指定されたネームスペースを指定のライトプロテクションステートでライトプロテクトするようライトプロテクト管理／検査部５６に設定する。この設定により、指定されたネームスペースがライトプロテクトされる。
【０１３４】
動作例Ｓによれば、ＴＣＧ規格に基づくデータ消去処理中にＮＶＭｅ規格に基づくライトプロテクトコマンドが発行されても、中断されることなく消去処理が継続する。
ＴＣＧ規格とＮＶＭｅ規格の完全共存が可能な「ライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルであるネームスペースについてのデータ消去処理は次のパワーサイクルが生じた時に実行する」動作例Ｔの処理の一例を図２９を参照して説明する。動作例Ｔは動作例Ａ１又はＡ２に続く処理であるので、動作例Ｔ１と動作例Ｔ２は同じである。
【０１３５】
すなわち、動作例Ｔ１又は動作例Ｔ２では、図１９Ｂの最後の処理の「GenKeyコマンド実行」ステップＳ４８又はＳ５０（「リバートコマンド実行」ステップＳ４２の場合もある）又は図２０Ｂの最後の処理の「GenKeyコマンド実行」ステップＳ７６又はＳ７８（「リバートコマンド実行」ステップＳ７０の場合もある）の後で、ステップＳ１０２に示すように、ストレージ装置１２はデータ消去コマンドを受信する。ステップＳ１２０で、ライトプロテクト管理／検査部５６はライトプロテクトされたネームスペースのライトプロテクションステートはライトプロテクト・アンティル・パワーサイクルであるか否かを判定する。
【０１３６】
ライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルである場合（ステップＳ１２０の判定結果がＹＥＳ）、ステップＳ１２２で初期化処理部５８はデータ消去処理の実行を保留する。ステップＳ１２４に示すように初期化処理部５８は次のパワーサイクルが生じるまで待機する。初期化処理部５８は、データ消去処理の実行を保留したことを示すステータスデータをデータ蓄積部３６あるいはデータ蓄積部３６以外の不揮発性メモリに記憶しておく。なお、ステータスデータにはデータ消去処理の実行保留以外のステータスを示すステータスデータも存在する可能性がある。次のパワーサイクルが生じると、ステップＳ１２６で初期化処理部５８はデータ蓄積部３６に記憶されているステータスデータを調べ、ステータスデータがデータ消去処理の実行を保留したことを示す場合（ステップＳ１２６の判定結果がＹＥＳ）、ステップＳ１２８でデータ消去処理を実行する。ステータスデータがデータ消去処理の実行を保留したことを示すもの以外の場合（ステップＳ１２６の判定結果がＮＯ）、動作例Ｔは終了する。ステップＳ１２０でライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルでないと判定された場合（ステップＳ１２０の判定結果がＮＯ）、動作例Ｔは終了する。
【０１３７】
動作例Ｔによれば、ライトプロテクトされたネームスペースのライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルである場合、ライトプロテクトされたネームスペースについてのデータ消去処理は次のパワーサイクルまで保留される。
【０１３８】
ＴＣＧ規格とＮＶＭｅ規格の共存が可能（ただし、ＴＣＧ規格に基づく動作の一部が制限される）「ライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルのネームスペースが存在する場合で、このネームスペースについてネームスペース・グローバルレンジの配置を許可するが、ネームスペース・グローバルレンジに対するロック機能の有効／無効の設定を保留し、次のパワーサイクルが生じた時にネームスペース・グローバルレンジに対するロック機能の有効／無効を設定する」第２グループの動作例Ｇ１、動作例Ｇ２の処理の一例をそれぞれ図３０、図３１を参照して説明する。
【０１３９】
図３０に示す動作例Ｇ１では、図１９Ｂに示した動作例Ａ１の「レンジ配置コマンド受信」ステップＳ３２の代わりのステップＳ３２Ｇで、ストレージ装置１２のレンジ設定部４８はライトプロテクトされたネームスペースにネームスペース・グローバルレンジを配置するレンジ配置コマンドを受信する。レンジ設定部４８がレンジ配置コマンドを受信すると、ステップＳ１３２でライトプロテクト管理／検査部５６に対してライトプロテクトされたネームスペースのライトプロテクションステートはライトプロテクト・アンティル・パワーサイクルであるか否かを問い合わせる。
【０１４０】
ライトプロテクト管理／検査部５６からライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルでない旨の返答が来た場合（ステップＳ１３２の判定結果がＮＯ）、ステップＳ１３４でレンジ配置が許可されず、レンジ設定部４８はレンジ配置コマンドを実行しない。ライトプロテクト管理／検査部５６からライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルである旨の返答が来た場合（ステップＳ１３２の判定結果がＹＥＳ）、動作例Ａ１と同様に、ステップＳ３４でレンジ設定部４８はレンジ配置コマンドを実行し、レンジ配置コマンドで指定されたライトプロテクトされたネームスペースにネームスペース・グローバルレンジを配置し、ステップＳ３６でストレージ装置１２はレンジ設定コマンドを受信する。レンジ設定部４８はレンジ設定コマンドを受信すると、ステップＳ１３６に示すように、次のパワーサイクルが生じるまでレンジ設定コマンドの実行を保留する。次のパワーサイクルが生じると、動作例Ａ１と同様に、ステップＳ３８でレンジ設定部４８はレンジ設定コマンドを実行し、ライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジにリードロック／ライトロックをかける。
【０１４１】
図３１に示す動作例Ｇ２では、図２０Ａに示した動作例Ａ２の「アクティベート」ステップＳ１４の次に「ライトプロテクトコマンド受信」ステップＳ６４、「ライトプロテクト」ステップＳ６６が実行される。「ライトプロテクト」ステップＳ６６の実行後にステップＳ５２Ｇで、ストレージ装置１２のレンジ設定部４８はライトプロテクトされたネームスペースにネームスペース・グローバルレンジを配置するレンジ配置コマンドを受信する。レンジ設定部４８がレンジ配置コマンドを受信すると、ステップＳ１４２でライトプロテクト管理／検査部５６に対してライトプロテクトされたネームスペースのライトプロテクションステートはライトプロテクト・アンティル・パワーサイクルであるか否かを問い合わせる。
【０１４２】
ライトプロテクト管理／検査部５６からライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルでない旨の返答が来た場合（ステップＳ１４２の判定結果がＮＯ）、ステップＳ１４４でレンジ配置が許可されず、レンジ設定部４８はレンジ配置コマンドを実行しない。ライトプロテクト管理／検査部５６からライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルである旨の返答が来た場合（ステップＳ１４２の判定結果がＹＥＳ）、動作例Ａ２と同様に、ステップＳ５４でレンジ設定部４８はレンジ配置コマンドを実行し、レンジ配置コマンドで指定されたライトプロテクトされたネームスペースに配置された仮想レンジの属性を仮想レンジからネームスペース・グローバルレンジに変更し、ステップＳ５６でストレージ装置１２はレンジ設定コマンドを受信する。レンジ設定部４８はレンジ設定コマンドを受信すると、ステップＳ１４６に示すように、次のパワーサイクルが生じるまでレンジ設定コマンドの実行を待機する。次のパワーサイクルが生じると、動作例Ａ２と同様に、ステップＳ５８でレンジ設定部４８はレンジ設定コマンドを実行し、ライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジにリードロック／ライトロックをかける。
【０１４３】
動作例Ｇによれば、ライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルのネームスペースについてネームスペース・グローバルレンジの配置が許可されるが、ネームスペース・グローバルレンジに対するロック機能の有効／無効の設定は次のパワーサイクルが生じるまで保留される。
【０１４４】
ＴＣＧ規格とＮＶＭｅ規格の共存が可能（ただし、ＴＣＧ規格に基づく動作の一部が制限される）「ライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルのネームスペースが存在する場合で、リバートコマンドの受付を許可するが、リバートコマンドの実行を保留し、次のパワーサイクルが生じた時にリバートコマンドを実行する」動作例Ｈ１、動作例Ｈ２の処理の一例をそれぞれ図３２、図３３を参照して説明する。
【０１４５】
図３２に示す動作例Ｈ１では、図１９Ｂに示した動作例Ａ１の「リバートコマンド受信」ステップＳ４０と「GenKeyコマンド受信」ステップＳ４４の間に、ステップＳ１５２、Ｓ１５４、Ｓ１５６、Ｓ１５８が実行される。
ステップＳ１５２で、初期設定部５４は、ライトプロテクト管理／検査部５６に対して、ライトプロテクトされたネームスペースのライトプロテクションステートはライトプロテクト・アンティル・パワーサイクルであるか否かを問い合わせる。初期設定部５４は、ライトプロテクト管理／検査部５６からライトプロテクトされたネームスペースのライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルである旨の返答が来た場合（ステップＳ１５２の判定結果がＹＥＳ）、ステップＳ１５４でリバートコマンドの実行を保留する。ステップＳ１５６で初期化処理部５８は次のパワーサイクルが生じるまで待機する。次のパワーサイクルが生じると、ステップＳ１５８で初期化処理部５８はリバートコマンドを実行する。
【０１４６】
ライトプロテクトされているネームスペースのライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルでない旨の返答が来た場合（ステップＳ１５２の判定結果がＮＯ）、ステップＳ１５４、Ｓ１５６は実行されず、ステップＳ１５８で初期化処理部５８はリバートコマンドを実行する。
【０１４７】
なお、図１９Ｂに示した動作例Ａ１では、「リバートコマンド受信」ステップＳ４０と「GenKeyコマンド受信」ステップＳ４４の実行の順番が逆の場合もあるが、その場合は、ステップＳ３８、Ｓ４４、Ｓ４６、Ｓ４０、Ｓ１５２、Ｓ１５４、Ｓ１５６、Ｓ１５８の順に実行される。
【０１４８】
図３３に示す動作例Ｈ２では、図２０Ｂに示した動作例Ａ２の「リバートコマンド受信」ステップＳ６８と「GenKeyコマンド受信」ステップＳ７２の間に、ステップＳ１６２、Ｓ１６４、Ｓ１６６、Ｓ１６８が実行される。
ステップＳ１６２で、初期設定部５４は、ライトプロテクト管理／検査部５６に対して、ライトプロテクトされたネームスペースのライトプロテクションステートはライトプロテクト・アンティル・パワーサイクルであるか否かを問い合わせる。初期設定部５４は、ライトプロテクト管理／検査部５６からライトプロテクトされたネームスペースのライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルである旨の返答が来た場合（ステップＳ１６２の判定結果がＹＥＳ）、ステップＳ１６４でリバートコマンドの実行を保留する。ステップＳ１６６に示すように初期化処理部５８は次のパワーサイクルが生じるまで待機する。次のパワーサイクルが生じると、ステップＳ１６８で初期化処理部５８はリバートコマンドを実行する。
【０１４９】
ライトプロテクトされているネームスペースのライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルでない旨の返答が来た場合（ステップＳ１６２の判定結果がＮＯ）、ステップＳ１６４、Ｓ１６６は実行されず、ステップＳ１６８で初期化処理部５８はリバートコマンドを実行する。
【０１５０】
なお、図２０Ｂに示した動作例Ａ２では、「リバートコマンド受信」ステップＳ６８と「GenKeyコマンド受信」ステップＳ７２の実行の順番が逆の場合もあるが、その場合は、ステップＳ６６、Ｓ７２、Ｓ７４、Ｓ６８、Ｓ１６２、Ｓ１６４、Ｓ１６６、Ｓ１６８の順に実行される。
【０１５１】
動作例Ｈによれば、ライトプロテクションステートがライトプロテクト・アンティル・パワーサイクルのネームスペースが存在する場合、リバートコマンドの実行は次のパワーサイクルが生じるまで保留される。
ＴＣＧ規格とＮＶＭｅ規格の共存が可能（ただし、ＴＣＧ規格に基づく動作の一部が制限される）「ライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジについてリードロックをかけることを許可し、GenKeyコマンドの実行を禁止する」動作例Ｉ１、動作例Ｉ２の処理の一例をそれぞれ図３４、図３５を参照して説明する。
【０１５２】
図３４に示す動作例Ｉ１では、図１９Ｂに示した動作例Ａ１の「レンジ配置コマンド受信」ステップＳ３２の代わりのステップＳ３２Ｉで、レンジ設定部４８は、ライトプロテクトされたネームスペースについてのレンジ配置コマンドを受信する。動作例Ａ１の「レンジ配置」ステップＳ３４の代わりのステップＳ３４Ｉで、レンジ設定部４８は、ライトプロテクトされたネームスペースにネームスペース・グローバルレンジを配置する。次に、動作例Ａ１の「レンジ設定コマンド受信」ステップＳ３６の代わりのステップＳ３６Ｉで、レンジ設定部４８は、ライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジについてのレンジ設定コマンドを受信する。レンジ設定部４８は、ステップＳ３８Ｉ−１で、レンジ設定コマンドのコマンド種別を判定する。レンジ設定コマンドのコマンド種別がリードロックコマンドである場合、つまりリードロック機能を有効にするコマンド、もしくはリードロックを設定するコマンドの場合、レンジ設定部４８は、ステップＳ３８Ｉ−２で、ライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジにリードロックをかける。レンジ設定コマンドのコマンド種別がライトロックコマンドである場合、つまりライトロック機能を有効にするコマンド、もしくはライトロックを設定するコマンドの場合、レンジ設定部４８は、ステップＳ３８Ｉ−３で、レンジにライトロックをかけずに、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効であるのでＴＣＧ規格に基づくレンジ機能が実行できないというＴＣＧ優先を示すエラーコードを含むエラー信号を送信する。その後、動作例Ａ１と同様に、「リバートコマンド受信」ステップＳ４０、「リバートコマンド実行」ステップＳ４２Ｉ、「GenKeyコマンド受信」ステップＳ４４が実行される。ただし、動作例Ａ１のステップＳ４２では、ライトプロテクトされているネームスペースに設定された仮想レンジの暗号鍵が更新されないが、動作例Ｉ１のステップＳ４２Ｉでは、初期化処理部５８はライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジの暗号鍵を更新せず、それ以外の暗号鍵を更新する。動作例Ａ１の「GenKeyコマンド実行」ステップＳ４６の代わりのステップＳ４６Ｉで、レンジ設定部４８はライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジについてGenkKeyコマンドの実行を禁止し、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効であるのでＴＣＧ規格に基づくGenKeyコマンドが実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号を送信する。
【０１５３】
図３５に示す動作例Ｉ２では、図２０Ａに示した動作例Ａ２の「アクティベート」ステップＳ１４の次に「ライトプロテクトコマンド受信」ステップＳ６４、「ライトプロテクト」ステップＳ６６が実行される。次に、図２０Ａに示した動作例Ａ２の「レンジ設定コマンド受信」ステップＳ５６の代わりのステップＳ５６Ｉで、レンジ設定部４８は、ライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジについてのレンジ設定コマンドを受信する。レンジ設定部４８は、ステップＳ５８Ｉ−１で、レンジ設定コマンドのコマンド種別を判定する。レンジ設定コマンドのコマンド種別がリードロックコマンドである場合）、つまりリードロック機能を有効にするコマンド、もしくはリードロックを設定するコマンドの場合、レンジ設定部４８は、ステップＳ５８Ｉ−２で、レンジ設定部４８はライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジにリードロックをかける。レンジ設定コマンドのコマンド種別がライトロックコマンドである場合、つまりライトロック機能を有効にするコマンド、もしくはライトロックを設定するコマンドの場合、レンジ設定部４８は、ステップＳ５８Ｉ−３で、レンジにライトロックをかけずに、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効であるのでＴＣＧ規格に基づくレンジ機能が実行できないＮＶＭｅ優先を示すエラーコードを含むエラー信号を送信する。その後、動作例Ａ２と同様に、「リバートコマンド受信」ステップＳ６８、「リバートコマンド実行」ステップＳ７０、「GenKeyコマンド受信」ステップＳ７２が実行される。ただし、動作例Ａ１のステップＳ７０では、ライトプロテクトされているネームスペースに設定された仮想レンジの暗号鍵が更新されないが、動作例Ｉ２のステップＳ７０Ｉでは、初期化処理部５８はライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジの暗号鍵を更新せず、それ以外の暗号鍵を更新する。動作例Ａ２の「GenKeyコマンド実行」ステップＳ７４の代わりのステップＳ７４Ｉで、レンジ設定部４８はライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジについてGenKeyコマンドの実行を禁止し、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効であるのでＴＣＧ規格に基づくGenKeyコマンドが実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号を送信する。
【０１５４】
動作例Ｉによれば、ライトプロテクトされたネームスペースにネームスペース・グローバルレンジが配置されている場合、当該ネームスペース・グローバルレンジにリードロックをかけることができ、GenKeyコマンドの実行が禁止され、ライトプロテクトされたネームスペースのデータを保護することができる。
【０１５５】
ＴＣＧ規格とＮＶＭｅ規格の共存が可能（ただし、ＴＣＧ規格に基づく動作の一部が制限される）「ライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジについてリードロックをかけることとGenKeyコマンドの実行を許可する」動作例Ｊ１、Ｊ２の処理の一例をそれぞれ図３６、図３７を参照して説明する。
【０１５６】
図３６に示す動作例Ｊ１では、図３４に示した動作例Ｉ１の「GenKeyコマンドの実行を禁止する」ステップＳ４６Ｉの代わりのステップＳ４６Ｊで、レンジ設定部４８はライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジについてGenKeyコマンドを実行する。
【０１５７】
図３７に示す動作例Ｊ２では、図３５に示した動作例Ｉ２の「GenKeyコマンドの実行を禁止する」ステップＳ７４Ｉの代わりのステップＳ７４Ｊで、レンジ設定部４８はライトプロテクトされたネームスペースに配置されたネームスペース・グローバルレンジについてGenKeyコマンドを実行する。
【０１５８】
動作例Ｊによれば、ライトプロテクトされたネームスペースにネームスペース・グローバルレンジが配置されている場合、当該ネームスペース・グローバルレンジにリードロックをかけることとGenKeyコマンドを実行することができる。
ＴＣＧ規格とＮＶＭｅ規格の共存が可能（ただし、ＴＣＧ規格に基づく動作の一部が制限される）「アクティベート前あるいはインアクティブからアクティブに変化する際、ライトプロテクトされる予定のネームスペースがホスト装置１４から通知され、リバートコマンドの実行により暗号鍵を更新する際、ライトプロテクトされる予定のネームスペースのデータを更新後の暗号鍵で再暗号化する」動作例Ｋ１、Ｋ２の処理の一例を図３８を参照して説明する。
【０１５９】
図３８に示すように、動作例Ｋ１、Ｋ２では、図１９Ａ、図２０Ａに示した動作例Ａ１、Ａ２の「アクティベートコマンド受信」ステップＳ１２の前のステップＳ１１Ｋで、ストレージ装置１２はライトプロテクトされる予定のネームスペースをホスト装置１４から通知される。通知されたライトプロテクト予定のネームスペースはレンジ管理部６４の管理テーブルに記憶される。ネームスペースの通知例は、アクティベートコマンドのパラメータにライトプロテクトされる予定のネームスペースＩＤを加える例がある。あるいは、ストレージ装置１２に予めネームスペースＩＤテーブルを定義しておき、ホスト装置１４がライトプロテクトする予定のネームスペースＩＤをセットコマンドを利用してそのテーブルに登録しても良い。ストレージ装置１２はそのテーブルを参照することにより、ライトプロテクトされる予定のネームスペースＩＤを知り得る。
【０１６０】
以降、動作例Ｋ１、Ｋ２では、「リバートコマンド受信」ステップＳ４０（動作例Ａ１）又はステップＳ６８（動作例Ａ２）まで、動作例Ａ１、Ａ２と同様な処理が行われる。動作例Ｋ１では、動作例Ａ１の「リバートコマンド実行」ステップＳ４２の代わりのステップＳ４２Ｋで、初期化処理部５８は、リバートコマンドを実行し、暗号鍵管理部４２が管理する暗号鍵を更新し、暗号処理部３４は、レンジ管理部６４の管理テーブルを参照してライトプロテクトされる予定のネームスペースのデータを更新後の暗号鍵で再暗号化する。動作例Ｋ２では、動作例Ａ２の「リバートコマンド実行」ステップＳ７０の代わりのステップＳ７０Ｋで、初期化処理部５８はリバートコマンドを実行し、暗号鍵管理部４２が管理する暗号鍵を更新し、暗号処理部３４は、レンジ管理部６４の管理テーブルを参照してライトプロテクトされる予定のネームスペースのデータを更新後の暗号鍵で再暗号化する。
【０１６１】
なお、動作例Ｋ１、Ｋ２でも、「ライトプロテクトされる予定のネームスペースがホスト装置１４から通知される」ステップＳ１１Ｋを「アクティベート受信」ステップＳ１２の次のステップＳ１４でストレージ装置１２がインアクティブ状態からアクティブ状態に変化する際に実行しても良い。
【０１６２】
動作例Ｋによれば、リバートコマンドの実行により暗号鍵が更新されるが、ライトプロテクトされる予定のネームスペースのデータは更新後の暗号鍵で再暗号化されるので、ライトプロテクトされる予定のネームスペースのデータが読み出し不能になることがなく、データを保護することができる。
【０１６３】
ＴＣＧ規格とＮＶＭｅ規格の共存が可能（ただし、ＴＣＧ規格に基づく動作の一部が制限される）「ストレージ装置がライトプロテクション機能をサポートしている場合、未使用暗号鍵数の初期値を(1)ストレージ装置が持つ鍵の総数−サポート可能なネームスペース数、あるいは(2)ストレージ装置が持つ鍵の総数−ライトプロテクト可能なネームスペース数とする」動作例Ｕの処理の一例を図３９を参照して説明する。動作例Ｕは動作例Ａ１、Ａ２の共通部分の変形例であるので、動作例Ｕ１、Ｕ２の処理は同じである。
【０１６４】
図１９Ａに示した動作例Ａ１と図２０Ａに示した動作例Ａ２の「ネームスペース作成」ステップＳ１８と「リバートコマンド受信」ステップＳ２０の間に、ステップＳ１５Ｕが実行される。ステップＳ１５Ｕでは、図１０に示したように、未使用暗号鍵数の初期値が(1)暗号鍵管理部４２が格納し得る鍵の数−サポート可能なネームスペース数、あるいは(2) 暗号鍵管理部４２が格納し得る鍵の数−ライトプロテクト可能なネームスペース数とされる。
【０１６５】
動作例Ｕによれば、暗号鍵が不足しないようにライトプロテクトされる可能性のあるネームスペースの暗号鍵を確保しておくことができる。全てのネームスペースがライトプロテクトされても、全てのネームスペースにネームスペース・グローバルレンジを配置することができ、ネームスペース・グローバルレンジ毎に暗号鍵を設定することができる。
【０１６６】
従来技術では、未使用暗号鍵数の初期値＝ストレージ装置が備える鍵の数−配置済みのレンジの数である。配置済みのレンジの数＝配置したネームスペース・グローバルレンジの数＋ネームスペース・ノングローバルレンジの数である。従来技術では、１つのネームスペースに配置可能なレンジの数の上限は規定されていない。ドライブが備える数の数が１２９個であるとすると、ストレージ装置１２全体に１個のグローバルレンジ、ネームスペース１に１個のネームスペース・グローバルレンジと１２７個のネームスペース・ノングローバルレンジを割り当てると、暗号鍵を使い切ってしまい、これ以上暗号鍵をレンジに割り当てることができない。
【０１６７】
ネームスペース１に１２７個のネームスペース・ノングローバルレンジを割り当てた状態で、ネームスペース２をライトロック設定しようとしても、暗号鍵を使い切ってしまっているので、ネームスペース２に新しい暗号鍵を割り当てることはできない。この状態でリバートコマンドを実行すると、ネームスペース２がライトロック設定されていた場合であっても、暗号鍵はグローバルレンジの暗号鍵と同じであるので、暗号鍵が更新され、ネームスペース２のデータは読み出し不能となってしまう。
【０１６８】
これでは動作例Ａを実現することができない。そのため、動作例Ｕでは、未使用暗号鍵数の初期値＝暗号鍵管理部４２が格納し得る鍵の数−サポート可能なネームスペース数又は暗号鍵管理部４２が格納し得る鍵の数−ライトプロテクト可能なネームスペース数とする。暗号鍵管理部４２が格納し得る暗号鍵の数が１２９個、最大ネームスペース数が１６個と仮定すると、未使用暗号鍵数の初期値＝１２９−１６＝１１３となる。よって、ストレージ装置１２全体に１個のグローバルレンジ（１５個の仮想レンジ）、ネームスペース１に１個のネームスペース・グローバルレンジ（仮想レンジをネームスペース・グローバルレンジに設定変更したレンジ）と１１３個のネームスペース・ノングローバルレンジを割り当てると、暗号鍵を使い切ることになる。つまり、ネームスペース１に割り当て可能なネームスペース・ノングローバルレンジの数は従来技術より少ない。しかし、実施形態によれば、ネームスペース２をライトロック設定しようとした場合、レンジ設定部４８はネームスペース２に仮想レンジを設定し、暗号鍵管理部４２は予め確保していた１６個の鍵のうちの１個を仮想レンジに割り当てる。ネームスペース２のデータは独立した鍵で暗号化される。リバートコマンドが実行される場合、ネームスペース２は暗号鍵を独立して持っているので、ネームスペース２の仮想レンジの暗号鍵を更新する必要はない。これにより、ネームスペース２のデータが読み出し不能とされることを防止することができる。
【０１６９】
以上説明した動作例は第１グループ、第２グループに属する動作例であるので、ＮＶＭｅ規格に基づくライトプロテクション機能の設定が先に行われる第１例と、ＴＣＧ規格に基づくレンジ機能とロック機能の設定が先に行われる第２例を含むが、以下に説明する第３グループ、第４グループ、第５グループの動作例は第１、第２の二つの例を含まない。
【０１７０】
ＴＣＧ規格とＮＶＭｅ規格の共存が可能（ただし、ＮＶＭｅ規格に基づく動作の一部が制限される）「ネームスペース・グローバルレンジが配置されていないネームスペース（ただし、グローバルレンジの配置は可）についてライトプロテクトコマンドの実行を許可する」第３グループの動作例Ｎの処理の一例を図４０を参照して説明する。
【０１７１】
図２０Ｂに示した動作例Ａ２の「ライトプロテクトコマンド実行」ステップＳ６６の代わりのステップＳ６６Ｎ−１で、ライトプロテクト制御部３２はライトプロテクト管理／検査部５６に対してライトプロテクトコマンドで指定されたネームスペースにネームスペース・グローバルレンジが配置されているか否かを問い合わせる。ライトプロテクト管理／検査部５６からライトプロテクトコマンドで指定されたネームスペースにネームスペース・グローバルレンジが配置されていない（グルーバルレンジは配置されていてもよい）旨の返答が来た場合（ステップＳ６６Ｎ−１の判定結果がＮＯ）、ステップＳ６６Ｎ−２で、ライトプロテクト制御部３２は指定されたネームスペースをライトプロテクトするようライトプロテクト管理／検査部５６に設定する。この設定により、指定されたネームスペースが指定のライトプロテクションステートでライトプロテクトされ、ライトプロテクトコマンドが実行される。
【０１７２】
ライトプロテクトコマンドで指定されたネームスペースにネームスペース・グローバルレンジが配置されている旨の返答が来た場合（ステップＳ６６Ｎ−１の判定結果がＹＥＳ）、ステップＳ６６Ｎ−３で、ライトプロテクト管理／検査部５６はライトプロテクトコマンドの実行を禁止し、ライトプロテクトコマンドをエラーとする旨をライトプロテクト制御部３２へ通知し、ライトプロテクト制御部３２はホスト装置１４に、ＴＣＧ規格に基づくレンジ機能が有効であるのでＮＶＭｅ規格に基づくライトプロテクトコマンドが実行できないというＴＣＧ優先を示すエラーコードを含むエラー信号を送信する。
【０１７３】
動作例Ｎによれば、ライトプロテクトコマンドで指定されたネームスペースを、ネームスペース・グローバルレンジが配置されていなければ、ライトプロテクトすることができる。
ＴＣＧ規格とＮＶＭｅ規格の共存が可能（ただし、ＮＶＭｅ規格に基づく動作の一部が制限される）「ネームスペース・グローバルレンジが配置されたネームスペースがライトロックされていない場合、ライトプロテクトコマンドの実行を許可する」動作例Ｏの処理の一例を図４１を参照して説明する。
【０１７４】
図２０Ｂに示した動作例Ａ２の「ライトプロテクトコマンド実行」ステップＳ６６の代わりのステップＳ６６Ｏ−１で、ライトプロテクト制御部３２はライトプロテクト管理／検査部５６に対してライトプロテクトコマンドで指定されたネームスペースにネームスペース・グローバルレンジが配置されているか否かを問い合わせる。ライトプロテクト管理／検査部５６からライトプロテクトコマンドで指定されたネームスペースにネームスペース・グローバルレンジが配置されている旨の返答が来た場合（ステップＳ６６Ｏ−１の判定結果がＹＥＳ）、ステップＳ６６Ｏ−２で、ライトプロテクト制御部３２はロック制御部５２に対してライトプロテクトコマンドで指定されたネームスペースがライトロックされているか否かを問い合わせる。
【０１７５】
ロック制御部５２からライトプロテクトコマンドで指定されたネームスペースがライトロックされていない旨の返答が来た場合（ステップＳ６６Ｏ−２の判定結果がＮＯ）、ステップＳ６６Ｏ−３で、ライトプロテクト制御部３２は指定されたネームスペースをライトプロテクトするようライトプロテクト管理／検査部５６に設定する。この設定により、指定されたネームスペースが指定のライトプロテクションステートでライトプロテクトされ、ライトプロテクトコマンドが実行される。
【０１７６】
ロック制御部５２からライトプロテクトコマンドで指定されたネームスペースがライトロックされている旨の返答が来た場合（ステップＳ６６Ｏ−２の判定結果がＹＥＳ）、ステップＳ６６Ｏ−４で、ライトプロテクト管理／検査部５６は、ライトプロテクトコマンドの実行を禁止し、ライトプロテクトコマンドをエラーとする旨をライトプロテクト制御部３２へ通知し、ライトプロテクト制御部３２はホスト装置１４に、ＴＣＧ規格に基づくレンジ機能が有効であるのでＮＶＭｅ規格に基づくライトプロテクトコマンドが実行できないというＴＣＧ優先を示すエラーコードを含むエラー信号を送信する。
【０１７７】
ライトプロテクト管理／検査部５６からライトプロテクトコマンドで指定されたネームスペースにネームスペース・グローバルレンジが配置されていない旨の返答が来た場合（ステップＳ６６Ｏ−１の判定結果がＮＯ）、ステップＳ６６Ｏ−５で、ライトプロテクト制御部３２はライトプロテクトコマンドの実行を許可し、ライトプロテクトコマンドで指定されたネームスペースを指定のライトプロテクションステートでライトプロテクトする。
【０１７８】
動作例Ｏによれば、ライトプロテクトコマンドで指定されたネームスペースにネームスペース・グローバルレンジが配置されていても、ネームスペースがライトロックされていない場合、ネームスペースをライトプロテクトすることができる。
ＴＣＧ規格とＮＶＭｅ規格の共存が不可（ただし、ＴＣＧ規格に基づく動作が優先される）「ＴＣＧ規格によりアクティベートされている状態ではライトプロテクトコマンドの実行を禁止する」第４グループの動作例Ｍの処理の一例を図４２を参照して説明する。
【０１７９】
図１９Ａに示した動作例Ａ１の「ライトプロテクトコマンド受信」ステップＳ２４の次のステップＳ２６Ｍ−１で、ライトプロテクト管理／検査部５６は初期化処理部５８に対してストレージ装置１２がアクティベート済みであるか否かを問い合わせる。初期化処理部５８からアクティベート済みである旨の返答が来た場合（ステップＳ２６Ｍ−１の判定結果がＹＥＳ）、ライトプロテクト管理／検査部５６は、ステップＳ２６Ｍ−２で、ライトプロテクトコマンドの実行を禁止し、ライトプロテクトコマンドをエラーとする旨をライトプロテクト制御部３２に通知し、ライトプロテクト制御部３２がホスト装置１４に、ＴＣＧ規格に基づくレンジ機能が有効であるのでＮＶＭｅ規格に基づくライトプロテクトコマンドが実行できないというＴＣＧ優先を示すエラーコードを含むエラー信号を送信する。ステップＳ２６Ｍ−２の実行後、動作例Ａ１のステップＳ２８が実行される。初期化処理部５８からアクティベート済みでない旨の返答が来た場合（ステップＳ２６Ｍ−１の判定結果がＮＯ）、動作例Ａ１のステップＳ２６で、ライトプロテクト制御部３２はライトプロテクトコマンドで指定されたネームスペースをライトプロテクトするようライトプロテクト管理／検査部５６に設定する。この設定により、指定されたネームスペースが指定のライトプロテクションステートでライトプロテクトされる。ステップＳ２６の次にステップＳ２８が実行される。ＴＣＧ規格に基づくレンジ機能が有効であるのでＮＶＭｅ規格に基づくライトプロテクトコマンドが実行できないというＴＣＧ優先を示すエラーコードを含むエラー信号が返送されたので、ホスト装置１４はライトプロテクトコマンドの実行がエラーとなったのは、ＴＣＧ規格によりストレージ装置１２がアクティベート済みであることが原因であることが分かる。
【０１８０】
ＴＣＧ規格とＮＶＭｅ規格の共存が不可（ただし、ＮＶＭｅ規格に基づく動作が優先される）「ライトプロテクトされたネームスペースについてネームスペース・グローバルレンジの配置を禁止する」第５グループの動作例Ｌの処理の一例を図４３を参照して説明する。
【０１８１】
図１９Ｂに示した動作例Ａ１の「レンジ設定コマンド受信」ステップＳ３６の次のステップＳ３８Ｌ−１で、レンジ設定部４８は、ライトプロテクト管理／検査部５６に対してコマンドで指定されたネームスペースがライトプロテクトされているか否か問い合わせる。コマンドで指定されたネームスペースがライトプロテクトされている旨の返答がライトプロテクト管理／検査部５６から来た場合（ステップＳ３８Ｌ−１の判定結果がＹＥＳ）、レンジ設定部４８は、ステップＳ３８Ｌ−２で、ライトプロテクトされているネームスペースについてネームスペース・グローバルレンジの配置を禁止し、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効であるのでＴＣＧ規格に基づくレンジ機能が実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号を送信する。
【０１８２】
コマンドで指定されたネームスペースがライトプロテクトされていない旨の返答がライトプロテクト管理／検査部５６から来た場合（ステップＳ３８Ｌ−１の判定結果がＮＯ）、レンジ設定部４８は、ステップＳ３８Ｌ−３で、ライトプロテクトされていないネームスペースについてネームスペース・グローバルレンジを配置する。ステップＳ３８Ｌ−２とステップＳ３８Ｌ−３の次に「リバートコマンド受信」ステップＳ４０が実行される。
【０１８３】
動作例Ｌによれば、ライトプロテクトされていないネームスペースについてレンジ設定は有効であるので、ライトプロテクトされていないネームスペースに暗号鍵を設定することができる。
ＴＣＧ規格とＮＶＭｅ規格の共存が不可（ただし、ＮＶＭｅ規格に基づく動作が優先される）「ストレージ装置がライトプロテクション機能をサポートしている場合、ＴＣＧ規格によるアクティベートを禁止する」第５グループの動作例Ｐの処理の一例を図４４を参照して説明する。
【０１８４】
図１９Ａに示した動作例Ａ１の「アクティベートコマンド受信」ステップＳ１２の次のステップＳ１４Ｐ−１で、初期設定部５４は、ストレージ装置１２がライトプロテクション機能をサポートしているかをライトプロテクト管理／検査部５６に問い合わせる。ライトプロテクト管理／検査部５６からライトプロテクション機能をサポートしている旨の返答が来た場合（ステップＳ１４Ｐ−１の判定結果がＹＥＳ）、ステップＳ１４Ｐ−２で初期化処理部５８はアクティベートコマンドの実行を禁止し、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効であるのでＴＣＧ規格に基づくアクティベートコマンドが実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号を返す。そのため、ストレージ装置１２はＴＣＧ規格に従う動作を実行することができない。
【０１８５】
ライトプロテクト管理／検査部５６からライトプロテクション機能をサポートしていない旨の返答が来た場合（ステップＳ１４Ｐ−１の判定結果がＮＯ）、ステップＳ１４で初期化処理部５８はアクティベートコマンドを実行する。ステップＳ１４Ｐ−２又はステップＳ１４の次に「ネームスペース作成コマンド受信」ステップＳ１６が実行される。
【０１８６】
ＴＣＧ規格とＮＶＭｅ規格の共存が不可（ただし、ＮＶＭｅ規格に基づく動作が優先される）「ストレージ装置がライトプロテクション機能をサポートしている場合、ライトプロテクトされる予定のネームスペースについてネームスペース・グローバルレンジの配置を禁止する」第５グループの動作例Ｑの処理の一例を図４５を参照して説明する。
【０１８７】
図２０Ａに示した動作例Ａ２の「レンジ配置コマンド実行」ステップＳ５４までに実行されるステップＳ１７０で、ストレージ装置１２にはホスト装置１４からライトプロテクト予定のネームスペースが通知される。ネームスペースの通知例は、アクティベートコマンドのパラメータにライトプロテクトされる予定のネームスペースＩＤを加える例がある。あるいは、ストレージ装置１２に予めネームスペースＩＤテーブルを定義しておき、ホスト装置１４がライトプロテクトする予定のネームスペースＩＤをセットコマンドを利用してそのテーブルに登録しても良い。ストレージ装置１２はそのテーブルを参照することにより、ライトプロテクトされる予定のネームスペースＩＤを知り得る。
【０１８８】
図２０Ａに示した動作例Ａ２の「レンジ配置コマンド実行」ステップＳ５４の代わりのステップＳ５４Ｑ−１で、初期設定部５４は、ストレージ装置１２がライトプロテクション機能をサポートしているかをライトプロテクト管理／検査部５６に問い合わせる。ライトプロテクト管理／検査部５６からライトプロテクション機能をサポートしている旨の返答が来た場合（ステップＳ５４Ｑ−１の判定結果がＹＥＳ）、ステップＳ５４Ｑ−２で、レンジ設定部４８はライトプロテクトされる予定のネームスペースについてネームスペース・グローバルレンジの配置を禁止し、ホスト装置１４に、ＮＶＭｅ規格に基づくライトプロテクト機能が有効であるのでＴＣＧ規格に基づくレンジ機能が実行できないというＮＶＭｅ優先を示すエラーコードを含むエラー信号を送信する。ライトプロテクト管理／検査部５６からライトプロテクション機能をサポートしていない旨の返答が来た場合（ステップＳ５４Ｑ−１の判定結果がＮＯ）、ステップＳ５４Ｑ−３で、レンジ設定部４８はライトプロテクトされる予定のネームスペースについてネームスペース・グローバルレンジを配置する。ステップＳ５４Ｑ−２とステップＳ５４Ｑ−３の次に「レンジ設定コマンド受信」ステップＳ５６が実行される。
【０１８９】
「特殊なリバートコマンド（フォース・リバートコマンド）を実行し得るフォース・リバートＰＩＮを定義し、フォース・リバートＰＩＮの権限でフォース・リバートコマンドを実行する場合、ライトプロテクション機能を無効とする」第６グループの動作例Ｖの一例を図４６を参照して説明する。
【０１９０】
動作例Ｖでは、ＰＩＮ管理部４６は図４６（ａ）に示すようにフォース・リバートＰＩＮ４６ｅも管理するように変更される。
動作例Ｖは上述した動作例のいずれとも組み合わせられる。ステップＳ２０２でストレージ装置１２はフォース・リバートコマンドを受信する。ステップＳ２０４で認証処理部２６はＰＩＮを用いてフォース・リバートコマンドの発行元のユーザ認証を行う。ここでは、認証処理部２６でＰＩＮによるユーザ認証が成功したと仮定する。その場合、ステップＳ２０６で認可処理部２８は、認証が成功したＰＩＮの種類に基づいて、フォース・リバートコマンドの発行元がフォース・リバートコマンドを発行可能な権限を有するかどうかの判定処理を行う。認可処理部２８が発行元はフォース・リバートコマンドの発行権限があると判定する（ステップＳ２０６の判定結果がＹＥＳ）と、ライトプロテクト管理／検査部５６はネームスペースのライトプロテクトを解除し、初期化処理部５８はストレージ装置１２の暗号鍵を更新し、データを無効化する（フォース・リバートコマンドを実行する）。認可処理部２８が発行元はフォース・リバートコマンドの発行権限が無いと判定する（ステップＳ２０６の判定結果がＮＯ）と、ステップＳ２１０でフォース・リバートコマンドの実行が禁止され、ストレージ装置１２のデータは無効化されない。
【０１９１】
動作例Ｖによれば、修理、再製造のためにストレージ装置が製造者の製造工場に戻ってきた場合、ライトプロテクトされているネームスペースも初期化することが可能となる。
「ストレージ装置の挙動（上記のどの動作例を実行するか）をホスト装置が識別できるようにホスト装置１４に通知する」第６グループの動作例Ｗの一例を図４７を参照して説明する。通知の一例には、非特許文献１で定義されているLevel 0 Discovery HeaderとLevel 0 Discovery Responseを応用することができる。図４７（ａ）はLevel 0 Discovery Headerを利用する動作例通知要求の一例を示す。Level 0 Discovery Headerはストレージ装置１２に対してLevel 0 Discovery Responseを返信するよう指示するだけであり、header部のみでコンテンツ部は含まない。図４７（ｂ）はLevel 0 Discovery Responseを利用する動作例通知応答情報の一例を示す。Level 0 Discovery Response は図４７（ａ）に示すLevel 0 Discovery Headerとコンテンツ部とからなる。コンテンツ部にはフューチャー記述子が記述される。図４７（ｃ）に示すように、複数の動作例に複数のフューチャーコードがそれぞれ割り当てられる。たとえば、実施形態では動作例Ａで示したようにホスト装置１４からリバートコマンドを受信した場合、ライトプロテクトされたネームスペースに設定された仮想レンジの暗号鍵を更新しない場合と、動作例Ｃで示したようにライトプロテクトされたネームスペースに配置された仮想レンジの暗号鍵を更新する場合がある。Ｉ／Ｆ処理部２２は、図４７（ｃ）の動作例フィールドの値を利用してストレージ装置１２がどちらの動作を行うのかホスト装置に伝える。同様に、動作例Ｂで示したようにリバートコマンドが発行された場合、ライトプロテクトされたネームスペースに設置された仮想レンジの暗号鍵を更新するか否かをホストがリバートコマンドのパラメータで指定する。Ｉ／Ｆ処理部２２は、図４７（ｃ）の動作例フィールドの値を利用して、ストレージ装置１２がこのリバートコマンドのパラメータをサポートするか否かをホスト装置に伝える。このように、Ｉ／Ｆ処理部２２は、ストレージ装置１２がこれまで示してきたようなどの動作例を行うのか、どの動作例の機能をサポートしているかを図４７（ｃ）の動作例フィールドの値を利用して、ホスト装置１４に伝える機能を有する。Ｉ／Ｆ処理部２２は、動作例通知要求を受信すると、動作例に割り当てられているフューチャーコードをフューチャー記述子に記述する動作例通知応答情報をホスト装置１４に送信数する。
【０１９２】
第１実施形態によれば、ＴＣＧ規格に基づくロック機能とＮＶＭｅ規格に基づくライトプロテクト機能をともに実現するにあたり、レンジ（例えば、ネームスペース）毎に別々の暗号鍵を設定し、ＴＣＧ規格の初期化が命令された時、ライトプロテクトされているネームスペース以外のネームスペースの暗号鍵を更新することにより、ライトプロテクトされているネームスペースのデータが消去されることを防止するとともに、ロック機能により不正なユーザデータのアクセスを防止することもできる。
【０１９３】
なお、上述の説明では、リバートコマンド又はGenKeyコマンドの実行によりストレージ装置を初期化する際、暗号鍵を更新することによりデータを無効化したが、無効化の代わりに、ブロック・イレーズ、オーバーライト・イレーズ、アンマップやライトポインタリセット等によりデータを消去してもよい。
【０１９４】
［第２実施形態］
第１実施形態は図６に示すように暗号化データを格納するストレージ装置に関するが、本発明の実施形態はデータを暗号化せずにデータを平文のまま格納するストレージ装置も含む。図４８は、第２実施形態のストレージ装置の構成例を示すブロック図である。
【０１９５】
図４８のストレージ装置は、図６のストレージ装置から暗号化に関する回路部分を取り除いたものである。暗号化機能が定義されていないので、リード／ライト処理部２４はデータ蓄積部３６に直に接続される。暗号化機能が定義されていないので、初期化処理部５８は、クリプト・イレーズにより記録データを無効化することはできず、ブロック・イレーズ、オーバーライト・イレーズ、アンマップやライトポインタリセット等により記録データを消去する。
【０１９６】
このため、図１３〜図１８に示す動作例Ａ〜Ｗの中の暗号鍵の更新に関する動作例Ｄは第２実施形態ではサポートされない。GenKeyコマンドに関する動作例Ｅ、Ｆ、Ｉ、ＪではGenKeyコマンドがデータ消去コマンドに置き換えられる。他の動作例Ａ〜Ｃ、Ｇ、Ｈ、Ｋ〜Ｗの動作例は第２実施形態でもサポートされる。
【０１９７】
第２実施形態によっても、ＴＣＧ規格に基づくロック機能とＮＶＭｅ規格に基づくライトプロテクト機能をともに実現するにあたり、ＴＣＧ規格の初期化が命令された時、ライトプロテクトされているネームスペース以外のネームスペースのデータを消去することにより、ライトプロテクトされているネームスペースのデータが消去されることを防止するとともに、ロック機能により不正なユーザデータのアクセスを防止することもできる。
【０１９８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除しても良い。更に、異なる実施形態に亘る構成要素を適宜組み合せても良い。
【符号の説明】
【０１９９】
１２…ストレージ装置、１４…ホスト装置、１８…コントローラ、２２…Ｉ／Ｆ処理部、２４…リード／ライト処理部、２６…認証処理部、２８…認可処理部、３２…ライトプロテクト制御部、３４…暗号処理部、３６…データ蓄積部、３８…レンジ検査部、４２…暗号鍵管理部、４６…ＰＩＮ管理部、４８…レンジ設定部、５２…ロック制御部、５６…ライトプロテクト管理／検査部、５８…初期化処理部。
【図１】
2020150497.tif 000003
【図２】
2020150497.tif 000004
【図３】
2020150497.tif 000005
【図４】
2020150497.tif 000006
【図５】
2020150497.tif 000007
【図６】
2020150497.tif 000008
【図７】
2020150497.tif 000009
【図８Ａ】
2020150497.tif 000010
【図８Ｂ】
2020150497.tif 000011
【図８Ｃ】
2020150497.tif 000012
【図８Ｄ】
2020150497.tif 000013
【図９】
2020150497.tif 000014
【図１０】
2020150497.tif 000015
【図１１】
2020150497.tif 000016
【図１２】
2020150497.tif 000017
【図１３】
2020150497.tif 000018
【図１４】
2020150497.tif 000019
【図１５】
2020150497.tif 000020
【図１６】
2020150497.tif 000021
【図１７】
2020150497.tif 000022
【図１８】
2020150497.tif 000023
【図１９Ａ】
2020150497.tif 000024
【図１９Ｂ】
2020150497.tif 000025
【図２０Ａ】
2020150497.tif 000026
【図２０Ｂ】
2020150497.tif 000027
【図２１】
2020150497.tif 000028
【図２２】
2020150497.tif 000029
【図２３】
2020150497.tif 000030
【図２４】
2020150497.tif 000031
【図２５】
2020150497.tif 000032
【図２６】
2020150497.tif 000033
【図２７】
2020150497.tif 000034
【図２８】
2020150497.tif 000035
【図２９】
2020150497.tif 000036
【図３０】
2020150497.tif 000037
【図３１】
2020150497.tif 000038
【図３２】
2020150497.tif 000039
【図３３】
2020150497.tif 000040
【図３４】
2020150497.tif 000041
【図３５】
2020150497.tif 000042
【図３６】
2020150497.tif 000043
【図３７】
2020150497.tif 000044
【図３８】
2020150497.tif 000045
【図３９】
2020150497.tif 000046
【図４０】
2020150497.tif 000047
【図４１】
2020150497.tif 000048
【図４２】
2020150497.tif 000049
【図４３】
2020150497.tif 000050
【図４４】
2020150497.tif 000051
【図４５】
2020150497.tif 000052
【図４６】
2020150497.tif 000053
【図４７】
2020150497.tif 000054
【図４８】
2020150497.tif 000055