コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する機器および方法
【課題】コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御するためのデバイスドライバを提供する。
【解決手段】デバイスドライバは、メディアドライブ用のデバイスドライバスタックへのアクセスのためのインターフェース、上記メディアドライブへのコンピュータ可読媒体の挿入を検出するための検出器、および上記コンピュータ可読媒体からのデータ転送をモニタリングするためのモニタを含む。モニタは、上記コンピュータ可読媒体上のデータにアクセスするアプリケーションの振る舞い特性を評価し、上記振る舞い特性が予め決められた基準を満たす場合は表示をする。制御システムは、上記振る舞い特性が上記予め決められた基準を満たす場合は少なくとも1つの制御出力を出すために上記モニタに反応する。
【解決手段】デバイスドライバは、メディアドライブ用のデバイスドライバスタックへのアクセスのためのインターフェース、上記メディアドライブへのコンピュータ可読媒体の挿入を検出するための検出器、および上記コンピュータ可読媒体からのデータ転送をモニタリングするためのモニタを含む。モニタは、上記コンピュータ可読媒体上のデータにアクセスするアプリケーションの振る舞い特性を評価し、上記振る舞い特性が予め決められた基準を満たす場合は表示をする。制御システムは、上記振る舞い特性が上記予め決められた基準を満たす場合は少なくとも1つの制御出力を出すために上記モニタに反応する。
【発明の詳細な説明】
【技術分野】
【0001】
[0001] 本発明は、コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する機器および方法に関し、特に、データ担持媒体の無許可の複製からの保護に適用可能である。
【背景技術】
【0002】
[0002] 無許可の複製からCDおよびDVDを含む光ディスクなどのコンピュータ可読媒体を保護する様々な技法が知られている。2つのそのような保護方法は両方とも参照により本明細書に組み込まれている我々の前の米国特許出願第10/848,879号および第10/939,186号に記載されている。
【0003】
[0003] 米国特許出願第10/848,879号は、光ディスクによって担持されているデータの間に、エラーを含めて、冗長制御データが含まれている保護方法を開示している。制御データは、再生されるべき資料またはコンテンツデータを含む光ディスク上のコンテンツファイルへのアクセスを制御し、コンテンツの通常の再生中は冗長制御データは利用されない。しかし、無許可の複製中は冗長制御データがアクセスされ、そのようなデータ内のエラーが、コンテンツデータへのアクセスを提供する少なくとも1つのプログラムパスのナビゲーションを阻害するように構成される。
【0004】
[0004] 米国特許出願第10/939,186号は、読み取り不可能なまたは破壊的なデータを含む少なくとも1つの領域が光ディスク上のコンテンツデータの中に提供される保護方法を開示している。コンテンツデータを含むコンテンツファイルにアクセスするためのディスク上の制御データは、通常の再生中は読み取り不可能なまたは破壊的なデータの領域へのアクセスが防止されることを保証する。しかし、無許可の複製の場合は、読み取り不可能なまたは破壊的なデータがアクセスされ、複製を妨害または防止する。
【0005】
[0005] これらの2つの前の米国特許出願は両方とも、「リッピング」として知られている手順、すなわちローカルコンピュータまたはネットワークのハードドライブへの無許可の複製から光ディスクを保護するために、光ディスクに組み込まれたデータに依存するという点でパッシブである。
【0006】
[0006] そのようなパッシブな技法は、無許可の複製からの保護にある程度有効である。しかし、リッピングソフトウェアは、そのようなパッシブな形態の保護に打ち勝つのに次第に複雑で強力になり、次第に効果的になってきている。
【0007】
[0007] したがって、無許可の複製からのより効果的な形態の保護、および回避するのがより難しい形態の保護が必要である。
【発明の概要】
【発明が解決しようとする課題】
【0008】
[0008] 本発明の一目的は、前述の問題を克服する、コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する手段を提供することである。
【0009】
[0009] 本発明の他の目的は、コンピュータ可読媒体の使用の場合を認証する手段を提供することである。そのような認証は、媒体の使用が、通常の再生においてのように、合法的であることを検証するために、あるいはさらなるアプリケーション機能または他の機能へのアクセスを可能にするために使用されてもよく、リッピングなど、媒体の無許可の使用を禁止するために使用されてもよい。
【0010】
[0010] 本発明の他の目的は、無許可の複製からの改善された保護を提供する、コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する効果的な機器および方法を提供することである。
【0011】
[0011] 本発明の他の目的は、コンピュータ可読媒体上に提供されるパッシブなデータとは対照的に、コンピュータにインストールされるアクティブなプロセスの形態のコンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する機器および方法を提供することである。
【課題を解決するための手段】
【0012】
[0012] 本発明の第1の態様によれば、コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御するデバイスドライバであって、メディアドライブ用のデバイスドライバスタックへのアクセスのためのインターフェースと、上記メディアドライブへのコンピュータ可読媒体の挿入を検出する検出器と、上記コンピュータ可読媒体からのデータ転送をモニタリングし、上記コンピュータ可読媒体上のデータを読み取るアプリケーションの振る舞い特性を評価するためのモニタと、上記振る舞い特性が予め決められた基準を満たす場合は少なくとも1つの制御出力を出すために上記モニタに反応する制御システムとを含むデバイスドライバが提供される。
【0013】
[0013] 本発明の他の態様によれば、コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する方法であって、メディアドライブ用のデバイスドライバスタックにアクセスするステップと、メディアドライブへのコンピュータ可読媒体の挿入を検出するステップと、コンピュータ可読媒体からのデータ転送をモニタリングするステップと、モニタリングされたデータ転送に基づいて、コンピュータ可読媒体上のデータを読み取るアプリケーションの振る舞い特性を評価するステップと、振る舞い特性が予め決められた基準を満たす場合は少なくとも1つの制御出力を出すステップとを含む方法が提供される。
【0014】
[0014] 後述の好ましい諸実施形態では、評価は、データ転送の量または頻度のうちの1つ、あるいはコンピュータ可読媒体上のデータにアクセスするための振る舞いのパターンを含む振る舞い特性に基づく。
【0015】
[0015] データの量または頻度のいずれかが評価される場合は、予め決められた基準は、測定された量または頻度の値が比較される閾値でもよい。振る舞いのパターンが評価される場合は、評価は、コンピュータ可読媒体上のメインコンテンツにアクセスするためのナビゲーションパスに基づいてもよい。予め決められた基準は、ディスク上に含まれている制御データ内で識別される予め設定されたナビゲーションパスでもよく、ディスク上でアクセスされるデータのためのナビゲーションパスはマッチのために、この予め設定されたナビゲーションパスと比較される。
【0016】
[0016] 評価は、好ましくは、メインコンテンツを合法的に再生するためにコンピュータ可読媒体上のデータにアクセスしているプレーヤと、メインコンテンツを不法に複製するためにデータにアクセスしているリッパーとを見分けるためである。そのような状況では、制御出力は、さらなる複製のためのコンピュータ可読媒体へのさらなるアクセスをそれぞれ許可または禁止するのに役立つ。
【0017】
[0017] 追加としてまたは代替として、評価は、さらなる機能へのアクセスを許可するためにコンピュータ可読媒体のユーザまたは使用を認証するためでもよい。
【0018】
[0018] 本発明のそのような発展形態では、評価が、ユーザが合法的なユーザであることを立証した場合、コンピュータ可読媒体上のさらなる機能へのアクセスを制御するために制御出力が利用されてもよい。
【0019】
[0019] 無許可の使用からコンピュータ可読媒体上のデータを保護する上記の技法は、それらがリアルタイムでそのような使用をモニタリングし制御することに依存するという点でアクティブであると考えられてもよい。もちろん、本発明によれば、そのようなアクティブな技法を従来技術に関して前述されたパッシブな技法と組み合わせることが可能である。
【0020】
[0020] 本発明はまた、デバイスドライバがメディアドライブ用のデバイスドライバスタックにフックすることができるようにするためのフックドライバを含んでもよい。
【0021】
[0021] 有利には、本発明はまた、媒体が複製から保護されていることを示す指紋を担持しているかどうか立証するためにメディアドライブへの挿入時にコンピュータ可読媒体をチェックするための指紋リーダを含む。そうでない場合は、本発明は、好ましくは、モニタリングも評価も行わずにデータ転送を許可する。
【図面の簡単な説明】
【0022】
【図1】本発明を組み込んだコンピュータのブロック図である。
【図2】図1のコンピュータのさらなる詳細を示すブロック図である。
【図3】情報の通常の流れおよび本発明によるスタックとフックドライバとの関係を示す、図2のデバイスドライバスタックの図である。
【図4】図3のデバイスドライバスタックおよびフックドライバの別の図である。
【図5】フックドライバをデバイスドライバスタックにフックするためのフックドライバのためのフックマネージャのステップを示すフローチャートである。
【図6】コンピュータのメディアドライブに挿入された光ディスク上の指紋を読み取るためのフックドライバの指紋リーダのステップを示すフローチャートである。
【図7】フックドライバの光ディスクからのデータ転送の量を評価するための第1の実施形態によるデータ転送認証のためのステップを示すフローチャートである。
【図8】光ディスク上のデータのナビゲーション構造を示す図である。
【図9】図8のナビゲーション構造から生じるナビゲーション順を示す図である。
【図10】図8のナビゲーション構造に関して、合法的なプレーヤのためのナビゲーションパス、および2つの異なる種類のリッパーのためのナビゲーションパスをそれぞれ示す図である。
【図11】図8のナビゲーション構造に関して、合法的なプレーヤのためのナビゲーションパス、および2つの異なる種類のリッパーのためのナビゲーションパスをそれぞれ示す図である。
【図12】ナビゲーションパスの評価に基づくフックドライバの第2の実施形態によるナビゲーションパス認証のためのステップを示すフローチャートである。
【図13】コンテンツスクランブリングシステム(CSS)復号を利用するフックドライバの第3の実施形態のための認証ステップを示すフローチャートである。
【図14】光ディスクからのデータ転送の頻度を評価するためのフックドライバの第4の実施形態によるデータ転送認証のためのステップを示すフローチャートである。
【発明を実施するための形態】
【0023】
[0022] 本発明は、添付の図面に関連して例としてのみさらに説明される。
【0024】
[0023] 次に、本発明は、図面に例示されているいくつかの好ましい実施形態に関連して説明される。本発明は、パーソナルコンピュータ、ローカルエリアネットワーク(LAN)を含むコンピュータシステム、またはインターネットなどの広域ネットワーク(WAN)を含むコンピュータネットワークで利用されてもよい。原理はどの場合でも同じであり、したがって、パーソナルコンピュータにおける本発明の利用形態だけが説明される。そのような利用形態は、本発明で利用される基本ハードウェアおよびそれに対応するアーキテクチャを例示する図1〜4に例示されている。
【0025】
[0024] まず図1および2を参照すると、パーソナルコンピュータ10は、中央処理装置(CPU)12、メモリ14、およびハードディスク16を含む。コンピュータ10はまた、光ディスク、例えばCDまたはDVDなどのコンピュータ可読媒体のための少なくとも1つのメディアドライブ20を含む。メモリ14には、様々な機能に関するCPU12への命令を提供するためのアプリケーションソフトウェアが格納されている。特に、第1のそのような機能22は、コンピュータ可読媒体、この場合はメディアドライブ20に装填された光ディスクに関して読み書きを制御するためのデバイスドライバスタックを含む。第2の機能24は、コンピュータ10のハードディスク16に関して読み書きを制御するためのストレージデバイスドライバスタックである。さらに、本発明によるデバイスドライバを含むさらなる機能26がメモリ14に格納されている。デバイスドライバ26は、本発明の使用にあたり後述のモニタリング機能を実行するためにデバイスドライバスタック22およびストレージデバイスドライバスタック24のうちの少なくとも1つにフックするので、本明細書では「フックドライバ」と呼ばれる。
【0026】
[0025] 本発明によれば、フックドライバ26は、光ディスク28が光ドライブ20に挿入された場合は検出し、その後、光ディスク28の使用をモニタリングする。特に、フックドライバ26は、ディスク上のデータが、再生アプリケーション30による通常の再生の対象であるか、またはリッピングアプリケーション32による無許可の複製であるか判断するために、光ディスク28に関してデータ転送および/または光ディスク28がアクセスされる方式をモニタリングする。通常の再生中は、情報は、スピーカおよび/またはディスプレイを介しての出力のために、デバイスドライバスタック22を介してプレーヤ30によって光ディスク28から読み取られる。しかし、リッピング中は、光ディスク28から読み取られたデータは、リッパー32によって複製され、ストレージデバイスドライバスタック24によってローカルハードディスク16に転送される。リッパー32によるリッピングの検出と同時に、フックドライバ26は、リッパー32による光ディスク28へのアクセスを禁止し、かつ/または光ディスク28からのさらなるデータの複製を防止するための諸ステップを実行する。
【0027】
[0026] 図3は、デバイスドライバスタック22の詳細およびフックドライバ26とデバイスドライバスタック22との接続を示す。図3に示されているように、デバイスドライバスタック22は、コンピュータ10のユーザモード42とカーネルモード44との間のインターフェース40に配置される。ユーザモードは、例えば、ウィンドウズアプリケーション44、再生アプリケーション30またはコンピュータユーザによって必要とされる他のアプリケーションを含めて、コンピュータ内のアプリケーションの実施など、高レベルのアクティビティを処理する。カーネルモード44は、タスクのスケジューリング、およびドライバなどとのインターフェーシングなど、低レベルのアクティビティを処理する。
【0028】
[0027] インターフェース40は、スモールコンピュータシステムインターフェース(SCSI)として知られていて、例えば、光ドライブ20などのハードウェアを、デバイスドライバスタック22を介してコンピュータ10の中のCPU12に接続するのに役立つ。ウィンドウズ(登録商標)または他のアプリケーション44から光ドライブ20へのSCSI要求として知られている要求は、光ドライブ20での実施のために、インターフェース40を横断して、要求を高レベルのソフトウェア言語から光ドライブ20の形態の物理ハードウェアに適用可能な命令に次第に変換するデバイスドライバスタック22内の一連の層を通して送信される。次いで、完了したSCSI要求は、CPU12での処理のために、デバイスドライバスタック22を通り、インターフェース40を横断して、ウィンドウズアプリケーション44へ逆方向に送信される。
【0029】
[0028] 図3に示されているように、デバイスドライバスタックは、高レベルのデバイスオブジェクト46と、この場合CD−ROMクラスドライバを含む別のデバイスオブジェクト48と、CD−ROMクラスドライバ48からの命令を光ドライブ20へのアプリケーションのための信号に変換するための物理デバイスオブジェクト50との形態の3つの層を含む。図3では、フックドライバ26は、デバイスドライバスタック22の最低のアクセスポイントで、言い換えれば、光ドライブ20を含むハードウェアにインターフェースするデバイスドライバスタック22のレベルで、物理デバイスオブジェクト50にフックするドライバオブジェクト52として示されている。フックドライバ26(ドライバオブジェクト52)をデバイスドライバスタック22に関してできるだけ低く配置する理由は、光ドライブ20で光ディスク28を読み取ろうとする可能性がある全てのアプリケーションおよびプロセスからの要求またはコマンドをインターセプトするためである。フックドライバ26がデバイスドライバスタック22に関してより高いレベルに配置された場合、いくつかの要求およびコマンドがフックドライバ26をバイパスし、それによって、フックドライバ26によって提供されたモニタリング機能を回避するように設定されることができる可能性がある。
【0030】
[0029] 図4は、コンピュータ10のユーザ42とカーネル44を隔てるSCSIインターフェース40に配置され、アプリケーション44からの要求を受信するように構成されたデバイスドライバスタック22の少し違った説明を示す別の図である。この例では、デバイスドライバスタック22は、上部フィルタドライバ54と下部フィルタドライバ56との間に配置されたCD−ROMクラスドライバ48を含む。下部フィルタドライバ56は、要求を、ハードウェア抽象化層(HAL)58を介して光ドライブ20に適用する、物理デバイスオブジェクト50に接続される。HAL58は、物理デバイスオブジェクト50から受信された要求からハードウェア信号を抽出し、それらを光ドライブ20に適用し、光ドライブ20から受信した信号を、物理デバイスオブジェクト50に送信し戻すための完了した要求に転換するのに役立つ。
【0031】
[0030]図示されているようにフックドライバ26は、デバイスドライバスタック22の物理デバイスオブジェクト50にフックされ、フックドライバ26と物理デバイスオブジェクト50との接続を実行するためのフックマネージャ60、指紋リーダ62、および認証オブジェクト64を含む。次に、フックマネージャ60、指紋リーダ62、および認証オブジェクト64のさらなる詳細が、これらのオブジェクトそれぞれによって実行されるステップを表示するフローチャートを示す図5〜7に関連して説明される。
【0032】
[0031] 図5は、以下のようなフックマネージャ60の動作を示すフローチャートである。ステップ500で、フックドライバ26は、物理デバイスオブジェクト50にアクセスし、それ自体を、コンピュータ10の中に組み込まれた、または周辺機器としてコンピュータ10に接続されたプラグアンドプレイ(PNP)デバイスの通知を受信するために登録する。そのようなPNPデバイスは、光ドライブ20を含む。次に、ステップ502で、フックドライバ26は、コンピュータ10のオペレーティングシステムに光ドライブ20を含む現在存在するそのようなデバイスのリストを要求し、取得する。ステップ502でのPNPデバイスの通知を求める要求はアクティブのままであり、さらなるデバイスがコンピュータ10に接続されると、そのようなデバイスのIDがフックドライバ26に供給される。ステップ502でPNPデバイスの現在のリストを取得した後で、フックドライバ26は、ステップ504で、物理デバイスオブジェクト50によって提供された通常のSCSI機能の代わりにそれ自体の機能を使用する。したがって、将来のSCSI要求は全てフックドライバ26を通過することになる。したがって、ステップ506に示されているように、光ドライブ20への供給を求める将来のSCSI要求は全てフックドライバ26を通して送られる。さらに、ステップ508で、フックドライバ26は、メディア到着の通知、すなわち光ディスク28が光ドライブ20に挿入されたという通知を受信するために、それ自体をアプリケーション44に登録する。次に、そのような通知は、ステップ510によって示されているように、フックドライバ26によって処理される。これで、フックドライバ26のインストールが完了する。
【0033】
[0032] 図6は、図5のサブルーチン510に含まれるステップの詳細を示す。ステップ600で、光ドライブ20に新規の光ディスク28が挿入されたという通知が受信された場合、フックドライバはステップ602でコンテンツ保護(CP)署名または指紋があるか光ディスクをチェックする。フックドライバ26はステップ604で指紋があるかどうか問い合わせ、回答がYESの場合は、ステップ606でフラグ「保護されている」を真に設定する。ステップ604の問合せに対する回答がNOの場合は、フックドライバはステップ608でフラグを「偽」に設定する。
【0034】
[0033] 次に、認証デバイス64の第1の実施形態が図7に関連して説明される。認証デバイス64の本実施形態は、大量のデータの転送は通常の再生ではなくリッピングが行われていることを意味するという想定に基づく。例えば、そのような大量のデータは10メガバイトから10ギガバイトまでの範囲にあってもよい。
【0035】
[0034] 図7に示されているように、ステップ700で、これまではデバイスドライバスタック22で処理されたであろう要求が、今は、フックドライバ26によって受信される。ステップ702で、フックドライバ26は受信された要求が読取り要求かどうか問い合わせる。回答がNOの場合は、フックドライバはステップ704に進み、要求が書込み要求かどうか問い合わせる。回答が再びNOの場合は、フックドライバ26はステップ706で単に要求を光ドライブ20に転送する。ステップ704での問合せに対する回答が、プロセスがいかなる種類のデータをもディスク16に書き込むことを意図することを示すYESの場合は、フックドライバ26はステップ708に進み、プロセスのためのIDを取得する。次に、710で、フックドライバ26はプロセスによって書き込まれたデータの量を書込みデータログにログし始め、再びステップ706に進む。
【0036】
[0035] ステップ702に戻ると、このステップでの問合せに対する回答が、YES、すなわちフックドライバ26によって受信された要求が読取り要求である場合は、フックドライバ26はステップ712に進み、光ドライブ20に挿入された光ディスク28が、図6のシーケンスのステップ606またはステップ608で生成されたフラグをレビューすることにより複製から保護されているかどうかチェックする。光ディスク28が保護されていない場合は、フックドライバ26は再びステップ706に進み、単にSCSI要求を直接光ドライブ20に渡す。一方、光ディスク28が保護されている場合は、フックドライバ26はステップ714に進み、光ディスク28を使用することを意図するプロセスのIDを取得する。次に、ステップ716で、フックドライバ26は、プロセスが今光ディスク28のビデオ領域からビデオデータを読み取っているかどうか問い合わせる。そうしていない場合は、フックドライバ26は、プロセスが、光ディスク28上のボーナス資料として知られているもの、すなわち、複製に対して制限されていない宣伝、販売促進または他のそのような資料を読み取っていると想定し、ステップ718で、そのようなボーナス資料から読み取られるデータの量を読取りボーナス資料データログにログし始める。有効プレーヤは通常の再生を開始する前にボーナス資料を複製してもよく、そのようなアクティビティをブロックしないことが重要である。次いで、フックドライバはステップ706に進む。
【0037】
[0036] ステップ716で、プロセスが光ディスク28のビデオ領域からビデオデータを読み取っていることが立証された場合は、次に、ステップ720で、フックドライバ26は、プロセスが(以下で説明されるように)すでに永続的にブロックされているがどうかチェックし、応答がYESの場合は、直接ステップ722に進む。ステップ720の問合せに対する応答が、プロセスがブロックされていないことを示すNOの場合は、フックドライバ26は、その代わりに、ステップ724に進み、光ディスク28からのプロセス読取りが、大量のデータが転送されていることを示唆する、光ディスク28のビデオ領域から読み取られるビデオデータの読取り閾値を超えているかどうか問い合わせる。フックドライバ26は、このためにビデオデータログをチェックする。回答がNOの場合は、フックドライバ26は、ステップ726で、単にビデオデータログにビデオ領域から読み取られたデータの量をログし、ステップ706に進む。
【0038】
[0037] しかし、フックドライバ26がステップ724で読取り閾値が超えられていることを立証した場合、ステップ728に進み、前述のログを、書込みデータがあるか、および読取りボーナス資料データがあるかレビューし、これらのログから推論された第2閾値が超えられているかどうか問い合わせる。この第2閾値は、書込みデータログ内の書込みデータの書込み閾値と、読取りボーナス資料データログ内の読取りボーナス資料データの読取り閾値との差であるように設定され、単にボーナス資料に関するより多くの量の所与のデータがプロセスによってハードディスク16に書き込まれたことを示す。したがって、この第2閾値は、事実上ビデオデータ書込み閾値を表す。ステップ728の問合せに対する回答がNOの場合は、フックドライバ26はステップ726に進み、ビデオデータログにビデオ領域から読み取られたデータの量をログする。
【0039】
[0038] 一方、ステップ728の問合せに対する回答がYESの場合は、フックドライバ26はステップ730に進み、閾率が超えられたかどうか問い合わせる。この閾率は、ビデオデータログ内のデータの現在の量に対する、書込みデータログ内の書込みデータの現在の量と、読取りボーナス資料データログで読み取られたボーナス資料データの現在の量との差の比率であり、書き込まれるビデオデータの量が、例えば光ディスク28上のビデオ資料の分析だけでなくリッピングを示すのに十分であることを示す。ステップ730の問合せに対する回答がYESの場合は、フックドライバは再びステップ732に進み、プロセスが永続的にブロックされていることを示すフラグを設定する。ステップ730の問合せに対する回答がNOの場合は、フックドライバ26はステップ726に進み、光ディスク28のビデオ領域から読み取られたビデオデータの量をログする。
【0040】
[0039] ステップ732でプロセスがブロックされているというフラグを設定した後で、次に、フックドライバ26はステップ722に進み、まず元のSCSI要求を変更し、その後ステップ706でそれを光ドライブ20に渡す。
【0041】
[0040] ここでの想定は、リッピングの場合は、転送されたデータの量は読取り閾値と書込み閾値の両方を超え、通常の再生の場合は、読取り閾値は超えられてもよいが、書込み閾値は超えられないということである。したがって、ステップ728の問合せに対する回答が、ビデオデータ書込み閾値が超えられたことを示すYESの場合は、フックドライバ26は、現在のプロセスのためにフラグ「ブロックされているは真に等しい」を設定する。このフラグは、フックドライバ26から見ると通常の再生ではなくリッピング動作が行われていることを示し、したがって、その場合は、フックドライバはステップ722でSCSI要求を変更する。同様に、フックドライバ26はステップ732で書込み閾値と読み取られたボーナスデータの量との差に対する読取り閾値の比率が超えられたことを発見した場合は、フラグ「ブロックされているは真に等しい」を再び設定し、リッピングが行われているという想定のもとに元のSCSI要求を変更する。そのような変更は、例えば、識別されたプロセスが光ドライブ20内の光ディスク28にさらにアクセスしないようにすること、あるいは、さらなる書込みを防止するするまたは返されたデータを役に立たないようにすることにより、光ディスク28からのさらなる複製を防止することを含んでもよい。
【0042】
[0041] 認証の正確さを保証し、リッピングの誤評価を防止するために、読取りおよび書込み閾値は比較的高いレベルで設定される。これは、さらなる複製を防止する決定がなされる前にデータのいくらかの量が複製される可能性があり、例えば、数十メガバイトが、リッピングが検出されるときまでに光ドライブ20とターゲットストレージデバイス16との間で転送されてしまっている可能性があることを意味する。しかし、典型的なDVDでは、100メガバイトはそれでもなおコンテンツの約3分を表すだけであり、ユーザがこの量の複製保護ビデオ資料をリップすることを許可することは、特にフックドライバ26が通常の再生を妨害しないことを保証する場合は、DVD上のビデオコンテンツの全体の長さの点から見て重大ではない。
【0043】
[0042] 図7に示されている実施形態の説明から、光ディスク28が、それが複製から保護されていることを示す指紋を含み、さらに、書込みプロセスが予め決められた書込み閾値を超えない限り、フックドライバ26はSCSI要求には事実上見えないことが理解されるであろう。
【0044】
[0043] 認証デバイス64の第2の実施形態は、図12に例示されており、光ディスク28上のデータの読み取り中に利用されるナビゲーションパスの評価に基づく。この実施形態を理解するためには、光ディスク28上に提供されたデータ構造、および光ディスク28上のデータを読み取るために利用されるナビゲーションパスをも理解することが必要である。したがって、まず、DVD上に提供されたデータの構造の特定の例が図8および9に関連して説明され、次に、そのようなデータ構造のために、合法的プレーヤ30によって、および2つの異なる種類のリッパー32によって取られるナビゲーションパスが、それぞれ、図10および11に関連して説明される。
【0045】
[0044] まず、図8を参照すると、DVD上に提供されたデータは、DVDの読取りを管理するための、すなわちDVD上のデータを読み取るためのナビゲーションパスを決定するための制御データと、DVD上のメインコンテンツを含むコンテンツデータとを含む。
図8に示されているDVD28は、普通は最初に再生され、辿られるべきナビゲーションパスを示す、最初のプログラムチェーン(PGC)800を含む簡単なビデオDVDである。ビデオマネージャ(VMG)802は様々な情報データを含み、メインメニュー806を有するタイトルメニュー804含む。DVDはまた、2つのビデオタイトルセット(VTS)808および810を含み、それぞれがやはり情報ファイルを含む。VTS1 808は、通常の著作権警告を含む単一のタイトル812を含む。VTS2 810は、DVD上のメインムービーのためのタイトルを含む第1タイトル814、およびロゴなどの短いビデオクリップのための、または、サイレントブラックビデオの2つのフレームのためのタイトルを含む第2タイトル816を含む。
【0046】
[0045] タイトル814、816はそれぞれ1つまたは複数のプログラムチェーン(PGC)818、820をそれぞれ含む。タイトル814のPGC818は、通常は順に再生されるように構成されるPG1、PG2など…のいくつかの個々のプログラム822を含む。各プログラム822は、対応するビデオオブジェクトセット826の特定の部分にアドレスする少なくとも1つのポインタ824を有する。各ビデオオブジェクトセット826は、セル1/1、セル1/2など…のいくつかのセル828に分割される。同様に、プログラムチェーン820も、ビデオオブジェクトセット826の特定の部分への、この場合はセル2/1などのセル834へのポインタ832を有するPG1などのプログラム830を有する。
【0047】
[0046] 図8のナビゲーション構造から生じるナビゲーション順が図9に示されている。DVD28を光ドライブ20に装填した後で、まず、VTS1 808および著作権警告を含むタイトル812が提示される。その後で、メインタイトル804のメインメニュー806が提示され、メインメニュー806上の再生ボタン836がアクティブ化された場合、ナビゲーション順は、VTS2 810内のタイトル816、およびセル834に含まれるロゴまたは他のコンテンツに進む。次に、ナビゲーション順は、タイトル814に進み、DVDのメインコンテンツまたはムービーを再生し、それに続いて、ナビゲーション順はメインメニュー806に戻る。
【0048】
[0047] 図8から、タイトル816のための表示データは、メインタイトル814のための表示データの後でDVD28上に物理的に配置されることに留意すべきである。したがって、図9に示されているように、まず、合法的なプレーヤ30は、ビデオオブジェクトセット826の端にあるセル834にアクセスすることによりタイトル816のための表示データにアクセスし、次いで、ビデオオブジェクトセット826のセル828にアクセスすることによりメインタイトル814のための表示データにアクセスするために、DVD28上の前の物理的位置にジャンプバックする。対照的に、リッパーは、直線的にDVD上の異なるファイルにアクセスする、またはまず情報ファイルにアクセスし、次いで、メインタイトルを選択した後で、メインタイトルのための表示データにアクセスする。さらに、リッパーは、タイトル816のための表示データの前にメインタイトル814のための表示データにアクセスする。これは、図10および11から最もよく理解されることができる。
【0049】
[0048] 図10は、制御データまたはナビゲーション情報、およびコンテンツデータまたはビデオ情報をそれぞれ含む情報ファイルが、プレーヤによってどのようにアクセスされるかを示す、合法的なプレーヤ30のナビゲーションパスを示す。図示されているように、プレーヤ30は、まず、VMG 802内の制御データまたはナビゲーション情報1002、次いで、図9に示されているDVDビデオ上のナビゲーション構造によって定義されたナビゲーションパスに従って、VTS1 808、VMG802の中のVMGM_VOBS、そして最後にVTS2 810にアクセスする。VTS2 810にアクセスする場合、プレーヤは、まず、セル2/1を含むビデオオブジェクト834に、次に、セル1/1、1/2などを含むビデオオブジェクト828に送られる。
【0050】
[0049] 図11を参照すると、これは、DVDにセクタごとにまたはファイルごとにアクセスする第1リッパー32と、まずタイトル情報を取得するために情報フィルタにアクセスし、次いでリッピングするために選択されたタイトル、多分メインタイトルのためにコンテンツデータにアクセスする第2リッパー32とによってそれぞれ取られるナビゲーションパスを示す。そのようなリッパーは、「IFO解析」リッパーとして知られている。図11に示されているように、セクタごとのまたはファイルごとのリッパー32は、単に、DVD上の物理的順序でビデオマネージャ802、VTS1 808およびVTS2 810のファイルの全てを通って進む。対照的に、IFO解析リッパー32は、まずビデオマネージャ802ならびにVTS1およびVTS2 808、810のそれぞれの制御データ1002にアクセスし、次いで次に進んでメインタイトル814のためのビデオオブジェクト828にアクセスする。いずれの場合にも、リッパー32は合法的なプレーヤ30のものとは全く異なるナビゲーションパスを辿り、セル1/1、1/2など…を含むビデオオブジェクト828にアクセスした後で、セル2/1を含むビデオオブジェクト834にアクセスする、またはビデオオブジェクト834には全然アクセスしない。
【0051】
[0050] 図12に例示された認証デバイス64の第2の実施形態は、ナビゲーションパスにおけるそのような逸脱をモニタリングするのに役立ち、したがって、DVDへのアクセスを制御するのに役立つ。この実施形態は、図8〜11に示されているデータおよびナビゲーション構造に基づく。
【0052】
[0051] 図12に示されている認証デバイス64の第2の実施形態は、リッピングがあるかチェックするためにDVD28のビデオオブジェクト828、834へのアクセスをモニタリングする。フックドライバ26は、ステップ1200でSCSI要求を受信し、ステップ1202でDVDが複製保護されているかどうか問い合わせる。回答がNOの場合は、フックドライバ26はステップ1204で単にSCSI要求を光ドライブ20に転送する。一方、DVDが複製保護されていることが立証された場合は、フックドライバ26は、ステップ1206に進み、ディスク指紋から、セル2/1を含むビデオオブジェクト834がセル1/1、1/2などを含むビデオオブジェクト828の前に読み取られるべきであることを立証し、セル1/1およびセル2/1のための位置を取得する。
【0053】
[0052] 次に、フックドライバ26はステップ1208に進み、受信されたSCSI要求が読取り要求かどうか問い合わせる。回答がNOの場合は、フックドライバ26はステップ1204に進み、前の場合と同様に単に要求を光ドライブ20に転送する。しかし、回答がYESの場合は、フックドライバ26はステップ1210でDVD28を使用することを意図するプロセスのためのIDを取得する。フックドライバ26はステップ1212に進み、このプロセスのためにフラグ「ブロックされているは真に等しい」がすでに設定されているかどうかチェックする。回答がNOの場合は、フックドライバ26はステップ1214に進み、読取り要求で要求されたディスクセクタの物理セクタアドレスとSCSI要求が生じたプロセスのプロセスIDとをメモリ14に書き込む。次いで、フックドライバ26はステップ1216に進み、要求されたセクタがセル1/1にあったかどうかチェックする。回答がNOの場合は、フックドライバは前の場合と同様にステップ1204で単に要求を光ドライブ20に渡す。一方、ステップ1216の問合せに対する回答がYESの場合は、フックドライバ26はステップ1218でセル2/1がすでにアクセスされたかどうか問い合わせる。回答がYESの場合は、フックドライバ26は再びステップ1204で単に要求を光ドライブ20に転送する。しかし、ステップ1218での問合せへの回答が、現在の読取り要求がまずセル2/1にアクセスすることなしにセル1/1にアクセスしようとしていたことを示すNOの場合は、フックドライバはステップ1220で現在のプロセスのためにフラグ「ブロックされているは真に等しい」を設定する。フラグ「ブロックされているは真に等しい」が、ステップ1212で立証されたようにまたはステップ1220の結果として設定された場合、フックドライバ26はステップ1222へ進み、ステップ1204で変更された要求を光ドライブ20に渡す前に、元のSCSI要求を例えばDVDへのさらなるアクセスを防止するようにまたはDVD28からの複製を防止するように変更する。
【0054】
[0053] 図12に示されている認証デバイスの実施形態は、セクタごと/ファイルごとのリッパーとIFO解析リッパーの両方を検出するように設計され、それらはいずれもVTS2 810の中のセル1/1の前にセル2/1にアクセスしない。もちろん、図12の認証デバイス64は図8〜11で与えられたDVDの特定の例に基づき、どの場合でも特定の光ディスク上の特定のデータおよびナビゲーション構造に適合するように適切に変更されるであろうことが理解されるべきである。また、代替ナビゲーションパス認証構造が可能であることも理解されるべきである。
【0055】
[0054] 認証デバイス64の第3の実施形態は、図13に示されており、光ディスク28の再生を制御する情報を暗号化するためにプレーヤ30と光ディスク28の両方によって所有されているコンテンツスクランブリングシステム(CSS)鍵の復号に基づいて、光ディスク28上の正しいナビゲーションパスが利用されているかどうか検出するように設計されている。プロセスはステップ1300で開始し、フックドライバ26が、CSS復号がユーザアプリケーション44からの読取りまたは書込み要求に応答して行われる方法をモニタリングし始める。簡単のために、要求は読取り要求であると仮定されるが、プロセスは書込み要求の場合でも同様であるはずである。フックドライバ26はステップ1302に進み、アプリケーション44がビデオ再生用のプレーヤ30を認証するために完全なセットの認証付与ID(AGID)の妥当性を確認するかどうか問い合わせる。回答がYESの場合は、フックドライバ26はステップ1304に進むが、回答がNOの場合は、フックドライバは、リッピングが行われているという想定のもとにステップ1306で読取りプロセスを停止する。ステップ1304で、フックドライバ26は、アプリケーションが有効CSS認証を行っているかどうか問い合わせる。回答がNOの場合は、アプリケーションは再びステップ1306に進む。しかし、回答がYESの場合は、フックドライバ26はステップ1308に進み、アプリケーションが、再生ソフトウェア内に提供されている正しいバス鍵を使用して、光ディスク28上に提供されている再生認証鍵を読み取っているかどうか問い合わせる。回答がNOの場合は、フックドライバ26はステップ1306に進み、回答がYESの場合は、フックドライバはステップ1310に進む。ステップ1310で、フックドライバ26は、アプリケーションが、再生ソフトウェア内の正しいバス鍵を使用して、ビデオタイトルを表す光ディスク28上のタイトル鍵を読み取っているかどうか問い合わせる。回答がNOの場合は、フックドライバ26はステップ1306に進み、回答がYESの場合は、フックドライバ26は1312に進む。ここで、フックドライバ26は、アプリケーションが光ディスク28の正しいセクタからタイトル鍵を読み取っているかどうかチェックする。回答がNOの場合は、フックドライバ26は再びステップ1306に進む。一方、ステップ1312への回答がYESの場合は、フックドライバ26は、ステップ1314でプレーヤ30が合法的なユーザであると想定し、再生が続行することを許可する。
【0056】
[0055] 光ドライブ20に送信される読取り要求の頻度をモニタリングし、それによって光ディスク28へのアクセスを制御する認証デバイスの第4の実施形態が図14に示されている。この第4の実施形態では、フックドライバ26はステップ1400でSCSI要求を受信し、ステップ1402で光ディスク28上の指紋をチェックし、ディスクが複製保護されているかどうか立証する。回答がNOの場合は、フックドライバ26はステップ1404で単に要求を光ドライブ20に転送する。しかし、回答がYESの場合は、フックドライバ26はステップ1406に進み、SCSI要求が読取り要求かどうか問い合わせる。NOの場合は、フックドライバ26は要求を前の場合と同様にステップ1404を介して光ドライブ20に転送する。ステップ1406の結果が、読取り要求が受信されたことを示す場合は、フックドライバ26はステップ1408に進み、光メディア28を使用することを意図するプロセスのためのIDを取得する。
【0057】
[0056] 次に、フックドライバ26はステップ1410でこの特定のプロセスのためにフラグ「ブロックされているは真に等しい」がすでに設定されているかどうか問い合わせる。現在のプロセスのためにフラグ「ブロックされているは真に等しい」が設定されていることを確認した場合は、フックドライバ26はステップ1420に進む。ステップ1410への回答がNOの場合は、フックドライバ26はステップ1412に進み、読取り要求で要求された光ディスク28上のセクタの物理セクタアドレスならびに要求の回数をメモリ14に書き込む。フックドライバ26はステップ1414に進み、前の読取り要求の記録された回数から、このプロセスのための読取り要求頻度が頻度閾値を超えているかどうかチェックする。回答がNOの場合は、フックドライバ26は読取り要求をステップ1404を介して光ドライブ20に渡す。一方、回答がYESの場合は、フックドライバ26はステップ1416で、現在のプロセスによって読み取られたセクタの最後のブロックが連続したセクタからなるかどうか検証する。回答がNOの場合は、フックドライバ26はステップ1404に進み、要求を光ドライブ20に転送する。しかし、回答がYESの場合は、フックドライバ26はステップ1418で現在のプロセスのためにフラグ「ブロックされているは真に等しい」を設定し、ステップ1420に進む。ステップ1420では、フックドライバ26は、例えば、光ディスク28へのさらなるアクセスを防止するように、または光ディスク28のさらなる複製を防止するように元のSCSI要求を変更し、次いで、変更された要求をステップ1404を介して光ドライブ20に渡す。
【0058】
[0057] 図14に示されている第4の実施形態は、合法的なプレーヤ30は、その再生バッファ内に十分な情報を維持するように設計された速度で光ディスク28上のセクタを読み取り、ビデオ、オーディオおよびサブピクチャ情報をビューアへの表示のために利用可能にするという想定に基づく。対照的に、リッパー32は、リッピングを短くするためにできるだけ速く特定のセルを含む各セクタを読み取ろうと試みる。さらに、プレーヤ30が高速でスキャンしている場合は、プレーヤはいくつかのセクタをスキップすることを意図するが、リッパーは、通常、各セル内の情報を全て読み取ろうと試みる。したがって、読取り頻度の評価を読取り順序と組み合わせることにより、読取りプロセスが合法的プレーヤ30のものであるか、リッパー32のものであるかが立証されることができる。
【0059】
[0058] 図14の実施形態の変形形態では、読取り順の評価を全て省略し、単に読取り頻度を評価することが可能である。この場合、ステップ1416は、図14に例示されている流れ順から省略され、その代わり、流れ順は、読取り要求頻度閾値が超えられたかどうかに関するステップ1414の問合せが回答YESを生成した場合は、直接ステップ1414からステップ1418に進むことになる。
【0060】
[0059] 本発明の様々な実施例が上記で説明されてきた。いくつかの変更形態が本発明の範囲内で可能であることが理解されるであろう。
【0061】
[0060] 例えば、認証デバイス64の4つの異なるバージョンが論じられてきたが、他の変形形態が利用されてもよいことが理解されるであろう。さらに、前述の認証デバイス64は、状況に応じて、いかなる特定のフックドライバ26においてでも、個々にまたは組み合わせて利用されてもよい。
【0062】
[0061] 光ディスク28上のデータにアクセスするために利用されるナビゲーションパスにおける逸脱などの振る舞いのパターンをモニタリングする認証デバイス64の場合、前述のパターンは、デバイスのより複雑な振る舞いモデルを作り出すために、別々にまたは一緒に、あるいは実際に他のそのようなパターンと一緒に、デバイス64によってモニタリングされてもよいことが理解されるであろう。
【0063】
[0062] 本発明の特定の特徴は、フックドライバ26が、普通は合法的であるSCSI要求に見えないように効果的に設計されることである。前述の諸実施形態はまた、メディアが複製保護されていることを示す指紋を所有していない光メディアに見えないように設計される。
【0064】
[0063] さらに、前述の諸実施形態は全て、新たに挿入された光メディアが、そのメディアが複製から保護されるべきであることを示す指紋を有しているかどうかチェックし、フックドライバ26はそれらの場合にその機能を実行するだけである。本発明は、指紋が存在してもしなくても全ての場合に利用されることが同様に可能である。
【0065】
[0064] さらに、前述のフックドライバ26は、主に読取り要求をモニタリングするように設計されているが、別の実施形態では、フックドライバ26が、そうではなくまたは同様に、他の要求をモニタリングするように設計されることも可能である。
【0066】
[0065] 前述の諸実施形態は全て光メディアを複製から保護するためである。本発明は、代替としてまたは追加として、他の利用形態を有してもよいことが理解されるであろう。例えば、ユーザまたはプロセスが認証デバイス64によって認証された後は、デバイスは、合法的な複製プロセス、あるいは例えばサウンドトラックファイル、ゲームまたは他の特別のオファーを提供するオンラインストアなどのさらなる機能へのアクセスを許可しても、または提供してもよい。
【技術分野】
【0001】
[0001] 本発明は、コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する機器および方法に関し、特に、データ担持媒体の無許可の複製からの保護に適用可能である。
【背景技術】
【0002】
[0002] 無許可の複製からCDおよびDVDを含む光ディスクなどのコンピュータ可読媒体を保護する様々な技法が知られている。2つのそのような保護方法は両方とも参照により本明細書に組み込まれている我々の前の米国特許出願第10/848,879号および第10/939,186号に記載されている。
【0003】
[0003] 米国特許出願第10/848,879号は、光ディスクによって担持されているデータの間に、エラーを含めて、冗長制御データが含まれている保護方法を開示している。制御データは、再生されるべき資料またはコンテンツデータを含む光ディスク上のコンテンツファイルへのアクセスを制御し、コンテンツの通常の再生中は冗長制御データは利用されない。しかし、無許可の複製中は冗長制御データがアクセスされ、そのようなデータ内のエラーが、コンテンツデータへのアクセスを提供する少なくとも1つのプログラムパスのナビゲーションを阻害するように構成される。
【0004】
[0004] 米国特許出願第10/939,186号は、読み取り不可能なまたは破壊的なデータを含む少なくとも1つの領域が光ディスク上のコンテンツデータの中に提供される保護方法を開示している。コンテンツデータを含むコンテンツファイルにアクセスするためのディスク上の制御データは、通常の再生中は読み取り不可能なまたは破壊的なデータの領域へのアクセスが防止されることを保証する。しかし、無許可の複製の場合は、読み取り不可能なまたは破壊的なデータがアクセスされ、複製を妨害または防止する。
【0005】
[0005] これらの2つの前の米国特許出願は両方とも、「リッピング」として知られている手順、すなわちローカルコンピュータまたはネットワークのハードドライブへの無許可の複製から光ディスクを保護するために、光ディスクに組み込まれたデータに依存するという点でパッシブである。
【0006】
[0006] そのようなパッシブな技法は、無許可の複製からの保護にある程度有効である。しかし、リッピングソフトウェアは、そのようなパッシブな形態の保護に打ち勝つのに次第に複雑で強力になり、次第に効果的になってきている。
【0007】
[0007] したがって、無許可の複製からのより効果的な形態の保護、および回避するのがより難しい形態の保護が必要である。
【発明の概要】
【発明が解決しようとする課題】
【0008】
[0008] 本発明の一目的は、前述の問題を克服する、コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する手段を提供することである。
【0009】
[0009] 本発明の他の目的は、コンピュータ可読媒体の使用の場合を認証する手段を提供することである。そのような認証は、媒体の使用が、通常の再生においてのように、合法的であることを検証するために、あるいはさらなるアプリケーション機能または他の機能へのアクセスを可能にするために使用されてもよく、リッピングなど、媒体の無許可の使用を禁止するために使用されてもよい。
【0010】
[0010] 本発明の他の目的は、無許可の複製からの改善された保護を提供する、コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する効果的な機器および方法を提供することである。
【0011】
[0011] 本発明の他の目的は、コンピュータ可読媒体上に提供されるパッシブなデータとは対照的に、コンピュータにインストールされるアクティブなプロセスの形態のコンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する機器および方法を提供することである。
【課題を解決するための手段】
【0012】
[0012] 本発明の第1の態様によれば、コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御するデバイスドライバであって、メディアドライブ用のデバイスドライバスタックへのアクセスのためのインターフェースと、上記メディアドライブへのコンピュータ可読媒体の挿入を検出する検出器と、上記コンピュータ可読媒体からのデータ転送をモニタリングし、上記コンピュータ可読媒体上のデータを読み取るアプリケーションの振る舞い特性を評価するためのモニタと、上記振る舞い特性が予め決められた基準を満たす場合は少なくとも1つの制御出力を出すために上記モニタに反応する制御システムとを含むデバイスドライバが提供される。
【0013】
[0013] 本発明の他の態様によれば、コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する方法であって、メディアドライブ用のデバイスドライバスタックにアクセスするステップと、メディアドライブへのコンピュータ可読媒体の挿入を検出するステップと、コンピュータ可読媒体からのデータ転送をモニタリングするステップと、モニタリングされたデータ転送に基づいて、コンピュータ可読媒体上のデータを読み取るアプリケーションの振る舞い特性を評価するステップと、振る舞い特性が予め決められた基準を満たす場合は少なくとも1つの制御出力を出すステップとを含む方法が提供される。
【0014】
[0014] 後述の好ましい諸実施形態では、評価は、データ転送の量または頻度のうちの1つ、あるいはコンピュータ可読媒体上のデータにアクセスするための振る舞いのパターンを含む振る舞い特性に基づく。
【0015】
[0015] データの量または頻度のいずれかが評価される場合は、予め決められた基準は、測定された量または頻度の値が比較される閾値でもよい。振る舞いのパターンが評価される場合は、評価は、コンピュータ可読媒体上のメインコンテンツにアクセスするためのナビゲーションパスに基づいてもよい。予め決められた基準は、ディスク上に含まれている制御データ内で識別される予め設定されたナビゲーションパスでもよく、ディスク上でアクセスされるデータのためのナビゲーションパスはマッチのために、この予め設定されたナビゲーションパスと比較される。
【0016】
[0016] 評価は、好ましくは、メインコンテンツを合法的に再生するためにコンピュータ可読媒体上のデータにアクセスしているプレーヤと、メインコンテンツを不法に複製するためにデータにアクセスしているリッパーとを見分けるためである。そのような状況では、制御出力は、さらなる複製のためのコンピュータ可読媒体へのさらなるアクセスをそれぞれ許可または禁止するのに役立つ。
【0017】
[0017] 追加としてまたは代替として、評価は、さらなる機能へのアクセスを許可するためにコンピュータ可読媒体のユーザまたは使用を認証するためでもよい。
【0018】
[0018] 本発明のそのような発展形態では、評価が、ユーザが合法的なユーザであることを立証した場合、コンピュータ可読媒体上のさらなる機能へのアクセスを制御するために制御出力が利用されてもよい。
【0019】
[0019] 無許可の使用からコンピュータ可読媒体上のデータを保護する上記の技法は、それらがリアルタイムでそのような使用をモニタリングし制御することに依存するという点でアクティブであると考えられてもよい。もちろん、本発明によれば、そのようなアクティブな技法を従来技術に関して前述されたパッシブな技法と組み合わせることが可能である。
【0020】
[0020] 本発明はまた、デバイスドライバがメディアドライブ用のデバイスドライバスタックにフックすることができるようにするためのフックドライバを含んでもよい。
【0021】
[0021] 有利には、本発明はまた、媒体が複製から保護されていることを示す指紋を担持しているかどうか立証するためにメディアドライブへの挿入時にコンピュータ可読媒体をチェックするための指紋リーダを含む。そうでない場合は、本発明は、好ましくは、モニタリングも評価も行わずにデータ転送を許可する。
【図面の簡単な説明】
【0022】
【図1】本発明を組み込んだコンピュータのブロック図である。
【図2】図1のコンピュータのさらなる詳細を示すブロック図である。
【図3】情報の通常の流れおよび本発明によるスタックとフックドライバとの関係を示す、図2のデバイスドライバスタックの図である。
【図4】図3のデバイスドライバスタックおよびフックドライバの別の図である。
【図5】フックドライバをデバイスドライバスタックにフックするためのフックドライバのためのフックマネージャのステップを示すフローチャートである。
【図6】コンピュータのメディアドライブに挿入された光ディスク上の指紋を読み取るためのフックドライバの指紋リーダのステップを示すフローチャートである。
【図7】フックドライバの光ディスクからのデータ転送の量を評価するための第1の実施形態によるデータ転送認証のためのステップを示すフローチャートである。
【図8】光ディスク上のデータのナビゲーション構造を示す図である。
【図9】図8のナビゲーション構造から生じるナビゲーション順を示す図である。
【図10】図8のナビゲーション構造に関して、合法的なプレーヤのためのナビゲーションパス、および2つの異なる種類のリッパーのためのナビゲーションパスをそれぞれ示す図である。
【図11】図8のナビゲーション構造に関して、合法的なプレーヤのためのナビゲーションパス、および2つの異なる種類のリッパーのためのナビゲーションパスをそれぞれ示す図である。
【図12】ナビゲーションパスの評価に基づくフックドライバの第2の実施形態によるナビゲーションパス認証のためのステップを示すフローチャートである。
【図13】コンテンツスクランブリングシステム(CSS)復号を利用するフックドライバの第3の実施形態のための認証ステップを示すフローチャートである。
【図14】光ディスクからのデータ転送の頻度を評価するためのフックドライバの第4の実施形態によるデータ転送認証のためのステップを示すフローチャートである。
【発明を実施するための形態】
【0023】
[0022] 本発明は、添付の図面に関連して例としてのみさらに説明される。
【0024】
[0023] 次に、本発明は、図面に例示されているいくつかの好ましい実施形態に関連して説明される。本発明は、パーソナルコンピュータ、ローカルエリアネットワーク(LAN)を含むコンピュータシステム、またはインターネットなどの広域ネットワーク(WAN)を含むコンピュータネットワークで利用されてもよい。原理はどの場合でも同じであり、したがって、パーソナルコンピュータにおける本発明の利用形態だけが説明される。そのような利用形態は、本発明で利用される基本ハードウェアおよびそれに対応するアーキテクチャを例示する図1〜4に例示されている。
【0025】
[0024] まず図1および2を参照すると、パーソナルコンピュータ10は、中央処理装置(CPU)12、メモリ14、およびハードディスク16を含む。コンピュータ10はまた、光ディスク、例えばCDまたはDVDなどのコンピュータ可読媒体のための少なくとも1つのメディアドライブ20を含む。メモリ14には、様々な機能に関するCPU12への命令を提供するためのアプリケーションソフトウェアが格納されている。特に、第1のそのような機能22は、コンピュータ可読媒体、この場合はメディアドライブ20に装填された光ディスクに関して読み書きを制御するためのデバイスドライバスタックを含む。第2の機能24は、コンピュータ10のハードディスク16に関して読み書きを制御するためのストレージデバイスドライバスタックである。さらに、本発明によるデバイスドライバを含むさらなる機能26がメモリ14に格納されている。デバイスドライバ26は、本発明の使用にあたり後述のモニタリング機能を実行するためにデバイスドライバスタック22およびストレージデバイスドライバスタック24のうちの少なくとも1つにフックするので、本明細書では「フックドライバ」と呼ばれる。
【0026】
[0025] 本発明によれば、フックドライバ26は、光ディスク28が光ドライブ20に挿入された場合は検出し、その後、光ディスク28の使用をモニタリングする。特に、フックドライバ26は、ディスク上のデータが、再生アプリケーション30による通常の再生の対象であるか、またはリッピングアプリケーション32による無許可の複製であるか判断するために、光ディスク28に関してデータ転送および/または光ディスク28がアクセスされる方式をモニタリングする。通常の再生中は、情報は、スピーカおよび/またはディスプレイを介しての出力のために、デバイスドライバスタック22を介してプレーヤ30によって光ディスク28から読み取られる。しかし、リッピング中は、光ディスク28から読み取られたデータは、リッパー32によって複製され、ストレージデバイスドライバスタック24によってローカルハードディスク16に転送される。リッパー32によるリッピングの検出と同時に、フックドライバ26は、リッパー32による光ディスク28へのアクセスを禁止し、かつ/または光ディスク28からのさらなるデータの複製を防止するための諸ステップを実行する。
【0027】
[0026] 図3は、デバイスドライバスタック22の詳細およびフックドライバ26とデバイスドライバスタック22との接続を示す。図3に示されているように、デバイスドライバスタック22は、コンピュータ10のユーザモード42とカーネルモード44との間のインターフェース40に配置される。ユーザモードは、例えば、ウィンドウズアプリケーション44、再生アプリケーション30またはコンピュータユーザによって必要とされる他のアプリケーションを含めて、コンピュータ内のアプリケーションの実施など、高レベルのアクティビティを処理する。カーネルモード44は、タスクのスケジューリング、およびドライバなどとのインターフェーシングなど、低レベルのアクティビティを処理する。
【0028】
[0027] インターフェース40は、スモールコンピュータシステムインターフェース(SCSI)として知られていて、例えば、光ドライブ20などのハードウェアを、デバイスドライバスタック22を介してコンピュータ10の中のCPU12に接続するのに役立つ。ウィンドウズ(登録商標)または他のアプリケーション44から光ドライブ20へのSCSI要求として知られている要求は、光ドライブ20での実施のために、インターフェース40を横断して、要求を高レベルのソフトウェア言語から光ドライブ20の形態の物理ハードウェアに適用可能な命令に次第に変換するデバイスドライバスタック22内の一連の層を通して送信される。次いで、完了したSCSI要求は、CPU12での処理のために、デバイスドライバスタック22を通り、インターフェース40を横断して、ウィンドウズアプリケーション44へ逆方向に送信される。
【0029】
[0028] 図3に示されているように、デバイスドライバスタックは、高レベルのデバイスオブジェクト46と、この場合CD−ROMクラスドライバを含む別のデバイスオブジェクト48と、CD−ROMクラスドライバ48からの命令を光ドライブ20へのアプリケーションのための信号に変換するための物理デバイスオブジェクト50との形態の3つの層を含む。図3では、フックドライバ26は、デバイスドライバスタック22の最低のアクセスポイントで、言い換えれば、光ドライブ20を含むハードウェアにインターフェースするデバイスドライバスタック22のレベルで、物理デバイスオブジェクト50にフックするドライバオブジェクト52として示されている。フックドライバ26(ドライバオブジェクト52)をデバイスドライバスタック22に関してできるだけ低く配置する理由は、光ドライブ20で光ディスク28を読み取ろうとする可能性がある全てのアプリケーションおよびプロセスからの要求またはコマンドをインターセプトするためである。フックドライバ26がデバイスドライバスタック22に関してより高いレベルに配置された場合、いくつかの要求およびコマンドがフックドライバ26をバイパスし、それによって、フックドライバ26によって提供されたモニタリング機能を回避するように設定されることができる可能性がある。
【0030】
[0029] 図4は、コンピュータ10のユーザ42とカーネル44を隔てるSCSIインターフェース40に配置され、アプリケーション44からの要求を受信するように構成されたデバイスドライバスタック22の少し違った説明を示す別の図である。この例では、デバイスドライバスタック22は、上部フィルタドライバ54と下部フィルタドライバ56との間に配置されたCD−ROMクラスドライバ48を含む。下部フィルタドライバ56は、要求を、ハードウェア抽象化層(HAL)58を介して光ドライブ20に適用する、物理デバイスオブジェクト50に接続される。HAL58は、物理デバイスオブジェクト50から受信された要求からハードウェア信号を抽出し、それらを光ドライブ20に適用し、光ドライブ20から受信した信号を、物理デバイスオブジェクト50に送信し戻すための完了した要求に転換するのに役立つ。
【0031】
[0030]図示されているようにフックドライバ26は、デバイスドライバスタック22の物理デバイスオブジェクト50にフックされ、フックドライバ26と物理デバイスオブジェクト50との接続を実行するためのフックマネージャ60、指紋リーダ62、および認証オブジェクト64を含む。次に、フックマネージャ60、指紋リーダ62、および認証オブジェクト64のさらなる詳細が、これらのオブジェクトそれぞれによって実行されるステップを表示するフローチャートを示す図5〜7に関連して説明される。
【0032】
[0031] 図5は、以下のようなフックマネージャ60の動作を示すフローチャートである。ステップ500で、フックドライバ26は、物理デバイスオブジェクト50にアクセスし、それ自体を、コンピュータ10の中に組み込まれた、または周辺機器としてコンピュータ10に接続されたプラグアンドプレイ(PNP)デバイスの通知を受信するために登録する。そのようなPNPデバイスは、光ドライブ20を含む。次に、ステップ502で、フックドライバ26は、コンピュータ10のオペレーティングシステムに光ドライブ20を含む現在存在するそのようなデバイスのリストを要求し、取得する。ステップ502でのPNPデバイスの通知を求める要求はアクティブのままであり、さらなるデバイスがコンピュータ10に接続されると、そのようなデバイスのIDがフックドライバ26に供給される。ステップ502でPNPデバイスの現在のリストを取得した後で、フックドライバ26は、ステップ504で、物理デバイスオブジェクト50によって提供された通常のSCSI機能の代わりにそれ自体の機能を使用する。したがって、将来のSCSI要求は全てフックドライバ26を通過することになる。したがって、ステップ506に示されているように、光ドライブ20への供給を求める将来のSCSI要求は全てフックドライバ26を通して送られる。さらに、ステップ508で、フックドライバ26は、メディア到着の通知、すなわち光ディスク28が光ドライブ20に挿入されたという通知を受信するために、それ自体をアプリケーション44に登録する。次に、そのような通知は、ステップ510によって示されているように、フックドライバ26によって処理される。これで、フックドライバ26のインストールが完了する。
【0033】
[0032] 図6は、図5のサブルーチン510に含まれるステップの詳細を示す。ステップ600で、光ドライブ20に新規の光ディスク28が挿入されたという通知が受信された場合、フックドライバはステップ602でコンテンツ保護(CP)署名または指紋があるか光ディスクをチェックする。フックドライバ26はステップ604で指紋があるかどうか問い合わせ、回答がYESの場合は、ステップ606でフラグ「保護されている」を真に設定する。ステップ604の問合せに対する回答がNOの場合は、フックドライバはステップ608でフラグを「偽」に設定する。
【0034】
[0033] 次に、認証デバイス64の第1の実施形態が図7に関連して説明される。認証デバイス64の本実施形態は、大量のデータの転送は通常の再生ではなくリッピングが行われていることを意味するという想定に基づく。例えば、そのような大量のデータは10メガバイトから10ギガバイトまでの範囲にあってもよい。
【0035】
[0034] 図7に示されているように、ステップ700で、これまではデバイスドライバスタック22で処理されたであろう要求が、今は、フックドライバ26によって受信される。ステップ702で、フックドライバ26は受信された要求が読取り要求かどうか問い合わせる。回答がNOの場合は、フックドライバはステップ704に進み、要求が書込み要求かどうか問い合わせる。回答が再びNOの場合は、フックドライバ26はステップ706で単に要求を光ドライブ20に転送する。ステップ704での問合せに対する回答が、プロセスがいかなる種類のデータをもディスク16に書き込むことを意図することを示すYESの場合は、フックドライバ26はステップ708に進み、プロセスのためのIDを取得する。次に、710で、フックドライバ26はプロセスによって書き込まれたデータの量を書込みデータログにログし始め、再びステップ706に進む。
【0036】
[0035] ステップ702に戻ると、このステップでの問合せに対する回答が、YES、すなわちフックドライバ26によって受信された要求が読取り要求である場合は、フックドライバ26はステップ712に進み、光ドライブ20に挿入された光ディスク28が、図6のシーケンスのステップ606またはステップ608で生成されたフラグをレビューすることにより複製から保護されているかどうかチェックする。光ディスク28が保護されていない場合は、フックドライバ26は再びステップ706に進み、単にSCSI要求を直接光ドライブ20に渡す。一方、光ディスク28が保護されている場合は、フックドライバ26はステップ714に進み、光ディスク28を使用することを意図するプロセスのIDを取得する。次に、ステップ716で、フックドライバ26は、プロセスが今光ディスク28のビデオ領域からビデオデータを読み取っているかどうか問い合わせる。そうしていない場合は、フックドライバ26は、プロセスが、光ディスク28上のボーナス資料として知られているもの、すなわち、複製に対して制限されていない宣伝、販売促進または他のそのような資料を読み取っていると想定し、ステップ718で、そのようなボーナス資料から読み取られるデータの量を読取りボーナス資料データログにログし始める。有効プレーヤは通常の再生を開始する前にボーナス資料を複製してもよく、そのようなアクティビティをブロックしないことが重要である。次いで、フックドライバはステップ706に進む。
【0037】
[0036] ステップ716で、プロセスが光ディスク28のビデオ領域からビデオデータを読み取っていることが立証された場合は、次に、ステップ720で、フックドライバ26は、プロセスが(以下で説明されるように)すでに永続的にブロックされているがどうかチェックし、応答がYESの場合は、直接ステップ722に進む。ステップ720の問合せに対する応答が、プロセスがブロックされていないことを示すNOの場合は、フックドライバ26は、その代わりに、ステップ724に進み、光ディスク28からのプロセス読取りが、大量のデータが転送されていることを示唆する、光ディスク28のビデオ領域から読み取られるビデオデータの読取り閾値を超えているかどうか問い合わせる。フックドライバ26は、このためにビデオデータログをチェックする。回答がNOの場合は、フックドライバ26は、ステップ726で、単にビデオデータログにビデオ領域から読み取られたデータの量をログし、ステップ706に進む。
【0038】
[0037] しかし、フックドライバ26がステップ724で読取り閾値が超えられていることを立証した場合、ステップ728に進み、前述のログを、書込みデータがあるか、および読取りボーナス資料データがあるかレビューし、これらのログから推論された第2閾値が超えられているかどうか問い合わせる。この第2閾値は、書込みデータログ内の書込みデータの書込み閾値と、読取りボーナス資料データログ内の読取りボーナス資料データの読取り閾値との差であるように設定され、単にボーナス資料に関するより多くの量の所与のデータがプロセスによってハードディスク16に書き込まれたことを示す。したがって、この第2閾値は、事実上ビデオデータ書込み閾値を表す。ステップ728の問合せに対する回答がNOの場合は、フックドライバ26はステップ726に進み、ビデオデータログにビデオ領域から読み取られたデータの量をログする。
【0039】
[0038] 一方、ステップ728の問合せに対する回答がYESの場合は、フックドライバ26はステップ730に進み、閾率が超えられたかどうか問い合わせる。この閾率は、ビデオデータログ内のデータの現在の量に対する、書込みデータログ内の書込みデータの現在の量と、読取りボーナス資料データログで読み取られたボーナス資料データの現在の量との差の比率であり、書き込まれるビデオデータの量が、例えば光ディスク28上のビデオ資料の分析だけでなくリッピングを示すのに十分であることを示す。ステップ730の問合せに対する回答がYESの場合は、フックドライバは再びステップ732に進み、プロセスが永続的にブロックされていることを示すフラグを設定する。ステップ730の問合せに対する回答がNOの場合は、フックドライバ26はステップ726に進み、光ディスク28のビデオ領域から読み取られたビデオデータの量をログする。
【0040】
[0039] ステップ732でプロセスがブロックされているというフラグを設定した後で、次に、フックドライバ26はステップ722に進み、まず元のSCSI要求を変更し、その後ステップ706でそれを光ドライブ20に渡す。
【0041】
[0040] ここでの想定は、リッピングの場合は、転送されたデータの量は読取り閾値と書込み閾値の両方を超え、通常の再生の場合は、読取り閾値は超えられてもよいが、書込み閾値は超えられないということである。したがって、ステップ728の問合せに対する回答が、ビデオデータ書込み閾値が超えられたことを示すYESの場合は、フックドライバ26は、現在のプロセスのためにフラグ「ブロックされているは真に等しい」を設定する。このフラグは、フックドライバ26から見ると通常の再生ではなくリッピング動作が行われていることを示し、したがって、その場合は、フックドライバはステップ722でSCSI要求を変更する。同様に、フックドライバ26はステップ732で書込み閾値と読み取られたボーナスデータの量との差に対する読取り閾値の比率が超えられたことを発見した場合は、フラグ「ブロックされているは真に等しい」を再び設定し、リッピングが行われているという想定のもとに元のSCSI要求を変更する。そのような変更は、例えば、識別されたプロセスが光ドライブ20内の光ディスク28にさらにアクセスしないようにすること、あるいは、さらなる書込みを防止するするまたは返されたデータを役に立たないようにすることにより、光ディスク28からのさらなる複製を防止することを含んでもよい。
【0042】
[0041] 認証の正確さを保証し、リッピングの誤評価を防止するために、読取りおよび書込み閾値は比較的高いレベルで設定される。これは、さらなる複製を防止する決定がなされる前にデータのいくらかの量が複製される可能性があり、例えば、数十メガバイトが、リッピングが検出されるときまでに光ドライブ20とターゲットストレージデバイス16との間で転送されてしまっている可能性があることを意味する。しかし、典型的なDVDでは、100メガバイトはそれでもなおコンテンツの約3分を表すだけであり、ユーザがこの量の複製保護ビデオ資料をリップすることを許可することは、特にフックドライバ26が通常の再生を妨害しないことを保証する場合は、DVD上のビデオコンテンツの全体の長さの点から見て重大ではない。
【0043】
[0042] 図7に示されている実施形態の説明から、光ディスク28が、それが複製から保護されていることを示す指紋を含み、さらに、書込みプロセスが予め決められた書込み閾値を超えない限り、フックドライバ26はSCSI要求には事実上見えないことが理解されるであろう。
【0044】
[0043] 認証デバイス64の第2の実施形態は、図12に例示されており、光ディスク28上のデータの読み取り中に利用されるナビゲーションパスの評価に基づく。この実施形態を理解するためには、光ディスク28上に提供されたデータ構造、および光ディスク28上のデータを読み取るために利用されるナビゲーションパスをも理解することが必要である。したがって、まず、DVD上に提供されたデータの構造の特定の例が図8および9に関連して説明され、次に、そのようなデータ構造のために、合法的プレーヤ30によって、および2つの異なる種類のリッパー32によって取られるナビゲーションパスが、それぞれ、図10および11に関連して説明される。
【0045】
[0044] まず、図8を参照すると、DVD上に提供されたデータは、DVDの読取りを管理するための、すなわちDVD上のデータを読み取るためのナビゲーションパスを決定するための制御データと、DVD上のメインコンテンツを含むコンテンツデータとを含む。
図8に示されているDVD28は、普通は最初に再生され、辿られるべきナビゲーションパスを示す、最初のプログラムチェーン(PGC)800を含む簡単なビデオDVDである。ビデオマネージャ(VMG)802は様々な情報データを含み、メインメニュー806を有するタイトルメニュー804含む。DVDはまた、2つのビデオタイトルセット(VTS)808および810を含み、それぞれがやはり情報ファイルを含む。VTS1 808は、通常の著作権警告を含む単一のタイトル812を含む。VTS2 810は、DVD上のメインムービーのためのタイトルを含む第1タイトル814、およびロゴなどの短いビデオクリップのための、または、サイレントブラックビデオの2つのフレームのためのタイトルを含む第2タイトル816を含む。
【0046】
[0045] タイトル814、816はそれぞれ1つまたは複数のプログラムチェーン(PGC)818、820をそれぞれ含む。タイトル814のPGC818は、通常は順に再生されるように構成されるPG1、PG2など…のいくつかの個々のプログラム822を含む。各プログラム822は、対応するビデオオブジェクトセット826の特定の部分にアドレスする少なくとも1つのポインタ824を有する。各ビデオオブジェクトセット826は、セル1/1、セル1/2など…のいくつかのセル828に分割される。同様に、プログラムチェーン820も、ビデオオブジェクトセット826の特定の部分への、この場合はセル2/1などのセル834へのポインタ832を有するPG1などのプログラム830を有する。
【0047】
[0046] 図8のナビゲーション構造から生じるナビゲーション順が図9に示されている。DVD28を光ドライブ20に装填した後で、まず、VTS1 808および著作権警告を含むタイトル812が提示される。その後で、メインタイトル804のメインメニュー806が提示され、メインメニュー806上の再生ボタン836がアクティブ化された場合、ナビゲーション順は、VTS2 810内のタイトル816、およびセル834に含まれるロゴまたは他のコンテンツに進む。次に、ナビゲーション順は、タイトル814に進み、DVDのメインコンテンツまたはムービーを再生し、それに続いて、ナビゲーション順はメインメニュー806に戻る。
【0048】
[0047] 図8から、タイトル816のための表示データは、メインタイトル814のための表示データの後でDVD28上に物理的に配置されることに留意すべきである。したがって、図9に示されているように、まず、合法的なプレーヤ30は、ビデオオブジェクトセット826の端にあるセル834にアクセスすることによりタイトル816のための表示データにアクセスし、次いで、ビデオオブジェクトセット826のセル828にアクセスすることによりメインタイトル814のための表示データにアクセスするために、DVD28上の前の物理的位置にジャンプバックする。対照的に、リッパーは、直線的にDVD上の異なるファイルにアクセスする、またはまず情報ファイルにアクセスし、次いで、メインタイトルを選択した後で、メインタイトルのための表示データにアクセスする。さらに、リッパーは、タイトル816のための表示データの前にメインタイトル814のための表示データにアクセスする。これは、図10および11から最もよく理解されることができる。
【0049】
[0048] 図10は、制御データまたはナビゲーション情報、およびコンテンツデータまたはビデオ情報をそれぞれ含む情報ファイルが、プレーヤによってどのようにアクセスされるかを示す、合法的なプレーヤ30のナビゲーションパスを示す。図示されているように、プレーヤ30は、まず、VMG 802内の制御データまたはナビゲーション情報1002、次いで、図9に示されているDVDビデオ上のナビゲーション構造によって定義されたナビゲーションパスに従って、VTS1 808、VMG802の中のVMGM_VOBS、そして最後にVTS2 810にアクセスする。VTS2 810にアクセスする場合、プレーヤは、まず、セル2/1を含むビデオオブジェクト834に、次に、セル1/1、1/2などを含むビデオオブジェクト828に送られる。
【0050】
[0049] 図11を参照すると、これは、DVDにセクタごとにまたはファイルごとにアクセスする第1リッパー32と、まずタイトル情報を取得するために情報フィルタにアクセスし、次いでリッピングするために選択されたタイトル、多分メインタイトルのためにコンテンツデータにアクセスする第2リッパー32とによってそれぞれ取られるナビゲーションパスを示す。そのようなリッパーは、「IFO解析」リッパーとして知られている。図11に示されているように、セクタごとのまたはファイルごとのリッパー32は、単に、DVD上の物理的順序でビデオマネージャ802、VTS1 808およびVTS2 810のファイルの全てを通って進む。対照的に、IFO解析リッパー32は、まずビデオマネージャ802ならびにVTS1およびVTS2 808、810のそれぞれの制御データ1002にアクセスし、次いで次に進んでメインタイトル814のためのビデオオブジェクト828にアクセスする。いずれの場合にも、リッパー32は合法的なプレーヤ30のものとは全く異なるナビゲーションパスを辿り、セル1/1、1/2など…を含むビデオオブジェクト828にアクセスした後で、セル2/1を含むビデオオブジェクト834にアクセスする、またはビデオオブジェクト834には全然アクセスしない。
【0051】
[0050] 図12に例示された認証デバイス64の第2の実施形態は、ナビゲーションパスにおけるそのような逸脱をモニタリングするのに役立ち、したがって、DVDへのアクセスを制御するのに役立つ。この実施形態は、図8〜11に示されているデータおよびナビゲーション構造に基づく。
【0052】
[0051] 図12に示されている認証デバイス64の第2の実施形態は、リッピングがあるかチェックするためにDVD28のビデオオブジェクト828、834へのアクセスをモニタリングする。フックドライバ26は、ステップ1200でSCSI要求を受信し、ステップ1202でDVDが複製保護されているかどうか問い合わせる。回答がNOの場合は、フックドライバ26はステップ1204で単にSCSI要求を光ドライブ20に転送する。一方、DVDが複製保護されていることが立証された場合は、フックドライバ26は、ステップ1206に進み、ディスク指紋から、セル2/1を含むビデオオブジェクト834がセル1/1、1/2などを含むビデオオブジェクト828の前に読み取られるべきであることを立証し、セル1/1およびセル2/1のための位置を取得する。
【0053】
[0052] 次に、フックドライバ26はステップ1208に進み、受信されたSCSI要求が読取り要求かどうか問い合わせる。回答がNOの場合は、フックドライバ26はステップ1204に進み、前の場合と同様に単に要求を光ドライブ20に転送する。しかし、回答がYESの場合は、フックドライバ26はステップ1210でDVD28を使用することを意図するプロセスのためのIDを取得する。フックドライバ26はステップ1212に進み、このプロセスのためにフラグ「ブロックされているは真に等しい」がすでに設定されているかどうかチェックする。回答がNOの場合は、フックドライバ26はステップ1214に進み、読取り要求で要求されたディスクセクタの物理セクタアドレスとSCSI要求が生じたプロセスのプロセスIDとをメモリ14に書き込む。次いで、フックドライバ26はステップ1216に進み、要求されたセクタがセル1/1にあったかどうかチェックする。回答がNOの場合は、フックドライバは前の場合と同様にステップ1204で単に要求を光ドライブ20に渡す。一方、ステップ1216の問合せに対する回答がYESの場合は、フックドライバ26はステップ1218でセル2/1がすでにアクセスされたかどうか問い合わせる。回答がYESの場合は、フックドライバ26は再びステップ1204で単に要求を光ドライブ20に転送する。しかし、ステップ1218での問合せへの回答が、現在の読取り要求がまずセル2/1にアクセスすることなしにセル1/1にアクセスしようとしていたことを示すNOの場合は、フックドライバはステップ1220で現在のプロセスのためにフラグ「ブロックされているは真に等しい」を設定する。フラグ「ブロックされているは真に等しい」が、ステップ1212で立証されたようにまたはステップ1220の結果として設定された場合、フックドライバ26はステップ1222へ進み、ステップ1204で変更された要求を光ドライブ20に渡す前に、元のSCSI要求を例えばDVDへのさらなるアクセスを防止するようにまたはDVD28からの複製を防止するように変更する。
【0054】
[0053] 図12に示されている認証デバイスの実施形態は、セクタごと/ファイルごとのリッパーとIFO解析リッパーの両方を検出するように設計され、それらはいずれもVTS2 810の中のセル1/1の前にセル2/1にアクセスしない。もちろん、図12の認証デバイス64は図8〜11で与えられたDVDの特定の例に基づき、どの場合でも特定の光ディスク上の特定のデータおよびナビゲーション構造に適合するように適切に変更されるであろうことが理解されるべきである。また、代替ナビゲーションパス認証構造が可能であることも理解されるべきである。
【0055】
[0054] 認証デバイス64の第3の実施形態は、図13に示されており、光ディスク28の再生を制御する情報を暗号化するためにプレーヤ30と光ディスク28の両方によって所有されているコンテンツスクランブリングシステム(CSS)鍵の復号に基づいて、光ディスク28上の正しいナビゲーションパスが利用されているかどうか検出するように設計されている。プロセスはステップ1300で開始し、フックドライバ26が、CSS復号がユーザアプリケーション44からの読取りまたは書込み要求に応答して行われる方法をモニタリングし始める。簡単のために、要求は読取り要求であると仮定されるが、プロセスは書込み要求の場合でも同様であるはずである。フックドライバ26はステップ1302に進み、アプリケーション44がビデオ再生用のプレーヤ30を認証するために完全なセットの認証付与ID(AGID)の妥当性を確認するかどうか問い合わせる。回答がYESの場合は、フックドライバ26はステップ1304に進むが、回答がNOの場合は、フックドライバは、リッピングが行われているという想定のもとにステップ1306で読取りプロセスを停止する。ステップ1304で、フックドライバ26は、アプリケーションが有効CSS認証を行っているかどうか問い合わせる。回答がNOの場合は、アプリケーションは再びステップ1306に進む。しかし、回答がYESの場合は、フックドライバ26はステップ1308に進み、アプリケーションが、再生ソフトウェア内に提供されている正しいバス鍵を使用して、光ディスク28上に提供されている再生認証鍵を読み取っているかどうか問い合わせる。回答がNOの場合は、フックドライバ26はステップ1306に進み、回答がYESの場合は、フックドライバはステップ1310に進む。ステップ1310で、フックドライバ26は、アプリケーションが、再生ソフトウェア内の正しいバス鍵を使用して、ビデオタイトルを表す光ディスク28上のタイトル鍵を読み取っているかどうか問い合わせる。回答がNOの場合は、フックドライバ26はステップ1306に進み、回答がYESの場合は、フックドライバ26は1312に進む。ここで、フックドライバ26は、アプリケーションが光ディスク28の正しいセクタからタイトル鍵を読み取っているかどうかチェックする。回答がNOの場合は、フックドライバ26は再びステップ1306に進む。一方、ステップ1312への回答がYESの場合は、フックドライバ26は、ステップ1314でプレーヤ30が合法的なユーザであると想定し、再生が続行することを許可する。
【0056】
[0055] 光ドライブ20に送信される読取り要求の頻度をモニタリングし、それによって光ディスク28へのアクセスを制御する認証デバイスの第4の実施形態が図14に示されている。この第4の実施形態では、フックドライバ26はステップ1400でSCSI要求を受信し、ステップ1402で光ディスク28上の指紋をチェックし、ディスクが複製保護されているかどうか立証する。回答がNOの場合は、フックドライバ26はステップ1404で単に要求を光ドライブ20に転送する。しかし、回答がYESの場合は、フックドライバ26はステップ1406に進み、SCSI要求が読取り要求かどうか問い合わせる。NOの場合は、フックドライバ26は要求を前の場合と同様にステップ1404を介して光ドライブ20に転送する。ステップ1406の結果が、読取り要求が受信されたことを示す場合は、フックドライバ26はステップ1408に進み、光メディア28を使用することを意図するプロセスのためのIDを取得する。
【0057】
[0056] 次に、フックドライバ26はステップ1410でこの特定のプロセスのためにフラグ「ブロックされているは真に等しい」がすでに設定されているかどうか問い合わせる。現在のプロセスのためにフラグ「ブロックされているは真に等しい」が設定されていることを確認した場合は、フックドライバ26はステップ1420に進む。ステップ1410への回答がNOの場合は、フックドライバ26はステップ1412に進み、読取り要求で要求された光ディスク28上のセクタの物理セクタアドレスならびに要求の回数をメモリ14に書き込む。フックドライバ26はステップ1414に進み、前の読取り要求の記録された回数から、このプロセスのための読取り要求頻度が頻度閾値を超えているかどうかチェックする。回答がNOの場合は、フックドライバ26は読取り要求をステップ1404を介して光ドライブ20に渡す。一方、回答がYESの場合は、フックドライバ26はステップ1416で、現在のプロセスによって読み取られたセクタの最後のブロックが連続したセクタからなるかどうか検証する。回答がNOの場合は、フックドライバ26はステップ1404に進み、要求を光ドライブ20に転送する。しかし、回答がYESの場合は、フックドライバ26はステップ1418で現在のプロセスのためにフラグ「ブロックされているは真に等しい」を設定し、ステップ1420に進む。ステップ1420では、フックドライバ26は、例えば、光ディスク28へのさらなるアクセスを防止するように、または光ディスク28のさらなる複製を防止するように元のSCSI要求を変更し、次いで、変更された要求をステップ1404を介して光ドライブ20に渡す。
【0058】
[0057] 図14に示されている第4の実施形態は、合法的なプレーヤ30は、その再生バッファ内に十分な情報を維持するように設計された速度で光ディスク28上のセクタを読み取り、ビデオ、オーディオおよびサブピクチャ情報をビューアへの表示のために利用可能にするという想定に基づく。対照的に、リッパー32は、リッピングを短くするためにできるだけ速く特定のセルを含む各セクタを読み取ろうと試みる。さらに、プレーヤ30が高速でスキャンしている場合は、プレーヤはいくつかのセクタをスキップすることを意図するが、リッパーは、通常、各セル内の情報を全て読み取ろうと試みる。したがって、読取り頻度の評価を読取り順序と組み合わせることにより、読取りプロセスが合法的プレーヤ30のものであるか、リッパー32のものであるかが立証されることができる。
【0059】
[0058] 図14の実施形態の変形形態では、読取り順の評価を全て省略し、単に読取り頻度を評価することが可能である。この場合、ステップ1416は、図14に例示されている流れ順から省略され、その代わり、流れ順は、読取り要求頻度閾値が超えられたかどうかに関するステップ1414の問合せが回答YESを生成した場合は、直接ステップ1414からステップ1418に進むことになる。
【0060】
[0059] 本発明の様々な実施例が上記で説明されてきた。いくつかの変更形態が本発明の範囲内で可能であることが理解されるであろう。
【0061】
[0060] 例えば、認証デバイス64の4つの異なるバージョンが論じられてきたが、他の変形形態が利用されてもよいことが理解されるであろう。さらに、前述の認証デバイス64は、状況に応じて、いかなる特定のフックドライバ26においてでも、個々にまたは組み合わせて利用されてもよい。
【0062】
[0061] 光ディスク28上のデータにアクセスするために利用されるナビゲーションパスにおける逸脱などの振る舞いのパターンをモニタリングする認証デバイス64の場合、前述のパターンは、デバイスのより複雑な振る舞いモデルを作り出すために、別々にまたは一緒に、あるいは実際に他のそのようなパターンと一緒に、デバイス64によってモニタリングされてもよいことが理解されるであろう。
【0063】
[0062] 本発明の特定の特徴は、フックドライバ26が、普通は合法的であるSCSI要求に見えないように効果的に設計されることである。前述の諸実施形態はまた、メディアが複製保護されていることを示す指紋を所有していない光メディアに見えないように設計される。
【0064】
[0063] さらに、前述の諸実施形態は全て、新たに挿入された光メディアが、そのメディアが複製から保護されるべきであることを示す指紋を有しているかどうかチェックし、フックドライバ26はそれらの場合にその機能を実行するだけである。本発明は、指紋が存在してもしなくても全ての場合に利用されることが同様に可能である。
【0065】
[0064] さらに、前述のフックドライバ26は、主に読取り要求をモニタリングするように設計されているが、別の実施形態では、フックドライバ26が、そうではなくまたは同様に、他の要求をモニタリングするように設計されることも可能である。
【0066】
[0065] 前述の諸実施形態は全て光メディアを複製から保護するためである。本発明は、代替としてまたは追加として、他の利用形態を有してもよいことが理解されるであろう。例えば、ユーザまたはプロセスが認証デバイス64によって認証された後は、デバイスは、合法的な複製プロセス、あるいは例えばサウンドトラックファイル、ゲームまたは他の特別のオファーを提供するオンラインストアなどのさらなる機能へのアクセスを許可しても、または提供してもよい。
【特許請求の範囲】
【請求項1】
コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御するデバイスドライバであって、
メディアドライブ用のデバイスドライバスタックへのアクセスのためのインターフェースと、
前記メディアドライブへのコンピュータ可読媒体の挿入を検出する検出器と、
前記コンピュータ可読媒体からのデータ転送をモニタリングし、前記コンピュータ可読媒体上のデータにアクセスするアプリケーションの振る舞い特性を評価するモニタと、
前記振る舞い特性が予め決められた基準を満たす場合は少なくとも1つの制御出力を出すために前記モニタに反応する制御システムと
を含むデバイスドライバ。
【請求項2】
前記振る舞い特性はデータ転送の量を含み、前記予め決められた基準はデータ転送の前記量の閾値を超えると超えないのうちの1つを含む、請求項1に記載のデバイスドライバ。
【請求項3】
前記閾値が10メガバイトから10ギガバイトまでの範囲にある、請求項2に記載のデバイスドライバ。
【請求項4】
前記振る舞い特性が振る舞いのパターンを含み、前記予め決められた基準が選択された振る舞いのパターンの変更と無変更のうちの1つを含む、請求項1に記載のデバイスドライバ。
【請求項5】
前記振る舞いのパターンは前記コンピュータ可読媒体を読み取るためのナビゲーションパスを含む、請求項4に記載のデバイスドライバ。
【請求項6】
前記振る舞い特性は制御スクランブリングシステム鍵の復号を含む、請求項1に記載のデバイスドライバ。
【請求項7】
前記振る舞い特性はデータ転送の頻度を含み、前記予め決められた基準はデータ転送の前記頻度の閾値を超えると超えないのうちの1つを含む、請求項1に記載のデバイスドライバ。
【請求項8】
前記制御出力は制御コマンドである、請求項1に記載のデバイスドライバ。
【請求項9】
前記制御出力は前記コンピュータ可読媒体へのさらなるアクセスを許可すると禁止するのうちの1つのための命令である、請求項1に記載のデバイスドライバ。
【請求項10】
前記制御出力は前記コンピュータ可読媒体からのさらなるデータ転送を禁止するように構成される、請求項1に記載のデバイスドライバ。
【請求項11】
前記制御出力は認証表示である、請求項1に記載のデバイスドライバ。
【請求項12】
前記制御出力はさらなるアプリケーション機能へのアクセスを許可する、請求項1に記載のデバイスドライバ。
【請求項13】
前記デバイスドライバを前記デバイスドライバスタックにフックするフックマネージャをさらに含む、請求項1に記載のデバイスドライバ。
【請求項14】
前記コンピュータ可読媒体が複製から保護されているかどうか立証するために前記コンピュータ可読媒体上の指紋を読み取る指紋リーダをさらに含む、請求項1に記載のデバイスドライバ。
【請求項15】
コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する方法であって、
メディアドライブ用のデバイスドライバスタックにアクセスするステップと、
前記メディアドライブへのコンピュータ可読媒体の挿入を検出するステップと、
前記コンピュータ可読媒体からのデータ転送をモニタリングするステップと、
前記モニタリングされたデータ転送に基づいて、コンピュータ可読媒体上のデータを読み取るアプリケーションの振る舞い特性を評価するステップと、
前記振る舞い特性が予め決められた基準を満たす場合は少なくとも1つの制御出力を出すステップと
を含む方法。
【請求項16】
前記モニタリングするステップはデータ転送の量をモニタリングするステップを含み、前記評価するステップは前記量が閾値を超えるかどうか判断するステップを含む、請求項15に記載の方法。
【請求項17】
前記閾値は10メガバイトから10ギガバイトまでの範囲にある、請求項16に記載の方法。
【請求項18】
前記モニタリングするステップは振る舞いのパターンをモニタリングするステップを含み、前記評価するステップは振る舞いの選択されたパターンに変更があるかどうか判断するステップを含む、請求項15に記載の方法。
【請求項19】
前記振る舞いのパターンは前記コンピュータ可読媒体を読み取るためのナビゲーションパスを含む、請求項18に記載の方法。
【請求項20】
前記モニタリングするステップは制御スクランブリングシステム鍵の復号をモニタリングするステップを含む、請求項15に記載の方法。
【請求項21】
前記モニタリングするステップはデータ転送の頻度をモニタリングするステップを含み、評価するステップは前記頻度が閾値を超えるかどうか判断するステップを含む、請求項15に記載の方法。
【請求項22】
前記制御出力が制御コマンドである、請求項15に記載の方法。
【請求項23】
前記制御出力が前記コンピュータ可読媒体へのさらなるアクセスを許可すると禁止するのうちの1つのための命令である、請求項15に記載の方法。
【請求項24】
前記制御出力が前記コンピュータ可読媒体からのさらなるデータ転送を禁止する、請求項15に記載の方法。
【請求項25】
前記制御出力が認証表示である、請求項15に記載の方法。
【請求項26】
前記制御出力がさらなるアプリケーション機能へのアクセスを許可する、請求項15に記載の方法。
【請求項27】
前記デバイスドライバを前記デバイスドライバスタックにフックするステップをさらに含む、請求項15に記載の方法。
【請求項28】
前記コンピュータ可読媒体が複製から保護されているかどうか立証するために前記コンピュータ可読媒体上の指紋を読み取るステップをさらに含む、請求項15に記載の方法。
【請求項1】
コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御するデバイスドライバであって、
メディアドライブ用のデバイスドライバスタックへのアクセスのためのインターフェースと、
前記メディアドライブへのコンピュータ可読媒体の挿入を検出する検出器と、
前記コンピュータ可読媒体からのデータ転送をモニタリングし、前記コンピュータ可読媒体上のデータにアクセスするアプリケーションの振る舞い特性を評価するモニタと、
前記振る舞い特性が予め決められた基準を満たす場合は少なくとも1つの制御出力を出すために前記モニタに反応する制御システムと
を含むデバイスドライバ。
【請求項2】
前記振る舞い特性はデータ転送の量を含み、前記予め決められた基準はデータ転送の前記量の閾値を超えると超えないのうちの1つを含む、請求項1に記載のデバイスドライバ。
【請求項3】
前記閾値が10メガバイトから10ギガバイトまでの範囲にある、請求項2に記載のデバイスドライバ。
【請求項4】
前記振る舞い特性が振る舞いのパターンを含み、前記予め決められた基準が選択された振る舞いのパターンの変更と無変更のうちの1つを含む、請求項1に記載のデバイスドライバ。
【請求項5】
前記振る舞いのパターンは前記コンピュータ可読媒体を読み取るためのナビゲーションパスを含む、請求項4に記載のデバイスドライバ。
【請求項6】
前記振る舞い特性は制御スクランブリングシステム鍵の復号を含む、請求項1に記載のデバイスドライバ。
【請求項7】
前記振る舞い特性はデータ転送の頻度を含み、前記予め決められた基準はデータ転送の前記頻度の閾値を超えると超えないのうちの1つを含む、請求項1に記載のデバイスドライバ。
【請求項8】
前記制御出力は制御コマンドである、請求項1に記載のデバイスドライバ。
【請求項9】
前記制御出力は前記コンピュータ可読媒体へのさらなるアクセスを許可すると禁止するのうちの1つのための命令である、請求項1に記載のデバイスドライバ。
【請求項10】
前記制御出力は前記コンピュータ可読媒体からのさらなるデータ転送を禁止するように構成される、請求項1に記載のデバイスドライバ。
【請求項11】
前記制御出力は認証表示である、請求項1に記載のデバイスドライバ。
【請求項12】
前記制御出力はさらなるアプリケーション機能へのアクセスを許可する、請求項1に記載のデバイスドライバ。
【請求項13】
前記デバイスドライバを前記デバイスドライバスタックにフックするフックマネージャをさらに含む、請求項1に記載のデバイスドライバ。
【請求項14】
前記コンピュータ可読媒体が複製から保護されているかどうか立証するために前記コンピュータ可読媒体上の指紋を読み取る指紋リーダをさらに含む、請求項1に記載のデバイスドライバ。
【請求項15】
コンピュータ可読媒体上のデータへのアクセスをモニタリングし制御する方法であって、
メディアドライブ用のデバイスドライバスタックにアクセスするステップと、
前記メディアドライブへのコンピュータ可読媒体の挿入を検出するステップと、
前記コンピュータ可読媒体からのデータ転送をモニタリングするステップと、
前記モニタリングされたデータ転送に基づいて、コンピュータ可読媒体上のデータを読み取るアプリケーションの振る舞い特性を評価するステップと、
前記振る舞い特性が予め決められた基準を満たす場合は少なくとも1つの制御出力を出すステップと
を含む方法。
【請求項16】
前記モニタリングするステップはデータ転送の量をモニタリングするステップを含み、前記評価するステップは前記量が閾値を超えるかどうか判断するステップを含む、請求項15に記載の方法。
【請求項17】
前記閾値は10メガバイトから10ギガバイトまでの範囲にある、請求項16に記載の方法。
【請求項18】
前記モニタリングするステップは振る舞いのパターンをモニタリングするステップを含み、前記評価するステップは振る舞いの選択されたパターンに変更があるかどうか判断するステップを含む、請求項15に記載の方法。
【請求項19】
前記振る舞いのパターンは前記コンピュータ可読媒体を読み取るためのナビゲーションパスを含む、請求項18に記載の方法。
【請求項20】
前記モニタリングするステップは制御スクランブリングシステム鍵の復号をモニタリングするステップを含む、請求項15に記載の方法。
【請求項21】
前記モニタリングするステップはデータ転送の頻度をモニタリングするステップを含み、評価するステップは前記頻度が閾値を超えるかどうか判断するステップを含む、請求項15に記載の方法。
【請求項22】
前記制御出力が制御コマンドである、請求項15に記載の方法。
【請求項23】
前記制御出力が前記コンピュータ可読媒体へのさらなるアクセスを許可すると禁止するのうちの1つのための命令である、請求項15に記載の方法。
【請求項24】
前記制御出力が前記コンピュータ可読媒体からのさらなるデータ転送を禁止する、請求項15に記載の方法。
【請求項25】
前記制御出力が認証表示である、請求項15に記載の方法。
【請求項26】
前記制御出力がさらなるアプリケーション機能へのアクセスを許可する、請求項15に記載の方法。
【請求項27】
前記デバイスドライバを前記デバイスドライバスタックにフックするステップをさらに含む、請求項15に記載の方法。
【請求項28】
前記コンピュータ可読媒体が複製から保護されているかどうか立証するために前記コンピュータ可読媒体上の指紋を読み取るステップをさらに含む、請求項15に記載の方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2012−69240(P2012−69240A)
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−248668(P2011−248668)
【出願日】平成23年11月14日(2011.11.14)
【分割の表示】特願2008−531771(P2008−531771)の分割
【原出願日】平成18年9月19日(2006.9.19)
【出願人】(511156379)ロヴィ・ヨーロッパ・リミテッド (1)
【Fターム(参考)】
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【出願番号】特願2011−248668(P2011−248668)
【出願日】平成23年11月14日(2011.11.14)
【分割の表示】特願2008−531771(P2008−531771)の分割
【原出願日】平成18年9月19日(2006.9.19)
【出願人】(511156379)ロヴィ・ヨーロッパ・リミテッド (1)
【Fターム(参考)】
[ Back to top ]