以下、図面を参照して実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成部品の構造、配置等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、複数の図面において、略同一の機能及び構成を有する構成要素には同じ参照数字を付し、重複する説明は省略する場合もある。
[第1実施形態]
図1は第1実施形態のストレージ装置とホスト装置との接続例を示す。ストレージ装置12はホスト装置14に接続され、ホスト装置14から送信されるデータを自身の記憶媒体に書き込む、あるいは記憶媒体から読み出したデータをホスト装置14へ送信する。ストレージ装置12とホスト装置14とのインターフェースは、SCSI、ATA、NVMExpress(登録商標)、e・MMC等がある。ストレージ装置12は、図1(a)に示すようにホスト装置14に対して一対一で接続されてもよいし、図1(b)に示すようにネットワーク16を介してホスト装置14に対して多対一で接続されてもよい。ホスト装置14は、図1(a)ではパーソナルコンピュータ(以下、PCと称する)等の電子機器であり、図1(b)ではサーバ等である。図1(a)に示すストレージ装置12はPCベンダによりPCの筐体内に組み込まれてもよい。1台のストレージ装置12を使うユーザの人数は1人に限らない。1台のストレージ装置12が複数のユーザにより使用される場合もある。例えば、図1(b)に示すようにホスト装置14が多数のユーザに対して仮想マシンを提供するサービスを行う場合、1台のストレージ装置12が複数の領域(例えばNamespace、Range、パーティション)に分割され、各領域が各ユーザの仮想マシンとなることが可能である。
[概略構成]
図2はストレージ装置12の構成の一例を示す。ストレージ装置12はI/F処理部22を備え、I/F処理部22はホストインターフェース(I/F)を介してホスト装置14と接続される。I/F処理部22には、認証処理部102、認可許可部104、消去方式表示部106、消去方式表示要求受信部108が接続される。
認証処理部102はストレージ装置12へのアクセス制御を行うためにPIN(Personal Identification Number)を用いてユーザ認証を行う。認証処理部102にはPIN管理部112が接続される。PIN管理部112は複数のPIN、例えば所有者PIN(Security Identifier:SIDとも称する)112a、管理者PIN(AdminPINとも称する)112b、ラベルPIN(PSIDとも称する)112c、ユーザPIN112d等を管理する。ユーザ権限を階層化するために、管理者PINとユーザPINが設定されている。
ユーザはストレージ装置12を何らかの理由で工場出荷時の状態に戻したいことがある。例えば、ストレージ装置12を破棄する時、データ蓄積部34に格納されたユーザデータがストレージ装置12から流出することを防止したい。この明細書で、ストレージ装置12を工場出荷時の状態に戻すことをリセットと称する。リセットは、ユーザデータの消去(読み出せないようにすること)と工場出荷後に設定されたPINの初期化の両方を含む。ここでは、リセットには特定のPIN、例えば所有者PINまたはラベルPINが必要であるとする。また、ストレージ装置12はロック機能を備え、ロックする(アンロック状態からロック状態にする)あるいはアンロック(ロック状態からアンロック状態にする)するには、特定のPINが必要であるとする。
認可処理部104には認証処理部102とロック管理部110と領域情報管理部114とデータ消去部118とリード/ライト処理部122が接続される。認証処理部102はホスト装置14からリセットが指示されると、指示したユーザを認証する。具体的には入力されたPINの値がPIN管理部112に格納されたPINの値と一致するかチェックする処理を行う。たとえば、ホスト装置14から所有者として認証要求を受けた場合、認証要求に含まれるPINの値が、PIN管理部114に格納された所有者PIN112aと一致するか検査を行い、一致すれば成功と判定し、一致しなければ失敗と判定する。認可処理部104は、コマンドの発行元(ホスト装置14のユーザ)がそのコマンドを発行する権限を有するか否かを判定し、その結果に応じてコマンドをロック管理部110とリード/ライト処理部122とデータ消去部118等に転送する。すなわち、認可処理部104は、どのコマンドがどの実行権限で実行可能かを判定するテーブルを管理しており、コマンド受信時にその権限で実行可能な処理であるかどうか判定処理を行う。たとえば、所有者PINとラベルPINで認証されている場合に限り、ストレージ装置12をリセットするためのRevertコマンドを実行可能であると認可処理部104が管理していたとする。この時、所有者PINで認証が成功したユーザがホスト装置14からストレージ装置12をリセットするためのRevertコマンドを送信したとする。認可処理部104はRevertコマンドの発行元がRevertコマンドを発行可能な権限を有するかどうか判定処理を行う。この例では所有者PINでRevertコマンドの実行が許可されているため、権限があると判定する。もし、ユーザPINで認証が成功したユーザがRevertコマンドを実行しようとした場合は権限がないと判定する。権限があると判定された場合、ストレージ装置12をリセットするためにRevertコマンドを実行データ消去部118に転送し、データ消去を実行させるとともに、PINを初期値に再設定する。
また、認可処理部104はアンロックコマンドをユーザPINまたは管理者PINで認証された発行元が発行した場合、アンロックコマンドをロック管理部110に転送し、ロック管理部110はストレージ装置12をアンロックする。ロック管理部110は領域情報管理部114で管理されるデータ蓄積部34のユーザ領域全体のロック・アンロックができるように設定できるようになっていてもよいし、データ蓄積部34の特定の領域のロック・アンロックが設定できるようになっていてもよい。なお、ラベルPINを用いる認証が成功した発行元がアンロックコマンドを発行しても、認可処理部104はアンロックコマンドをロック管理部110に転送しないので、ストレージ装置12はアンロックされない。
消去方式表示部106には消去方式表示要求受信部108と消去情報管理部124が接続される。消去方式表示要求受信部108はホスト装置14からのデータ消去方式問い合わせを受信して、消去方式表示部106に転送する。消去方式表示部106はストレージ装置12がサポートしているデータ消去の方式をホスト装置14に提示する。
データ消去方式の例は、上書き消去、ブロック消去、アンマップ、ライトポインタリセット、クリプトイレーズ(暗号鍵更新)等がある。上書き消去とは、消去するデータが保存されている領域に対して全て“0”や乱数により発生したデータを上書きすることである。ブロック消去は消去するデータを含むブロック全体をもとのデータを読み出し不能にすることである。アンマップはデータが記憶媒体のどのブロックに記憶されているかを表すマッピングテーブルを当該データについてリセットすることである。ライトポイントリセットはデータが記憶媒体のどのブロックに記憶されているかを表すポインタをリセットすることである。クリプトイレーズはストレージ装置12が有する鍵によって入力データを暗号化し、データ蓄積部34に暗号化データを記憶している場合、データの暗号に用いた鍵を更新することである。これにより、暗号化データが復号できず、入力したデータが読み出せない。
消去情報管理部124はデータ消去部118に接続される。消去情報管理部124はデータ消去中にリード/ライドコマンドを受け付けず、データ消去中の電源断に備えてデータ消去処理のステータスを管理し、電源断時の再起動後にどこまでデータを消去したかを示す情報をホスト装置12に提示する。
データ消去部118とリード/ライト処理部122がデータ蓄積部34に接続される。データ蓄積部34は大容量の不揮発性の記憶媒体、例えばフラッシュメモリ、ハードディスクからなる。データ蓄積部34はホスト装置14からのリード命令、ライト命令を受け付け、データの書き込み、読込みを行う。
ストレージ装置12の各部は、CPU24により制御される。
[PIN]
図3を参照してPINについて説明する。図3(a)はPINの種類によって発行できるコマンドを示す。所有者PINはActivate/Revert コマンドを発行する権限を有する。どのPINが何のコマンドを発行できるかは認可処理部104で管理されている。Activateコマンドはロック機能を有効化するためのコマンドである。RevertコマンドはPINを初期値に設定し、ロック機能を無効にし、データを強制消去するためのコマンドである。管理者PIN(AdminPINとも称する)はRevertSPコマンドを発行する権限を有する。RevertSPコマンドはPINを初期値に設定し、ロック機能を無効にするためのコマンドであり、データ強制消去については消去するかどうかをパラメータで指定できるコマンドである。ラベルPIN(PSIDとも称する)はRevertコマンドを発行する権限を有する。ユーザPINはコマンドを発行する権限を有しないが、ユーザに割り当てられた領域をアンロックできる。
図3(b)はストレージ装置12のリセットに関し、コマンドにより開始されるアクション、すなわち初期化するPINの種類と消去するデータの種類を示す。Activateコマンドはリセットではなく、その逆の活性化(activate)に関するものであり、PINの初期化とデータの消去はしない。Revertコマンドはデータ消去を行い、所有者PINと管理者PINを初期化する。RevertSPコマンドはデータ消去を行い、管理者PINを初期化する。RevertSPコマンドはデータ消去するか、しないで残すかをコマンド発行時にパラメータにより指定可能である。Revertコマンドではデータ消去する/しないというパラメータはなく、常にデータ消去される。
コマンドにはこれ以外にもPINを設定するためのSetコマンドがある。Setコマンドはどの種類のPINを設定するかを示すパラメータを含み、パラメータの値、すなわちどの種類のPINを設定するかによって発行者権限が異なる。例えば、ユーザPINを設定するSetコマンドを発行できるのは管理者とユーザであり、所有者はユーザPINを設定する権限を有しない。そのため、ラベルPINはユーザPINを設定するSetコマンドに対して認証が失敗する。なお、Activateコマンド、Revertコマンド、RevertSPコマンドはパラメータによらず、発行権限が決まっている。
第1実施形態は2種類のラベルPIN(PSID)を設定可能である。図3(c)に示すように、第1種類のラベルPIN(PSID1)は上述したストレージ装置14のリセットのためのPINであり、記憶領域全体のデータ消去と所有者PINと管理者PINの初期化を行う。第2種類のラベルPINはユーザ毎のラベルPIN(PSID2、PSID3、…)である。記憶領域が複数のユーザ(ここでは、ユーザ1、ユーザ2)に割り当てられているとする。ユーザ1のラベルPIN(PSID2)により発行されるRevertコマンドはユーザ1に割り当てられた領域のデータ消去とユーザ1のユーザPINの初期化を行う。ユーザ2のラベルPIN(PSID3)により発行されるRevertコマンドはユーザ2に割り当てられた領域のデータ消去とユーザ2のユーザPINの初期化を行う。言い換えると、ユーザ1のラベルPIN(PSID2)により発行されるRevertコマンドはユーザ2に割り当てられた領域のデータ消去とユーザ2のユーザPINの初期化を行うことはできない。ユーザ2のラベルPIN(PSID3)により発行されるRevertコマンドはユーザ1に割り当てられた領域のデータ消去とユーザ1のユーザPINの初期化を行うことはできない。
これにより、ユーザ毎のセキュリティを向上することができる。
管理者PINはストレージ装置12を工場出荷時の状態にリセットすることができるが、管理者PINの紛失に備えて、リセット用のラベルPINがストレージ装置12の何処か、例えばストレージ装置の筐体に貼られる銘版ラベルに印刷されていることがある。例えば、記憶領域が複数のユーザ1、ユーザ2に割り当てられている場合、PSID1、PSID2、PSID3が銘板ラベルに印刷されていることがある。
ラベルPINをストレージ装置12に印刷しないで、PCベンダやユーザに知らせる方法を採用してもよい。例えば、PCベンダがユーザにWebサイトを提供し、PCのシリアル番号を入力すればラベルPINを表示するようにしてもよい。また、同様にストレージ装置のベンダがユーザにWebサイトを提供し、ストレージ装置のシリアル番号を入力すればラベルPINを表示するようにしてもよい。図1(b)に示すように、サーバのようなホスト装置14に複数のストレージ装置12が接続され、サーバ内のストレージ装置12を一括してリセットさせたい場合に備えて、ストレージ装置12のベンダが複数のストレージ装置12に対して同一の値のラベルPINを設定し、サーバベンダに対して電子メール等でラベルPINの値を通知してもよい。
[ストレージ装置の状態遷移]
図4はストレージ装置12の状態遷移の一例を示す。工場出荷時はInactive状態40Aである。Inactive状態40Aは管理者PIN、ユーザPINが設定できない状態であり、ロック機能が無効な状態である。SID(所有者PIN)は初期値である。SIDの初期値としてMSID PINが定義されていることもある。MSID PINはGetコマンドを用いて誰でも取得することができる。SIDの初期値のユーザへの通知方法はコマンドを用いることに限らず、SIDの初期値をマニュアルに記載しておくことや、SIDの初期値を銘板ラベルに印刷しておくことも可能である。工場から出荷された直後のストレージ装置12はSIDの初期値、例えばMSID PINを使って、SIDとして認証する。SIDの初期値はMSID PINなので、認証は成功する。その後、SIDを初期値から任意の値(所有者の好きなPINの値)に設定することができる。
ストレージ装置12はInactive状態40Aのまま例えばPCベンダに出荷され、PCベンダは、たとえば上記方法でSIDを設定すると想定する。Inactive状態40Aのストレージ装置12はホスト装置14からSIDを設定するためのSetコマンドを受信すると、Setコマンドの発行元ユーザの権限をチェックする。Setコマンドは設定したいSIDをパラメータに含む。SIDを設定できる権限は所有者である。所有者からSetコマンドが発行された場合、SIDが設定される。Inactive状態40Bでは、SIDはSetコマンドを用いて所有者により設定された値(初期値ではない)である。
Inactive状態40Bのストレージ装置12はホスト装置14からActivateコマンドを受信すると、Activateコマンドの発行元ユーザをチェックする。Activateコマンドはストレージ装置12をActive状態に遷移させるためのコマンドであり、発行権限は図3(a)に示すように所有者である。所有者からActivateコマンドが発行された場合、ストレージ装置12はActive状態40Cとなる。Active状態40Cでは管理者PIN、ユーザPINが初期値になり、ロック機能が有効な状態である。
例えばPCに組み込まれたストレージ装置12はActive状態40Cのままエンドユーザに出荷され、エンドユーザ側で管理者PINあるいはユーザPINを設定すると想定する。Active状態40Cのストレージ装置12はホスト装置14から管理者PINを設定するためのSetコマンドあるいはユーザPINを設定するためのSetコマンドを受信すると、Setコマンドの発行元ユーザをチェックする。Setコマンドは設定したい管理者PINまたはユーザPINをパラメータに含む。管理者PINを設定できる権限は管理者である。ユーザPINを設定できる権限は管理者と所有者である。Setコマンドが発行権限のあるユーザから発行された場合、Setコマンドを用いてエンドユーザにより管理者PINあるいはユーザPINが設定(初期値ではない状態)され、ストレージ装置12はActive状態40Dとなる。
Active状態40Dのストレージ装置12はホスト装置14からストレージ装置12をリセットするためのRevertコマンドを受信すると、Revertコマンドの発行元ユーザをチェックする。Revertコマンドを発行できる権限は所有者PINあるいはラベルPINを知っているユーザである。Revertコマンドが権限のあるユーザから発行された場合、データが消去され、所有者PIN、管理者PIN、ユーザPINが初期化され、ストレージ装置12はInactive状態(工場出荷時)40Aとなる。
一方、Active状態40Dのストレージ装置12はホスト装置14からストレージ装置12をリセットするためのRevertSPコマンドを受信すると、RevertSPコマンドの発行元ユーザをチェックする。RevertSPコマンドを発行できる権限は管理者である。RevertSPコマンドが権限のあるユーザから発行された場合、データが消去され、管理者PIN、ユーザPINが初期化され、ストレージ装置12はInactive状態40Bとなる。なお、RevertSPコマンドによるリセット後でもストレージ装置はInactive状態ではなくActive状態に留まるようになっていてもよい。 なお、PINが初期化されると、自動的にアンロックされる。所有者PINはRevertコマンドによってPIN初期化が可能なので、アンロックも可能である。ただし、Revertコマンドによってデータは消去されるので、アンロック後には、ユーザが記録したデータは残っていない。
ラベルPINもRevertコマンドによってPIN初期化が可能なので、アンロックも可能である。ただし、Revertコマンドによってデータは消去されるので、アンロック後には、ユーザが記録したデータは残っていない。
ストレージ装置12はRevertコマンドを受信すると、内部処理によりデータ消去を行うと同時にアンロックも行う。ただし、厳密には、いずれか一方が先に実行され、他方が後に実行される。電源断を考慮すると、データ消去してからアンロックする方が安全である。アンロックしてデータ消去直前に電源断が発生すると、データ消去処理が行われないままアンロックしてしまう可能性があるためである。ただし、電源断の発生時にこのようなことが生じないように対策を講じれば、アンロックしてからデータ消去してもよい。
[データ消去シーケンス]
図5A、図5Bはストレージ装置12をリセットするためのデータ消去シーケンスの一例を示す。 リセットに先立って予めホスト装置14はストレージ装置12に、ストレージ装置12がサポートしている消去方式を問い合わせるための消去方式表示要求を送信する。この送信タイミングの一例はホスト装置14のブート時である。
消去方式表示要求受信部108で受信された消去方式表示要求は消去方式表示部106に送られる。ステップ50Aで消去方式表示部106はサポートしている1つまたは複数の消去方式を示す情報を消去情報管理部124から取得する。消去方式表示部106は取得した1つまたは複数の消去方式を示す消去方式応答情報をホスト装置14に返送する。
図6を参照して消去方式表示要求と消去方式応答情報の一例を説明する。ここでは、非特許文献2で定義されているLevel 0 Discovery HeaderとLevel 0 Discovery Responseを応用している。図6(a)はLevel 0 Discovery Headerを利用する消去方式表示要求の一例を示す。Level 0 Discovery Headerはストレージ装置12に対してLevel 0 Discovery Responseを返信するよう指示するだけであり、header部のみでコンテンツ部は含まない。
図6(b)はLevel 0 Discovery Responseを応用する消去方式応答情報の一例を示す。Level 0 Discovery Response は図6(a)に示すLevel 0 Discovery Headerとコンテンツ部とからなる。コンテンツ部であるフューチャー記述子には複数のフューチャー記述子が定義されている。
図7(a)に示すように、フューチャー記述子の1つが消去方式である。フューチャー記述子のデータ構造の一例を図7(b)に示す。フューチャー記述子はヘッダ部とコンテンツ部から構成され、バイト0-3がヘッダ部で、バイト4-nがコンテンツ部である。ヘッダ部はフューチャーコードを含む。ストレージ装置12がサポートしている消去方式のフューチャー記述データはバイト4に記述される。バイト4の各ビットに図7(c)に示すように消去方式が割り当てられている。各ビットが“1”であれば、その消去方式をサポートしていることを示し、“0”であれば、その消去方式はサポートしていないことを示す。例えば、フューチャー記述データのビット0が“1”であれば、上書き消去(Overwrite Data Erasure)方式をサポートしていることを示し、ビット1が“1”であれば、ブロック消去方式(Block Erasure)をサポートしていることを示し、ビット2が“1”であれば、アンマップ方式(Unmap)をサポートしていることを示し、ビット3が“1”であれば、ライトポインタリセット方式(Reset Write Pointers)をサポートしていることを示し、ビット4が“1”であれば、暗号鍵更新(クリプトイレーズ)方式(Crypto Erasure)をサポートしていることを示すとする。
図5A、図5Bに示す消去シーケンスの説明に戻り、ホスト装置14はストレージ装置12から1つの消去方式を示す情報が返送された場合、当該消去方式を指定し、複数の消去方式を示す情報が返送された場合、その中から1つを選択し、選択した消去方式を示す情報をストレージ装置12に通知することが想定されている。ただし、ホスト装置14がこれ以外の消去方式を指定する可能性もある。ホスト装置14は、例えばそのパラメータに消去方式情報を含むSetコマンドを用いて消去方式をストレージ装置12に通知してもよい。
ストレージ装置12で受信された消去方式指定情報は認証処理部102に供給される。認証処理部102はステップ50Bで消去方式を指定するSetコマンドの発行元ユーザを認証する。認可処理部104はコマンドの発行元がコマンドの発行権限があるか否かをチェックするためにどのPINを用いて認証された発行元(authority)によってSetコマンドが送信されたかをステップ50Cでチェックする。ラベルPINまたはユーザPINを用いて認証された発行元によってSetコマンドが発行された場合は、ステップ50Dで認可失敗とされ、認可処理部104は認可失敗を示す情報をホスト装置14に送信する。所有者PINまたは管理者PINを用いて認証された発行元によってSetコマンドが発行された場合は認可成功とされる。認可成功の場合、消去情報管理部124はホスト装置14によって指定された消去方式は自身がサポートしている消去方式であるか否かをステップ50C-1でチェックする。ホスト装置14によって指定された消去方式をサポートしていない場合(ステップ50C-1のノー)、ステップ50D-1で消去情報管理部124は指定エラーを示す情報をホスト装置14に送信する。ホスト装置14によって指定された消去方式をサポートしている場合(ステップ50C-1のイエス)、消去情報管理部124はステップ50Eで、ホスト装置14によって指定された消去方式をデータ消去部118に設定する。
その後、ストレージ装置12をリセットする必要が生じると、ホスト装置14はストレージ装置12にリセット指示(消去指示)を通知する。ホスト装置14は、例えばRevertコマンドあるいはRevertSPコマンドを用いて消去指示をストレージ装置12に通知してもよい。
ストレージ装置12で受信された消去指示は認証処理部102に供給される。認証処理部102はステップ50Fで消去指示であるRevertコマンドあるいはRevertSPコマンドの発行元ユーザを認証する。認可処理部104はステップ50Gで受信したコマンドはRevertコマンドかRevertSPコマンドかをチェックする。
Revertコマンドを受信した場合、認可処理部104は発行元がRevertコマンドを発行する権限があるか否かをチェックするために、どのPINを用いて認証された発行元によってRevertコマンドが送信されたかをステップ50Hでチェックする。管理者PINまたはユーザPINを用いて認証された発行元によってRevertコマンドが発行された場合は、ステップ50Iで認可失敗とされ、データ消去及びPINの初期化は行われない。所有者PINまたはラベルPINを用いて認証された発行元によってRevertコマンドが発行された場合は認可成功とされ、ステップ50Jでデータ消去部118がデータ消去を実行し、PIN管理部112が所有者PIN、管理者PIN、ユーザPINを初期化する。これにより、ストレージ装置12は図4に示すInactive状態(工場出荷時)40Aとなる。
RevertSPコマンドを受信した場合、認可処理部104は発行元がRevertSPコマンドを発行する権限があるか否かをチェックするために、どのPINを用いて認証された発行元によってRevertSPコマンドが送信されたかをステップ50Kでチェックする。所有者PIN、ラベルPINまたはユーザPINを用いて認証された発行元によってRevertSPコマンドが発行された場合は、ステップ50Lで認可失敗とされ、データ消去及びPINの初期化は行われない。管理者PINを用いて認証された発行元によってRevertSPコマンドが発行された場合は認可成功とされ、RevertSPコマンドにおいてデータ消去がパラメータで指定されているか否かがステップ50Mでチェックされる。データ消去が指定されている場合(ステップ50Mのイエス)、ステップ50Jで、データ消去部118がデータ消去を実行し、PIN管理部112が管理者PIN、ユーザPINを初期化する。データ消去が指定されていない場合(ステップ50Mのノー)、ステップ50NでPIN管理部112が管理者PIN、ユーザPINを初期化する。これにより、ストレージ装置12は図4に示すInactive状態40Bとなる。
以上説明したように、ストレージ装置12は自身がサポートしている消去方式をホスト装置14に知らせ、ホスト装置14がその情報に基づいてストレージ装置12に対して消去方式を指定することができる。ストレージ装置12は指定者の権限をチェックし、権限がある場合、指定された消去方式を設定する。実際のリセットの際は、ホスト装置14はストレージ装置にリセット指示を与える。ストレージ装置12はリセット指示者の権限をチェックし、権限がある場合、先に設定された消去方式に従うデータの消去と、PINの初期化を行う。
これにより、暗号化されていないデータを格納するストレージ装置12もリセットすることができる。リセットされたストレージ装置12からは廃棄後にデータが流出することがなく、セキュリティを確保することができる。ストレージ装置12は暗号化データを格納しないので、ホスト装置14が暗号化アプリケーションを備える必要がなく、ホスト装置14の処理負荷が低い。暗号化回路が不要なため、ストレージ装置12の製造コストを抑えることができる。 ストレージ装置12は記憶領域全体で一様なアクセス権限(アンロック)を設定するのではなく、記憶領域をLBA範囲に応じて複数の領域(Rangeとも称する)に分割し、Range毎に異なるアクセス権限(アンロックに必要なPIN)を設定可能である。Rangeの概念は図13を参照して後述する。例えば、図8に示すように、Range2は誰でもアクセス可能なアンロック状態とし、Range1はストレージ装置を通常使用するユーザと管理者だけがアンロックできるロック状態とし、Range3は管理者だけがアンロックできるロック状態とすることができる。このようにストレージ装置12の記憶領域を複数のRangeに分割することにより、複数のユーザが互いのセキュリティを保ったままストレージ装置12を共有することができる。
[消去処理の管理]
図9(a)は電源断発生に備えた消去処理の一例のフローチャートである。ストレージ装置12はステップ222でRevert/RevertSPコマンド(”/”は“あるいは”を意味する)を受信する。ステップ224で認可処理部104はコマンドの発行権限をチェックし、発行権限のあるユーザからコマンドが発行されたか否かをステップ226で判定する。発行権限のあるユーザからコマンドが発行されていない場合、ステップ228で認可失敗となる。
発行権限のあるユーザからコマンドが発行された場合、ステップ230で認可処理部104はデータ消去部118へRevert/RevertSPコマンドを送る。ステップ232でデータ消去部118はRevert/RevertSPコマンドを解析して、どのRangeに該当するRevert/RevertSPコマンドであるかを判定する。データ消去部118は判定結果のRangeに対応するLBA範囲、例えばLBA X-Yを取得し、その最初のLBA Xからデータ消去を開始する。消去情報管理部124はデータを消去する間、ステップ234で消去済みLBAを不揮発性メモリに書き込む。この不揮発性メモリは消去情報管理部124に設けたフラッシュメモリにより実現してもよいし、データ蓄積部34の一部により実現してもよい。データ消去部118は判定結果のRangeに対応するLBA範囲のデータ消去が完了したかをステップ236で判断し、完了していない場合、データ消去を続ける。完了した場合、ステップ238でデータ消去部118は消去情報管理部124にRevert/RevertSPコマンドの処理完了を示す完了フラグを不揮発性メモリに書き込ませる。
このように、Revert/RevertSPコマンドの処理中に電源断が発生しても、Revert/RevertSPコマンドの処理が未完了であったこと及び消去済みLBAが不揮発性メモリに記憶されているので、ストレージ装置12は未完了だったRevert/RevertSPコマンドを電源復旧時にデータ未消去のLBAから効率良く再開できる。再開後に最初からデータ消去を行う必要がないので、データ消去時間が不必要に長くなることがない。
図9(b)は電源復旧時Revert/RevertSPコマンドの再開処理の一例を示すフローチャートである。電源がオンすると、ステップ242で消去情報管理部124は未完了のRevert/RevertSPコマンドがあるか否かを判定する。未完了のRevert/RevertSPコマンドが無い場合、ステップ246で通常処理が行われる。未完了のRevert/RevertSPコマンドがある場合、ステップ244で消去情報管理部124は不揮発性メモリから消去済みLBAを読み出し、消去済みLBAをデータ消去部118の消去開始アドレスに設定し、データ消去部118に未消去LBAからデータ消去を開始させる。消去情報管理部124はデータを消去する間、ステップ248で消去済みLBAを不揮発性メモリに書き込む。データ消去部118は現在消去中のRangeのデータ消去が完了したかをステップ250で判断し、完了していない場合、データ消去を続ける。完了した場合、ステップ252でデータ消去部118は消去情報管理部124にRevert/RevertSPコマンドの処理完了を示す完了フラグを不揮発性メモリに書き込ませる。その後、ステップ254で通常処理が行われる。
図9に示す消去処理は、図5A、図5Bに示すように、ストレージ装置12がホスト装置14に自身がサポートしている消去方式を通知し、ホスト装置14が消去方式を指定した後に実行してもよいし、図5A、図5Bに示す手順とは無関係に単独で実行してもよい。
[データ消去の排他的制御]
図10~図12を参照して、実行中のデータ消去処理を優先する排他的制御を説明する。
図10は消去中にアクセスを拒否して、消去処理を優先する処理の一例を示すフローチャートである。ストレージ装置12はステップ262でRevert/RevertSPコマンドを受信する。ステップ264で認可処理部104はコマンドの発行権限をチェックし、発行権限のあるユーザからコマンドが発行されたか否かをステップ266で判定する。発行権限のあるユーザからコマンドが発行されていない場合、ステップ268で認可失敗となる。
発行権限のあるユーザからコマンドが発行された場合、ストレージ装置12はコマンドの実行中にステップ270でホスト装置14からリード/ライトコマンドを受信したか否かを判定する。リード/ライトコマンドを受信した場合、ストレージ装置12はコマンドをキューに格納する、あるいはエラーをホスト装置14に返送する。キューは例えばリード/ライト処理部122内に設けてもよい。リード/ライトコマンドを受信しない場合、ストレージ装置12はステップ274でコマンドの実行を続ける。
図10に示す消去処理は、図5A、図5Bに示すように、ストレージ装置12がホスト装置14に自身がサポートしている消去方式を通知し、ホスト装置14が消去方式を指定した後に実行してもよいし、図5A、図5Bに示す手順とは無関係に単独で実行してもよい。
図11はデータ消去処理の排他的制御の第2の例としての消去中のRangeへのアクセス拒否(消去中の領域以外の領域へのアクセスは可能)の一例を示すフローチャートである。図10の処理では記憶領域に複数の領域が定義されていないが、図11の処理では記憶領域に複数の領域(Range)が定義されているとする。ストレージ装置12はステップ282でRevertSPコマンドを受信する。ステップ284で認可処理部104はコマンドの発行権限をチェックし、発行権限のあるユーザからコマンドが発行されたか否かをステップ286で判定する。発行権限のあるユーザからコマンドが発行されていない場合、ステップ288で認可失敗となる。
発行権限のあるユーザからコマンドが発行された場合、ステップ290で認可処理部104はデータ消去部118へRevertSPコマンドを送る。ステップ292でデータ消去部118はRevertSPコマンドを解析して、どのRangeに該当するRevertSPコマンドであるかを判定する。データ消去部118は判定結果のRangeに対応するLBA範囲のデータ消去を開始する。ストレージ装置12はデータ消去の実行中にステップ294でホスト装置14からリード/ライトコマンドを受信したか否かを判定する。リード/ライトコマンドを受信しない場合、ストレージ装置12はステップ296でRevertSP コマンドの実行を続ける。
リード/ライトコマンドを受信した場合、ストレージ装置12は受信したリード/ライトコマンドは消去中のRangeについてのリード/ライトコマンドであるか否かをステップ298で判定する。消去中のRangeについてのリード/ライトコマンドである場合、ストレージ装置12はステップ300でコマンドをキューに格納する、あるいはエラーをホスト装置14に返送する。消去中のRangeについてのリード/ライトコマンドではない場合、ストレージ装置12はステップ302で消去中のRange以外のRangeについてリード/ライトコマンドを実行する。
このように、ある領域に対するデータ消去が行われている最中に、別な領域への書き込みが行われたとしても、その別な領域ではデータ消去は行っていないので通常のデータライト、リードは行うことができる。一方、データ消去を行っている領域は、上述のように消去以外のアクセスを実行しない排他制御を行うので、ユーザの期待に反してデータが残る・消去されるといったことがない。
図11に示す消去処理は、図5A、図5Bに示すように、ストレージ装置12がホスト装置14に自身がサポートしている消去方式を通知し、ホスト装置14が消去方式を指定した後に実行してもよいし、図5A、図5Bに示す手順とは無関係に単独で実行してもよい。
図12はデータ消去処理の排他的制御の第3の例としての複数のRevert/RevertSPコマンドの実行制御の一例を示すフローチャートである。ストレージ装置12はステップ312で第1Revert/RevertSPコマンドを受信する。ステップ314で認証処理部102はコマンドの発行権限をチェックし、発行権限のあるユーザからコマンドが発行されたか否かをステップ316で判定する。発行権限のあるユーザからコマンドが発行されていない場合、ステップ318で認可失敗となる。
発行権限のあるユーザからコマンドが発行された場合、ステップ320で認可処理部104はデータ消去部118へ第1Revert/RevertSPコマンドを送る。ステップ322でデータ消去部118は第1Revert/RevertSPコマンドを解析して、どのRangeに該当するRevert/RevertSPコマンドであるかを判定する。データ消去部118は判定結果のRangeに対応するLBA範囲のデータ消去を開始する。ストレージ装置12はデータ消去の実行中にステップ324で第2Revert/RevertSPコマンドを受信したか否かを判定する。なお、ステップ324はステップ322の前に実行してもよい。
第2Revert/RevertSPコマンドを受信しない場合、ストレージ装置12はステップ328で第1Revert/RevertSPコマンドの実行を続ける。第2Revert/RevertSPコマンドを受信した場合、ステップ322で認証処理部102はコマンドの発行権限をチェックし、発行権限のあるユーザからコマンドが発行されたか否かをステップ334で判定する。発行権限のあるユーザからコマンドが発行されていない場合、ステップ336で認可失敗となる。
発行権限のあるユーザからコマンドが発行された場合、ステップ338で認可処理部104はデータ消去部118へ第2Revert/RevertSPコマンドを送る。ステップ342でデータ消去部118は第2Revert/RevertSPコマンドを解析して、どのRangeに該当するRevert/RevertSPコマンドであるかを判定し、第1Revert/RevertSPコマンドのRangeと第2Revert/RevertSPコマンドのRangeが異なるか否か判定する。
第2Revert/RevertSPコマンドのRangeと第1Revert/RevertSPコマンドのRangeが異なる場合、データ消去部118はステップ344で、受信した2つのコマンドが第1RevertSPコマンドと第2RevertSPコマンドであったか否か判定する。2つのコマンドが第1RevertSPコマンドと第2RevertSPコマンドであった場合、異なるRangeについての2つのRevrrtSPコマンドを受信したので、ステップ346でデータ消去部118は第2RevertSPコマンドも実行する。なお、ステップ346で第2RevertSPコマンドを実行する代わりに、第2RevertSPコマンドの消去ジョブをキューに格納してもよい。
ステップ342で第2Revert/RevertSPコマンドのRangeと第1Revert/RevertSPコマンドのRangeが同じと判定された場合、及びステップ344で2つのコマンドが第1RevertSPコマンドと第2RevertSPコマンドでないと判定された場合、データ消去部118はステップ348で、第2Revert/RevertSPコマンドの消去ジョブをキューに格納する、あるいはエラーをホスト装置14に返送する。第1コマンドと第2コマンドの組み合わせは、(第1Revertコマンド,第2Revertコマンド)、(第1Revertコマンド,第2RevertSPコマンド)、(第1RevertSPコマンド,第2Revertコマンド)、(第1RevertSPコマンド,第2RevertSPコマンド)がある。このうち(第1RevertSPコマンド,第2RevertSPコマンド)については、第1、第2コマンドのRangeが異なる場合は、ステップ346に示すように第1RevertSPコマンドとともに第2RevertSPコマンドも実行される。他の(第1Revertコマンド,第2Revertコマンド)、(第1Revertコマンド,第2RevertSPコマンド)、(第1RevertSPコマンド,第2Revertコマンド)については、第1、第2コマンドのRangeが同じである場合も異なる場合も、ステップ348に示すように第2コマンドは実行されない。
これにより、ストレージ装置12は各Revert/RevertSPコマンドを集中して実行できる。このため、データ消去時間が長くなることがない。
図12に示す消去処理は、図5A、図5Bに示すように、ストレージ装置12がホスト装置14に自身がサポートしている消去方式を通知し、ホスト装置14が消去方式を指定した後に実行してもよいし、図5A、図5Bに示す手順とは無関係に単独で実行してもよい。
[Namespaceによる複数領域消去]
図13はストレージ装置12の記憶領域を概念的に示す。NVM Express, Revision 1.3, May 1, 2017でNamespace(ネームスペース)が定義されている。Namespaceはストレージ装置12の記憶領域全体を分割した部分領域であり、具体的には論理ブロックの集合である。1つのストレージ装置に対してNamespaceIDで識別される少なくとも1つのNamespaceが定義可能である。サイズnのNamespaceは論理ブロックアドレス0~(n-1)の論理ブロックからなる。各Namespace内にはNamespace Global Rangeがあり、各Namespace Global Rangeは複数のRangeを含む。上述したように各Rangeにはそれぞれ異なるPINが設定可能である。複数のNamespaceに跨るGlobal Rangeがある。
なお、記憶領域全体を分割した部分領域としてパーティションがあるが、パーティションはホスト装置14が管理する部分領域であり、Namaspaceはストレージ装置12が管理する部分領域である。ホスト装置14がパーティションにアクセスする際は、ホスト装置14はアクセス対象のパーティションに含まれる論理アドレスを指定するが、Namespaceにアクセスする際は、ホスト装置14はアクセス対象のNamespaceを指定する。ストレージ装置12のRange情報管理部114は図13に示すようなNamespaceとRangeの関係を管理している。
図14(a)はNamespace単位の消去の一例を示すフローチャートである。ステップ402でストレージ装置12はホスト装置14からNamespace単位の消去コマンドを受信する。消去コマンドにはパラメータを追加できるので、Namespaceというパラメータを追加して、Namespace単位の消去コマンドとしてもよい。あるいは、上述のRevert/RevertSPコマンドにもパラメータが追加できるので、Namespaceというパラメータを追加して、Namespace単位の消去を実行させるRevert/RevertSPコマンドをNamespace単位の消去コマンドとしてもよい。さらに、図14(b)に示すように、Revert/RevertSPコマンドがどのNamespaceに対する消去処理を実行させるかを示すNamespace Tableを定義しておいてもよい。Namespace TableへのNamespaceの登録はSetコマンドを利用し、SetコマンドのパラメータでNamespaceIDを指定することが可能である。なお、Namespace単位の消去とは1つのNamespaceの消去と、全部のNamespace(すなわち、Global Range)の消去の両方を含む。そのため、パラメータで00hまたはFFhが指定された場合は、全部のNamespaceが指定されたと見做してもよい。
Namespace Tableの設定の一例を図14(c)に示す。ストレージ装置12はステップ412でSetコマンドを受信すると、パラメータで指定されたNamespaceIDをNamespace Tableに設定する。もしも、NamespaceID=00hまたはFFhの場合、全てのNamespaceIDがNamespace Tableに設定される。その後、ストレージ装置12はホスト装置からRevert/RevertSPコマンドを受信する(ステップ414)と、ステップ416でNamespace Tableを参照して、NamespaceIDを取得し、取得したNamespaceIDに対応するNamespace に含まれる全てRangeのデータ消去を実行する。
これにより、ストレージ装置12が複数のNamaspaceを備え、各Namaspaceが複数のRangeを備えている場合、ホスト装置14はNamaspace単位の消去を指示するだけで、ストレージ装置12は指示されたNamaspaceに含まれる全Rangeのデータ消去を簡単に行うことができる。ホスト装置14はNamespaceとRangeの関係についての管理が不要なので、ホスト装置14のアプリケーションの構成がシンプルになり、コストも下げられる。
図14に示す消去処理は、図5A、図5Bに示すように、ストレージ装置12がホスト装置14に自身がサポートしている消去方式を通知し、ホスト装置14が消去方式を指定した後に実行してもよいし、図5A、図5Bに示す手順とは無関係に単独で実行してもよい。
さらに、図9から図14を参照していくつかの消去動作を説明したが、これらの消去動作を自由に組み合わせて実行してもよい。
第1実施形態によれば、ストレージ装置12は自身がサポートしている消去方式をホスト装置14に通知して、ホスト装置14は消去方式を指定し、ストレージ装置12は指定された消去方式によりデータを消去するので、暗号化されていないデータを格納するストレージ装置12もリセットすることができる。リセットされたストレージ装置12からは廃棄後にデータが流出することがなく、セキュリティを確保することができる。ストレージ装置12は暗号化データを格納しないので、ホスト装置14が暗号化アプリケーションを備える必要がなく、ホスト装置14の処理負荷が低い。暗号化回路が不要なため、ストレージ装置12の製造コストを抑えることができる。 以下、他の実施形態について説明する。他の実施形態は、第1実施形態と異なる箇所のみ説明し、同じ説明は省略する。
[第2実施形態]
リセットしてから廃棄したストレージ装置12からデータが流出する可能性は0ではない。この可能性を限りなく0としたい場合、廃棄する際、ストレージ装置12を機械的に破壊・破砕してストレージ装置12が物理的に存在しない状態にすることが考えられる。機械的に破壊・破砕することは手間と時間が掛かる。第2実施形態では、ストレージ装置12を電気的に破壊状態にすることを可能とする。
第2実施形態では、図15に示すように、ストレージ装置12の状態としてActive状態、Inactive状態に加えて、Destroy(破壊)状態が定義される。Active状態のストレージ装置12に対してホスト装置14がDestroyコマンドを発行すると、ストレージ装置12はDestroy状態になる。
Destroy状態に設定され得る第2実施形態のストレージ装置12Aの概略を図17に示す。ストレージ装置12Aは図2に示すストレージ装置12に対して破壊処理部116が追加されている点が異なる。破壊処理部116はI/F処理部22と、認可処理部104と、リード/ライト処理部122と、データ消去部118とに接続される。破壊処理部116はストレージ装置12がDestroy状態の場合、リード/ライト処理部122にコマンド受け付け不可(確認コマンドは受け付け可)を指示する。
図16(a)はストレージ装置12がDestroy状態に設定される流れの一例を示す。ストレージ装置12はステップ422でDestroyコマンドを受信する。DestroyコマンドもRevert/RevertSPコマンドと同様に発行するためには所有者PINまたは管理者PINが必要であり、所有者または管理者以外のユーザはDestroyコマンドを発行できず、ストレージ装置12を破壊できないとする。ステップ424で認可処理部104はコマンドの発行権限をチェックし、発行権限のあるユーザからコマンドが発行されたか否かをステップ426で判定する。発行権限のあるユーザからコマンドが発行されていない場合、ステップ428で認証失敗となる。
発行権限のあるユーザからコマンドが発行された場合、ステップ429でストレージ装置12はホスト装置14からのコマンドの中で破壊状態か否かを問い合わせる確認コマンドは受け付け可とし、それ以外のコマンド(例えばリード/ライトコマンド)は受け付け不可とする。とともに、データを消去し、PINを初期化する。この後、ストレージ装置12はDestroy状態となる。そのため、Destroy状態はInactive状態(工場出荷時)40Aと同様に、管理者PIN、ユーザPINが設定できない状態であり、アンロックやロックが不可能な状態である。また、確認コマンド以外のコマンドやコマンドは受け付け不可である。そのため、Destroy状態のストレージ装置12は他の状態、Active状態やInactive状態に遷移することはできない。
図16(b)はDestroy状態の時のストレージ装置12の動作の一例を示すフローチャートである。ストレージ装置12はコマンドを受信すると(ステップ434のイエス)、受信したコマンドは確認コマンドであるか否かをステップ436で判定する。受信したコマンドが確認コマンドである場合、ストレージ装置12はステップ440で破壊状態であることを示す破壊状態情報をホスト装置14に返送する。受信したコマンドが確認コマンド以外のコマンドである場合、ストレージ装置12はステップ438でエラーを示すエラー情報をホスト装置14に返送する。
これにより、ストレージ装置12はDestroy状態への移行指示を受けると、データ蓄積部34のデータを消去し、PINを初期値に戻す、ストレージ装置12はDestroy状態においては、データ蓄積部34へのアクセスが不可能であり、データが流出する可能性は限りなく0である。また、破壊状態の場合、ストレージ装置12はホスト装置14からの確認コマンドに応答して破壊状態であることを示す応答をホスト装置14に返送するので、ホスト装置14はストレージ装置12が破壊状態であるか、故障状態あるいはリセット状態であるかを識別することができる。破壊・破砕装置が不要であるので、ストレージ装置12の管理コストが低い。また、故障品との区別がつき、故障品を間違って廃棄することがないので、廃棄品からのデータの流出を防止できる。
なお、Destroy状態の場合リード/ライトコマンドの受け付けを不可としたが、流出してもよいデータはリードアクセスを許可してもよい。すなわち、流出してもよいデータの記憶領域はリードオンリーエリアとしてもよい。
[第3実施形態]
上述の説明では、ストレージ装置12はデータ暗号化を備えず平文データを記憶する。次に、暗号化データを記憶するストレージ装置12の第3実施形態を説明する。図18は、第3実施形態のストレージ装置12Bの概略を示す。ストレージ装置12Bは図2に示すストレージ装置12に対して暗号処理部142と鍵管理部140が追加されている点が異なる。鍵管理部140はデータ暗号化のための鍵を発生して、自身に格納する。鍵は乱数発生器によって生成されるランダムな値である。暗号処理部142はデータ蓄積部34に入力される平文データをこの鍵を用いて暗号化する。暗号化のアルゴリズムの一例はAdvanced Encryption Standard(AES)のような公知の共通鍵アルゴリズムがある。暗号処理部142はデータ蓄積部34から出力される暗号化データに対して暗号化に用いた鍵と同じ鍵を用いて復号処理を行い、暗号化データを平文データに戻す。すなわち、データはデータ記憶部34に書き込まれる際常に暗号化され、データ記憶部34から読み出される際常に復号される。
上述したようにホスト装置14はストレージ装置12が実行するデータ消去の方式を指定する機能を有する。図7(c)に示すように、ストレージ装置12はデータ消去方式としてCrypto Eraseを実装することもできる。ホスト装置14がデータ消去方式としてCrypto Eraseを指定した場合で、RevertコマンドもしくはRevertSPコマンドでデータ消去指示がなされた場合、データ消去部118は鍵管理部140に鍵の更新を指示する。鍵管理部140は鍵更新が指示されると、新しい乱数を生成して新しい鍵の値を発生し、今まで使っていた鍵の値を破棄して代わりに新しい鍵の値を自身に格納する。暗号処理部142は以後新しい値の鍵を用いて暗号化、復号処理する。
このように鍵の値が更新されてしまうと、既にデータ蓄積部34に記録されていたデータは古い値の鍵で暗号化されているので、新しい値の鍵を用いて復号処理をしても、正しい平文データに復号(復元)することは不可能となる。このように鍵更新後は、暗号処理部142の暗号化処理、復号処理自身が無意味であるので、暗号化処理、復号処理自身の実行を停止させてもよい。図18に示す鍵管理部140は鍵更新後暗号処理部142に対して暗号化処理、復号処理を停止させる指示を送る。
このため、ストレージ装置12が暗号化データを記憶する場合も、ホスト装置14がデータ消去方式を指定することができ、ストレージ装置12は指定された消去方式でリセットされる。
[第4実施形態]
図19は暗号化データを記憶する第4実施形態のストレージ装置12Cの概略を示す。ストレージ装置12Cは図18に示した鍵管理部140と暗号処理部142とを備えるストレージ装置12Bに対して破壊処理部116が追加されている点が異なる。破壊処理部116はI/F処理部22と、認可処理部104と、リード/ライト処理部122と、データ消去部118と、暗号処理部142に接続される。ストレージ装置12がDestroy状態の場合、破壊処理部116は暗号処理部142に暗号機能の無効化を指示するとともに、リード/ライト処理部122にコマンド受け付け不可(確認コマンドは受け付け可)を指示する。さらに、ストレージ装置12がDestroy状態の場合、鍵管理部140は新しい乱数を生成して新しい鍵の値を発生し、今まで使っていた鍵の値を破棄して代わりに新しい鍵の値を自身に格納してもよい。鍵の値の更新により以前の値の鍵で暗号化されている暗号化データの復号は不可能となる。さらに、ストレージ装置12がDestroy状態の場合、鍵管理部140は暗号処理部142に対して暗号化処理、復号処理を停止させる指示を送ってもよい。
第4実施形態によれば、第2実施形態の効果と第3実施形態の効果を奏することができる。
[第5実施形態]
第1~第4実施形態では、ストレージ装置12、12A、12B又は12CはInactive状態40Aのまま例えばPCベンダに出荷され、PCベンダがSIDを設定し、Active状態にしてエンドユーザに出荷し、エンドユーザが管理者PINとユーザPINを設定すると想定していた。すなわち、第1~第4実施形態では、少なくとも管理者PINの初期値をPCベンダがエンドユーザに、たとえばマニュアルに記載するなどの方法で通知する必要があった。第5実施形態では、エンドユーザが管理者PINを紛失してしまった場合でも、データを消去する事無く、エンドユーザに通知した管理者PINを初期値に復旧させる方法を示す。
第5実施形態では、図20に示すように、ストレージ装置12DのPIN管理部112は、管理者PINを複数備える。ここで、管理者PIN1、管理者PIN2と定義する。図20は第1実施形態のストレージ装置12において管理者PINを複数備えたが、第2~第4実施形態のストレージ装置12A、12B、12Cにおいて管理者PINを複数備えてもよい。PCベンダがActivateコマンドによってストレージ装置をActive状態にすると、管理者PIN1と管理者PIN2が初期値に設定される。ここで、PCベンダは管理者PIN1と管理者PIN2の値を設定するが、管理者PIN1の値はマニュアルに記載するなどの方法でエンドユーザに通知する。しかし、管理者PIN2の値はエンドユーザには開示せず、PCベンダはその値が外部に漏洩しないように適切に管理しておく。また、管理者PIN1と管理者PIN2の設定権限を図21に示したように、分離しておく。すなわち、管理者PIN1の権限ではSetコマンドで管理者PIN1の値を閲覧したり、Getコマンドで管理者PIN1の値を設定することはできるが、Setコマンドで管理者PIN2の値を閲覧したり、Getコマンドで管理者PIN2の値を設定することはできない。同様に、管理者PIN2の権限では、Setコマンドで管理者PIN2の値を閲覧したり、Getコマンドで管理者PIN2の値を設定することができるが、Setコマンドで管理者PIN1の値を閲覧したり、Getコマンドで管理者PIN1の値を設定することはできない。
管理者PIN1はユーザが管理するためユーザが知り得る値である。もし管理者PIN1の権限で管理者PIN2の値が変更(設定)されてしまうと、管理者PIN2の値は、PCベンダの工場で設定した管理者PIN2の値と異なる値となってしまう。これを防ぐために、管理者PIN1の権限では管理者PIN2の値を閲覧したり(Setコマンド)、設定したり(Getコマンド)できないように、権限を分離する。なお、図21では管理者PIN2の権限では管理者PIN1を設定も閲覧もできないようにしているが、管理者PIN1の権限で管理者PIN2が変更できないようになっていればよいため、管理者PIN2の権限では管理者PIN1の設定と閲覧ができるようにアクセスコントロールを設定しておいてもよい。
第1実施形態の図3(a)で示したように、管理者PINではRevertSPコマンドを発行することができる。PCベンダはエンドユーザからの要請に基づいて、管理者PIN2でRevertSPコマンドを使ってリセット処理を行う。このリセット処理、すなわちRevertSPコマンドの実行命令は、たとえばインターネット経由でPCベンダの管理するサーバからリモートからエンドユーザのPCに送信できるようにしてもよい。RevertSPコマンドにはデータを消去するか、残すかを示すパラメータを指定する事ができる。つまり、管理者PIN2でRevertコマンドにデータを残すオプションを指定すれば、データはそのまま残るが、管理者PIN1は初期化される。なお、RevertSPコマンドによるリセット後でもストレージ装置はInactive状態ではなくActive状態に留まるようになっていてもよい。
このように管理者PINを複数定義するようにストレージ装置12Dを構成しておくことで、エンドユーザが管理者PIN1を紛失した場合でも、管理者PIN1の初期化を実現できる。[第6実施形態]
第1~第5実施形態では、ストレージ装置12、12A、12B、12C又は12DはInactive状態40Aのまま例えばPCベンダに出荷され、PCベンダがSIDを設定し、Active状態にしてエンドユーザに出荷し、エンドユーザが管理者PINとユーザPINを設定すると想定していた。第6の実施形態では、PCベンダはSIDを設定するがActive状態には遷移させずInactive状態のままストレージ装置をエンドユーザに出荷し、エンドユーザ側でActive状態への遷移、管理者PINとユーザPINの設定をする事を想定する。
図3(a)に示したように、Inactive状態からActive状態への遷移には所有者PINが必要である。上記想定ではPCベンダが管理者PINを初期値からPCベンダが知り得る値に設定するが、Activateコマンドはエンドユーザ側で実行されるため、エンドユーザ側で所有者PINをストレージ装置に入力する必要がある。これを実現するには、(1)PCに所有者PINの値そのものを備えさせる方法、(2)PCは所有者PINの値そのものは持たず、エンドユーザ側で所有者PINを計算させる方法の2通りがある。(1)PCに所有者PINの値そのものを備えさせる方法PCベンダはBIOSなど、ユーザが容易に閲覧(リード:read)できない領域にSIDを格納してストレージ装置をエンドユーザに出荷する。エンドユーザにはInactive状態で出荷されるため、初期状態ではロック機能は無効化されている。エンドユーザがロック機能を有効化する際に、BIOSなどに格納されたプログラムによって、当該エンドユーザが容易に閲覧できない領域に格納されたSIDが読み出され、Activateコマンドによってストレージ装置をInactive状態からActive状態に遷移させる。(2)PCは所有者PINの値そのものは持たせない方法PCベンダはあらかじめ、SIDのラベル情報とストレージ装置のシリアル番号などを用いてSIDを生成し、そのSIDの値をストレージ装置に設定しておく。この生成アルゴリズムは、パラメータを含めてPCベンダのみが知り得るとしておく。ラベル情報とはSIDのIDを意味する。SIDの値(例えば、XXX、YYY、ZZZ)とラベル情報(例えば、0001、0002、0003)とは対応している。SIDの値はユーザには配布されないが、ラベル情報はユーザに配布される。ストレージ装置のユーザが設定(ライト:write)できない領域にSIDのラベル情報が格納されている。エンドユーザ側でBIOSなどに格納されたプログラムが、当該ラベル情報と、ストレージ装置のシリアル番号などを用いてSIDを生成する。エンドユーザはこのSIDを用いてActivateコマンドによってストレージ装置をInactive状態からActive状態に遷移させる。また、PCがインターネットに接続されている場合は、PCとPCベンダのサーバを通信させ、PCからSIDのラベル情報とストレージ装置のシリアル番号をPCベンダのサーバに送信し、PCベンダがそれらの情報を元にSIDを生成してもよい。これにより、エンドユーザ側で所有者PINを持たせずに、所有者PINの認証を行うことができる。あるいは、PCベンダがSIDの値(例えば、XXX、YYY、ZZZ)とラベル情報(例えば、0001、0002、0003)との対をテーブルに保存しておいてもよい。各ストレージ装置のユーザが容易に閲覧できない、かつユーザが設定できないSID格納領域にSIDの値(例えば、XXX)が設定される。PCはSIDのラベル情報、すなわち、どのSIDが設定されているかをPCベンダのサーバに通知する。このため、ラベル情報はユーザに勝手に変更されないことが好ましい。PCベンダは上記テーブルを参照してラベル情報からSIDを取得することができる。PCベンダは取得したSIDをネットワーク経由でPCのプログラムに伝送する事でも、エンドユーザ側で所有者PINを持たせずに、所有者PINの認証を行うことができる。上記のいずれの場合でも、ストレージ装置はSIDのラベル情報を格納しておく領域を確保する必要がある。この領域はエンドユーザが通常のリード・ライトコマンドでアクセスできないようにLBA領域外に定義する事が望ましい。さらに、エンドユーザによってSIDのラベル情報が勝手に変更できないように、書き込み権限をSIDに制限しておく必要がある。図22に本実施形態におけるストレージ装置12Eの構成図を示す。図22に示すように、ストレージ装置12Eは新たにラベルストア(LabelStore)管理部150を備える。ラベルストア管理部150は、ラベルストアテーブル152へSIDのラベル情報を設定したり、ラベルストアテーブル152からラベル情報を閲覧したりする。ラベルストアテーブル152はLBAへのリードコマンドやライトコマンドではなく、SetコマンドとGetコマンドによってアクセスされる。つまり、ラベルストア管理部150はSetコマンドによってラベルストアテーブル152に値を設定し、Getコマンドによってラベルストアテーブル152から設定された値を取得する。図22は第1実施形態のストレージ装置12においてラベルストア管理部150を備えたが、第2~第5実施形態のストレージ装置12A、12B、12C又は12Dにおいてラベルストア管理部150を備えてもよい。さらに、図23に示すように、ラベルストアテーブル152へのアクセス権限はコマンドの発行元によって制限される。どの権限でもラベルストアテーブル152の値を読み込める(Get)が、ラベルストアテーブル152への書き込み(Set)は管理者PINの権限に制限される。例えば、ラベルストアテーブル152についてのSetコマンドがストレージ装置12Eに供給されると、認証処理部102がPIN認証を行い、認可処理部104がSetコマンドの発行元が所有者であるか否かを判定する。Setコマンドの発行元が所有者である場合、ラベル情報がラベルストアテーブル152に設定される。PCベンダの工場にて、SIDを設定する。そのSIDの権限を用いて、SIDのラベル情報をラベルストアテーブル152に格納しておく。このようにすることで、SIDのラベル情報の書き込み権限をSIDに制限しておくことが実現できる。これにより、エンドユーザ側でActivateコマンドによってInactive状態からActive状態に遷移させる事ができるようになり、ロック機能を利用しない場合は、Inactive状態で出荷されたPCをそのまま利用する事ができる。ロック機能を利用したいユーザは、手元でActivateコマンドによってInactive状態からActive状態に遷移させる事で、ロック機能を有効化することができる。このようにロック機能を利用するユーザと利用したくないユーザに両方の機能を提供することができ、ユーザの使い勝手を向上させることができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。