(57)【特許請求の範囲】
【請求項１】
コンピュータバス（12）と、
前記コンピュータバスに接続され、誤り修正を実行するようにプログラムされたホストプロセッサ（14）と、
ＥＣＣエンコードされたデータのブロックを提供するための手段（18）と、暗号化マスクを提供するための手段（24、26、28）と、前記暗号化マスクと前記ＥＣＣエンコードされたデータのブロックとのビットごとの排他的論理和を実行するための手段（30）とを含むドライブ（16）と、
からなるシステムであって、
前記ビットごとの排他的論理和の結果が暗号化されたブロックであり、前記ビットごとの排他的論理和を実行するための手段の出力が前記コンピュータバスに接続され、それによって前記暗号化されたブロックを誤り修正のために前記コンピュータバスを介して前記ホストプロセッサへ送信可能である、システム。
【請求項２】
前記暗号化マスクを形成するための手段（24、26、28）が、
シードを提供するための手段（26）と、
前記シードから一連の乱数を生成するための疑似ランダムデータ発生器（24）と、
乱数を含む第１の部分と該第１の部分に関する冗長データを含む第２の部分とを含む暗号化マスクを生成するためのＥＣＣエンコーダ（28）とを含む、請求項１のシステム。
【請求項３】
前記コンピュータバスに接続され、前記ホストプロセッサから前記暗号化されたブロックを受信するための手段（37）と、
前記ドライブから前記シードを受信するための手段（40）と、
前記シードから暗号解読マスクを生成するための第２の疑似ランダムデータ発生器（42）と、
前記暗号解読マスクと前記暗号化されたブロック中のユーザデータとの第２のビットごとの排他的論理和を実行するための手段（46）とをさらに含み、
前記第２のビットごとの排他的論理和の結果として暗号化されていないユーザデータが提供される、請求項２のシステム。
【請求項４】
前記ドライブ(16)がＤＶＤ−ＲＯＭドライブであり、
ＤＶＤデコーダカード（36）が、
ＭＰＥＧデコーダ（48）と、
前記暗号化されたブロックを受信するための手段（37）と、
前記シードを受信するための手段（40）と、
前記第２の疑似ランダムデータ発生器（42）と、
前記第２のビットごとの排他的論理和を実行するための手段（46）とを含み、
前記ＭＰＥＧデコーダが前記第２のビットごとの排他的論理和を実行するための手段（46）の出力に接続されている、請求項３のシステム。
【請求項５】
前記ＥＣＣエンコードされたブロックがユーザデータに関する第１の部分と冗長データに関する第２の部分とを含み、前記暗号化マスクが前記ＥＣＣエンコードされたブロックの第１の部分及び第２の部分にそれぞれ対応する第３の部分及び第４の部分を含む、請求項１のシステム。
【請求項６】
前記第３の部分が複数の乱数で満たされ、前記第４の部分が前記第３の部分から生成された冗長データを含む、請求項５のシステム。
【請求項７】
前記第３の部分が乱数及びゼロで選択的に満たされ、前記第４の部分が前記第３の部分から生成された冗長データを含む、請求項５のシステム。
【請求項８】
前記ＥＣＣブロックが誤り修正方法によってコード化され、前記暗号化マスクが同じ誤り修正方法によってコード化される、請求項１のシステム。
【請求項９】
前記ドライブ（16）が誤り修正を実行するための手段（39）をさらに含み、ホストプロセッサ（14）がドライブによって送信された前記暗号化されたデータに誤り修正を実行する、請求項１のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にはデータの記憶及び伝送に関する。より詳細には本発明は、順方向誤り修正に使用されるコードワードを含むデータの暗号化に関する。
【０００２】
【従来の技術】
順方向誤り修正は、ユーザデータの完全性を維持するために、データ伝送チャネル及びデータ記憶装置において実行されるのが普通である。伝送又は記憶する前に、冗長データがユーザデータに追加される。ハードディスクドライブ、コンパクトディスク（ＣＤ）プレーヤ、ディジタルビデオディスク（ＤＶＤ）プレーヤ等のデータ記憶装置では、記憶媒体の欠陥及び読み出しチャネルでのノイズのために誤りが生じる可能性がある。伝送又は記憶データに誤りが検出された場合、冗長データによってこの誤りを修正することができる。
【０００３】
順方向誤り修正を実行するための様々な方法がある。例えばリード−ソロモンプロダクトコード（「ＲＳ−ＰＣ」）が、ＣＤプレーヤ及びＤＶＤプレーヤに使用される。
【０００４】
ＣＤプレーヤ及びＤＶＤプレーヤには、順方向誤り修正を実行するための誤り修正回路が含まれている。この誤り修正回路は強力な計算能力を要求され、通常はハードワイヤードすなわち柔軟性のない方式で実装されている。その上、この誤り修正回路には処理回路及び高速メモリが必要なため、コスト高になる傾向がある。
【０００５】
最近パーソナルコンピュータの処理能力が向上したため、データ記憶装置の代わりに、コンピュータのホストプロセッサで全部又は一部の順方向誤り修正を実行することが実用的になりつつある。ホストプロセッサが誤り修正を実行できるようになると、より柔軟性のある誤り修正方法が利用できる。例えばホストプロセッサは、高速で大多数の誤りを修正できるデフォルトルーチンを実行することができる。デフォルトルーチンによって修正できない誤りは、「ヒロイックデータ回復（heroic data recovery）」ルーチンなどのより複雑なルーチンによって修正される。ヒロイック回復は、データの長期記憶に関して特に貴重である。貴重なデータのハードコピーは、記憶媒体（例えばハードドライブ又はＣＤのプラッタ）に記憶された後に破壊される可能性がある。記憶された後、長い年月の間に、記憶媒体の長期劣化が生じる可能性がある。記憶装置の代表的な誤り修正回路は、劣化した記憶媒体からデータの全てを回復できない可能性がある。そのようなデータを回復できない場合、そのデータが永久に失われる可能性がある。しかしホストプロセッサを使用すれば、ヒロイックデータ回復ルーチンを使用してデータを回復する可能性がより高くなる。
【０００６】
誤り修正を実行するタスクを、ホストプロセッサに全部又は一部移すことができる。その結果記憶装置のコストを低下できる。デコーダ回路を縮小又は省略することができ、高価な静的ランダムアクセスメモリ（ＲＡＭ）のサイズを縮小することができる。
【０００７】
あるいは誤り修正を実行するタスクを、ホストプロセッサと記憶装置の誤り修正回路に振り分けることができる。誤りを修正するタスクは、初めは誤り修正回路に入る。この誤り修正回路は誤りの大多数を識別し修正する簡単な誤り修正アルゴリズムを利用する。この誤り修正回路がデータブロックを修正できなかった場合、タスクは、より複雑な誤り修正ルーチンを利用するホストプロセッサに移される。このような柔軟性によって、記憶装置が高速で廉価な誤り修正回路を使用することができる。その結果、記憶装置のコストを下げ、誤り修正を実行する信頼性を改善することができる。
【０００８】
しかしながら特に、誤りコード修正（「ＥＣＣ」）コードワードを含むデータにデータ暗号化を実行した後に、ホストプロセッサで誤り修正を実行することに関連して問題が生じる可能性がある。ＥＣＣコードワードを暗号化する場合、通常はコードワードの完全性が破壊される。その結果ホストプロセッサが、データ中の誤りを修正することができない。
【０００９】
データが記憶装置からホストプロセッサに送信される前に、データを暗号化しなければならないという必要性が、当業界でさらに強くなっている。このことは特にコンピュータのＤＶＤ−ＲＯＭドライブについて当てはまる。データは、コンピュータバスを介して、ＤＶＤ−ＲＯＭドライブからＤＶＤデコーダカードに送信されるが、これは安全ではない。このバスに配置された暗号化されていないデータは傍受され、高品質の映画、音楽及び知的所有権のあるデータの無許可コピーを作成できることは本当に問題である。誤り修正のために暗号化されていないデータがホストプロセッサに万一送信された場合、暗号化されていないデータは盗み及び無許可のコピーに対して無防備である。したがってこのデータは、ホストプロセッサ中で誤りコード修正されない。その代わりに誤りコード修正は、ＤＶＤ−ＲＯＭドライブ中のデータに実行される。次いで誤りコード修正したデータは、安全ではないコンピュータバスを介してＤＶＤデコーダカードに送信される前に、暗号化される。
【００１０】
【発明が解決しようとする課題】
これまでのところ、コンピュータバスを介して安全に伝送する必要があるために、ホストプロセッサが誤り修正を実行することが不可能である。その結果、誤り修正を実行するための高価なデコーダを省略し、高価なＲＡＭを減少することによって、ＤＶＤ−ＲＯＭドライブのコストを減少することができなかった。その上、異なる誤り修正ルーチンを実行する柔軟性が得られなくなった。
【００１１】
【課題を解決するための手段】
本発明によれば、ドライブ中で一部又は全部のデータ暗号化を実行することができ、ホストプロセッサによって一部又は全部の誤り修正を実行することができる。１ブロックのＥＣＣエンコードしたデータが読み取られる。このＥＣＣブロックは、誤り修正コードワードを含む。暗号化マスクが提供され、ＥＣＣブロックとビットごと排他的論理和が演算される。このビットごと排他的論理和の積は、暗号化したＥＣＣブロックであり、次いでこのＥＣＣブロックをホストプロセッサに伝送することができる。コードワードの完全性は保持される。これによってホストプロセッサが、暗号化したＥＣＣブロックにいくつかの又は全ての誤り修正を実行することができる。
【００１２】
ＥＣＣブロック中のユーザデータを暗号化マスク中の数と全部排他的論理和とすることができ、又はユーザデータを暗号化マスク中の数と選択的に排他的論理和とすることができる。ゼロと排他的論理和をとった、又は全く排他的論理和をとらなかったＥＣＣブロックの部分は暗号化されない。
【００１３】
本発明の他の態様及び利点は、本発明の原理を例示的なものとして図示する添付図面と共に行う以下の詳しい説明から明かになるであろう。
【００１４】
【発明の実施の形態】
例示するために図面に示すように、本発明は、ホストプロセッサ及び記憶媒体（例えばコンパクトディスク又はＤＶＤディスク）からデータを読み取る記憶装置を含むシステムにおいて実施される。データはＥＣＣコードワードを含む。記憶装置は記憶媒体から読み取ったデータにデータ暗号化を実行するが、誤り修正コードワードの完全性を保持する。これによって、暗号化したデータを安全ではないコンピュータバスを介してホストプロセッサに送信することができる。次いでホストプロセッサは、暗号化したデータに誤り修正を実行することができる。この後信頼できるエンティティによって暗号解読を実行することができる。したがって本発明によれば、安全ではないコンピュータバス上に機密データを曝す危険性なく、ホストコンピュータがＥＣＣコードワードの一部又は全部の誤り修正を実行することができる。
【００１５】
以下の段落では、本発明を、ＤＶＤ−ＲＯＭドライブ及びこれに関連するＤＶＤ−ＲＯＭ電子機器を含むコンピュータシステムに関して説明する。本発明は、ＤＶＤ−ＲＯＭドライブに限定されるものではなく、単に本発明の理解を容易にするためにＤＶＤ−ＲＯＭを説明することを理解されたい。
【００１６】
図１はコンピュータシステム10の種々の構成要素を示す。コンピュータシステム10は、コンピュータバス12及びコンピュータバス12に接続されたホストプロセッサ14（例えば中央演算処理装置）を含む。さらにシステム10は、ＤＶＤ−ＲＯＭ読取り装置18を含むＤＶＤ−ＲＯＭドライブ16を含み、このＤＶＤ−ＲＯＭ読取り装置18はＤＶＤ−ＲＯＭディスクに記憶されたＲＳ−ＰＣブロックを読み取るよう動作する。ＲＳ−ＰＣブロックは、ＤＶＤディスクから読み取られ、コントローラ20の制御下で、ランダムアクセスメモリ（ＲＡＭ）22中にバッファリングされる。
【００１７】
各ＲＳ−ＰＣブロックは、Ｍ行のユーザデータを含み、ユーザデータの各語長はＮバイトである。Ｍワードのそれぞれには、ｐバイトの長さを有するＲＳ−ＰＣ冗長データが付いている。したがってＲＳ−ＰＣブロック中の各行は、（Ｎ＋ｐ）バイトを有し、それによってＲＳ−ＰＣブロックは（Ｎ＋ｐ）列を有する。（Ｎ＋ｐ）列のそれぞれには、ｑバイトの長さを有するＲＳ−ＰＣ冗長データが付いている。その結果ＲＳ−ＰＣブロックは、（Ｍ＋ｑ）×（Ｎ＋ｐ）バイトを有する。図６にそのようなＲＳ−ＰＣブロック602を示す。
【００１８】
ＤＶＤ−ＲＯＭドライブ16は、バッファリングされたＲＳ−ＰＣブロックに誤りコード修正を実行する必要はない。その代わりＤＶＤ−ＲＯＭドライブ16は、バッファリングされたＲＳ−ＰＣブロックに暗号化を実行する。第１疑似乱数発生器24が、Ｍ×Ｎブロックの乱数を発生し、各乱数は１バイトの長さを有する。例えば乱数は、ＲＯＭモジュール26からアクセスされるシードから発生してもよい。
【００１９】
Ｍ×Ｎブロックの乱数が、ＲＳ−ＰＣエンコーダ28に供給され、ＲＳ−ＰＣエンコーダがＭ×ＮブロックにＲＳ−ＰＣエンコードを実行する。エンコーダ28の出力は、（Ｍ＋ｑ）×（Ｎ＋ｐ）バイトを有する暗号化マスクを提供する。複数の線形フィードバックシフトレジスタを有するエンコーダ28は、実施するのが比較的簡単であり、費用がかからない。その上ＲＳ−ＰＣエンコードは、比較的高速で実行することができる。エンコーダ28は、ＤＶＤディスク上に記憶されたコードワードを発生するために使用された同じアルゴリズムを使用する。
【００２０】
排他的論理和回路30は、ＲＳ−ＰＣブロックと暗号化マスクのビットごと排他的論理和（ＸＯＲ）を実行する。図３に、ビットごとの排他的論理和演算を図示して以下に論じる。ビットごと排他的論理和演算の結果、暗号化したユーザデータ及び暗号化したＲＳ−ＰＣ冗長データを含む（Ｍ＋ｑ）×（Ｎ＋ｐ）の暗号化したブロックが生じる。
【００２１】
コントローラ20の制御下で、暗号化したブロックは、誤り修正のためにコンピュータバス12に置かれてバッファ32中に記憶される。コンピュータバス12が安全ではなくても、暗号化ブロック中のユーザデータは暗号化され、したがって保護される。よってコンピュータバス12を渡って転送されるデータを解析することができるデータ解析器及び記憶スコープなどのバススニッファ（sniffer）装置は、容易にユーザデータを利用することができない。
【００２２】
ホストプロセッサ14は、メモリ34中に記憶された実行可能な命令によって、誤り修正を実行するように命令される。この命令は、ホストプロセッサ14によって実行されているが、ホストプロセッサ14はバッファ32中に記憶された暗号化したデータブロックにＲＳ−ＰＣ修正を実行する。
【００２３】
ホストプロセッサ14は、依然暗号化されているが、ここで誤り修正された（Ｍ＋ｑ）×（Ｎ＋ｐ）ブロックを、コンピュータバス12を介してＤＶＤデコーダカード36に送信する。この暗号化したブロックは受信されて、ＤＶＤデコーダカード36上のバッファ37中に記憶される。ＤＶＤデコーダカード36が暗号化したブロックに暗号解読を実行すると、ＲＯＭ26中に記憶したシード、すなわち暗号化マスクが発生したシードにアクセスする。モジュール38及び40が、ＤＶＤ−ＲＯＭドライブ16とＤＶＤデコーダカード36の間のシードの認証及び交換を実行する。認証及び交換は従来の方式で実行することができる。
【００２４】
ＤＶＤデコーダカード36の第２疑似乱数発生器42は、第１疑似乱数発生器24が発生するのと同じ一連の乱数を発生し、第２エンコーダ44がこの乱数からＭ×Ｎ暗号解読マスクを発生する。暗号解読マスクは、暗号化マスク中のＭ×Ｎブロックの乱数と一致する。したがって、認証及び交換モジュール38及び40を介して、最小量のデータ（すなわちシード）を送信することによって、暗号解読マスクが発生する。
【００２５】
次いで第２排他的論理和回路46が、バッファ37中に記憶された暗号化したブロック中のＭ×Ｎユーザデータと暗号解読マスクのビットごと排他的論理和を実行する。ビットごと排他的論理和の積は、暗号化されていないＭ×Ｎブロックのユーザデータである。
【００２６】
またＤＶＤデコーダカード36は、ムービングピクチャーズエキスパートグループ（ＭＰＥＧ）デコーダ48を含み、このデコーダは、ＲＳ−ＰＣブロックを受信して、ＭＰＥＧ標準に基づいてＭ×Ｎバイトブロックの暗号解読したユーザデータをデコードする。ＭＰＥＧデコーダ48は連続する圧縮解除したデータを出力し、この連続する圧縮解除したデータはビデオディスプレイ上に表示される。圧縮解除したデータは、ディスプレイ又はディスプレイメモリに直接送信される。圧縮解除したデータは、コンピュータバス12上を伝送されない。
【００２７】
誤り修正し暗号化したブロックを、ホストプロセッサ14の下流にある他のエンティティ49が受信することができる。下流エンティティ49は、後続のデータ伝送のために暗号化したブロックを再発生することができる。下流エンティティ49は、下流エンティティ49がアクセスしない暗号化したデータを廃棄することができる。下流エンティティ49が、暗号化したブロック中のデータにアクセスすることができない場合、シードはこの下流エンティティ49に送信されない。
【００２８】
またドライブ16も基本の誤り修正能力を有することができる。例えばドライブは、オンザフライ（on-the-fly）誤り修正を実行するためにデコーダ39を含むことができる。デコーダ39がデータブロックを修正できない場合、このデータブロックはホストプロセッサ14に送信される。このような柔軟性があるので、誤り修正のために高速、かつ廉価なデコーダ39を使用することができる。またこのような柔軟性があるので、ホストプロセッサ14は、より複雑で、より正確な誤り修正を実行することができる。
【００２９】
図４〜図６は、ビットごと排他的論理和演算をさらに詳細に示す。図４はＲＳ−ＰＣブロックの簡略版400を示す。ユーザデータのＭ×Ｎブロック405は、32Kバイトである。ＲＳ−ＰＣ冗長データ403、404は、ブロック400の各行及び各列に関連している。ＲＳ−ＰＣブロック400の長さは、182バイトであり、そのうちの172バイトがユーザデータ405である。残りの10バイトは、誤り回復のために追加されるＲＳ−ＰＣ冗長データ403である。ＲＳ−ＰＣブロック400の行数は208であって、そのうちの16行にＲＳ−ＰＣ冗長データ404が含まれている。ヘッダ401は、コピー保護、特に暗号化鍵に関する情報を含む。通常の状況下では、ユーザはこのデータを受信して、ヘッダ401又はＲＳ−ＰＣ冗長データ403と404の内容を知る必要はない。この情報は、データがドライブ中にある間に、抽出されてチェックされる。またＭ×Ｎブロック405のユーザデータも、極秘データを含む引込み領域（lead-in area)（図示せず）を含む。
【００３０】
図５を参照すると、ＲＳ−ＰＣブロックの行501が、行501中のユーザデータから生成される10バイトのＲＳ−ＰＣ冗長データ及び172バイトのユーザデータを含む。行502の暗号化マスクは、172バイトの乱数と、行502中の172バイトの乱数から生成される10バイトのＲＳ−ＰＣ冗長データを含む。２つの行501及び502が、共にビットごと排他的論理和されると、行504の暗号化したブロックが形成される。行504の暗号化したブロックは、172バイトの暗号化したデータと、行504中の172バイトの暗号化したデータに有効なＲＳ−ＰＣコードワードを提供する10バイトの冗長データを含む。暗号解読は、行504の暗号化したブロックを行502の暗号化マスクと排他的論理和することによって実行される。
【００３１】
全ブロックをカバーするように、ビットごと排他的論理和演算を拡張することができる。第１疑似乱数発生器24のためにＲＯＭ26中に記憶されるシードの長さは、必要な暗号強度を確保するに足る長さである。32Kバイトの乱数が生成された後は、関連するＲＳ−ＰＣ冗長データが計算されて、暗号化マスクを完成される。ＲＳ−ＰＣ冗長データの計算は比較的ささいなことであるので、ＲＳ−ＰＣ冗長データを計算するのに処理電力をほとんど必要としない。
【００３２】
前述の演算の結果として、ＲＳ−ＰＣコードワードの誤り修正能力が保持される。図６を参照すると、記憶媒体中のノイズ及び欠陥のために、元のＲＳ−ＰＣブロック602全体にばらまかれる誤りが生じる。この誤りは点によって示される。暗号化マスク601は誤りを含まない。暗号化マスク601とＲＳ−ＰＣブロック602の排他的論理和をとると、誤り修正能力の完全性が維持される。したがって暗号化したデータブロック603は、ＲＳ−ＰＣブロック602と同じ場所に誤りを含み、全てのＲＳ−ＰＣコードワードは、誤り修正を首尾よく実行することができるように整合している。暗号化マスク601中に万一誤りがあった場合でも、誤りは依然として修正することができ、暗号化及び後続の誤り修正が満足に行われる。
【００３３】
疑似乱数発生器24、42及びＲＳ−ＰＣエンコーダ28に必要な処理電力は、誤りコード修正を実行するのに必要な処理電力と比較すると大したことはない。したがって本発明によれば、誤りコード修正の実行からより大きな負担が除去されるとともに、ＤＶＤ−ＲＯＭドライブ16及びＤＶＤデコーダカード36には小さな負担がかかるだけになる。誤りコード修正は、ＤＶＤ−ＲＯＭドライブ16とホストプロセッサ14に分配するか、又はホストプロセッサ14に全部委ねることができる。
【００３４】
本発明の基本ステップは次の通りである：
１）シードが提供される。シードの長さは、必要な暗号強度を確保するのに充分な長さである。
【００３５】
２）１ブロックの乱数が疑似乱数発生器によって発生され、この乱数はシードによってシードされるか、又は初期化される。
【００３６】
３）誤り修正コードワードが、記憶媒体に記憶されたＲＳ−ＰＣブロックに使用したのと同じ誤り修正コード発生方式に基づいて発生される。このようにして一連のコードワードが発生され、そのすべてが乱数シードによって決定され、記憶媒体に記憶された元のブロックと整合する。その結果暗号化マスクが生じる。
【００３７】
４）元のＲＳ−ＰＣブロックと暗号化マスクの間で、ビットごと排他的論理和が実行される。
【００３８】
５）またビットごと排他的論理和演算の結果生じるブロックも、記憶媒体から読み取られたコードワード中に含まれるいずれの誤りも含む有効なコードワードを含む。暗号化マスクが誤りを含まないので、追加の誤りは生じない。ビットごと排他的論理和演算の結果生じるブロックは、有効に暗号化され、元のデータを無許可でコピーされる危険性なしで、誤り修正のためにホストプロセッサ又は他の処理エンティティに送信することができる
６）誤りコード修正がホストプロセッサによって実行される。誤りは修正されたが、依然として暗号化されているブロックが、元のデータが無許可でコピーされる危険性なく、ホストプロセッサの下流に送信される。
【００３９】
７）暗号解読が、ホストプロセッサの下流にある信頼できるエンティティ（例えばＭＰＥＧデコーダ）によって実行される場合、シードだけを信頼できるエンティティに転送する必要がある。シードは、標準技法に基づいて認証されて交換される鍵を使用する安全な方式で転送することができる。次いで信頼できるエンティティが、ユーザデータの暗号化のために暗号化マスクによって使用される同じ乱数パターンを使用して暗号解読マスクを発生する。暗号解読マスクは、誤り修正したが依然として暗号化されているデータブロックのユーザデータと、ビットごと排他的論理和演算される。その結果Ｍ×Ｎブロックが暗号解読され、誤りコード修正されたユーザデータが生じる。
【００４０】
８）ホストプロセッサの下流にあるエンティティがブロックに暗号解読を実行しない場合、シードはこのエンティティに転送されない。同様にホストプロセッサの下流にあるエンティティが、ブロック中のデータにアクセスすることができない場合、シードはこのエンティティに送信されない。
【００４１】
ここまでは、ＲＳ−ＰＣブロック全体の暗号化に関して本発明を説明してきた。しかしながらＲＳ−ＰＣブロック全体を暗号化する必要のない状況が発生する可能性がある。ＲＳ−ＰＣブロックの一部だけを暗号化する必要がある可能性がある。例えば引込み領域の一部が、暗号化に関する機密データを含む可能性がある。しかし172×192ブロックのユーザデータの最初のバイト（すなわちヘッダ）が、機密でないアドレス及び他のヘッダ情報を含む。したがってヘッダに対応する暗号化マスクのバイトは、全てゼロであって、残りのバイトは疑似乱数である。これによって、ホストプロセッサ14は誤り修正してブロックアドレスを確認することができるが、（ホストプロセッサがＤＶＤデコーダカード36に送信する）機密データにアクセスすることはできない。したがってＲＳ−ＰＣのいくつかの部分は選択的に暗号化され、それによってデータの機密性が、ホストプロセッサ14及び、ことによるとホストプロセッサ14の下流にある他のエンティティ49から保護される。
【００４２】
別の例では、記憶媒体から読み取ったＥＣＣブロックは、ある領域中の暗号化した情報をすでに含んでいる。したがって、すでに暗号化されているデータは、コンピュータバス上で曝される危険性がなく、したがってドライブによってさらに暗号化する必要はない。しかしＥＣＣブロックもまた、ヘッダ領域に極秘のタイトル鍵データ（title key data)を含んでいる。アドレスなどの追加のヘッダ情報は機密ではない。この場合、ヘッダ中の機密データのみを保護する必要がある。したがって暗号化マスクは、（疑似乱数を含む）機密ヘッダデータバイト場所以外のあらゆる場所ですべてのゼロを含む。このことによって、ホストプロセッサは、機密情報へのアクセス権を得ないで、ＥＣＣブロックを誤り修正し、アドレスを確認し、ユーザデータを次に回すことができる。
【００４３】
図２はＥＣＣブロック中のデータを選択的に暗号化する方法を示す。記憶媒体からＥＣＣブロックを読み取る（ブロック200）。ＥＣＣブロック中の一部のデータ（例えばバイトシーケンス）のみを機密保持する必要がある場合、ドライブ（例えばＣＤ  ＲＯＭドライブ又はＤＶＤドライブ）が、機密データを含む場所に対応する乱数及び他の場所のゼロを含む暗号化マスクを提供する（ブロック202）。暗号化マスク中のゼロの場所は、規約により決定することができる。例えば規約によりヘッダ情報が保護される場合、暗号化マスクはヘッダ場所に乱数及び他の場所にゼロを含む。また暗号化マスクも、乱数及びゼロについてのＥＣＣ冗長データを含む。
【００４４】
次に暗号化マスクブロックとＥＣＣブロックとのビットごと排他的論理和をとる（ブロック204）。その結果生じる一部暗号化したブロックは、有効なＥＣＣコードワード、ヘッダ場所に暗号化したデータ、及び他の場所に暗号化されていないデータを含む。
【００４５】
一部暗号化したブロックはホストプロセッサに送信され、ホストプロセッサは誤りコード修正を実行する（ブロック206）。さらにホストプロセッサは、暗号化されていない情報にアクセスする（ブロック208）。
【００４６】
次いで誤り修正したブロックは、１つ又は複数の追加のエンティティに送信される（ブロック210）。各エンティティでは、ランダムデータシーケンスが後続のデータを処理するために再使用されるか、又は新しいランダムデータシーケンスが各データ量を処理するために発生することもできる。追加の各エンティティによる全部あるいは一部いずれかの追加の暗号化により、保護の追加の層が付加される。またこれによって、選択したエンティティが選択したデータを利用できるようになる。修正された機密ではないデータは直ちに使用できる。シードは、暗号解読を実行していない、又は機密データにアクセスしていないエンティティには送信されない。
【００４７】
暗号化マスクを発生しているとき、ゼロを書き込む必要はない。その代わり、乱数を提供することができ、この乱数及びその場所から冗長バイトを発生することができる。次いでＥＣＣブロックの選択的部分とこの乱数及び冗長バイトとのビットごと排他的論理和をとることができる。
【００４８】
図３は、ドライブが基本ＥＣＣを実行し、ホストプロセッサがより複雑な誤り修正を実行する方法を示す。ドライブは、記憶媒体からＥＣＣブロックを読み取り、このＥＣＣブロックをバッファリングする（ブロック300）。ドライブは、バッファリングされたＥＣＣブロック中の誤りの大多数を識別して修正するために簡単な誤り修正アルゴリズムを実行する比較的簡単な回路を含む（ブロック302）。誤り修正回路がデータブロックを修正できない場合、バッファリングされたＥＣＣブロックのいくつか又は全ては暗号化され（ブロック304）、ホストプロセッサに送信される（ブロック306）。次いでホストプロセッサは、より複雑な誤り修正ルーチンを実行して、誤りを回復する（ブロック308）。このような柔軟性があるので、ドライブに高速かつ廉価な誤り修正回路を使用することができ、これによってドライブのコストが下がると共に、誤り修正を実行する速度が改善される。その上誤り修正能力が改善される。このことは、データの長期記憶に特に重要である。
【００４９】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
【００５０】
１．  コンピュータバス（12）と、
前記コンピュータバスに接続され、誤り修正を実行するようにプログラムされたホストプロセッサ（14）と、
１ブロックのＥＣＣエンコードしたデータを提供するための手段（18）と、暗号化マスクを提供するための手段（24、26、28）と、前記暗号化マスクと前記１ブロックのＥＣＣエンコードしたデータのビットごと排他的論理和を実行するための手段（30）とを含むドライブ（16）と、前記ビットごと排他的論理和の積が暗号化されたブロックであり、前記ビットごと排他的論理和を実行するための手段の出力が前記コンピュータバスに結合され、それにより前記暗号化されたブロックが誤り修正のために前記コンピュータバスを介して前記ホストプロセッサに送信することが可能であることとを含むシステム。
【００５１】
２．  暗号化マスクを形成するための前記手段（24、26、28）が、シードを提供するための手段（26）と、前記シードから一連の乱数を発生するための疑似ランダムデータ発生器（24）と、第１部分及び第２部分を含む暗号化マスクを発生するためのＥＣＣエンコーダ（28）とを含み、前記第１部分が乱数を含み、前記第２部分が前記第１部分に関する冗長データを含む、１項に記載のシステム。
【００５２】
３．  さらに、前記コンピュータバスに接続された、前記ホストプロセッサから前記暗号化されたブロックを受信するための手段（37）と、前記ドライブから前記シードを受信するための手段（40）と、前記シードから暗号解読マスクを発生するための第２疑似ランダムデータ発生器（42）と、前記暗号解読マスクと前記暗号化したブロック中のユーザデータの第２のビットごと排他的論理和を実行するための手段（46）とを備え、前記第２のビットごと排他的論理和の積が暗号化されていないユーザデータを提供する、２項に記載のシステム。
【００５３】
４．  前記ドライブ（16）がＤＶＤ−ＲＯＭドライブであること、ならびにＤＶＤデコーダカード（36）が、ＭＰＥＧデコーダ（48）と、前記暗号化したブロックを受信するための前記手段（37）と、前記シードを受信するための前記手段（40）と、前記第２疑似ランダムデータ発生器（42）と、前記第２のビットごと排他的論理和を実行する前記手段（46）とを備え、前記ＭＰＥＧデコーダが前記第２のビットごと排他的論理和を実行するための前記手段（46）の出力に結合されている、３項に記載のシステム。
【００５４】
５．  前記ＥＣＣブロックがユーザデータに関する第１部分及び冗長データに関する第２部分を含み、ならびに前記暗号化マスクが、前記ＥＣＣブロックの第１部分及び第２部分にそれぞれ対応する第３部分及び第４部分を含む、請求項１に記載のシステム。
【００５５】
６．  前記第３部分が複数の乱数で満たされて、ならびに前記第４部分が前記第３部分から発生する冗長データを含む、５項に記載のシステム。
【００５６】
７．  前記第３部分が乱数及びゼロで選択的に満たされ、ならびに前記第４部分が前記第３部分から発生する冗長データを含む、５項に記載のシステム。
【００５７】
８．  前記ＥＣＣブロックが誤り修正方法によってコード化され、ならびに前記暗号化マスクが同じ誤り修正方法によってコード化される、１項に記載のシステム。
【００５８】
９．  前記ドライブ（16）が誤り修正を実行するための手段（39）をさらに含み、ならびにまたホストプロセッサ（14）が、前記ドライブによって送信された暗号化されたデータに誤り修正を実行する、１項に記載のシステム。
【００５９】
【発明の効果】
以上、ＥＣＣコードワードの完全性に影響を及ぼさないで、ＥＣＣエンコードしたデータを暗号化する本発明を開示した。本発明によれば、暗号化したデータの誤りコードをホストプロセッサで修正し、その後で暗号解読することができる。次にホストプロセッサで誤りコード修正を実施すると、高価なＥＣＣ回路を縮小し、静的ＲＡＭを縮小することによって、記憶装置のコストを下げることができる。
【００６０】
ホストプロセッサでＥＣＣを実行する別の利点は、ハードウエアと違って、ホストプロセッサは、異なるＥＣＣルーチンを利用する柔軟性を有することである。ハードウエア回路は、すべての状況について同じＥＣＣアルゴリズム又は１組のアルゴリズムを使用するように通常制限されるが、ホストプロセッサは異なるアルゴリズムを使用することができる。例えばホストプロセッサは、どのデータも変更（すなわち修正）せずにＥＣＣブロック全体を解析し、次いで最善の戦略を決定して修正ミスを回避することができる。データの修正ミスは、特にオンザフライ処理中に問題になる可能性がある。ハードウエアＲＳ−ＰＣデコーダは、通常誤りコード修正をオンザフライで実行し、データを誤って修正して、その結果データブロック中の誤りの数を増加させる可能性がある。修正ミスは、ブロックが修正不可能となる可能性をさらに増大させる。ホストプロセッサが採用するより柔軟性のある手法によれば、データブロックになんらかの変更をする前に、データ及び誤りパターンを解析することによって、この問題を回避することができる。
【００６１】
別の利点は、特に暗号化及び暗号解読が、最小量の機密情報、すなわちシードをコンピュータバスを介して送信することによって実行されることである。暗号化マスクはバス上に曝されない。ＤＶＤ−ＲＯＭドライブなどのドライブのドライブ製造者は通常デコーダカードも同様に販売するので、ドライブ製造者が、ドライブ及びデコーダカードに整合する同じ疑似乱数発生器を指定することができる。
【００６２】
ホストプロセッサは、暗号化したデータへアクセスせずに、誤りコード修正を実行することができる。代替的には選択的暗号化を実行することができ、その場合ホストプロセッサは、選択した情報のみにアクセスする。修正した機密ではないデータは、使用のために直ちにアクセス可能である。
【００６３】
ＤＶＤ−ＲＯＭドライブに関して本発明を説明してきたが、本発明はそれに限定されるものではない。本発明は、順方向誤り修正が必要である場合あるいは送信側がデータを再伝送することが実用的でない場合に特に適用できる。ＤＶＤプレーヤ以外のデータ記憶装置には、ＣＤプレーヤ、ディジタルデータ記憶（ＤＤＳ）プレーヤ、及びディジタルビデオカセット（ＤＶＣ）プレーヤが含まれる。他の適用例には、宇宙通信装置及びモバイル通信装置が含まれる。したがってＥＣＣブロック源はＲＯＭドライブに限定されない。
【００６４】
以上、本発明の特定の実施形態を説明し、例示してきた。しかし本発明は、説明及び例示した特定の形態及び部品の配列に限定されるものではない。例えば本発明によれば、リード−ソロモンプロダクトコード以外の誤り修正方法を使用することができる。これは、もちろん、記憶媒体に記憶されるデータに使用される暗号化方法によって決まる。
【００６５】
シード及び暗号化マスクを発生する代わりに、ＤＶＤ−ＲＯＭドライブは、ＲＯＭからアプリオリ暗号化マスクにアクセスできる。またＤＶＤデコーダカードも、ＲＯＭから暗号化マスクにアクセスする。処理電力を減少することに加えて、この実施形態では、ＤＶＤ−ＲＯＭドライブが、ＤＶＤデコーダカードにシードを渡す必要がない。
【００６６】
したがって、本発明は、以上説明し、例示した特定の実施形態に限定されるものではない。それよりも、本発明は添付の特許請求の範囲に基づいて解釈される。
【図面の簡単な説明】
【図１】本発明に基づくコンピュータシステムの種々の構成要素のブロック略図である。
【図２】本発明に基づく誤りコード修正及びデータ暗号化を実行する方法のフローチャートである。
【図３】本発明に基づく誤りコード修正及びデータ暗号化を実行する代替的な方法のフローチャートである。
【図４】ＲＳ−ＰＣブロックの簡略化したレイアウトを示す図である。
【図５】コンピュータシステムによって実行されるビットごと排他的論理和演算を示す図である。
【図６】ＲＳ−ＰＣブロック、暗号化マスク及びＲＳ−ＰＣブロックと暗号化マスクのビットごと排他的論理和の積を示すブロック図である。
【符号の説明】
10      コンピュータシステム
12      バス
14      ホストプロセッサ
16      ドライバ
36      デコーダ
【図１】
0003683738.tif 000002
【図２】
0003683738.tif 000003
【図３】
0003683738.tif 000004
【図４】
0003683738.tif 000005
【図５】
0003683738.tif 000006
【図６】
0003683738.tif 000007