(57)【要約】【課題】バーストエラーに対する耐性の高い記憶装置を提供する。【解決手段】本発明に係る記憶装置は、記憶するデータのパリティを計算する際に、バーストエラー長さの想定値をあらかじめ取得しておき、互いにその想定値以上離れた複数の記憶領域から読み出したデータを用いてそのデータのパリティを計算する。【選択図】図２
2011118504.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するデータ記憶部と、
前記データ記憶部が記憶するデータのパリティを計算するパリティ計算部と、
を備え、
前記パリティ計算部は、
前記データ記憶部において発生するバーストエラー長さの想定値を取得し、
前記データ記憶部の記憶領域のうち互いに前記想定値以上離れた複数の記憶領域から前記データを読み取り、そのデータを用いて前記パリティを計算する
ことを特徴とする記憶装置。
【請求項２】
前記パリティ計算部は、
前記データ記憶部のうち前記パリティを計算する際に用いた前記データを格納している記憶領域から前記想定値以上離れた記憶領域に前記パリティを格納する
ことを特徴とする請求項１記載の記憶装置。
【請求項３】
前記パリティ計算部は、
前記パリティを計算する際に用いた前記データからの距離が最小となる記憶領域に前記パリティを格納する
ことを特徴とする請求項２記載の記憶装置。
【請求項４】
前記データ記憶部上の記憶領域を指定する物理アドレスを論理アドレスに変換するアドレス変換部を備え、
前記アドレス変換部は、
前記パリティを格納する記憶領域の論理アドレスを当該記憶装置の外に公開せず、当該記憶装置の内部でのみ用いることを許可する
ことを特徴とする請求項１記載の記憶装置。
【請求項５】
前記データ記憶部は、
前記データ記憶部上の記憶領域を指定するアドレスを他のアドレスに変換する規則を記載したアドレス変換規則データを記憶し、
前記アドレス変換部は、
前記アドレス変換規則データを用いて前記データ記憶部上の物理アドレスを論理アドレスに変換する
ことを特徴とする請求項４記載の記憶装置。
【請求項６】
前記アドレス変換規則データは、
前記パリティを記憶する記憶領域のアドレスと、次のデータを記憶する記憶領域のアドレスとの間隔を記載しており、
前記アドレス変換部は、
前記パリティを格納している記憶領域に対するデータ書込要求があったとき、
前記パリティを記憶する記憶領域のアドレスに前記間隔を合算したアドレスを、次のデータを記憶する記憶領域のアドレスとする
ことを特徴とする請求項５記載の記憶装置。
【請求項７】
前記アドレス変換規則データは、
前記データを記憶する記憶領域のアドレスと、そのデータを用いて計算した前記パリティを記憶すべき記憶領域のアドレスとの間隔を記載しており、
前記アドレス変換部は、
前記データを記憶する記憶領域のアドレスに前記間隔を合算したアドレスを、そのデータを用いて計算した前記パリティを記憶する記憶領域のアドレスとする
ことを特徴とする請求項５記載の記憶装置。
【請求項８】
前記データ記憶部は、
前記データを利用する条件を定義する利用条件データを記憶し、
前記パリティ計算部は、
前記利用条件データの前記パリティを計算する
ことを特徴とする請求項１記載の記憶装置。
【請求項９】
前記利用条件データに対するアクセスを制御する制御部を備えた
ことを特徴とする請求項８記載の記憶装置。
【請求項１０】
前記データ記憶部が記憶するデータを暗号化する演算部を備えた
ことを特徴とする請求項８記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置に関するものである。
【背景技術】
【０００２】
音楽データや動画像データなどのコンテンツデータに著作権が存在する場合、著作権を保護するための適切な方策が行われていないと、著作権者の権利が侵害されてしまう恐れがある。一方で、著作権保護を最優先し、コンテンツデータの配信や複製を阻害すると、コンテンツデータの流通が滞るため、コンテンツ販売などにともない著作権料を徴収する機会損失につながり、著作権者にとってかえって不利益となる。
【０００３】
著作権保護の対象となるコンテンツデータは、デジタル情報通信網などを介して配信される。これらのデータを利用する際には、配信されたコンテンツデータを記録装置に保存した後、再生装置で再生することが多い。
【０００４】
記憶装置に保存されたコンテンツデータの著作権を保護するには、記憶装置に記録されたデータを著作権者が主張する制限の範囲を超えて利用することができないように、記録再生装置および記憶装置にセキュリティ対策を施す必要がある。セキュリティ対策を記録再生装置および記憶装置に施すには、データの送受信が行われる装置間で機器の認証処理を行ったり、送受信するデータが改竄または傍受されないように暗号化処理を施したりする必要がある。一方で、認証処理や暗号化処理を厳重にするほど、ユーザがコンテンツデータを要求してから実際にそのコンテンツデータが利用可能になるまで多くの処理時間を要する。結果としてユーザにとって待ち時間が生じ、コンテンツデータを円滑に利用することができなくなる可能性がある。
【０００５】
下記特許文献１と非特許文献１には、著作権保護の対象となるコンテンツデータの配信において、コンテンツデータおよびコンテンツデータの利用制御情報の暗号演算に関する負荷を軽減する方法が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−９６８１７号公報
【非特許文献】
【０００７】
【非特許文献１】IEEE Transaction on Magnetics，Vol49，Issue5，pp.1161-1168，Nov.2003.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記特許文献１、非特許文献１に開示されている技術では、暗号化されたコンテンツデータとそのコンテンツデータの利用を規制する利用制御情報を記憶装置に保存する。この利用制御情報は、暗号化されたコンテンツを復号する暗号鍵とコンテンツの利用規則を含んでいる。暗号化されたコンテンツデータを復号し、コンテンツの利用を可能にするためには、そのコンテンツデータの利用制御情報が必要である。
【０００９】
したがって、利用制御情報が破損した場合、暗号化されたコンテンツデータを復号し、コンテンツを利用することが不可能になる。つまり、利用制御情報が破損した状態は、コンテンツが利用不可能である状態と等しい。結果として、コンテンツデータが破損した場合はもちろんのこと、利用制御情報が破損した場合も、コンテンツを利用することができなくなる。そのため、コンテンツデータとその利用制御情報の破損に関しては、より入念な対策を施すことが望ましい。
【００１０】
コンテンツデータとその利用制御情報は、いったん記憶装置に格納された後に再生装置を用いて再生されることが多い。そのため、記憶装置上でこれらが破損しないようにすることが求められる。
【００１１】
記憶装置は、記憶するデータにＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）などのエラー訂正符号を付加し、データが破損した際にこれを復元する機能を備えている。しかし、記録媒体上に連続的に記録されている複数のデータが同時に破損し、ＥＣＣ等を用いたデータの復元ができないバーストエラーと呼ばれる事象が発生することがある。
【００１２】
コンテンツデータまたはその利用制御情報を記憶している記憶領域にバーストエラーが発生すると、ＥＣＣを用いてもエラーを訂正することができず、上述の通りコンテンツを利用することができなくなってしまう。
【００１３】
本発明は、上記のような課題を解決するためになされたものであり、バーストエラーに対する耐性の高い記憶装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る記憶装置は、記憶するデータのパリティを計算する際に、バーストエラー長さの想定値をあらかじめ取得しておき、互いにその想定値以上離れた複数の記憶領域から読み出したデータを用いてそのデータのパリティを計算する。
【発明の効果】
【００１５】
本発明に係る記憶装置によれば、バーストエラーが発生しても、パリティを計算する際に用いたデータが想定エラー長以上離れているので、バーストエラーが全てのデータに及ぶ可能性は少ない。したがって、バーストエラーが及んでいないデータまたはそのパリティを用いて、バーストエラーにより破損したデータを復元することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１に係る記憶装置１００および周辺機器の構成図である。
【図２】ストレージ制御部１２０が実行するパリティ計算処理を説明する図である。
【図３】図２で説明したパリティの書き込み先を説明する図である。
【図４】実施の形態３に係る記憶装置１００の構成図である。
【図５】データ記憶部１５０、制限領域１６０、秘匿領域１７０それぞれの記憶領域アドレスについて説明する図である。
【図６】ストレージ制御部１２０の機能ブロック図である。
【図７】ストレージ制御部１２０がパリティを計算する処理フローである。
【図８】ストレージ制御部１２０がデータを記憶装置１００の外部に出力する処理フローである。
【図９】管理データ９００の構成を示す図である。
【図１０】管理データ９００を用いてデータ書き込み先アドレスを取得する手法を説明する図である。
【図１１】実施の形態４で説明したアドレス変換ルールを簡易化した構成を示す図である。
【発明を実施するための形態】
【００１７】
＜実施の形態１＞
図１は、本発明の実施の形態１に係る記憶装置１００および周辺機器の構成図である。記憶装置１００は、再生装置２００に接続されている。再生装置２００は、放送システム３１０や配信サーバ３２０からネットワーク３３０を介してコンテンツデータを受信し、またはクライアント端末３４０からコンテンツデータを受信する。記憶装置１００は、そのコンテンツデータを記憶する装置である。
【００１８】
再生装置２００は、コンテンツデータを再生する装置であり、ストレージインターフェイス２１０、クライアントインターフェイス２２０を備える。ストレージインターフェイス２１０は、記憶装置１００と接続するためのインターフェイスである。クライアントインターフェイス２２０は、ネットワーク３３０およびクライアント端末３４０と接続するためのインターフェイスである。
【００１９】
記憶装置１００は、ストレージインターフェイス１１０、ストレージ制御部１２０、バッファメモリ１３０、演算装置１４０、データ記憶部１５０を備える。
【００２０】
ストレージインターフェイス１１０は、再生装置２００と接続するためのインターフェイスである。
【００２１】
ストレージ制御部１２０は、ストレージインターフェイス１１０を介して再生装置２００から命令を受信し、この命令にしたがってデータ記憶部１５０にデータを書き込み、またはデータ記憶部１５０からデータを読み出して再生装置２００に出力する。また、後述のパリティ計算処理を実行する。
【００２２】
ストレージ制御部１２０は、データ記憶部１５０にデータを書き込む際に、いったんバッファメモリ１３０へデータを書き込んでおき、後にバッファメモリ１３０からデータ記憶部１５０にデータを移すようにしてもよい。
【００２３】
ストレージ制御部１２０は、その機能を実現する回路デバイスのようなハードウェアを用いて構成することもできるし、マイコンやＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算装置とその動作を規定するソフトウェアを用いて構成することもできる。
【００２４】
データ記憶部１５０は、例えば磁気ディスク装置などのデータ記憶媒体を有する装置である。データ記憶部１５０は、磁気ヘッドやヘッド制御部などの必要な構成を適宜備えるものとする。
【００２５】
演算装置１４０は、ストレージ制御部１２０の動作を制御する。また、記憶装置１００全体を制御するために必要な制御や計算処理などを実行する。演算装置１４０は、例えばマイコンやＣＰＵなどを用いて構成することができる。
【００２６】
図２は、ストレージ制御部１２０が実行するパリティ計算処理を説明する図である。ここでは、データ４００がデータ記憶部１５０の複数のセクタにまたがって記録される状況を想定する。ストレージ制御部１２０は、データ４００をデータ記憶部１５０に書き込むとき、複数のセクタからデータ４００の断片を取り出し、これらを用いてパリティを計算する。ここでは３つのセクタのデータ断片からパリティを計算するものと仮定する。図２では、パリティ４１０と４２０のみ図示した。
【００２７】
データ記憶部１５０に発生したバーストエラーが、パリティの計算元になった複数のデータ断片に及ぶと、パリティを用いて破損データを復元することができなくなる可能性がある。そこでストレージ制御部１２０は、パリティを計算する元となるデータ断片を、互いにバーストエラー長以上離れたセクタから読み出す。
【００２８】
例えば、想定されるバーストエラー長またはその最大値がＮセクタにわたるものとすると、ストレージ制御部１２０は、互いにＮセクタ以上離れた記憶領域に格納されているデータ断片を用いてパリティを計算する。Ｎの具体的な値は、例えばあらかじめデータ記憶部１５０内に格納しておいてもよいし、ストレージ制御部１２０にあらかじめ保持させておいてもよい。
【００２９】
図２の例では、ストレージ制御部１２０は、互いにＮセクタ離れたセクタ＃０、セクタ＃Ｎ、セクタ＃２Ｎに格納されているデータ断片を用いて、パリティ４１０＝Ｐ０を計算する。同様に、互いにＮセクタ離れたセクタ＃１、セクタ＃Ｎ＋１、セクタ＃２Ｎ＋１に格納されているデータ断片を用いて、パリティ４２０＝Ｐ１を計算する。以降のセクタについても同様である。
【００３０】
図２の例において、ストレージ制御部１２０は、バッファメモリ１３０の容量、パリティ計算の処理負荷、データ記憶部１５０に対する書き込みの処理負荷などが許容する限り、２または３以上のセクタに格納されているデータ断片を用いてパリティを計算してもよい。ただし各セクタがＮセクタ以上離れている必要がある点は同様である。
【００３１】
図３は、図２で説明したパリティの書き込み先を説明する図である。データ記憶部１５０に発生したバーストエラーが、パリティの計算元になったデータ断片とパリティ双方に及ぶと、パリティを用いて破損データを復元することができなくなる可能性がある。そこでストレージ制御部１２０は、パリティをその計算元となったデータ断片からバーストエラー長Ｎ以上離れたセクタに書き込む。なお図３に示す例は、バーストエラー長Ｎ＝３セクタであるものとして記載した。
【００３２】
図３に示す例において、データ記憶部１５０は、あるデータを連続する９つのセクタＵ０、Ｕ１、Ｕ２、Ｕ３、Ｕ４、Ｕ５、Ｕ６、Ｕ７、Ｕ８に格納している。ストレージ制御部１２０は、Ｕ０、Ｕ３、Ｕ６からパリティＰ０を計算し、Ｕ１、Ｕ４、Ｕ７からパリティＰ１を計算し、Ｕ２、Ｕ５、Ｕ８からパリティＰ２を計算する。各パリティは、例えば計算元データの論理和によって求められる。
【００３３】
ストレージ制御部１２０は、パリティＰ０、Ｐ１、Ｐ２を、それらを計算する際に用いたデータが記録されているセクタにできる限り近いセクタに格納する。ただし各パリティは、ストレージ制御部１２０がそれぞれのパリティを計算する際に用いたデータ断片を記録したセクタからＮ＝３セクタ以上離れて配置される。図３では、パリティＰ０、Ｐ１、Ｐ２をセクタＵ８の次のセクタからＰ０、Ｐ１、Ｐ２の順で記録した例を示した。
【００３４】
例えば、セクタＵ７、Ｕ８、Ｐ０にまたがってバーストエラーが発生した場合、セクタＵ７に記録されているデータは、エラーの発生していないセクタＵ１に記録されているデータとセクタＵ４に記録されているパリティＰ１から復元することができる。同様に、Ｕ８はエラーの発生していないセクタＵ２とＵ５とＰ２から、Ｐ０はエラーの発生していないセクタＵ０、Ｕ３、Ｕ６から、それぞれ復元することができる。
【００３５】
以上のように、本実施の形態１によれば、ストレージ制御部１２０は、データ記憶部１５０に格納するデータのパリティを計算する際に、互いにＮセクタ以上離れた複数のセクタからデータ断片を読み出し、これらを用いてパリティを計算する。これにより、いずれかのデータ断片がバーストエラーによって破損しても、パリティを計算する際に用いた他のデータ断片またはパリティが破損せずに残っている可能性が高くなるため、これを用いてデータを復元できる可能性も高まる。したがって、記憶装置１００のバーストエラーに対する耐性を高めることができる。
【００３６】
また、本実施の形態１によれば、ストレージ制御部１２０は、各パリティを、計算元のデータ断片が格納されているセクタからＮセクタ以上離れたセクタに格納する。これにより、いずれかのデータ断片またはパリティがバーストエラーによって破損しても、パリティを計算する際に用いた他のデータ断片またはパリティが破損せずに残っている可能性が高くなるため、これを用いてデータを復元できる可能性も高まる。したがって、記憶装置１００のバーストエラーに対する耐性を高めることができる。
【００３７】
＜実施の形態２＞
実施の形態１において、ストレージ制御部１２０は各パリティをデータ断片からＮセクタ以上離れたセクタに格納することを説明した。しかし、データ断片を格納するセクタとパリティを格納するセクタが離れすぎると、磁気ディスク装置のシーク時間およびディスク回転待ち時間が発生し、処理時間を増大させてしまう可能性がある。
【００３８】
これを回避するためには、パリティの計算元であるデータ断片とそのパリティがなるべく近いセクタに配置されることが望ましい。ただし、バーストエラーによって複数のデータ断片またはパリティが破損しないよう、各データ断片間および各データ断片とパリティ間の距離はＮセクタ以上離す必要がある。
【００３９】
そこでストレージ制御部１２０は、パリティを算出し、またはデータ記憶部１５０に格納する際に、上記条件を満たすように、パリティ計算元のデータ断片を選択し、またパリティの格納先を定める。すなわち、パリティを計算する際に用いるデータ断片間の距離、およびデータ断片とパリティ間の距離をＮセクタ以上に保ちつつ、データ断片とパリティ間の距離が最小となるようにする。
【００４０】
具体的には、例えば図３に示すように、最後のデータ断片Ｕ８に隣接するセクタに最初のパリティＰ０を格納すると、データ断片とパリティ間の距離は最小となる。ただしＵ８やＵ７がパリティＰ０の計算元になっていると、これらがバーストエラーによって同時に破損したときに復元することができなくなる。そこでストレージ制御部１２０は、パリティＰ０の計算元を、パリティＰ０を格納するセクタよりもＮセクタ以上前のデータ断片から選択するようにする。
【００４１】
以上のように、本実施の形態２によれば、ストレージ制御部１２０は、パリティ計算元となるデータ断片とパリティの間の距離が、実施の形態１で説明した条件を満たしつつ最小となるように、データ断片を選択し、またパリティの格納位置を定める。これにより、シーク時間および回転待ち時間を抑え、記憶装置１００のデータ入出力パフォーマンスを向上させることができる。
【００４２】
＜実施の形態３＞
本発明の実施の形態３では、実施の形態１〜２で説明した構成に加え、アクセス制限がかけられた記憶領域を有する構成を説明する。その他の構成は実施の形態１〜２と同様であるため、以下では差異点を中心に説明する。
【００４３】
図４は、本実施の形態３に係る記憶装置１００の構成図である。本実施の形態３に係る記憶装置１００は、実施の形態１〜２で説明した構成に加え、新たに転送モジュール１６１、制限領域制御部１６２、制限領域記憶部１６３、秘匿領域制御部１７１、秘匿領域記憶部１７２を備える。転送モジュール１６１、制限領域制御部１６２、制限領域記憶部１６３は、制限領域１６０を形成する。秘匿領域制御部１７１、秘匿領域記憶部１７２は、秘匿領域１７０を形成する。
【００４４】
制限領域１６０は、記憶装置１００の外部からアクセスすることが制限された記憶領域である。秘匿領域１７０は、記憶装置１００の外部からアクセスすることができず、記憶装置１００の内部でのみアクセスすることができる記憶領域である。
【００４５】
制限領域１６０は、記憶装置１００の外部からのアクセスを制限したいデータを格納することを主な目的とする記憶領域である。秘匿領域１７０は、記憶装置１００の外部に提供すべきではないデータを格納することを主な目的とする記憶領域である。以下では、秘匿領域１７０に実施の形態１〜２で説明したパリティを格納するものとして説明する。
【００４６】
制限領域１６０と秘匿領域１７０はデータ記憶部１５０とは別の記憶装置上に構成してもよいし、データ記憶部１５０が有する記憶領域のうちいずれかを制限領域１６０または秘匿領域１７０として割り当てることもできる。
【００４７】
転送モジュール１６１は、ストレージインターフェイス１１０を介して、制限領域１６０に対するアクセス命令を受信し、制限領域制御部１６２に出力する。また、制限領域１６０が格納しているデータを、ストレージインターフェイス１１０を介して出力する。
【００４８】
制限領域制御部１６２は、ストレージ制御部１２０とは別に独立して動作し、制限領域１６０に対するアクセスを制御する。具体的には、制限領域１６０に対するデータ入出力命令がアクセス権限をともなうものであるか否かを判定し、正当なアクセス権限があればその命令を実行する。アクセス権限に関しては後述する。制限領域制御部１６２は、ストレージ制御部１２０とは別の命令系統にしたがって動作する。
【００４９】
制限領域記憶部１６３は、制限領域１６０が格納するデータを実際に記憶する記憶デバイスである。データ記憶部１５０の一部の記憶領域を制限領域記憶部１６３として割り当てることもできるし、データ記憶部１５０とは別の記憶装置を用いることもできる。
【００５０】
秘匿領域制御部１７１は、ストレージ制御部１２０および制限領域制御部１６２とは別に独立して動作し、秘匿領域１７０を記憶装置１００の外部から隠蔽する。秘匿領域１７０を隠蔽するための具体的な手法については後述する。秘匿領域制御部１７１は、ストレージ制御部１２０および制限領域制御部１６２とは別の命令系統にしたがって動作する。
【００５１】
秘匿領域記憶部１７２は、秘匿領域１７０が格納するデータを実際に記憶する記憶デバイスである。データ記憶部１５０の一部の記憶領域を秘匿領域記憶部１７２として割り当てることもできるし、データ記憶部１５０とは別の記憶装置を用いることもできる。
【００５２】
データ記憶部１５０とは別の記憶装置を用いて制限領域記憶部１６３および秘匿領域記憶部１７２を構築すると、データ記憶部１５０とは別に独立してデータアクセスを行うことができるので、アクセス性能が向上する。また、データ記憶部１５０、制限領域記憶部１６３、秘匿領域記憶部１７２全てにバーストエラーが同時発生する可能性は低いと思われるので、バーストエラーに対する耐性を向上させる観点でも好ましい。ただし、記憶デバイスおよびその制御部を別途設ける必要があるためコストは高くなる。
【００５３】
図５は、データ記憶部１５０、制限領域１６０、秘匿領域１７０それぞれの記憶領域アドレスについて説明する図である。以下、図５に示す各アドレスについて説明する。
【００５４】
記憶装置１００が有する各記憶領域内の位置は、物理アドレス５０１によって特定される。したがって、データ記憶部１５０、制限領域１６０、秘匿領域１７０に対してデータを入出力するためには、これらの記憶領域の物理アドレス５０１を特定する必要がある。ただし実際の処理では、必ずしも物理アドレス５０１を直接用いるわけではなく、物理アドレス５０１を一意に変換した論理アドレスが用いられる。
【００５５】
再生装置２００は、データ記憶部１５０または制限領域１６０に対してアクセスする際に、論理アドレスを指定する。ストレージ制御部１２０または制限領域制御部１６２は、再生装置２００が指定した論理アドレスを物理アドレスに変換し、データの書き込みまたは読み込みを実行する。
【００５６】
アドレスを一意に変換することができれば、論理アドレスをさらに変換して別の論理アドレスを構築し、アドレス階層を多段的に構成することができる。図５では、物理アドレス５０１を論理アドレス５０２に変換し、論理アドレス５０２をさらに制限なし論理アドレス５０３と制限付き論理アドレス５０４に変換した例を示した。
【００５７】
制限なし論理アドレス５０３は、そのまま再生装置２００に対して公開されるか、またはさらに制限なし論理アドレス５０５に変換した上で再生装置２００に公開される。制限付き論理アドレス５０４は、制限領域論理アドレス５０６と秘匿領域論理アドレス５０７に変換される。
【００５８】
制限領域論理アドレス５０６は、制限領域１６０内の記憶領域の論理アドレスを表す。秘匿領域論理アドレス５０７は、秘匿領域１７０内の記憶領域の論理アドレスを表す。制限領域論理アドレス５０６は再生装置２００に対して公開されるが、秘匿領域論理アドレス５０７は公開されない。これにより、秘匿領域１７０を再生装置２００から隠蔽することができる。
【００５９】
なお、再生装置２００が制限領域１６０にアクセスすることを許可するか否かは、所定の認証手続きによって定めてもよい。例えば、再生装置２００から制限領域論理アドレス５０６に対するアクセス要求があった時点で、再生装置２００を認証する処理を制限領域制御部１６２などが実行し、認証することができた場合のみアクセスを許可する、などとすることができる。
【００６０】
各アドレス変換は、例えばストレージ制御部１２０がまとめて実行してもよいし、制限領域１６０の論理アドレスは制限領域制御部１６２が提供し、秘匿領域１７０の論理アドレスは秘匿領域制御部１７１が提供する、などのように適宜役割分担をしてもよい。同様に、各記憶領域に対するデータ入出力も、ストレージ制御部１２０がまとめて実行してもよいし、上記のように役割分担をしてもよい。
【００６１】
図６は、ストレージ制御部１２０の機能ブロック図である。ストレージ制御部１２０はパリティ計算部１２１とパリティスイッチ１２２を備える。
【００６２】
パリティ計算部１２１は、演算装置１４０によって制御され、上述のパリティを計算する。
パリティスイッチ１２２は、データ記憶部１５０または制限領域記憶部１６３が格納しているデータに対して、パリティを計算するか否かを格納しているデータ数と１つのパリティを計算するために必要なデータ断片の数Ｍと大小を比較して判断する。この判断手法については後述の図７で改めて説明する。また、パリティスイッチ１２２は前記断片の数Ｍを保持する。実施の形態１〜２で説明した例は、Ｍ＝３の場合に相当する。
【００６３】
パリティスイッチ１２２が、パリティを計算すると判断した場合、パリティ計算部１２１は、データ記憶部１５０または制限領域記憶部１６３が格納しているデータを取得してパリティを計算し、秘匿領域記憶部１７２に格納する。
【００６４】
図７は、ストレージ制御部１２０がパリティを計算する処理フローである。以下、図７の各ステップについて説明する。なお、以下の説明では、１つのセクタに１つのデータが格納されるものとして説明するが、１つのセクタに複数のデータが記録される場合、あるいは１つのデータが複数のセクタにまたがる場合は、以下の説明におけるデータ数とセクタ数を適宜読み替えるものとする。また、ストレージ制御部１２０がデータ入出力をまとめて行うものとして説明する。
【００６５】
（図７：ステップＳ７００）
記憶装置１００に対するデータ書き込み命令をストレージインターフェイス１１０が受信すると、本処理フローが開始される。
【００６６】
（図７：ステップＳ７０１）
ストレージ制御部１２０は、ストレージインターフェイス１１０が受信した書込対象データを、バッファメモリ１３０に格納する。
【００６７】
（図７：ステップＳ７０２）
ストレージ制御部１２０は、バッファメモリ１３０内に格納されているデータ断片の数と、パリティスイッチ１２２が保持している必要データ断片数Ｍとを比較する。バッファメモリ１３０内のデータ断片数がＭ以上であればステップＳ７０３へ進み、Ｍ未満であればステップＳ７０７へ進む。
【００６８】
（図７：ステップＳ７０３）
ストレージ制御部１２０は、バッファメモリ１３０からデータ断片をＭ個読み出す。
【００６９】
（図７：ステップＳ７０４）
ストレージ制御部１２０は、ステップＳ７０３で読み出したデータ断片を用いてパリティを計算する。
【００７０】
（図７：ステップＳ７０５）
ストレージ制御部１２０は、書き込み命令を受けたデータをデータ記憶部１５０または制限領域記憶部１６３に格納する。また、ステップＳ７０４で計算したパリティを、秘匿領域記憶部１７２に格納する。
【００７１】
（図７：ステップＳ７０６）
ストレージ制御部１２０は、バッファメモリ１３０内に読み出していないデータが残っている場合はステップＳ７０２へ戻って同様の処理を実行し、残っていない場合は本処理フローを終了する。
【００７２】
（図７：ステップＳ７０７）
ストレージ制御部１２０は、バッファメモリ１３０内のデータ断片を読み出す。
【００７３】
（図７：ステップＳ７０８）
ストレージ制御部１２０は、ステップＳ７０７で読み出したデータ断片と擬似データを用いてパリティを計算する。ここでいう擬似データとは、ステップＳ７０７で読み出したデータ断片数がＭに満たない場合に、不足分を補う仮データのことである。この擬似データは、ストレージ制御部１２０が所定規則にしたがって生成してもよいし、規定の固定データなどを用いてもよい。なお、本ステップで擬似データを読み出す代わりに、本処理フローを開始する時点であらかじめ擬似データを読み出しておき、ステップＳ７０１で不足分が生じた時点でバッファメモリ１３０に擬似データを書き込んでおいてもよい。これにより、擬似データを生成する時間や読み出し時間を低減することができる。
【００７４】
（図７：ステップＳ７０９）
ストレージ制御部１２０は、書き込み命令を受けたデータをデータ記憶部１５０または制限領域記憶部１６３に格納する。また、ステップＳ７０８で計算したパリティを、秘匿領域記憶部１７２に格納する。
【００７５】
図８は、ストレージ制御部１２０がデータを記憶装置１００の外部に出力する処理フローである。以下、図８の各ステップについて説明する。図７と同様に、ストレージ制御部１２０がデータ入出力をまとめて行うものとする。
【００７６】
（図８：ステップＳ８００）
記憶装置１００に対するデータ読み込み命令をストレージインターフェイス１１０が受信すると、本処理フローが開始される。
【００７７】
（図８：ステップＳ８０１）
ストレージ制御部１２０は、データ読み込み命令を受けたデータをデータ記憶部１５０または制限領域記憶部１６３から読み出す。制限領域記憶部１６３からデータを読み出す場合には、必要な認証処理等を併せて実行する。
【００７８】
（図８：ステップＳ８０２）
ステップＳ８０１で読み出しに成功した場合は本処理フローを終了し、失敗した場合はステップＳ８０３へ進む。
【００７９】
（図８：ステップＳ８０３）
ストレージ制御部１２０は、読み出しに失敗したデータのＥＣＣ（誤り訂正符合）を用いてデータ訂正を試みる。
【００８０】
（図８：ステップＳ８０４）
ステップＳ８０３でデータ訂正に成功した場合は本処理フローを終了し、失敗した場合はステップＳ８０５へ進む。
【００８１】
（図８：ステップＳ８０５）
ストレージ制御部１２０は、ＥＣＣを用いてデータを訂正することができなかった旨を秘匿領域制御部１７１に通知する。
【００８２】
（図８：ステップＳ８０６）
秘匿領域制御部１７１は、訂正できなかったデータを用いて計算したパリティと、そのパリティを計算する際に用いた他のデータとを特定してストレージ制御部１２０に通知する。パリティとその計算元となったデータとの対応関係は、例えば所定規則にしたがって定めてもよいし、両者の対応関係を記載した管理データをいずれかの記憶部に格納しておき、これを参照して把握するようにしてもよい。
【００８３】
（図８：ステップＳ８０７）
ストレージ制御部１２０は、ステップＳ８０６で特定したパリティとそのパリティを計算するときに用いたデータから、訂正に失敗したデータを復元する。
【００８４】
以上、本実施の形態３における記憶装置１００の構成および動作例を説明した。
以上のように、本実施の形態３に係る記憶装置１００は、データ記憶部１５０、制限領域１６０、秘匿領域１７０の物理アドレスを論理アドレスに変換し、秘匿領域１７０の論理アドレスを記憶装置１００の外部に公開しない。これにより、秘匿領域１７０を記憶装置１００の外部から隠蔽し、秘匿領域１７０内でのみデータを処理することができる。
【００８５】
また、本実施の形態３に係る記憶装置１００は、制限領域１６０に対するアクセス要求があったときは、アクセス要求元に対して認証処理を実行することができる。これにより制限領域１６０に格納されているデータに対するアクセス制御を実現することができる。
【００８６】
＜実施の形態４＞
実施の形態３では、秘匿領域１７０にパリティを格納することを説明した。データ記憶部１５０の記憶領域の一部を秘匿領域１７０として割り当てた場合、データを格納しているセクタとパリティを格納しているセクタが、図３のように隣接する場合がある。
【００８７】
したがって、図３の状態の下で再生装置２００が記憶装置１００にデータを追加書き込みしようとするとき、パリティが格納されている記憶領域を避けてデータを書き込まなければならない。すなわち、再生装置２００は、データ書き込み先の論理アドレスを得る際に、パリティが格納されているセクタの論理アドレスを把握しておかなければならない。ところが、秘匿領域１７０は再生装置２００から隠蔽されているため、再生装置２００はパリティがどこに格納されているか、直接的には把握することができない。
【００８８】
本発明の実施の形態４では、秘匿領域１７０にパリティが書き込まれている状態でデータを追加書き込みする際に、適切な書き込み先アドレスを得るための構成と動作例を説明する。その他の構成は実施の形態１〜３と同様であるため、以下では差異点を中心に説明する。
【００８９】
データ記憶部１５０の一部を秘匿領域１７０として割り当て、かつ秘匿領域１７０にパリティが書き込まれている場合、図３で例示したように、データとそのパリティが隣接する記憶領域に交互に書き込まれる場合がある。特に、パリティは本来書き込みたいデータとは別に自動生成され、その論理アドレスが非公開であるため、取り扱いが難しい。この問題は、実施の形態２で説明した、パリティをできる限りデータの近くに配置することと相俟って、取り扱いを複雑にしている。以下に場合分けして説明する。
【００９０】
（ケース１：パリティを書き込む場合）
ストレージ制御部１２０が秘匿領域１７０にパリティを書き込むとき、実施の形態２で説明したように、できる限りパリティを計算する際に用いたデータに近い位置にパリティを格納することが望ましい。かつ、パリティを格納する論理アドレスは、記憶装置１００の外部に対して非公開としなければならない。
【００９１】
（ケース２：データを書き込む場合）
ストレージ制御部１２０がデータ記憶部１５０にデータを書き込もうとするとき、その記憶領域にパリティが既に書き込まれている場合がある。パリティが書き込まれている箇所の論理アドレスは非公開であるため、再生装置２００はパリティが既に書き込まれていることを知らず、その論理アドレスに対してデータを書き込もうとする可能性がある。この場合は、パリティが書き込まれている記憶領域をスキップした論理アドレスが、書き込み先アドレスとして指定されるようにしなければならない。
【００９２】
本実施の形態４では、簡易な構成を用いて上記各ケースにおけるデータおよびパリティの取り扱いを容易にするため、各データおよび各パリティに、後述する管理データ９００を付加する。以下、図９〜図１０を用いてその手法を説明する。
【００９３】
図９は、管理データ９００の構成を示す図である。ストレージ制御部１２０は、データ記憶部１５０、制限領域記憶部１６３、秘匿領域記憶部１７２にデータを書き込む際に、図９に示す管理データをそのデータに付加する。管理データ９００は、識別フラグ９０１、パリティグループＩＤ９０２、アドレス差分値９０３を有する。
【００９４】
識別フラグ９０１は、当該データが通常データかそれともパリティであるかを示すフラグである。
【００９５】
パリティグループＩＤ９０２は、パリティとそのパリティを計算するために用いられたデータとからなるデータ集合を識別するＩＤである。同じパリティとそのパリティを計算するために用いられたデータについては、同じ値のパリティグループＩＤ９０２が割り当てられる。
【００９６】
アドレス差分値９０３は、当該データまたはパリティが格納されているセクタから、次にデータまたはパリティを書き込むことができるセクタまでの、アドレス値の差分を示す。当該管理データ９００が付加されているのがパリティである場合、本値は、次にデータを書き込むことができるセクタまで何セクタ離れているかを示す。当該管理データ９００が付加されているのがデータである場合、本値は、次にパリティを書き込むセクタまで何セクタ離れているかを示す。
【００９７】
図１０は、管理データ９００を用いてデータ書き込み先アドレスを取得する手法を説明する図である。以下、図１０を用いて管理データ９００の使用手順を説明する。
【００９８】
（ａ）パリティ書き込み先の論理アドレス
各データのアドレス差分値９０３には、そのデータを用いて計算したパリティをどこに格納すべきかを示唆する値が記載されている。図１０（ａ）に示す例では、セクタＵ９（および他のセクタ）を用いて計算したパリティは、３セクタ先のＰ３に格納すべき旨が、アドレス差分値９０３の値によって示される。このように、ストレージ制御部１２０は、管理データ９００を用いて、データが書き込まれている記憶領域の論理アドレスに基づきパリティ書き込み先の論理アドレスを得ることができる。
【００９９】
（ｂ）データ書き込み先の論理アドレス
再生装置２００は、既にデータまたはパリティが書き込まれているセクタに新たにデータを書き込むよう要求する場合がある。ストレージ制御部１２０は、データを書き込むよう要求されたセクタに付加されている管理データ９００の識別フラグ９０１を確認する。
【０１００】
（ｂ．１）データが先に書き込まれている場合
先に書き込まれているのがデータである場合は、再生装置２００からのデータ書き込み要求は上書き要求であるとみなすことができる。この場合、ストレージ制御部１２０は、そのままそこに書き込まれているデータを上書きする。
【０１０１】
（ｂ．２）パリティが先に書き込まれている場合
先に書き込まれているのがパリティである場合は、このセクタをスキップしてデータを書き込まなければならない。この場合、ストレージ制御部１２０は、先に書き込まれているパリティのアドレス差分値９０３を読み込み、その分だけセクタをスキップした先に、要求されたデータを書き込む。
【０１０２】
以上のように、管理データ９００を用いることにより、秘匿領域１７０に書き込むパリティの取り扱いを容易にすることができる。
【０１０３】
なお、管理データ９００を用いて書き込み先のアドレスを得ることは、アドレス変換の一種であるとみなすこともできる。したがって、ストレージ制御部１２０は、図５で説明したアドレス変換を行う過程で、図９〜図１０で説明した処理を実行してもよい。
【０１０４】
また、管理データ９００を最初に作成する際に、ストレージ記憶部１２０はアドレス差分値９０３の値を把握しておかなければならない。この値は、パリティを計算するために用いるデータ断片数Ｍ、何個のデータ断片を連続格納するか、などによって定まる。具体的な数値は、固定的に定めてもよいし、記憶装置１００の動作中に適宜最適化して調整するようにしてもよい。
【０１０５】
以上のように、本実施の形態４によれば、ストレージ制御部１２０は、データまたはパリティを書き込む際に、管理データ９００を付加する。管理データ９００内のアドレス差分値９０３には、次のデータまたはパリティをいずれの記憶領域に書き込めばよいかを記載しておく。これにより、秘匿領域１７０の論理アドレスを記憶装置１００の外部から隠蔽しつつ、秘匿領域１７０のアドレス管理を容易に行うことができる。
【０１０６】
また、本実施の形態４によれば、秘匿領域１７０のアドレス管理を行うための管理テーブルを作成したり、その管理テーブルを検索したりする処理が不要となり、ストレージ制御部１２０の処理負荷を軽減することができる。
【０１０７】
＜実施の形態５＞
図１１は、実施の形態４で説明したアドレス変換ルールを簡易化した構成を示す図である。図１１において、データを連続して格納するセクタ数ＮｕはＮｕ＝３で固定であり、パリティを格納するセクタ数ＮｐはＮｐ＝１で固定である。３つのデータセクタの後に１つのパリティセクタが必ず配置される。
【０１０８】
この設定の場合、０以上の整数をＡ、０からＮｕ以下の整数をＢ、０からＮｐ以下の整数をＣ、下位論理アドレスをＸとすると、下位論理アドレスＸから利用制御情報の上位論理アドレスＹとパリティの上位論理アドレスＺは、下記（式１）（式２）を用いて一意に得ることができる。この場合、管理データ９００は不要となる。
Ｙ＝Ｘ＋Ａ×Ｎｐ＋Ｂ  ・・・（式１）
Ｚ＝Ｘ＋Ａ×Ｎｕ＋Ｃ  ・・・（式２）
【０１０９】
＜実施の形態６＞
以上の実施の形態１〜５において、ストレージ制御部１２０は、データ記憶部１５０にデータを格納する際に、そのデータを暗号化してもよい。同様に、制限領域制御部１６２は、制限領域１６０にデータを格納する際に、そのデータを暗号化してもよい。暗号化することにより、データの安全性が高まる。暗号鍵は、例えばストレージ制御部１２０または制限領域制御部１６２の内部でのみ保持するようにし、記憶装置１００の外部に対して隠蔽するようにしてもよい。または、暗号鍵を制限領域１６０に格納し、アクセスを制限してもよい。
【０１１０】
制限領域１６０は、記憶装置１００の外部からのアクセスが制限されるため、比較的高いセキュリティが求められるデータを格納する際に用いると好適である。例えば、著作権で保護されているコンテンツデータの利用条件を規制する利用制限情報を、制限領域１６０に格納することが考えられる。
【０１１１】
秘匿領域１７０に格納するパリティは、必ずしも全てのデータについて計算する必要はない。例えば、データ記憶部１５０に格納されるデータについてはＥＣＣによるエラー訂正のみを実行し、比較的重要性の高いデータが格納される制限領域１６０内のデータについてのみパリティを計算するようにしてもよい。この場合、パリティを格納する秘匿領域１７０は記憶装置１００の外部から隠蔽されているため、セキュリティの観点からも都合がよい。
【０１１２】
なお、以上の説明では記憶領域の単位としてセクタを用いたが、他の単位を用いてもよい。また、以上の実施の形態１〜６において、制限領域１６０と秘匿領域１７０のアクセスを制限して耐タンパ性を論理的に保証することができる限り、これらの記憶媒体は物理的に耐タンパ性を保証する記憶媒体であることを要しない。
【符号の説明】
【０１１３】
１００：記憶装置、１１０：ストレージインターフェイス、１２０：ストレージ制御部、１３０：バッファメモリ、１４０：演算装置、１５０：データ記憶部、１６０：制限領域、１６１：転送モジュール、１６２：制限領域制御部、１６３：制限領域記憶部、１７０：秘匿領域、１７１：秘匿領域制御部、１７２：秘匿領域記憶部、２００：再生装置、２１０：ストレージインターフェイス、２２０：クライアントインターフェイス、３１０：放送システム、３２０：配信サーバ、３３０：ネットワーク、３４０：クライアント端末、５０１：物理アドレス、５０２：論理アドレス、５０３：制限なし論理アドレス、５０４：制限付き論理アドレス、５０５：論理アドレス、５０６：制限領域論理アドレス、５０７：秘匿領域論理アドレス、９００：管理データ、９０１：識別フラグ、９０２：パリティグループＩＤ、９０３：アドレス差分値。
【図１】
2011118504.tif 000003
【図２】
2011118504.tif 000004
【図３】
2011118504.tif 000005
【図４】
2011118504.tif 000006
【図５】
2011118504.tif 000007
【図６】
2011118504.tif 000008
【図７】
2011118504.tif 000009
【図８】
2011118504.tif 000010
【図９】
2011118504.tif 000011
【図１０】
2011118504.tif 000012
【図１１】
2011118504.tif 000013