(57)【要約】【課題】  初期ベクトルを生成し、データの暗号化や復号を行う。【解決手段】  ＩＶ生成部６２，９２には、リードコマンド１０２に含まれるＬＢＡのデータが供給される。ＩＶ生成部６２（９２）は、供給された４バイトのＬＢＡを、１６ビットのデータに、例えば、ハッシュ関数を用いて変換する。ＩＶ生成部６２により生成された１６バイトのデータは、初期ベクトルＩＶとして暗号化部６１に供給される。同様に、ＩＶ生成部９２により生成された１６バイトのデータは、初期ベクトルＩＶとして復号部９１に供給される。暗号化部６１と復号部９１は、それぞれ供給された初期ベクトルＩＶと、認証処理部５１（８１）から供給されるセッションキーＫｓを用いて、データを暗号化（復号）する。本発明は、所定のインタフェースを介してデータの授受を行うパーソナルコンピュータやドライブ装置に適用できる。【選択図】図４
2005140823.tif 000002
【特許請求の範囲】
【請求項１】
所定の記録媒体へのデータの書き込みを指示するコマンドか、または、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報を取得する取得手段と、
前記取得手段により取得された前記情報から初期ベクトルを生成する生成手段と、
前記生成手段により生成された前記初期ベクトルと所定の鍵を用いた前記データの暗号化、または、復号のうちのどちらか一方を実行する実行手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記取得手段により取得される前記所定の情報は、ＬＢＡ（Logical Block Address）である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
乱数を生成する乱数生成手段を
さらに備え、
前記生成手段は、前記情報と前記乱数生成手段により生成された乱数を用いて、前記初期ベクトルを生成する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記生成手段は、Ｈａｓｈ関数に通された乱数を用いる
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
所定の記録媒体が装着される装置か、その装置と接続されデータの授受を制御する装置の、少なくとも一方を制御する制御方法において、
所定の記録媒体へのデータの書き込みを指示するコマンドか、または、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報を取得する取得ステップと、
前記取得ステップの処理で取得された前記情報から初期ベクトルを生成する生成ステップと、
前記生成ステップの処理で生成された前記初期ベクトルと所定の鍵を用いた前記データの暗号化、または、復号のうちのどちらか一方を実行する実行ステップと
を含むことを特徴とする制御方法。
【請求項６】
所定の記録媒体が装着される装置か、その装置と接続されデータの授受を制御する装置の、少なくとも一方を制御する制御装置のプログラムであって、
所定の記録媒体へのデータの書き込みを指示するコマンドか、または、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報を取得する取得ステップと、
前記取得ステップの処理で取得された前記情報から初期ベクトルを生成する生成ステップと、
前記生成ステップの処理で生成された前記初期ベクトルと所定の鍵を用いた前記データの暗号化、または、復号のうちのどちらか一方を実行する実行ステップと
を含むことを特徴とするプログラム。
【請求項７】
請求項６に記載のプログラムを記録している
ことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法、プログラム、並びに記録媒体に関し、特に、暗号化に関わる処理を実行する際に用いて好適な情報処理装置、制御方法、プログラム、並びに記録媒体に関する。
【背景技術】
【０００２】
さまざまな装置で、デジタルデータを授受することが一般的になりつつあるが、デジタルデータは、不正に利用されても、その質（例えば、画質や音質）が劣化しないため、不正に利用されないための対策が必要とされる。（例えば、特許文献１参照）
【０００３】
そこで、デジタルデータを暗号化し、不正利用を防ぐことが行われている。暗号化の方式は、さまざまなものが提案されている。ここでは、ＣＢＣ（Cipher Block Chaining）方式を例に挙げて、暗号化（復号）の方式について説明する。
【０００４】
暗号化の一方式であるＣＢＣ方式は、ブロック連鎖のための一つの技法であり、排他的論理和演算により、平文の現在のブロックに暗号文の前のブロックを付加して、暗号文の各ブロックを作成する方式である。図１は、ＣＢＣ方式を用い暗号化を行う回路の一例を示す図である。
【０００５】
暗号化すべきデータは、所定の単位（例えば、１６バイト）毎にブロック化される。そして、第１のブロックは、排他的論理和回路１１−１に供給され、第１のブロックに続く第２のブロックは、排他的論理和回路１１−２に供給され、第２のブロックに続く第３のブロックは、排他的論理和回路１１−３に供給されというように、所定の段数（ここでは、Ｎ段とする）だけ設けられた排他的論理和回路１１−１乃至１１−Ｎに順次、ブロック化された平文のデータが入力される。
【０００６】
排他的論理和回路１１−１から出力された第１のブロックは、暗号化部１２−１に供給される。暗号化部１２−１は、鍵Ｅｋで供給された第１のブロックを暗号化する。このようにして、第１のブロックは暗号化される。
【０００７】
暗号化部１２−１から出力された暗号化された第１のブロックは、排他的論理和回路１１−２にも供給され、第２のブロックとの間で排他的論理和が演算される。その結果は、暗号化部１２−２に供給され、同じく鍵Ｅｋで暗号化される。
【０００８】
このように、ＣＢＣ方式における暗号化は、１つ前で暗号化したブロックと暗号化対象の現在の平文のブロックとの排他的論理和が演算されてから、そのブロックに対して所定の暗号化鍵での暗号化が行なわれるようになっている。結果の暗号文は次のブロックとの排他的論理和の演算に使われることになる。このように前のブロックと次々に連鎖させることにより暗号文が生成される。
【０００９】
第２のブロック以降は、前のブロックとの排他的論理和が演算されるが、第１のブロックは、前のブロックが存在しないため、前のブロックとの排他的論理和を演算することができない。そこで、第１のブロックに対しては、初期ベクトル（ＩＶ：Initializing Vector）を与えて排他的論理和を演算するように構成される。
【００１０】
次に、ＣＢＣ方式を用い復号を行う回路について、図２を参照して説明する。
【００１１】
上述したようにして暗号化されたデータは、所定の単位（例えば、１６バイト）毎にブロック化されている。ブロック化されているデータの内、第１のブロックは、復号部２２−１に供給され、第１のブロックに続く第２のブロックは、復号部２２−２に供給され、第２のブロックに続く第３のブロックは、復号部２２−３に供給されというように、所定の段数（ここでは、Ｎ段とする）だけ設けられた復号部２２−１乃至２２−Ｎに順次、暗号化されたブロック単位のデータが入力される。
【００１２】
各復号部２２−１乃至２２−Ｎは、入力されたデータを鍵Ｄｋで復号する。各復号部２２−１乃至２２−Ｎから出力されたデータは、対応する排他的論理和回路２１−１乃至２１−Ｎに供給される。排他的論理和回路２１−２乃至２１−Ｎには、前の段の復号部２２−１乃至２２−Ｎ-1に供給されるデータも供給される。
【００１３】
このように、ＣＢＣ方式の復号は、１つ前の暗号化されているブロックと復号対象の現在の復号されたブロックとの排他的論理和が演算されることにより、最終的な復号が行われる。
【００１４】
第２のブロック以降は、前のブロックとの排他的論理和が演算されるが、第１のブロックは、前のブロックが存在しないため、前のブロックとの排他的論理和を演算することができない。そこで、第１のブロックに対しては、初期ベクトルＩＶを与えて、排他的論理和が演算される構成とされている。
【００１５】
このようにして、暗号化、復号が行われている。
【特許文献１】特許第３２５２７０６号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１６】
上述したように、ＣＢＣ方式で暗号化が行われる際、最初のブロックにはＩＶが加えられる。しかしながら、最初のブロックには、前のブロックが存在しないので、何も加えないで（ＩＶを加えないで）後段の処理を行うようにしても良いが、そのようにすると以下のような問題点がある。
【００１７】
例えば、電子メールを例に挙げて考える。電子メールの書式には、宛先、送信元、件名、本文といったような一連のパターンがある。そのようなパターンがあるようなデータ（平文）を暗号化した場合、暗号化されたデータ自体もパターンがあるデータとなってしまう。第３者（攻撃者）が、そのようなパターンに注目することにより、暗号文から平文の一部を解読することが可能である。
【００１８】
そこで、パターンがあるような平文でも、暗号化されたデータ（暗号文）にパターンがないようにするために、最初のブロックに初期ベクトルＩＶを加えるようにする。初期ベクトルＩＶを加えて暗号化を実行することにより、平文のブロックに同じパターンがあっても暗号文には同じパターンが発生しないので、暗号解読を困難にさせることが出来る。また、単一の鍵で大量のデータを暗号化した場合に暗号鍵が予測しやすくなる、という解読行為を、初期ベクトルＩＶを加えて暗号化を行うよういすることで防止することができるという効果もある。
【００１９】
このような理由で最初のブロックに初期ベクトルＩＶが加えられ、その後の暗号化が行われるように構成されている場合が多い。
【００２０】
ところで、所定の記録媒体からデータを読み出すドライブと、そのドライブからのデータの供給を受けるホスト（例えば、パーソナルコンピュータ）の間で、相互認証してセッション鍵を生成し、そのセッション鍵でデータを暗号化して転送する場合がある。このような状況に対して上述したＣＢＣ方式を用いることが可能である。そのような場合、初期ベクトルＩＶを適当に更新させることで、平文のデータが特別なパターンのデータであることを特定させることを困難とし、データのすり替え、データの改竄行為を防止することができるとされている。
【００２１】
ホストとドライブが認証を行うような場合、例えば、そのデータは、（初期ベクトルＩＶ＋コンテンツ・データ）という形のデータが形成され、コンテンツ鍵と初期ベクトルＩＶで暗号鍵が導出され、その暗号鍵でコンテンツデータが暗号化される。
【００２２】
しかしながら、このような読み出しデータ（コンテンツ・データ）に初期ベクトルＩＶを付加することは、例えば ２０４８バイト単位のPC Drive Interface に２０６４バイト(ＩＶ＝１６バイトの場合）という特殊なセクタサイズを持ち込むことになり、標準的なフォーマットから外れてしまうこととなる。そのために、共通の ATAPI Device Driver を利用できないなど、パーソナルコンピュータにおける環境との相性がよくないといった課題があった。相性が良くないといったことを解決するためには、ハードウェア的に、ソフトウェア的にも特殊なものに変えなくてはならないなど、コスト的に割高になり、互換性を取りづらい、処理的に手間がかかるといった課題もあった。
【００２３】
本発明はこのような状況に鑑みてなされたものであり、できる限り既存のものを用いつつも、セキュリティを高めることを目的とする。
【課題を解決するための手段】
【００２４】
本発明の情報処理装置は、所定の記録媒体へのデータの書き込みを指示するコマンドか、または、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報を取得する取得手段と、取得手段により取得された情報から初期ベクトルを生成する生成手段と、生成手段により生成された初期ベクトルと所定の鍵を用いたデータの暗号化、または、復号のうちのどちらか一方を実行する実行手段とを備えることを特徴とする。
【００２５】
前記取得手段により取得される所定の情報は、ＬＢＡ（Logical Block Address）であるようにすることができる。
【００２６】
乱数を生成する乱数生成手段をさらに備え、前記生成手段は、前記情報と乱数生成手段により生成された乱数を用いて、初期ベクトルを生成するようにすることができる。
【００２７】
前記生成手段は、初期ベクトルＩＶに対するＬＢＡの語長の不足分をパディングした値と生成された乱数との排他的論理和を用いる方法があり、パディングの方法はＬＢＡの連結による方法、ＬＢＡをＨａｓｈ関数を通す方法、などがあり、乱数の使い方は、初期ベクトルＩＶと同じ語長の乱数を生成して、その乱数をそのまま用いる方法や、Ｈａｓｈ関数に通された乱数を用いるようにする方法などがある。
【００２８】
本発明の制御方法は、所定の記録媒体が装着される装置か、その装置と接続されデータの授受を制御する装置の、少なくとも一方を制御する制御方法であって、所定の記録媒体へのデータの書き込みを指示するコマンドか、または、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報を取得する取得ステップと、取得ステップの処理で取得された情報から初期ベクトルを生成する生成ステップと、生成ステップの処理で生成された初期ベクトルと所定の鍵を用いたデータの暗号化、または、復号のうちのどちらか一方を実行する実行ステップとを含むことを特徴とする。
【００２９】
本発明のプログラムは、所定の記録媒体が装着される装置か、その装置と接続されデータの授受を制御する装置の、少なくとも一方を制御する制御装置のプログラムであって、所定の記録媒体へのデータの書き込みを指示するコマンドか、または、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報を取得する取得ステップと、取得ステップの処理で取得された情報から初期ベクトルを生成する生成ステップと、生成ステップの処理で生成された初期ベクトルと所定の鍵を用いたデータの暗号化、または、復号のうちのどちらか一方を実行する実行ステップとを含むことを特徴とする。
【００３０】
本発明の記録媒体は、前記プログラムを記録していることを特徴とする。
【００３１】
本発明の情報処理装置、制御方法、およびプログラムにおいては、所定の記録媒体に対して何らかの操作を実行する際に発行されるコマンドに含まれる情報が用いられて、データの暗号化や復号に用いられる初期ベクトルが生成される。
【発明の効果】
【００３２】
本発明によれば、セキュリティを高めることが可能となる。
【００３３】
本発明によれば、ホスト側とドライブ側との間での転送路上におけるセキュリティを高めることが可能となる。
【００３４】
また、セキュリティを高めるためのホスト側のオペレーションシステム（ＯＳ）などに依存することなく、その為にコスト高になったり、煩わしい処理を行うことになるといった不都合を回避することができ、かつ、セキュリティを向上させることが可能となる。
【発明を実施するための最良の形態】
【００３５】
以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００３６】
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
【００３７】
本発明によれば、情報処理装置が提供される。この情報処理装置（例えば、図３のドライブ装置３１またはホスト３２）は、所定の記録媒体へのデータの書き込みを指示するコマンド（例えば、ライトコマンド１０４）か、または、所定の記録媒体からのデータの読み出しを指示するコマンド（例えば、リードコマンド１０２）に含まれる所定の情報を取得する取得手段（例えば、図４のＬＢＡ抽出部１６１）と、取得手段により取得された情報から初期ベクトルを生成する生成手段（例えば、図４のＩＶ生成部９２）と、生成手段により生成された初期ベクトルと所定の鍵を用いたデータの暗号化、または、復号のうちのどちらか一方を実行する実行手段（例えば、図４の復号部９１）とを備える。
【００３８】
この情報処理装置の取得手段が取得する所定の情報は、ＬＢＡ（Logical Block Address）であるようにすることができる。
【００３９】
この情報処理装置は、乱数を生成する乱数生成手段（例えば、図１８の乱数生成部２４１）をさらに備え、前記生成手段は、前記情報と乱数生成手段により生成された乱数を用いて、初期ベクトルを生成するようにすることができる。
【００４０】
前記生成手段は、例えば、図３０のＨａｓｈ処理部４５１による処理により、Ｈａｓｈ関数に通された乱数を用いるようにすることができる。
【００４１】
また、本発明によれば制御方法が提供される。この制御方法は、所定の記録媒体が装着される装置（例えば、図３のドライブ装置３１）か、その装置と接続されデータの授受を制御する装置（例えば、図３のホスト３２）の、少なくとも一方を制御する制御方法であって、所定の記録媒体へのデータの書き込みを指示するコマンドか、または、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報を取得する取得ステップ（例えば、図９のステップＳ４２）と、取得ステップの処理で取得された情報から初期ベクトルを生成する生成ステップ（例えば、図９のステップＳ４２）と、生成ステップの処理で生成された初期ベクトルと所定の鍵を用いたデータの暗号化、または、復号のうちのどちらか一方を実行する実行ステップ（例えば、図９のステップＳ４５）とを含む。
【００４２】
さらに、本発明によればプログラムが提供される。このプログラムは、所定の記録媒体が装着される装置か、その装置と接続されデータの授受を制御する装置の、少なくとも一方を制御する制御装置のプログラムであって、所定の記録媒体へのデータの書き込みを指示するコマンドか、または、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報を取得する取得ステップ（例えば、図９のステップＳ４２）と、取得ステップの処理で取得された情報から初期ベクトルを生成する生成ステップ（例えば、図９のステップＳ４２）と、生成ステップの処理で生成された初期ベクトルと所定の鍵を用いたデータの暗号化、または、復号のうちのどちらか一方を実行する実行ステップ（例えば、図９のステップＳ４５）とを含む。
【００４３】
このプログラムは、記録媒体に記録することができる。
【００４４】
以下に、本発明の実施の形態について図面を参照して説明する。
【００４５】
図３は、本発明を適用したシステムの一実施の形態の構成を示す図である。図３に示したシステムは、記録および再生を行える記録再生装置の構成を示している。また、図３に示したシステムは、図示されていないメディアが装着され、その装着されたメディアから所定のデータを読み出す、または、書き込むドライブ装置３１と、読み出されたデータ、または、書き込むデータを処理（制御）するホスト３２から構成されている。
【００４６】
メディアは、どのようなものでも良いが、例えば、CD-ROM ( Compact Disc-ROM )、CD-R（Compact Disc-Recordable）、CD-RW ( Compact Disc-ReWritable )、DVD-R ( Digial Versatile Disc-Recordable )、DVD-RW (Digital Versatile Disc-Rerecordable )、DVD+R ( DVD+Recordable )、DVD+RW ( DVD+ReWritable )、DVD-RAM（Digital Versatile Disk-Random Access Memory）、Blu-Ray Discなどのディスク状のものが考えられる。また、それらのディスク状のものに本発明を適用範囲は限定されるものではなく、他の形態（記録方式、形状など）の記録媒体でも良い。
【００４７】
また、ドライブ装置３１とホスト３２は、所定のインタフェースによりデータの授受が行えるように接続されている。所定のインタフェースとは、例えば、ＡＴＡＰＩ（AT Attachement with Packet Interface）を用いることができる。ＡＴＡＰＩは、ＩＤＥ（Integrated Drive Electronics）や、ＡＴＡ（AT Attachement）インタフェースにＣＤ−ＲＯＭドライブなどハードディスク以外の周辺機器を接続するためのデータ転送方式に従ったインタフェースであり、例えばＳＣＳＩから流用したコマンドをパケット化してＩＤＥインタフェースに渡すことで周辺機器の制御が可能となる。同様のコマンドパケットはＵＳＢ ( Universal Serial Bus ) や IEEE1394 などの物理インタフェースへも適用可能である。
【００４８】
まず、ドライブ装置３１は、認証処理部５１を有し、ホスト３２は、認証処理部８１を有する。認証処理部５１と認証処理部８１により、相互認証に関わる処理が実行される。
【００４９】
所定のメディアからデータを読み出す再生部４１は、ドライブ装置３１の暗号化部６１、ＩＶ（Initialization Vector）生成部６２、および、メディア読み出し処理部６３を含み、ホスト３２の復号部９１とＩＶ生成部９２を含む構成とされている。
【００５０】
再生部４１のドライブ装置３１側の構成について説明を加える。暗号化部６１には、メディア読み出し処理部６３による処理により、メディアから読み出されたセクタデータ７１と、認証処理部５１から暗号化に用いる鍵Ｋｓが供給される。また、暗号化部６１には、ＩＶ生成部６２により生成されたＩＶ（Initialization Vector：以下、初期ベクトルＩＶと記述する）も供給される。
【００５１】
暗号化部６１は、供給されたセクタデータ７１を鍵Ｋｓと初期ベクトルＩＶを用いて暗号化し、ホスト３２の復号部９１に供給する。よって、ドライブ装置３１からホスト３２に供給されるデータは、暗号化されたものである。
【００５２】
ＩＶ生成部６２は、暗号化部６１に供給する初期ベクトルＩＶを、ホスト３２から供給されるリードコマンド（Read Command）１０２に含まれる所定のデータを用いて生成する。この初期ベクトルＩＶの生成に関する詳細は後述する。
【００５３】
なお、暗号化部６１は、図１に示したように、排他的論理和回路１１と暗号化部１２とを組み合わせることにより構成される。その説明は既にしたので、ここでは省略する。ＩＶ生成部６２は、図１における排他的論理和回路１１−１に供給される初期ベクトルＩＶを生成する。また、認証処理部５１から供給される鍵Ｋｓは、暗号化部１２−１乃至１２−Ｎの各部に供給される。
【００５４】
ホスト３２に備えられている暗号化部９３も、図１に示した構成とされている。
【００５５】
一方、ホスト３２の復号部９１は、ドライブ装置３１からインタフェースを介して暗号化されたセクタデータ７１の供給をうける。復号部９１は、認証処理部８１から供給される鍵ＫｓとＩＶ生成部９２により生成された初期ベクトルＩＶを用いて復号処理を実行し、セクタデータ１０１（メディアから読み出されたセクタデータ７１と同一のデータ）を生成する。ＩＶ生成部９２は、基本的に、ＩＶ生成部６２と同様の処理により初期ベクトルＩＶを生成する。すなわち、リードコマンド１０２に含まれる所定のデータを用いて初期ベクトルＩＶが生成される。
【００５６】
なお、復号部９１は、図２に示したように、排他的論理和回路２１と暗号化部２２とを組み合わせることにより構成される。その説明は既にしたので、ここでは省略する。ＩＶ生成部９２は、図２における排他的論理和回路２１−１に供給される初期ベクトルＩＶを生成する。また、認証処理部５１から供給される鍵Ｋｓは、復号部２２−１乃至２２−Ｎの各部に供給される。
【００５７】
ドライブ装置３１に備えられている復号部６４も、図２に示した構成とされている。
【００５８】
次に記録部４２の構成について説明を加える。所定のメディアにデータを記録する記録部４２は、ドライブ装置３１の復号部６４、ＩＶ生成部６５、およびメディア書き込み処理部６６を含み、ホスト３２の暗号化部９３とＩＶ生成部９４を含む構成とされている。
【００５９】
ドライブ装置３１に装着されたメディアに記録されるセクタデータ１０３は、記録部４２の暗号化部９３に供給される。暗号化部９３には、認証処理部８１から鍵Ｋｓと、ＩＶ生成部９４から初期ベクトルＩＶも供給される。暗号化部９３は、供給されたセクタデータ１０３を初期ベクトルＩＶと鍵を用いて暗号化し、ドライブ装置３１の復号部６４に供給する。
【００６０】
ホスト３２の暗号化部９３に供給される初期ベクトルＩＶは、ＩＶ生成部９４により生成される。ＩＶ生成部９４は、ライトコマンド（Write Command）１０４に含まれるデータを用いて初期ベクトルＩＶを生成する。
【００６１】
ライトコマンド１０４は、ドライブ装置３１のメディア書き込み処理部６６にも供給される。メディア書き込み処理部６６は、ライトコマンド１０４が供給された場合、装着されているメディアに対するデータの書き込みを制御する。また、ライトコマンド１０４は、ドライブ装置３１のＩＶ生成部６５にも供給される。
【００６２】
ＩＶ生成部６５は、ＩＶ生成部９４と同様に、供給されたライトコマンド１０４に含まれる所定のデータを用いて初期ベクトルＩＶを生成し、復号部６４に供給する。復号部６４には、ホスト３２側から暗号化されたセクタデータ１０３、認証処理部５１から鍵Ｋｓ、および、ＩＶ生成部６５から初期ベクトルＩＶが供給される。
【００６３】
復号部６４は、鍵Ｋｓと初期ベクトルＩＶを用いて、供給された暗号化されたセクタデータ１０３を復号し、セクタデータ７２（セクタデータ１０３と同一のデータ）を生成する。このようにして復号されたセクタデータ７２は、メディア書き込み処理部６６の制御のもと、図示されていないメディアに書き込まれる。
【００６４】
図３に示した各部は、ハードウェアで構成しても良いし、ソフトウェアで構成しても良い。
【００６５】
以下に、ＩＶ生成部においてどのように初期ベクトルＩＶを生成するかについて複数の実施の形態を説明する。まず、第１の実施の形態について説明する。図４は、再生部４１の詳細な構成を示す図である。図３と同様の部分には、同様の符号を付し、適宜説明を省略する。他の図面に関しても、図３と同様の部分には、同様の符号を付し、適宜説明を省略する。
【００６６】
図４に示したドライブ装置３１には、メディアから読み出されるＰＳＮ（Physical Sector Number：物理セクタ番号）が、PSN/LBA変換部１２１に供給される構成とされている。ＬＢＡは、Logical Block Addressの略であり、論理的なアドレスを示し、例えば、リードコマンド１０２に含まれ、メディア上の読み出すべきデータの物理媒体に依存せずにホストとドライブ間で共通的に扱うことを可能とする論理的なアドレスを示す。リードコマンド１０２には、ＬＢＡが含まれるが、このＬＢＡは、メディア上の論理的なアドレスを示し、実際の物理的なアドレスは示していないため、物理媒体から読み出した物理的なアドレスを示すＰＳＮから共通に扱える論理的なアドレスへ変換するといった処理を、PSN/LBA変換部１２１は行う。
【００６７】
ドライブ装置３１は、バッファリング・転送処理部１２２も追加された構成とされている。このバッファリング・転送処理部１２２は、暗号化部６１により暗号化されたセクタデータ７１を、一旦記憶（バッファリング）し、ホスト３２側に転送するための処理を実行する。このバッファリング・転送処理部１２２を設けることにより、一般に先読み動作などと称されるRead Ahead動作を実現することができる。
【００６８】
このような先読み動作を行えるように構成しておくことで、ホスト３２側から読み出しの要求を出した際（リードコマンド１０２を発行した際）、ドライブ装置３１側で、時間のかかるメディアへのアクセス時間を、事実上無視できるように扱うことが可能となり、連続読み出し速度を向上させることが可能となる。
【００６９】
ドライブ装置３１は、リードコマンド処理部１２３も設けられている。このリードコマンド処理部１２３は、ホスト３２側から供給されるリードコマンド１０２を処理するために設けられており、処理結果は、バッファリング・転送処理部１２２とメディア読み出し処理部６３に供給される構成とされている。
【００７０】
ホスト３２には、ＬＢＡ抽出部１６１が追加された構成とされている。ＬＢＡ抽出部１６１は、リードコマンド１０２に含まれるＬＢＡを抽出し、ＩＶ生成部９２に供給する。図４に示した再生部４１においては、初期ベクトルＩＶが、リードコマンド１０２に含まれるデータから生成される場合の構成を示している。
【００７１】
ここで、セクタデータ７１やＰＳＮ１４１が読み出されるメディアについて説明する。図５は、メディアがディスク状のものである場合のデータ構造について説明するための図である。図５に示すように、ディスク１８０は内周からリードインエリア１８１、ユーザデータエリア１８２、およびリードアウトエリア１８３という記録領域を有している。
【００７２】
読出し専用メディアとして、例えば DVD-ROM disc の物理規格はＥＣＭＡ規格 “ ECMA-267 : 120mm DVD-Read Only Disk “ に定義されており、ＰＳＮは２ＫＢの各セクタデータのヘッダに記録される。
【００７３】
書き込み可能メディアとして、例えば DVD+RW disc の物理規格はＥＣＭＡ規格 “ ECMA-337 : Data Interchange on 120mm and 80mm Optical Disk using +RW format  Capacity 4,7 and 1,6 GB per Side “ に定義されており、未記録ディスクにおけるＰＳＮは ADIP (Address in Pre-grove) へ予め記録され、２ＫＢの各セクタデータを書き込む際にADIPへ記録されているものと同じＰＳＮをヘッダへも記録することで DVD-ROM disc とのデータ互換性をとることを可能とする仕組みとなっている。
【００７４】
これらの DVD 規格でのリードインエリア１８１は PSN=02FFFFhまでであり、ユーザデータエリア１８２は PSN=030000h から開始され、ここが LBA=000000h と定義される。この変換を行う PSN/LBA 変換部１２１の変換方法に関し、INCITS T10 WORKING DRAFT “MultiMedia Command Set-4 (MMC-4)” において各種光ディスクメディアにおける方法が記述されている。
【００７５】
ユーザデータエリア１８２には、オーディオデータ、静止画データ、ビデオデータトラックやゲームデータなどのコンテンツ自体が記録される。ユーザが自由に読み出し書き込みできるセクタデータ７１は、このユーザデータエリア１８２内のセクタデータである。リードアウトエリア１８３は、ユーザデータエリア１８２の終端であることを示す領域である。
【００７６】
ディスク１８０のリードインエリア１８１、ユーザデータエリア１８２、リードアウトエリア１８３は、図６に示すように、セクタヘッダ１９１とセクタデータ１９２から構成されている。ここでは、セクタヘッダ１９１は、１８バイトのデータであり、セクタデータ１９２は、２０４８バイトのデータとする。このような、セクタヘッダ１９１とセクタデータ１９２の組み合わせによるデータが複数、各データエリアに記録されている。
【００７７】
ドライブ装置３１側には、このようなディスク１８０から読み出されるデータが供給されるわけだが、ホスト３２は、図７に示すようなコマンドをドライブ装置３１へ転送してドライブ装置３１を制御する。コマンドの詳細はINCITS T10 WORKING DRAFT “MultiMedia Command Set-4 (MMC-4)” に記述がある。図７に示したコマンドは、リードコマンド１０２またはライトコマンド１０４の形式を示すものである。図７に示したコマンド内のデータのうち、以下の説明に必要な部分のデータについて説明を加える。
【００７８】
“Operation Code”には、リードコマンド１０２であるか、ライトコマンド１０４であるかを示すデータが書き込まれる。よって、この部分に書き込まれているデータを参照することで、ホスト３２からコマンドを受け取ったドライブ装置３１は、リードコマンド１０２であるか、ライトコマンド１０４であるかを判別することが可能となっている。また、“Operation Code”は、１バイトのデータである
【００７９】
“Logical Block Address”には、リードコマンド１０２である場合には、読み出すべきアドレスの開始ＬＢＡが書き込まれ、ライトコマンド１０４である場合には、書き込むべきアドレスの開始ＬＢＡが書き込まれている。また、“Logical Block Address”は、４バイトのデータである。
【００８０】
“Transfer Length”には、リードコマンド１０２である場合には、読み出しセクタ数を指示するデータが書き込まれ、ライトコマンド１０４である場合には、書き込みセクタ数を指示するデータが書き込まれる。また、“Transfer Length”は、４バイトのデータである。
【００８１】
本実施の形態においては、このようなデータを含むリードコマンド１０２またはライトコマンド１０４から初期ベクトルＩＶが生成される。
【００８２】
ＬＢＡとセクタデータの関係について図８を参照して説明する。ＬＢＡは、上述したように、リードコマンド１０２やライトコマンド１０４に含まれているが、例えば、リードコマンド１０２に含まれるＬＢＡが示すのは読み出し開始位置である“開始ＬＢＡ”である。ドライブ装置３１は最初のセクタデータとしては、“開始ＬＢＡ＋０”のデータを、ディスク１８０から読み出しホスト３２へ転送することになる。ここで、リードコマンド１０２に含まれる Transfer Length が“３”の場合、引き続いて“開始ＬＢＡ＋１”のセクタデータをディスク１８０から読み出しホスト３２へ転送し、続いて“開始ＬＢＡ＋２”のセクタデータがディスク１８０から読み出されホスト３２へ転送して、リードコマンド１０２は完了することになる。
【００８３】
メディア（ディスク１８０）から読み出されるデータは、上述したセクタデータ１９２（図６）であるので、そのバイト数は、２０４８バイトである。このように、１つのＬＢＡが指定されると、１つのセクタデータの固まり（２０４８バイト単位のデータ）を指定することができるように構成されている。
【００８４】
次に、図４に示した再生部４１において行われる処理の概要について、まず、図９のタイミングチャートを参照して説明する。ホスト３２は、ステップＳ１１において、ドライブ装置３１は、ステップＳ４１において、それぞれ相互認証（Authentication）を行う。この相互認証が正常に行われた場合のみ、次のステップに処理が進められる。また、この相互認証の結果、ドライブ装置３１の認証処理部５１とホスト３２の認証処理部８１との、それぞれにおいて鍵Ｋｓが生成される（共有される）ことになる。
【００８５】
ホスト３２は、ステップＳ１２において、リードコマンド１０２を発行する。図７に示したデータ構成のコマンドが発行されるわけだが、ここでは、“ＬＢＡ”＝＃１であり、“Transfer Length”＝３であるコマンドが発行されたとする。もちろんこの場合、“Operation Code”には、リードコマンド１０２であることを示すデータが記述されている。
【００８６】
このようなデータを含むリードコマンド１０２は、ＬＢＡ抽出部１６１に供給される。ＬＢＡ抽出部１６１は、この場合、“ＬＢＡ”＝＃１というデータを抽出する。抽出された“ＬＢＡ”＝＃１というデータは、ＩＶ生成部９２に供給される。ＩＶ生成部９２は、供給された“ＬＢＡ”＝＃１というデータ（特に＃１というデータ）を用いて、初期ベクトルＩＶを生成する。ここでは、“ＬＢＡ”＝＃１というデータが用いられて初期ベクトルＩＶが生成するという説明にとどまり、詳細は後述するとして説明を続ける。
【００８７】
ステップＳ１２における処理で発行されたリードコマンド１０２は、ステップＳ４２において、ドライブ装置３１のリードコマンド処理部１２３にも供給される。リードコマンド処理部１２３は供給されたコマンドの“Operation Code”を参照し、リードコマンド１０２であることを認識し、“Logical Block Address”を参照し、この場合、“ＬＢＡ”＝＃１ということを認識し、“Transfer Length”を参照して、この場合、“Transfer Length”＝３ということを認識する。
【００８８】
そして、リードコマンド処理部１２３は、転送開始ＬＢＡを示す“ＬＢＡ”＝＃１と“Transfer Length”＝３というデータをバッファリング・転送処理部１２２に供給する。バッファリング・転送処理部１２２は、このようなデータの供給を受けることにより、ＬＢＡ”＝＃１からの転送要求があり、転送するセクタ数は、３単位であると設定する。
【００８９】
また、リードコマンド処理部１２３は、“ＬＢＡ”＝＃１というデータを、メディア読み出し処理部６３に供給する。メディア読み出し処理部６３は、メディアからデータを読み出す処理を制御するわけだが、ここに明示されないLBA/PSN変換によりリードコマンド１０２で指定されたLBAに対応するPSNを取得する。
【００９０】
即ち、リードコマンド１０２には、メディア（例えば、ディスク１８０（図５））から読み出すデータが記録された論理セクタ（群）のＬＢＡ（以下、適宜、読み出しＬＢＡという）が含まれ、そのリードコマンド１０２に含まれる読み出しＬＢＡがＰＳＮに変換される。
【００９１】
このような変換が行われるのは、ドライブ装置３１で行われるのは、光ディスク等の記録領域を所定のサイズに分けた物理的な物理セクタが、論理的な論理セクタに割り当てられているからである。そして、外部の装置（この場合、ホスト３２）からは、データを読み出すべき（または記録すべき）論理セクタ（ＬＢＡ）が指定され、ドライブ装置３１では、その論理セクタに割り当てられている物理セクタ（ＰＳＮ）からデータが読み出される（記録される）ようになされているからである。
【００９２】
なお、ディスク１８０上のユーザに開放された記録領域であるユーザデータエリア１８２の物理セクタに対して、例えば、ある物理セクタ番号の物理セクタを基準として、シーケンシャルな論理セクタ番号の論理セクタが、順次割り当てられる。変換方法の事例はINCITS T10 WORKING DRAFT “MultiMedia Command Set-4 (MMC-4)” に記述がある。
【００９３】
ＬＢＡがＰＳＮに変換されると、ステップＳ４３の処理として、その変換されたＰＳＮが指し示すメディア上の位置が検索される。この検索の結果、ピックアップがメディア上の、読み出すべき位置に移動されるなどの処理が実行され、メディアからデータが読み出される。
【００９４】
ステップＳ９２において、メディアから、データが読み出されるわけだが、この場合、“ＬＢＡ”＝＃１に対応するデータである“Physical Sector Data ＃１”が読み出される。ステップＳ４４において、メディアから読み出されたデータ（セクタデータ７１）は、暗号化部６１に供給される、と同時にそのセクタデータに対応するＰＳＮ１４１がPSN/LBA変換部１２１へ供給される。
【００９５】
PSN/LBA変換部１２１から出力されるＬＢＡは、ＩＶ生成部６２へ供給され、ＩＶ生成部６２は初期ベクトルＩＶを出力する。同時にＬＢＡはバッファリング・転送処理部１２２へも入力され、バッファリング・転送処理部１２２はＬＢＡに対応するセクタデータが暗号化部６１から受け取る用意をする。
【００９６】
暗号化部６１には、認証処理部５１から鍵が供給され、ＩＶ生成部６２から初期ベクトルＩＶも供給されている。暗号化部６１は、これらの鍵と初期ベクトルＩＶを用いて、セクタデータ７１を暗号化する。暗号化されたセクタデータ７１（この場合、Encrypted Sector Data ＃１）は、ステップＳ４５の処理として、バッファリング・転送処理部１２２を経由してホスト３２の復号部９１に供給される。
【００９７】
復号部９１は、供給されたデータを、認証処理部８１から供給される鍵ＫｓとＩＶ生成部９２から供給される初期ベクトルＩＶを用いて復号し、セクタデータ１０１を生成する。このようにして生成されたセクタデータ１０１は、図示されていないアプリケーションソフトウェアやディスプレイやスピーカに提供される。
【００９８】
このような処理がメディア、ドライブ装置３１、および、ホスト３２間で繰り返される。メディア側では、ステップＳ９３乃至Ｓ１０３の各処理で、順次、Physical Sector Data ＃２乃至＃１２が読み出される。すなわち、メディア側からは、ドライブ装置３１の検索制御に応じて順次、連続的にセクタデータが読み出され、ドライブ装置３１に供給される。ドライブ装置３１は、ステップＳ４６乃至Ｓ５０の各ステップの処理において、順次、供給されたセクタデータを受信し、暗号化し、ホスト３２の要求に応じてホスト３２に供給する。
【００９９】
ステップＳ１５において、ホスト３２がステップＳ１２で要求する最後のセクタデータ“Physical Sector Data ＃３”がドライブ装置３１からホスト３２へ供給されると、ドライブ装置３１は、ステップＳ５１において、ホスト３２に対して“Command Complete Status”を送信する。これは、この場合、“Transfer Length”が“３”に設定されおり、ステップＳ１５の処理が行われる時点で、既に“Physical Sector Data”として“＃１”乃至“＃３”の３つのセクタデータが送信済みの状態であるためである。このような状況のときには、既に要求されたデータは送信（転送）したということを示すステータスを、ドライブ装置３１はホスト３２に対して送信する。
【０１００】
なお、ドライブ装置３１は、ホスト３２に対して“Command Complete Status”を送信する一方で、メディアから読み出されているセクタデータを受信し続けているわけだが、その受信し続けられているセクタデータは、順次、暗号化部６１による暗号化が施され、バッファリング・転送処理部１２２にバッファリングされる。
【０１０１】
ステップＳ１６の処理として、“Command Complete Status”を受信したホスト３２は、ステップ１７において、新たなリードコマンド１０２を発行する。ステップＳ１７において発行されるリードコマンド１０２は、“ＬＢＡ”＝＃４であり、“Transfer Length”＝３である。このようなリードコマンド１０２が発行されると、ステップＳ５０において、バッファリング・転送処理部１２２にバッファリングされていた“Physical Sector Data ＃４”がステップＳ５５においてホスト３２に供給される。
【０１０２】
このように、ホスト３２においてリードコマンド１０２が発行されると、ドライブ装置３１においてメディアから読み出されたデータが順次、ホスト３２側に供給されるという処理が繰り返される。ドライブ装置３１側のステップＳ５０以降の各処理と、ホスト３２側のステップＳ１８以降の各処理は、既に説明したステップＳ４４乃至Ｓ４９、Ｓ５１における各処理と、ステップＳ１３乃至Ｓ１６における各処理と、基本的に同様であるので、その説明は省略する。
【０１０３】
図１０を参照し、再度、ドライブ装置３１側の処理およびデータの流れについて説明する。まず、PSN/LBA変換部１２１により、４バイトで構成されるＬＢＡが、ＩＶ生成部６２に供給される。ＩＶ生成部６２は、例えばＨａｓｈ関数を用いて１６バイトへデータ拡張し、初期ベクトルＩＶを生成する。生成された初期ベクトルＩＶは、暗号化部６１に供給される。
【０１０４】
暗号化部６１には、認証処理部５１から鍵Ｋｓも供給される。このように、暗号化部６１には、初期ベクトルＩＶと鍵Ｋｓが供給される。さらに、暗号化部６１には、暗号すべきデータとして、２０４８バイトのSector Dataも供給される。暗号化部６１により暗号化された２０４８バイトのSector Dataは、Encrypted Sector Dataとして、バッファリング・転送処理部１２２にバッファリングされる。
【０１０５】
暗号化部６１には、２０４８バイトのデータが供給され、暗号化され、そして、２０４８バイトの暗号化されたデータが出力されるとしたが、例えば、暗号化部６１が行う暗号化が、ＣＢＣ（Cipher Block Chaining）方式を用いたものである場合、実際には１６バイトに分割されたブロック毎に暗号化が行われ、出力される。
【０１０６】
図１１は、ＣＢＣ方式に基づき暗号化部６１が暗号化を行う場合の、暗号化部６１の内部構成例を示すとともに、データの流れを示す図である。内部構成は、上述したように、図１に示したものと同様に、排他的論理和回路と暗号化部の組み合わせにより構成されている。よって、図１と同じ符号を付し、説明を続ける。
【０１０７】
図１１に示すように、２０４８バイトのSector Dataは、１６バイト（Byte）毎のデータに分割される。１６バイト毎に分割されるので、結果的に、１２８個のブロックに分割されることになる。図１を参照して既に説明したように、各ブロックは、対応する排他的論理和回路１１−１乃至１１−１２８に供給される。そして、各排他的論理和回路１１−１乃至１１−１２８から出力されたデータは、対応する暗号化部１２−１乃至１２−１２８に供給される。
【０１０８】
暗号化部１２−１乃至１２−１２８により暗号化されたデータは、Encrypted Sector Dataとして、バッファリング・転送処理部１２２に出力される。暗号化部１２−１乃至１２−１２７から出力されたデータは、後段の排他的論理和回路１１−２乃至１１−１２８にも供給される。しかしながら、排他的論理和回路１１−１には、前段の暗号化部が存在していないため、前段から供給されるデータはない。そのために、ＩＶ生成部６２により生成された初期ベクトルＩＶが、排他的論理和回路１１−１に供給される構成とされている。
【０１０９】
供給される初期ベクトルＩＶは、リードコマンド１０２に含まれるＬＢＡで指定される各セクタのＬＢＡが用いられるため、リードコマンド１０２が発行される毎に、各セクタに対応する異なる初期ベクトルＩＶが生成されることになる。例えば、図９を再度参照するに、ホスト３１側からステップＳ１２において発行されるリードコマンド１０２のＬＢＡは“＃１”であるが、ステップＳ１７において発行されるリードコマンド１０２のＬＢＡは“＃４”である。よって、“＃１”という値のＬＢＡと“＃４”という値のＬＢＡが用いられて生成される初期ベクトルＩＶは、当然異なるものとなる。
【０１１０】
また、初期ベクトルＩＶは、ＬＢＡがそのまま流用されるのではなく、ハッシュ関数などを用いてデータ拡張し乱数との排他的論理和を用いて加工されて生成することにより、同一の初期ベクトルＩＶが生成される確率を低くすることができる。（その説明の詳細は後述する。）仮に同一のSector Dataを暗号化したとしても、初期ベクトルＩＶが異なるために（初期ベクトルＩＶが同一のものとなる可能性を低くすることができるために）、暗号化されたものは異なるデータとすることができる。もって、暗号化される前のSector Dataが、暗号化されたデータから推測されてしまう（解読されてしまう）ようなことを防ぐことが可能となる。
【０１１１】
また、リードコマンド１０２で示されるパラメータから初期ベクトルＩＶを生成することで、例えば、２０４８バイト単位で処理を行うPC Drive Interface や、ATAPI Device Driverといった既存のインタフェースなどを利用できなくなるといったような不都合が発生するようなことを防ぐことが可能となる。すなわち、本発明を適用して初期ベクトルＩＶを生成するようにすれば、既存のインタフェース、例えば、ＡＴＡＰＩなどのインタフェースの規格を変更することなく、上記したような特徴を有する初期ベクトルＩＶを生成することが可能である。
【０１１２】
次に、図１２を参照し、再度、ホスト３２側の処理およびデータの流れについて説明する。まず、ＬＢＡ抽出部１６１より、リードコマンド１０２から４バイトで構成されるＬＢＡが抽出され、ＩＶ生成部９２に供給される。ＩＶ生成部９２は、例えばＨａｓｈ関数を用いて１６バイトへデータ拡張し、初期ベクトルＩＶを生成する。
【０１１３】
ＩＶ生成部９２の初期ベクトルＩＶの生成の仕方は、ドライブ装置３１のＩＶ生成部６２と、基本的に同様である。すなわち、例えば、ＩＶ生成部６２がハッシュ関数を用いて初期ベクトルＩＶを生成するならば、ＩＶ生成部９２も、ハッシュ関数を用いて初期ベクトルＩＶを生成する。ＩＶ生成部９２により生成された初期ベクトルＩＶは、復号部９１に供給される。
【０１１４】
復号部９１には、認証処理部８１から鍵Ｋｓも供給される。この鍵Ｋｓは、ドライブ装置３１の認証処理部５１が、暗号化部６１に供給する鍵Ｋｓと同様のものである。認証処理の過程で生成された鍵を、鍵Ｋｓとして用いることができる。
【０１１５】
このように、復号部９１には、初期ベクトルＩＶと鍵Ｋｓが供給される。さらに、復号部９１には、復号すべきデータとして、２０４８バイトのEncrypted Sector Dataも供給される。復号部９１により復号された２０４８バイトのEncrypted Sector Dataは、Sector Dataとして、図示されていないアプリケーションソフトウェアやディスプレイなどに供給される。
【０１１６】
復号部９１には、２０４８バイトのデータが供給され、復号され、そして、２０４８バイトの復号されたデータが出力されるとしたが、暗号化部６１と同様に、例えば、復号部９１が行う暗号化が、ＣＢＣ（Cipher Block Chaining）方式を用いたものである場合、実際には１６バイトに分割されたブロック毎に復号が行われ、出力される。
【０１１７】
図１３は、ＣＢＣ方式に基づき復号部９１が復号を行う場合の、復号部９１の内部構成例を示すとともに、データの流れを示す図である。内部構成は、上述したように、図２に示したものと同様に、排他的論理和回路と復号部の組み合わせにより構成されている。よって、図２と同じ符号を付し、説明を続ける。
【０１１８】
図１３に示すように、２０４８バイトのEncrypted Sector Dataは、１６バイト（Byte）毎のデータに分割される。１６バイト毎に分割されるので、結果的に、１２８個のブロックに分割されることになる。図２を参照して既に説明したように、各ブロックは、対応する復号部２２−１乃至２２−１２８に供給される。そして、各復号部２２−１乃至２２−１２８から出力されたデータは、対応する排他的論理和回路２１−１乃至２１−１２８に供給される。
【０１１９】
排他的論理和回路２１−１乃至２１−１２８により排他的論理和が演算されたデータは、Sector Dataとして、図示されていないディスプレイなどに出力される。復号部２２−１乃至２２−１２７に供給されるデータ（Encrypted Sector Data）は、後段の排他的論理和回路２１−２乃至２１−１２８にも供給される。しかしながら、排他的論理和回路２１−１には、前段の復号部が存在していないため、前段から供給されるデータはない。そのために、ＩＶ生成部９２により生成された初期ベクトルＩＶが、排他的論理和回路２１−１に供給される構成とされている。
【０１２０】
この供給される初期ベクトルＩＶは、ドライブ装置３１の暗号化部６１で暗号化を行う際に用いられた初期ベクトルＩＶと同一のものである。すなわち、ＩＶ生成部６２とＩＶ生成部９２は、同一のリードコマンド１０２から抽出されたＬＢＡを用い、同一の方式により初期ベクトルＩＶを生成するため、暗号化部６１と復号部９１には、同一の初期ベクトルＩＶが供給されることになる。
【０１２１】
次に、メディアにデータを書き込む場合について説明する。図１４は、記録部４２の詳細な構成を示す図である。図３と同様の部分には、同様の符号を付し、適宜説明を省略する。
【０１２２】
ホスト３２には、ＬＢＡ抽出部２１１が追加された構成とされている。ＬＢＡ抽出部２１１は、ライトコマンド１０４に含まれるＬＢＡを抽出し、ＩＶ生成部９４に供給する。図１４に示した記録部４２においては、ライトコマンド１０４に含まれるＬＢＡから初期ベクトルＩＶが生成される場合の構成を示している。
【０１２３】
ＬＢＡは論理的なアドレスを示し、メディア上のデータを書き込むアドレスを示す。ライトコマンド１０４には、ＬＢＡが含まれるが、このＬＢＡは、メディア上の論理的なアドレスを示し、実際の物理的なアドレスは示していないため、物理的なアドレスを示すＰＳＮに変換するといった処理が、ドライブ装置３１側では必要となり、その処理は図示されないが、ドライブ装置３１の、メディア書き込み処理部６６に備える構成とされる。
【０１２４】
ドライブ装置３１は、バッファリング・転送処理部２０２も追加された構成とされている。このバッファリング・転送処理部２０２は、ホスト３２側から供給されたデータを書き込むセクタを示すＬＢＡがわかるように一旦記憶（バッファリング）し、メディア書き込み処理部６６によるメディア書き込み位置の検索処理、および復号部６４が処理をするタイミングで、順次データを供給する。ドライブ装置３１は、ライトコマンド処理部２０３も設けられている。このライトコマンド処理部２０３は、ホスト３２側から供給されるライトコマンド１０４を処理するために設けられており、処理結果としての書き込み開始セクタを示すＬＢＡと書き込みセクタ数を示す Transfer Length は、バッファリング・転送処理部２０２とメディア書き込み処理部６３に供給される構成とされている。
【０１２５】
図１４に示した記録部４２の構成のうち、まず、ホスト３１において行われる処理について、図１５を参照して説明する。まず、ＬＢＡ抽出部２１１によりライトコマンド１０４から、４バイトで構成されるＬＢＡが抽出され、ＩＶ生成部９４に供給される。ＩＶ生成部９４は、例えば、Ｈａｓｈ関数を用いて１６バイトへデータ拡張し、初期ベクトルＩＶを生成する。生成された初期ベクトルＩＶは、暗号化部９３に供給される。
【０１２６】
暗号化部９３には、認証処理部８１から鍵Ｋｓも供給される。このように、暗号化部９３には、初期ベクトルＩＶと鍵Ｋｓが供給される。さらに、暗号化部９３には、暗号すべきデータとして、２０４８バイトのSector Dataも供給される。この供給されるSector Dataは、ホスト３２側に備えられている記録装置などから読み出されたものである。暗号化部９３により暗号化された２０４８バイトのSector Dataは、Encrypted Sector Dataとして、ドライブ装置３１側に提供される。
【０１２７】
このような処理を行う暗号化部９３は、既に説明をした暗号化部６１と同様の構成とすることができる。すなわち、その構成は、図１１に示したような構成とすることができる。
【０１２８】
次に、図１６を参照し、ホスト３２側で暗号化されたデータに関わる処理のについて説明する。まず、ライトコマンド処理部２０３により、ライトコマンド１０４から４バイトで構成されるＬＢＡが、ＩＶ生成部６５に供給される。ＩＶ生成部６５は、例えばＨａｓｈ関数を用いて１６バイトへデータ拡張し、初期ベクトルＩＶを生成する。
【０１２９】
ＩＶ生成部６５の初期ベクトルＩＶの生成の仕方は、ホスト３２のＩＶ生成部９４と、基本的に同様である。すなわち、例えば、ＩＶ生成部６４がハッシュ関数を用いて初期ベクトルＩＶを生成するならば、ＩＶ生成部６５も、ハッシュ関数を用いて初期ベクトルＩＶを生成する。ＩＶ生成部６５により生成された初期ベクトルＩＶは、復号部６４に供給される。
【０１３０】
復号部６４には、認証処理部５１から鍵Ｋｓも供給される。この鍵Ｋｓは、ホスト３２の認証処理部８１が、暗号化部９３に供給する鍵Ｋｓと同様のものである。認証処理の過程で生成された鍵を、鍵Ｋｓとして用いることができる。
【０１３１】
このように、復号部６４には、初期ベクトルＩＶと鍵Ｋｓが供給される。さらに、復号部６４には、復号すべきデータとして、２０４８バイトのEncrypted Sector Dataも供給される。復号部６４により復号された２０４８バイトのEncrypted Sector Dataは、Sector Dataとして、図示されていないメディアに書き込まれる。
【０１３２】
このような処理を行う復号部６４は、既に説明をした復号部９１と同様の構成とすることができる。すなわち、その構成は、図１３に示したような構成とすることができる。
【０１３３】
次に、初期ベクトルＩＶの生成について説明する。上述した実施の形態においては、リードコマンド１０２やライトコマンド１０４に含まれるＬＢＡのデータが用いられ、また、ハッシュ関数などが用いられて、初期ベクトルＩＶが生成されるとして説明したが、ここで、さらに具体的に説明を加える。図３を再度参照するに、初期ベクトルＩＶを生成する部分は、ＩＶ生成部６２、ＩＶ生成部６５、ＩＶ生成部９２、および、ＩＶ生成部９４の４箇所ある。
【０１３４】
これらの４箇所のＩＶ生成部における初期ベクトルＩＶの生成の仕方は、いずれも同様であるので、ここでは代表として、ＩＶ生成部６２を例に挙げて説明する。
【０１３５】
図１７は、ＩＶ生成部６２の内部構成例を示す図である。図１７に示したＩＶ生成部６２は、ＳＨＡ−１処理部２２１と切り出し部２２２から構成されている。ＳＨＡ−１処理部２２１について説明するが、ＳＨＡは、Secure Hash Algorithmの略である。
【０１３６】
ＳＨＡは、米国ＮＩＳＴ（National Institute of Standard and Technology）で開発され、数度にわたる改訂が行われている。そして、１９９５年にFIPS180-1として改訂版が出されたが、これは俗に、ＳＨＡ−１と称されている。ＳＨＡに関する詳細は、例えば、ウィリアム・スターリングス著の「暗号とネットワークセキュリティ」といった書籍に記載されている。
【０１３７】
ＳＨＡ−１は、その名の通り、ハッシュ関数を用いた処理を行うアルゴリズムであり、任意のバイト数（ただし、最大長が（２の６４乗）ビット以下という条件がある）のメッセージを入力とし、１６０ビットのメッセージダイジェストを出力する。
【０１３８】
このように、ＳＨＡ−１は、入力として任意のバイト数のメッセージを用いることができるので、例えば、任意の論理フォーマット情報やATAPI Command Packetに含まれる任意の数値を、入力として用いることができる。そこで、図１７に示したように、ＳＨＡ−１に基づく処理を実行するＳＨＡ−１処理部２２１の入力として、４バイトのデータであるＬＢＡを用いる。
【０１３９】
上述したように、ＳＨＡ−１による処理で出力されるメッセージダイジェストは、１６０ビット（２０バイト）である。すなわちこの場合、ＳＨＡ−１処理部２２１から出力されるのは、１６０ビットのデータである。しかしながら、初期ベクトルＩＶとして必要なのは１６バイトのデータである。そこで、ＳＨＡ−１処理部２２１から出力された１６０ビットのデータから、１２８ビット（１６バイト）のデータを切り出す切り出し部２２２を、ＳＨＡ−１処理部２２１の後段に設ける。
【０１４０】
切り出し部２２２から出力されるデータが、この場合、初期ベクトルＩＶとされる。このように、ＳＨＡ−１処理部２２１と切り出し部２２２から構成されるＩＶ生成部６２により、初期ベクトルＩＶが生成される。
【０１４１】
このようにして初期ベクトルＩＶを生成するのは一実施の形態であり、限定を示すものではない。そこで、他の実施の形態について、図１８以降の図を順次参照しながら、さらに説明を続ける。
【０１４２】
図１８以降の図を参照して説明する実施の形態においては、初期ベクトルＩＶを生成するのに、ＬＢＡだけでなく乱数も用いて生成する。まず、乱数を用いて初期ベクトルＩＶを生成する場合における特徴について説明を加える。
【０１４３】
既に説明した実施の形態においては、リードコマンド１０２やライトコマンド１０４に含まれる４バイトのＬＢＡを用いて初期ベクトルＩＶを生成した。しかしながら、初期ベクトルＩＶは、１６バイトのデータであるので、４バイトのＬＢＡをハッシュ関数を利用することにより１６バイトへとデータ拡張する方法を説明した。
【０１４４】
ところで、ＬＢＡは、セクタ毎に配置されるものである。よって、メディアに対するデータの読み書きが実施されるセクタ間隔で、ＩＶ生成部によりハッシュ関数に基づく演算が行われることになる。ドライブ装置３１とホスト３２にとって、ハッシュ関数に基づく演算を比較的高頻度で実行しなくてはならないというのは、負荷が増すことになり、何らかの不都合が発生することが想定される。例えば、ＩＶ生成部による初期ベクトルＩＶの生成のためにメディアに対するデータの書き込みや、データの読み出しにかかる時間が増すといった不都合が発生することが考えられる。データ拡張をする方法としてＬＢＡが４バイトであるという特徴をいかし、ＬＢＡを４回繰り返して１６バイトへデータ拡張することも可能であるが、ＩＶが予測可能であることはセキュリティ強度を維持する上で好ましいこととはいえない。
【０１４５】
以下に説明する、乱数を用いた初期ベクトルＩＶの生成においては、ＬＢＡのようにセクタごとに処理が必要とされるものに対しては、排他的論理和（EX-OR）を演算するなどの、比較的時間のかからない処理にとどめ、システム全体の処理速度が低下するようなことがないようにし、かつ生成されるＩＶの予測を困難としてセキュリティ強度を向上させることを目的とする。
【０１４６】
図１８は、初期ベクトルＩＶを生成する際、ＬＢＡだけでなく乱数も用いて生成する場合の再生部４１の構成例を示す図である。また、図１９は、初期ベクトルＩＶを生成する際、乱数も用いて生成する場合の記録部４２の構成例を示す図である。図１８に示した再生部４１のうち、図４に示した再生部４１と同様の部分には同様の符号を付し、適宜その説明を省略する。また、図１９に示した記録部４２のうち、図１４に示した記録部４２と同様の部分には同様の符号を付し、適宜その説明を省略する。以下の説明においても、再生部４１または記録部４２の構成を示す図面があるが、それらの図面においても同様であるとする。
【０１４７】
図１８と図１９にそれぞれ示した再生部４１と記録部４２は、ドライブ装置３１側で乱数を生成する場合の構成を示している。
【０１４８】
図１８に示した再生部４１においては、乱数も用いて初期ベクトルＩＶを生成するために、その乱数を生成する乱数生成部２４１がドライブ装置３１に備えられている。乱数生成部２４１において生成された乱数は、ドライブ装置３１のＩＶ生成部２４２と、ホスト３２のＩＶ生成部２５１に供給される。ＩＶ生成部２４２とＩＶ生成部２５１は、共に、リードコマンド１０２から読み出されるＬＢＡと、乱数生成部２４１により生成される乱数により、初期ベクトルＩＶを生成する。
【０１４９】
図１９に示した記録部４２においては、乱数も用いて初期ベクトルＩＶを生成するために、その乱数を生成する乱数生成部２７１がドライブ装置３１に備えられている。乱数生成部２７１において生成された乱数は、ドライブ装置３１のＩＶ生成部２７２と、ホスト３２のＩＶ生成部２８１に供給される。ＩＶ生成部２７２とＩＶ生成部２８１は、共に、ライトコマンド１０４から読み出されるＬＢＡと、乱数生成部２７１により生成される乱数により、初期ベクトルＩＶを生成する。
【０１５０】
図１８や図１９に示したように、乱数を生成する乱数生成部２４１（２７１）を、ドライブ装置３１側に設けるようにしても良いが、ホスト３２側に設けるようにしても良い。図２０、図２１は、ホスト３２側に乱数を生成する乱数生成部が設けた場合の再生部４１および記録部４２の構成例を示す図である。
【０１５１】
図２０に示した再生部４１においては、乱数を生成する乱数生成部３０１がホスト３２に備えられている。乱数生成部３０１において生成された乱数は、ホスト３２のＩＶ生成部３０２と、ドライブ装置３１のＩＶ生成部３１１に供給される。ＩＶ生成部３０２とＩＶ生成部３１１は、共に、リードコマンド１０２から読み出されるＬＢＡと、乱数生成部３０１により生成される乱数により、初期ベクトルＩＶを生成する。
【０１５２】
図２１に示した記録部４２においては、乱数を生成する乱数生成部３３１がホスト３２に備えられている。乱数生成部３３１において生成された乱数は、ホスト３２のＩＶ生成部３３２と、ドライブ装置３１のＩＶ生成部３４１に供給される。ＩＶ生成部３３２とＩＶ生成部３４１は、共に、ライトコマンド１０４から読み出されるＬＢＡと、乱数生成部３３１により生成される乱数により、初期ベクトルＩＶを生成する。
【０１５３】
図１８乃至図２１に示した再生部４１の構成例または記録部４２の構成例は、先読み動作（Read Ahead）や読出し書き込みにおいてデータを一時的に蓄積するバッファリング動作については考慮していない。そこで、図２２に示すように、再生部４１を、先読み動作に対応した構成にしても良い。図２２に示した再生部４１は、図４に示した再生部４１を参照して既に説明した場合と同様に、先読み動作を実行するためのバッファリング・転送処理部１２２が、ドライブ装置３１に設けられた構成とされている。
【０１５４】
また、図２２に示した再生部４１の構成においては、乱数を生成する乱数生成部３６１がドライブ装置３１に備えられている。乱数生成部３６１において生成された乱数は、ドライブ装置３１のＩＶ生成部３６２と、ホスト３２のＩＶ生成部３７１に供給される。ＩＶ生成部３６２とＩＶ生成部３７１は、共に、リードコマンド１０２から読み出されるＬＢＡと、乱数生成部３６１により生成される乱数により、初期ベクトルＩＶを生成する。
【０１５５】
図２２に示した再生部４１の動作について、図２３のタイミングチャートを参照して説明する。ホスト３２においてはステップＳ２０１の処理として、ドライブ装置３１においてはステップＳ２３１の処理として、相互認証の処理が実行される。相互認証が完了することにより、セッション鍵が生成される。そしてステップＳ２０２において、ホスト３２からドライブ装置３１に対して“REPORT KEY”コマンドが送信される。
【０１５６】
“REPORT KEY”コマンドは、相互認証の過程において鍵情報や乱数の供給を要求するときなどに発行されるコマンドである。図２２に示した再生部４１においては、ドライブ装置３１側に、乱数を生成する乱数生成部３６１が備えられているため、ホスト３２は、初期ベクトルＩＶを生成するのに必要な乱数をドライブ装置３１から提供を受けなくてはならない。そこでホスト３２は、ステップＳ２０２の処理として、“REPORT KEY”コマンドを、ドライブ装置３１に対して発行する。
【０１５７】
発行された“REPORT KEY”コマンドをステップＳ２３２の処理として受信したドライブ装置３１は、ステップＳ２３３の処理として乱数Ｒ（Random Number R）を発行し、ホスト３２に供給する。乱数Ｒは、乱数生成部３６１により発行される。
【０１５８】
この発行された乱数Ｒを用いて、ＩＶ生成部３６２とＩＶ生成部３７１は、初期ベクトルＩＶの生成を即座に開始しても良いが、ドライブ装置３１とホスト３２の間で乱数Ｒが交換される過程で乱数Ｒが改竄され、その結果として正常なデータの読み出し動作や書き込み動作の障害となるようなことを回避するために、ドライブ装置３１とホスト３２の間で、乱数Ｒの転送が正しく行われたか否か（改竄などの不正な処理が行われていないか否か）が確認された後に、初期ベクトルＩＶの生成が開始されるようにする。
【０１５９】
ホスト３２は、ステップＳ２０３において、乱数Ｒを受信すると、その受信した乱数ＲのＭＡＣ（Message Authentication Code）値を、セッション鍵を用いて計算する。ＭＡＣについて説明するに、ＭＡＣは、メッセージを圧縮したようなもので、ハッシュ関数によって生成され、メッセージに付帯される。受信者は送信者と同じプロセスでこれを生成し、メッセージに付帯させることによって、通信途中の改竄などをチェックすることができる。共有鍵を持った送信者のＭＡＣ値と受信者が受信したときに生成したＭＡＣ値が一致しない場合は、メッセージ盗聴や改竄の恐れがあることを示す。逆に一致する場合、改竄の恐れがないとほぼ断定できる仕組みとなっている。
【０１６０】
ここでは、このようなＭＡＣ値を用いられた検証が実行されるようにするが、他の検証方法を用いて、乱数Ｒが改竄されていないか否かのチェックが検証されるようにしても良い。
【０１６１】
ホスト３２は、ステップＳ２０４の処理として、計算したＭＡＣ値（MAC[Ks,R]）を、“SEND KEY”コマンドでドライブ装置３１に対して送信する。ドライブ装置３１は、ステップＳ２３４の処理として、ＭＡＣ値（MAC[Ks,R]）を受信すると、そのＭＡＣ値からセッション鍵でＭＡＣ値を計算し、自己が先に送信した乱数Ｒと一致したか否かを確認する。
【０１６２】
この確認において、一致していないと判断された場合には、ドライブ装置３１とホスト３２間における乱数Ｒの共有は失敗したと判断され、それ以降の処理は行われない。すなわち、ドライブ装置３１は、ホスト３２側から、リードコマンド１０２やライトコマンド１０４を受信したとしても、その要求には応じない。
【０１６３】
一方、ドライブ装置３１は、自己が先に送信した乱数Ｒと一致したと判断した場合、ドライブ装置３１とホスト３２間における乱数Ｒの共有は成功したと判断し、それ以降の処理を引き続き実行する。まず、ステップＳ２３５においてドライブ装置３１は、その後の処理を実行する（ホスト３２側からの要求を受け付ける）という意味を含む“Good Status”を、ホスト３２に対して送信する。
【０１６４】
ホスト３２は、このような“Good Status”を、ステップＳ２０５において受信すると、ステップＳ２０６において、リードコマンド１０２を発行する。このステップＳ２０６以下の処理は、図９のステップＳ１２以降の処理と同様なので、その説明は省略する。ただし、ドライブ装置３１とホスト３２間で授受されるセクタデータに対して行われる暗号化または復号の処理で、ＩＶ生成部３６２（ＩＶ生成部３７１）が生成する初期ベクトルＩＶが用いられるが、その初期ベクトルＩＶは、ＬＢＡと乱数Ｒが用いられて生成される。
【０１６５】
このＩＶ生成部３６２（ＩＶ生成部３７１）における初期ベクトルＩＶの生成に関しては、図２９以降の図面を参照して後述する。
【０１６６】
図２３を参照した説明では、ドライブ装置３１側でＭＡＣ値を検証する場合を説明した。図２４を参照して、ホスト３２側でＭＡＣ値を検証する場合を説明する。図２４を参照し、既に説明した図２３の処理と異なる処理についてのみ説明を加える。ドライブ装置３１は、ステップＳ３３２において、ホスト３２から“REPORT KEY”コマンドを受信すると、乱数Ｒを生成する。そして、その生成した乱数ＲのＭＡＣ値を、セッション鍵を用いて計算する。さらに、ドライブ装置３１は、その生成したMAC値（MAC［Ks,R］）と乱数Ｒの結合データ（R||MAC［Ks,R］）を生成し、その値をステップＳ３３３の処理として、ホスト３２に対して送信する。
【０１６７】
ホスト３２は、ステップＳ３０３において、ドライブ装置３１からの結合データ（R|| MAC［Ks,R］）を受信すると、その受信した結合データから、乱数Ｒを抽出するとともに、ＭＡＣ値も抽出する。そして、ホスト３２は、その抽出した乱数Ｒと自己が管理しているセッション鍵を用いてＭＡＣ値を計算する。ホスト３２は、受信したデータから抽出したＭＡＣ値と、生成したＭＡＣ値とを比較することにより、ＭＡＣ値を検証する。
【０１６８】
ＭＡＣ値の検証の結果、通信途中での改竄などの不正な処理は発生していないと判断されると、抽出された乱数Ｒを用いた初期ベクトルＩＶの生成が開始される。そしてステップＳ３０４以降の処理、すなわち、所定のメディアからのデータの読み出しに関わる処理が実行される。
【０１６９】
なお、ドライブ装置３１がステップＳ３３３でホスト３２へ転送するデータは、セッションキーＫｓで乱数R を暗号化したデータ E[Ks, R] を転送する方法もある。ホスト３２はステップＳ３０３で暗号化データ E[Ks, R] を受け取り、これをホスト３２のもつセッションキーＫｓで復号して乱数 R を取得しドライブ装置３１と同一の乱数を共有する。この方法は乱数 R の値そのものを秘匿することも可能とし、初期ベクトルＩＶの予測をより困難とする。
【０１７０】
図２２乃至図２４を参照して、先読み動作を考慮した構成で、かつ乱数を生成する乱数生成部３６１がドライブ装置３１側に備えられている再生部４１の構成を説明し、そして、その再生部４１における処理について説明した。次に、図２５乃至図２７を参照して、先読み動作を考慮した構成で、かつ乱数を生成する乱数生成部４０１がホスト３２側に備えられている再生部４１の構成と、その再生部４１における処理について説明する。
【０１７１】
図２５に示した再生部４１は、図４に示した再生部４１を参照して既に説明した場合と同様に、先読み動作を実行するためのバッファリング・転送処理部１２２が、ドライブ装置３１に設けられた構成とされている。
【０１７２】
また、図２５に示した再生部４１は、乱数を生成する乱数生成部４０１をホスト３２側に備えている。乱数生成部４０１において生成された乱数は、ドライブ装置３１のＩＶ生成部４１１と、ホスト３２のＩＶ生成部４０２に供給される。ＩＶ生成部４１１とＩＶ生成部４０２は、共に、リードコマンド１０２から読み出されるＬＢＡと、乱数生成部３６１により生成される乱数により、初期ベクトルＩＶを生成する。
【０１７３】
図２５に示した再生部４１の動作について、図２６のタイミングチャートを参照して説明する。ホスト３２においてはステップＳ４０１の処理として、ドライブ装置３１においてはステップＳ４３１の処理として、相互認証の処理が実行される。相互認証が完了することにより、セッション鍵が生成される。そしてステップＳ４０２において、ホスト３２からドライブ装置３１に対して結合データ（R|| MAC［Ks,R］）が生成され、送信される。
【０１７４】
ドライブ装置３１は、ステップＳ４３２において、ホスト３２からの結合データ（R|| MAC［Ks,R］）を受信すると、その受信した結合データから、乱数Ｒを抽出するとともに、ＭＡＣ値も抽出する。そして、ドライブ装置３１は、その抽出した乱数Ｒと自己が管理しているセッション鍵を用いてＭＡＣ値を計算する。ドライブ装置３１は、受信したデータから抽出したＭＡＣ値と、生成したＭＡＣ値とを比較することにより、ＭＡＣ値を検証する。
【０１７５】
ＭＡＣ値の検証の結果、通信途中の改竄などの不正な処理は発生していない判断されると、抽出された乱数Ｒを用いた初期ベクトルＩＶの生成が開始される。そしてステップＳ４３３において、“Good Status”がホスト３２に送信される。“Good Status”が送信されることにより、ステップＳ４０４以降の処理、すなわち、所定のメディアからのデータの読み出しに関わる処理が実行される。
【０１７６】
なお、ホスト３２がステップＳ４０２でドライブ装置３１へ転送するデータは、セッションキーＫｓ で乱数R を暗号化したデータ E[Ks, R] を転送する方法もある。ドライブ装置３１はステップＳ４３２で暗号化データ E[Ks, R] を受け取り、これをドライブ装置３１のもつセッションキーＫｓで復号して乱数 R を取得しホスト３２と同一の乱数を共有する。この方法は乱数 R の値そのものを秘匿することも可能とし、初期ベクトルＩＶの予測をより困難とする。また、途中の経路で E[Ks, R] が改竄をされると、ドライブ装置３１とホスト３２の両者で共通の乱数Ｒを得ることができず、両者で同一の初期ベクトルＩＶを生成することができず、結果的に転送データの適切な暗号化・復号ができず、動作に支障をきたすことから、改竄は何ら有益なものとはならない。
【０１７７】
図２６を参照した説明では、ドライブ装置３１側でＭＡＣ値を検証する場合、およびセッションキーＫｓによってホスト３２側で暗号化した乱数をドライブ装置３１へ転送する方法を説明した。図２７を参照して、ホスト３２側でＭＡＣ値を検証する場合を説明する。図２７を参照して、既に説明した図２６の処理と異なる処理についてのみ説明を加える。ホスト３２は、ステップＳ５０２において、乱数Ｒを乱数生成部４０１で生成し、“SEND KEY”とともにドライブ装置３１に送信する。
【０１７８】
また、ホスト３２は、ステップＳ５０３において、“REPORT KEY”コマンドも、ドライブ装置３１に対して送信する。このステップＳ５０３において送信される“REPORT KEY”コマンドは、送信した乱数Ｒに対するＭＡＣ値を計算し、返答してくるように指示するために送信される。
【０１７９】
ドライブ装置３１は、ステップＳ５３２において乱数Ｒを受信し、ステップＳ５３３において“REPORT KEY”コマンドを受信する。ドライブ装置３１は、受信した乱数ＲのＭＡＣ値を、セッション鍵を用いて計算する。さらに、ドライブ装置３１は、その生成したＭＡＣ値（MAC［Ks,R］）を、ステップＳ５３４の処理として、ホスト３２に対して送信する。
【０１８０】
ホスト３２は、ステップＳ５０４において、ドライブ装置３１からのＭＡＣ値を受信すると、その受信したＭＡＣ値を検証する。その検証の結果、通信途中において乱数Ｒなどに対する改竄などはないと判断されると、抽出された乱数Ｒを用いた初期ベクトルＩＶの生成が開始される。そしてステップＳ５０５以降の処理、すなわち、所定のメディアからのデータの読み出しに関わる処理が実行される。
【０１８１】
次に、セッションキーＫｓによってドライブ装置３１側で暗号化した乱数をホスト３２へ転送する方法について説明する。図２８を参照して、既に説明した図２７の処理と異なる処理についてのみ説明を加える。ホスト３２は、ステップＳ６０２において、乱数Ｒを乱数生成部４０１で生成し、これをセッションキーＫｓで暗号化した E[Ks, R] を“SEND KEY”とともにドライブ装置３１に送信する。
【０１８２】
ドライブ装置３１は、ステップＳ６３２において E[Ks, R] 受信し、これをセッションキーＫｓで復号して乱数Ｒを得る。ここで、途中の経路で E[Ks, R] が改竄をされると、ドライブ装置３１とホスト３２の両者で共通の乱数Ｒを得ることができず、両者で同一の初期ベクトルＩＶを生成することができず、結果的に転送データの適切な暗号化・復号ができず、動作に支障をきたすことから、改竄は何ら有益なものとはならない。
【０１８３】
このように、乱数Ｒも用いて初期ベクトルＩＶを生成する場合、乱数Ｒが正しく転送されたか否かを判断する処理が実行されるようにすることで、実際にドライブ装置３１とホスト３２間でデータの授受が行われる前の段階で、転送路の安全性などを確認することができる。また、安全性が確認された後でなければ、メディアから読み出された、または、メディアに書き込まれるデータは、ドライブ装置３１とホスト３２間で授受されないため、データが不正に搾取されるようなことを防ぐことが可能となる。
【０１８４】
上述した説明では、単にＬＢＡと乱数Ｒが用いられて初期ベクトルＩＶが生成されるとしか説明していないが、ここで、初期ベクトルＩＶの生成に関し詳細な説明を加える。なお、図１８に示したＩＶ生成部２４２、ＩＶ生成部２５１、図１９に示したＩＶ生成部２７２、ＩＶ生成部２８１、図２０に示したＩＶ生成部３０２、ＩＶ生成部３１１、図２１に示したＩＶ生成部３３２、ＩＶ生成部３４１、図２２に示したＩＶ生成部３６２、ＩＶ生成部３７１、および、図２５に示したＩＶ生成部４０２、ＩＶ生成部４１１は、いずれもＬＢＡと乱数Ｒを用いて初期ベクトルＩＶを生成するものであり、その生成の仕方は、基本的に同様であるので、以下の説明においては、代表としてＩＶ生成部２４２（図１８）を例に挙げて説明する。
【０１８５】
図２９は、ＩＶ生成部２４２の構成例を示す図である。図２９に示したＩＶ生成部２４２は、Padding（パディング）処理部４３１と排他的論理和回路４３２から構成されている。リードコマンド１０２から抽出される、４バイトのＬＢＡは、ＩＶ生成部２４２のPadding処理部４３１に供給される。最終的に生成される初期ベクトルＩＶは、１６バイトであるので、４バイトのＬＢＡは、Padding処理部４３１により１６バイトのデータにデータ拡張される。
【０１８６】
Padding処理部４３１は、４バイトのＬＢＡを１６バイトのデータにデータ拡張するわけだが、そのデータ拡張の仕方には、例えば、上位バイトまたは下位バイトを00hなどの定数で埋める方法がある。または、４バイトのＬＢＡを分解し、その分解したビットを予め設定されている方法で配置し、残りの部分を00hなどの定数で埋めるようにしても良い。さらに４バイトのＬＢＡを４回繰り返すことで１６バイトを構成することもでき、こうして作成された１６バイトを分解し、その分解したビットを予め設定されている方法で再配置しても良い。どのような方法で、４バイトのＬＢＡを１６バイトのデータに変換しても良いが、Padding処理部４３１から出力されるデータは、１６バイトのデータに変換されている。
【０１８７】
Padding処理部４３１から出力されたデータは、排他的論理和回路４３２に供給される。排他的論理和回路４３２には、乱数Ｒも供給される。この乱数Ｒは、乱数生成部２４１（図１８）により生成されたものである。上述したように乱数Ｒは１６バイトのデータであり、ドライブ装置３１とホスト３２間で交換される（一方から他方に供給される）ものである。
【０１８８】
排他的論理和回路４３２により、ＬＢＡから生成された１６バイトのデータと１６バイトの乱数Ｒの排他的論理和が演算され、その演算結果が、１６バイトの初期ベクトルＩＶとされ、暗号化部６１や復号部９１に供給される。
【０１８９】
図３０は、ＩＶ生成部２４２の他の構成例を示す図である。図３０に示したＩＶ生成部２４２は、Ｈａｓｈ処理部４５１、Padding処理部４５２、および、排他的論理和回路４５３から構成されている。Padding処理部４５３は、図２９に示したPadding処理部４３１と同様に、４バイトのＬＢＡが入力され、その４バイトのＬＢＡを１６バイトのデータにデータ拡張し、排他的論理和回路４５３に供給する。
【０１９０】
図３０に示したＩＶ生成部２４２は、供給される乱数Ｒに対して、Ｈａｓｈ処理部４５１による処理を施し、排他的論理和回路４５３に供給する構成とされている。すなわちＨａｓｈ処理部４５１は、入力された１６バイトの乱数Ｒに対し、ＳＨＡ−１などの所定のＨａｓｈ関数による演算を施し、その結果得られる１６バイトのデータＣを排他的論理和回路４５３に供給する。
【０１９１】
排他的論理和回路４５３の処理は、基本的に、図２９に示した排他的論理和回路４３２と同様であり、入力される１６ビットのデータ同士の排他的論理和を演算する。その演算結果が、初期ベクトルＩＶとされる。
【０１９２】
乱数Ｒは、ドライブ装置３１とホスト３２間で交換されるため、セッションキーＫｓで暗号化せずに平文のまま交換する方法を採用した場合はその交換途中で、第３者が観測することが可能である。また、ＬＢＡもリードコマンド１０２に含まれており、そのリードコマンド１０２は、ドライブ装置３１とホスト３２間で交換されるため、その交換途中で、第３者が観測することが可能である。観測可能であるために、乱数ＲやＬＢＡは、第３者に搾取される可能性がある。
【０１９３】
しかしながら、図３０に示したＩＶ生成部２４２は、乱数ＲをＨａｓｈ関数に通し、データＣに変換するように構成されている。このデータＣは、予測不可能な値である。よって、そのようなデータＣを用いて生成される初期ベクトルＩＶも、予測不可能なものとすることができる。すなわち、仮に乱数ＲとＬＢＡが第３者に搾取されたとしても、その第３者が、そのようなことから初期ベクトルＩＶを推測することはできない。結果として、第３者は、ドライブ装置３１とホスト３２間で授受される暗号化されているデータを搾取しても、そのデータを復号することができないことになる。
【０１９４】
もって、ドライブ装置３１とホスト３２間で授受されるデータが不正に利用されるようなことを防ぐことができ、所定のインタフェースなどのバス上での暗号化の安全性を向上させることが可能となる。
【０１９５】
図３１は、ＩＶ生成部２４２のさらに他の構成例を示す図である。図３１に示したＩＶ生成部２４２は、Ｈａｓｈ処理部４７１、Padding処理部４７２、および、排他的論理和回路４７３から構成されている。この構成は、基本的に、図３０に示した構成と同様であるが、Ｈａｓｈ処理部４７１に、認証処理部５１（図１８）からセッションキーＫｓ（Session Key）が供給される構成とされているのが図３０に示したＩＶ生成部２４２とは異なる。
【０１９６】
Ｈａｓｈ処理部４７１は、供給された１６バイトの乱数Ｒに、セッションキーＫｓを鍵とするＨａｓｈ関数の処理を施し、１６バイトのデータＣを生成し、排他的論理和回路４７３に供給する。
【０１９７】
このような構成とすることで、図３０に示したＩＶ生成部２４２が有する上述したような効果を得られるだけでなく、次のような効果もある。すなわち、仮に同じ乱数Ｒが、ドライブ装置３１とホスト３２間で複数回（連続して）交換されたとしても、ドライブ装置３１とホスト３２間における相互認証の結果生成されるセッションキーＫｓは、相互認証毎に異なるものとすることができるため、結果として、同一の乱数Ｒからでも異なる初期ベクトルＩＶを生成することが可能となる。よって、よりバスの暗号化の安全性を向上させることが可能となる。
【０１９８】
このように、本発明においては、初期ベクトルＩＶを、リードコマンド１０２やライトコマンド１０４に含まれるＬＢＡから生成するようにしたので、既存のインタフェース、例えば、ＡＴＡＰＩなどのインタフェースの規格を変更することなく、データの暗号化や復号に用いられる初期ベクトルＩＶを生成することが可能となる。
【０１９９】
また、その生成される初期ベクトルＩＶは、Ｈａｓｈ関数などによる処理が施されることにより生成されるため、同一の初期ベクトルＩＶが生成される可能性を低くすることが可能となり、そのような初期ベクトルＩＶを用いて暗号化されたデータから、容易に平文が推測されるようなことを防ぐことが可能となる。さらに、Ｈａｓｈ関数の鍵をセッションキーとすることにより、同一の初期ベクトルＩＶが生成される可能性を低くすることができる。
【０２００】
ここで、ドライブ装置３１とホスト３２間で行われる相互認証の結果、生成されるセッションキーＫｓと初期ベクトルＩＶの計算のためのＳＥＥＤ（所定の数値、例えば、乱数の生成などのアルゴリズムで使われる初期値）について、図３２と図３３のフローチャートを参照して説明を加える。
【０２０１】
ステップＳ７０１において、ドライブ装置３１にディスク（ここでは、ドライブ装置３１に装着されるメディアはディスク状のものであるとして説明する）が、挿入されたか否かが判断される。ステップＳ７０１において、ドライブ装置３１にディスクが挿入されたと判断された場合、ステップＳ７０１に処理が進められ、ホスト３２（ここでは、ＰＣ（パーソナルコンピュータ）として説明する）において所定のアプリケーションが起動されたか否かが判断される。
【０２０２】
所定のアプリケーションとは、ドライブ装置３１に挿入されたディスクからデータを読み出す、または、書き込むために必要とされるアプリケーションである。
【０２０３】
ステップＳ７０２において、ホスト３２において所定のアプリケーションが起動されたと判断された場合、ステップＳ７０３に処理が進められる。ステップＳ７０３において、ドライブ装置３１とホスト３２との間で相互認証処理が実行され、セッションキーＫｓが、ドライブ装置３１とホスト３２で、それぞれ生成（共用）される。ステップＳ７０４において、セッションキーＫｓの生成が完了したか否かが判断される。セッションキーＫｓの生成が完了されるまで、ステップＳ７０３とステップＳ７０４の処理が繰り返される。
【０２０４】
そして、ステップＳ７０４において、セッションキーＫｓの生成が完了したと判断されると、ステップＳ７０５に処理が進められ、乱数Ｒの交換が、ドライブ装置３１とホスト３２間で行われる。その乱数Ｒの交換が、完了したか否かが、ステップＳ７０６において判断される。ステップＳ７０６において、ドライブ装置３１とホスト３２の間で、乱数Ｒの交換が完了したと判断された場合、ステップＳ７０７に処理が進められる。
【０２０５】
ステップＳ７０７において、初期ベクトルＩＶの計算のために必要なＳＥＥＤ Ｃが計算される。その計算が終了されると乱数Ｒは消去される。ステップＳ７０７の処理が終了すると、ステップＳ７０８（図３３）において、ホスト３２側で起動されていた所定のアプリケーション（ＰＣアプリケーション）が終了されたか否かが判断される。ステップＳ７０８において、ＰＣアプリケーションは、終了されていないと判断された場合、ステップＳ７０９に処理が進められ、ドライブ装置３１に挿入されていたディスクは排出されたか否かが判断される。
【０２０６】
ステップＳ７０９において、ディスクは排出されていないと判断されると、ステップＳ７０８に処理が戻され、それ以降の処理が繰り返される。一方、ステップＳ７０９において、ディスクが排出されたと判断された場合、ステップＳ７１０に進み、ホスト３２で生成されたセッションキーＫｓが消去される。そして、ステップＳ７１１において、ホスト３２で生成したＳＥＥＤ Ｃも消去される。
【０２０７】
さらに、ステップＳ７１２において、ドライブ装置３１で生成されたセッションキーＫｓが削除され、ステップＳ７１３において、ドライブ装置３１で生成されたＳＥＥＤ Ｃも削除される。
【０２０８】
このように、ディスクが排出された場合、ディスクからのデータの読み出しや、ディスクに対するデータの書き込みは実行できなくなるので、そのような処理を実行するために、ドライブ装置３１とホスト３２で、それぞれ生成されたセッションキーＫｓとＳＥＥＤ Ｃは消去される。このようなデータが消去されると、ステップＳ７０１に処理が戻され、それ以降の処理が繰り返される。
【０２０９】
一方、ステップＳ７０８において、ホスト３２側で起動されていたＰＣアプリケーションが終了されたと判断された場合、ステップＳ７１４に処理が進められ、ホスト３２で生成されたセッションキーＫｓが消去される。そして、ステップＳ７１５において、ホスト３２で生成したＳＥＥＤ Ｃも消去される。
【０２１０】
ステップＳ７１６において、ホスト３２側でＰＣアプリケーションが起動されたか否かが判断される。この状態では、まだ、ドライブ装置３１にディスクが挿入されている状態であるので、ＰＣアプリケーションが起動されれば、ディスクからのデータの読み出しや、ディスクに対するデータの書き込みが実行できる状態になるので、ステップＳ７１６において、ＰＣアプリケーションが起動されたか否か（結果として、ディスクに対する処理が実行できる状態にされたか否か）が判断される。
【０２１１】
ステップＳ７１６において、ＰＣアプリケーションが起動されたと判断された場合、ステップＳ７０３（図３２）に処理が戻され、それ以降の処理が繰り返される。一方、ステップＳ７１６において、ＰＣアプリケーションは起動されていないと判断された場合、ステップＳ７１７に処理が進められ、ドライブ装置３１に挿入されているディスクが排出されたか否かが判断される。
【０２１２】
ステップＳ７１７において、ドライブ装置３１に挿入されているディスクが排出されたと判断されるまで、ステップＳ７１６とステップＳ７１７の処理が繰り返され、ドライブ装置３１に挿入されているディスクが排出されたと判断されると、ステップＳ７１２に処理が進められる。ステップＳ７１２以降の処理については、既に説明したので、ここではその説明を省略する。
【０２１３】
このように、セッションキーＫｓやＳＥＥＤ Ｃは、必要に応じ生成され、必要がなくなった時点で、即座に消去されるように構成されている。このようにすることで、セッションキーＫｓが盗用されたり、ＳＥＥＤ Ｃが盗用されるといった不都合が発生する可能性をできる限り低くする。セッションキーＫｓやＳＥＥＤ Ｃは、上述した初期ベクトルＩＶの生成にも関わるデータであるが、セッションキーＫｓやＳＥＥＤ Ｃが盗用される可能性を低くすることで、初期ベクトルＩＶが推測される、盗用される可能性も低くすることが可能となる。
【０２１４】
上述した再生部４１と記録部４２の他の構成について、以下に説明するが、既に説明した構成と同一の部分には同一の符号を付し、その説明を省略する。
【０２１５】
図３４は、記録部４２の他の構成例を示す図である。図３４に示した構成においては、乱数を生成する乱数生成部４３１がドライブ装置３１側に備えられた構成とされている。乱数生成部４３１において生成された乱数は、ドライブ装置３１のＩＶ生成部４３２と、ホスト３２のＩＶ生成部４４１に供給される。ＩＶ生成部４３２とＩＶ生成部４４１は、共に、ライトコマンド１０４から読み出されるＬＢＡと、乱数生成部４３１により生成される乱数により、初期ベクトルＩＶを生成する。
【０２１６】
図３５は、記録部４２の他の構成例を示す図である。図３５に示した構成においては、乱数を生成する乱数生成部４６１がホスト３２側に備えられた構成とされている。乱数生成部４６１において生成された乱数は、ドライブ装置３１のＩＶ生成部４７１と、ホスト３２のＩＶ生成部４６２に供給される。ＩＶ生成部４６２とＩＶ生成部４７１は、共に、ライトコマンド１０４から読み出されるＬＢＡと、乱数生成部４６１により生成される乱数により、初期ベクトルＩＶを生成する。
【０２１７】
図３６は、再生部４１の他の構成例を示す図である。図３６に示した構成においては、乱数を生成する乱数生成部５０１がドライブ装置３１側に備えられ、同じく乱数を生成する乱数生成部５１１がホスト３２側に備えられた構成とされている。乱数生成部５０１と乱数生成部５１１においてそれぞれ生成された乱数は、ドライブ装置３１のＩＶ生成部５０２と、ホスト３２のＩＶ生成部５１２に供給される。ＩＶ生成部５０２とＩＶ生成部５１２は、共に、ライトコマンド１０４から読み出されるＬＢＡと、乱数生成部５０１，５１１により生成される乱数により、初期ベクトルＩＶを生成する。
【０２１８】
図３７は、記録部４２の他の構成例を示す図である。図３７に示した構成においては、乱数を生成する乱数生成部５３１がドライブ装置３１側に備えられ、同じく乱数を生成する乱数生成部５４１がホスト３２側に備えられた構成とされている。乱数生成部５３１と乱数生成部５４１においてそれぞれ生成された乱数は、ドライブ装置３１のＩＶ生成部５３２と、ホスト３２のＩＶ生成部５４２に供給される。ＩＶ生成部５３２とＩＶ生成部５４２は、共に、ライトコマンド１０４から読み出されるＬＢＡと、乱数生成部５３１，５３１により生成される乱数により、初期ベクトルＩＶを生成する。
【０２１９】
図３８は、再生部４１の他の構成例を示す図である。図３８に示した構成においては、乱数を生成する乱数生成部５６１がドライブ装置３１側に備えられ、同じく乱数を生成する乱数生成部５７１がホスト３２側に備えられた構成とされている。乱数生成部５６１と乱数生成部５７１においてそれぞれ生成された乱数は、ドライブ装置３１のＩＶ生成部５６２と、ホスト３２のＩＶ生成部５７２に供給される。ＩＶ生成部５６２とＩＶ生成部５７２は、共に、ライトコマンド１０４から読み出されるＬＢＡと、乱数生成部５６１，５７１により生成される乱数により、初期ベクトルＩＶを生成する。
【０２２０】
図３９は、記録部４２の他の構成例を示す図である。図３９に示した構成においては、乱数を生成する乱数生成部６０１がドライブ装置３１側に備えられ、同じく乱数を生成する乱数生成部６１１がホスト３２側に備えられた構成とされている。乱数生成部６０１と乱数生成部６１１においてそれぞれ生成された乱数は、ドライブ装置３１のＩＶ生成部６０２と、ホスト３２のＩＶ生成部６１２に供給される。ＩＶ生成部６０２とＩＶ生成部６１２は、共に、ライトコマンド１０４から読み出されるＬＢＡと、乱数生成部６０１，６１１により生成される乱数により、初期ベクトルＩＶを生成する。
【０２２１】
図４０のフローチャートを参照し、図３８に示した再生部４１の動作について説明するが、既に説明した部分と同一の処理については説明を省略する。ステップＳ８３３において、乱数生成部５６１において生成された乱数Ｒ１が用いられたＭＡＣ値（MAC[Ks,R１]）が算出され、ホスト３２に送信される
【０２２２】
このステップＳ８３３における処理とし、ＭＡＣ値を算出するのではなく、乱数生成部５６１で生成された乱数Ｒ１が、セッションキーＫｓで暗号化された E[Ks, R1] が生成され、ホスト３２に送信されるようにしても良い。
【０２２３】
ステップＳ８０３において、ドライブ装置３１から送信されてきた （MAC[Ks,R１]） または E[Ks, R1] を受信したホスト３２は、ステップＳ８０４において、乱数生成部５７１において生成した乱数Ｒ２を用いて、ＭＡＣ値（MAC[Ks,R2]）を算出し、ドライブ装置３１に、“SEND KEY”とともに送信する。
【０２２４】
このステップＳ８０４における処理とし、ＭＡＣ値を算出するのではなく、乱数生成部５７１で生成された乱数Ｒ２が、セッションキーＫｓで暗号化された E[Ks, R2] が生成され、ドライブ装置３１に“SEND KEY”とともに送信されるようにしても良い。
【０２２５】
このように、図３８に示した再生部４２においては、乱数生成部を、ドライブ装置３１側とホスト３２側で、それぞれ有しているため、それぞれの乱数生成部５６１，５７１で生成された乱数Ｒ１，Ｒ２という２つの乱数が用いられて処理が行われる。このように２つの乱数を用いることで、よりセキュリティを高めることが可能となる。
【０２２６】
ＩＶ生成部５６２とＩＶ生成部５７２は、リードコマンド１０２から抽出されるＬＢＡと乱数を用いて初期ベクトルＩＶを生成するわけだが、乱数生成部５６１で生成され乱数Ｒ１を用いるが、または、乱数生成部５７１で生成される乱数Ｒ２を用いるかが問題となる。
【０２２７】
そこで、ここでは、乱数Ｒ１と乱数Ｒ２の排他的論理和を演算し、その結果算出された値を乱数Ｒとし、その乱数Ｒを初期ベクトルＩＶの生成に用いられるようにする。すなわち、ＩＶ生成部５６２とＩＶ生成部５７２は、供給された乱数Ｒ１と乱数Ｒ２を排他的論理和を算出してから、初期ベクトルＩＶの生成を開始する。
【０２２８】
乱数Ｒ１と乱数Ｒ２の組として同一の組が生成される可能性は低く、その結果、同一の乱数Ｒが生成される可能性も低い。よって、そのような乱数Ｒを用いて生成される初期ベクトルＩＶも、同一のものが生成されるという可能性を低くすることができる。もって、よりセキュリティを向上させることが可能となる。
【０２２９】
このように、本発明を適用することにより、ドライブ装置３１とホスト３２との間で行われるデータの授受に関し、セキュリティを向上させることが可能となる。
【０２３０】
なお、上述した実施の形態においては、再生部４１と記録部４２をそれぞれ別な構成として図示および説明したが、再生部４１内と記録部４２内において同一の処理を実行する、例えば、ＩＶ生成部などは、再生部４１と記録部４２で共用される構成としても、もちろん良い。
【０２３１】
なお、上述した実施の形態においては、暗号化および復号の方式として、ＣＢＣ方式を例に挙げて説明したが、本発明は、ＣＢＣ方式にのみ適用できることを示すものではない。例えば、ＣＦＢ（Cipher Feed Back）方式、ＯＦＢ（Output Feed Block）方式などに対しても本発明を適用することはできる。
【０２３２】
上述した一連の処理は、それぞれの機能を有するハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０２３３】
記録媒体は、その記録媒体を扱うパーソナルコンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disc-Read Only Memory），DVD（Digital Versatile Disc）を含む）、光磁気ディスク（MD（Mini-Disc）（登録商標）を含む）、若しくは半導体メモリなどよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているＲＯＭやハードディスクなどで構成される。
【０２３４】
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２３５】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２３６】
【図１】ＣＢＣ方式の暗号化を行う回路の構成を示す図である。
【図２】ＣＢＣ方式の復号を行う回路の構成を示す図である。
【図３】本発明を適用した記録再生装置の一実施の形態の構成を示す図である。
【図４】再生部の構成を示す図である。
【図５】ディスク状のメディアのデータ構造について説明する図である。
【図６】ユーザデータエリアの構成について説明するための図である。
【図７】コマンドのデータ構造について説明するための図である。
【図８】ＬＢＡとセクタデータの関係について説明するための図である。
【図９】再生部における処理を説明するための図である。
【図１０】ドライブ装置側の処理について説明するための図である。
【図１１】暗号化部の詳細な構成を示す図である。
【図１２】ホスト側の処理について説明するための図である。
【図１３】復号部の詳細な構成を示す図である。
【図１４】記録部の構成を示す図である。
【図１５】ホスト側の処理について説明するための図である。
【図１６】ドライブ装置側の処理について説明するための図である。
【図１７】ＩＶ生成部の構成例を示す図である。
【図１８】再生部の他の構成例を示す図である。
【図１９】記録部の他の構成例を示す図である。
【図２０】再生部の他の構成例を示す図である。
【図２１】記録部の他の構成例を示す図である。
【図２２】再生部の他の構成例を示す図である。
【図２３】再生部における処理について説明するための図である。
【図２４】再生部における処理について説明するための図である。
【図２５】再生部の他の構成例を示す図である。
【図２６】再生部における処理について説明するための図である。
【図２７】再生部における処理について説明するための図である。
【図２８】再生部における処理について説明するための図である。
【図２９】ＩＶ生成部の詳細な構成を示す図である。
【図３０】ＩＶ生成部の詳細な構成を示す図である。
【図３１】ＩＶ生成部の詳細な構成を示す図である。
【図３２】セッションキーに関わる処理を説明するためのフローチャートである。
【図３３】図３２のフローチャートに続くフローチャートである。
【図３４】記録部の他の構成例を示す図である。
【図３５】記録部の他の構成例を示す図である。
【図３６】再生部の他の構成例を示す図である。
【図３７】記録部の他の構成例を示す図である。
【図３８】再生部の他の構成例を示す図である。
【図３９】記録部の他の構成例を示す図である。
【図４０】再生部における処理について説明するための図である。
【符号の説明】
【０２３７】
１１  排他的論理和回路，  １２  暗号化部，  ２１  排他的論理和回路，  ２２  復号部，  ３１  ドライブ装置，  ３２  ホスト，  ５１  認証処理部，  ４１  再生部，  ４２  記録部，  ６１  暗号化部，  ６２  ＩＶ生成部，  ６３  メディア読み出し処理部，  ６４  復号部，  ６５  ＩＶ生成部，  ６６  メディア書き込み処理部，  ９１  復号部，  ９２  ＩＶ生成部，  ９３  暗号化部，  ９４  ＩＶ生成部，  １２１  PSN/LBA変換部，  １２２  バッファリング・転送処理部，  １２３  リードコマンド処理部，  １６１  ＬＢＡ抽出部，  ２４１  乱数生成部
【図１】
2005140823.tif 000003
【図２】
2005140823.tif 000004
【図３】
2005140823.tif 000005
【図４】
2005140823.tif 000006
【図５】
2005140823.tif 000007
【図６】
2005140823.tif 000008
【図７】
2005140823.tif 000009
【図８】
2005140823.tif 000010
【図９】
2005140823.tif 000011
【図１０】
2005140823.tif 000012
【図１１】
2005140823.tif 000013
【図１２】
2005140823.tif 000014
【図１３】
2005140823.tif 000015
【図１４】
2005140823.tif 000016
【図１５】
2005140823.tif 000017
【図１６】
2005140823.tif 000018
【図１７】
2005140823.tif 000019
【図１８】
2005140823.tif 000020
【図１９】
2005140823.tif 000021
【図２０】
2005140823.tif 000022
【図２１】
2005140823.tif 000023
【図２２】
2005140823.tif 000024
【図２３】
2005140823.tif 000025
【図２４】
2005140823.tif 000026
【図２５】
2005140823.tif 000027
【図２６】
2005140823.tif 000028
【図２７】
2005140823.tif 000029
【図２８】
2005140823.tif 000030
【図２９】
2005140823.tif 000031
【図３０】
2005140823.tif 000032
【図３１】
2005140823.tif 000033
【図３２】
2005140823.tif 000034
【図３３】
2005140823.tif 000035
【図３４】
2005140823.tif 000036
【図３５】
2005140823.tif 000037
【図３６】
2005140823.tif 000038
【図３７】
2005140823.tif 000039
【図３８】
2005140823.tif 000040
【図３９】
2005140823.tif 000041
【図４０】
2005140823.tif 000042