(57)【特許請求の範囲】
【請求項１】
システムソフトウェアを保護することによってデータセキュリティを増大させるシステムであって、
処理されるべきコンテントデータを受け取る入力部と、
保護されるべき予め決められたシステムデータであって、コンピュータ実行可能な命令を含むソフトウェアコードを有する前記予め決められたシステムデータと、
個々の鍵に依存して、前記コンテントデータの個々のブロックを暗号処理する暗号化ユニットと、
保護されるべき前記予め決められたシステムデータの個々の部分に依存して、前記コンテントデータの個々のブロックの前記処理のために使用される前記個々の鍵を決定する鍵供給部であって、前記予め決められたシステムデータの前記部分は、すべての前記予め決められたシステムデータを含まず、前記予め決められたシステムデータの異なる個々の部分が、前記コンテントデータの前記個々のブロックについて選択される、鍵供給部と、
を有するシステム。
【請求項２】
前記鍵供給部は、前記コンテントデータの前記個々のブロックの外側のコンテントデータに依存して、前記予め決められたシステムデータの前記部分を選択する、請求項１に記載のシステム。
【請求項３】
前記鍵供給部は、前記コンテントデータの暗号文に基づいて、前記予め決められたシステムデータの前記部分を選択する、請求項２に記載のシステム。
【請求項４】
前記鍵供給部が、以前に処理されたデータブロックの前記暗号文に基づいて、前記予め決められたシステムデータの前記部分を選択する、請求項３に記載のシステム。
【請求項５】
前記鍵供給部は、暗号鍵を得るために、前記選択された部分の疑似ランダム関数を計算する、請求項１に記載のシステム。
【請求項６】
前記暗号化ユニットは、前記個々の鍵の少なくとも一部及び前記コンテントデータの前記個々のブロックの少なくとも一部に関するＸＯＲ演算を適用する、請求項１に記載のシステム。
【請求項７】
前記コンテントデータに対応する暗号文を記憶する格納部を更に有し、前記暗号化ユニットが、前記記憶されたコンテントデータを解読する、請求項１に記載のシステム。
【請求項８】
前記暗号化ユニットは、
前記個々の鍵に依存して前記入力部から受け取られる前記コンテントデータの前記個々のブロックを暗号化し、前記格納部を使用して前記暗号化されたコンテントデータを記憶する暗号器と、
前記個々の鍵に依存して、前記格納部を使用して記憶された前記暗号化されたコンテントデータの個々のブロックを解読する解読器と、
を有する、請求項７に記載のシステム。
【請求項９】
前記暗号化ユニットが、前記個々の鍵に依存して、前記コンテントデータにデジタルウォーターマークを付す、請求項１に記載のシステム。
【請求項１０】
システムソフトウェアを保護することによってデータセキュリティを増大させるサーバシステムであって、
処理されるべきコンテントデータを受け取る入力部と、
保護されるべき予め決められたシステムデータを有するクライアントシステムに、処理されたコンテントデータを供給する出力部であって、前記予め決められたシステムデータがコンピュータ実行可能な命令を含むソフトウェアコードを有するものである、前記出力部と、
個々の鍵に依存して、前記コンテントデータの個々のブロックを暗号処理する暗号化ユニットと、
保護されるべき前記予め決められたシステムデータの個々の部分に依存して、前記コンテントデータの個々のブロックの前記処理のために使用される前記個々の鍵を決定する鍵供給部であって、前記予め決められたシステムデータの前記部分は、すべての前記予め決められたシステムデータを含まず、前記予め決められたシステムデータの異なる個々の部分が、前記コンテントデータの前記個々のブロックについて選択される、鍵供給部と、
を有するサーバシステム。
【請求項１１】
請求項１に記載のクライアントシステム及び請求項１０に記載のサーバシステムを有するシステムであって、
前記サーバシステムの前記出力部は、前記クライアントシステムの前記入力部に、前記サーバシステムの前記暗号化ユニットによって処理された前記コンテントデータを供給し、
前記サーバシステムの前記鍵供給部及び前記クライアントシステムの前記鍵供給部は、前記サーバシステムの前記入力部において前記コンテントデータを受け取ることに応じて及び前記クライアントシステムの前記入力部において対応するコンテントデータを受け取ることに応じて、それぞれ、前記ソフトウェアコードの同じ部分を使用する、システム。
【請求項１２】
システムソフトウェアを保護することによってデータセキュリティを増大させる方法であって、
処理されるべきコンテントデータを受け取るステップと、
保護されるべき予め決められたシステムデータの個々の部分に依存して、前記コンテントデータの個々のブロックの前記処理のために使用される個々の鍵を決定するステップであって、前記予め決められたシステムデータの前記部分は、すべての前記予め決められたシステムデータを含まず、前記予め決められたシステムデータの異なる個々の部分が、前記コンテントデータの前記個々のブロックについて選択され、前記あらかじめ決められたシステムデータがコンピュータ実行可能な命令を含むソフトウェアコードを有するものである、ステップと、
決定された前記個々の鍵に依存して、前記コンテントデータの個々のブロックを暗号処理するステップと、
を含む方法。
【請求項１３】
システムソフトウェアを保護することによってデータセキュリティを増大させる方法であって、
処理されるべきコンテントデータを受け取るステップと、
保護されるべき予め決められたシステムデータを含むクライアントシステムに、処理されたコンテントデータを供給するステップであって、前記あらかじめ決められたシステムデータがコンピュータ実行可能な命令を含むソフトウェアコードを有するものであるステップと、
保護されるべき前記予め決められたシステムデータの個々の部分に依存して、前記コンテントデータの個々のブロックの前記処理のために使用される個々の鍵を決定するステップであって、前記予め決められたシステムデータの前記部分は、すべての前記予め決められたシステムデータを含まず、前記予め決められたシステムデータの異なる個々の部分が、前記コンテントデータの前記個々のブロックについて選択される、ステップと、
決定された前記個々の鍵に依存して、前記コンテントデータの個々のブロックを暗号処理するステップと、
を含む方法。
【請求項１４】
請求項１２又は１３に記載の方法をプロセッサに実施させるコンピュータ実行可能な命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データセキュリティを増大させることに関する。
【背景技術】
【０００２】
著作権で保護されたコンテントの配布媒体としてのインターネットの使用は、コンテントプロバイダの利益を守るための課題を生んでいる。具体的には、コンテントプロバイダの著作権及びビジネスモデルを保証するこが必要とされる。コンシューマエレクトロニクスプラットホームは、ますます、ソフトウェアをロードされたプロセッサを使用して動作されるようになっている。このようなソフトウェアは、例えばオーディオ及び／又はビデオのようなデジタルコンテントのレンダリング（再生）のための機能の主要部分を提供しうる。コンテントが諸条件の下で使用されることができる該諸条件を含むコンテント所有者の利益を強化する１つのやり方は、再生ソフトウェアの制御を有することによる。例えばテレビジョン又はＤＶＤプレーヤにおいて実現される多くのコンシューマエレクトロニクスプラットホームは、従来、クローズされて使用されてきたが、今日ではますます多くのプラットホームが、少なくとも部分的にオープンである。これは具体的にはＰＣプラットホームに当てはまる。その理由は、あるユーザは、コンテントへのアクセスを提供するＰＣハードウェア及びソフトウェアの完全な制御を有するものとみなされうるからである。更に、ユーザは、任意のコンテント保護機構を攻撃し迂回するための相当量の時間及び資源を有するものとみなされる。結果として、コンテントプロバイダは、セキュアでないネットワークにわたって及びすべてのユーザ又は装置が信頼されることができるわけではないコミュニティに対し、ユーザを合法化するために、コンテントを送り出さなければならない。
【０００３】
デジタル権利管理システムは、多くの場合、コンテントの非認可の使用を防ぐための暗号化方法、及び／又は非合法的に配布されたコンテントのソースの追跡を可能にするためのデジタル署名方法を使用する。デジタル権利管理に生じる問題の１つは、コンテントが諸条件下で使用されることができる該諸条件を履行するソフトウェアコードが、改ざんされてはならないことである。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
暗号化に依存するデジタル権利管理の脆弱性の２つの領域は、コンテントが諸条件下で使用されることができる該諸条件を履行するソフトウェアコンポーネント並びに鍵の配布及び取り扱いである。諸条件の履行を除去することを狙う攻撃者は、ソフトウェアコンポーネントに含まれるプログラムコードの改ざんによってこれを達成することを試みることがある。鍵の取り扱いに関連して、再生のために、メディアプレーヤは、ライセンスデータベースから解読鍵を取り出さなければならない。そののち、メディアプレーヤは、暗号化されたコンテントの解読のために、この解読鍵をメモリ内のどこかに記憶しなければならない。これは、鍵への攻撃の２つの選択肢を、攻撃者に提供する。第１に、ライセンスデータベースアクセス機能のリバースエンジニアリングは、ブラックボックスソフトウェアを生じさせることができ（すなわち、攻撃者は、ソフトウェア機能の内部動作を理解する必要はない）、それにより、攻撃者が、すべてのライセンスデータベースからアセット鍵を取り出すことを可能にする。第２に、コンテント解読の間のメモリへのアクセスを観察することによって、アセット鍵を取り出すことが可能になりうる。両方のケースとも、鍵が損なわれると考えられる。
【０００５】
改ざん耐性のあるソフトウェアとは、目標指向の改ざんを複雑化するための特別なフィーチャを有するソフトウェアを示す。ソフトウェアアプリケーションの改ざん耐性を増大させるさまざまな技法が存在する。これらの技法のほとんどは、ソフトウェアアプリケーションの制御及びデータパスの両方にランダム性及び複雑さのベール（覆い）を付加することによって、アプリケーションの組み込まれた知識を隠すことに基づく。この背景にある考えは、単にコードインスペクションによって情報を抽出することがより困難になることである。従って、例えば、アプリケーションのアクセス及び許可制御を扱うコードを見つけ、従ってそれを変更することは、より困難である。しかしながら、ソフトウェアアプリケーションの改ざん耐性を増大するためのこれらの技法は、必ずしも満足なものではない。
【課題を解決するための手段】
【０００６】
データセキュリティを増大させるための改善されたシステムを有することが有利である。この問題によりよく対処するために、本発明の第１の見地において、
処理されるべきコンテントデータを受け取る入力部と、
保護されるべき予め決められたシステムデータと、
個々の鍵に依存して、コンテントデータの個々のブロックを暗号処理する暗号化ユニットと、
予め決められたシステムデータの個々の部分に依存して、コンテントデータの個々のブロックの前記処理のために使用される個々の鍵を決定する鍵供給部であって、前記部分は、すべての予め決められたシステムデータを含まず、予め決められたシステムデータの異なる個々の部分が、コンテントデータの個々のブロックについて選択される、鍵供給部と、
を有するシステムが提示される。
【０００７】
鍵は、システムデータの選択された部分に依存するので、悪意のあるユーザによるシステムデータのこの選択された部分に対する変更は、その鍵をも変更し、こうして、個々のコンテントブロックの暗号処理が成功することを妨げる。このようにして、選択された部分が、改ざんから保護される。異なる個々の部分が、個々のコンテントブロックについて使用されるので、相対的に多数のデータビットが、改ざんから保護される。別の利点は、システムが、システムデータ特有の暗号文の生成を可能にすることである；鍵はシステムデータに依存するので、同じシステムデータがシステムに利用可能である場合のみ、暗号処理が成功しうる。概して、このシステムデータは、コンテントデータを処理することが認可されていないシステムの少なくともいくつかには利用可能にされないので、これはセキュリティを高める。
【０００８】
一実施例において、予め決められたシステムデータは、コンピュータ実行可能な命令を含むソフトウェアコードを有する。この場合、ソフトウェアコードを変更することは、鍵がソフトウェアコードの変更された部分に依存するときはいつでも処理が妨げられることを意味するので、ソフトウェアコードは、認可されない変形から保護される。例えば、保護されるべきソフトウェアコードは、デジタル権利管理を履行することに関連する命令を含む。
【０００９】
一実施例において、鍵供給部は、コンテントデータの個々のブロックの外側のコンテントデータに依存して、予め決められたシステムデータの一部を選択するように構成される。これは、送信側及び受信側の両方において、予め決められたシステムデータの同じ部分を選択する非常に効率的なやり方である。コンテントデータは概して、なんらかのランダム性を有するので、これは、選択された部分にランダム性を導入する。
【００１０】
一実施例において、鍵供給部は、コンテントデータの暗号文に基づいて、前記部分を選択するように構成される。暗号文は、平文より良好なランダム特性を有するので、この例におけるソフトウェアコードの一部の選択もまた、より良好なランダム特性を有する。
【００１１】
一実施例において、鍵供給部は、以前に処理されたデータブロックの暗号文に基づいて、前記部分を選択するように構成される。以前に処理されたデータブロックの暗号文は、選択された部分が現在データブロックを処理するために必要とされるときには、すぐに利用可能である。これは、受信エンド及び送信エンドの両方に当てはまる。
【００１２】
一実施例において、鍵供給部は、暗号鍵を得るために、選択された部分の疑似ランダム関数を計算するように構成される。疑似ランダムキャラクタは、暗号化スキームを壊すことをより困難にする。別の実施例において、疑似ランダム関数は、ハッシュ関数である。
【００１３】
一実施例において、暗号化ユニットは、個々の鍵の少なくとも一部及びコンテントデータの個々のブロックの少なくとも一部を伴うＸＯＲ演算を適用するように構成される。ＸＯＲ関数は、実行するのは特に効率的であるが、壊すのは容易ではない。
【００１４】
一実施例は、コンテントデータに対応する暗号文を記憶する格納部を有し、暗号化ユニットは、記憶されたコンテントデータを解読するように構成される。これが望ましい場合はいつでも、格納部は、コンテントデータが記憶され、取り出されることを可能にする。暗号文は、予め決められたシステムデータに依存するので、記憶されたコンテントデータは、このシステムデータを有しない他のシステムによって使用されることができない。従って、格納部は、相対的にセキュアである。
【００１５】
一実施例において、暗号化ユニットは、
個々の鍵に依存して、入力部から受け取られるコンテントデータの個々のブロックを暗号化し、格納部を使用して暗号化されたコンテントデータを記憶する暗号器と、
個々の鍵に依存して、格納部を使用して記憶された暗号化されたコンテントデータの個々のブロックを解読する解読器と、
有する。
【００１６】
鍵は、システム特有である（すなわち、予め決められたシステムデータに依存する）ので、暗号化及び解読は、同じシステム上で有利に実施されることができる。この１つの適切な応用例は、コンテントが、同じシステムによるのちの解読及び使用のために、システム上で暗号化され局所的に記憶される例である。
【００１７】
一実施例において、暗号化ユニットは、個々の鍵に依存してデジタルウォーターマークをコンテントデータに適用するように構成される。デジタルウォーターマークは、鍵データに依存するので、それは、予め決められたシステムデータに依存する。従って、デジタルウォーターマークは、コンテントデータにウォーターマークを付すために使用されたシステムデータを識別するために使用されることができる。
【００１８】
一実施例は、データセキュリティを増大させるサーバシステムであって、
処理されるべきコンテントデータを受け取る入力部と、
保護されるべき予め決められたシステムデータを有するクライアントシステムに、処理されたコンテントデータを供給する出力部と、
個々の鍵に依存して、コンテントデータの個々のブロックを暗号処理する暗号化ユニットと、
予め決められたシステムデータの個々の部分に依存して、コンテントデータの個々のブロックの前記処理のために使用される前記個々の鍵を決定する鍵供給部であって、前記部分は、すべての予め決められたシステムデータを含まず、予め決められたシステムデータの異なる個々の部分が、コンテントデータの個々のブロックについて選択される、鍵供給部と、
を有するシステムを有する。
【００１９】
一実施例は、クライアントシステム及びサーバシステムを備えるシステムであって、
サーバシステムの出力部が、クライアントシステムの入力部に、サーバシステムの暗号化ユニットによって処理されたコンテントデータを供給し、
サーバシステムの鍵供給部及びクライアントシステムの鍵供給部が、サーバシステムの入力部においてコンテントデータを受け取ることに応じて及びクライアントシステムの入力部で対応するコンテントデータを受け取ることに応じて、それぞれ、ソフトウェアコードの同じ部分を使用する、
システムを有する。
【００２０】
一実施例は、データセキュリティを増大させる方法であって、
処理されるべきコンテントデータを受け取るステップと、
個々の鍵に依存して、コンテントデータの個々のブロックを暗号処理するステップと、
保護されるべき予め決められたシステムデータの個々の部分に依存して、コンテントデータの個々のブロックの前記処理のために使用される個々の鍵を決定するステップであって、前記部分は、すべての予め決められたシステムデータを含まず、予め決められたシステムデータの異なる個々の部分が、コンテントデータの個々のブロックについて選択される、ステップと、
を含む方法を有する。
【００２１】
一実施例は、データセキュリティを増大させる方法であって、
処理されるべきコンテントデータを受け取るステップと、
保護されるべき予め決められたシステムデータを有するクライアントシステムに、処理されたコンテントデータを供給するステップと、
個々の鍵に依存して、コンテントデータの個々のブロックを暗号処理するステップと、
予め決められたシステムデータの個々の部分に依存して、コンテントデータの個々のブロックの前記処理のために使用される個々の鍵を決定するステップであって、前記部分は、すべての予め決められたシステムデータを含まず、予め決められたシステムデータの異なる個々の部分が、コンテントデータの個々のブロックについて選択される、ステップと、
を含む方法を有する。
【００２２】
一実施例は、説明される方法のうちの少なくとも１つをプロセッサに実施させるためのコンピュータ実行可能な命令を含むコンピュータプログラムを有する。
【００２３】
以下でＣｈｏｗ１と呼ばれる「White-Box Cryptography and an AES Implementation」(by Stanley Chow, Philip Eisen, Harold Johnson, and Paul C. Van Oorschot, in Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, Canada, August 15-16, 2002)及び以下でＣｈｏｗ２と呼ばれる「A White-Box DES Implementation for DRM Applications」(by Stanley Chow, Phil Eisen, Harold Johnson, and Paul C. van Oorschot, in Digital Rights Management: ACM CCS-9 Workshop, DRM 2002, Washington, DC, USA, November 18, 2002)は、個別のステップではなく合成を表わすランダムな全単射によって、そのテーブルを符号化することと、それを含まれるアプリケーションに組み入れることによって暗号限界を広げることとの組み合わせによって、鍵を隠そうとする方法を開示している。
【００２４】
国際出願番号ＰＣＴ／ＩＢ２００７／０５０６４０（出願人整理番号ＰＨ００５６００）の明細書には、データ処理システムの完全性を保護する方法が開示されている。方法は、保護されるべきデータストリングを決定することを含み、データストリングの完全性は、データ処理システムの完全性の標示である。予め決められたデータ処理機能を表すパラメータの組は、データストリングをパラメータの組のビット表現に組み込むために、パラメータの組の冗長性を使用して計算される、システムは、パラメータの組に従って、データを処理することを可能にされる。パラメータの組は、暗号鍵を含む暗号化アルゴリズムの少なくとも一部を表す。パラメータの組は、更に、ルックアップテーブルのネットワークを表す。ルックアップテーブルのネットワークは、データ処理アルゴリズムのホワイトボックス実現の複数のルックアップテーブルを含む。データ処理アルゴリズムは、暗号化アルゴリズムを含む。
【００２５】
本発明のこれら及び他の見地は、図面を参照して更に解明され、記述される。
【図面の簡単な説明】
【００２６】
【図１】暗号化スキームを示す図。
【図２】解読スキームを示す図。
【図３】暗号化スキームを示す図。
【図４】解読スキームを示す図。
【図５】一実施例を示す図。
【図６】一実施例を示す図。
【発明を実施するための形態】
【００２７】
改ざん耐性のあるソフトウェアは、目標とされる改ざんを実施することが困難であるソフトウェアである。ソフトウェア改ざん耐性は、例えばデジタル権利管理（ＤＲＭ）クライアント、支払いシステム及び条件付きアクセスシステムのような多くのアプリケーションにおいて決定的に重要である。脅威の１つは、攻撃者が、公開鍵のような重要なセキュリティデータ、又はアクセス決定のようなソフトウェアの重要な動作を変更することを試みることである。この文脈において、コード硬化（ハードニング）は、プログラムフローを混乱させ、こうしてプログラムの重要な部分を隠すことによって実現されることができることに注意されたい。攻撃者が、重要な部分の位置に関する全情報を有する場合でも、コード硬化は、攻撃者のパスに障害物を置くことによって実現されることができる。コード硬化を実現する１つのやり方は、単に攻撃者が変更することに関心をもつ部分に代わって、コードのかなり多くの部分を変更することを攻撃者に強いるように、プログラムの多くの部分を混ぜ合わせることである。
【００２８】
コード硬化の１つの方法は、プログラムコードのハッシュの検証である。ハッシュ法は、隣接するメモリアドレスに作用する。コードのどの部分がハッシュされるかを攻撃者が識別するのは相対的に容易でありうる。コードの大きなブロックが、改ざんに対して硬化されることを必要とする場合、ハッシュ法は、多くの作業を必要としうる。より大きいプログラムにとってより効率的である方法を有することが望ましい。更に、暗号化されたコンテント（暗号文）が、プログラムコードに依存する方法、すなわち、プログラムコードが、鍵のような役割を果たすシステムを有することが望ましい。より一般的にいえば、相対的にかなり大量のデータを改ざんから守ることが望ましく、ここで、データは、例えばハードウェア識別子データ、ＢＩＯＳデータ、レジストリエントリ又はコンテントデータフラグメントのような、システム上で利用可能なデータであることが好ましい。
【００２９】
この記述において、重要な点は、ソフトウェアコードの保護にあるが、概念は、任意のデータタイプを保護することに拡張されることができる。実際に、記述される実施例は、暗号化アルゴリズムに対する鍵データとして使用されるべき相対的に大量のデータを使用することを可能にする。このような大量のデータは、例えば暗号化システムにおいてしばしば使用される相対的に小さい鍵と比較して、悪意のあるエンティティによって配布されることに対する脆弱さが低い。保護されるべき予め決められたシステムデータの例は、システム上に存在する任意のデータ、ハードウェア識別子、ＢＩＯＳ、コンテント、ドキュメント、レジストリ設定、オペレーティングシステム要素、その他を含む。
【００３０】
一実施例において、ある装置上で走っているプログラムコードが、改ざん耐性をもつようにされる。方法は、暗号アルゴリズムを使用するものであり、コードによる改ざんがユーザにとって機能の（部分的な）欠如を引き起こすという考えに基づく。解読アルゴリズムは、装置上で実現されるものとする。一実施例において、解読アルゴリズムは、鍵及びプログラムコードに依存する。プログラムコードに対する変形は、解読アルゴリズムがもはや適切に解読を行わないことを意味する。それゆえ、プログラムコードは、相対的に改ざん耐性をもつ。
【００３１】
解読アルゴリズムとプログラムコードとの間の依存を実現する１つのアプローチは、コードフラグメントとして鍵を規定することである。これを説明するために、ＡＥＳブロック暗号が適用されるものとする。このブロック暗号は、１０ラウンドを有し、各ラウンドは、１２８ビットラウンド鍵によってパラメータ化される。各ラウンド鍵が、コンピュータプログラムの１２８ビットフラグメントとして規定される場合、これは、ラウンド鍵内で使用されるプログラムの１０×１２８＝１２８０ビットの総数をもたらす。こうして、コンピュータプログラムコードのこれらのビットの変更は、鍵に対する変更を意味し、鍵は、所望のプログラム挙動を得るために変更されないことが必要とされるので、コンピュータプログラムコードのこれらの１２８０ビットは、改ざん耐性をもつようにされる。
【００３２】
一実施例において、任意のサイズのプログラムが、改ざん耐性をもつようにされうる。ｎビットのブロックサイズを有するブロック暗号が、一例として使用される。ｎビットより多くを含むコンテントを暗号化し／解読する場合、複数の暗号化／解読が、コンテントの複数ブロックについて実施されることを必要とする。暗号化／解読がどのように互いに結びつけられるかを指定するブロック暗号モードが開発された。ｐｉを、ｉ番目の平文ブロックとし、ｃｉを対応するｉ番目の暗号文ブロックとする。暗号文ブロックｃｉは、コードフラグメントｆｉに依存する。言い換えると、ｐｉの暗号化及びｃｉの解読の両方が、コードフラグメントｆｉに依存する。ｃｉが依存するコードフラグメントは、値ｃｉ−１から導かれる。値ｃｉ−１は、ｃｉに先行する暗号文ブロックである。暗号の１つの特性は、連続する暗号文ブロックが、擬似ランダムシーケンスを形成することであるので、ｃｉが依存するコードフラグメントは、擬似ランダム値から導かれる；それゆえ、コードフラグメントは、疑似ランダム的に選択される。
【００３３】
この暗号化／解読がｆに依存する場合、コードフラグメントｆ内のビットの変形は、不正確な暗号化／解読を引き起こす。更に、暗号化／解読が依存するコードフラグメントは、疑似ランダムなやり方で選択される。こうして、大きいソフトウェアプログラムが改ざん耐性をもつようにする効率的な方法が、提供される。
【００３４】
ブロック暗号は、通常、一定のサイズ、即ちｎビット、のブロックを暗号化し／解読する。ブロック暗号がｎビットより多いコンテントに適用されるやり方は、ブロック暗号モードと呼ばれる。いくつかのブロック暗号モードは、ＮＩＳＴによって標準化されている。これらのモードで最も一般的なものは、ＣＢＣ（暗号ブロックチェーニング）モードである。このモード及び他のブロック暗号モードは、制限無く使用されることができる。ＣＢＣモードは、以下のように動作する；図１及び図２を参照されたい。
【００３５】
平文及び暗号文を、ｎビットブロックに分割させる。ｉ番目の平文ブロックは、ｐｉによって示され、ｉ番目の暗号文ブロックは、ｃｉによって示される。更に、ＥＫ（ｐｉ）は、鍵Ｋによるｐｉの暗号化を示し、ＤＫ（ｃｉ）は、鍵Ｋによるｃｉの解読を示す。ＣＢＣに従う平文と暗号文との間の関係は、
0005496880.tif 000002
及び
0005496880.tif 000003
によって与えられる。ここで、ｃ０は、ある初期値ＩＶとして規定され、
0005496880.tif 000004
は、ＸＯＲ演算を示す。このブロック暗号モードの背景にある考えは、平文ブロックｉが、それに暗号文ブロックｉ−１を加えることによってランダム化されることである。
【００３６】
一実施例において、ＣＢＣモードが使用される。他のブロック暗号モードが、同様に使用されることができる。プログラムコードと暗号化／解読との間の依存を実現するために、２つの問題が生じる。第１に、どのコードフラグメントがｉ番目の暗号化／解読に依存するようにされるかという問題が生じる。第２に、依存がどのように実現されるかという問題が生じる。
【００３７】
第１の問題は、以下のようにかなえられる。暗号文ブロックｉ−１に、ｉ番目の暗号化／解読に依存するようにされるコードフラグメントを決定させる。これは、例えば以下のように実現されることができる。改ざん耐性をもつようにされることを必要とするソフトウェアコードが、メモリのアドレス0,1,...,28-1に記憶されているとする。しかしながら、これは一例にすぎない。より多くのアドレスが、単純明快なやり方で使用されることができる。各アドレスは、プログラムの１ワードを含む。更に、ブロック暗号モードにおける各々の暗号化／解読は、ｍワードを含むコードフラグメントに依存するようにされるものとする。暗号化／解読ｉ＋１は、アドレス、
ci-1 mod 28, (ci-1+1) mod 28,...,(ci-1+m) mod 28
において、ソフトウェアコードフラグメントに依存するようにされる。
【００３８】
暗号文ブロックのシーケンスは、疑似ランダムビットストリームとみなされることができるので、このストラテジは、各々の暗号化／解読において、（擬似）ランダムコードフラグメントが完全性に関してチェックされる特性を有する。これは、プログラム内の各変更が、最終的に、不正確な暗号化／解読を生じさせるので、相対的に大きいプログラムが、改ざん耐性をもつようにされることができることを意味する。
【００３９】
生じる第２の問題は、ブロック暗号化／解読とコードフラグメントとの間の依存をどのように実現すべきかである。ＣＢＣモードにおいて、ｉ番目の暗号化／解読は、（ｉ−１）番目の暗号ブロックに依存するようにされる。この依存が生成されるのと同じやり方で、コードフラグメントへの依存が、生成されることができる。これは、ｉ番目の暗号化／解読がｎビット（ｎビットはブロックサイズである）を含むコードフラグメントｆ（ｃｉ−１）に依存する場合、暗号文ブロックｃｉ及び平文ブロックｐｉが、
0005496880.tif 000005
及び
0005496880.tif 000006
によってそれぞれ与えられることを意味する。これは、図３及び図４において視覚化される。
【００４０】
図５は、本発明の一実施例を示す。図は、データを処理するシステム１００を示す。システムは、クライアントシステムでありうる。図は更に、データを処理するサーバシステム２００を示す。例えば、サーバ２００は、インターネットのようなデータネットワークを介する送信によって又はＣＤ−ＲＯＭディスクのような取り外し可能な記憶媒体によって、クライアント１００に供給される処理されたデータ１１０を準備する。データは更に、内部記憶媒体１１６から生じるものであってもよい。
【００４１】
図は、入力部１０２を示している。入力部１０２は、処理される必要があるデータを受け取る。入力部１０２は、例えばサーバ２００からデータを受け取る。データは、局所データ格納部１１６からも受け取られることができる。データは更に、局所的に走る別のアプリケーションから又はユーザ入力から受け取られることができる。データは、例えばデータファイル、画像、オーディオファイル、ムービー、又は例えばストリーミングビデオ又はストリーミングオーディオのようなストリーミングメディアコンテントを含むことができる。データは、暗号化されることができ、処理は、暗号化されたデータの解読でありうる。処理は更に、データの署名若しくはウォーターマーキング、又はデータの署名若しくはウォーターマークの検証を含みうる。データは、セレクタ１０６に転送される。
【００４２】
鍵供給部１０６は、受け取られたコンテントを処理する際に使用されるべきソフトウェアコードの部分１１２を選択する。好適には、セレクタ１０６は、それが、コードの異なる部分を定期的に選択して、ソフトウェアコード１０４のすべてがやがて選択されることを達成するように実現される。鍵供給部１０６は、選択された部分１１２に依存して暗号鍵を供給する。選択された部分１１２は、暗号鍵を直接的に表現してもよく、又は暗号鍵は、この部分１１２から導出されてもよい。例えば、鍵は、コードの一部のコンテントのハッシュ関数として計算されることができる。好適には、鍵供給部１０６は、暗号文に基づいて前記部分を選択するように構成される。ブロック暗号が使用される場合、以前に処理されたデータブロックが、使用されることができる。
【００４３】
暗号化ユニット１０８は、入力部１０２を介して取り出されるデータの暗号処理を、鍵供給部１０６によって供給される鍵に依存して実施する。暗号処理は、供給された鍵を使用してコンテントを解読することを含むことができる。暗号化ユニットは、例えば選択された部分のビットを平文又は暗号文とＸＯＲ演算することによって、選択された部分のビット表現を直接的に鍵として使用することもできる。選択された部分１１２及びコンテント１１０を伴う任意の線形又は非線形演算が、２つの間の依存を生成するために使用されることができる。暗号処理は更に、暗号化及び／又はデジタル署名及び／又はデジタルウォーターマーキングを含みうる。しかしながら、これらは、暗号処理の非制限的な例である。
【００４４】
暗号化ユニット１０８の出力は、暗号処理されたデータ１１４である。このデータは、格納部１１６へ出力され、又は送信若しくは他の処理及び／又はレンダリングのために出力される。例えば、出力データ１１４は、テレビジョンへのレンダリングのためのビデオ信号を含みうる。
【００４５】
システム１００は、局所又は遠隔記憶媒体１１６上へのデータのセキュアな記憶のために使用されることができる。格納部１１６は、コンテントデータに対応する暗号文を記憶するために使用される。データが解読される必要があるときは必ず、格納部１１６に記憶された暗号化されたコンテントは、入力部１０２を介して、暗号化ユニット１０８及び鍵供給部１０６に供給される。
【００４６】
格納部１１６に記憶される暗号化されたデータは、外部ソースから受け取られることもできる。しかしながら、それは、システム自体によって生成されることもできる；例えば、ユーザのプロファイル若しくはドキュメント又はオーディオ／ビデオコンテントが、暗号化された形でセキュアに記憶されることができる。そのために、好適には、暗号化ユニットは、暗号器及び解読器の両方を有する。入力部１０２から受け取られる暗号化されていないデータは、まず、鍵供給部１０６及び暗号化ユニット１０８を使用して暗号化され、こうして暗号化されたデータ１１４は、格納部１１６に記憶され、必要なときはいつも、記憶された暗号化されたデータが、格納部１１６から入力部１０２に供給され、入力部１０２から鍵供給部１０６及び暗号化ユニット１０８に供給されて、出力１１４において解読されたデータが得られる。
【００４７】
代替として、暗号化ユニットは、ソフトウェアコード１０４の選択された部分１１２に依存して、コンテントデータにデジタルウォーターマークを適用する。
【００４８】
一実施例は、サーバシステム２００を含む。このサーバシステム２００は、コンテントデータがクライアント１００の入力部１１２に供給される前に、コンテントデータを準備するために使用される。サーバ２００及びクライアント１００は、それぞれ異なるコンピュータ上で走っていてもよい。サーバ２００及びクライアント１００は、単一のマシン上で走る異なる処理を含むものであってもよい。サーバ２００は、クライアント１００上で使用されるソフトウェアコードについての知識を有する。この知識は、ソフトウェアコード１０４の選択された部分１１２に依存して、クライアント１００上で適切に処理されることができるコンテントデータを生成するのに少なくとも十分である。例えば、サーバは、鍵供給部１０６によって選択されうるコードの異なる部分１１２に対応する予め計算された暗号鍵のリストを有する。代替として、鍵供給部２０６は、ソフトウェアコード１０４の局所コピーを有する。代替として、一例において、サーバ２００のセレクタ２０６が、クライアント１００に記憶される実際のコード１０４へのアクセスを有する。サーバシステム２００は、出力部２０２、鍵供給部２０６、暗号化ユニット２０８及び入力部２１０を有する。コンテントデータ２１４は、入力部２１０によって受け取られ、鍵供給部２０６及び暗号化ユニット２０８に転送される。鍵供給部２０６は、ソフトウェアコード１０４の一部１１２を選択し、選択された部分１１２に依存して、暗号化ユニット２０８に鍵を供給する。この鍵は、入力コンテントデータを暗号処理するために暗号化ユニット２０８によって使用される。処理されたコンテントデータ１１０は、出力部２０２を介して、クライアントシステム１００の入力部１０２へ供給される。
【００４９】
一実施例は、データセキュリティを増大させる方法であって、処理されるべきコンテントデータ（１１０）を受け取るステップと、個々の鍵に依存して、コンテントデータの個々のブロックを暗号処理するステップと、保護されるべき予め決められたシステムデータ（１０４）の個々の部分（１１２）に依存して、コンテントデータの個々のブロックの前記処理のために使用される個々の鍵を決定するステップであって、前記部分は、すべての予め決められたシステムデータを含まず、予め決められたシステムデータの異なる個々の部分が、予め決められたスキームに従ってコンテントデータの個々のブロックについて選択される、ステップと、を含む方法を含む。
【００５０】
一実施例は、データセキュリティを増大させる方法であって、処理されるべきコンテントデータ（２１４）を受け取るステップと、保護されるべき予め決められたシステムデータ（１０４）を含むクライアントシステム（１００）に、処理されたコンテントデータ（１１０）を供給するステップと、個々の鍵に依存して、コンテントデータの個々のブロックを暗号処理するステップと、予め決められたシステムデータ（１０４）の個々の部分（１１２）に依存して、コンテントデータの個々のブロックの前記処理のために使用される個々の鍵を決定するステップであって、前記部分は、すべての予め決められたシステムデータを含まず、予め決められたシステムデータの異なる個々の部分は、予め決められたスキームに従ってコンテントデータの個々のブロックについて選択される、ステップと、を含む方法を含む。
【００５１】
一実施例は、上述された方法のいずれかをプロセッサに実施させるためのコンピュータ実行可能な命令を含むコンピュータプログラムを含む。
【００５２】
図６は、記述されたシステム及び方法を実現するのに適した例示のハードウェアアーキテクチャを示している。ハードウェアアーキテクチャは、例えばパーソナルコンピュータ、セットトップボックス、テレビジョン受信機又はデジタルビデオプレーヤ／レコーダにおいて実現されることができる。サーバシステム２００は、例えばサーバコンピュータにおいて実現されることができる。図は、メモリ９１、ディスプレイ９３（又はディスプレイ用のコネクタ）、入力部９４（例えばキーボード、マウス、遠隔制御装置）、通信ポート９５（例えばイーサネット、ワイヤレスネットワーク、アンテナケーブル入力）及び記憶媒体９６（例えばコンパクトディスク、ＣＤ−ＲＯＭ、ＤＶＤ、外部フラッシュメモリのような取り外し可能な記憶媒体又は例えばハードディスクのような内部不揮発性記憶媒体）を制御するプロセッサ９２を示している。メモリ９１は、説明される方法の１又は複数をプロセッサに実施させるためのコンピュータ命令を含む。これらのコンピュータ命令は、記憶媒体９６から又は通信ポート９５を介してインターネットから、メモリ９１にロードされることができる。入力部９４は、ユーザがシステムと対話することを可能にするために使用される。ディスプレイは、ユーザとのインタラクションのために使用され、任意には、ビデオ又は静止画像をレンダリングするために使用される。スピーカ（図示せず）が、ユーザインタラクション及び／又はオーディオコンテントのレンダリングのために設けられることもできる。サーバシステム及びクライアントシステムは、図６と同じハードウェアシステム上のソフトウェアアプリケーションとして実現されることができ、それらは、同時に走ることができ、プロセス間通信を介して互いに通信することができる。代替として、クライアント及びサーバは、別個のハードウェアシステム上で走ることができ、双方とも図６と同様のアーキテクチャを有する。例えば、サーバは、コンテントプロバイダによって位置付けられ、所有され、クライアントは、コンシューマによって所有され、コンシューマの家に位置付けられる。
【００５３】
本発明は、本発明を実施に至らせるように適応されるコンピュータプログラム、特に担体上又は担体内のコンピュータプログラムにも及ぶことが理解されるであろう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース及び例えば部分的にコンパイルされた形のオブジェクトコードでありえ、又は、本発明による方法の実現において使用されるのに適した任意の他の形でありうる。担体は、プログラムを担持することが可能な任意のエンティティ又はデバイスでありうる。例えば、担体は、ＣＤ−ＲＯＭ若しくは半導体ＲＯＭのようなＲＯＭ、又はフロッピーディスク若しくはハードディスク磁気記録媒体のような記憶媒体を含むことができる。更に、担体は、電気若しくは光学ケーブルを介して又は無線若しくは他の手段によって伝達されることができる、電気信号又は光学信号のような送信可能な担体であってもよい。プログラムがこのような信号において具体化される場合、担体は、このようなケーブル又は他のデバイス若しくは手段によって構成されることができる。代替として、担体は、プログラムが組み込まれる集積回路でありえ、かかる集積回路は、関連した方法を実施するように又は実施に使用されるように適応される。
【００５４】
上述の実施例は、本発明を制限するのではなく、説明するものであり、当業者であれば、添付の特許請求の範囲を逸脱することなく多くの他の代替実施例を設計することが可能であることに注意すべきである。請求項において、括弧内に置かれた任意の参照符号は、請求項を制限するものとして解釈されるべきではない。「有する、含む」なる動詞及びその活用形の使用は、請求項に記載のもの以外の構成要素又はステップの存在を除外しない。構成要素の前の冠詞「a」又は「an」は、このような構成要素の複数の存在を除外しない。本発明は、いくつかの異なった構成要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって、実現されることができる。いくつかの手段を列挙する装置の請求項において、これらの手段のいくつかは、同じ一つのハードウェアアイテムによって具体化されることができる。特定の方策が相互に異なる従属請求項に記述されているという単なる事実は、これらの方策の組み合わせが有利に使用されることができないことを示さない。
【図１】
0005496880.tif 000007
【図２】
0005496880.tif 000008
【図３】
0005496880.tif 000009
【図４】
0005496880.tif 000010
【図５】
0005496880.tif 000011
【図６】
0005496880.tif 000012