(57)【要約】デジタルコンテンツ１１６の配信を制御する方法が提供される。プログラム１００のバージョン１０６は、コンテンツを使用するために必要とされる。複数のプログラム１００のバージョンが生成され、それぞれのバージョンは、組み込まれたコードフラグメント及び／又は関連されるその位置に関して固有である。複数のコードフラグメント１１８は、それぞれ、プロセッサに、許可が与えられていないコンテンツの処理を制限するためにプログラムにより処理されるべきコンテンツのデータ特性に関するそれぞれのテストを実行させる。それぞれのコードフラグメント１１８は、プログラム１００のバージョン１０６を得るため、プログラム１００におけるそれぞれの位置で組み込まれる。
2010501923.tif 000002
【特許請求の範囲】
【請求項１】
デジタルコンテンツの配信を制御する方法であって、
前記コンテンツを使用するために、あるバージョンのプログラムが必要とされ、
当該方法は、それぞれのバージョンについて、
許可が与えられているコンテンツアイテムの１以上のデータ特性を識別し、
それぞれのコードフラグメントが、プロセッサに、許可が与えられていないコンテンツの処理を制限するためにプログラムにより処理されるべきコンテンツのデータ特性のうちの少なくとも１つに関するそれぞれのテストを実行させる、複数のコードフラグメントを決定し、
それぞれのコードフラグメントを前記プログラムにおけるそれぞれの位置と関連付けし、
前記プログラムの前記バージョンを取得するため、それぞれのコードフラグメントをそれぞれ関連される位置で前記プログラムに組み込むことにより、
それぞれのバージョンが、組み込まれたコードフラグメント及び／又は該フラグメントの関連される位置に関して固有である、複数のプログラムのバージョンを生成するステップを含む、
ことを特徴とする方法。
【請求項２】
更なるコンテンツアイテムについて許可が与えられたことに応じて、前記更なるコンテンツアイテムの処理が制限されるのを回避するため、前記複数のコードフラグメントのうちの少なくとも１つのコードフラグメント及び／又は該フラグメントの関連される位置に変化を与えるアップグレードを生成するステップを更に含む、
請求項１記載の方法。
【請求項３】
特定のコンテンツアイテムについて許可が取り消されたことに応じて、前記特定のコンテンツアイテムの処理を制限するため、前記複数のコードフラグメントのうちの少なくとも１つのコードフラグメント及び／又は該フラグメントの関連される位置に変化を与えるアップグレードを生成するステップを更に含む、
請求項１記載の方法。
【請求項４】
部分的な許可が与えられた特定のコンテンツアイテムの１以上のデータ特性を識別するステップと、
前記特定のコンテンツアイテムの処理が前記部分的な許可に従って制限されるように前記複数のコードフラグメントを決定するステップと、
を更に含む請求項１記載の方法。
【請求項５】
前記部分的な許可が変更されたことに応じて、前記特定のコンテンツアイテムの処理に関する制限が前記許可における変更に従って変化するため、前記複数のコードフラグメントのうちの少なくとも１つのコードフラグメント及び／又は該フラグメントの関連される位置に変化を与えるアップグレードを生成するステップを更に含む、
請求項４記載の方法。
【請求項６】
前記プログラムの前記バージョンについて、
前記関連されるユーザに許可を与えるステップと、
前記バージョンに関連されるユーザにのみプログラムのバージョンを提供するステップと、
を更に含む請求項１記載の方法。
【請求項７】
前記プログラムの前記バージョンについて、
前記バージョンに関連されるユーザに許可を与えるステップと、
許可がユーザに与えられているコンテンツアイテムを供給するステップと、
を更に含む請求項１記載の方法。
【請求項８】
更なる機能を提供する命令又は前記プログラムにおいてバグを固定する命令を前記アップグレードに含むステップを更に含む、
請求項２、３又は５記載の方法。
【請求項９】
基準値を読み取る入力を有するために前記プログラムのバージョンを調整するステップと、
プロセッサに、前記テストの一部として、前記コンテンツから導出された値を前記基準値に比較させるため、前記複数のコードフラグメントのうちの少なくとも１つのコードフラグメントを調整するステップと、
を更に含む請求項１記載の方法。
【請求項１０】
更なるコンテンツアイテムについてユーザに許可が与えられたことに応じて、前記更なるコンテンツアイテムに依存して更なる基準値を識別するステップと、
前記更なる基準値を前記入力に供給して、プロセッサに、前記テストの一部として、前記コンテンツから導出された値を前記更なる基準値に比較させるステップと、
を更に含む請求項９記載の方法。
【請求項１１】
デジタルコンテンツの配信を制御するシステムであって、
前記コンテンツを使用するために、あるバージョンのプログラムが必要とされ、
当該システムは、それぞれのバージョンが、組み込まれたコードフラグメント及び／又は該フラグメントの関連される位置に関して固有である、複数のプログラムのバージョンを生成する手段を有し、
前記生成手段は、
許可が与えられているコンテンツアイテムの１以上のデータ特性を識別する手段と、
それぞれのコードフラグメントが、プロセッサに、許可が与えられていないコンテンツの処理を制限するためにプログラムにより処理されるべきコンテンツのデータ特性のうちの少なくとも１つに関するそれぞれのテストを実行させる、複数のコードフラグメントを決定する手段と、
それぞれのコードフラグメントを前記プログラムにおけるそれぞれの位置と関連付けする手段と、
前記プログラムの前記バージョンを取得するため、それぞれのコードフラグメントをそれぞれ関連される位置で前記プログラムに組み込む手段と、
を有することを特徴とするシステム。
【請求項１２】
コンテンツを使用するために必要とされるプログラムのバージョンであって、
前記バージョンは、組み込まれたコードフラグメント及び／又は該フラグメントの関連される位置に関して複数のプログラムのバージョンのなかで固有であり、それぞれ関連される位置で前記プログラムに組み込まれる複数のコードフラグメントを有し、それぞれのコードフラグメントは、許可が与えられていないコンテンツの処理を制限するためにプログラムにより処理されるべきコンテンツのデータ特性に関するそれぞれのテストを実行させる、
ことを特徴とするプログラムのバージョン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルコンテンツの配信の制御に関する。
【背景技術】
【０００２】
インターネットプロバイダは、デジタルコンテンツへの便利且つユビキタスなアクセスをユーザに提供する。パワフルな配信チャネルとしてのインターネットのポテンシャルのため、多くの家庭用電化（ＣＥ）製品は、インターネットに直接にアクセスしようとするか、又は主なインターネットへのポータルであるＰＣプラットフォームと同時に使用しようとする。ＣＥ製品は、限定されるものではないが、デジタルセットトップボックス、デジタルＴＶ、ゲームコンソール、ＰＣ、及び次第に、ＰＤＡ、移動電話のようなハンドヘルド装置、並びにアップル社のｉＰｏｄのようなモバイルストレージ及びレンダリング装置を含む。著作権保護されたコンテンツの配信媒体としてのインターネットの使用は、コンテンツプロバイダの利益を確実にするための課題を生成する。特に、著作権及びコンテンツプロバイダのビジネスモデルを保証することが必要とされる。次第に、ＣＥプラットフォームは、適切なソフトウェアがロードされたプロセッサを使用して動作される。係るソフトウェアは、オーディオ及び／又はビデオのようなデジタルコンテンツのレンダリング（プレイバック）の機能の主要な部分を含む。プレイバックソフトウェアの制御は、コンテンツが使用される期間及び条件を含めてコンテンツのオーナの利益を実施する１つの方法である。伝統的に、（ＰＣ及びＰＤＡを除いて）多くのＣＥプラットフォームがクローズドで使用される場合、今日では、ますます多くのプラットフォームが少なくとも部分的にオープンにされる。特に、ＰＣプラットフォームについて、幾つかのユーザは、ハードウェア及びコンテンツへのアクセスを提供するソフトウェアに対する完全な制御、コンテンツプロテクションメカニズムをアタック及びバイパスする大量の時間及びリソースを有するものと想定される。結果として、コンテンツプロバイダは、敵意のあるネットワークにわたってユーザを合法化するため、全てのユーザ又は装置を信頼することができないコミュニティにコンテンツを伝達する必要がある。
【０００３】
著作権を取得したデータを保護する１つの方法は、コンテンツが独自に開発したプログラムとのみ使用することができるように、独自仕様のフォーマットで暗号化又は符号化することである。独自に開発されたプログラムは、デジタル著作権管理ポリシーを実施するコードを含む。ユーザがデータにアクセスするのを許可された場合、彼／彼女は、そのデータを復号又は復号化するために独自仕様のプログラムを介してキーにアクセスすることが許可される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
デジタルコンテンツの配信を制御する改善された方法を有することが有利である。
【課題を解決するための手段】
【０００５】
この課題に良好に対処するため、本発明の第一の態様では、あるバージョン１０６のプログラム１００がコンテンツを使用するために必要とされる方法が提供され、当該方法は、それぞれのバージョン１０６について、許可が与えられているコンテンツアイテムの１以上のデータ特性を識別し、それぞれのコードフラグメントが、プロセッサに、許可が与えられていないコンテンツの処理を制限するためにプログラムにより処理されるべきコンテンツのデータ特性のうちの少なくとも１つに関するそれぞれのテストを実行させる、複数のコードフラグメントを決定し、それぞれのコードフラグメント１１８を前記プログラムにおけるそれぞれの位置と関連付けし、前記プログラム１００の前記バージョン１０６を取得するため、それぞれのコードフラグメント１１８をそれぞれ関連される位置で前記プログラム１００に組み込むことにより、それぞれのバージョンが、組み込まれたコードフラグメント及び／又は該フラグメントの関連される位置に関して固有である、複数のプログラムのバージョンを生成するステップを含む。
【０００６】
コンテンツのアイテムがプログラムの指定されたバージョンによってのみ使用することができるため、配信が制御される。上記バージョンのプログラムの発生は、たとえばコンテンツプロバイダにより実行される。また、多数のコンテンツアイテムの制限により「基本」プログラムを自由に配信し、プログラムに適切なアップグレードを供給することで、上記バージョンのプログラムを生成することができる。
【０００７】
許可が与えられないコンテンツに適用されたとき、それぞれのバージョンのプログラムは機能的に低減されるので、特定のコンテンツアイテムの正式版を有する特別許可されたユーザのみがその完全なポテンシャルにまでコンテンツアイテムを使用することができる意味で配信が制御される。第一のユーザが第二の、特別許可されていないユーザにコンテンツを送出するとき、第二のユーザは、彼又は彼女のプログラムのバージョンはそのコンテンツについて低減された機能を有するため、送出されたコンテンツの完全な使用を利用することができない。コンテンツを使用することは、コンテンツをレンダリングすること、及び／又はコンテンツを処理することを含む。コンテンツは、オーディオ及び／又はビデオデータ、及び／又は、インタラクティブ又はノンインタラクティブマルチメディアコンテンツ（たとえばＨＴＭＬ，ＪａｖａＳｃｒｉｐｔ）を含む。また、コンテンツは暗号化される場合があり、この場合、コンテンツを使用することは、コンテンツを復号することを含む。コンテンツの処理の制限は、アイテムの一部のみを見ること、コンテンツを一度だけ、又は制限された時間で見ることの制約、コンテンツアイテムを見ること及び／又は記憶することにおける制約、及びレンダリングのオーディオ及び／又はビデオ品質（たとえば高精細（ＨＤＴＶ）対低精細（ＰＡＬ））における制限を含む。
【０００８】
コードフラグメントにより実行されるテストの結果が、ユーザが使用することが許可されていないコンテンツに対応する場合、コードフラグメントは、たとえば、中止命令又は低減された機能によるモードに切り換える命令を使用してプログラムの実行の流れの変化を齎す。
【０００９】
同じユーザに特化したバージョンのプログラムを共有するユーザの数が少なくなると、配信の制御が良好になる。たとえば、ユーザの多くとも１％又は１０％に同じバージョンを提供することで、海賊行為する者からコンテンツを購入することに潜在的に関心のあるユーザが海賊行為をする者から得られるコンテンツを使用することができるという、多くとも１％又は１０％の確率を有するであろう。プログラムの固有のバージョンをそれぞれのユーザに提供することで、比較的大きな程度の制御が達成される。組み込まれたコードフラグメントは、様々な可能なやり方のうちの１つから選択される場合があり、たとえば、コードフラグメントのコンテンツは、異なる場合があり、コードフラグメントは、プログラムにおける異なる位置に挿入される場合があり、プログラムにおけるコードフラグメントの順序が異なる場合があり、及び／又は、コードフラグメントは、異なる態様のコンテンツをテストする場合がある。機能に於ける低減は、コンテンツの使用を拒否することを含む。また、警告メッセージをレンダリングすること、使用されるコンテンツの量を制限すること、及び／又はコンテンツのインタラクティブな可能性に制限を課すことを含む。
【００１０】
特別許可されたユーザはコンテンツを使用する場合があるので、コンテンツは、複数のユーザのそれぞれに自由に配信される場合がある。しかし、彼が使用するのを許可されたコンテンツのみをそれぞれのユーザに提供することもできる。
【００１１】
それぞれのバージョンのプログラムが組み込まれたコードフラグメント及び／又は関連される位置に関して固有であるため、プログラムの違法なコピーは、固有のバージョンのプログラムの所有者に追跡することができる。
【００１２】
本発明の態様は、特定のコンテンツのアイテムについて与えられた／取り下げられた許可に応じて、制限された特定のコンテンツアイテムの処理を回避する／生じさせるため、複数のコードフラグメントの少なくとも１つのコードフラグメント及び／又はその関連される位置に変化を与えるアップグレードを生成するステップを含む。
【００１３】
アップグレードはプログラムの１つの特定のバージョンに組み込まれるコードフラグメントのみを変化させるため、別のバージョンのプログラムに上手くアップグレードを適用することは不可能である。これにより、コンテンツを使用するための特別の許可を有さない第二のユーザにコンテンツ及びアップグレードを送出するとき、第二のユーザのプログラムのバージョンに適用されたときにアップグレードは適切に機能せず、第二のユーザはそのコンテンツを使用することはできないため、配信の制御が改善される。
【００１４】
本発明の態様は、部分的な許可が与えられた特定のコンテンツのアイテムの１以上のデータ特性を識別するステップ、及び特定のコンテンツのアイテムの処理が部分的な許可に従って制限されるように、複数のそれぞれのコードフラグメントを決定するステップを含む。  
これにより、与えられる許可の柔軟性が改善される。
【００１５】
本発明の態様は、変化される部分的な許可に応じて、複数のコードフラグメントのうちの少なくとも１つのコードフラグメント及び／又はその関連される位置に変化を与えるアップグレードを生成し、特定のコンテンツのアイテムの処理に関する制限が許可における変化に従って変化させるステップを含む。  
これにより、変化する許可の柔軟性が改善される。
【００１６】
本発明の態様は、上記バージョン１０６のプログラム１００について、上記バージョンに関連されるユーザに許可を与えるステップ、上記バージョンに関連されるユーザにのみ上記バージョンのプログラムを提供するステップを含む。
【００１７】
たとえば、はじめに、許可がユーザに与えられ、次いで、ユーザはあるバージョンのプログラムと関連付けされ、次いで、上記バージョンは許可に従って生成され、次いで、プログラムは、ユーザに供給される。上記バージョンをユーザに特化させることで、コンテンツの配信の制御可能性のレベルが増加される。プログラムの同じバージョンを有するユーザ数が少ないと、海賊行為をする者にとってコンテンツを配信することが更に困難になる。
【００１８】
本発明の態様は、上記バージョン１０６のプログラム１００について、上記バージョンに関連されるユーザに許可を与えるステップ、及び、許可が与えられているコンテンツアイテムをユーザに提供するステップを含む。
【００１９】
たとえば、はじめに、許可がユーザに与えられ、次いで、ユーザは、あるバージョンのプログラムと関連され、次いで、上記バージョンは、許可に従って生成される。コンテンツは、任意の所望の時間でユーザに提供される。許可が与えられない場合、このコンテンツのアイテムを更に提供することができる。これは、このアイテムが、適切なバージョン又はアップグレードが提供された後にのみ使用することができるためである。ユーザがライセンスを取得したコンテンツをユーザに提供することが便利である。これは、このコンテンツがコンテンツの使用（たとえばレンダリング）のために必要とされるためである。
【００２０】
本発明の態様は、更なる機能を提供する命令、又はプログラムにおいてバグを固定する命令をアップグレードに含むステップを有する。係る更なる機能又はバグの固定は、許可のアップグレードと便利にも結合される。係るアップグレードを１つのアップグレードに結合することは、更に経済的又は効率的である場合がある。
【００２１】
本発明の態様は、基準値を読む入力を有するため、上記バージョンのプログラムを調整するステップ、及び、プロセッサに、テストの一部として、コンテンツから導出される値を基準値に比較させる複数のコードフラグメントを調整するステップを有する。
【００２２】
係る導出された値は、データの特性として使用されるために特に有効である。コンテンツから導出された値は、たとえばチェックサム、ハッシュ値、又は暗号化動作の結果である。基準値は、たとえば許可されたコンテンツについて導出された値の予め決定された結果である。また、基準値は、ユーザが使用することを許可されているコンテンツに対応しない値である。このケースで、導出された値が基準値に等しいコンテンツの一部が処理される場合、許可されていないことがわかる。ユーザに特化したバージョンのプログラムに含まれる多数のコードフラグメントが存在し、それぞれ、導出された値を１以上又はあるレンジの予め決定された値に比較する。同じコンテンツのアイテムについて、異なるバージョンのプログラムのために異なる基準値が必要とされるように、コードフラグメントは、異なるバージョンのプログラムとは異なる場合がある。基準値は、個別のファイル又は上記バージョンのプログラムを実行するコンピュータのレジストリに記憶される。また、この基準値は、外部サーバを介してオンデマンドで提供される。また、この基準値は、プログラムコードに含まれる。１つのバージョンのプログラムにおいて複数の組み込まれたコードフラグメントが存在するので、入力基準値を使用するため、より多く又は全部の組み込まれたコードフラグメントをアレンジすることが可能である。また、複数のコードフラグメントに対応する複数の基準値を読むため、複数の入力を有することが可能である。
【００２３】
本発明の態様は、更なるコンテンツのアイテムについてユーザに許可が与えられたことに応じて、更なるコンテンツアイテムに依存して更なる基準値を識別するステップ、及び更なる基準値を入力に供給し、これにより、プロセッサに、テストの一部として、コンテンツから導出された値を更なる基準値に比較させるステップを含む。
【００２４】
これは、更なる許可を提供するための便利なやり方となる。異なるバージョンのプログラムに組み込まれるコードフラグメントが異なるので、更なる基準値は、異なるバージョンのプログラムにより使用されない場合がある。更なる基準値は、新たな基準値を含むファイルの形式で、又は既存のファイルを変えるか又はレジストリを変えるプログラムの形式で提供される場合がある。
【図面の簡単な説明】
【００２５】
本発明のこれらの態様及び他の態様は、添付図面を参照して更に明らかにされるであろう。
【図１】コード及びコンテンツのフローを示す図である。
【図２】本発明の実施の形態の図である。
【発明を実施するための最良の形態】
【００２６】
企業は、映画、音楽及び電子書籍のような著作権が取得されたデータの海賊行為により多額の金を失う場合がある。海賊行為では、ある者は、データをコピーして、たとえばインターネットを介してコピーされたデータを配信しようとする。
【００２７】
著作権が取得されたデータを暗号化することで保護することが一般的な方法である。ユーザがデータにアクセスするのを許可された場合、彼／彼女には、このデータを解読するために必要とされる鍵が提供される。しかし、これは、海賊行為に対して殆ど保護することができない。暗号化されたデータのコピーに加えて、ある者は、違法なユーザに著作権が保護されたデータにアクセスさせるため、この鍵を彼／彼女に提供する必要があるのみである。
【００２８】
図１は、本発明の実施の形態を例示する。この図は、複数のユーザＵＳＲ１，ＵＳＲ２，ＵＳＲ３を示す。コンテンツは、書籍１１６により象徴的に表される。また、この図は、コンテンツを利用するためにプログラム１００を示す。参照符号１〜９をもつブロックは、プログラムにおける命令又はコードのブロックを表すために象徴的に使用される。プログラム１００は、たとえば、プロセッサに、コンテンツ１１６を解読、レンダリング及び／又は処理させる命令を含む。矢印１０８は、複数の異なるバージョン１０２，１０４，１０６がプログラム１００から導出されたことを示す。文字ａ〜ｄは、オリジナルのプログラム１００に組み込まれるコードフラグメントを示す。挿入されたコードフラグメントを受け入れるため、符号１〜９でナンバリングされたオリジナルのプログラムブロックに幾つかの変更を行なうことが必要である。矢印１１０及び１１４は、プログラム及びコンテンツがどのようにユーザに提供されるかを示す。それぞれのユーザに対して、そのユーザが使用することが許可されたコンテンツ１１６のアイテムを示す特権が割り当てられる。たとえば、コンテンツプロバイダは、ユーザがアクセスするタイトルのリスト、及び／又はユーザがアクセスしないタイトルのリストを、それぞれのユーザについて含むユーザのデータベースを維持する。
【００２９】
ユーザ１１２について、コンテンツプロバイダは、ユーザが使用することが許可されていないコンテンツに適用されたとき、プログラムの機能を一緒に低減する複数のコードフラグメントをプログラムに組み込むことで、プログラム１００のユーザに特化したバージョン１０６を作成する。ユーザが使用することが許可されたコンテンツにプログラムが適用されるとき、コードフラグメントは、コンテンツの完全な使用を防止しない。コードフラグメントは、コンテンツが使用されるべきかを判定するため、コンテンツのデータを使用する。また、コードフラグメントは、これを判定するために許可のデータベースにアクセスする。異なるユーザが異なるバージョン１０２，１０４，１０６のプログラムを取得するように、複数のコードフラグメントが選択される。たとえば、それぞれのユーザには、固有のバージョンのプログラムが提供される。たとえば、異なるコードフラグメントは、異なるバージョンに挿入されるか（バージョン１０２及び１０４でａ及びｃとして図に例示される）、コードフラグメントが挿入される位置が異なる場合がある（バージョン１０２におけるａに比較してバージョン１０６におけるａの異なる位置により例示される）。ユーザ１１２にはプログラムのバージョン１０６のみが提供されるとき、彼は、彼のバージョンのプログラムにおけるコードフラグメントにより防止されないコンテンツにのみアクセスすることができる。コンテンツプロバイダは、全てのコンテンツを全てのユーザに伝達するか、それぞれのユーザに、彼がアクセスするのが許可されたコンテンツのみを伝達する場合がある。
【００３０】
実施の形態では、ユーザの許可が変化したとき、プログラムアップデートがユーザに提供される。たとえば、コードフラグメント１１８は、コンテンツの新たなタイトルへのアクセスを許可するため、異なるコードフラグメントｅにより置き換えられる。ソフトウェアのアップグレードは、プログラムの関連するユーザのバージョン１０６に挿入されるコードフラグメントを特に変化する。したがって、ソフトウェアアップグレードは、プログラムの別のバージョン１０２，１０４によりコンテンツへのアクセスを可能にするために使用されない。これは、それぞれのユーザに固有のバージョンのプログラムが提供される場合に特にあてはまる。
【００３１】
実施の形態では、データにアクセスするために使用されるソフトウェアプログラムに多数のコードフラグメントが挿入される。挿入されるコードフラグメントは、たとえばチェックサム又はハッシュ値のような異なるデータ特性の値に依存する機能を有する。より詳細には、係るコードフラグメントは、ソフトウェアプログラムに、データ特性のある値について適切に機能し、他の値について誤って機能するように強制するものであり、この場合、誤って機能するとは、プログラムが異常終了されるか、低減された機能で動作するか、又は海賊行為の観点から望まれない機能で動作することを意味する。たとえて言うと、コードフラグメントの挿入は、鉄道ネットワークにおいて多数のスイッチを挿入することとしてみることができ、この場合、正しいプログラムの実行は、このネットワークにおける特定のルートに対応する。スイッチの位置は、特性の値に依存し、スイッチの唯一の設定は、適切なルートに繋がる。それぞれのユーザについて、コードフラグメントの挿入は、固有のやり方で行なわれる。これは、それぞれ個々のコードフラグメントが固有であることを意味しない。それぞれのユーザにとって、コードフラグメントの集合及びそれらが挿入される位置のみが固有である。ここで、暗号化されたデータ又は暗号化されていないデータにアクセスするのをユーザが望む場合、これは、挿入されたコードフラグメントがプログラムの正しい機能を齎す場合、すなわち鉄道ネットワークのスイッチが適切に設定された場合、プログラムによってのみ行うことができる。
【００３２】
実施の形態では、ユーザには、特定のデータセット又はデータストリームについて、プログラムの誤った機能に繋がる全てのコードフラグメントを訂正するプログラムアップデートが供給される。プログラムアップデートは、所与のデータについてソフトウェアプログラムにおける正しい制御フローを得るために必要とされる鍵として見ることができる。このように、ユーザは、プログラムの完全なバージョンをユーザに供給する必要なしに、データセット又はデータストリームへのアクセスが与えられる。
【００３３】
この方法は、以下の観点で海賊行為に対してプロテクトする。ある海賊行為をする者がデータをコピーすることを望み、それをユーザに違法に販売することを望むとする。ユーザＡにとって、そのデータにアクセスするために、海賊行為のため以外のコードフラグメントがプログラムに挿入され、海賊行為のプログラムアップデートは、コピーされたデータにアクセスするためにユーザＡにより使用することができない。海賊行為をする者がユーザＡにデータにアクセスする機会を与えることができる方法は、データのアクセスするために要求されるソフトウェアプログラムの彼の完全なコピーをユーザＡに提供することによる。多くのケースでは、これは、海賊行為をする者からユーザＡが違法なコピーを購入するための十分な障害となる。そうではない場合、ソフトウェアプログラムの海賊のコピーに挿入されるコードフラグメントの固有のセットは、海賊を追跡するために使用される。これは、彼が将来のデータへアクセスするのを拒否するように、適切な措置が行なわれることを意味する。それぞれのユーザについて固有なやり方でコードフラグメントがプログラムに挿入される場合、トレーシングが非常に効率的に行なわれる。したがって、ソフトウェアプログラムのコピーから、誰がそれを配信したか、すなわち誰が海賊行為をする者かを判定することができる。挿入されたコードフラグメントに加えて、違法なコピーを配信したユーザを追跡するために他のパーソナライズ技術を使用することができる。
【００３４】
実施の形態では、プログラムの制御フローは、プログラムへの入力として与えられたデータに依存する。さらに、この依存性は、それぞれのユーザについて異なり、すなわち異なるユーザについて、同じデータは、プログラムの異なる機能（制御フロー）に繋がる。このプログラムを使用するため、違法に取得されたデータは、プログラムの正しい機能（制御フロー）がそのデータについて取得されるように、依存性を変化するソフトウェアアップデートと一緒にされる必要がある。
【００３５】
比較的シンプルな実施の形態は、以下に記載される。ユーザＡは著作権を取得した映画を見るためにプログラムＡを有するとし、且つユーザは映画Ｈを見たいとする。データ特性「チェックサム“checksum”」を考慮する。データストリームの最初のｎビットの全てのｋビット値が加えられる。多数のｉｆ文がプログラムＰに挿入される。それぞれのｉｆ文は“if  checksum=v  the  abort  else  skip”により与えられ、値ｖは、それぞれのｉｆ文についてランダムに選択される。ｉｆ文の集合及び何処に彼らが配置されるかは、それぞれのユーザについて異なる。この集合は、それぞれ可能なチェックサムの値について、プログラムにおいて多数のｉｆ文が存在するように、十分に大きく選択される。
【００３６】
ユーザＡがchecksum  xで映画Ｈを見ることを望む場合、プログラムＰがｉｆ文“if  checksum=x  then  abort  else  skip”で中止するため、これは不可能である。したがって、コンテンツプロバイダは、幾つかの他のチェックサム値で中止するｉｆ文により、“checksum=x”で中止する全てのｉｆ文を置き換えるプログラムアップデートをユーザＡに提供する。プログラムアップデートをインストールした後、ユーザＡは、映画Ｈを見ることができる。しかし、別のユーザＢは、ユーザＢが異なるｉｆ文、又はコードにおける異なる位置でのｉｆ文をもつソフトウェアプログラムを有するため、映画Ｈを見るためにプログラムアップデートを使用することができない。さらに、ｉｆ文を調べることにより、ユーザＡが彼の完全なソフトウェアプログラムＰをユーザＢに提供した場合にユーザＡが追跡されるように、コンテンツプロバイダは、ソフトウェアプログラムの所有者を識別することができる。
【００３７】
この比較的シンプルな実施の形態は、主に説明の目的で記載される。実際には、挿入されるコードフラグメントは、一様ではなく、更に複雑であって、プログラムに難読化される。データの多くの異なる特性及び（Boolean  expressionを介した）それらの組み合わせは、同時に使用される場合がある。さらに、プログラムを中止する代わりに、プログラムが低減された機能又は誤った機能で動作されることが良好な場合がある。これにより、海賊行為をする者にとって依存性を除くことが更に困難になり、違法に配信されたデータを知らずに使用しようとするユーザにとって本方法を更に許容可能にする。ソフトウェアプログラムに挿入されたコードフラグメントを隠すために難読化技術が使用される場合がある。また、ユーザに与えられたプログラムアップデートは、新たなコードフラグメントを挿入し、コードフラグメントを除き、バグを固定し、又はコピープロテクションメカニズムにおけるブレイクを修復することができる。チェックサムに代替となる例は、復号鍵である。異なるユーザが同じコンテンツアイテムを復号するために異なる復号鍵を必要とするように、コードフラグメントは、異なるユーザについて異なって復号鍵を操作する場合がある。鍵の操作の例は、予め定義された値によるＸＯＲ動作を実行することである。その予め定義された値は、たとえば擬似ランダムアルゴリズムを使用して、異なるユーザにとって異なって選択される場合がある。
【００３８】
図２は、本発明の実施の形態を示す。この図は、たとえばサーバである、プロセッサ２２２及びメモリ２２１をもつシステムを示す。メモリ２２１は、プロセッサに上述された方法を実行させる命令を含む。特に、メモリ２２１は、複数のプログラムのバージョンを生成する命令を含む。これらの命令２０２は、命令２０４〜２１０である。命令２０４は、許可が与えられているコンテンツアイテムの１以上のデータ特性を識別する。また、これらのコンテンツアイテムは、許可が与えられていないコンテンツアイテムを識別することで識別される。また、メモリ２２１は、プロセッサに、データ特性に関するテストを実行させる複数のコードフラグメントを決定する命令２０６、及び、それぞれのコードフラグメントをプログラムにおけるそれぞれの位置と関連付けする命令２０８を記憶する。また、メモリ２２１は、それぞれ関連される位置でプログラムにそれぞれのコードフラグメントを組み込む命令２１０を記憶する。１以上のブロック２０２〜２１０は、たとえばプロセッサ２２２の制御下で、ハードウェアコンポーネント或いは個別の装置又はサーバとして実現される。また、システムは、デジタルコンテンツにアクセスするため、大容量記憶媒体２２６へのアクセスを有する。また、この図は、ＴＣＰ／ＩＰ又はＷｉｆｉネットワーク或いは他のコネクションのようなネットワークを介して、プログラムのバージョン及びコンテンツをユーザに供給する通信ポート２２５を示す。インタラクション手段２２４は、ユーザがシステムを動作するのを可能にするコンピュータマウス、キーボード、及び／又はモニタを有する。係る大容量記憶媒体２２６、通信ポート２２５及びインタラクション手段２２４は、当該技術分野で公知である。
【００３９】
本方法は、ユーザの許可に従ってプログラムのユーザに特化したバージョンをそれぞれのユーザが取得するケースについて主に記載された。また、許可は、プログラムのバージョンに直接に関連される。原則として、ユーザのグループに同じバージョンを提供することができる。また、幾つかのバージョンは、単一のユーザに提供される。コンテンツアイテムの処理に関する正弦波、プログラムのバージョンにおけるコードフラグメントにより（少なくとも部分的に）決定される。
【００４０】
また、許可はシンプルにｙｅｓ／ｎｏを指定するだけでなく、コンテンツアイテムに何が行なわれるかを詳細に指定することができる。たとえば、アイテムは予め決定された時間について使用されるか、予め決定された回数についてレンダリングされるか、予め決定されたその部分についてのみレンダリングされるか、又は、制限された品質又は低解像度でのみレンダリングされる。コードフラグメントは、許可により指定されるように、これらの制約を実施するために使用される。これらの許可における変化は、複数のコードフラグメントのうちの少なくとも１つのコードフラグメント及び／又はその関連される位置に変更を与えるために適切なアップグレードを提供することで実現される。コードフラグメントへの変更により、特定のコンテンツアイテムの処理に関する制限は、許可における変化に従って変更される。
【００４１】
実施の形態では、プログラムに組み込まれるコードフラグメントの少なくとも１つは、プロセッサに、コンテンツから導出された値をテストの一部として基準値に比較させるために構成される。この基準値は、コードフラグメントでハードコードされるか、個別のファイルに記憶される。基準値は、チェックサムであるか、たとえばハッシュコードである。プログラムの固有のバージョンを作成するため、チェックサムは、異なるユーザについて異なって計算される。このように、それぞれのユーザは、異なる基準値を持つ異なるファイルを必要とする。更なるコンテンツアイテムについてユーザに許可が与えられたことに応じて、更なる基準値は、更なるコンテンツアイテムに依存して識別される。たとえば、チェックサムの値は、そのコンテンツアイテムについて計算される。コードフラグメントは、プロセッサに、テストの一部として、コンテンツから導出された値を更なる基準値に比較させる。たとえば、既存の基準値を更なる基準値と置き換えることで、又は更なる基準値を既存の基準値に加えることで、既存のファイルを置き換えるか又は拡張するため、ファイルがユーザに提供される。コードフラグメントがファイルにおける基準値を使用するとき、該ファイルを新たな基準値で置き換える又は拡張することは、テストにおいて更なる基準値を使用するためにコードフラグメントを構成するのに十分である。
【００４２】
本発明は、コンピュータプログラム、特に本発明を実施するために適合される記録媒体のコンピュータプログラムに拡張される。このプログラムは、ソースコード、オブジェクト、コード中間ソース、及び部分的にコンパイルされた形式のようなオブジェクトコードの形式で、或いは、本発明に係る方法の実現での使用に適した他の形式である。記録媒体は、プログラムを保持可能なエンティティ又は装置である。たとえば、記録媒体は、たとえばＣＤ  ＲＯＭ又は半導体ＲＯＭであるＲＯＭのような記憶媒体、或いは、たとえばフロプティカルディスク又はハードディスクといった磁気記録媒体である。さらに、記録媒体は、電気又は光信号のような伝送媒体であり、電気又は光ケーブル又は無線或いは他の手段を介して伝達される。プログラムが係る信号で実施されるとき、記録媒体は、係るケーブル又は他の装置或いは手段で構成される。代替的に、記録媒体は、プログラムが実施される集積回路であり、集積回路は、関連する方法を実行するため、又は関連する方法のパフォーマンスにおける使用のために適合される。
【００４３】
なお、上述された実施の形態は本発明を限定するのではなく例示するものであり、当業者であれば特許請求の範囲から逸脱することなしに多くの代替的な実施の形態を設計することができる。請求項では、括弧間に配置される参照符号は、請求項を限定するものとして解釈されるべきではない。動詞「有する“comprise”」及びその派生語の使用は、請求項に記載された以外のエレメント又はステップの存在を排除するものではない。エレメントに先行する冠詞“ａ”又は“ａｎ”は、複数の係るエレメントの存在を排除するものではない。本発明は、幾つかの個別のエレメントを有するハードウェアにより、適切にプログラムされたコンピュータにより実現される。幾つかの手段を列挙する装置の請求項では、これらの手段の幾つかは、同一アイテムのハードウェアにより実施される。所定の手段が相互に異なる従属の請求項で引用される事実は、これらの手段の組み合わせを使用することができないことを示すものではない。
【図１】
2010501923.tif 000003
【図２】
2010501923.tif 000004
【国際調査報告】
2010501923.tif 000005
2010501923.tif 000006
2010501923.tif 000007
2010501923.tif 000008