(57)【要約】【課題】初期ベクトルを生成し、データの暗号化や復号を行う。【解決手段】  ＩＶ生成部７２には、パケットコマンドに含まれるＬＢＡのデータが供給される。ＩＶ生成部７２は、供給された４バイトのセクタアドレス５１を、１６ビットのデータにデータ拡張する。さらにデータ拡張された１６ビットのデータと、乱数発生部７１により発生された乱数Ｒの排他的論理和が演算され、初期ベクトルＩＶとして復号部７３と多重化部７４に供給される。暗号化部７３は、供給された初期ベクトルＩＶとセッションキーＫｓを用いて、セクタデータ５２を暗号化する。多重化部７４は、暗号化されたセクタデータ５２に、初期ベクトルＩＶを多重化し、シンク３２に出力する。本発明は、所定のインタフェースを介してデータの授受を行うパーソナルコンピュータやドライブ装置に適用できる。【選択図】図３
2005175605.tif 000002
【特許請求の範囲】
【請求項１】
所定の記録媒体へのデータの書き込みを指示するコマンドに含まれる所定の情報か、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報か、または、所定の記録媒体に記録されている所定の情報のうちのいずれか１つの情報を取得する取得手段と、
乱数を発生する発生手段と、
前記取得手段により取得された前記情報と、前記発生手段により発生された前記乱数を用いて初期ベクトルを生成する生成手段と、
前記生成手段により生成された前記初期ベクトルと所定の鍵を用いて前記データを暗号化する暗号化手段と、
前記暗号化手段により暗号化された前記データと、前記生成手段により生成された前記初期ベクトルを多重化して出力する出力手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記取得手段により取得される前記情報は、ＬＢＡ（Logical Block Address）である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記取得手段により取得される前記情報は、Transfer Lengthである
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記取得手段により取得される前記情報は、ＰＳＮ（Physical Sector Number）である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
所定の記録媒体へのデータの書き込みを指示するコマンドに含まれる所定の情報か、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報か、または、所定の記録媒体に記録されている所定の情報のうちのいずれか１つの情報を取得する取得ステップと、
乱数を発生する発生ステップと、
前記取得ステップの処理で取得された前記情報と、前記発生ステップの処理で発生された前記乱数を用いて初期ベクトルを生成する生成ステップと、
前記生成ステップの処理で生成された前記初期ベクトルと所定の鍵を用いて前記データを暗号化する暗号化ステップと、
前記暗号化ステップの処理で暗号化された前記データと、前記生成ステップの処理で生成された前記初期ベクトルを多重化する多重化ステップと
を含むことを特徴とする制御方法。
【請求項６】
所定の記録媒体へのデータの書き込みを指示するコマンドに含まれる所定の情報か、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報か、または、所定の記録媒体に記録されている所定の情報のうちのいずれか１つの情報を取得する取得ステップと、
乱数を発生する発生ステップと、
前記取得ステップの処理で取得された前記情報と、前記発生ステップの処理で発生された前記乱数を用いて初期ベクトルを生成する生成ステップと、
前記生成ステップの処理で生成された前記初期ベクトルと所定の鍵を用いて前記データを暗号化する暗号化ステップと、
前記暗号化ステップの処理で暗号化された前記データと、前記生成ステップの処理で生成された前記初期ベクトルを多重化する多重化ステップと
を含む処理をコンピュータに実行させることを特徴とするプログラム。
【請求項７】
第１の記録媒体へのデータの書き込みを指示するコマンドに含まれる所定の情報か、第２の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報か、または、第３の記録媒体に記録されている所定の情報のうちのいずれか１つの情報を取得する取得ステップと、
乱数を発生する発生ステップと、
前記取得ステップの処理で取得された前記情報と、前記発生ステップの処理で発生された前記乱数を用いて初期ベクトルを生成する生成ステップと、
前記生成ステップの処理で生成された前記初期ベクトルと所定の鍵を用いて前記データを暗号化する暗号化ステップと、
前記暗号化ステップの処理で暗号化された前記データと、前記生成ステップの処理で生成された前記初期ベクトルを多重化する多重化ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法、プログラム、並びに記録媒体に関し、特に、暗号化に関わる処理を実行する際に用いて好適な情報処理装置、制御方法、プログラム、並びに記録媒体に関する。
【背景技術】
【０００２】
さまざまな装置で、デジタルデータを授受することが一般的になりつつあるが、デジタルデータは、不正に利用されても、その質（例えば、画質や音質）が劣化しないため、不正に利用されないための対策が必要とされる。（例えば、特許文献１参照）
【０００３】
そこで、デジタルデータを暗号化し、不正利用を防ぐことが行われている。暗号化の方式は、さまざまなものが提案されている。ここでは、ＣＢＣ（Cipher Block Chaining）方式を例に挙げて、暗号化（復号）の方式について説明する。
【０００４】
暗号化の一方式であるＣＢＣ方式は、ブロック連鎖のための一つの技法であり、排他的論理和演算により、平文の現在のブロックに暗号文の前のブロックを付加して、暗号文の各ブロックを作成する方式である。図１は、ＣＢＣ方式を用い暗号化を行う回路の一例を示す図である。
【０００５】
暗号化すべきデータは、所定の単位（例えば、１６バイト）毎にブロック化される。そして、第１のブロックは、排他的論理和回路１１−１に供給され、第１のブロックに続く第２のブロックは、排他的論理和回路１１−２に供給され、第２のブロックに続く第３のブロックは、排他的論理和回路１１−３に供給されというように、所定の段数（ここでは、Ｎ段とする）だけ設けられた排他的論理和回路１１−１乃至１１−Ｎに順次、ブロック化された平文のデータが入力される。
【０００６】
排他的論理和回路１１−１から出力された第１のブロックは、暗号化部１２−１に供給される。暗号化部１２−１は、鍵Ｅｋで供給された第１のブロックを暗号化する。このようにして、第１のブロックは暗号化される。
【０００７】
暗号化部１２−１から出力された暗号化された第１のブロックは、排他的論理和回路１１−２にも供給され、第２のブロックとの間で排他的論理和が演算される。その結果は、暗号化部１２−２に供給され、同じく鍵Ｅｋで暗号化される。
【０００８】
このように、ＣＢＣ方式における暗号化は、１つ前で暗号化したブロックと暗号化対象の現在の平文のブロックとの排他的論理和が演算されてから、そのブロックに対して所定の暗号化鍵での暗号化が行なわれるようになっている。結果の暗号文は次のブロックとの排他的論理和の演算に使われることになる。このように前のブロックと次々に連鎖させることにより暗号文が生成される。
【０００９】
第２のブロック以降は、前のブロックとの排他的論理和が演算されるが、第１のブロックは、前のブロックが存在しないため、前のブロックとの排他的論理和を演算することができない。そこで、第１のブロックに対しては、初期ベクトル（ＩＶ：Initializing Vector）を与えて排他的論理和を演算するように構成される。
【００１０】
次に、ＣＢＣ方式を用い復号を行う回路について、図２を参照して説明する。
【００１１】
上述したようにして暗号化されたデータは、所定の単位（例えば、１６バイト）毎にブロック化されている。ブロック化されているデータの内、第１のブロックは、復号部２２−１に供給され、第１のブロックに続く第２のブロックは、復号部２２−２に供給され、第２のブロックに続く第３のブロックは、復号部２２−３に供給されというように、所定の段数（ここでは、Ｎ段とする）だけ設けられた復号部２２−１乃至２２−Ｎに順次、暗号化されたブロック単位のデータが入力される。
【００１２】
各復号部２２−１乃至２２−Ｎは、入力されたデータを鍵Ｄｋで復号する。各復号部２２−１乃至２２−Ｎから出力されたデータは、対応する排他的論理和回路２１−１乃至２１−Ｎに供給される。排他的論理和回路２１−２乃至２１−Ｎには、前の段の復号部２２−１乃至２２−Ｎ-1に供給されるデータも供給される。
【００１３】
このように、ＣＢＣ方式の復号は、１つ前の暗号化されているブロックと復号対象の現在の復号されたブロックとの排他的論理和が演算されることにより、最終的な復号が行われる。
【００１４】
第２のブロック以降は、前のブロックとの排他的論理和が演算されるが、第１のブロックは、前のブロックが存在しないため、前のブロックとの排他的論理和を演算することができない。そこで、第１のブロックに対しては、初期ベクトルＩＶを与えて、排他的論理和が演算される構成とされている。
【００１５】
このようにして、暗号化、復号が行われている。
【特許文献１】特許第３２５２７０６号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１６】
上述したように、ＣＢＣ方式で暗号化が行われる際、最初のブロックには初期ベクトルＩＶが加えられる。しかしながら、最初のブロックには、前のブロックが存在しないので、何も加えないで（初期ベクトルＩＶを加えないで）後段の処理を行うようにしても良いが、そのようにすると以下のような問題点がある。
【００１７】
例えば、電子メールを例に挙げて考える。電子メールの書式には、宛先、送信元、件名、本文といったような一連のパターンがある。そのようなパターンがあるようなデータ（平文）を暗号化した場合、暗号化されたデータ自体もパターンがあるデータとなってしまう。第３者（攻撃者）が、そのようなパターンに注目することにより、暗号文から平文の一部を解読することが可能である。
【００１８】
また、音楽データなどで、その音楽データを繰り返し再生するような場合、結果として同じ平文を同じように暗号化することになり、暗号化されたデータ自体も同じ結果となる。そのため、上述した場合と同様に、暗号文から平分を解読することが可能である。
【００１９】
そこで、パターンがあるような平文（同一のデータを複数回暗号化するような場合）でも、暗号化されたデータ（暗号文）にパターンがないようにするために、最初のブロックに初期ベクトルＩＶを加えるようにする。初期ベクトルＩＶを加えて暗号化を実行することにより、平文のブロックに同じパターンがあっても暗号文には同じパターンが発生しないので、暗号解読を困難にさせることが出来る。また、単一の鍵で大量のデータを暗号化した場合に暗号鍵が予測しやすくなる、という解読行為を、初期ベクトルＩＶを加えて暗号化を行うよういすることで防止することができるという効果もある。
【００２０】
このような理由で最初のブロックに初期ベクトルＩＶが加えられ、その後の暗号化が行われるように構成されている場合が多い。
【００２１】
ところで、所定の記録媒体からデータを読み出すドライブと、そのドライブからのデータの供給を受けるホスト（例えば、パーソナルコンピュータ）の間で、相互認証してセッション鍵を生成し、そのセッション鍵でデータを暗号化して転送する場合がある。このような状況に対して上述したＣＢＣ方式を用いることが可能である。そのような場合、初期ベクトルＩＶを適当に更新させることで、平文のデータが特別なパターンのデータであることを特定させることを困難とし、データのすり替え、データの改竄行為を防止することができるとされている。（参考文献：NIST Special Publication 800-38A 2001 Edition, Recommendation for Block Cipher Modes of Operation, Methods and Techniques, APPENDIX C Generation of Counter Blocks）
【００２２】
初期ベクトルＩＶをディスクに予め記憶させておくことにより初期ベクトルＩＶを取得する方法がある。この方法によると、記録媒体に予め初期ベクトルＩＶが記録されており、読み出されるセクタデータと、その記録されている初期ベクトルＩＶがドライブ側とホスト側に提供される。しかしながら、この方式によると、同じ初期ベクトルＩＶが繰り返し用いられることになり、結果として、初期ベクトルＩＶを適当に更新させることで、平文のデータが特別なパターンのデータであることを特定させることを困難とし、データのすり替え、データの改竄行為を防止することができないといった課題があった。
【００２３】
また、上述したように、初期ベクトルＩＶは、更新される方が好ましいといった課題があった。
【００２４】
本発明はこのような状況に鑑みてなされたものであり、初期ベクトルＩＶを更新できるようにし、セキュリティを高めることを目的とする。
【課題を解決するための手段】
【００２５】
本発明の情報処理装置は、第１に、所定の記録媒体へのデータの書き込みを指示するコマンドに含まれる所定の情報か、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報か、または、所定の記録媒体に記録されている所定の情報のうちのいずれか１つの情報を取得する取得手段と、乱数を発生する発生手段と、取得手段により取得された情報と、発生手段により発生された乱数を用いて初期ベクトルを生成する生成手段と、生成手段により生成された初期ベクトルと所定の鍵を用いてデータを暗号化する暗号化手段と、暗号化手段により暗号化されたデータと、生成手段により生成された初期ベクトルを多重化して出力する出力手段とを備えることを要旨とする。
【００２６】
第２に、前記第１の要旨に加えて、前記取得手段により取得される情報は、ＬＢＡ（Logical Block Address）であることを要旨とする。
【００２７】
第３に、前記第１の要旨に加え、前記取得手段により取得される情報は、Transfer Lengthであることを要旨とする。
【００２８】
第４に、前記第１の要旨に加え、前記取得手段により取得される情報は、ＰＳＮ（Physical Sector Number）であることを要旨とする。
【００２９】
本発明の制御方法は、所定の記録媒体へのデータの書き込みを指示するコマンドに含まれる所定の情報か、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報か、または、所定の記録媒体に記録されている所定の情報のうちのいずれか１つの情報を取得する取得ステップと、乱数を発生する発生ステップと、取得ステップの処理で取得された情報と、発生ステップの処理で発生された乱数を用いて初期ベクトルを生成する生成ステップと、生成ステップの処理で生成された初期ベクトルと所定の鍵を用いてデータを暗号化する暗号化ステップと、暗号化ステップの処理で暗号化されたデータと、生成ステップの処理で生成された初期ベクトルを多重化する多重化ステップとを含むことを要旨とする。
【００３０】
本発明のプログラムは、所定の記録媒体へのデータの書き込みを指示するコマンドに含まれる所定の情報か、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報か、または、所定の記録媒体に記録されている所定の情報のうちのいずれか１つの情報を取得する取得ステップと、乱数を発生する発生ステップと、取得ステップの処理で取得された情報と、発生ステップの処理で発生された乱数を用いて初期ベクトルを生成する生成ステップと、生成ステップの処理で生成された初期ベクトルと所定の鍵を用いてデータを暗号化する暗号化ステップと、暗号化ステップの処理で暗号化されたデータと、生成ステップの処理で生成された初期ベクトルを多重化する多重化ステップとを含む処理をコンピュータに実行させることを要旨とする。
【００３１】
本発明の記録媒体は、第１の記録媒体へのデータの書き込みを指示するコマンドに含まれる所定の情報か、第２の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報か、または、第３の記録媒体に記録されている所定の情報のうちのいずれか１つの情報を取得する取得ステップと、乱数を発生する発生ステップと、取得ステップの処理で取得された情報と、発生ステップの処理で発生された乱数を用いて初期ベクトルを生成する生成ステップと、生成ステップの処理で生成された初期ベクトルと所定の鍵を用いてデータを暗号化する暗号化ステップと、暗号化ステップの処理で暗号化されたデータと、生成ステップの処理で生成された初期ベクトルを多重化する多重化ステップとを含むことを要旨とするコンピュータが読み取り可能なプログラムを記録している。
【００３２】
本発明においては、記録媒体からの読み出しや書き込みを指示するためのコマンドから、または、記録媒体自体に書き込まれている情報から、所定の情報が読み出され、その所定の情報が用いられて、データの暗号化に用いられる初期ベクトルが生成される。
【発明の効果】
【００３３】
本発明によれば、装置間での転送路上におけるセキュリティを高めることが可能となる。
【００３４】
また、本発明によれば、初期ベクトルを更新することができ、同一のデータを暗号化しても、同一の暗号文が生成されるようなことを防ぐことが可能となる。もって出力されるデータのすり替え、データの改竄行為を防止することができる。
【発明を実施するための最良の形態】
【００３５】
以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００３６】
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
【００３７】
本発明の情報処理装置（例えば、図３のソース３１）は、所定の記録媒体へのデータの書き込みを指示するコマンドに含まれる所定の情報か、所定の記録媒体からのデータの読み出しを指示するコマンドに含まれる所定の情報か、または、所定の記録媒体に記録されている所定の情報のうちのいずれか１つの情報を取得する取得手段（例えば、図３のＩＶ生成部７２）と、乱数を発生する発生手段（例えば、図３の乱数発生部７１）と、取得手段により取得された情報と、発生手段により発生された乱数を用いて初期ベクトルを生成する生成手段（例えば、図３のＩＢ生成部７２）と、生成手段により生成された初期ベクトルと所定の鍵を用いてデータを暗号化する暗号化手段と、暗号化手段により暗号化されたデータと、生成手段により生成された初期ベクトルを多重化して出力する出力手段（例えば、図３の多重化部７４）とを少なくとも備える。
【００３８】
以下に、本発明の実施の形態について図面を参照して説明する。
【００３９】
図３は、本発明を適用したシステムの一実施の形態の構成を示す図である。
【００４０】
図３に示したシステムは、データを供給するソース３１と、データの供給を受けるシンク３２から構成されている。図３に示したシステムが、データの再生を行う再生装置に適用された場合、ソース３１は、所定の記録媒体からデータを読み出すドライブ側の装置であり、シンク３２は、読み出されたデータを処理するホスト側（例えば、パーソナルコンピュータなど）の装置である。
【００４１】
図３に示したシステムが、データの記録を行う記録装置に適用された場合、ソース３１は、所定のデータを提供する例えばパーソナルコンピュータなどのホスト側の装置であり、シンク３２は、所定の記録媒体がセットされ、そのセットされた記録媒体にソース３１側から供給されるデータを書き込むドライブ側の装置である。
【００４２】
データ（セクタデータ５２）が読み出される、または、データ（セクタデータ１０１）が書き込まれる記録媒体（図３においては不図示）は、例えば、CD-ROM ( Compact Disc-ROM )、CD-R（Compact Disc-Recordable）、CD-RW ( Compact Disc-ReWritable )、DVD-ROM ( Digial Versatile Disc-ROM )、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）を生成するために設けられている。
【００４５】
ＩＶ生成部７２は、乱数発生部７１により発生された乱数Ｒも供給される。ＩＶ生成部７２により生成された初期ベクトルＩＶは、暗号化部７３と多重化部７４に供給される。暗号化部７３は、供給されたセクタデータ５２を鍵Ｋｓ（図３には図示していないが、認証処理部で生成されるセッションキー）と、初期ベクトルＩＶを用いて暗号化し、暗号文を多重化部７４に供給する。多重化部７４は、ＩＶ生成部７２から供給された初期ベクトルＩＶと、暗号化部７３から供給された暗号文を多重化（暗号文に初期ベクトルＩＶを付加）する。
【００４６】
ソース３１側からは、セクタデータ５２が暗号化された暗号文と、セクタアドレス５１を用いて生成された初期ベクトルＩＶが多重化されたデータが出力される。
【００４７】
ソース３１から出力されたデータは、シンク３２の分離部９１に供給される。分離部９１は、供給されたデータから、初期ベクトルＩＶと暗号文を分離する。分離された初期ベクトルＩＶと暗号文は、共に復号部９２に供給される。復号部９２は、鍵Ｋｓと初期ベクトルＩＶを用いて復号処理を実行し、セクタデータ１０１（ソース３１側で取得されたセクタデータ５２と同一のデータ）を生成する。
【００４８】
図３に示した暗号化部７３は、図１に示したように、排他的論理和回路１１と暗号化部１２とを組み合わせることにより構成される。その説明は既にしたので、ここでは省略する。ＩＶ生成部７２は、図１における排他的論理和回路１１−１に供給される初期ベクトルＩＶを生成する。また、鍵Ｋｓは、図３においては図示していないが、シンク３２との間で認証処理を行う認証処理部から供給され、暗号化部１２−１乃至１２−Ｎの各部に供給される。
【００４９】
一方、図３に示した復号部９２は、図２に示したように、排他的論理和回路２１と暗号化部２２とを組み合わせることにより構成される。その説明は既にしたので、ここでは省略する。分離部９１は、図２における排他的論理和回路２１−１に供給される初期ベクトルＩＶを、供給されたデータから分離（抽出）する。また、鍵Ｋｓは、図３においては図示していないが、ソース３１との間で認証処理を行う認証処理部から供給され、復号部２２−１乃至２２−Ｎの各部に供給される。
【００５０】
図３に示した各部は、ハードウェアで構成しても良いし、ソフトウェアで構成しても良い。
【００５１】
以下に、ＩＶ生成部７２がどのように初期ベクトルＩＶを生成するかについて説明する。
【００５２】
図４は、ＩＶ生成部７２における初期ベクトルＩＶの生成について説明するための図である。初期ベクトルＩＶは、セクタアドレス５１を用いて生成される。セクタアドレス５１としては、コマンドパケット１２１に含まれるＬＢＡ（Logical Block Address）、または、ディスク１３１に含まれる（記録されている）ＰＳＮ（Physical Sector Number：物理セクタ番号）を用いることができる。
【００５３】
ＬＢＡは、論理的なアドレスを示し、例えば、リードコマンドに含まれ、ディスク２０３上の読み出すべきデータの物理媒体に依存せずにソース３１とシンク３２間で共通的に扱うことを可能とする論理的なアドレスを示す。ＬＢＡに対し、ＰＳＮは、物理的なアドレスを示す。コマンドパケット１２１には、ＬＢＡが含まれるが、このＬＢＡは、ディスク１３１上の論理的なアドレスを示し、実際の物理的なアドレスは示していないため、物理媒体から読み出した物理的なアドレスを示すＰＳＮから共通に扱える論理的なアドレスへ変換するといった処理が、必要に応じ行われる。
【００５４】
ＬＢＡとＰＳＮは、論理的なアドレスを示すものと、物理的なアドレスを示すものという点で異なるが、共に、データの記録されている（記録する）アドレスを示す点で共通している。また、ＬＢＡとＰＳＮは、読み出すべきセクタデータ毎、または、書き込むべきセクタデータ毎に異なる値となるため、そのような値を用いて初期ベクトルＩＶを生成すれば、初期ベクトルＩＶも、セクターデータ毎に更新することが可能となる。
【００５５】
ここで、ＬＢＡについて説明を加える。ＬＢＡは、コマンドパケット１２１に含まれる。コマンドパケットの詳細はINCITS T10 WORKING DRAFT “MultiMedia Command Set-4 (MMC-4)” に記述がある。ここでは、以下の説明に必要な部分について説明を加える。
【００５６】
コマンドパケット１２１は、所定の記録媒体、ここでは、ディスク１３１に対してデータを書き込む場合に発行されるライトコマンド（Write command）、または、ディスク１３１からデータを読み出す場合に発行されるリードコマンド（Read command）である。
【００５７】
図４に示したように、コマンドパケット１２１には、“Operation Code”が含まれる。この“Operation Code”には、リードコマンドであるか、ライトコマンドであるかを示すデータが書き込まれる。よって、この部分に書き込まれているデータを参照することで、コマンドパケット１２１を受け取った側は、リードコマンドであるか、ライトコマンドであるかを判別することが可能となっている。また、“Operation Code”は、１バイトのデータである
【００５８】
“Logical Block Address（LBA）”には、コマンドパケット１２１がリードコマンドである場合には、読み出すべきアドレスの開始ＬＢＡが書き込まれ、コマンドパケット１２１がライトコマンドである場合には、書き込むべきアドレスの開始ＬＢＡが書き込まれている。また、“Logical Block Address”は、４バイトのデータである。
【００５９】
“Transfer Length”には、コマンドパケット１２１がリードコマンドである場合には、読み出しセクタ数を指示するデータが書き込まれ、コマンドパケット１２１がライトコマンド１０４である場合には、書き込みセクタ数を指示するデータが書き込まれる。また、“Transfer Length”は、４バイトのデータである。
【００６０】
初期ベクトルＩＶを生成するのに、ＬＢＡが用いられる場合、図４に示したようなコマンドパケット１２１に含まれるＬＢＡが用いられる。
【００６１】
初期ベクトルＩＶを生成するのに、ＰＳＮが用いられる場合、図４に示すように、ディスク１３１に記録されているＰＳＮが用いられる。ここで、ディスク１３１に記録されているデータについて説明を加える。図５は、記録媒体がディスク状のものである場合のデータ構造について説明するための図である。図５に示すように、ディスク１３１は内周からリードインエリア１３２、ユーザデータエリア１３３、およびリードアウトエリア１３４という記録領域を有している。
【００６２】
読出し専用ディスクとして、例えば 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 と定義される。この変換を行う変換部（不図示）の変換方法に関し、INCITS T10 WORKING DRAFT “MultiMedia Command Set-4 (MMC-4)” において各種光ディスクディスクにおける方法が記述されている。
【００６５】
ユーザデータエリア１３３には、オーディオデータ、静止画データ、ビデオデータ、ゲームデータなどのコンテンツ自体が記録される。ユーザーが自由に読み出し書き込みできるセクタデータ５２は、このユーザデータエリア１３３内のセクタデータである。リードアウトエリア１３４は、ユーザデータエリア１３３の終端であることを示す領域である。
【００６６】
ディスク１３１のリードインエリア１３２、ユーザデータエリア１３３、リードアウトエリア１３４は、図６に示すように、セクタヘッダ１４１とセクタデータ１４２から構成されている。ここでは、セクタヘッダ１４１は、１８バイトのデータであり、セクタデータ１４２は、２０４８バイトのデータとする。このような、セクタヘッダ１４１とセクタデータ１４２の組み合わせによるデータが複数、各データエリアに記録されている。
【００６７】
このようなデータ構造を有するディスク１３１に、ＰＳＮは書き込まれており、その書き込まれているＰＳＮが用いられて初期ベクトルＩＶが生成される。
【００６８】
このように、本実施の形態においては、ＬＢＡまたはＰＳＮという、データが記録されている位置（またはデータが書き込まれる位置）を示すアドレスの値が用いられて初期ベクトルＩＶが生成される。以下の説明においては、ＬＢＡとＰＳＮを、それぞれ区別する必要がない場合、どちらか一方を指す記載として、セクタアドレスと記述する。
【００６９】
図４を参照するに、セクタアドレス５１は、ＩＶ生成部７２に供給される。ＩＶ生成部７２に供給されるセクタアドレス５１は、４バイトのデータであるが、初期ベクトルＩＶとして用いられるのは、１６バイトのデータである。そこで、ＩＶ生成部７２は、供給された４バイトのセクタアドレス５１を１６バイトのデータに変換するデータ拡張部１１１を備える。
【００７０】
データ拡張部１１１は、供給された４バイトのセクタアドレス５１を、４個連結することにより、１６バイトのデータにデータ拡張する。図４においては、４バイトのセクタアドレス５１を“ＡＤＲ”と図示し、データ拡張部１１１により拡張された結果としての１６バイトのデータを［ＡＤＲ||ＡＤＲ||ＡＤＲ||ＡＤＲ］と図示してある。４個のセクタアドレス５１を連結する際、単に、連結するだけでも良いが、奇数番目のビットのみを用いて、または、偶数番目のビットのみを用いて１６バイトにデータ拡張するなどの方法で、データ拡張が行われるようにしても良い。
【００７１】
また、Ｈａｓｈ関数などを用いてデータ拡張が行われるようにしても良い。
【００７２】
いずれの方法でデータ拡張が行われても良いが、この場合、データ拡張部１１１からは、１６バイトのデータが出力され、排他的論理和回路１１２に供給される。排他的論理和回路１１２は、供給された１６バイトのデータと、１６バイトの乱数Ｒの排他的論理和を算出し、その値を、１６バイトの初期ベクトルＩＶとして出力する。
【００７３】
このように、本実施の形態においては、パケットコマンド１２１に含まれるＬＢＡ、または、ディスク１３１に記録されているＰＳＮの、どちらか一方をセクタアドレス５１とし、そのセクタアドレス５１から初期ベクトルＩＶが生成される。ＬＢＡまたはＰＳＮのどちらを用いて初期ベクトルＩＶを生成するかについては、以下の説明において明らかにする。
【００７４】
図７は、初期ベクトルＩＶの生成に関わる他の方法を説明するための図である。図７に示した例では、コマンドパケット１２１に含まれる“Transfer Length”を用いて初期ベクトルＩＶが生成される。コマンドパケット１２１に含まれる“Transfer Length”は、カウンタ１６１を介してＩＶ生成部７２に供給される。
【００７５】
“Transfer Length”は、読み出すまたは書き込むセクタ数を示すものであり、その値は、ＬＢＡやＰＳＮと異なり、常に更新されるというものではない。よって、仮に、“Transfer Length”の値をそのまま用いて初期ベクトルＩＶを生成すると、初期ベクトルＩＶを生成するためのデータが同じ値となってしまう。
【００７６】
そこで、“Transfer Length”の値が入力される毎に値が更新されるようにする仕組みとして、図７に示したように、ＩＶ生成部７２の直前にカウンタ１６１を設ける（ＩＶ生成部７２の一部として設けても良い）。カウンタ１６１は、入力された“Transfer Length”の値を、例えば、順次加算し、その累積加算された値を、データ拡張部１６２に供給する。カウンタ１６１を設けることにより、“Transfer Length”が入力される毎に、異なる値が、データ拡張部１６２に供給されるようにすることができる。
【００７７】
データ拡張部１６２は、図４に示したデータ拡張部１１１と同様の処理を実行する。すなわち、入力される４バイトのデータ（図７においては、ＣＮＴと図示してある）を、例えば、連結処理することにより、１６バイトのデータ（図７においては、［ＣＮＴ||ＣＮＴ||ＣＮＴ||ＣＮＴ］と図示してある）にデータ拡張し、排他的論理和回路１６３に供給する。
【００７８】
排他的論理和回路１６３は、供給された１６バイトのデータと、１６バイトの乱数Ｒの排他的論理和を算出し、その値を、１６バイトの初期ベクトルＩＶとして出力する。
【００７９】
このようにして、コマンドパケット１２１に含まれる“Transfer Length”が用いられて初期ベクトルＩＶが生成される。“Transfer Length”を用いた場合でも、カウンタ１６１を設け、“Transfer Length”毎に、乱数Ｒと排他的論理和が演算される値を更新されるようにすることで、生成される初期ベクトルＩＶの値を“Transfer Length”毎に更新することができる。もって、このような初期ベクトルＩＶを用いた暗号化は、セキュリティが向上されたものとすることができる。
【００８０】
ＬＢＡ、ＰＳＮ、または、“Transfer Length”が用いられて、ＩＶ生成部７２（図３）により生成される初期ベクトルＩＶは、暗号化部７３と多重化部７４（図３）に供給される。次に、図８を参照して、暗号化部７３と多重化部７４の処理について説明する。なお、図８においては、初期ベクトルＩＶをセクタアドレス５１から生成するとして説明を行う。
【００８１】
まず、４バイトで構成されるセクタアドレス５１が、ＩＶ生成部７２に供給される。ＩＶ生成部７２は、図４を参照して説明したように、データ拡張部１１１により、入力された４バイトのセクタアドレス５１を、１６バイトのデータにデータ拡張し、そのデータ拡張されたデータと、乱数Ｒの排他的論理和を演算し、初期ベクトルＩＶを生成する。生成された初期ベクトルＩＶは、暗号化部７３と多重化部７４に供給される。
【００８２】
暗号化部７３には、鍵Ｋｓと、暗号化すべきデータとして、２０４８バイトのSector Dataも供給される。暗号化部７３により暗号化された２０４８バイトのSector Dataは、Encrypted Sector Dataとして、多重化部７４に供給される。多重化部７４には、初期ベクトルＩＶも供給される。多重化部７４は、供給された初期ベクトルＩＶに、その初期ベクトルＩＶを用いて暗号化されたEncrypted Sector Dataを多重化（付加）し、出力する。
【００８３】
暗号化部７３は、２０４８バイトのデータが供給され、そして、２０４８バイトの暗号化されたデータが出力されるとして説明したが、例えば、暗号化部２１２が行う暗号化が、ＣＢＣ（Cipher Block Chaining）方式を用いたものである場合、実際には１６バイトに分割されたブロック毎に暗号化が行われ、出力される。
【００８４】
図９は、ＣＢＣ方式に基づき暗号化部７３が暗号化を行う場合の、暗号化部７３の内部構成例を示すとともに、データの流れを示す図である。内部構成は、上述したように、図１に示したものと同様に、排他的論理和回路と暗号化部の組み合わせにより構成されている。よって、図１と同じ符号を付し、説明を続ける。
【００８５】
図９に示すように、２０４８バイトのSector Dataは、１６バイト（Byte）毎のデータに分割される。１６バイト毎に分割されるので、結果的に、１２８個のブロックに分割されることになる。図１を参照して既に説明したように、各ブロックは、対応する排他的論理和回路１１−１乃至１１−１２８に供給される。そして、各排他的論理和回路１１−１乃至１１−１２８から出力されたデータは、対応する暗号化部１２−１乃至１２−１２８に供給される。
【００８６】
暗号化部１２−１乃至１２−１２８により暗号化されたデータは、Encrypted Sector Dataとして出力される。暗号化部１２−１乃至１２−１２７から出力されたデータは、後段の排他的論理和回路１１−２乃至１１−１２８にも供給される。しかしながら、排他的論理和回路１１−１には、前段の暗号化部が存在していないため、前段から供給されるデータはない。そのために、ＩＶ生成部７２により生成された初期ベクトルＩＶが、排他的論理和回路１１−１に供給される構成とされている。
【００８７】
供給される初期ベクトルＩＶは、ＬＢＡ、ＰＳＮ、または、Transfer Lengthであり、各セクタ毎に、各セクタに対応する初期ベクトルＩＶが生成されることになる。例えば、ソース３１側で発行されるコマンドパケット１２１のＬＢＡが“＃１”であるときに生成される初期ベクトルＩＶと、ＬＢＡが“＃４”であるときに生成される初期ベクトルＩＶは、当然異なるものとなる。
【００８８】
また、初期ベクトルＩＶは、セクタデータ５１などがそのまま流用されるのではなく、ハッシュ関数などが用いられてデータ拡張され、乱数Ｒとの排他的論理和を用いて加工されて生成される。このようにすることで、同一の初期ベクトルＩＶが生成される確率を低くすることができる。仮に同一のSector Dataを暗号化したとしても、初期ベクトルＩＶが異なるために（初期ベクトルＩＶが同一のものとなる可能性を低くすることができるために）、暗号化されたものは異なるデータとすることができる。もって、暗号化される前のSector Dataが、暗号化されたデータから推測されてしまう（解読されてしまう）ようなことを防ぐことが可能となる。
【００８９】
次に、図１０を参照し、シンク３２側の処理およびデータの流れについて説明する。まず、シンク３２の分離部９１に、ソース３１側からのデータが供給される。この供給されるデータは、初期ベクトルＩＶと、その初期ベクトルＩＶを用いて暗号化されたEncrypted Sector Dataである。
【００９０】
分離部９１は、供給されたデータから、初期ベクトルＩＶとEncrypted Sector Dataを分離し、共に、復号部９２に供給する。復号部９２には、鍵Ｋｓも供給される。この鍵Ｋｓは、ソース３１側の暗号化部７３に供給された鍵Ｋｓと同様のものであり、ソース３１との間における認証処理の過程で生成された鍵を、鍵Ｋｓとして用いることができる。
【００９１】
このように、復号部９２には、初期ベクトルＩＶ、鍵Ｋｓ、および、２０４８バイトのEncrypted Sector Dataが供給される。復号部９２は、初期ベクトルＩＶ、鍵Ｋｓを用いてEncrypted Sector Dataを復号し、２０４８バイトのSector Dataを生成する。生成されたSector Dataは、図示されていないアプリケーションソフトウェアやディスプレイなどに供給される。
【００９２】
復号部９２には、２０４８バイトのデータが供給され、復号され、そして、２０４８バイトの復号されたデータが出力されるとしたが、暗号化部７３と同様に、例えば、復号部９２が行う復号が、ＣＢＣ（Cipher Block Chaining）方式を用いたものである場合、実際には１６バイトに分割されたブロック毎に復号が行われ、出力される。
【００９３】
図１１は、ＣＢＣ方式に基づき復号部９２が復号を行う場合の、復号部９２の内部構成例を示すとともに、データの流れを示す図である。内部構成は、上述したように、図２に示したものと同様に、排他的論理和回路と復号部の組み合わせにより構成されている。よって、図２と同じ符号を付し、説明を続ける。
【００９４】
図１１に示すように、２０４８バイトのEncrypted Sector Dataは、１６バイト（Byte）毎のデータに分割される。１６バイト毎に分割されるので、結果的に、１２８個のブロックに分割されることになる。図２を参照して既に説明したように、各ブロックは、対応する復号部２２−１乃至２２−１２８に供給される。そして、各復号部２２−１乃至２２−１２８から出力されたデータは、対応する排他的論理和回路２１−１乃至２１−１２８に供給される。
【００９５】
排他的論理和回路２１−１乃至２１−１２８により排他的論理和が演算されたデータは、Sector Dataとして、図示されていないディスプレイなどに出力される。復号部２２−１乃至２２−１２７に供給されるデータ（Encrypted Sector Data）は、後段の排他的論理和回路２１−２乃至２１−１２８にも供給される。しかしながら、排他的論理和回路２１−１には、前段の復号部が存在していないため、前段から供給されるデータはない。そのために、分離部９１により分離された初期ベクトルＩＶが、排他的論理和回路２１−１に供給される構成とされている。
【００９６】
この供給される初期ベクトルＩＶは、ソース３１の暗号化部７３で暗号化を行う際に用いられた初期ベクトルＩＶと同一のものであり、多重化部７４により対応するEncrypted Sector Dataに多重化されたものである。よって、暗号化部７３と復号部９２には、同一の初期ベクトルＩＶが供給されることになる。
【００９７】
次に、ソース３１はドライブ装置であるとし、シンク３２はホストであるとして、さらに説明を続ける。
【００９８】
図１２は、本発明を適用したシステムの構成例を示す図である。図１２に示した構成例は、ディスク２０３からデータを読み出す（再生する）再生装置の構成例である。ドライブ装置２０１は、認証処理部２１１を有し、ホスト２０２は、認証処理部２２１を有する。認証処理部２１１と認証処理部２２１により、相互認証に関わる処理が実行される。
【００９９】
ディスク２０３からデータを読み出す再生装置は、ドライブ装置２０１の暗号化部２１２、多重化部２１３、ＩＶ生成部２１４、乱数発生部２１５、および、アクセス処理部２１６を含み、ホスト２０２の分離部２２２と復号部２２３を含む構成とされている。
【０１００】
暗号化部２１２には、アクセス処理部２１６による処理により、ディスク２０３から読み出されたセクタデータと、認証処理部２１１から鍵Ｋｓが供給される。また、暗号化部２１２には、ＩＶ生成部２１４により生成された初期ベクトルＩＶも供給される。
【０１０１】
暗号化部２１２は、供給されたセクタデータを鍵Ｋｓと初期ベクトルＩＶを用いて暗号化し、多重化部２１３に供給する。多重化部２１３は、暗号化されたセクタデータと、初期ベクトルＩＶを多重化し、ホスト２０２の分離部２２２に供給する。よって、ドライブ装置２０１からホスト２０２に供給されるデータは、暗号化されたセクタデータと、初期ベクトルＩＶである。
【０１０２】
ＩＶ生成部２１４は、暗号化部２１２に供給する初期ベクトルＩＶを、ディスク２０３から読み出されるＰＳＮと乱数発生部２１５により発生される乱数Ｒを用いて生成する。このＰＳＮを用いた初期ベクトルＩＶの生成については、図４を参照して既に説明したのでその説明は省略する。アクセス処理部２１６は、ホスト２３１から供給されるリードコマンド２３１に基づき、ディスク２０３にアクセスし、データを読み出すための処理を実行する。
【０１０３】
なお、図示はしないが、ホスト２３１から供給されるリードコマンド２３１がＩＶ生成部２１４にも供給されるように構成し、リードコマンド２３１に含まれるＬＢＡ（図４）を用いて初期ベクトルＩＶを生成するようにしても良い。
【０１０４】
一方、ホスト２０２の分離部２２２は、ドライブ装置２０１からインターフェースを介して暗号化されたセクタデータの供給をうける。この供給されるセクタデータには、初期ベクトルＩＶが付加されているため、分離部２２２は、その初期ベクトルＩＶを、セクタデータから分離する。
【０１０５】
復号部２２３は、認証処理部２２１から供給される鍵Ｋｓと分離部２２２により分離された初期ベクトルＩＶを用いて復号処理を実行し、セクタデータ（ディスク２０３から読み出されたセクタデータと同一のデータ）を生成する。
【０１０６】
図１２に示した構成の再生装置における処理について、図１３のタイミングチャートを参照して説明する。ホスト２０２は、ステップＳ１１において、ドライブ装置２０１は、ステップＳ３１において、それぞれ相互認証（Authentication）を行う。この相互認証が正常に行われた場合のみ、次のステップに処理が進められる。また、この相互認証の結果、ドライブ装置２０１の認証処理部２１１とホスト２０２の認証処理部２２１との、それぞれにおいて鍵Ｋｓが生成される（共有される）ことになる。
【０１０７】
ホスト１０２は、ステップＳ１２において、リードコマンド２３１を発行する。発行されるリードコマンド２３１は、例えば、図４に示したデータ構成のコマンドパケット１２１で、“Operation Code”がリードコマンドを示す値が記載されているコマンドである。ここでは、その発行されるリードコマンド２３１に含まれる“ＬＢＡ”は“＃１”であり、“Transfer Length”は“３”であるコマンドが発行されたとする。
【０１０８】
ステップＳ１２における処理で発行されたリードコマンド２３１は、ステップＳ３２において、ドライブ装置２０１のアクセス処理部２１６に供給される。アクセス処理部２１６は供給されたコマンドの“Operation Code”を参照し、リードコマンド２３１であることを認識し、“Logical Block Address”を参照し、この場合、“ＬＢＡ”＝＃１ということを認識し、“Transfer Length”を参照して、この場合、“Transfer Length”＝３ということを認識する。
【０１０９】
そして、アクセス処理部２１６は、転送開始ＬＢＡを示す“ＬＢＡ”＝＃１から、“Transfer Length”で示されるセクタ数（この場合３）だけディスク２０３からデータが読み出されるように制御する。すなわち、アクセス処理部２１６は、ディスク２０３からデータを読み出す処理を制御するわけだが、図１２には図示されていないLBA/PSN変換により、リードコマンド２３１で指定されたＬＢＡに対応するＰＳＮを取得する。
【０１１０】
このような変換が行われるのは、ドライブ装置２０１で行われるのは、光ディスク等のディスク２０３の記録領域を所定のサイズに分けた物理的な物理セクタが、論理的な論理セクタに割り当てられているからである。そして、外部の装置（この場合、ホスト２０２）からは、データを読み出すべき論理セクタ（ＬＢＡ）が指定され、ドライブ装置２０１では、その論理セクタに割り当てられている物理セクタ（ＰＳＮ）からデータが読み出されるようになされているからである。
【０１１１】
ＬＢＡがＰＳＮに変換されると、ステップＳ３３の処理として、その変換されたＰＳＮが指し示すディスク２０３上の位置が検索される。この検索の結果、ピックアップがディスク２０３上の、読み出すべき位置に移動されるなどの処理が実行され、ディスク２０３からデータが読み出される。
【０１１２】
ステップＳ５２において、ディスク２０３からデータが読み出される。この場合、“ＬＢＡ”＝＃１に対応するデータである“Physical Sector Data ＃１”が読み出される。ステップＳ４４において、ディスク２０３から読み出されたデータ（セクタデータ＃１）は、暗号化部２１２に供給されると同時にそのセクタデータ＃１に対応するＰＳＮ＃１がＩＶ生成部２１４へ供給される。
【０１１３】
ＩＶ生成部２１４は、供給されたＰＳＮ＃１と、乱数発生部２１５から供給される乱数Ｒを用いて初期ベクトルＩＶ＃１を生成し、暗号化部２１２と多重化部２１３に出力する。暗号化部２１２には、認証処理部２１１から鍵Ｋｓが供給され、ＩＶ生成部２１４から初期ベクトルＩＶ＃１が供給される。暗号化部２１２は、これらの鍵Ｋｓと初期ベクトルＩＶ＃１を用いて、セクタデータ＃１を暗号化する。暗号化されたセクタデータ＃１（この場合、Encrypted Sector Data ＃１）は、多重化部２１３により、初期ベクトルＩＶ＃１と多重化され、ステップＳ３５の処理として、ホスト２０２に供給される。
【０１１４】
ホスト２０２の分離部２２２は、供給されたデータから、Encrypted Sector Data ＃１と、初期ベクトルＩＶ＃１を分離し、復号部２２３に供給する。復号部２２３は、供給されたEncrypted Sector Data ＃１を、認証処理部２２１から供給される鍵Ｋｓと分離部２２２から供給される初期ベクトルＩＶ＃１を用いて復号し、セクタデータ＃１を生成する。このようにして生成されたセクタデータ＃１は、図示されていないアプリケーションソフトウェアやディスプレイやスピーカに提供される。
【０１１５】
このような処理がドライブ装置２０１、ホスト２０２、および、ディスク２０３間で繰り返される。ディスク２０３側では、ステップＳ５３，Ｓ５４の各処理で、順次、Physical Sector Data ＃２，＃３が読み出される。すなわち、ディスク２０３側からは、ドライブ装置２０１の検索制御に応じて順次、連続的にセクターデータが読み出され、ドライブ装置２０１に供給される。ドライブ装置２０１は、ステップＳ３６乃至Ｓ３９の各ステップの処理において、順次、供給されたセクタデータを受信し、暗号化し、多重化し、ホスト２０２に供給する。
【０１１６】
よって、セクタデータ毎に初期ベクトルＩＶも生成される。すなわち、この場合、ディスク２０１からPhysical Sector Data ＃２，＃３がそれぞれ読み出されると、そのPhysical Sector Data ＃２，＃３に対応するＰＳＮを用いて、初期ベクトルＩＶ＃２，＃３も生成される。このようにして、本実施の形態においては、セクタデータ毎に初期ベクトルＩＶが生成されるため、かつ、生成される初期ベクトルＩＶは、セクタデータ毎に異なるため、インタフェースを介して行われるデータの授受をよりセキュリティを高めたものとすることができる。
【０１１７】
このようにして、ディスク２０３からの読み出しの動作（再生処理）が行われる。
【０１１８】
次に、ディスク２０３に対するデータの書き込み（記録）について説明する。図１４は、ディスク２０３にデータを記録する記録装置の構成例を示す図である。ドライブ装置２０１は、認証処理部２１１を有し、ホスト２０２は、認証処理部２２１を有する。認証処理部２１１，２２１は、再生装置と共用できる（同一のものを利用できる）ため、図１２に示した再生装置と同様の符号を付す。
【０１１９】
ディスク２０３にデータを書き込む記録装置は、ドライブ装置２０１の復号部２５１、分離部２５２、および、アクセス処理部２１６を含み、ホスト２０２の暗号化部２６１、多重化部２６２、ＩＶ生成部２６３、乱数発生部２６４、および、ＬＢＡ計算部２６５を含む構成とされている。
【０１２０】
ホスト２０２の暗号化部２６１には、図示されていない記録媒体などから読み出され、ディスク２０３に記録されるセクタデータと、認証処理部２２１から暗号化に用いる鍵Ｋｓが供給される。また、暗号化部２６１には、ＩＶ生成部２６３により生成された初期ベクトルＩＶも供給される。
【０１２１】
暗号化部２６１は、供給されたセクタデータを鍵Ｋｓと初期ベクトルＩＶを用いて暗号化し、多重化部２６２に供給する。多重化部２６２は、暗号化されたセクタデータと、初期ベクトルＩＶを多重化し、ドライブ装置２０１の分離部２６２に供給する。よって、ホスト２０２からドライブ装置２０１に供給されるデータは、暗号化されたセクタデータと、初期ベクトルＩＶである。
【０１２２】
ＩＶ生成部２６３は、暗号化部２６１に供給する初期ベクトルＩＶを、ライトコマンド２７１に含まれるＬＢＡと乱数発生部２６４により発生される乱数Ｒを用いて生成する。ＩＶ生成部２６３に供給されるＬＢＡは、ＬＢＡ計算部２６５から供給される。ＬＢＡ計算部２６５にはライトコマンド２７１が供給される。ＬＢＡ計算部２６５は、供給されたライトコマンド２７１からＬＢＡを抽出し、セクタデータ毎に異なる値がＩＶ生成部２６３に供給されるように計算を行う。
【０１２３】
ライトコマンド２７１には、書き込みの開始位置を示すＬＢＡのみが記述されており、書き込むべきセクタデータ毎のＬＢＡが記述されているわけではない。よって、セクタデータ毎に異なる初期ベクトルＩＶが用いられて暗号化が行われるようにするために、ＬＢＡ計算部２６５が設けられている。ＬＢＡ計算部２６５は、ライトコマンド２７１に含まれるＬＢＡの値を基準とし、その値を、例えば、セクタデータ毎に１づつ増加することにより値を更新するといった処理を行う。
【０１２４】
例えば、ライトコマンド２７１に含まれるＬＢＡの値が“１”の場合、ＬＢＡ計算部２５６から出力される値は、セクタデータ毎に、１、２、３、．．．といったような１づつ値が増加（インクリメント）された値である。
【０１２５】
このように処理を行うＬＢＡ計算部２６５を設けることにより、ＩＶ生成部２６３では、セクタデータ毎に異なる初期ベクトルＩＶを生成することが可能となる。
【０１２６】
ＬＢＡを用いた初期ベクトルＩＶの生成については、図４を参照して既に説明したのでその詳細な説明は省略する。
【０１２７】
一方、ドライブ装置２０１の分離部２５２は、ドライブ装置２０１からインターフェースを介して暗号化されたセクタデータの供給をうける。この供給されるセクタデータには、初期ベクトルＩＶが付加されているため、分離部２５２は、その初期ベクトルＩＶを、セクタデータから分離する。
【０１２８】
復号部２５１は、認証処理部２１１から供給される鍵Ｋｓと分離部２５２により分離された初期ベクトルＩＶを用いて復号処理を実行し、セクタデータ（ホスト２０２側でディスク２０３に記録する対象とされたセクタデータと同一のデータ）を生成する。
【０１２９】
アクセス処理部２１６は、ホスト２０２から供給されるライトコマンド２７１に基づき、ディスク２０３にアクセスし、データを書き込むための処理を実行する。
【０１３０】
図１４に示した記録装置の構成例は、ライトコマンド２７１に含まれるＬＢＡを用いて初期ベクトルＩＶを生成する場合の構成例である。すなわち、図１４に示した記録装置の構成例は、図４を参照して説明した初期ベクトルＩＶの生成の仕方を適用した場合の構成例である。
【０１３１】
図１５に、図７を参照して説明した初期ベクトルＩＶの生成の仕方を適用した場合、すなわち、ライトコマンド２７１に含まれる“Transfer Length”（以下、適宜、ＴＬと略記する）を用いて初期ベクトルＩＶを生成する場合の記録装置の構成例を示す。
【０１３２】
図１４に示した再生装置と図１５に示した再生装置の構成を比較するに、図１５に示した再生装置は、図１４に示した再生装置のＬＢＡ計算部２６５を、カウンタ２８１に置き換えた構成とされる。その他の部分は、図１４に示した再生装置と同様の構成であるので、同様の符号を付し、その説明は省略する。
【０１３３】
カウンタ２８１は、図７に示したカウンタ１６１と同様の機能を有する。すなわち、入力されたライトコマンド２７１からＴＬの値を読み出し、所定の数値Ｎに、１だけインクリメントされた値を順次ＴＬの値の分だけ出力する。
【０１３４】
所定の数値Ｎとは、ライトコマンド２７１が入力された時点で設定されている値である。また、この所定の数値Ｎは、例えば、ＴＬの値を累積加算した値である。
【０１３５】
カウンタ２８１からは、例えば、ライトコマンド２７１に含まれるＴＬの値が３である場合、３つの値がセクタデータ毎に出力される。その出力される値は、“Ｎ＋１”、“Ｎ＋２”、“Ｎ＋３”という値である。
【０１３６】
このように処理を行うカウンタ２８１を設けることにより、ＩＶ生成部２６３では、セクタデータ毎に異なる初期ベクトルＩＶを生成することが可能となる。
【０１３７】
ＴＬ（Transfer Length）を用いた初期ベクトルＩＶの生成については、図７を参照して既に説明したのでその詳細な説明は省略する。
【０１３８】
図１４または図１５に示した構成の記録装置における処理について、図１６のタイミングチャートを参照して説明する。
【０１３９】
ホスト２０２は、ステップＳ１０１において、ドライブ装置２０１は、ステップＳ１２１において、それぞれ相互認証（Authentication）を行う。この相互認証が正常に行われた場合のみ、次のステップに処理が進められる。また、この相互認証の結果、ドライブ装置２０１の認証処理部２１１とホスト２０２の認証処理部２２１との、それぞれにおいて鍵Ｋｓが生成される（共有される）ことになる。
【０１４０】
ホスト１０２は、ステップＳ１０２において、ライトコマンド２７１を発行する。発行されるライトコマンド２７１は、例えば、図４に示したデータ構成のコマンドパケット１２１で、“Operation Code”がライトコマンドを示す値が記載されているコマンドである。ここでは、その発行されるライトコマンド２７１に含まれる“ＬＢＡ”は“＃１”であり、“Transfer Length”は“３”であるコマンドが発行されたとする。
【０１４１】
ステップＳ１０２における処理で発行されたライトコマンド２７１は、ＬＢＡ計算部２６５（図１４）（または、カウンタ２８１（図１５）、以下の説明においては、代表してＬＢＡ計算部２６５を例に挙げて説明を続ける）に供給されると共に、ステップＳ１２２において、ドライブ装置２０１のアクセス処理部２１６に供給される。
【０１４２】
ドライブ装置２０１のアクセス処理部２１６は供給されたコマンドの“Operation Code”を参照し、ライトコマンド２７１であることを認識し、“Logical Block Address”を参照し、この場合、“ＬＢＡ”＝＃１ということを認識し、“Transfer Length”を参照して、この場合、“Transfer Length”＝３ということを認識する。
【０１４３】
そして、アクセス処理部２１６は、転送開始ＬＢＡを示す“ＬＢＡ”＝＃１から、“Transfer Length”で示されるセクタ数（この場合３）だけディスク２０３にデータが書き込まれるように制御する。すなわち、アクセス処理部２１６は、ディスク２０３へのデータの書き込み処理を制御するわけだが、図１４（図１５）には図示されていないLBA/PSN変換により、ライトコマンド２７１で指定されたＬＢＡに対応するＰＳＮを取得する。
【０１４４】
ＬＢＡがＰＳＮに変換されると、ステップＳ１２３の処理として、その変換されたＰＳＮが指し示すディスク２０３上の位置が検索される。この検索の結果、ピックアップがディスク２０３上の、書き込むべき位置に移動されるなどの処理が実行され、ディスク２０３へのデータの書き込みを行うための準備がされる（ステップＳ１２６）。
【０１４５】
一方ステップＳ１０３において、ホスト２０２は、ディスク２０３に書き込むデータを取得する。まず、ステップＳ１０３において、Sector Data ＃１（セクタデータ＃１）が取得される。そして、取得されたセクタデータ＃１は、暗号化部２６１に供給されると同時にそのセクタデータ＃１に対応するＬＢＡ＃１が、ＬＢＡ計算部２６５からＩＶ生成部２６３へ供給される。
【０１４６】
ＩＶ生成部２６３は、供給されたＬＢＡ＃１と、乱数発生部２６４から供給される乱数Ｒを用いて初期ベクトルＩＶ＃１を生成し、暗号化部２６１と多重化部２６２に出力する。暗号化部２６３には、認証処理部２２１から鍵Ｋｓが供給され、ＩＶ生成部２６３から初期ベクトルＩＶ＃１が供給される。暗号化部２６１は、これらの鍵Ｋｓと初期ベクトルＩＶ＃１を用いて、セクタデータ＃１を暗号化する。暗号化されたセクタデータ＃１（この場合、Encrypted Sector Data ＃１）は、多重化部２６２により、初期ベクトルＩＶ＃１と多重化され、ステップＳ１０３の処理として、ドライブ装置２０１に供給される。
【０１４７】
このような処理が、ホスト２０２側で繰り返し行われることにより、暗号化されたセクタデータと、そのセクタデータの暗号化に用いられた初期ベクトルＩＶの組が、順次、ドライブ装置２０１側に供給される。
【０１４８】
一方ドライブ装置２０１の分離部２５２は、供給されたデータから、Encrypted Sector Data ＃１と、初期ベクトルＩＶ＃１を分離し、復号部２５１に供給する。復号部２５１は、供給されたEncrypted Sector Data ＃１を、認証処理部２１１から供給される鍵Ｋｓと分離部２５２から供給される初期ベクトルＩＶ＃１を用いて復号し、セクタデータ＃１を生成する。このようにして生成されたセクタデータ＃１（Physical Sector Data ＃１）は、ステップＳ１２７の処理として、ドライブ装置２０１からディスク２０３に書き込まれる。
【０１４９】
このような処理がドライブ装置２０１側で繰り返し行われることにより、ホスト２０２側から供給されたセクタデータが、順次、ディスク２０３に書き込まれる。
【０１５０】
このように、ディスク２０１に対してセクタデータが書き込まれる場合においても、セクタデータ毎に、初期ベクトルＩＶが生成され、暗号化されるので、インタフェースを介したデータの授受をよりセキュリティを高めた状態で行うことが可能となる。
【０１５１】
図１７は、一般に先読み動作などと称されるRead Ahead動作について考慮した再生装置の構成例を示す図である。
【０１５２】
図１２に示した再生装置の構成と、図１７に示した再生装置の構成を比較するに、図１７に示した再生装置には、先読み動作を実行するために、リードコマンド処理部３０１とバッファリング・転送処理部３０２が、図１２に示した再生装置に追加された構成とされている。
【０１５３】
リードコマンド処理部３０１は、ホスト２０２側から供給されるリードコマンド２３１を処理するために設けられており、処理結果は、バッファリング・転送処理部３０２とアクセス処理部２１６に供給される構成とされている。バッファリング・転送処理部３０２は、多重化部２１３から出力されたセクタデータと初期ベクトルＩＶが多重化されたデータを、一旦記憶（バッファリング）し、ホスト２０２側に転送するための処理を実行する。
【０１５４】
その他の部分は、図１２に示した再生装置と同様の構成なので、同様の符号を付し、その説明は省略する。
【０１５５】
図１７に示した再生装置の動作について、図１８のタイミングチャートを参照して説明する。
【０１５６】
ホスト２０２は、ステップＳ２０１において、ドライブ装置２０１は、ステップＳ２２１において、それぞれ相互認証（Authentication）を行う。この相互認証が正常に行われた場合のみ、次のステップに処理が進められる。また、この相互認証の結果、ドライブ装置２０１の認証処理部２１１とホスト２０２の認証処理部２２１との、それぞれにおいて鍵Ｋｓが生成される（共有される）ことになる。
【０１５７】
ホスト２０２は、ステップＳ２０２において、リードコマンド２３１を発行する。図４に示したデータ構成のコマンドが発行されるわけだが、ここでは、“ＬＢＡ”＝＃１であり、“Transfer Length”＝３であるコマンドが発行されたとする。もちろんこの場合、“Operation Code”には、リードコマンド２３１であることを示すデータが記述されている。
【０１５８】
ステップＳ２０２における処理で発行されたリードコマンド２３１は、ステップＳ２２２において、ドライブ装置２０１のリードコマンド処理部３０１に供給される。リードコマンド処理部３０１は、供給されたコマンドの“Operation Code”を参照し、リードコマンド２３１であることを認識し、“Logical Block Address（ＬＢＡ）”を参照し、この場合、“ＬＢＡ”＝＃１ということを認識し、“Transfer Length（ＴＬ）”を参照して、この場合、“Transfer Length”＝３ということを認識する。
【０１５９】
そして、リードコマンド処理部３０１は、転送開始ＬＢＡを示す“ＬＢＡ”＝＃１と“Transfer Length”＝３というデータをバッファリング・転送処理部３０２に供給する。バッファリング・転送処理部３０２は、このようなデータの供給を受けることにより、ＬＢＡ”＝＃１からの転送要求があり、転送するセクタ数は、３単位であるということを設定する。
【０１６０】
また、リードコマンド処理部３０１は、“ＬＢＡ”＝＃１というデータを、アクセス処理部２１６に供給する。アクセス処理部２１６は、ディスク２０３からデータを読み出す処理を制御するわけだが、ここには明示されないLBA/PSN変換によりリードコマンド２３１で指定されたＬＢＡに対応するＰＳＮを取得する。
【０１６１】
ＬＢＡがＰＳＮに変換されると、ステップＳ２２３の処理として、その変換されたＰＳＮが指し示すディスク２０３上の位置が検索される。この検索の結果、ピックアップがディスク２０３上の、読み出すべき位置に移動されるなどの処理が実行され、ディスク２０３からデータが読み出される。
【０１６２】
ステップＳ２６２において、ディスク２０３から、データが読み出される。この場合、“ＬＢＡ”＝＃１に対応するデータである“Physical Sector Data ＃１”が読み出される。ステップＳ２２４において、ディスク２０３から読み出されたセクタデータ（Physical Sector Data ＃１）が、暗号化部２１２に供給されると同時に、そのセクタデータに対応するＰＳＮがＩＶ生成部２１４に供給される。
【０１６３】
ＩＶ生成部２１４は、供給されたＰＳＮと乱数発生部２１５により発生された乱数Ｒを用いて初期ベクトルＩＶを生成する。同時にＰＳＮ（ＰＳＮに対応するＬＢＡ）はバッファリング・転送処理部３０２へも入力され、バッファリング・転送処理部３０２は、ＬＢＡに対応するセクタデータを暗号化部２１２から多重化部２１３を介して受け取る用意をする。
【０１６４】
暗号化部２１２には、認証処理部２１１から鍵Ｋｓが供給され、ＩＶ生成部２１４から初期ベクトルＩＶも供給されている。暗号化部２１２は、これらの鍵Ｋｓと初期ベクトルＩＶを用いて、セクタデータ（この場合、Physical Sector Data＃１）を暗号化する。暗号化されたセクタデータ（この場合、Encrypted Sector Data ＃１）と、そのセクタデータの暗号化に用いられた初期ベクトルＩＶ（この場合、初期ベクトルＩＶ＃１）は、多重部２１３において多重化され、バッファリング・転送処理部３０２に供給される。
【０１６５】
バッファリング・転送処理部３０２にバッファリングされたセクタデータと初期ベクトルＩＶから構成されるデータは、ステップＳ２２５の処理として、バッファリング・転送処理部３０２からホスト２０２の分離部２２２に供給される。
【０１６６】
分離部２２２は、供給されたデータから、セクタデータと初期ベクトルＩＶ（この場合、Encrypted Sector Data ＃１と初期ベクトルＩＶ＃１）を分離し、復号部２２３に供給する。復号部２２３は、供給されたEncrypted Sector Data ＃１を、認証処理部２２１から供給される鍵Ｋｓと、分離部２２２から供給される初期ベクトルＩＶ＃１を用いて復号し、セクタデータ＃１を生成する。このようにして生成されたセクタデータ＃１は、図示されていないアプリケーションソフトウェアやディスプレイやスピーカに提供される。
【０１６７】
このような処理がドライブ装置２０１、ホスト２０２、および、ディスク２０３間で繰り返される。ディスク２０３側では、ステップＳ２６３乃至Ｓ２７３の各処理で、順次、Physical Sector Data ＃２乃至＃１２が読み出される。すなわち、ディスク２０３側からは、ドライブ装置２０１の検索制御に応じて順次、連続的にセクターデータが読み出され、ドライブ装置２０１に供給される。ドライブ装置２０１は、ステップＳ２２６乃至Ｓ２４２の各ステップの処理において、順次、供給されたセクタデータを受信し、暗号化し、初期ベクトルＩＶと多重化し、ホスト２０２の要求に応じてホスト２０２に供給する。
【０１６８】
ステップＳ２０５において、ホスト２０２がステップＳ２０２で要求する最後のセクタデータ“Physical Sector Data ＃３”がドライブ装置２０１からホスト２０２へ供給されると、ドライブ装置２０１のバッファリング・転送処理部３０２は、データの転送を停止する。これは、この場合、“Transfer Length”が“３”に設定されおり、ステップＳ２０５の処理が行われた時点（ステップＳ２２９の処理が行われた時点で）、既に“Encrypted Sector Data”として“＃１”乃至“＃３”の３つのセクタデータが送信済みの状態であるためである。このような状況のときには、既に要求されたデータは送信（転送）したということで、ドライブ装置２０１はホスト２０２へのデータの転送を停止する。
【０１６９】
なお、ドライブ装置２０１は、ホスト２０２に対してのデータの転送を停止する一方で、ディスク２０３から読み出されているセクターデータを受信し続けている。そして、その受信し続けられているセクタデータは、順次、暗号化部２１２による暗号化が施され、多重化部２１３による多重化が行われ、バッファリング・転送処理部３０２によりバッファリングされる。
【０１７０】
ホスト２０２は、ステップＳ２０６において、新たなリードコマンド２３１を発行する。ステップＳ２０７において発行されるリードコマンド２３１は、“ＬＢＡ”＝＃４であり、“Transfer Length”＝３である。このようなリードコマンド２３１が発行されると、ステップＳ２３５において、バッファリング・転送処理部３０２にバッファリングされている“初期ベクトルＩＶ＃４”が多重化された“Encrypted Sector Data ＃４”が、ホスト２０２に供給される。
【０１７１】
このように、ホスト２０２においてリードコマンド２３１が発行されると、ドライブ装置２０１によりディスク２０３から読み出されたセクタデータが順次、ホスト２０２側に供給されるという処理が繰り返される。
【０１７２】
このように、先読み動作に対応した再生装置に対しても、本発明を適用することができる。
【０１７３】
上述した実施の形態において、初期ベクトルＩＶは、ＰＳＮ、ＬＢＡ、または、Transfer Lengthのいずれかと、乱数Ｒを用いてセクタデータ毎に生成されるとして説明した。このことを換言すると、１つの初期ベクトルＩＶを生成するのに、２つの変数を用いていることになる。２つの変数を用いる事により、同一の初期ベクトルＩＶが生成される可能性を低くすることができ、結果として、そのような初期ベクトルＩＶを用いて暗号化されるデータの盗用などの不当な利用を防ぐことができ、セキュリティを高めることが可能となる。
【０１７４】
乱数Ｒをセクタデータ毎に発生させるようにしても良いが、所定のセクタ数、例えば、１００セクタ毎に乱数Ｒが発生されるようにしても良い。１００セクタ毎に乱数Ｒが発生される場合、１００個のセクタデータに対しては、同一の乱数Ｒが用いられて初期ベクトルＩＶが生成され、次の１００個のセクタデータに対しては、前記乱数Ｒとは異なる新たな乱数Ｒ’が用いられて初期ベクトルＩＶが生成される。
【０１７５】
このように、乱数Ｒを所定のセクタ数毎に発生するようにしても、換言すれば、所定数のセクタデータに対しては同一の乱数Ｒが用いられて初期ベクトルＩＶが生成されるようにしても、初期ベクトルＩＶを生成する際に用いられるもう一方の変数であるＰＳＮ、ＬＢＡ、Transfer Lengthは、セクタデータ毎に変更されるので、結果として、セクタデータ毎に異なる初期ベクトルＩＶが生成されることになる。
【０１７６】
このように、乱数Ｒを所定のセクタ数毎に発生するようにした場合、乱数Ｒを発生するのに係る処理能力を低減させることができ、かつ、初期ベクトルＩＶを更新することによるセキュリティの向上も可能となる。
【０１７７】
ここで、ドライブ装置２０１とホスト２０２との間で授受されるデータのサイズについて説明を加える。
【０１７８】
図１９は、データのサイズについて説明するための図である。上述したように、ディスク２０３から読み出される、または、書き込まれるセクタデータは、２０４８バイトである。また、初期ベクトルＩＶは、図４などを参照して説明したように１６バイトである。よって、多重化部７４，２１３，２６２（以下、多重化部２１３を例に挙げて説明を続ける）により多重化された結果出力されるデータは、図１９Ａに示すように、１６バイトの“初期ベクトルＩＶ”と、２０４８バイトの“Encrypted Sector Data”から構成される２０６４バイトのデータである。
【０１７９】
このような２０４６バイトのデータが、ドライブ装置２０１とホスト２０２との間で授受される。
【０１８０】
ところで、ドライブ装置２０１とホスト２０２は、所定のインタフェース（バス）により接続されており、そのインタフェースとしては、例えば、ＡＴＡＰＩ（AT Attachement with Packet Interface）などが考えられる。
【０１８１】
ＡＴＡＰＩなどのインタフェースは、所定の規格に基づき設計されている。例えばインタフェースとしてＡＴＡＰＩが用いられた場合、ＡＴＡＰＩの規格として、２０６４バイトのデータの授受を行えるようには規格されていない。そのため、２０４８バイトのデータの授受を行えるようにするには、ＡＴＡＰＩの規格を変更するか、または、ＡＴＡＰＩ以外で２０４８バイトのデータを授受できるインタフェースを新たに設計し、使用するかが考えられる。
【０１８２】
もちろん、そのようにしてもよいが、ＡＴＡＰＩなどの既存のインタフェースにおいても、本発明を適用できるようにするために、多重化部２１３から出力されるデータの構成を、図１９Ｂや図１９Ｃのように構成しても良い。
【０１８３】
既存のインタフェースでは、ＣＤ（Compact Disk）用のセクタサイズとして例えば、２０５６バイトや２３２４バイトなどが扱えるように規格されている。そこで、図１９Ｂに示したように、２０４８バイトの“Encrypted Sector Data”に、８バイトの“初期ベクトルＩＶ２”を多重化し、２０４８バイトのデータにする。または、図１９Ｃに示したように、２０４８バイトの“Encrypted Sector Data”に、１６バイトの“初期ベクトルＩＶ”を多重化し、さらに、“00h”などの定数から構成される２６０バイトのデータを多重化し、２３２４バイトのデータにする。なお、ここでは、８バイトの初期ベクトルを初期ベクトルＩＶ２と、記述する。
【０１８４】
このようにすることで、既存のインタフェースを用いた場合においても、本発明を適用することが可能となる。
【０１８５】
さらにデータサイズについて説明を加えるに、図１９Ａまたは図１９Ｃに示したデータ構造においては、１６バイトの初期ベクトルＩＶが多重化されるが、図１９Ｂに示したデータ構造においては、８バイトの初期ベクトルＩＶ２が多重化される。このように、データ構造により、多重化される初期ベクトルＩＶのサイズが異なる。
【０１８６】
上述した実施の形態においては、例えば、図４を参照して説明したように、生成される初期ベクトルＩＶは、１６バイトである。上述した実施の形態のように、１６バイトの初期ベクトルＩＶを生成し、かつ、図１９Ｂのように授受されるデータを構成する場合、例えば、生成された１６バイトの初期ベクトルＩＶの下位８バイトまたは上位８バイトを、初期ベクトルＩＶ２とすることが考えられる。
【０１８７】
または、生成された１６バイトの初期ベクトルＩＶのうちから、８バイト分のデータを抽出し、初期ベクトルＩＶ２を生成するようにしても良い。いずれにしても、図１９Ｂに示したデータ構成のデータを授受するとした場合、生成された１６バイトの初期ベクトルＩＶから、多重化される８バイトの初期ベクトルＩＶ２が生成される。
【０１８８】
８バイトの初期ベクトルＩＶ２が多重化されるようにした場合であっても、暗号化や復号には、１６バイトで構成される同一の初期ベクトルＩＶが用いられる。よって、生成された初期ベクトルＩＶから、一旦８バイトの初期ベクトルＩＶ２を生成し、その８バイトの初期ベクトルＩＶ２を、１６バイトに拡張し、暗号化または復号に用いる。
【０１８９】
例えば、８バイトの初期ベクトルＩＶ２（ＩＶ２とする）を連結し、１６バイトの初期ベクトルＩＶ’（ＩＶ’＝［ＩＶ２||ＩＶ２］）に拡張する。そして、この初期ベクトルＩＶ’を用いてセクタデータを暗号化する。暗号化されたセクタデータに多重化されるのは、８バイトの初期ベクトルＩＶ２である。
【０１９０】
そして、復号は、受信されたデータに多重化されている８バイトの初期ベクトルＩＶ２を分離し、その分離された８バイトの初期ベクトルＩＶ２を連結し、１６バイトの初期ベクトルＩＶ’（ＩＶ’＝［ＩＶ２||ＩＶ２］）に拡張する。その拡張された初期ベクトルＩＶ’が用いられて復号が行われる。
【０１９１】
多重化される初期ベクトルＩＶが８バイトであり、生成される初期ベクトルＩＶが１６バイトである場合、上述したように処理が行われる。
【０１９２】
多重化される初期ベクトルＩＶが８バイトであり、生成される初期ベクトルＩＶも８バイトであるようにすることも可能である。このような場合について、以下に説明する。
【０１９３】
図２０は、図４に対応する図であり、ＬＢＡまたはＰＳＮから初期ベクトルＩＶ２を生成する場合を説明するための図である。図４を参照して説明した初期ベクトルＩＶの生成の仕方と比較し、図２０を参照して説明する初期ベクトルＩＶ２の生成の仕方は、４バイトのセクタアドレス５１を、データ拡張部１１１’により、８バイトのデータに拡張する点と、乱数発生部７１により発生される乱数Ｒが８バイトで構成される点が異なる。
【０１９４】
すなわち、コマンドパケット１２１に含まれる４バイトのＬＢＡまたは、ディスク１３１に含まれる４バイトのＰＳＮは、セクタアドレス５１として、ＩＶ生成部７２のデータ拡張部１１１’に供給される。そして、データ拡張部１１１’は、供給された４バイトのセクタアドレス５１を、２個連結することにより、８バイトのデータにデータ拡張する。
【０１９５】
図２０においては、４バイトのセクタアドレス５１を“ＡＤＲ”と図示し、データ拡張部１１１’により生成されたデータを［ＡＤＲ||ＡＤＲ］と図示してある。２個のセクタアドレス５１を連結する際、単に連結するだけでも良いが、奇数番目のビットのみを用いて、または、偶数番目のビットのみを用いて１６バイトにデータ拡張するなどの方法で、データ拡張が行われるようにしても良い。また、Ｈａｓｈ関数などを用いてデータ拡張が行われるようにしても良い。
【０１９６】
いずれの方法でデータ拡張が行われても良いが、この場合、データ拡張部１１１’からは、８バイトのデータが出力され、排他的論理和回路１１２に供給される。排他的論理和回路１１２は、供給された８バイトのデータと、８バイトの乱数Ｒの排他的論理和を算出し、８バイトの初期ベクトルＩＶ２として出力する。
【０１９７】
このようにして生成された８ビットの初期ベクトルＩＶ２は、多重化部７４により、暗号化されたセクタデータに、そのまま多重化される。また、このように生成された８ビットの初期ベクトルＩＶ２が、暗号化部７３における暗号化に用いられるときには、１６ビットの初期ベクトルＩＶにデータ拡張されて用いられる。このデータ拡張は、上述した場合と同様に、８ビットの初期ベクトルＩＶ２を２つ連結し、１６バイトの初期ベクトルＩＶにすることで行われる。復号部９２における復号も、同様に、分離された８ビットの初期ベクトルＩＶ２を１６ビットに拡張し、その拡張された初期ベクトルＩＶが用いられて行われる。
【０１９８】
図２１は、図７に対応する図であり、Transfer Length（ＴＬ）から初期ベクトルＩＶ２を生成する場合を説明するための図である。図７を参照して説明した初期ベクトルＩＶの生成の仕方と比較し、図２１を参照して説明する初期ベクトルＩＶ２の生成の仕方は、カウンタ１６１の処理が施された後の４バイトのＴＬを、データ拡張部１６２’により、８バイトのデータに拡張する点と、乱数発生部７１により発生される乱数Ｒが８バイトで構成される点が異なる。
【０１９９】
この場合も、基本的な処理は、図２０に示した処理と同様なので、その説明は省略する。
【０２００】
ここで、図３に示したソース３１とシンク３２間で行われる相互認証の結果、生成されるセッションキーＫｓと初期ベクトルＩＶの計算のための発生される乱数Ｒについて、図２２と図２３のフローチャートを参照して説明を加える。
【０２０１】
ステップＳ４０１において、ソース３１にディスクが、挿入されたか否かが判断される。ステップＳ４０１において、ソース３１にディスクが挿入されたと判断された場合、ステップＳ４０１に処理が進められ、シンク３２において所定のアプリケーションが起動されたか否かが判断される。
【０２０２】
所定のアプリケーションとは、ソース３１に挿入されたディスクからデータを読み出す、または、書き込むために必要とされるアプリケーションである。
【０２０３】
ステップＳ４０２において、シンク３２において所定のアプリケーションが起動されたと判断された場合、ステップＳ４０３に処理が進められる。ステップＳ４０３において、ソース３１とシンク３２との間で相互認証処理が実行され、セッションキーＫｓが、ソース３１とシンク３２で、それぞれ生成（共用）される。ステップＳ４０４において、セッションキーＫｓの生成が完了したか否かが判断される。セッションキーＫｓの生成が完了されるまで、ステップＳ４０３とステップＳ４０４の処理が繰り返される。
【０２０４】
そして、ステップＳ４０４において、セッションキーＫｓの生成が完了したと判断されると、ステップＳ４０５に処理が進められ、乱数Ｒが乱数発生部７１により発生される。ステップＳ４０５の処理が終了すると、ステップＳ４０６（図２３）において、シンク３２側で起動されていた所定のアプリケーション（ＰＣアプリケーション）（ここでは、シンク３２がパーソナルコンピュータであるとする）が終了されたか否かが判断される。ステップＳ４０６において、ＰＣアプリケーションは、終了されていないと判断された場合、ステップＳ４０７に処理が進められ、ソース３１に挿入されていたディスクは排出されたか否かが判断される。
【０２０５】
ステップＳ４０７において、ディスクは排出されていないと判断されると、ステップＳ４０６に処理が戻され、それ以降の処理が繰り返される。一方、ステップＳ４０７において、ディスクが排出されたと判断された場合、ステップＳ４０８に進み、シンク３２で生成されたセッションキーＫｓが消去される。
【０２０６】
さらに、ステップＳ４０９において、ソース３１で生成されたセッションキーＫｓが削除され、ステップＳ４１０において、ソース３１で生成された乱数Ｒも削除される。
【０２０７】
このように、ディスクが排出された場合、ディスクからのデータの読み出しや、ディスクに対するデータの書き込みは実行できなくなるので、そのような処理を実行するために、ソース３１とシンク３２で、それぞれ生成されたセッションキーＫｓと、ソース３１側で初期ベクトルＩＶを生成するために発生された乱数Ｒは消去される。このようなデータが消去されると、ステップＳ４０１に処理が戻され、それ以降の処理が繰り返される。
【０２０８】
一方、ステップＳ４０６において、シンク３２側で起動されていたＰＣアプリケーションが終了されたと判断された場合、ステップＳ４１１に処理が進められ、シンク３２で生成されたセッションキーＫｓが消去される。
【０２０９】
ステップＳ４１２において、シンク３２側でＰＣアプリケーションが起動されたか否かが判断される。この状態では、まだ、ソース３１にディスクが挿入されている状態であるので、ＰＣアプリケーションが起動されれば、ディスクからのデータの読み出しや、ディスクに対するデータの書き込みが実行できる状態になるので、ステップＳ４１２において、ＰＣアプリケーションが起動されたか否か（結果として、ディスクに対する処理が実行できる状態にされたか否か）が判断される。
【０２１０】
ステップＳ４１２において、ＰＣアプリケーションが起動されたと判断された場合、ステップＳ４０３（図２２）に処理が戻され、それ以降の処理が繰り返される。一方、ステップＳ４１２において、ＰＣアプリケーションは起動されていないと判断された場合、ステップＳ４１３に処理が進められ、ソース３１に挿入されているディスクが排出されたか否かが判断される。
【０２１１】
ステップＳ４１３において、ソース３１に挿入されているディスクが排出されたと判断されるまで、ステップＳ４１２とステップＳ４１３の処理が繰り返され、ソース３１に挿入されているディスクが排出されたと判断されると、ステップＳ４０９に処理が進められる。ステップＳ４０９以降の処理については、既に説明したので、ここではその説明を省略する。
【０２１２】
このように、セッションキーＫｓや乱数Ｒは、必要に応じ生成され、必要がなくなった時点で、即座に消去されるように構成されている。このようにすることで、セッションキーＫｓが盗用されたり、乱数Ｒが盗用されるといった不都合が発生する可能性をできる限り低くする。セッションキーＫｓや乱数Ｒは、上述した初期ベクトルＩＶの生成や暗号化に関わるデータであるが、セッションキーＫｓや乱数Ｒが盗用される可能性を低くすることで、初期ベクトルＩＶが推測される、盗用される可能性も低くすることが可能となる。
【０２１３】
このように、本発明を適用することにより、ソース３１とシンク３２との間で行われるデータの授受に関し、セキュリティを向上させることが可能となる。
【０２１４】
なお、上述した実施の形態においては、再生装置と記録装置をそれぞれ別な構成として図示および説明したが、再生装置内と記録装置内において同一の処理を実行する、例えば、ＩＶ生成部などは、再生装置と記録装置で共用される構成としても、もちろん良い。
【０２１５】
なお、上述した実施の形態においては、暗号化および復号の方式として、ＣＢＣ方式を例に挙げて説明したが、本発明は、ＣＢＣ方式にのみ適用できることを示すものではない。例えば、ＣＦＢ（Cipher Feed Back）方式、ＯＦＢ（Output Feed Block）方式などに対しても本発明を適用することはできる。
【０２１６】
上述した一連の処理は、それぞれの機能を有するハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０２１７】
記録媒体は、その記録媒体を扱うパーソナルコンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disc-Read Only Memory），DVD（Digital Versatile Disc）を含む）、光磁気ディスク（MD（Mini-Disc）（登録商標）を含む）、若しくは半導体メモリなどよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているＲＯＭやハードディスクなどで構成される。
【０２１８】
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２１９】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０２２０】
【図１】ＣＢＣ方式の暗号化を行う回路の構成を示す図である。
【図２】ＣＢＣ方式の復号を行う回路の構成を示す図である。
【図３】本発明を適用した記録再生装置の一実施の形態の構成を示す図である。
【図４】初期ベクトルＩＶの生成について説明するための図である。
【図５】ディスク状のメディアのデータ構造について説明する図である。
【図６】ユーザデータエリアの構成について説明するための図である。
【図７】初期ベクトルＩＶの生成について説明するための図である。
【図８】ソース側の処理について説明するための図である。
【図９】暗号化部の詳細な構成を示す図である。
【図１０】シンク側の処理について説明するための図である。
【図１１】復号部の詳細な構成を示す図である。
【図１２】再生装置の構成例を示す図である。
【図１３】再生装置における処理について説明するための図である。
【図１４】記録装置の構成例を示す図である。
【図１５】記録装置の構成例を示す図である。
【図１６】記録装置における処理について説明するための図である。
【図１７】再生装置の構成例を示す図である。
【図１８】再生装置における処理について説明するための図である。
【図１９】データのサイズについて説明するための図である。
【図２０】初期ベクトルＩＶの生成について説明するための図である。
【図２１】初期ベクトルＩＶの生成について説明するための図である。
【図２２】セッションキーに関わる処理を説明するためのフローチャートである。
【図２３】図３２のフローチャートに続くフローチャートである。
【符号の説明】
【０２２１】
１１  排他的論理和回路，  １２  暗号化部，  ２１  排他的論理和回路，  ２２  復号部，  ３１  ソース，  ３２  シンク，  ５１  セクタアドレス，  ５２  セクタデータ，  ７１  乱数発生部，  ７２  ＩＶ生成部，  ７３  暗号化部，  ７４  多重化部，  ９１  分離部，  ９２  復号部，  １０１  セクタデータ
【図１】
2005175605.tif 000003
【図２】
2005175605.tif 000004
【図３】
2005175605.tif 000005
【図４】
2005175605.tif 000006
【図５】
2005175605.tif 000007
【図６】
2005175605.tif 000008
【図７】
2005175605.tif 000009
【図８】
2005175605.tif 000010
【図９】
2005175605.tif 000011
【図１０】
2005175605.tif 000012
【図１１】
2005175605.tif 000013
【図１２】
2005175605.tif 000014
【図１３】
2005175605.tif 000015
【図１４】
2005175605.tif 000016
【図１５】
2005175605.tif 000017
【図１６】
2005175605.tif 000018
【図１７】
2005175605.tif 000019
【図１８】
2005175605.tif 000020
【図１９】
2005175605.tif 000021
【図２０】
2005175605.tif 000022
【図２１】
2005175605.tif 000023
【図２２】
2005175605.tif 000024
【図２３】
2005175605.tif 000025