(57)【要約】【課題】記録装置とホスト装置との間で秘匿すべきデータを暗号化して入出力するときの耐タンパ性を向上させる。【解決手段】記録装置がストレージデバイスに秘匿すべきデータの入出力命令を発行するとき、その命令がいずれの暗号入出力処理に属する命令であるかを識別するためのＩＤを付してストレージデバイスに送る（Ｓ７００）。ストレージデバイスはシークエンス命令を受信すると（Ｓ７０２）、そのＩＤが確保されており（Ｓ７０４のＹ）、命令発行順が正当であることが確認されると（Ｓ７０６のＹ）、その命令を受理する（Ｓ７０８）。シークエンスＩＤにより処理系を識別しつつ、命令の実行手順を適切に管理する。【選択図】        図１６
2004302701.tif 000002
【特許請求の範囲】
【請求項１】
データを保持する記憶媒体と、
前記記憶媒体とホスト装置との間で秘匿すべきデータを暗号化して入出力するための一連の暗号入出力処理を複数行う際に、該複数の暗号入出力処理をそれぞれ複数の手順に分割して発行された複数の命令を前記ホスト装置から受信し、該命令を実行する暗号処理部と、を備え、
前記暗号処理部は、前記命令に付された識別情報を参照して、受信した命令がいずれの暗号入出力処理に属する命令であるかを識別し、前記複数の暗号入出力処理手順のうちの２以上の処理を並行して処理可能であることを特徴とする記憶装置。
【請求項２】
前記暗号処理部は、前記暗号入出力処理ごとに、前記命令の実行順序を管理し、順序の不正な命令を受信したときに、該命令の実行を拒否することを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記暗号処理部は、順序の不正な命令を受信したときに、該命令が属する暗号入出力処理を中止することを特徴とする請求項２に記載の記憶装置。
【請求項４】
前記記憶装置が並行して処理可能な暗号入出力処理の数は、前記記憶装置の性能に基づいて予め決定されることを特徴とする請求項１から３のいずれかに記載の記憶装置。
【請求項５】
前記ホスト装置からの要求に応じて、前記記憶装置が並行して処理可能な暗号入出力処理の最大数を前記ホスト装置に提供することを特徴とする請求項１から４のいずれかに記載の記憶装置。
【請求項６】
前記記憶媒体は、通常のデータを保持する通常データ記憶部と、前記秘匿すべきデータを保持する機密データ記憶部と、を含み、
前記機密データ記憶部は、前記暗号処理部を介してのみアクセス可能に構成されることを特徴とする請求項１から５のいずれかに記載の記憶装置。
【請求項７】
データを保持する記憶媒体と、
前記記憶媒体とホスト装置との間で秘匿すべきデータを暗号化して入出力するための一連の暗号入出力処理を行う際に、該暗号入出力処理を複数の手順に分割して発行された複数の命令を前記ホスト装置から受信し、該命令を実行する暗号処理部と、を備え、
前記暗号処理部は、２以上の暗号入出力処理を管理可能であり、命令に付された識別情報を参照して、受信した命令がいずれの暗号入出力処理に属する命令であるかを識別し、該命令が属する暗号入出力処理において不正な順序の命令であることを検知したとき、該命令の実行を拒否することを特徴とする記憶装置。
【請求項８】
前記ホスト装置からの要求に応じて、前記記憶装置が並行して処理可能な暗号入出力処理の最大数を前記ホスト装置に提供することを特徴とする請求項７に記載の記憶装置。
【請求項９】
秘匿すべきデータを暗号化して入出力するための一連の暗号入出力処理を複数並行して処理可能に構成された記憶装置との間でデータを入出力するホスト装置であって、
前記暗号入出力処理を複数の手順に分割し、それらの手順のうち前記記憶装置側で実行すべき手順を前記記憶装置に実行させるための命令を前記記憶装置に対して順に発行するコントローラと、
前記暗号入出力処理に必要な暗号化または復号処理を実行する暗号処理部と、を備え、
前記コントローラは、前記命令を発行するときに、該命令が、前記複数の暗号入出力処理のうちいずれの暗号入出力処理に属する命令であるかを識別するための識別情報を、該命令に付すことを特徴とするホスト装置。
【請求項１０】
前記コントローラは、前記暗号入出力処理の開始に先立って、該暗号入出力処理を行う処理系を確保するための命令を発行することを特徴とする請求項９に記載のホスト装置。
【請求項１１】
秘匿すべきデータを暗号化して入出力するための一連の暗号入出力処理を複数並行して実行可能に構成され、かつ、前記暗号入出力処理によって入出力するデータを保持する記憶装置とホスト装置との間で、前記暗号入出力処理を実行する際に、
前記暗号入出力処理を複数の手順に分割し、それらの手順のうち前記ホスト装置側で実行すべき手順を前記ホスト装置が実行するステップと、
前記記憶装置側で実行すべき手順を前記記憶装置に実行させるために、前記ホスト装置が前記記憶装置に対して命令を発行するステップと、
前記記憶装置が前記命令を受信するステップと、
前記記憶装置が前記命令を実行するステップと、を含み、
前記命令には、該命令が、前記記憶装置が並行して処理している複数の暗号入出力処理のうちいずれの暗号入出力処理に属する命令であるかを識別するための識別情報が付されることを特徴とするデータ入出力方法。
【請求項１２】
前記記憶装置の性能に基づいて、前記記憶装置が並行して処理可能な前記暗号入出力処理の数の上限を予め決定するステップをさらに含むことを特徴とする請求項１１に記載のデータ入出力方法。
【請求項１３】
前記記憶装置が、自身の性能に基づいて、並行して処理可能な前記暗号入出力処理の数の上限を予め決定するステップと、
前記上限を前記ホスト装置に通知するステップと、
をさらに含むことを特徴とする請求項１１に記載のデータ入出力方法。
【請求項１４】
前記暗号入出力処理の実行に先立って、前記決定するステップで決定した数だけ用意された前記識別情報の中から、実行しようとする暗号入出力処理を識別するための識別情報を選択して割り当てるステップをさらに含むことを特徴とする請求項１２または１３に記載のデータ入出力方法。
【請求項１５】
前記受信するステップは、
受信した命令が、前記暗号入出力処理において正しい実行順序の命令であるか否かを判別するステップと、
正しい実行順序の命令であると判別されたときに、該命令を正常に受理するステップと、
不正な実行順序の命令であると判別されたときに、該命令の実行を拒否するステップと、
を含むことを特徴とする請求項１１から１４のいずれかに記載のデータ入出力方法。
【請求項１６】
受信した命令が不正な実行順序の命令であると判別されたときに、その命令が属する暗号入出力処理の実行を中止することを特徴とする請求項１５に記載のデータ入出力方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ入出力技術に関し、とくに、記憶装置とホスト装置との間で秘匿すべきデータを暗号化して入出力する技術に関する。
【０００２】
【従来の技術】
近年、記憶素子の小型化、集積化、量産化が飛躍的に進み、記録媒体の小型化、大容量化、低価格化が進んでいる。そのような状況下、本出願人らは、さらに利便性の高い記録媒体の実現を目指し、従来一つのホスト装置に固定的に接続されて使用されるのが一般的であった大容量ハードディスクを、ホスト装置に着脱自在に構成することにより、複数のホスト装置でデータを共有可能なリムーバブルメディアとして扱えるようにしようと考えた。小型かつ大容量で、アクセス速度も比較的高速なハードディスクをリムーバブルメディアとして利用できることのメリットは大きい。
【０００３】
【特許文献１】
特開２０００−１７３１５８号公報  （全文）
【０００４】
【発明が解決しようとする課題】
ユーザの利便性を考えると、あらゆるホスト装置でこのリムーバブルなハードディスクを読み書きできるようにすることが望ましいが、反面、あらゆるホスト装置で読み書き可能ということは、第三者にデータが漏洩する危険性もはらんでいることを意味する。音楽や映像などのデジタルコンテンツの流通が注目される現在、著作権を保護し、デジタルコンテンツの流出を防ぐためにも、秘匿すべきデータを適切に保護することのできる技術を開発することが重要である。
【０００５】
本発明はこうした状況に鑑みてなされたものであり、その目的は、記憶装置とホスト装置との間で秘匿すべきデータを暗号化して入出力するときの耐タンパ性を向上させる技術の提供にある。本発明の別の目的は、記憶装置とホスト装置との間で実行される暗号化入出力処理の効率を向上させる技術の提供にある。
【０００６】
【課題を解決するための手段】
本発明のある態様は、記憶装置に関する。この記憶装置は、データを保持する記憶媒体と、記憶媒体とホスト装置との間で秘匿すべきデータを暗号化して入出力するための一連の暗号入出力処理を複数行う際に、該複数の暗号入出力処理をそれぞれ複数の手順に分割して発行された複数の命令をホスト装置から受信し、該命令を実行する暗号処理部と、を備え、暗号処理部は、命令に付された識別情報を参照して、いずれの暗号入出力処理に属する命令であるかを識別し、複数の暗号入出力処理手順のうちの２以上の処理を並行して処理可能である。
【０００７】
後述するように、暗号入出力処理を複数の手順に分割し、命令を細分化することで、バスを効率良く開放し、複数の処理を並列に実行させることが可能となる。このとき、複数の処理に属する命令が並列して発行されるので、それらを適切に識別するために、命令に識別情報を付す。
【０００８】
暗号処理部は、暗号入出力処理ごとに、命令の実行順序を管理し、順序の不正な命令を受信したときに、該命令の実行を拒否してもよい。暗号処理部は、順序の不正な命令を受信したときに、該命令が属する暗号入出力処理を中止してもよい。暗号入出力処理における命令の実行手順を入れ替えるとセキュリティホールが生じる恐れがあるが、実行順序を適切に管理することにより、不正アクセスを防ぐことができる。
【０００９】
記憶装置が並行して処理可能な暗号入出力処理の数は、記憶装置の性能に基づいて予め決定されてもよい。記憶装置は、ホスト装置からの要求に応じて、記憶装置が並行して処理可能な暗号入出力処理の最大数をホスト装置に提供してもよい。これにより、記憶装置の性能に応じて適切な数の処理系を用意することができる。記憶媒体は、通常のデータを保持する通常データ記憶部と、秘匿すべきデータを保持する機密データ記憶部と、を含み、機密データ記憶部は、暗号処理部を介してのみアクセス可能に構成されてもよい。これにより、秘匿すべきデータが漏洩する危険性を最小限に抑えることができる。
【００１０】
本発明の別の態様も、記憶装置に関する。この記憶装置は、データを保持する記憶媒体と、記憶媒体とホスト装置との間で秘匿すべきデータを暗号化して入出力するための一連の暗号入出力処理を行う際に、該暗号入出力処理を複数の手順に分割して発行された複数の命令をホスト装置から受信し、該命令を実行する暗号処理部と、を備え、暗号処理部は、２以上の暗号入出力処理を管理可能であり、命令に付された識別情報を参照して、受信した命令がいずれの暗号入出力処理に属する命令であるかを識別し、該命令が属する暗号入出力処理において不正な順序の命令であることを検知したとき、該命令の実行を拒否する。
【００１１】
この記憶装置は、ホスト装置からの要求に応じて、記憶装置が並行して処理可能な暗号入出力処理の最大数を前記ホスト装置に提供してもよい。
【００１２】
本発明のさらに別の態様は、ホスト装置に関する。このホスト装置は、匿すべきデータを暗号化して入出力するための一連の暗号入出力処理を複数並行して処理可能に構成された記憶装置との間でデータを入出力するホスト装置であって、暗号入出力処理を複数の手順に分割し、それらの手順のうち記憶装置側で実行すべき手順を記憶装置に実行させるための命令を記憶装置に対して順に発行するコントローラと、暗号入出力処理に必要な暗号化または復号処理を実行する暗号処理部と、を備え、コントローラは、命令を発行するときに、該命令が、複数の暗号入出力処理のうちいずれの暗号入出力処理に属する命令であるかを識別するための識別情報を、該命令に付す。
【００１３】
コントローラは、暗号入出力処理の開始に先立って、該暗号入出力処理を行う処理系を確保するための命令を発行してもよい。この命令は、該暗号入出力処理を識別するための識別情報を確保する処理であってもよい。
【００１４】
本発明のさらに別の態様は、データ入出力方法に関する。この方法は、秘匿すべきデータを暗号化して入出力するための一連の暗号入出力処理を複数並行して実行可能に構成され、かつ、暗号入出力処理によって入出力するデータを保持する記憶装置とホスト装置との間で、暗号入出力処理を実行する際に、暗号入出力処理を複数の手順に分割し、それらの手順のうちホスト装置側で実行すべき手順をホスト装置が実行するステップと、記憶装置側で実行すべき手順を記憶装置に実行させるために、ホスト装置が記憶装置に対して命令を発行するステップと、記憶装置が命令を受信するステップと、記憶装置が命令を実行するステップと、を含み、命令には、該命令が、記憶装置が並行して処理している複数の暗号入出力処理のうちいずれの暗号入出力処理に属する命令であるかを識別するための識別情報が付される。
【００１５】
この方法は、記憶装置の性能に基づいて、記憶装置が並行して処理可能な暗号入出力処理の数の上限を予め決定するステップをさらに含んでもよい。この方法は、記憶装置が、自身の性能に基づいて、並行して処理可能な暗号入出力処理の数の上限を予め決定するステップと、上限をホスト装置に通知するステップと、をさらに含んでもよい。暗号入出力処理の実行に先立って、決定するステップで決定した数だけ用意された識別情報の中から、実行しようとする暗号入出力処理を識別するための識別情報を選択して割り当てるステップをさらに含んでもよい。
【００１６】
受信するステップは、受信した命令が、暗号入出力処理において正しい実行順序の命令であるか否かを判別するステップと、正しい実行順序の命令であると判別されたときに、該命令を正常に受理するステップと、不正な実行順序の命令であると判別されたときに、該命令の実行を拒否するステップと、を含んでもよい。受信した命令が不正な実行順序の命令であると判別されたときに、その命令が属する暗号入出力処理の実行を中止してもよい。
【００１７】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００１８】
【発明の実施の形態】
（第１の実施の形態）
図１は、第１の実施の形態に係るデータ管理システム１０の全体構成を示す。データ管理システム１０は、ストレージデバイス２００へのデータの記録を制御する記録装置１００、ストレージデバイス２００に記録されたデータの再生を制御する再生装置３００、およびデータを記憶保持するストレージデバイス２００を備える。本実施の形態のストレージデバイス２００は、データを保持する記憶媒体だけでなく、記録装置１００または再生装置３００などのホスト装置と記憶媒体との間でのデータの入出力を制御するコントローラなどの構成を備えるドライブ一体型の記憶装置である。本実施の形態では、ストレージデバイス２００として、ハードディスクドライブを例にとって説明する。
【００１９】
従来のハードディスクは、一つのホスト装置に固定的に接続されて使用されるのが一般的であったが、本実施の形態のストレージデバイス２００は、記録装置１００および再生装置３００などのホスト装置に対して着脱自在に構成されている。すなわち、本実施の形態のストレージデバイス２００は、ＣＤやＤＶＤなどと同様にホスト装置から取り外して持ち運ぶことができ、記録装置１００、再生装置３００、記録および再生が可能な記録再生装置など、複数のホスト装置間で共用することが可能な記憶装置である。
【００２０】
このように、本実施の形態のストレージデバイス２００は、複数のホスト装置に接続されることを前提にしており、たとえば所有者以外の第三者のホスト装置に接続されて、内部に記録されたデータを読み出される可能性もある。このストレージデバイス２００に、音楽や映像などの著作権により保護されるべきコンテンツ、企業や個人の機密情報などの秘匿すべきデータを記録することを想定したとき、それらの秘匿データが外部に漏洩することを防ぐためには、ストレージデバイス２００自身にデータを適切に保護するための構成を設け、十分な耐タンパ機能を持たせることが好ましい。このような観点から、本実施の形態のストレージデバイス２００は、ホスト装置との間で秘匿データを入出力するときに、その秘匿データを暗号化してやり取りするための構成を備える。また、秘匿データを格納するために、通常の記録領域とは異なる機密データ記憶領域を設け、その機密データ記憶領域はストレージデバイス２００内に設けられた暗号エンジンを介さないとアクセスできないように構成する。暗号エンジンは正当な権限を有すると認証されたホスト装置にのみ秘匿データを出力する。以下、このようなデータ保護機能を「セキュア機能」ともいう。上記の構成および機能により、ストレージデバイス２００に記録された秘匿データを適切に保護することができる。
【００２１】
ストレージデバイス２００のリムーバブルメディアとしての特徴を最大限に生かすため、通常のデータについては、セキュア機能に非対応のホスト装置でも入出力可能とするのが好ましい。そのため、本実施の形態のストレージデバイス２００は、従来のハードディスクとの互換性を保つべく、ＡＮＳＩ（Ａｍｅｒｉｃａｎ  Ｎａｔｉｏｎａｌ  Ｓｔａｎｄａｒｄｓ  Ｉｎｓｔｉｔｕｔｅ）の標準規格であるＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）に対応しており、上述のセキュア機能は、ＡＴＡの拡張コマンドとして実現される。ＡＴＡはシングルタスクインタフェースを採用しており、一つの命令が発行されると、その命令が終了するまでバスが占有され、次の命令を発行できない。ところが、上述のように、ストレージデバイス２００側にも暗号通信のための構成を設け、秘匿データを暗号化して入出力するようにすると、暗号化および復号などの処理には比較的長い時間を要するため、秘匿データの入出力命令に要する時間は、通常データの入出力命令に要する時間に比べて長くなる。たとえば、秘匿データをストレージデバイス２００から読み出すとき、ストレージデバイス２００に対して読出命令を発行すると、ストレージデバイス２００は、自身の暗号エンジンにより該当する秘匿データを機密データ記憶領域から読み出し、その秘匿データをホスト装置に送出するために用いる暗号鍵をホスト装置との間でやり取りした後、その秘匿データを暗号鍵で暗号化してからバスに出力する。このとき、暗号化および復号などの処理を実行している間は、バスは実際には使われていないにもかかわらず、この命令により占有された状態にある。
【００２２】
本実施の形態では、このような無駄なバスの占有を極力省き、バスを効率良く利用して処理の高速化を図るために、秘匿データの入出力のための一連の暗号入出力処理を複数の手順に分割し、命令を細分化して発行する。そして、暗号化または復号など、バスを使わない処理が行われている間は、できる限りバスを開放して他の命令が発行できるようにする。
【００２３】
ところが、秘匿データを入出力するための暗号入出力処理を複数の手順に分割したとき、それらの手順の実行順序が前後すると、セキュリティホールが発生する恐れがある。そのため、本実施の形態では、ストレージデバイス２００の暗号エンジンは、秘匿データの入出力における命令の実行順序を管理し、不正な順序の命令を受信した場合、その命令の実行を拒否し、エラー応答を返す。また、本実施の形態では、記録装置１００、再生装置３００が、複数の記録または再生処理を並行して実行することを想定し、ストレージデバイス２００の処理能力に応じて複数の処理系を用意する。このとき、それぞれの処理系ごとに命令の実行順序を管理するために、それぞれの処理系の命令に処理系を識別するためのシークエンスＩＤを割り当て、シークエンスＩＤにより、受信した命令がいずれの処理系に属する命令であるかを識別する。
【００２４】
以下、秘匿データの入出力の例として、画像や音楽などのデジタルコンテンツを記録再生する場合について説明する。コンテンツ自身を秘匿データとして扱ってもよいが、本実施の形態では、コンテンツを暗号化し、暗号化されたコンテンツ自身は通常のデータとして入出力を行う。そして、暗号化されたコンテンツを復号するための鍵（コンテンツ鍵と呼ぶ）を含む、コンテンツの復号および利用に必要なデータ（ライセンスデータと呼ぶ）を、秘匿データとして上述のセキュア機能を用いて入出力を行う。これにより、十分な耐タンパ性を維持しつつ、データの入出力を簡略化し、処理の高速化および消費電力の低減を図ることができる。以下、記録装置１００、再生装置３００などのホスト装置がストレージデバイス２００に対して発行する命令のうち、セキュア機能のための命令を「セキュアコマンド」とも呼び、その他の命令を「通常コマンド」とも呼ぶ。
【００２５】
図２は、実施の形態に係る記録装置１００の内部構成を示す。この構成は、ハードウエア的には、任意のコンピュータのＣＰＵ、メモリ、その他のＬＳＩなどで実現でき、ソフトウエア的にはメモリにロードされた記録制御機能のあるプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。記録装置１００は、主に、コントローラ１０１、ストレージインタフェース１０２、暗号エンジン１０３、暗号器１０４、コンテンツエンコーダ１０５、およびそれらを電気的に接続するデータバス１１０を備える。
【００２６】
コンテンツエンコーダ１０５は、オンラインまたはオフラインにより取得したコンテンツを所定の形式にエンコードする。たとえば、ネットワークを介して取得した画像データをＪＰＥＧ形式にエンコードしてもよいし、放送波から取得した映像データをＭＰＥＧ形式にエンコードしてもよい。暗号器１０４は、コンテンツを暗号化するための暗号鍵と、復号するためのコンテンツ鍵を発行し、エンコードしたコンテンツを暗号鍵で暗号化する。暗号化されたコンテンツは、データバス１１０およびストレージインタフェース１０２を介してストレージデバイス２００に記録される。コンテンツ鍵は、暗号エンジン１０３に通知され、暗号エンジン１０３を介してストレージデバイス２００に記録される。暗号エンジン１０３は、コンテンツ鍵を含むライセンスデータをストレージデバイス２００に入力するために、ストレージデバイス２００との間で暗号通信の制御を行う。ストレージインタフェース１０２は、ストレージデバイス２００とのデータの入出力を制御する。コントローラ１０１は、記録装置１００の構成要素を統括的に制御する。
【００２７】
図３は、実施の形態に係る再生装置３００の内部構成を示す。これらの機能ブロックも、ハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。再生装置３００は、主に、コントローラ３０１、ストレージインタフェース３０２、暗号エンジン３０３、復号器３０４、コンテンツデコーダ３０５、およびそれらを電気的に接続するデータバス３１０を備える。
【００２８】
ストレージインタフェース３０２は、ストレージデバイス２００とのデータの入出力を制御する。暗号エンジン３０３は、ライセンスキーを含むライセンスデータをストレージデバイス２００から受信するために、ストレージデバイス２００との間で暗号通信の制御を行う。復号器３０４は、ストレージデバイス２００から読み出した暗号化されたコンテンツを、ストレージデバイス２００から入手したライセンスデータに含まれるライセンスキーにより復号する。コンテンツデコーダ３０５は、復号器３０４により復号されたコンテンツをデコードして出力する。たとえば、画像データであれば、図示しない表示装置に出力し、音声データであれば、図示しないスピーカに出力する。コントローラ３０１は、再生装置３００の構成要素を統括的に制御する。
【００２９】
図４は、実施の形態に係るストレージデバイス２００の内部構成を示す。ストレージデバイス２００は、主に、コントローラ２０１、ストレージインタフェース２０２、暗号エンジン２０３、通常データ記憶部２０４、機密データ記憶部２０５、およびそれらを電気的に接続するデータバス２１０を備える。
【００３０】
ストレージインタフェース２０２は、記録装置１００および再生装置３００とのデータの入出力を制御する。暗号エンジン２０３は、コンテンツ鍵を含むライセンスデータなどの秘匿データを記録装置１００および再生装置３００との間で入出力するための制御を行う。通常データ記憶部２０４は、暗号化されたコンテンツや通常のデータなどを記録する。機密データ記憶部２０５は、コンテンツ鍵を含むライセンスデータなどの秘匿データを記録する。コントローラ２０１は、ストレージデバイス２００の構成要素を統括的に制御する。通常データ記憶部２０４は、外部から直接アクセス（データの入出力）が行われるが、機密データ記憶部２０５は、暗号エンジン２０３により制御され、暗号エンジン２０３を介さないとアクセス（データの入出力）できないように構成される。
【００３１】
図５は、図２に示した記録装置１００の暗号エンジン１０３の内部構成を示す。暗号エンジン１０３は、認証部１２０、第１暗号部１２１、乱数発生部１２２、復号部１２３、第２暗号部１２４、およびこれらの構成要素の少なくとも一部を電気的に接続するローカルバス１３０を備える。
【００３２】
認証部１２０は、ストレージデバイス２００から取得した証明書を認証する。証明書は、公開鍵を含む平文の情報（証明書本体と呼ぶ）と、証明書本体に対して付される電子署名からなる。この電子署名は、証明書本体に対するハッシュ関数による演算結果を、第三者機関である認証局（図示せず）のルート鍵Ｋｐａによって暗号化したデータである。ルート鍵Ｋｐａは、認証局によって厳重に管理されている非公開な鍵であり、認証局の秘密鍵となる。認証部１２０は、このルート鍵Ｋｐａと対をなす認証鍵ＫＰａを保持している。この認証鍵ＫＰａは証明書の正当性を検証する公開鍵である。証明書の正当性の検証は、検証すべき証明書の証明書本体に対するハッシュ関数の演算結果と、認証鍵ＫＰａで電子署名を復号した結果を比較する処理であり、両者が一致したとき、正当であると判断する。この証明書の正当性を判断し、正当な証明書を承認する処理を認証と呼ぶ。認証部１２０は、認証に成功すると、ストレージデバイス２００の公開鍵ＫＰｃを取り出して第１暗号部１２１に伝達し、認証に失敗すると、エラー通知を出力する。
【００３３】
乱数発生部１２２は、ストレージデバイス２００との間で暗号通信を行うために一時的に使用されるチャレンジ鍵Ｋｓ１を発生する。暗号通信を行う度に、乱数によりチャレンジ鍵Ｋｓ１を生成することで、チャレンジ鍵Ｋｓ１を見破られる可能性を最小限に抑えることができる。生成されたチャレンジ鍵Ｋｓ１は、第１暗号部１２１および復号部１２３に伝達される。第１暗号部１２１は、ストレージデバイス２００にチャレンジ鍵Ｋｓ１を通知するために、認証部１２０により取り出されたストレージデバイス２００の公開鍵ＫＰｃでチャレンジ鍵Ｋｓ１を暗号化して、暗号化共通鍵Ｅ（ＫＰｃ、Ｋｓ１）を生成する。ここで、関数Ｅは暗号化を示し、Ｅ（ＫＰｃ、Ｋｓ１）は、ＫＰｃでＫｓ１を暗号化したものであることを示す。
【００３４】
復号部１２３は、チャレンジ鍵Ｋｓ１で暗号化されたデータを復号する。ストレージデバイス２００で発行されたセッション鍵Ｋｓ２は、チャレンジ鍵Ｋｓ１により暗号化されてストレージデバイス２００から供給されるため、復号部１２３は、乱数発生部１２２が発生したチャレンジ鍵Ｋｓ１を取得して、セッション鍵Ｋｓ２を復号する。復号したセッション鍵Ｋｓ２は第２暗号部１２４に伝達される。第２暗号部１２４は、暗号器１０４がコンテンツを暗号化する際に発行したコンテンツ鍵を含むライセンスデータを取得し、そのライセンスデータをストレージデバイス２００で発行されたセッション鍵Ｋｓ２により暗号化する。
【００３５】
図５では、暗号エンジン１０３の構成要素のうち、認証部１２０、第１暗号部１２１、復号部１２３、および第２暗号部１２４がローカルバス１３０により電気的に接続されており、ローカルバス１３０を介して記録装置１００のデータバス１１０に接続されている。各構成要素を接続する形態にはいろいろな変更例が考えられるが、本実施の形態では、チャレンジ鍵を発生する乱数発生部１２２が、直接データバス１１０に接続されないよう配慮している。これにより、暗号エンジン１０３内で使用される各鍵が、記録装置１００の他の構成要素などを介して外部に漏洩することを防ぎ、セキュリティ性を向上させることができる。
【００３６】
図６は、図３に示した再生装置３００の暗号エンジン３０３の内部構成を示す。暗号エンジン３０３は、証明書出力部３２０、第１復号部３２１、暗号部３２２、乱数発生部３２３、第２復号部３２４、およびこれらの構成要素の少なくとも一部を電気的に接続するローカルバス３３０を備える。
【００３７】
証明書出力部３２０は、再生装置３００の証明書を出力する。証明書は、証明書出力部３２０が保持してもよいし、図示しない証明書保持部に保持しておき、それを読み出してもよい。証明書は、再生装置３００の公開鍵ＫＰｂを含む証明書本体と、証明書本体に対して付される電子署名からなる。電子署名は、ストレージデバイス２００の証明書と同様に、認証局のルート鍵Ｋｐａにより暗号化されたデータである。第１復号部３２１は、公開鍵ＫＰｂによって暗号化されたデータを秘密鍵Ｋｐｂで復号する。ストレージデバイス２００で発行されたチャレンジ鍵Ｋｓ３は、再生装置３００の公開鍵ＫＰｂにより暗号化されてストレージデバイス２００から供給されるため、第１復号部３２１は、自身の秘密鍵Ｋｐｂにより復号してチャレンジ鍵Ｋｓ３を取り出す。取り出されたチャレンジ鍵Ｋｓ３は、暗号部３２２に伝達される。乱数発生部３２３は、ストレージデバイス２００との間で暗号通信を行うために一時的に使用されるセッション鍵Ｋｓ４を発生する。生成されたセッション鍵Ｋｓ４は、暗号部３２２および第２復号部３２４に伝達される。
【００３８】
暗号部３２２は、ストレージデバイス２００にセッション鍵Ｋｓ４を通知するために、復号部３２１により取り出されたチャレンジ鍵Ｋｓ３でセッション鍵Ｋｓ４を暗号化する。第２復号部３２４は、セッション鍵Ｋｓ４で暗号化されたデータを復号する。ライセンスデータは、セッション鍵Ｋｓ４により暗号化されてストレージデバイス２００から供給されるため、第２復号部３２４は、乱数発生部３２３が発生したセッション鍵Ｋｓ４により復号して、ライセンスデータを取り出す。取り出されたライセンスデータは、復号器３０４に伝達され、復号器３０４はこのライセンスデータに含まれるコンテンツ鍵を用いて暗号化されたコンテンツを復号する。
【００３９】
図６に示した暗号エンジン３０３においても、各構成要素を接続する形態にはいろいろな変更例が考えられるが、本実施の形態では、チャレンジ鍵を発生する乱数発生部３２３が直接データバス３１０に接続されないように構成することで、暗号エンジン３０３内で使用される暗号鍵が外部に漏洩することを防ぐ。
【００４０】
図７は、図４に示したストレージデバイス２００の暗号エンジン２０３の内部構成を示す。これらの機能ブロックも、ハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。暗号エンジン２０３は、データレジスタ２２０、状態レジスタ２２１、制御部２２２、内部レジスタ２２３、乱数発生部２２４、証明書出力部２２５、認証部２２６、第１復号部２２７、第１暗号部２２８、第２復号部２２９、第２暗号部２３０、およびこれらの構成要素の少なくとも一部を電気的に接続するローカルバス２４０を備える。
【００４１】
データレジスタ２２０は、データ入出力用のレジスタであり、暗号エンジン２０３の外部の構成との間でデータの入出力を仲介する。状態レジスタ２２１は、コントローラ２０１が記録装置１００または再生装置３００から受信したセキュアコマンドの実行を暗号エンジン２０３に指示するための実行指示と、暗号エンジン２０３がセキュアコマンドの処理状態または処理結果などを示す状態情報や、実行中または実行済みの命令の種別を示す実行命令種別などを、コントローラ２０１に通知するための情報を保持する。
【００４２】
ストレージデバイス２００のコントローラ２０１が、記録装置１００または再生装置３００のコントローラからセキュアコマンドを受信すると、状態レジスタ２２１にその命令の実行指示（開始指示）を格納する。たとえば、セキュアコマンドのそれぞれに実行順に番号を付しておき、コントローラ２０１が受信したセキュアコマンドの番号と、そのセキュアコマンドが属する処理系を示すシークエンスＩＤを状態レジスタ２２１に格納することで、暗号エンジン２０３に対してそのコマンドの実行を指示する。制御部２２２は、状態レジスタ２２１に新しい実行指示が格納されると、その処理を開始する。
【００４３】
制御部２２２は、コントローラ２０１から通知された命令の処理状態および処理結果などを示すステータス情報を状態レジスタ２２１に格納する。処理状態は、たとえば、処理が実行されている状態を示す「Ｂｕｓｙ」、処理が実行されていない状態を示す「Ｒｅａｄｙ」の２つのステータスを示すフラグで表現することができ、処理結果は、たとえば、処理が正常に終了したことを示す「Ｎｏｒｍａｌ」、処理が異常終了したことを示す「Ｅｒｒｏｒ」の２つのステータスを示すフラグで表現することができる。状態レジスタ２２１に格納される実行命令種別は、実行指示と同様に、セキュアコマンドに付された番号とすることができる。
【００４４】
内部レジスタ２２３は、セキュアコマンドの実行に必要なテンポラルな秘密情報や命令に対する処理結果を処理系ごとに保持する。すなわち、内部レジスタ２２３は、処理系（シークエンスＩＤ）ごとに秘密情報を保持する領域を備えている。テンポラルな秘密情報には、記録装置１００または再生装置３００との間の暗号通信に使用される鍵や、暗号化されない状態でのライセンスデータなどがある。
【００４５】
コントローラ２０１は、記録装置１００または再生装置３００のコントローラが発行したシークエンスＩＤが付されたセキュアコマンドを受信すると、状態レジスタ２２１を参照して、そのセキュアコマンドが属する処理系の処理状態をチェックし、セキュアコマンドの実行許否を判断する。その処理系の他の命令が実行中でなければ、暗号エンジン２０３に対して、その実行を指示するために、状態レジスタ２２１の実行指示に、受信したシークエンスＩＤと受信したセキュアコマンドの番号を格納する。
【００４６】
制御部２２２は、状態レジスタ２２１を参照し、状態レジスタ２２１に格納されている実行指示に応じて暗号エンジン２０３内の他の構成要素に制御信号を伝達する。まず、制御部２２２は、状態レジスタ２２１から、実行指示として格納されたセキュアコマンドの番号とシークエンスＩＤを取得する。そして、再び、状態レジスタ２２１を参照して、そのセキュアコマンドが属する処理系の処理状態をチェックし、セキュアコマンドの実行許否を判断する。制御部２２２は、その処理系の直前の命令が正常に終了していて、かつ、受信した命令が正しい順序の命令であれば、その命令の実行を許可し、状態レジスタ２２１の実行命令種別をその命令の番号に変更し、状態情報を「Ｂｕｓｙ」に変更する。制御部２２２は、その処理系の直前の命令が実行中か、異常終了か、または、受信した命令が不正な順序の命令であれば、その命令の実行を拒否し、状態レジスタ２２１の状態情報を「Ｅｒｒｏｒ」に変更する。このとき、不正な順序の命令が属する暗号入出力処理を中止してもよい。すなわち、状態レジスタ２２１の実行命令種別を初期化し、その暗号入出力処理は初めからやり直さない限り受け付けないようにしてもよい。これにより、不正なアクセスに対するセキュリティ性をより向上させることができる。なお、直前の命令における処理結果の影響を受けない命令もある。この場合には、その命令の実行は許可される命令もある。
【００４７】
乱数発生部２２４は、記録装置１００または再生装置３００との間の暗号通信に一時的に使用されるセッション鍵Ｋｓ２またはチャレンジ鍵Ｋｓ３を発生する。証明書出力部２２５は、ストレージデバイス２００の証明書を出力する。証明書は、証明書出力部２２５が保持してもよいし、ストレージデバイス２００の所定の記憶領域、たとえば機密データ記憶部２０５に保持しておき、それを読み出してもよい。証明書は、ストレージデバイス２００の公開鍵ＫＰｃを含む証明書本体と、証明書本体に付された電子署名とを含む。電子署名は、認証局のルート鍵Ｋｐａにより暗号化される。認証部２２６は、再生装置３００から取得した証明書を認証する。認証部２２６は、証明書に含まれる電子署名を取り出して、認証鍵ＫＰａで、その正当性を認証する。認証部２２６は、認証に成功すると、証明書に含まれる再生装置３００の公開鍵ＫＰｂを取り出して内部レジスタ２２３に格納し、認証に失敗すると、制御部２２２へエラー通知を出力する。
【００４８】
第１復号部２２７は、公開鍵暗号方式の公開鍵で暗号化されたデータを復号する。具体的には、自身の公開鍵ＫＰｃで暗号化されたデータを、自身の秘密鍵Ｋｐｃで復号する。第１暗号部２２８は、公開鍵暗号方式の公開鍵でデータを暗号化する。具体的には、再生装置３００から受け取った再生装置３００の公開鍵ＫＰｂで、乱数発生部２２４が発行したチャレンジ鍵Ｋｓ３を暗号化する。第２復号部２２９は、共通鍵暗号方式の鍵で暗号化されたデータを復号する。具体的には、乱数発生部２２４が発行したセッション鍵Ｋｓ２またはチャレンジ鍵Ｋｓ３で暗号化されたデータを、それぞれセッション鍵Ｋｓ２またはチャレンジ鍵Ｋｓ３で復号する。第２暗号部２３０は、共通鍵暗号方式の鍵でデータを暗号化する。具体的には、記録装置１００が発行したチャレンジ鍵Ｋｓ１または再生装置３００が発行したセッション鍵Ｋｓ４で、乱数発生部２２４が発行されたセッション鍵Ｋｓ２またはライセンスデータをそれぞれ暗号化する。
【００４９】
つづいて、記録装置１００がストレージデバイス２００にライセンスデータを記録するまでの手順と、再生装置３００がストレージデバイス２００に記録されたライセンスデータを読み出すまでの手順を概説し、その後、本実施の形態に係る複数のシークエンスの並列処理について詳述することにする。
【００５０】
図８および図９は、記録装置１００がストレージデバイス２００にライセンスデータを記録するまでの一連の暗号入出力処理の手順を示す。記録装置１００のコントローラ１０１は、ストレージデバイス２００に暗号入出力処理を実行させるために、ストレージデバイス２００に対してセキュアコマンドを発行する。ストレージデバイス２００のコントローラ１０１は、記録装置１００からセキュアコマンドを受信すると、状態レジスタ２２１を介して、暗号エンジン２０３の制御部２２２にセキュアコマンドの実行を指示する。記録装置１００と暗号エンジン２０３の間でデータを交換する場合も、同様にコントローラ２０１とデータレジスタ２２０を介してデータが交換される。ここでは、説明を簡単にするため、記録装置１００とストレージデバイス２００の暗号エンジン２０３の間で一連の暗号入出力処理が実行されるものとして説明を行う。
【００５１】
まず、記録装置１００のコントローラ１０１と、ストレージデバイス２００の暗号エンジン２０３との間で、シークエンスＩＤを確保する処理が行われる（Ｓ１００）。この処理の詳細については、図１３および図１４において詳述する。ここでは、シークエンスＩＤ「１」が確保されたことにして説明を進める。シークエンスＩＤが確保されると、コントローラ１０１は、暗号エンジン２０３に対して証明書出力命令（シークエンスＩＤ＝１）を発行する（Ｓ１０２）。暗号エンジン２０３が証明書出力命令を正常に受理すると（Ｓ１０４）、制御部２２２は、証明書出力部２２５により証明書を読み出してコントローラ１０１へ送る（Ｓ１０６）。ここで、暗号エンジン２０３が証明書出力命令を正常に受理できなかったときは、暗号エンジン２０３はコントローラ１０１にエラー通知を返すが、この処理の詳細については後述する。
【００５２】
コントローラ１０１は、ストレージデバイス２００から証明書を取得すると、それを記録装置１００の暗号エンジン１０３に送る（Ｓ１０８）。暗号エンジン１０３がストレージデバイス２００の証明書を受信すると（Ｓ１１０）、認証部１２０は、認証鍵ＫＰａで、取得した証明書の正当性を認証する（Ｓ１１２）。証明書が承認されなかった場合は（Ｓ１１２のＮ）、認証部１２０はエラー通知をコントローラ１０１に送信する（Ｓ１９０）。コントローラ１０１は、エラー通知を受信すると（Ｓ１９２）、処理を異常終了する。
【００５３】
証明書が承認された場合は（Ｓ１１２のＹ）、暗号エンジン１０３は、乱数発生部１２２により、チャレンジ鍵Ｋｓ１を発生し（Ｓ１１４）、第１暗号部１２１により、証明書から取り出されたストレージデバイス２００の公開鍵ＫＰｃでチャレンジ鍵Ｋｓ１を暗号化して暗号化共通鍵Ｅ（ＫＰｃ、Ｋｓ１）を生成し、コントローラ１０１へ送る（Ｓ１１６）。コントローラ１０１は、暗号化共通鍵Ｅ（ＫＰｃ、Ｋｓ１）を受信すると（Ｓ１１８）、暗号エンジン２０３に対してチャレンジ鍵入力命令（シークエンスＩＤ＝１）を発行する（Ｓ１２０）。暗号エンジン２０３がチャレンジ鍵入力命令を正常に受理すると（Ｓ１２２）、コントローラ１０１は、暗号化共通鍵Ｅ（ＫＰｃ、Ｋｓ１）を暗号エンジン２０３へ出力する（Ｓ１２４）。暗号エンジン２０３が暗号化共通鍵Ｅ（ＫＰｃ、Ｋｓ１）を受信すると（Ｓ１２６）、制御部２２２により、受信した暗号化共通鍵Ｅ（ＫＰｃ、Ｋｓ１）を第１復号部２２７に与える。第１復号部２２７は、自身の秘密鍵Ｋｐｃで暗号化共通鍵Ｅ（ＫＰｃ、Ｋｓ１）を復号してチャレンジ鍵Ｋｓ１を取り出し（Ｓ１２８）、制御部２２２へ与える。制御部２２２は、内部レジスタ２２３のシークエンスＩＤ＝１の領域にチャレンジ鍵Ｋｓ１（シークエンスＩＤ＝１）を格納する（Ｓ１３０）。
【００５４】
つづいて、コントローラ１０１は、暗号エンジン２０３に対してセッション鍵準備命令（シークエンスＩＤ＝１）を発行する（Ｓ１３２）。暗号エンジン２０３がセッション鍵準備命令を正常に受理すると（Ｓ１３４）、乱数発生部２２４は、セッション鍵Ｋｓ２を発生し、制御部２２２へ与える。制御部２２２は、内部レジスタ２２３のシークエンスＩＤ＝１の領域にセッション鍵Ｋｓ２（シークエンスＩＤ＝１）を格納する（Ｓ１３８）。つづいて、制御部２２２は、内部レジスタ２２３のシークエンスＩＤ＝１の領域からチャレンジ鍵Ｋｓ１（シークエンスＩＤ＝１）を読み出し、乱数発生部２２４が生成したセッション鍵Ｋｓ２（シークエンスＩＤ＝１）と内部レジスタ２２３から読み出したチャレンジ鍵Ｋｓ１（シークエンスＩＤ＝１）とを第２暗号部２３０に与える。第２暗号部２３０は、セッション鍵Ｋｓ２（シークエンスＩＤ＝１）をチャレンジ鍵Ｋｓ１（シークエンスＩＤ＝１）で暗号化して暗号化共通鍵Ｅ（Ｋｓ１、Ｋｓ２）を生成し、内部レジスタ２２３のシークエンスＩＤ＝１の領域に格納する（Ｓ１４０）。
【００５５】
つづいて、コントローラ１０１は、暗号エンジン２０３に対してセッション鍵出力命令（シークエンスＩＤ＝１）を発行する（Ｓ１４２）。暗号エンジン２０３は、セッション鍵出力命令を正常に受理すると（Ｓ１４４）、内部レジスタ２２３のシークエンスＩＤ＝１の領域から暗号化共通鍵Ｅ（Ｋｓ１、Ｋｓ２）を読み出して、コントローラ１０１に出力する（Ｓ１４６）。コントローラ１０１は、ストレージデバイス２００から暗号化共通鍵Ｅ（Ｋｓ１、Ｋｓ２）を受信すると、それを暗号エンジン１０３に送る（Ｓ１４８）。暗号エンジン１０３がコントローラ１０１から暗号化共通鍵Ｅ（Ｋｓ１、Ｋｓ２）を受信すると（Ｓ１５０）、復号部１２３は、乱数発生部１２２が発生したチャレンジ鍵Ｋｓ１で暗号化共通鍵Ｅ（Ｋｓ１、Ｋｓ２）を復号してセッション鍵Ｋｓ２を取り出す（Ｓ１５２）。
【００５６】
つづいて、暗号エンジン１０３は、第２暗号部１２４により、暗号器１０４が発行したコンテンツのコンテンツ鍵を含むライセンスデータを、復号部１２３が取り出したセッション鍵Ｋｓ２で暗号化して暗号化ライセンスデータを生成し、コントローラ１０１に送る（Ｓ１５４）。コントローラ１０１は、暗号化ライセンスデータを受信すると（Ｓ１５６）、暗号エンジン２０３に対してライセンスデータ入力命令（シークエンスＩＤ＝１）を発行する（Ｓ１５８）。暗号エンジン２０３がライセンスデータ入力命令を正常に受理すると（Ｓ１６０）、コントローラ１０１は、暗号化ライセンスデータを暗号エンジン２０３へ出力する（Ｓ１６２）。暗号エンジン２０３が暗号化ライセンスデータを受信すると（Ｓ１６４）、制御部２２２は、受信した暗号化ライセンスデータを第２復号部２２９へ与えるとともに、内部レジスタ２２３のシークエンスＩＤ＝１の領域からセッション鍵Ｋｓ２（シークエンスＩＤ＝１）を読み出して第２復号部２２９へ与える。第２復号部２２９は、セッション鍵Ｋｓ２（シークエンスＩＤ＝１）で暗号化ライセンスデータを復号して、ライセンスデータを取り出す。制御部２２２は、ライセンスデータを内部レジスタ２２３のシークエンスＩＤ＝１の領域へ格納する（Ｓ１６６）。
【００５７】
つづいて、コントローラ１０１は、暗号エンジン２０３に対してライセンスデータ書込命令（シークエンスＩＤ＝１）を発行し、ライセンスデータの書込アドレスを指定する（Ｓ１６８）。暗号エンジン２０３がライセンスデータ書込命令を正常に受理すると（Ｓ１７０）、制御部２２２は、内部レジスタ２２３のシークエンスＩＤ＝１の領域に格納されたライセンスデータを読み出し、機密データ記憶部２０５の指定されたアドレスに格納する（Ｓ１７２）。最後に、コントローラ１０１と暗号エンジン２０３との間で、シークエンスＩＤを開放する処理が行われる（Ｓ１７４）。この処理の詳細については、図１５において詳述する。以上の手順により、コンテンツを復号するためのライセンスデータがストレージデバイス２００に記録される。
【００５８】
本実施の形態では、前述したように、ライセンスデータを記録するための暗号入出力処理を、証明書出力命令（Ｓ１０２）、チャレンジ鍵入力命令（Ｓ１２０）、セッション鍵準備命令（Ｓ１３２）、セッション鍵出力命令（Ｓ１４２）、ライセンスデータ入力命令（Ｓ１５８）、ライセンス書込命令（Ｓ１６８）のセキュアコマンドに分割し、一連の暗号入出力処理にシークエンスＩＤを割り当てる。これにより、複数の暗号入出力処理を並列して実行しても、どの処理系に属するセキュアコマンドなのかを識別可能としているので、セキュアコマンドの実行順序を適切に管理し、かつ、セキュアコマンドによってやり取りされた鍵やデータを処理系ごとに安全に管理することができる。
【００５９】
図１０および図１１は、再生装置３００がストレージデバイス２００からライセンスデータを読み出すまでの手順を示す。図８および図９に示した記録装置１００がストレージデバイス２００にライセンスデータを記録するまでの手順と同様に、再生装置３００のコントローラ３０１が、ストレージデバイス２００に暗号入出力処理を実行させるためにセキュアコマンドを発行したとき、ストレージデバイス２００のコントローラ２０１および状態レジスタ２２１を介して暗号エンジン２０３にコマンドが伝達されるが、ここでは、説明を簡単にするため、再生装置３００と暗号エンジン２０３の間で一連の暗号入出力処理が実行されるものとして説明を行う。
【００６０】
まず、再生装置３００のコントローラ３０１と、ストレージデバイス２００の暗号エンジン２０３との間で、シークエンスＩＤを確保する処理が行われる（Ｓ２００）。この処理の詳細については、図１３および図１４において詳述する。ここでは、シークエンスＩＤ「２」が確保されたことにして説明を進める。シークエンスＩＤが確保されると、再生装置３００の暗号エンジン３０３は、証明書出力部３２０により、証明書をコントローラ３０１へ送る（Ｓ２０２）。コントローラ３０１は、暗号エンジン３０３から証明書を受信すると（Ｓ２０４）、暗号エンジン２０３に対して証明書入力命令（シークエンスＩＤ＝２）を発行する（Ｓ２０６）。暗号エンジン２０３が証明書入力命令を正常に受理すると（Ｓ２０８）、コントローラ３０１は暗号エンジン２０３に証明書を出力する（Ｓ２１０）。ここで、暗号エンジン２０３が証明書入力命令を正常に受理できなかったときは、暗号エンジン２０３はコントローラ３０１にエラー通知を返すが、この処理の詳細については後述する。
【００６１】
暗号エンジン２０３が再生装置３００の証明書を受信すると（Ｓ２１２）、認証部２２６は、認証鍵ＫＰａで取得した証明書の正当性を認証する。（Ｓ２１４）。証明書が承認されなかった場合は（Ｓ２１４のＮ）、認証部２２６はエラー通知をコントローラ３０１に送信する（Ｓ２９０）。コントローラ３０１は、エラー通知を受信すると（Ｓ２９２）、処理を異常終了する。
【００６２】
証明書が承認された場合は（Ｓ２１４のＹ）、制御部２２２は、証明書から再生装置３００の公開鍵ＫＰｂを取り出して、内部レジスタ２２３のシークエンスＩＤ＝２の領域に格納する（Ｓ２１６）。つづいて、コントローラ３０１は、暗号エンジン２０３に対してチャレンジ鍵準備命令（シークエンスＩＤ＝２）を発行する（Ｓ２１８）。暗号エンジン２０３が、チャレンジ鍵準備命令を正常に受理すると（Ｓ２２０）、乱数発生部２２４はチャレンジ鍵Ｋｓ３を発生し、制御部２２２に与える。制御部２２２は、それを内部レジスタ２２３のシークエンスＩＤ＝２の領域に格納する（Ｓ２２２）。そして、制御部２２２は、生成したチャレンジ鍵Ｋｓ３と、内部レジスタ２２３のシークエンスＩＤ＝１の領域から読み出した再生装置３００の公開鍵ＫＰｂ（シークエンスＩＤ＝１）を第１暗号部２２８に与える。そして、第１暗号部２２８は、与えられたチャレンジ鍵Ｋｓ３を再生装置３００の公開鍵ＫＰｂで暗号化して暗号化鍵Ｅ（ＫＰｂ、Ｋｓ３）を生成し、内部レジスタ２２３のシークエンスＩＤ＝２領域に一時格納する（Ｓ２４４）。つづいて、コントローラ３０１は、暗号エンジン２０３に対してチャレンジ鍵出力命令（シークエンスＩＤ＝２）を発行する（Ｓ２２６）。暗号エンジン２０３がチャレンジ鍵出力命令を正常に受理すると（Ｓ２２８）、制御部２２２は、暗号化鍵Ｅ（ＫＰｂ、Ｋｓ３）を内部レジスタ２２３のシークエンスＩＤ＝１の領域から読み出し、コントローラ３０１へ出力する（Ｓ２３０）。
【００６３】
コントローラ３０１は、暗号化共通鍵Ｅ（ＫＰｂ、Ｋｓ３）を受信すると、それを暗号エンジン３０３に送る（Ｓ２３２）。暗号エンジン３０３が暗号化共通鍵Ｅ（ＫＰｂ、Ｋｓ３）を受信すると、第１復号部３２１は、暗号化共通鍵Ｅ（ＫＰｂ、Ｋｓ３）を自身の秘密鍵Ｋｐｂで復号してチャレンジ鍵Ｋｓ３を取り出す（Ｓ２３６）。つづいて、暗号エンジン３０３は、乱数発生部３２３によりセッション鍵Ｋｓ４を発生し（Ｓ２３８）、暗号部３２２によりチャレンジ鍵Ｋｓ３でセッション鍵Ｋｓ４を暗号化して暗号化共通鍵Ｅ（Ｋｓ３、Ｋｓ４）を生成し、コントローラ３０１へ送る（Ｓ２４０）。コントローラ３０１は、暗号化共通鍵Ｅ（Ｋｓ３、Ｋｓ４）を受信すると（Ｓ２４２）、暗号エンジン２０３に対してセッション鍵入力命令（シークエンスＩＤ＝２）を発行する（Ｓ２４４）。暗号エンジン２０３がセッション鍵入力命令を正常に受理すると（Ｓ２４６）、コントローラ３０１は、暗号化共通鍵Ｅ（Ｋｓ３、Ｋｓ４）を暗号エンジン２０３へ出力する（Ｓ２４８）。暗号エンジン２０３が暗号化共通鍵Ｅ（Ｋｓ３、Ｋｓ４）を受信すると（Ｓ２５０）、制御部２２２は、内部レジスタ２２３のシークエンスＩＤ＝２の領域からチャレンジ鍵Ｋｓ３（シークエンスＩＤ＝２）を読み出し、第２復号部２２９に、受信した暗号化共通鍵Ｅ（Ｋｓ３、Ｋｓ４）とチャレンジ鍵Ｋｓ３（シークエンスＩＤ＝２）を与える。第２復号部２２９は、チャレンジ鍵Ｋｓ３（シークエンスＩＤ＝２）で暗号化共通鍵Ｅ（Ｋｓ３、Ｋｓ４）を復号してセッション鍵Ｋｓ４を取り出し（Ｓ２５２）、内部レジスタ２２３のシークエンスＩＤ＝２の領域にセッション鍵Ｋｓ４（シークエンスＩＤ＝２）を格納する（Ｓ２５４）。
【００６４】
つづいて、コントローラ３０１は、暗号エンジン２０３に対してライセンス読出命令（シークエンスＩＤ＝２）を発行し、ライセンスデータの読出アドレスを指定する（Ｓ２５６）。暗号エンジン２０３は、ライセンスデータ読出命令を正常に受理すると（Ｓ２５８）、制御部２２２により、ライセンスデータを機密データ記憶部２０５の指定されたアドレスから読み出して、内部レジスタ２２３のシークエンスＩＤ＝２の領域に一時格納する（Ｓ２６０）。つづいて、コントローラ３０１は、暗号エンジン２０３に対してライセンス準備命令（シークエンスＩＤ＝２）を発行する（Ｓ２６２）。暗号エンジン２０３がライセンスデータ準備命令を正常に受理すると（Ｓ２６４）、制御部２２２は、内部レジスタ２２３のシークエンスＩＤ＝２の領域から、ライセンスデータとセッション鍵Ｋｓ４（シークエンスＩＤ＝２）を読み出し、第２暗号部２３０へ与える。第２暗号部２３０は、セッション鍵Ｋｓ４でライセンスデータを暗号化し、暗号化ライセンスデータを生成して（Ｓ２６６）、内部レジスタ２２３のシークエンスＩＤ＝２の領域に一時格納する。
【００６５】
つづいて、コントローラ３０１は、暗号エンジン２０３に対してライセンス出力命令（シークエンスＩＤ＝２）を発行する（Ｓ２６８）。暗号エンジン２０３は、ライセンスデータ出力命令を正常に受理すると（Ｓ２７０）、暗号化ライセンスデータをコントローラ３０１に出力する（Ｓ２７２）。コントローラ３０１が暗号化ライセンスデータを取得すると（Ｓ２７４）、コントローラ３０１と暗号エンジン２０３との間で、シークエンスＩＤを開放する処理が行われる（Ｓ２７６）。この処理の詳細については、図１５において詳述する。つづいて、コントローラ３０１は、暗号化ライセンスデータを暗号エンジン３０３に送る（Ｓ２７８）。暗号エンジン３０３が暗号化ライセンスデータを受信すると（Ｓ２８０）、第２復号部３２４は、セッション鍵Ｋｓ４で暗号化ライセンスデータを復号する（Ｓ２８２）。得られたライセンスデータは、復号器３０４に送られ、復号器３０４がコンテンツを復号するのに用いられる。以上の手順により、コンテンツを復号するためのライセンスデータが再生装置３００により読み出される。
【００６６】
本実施の形態では、前述したように、ライセンスデータを読み出すための暗号入出力処理を、証明書入力命令（Ｓ２０４）、チャレンジ鍵準備命令（Ｓ２１８）、チャレンジ鍵出力命令（Ｓ２２６）、セッション鍵入力命令（Ｓ２４４）、ライセンス読出命令（Ｓ２５６）、ライセンス準備命令（Ｓ２６２）、ライセンス出力命令（Ｓ２６８）のセキュアコマンドに分割し、一連の暗号入出力処理にシークエンスＩＤを割り当てる。これにより、複数の暗号入出力処理を並列して実行しても、どの処理系に属するセキュアコマンドなのかを識別可能としているので、セキュアコマンドの実行順序を適切に管理し、かつ、セキュアコマンドによってやり取りされた鍵やデータを処理系ごとに安全に管理することができる。
【００６７】
図１２は、ホスト装置とストレージデバイスとの間で並列して処理可能な処理系の数を決定する手順を示す。ストレージデバイス２００が記録装置１００に接続されると、記録装置１００のコントローラ１０１は、ストレージデバイスにデバイス情報出力命令を発行する（Ｓ３００）。ストレージデバイス２００のコントローラ２０１は、記録装置１００のコントローラ１０１からデバイス情報出力命令を受信すると（Ｓ３０２）、デバイス情報を出力する（Ｓ３０４）。デバイス情報として、たとえば、ハードディスクのハードディスクの種類、通常データの記録容量、インタフェースの条件、サポートするコマンドセットなどの情報が通知される。コントローラ１０１は、ストレージデバイス２００のデバイス情報を受信すると（Ｓ３０６）、ストレージデバイス２００がセキュアコマンドセットをサポートしているか否かを判断し（Ｓ３０８）、サポートしていなければ（Ｓ３０８のＮ）、従来のハードディスクと同様に取り扱う。
【００６８】
ストレージデバイス２００がセキュアコマンドセットをサポートしていれば（Ｓ３０８のＹ）、つづいて、コントローラ１０１は、セキュア情報出力命令を発行する（Ｓ３１０）。コントローラ２０１は、セキュア情報出力命令を受信すると（Ｓ３１２）、セキュア情報を出力する（Ｓ３１４）。セキュア情報として、たとえば、セキュアコマンドに用いられる暗号アルゴリズムや証明書に関する情報、セキュアコマンドの実行に要する時間などが通知される。さらに、セキュア情報には、並行して処理可能な処理系の上限、すなわち、利用可能なシークエンスＩＤに関する情報が含まれている。コントローラ１０１は、ストレージデバイス２００のセキュア情報を受信すると（Ｓ３１６）、ストレージデバイス２００において並行して処理可能な処理系の上限や、ストレージデバイスにおける暗号処理時間などのライセンスデータの入出力に関する性能情報をセキュア情報から取り出して、取り出した性能情報と自身の性能に基づき記録装置１００において利用する処理系の数を決定する（Ｓ３１８）。そして、決定した範囲内でライセンスデータの記録を行う。決定された処理系の数は、ストレージデバイス２００に通知されてもよい。
【００６９】
図１３は、暗号入出力処理の実行に先立って、その暗号入出力処理を識別するためのシークエンスＩＤを確保する手順、すなわち、図８のＳ１００、および、図１０のＳ２００における処理の手順を示す。図１３は、記録装置１００のコントローラ１０１または再生装置３００のコントローラ３０１側で、シークエンスＩＤを管理するために必要な情報を得るための処理例を示す。図１３では、記録装置１００とストレージデバイス２００との間でシークエンスＩＤを確保する手順について説明するが、再生装置３００とストレージデバイス２００との間でシークエンスＩＤを確保する場合も同様である。
【００７０】
まず、コントローラ１０１は、図１２の手順で取得した使用可能なシークエンスＩＤの候補の中から、未使用のシークエンスＩＤを選出し（Ｓ４００）、そのシークエンスＩＤを用いて、ストレージデバイス２００に対してシークエンス確保命令を発行する（Ｓ４０２）。ストレージデバイス２００の暗号エンジン２０３は、記録装置１００からシークエンス確保命令（ＩＤ＝ｘ）を受信すると（Ｓ４０６）、状態レジスタ２２１を参照して、そのシークエンスＩＤの処理系の処理状態を確認し、そのシークエンスＩＤが確保可能か否かを判断する（Ｓ４０８）。シークエンスＩＤ＝ｘが既に確保中（状態情報が「Ｂｕｓｙ」、「Ｎｏｒｍａｌ」、「Ｅｒｒｏｒ」の場合）であるか、または、使用可能なシークエンスＩＤの範囲外であったときは（Ｓ４０８のＮ）、コントローラ１０１にエラーを通知する（Ｓ４１２）。シークエンスＩＤ「ｘ」が開放中（状態情報が「Ｒｅａｄｙ」の場合）であれば（Ｓ４０８のＹ）、そのシークエンスＩＤに対応する処理系を確保するために、暗号エンジン２０３にその旨を通知する。制御部２２２は、状態レジスタ２２１の当該シークエンスＩＤに対応する領域を初期化し、状態情報を「Ｎｏｒｍａｌ」に変更する（Ｓ４０８）。そして、シークエンスＩＤを確保した旨をコントローラ１０１に通知する（Ｓ４１０）。コントローラ１０１は、暗号エンジン２０３からの通知を受信すると（Ｓ４１４）、通知の内容を確認する（Ｓ４１６）。シークエンスＩＤを確保した旨の通知であれば（Ｓ４１６のＹ）、処理を終了する。エラー通知であれば（Ｓ４１６のＮ）、使用可能な全てのシークエンスＩＤについて処理が終了しているか否かを判断し（Ｓ４１８）、処理が終了していれば（Ｓ４１８のＹ）、いったん処理を終了し、シークエンスＩＤが開放されるまで待機する。そうでなければ（Ｓ４１８のＮ）、Ｓ４００に戻り、別のシークエンスＩＤを用いてシークエンス確保命令を発行する。
【００７１】
図１４は、暗号入出力処理の実行に先立って、その暗号入出力処理を識別するためのシークエンスＩＤを確保する別の手順を示す。図１４は、ストレージデバイス２００の暗号エンジン２０３側で、使用するシークエンスＩＤを決定する例を示す。図１４でも、記録装置１００とストレージデバイス２００との間でシークエンスＩＤを確保する手順について説明するが、再生装置３００とストレージデバイス２００との間でシークエンスＩＤを確保する場合も同様である。
【００７２】
まず、コントローラ１０１は、ストレージデバイス２００に対してシークエンス確保命令を発行する（Ｓ５００）。ストレージデバイス２００の暗号エンジン２０３は、記録装置１００からシークエンス確保命令を受信すると（Ｓ５０２）、状態レジスタ２２１を参照して、開放中のシークエンスＩＤの有無を確認する（Ｓ５０４）。使用可能な全てのシークエンスＩＤが確保中（状態情報が「Ｂｕｓｙ」、「Ｎｏｒｍａｌ」、「Ｅｒｒｏｒ」）であれば（Ｓ５０４のＮ）、コントローラ１０１にエラーを通知する（Ｓ５１２）。開放中（状態情報が「Ｒｅａｄｙ」）で確保可能なシークエンスＩＤがあれば（Ｓ５０４のＹ）、その中からシークエンスＩＤを選択し（Ｓ５０６）、そのシークエンスＩＤに対応する処理系を確保するために、制御部２２２は状態レジスタ２２１の当該シークエンスＩＤに対応する領域を初期化し、状態情報を「Ｎｏｒｍａｌ」に変更する（Ｓ５０８）。そして、確保したシークエンスＩＤをコントローラ１０１に通知する（Ｓ５１０）。コントローラ１０１は、暗号エンジン２０３からの通知を受信すると（Ｓ５１４）、通知の内容を確認する（Ｓ５１６）。シークエンスＩＤを確保した旨の通知であれば（Ｓ５１６のＹ）、処理を終了する。エラー通知であれば（Ｓ５１６のＮ）、いったん処理を終了し、シークエンスＩＤが開放されるまで待機する。
【００７３】
なお、シークエンスＩＤの確保の手順として、図１３、図１４の２つの手順を示したが、ストレージデバイス２００は、必ずしも両手順に対応している必要はない。いずれか１つに対応していても、両手順に対応していてもよい。
【００７４】
図１５は、シークエンスＩＤを開放する手順を示す。図１５では、記録装置１００がストレージデバイス２００にシークエンスＩＤの開放を要求する手順について説明するが、再生装置３００がストレージデバイス２００シークエンスＩＤの開放を要求する場合も同様である。記録装置１００のコントローラ１０１は、一連の暗号入出力処理の実行が終了すると、そのシークエンスＩＤのシークエンス開放命令を発行する（Ｓ６００）。ストレージデバイス２００の暗号エンジン２０３は、記録装置１００からシークエンス開放命令（ＩＤ＝ｘ）を受信すると（Ｓ６０２）、そのシークエンスＩＤに対応する処理系を開放し（Ｓ６０４）、状態レジスタ２２１の該当するシークエンスＩＤに対する状態情報を「Ｒｅａｄｙ」に変更する。そして、開放した旨を記録装置１００に通知する（Ｓ６０６）。コントローラ１０１は、ストレージデバイス２００から通知を受信すると（Ｓ６０８）、処理を終了する。
【００７５】
図１６は、暗号エンジン２０３が、ホスト装置が発行したセキュアコマンド（以下「シークエンス命令」ともいう）を受理する手順を示す。図１６では、記録装置１００が発行したセキュアコマンドをストレージデバイス２００が受理する手順について説明するが、再生装置３００が発行したセキュアコマンドをストレージデバイス２００が受理する場合も同様である。まず、記録装置１００のコントローラ１０１がシークエンス命令（ＩＤ＝ｘ）を発行する（Ｓ７００）。ストレージデバイス２００の暗号エンジン２０３が記録装置１００からシークエンス命令（ＩＤ＝ｘ）を受信すると（Ｓ７０２）、制御部２２２が状態レジスタ２２１の当該シークエンスＩＤに対する状態情報を参照して、そのシークエンスＩＤに対応する処理系の状態を確認し、命令の実行が可能か否かを判断する（Ｓ７０４）。状態情報によって、そのシークエンスＩＤが開放中であるか、先の命令が異常終了していると確認されたとき、または、使用可能なシークエンスＩＤの範囲外であったときは、命令の実行は不可であると判断され（Ｓ７０４のＮ）、コントローラ１０１にエラーを通知する（Ｓ７１０）。ただし、命令によっては先の命令が異常終了していても命令の実行が可能であると判断されるものもある。たとえば、シークエンス開放命令（図１２のＳ３００、図１３のＳ４０２）、証明書出力命令（図８のＳ１０２）、証明書入力命令（図１０のＳ２０８）などがそれにあたる。
【００７６】
そのシークエンスＩＤの状態情報によって命令の実行が可能であると判断される場合は（Ｓ７０４のＹ）、さらに、制御部２２２は状態レジスタ２２１の当該シークエンスＩＤに対する実行命令種別を参照して、受信したシークエンス命令の発行順が正しいか否かを確認する（Ｓ７０６）。シークエンス命令の順序が不正であれば（Ｓ７０６のＮ）、コントローラ１０１にエラーを通知する（Ｓ７１０）。シークエンス命令の順序が正しければ（Ｓ７０８のＹ）、コントローラ１０１に命令を受理する旨を通知する（Ｓ７０８）。コントローラ１０１は、ストレージデバイス２００からの通知を受信すると（Ｓ７１２）、通知の種類を確認し（Ｓ７１４）、受理通知であれば（Ｓ７１２のＹ）、続けて次の処理に移り、エラー通知であれば（Ｓ７１２のＮ）、異常終了する。
【００７７】
一方、命令を受理したストレージデバイス２００では、当該シークエンスＩＤに対応する処理系の状態情報が「Ｎｏｒｍａｌ」の場合、および、「Ｂｕｓｙ」から「Ｎｏｒｍａｌ」に移行した場合、制御部２２２は、当該シークエンスＩＤに対応する処理系の状態情報を「Ｂｕｓｙ」に、実行命令種別を当該命令の番号に変更し、処理を開始する。状態情報が「Ｂｕｓｙ」から「Ｅｒｒｏｒ」に移行した場合には、受理した命令は実行されない。そして、当該シークエンスＩＤに対応する処理系の次のシークエンス命令を受信した時に、再び図１６の手順によって、当該シークエンスＩＤに対する命令の異常終了が確認され、Ｓ７１０によってエラーが通知される。
【００７８】
暗号エンジン２０３は、不正なシークエンス命令を受信したときに、その処理系の処理を強制終了してもよい。すなわち、状態レジスタ２２１の該当シークエンスＩＤに対応する領域を初期化してもよい。これにより、不正な命令に対して処理を続行する恐れを抑え、耐タンパ性を向上させることができる。この場合、シークエンス命令で何らかのエラーが発生したとき、再度その暗号入出力処理を実行するには、記録装置１００は、最初のシークエンス命令からやり直す必要がある。別の例では、通信ログを記録し、記録された通信ログを参照して正当なシークエンス命令が実行されていたことを認証できた場合は、その次のシークエンス命令から続行できるようにしてもよい。
【００７９】
図１７は、ホスト装置からストレージデバイス２００へ命令が発行される様子を示す。図１７の例では、ホスト装置とストレージデバイス２００との間の暗号入出力処理について３つの処理系が用意されており、ホスト装置は、シークエンスＩＤ＝１、２、および３で識別されるシークエンス命令と、通常命令とを、並行してストレージデバイス２００に対して発行する。ストレージデバイス２００は、受信した命令を次々に処理していくが、図示したように、それぞれの処理系の中では、シークエンス命令をシークエンスＩＤにより識別しつつ、適切に実行順序をチェックして処理を進める。
【００８０】
以上の説明は、シークエンスＩＤで管理される全ての処理系列が、ここまでに記してきた方法に従ってライセンス入出力を行うことを想定したものである。しかし、シークエンスＩＤが割り当てられた個々の処理系列が、各々別個の処理体系に基づいてライセンスの入出力を行えるようにしても良い。これを実現するために、シークエンスＩＤを確保する際、ライセンス入出力を行うための処理体系をホストが指定できるようにする。以下では、ここで指定される処理体系のことを、処理モードと呼ぶ。シークエンスＩＤに処理体系が割り当てられた後では、受信した命令が指定された処理系のものであるか、そしてそれが正しい順序で発行されたものであるかどうかを、ストレージデバイス２００が判断する。これらのどちらか一方の条件でも満たされなかった場合は、ストレージデバイス２００は、受信した命令に対する応答としてエラーを返すか、処理系列を中断する。
【００８１】
（第２の実施の形態）
図１８は、第２の実施の形態に係るデータ管理システム１０の全体構成を示す。本実施の形態では、第１の実施の形態における記録装置１００および再生装置３００が一つの記録再生装置４００として実現されている。
【００８２】
図１９は、本実施の形態に係る記録再生装置４００の内部構成を示す。本実施の形態の記録再生装置４００は、図２に示した第１の実施の形態の記録装置１００の構成と、図３に示した第１の実施の形態の再生装置３００の構成の双方を備えており、同様の構成には同じ符号を付している。第１暗号エンジン１０３は、第１の実施の形態における記録装置１００の暗号エンジン１０３に対応し、第２暗号エンジン３０３は、第１の実施の形態における再生装置３００の暗号エンジン３０３に対応する。第１暗号エンジン１０３の内部構成は、図５に示した第１の実施の形態の暗号エンジン１０３と同様であり、第２暗号エンジン３０３の内部構成は、図６に示した第１の実施の形態の暗号エンジン３０３の内部構成と同様である。コントローラ４０１は、第１の実施の形態における記録装置１００のコントローラ１０１と再生装置３００のコントローラ３０１の双方の機能を有する。ストレージインタフェース４０２は、ストレージデバイス２００とのデータの入出力を制御し、データバス４１０は、記録再生装置４００の構成を電気的に接続する。
【００８３】
本実施の形態の記録再生装置４００の動作も、第１の実施の形態と同様であり、第１の実施の形態で説明した動作において、記録装置１００を記録再生装置４００に、暗号エンジン１０３を第１暗号エンジン１０３に、コントローラ１０１をコントローラ４０１に、再生装置３００を記録再生装置４００に、暗号エンジン３０３を第２暗号エンジン３０３に、コントローラ３０１をコントローラ４０１にそれぞれ置き換えたものと同様である。
【００８４】
図２０は、記録再生装置４００からストレージデバイス２００へ命令が発行される様子を示す。図２０では、図８から図１１に示したライセンスデータの記録および読み出しが並行して実行されている。ストレージデバイス２００は、並行して発行される各種の命令をシークエンスＩＤにより識別しつつ、適切に実行順序をチェックして処理を進める。
【００８５】
（第３の実施の形態）
図２１は、第３の実施の形態に係る記録装置１００の内部構成を示す。本実施の形態では、第１の実施の形態における記録装置１００が、コンテンツを配信する配信サーバ１５０とコンテンツの提供を受ける端末装置１６０として実現されている。配信サーバ１５０は、暗号エンジン１０３、通信装置１５２、コンテンツデータベース１５３、ライセンスデータベース１５４、ユーザデータベース１５５、それらを制御するコントローラ１５１、およびそれらを電気的に接続するデータバス１５６を備える。端末装置１６０は、コントローラ１０１、ストレージインタフェース１０２、通信装置１６２、およびそれらを電気的に接続するデータバス１６６を備える。配信サーバ１５０と端末装置１６０は、それぞれ通信装置１５２および１６２を介して、ネットワークの一例としてのインターネット２０により接続される。配信サーバ１５０の暗号エンジン１０３は、第１の実施の形態の暗号エンジン１０３と同様の機能を有し、端末装置１６０のコントローラ１０１およびストレージインタフェース１０２は、それぞれ第１の実施の形態のコントローラ１０１およびストレージインタフェース１０２と同様の機能を有する。
【００８６】
コンテンツデータベース１５３は、ユーザに提供するコンテンツを保持する。ライセンスデータベース１５４は、コンテンツを暗号化するのに用いられるコンテンツ鍵を含むライセンスデータを保持する。本実施の形態では、コンテンツは既にコンテンツ鍵により暗号化されてコンテンツデータベース１５３に格納されているが、コンテンツデータベース１５３に暗号化される前のコンテンツデータを格納しておき、配信サーバ１５０に第１の実施の形態におけるコンテンツエンコーダ１０５および暗号器１０４をさらに設け、コンテンツデータベース１５３からコンテンツを読み出してエンコードし、暗号化してもよい。ユーザデータベース１５５は、コンテンツを提供するユーザの情報を保持する。たとえば、ユーザの個人情報、端末装置１６０のアドレス、コンテンツの購入履歴、課金情報などを保持してもよい。コントローラ１５１は、ユーザからの要求に応じて暗号化されたコンテンツをコンテンツデータベース１５３から読み出してユーザに提供する。そして、暗号エンジン１０３によりそのコンテンツを復号するためのライセンスデータがユーザに提供されると、そのコンテンツの対価を課金すべくユーザデータベース１５５を更新する。
【００８７】
本実施の形態の暗号入出力処理の手順は、第１の実施の形態と同様である。本実施の形態では、暗号エンジン１０３とコントローラ１０１との間の通信がインターネット２０を介して行われるので、同一装置内で通信が行われる第１の実施の形態に比べてよりデータの漏洩の危険性が増すが、図８から図１１で説明したように、暗号エンジン１０３とコントローラ１０１との間でも必ずデータを暗号化して送受信を行うので、高い耐タンパ性を実現することができる。
【００８８】
図２２は、電源投入後、ストレージデバイス２００にライセンスデータを記憶するまでの一連のＡＴＡインタェース上の手順を示すシーケンス図である。図１２のイニシャル手順と、図１３のシーケンスＩＤの確保、図８および図９のストレージデバイス２００にライセンスデータを記録する手順、図１４のシーケンスＩＤの開放までの一連の処理が正常に推移した場合の例である。
【００８９】
「Ｈｏｓｔ  ＡＴＡ−ＩＦ」は、記録装置１００のストレージインタフェース１０２に、「Ｓｔｏｒａｇｅ  ＡＴＡ−ＩＦ」は、ストレージデバイス２００のストレージインタフェース２０２に相当する。２つのＡＴＡ−ＩＦに挟まれた中央部分には、セキュアコマンドが記載されている。コマンド名の後ろに記載されている（Ｗ）、（Ｒ）、（Ｓ）はコマンドの特性を示すもので、（Ｗ）はデータ列の入力を伴うコマンド、すなわち、命令受理後ストレージデバイス２００からデータ要求があるコマンドであることを示し、（Ｒ）は、逆にデータ列の出力を伴うコマンド、（Ｓ）は、データ列の入出力を伴わないコマンドであることを示す。
【００９０】
また、コマンド「ＩＤＥＮＴＩＦＹ＿ＤＥＶＩＣＥ」、「ＧＥＴ＿ＳＥＣＵＲＩＴＹ＿ＦＥＡＴＵＲＥ」、「ＳＴＡＲＴ＿ＳＥＱＵＥＮＣＥ」、「ＧＥＴ＿ＣＥＲＴＩＦＩＣＡＴＥ」、「ＰＵＴ＿ＣＨＡＬＬＥＮＧＥ＿ＫＥＹ」、「ＣＲＥＡＴＥ＿ＳＥＳＳＩＯＮ＿ＫＥＹ」、「ＧＥＴ＿ＳＥＳＳＩＯＮ＿ＫＥＹ」、「ＰＵＴ＿ＬＩＣＥＮＳＥ」、「ＷＲＩＴＥ＿ＬＩＣＥＮＳＥ」、「ＥＮＤ＿ＳＥＱＵＥＮＣＥ」は、それぞれデバイス情報出力命令、セキュア情報出力命令、シークエンス確保命令、証明書出力命令、チャレンジ鍵入力命令、セッション鍵準備命令、チャレンジ鍵出力命令、ライセンス入力命令、ライセンス書込命令、シークエンス開放命令に相当する。
【００９１】
シークエンスは、ストレージデバイス２００の情報を所得する「Ｉｎｉｔｉａｌｉｚａｔｉｏｎ＿ＳＴＥＰ（イニシャル手順）」と、シークエンスＩＤを確保する「Ｓｔａｒｔ＿ＳＴＥＰ」、ストレージデバイス２００の証明書検証からチャレンジ鍵Ｋｓ１の共有までの「Ａｕｔｈｅｎｔｉｃａｔｉｏｎ＿ＳＴＥＰ」、ライセンスを転送して書き込むまでの「Ｔｒａｎｓｍｉｓｓｉｏｎ＿ＳＴＥＰ」、シークエンスＩＤを開放する「Ｅｎｄ＿ＳＴＥＰ」に区分される。そして、「ＷＲＩＴＥ＿ＬＩＣＥＮＳＥ（ライセンス書込命令）」終了後、ライセンスデータを続けてストレージデバイス２００に記憶するする場合、「Ｔｒａｎｓｍｉｓｓｉｏｎ＿ＳＴＥＰ」を繰り返しても良い。この場合、安全性は損なわれない。また、「Ａｕｔｈｅｎｔｉｃａｔｉｏｎ＿ＳＴＥＰ」から開始しても良い。
【００９２】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００９３】
実施の形態では、暗号エンジン内において暗号化や復号を行う機能ブロックを別に示したが、それらの構成要素において回路を共有してもよい。これにより、ハードウェア規模を抑え、小型化、低消費電力化に寄与することができる。
【００９４】
【発明の効果】
本発明によれば、記録装置とホスト装置との間で秘匿すべきデータを入出力するときの耐タンパ性を向上させることができる。また、本発明によれば、記録装置とホスト装置との間で複数の暗号化入出力処理を並行して実行することができる。
【図面の簡単な説明】
【図１】第１の実施の形態に係るデータ管理システムの全体構成を示す図である。
【図２】第１の実施の形態に係る記録装置の内部構成を示す図である。
【図３】第１の実施の形態に係る再生装置の内部構成を示す図である。
【図４】第１の実施の形態に係るストレージデバイスの内部構成を示す図である。
【図５】図２に示した記録装置の暗号エンジンの内部構成を示す図である。
【図６】図３に示した再生装置の暗号エンジンの内部構成を示す図である。
【図７】図４に示したストレージデバイスの暗号エンジンの内部構成を示す図である。
【図８】記録装置がストレージデバイスにライセンスデータを記録するまでの手順を示す図である。
【図９】記録装置がストレージデバイスにライセンスデータを記録するまでの手順を示す図である。
【図１０】再生装置がストレージデバイスからライセンスデータを読み出すまでの手順を示す図である。
【図１１】再生装置がストレージデバイスからライセンスデータを読み出すまでの手順を示す図である。
【図１２】ホスト装置とストレージデバイスとの間で並列して処理可能な処理系の数を決定する手順を示す図である。
【図１３】暗号入出力処理の実行に先立って、その暗号入出力処理を識別するためのシークエンスＩＤを確保する手順を示す図である。
【図１４】暗号入出力処理の実行に先立って、その暗号入出力処理を識別するためのシークエンスＩＤを確保する手順を示す図である。
【図１５】シークエンスＩＤを開放する手順を示す図である。
【図１６】ストレージデバイスの暗号エンジンが、ホスト装置が発行したセキュアコマンドを受理する手順を示す図である。
【図１７】ホスト装置からストレージデバイスへ命令が発行される様子を示す図である。
【図１８】第２の実施の形態に係るデータ管理システムの全体構成を示す図である。
【図１９】第２の実施の形態に係る記録再生装置の内部構成を示す図である。
【図２０】記録再生装置からストレージデバイスへ命令が発行される様子を示す図である。
【図２１】第３の実施の形態に係る記録装置の内部構成を示す図である。
【図２２】第１の実施の形態に係る記録装置がストレージデバイスにライセンスデータを記録するまでのシークエンスを示す図である。
【符号の説明】
１０・・・データ管理システム、１００・・・記録装置、１０１・・・コントローラ、１０３・・・暗号エンジン、１０４・・・暗号器、１０５・・・コンテンツエンコーダ、１５０・・・配信サーバ、１６０・・・端末装置、２００・・・ストレージデバイス、２０１・・・コントローラ、２０３・・・暗号エンジン、２０４・・・通常データ記憶部、２０５・・・機密データ記憶部、２２１・・・状態レジスタ、２２２・・・制御部、２２３・・・内部レジスタ、３００・・・再生装置、３０１・・・コントローラ、３０３・・・暗号エンジン、３０４・・・復号器、３０５・・・コンテンツデコーダ、４００・・・記録再生装置、４０１・・・コントローラ。
【図１】
2004302701.tif 000003
【図２】
2004302701.tif 000004
【図３】
2004302701.tif 000005
【図４】
2004302701.tif 000006
【図５】
2004302701.tif 000007
【図６】
2004302701.tif 000008
【図７】
2004302701.tif 000009
【図８】
2004302701.tif 000010
【図９】
2004302701.tif 000011
【図１０】
2004302701.tif 000012
【図１１】
2004302701.tif 000013
【図１２】
2004302701.tif 000014
【図１３】
2004302701.tif 000015
【図１４】
2004302701.tif 000016
【図１５】
2004302701.tif 000017
【図１６】
2004302701.tif 000018
【図１７】
2004302701.tif 000019
【図１８】
2004302701.tif 000020
【図１９】
2004302701.tif 000021
【図２０】
2004302701.tif 000022
【図２１】
2004302701.tif 000023
【図２２】
2004302701.tif 000024