(57)【要約】データ処理システムの完全性（integrity）を保護する方法。本方法は、保護されるべきデータ・ストリングを決定することを含む。そのデータ・ストリングの完全性がデータ処理システムの完全性の指標となる。所定のデータ処理関数を表すパラメータの組を計算する。その際、パラメータの前記組における冗長性を使って前記データ・ストリングをパラメータの前記組のビット表現中に組み込む。プロセッサがパラメータの前記組に従ってデータを処理できるようにする。パラメータの前記組は、暗号鍵を含む暗号アルゴリズムの少なくとも一部を表す。パラメータの前記組はルックアップ・テーブルのネットワークを表す。ルックアップ・テーブルの前記ネットワークは、データ処理アルゴリズムのホワイトボックス実装の複数のルックアップ・テーブルを含む。データ処理アルゴリズムは暗号アルゴリズムを含む。
2009543244.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・プログラム・モジュールを実行するための実行環境の少なくとも一部の正当性を検証する方法であって、前記コンピュータ・プログラム・モジュールは、複数の所定のデジタル・パラメータに依存してデジタル入力データの処理を引き起こすよう動作するものであり、当該方法は、所定のアルゴリズムを使って、少なくとも前記複数の所定のデジタル・パラメータの一つの一部を、前記実行環境の前記少なくとも一部から導出することを含む、方法。
【請求項２】
前記複数のパラメータが所定の基準を満たす場合にのみ前記コンピュータ・プログラム・モジュールを実行することを含む、請求項１記載の方法。
【請求項３】
請求項２記載の方法であって、前記複数のパラメータが前記所定の基準を満たすかどうかの検証を、前記複数のパラメータを使って所定のデジタル入力データに対して前記コンピュータ・プログラム・モジュールの少なくとも一部の少なくとも一回のランを実行し、前記ランの出力が所定の条件を満たすかどうかを検証することによって行うことを含む、方法。
【請求項４】
請求項３記載の方法であって、前記所定のデジタル入力データをサーバーからチャレンジとして受信し；前記ランの前記出力を前記サーバーに与えて前記サーバーが検証を実行できるようにすることを含む、方法。
【請求項５】
前記所定のアルゴリズムが、前記実行環境の表現を前記少なくとも一つのパラメータに変換するためのコンピュータ実行可能命令を使って実装される、請求項１記載の方法。
【請求項６】
前記複数のパラメータのビット表現の一部が、前記実行環境のコンピュータ実行可能命令のビット表現の少なくとも一部に等しく；前記コンピュータ・プログラム・モジュールの命令は、実行の間、前記実行環境の前記命令の前記ビット表現の前記一部を保持する少なくとも一つのメモリ・アドレスを、参照によって前記パラメータの前記ビット表現の前記の等しい部分を読むためにも使うよう構成される、請求項１記載の方法。
【請求項７】
前記複数のパラメータのビット表現の一部が、前記コンピュータ・プログラム・モジュールのコンピュータ実行可能命令のビット表現の少なくとも一部に等しく；前記命令は、前記命令の実行の間、前記命令の前記ビット表現の前記一部を保持する少なくとも一つのメモリ・アドレスを、参照によって前記パラメータの前記ビット表現の前記の等しい部分を読むためにも使うよう構成される、請求項１記載の方法。
【請求項８】
前記所定のアルゴリズムは、前記実行環境の少なくとも一つのデータ要素が前記複数のパラメータの一つもしくは複数または一部として使用されるようにする、請求項１記載の方法。
【請求項９】
前記複数のデジタル・パラメータが、
・暗号鍵および／または暗号アルゴリズムといった暗号用データ；
・符号化テーブルおよび／または符号化アルゴリズムといったデジタル・コンテンツ・エンコード／デコード・データ；
・スクランブル・テーブルおよび／またはスクランブル・アルゴリズムといったデジタル・コンテンツ・スクランブル／スクランブル解除データ、
のうちの少なくとも一つのものの表現を含む、請求項１記載の方法。
【請求項１０】
請求項８記載の方法であって、前記デジタル入力データは、コンテンツ固有鍵の制御のもとで暗号化された、エンコードされたおよび／またはスクランブルされたデジタル・コンテンツであり；当該方法はそれぞれ解読、デコードおよび／またはスクランブル解除を制御するために前記コンテンツ固有鍵の表現を受信し、少なくとも前記複数の所定のデジタル・パラメータのうちの一つの一部を、前記コンテンツ固有鍵の受信された表現から導出することを含む、方法。
【請求項１１】
請求項８記載の方法であって、前記デジタル・パラメータの前記の導出される部分は、難読化されたルックアップ・テーブルのネットワークを含み、ここで、少なくとも一つのテーブルが前記実行環境の前記少なくとも一部に依存して難読化されており、前記アルゴリズムは、前記実行環境の前記少なくとも一部から少なくとも一つの補償要素を導出し、該少なくとも一つの補償要素を前記難読化されたルックアップ・テーブルの別の一つに挿入し、それにより難読化されたルックアップ・テーブルの前記ネットワークがルックアップ・テーブルの前記ネットワークと機能的に等価になるようにするよう構成される、方法。
【請求項１２】
コンピュータ・プログラム・モジュールを実行するための実行環境の少なくとも一部の正当性を検証するシステムであって、当該システムはプロセッサと前記コンピュータ・プログラム・モジュールおよび前記実行環境を記憶する記憶装置とを含み、前記コンピュータ・プログラム・モジュールは前記プロセッサに、複数の所定のデジタル・パラメータに依存してデジタル入力データを処理させるよう動作するものであり、当該システムは、少なくとも前記複数の所定のデジタル・パラメータの一つの一部を、前記実行環境の前記少なくとも一部から導出する手段を含む、システム。
【請求項１３】
プロセッサに請求項１記載の方法を実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
実行環境の正当性の検証
本発明は、コンピュータ・プログラム・モジュールを実行するための実行環境の少なくとも一部の正当性（authenticity）を検証するための方法およびシステムに関する。
【背景技術】
【０００２】
インターネットは、デジタル・コンテンツへの便利で偏在的なアクセスをユーザーに提供する。強力な配信チャネルとしてのインターネットの潜在力のため、多くの消費者電子（CE:  consumer  electronics）製品はインターネットに直接アクセスするか、インターネットへの主要なポータルであるPCプラットフォームと相互運用されることを目指している。CE製品は、これに限られないが、デジタル・セットトップボックス、デジタル・テレビ、ゲーム・コンソール、パソコン（PC）ならびにますますの傾向としてPDA、携帯電話およびアップル社のiPodのような携帯記憶およびレンダリング装置（mobile  storage  and  rendering  device）といったハンドヘルド装置を含む。著作権のあるコンテンツについての配信媒体としてのインターネットの使用は、コンテンツ・プロバイダーの利益を確保するためのやむにやまれぬ課題を呈する。特に、コンテンツ・プロバイダーの著作権およびビジネス・モデルを保証することが要求される。ますます、CEプラットフォームは、好適なソフトウェアをロードされたプロセッサを使って動作させられる。そのようなソフトウェアは、オーディオおよび／またはビデオのようなデジタル・コンテンツのレンダリング（再生）のための機能性の主要な部分を含みうる。再生ソフトウェアの制御は、コンテンツが使用されうる条件を含むコンテンツ所有者の利益を執行する一つの方法である。伝統的には多くのCEプラットフォーム（PCおよびPDAを例外として）が閉鎖的であったところ、今日、ますます多くのプラットフォームが少なくとも部分的に開放的になっている。特にPCプラットフォームについては、一部のユーザーは、コンテンツへのアクセスを提供するハードウェアおよびソフトウェアに対する完全な制御を得ており、どんなコンテンツ保護機構も攻撃およびバイパスするための大量の時間および資源を有すると想定されうる。結果として、コンテンツ・プロバイダーは、合法的ユーザーにコンテンツを送達することを、すべてのユーザーまたはデバイスが信頼できるのではないコミュニティへの敵対的なネットワークを通じて行わなければならない。
【０００３】
典型的には、デジタル権利管理システムは、ブロック暗号に基づく暗号化技法を使う。ブロック暗号は、ラウンドと呼ばれる一連の暗号化／解読ステップを使ってブロック単位でデータ・ストリームを処理する。各ラウンドの間、ラウンド固有の関数が実行される。ラウンド固有の関数は、ラウンド固有のサブ鍵の制御のもとで実行される同じラウンド関数に基づいていてもよい。多くの暗号化システムについて、ラウンド関数はマッピング・テーブルまたはルックアップ・テーブルを使って指定できる。明示的なテーブルが使われないとしても、ソフトウェアでの暗号化／解読関数の効率的な実行のために、関数の種々の部分のためにテーブルが使われることもしばしばである。コンピュータ・コードは、テーブル値にアクセスするまたはテーブル値を組み合わせ、関数の値域の値にする。ユーザー固有でもよい鍵を配送するのではなく、暗号化または解読アルゴリズムのための鍵の代わりにユーザー固有アルゴリズムを配送することがより有益となる。これらのアルゴリズム、たいていは関数（マッピング）は、鍵のような要素の再設計（redesign）を防止し、あるいは鍵のような要素の再計算を禁止するために、難読化される（obfuscated）（隠蔽される（hidden））必要がある。コンピュータ上では、何らかのコンピュータ・コードが付随するテーブルがしばしばこれらの関数を表す。
【０００４】
コンテンツ・プロバイダーは、合法的ユーザーにコンテンツを送達することを、すべてのユーザーまたはデバイスが信頼できるのではないコミュニティへの敵対的なネットワークを通じて行わなければならない。特にPCプラットフォームについては、ユーザーは、コンテンツへのアクセスを提供するハードウェアおよびソフトウェアに対する完全な制御を有し、どんなコンテンツ保護機構も攻撃およびバイパスするための無制限の時間および資源を有すると想定せねばならない。コンテンツが使用されうる条件を実施するソフトウェア・コードは工作されてはならない。PCに配送される保護されたコンテンツについてのデジタル権利管理における一般的なアプローチは、たとえばDES（データ暗号化標準［Data  Encryption  Standard］）、AES（高度暗号化標準［Advanced  Encryption  Standard］）またはWO9967918に開示される方法を使ってデジタル・コンテンツを暗号化し、解読鍵を使用することである。
【０００５】
暗号化に依拠するデジタル権利管理（DRM:  digital  rights  management）の脆弱性の主要な領域は、コンテンツを使用してもよい条件を実施するソフトウェア・プラグイン、鍵配送および鍵の扱いならびにDRMモジュールが実行される実行環境である。
【０００６】
典型的には、プラグインはコンテンツが使用されるべき条件を実施する。これらの条件を除去しようとねらう攻撃者は、これを、ソフトウェア・プラグインに含まれるプログラム・コードを工作することを通じて達成しようと試みうる。
【０００７】
鍵の扱い（key  handling）に関しては、再生のために、メディア再生器はライセンス・データベースから解読鍵を取得しなければならない。次いで、暗号化されたコンテンツの解読のために、この解読鍵をメモリ中のどこかに保存しなければならない。これはこの鍵に対する攻撃のために、攻撃者に二つの選択肢を残す。第一に、ライセンス・データベース・アクセス関数のリバース・エンジニアリングはブラックボックス・ソフトウェア（すなわち、攻撃者はそのソフトウェア関数の内部動作を理解する必要はない）を結果として与え、攻撃者があらゆるライセンス・データベースからアセット鍵を取得することを許容することができる。第二に、コンテンツ解読の際にメモリへのアクセスを観察することによって、アセット鍵を取得することが可能である。いずれの場合にも、鍵は危殆化されると考えられる。ますます、鍵および解読アルゴリズムの一部は、ソフトウェア実装の一部をなすルックアップ（マッピング）・テーブルとして表現される。ソフトウェアに工作耐性をもたせることは、ますます多くの注目を集めるようになっている。
【０００８】
工作耐性のある（tamper-resistant）ソフトウェアは、そのソフトウェアに関する目標に向けられた（goal-directed）工作が複雑になるのでそう呼ばれる。ソフトウェア・アプリケーションの工作耐性を増すさまざまな技法が存在する。これらの技法のほとんどは、ソフトウェア・アプリケーションの制御およびデータ経路の両方においてランダム性および複雑性のベールを加えることによって、当該アプリケーションの組み込まれた知識を隠すことに基づいている。この背後にある発想は、単にコードを見ること（code  inspection）によって情報を抽出することがより難しくなるということである。したがって、たとえば当該アプリケーションのアクセスおよび許可制御を扱うコードをみつけ、その後それを変更することがより難しくなる。
【０００９】
以下で「Chow1」と称される非特許文献１および以下で「Chow2」と称される非特許文献２は、鍵を隠蔽する意図をもつ方法を開示しているが、それは個々のステップではなく合成（compositions）を表すランダムな全単射（bijections）でそのテーブルをエンコードすることと、暗号の境界をそれを包含するアプリケーション中にさらに押し出すことによって拡張することとの組み合わせによっている。
【００１０】
これまで、鍵およびDRMモジュールを保護することに関心が集中してきたが、実行環境が信頼できることも重要であることが明らかになった。ソニー社のPCへのDRM組み込み（拡張コピー保護XCPソフトウェア［Extended  Copy  Protection  XCP  software］）の一部として、ウィンドウズ（登録商標）XPのいくつかのファイルも、置換が簡単には検出できない（ウィンドウズ（登録商標）XPのいわゆるルート・キット（root-kit）中に隠されている）ような仕方で置換されたとき、この主題に多くの注目が寄せられた。その置換は、期せずして、PCをある種のウイルス様の攻撃に曝露した。ブルーレイ（BD）ディスクは、ディスク上で保護されたコンテンツを、BDプレーヤーの仮想マシン上で実行されるべきDRMソフトウェア・モジュールと一緒に配送することを可能にする。DRMソフトウェア・モジュールはコンテンツ固有であってもよく、コンテンツを解読するための鍵のような情報をいかなる好適な形で含んでいてもよい。ソフトウェアの正当性を検証するためのある種の諸方法が存在するが（たとえば署名スキームおよび信頼される当事者を使う）、これまでのところ、ソフトウェア・モジュールは通例、実行環境そのものは信頼できるという事実に依拠する必要があった。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】スタンリー・チョウ（Stanley  Chow）、フィリップ・アイゼン（Philip  Eisen）、ハロルド・ジョンソン（Harold  Johnson）およびポール・C・ヴァン・オールスホット（Paul  C.  Van  Oorschot）著「ホワイトボックス暗号およびAES実装（White-Box  Cryptography  and  an  AES  Implementation）」、『暗号学における選ばれた諸分野：第９回年次国際ワークショップ、SAC  2002（Selected  Areas  in  Cryptography:  9th  Annual  International  Workshop,  SAC  2002）』、カナダ国ニューファンドランド州セントジョンズ、2002年8月15‐16日。
【非特許文献２】スタンリー・チョウ（Stanley  Chow）、フィリップ・アイゼン（Philip  Eisen）、ハロルド・ジョンソン（Harold  Johnson）およびポール・C・ヴァン・オールスホット（Paul  C.  Van  Oorschot）著「DRMアプリケーションのためのホワイトボックスDES実装（White-Box  DES  Implementation  for  DRM  Applications）」、『デジタル著作権管理：ACM  CCS-9ワークショップ、DRM  2002（Digital  Rights  Management:  ACM  CCS-9  Workshop,  DRM  2002）』、米国ワシントン特別区、2002年11月18日。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
コンピュータ・プログラム・モジュールを実行するための実行環境の少なくとも一部の正当性を検証するための改良された方法をもつことが有益であろう。
【課題を解決するための手段】
【００１３】
この問題によりよく対処するため、本発明の第一の側面では、コンピュータ・プログラム・モジュールを実行するための実行環境の少なくとも一部の正当性を検証することを含む方法が提示される。ここで、コンピュータ・プログラム・モジュールは、複数の所定のデジタル・パラメータに依存してデジタル入力データの処理を引き起こすよう動作する。本方法は、所定のアルゴリズムを使って、前記複数の所定のデジタル・パラメータの一つの少なくとも一部を、前記実行環境の前記少なくとも一部から導出することを含む。
【００１４】
本発明によれば、コンピュータ・プログラム・モジュールはその実行において、実行環境に依存する。そのパラメータは、少なくとも部分的に実行環境から導出される。実行環境からそのようなパラメータを導出するために所定のアルゴリズムが使われる。このようにして、合理的な程度の確からしさで、プログラム・モジュールは、実行環境の検証された部分が工作されていない場合にのみその入力データを所望される仕方で処理することが保証できる。これは、実行環境の少なくとも暗黙的な検証を与える。プログラム・モジュールの実効出力は本来的に実行環境に依存するので、実行環境のその部分に工作することは難しい。実行環境はオペレーティング・システムの一部（たとえばカーネルおよび／または重要なライブラリ）を含んでいてもよいが、オペレーティング・システムの上で動作するジャバ仮想マシンのような仮想マシンをも含んでいてもよい。このようにして実行環境を検証することによって、貴重なデジタル・データ、たとえばオーディオおよび／またはビデオのようなデジタル・コンテンツが、工作された実行環境によって漏洩されることがよりよく回避できる。ソフトウェア・モジュールに対して何らかの形の、たとえばチェックサムの形の検証を実行し、その結果を検証することは既知であることを注意しておく。そのような技法は、その試験をスキップしようとすることを含め、さまざまな攻撃に対して開かれている。本発明によれば、実行環境の検証される部分の変化は、パラメータの変化を含意しうるので、プログラム・モジュールの出力の変化を引き起こしうる。たとえば、コンテンツが間違って解読されることがありうる。実行環境の検査される部分に工作することは、パラメータ間の関係が攻撃者にとって明確でない場合にはますます難しくなる。
【００１５】
本発明のある側面によれば、コンピュータ・プログラム・モジュールは、前記複数のパラメータが所定の基準を満たす場合にのみ実行される。よって、前記パラメータに対してチェックサムを実行することによるなどして、明示的な試験が行われうる。これには、実行環境が工作されたことをユーザーが警告されることができるという利点がある。パラメータが間違っている場合、このモジュールは期待される出力を生成しないことがありうるので、そのような警告なしでは、ユーザーは、コンピュータ・プログラム・モジュールが不良だと考えることがありうる。ある実施形態では、ユーザーが、環境のどの部分が信頼できないおよび／または交換されるべきかを通知されることができるよう、実行環境の種々の部分について個別的な試験が設計されうる。試験そのものは単純で（たとえば、IF…THEN…ELSEまたは同様の文に基づく）、工作に長けた人物によって回避されうるとしても、試験が工作されなかったシステムにおいて、ユーザーに対して十分な情報が提供されることができる。もし望まれるなら、試験に、より工作耐性をもたせるための既知の技法も使用されてもよい。
【００１６】
本発明のある側面によれば、検証は、前記複数のパラメータを使って所定のデジタル入力データに対してコンピュータ・プログラム・モジュールの少なくとも一部のラン（run）を実行することによってなされる。次いで、その試行ランの出力が所定の条件を満たすかどうかが検証される。この状況においては、パラメータそのものは検証されず、それらのパラメータを用いて生成される出力が検証される。出力は、パラメータおよび選ばれた入力データの集合全体に依存することができ、ハッカーにとって正しいパラメータを決定するのがより難しくなる。
【００１７】
ある実施形態では、所定のデジタル入力データはサーバーからチャレンジとして受信され、前記ランの出力は前記サーバーに与えられる。それによりサーバーは検証を実行することが可能になる。たとえば、銀行は、より多くのデータおよび／またはソフトウェアを提供することなどによって継続する前に、このようにして、まず、システムがまだ安全であるかどうかを検査してもよい。
【００１８】
本発明のもう一つの側面によれば、前記所定のアルゴリズムは、実行環境の表現を前記少なくとも一つのパラメータに変換するためのコンピュータ実行可能命令を使って実装される。前記表現を実行するプログラムを使うことによって、完全な柔軟性（full  flexibility）が達成できる。たとえば、実行環境のどの部分（たとえば、環境中のどのデータ要素、どのコンピュータ実行可能命令など）が検査されるかおよびその部分がどのように表現されるか（たとえば、単にコピーされる、ハッシュされるなど）が自由に決定できる。もし望まれるなら、そのアルゴリズムのソフトウェア実装を難読化するためにいかなる好適な技法が使用されてもよい。
【００１９】
本発明のある側面によれば、実行環境の実行可能命令（の一部）が、コンピュータ・ソフトウェア・モジュールのパラメータ・セット（の一部）と統合される。より詳細には、前記複数のパラメータのビット表現の一部が、前記実行環境のコンピュータ実行可能命令のビット表現の少なくとも一部に等しく；前記コンピュータ・プログラム・モジュールの命令は、実行の間、前記実行環境の前記命令の前記ビット表現の前記一部を保持する少なくとも一つのメモリ・アドレスを、参照によって前記パラメータの前記ビット表現の等しい部分を読むためにも使うよう構成される。よって、少なくとも一つのメモリ・アドレスは「二重の機能」をもつ。すなわち、ソフトウェア・プログラム・モジュールのためのパラメータ（の一部）を記憶するため、および実行環境の命令を記憶するために使われるのである。よって、この命令に工作することは、自動的にパラメータに工作することにつながり、プログラム・モジュールがもはや所望される処理を実行しないようにするリスクを伴う。実行可能な命令はプロセッサ命令であってもよいが、同様に、仮想マシン命令またはインタープリタに解釈される擬似コード命令といった他の好適な命令であってもよい。仮想マシン命令はたとえばジャバまたはSPDC（Self  Protecting  Digital  Content［自己保護型デジタル・コンテンツ］）準拠であってもよい。
【００２０】
本発明のもう一つの側面によれば、コンピュータ・プログラム・モジュールの実行可能命令（の一部）が、コンピュータ・プログラム・モジュールのパラメータ・セット（の一部）と統合される。より詳細には、前記複数のパラメータのビット表現の一部が、前記コンピュータ・プログラム・モジュールのコンピュータ実行可能命令のビット表現の少なくとも一部に等しく；前記命令は、前記命令の実行の間、前記命令の前記ビット表現の前記一部を保持する少なくとも一つのメモリ・アドレスを、参照によって前記パラメータの前記ビット表現の等しい部分を読むためにも使うよう構成される。このようにして、コンピュータ・プログラム・モジュールも、より工作耐性にされる。該モジュールのある命令に工作することは、自動的にパラメータに工作することにつながり、プログラム・モジュールがもはや所望される処理を実行しないようにするリスクを伴う。
【００２１】
本発明のある側面によれば、実行環境の命令を表現することに加えて、あるいはその代替として、前記所定のアルゴリズムは、実行環境の少なくとも一つのデータ要素が前記複数のパラメータの一つもしくは複数または一部として使われるようにしてもよい。このようにして、実行環境の関連するパラメータ（たとえば定数）も検査できる。たとえば、DVDから知られているようなリージョン・コードが工作されていないかどうかを検証できる。
【００２２】
本発明のある側面によれば、本方法は、価値のあるコンテンツを処理するコンピュータ・プログラム・モジュールと組み合わせて使われる場合に特に有用である。そのような価値のあるコンテンツはたとえば、金融データ（たとえば電子バンキング）またはデジタル・コンテンツ（たとえばオーディオおよび／またはビデオ）であってもよい。価値のあるコンテンツは典型的には、ハッカーが簡単に読むことができる／使用できる「平文」フォーマットでは配送されない。典型的には、少なくとも暗号動作（たとえば、暗号化、認証）、エンコード動作（たとえば圧縮）および／またはスクランブル動作が入力パラメータの少なくとも一部に対して実行されている。この目的のため、前記複数のデジタル・パラメータは、次のうちの少なくとも一つのものの表現を含む：
・暗号鍵および／または暗号アルゴリズムといった暗号学的データ；
・符号化テーブルおよび／または符号化アルゴリズムといったデジタル・コンテンツ・エンコード／デコード・データ；
・スクランブル・テーブルおよび／またはスクランブル・アルゴリズムといったデジタル・コンテンツ・スクランブル／スクランブル解除データ。
【００２３】
ある実施形態では、前記デジタル入力データは、コンテンツ固有鍵の制御のもとで暗号化された、エンコードされたおよび／またはスクランブルされたデジタル・コンテンツであり；本方法はそれぞれ解読、デコードおよび／またはスクランブル解除を制御するために前記コンテンツ固有鍵の表現を受信し、少なくとも前記複数の所定のデジタル・パラメータのうちの一つの一部を、前記コンテンツ固有鍵の受信された表現から導出することを含む。よって、この実施形態では、コンピュータ・プログラム・モジュールのパラメータは、コンテンツ固有鍵ならびに実行環境に依存する。実行環境は典型的には、コンテンツ鍵ほど頻繁に変化しない。上記のように、パラメータはコンピュータ・プログラム・モジュールの命令にも依存しうる。このようにして、相変わらず異なるコンテンツ固有鍵を使用する柔軟性を維持しつつ、かつコンテンツ鍵が変化するたびにコンピュータ・プログラム・モジュールおよび／または実行環境を更新する必要なしに、高レベルのセキュリティが達成できる。
【００２４】
ある実施形態では、前記デジタル・パラメータの導出される部分は、難読化されたルックアップ・テーブルのネットワークを含む。ここで、少なくとも一つのテーブルが、実行環境の前記少なくとも一部に依存して難読化されており、前記アルゴリズムは、実行環境の前記少なくとも一部から少なくとも一つの補償要素を導出し、該少なくとも一つの補償要素を前記難読化されたルックアップ・テーブルの別の一つに挿入し、それによりルックアップ・テーブルの前記ネットワークを難読化したものがルックアップ・テーブルの前記ネットワークと機能的に等価になるようにするよう構成される。このようにして、難読化の選択における自由度が実行環境が正しいことを検証するために使われる、コンテンツ固有解読のホワイトボックス実装が達成できる。実行環境は少なくとも部分的には難読化されたテーブルにおいて表現される。実行環境のその部分が存在する状況でのみ、実行の間に、テーブルのもとのネットワークの機能性が達成できる。各コンテンツ項目について、コンテンツ固有鍵（および任意的にコンテンツ固有解読アルゴリズム）を作ることができる。各コンテンツ項目についてこれが配送されるだけでよい。実行環境を検査でき、望まれるなら、コンピュータ・プログラム・モジュールも検査できる。実行環境およびコンピュータ・プログラム・モジュールは一度配送されるだけでよい。それでいて、難読化を通じて結び合わされることによって、実行環境およびコンピュータ・プログラム・モジュールは検証できる。
【００２５】
ある好ましい実施形態では、前記パラメータは、互いの間に何らかの冗長性をもつ定数値を含む。すなわち、あるパラメータの変化を、別のパラメータに適切な変化を加えることによって補償することが可能である。たとえば、実行環境のある実行可能命令がきわめて重要であり、検証される必要がある場合、これらの命令は、前記パラメータの中に表現されることができる（たとえば単に統合される）。その際、他のパラメータは、これらの所与のパラメータについて補償するように選ばれ、それにより、もとのパラメータ（変化の前）と変化されたパラメータのどちらが使用されるかに関わりなく、当該実装は等価な機能性を提供するようになる。
【００２６】
本発明のこれらの側面およびその他の側面は、以下で、図面を参照して明快にされるであろう。
【図面の簡単な説明】
【００２７】
【図１】本発明が使用されうるシステムのブロック図である。
【図２】本システムの構造の詳細を示す図である。
【図３】ルックアップ・テーブルの難読化されたネットワークの例を示す図である。
【発明を実施するための形態】
【００２８】
図１は、本発明が使用されうる装置１１０のブロック図を示している。装置１１０は、より大きなシステム１００の一部であってもよい。装置１１０は、ソフトウェアの制御のもとで動作される。その機能性の一部は、一つまたは複数のプログラム・モジュールに含まれている。この目的のため、本装置は、プロセッサ１２０を含む。本装置は、それ自体としては、パーソナル・コンピュータ、専用メディア再生器（たとえばDVD、ブルーレイ・ディスク・プレーヤー、HD-DVDプレーヤー）、ゲーム機（たとえばXボックス、プレイステーション（登録商標））といったいかなる好適な装置であってもよい。本装置はまた、PDAまたはスマートフォンのようなポータブル装置であってもよい。プロセッサ１２０は、デジタル信号プロセッサを含め、PC型のプロセッサまたは組み込みプロセッサといったいかなる好適なプロセッサであってもよい。本装置は、RAMのような作業メモリ１３０およびハードディスク、光記憶装置もしくはフラッシュメモリのような不揮発性記憶装置１４０を含んでいてもよい。本装置は、コンピュータ・プログラム・モジュール１５０を含む。プロセッサ１２０にロードされるとき、コンピュータ・プログラム・モジュール１５０は、複数の所定のデジタル・パラメータ１５４に依存してデジタル入力データ１５２の処理を引き起こすよう動作する。その処理の出力は、デジタル出力データ１５６である。そのような処理を実行できるために、コンピュータ・プログラム・モジュール１５０は実行環境１５８内にロードされる。そのような環境１５８は、オペレーティング・システム・カーネル、ライブラリ（たとえばMP3またはMPEG4デコーダのようなメディア・デコーダ、インターネット・プロトコルなど）を含んでいてもよい。実行環境１５８そのもの（または少なくとも活動的な部分）もプロセッサ１２０によって実行される。たとえば、モジュール１５０がDRMモジュールである場合、モジュール１５０はメディア再生器のほか、デジタル権利を管理し、解読／スクランブル解除および／またはデコードを制御するためのDRM固有のプラグインを含んでいてもよい。そのようなメディア再生器は、特定のコンテンツ・フォーマットについて、デジタル・コンテンツに対応するフォーマット固有のデコードを実行するための個別的なプラグインを実行することができてもよい。これらのコンテンツ・フォーマットは、AVI、DV、モーションJPEG、MPEG-1、MPEG-2、MPEG-4、WMV、オーディオCD、MP3、WMA、WAV、AIFF/AIFC、AUなどを含みうる。デジタル権利管理の目的のためには、コンテンツをデコードするだけでなく、そのコンテンツを解読および／またはスクランブル解除もする安全な（secure）プラグインが使用されうる。そのような機能性の一部が再使用され、その目的のために実行環境１５８に統合されるかどうかは当業者の選択である。たとえば、モジュール１５０は実行環境からメディア再生器を使用してもよく、たとえば解読またはデコードといった特定の動作を実行するためにそのようなメディア再生器内でプラグインとして動作してもよい。実行環境１５８がジャバのような仮想マシンを提供し、モジュール１５０が仮想マシンによって解釈されるべきコードであってもよいことも理解されるであろう。図１において、プログラム・モジュール１５０、そのパラメータ１５４および実行環境１５８は記憶装置１４０に記憶されていることが示されている。プログラム・モジュール１５０および／またはそのパラメータ１５４は別のところに記憶されてもよい（たとえばリムーバブルな光記憶１６０に記憶されてもよい）し、あるいは装置１１０の外部からオンデマンドで通信インターフェース１７０を通じて取得されてもよい。たとえば、インターフェース１７０は、インターネット１７２へのアクセスを与えてもよい。たとえば、オーディオおよび／またはビデオのようなデジタル・コンテンツがインターネット中のサーバー１７４からダウンロードされてもよい（入力データ１５２となる）。コンテンツが悪意ある者が直接使用できる「平文」形式で利用可能とならないよう、コンテンツは暗号化、スクランブル、エンコード（たとえば圧縮）といったいかなる好適な技法を通じて保護されてもよい。デジタル・コンテンツはまた、他のデジタル・データ、特に金融取引（インターネット・バンキング）といった保護するに値するデータであってもよい。ここで、入力はインターネットのような通信ネットワークを通じて受信され、安全に処理され、通信ネットワークを通じて出力される。そのような場合、出力は、インターフェース１７０のような通信インターフェースを通じて装置１１０の外部に、たとえばサーバー１７４のような銀行サーバーに供給されてもよい。上記のように、コンピュータ・プログラム・モジュールは装置１１０の外部から取得されてもよい。ある実施形態では、コンピュータ・プログラム・モジュールの少なくとも一部は、コンテンツを処理するために個別的に設計される。たとえば、コンテンツは、好ましくは一意的な鍵またはコンテンツ固有鍵を使って暗号化されていてもよい（たとえば各映画が映画に固有な鍵を用いて暗号化される）。その際、前記コンピュータ・プログラム・モジュールは、このコンテンツを解読できるよう設計されていてもよい。同様に、たとえば、金融取引については、その取引に固有のコンピュータ・プログラム・モジュールが、銀行の責任の下で提供されてもよい。次いでモジュールは金融データを固有の（好ましくは一意的な）仕方で処理でき、出力の一部として自らの識別情報（identity）をも提供してもよい。さまざまな好適な透かし入れ技法が存在しており、そのような識別情報を前記出力とマージするために使用されうる。すると銀行は、その識別情報をもつモジュールが使用されたことを検証できる。実行の間、プログラム・モジュール１５０、実行環境１５８の活動的な部分およびパラメータ１５４は作業メモリ１３０にロードされうる。装置１１０は、レンダリングされるべきコンテンツを指示するなどといったユーザーからのコマンドを取得するために、リモコン、キーボード、マウス、音声入力用マイクロホンなどといったユーザー入力手段（図示せず）も含んでいてもよい。装置１１０は、ユーザーに情報を提供するためおよび／またはレンダリングされたコンテンツを表現するための、ディスプレイ９３および／またはスピーカーのようなユーザー出力手段（図示せず）をも含んでいてもよい。
【００２９】
本発明によれば、少なくとも前記複数の所定のデジタル・パラメータ１５４の一つの一部を、実行環境１５８の前記少なくとも一部から導出するために、所定のアルゴリズムが使用される。のちにより詳細に述べるように、パラメータは追加的または代替的に、プログラム・モジュール１５０自身など、他の部分から導出されてもよい。セキュリティを高めるために、前記パラメータのビットのうちのより多数を前記実行環境から導出することが望まれうる。前記アルゴリズムの複雑さ（complexity）が、ある所望されるレベルのセキュリティを得るためのビット数を決定することも理解されるであろう。たとえば、前記実行環境の主要（main）部分に対して決定される暗号学的に強力なハッシュに基づいている場合、前記パラメータの1024ビットを使うことがすでに非常に強力なセキュリティを与えうる。よって、使用されるのは、あるパラメータの一部のみ、いくつかのパラメータの一部（たとえば、いくつかのパラメータの最も重要なビット（the  most  significant  bits））のみ、一つのパラメータ全体またはいくつかのパラメータ全体またはこれらの組み合わせでよい。同様に、前記実行環境の小さな部分だけ（たとえば一つまたは若干数のきわめて重要な命令または定数）が検査されてもよいし、あるいはかなりの部分（たとえば重要なライブラリ）が検査されてもよい。当業者は、実行環境のどの部分が検査される必要があるかを決定できる（たとえば、関連データを漏洩させる可能性が最も高い部分）。
【００３０】
図２は、上記の原理をさらに例解している。複数の図面において同じ参照符号が使われている場合、それらの参照符号は、可能性としてはさらなる詳細が追加された、同じ項目を指す。本発明によれば、所定のアルゴリズム２００が、少なくとも前記複数の所定のデジタル・パラメータ１５４の一つの一部を、前記実行環境１５８の前記少なくとも一部から導出するために使用される。図２では、前記パラメータの一部２１０が前記実行環境１５８から導出される。のちにより詳細に述べるように、本発明の諸実施形態において、前記パラメータの一部２１２が前記プログラム・モジュール１５０自身から導出され、一部２１４がコンテンツ固有解読鍵２２０のような別個に供給されるパラメータから導出されてもよい。それ自身としては、前記パラメータはいかなる型のパラメータでもよい。たとえば、オーディオ／発話／ビデオ信号の信号処理のためには、前記パラメータはフィルタ設定であってもよい。暗号的な動作（たとえば解読または認証）またはスクランブル解除については、前記パラメータは鍵または鍵のような情報を表現してもよい。デコードのためには、前記パラメータはデコード・テーブルを表現してもよい。典型的には、前記パラメータは、モジュール１５０または実行環境１５８によって使用される定数である。
【００３１】
暗号アルゴリズムまたは同様のアルゴリズムを、ソフトウェアによって実行されるべき一つまたは複数のマッピング・テーブル（典型的にはマッピング・テーブルのネットワーク）としてどのように表現するかは既知であることを記しておく。たとえば、Chow1およびChow2はそのようなアプローチをそれぞれAESおよびDESについて記載している。これらのテーブルは鍵のような情報ならびにアルゴリズムの一部を表現する。そのようなテーブルを使うことの利点は、時間がかかるアルゴリズム・ステップが今やずっと高速なマッピング動作で置き換えられる（テーブルを記憶するためにより多くのメモリを使うことを代償として）ということである。そのようなアプローチの詳細な記述は、同時係属中の特許出願第061166930号（代理人整理番号PH005600）においても与えられている。アルゴリズムのこれらのいわゆるホワイトボックス・ソフトウェア実装では、ハッカーはそのようなテーブルへのアクセスを、たとえばメモリ１３０にロードされるときに取得しうることが想定される。テーブルが記憶装置１４０内で暗号化された形で記憶されていたとしても、ある時点で、モジュール１５０は実際に解読されたテーブルを使用しなければならなくなる。ホワイトボックス・アプローチでは、原則として、悪意ある者がソフトウェア・モジュール全体をコピーでき、これは他の装置でも機能しうる。これをする気をなくさせるために、いくつかのアプローチが使用されうる。たとえば、テーブルは、コピーするのがやりにくくなるほど大きくてもよい。もう一つのアプローチは、テーブルが、もとのユーザーを追跡できる情報を表すようにすることである。そうすればどんな不正コピーももとのユーザーまでたどることができる。Chow1およびChow2は、もとのテーブルが平文の形で利用可能でないことを保証するいくつかのアプローチを記載している。その代わり、これらのもとのテーブルは難読化される。好ましくは、ルックアップ・テーブルのネットワークが、前記テーブルの少なくともいくつかの入力および出力にエンコードを適用することによって難読化される。これらのエンコードは、ルックアップ・テーブルのコンテンツに影響をもつ。すなわち、エンコードを変えれば、テーブルの内容も予測可能な仕方で変化する。しかしながら、攻撃者にとっては、比較的複雑な仕方で入力および出力がエンコードされたマッピングを示す最終的なルックアップ・テーブルしか知らないので、エンコードをほぐすのは難しいことがありうる。ルックアップ・テーブルの要素に適用される変換は、エンコードを適切に変更することによって実現できる。出力エンコードを変えることによって、特定の値（particular  values）が前記テーブル中に組み込まれうる。入力エンコードを変えることによって、たとえば前記テーブル中に値が現れる順序が変更されうる。以下、入力エンコードは、先行するルックアップ・テーブルの出力エンコードによって引き起こされるデータのエンコードをデコードしうるので、入力デコードとも称される。
【００３２】
ルックアップ・テーブルは、入力および出力のエンコードの両方を変えることによって最大限の自由度をもって操作されることができる。変えるときに少なくとも三つのルックアップ・テーブルを考えることで、少なくとも一つのテーブルの入力および出力のエンコードを変えることが許容される。そのような変更は、少なくとも二つの他のテーブルのエンコードを変えることによって補償されうる。図３は、鍵を抽出することを一層難しくする一つの方法を示している。XおよびYを二つの関数とする。図の３１０として示される演算Y○X＝Y(X(c))  （Y*X(c)＝Y(X(c))なので、これはY*X(c)と示してもよい）を考える。ここで、cは入力値で、たとえば4バイトの状態列（state  column）であるが、本アプローチはいかなる型の入力値cにも適用される。マッピングXおよびYはルックアップ・テーブルとして実装でき、メモリに記憶できるが、メモリに記憶される場合には攻撃者が値を読むことができる。図の３２０は、ルックアップ・テーブルの内容が、入力エンコード（input  encoding）Fおよび出力エンコード（output  encoding）Hを使うことによってどのようにして難読化できるかを示している。X○F-1およびH○Yに対応するルックアップ・テーブルがXおよびYの代わりに図示されるように記憶され、XおよびYを抽出するのをより難しくする。図の３３０は、どのようにして追加的な、たとえばランダムな全単射関数Gを加えて二つのテーブルの中間結果もエンコードされるかを示している。この場合、二つのテーブルがメモリに記憶される：X′＝G○X○F-1およびY′＝H○Y○G-1。これは今一度、図の３４０に示される：
Y′○X′＝（H○Y○G-1）○（G○X○F-1）＝H○（Y○X）○F-1。
ここで、○は通例通り関数合成を表す（すなわち、任意の二つの関数f(x)およびg(x)について、定義によりf○g(x)＝f(g(x))である）。XおよびYはルックアップ・テーブルによる実装に好適な関数である。同様に、二つより多くの関数からなるネットワークをエンコードすることができる。XおよびYをエンコードする実際のテーブルは、H○Y○G-1を単一のルックアップ・テーブルにおいて組み合わせ、G○X○F-1を単一のルックアップ・テーブルにおいて組み合わせることによって難読化される。F、Gおよび／またはHが未知のままである限り、攻撃者はルックアップ・テーブルからXおよび／またはYについての情報を抽出することができず、よって攻撃者はXおよび／またはYの基礎である鍵を抽出できない。上記と同様の仕方で難読化されうるルックアップ・テーブル（のカスケードまたはネットワーク）として、他のアルゴリズムが実装されてもよい。本発明は、言及される例示的な暗号アルゴリズムに限定されない。
【００３３】
そのようなテーブルを使うことの利点は、モジュール１５０によって実行される関数のかなりの部分が実際にはデータとして、この場合ではパラメータとして表現されるということである。よって、実行環境１５８の十全な検査を可能にするために十分な数のパラメータが存在しうる。より少ないパラメータが使われる場合にも本アプローチが機能できることは理解されるであろう。よって、そのようなマッピング・テーブルを使うことは必須ではなく、使われれば利点となるというものである。
【００３４】
通常、プログラム・モジュール１５０は、特定の所定のパラメータ値を使うよう設計されているであろう。本発明によれば、それらのパラメータは少なくとも部分的には実行環境１５８から導出される。あらかじめ備えがなければ、前記モジュールはそのような導出されたパラメータを使って正しく動作しないことがありうる。前記モジュールは、それでも所望される結果を生成するよう簡単に設計できる。たとえば、前記モジュールがパラメータ（たとえば定数）z1を使うよう設計されており、アルゴリズム２００が実行環境１５８の正しいバージョンに基づいて値z2を生成する場合、モジュール１５０は、パラメータz3  XOR  z2を使うよう設計されうる（ここで、XORはビットごとの排他的論理和である）。ここで、z3はパラメータ１５４中の定数としてロードされ、z1  XOR  z2として事前計算されたものである。モジュールはz3  XOR  z2を計算し、実行環境が工作されていなければ、アルゴリズム２００はz2のもとの値を生成することになる。z3はz1  XOR  z2として事前計算されているので、モジュールはz3  XOR  z2＝（z3  XOR  z2）XOR  z2＝z1を計算する。このようにして、一方ではモジュール１５０は実行の間に事実上もとのパラメータ（たとえばz1）を使用し、他方ではパラメータ（たとえばz2）として表されながら他の部分が検証できるよう、一つの形の補償が達成される。
【００３５】
特に、難読化されたテーブルのネットワークのより進んだ上記技法が使われる場合、相変わらず正しいパラメータのセットを使いながら、たとえば実行環境１５８から導出されたパラメータを検査する必要を補償することにおいて、より多くの自由度が達成される。たとえば、ある実施形態では、モジュール１５０および／または実行環境１５８の一部は、マッピング・テーブル、特にルックアップ・テーブルのネットワークを使って部分的に実装されてもよい。
【００３６】
ある実施形態では、ルックアップ・テーブルは、出力および／または入力のエンコードを使って難読化されうる。たとえば、ルックアップ・テーブルのネットワークにおける第一のルックアップ・テーブルf(t1(x))は出力エンコードfをもつ。ルックアップ・テーブルのネットワークにおける第二のルックアップ・テーブルt2(f-1(x))は入力デコードf-1をもつ。入力デコードfは出力エンコードの効果を打ち消す。たとえば、t2(f-1(f(t1(x))))＝t2(t1(x))である。これの特別な特徴は、デコードfおよびf-1が、所定の語が第一のルックアップ・テーブルf(t1(x))または第二のルックアップ・テーブルt2(f-1(x))内に含まれるように選べるということである。たとえば、t1(x0)＝y0とする。語wをルックアップ・テーブル中に含めるために、fは、f(y0)＝wとなるよう選ぶことができる。というのも、その場合、f(t1(x))＝f(y0)＝wだからである。これはwを第一のルックアップ・テーブル中の位置x0に置くことになる。補償するために、f-1(w)＝y0となるようf-1が選ばれる。
【００３７】
この特徴は、実行環境を検証するために使用されることができる。たとえば、テーブルt1およびt2がモジュール１５０のもとの（開示されていない）テーブルを表すとする。アルゴリズム２００による実行環境１５８の処理が値wを与えるとする。すると、難読化された第一および第二のテーブルf(t1(x))およびt2(f-1(x))が決定できる。そのようなテーブルをその全体においてパラメータ１５４として供給する代わりに、第一のテーブルにおいて、語wが取り残されることができる。アルゴリズム２００は実際の実行環境１５８に基づいて語wを生成し、それを第一のルックアップ・テーブル中の適切な位置に挿入しなければならない。正しい語wがテーブル中の正しい位置に挿入される場合にのみ、難読化されたテーブルの組み合わせはもとのテーブルt1およびt2の組み合わせと同じ出力を生成する。この例において、モジュール１５０のテーブル（より一般には、パラメータ）は、実行環境の知識を使って難読化される。それにより、実行環境が検証される。実行環境が正しければ、難読化されたモジュールは正しく機能する。上に挙げたz1、z2およびz3の例と対比すると、z2が語wと見なせる。テーブルのネットワークを使うことによって、補償z3は追加的なパラメータを要求することなく、他のテーブルの一つに組み込まれることができる。
【００３８】
コーニンクレッカ・フィリップス・エレクトロニクスのWO2006/046187およびWO2005/060147はテーブルのネットワークを難読化するいくつかの方法を開示している。WO2006/046187では、難読化テーブル（obfuscating  table）Oおよび補償テーブル（compensating  table）Cが使われる。少なくとも一つのもとのテーブルがテーブルOを用いて難読化され、他のもとのテーブルの少なくとも一つがテーブルCを用いて難読化される。そのようなテーブルOを選ぶ自由度はテーブルO中に実行環境を表し、テーブルOを使ってプログラム・モジュールの少なくとも一つのもとのテーブルを難読化するために使われることができる。その際、実行環境は補償テーブルCにおいて自動的に表されることになる。もとのテーブルをOを用いて完全に難読化し、別のテーブルをCを用いて完全に難読化する代わりに、これらのテーブルの一つまたは複数の要素が未修正のまま残されてもよい。たとえば、ある要素はOを使って難読化されてもよいが、他のテーブル中の補償要素はCを用いて補償されない。その場合、アルゴリズム２００はテーブルCの欠けている補償要素を、実際の実行環境に基づいて構築し、それを関わっているテーブルに対してXORすることができ、それにより実行の間に補償が達成される。
【００３９】
WO2005/060147では、置換（permutation）piが難読化のために使われる。ここでもまた、piは実行環境から導出されうる。p2iおよびp2i+1を用いて難読化されたテーブルは、難読化されたテーブルの全ネットワークにおける補償効果が達成されないという意味で、やはり「半分」しか難読化されなくてもよい。（p2iまたはp2i+1の少なくとも一つの要素）が使用されない。その場合、この欠けている補償要素を実際の実行環境に基づいて生成するために前記アルゴリズムが使用される。
【００４０】
原理的には、実行環境のどの部分が検証されてもよいことは理解されるであろう。たとえば、一つまたは複数のコンピュータ命令またはその一部が、パラメータ（たとえば上述した語w）として直接使用されることによって検証されうる。同じことは、実行環境中のデータ（たとえばDVDプレーヤーで使われているリージョン・コードのような定数）についても当てはまる。アルゴリズム２００は、命令／データを文字通りのコピーとして使用してもよいが、表現を計算してもよい。ある実施形態では、アルゴリズムは実行環境（の一部）のハッシュを計算し、そのハッシュをパラメータのための基礎として使う。たとえば、ハッシュが前記の語wをなしてもよい。いかなる好適なハッシュが使用されてもよい。
【００４１】
本発明に基づくある実施形態では、コンピュータ・プログラム・モジュールは、前記複数のパラメータが所定の基準を満たす場合にのみ実行される。パラメータ１５４に対するハッシュを計算し、これが正しいパラメータのセットに基づいてかつて事前計算された所望の値を与えるかどうかを検査するといった、単純な試験が実行されてもよい。試験がパラメータ・セットが正しくないことを示す場合、ユーザーは警告されてもよい。また、部分２１０、２１２および２１４のようなパラメータの別個の諸部分が別個に試験されてもよい。このようにして、どの部分がもはや正しくないかについて詳細な情報をユーザーに与えることができる。この事前試験は、主として、モジュール１５０の出力がおそらくは正しくないであろうというユーザーへの警告として使用される。よって、モジュールはそれでも実行されてもよい。それ自身としては、悪意のある者が試験を除去したとしても問題ではない。真の検証はモジュール１５０の正しい出力１５６として得られるからである。ハッカーが試験を見出し、除去するのをより難しくするために、標準的な難読化技法が使用されてもよい。
【００４２】
ある実施形態では、パラメータ・セットを明示的に検証する代わりに、またはそれに加えて、コンピュータ・プログラム・モジュール１５０の少なくとも一部の試行ランが、前記複数のパラメータ１５４を使って所定のデジタル入力データ１５２に対して実行され、試行ランの出力１５６が所定の基準を満たすかどうかが検証される。基準は単に、試行ランが、もとのアルゴリズム２００および試験の間に後に使われるのと同じ所定のデジタル入力データを用いてもとの実行環境１５８中で実行されたもとのモジュール１５０を使って達成された出力を与えるということであってもよい。ここでもまた、試験そのものが通常の技法を使って難読化されてもよい。ある実施形態では、所定のデジタル入力データはサーバー１７４のようなサーバーから、チャレンジとして受信される。ランの出力はサーバーに与えられ、サーバーが検証を実行できる。たとえば、銀行はこのようにして、システムがいまだ安全であるかどうかを、たとえばさらなるデータおよび／またはソフトウェアを提供することによって続ける前に、まず検査しうる。その場合、検証は装置１１０内で行われる必要はない（だが追加的に、行われてもよい）。
【００４３】
ある実施形態では、所定のアルゴリズム２００は、実行環境１５８の表現を前記少なくとも一つのパラメータ１５４に変換するためのコンピュータ実行可能命令を使って実装される。このようにして、アルゴリズム２００は、実行環境１５８がパラメータ１５４においてどのように表現されるかを難読化する複雑な動作を実装できる。たとえば、アルゴリズム２００は、スクランブル、暗号化、圧縮および／またはハッシュ動作を含んでいてもよい。アルゴリズムそのものは、Chow1および／またはChow2において開示されるホワイトボックス技法のようないかなる好適な技法を使って難読化されてもよい。ある実施形態では、アルゴリズムはモジュール１５０との組み合わせで供給される。よって、アルゴリズムはモジュール１５０の一部であってもよい。たとえば、アルゴリズムは、モジュール１５０のパラメータの少なくともいくつかを生成する、モジュール１５０の初期化ルーチンの一部をなしてもよい。アルゴリズム２００が非常に単純でもよいことは理解されるであろう。たとえば、アルゴリズムは、モジュール１５０のパラメータとして使用される（たとえばコピーされる）べき実行モジュール１５８内のデータまたは命令をポイントするポインタの集合としてモジュール１５０中で与えられることができる。絶対値または相対値といった、ポインタのいかなる好適な形が使用されてもよい。そのような選択は当業者の能力の範囲内である。こうして、ある実施形態では、所定のアルゴリズム２００は、実行環境の少なくとも一つのデータ要素が、前記複数のパラメータの一つもしくは複数または一部として使用されるようにする。アルゴリズム２００がソフトウェアではなくハードウェアで実装されてもよいことは理解されるであろう。
【００４４】
本発明のある側面では、実行モジュール１５８および／またはモジュール１５０のコンピュータ実行可能命令は、パラメータ１５４と統合される。これは、メモリ１３０内のあるビット位置が、プロセッサ１２０によって実行される（実行環境１５８またはモジュール１５０の）命令としてのほかに、モジュール１５０のためのパラメータとしてもはたらくということを意味する。
【００４５】
ある実施形態では、パラメータ２１０と実行環境１５８との統合が生起してしまっている。前記複数のパラメータ２１０のビット表現の一部は、実行環境１５８のコンピュータ実行可能命令のビット表現の少なくとも一部に等しい。これは、実行環境のそれらの命令が実行のために、メモリ１３０内で、モジュール１５０の命令がパラメータを取得するために使用するのと同じメモリ位置からロードされるということを意味する。実行環境の一つまたは複数の命令全体がこのようにしてパラメータとしても使用されてもよいことは理解されるであろう。もし望まれるなら、実行命令の一部（たとえば演算子フィールド、最上位バイトなど）のみがパラメータと統合されてもよい。
【００４６】
ある実施形態では、パラメータ２１２とモジュール１５０との間の統合が生起してしまっている。前記複数のパラメータ２１２のビット表現の一部は、前記コンピュータ・プログラム・モジュール１５０のコンピュータ実行可能命令のビット表現の少なくとも一部に等しい。これらの命令は、命令の実行の間、前記命令の前記ビット表現の前記一部を保持する少なくとも一つのメモリ・アドレスを、参照によって前記パラメータの前記ビット表現の等しい部分を読むためにも使うよう構成される。よって、モジュール１５０の少なくとも一つの命令は、モジュール１５０内の別の命令がパラメータを取得するあるメモリ位置からロードされる。もちろん、命令またはパラメータ全体をロードする代わりに、その一部についても同じ原理は機能する。
【００４７】
ある実施形態では、前記複数のデジタル・パラメータは、次のうちの少なくとも一つのものの表現を含む：
・暗号鍵および／または暗号アルゴリズムといった暗号学的データ；
・符号化テーブルおよび／または符号化アルゴリズムといったデジタル・コンテンツ・エンコード／デコード・データ；
・スクランブル・テーブルおよび／またはスクランブル・アルゴリズムといったデジタル・コンテンツ・スクランブル／スクランブル解除データ。
【００４８】
あるさらなる実施形態では、デジタル入力データ１５２は、コンテンツ固有鍵の制御のもとで暗号化された、エンコードされたおよび／またはスクランブルされたオーディオ／ビデオのようなデジタル・コンテンツである。その場合、モジュール１５０はプロセッサ１２０をして、デジタル入力データを、ユーザーに対してレンダリングされることができるまたはさらに処理されることができる平文の形（または少なくとも部分的に変換された形に）に変換させる。この目的に向け、本方法は、それぞれ解読、デコードおよび／またはスクランブル解除を制御するために前記コンテンツ固有鍵の表現を受信することを含む。たとえば、コンテンツが暗号化されている場合、装置１１０は解読鍵を受信する。これを受信するのはいかなる仕方でもよい。たとえば、記憶装置１６０から読むまたはサーバー１７４からインターネット１７２を通じて受信するなどである。次いで、少なくとも前記複数の所定のデジタル・パラメータのうちの一つの一部２１４を、前記コンテンツ固有鍵の受信された表現から導出するためにアルゴリズム２００が使用される。たとえば、前記コンテンツ固有鍵が単にパラメータ部分２１４として使用されてもよい。
【００４９】
ある実施形態では、前記コンテンツ固有鍵および／または前記コンテンツ固有解読アルゴリズムは、難読化されたルックアップ・テーブルのネットワークを含む形で、たとえば上記のようにして、供給される。上に示されたように、難読化はテーブル中の定数を選ぶことにおけるある程度の自由度を与える。上で、実行環境１５８から導出された語wが別の難読化されたテーブルにおいて（よってモジュール１５０の別のパラメータにおいて）補償されることができる例が与えられた。ある実施形態では、実行環境１５８（たとえば語w）から導出されたパラメータが、コンテンツ固有解読鍵／アルゴリズム２２０の難読化された実装において補償される。その際、アルゴリズム２００は、実行環境１５８から導出されたパラメータ（たとえば語w）を正しい難読化されたテーブルにおける正しい位置にロードするよう構成される。その際、パラメータ１５４として使用される難読化されたテーブルのネットワークは互いを補償し、もともと意図されていたマッピングを実行する。こうしてコンテンツ固有解読は、実行環境から導出された情報を用いて難読化される。その部分が修正されていない形で存在している場合にのみ、解読が正しく実行されることが保証されることができる。同じ原理がコンテンツ固有符号化および／またはスクランブルについても機能することは理解されるであろう。同じようにして、コンテンツ固有パラメータ／アルゴリズムが、モジュール１５０から導出された情報（たとえばそれから導出された語w）を用いて難読化されうることも理解されるであろう。
【００５０】
本発明が、本発明を実施するよう適応されたコンピュータ・プログラム、特に担体（carrier）上または担体中のコンピュータ・プログラムにも広がることは理解されるであろう。プログラムは、ソース・コード、オブジェクト・コード、部分的にコンパイルされた形のようなソースおよびオブジェクト・コードの中間のコードの形であっても、あるいは本発明に基づく方法の実装における使用のために好適な他のいかなる形であってもよい。前記担体は、プログラムを担持することのできるいかなる実体またはデバイスであってもよい。たとえば、担体は、ROM、たとえばCD-ROMもしくは半導体メモリまたは磁気記憶媒体、たとえばフロッピー（登録商標）ディスクもしくはハードディスク記憶媒体を含みうる。さらに、担体は、電気ケーブルもしくは光ケーブルを介してまたは無線もしくは他の手段によって伝達されうる、電気的または光学的信号のような伝送可能な担体であってもよい。プログラムがそのような信号として具現されるとき、担体は、そのようなケーブルまたは他のデバイスもしくは手段によって構成されうる。あるいはまた、前記担体は、当該方法を実行するよう、あるいは当該方法の実行において使用するために適応されている、前記プログラムが埋め込まれた集積回路であってもよい。
【００５１】
上記の実施形態が本発明を限定するのではなく例解するものであり、当業者は付属の請求項の範囲から外れることなく数多くの代替的な実施形態を設計できるであろうことは注意しておくべきであろう。請求項において、括弧内に参照符号があったとしても、その請求項を限定するものと解釈してはならない。動詞「有する」およびその活用形の使用は、請求項において述べられている以外の要素やステップの存在を排除しない。要素の単数形の表現はそのような要素の複数の存在を排除しない。本発明は、いくつかの相異なる要素を有するハードウェアによって、および好適にプログラムされたコンピュータによって実装されうる。いくつかの手段を列挙する装置請求項では、これらの手段のいくつかが同一のハードウェア項目によって具現されてもよい。ある種の施策が互いに異なる従属請求項において記載されているというだけの事実は、それらの施策の組み合わせが有利に使用できないということを示すものではない。
【図１】
2009543244.tif 000003
【図２】
2009543244.tif 000004
【図３】
2009543244.tif 000005
【国際調査報告】
2009543244.tif 000006
2009543244.tif 000007
2009543244.tif 000008