JP2009543498A - デジタルデータ処理装置の耐改竄性 - Google Patents

デジタルデータ処理装置の耐改竄性 Download PDF

Info

Publication number
JP2009543498A
JP2009543498A JP2009519016A JP2009519016A JP2009543498A JP 2009543498 A JP2009543498 A JP 2009543498A JP 2009519016 A JP2009519016 A JP 2009519016A JP 2009519016 A JP2009519016 A JP 2009519016A JP 2009543498 A JP2009543498 A JP 2009543498A
Authority
JP
Japan
Prior art keywords
digital data
value
processing
unit
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009519016A
Other languages
English (en)
Other versions
JP5496663B2 (ja
Inventor
ミヒールス,ウィルヘルムス,ペー.,アー.,イェー.
ホリッセン,パウルス,エム.,ハー.,エム.,アー.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips NV, Koninklijke Philips Electronics NV filed Critical Koninklijke Philips NV
Publication of JP2009543498A publication Critical patent/JP2009543498A/ja
Application granted granted Critical
Publication of JP5496663B2 publication Critical patent/JP5496663B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Gasification And Melting Of Waste (AREA)

Abstract

デジタルデータ処理ユニットの改竄に対する抵抗力を増加するシステムは、受信されたデジタルデータにおける値に基づいた少なくとも1つのルックアップテーブル916で発見された値に依存して前記受信された信号を処理する処理手段906を有する第一のユニット901を有する。本システムは、さらに、デジタルデータを処理するとき、第一のユニットにルックアップテーブルにおける少なくとも1つの予め決定された値を発見させる、デジタルデータに含むための少なくとも1つの値を計算する手段912を有する第二のユニット902を有する。第二のユニットは、デジタルデータに少なくとも1つの値を含む挿入手段910、及びデジタルデータを第一のユニットに送出する出力手段908を有する。

Description

本発明は、デジタルデータ処理装置の改竄に対する抵抗力を増加することに関する。
インターネットは、デジタルコンテンツへの便利且つユビキタスなアクセスをユーザに提供する。パワフルな分散チャネルとしてインターネットのポテンシャルのため、多くのコンシューマエレクトロニクス(CE)の製品は、インターネットに直接アクセスするか、又はPCプラットフォーム−インターネットへの主要なポータルと相互運用するのを試みる。CE製品は、限定されるものではないが、デジタルセットトップボックス、デジタルTV、ゲームコンソール、PC、及び、さらに、PDA、移動電話のようなハンドヘルド装置、及びアップル社のiPodのようなモバイルストレージ及びレンダリング装置を含む。著作権利化されたコンテンツの流通媒体としてのインターネットの使用により、コンテンツプロバイダの関心を確実にするために、強力な課題が形成される。特に、コンテンツプロバイダの著作権及びビジネスモデルを正当化することが要求される。次第に、CEプラットフォームは、適切なソフトウェアがロードされたプロセッサを使用して動作される。かかるソフトウェアは、オーディオ及び/又はビデオのようなデジタルコンテンツのレンダリング(プレイバック)の機能の主要部分を含む場合がある。プレイバックソフトウェアの制御は、コンテンツが使用される諸条件を含めたコンテンツオーナの利益を強化する1つの方法である。慣習的に、(PC及びPDAを除いて)多くのCEプラットフォームがクローズされるために使用される場合、今日、益々多くのプラットフォームが少なくとも部分的にオープンにされる。特に、PCプラットフォームについて、幾つかのユーザは、コンテンツへのアクセス、及びコンテンツプロテクションメカニズムをアタック及びバイパスする大量の時間及びリソースを提供するハードウェア及びソフトウェアを通して完全な制御を有することが想定される。結果として、コンテンツプロバイダは、全てのユーザ又は装置を信頼することができないコミュニティに敵対するネットワークを通して合法的なユーザにコンテンツを伝達する必要がある。
典型的に、デジタル著作権管理システムは、ラウンドと呼ばれる暗号/復号ステップのシーケンスを使用してブロックでデータストリームを処理するブロック暗号に基づいて暗号化技術を使用する。それぞれのラウンドの間、ラウンドに特化した機能が実行される。ラウンドに特化した機能は、ラウンドに特化したサブキーの制御下で実行される同じラウンド機能に基づく場合がある。多くの暗号化システムについて、ラウンド機能は、マッピングテーブル又はルックアップテーブルを使用して規定される。明示的なテーブルが使用されない場合であっても、暗号/復号機能のソフトウェアにおける有効な実行のため、異なる部分の機能についてテーブルが頻繁に使用される。コンピュータコードは、テーブルの値を機能のレンジの値にアクセス又は結合する。ユーザに特化したキーを分配する代わりに、暗号又は復号アルゴリズムのためのキーの代わりにユーザに特化したアルゴリズムを配信する関心が益々増えている。これらのアルゴリズムは、大部分は機能(マッピング)であり、キーのようなエレメントの再設計を防止するか又は再計算を禁止するために難読化される(隠される)。コンピュータでは、幾つかのコンピュータコードを伴うテーブルは、これらの機能を表すことがある。
コンテンツプロバイダは、全てのユーザ又は装置を信頼することができないコミュニティに敵対するネットワークを通して合法的なユーザにコンテンツを伝達する必要がある。特に、PCプラットフォームについて、ユーザは、コンテンツへのアクセス、及びコンテンツプロテクションメカニズムをアタック及びバイパスするための制限されない量の時間及びリソースを提供するハードウェア及びソフトウェアの完全な制御を有することが想定される。コンテンツが使用される諸条件を実施するソフトウェアコードは、改竄されてはならない。PCに配信されるプロテクトされたコンテンツのデジタル著作権の管理における一般的なアプローチは、たとえばDES(Data Encryption Standard)、AES(Advanced Encryption Standard)、又はWO9967918で開示される方法を使用してデジタルコンテンツを暗号化し、復号キーを使用することである。
暗号化に頼るデジタル著作権管理の脆弱性の2つの主要な領域は、コンテンツが使用される諸条件を実施するソフトウェアプラグイン、並びに、キーディストリビューション及びハンドリングである。
典型的に、プラグインは、コンテンツが使用されるべき諸条件を実施する。これらの諸条件を取り除こうとするアタッカーは、ソフトウェアのプラグインに含まれるプログラムコードの改竄を通して、これを達成しようとする。
キーハンドリングに関連して、プレイバックについて、メディアプレーヤは、ライセンスデータベースから復号キーを取り出す必要がある。次いで、メディアプレーヤは、暗号化されたコンテンツの復号のため、メモリにおける何処かにこの復号キーを記憶する必要がある。これは、アタッカーにキーへのアタックのための2つのオプションを残す。はじめに、ライセンスデータベースアクセス機能のリバースエンジニアリングにより、ブラックボックスソフトウェアとなり(すなわちアタッカーはソフトウェアの機能の内部動作を理解する必要がない)、アタッカーは全てのライセンスデータベースからアセットキーを取り出すことができる。第二に、コンテンツの復号の間にメモリへのアクセスの観察により、アセットキーを取り出すことが可能である。両者のケースでは、キーは信用できなくなったと考慮される。
改竄に対する抵抗があるソフトウェアは、ソフトウェアとの目標指向の改竄が複雑にされるためにそのように呼ばれる。ソフトウェアアプリケーションの改竄に対する抵抗を増加する様々な技術が存在する。これらの技術の大部分は、ソフトウェアアプリケーションの制御及びデータパスの両者におけるランダム性及び複雑さのベールを追加することでアプリケーションの埋め込まれた情報を隠すことに基づいている。この背後にある考えは、コードの調査により情報を抽出することが更に困難となることである。したがって、たとえばアプリケーションのアクセス及び許可制御に対処するコードを発見し、結果的に、それを変えることが更に困難になる。
“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, SAC2002, St. John’s, Newfoundland, Canada, August 15-16, 2002は以下で“Chow 1”と呼ばれ、“A White-Box DES Implementation for DRM Applications”, by Stanley Chow, Phil Eisen, Harold Johnson, and Paul C. van Oorshot, in Digital Rights Management: ACM CCS-9 Workshop, DRM 2002, Washington, DC, USA, November 18, 2002は以下で“Chow 2”と呼ばれ、これらは、個々のステップではなくコンポジションを表すランダムな全単射によりそのテーブルをエンコードすること、暗号化の境界を閉鎖したアプリケーションに押し出すことで暗号化の境界を拡張することの組み合わせによりキーを隠す方法を開示する。
WO2006/046187は、システムにおいて、サーバが実行装置に暗号化関数Fを難読化された形式でどのように提供するかを開示する。関数Fは、アベールグループ演算子
外1
Figure 2009543498
を使用して複数のマッピングテーブルTi(0≦i≦n;n≧1)の出力を構成する。プロセッサは、
Figure 2009543498
となるようにテーブルO及びCを選択し、テーブルT’i,0≦i≦m;n≦m≦n+1を形成し、ここで0≦i≦nである。それぞれのテーブルT’iは、それぞれ対応するテーブルTiを表し、少なくとも1つのテーブルT’o1(0≦o1≦n)は、To1及びOのアベールコンポジションを通して形成され、少なくとも1つのテーブルT’c1(0≦c1≦m,c1≠o1)は、Cを含むアベールコンポジションを通して形成される。テーブルT’iを実行装置に提供する手段が使用される。実行装置は、テーブルを受ける手段、テーブルT’iのアベールコンポジションにより暗号化関数Fに機能的に等価な関数F’を形成するプロセッサを含む。
国際特許出願WO2006/046187公報 国際特許出願WO2006/046187公報
"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, SAC2002, 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 Oorshot, in Digital Rights Management: ACM CCS-9 Workshop, DRM 2002, Washington, DC, USA, November 18, 2002
デジタルデータ処理装置の改竄に対する抵抗を増加する改善されたシステムを有することが有利である。
この課題に良好に対処するため、本発明の第一の態様では、以下を有するシステムが提供される。第一のユニット901は、デジタルデータを受信する入力(IN)904、受信されたデジタルデータにおける値に基づいた少なくとも1つのルックアップテーブル(LUT)916で発見される値に依存して受信されたデジタルデータを処理する処理手段(PROC)906を有しており、第二のユニット902は、デジタルデータを処理するとき、ルックアップテーブルにおいて少なくとも1つの予め決定された値を第一のユニットに発見させる、デジタルデータに含まれる少なくとも1つの値を計算する手段(COMP)912、デジタルデータに少なくとも1つの値を含む挿入手段(INS)910、デジタルデータを第一のユニットに送信する出力(OUT)908を有する。
第一のユニットにより実行される処理は、データのレンダリングを有する。データは、エンコードされたオーディオ及び/又はビデオコンテンツを有する。第一のユニットは、1以上のルックアップテーブル916を有し、デジタルデータの処理は、多数のテーブルのルックアップを実行することで少なくとも部分的に実行される。多数のシステムでは、データ及び/又は擬似ランダムプロセスは、どのルックアップテーブルのエントリがデコーディングのために使用されたかを判定する。かかるシステムに関し、所定のルックアップテーブルのエントリは使用されないか、又はデータの比較的大きな部分を既にデコードした後にのみ使用されることが生じる。本発明のこの態様により、第二のユニットは、データを処理するときにアクセスされるルックアップテーブルにおいて少なくとも1つの予め決定された値を規定することができる。第二のユニットは、少なくとも1つの値をデータに含ませることで、これを規定することができ、少なくとも1つの値は、予め決定された値がアクセスされ処理で使用されるように選択される。ルックアップテーブルにおける予め決定された値がアタッカーにより変更された場合、処理は失敗する。これは、成功する処理は変更されない値の使用を必要とするためである。
第一のユニットは、たとえば、ユーザ端末、コンピュータ、セットトップボックス又はテレビジョンである。第二のユニットは、たとえばコンテンツサーバ又はサーバである。第一及び第二のユニットは、単一の物理的な装置の一部である。
本発明の態様によれば、第二のユニットは、暗号化されたコンテンツをデジタルデータに含む暗号化手段を有し、挿入手段は、少なくとも1つの値を暗号化されたコンテンツに含むために構成され、処理手段は、発見する動作に基づいて暗号化されたコンテンツを復号するために構成される。
復号及び暗号化は、ルックアップテーブルを使用して効果的に実現することができる。値を暗号化されたコンテンツに挿入することで、デコーダは、係るように挿入された値を暗号化されたデータに現れる他の値から区別するのを可能にすることなしに、予め決定されたルックアップテーブルのエントリにアクセスする。デコードの後、デコードされたデータは、挿入された値のデコードの結果を識別するラベルを含み、これにより、処理手段は、挿入された値のデコードの結果を廃棄することができる。
本発明の態様によれば、本システムは、処理手段の出力を参照値と比較する照合手段を有する。
照合手段は、第一のユニット、第二のユニット又は第三のユニットに含まれ、処理の結果を受ける。照合手段は、処理の結果を正しい結果であると考えられる値と比較する。ルックアップテーブルにおける予め決定された値がそれが含むべき値を含まない場合、比較は失敗し、照合ユニットは改竄を検出する。
本発明の態様によれば、処理手段は、予め決定された順序でデジタルデータを処理するために構成され、発見された値は、発見する動作の後にその処理が開始するデータの処理結果に影響を及ぼす。
この態様は、ルックアップテーブルの値が改竄された場合、データの比較的大きな部分が正しく処理されないという利点を有する。挿入された値の後の多数のデータは、係る改竄の場合に誤って処理されるであろう。
本発明の態様によれば、挿入手段は、デジタルデータにおいて少なくとも1つの値を位置決めするために構成され、デジタルデータの予め決定されたブロックを処理する前にルックアップテーブルにおける少なくとも1つの予め決定された値をデコードする手段に調べさせる。
これは、デジタルコンテンツの予め決定されたブロックが改竄されているシステムでの処理に対して良好にプロテクトされることを確認することである。
本発明の態様によれば、第一のユニットは、第一のユニットにより実行されるべきソフトウェアのビット表現を記憶するメモリを有し、ソフトウェアのビット表現の少なくとも1部は、処理手段によりルックアップテーブルの少なくとも1部として使用され、ルックアップテーブルにおける少なくとも1つの予め決定された値は、ソフトウェアのビット表現の少なくとも1部で生じる。
メモリ位置が2つの独立した目的のために使用される事実により、そのメモリ位置で改竄することが更に困難になる。これは、メモリ位置の最初の使用に関連される目的を達成するために変更が行われた場合、この変更は克服することが困難であるやり方でメモリ位置の第二の使用にも影響を及ぼすためである。
同時係属の特許出願EP06116693.0(代理人ドケットPH005600)は、ソフトウェアシステムの改竄の抵抗を増加する方法を開示しており、この方法は、複数のパラメータに基づいてデジタルデータを処理する複数のコンピュータ実行可能な命令を構成するステップ、処理の間に読取り可能なコンピュータ実行可能なコードのビット表現に等しい部分を、パラメータのビット表現において識別するステップ、命令の実行の間、参照によりパラメータのビット表現の等しい部分を読取るコードのビット表現を保持する少なくとも1つのメモリアドレスを使用する命令を構成するステップを含む。
本発明の態様によれば、ソフトウェアのビット表現の少なくとも1部は、処理手段の動作の一部として実行される命令を含む。
ルックアップテーブルと同様に処理手段の一部として実行される命令は、それらを1つの纏まりとし、メモリに単一のコピーを記憶することでプロテクトされる。さらに、処理手段は、復号手段、暗号化手段、又は圧縮(伸張)手段を有する。
本発明のこれらの態様及び他の態様は、添付図面を参照して以下に明らかにされるであろう。
図1は、AESのラウンドにおける動作を説明する図である。
図2は、難読化されたテーブルの例を示す図である。
図3は、実施の形態を説明する図である。
図4は、処理ステップを説明するフローチャートである。
図5は、実施の形態を説明する図である。
図3は、本発明の実施の形態を説明する。この図は、第一のユニット901及び第二のユニット902を示す。第一のユニット901は、出力908を介して第二のユニット902からデータを受信するために入力904を使用する。入力904は、たとえばTCP/IPサポート又は取り外し可能な記憶媒体(たとえばDVD,CD,テープ)からデータを読取るユニットをもつネットワーク入力を有する。出力908は、これに応じて、ネットワーク出力又はたとえばディスクマスタリング機器を有する。矢印で接続される出力908と入力904は、出力908から入力904にデータを送信するディストリビューションチャネルを表す。第二のユニット902は、データストレージ又はデータジェネレータ914を更に有する。データ914は、ZIP、MPEG、MP3のような特定のフォーマットでエンコードされ、また暗号化される。また、第二のユニットは、特定の値をデータストリームに挿入する挿入手段910を有する。挿入手段910は、挿入された値がオリジナルのデータ914のフォーマットに準拠するのを確かめるため、幾つかの情報を組み込む。データがオンザフライで生成された場合、挿入手段は、データフォーマットで挿入された値を適切に収容するためにデータジェネレータと協働する。また、挿入された値は、それらが係るように認識することができるようにラベル付けされる。これは、第一のユニットが挿入された値を誤って扱うのを防止するためである。しかし、ラベリングは、幾つかの処理が行なわれた後に現れるだけである。
第一のユニット901は、処理手段906及び1以上のルックアップテーブル916を更に有する。処理手段は、到来するデータを処理する。処理手段は、データが提供されるフォーマット(ZIP、MPEG3、MP3、暗号化等)を解釈する。たとえば、ZIPフォーマットは、処理が伸張を含むことを意味する。また、処理手段は、MPEG,MP3又は他のフォーマットをデコードするために構成される。最終的な例として、処理手段は、到来するデータを復号又は暗号化するために構成される。処理手段906は、ルックアップテーブル916の1つにおけるデータから導出される値を調べることで少なくとも部分的に処理を実行する。調べられた値は、たとえば次のテーブルルックアップを定義するためといった、更なる処理のために使用されるか、又は、調べられた値は、出力データを表す。ルックアップテーブルは、データの処理において重要な役割を担う。ルックアップテーブルのエントリがアタッカーにより変更された場合、そのルックアップテーブルのエントリはデータに関連して使用され、処理手段は、誤って処理されたデータを生成する。これにより、アタッカーが成功する変更を行なうことが更に困難になる。
あるパーティが第一のユニット901のインテグリティに関心があるとする。そのパーティは、第一のユニット901のインテグリティを確認するために第二のユニット902を使用する。勿論、インテグリティは、入力データから導出されるルックアップにより連続的にチェックされる。しかし、第二のユニット902は、特定の予め定義された値の存在をチェックするために使用することができる。このため、挿入手段910は、特に計算された値をデータストリームに挿入する。第二のユニット902は、デジタルデータに含むための値を計算する手段912を更に有する。値は、第一のユニット901の一部である処理手段906がデータを処理しているときに特定の予め定義された値を調べる方法で計算される。そのため、値を計算する手段912は、処理手段906及び/又はルックアップテーブル916に関する情報を有する。
幾つかのケースでは、挿入された値は、ルックアップテーブルのエントリをチェックするためにもっぱら含まれているので、処理されたデータで使用されるべきではない。このため、挿入手段910は、挿入された値を識別するためにデータにマーカを含むために構成される。好ましくは、さもなければアタッカーは挿入された値をスキップするために処理手段906に手を加えるため、処理手段906によりデータを処理した後にマーカが目に見えるだけである。さらに、符号化は、通常は、挿入された値が挿入された値の前後のデータの幾つかにも影響を及ぼすものである。これにより、ルックアップテーブルのエントリが変更されない場合に、挿入された値の周りのデータを使用不可能にされ、これがまさに望まれるものである。また、処理されたデータ(の一部)を第二のユニット902にリターンするのを第二のユニット902が第一のユニット901に要求することが可能である。第二のユニット902は、処理されたデータを確認し、これにより予め定義されたルックアップテーブルのエントリが変更されたか否かを発見する。
以下では、アルゴリズムの実現が、難読化されたルックアップテーブルを使用することで、どのように更に改竄に対する抵抗を高くして行なわれるかを示す。また、テーブル値によるコードの一体化が説明される。AES及びDESの例が与えられる。しかし、本方法は、多くの異なる種類のアルゴリズム、特に1以上のルックアップテーブルを使用して実現することができるアルゴリズムに適用することができる。
[難読化したルックアップテーブル]
ソフトウェアアプリケーションの制御及びデータパスにおけるランダム性と複雑度のベールを追加するアプローチは、ソフトウェアが改竄を受けるのを妨げないが、改竄を行なう者の目的を達成するためにどのような変更が行われる必要があるかを判定することが更に困難になるだけである。耐改竄性の背後にある一般的な原理は、以下のように概説することができる。プログラムPは、アクセス制御及び/又は許可X及び機能Yのコンポジットとして表現することができる。アタッカーは、アクセス制御又は許可が機能に影響を及ぼすことなしに除かれるように、プログラムを改竄するのを望む場合がある。改竄されたプログラムは、次いで、アクセス制御又は許可が全くなしに実行されるか、又はこれらの制御が無視されるように少なくとも実行される。本発明は、Yが処理機能を含むケースについて主に説明される。この機能は、暗号化、復号、圧縮、伸張、レンダリング、評価、認証を含む。本発明は、任意の種類の機能Yに適用される。
理想的に、改竄防止プログラムについて、どんなに改竄が小さかろうと、Xを改竄することにより即座にYの損失となる。言い換えれば、X及びYは分離することが不可能であり、又は少なくとも大きな困難によってのみ分離可能である。分離不可能なことを実現する1つの方法は、Xへの意図される変更によりYへの意図されない変更となり、これによって機能がYから除かれるように、XとYの間の関係を形成することである。Yの機能を回復するため、Yへの更なる変更が必要とされる。プログラムの機能及び制御エレメントは分離不可能にされているとき、アタックは非常に困難となる。係る分離不可能なことがプログラムのコードにわたり形成された場合、プログラムは、プログラムコードがベールで必然的に隠される必要なしに耐改竄性にされる。耐改竄性のソフトウェアは、目標指向の改竄を実行するために複雑にされるソフトウェアである。
AESは、128バイト又は16バイトのブロックサイズをもつブロック暗号である。プレインテキストは、符号化アルゴリズムの初期状態を形成する16バイトのブロックに分割され、符号化アルゴリズムの最後の状態は、暗号文である。AESを概念的に説明するため、状態のバイトは、4×4バイトのマトリクスとして編成される。AESは多数のラウンドから構成される。それぞれのラウンドは、状態マトリクスのバイト、行又は列について動作する類似の処理ステップから構成され、それぞれのラウンドは、これらの処理ステップにおいて異なるラウンドキーを使用する。
図1は、AESのベーシックラウンドの幾つかの主要な処理ステップを示す。処理ステップは、以下を含む。
AddRoundKey2;状態のそれぞれのバイトはラウンドキーのバイトでXORされる。 SubBytes4;ルックアップテーブルを使用したバイト対バイトの置換。
ShiftRows6;状態のそれぞれの行は固定されたバイト数で回転される。
MixColumns8;それぞれの列はGF(28)においてモジュロ乗算を使用して処理される。
ステップSubBytes4、ShiftRows6及びMixColumns8は、使用される特定のキーに独立である。キーは、ステップAddRoundKey2で使用される。ステップShiftRows6を除いて、処理ステップは、他の列の情報なしに4×4状態マトリクスのそれぞれの列で実行することができる。したがって、これらは、それぞれの列が4つの8ビット値から構成されるとき、32ビット演算としてみなすことができる。破線10は、必要とされるラウンド数が実行されるまでプロセスが繰り返されることを示す。
これらのステップのそれぞれ又はステップの組み合わせは、ルックアップテーブルにより表現されるか、ルックアップテーブルのネットワーク(Sボックス)により表現される。また、フルラウンドのAESをルックアップテーブルのネットワークで置き換えることも可能である。たとえば、AddRoundKeyステップは、ラウンドキーと単にXORすることで実現することができ、SubBytes、ShiftRows、MixColumnsステップは、テーブルルックアップを使用して実現される。しかし、これは、ホワイトボックスのアタックのコンテクストでアタッカーにとってキーがなお目に見えることを意味する。AddRoundKeyステップは、ルックアップテーブルに埋め込まれ、これにより、キーを発見するために明らかさを低くする。図示されるステップ2,4,6及び8の順序は、暗号化のために通常使用される。復号について、ステップは、逆の順序で実行される。しかし、図示されるようにステップ2,4,6及び8の順序を使用するように、復号プロセスを再記述することができる。
図2は、キーを抽出するのを更に困難にする方法を示す。X及びYを2つの関数とする。ダイアグラム12として例示される演算
Figure 2009543498
を考え、cは、たとえば4バイトの状態の列といった入力値である。しかし、このアプローチは、任意のタイプの入力値cに適用される。マッピングX及びYは、メモリに記憶することができるルックアップテーブルとして実現されるが、これらがメモリに記憶されるとき、値がアタッカーにより読取ることができる。図14は、入力符号化Fと出力符号化Hとを使用して、ルックアップテーブルのコンテンツがどのように難読化することができるかを示す。
外2
Figure 2009543498
に対応するルックアップテーブルは、X及びYの代わりに例示されるように記憶され、X及びYを抽出することが更に困難になる。ダイアグラム16は、更なる、2つのテーブルの中間の結果も符号化されるように、たとえばランダムな全単射の関数(bijective function)をどのように加えるべきかを示す。このケースでは、2つのテーブル
Figure 2009543498
がメモリに記憶される。これは、ダイアグラム18において再び示される。
Figure 2009543498
ここで
外3
Figure 2009543498
は関数のコンポジションを示し(すなわち2つの関数f(x)及びg(x)について定義により
Figure 2009543498
)、X及びYは、ルックアップテーブルによる実現に適した関数である。同様に、2を超える関数から構成されるネットワークが符号化される。X及びYを符号化する実際のテーブルは、単一のルックアップテーブルに
外4
Figure 2009543498
を組み込み、単一のルックアップテーブルに
外5
Figure 2009543498
を組む込むことで難読化される。F,G及び/又はHが未知のままである限り、アタッカーは、ルックアップテーブルからX及び/又はYに関する情報を抽出することができず、したがって、アタッカーは、X及び/又はYに基づいてキーを抽出することができない。DES及びRijndaelを含む他の暗号化アルゴリズムは(そのうちAESが特定のインスタンス化である)、先に類似したやり方で難読化されるルックアップテーブル(のカスケード又はネットワーク)として符号化される場合もある。本発明は、上述された例示的な暗号化アルゴリズムに限定されない。
Chow1は、個々のステップではなくコンポジションを表現するランダムな全単射によりそのテーブルを符号化することでキーを隠すことを意図する方法を開示する。秘密鍵の抽出を防止することは、ソフトウェアプロテクションの目的が他のコンピュータでバイパスされるキーイングマテリアルをアタッカーが抽出するのを防止されるか、又はインストールされたソフトウェアの大きなユーザベースにわたり安全対策を打破する「グローバルクラック“global crack”」を効果的に形成するキーイングマテリアルを公開するのを防止されるという利点を有する。これは、ソフトウェアのみのソリューションの制約及び敵対的なホストのリアリティを前提として、増加されたプロテクションの程度を提供する。Chow1のアプローチでは、(1)個々のステップではなくコンポジションのためのテーブルを使用し、(2)これらのテーブルをランダムな全単射でエンコードし、(3)暗号化の境界を暗号化アルゴリズム自身を超えて閉鎖したアプリケーション(containing application)にまで拡張し、アタッカー(リバースエンジニア)にそれらの目的を達成するために著しく大きなコードセグメントを理解させることで、キーが隠される。Chow1は、固定されたキーアプローチを説明している。キーは、キー入力が不要であるように、キーに関して部分的な評価による実現において埋め込まれる。部分的な評価は、キーを含む表現ができるだけ合理的に評価されることを意味し、結果は、完全な表現ではなくコードに配置される。アタッカーは、キーに特化した実現を抽出し、それをキーの代わりに使用するが、暗号は、典型的に、コンポーネントが設計され、敵対者が取り除くのが困難であることがわかる、処理された又は符号化された形式で暗号コンポーネントに入力を提供することができる大きな閉鎖したシステム(containing system)のコンポーネントである。符号化テーブルのステップを参照して、符号化は任意であるので、1つのステップの出力の符号化が継ぎの入力符号化に一致する場合にのみ結果に意味がある。たとえば、ステップXにステップYが続く場合(
外6
Figure 2009543498
の計算となる)、計算は
Figure 2009543498
として符号化される。このように、
外7
Figure 2009543498
は、入力がFで符号化される必要があり、出力がH-1で復号化される必要があるにもかかわらず、適切に計算される。このステップは、Y’及びX’に対応するテーブルとして個別に表され、F,G及びHはX及びYと同様に隠される。かかる曖昧なステップから離れて、Chow1は、基礎をなす動作を更に隠すため、線形(全単射)変換による拡散ステップを使用する。用語「混合の全単射“mixing bijection”」は係る線形の変換を記述するために使用される。Chow1の実現は、処理された形式で入力を受け、異なって処理された形式で出力を生成し、これにより、ホワイトボックスのアタックコンテクスト(WBAC: white-box attack context)の抵抗力のあるAESがその閉鎖したアプリケーションから分離するのを困難にする。
Chow2は、プログラムからの秘密鍵の抽出を防止する目的による、ホワイトボックスアタックコンテクストに抵抗するために設計されるDESの暗号化の実現を示す。難読化するルックアップテーブルのネットワークに関するこの文献で議論される技術は、AES及び他を含む他の暗号化アルゴリズムにも大部分について適用される。実行環境を制御するアタッカーがキーを明示的に抽出することなしにソフトウェア自身を(たとえば復号のため)明らかに使用することができる一方で、インストールされたインスタンスを使用するのをアタッカーに強制することは、デジタル著作権の管理(DRM)システムプロバイダにとって価値がある。一般に、Chow2におけるアプローチは、置換ボックスを全体的に構成する実現に向かって機能し、アフィン変換を実現するものではない。Chow2では、一般的なアプローチをサポートするために必要とされる多数の技術が開示されている。これらの技術の幾つかは、I/Oブロック符号化、結合機能符号化、バイパス符号化、スピリットパス符号化、及び出力スプリッティングである。
部分的な評価は、実現(implementation)時に(部分的に)知られている値に基づく表現が事前に評価されることを意味する。簡略化された例では、キーが“5”であって、オリジナルの実現が表現“2*key”を含むとき、 “2*5”を実現に組み込むよりはむしろ、事前に評価された表現“10”が実現に組み込まれる。このように、キー“5”はコードにおいて直接に存在しない。固定されたキーをもつDESのケースで、これは、(ランタイムでキーから計算される)標準的なSボックスを(コンパイル時間で又はコンパイル時間前にキーから計算される)キーに特化した事前に評価されたSボックスで置き換えることを含む。Chow2に係る混合の全単射は、それぞれの出力ビットが多数の入力ビットに依存するように設計された全単射のアフィン変換である。I/Oブロック符号化は、多数の入力及び出力ビットを扱う符号化方法である。このケースでは、符号化/復号化は、符号化の連結として計算することができ、この場合、それぞれの符号化は、入力/出力ビットのサブセットを処理する。結合された機能の符号化は、2以上の動作が並列に処理することができる場合に、単一の符号化機能が並列の動作の入力(それぞれ出力)の連結に適用されることを意味する。これは、多かれ少なかれI/Oブロック符号化の反対である。バイパス符号化は、符号化の変換が多数のエントロピーの余分なビットを難読化されるべき変換の入力及び/又は出力に加え、手順の最終的な出力に影響を及ぼさないように、余分なビットをバイパスするために難読化されるべき変換を設計しなおすことを意味する。スピリットパス符号化は、更なる出力ビットを提供して本質的な情報ビットを難読化するために、ある機能が変更されることを意味する。出力スピリッティングは、ある機能の出力が幾つかの部分的な機能を通して分散されることを意味し、この場合、全ての部分的な機能の出力は、その機能のオリジナルの出力を得るために明白でないやり方で結合される必要がある。
Chow2は、32ビット又は更には96ビットのワイドな入力をもつSボックスを構築するためにビルディングエンコードネットワークを提案する。アフィン変換を表す係るワイド入力のSボックスは、Sボックスのネットワークに分割され、それぞれ更に狭い入力及び出力を有し、Sボックスのそれぞれは、Sボックスにおける符号化機能を組み込むことで符号化される。符号化機能の逆は、Sボックスの出力を処理するSボックスに組み込まれる。
[ルックアップテーブル値によるコードの一体化]
本発明の態様では、デジタルデータの改竄に対する抵抗の分散を可能にする方法が提供される。データは、デジタルデータの受信機にとって利用可能な命令を含むコンピュータコードにより処理される必要がある。処理の目的は、データにより表現されるオーディオ/ビデオ信号のレンダリングである。処理は、暗号化、復号、圧縮、伸張又は他の処理を有する場合がある。本方法は、デジタルデータを処理する処理アルゴリズムの実現を有する複数の命令を構成することを含む。複数の命令は、たとえばディストリビュートされたコンテンツの成功した再生のためにユーザ端末で必要とされるプラグイン又はメディアプレーヤといった、コンピュータプログラムを形成する。処理アルゴリズムは、パラメータに基づく。復号のケースでは、パラメータは暗号化鍵を表す。ディストリビュートされたデータは、対応する暗号化鍵を使用して(部分的に)暗号化される場合がある。
プロセッサの命令の一部に等しいパラメータの一部が識別される。より詳細には、パラメータのビット表現の一部は、命令のビット表現の一部に等しい。パラメータの残りの一部は、プロセッサの命令とは異なる。識別されたパラメータは、処理アルゴリズムの実現に含まれるプロセッサ命令に等しい。しかし、識別されたパラメータは、システムの何処かに現れるプロセッサ命令のビット表現に等しい場合もある。たとえば、識別されたパラメータは、オペレーティングシステムのカーネルで現れる幾つかの特定のビットストリング、又はTCP/IP通信スタックのようなシステムの幾つかのドライバで現れるビットに等しい。
プロセッサ命令は、実行の間、パラメータの等しい部分がプロセッサ命令のビット表現の一部のメモリ位置を参照することで(たとえば復号プロセスにおける使用のために)読取られるように構成される。一致するプロセッサ命令を保持するメモリアドレスに必要とされるビット表現が既に存在するとき、パラメータの等しい部分は、メモリに個別に記憶されない。効果的に、同じメモリアドレスは、復号アルゴリズムへのパラメータの記憶位置、及び同時に実行されるべきプロセッサ命令の記憶位置といった2つの方法で使用される。典型的に、パラメータとしてメモリ位置を読取る命令は、異なるメモリ位置に記憶され、参照によりパラメータを保持するメモリ位置にアクセスする。この命令は、プログラムコードを形成する。この命令は、プログラムコードが実行される実行環境に準拠する。たとえば、これらの命令は、プロセッサ命令であるか又は仮想マシン命令(たとえばjava bytecode)のような擬似コード命令である。
本発明の別の態様では、比較的大きな等しい部分を含むようにパラメータが選択される。単一のメモリアドレスは、プロセッサ命令として及びパラメータ値として、2つの一見したところ関連しない方法で使用することができるデータを保持する。これは、アタッカーがプロセッサ命令を変更する場合、パラメータが無効になり、逆に、アタッカーがパラメータを変更する場合、プロセッサ命令が無効になるという効果を有する。目的に指示された改竄を実行することは、アタッカーにとって更に困難になる。
図4は、実現を構成するステップ(COMP INSTR)603、パラメータの一致する部分を識別するステップ(IDENT EQ PARS)613、及び実現をアレンジするステップ(ARR INSTR)615を示す。パラメータは、1以上のルックアップテーブルを含み、たとえばルックアップテーブルのネットワークを形成する。ルックアップテーブルの係るネットワークは、たとえば暗号化鍵から計算される(ステップ604(COMP LUT))。プロセッサ命令のビット表現のワードは、ネットワークにおけるルックアップテーブルの少なくとも1つに含まれるために選択される(ステップ606(SEL WORD))。ワードの包含は、ルックアップテーブルのエレメントに変換を適用することで実現される(ステップ608(TRANSF LUT))。この変換は、変換の作用とは逆の作用である相補的な変換を他のルックアップテーブルの少なくとも1つのエレメントに適用することで補償される(ステップ610(COMPENS TRANS))。通常、少なくとも2つの変換されたルックアップテーブルは、ルックアップテーブルのネットワークを介して接続される。ルックアップテーブルの変換されたネットワークは、ルックアップテーブルのオリジナルネットワークではなく、暗号化アルゴリズムのパラメータとして使用される。
実施の形態は、命令のビット表現の複数のワードを選択すること、「コードを含んでいる」ルックアップテーブルを形成するため、この命令のビット表現を含むルックアップテーブルを作成することを含む。コードを含んでいるルックアップテーブルは、データ処理プログラムへのパラメータを形成するルックアップテーブルのネットワークに含まれる。通常、コードを含むルックアップテーブルの作用は、ルックアップテーブルのネットワークに適切に選択されたルックアップテーブルを含むことで補償される。プログラムコードを形成する命令は、コードを含んでいるルックアップテーブルで現れる命令を保持するメモリアドレスがコードを含んでいるルックアップテーブルの値を読取るために使用されるようにアレンジされる。
[強制されたテーブルルックアップ]
実施の形態では、図3を参照して、第二のユニット902は、デジタルデータ914に暗号化されたコンテンツを含む暗号化手段を含む。挿入手段910は、処理手段906による復号のために暗号化されたデータストリームに計算された値を含める。処理手段906は、挿入された値を含む暗号化されたコンテンツを復号する復号手段を有する。復号手段は、上述された方法のうちの1つでルックアップテーブル916を使用する。好ましくは、復号アルゴリズムのホワイトボックスの実現が使用される。これは、Chow1及びChow2に類似したAES又はDES実現であるが、他の実現又は復号スキームが同様に使用可能である。
実施の形態では、処理手段は、予め決定された順序でデジタルデータを復号化するために構成される。先に処理されたデータに依存してデータは処理される。これを実現するための可能性のうちの1つは、暗号化方法である。これは、たとえば暗号をストリーミングすることに適用される。暗号文の代わりに(又は暗号文に加えて)平文による依存性が形成される暗号ブロックチェイン(CBC)モードを使用する復号スキームにも適用される。
挿入手段は、正のテスト結果が、データの重要なブロックの適切な処理のために必要とされるように、データの重要なブロックの前に予め定義されたルックアップテーブルのエントリをテストする値を配置するために構成される。たとえば、それぞれが異なる予め決定されたルックアップテーブルのエントリをテストする一連の値は、データストリームの開始で挿入される。このように、テストされたエントリの何れかへの変更は、完全なデータストリームを使用不可能にする。
メモリにおけるキー及びコードの一体化は、改竄に対する抵抗を増加するために行なわれる。一般に処理されるべきデータは、どのルックアップテーブルのエントリが処理において使用されるかを判定する。したがって、コードを改竄した後でさえ、改竄されたメモリ値がデータを処理するために必要とされないため、処理の比較的大きな部分が上手く実行されることが生じる。たとえば、1バイトが8ビットにおいてkビット(k>0)のルックアップテーブルに変更され、唯一の8ビット値がコードのブロックを処理するために必要とされ、256の8ビット値のそれぞれが等しい発生確率を有する場合、変更されたバイトが処理で使用される確率は1/256又は0.4%である。この確率を増加すること、すなわち処理が失敗する確率を増加すること、及び/又はコードの1以上のバイトの変更後にデータの大きな部分について処理が失敗することを保証することが望まれる。また、コードで一体化されてないが、他の特別の意味を有する予め定義されたルックアップテーブルエントリにアクセスすることが望まれることが理解されるであろう。また、所定の値が変更されていることが疑われる場合、その値をチェックすることが望まれる。
Xをホワイトボックスの実現により処理されるべき(たとえば暗号化又は復号されるべき)データブロックの(おそらく空の)ストリームであるとする。ホワイトボックスの実現において特定のルックアップテーブルのエントリ(すなわち特定のキーの部分)にアクセスするやり方で選択された多数のブロックB1,B2,...,BmをXに挿入することが可能である。また、ブロックB1,B2,...,BmによりXを先行することも可能である。
コードの1以上のバイトの変更後にデータの大きな部分について処理が失敗する確率を増加するアプローチが以下に示される。誤った復号が更なる復号を通して伝播するブロック暗号モードを選択することができる。相対的に、それぞれ暗号ブロックを他の暗号ブロックとは独立に復号することができる「エレクトロニッククックブック(ECB)」では、それぞれのブロックは、改善されたルックアップテーブルのエントリにアクセスする独立の確率(先の例では0.4%)を有する。たとえば、前に復号されたブロックの復号結果に依存してブロックの復号プロセスを行うことで、誤った復号化が行われ、次の復号に更に伝播する。復号結果が誤りであるデータの最初のブロックの後、全ての後続のブロックも誤って復号される。これにより、コードのテストされた部分が改竄されている場合に、データの非常に大きな部分を正しく処理することができない。
実施の形態では、(上述された理由のため)エラーを伝播する幾つかの種類のモードにおいてホワイトボックスの実現が使用される。たとえば、暗号化文の代わりに平文による依存性が形成される暗号ブロックチェイン(CBC)モードの変形が使用される。たとえば、「ノーマル」CBCモードでは、データブロックiは、それを暗号化されたデータブロックi−1とXORした後に暗号化される。「提案される」変形では、データブロックiは、それを暗号化されていない(平文)データブロックi−1とXORした後に暗号化される。「ノーマル」CBCモードは、データストリームを更にランダムにする。「提案される」変形例により、単一の復号エラーが全ての後続するデータブロックに伝播される。暗号化されるべきコンテンツをもつストリームSは、特定のルックアップテーブルのエントリ、特にコードを含むエントリにアクセスするのを目的とする多数のブロックにより先行される。一体化されたコードにおける1以上のビットが変更された場合、Sのブロックの何れもが正しく復号されない。また、前のブロックの平文と暗号化文の両者による依存性を形成する(たとえばXORする)ことで、「ノーマル」CBCモードを「提案される」CBCモードと結合することも可能である。このように、両方のモード(ランダム性とエラー伝搬性)の可能性のある利点が結合される。
データブロックは、特定のルックアップテーブルのエントリが復号プロセスの間(又は暗号化プロセスの間、規定通りに)にアクセスされるように計算される。ルックアップテーブルを使用してAES復号(又は暗号化)アルゴリズムの標準的な(ホワイトボックスではない)実現を考える。さらに、この実現について以下の問題を考える。ラウンドr及びこのラウンドに対する入力Irが与えられる。ラウンドrへの入力がIrであるように、復号アルゴリズムの最初のラウンドへの入力I1を発見する。この問題のソリューションにより、当業者は、特定のルックアップテーブルのエントリが復号アルゴリズムの予め定義されたホワイトボックスではない実現によりアクセスされるようにデータブロックを設計することができることは明らかである。fiを標準(ホワイトボックスではない)AESのラウンドiで計算された関数であるとし、すなわちfi(Ii)は、その入力がIiにより与えられた場合にラウンドiの出力である。ラウンドfiの逆関数fi -1を計算することは容易である。これは、fiの計算における全てのステップ(AddRoundKey, SubBytes, ShiftRows, MixColumns)を逆にすることが容易であるためである。結果として、Iiは、以下のように計算される。
Figure 2009543498
このアルゴリズムは、たとえばタイプIIのテーブルTにおける特定の行lにアクセスするためにホワイトボックスの復号アルゴリズムを実施するデータブロックを導出するために変更される。変更されたアルゴリズムは、行lがアクセスされるようにラウンドを含むテーブルTへの(符号化された)入力を導出することで開始する。符号化は、AESの(ホワイトボックスではない)実現のラウンドへの入力を得るため、この入力から除かれる。前のパラグラフで概説されたアルゴリズムは、ホワイトボックスの実現が行lにアクセスするデータブロックを導出するために使用される。一般に、符号化は、符号化された入力から、特定のルックアップテーブルの行lにアクセスさせるルックアップテーブルのネットワークにおける特定のルックアップテーブルに移動され、処理は、符号化なしに処理アルゴリズムのバージョンを使用して反転される場合がある。符号化のない処理ステップは、ホワイトボックスの実現の符号化されたルックアップテーブルよりも逆の処理を行なうことが容易である。符号化は、符号化の情報を有さないアタッカーによってではなく、符号化の情報を有する人物又はシステムによってのみ取り除くことができる。
なお、ネットワークにおける1つの特定のテーブルの1つの特定の行lにアクセスするデータブロックを導出する代わりに、ルックアップテーブルのネットワークにおける複数のそれぞれのルックアップテーブルのそれぞれにおける予め決定されたエントリにプログラムにアクセスさせるデータブロックを導出することができる。この理由は、ブロックの入力ビットが複数のテーブルを通して分散されるためであり、したがって、それぞれ予め決定されたルックアップテーブルのエントリにアクセスするため、それぞれのテーブルに分散される複数のビットを選択することができる。
また、ラウンドrにおける特定の行にアクセスするために定義されるデータブロックは他のラウンドにおける行にもアクセスする。これは、そのラウンドは、ルックアップテーブルのネットワークの一部であるためである。これらの更にアクセスされた行の幾つかもコードにより一体化される。結果として、コードで一体化された所定数のバイトがアルゴリズムによりアクセスされることを達成するため、ブロックが含まれる必要がない。
説明されたCBCモードに加えて、カウンタ(CTR)モードも使用される。係るモードでは、データではなく、カウンタ(たとえば擬似ランダム系列の値)が暗号化される。データは、暗号化されたカウンタのストリームとXORされる。このモードについて、カウンタストリームに(予め決定されたテーブルルックアップに対応する)所望の値を含めるため、カウンタ値を選択する自由度が使用される。たとえば、カウンタ値のセットは、データストリームの開始近くで生じるようにされ、これにより、一体化されたテーブルエントリの大きな部分がアクセスされる。カウンタストリームの暗号化が「提案される」CBCモードで再び実行された場合、一体化されたコードにおける変化は、データストリームの大きな部分の処理にとって致命的である。ここでのCTRモードを使用する利点は、選択されたカウンタ値の暗号化の結果が有効な平文を得るために暗号化されたデータとXORされるとき、余分の復号/暗号化が存在しないことである。
また、本方法は、2値画像の検証のために使用される。ルックアップテーブルにおける全てのエントリに迅速にアクセスすることで、ルックアップテーブルにおける値が正しいかが迅速に検証される。加えて、リアルデータを処理する必要がない。はじめに、全てのSボックスがアクセスされることを実施するデータブロックのセットが導出される。これは、記載されるアルゴリズムで行なうことができる。つぎに、このセットにおける全てのデータブロックについて、ルックアップテーブルが正しい回答を与えるかがテストされる。正しい回答を与える場合、二値画像は恐らく正しい。上述された暗号ブロックチェインモードを使用した場合、全ての前の動作が正しかった場合にのみ正しいため、最後の結果のみが検証される必要がある。
図5は、本発明の実施の形態を例示する。この図は、デジタルコンテンツのプロバイダと接続するため、インターネットへの接続のような通信ポート(COM)95を示す。また、コンテンツは、DVD又はCDのようなメディア96から取得される。PCのデジタルコンテンツは、メモリ(MEM)91を使用してプロセッサ(PROC)92により実行されるメディアプレーヤを使用して典型的にレンダリングされる。係るプレーヤは、特定のコンテンツフォーマットについて、通信ポート95及び/又は媒体96を介して得られるコンテンツに対応するフォーマットに特化した復号化を実行するためにそれぞれのプラグインを実行する。それらのコンテンツフォーマットは、AVI,DV,Motion JPEG,MPEG−1,MPEG−2,MPEG−4,WMV,Audio CD,MP3,WMA,WAV,AIFF/AIFC,AU等を含む。デジタル著作権の管理の目的について、コンテンツをデコードするだけでなく、コンテンツを復号するセキュアなプラグインが使用される。このプラグインは、メモリ91に記憶されるプロセッサ命令及び(難読化されたルックアップテーブルのような)パラメータを含む。プロセッサ命令及びパラメータは、上述されたようにオーバラップしており、そのケースでは、メモリ91における幾つかのメモリ位置は、プラグインの実行の間のプロセッサ命令とパラメータ値の両者を表す値を含む。コンテンツでは、幾つかの予め決定されたメモリ位置がそれらのデコード/復号の間にルックアップテーブルのエントリとして使用されるのを確かめるため、データブロックが挿入される。たとえば、プロセッサ命令及びパラメータ値の両者を表すメモリ位置がアドレス指定される場合がある。ユーザ入力(INP)94は、コンテンツがレンダリングされるべきことを示すためにユーザからのコマンドを取得するために提供され、ディスプレイ(DISP)93及び/又はスピーカは、デコードされたコンテンツ及び/又は復号されたコンテンツをレンダリングするために提供される。
本発明は、コンピュータプログラム、本発明を実施するために適合される、特にキャリア上のコンピュータプログラム又はキャリアにおけるコンピュータプログラムにも拡張することができる。プログラムは、ソースコード、オブジェクトコード、コードインターミディエートソース及び部分的にコンパイルされた形式のようなオブジェクトコードの形式、或いは、本発明に係る方法の実現における使用向けに適した他の形式である。キャリアは、プログラムを伝送可能なエンティティ又は装置である場合がある。たとえば、キャリアは、たとえばCD ROMといったROMのような記憶媒体、又は半導体メモリ、或いは、たとえばフロプティカルディスク又はハードディスクといった磁気記録媒体を含む。さらに、キャリアは、電気又は光ケーブルを介して、或いは無線又は他の手段により伝達される電気又は光信号のような伝送キャリアである。プログラムが係る信号で実施されるとき、キャリアは、係るケーブル或いは他の装置又は手段により構成される。代替的に、キャリアは、プログラムが埋め込まれる集積回路であり、集積回路は、関連する方法を実行するか、関連する方法のパフォーマンスにおける使用のため適合される。
上述された実施の形態は本発明を限定するのではなく例示するものであり、当業者であれば、特許請求の範囲から逸脱することなしに多くの代替的な実施の形態を設計することができる。請求項では、括弧間に配置される参照符号は請求項を限定するものとして解釈されるべきではない。動詞「有する」及びその派生語の使用は、請求項で述べた以外のエレメント又はステップの存在を排除するものではない。エレメントに先行する冠詞“a”又は“an”は、複数の係るエレメントの存在を排除するものではない。本発明は、幾つかの固有のエレメントを有するハードウェアにより、適切にプログラムされたコンピュータにより実現される。幾つかの手段を列挙する装置の請求項では、これらの手段の幾つかは、同一アイテムのハードウェアにより実施される。所定の手段が相互に異なる従属の請求項で引用される事実は、これらの手段の組み合わせを利用することができないことを示すものではない。

Claims (11)

  1. デジタルデータ処理ユニットの改竄に対する抵抗力を増加するシステムであって、
    デジタルデータを受信する入力、及び、受信されたデジタルデータにおける値に基づいた少なくとも1つのルックアップテーブルで発見された値に依存して前記受信された信号を処理する処理手段を有する第一のユニットと、
    前記デジタルデータを処理するとき、前記第一のユニットに前記ルックアップテーブルにおける少なくとも1つの予め決定された値を発見させる、前記デジタルデータに含むための少なくとも1つの値を計算する手段、前記デジタルデータに前記少なくとも1つの値を含む挿入手段、及び前記デジタルデータを前記第一のユニットに送出する出力手段を有する第二のユニットと、
    を有することを特徴とするシステム。
  2. 前記第二のユニットは、前記デジタルデータに暗号化されたコンテンツを含む暗号化手段を有し、
    前記挿入手段は、前記暗号化されたコンテンツに前記少なくとも1つの値を含むために構成され、
    前記処理手段は、前記発見する動作に基づいて前記暗号化されたコンテンツを復号するために構成される、
    請求項1記載のシステム。
  3. 前記処理手段の出力を参照値と比較する検証手段を更に有する、
    請求項1記載のシステム。
  4. 前記処理手段は、予め決定された順序で前記デジタルデータを処理するために構成され、
    前記発見された値は、その処理が発見する動作後に開始するデータの処理の結果に影響を及ぼす、
    請求項1記載のシステム。
  5. 前記挿入手段は、前記デジタルデータの予め決定されたブロックを処理する前に、前記処理手段に前記少なくとも1つの予め決定された値を前記ルックアップテーブルで発見させるため、前記デジタルデータに前記少なくとも1つのデータを配置するために構成される、
    請求項1記載のシステム。
  6. 前記第一のユニットは、前記第一のユニットにより実行されるソフトウェアのビット表現を記憶するメモリを有し、
    前記ソフトウェアのビット表現の少なくとも1部は、前記処理手段によるルックアップテーブルの少なくとも1部として使用され、
    前記ルックアップテーブルにおける少なくとも1つの予め決定された値は、前記ソフトウェアのビット表現の少なくとも1部で生じる、
    請求項1記載のシステム。
  7. 前記ソフトウェアのビット表現の少なくとも1部は、前記処理手段の動作の一部として実行される命令を含む、
    請求項6記載のシステム。
  8. デジタルデータ処理ユニットの改竄に対する抵抗力を増加するシステムであって、
    デジタルデータを処理するとき、前記デジタルデータ処理ユニットに、ルックアップテーブルで少なくとも1つの予め決定された値を発見させる、前記デジタルデータに含むための少なくとも1つの値を計算する手段と、
    前記デジタルデータに前記少なくとも1つの値を含む挿入手段と、
    前記デジタルデータを前記処理ユニットに送出する出力手段と、
    を有することを特徴とするシステム。
  9. デジタルデータ処理ユニットの改竄に対する抵抗力を増加するシステムであって、
    デジタルデータを受信する入力と、
    受信されたデジタルデータにおける値に基づいた少なくとも1つのルックアップテーブルで発見された値に依存して前記受信された信号を処理する処理手段とを有し、
    前記デジタルデータは、前記デジタルデータを処理するとき、前記処理手段に前記ルックアップテーブルにおける少なくとも1つの予め決定された値を発見させる少なくとも1つの値を含む、
    ことを特徴とするシステム。
  10. デジタルデータ処理ユニットの改竄の抵抗力を増加する方法であって、
    第一のユニットにおいて、デジタルデータを受信し、受信されたデジタルデータにおける値に基づいた少なくとも1つのルックアップテーブルで発見された値に依存して前記受信された信号を処理するステップと、
    第二のユニットにおいて、前記デジタルデータを復号するとき、前記第一のユニットに前記ルックアップテーブルにおける少なくとも1つの予め決定された値を発見させる、前記デジタルデータに含むための少なくとも1つの値を計算するステップと、
    前記デジタルデータに前記少なくとも1つの値を含むステップと、
    前記デジタルデータを前記第一のユニットに送出するステップと、
    を有することを特徴とする方法。
  11. プロセッサに、請求項10記載の方法を実行させるコンピュータプログラム。
JP2009519016A 2006-07-12 2007-06-27 デジタルデータ処理装置の耐改竄性 Expired - Fee Related JP5496663B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06117041.1 2006-07-12
EP06117041 2006-07-12
PCT/IB2007/052496 WO2008010119A2 (en) 2006-07-12 2007-06-27 Tamper resistance of a digital data processing unit

Publications (2)

Publication Number Publication Date
JP2009543498A true JP2009543498A (ja) 2009-12-03
JP5496663B2 JP5496663B2 (ja) 2014-05-21

Family

ID=38957157

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009519016A Expired - Fee Related JP5496663B2 (ja) 2006-07-12 2007-06-27 デジタルデータ処理装置の耐改竄性

Country Status (6)

Country Link
US (1) US8543835B2 (ja)
EP (1) EP2044724B1 (ja)
JP (1) JP5496663B2 (ja)
CN (1) CN101491001B (ja)
BR (1) BRPI0714242A2 (ja)
WO (1) WO2008010119A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010510539A (ja) * 2006-11-17 2010-04-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ホワイトボックス実施のための暗号化方法
JP2010539535A (ja) * 2007-09-13 2010-12-16 イルデト・ビー・ヴイ コンテンツの暗号処理
JP2011514091A (ja) * 2008-03-05 2011-04-28 イルデト・ビー・ヴイ 暗号システム
JP5861018B1 (ja) * 2012-12-21 2016-02-16 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. テーブルネットワークによって構成されたコンピューティングデバイス

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110212511A1 (en) * 2008-11-11 2011-09-01 Korea Institute Of Science And Technology System for detecting biomolecule with high sensitivity using micro-cantilever
JP4687775B2 (ja) * 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置
WO2010102960A1 (en) * 2009-03-10 2010-09-16 Irdeto B.V. White-box cryptographic system with input dependent encodings
CN102932625A (zh) * 2011-08-10 2013-02-13 上海康纬斯电子技术有限公司 一种便携式数字化音视频采集装置
US9189425B2 (en) * 2011-09-01 2015-11-17 Apple Inc. Protecting look up tables by mixing code and operations
US9008184B2 (en) 2012-01-20 2015-04-14 Blackberry Limited Multiple sign bit hiding within a transform unit
US8976960B2 (en) 2012-04-02 2015-03-10 Apple Inc. Methods and apparatus for correlation protected processing of cryptographic operations
WO2013175368A1 (en) * 2012-05-25 2013-11-28 Koninklijke Philips N.V. Method, system and device for protection against reverse engineering and/or tampering with programs
CN105453481B (zh) * 2012-12-27 2019-02-26 皇家飞利浦有限公司 包括表网络的计算设备
CN105765896B (zh) * 2013-12-05 2020-02-07 皇家飞利浦有限公司 用于表格网络的迭代应用的计算设备
US9654279B2 (en) * 2014-03-20 2017-05-16 Nxp B.V. Security module for secure function execution on untrusted platform
GB201405706D0 (en) * 2014-03-31 2014-05-14 Irdeto Bv Software protection
CN106464484B (zh) * 2014-03-31 2019-08-09 爱迪德技术有限公司 预定函数的混淆执行
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
DE102014016548A1 (de) * 2014-11-10 2016-05-12 Giesecke & Devrient Gmbh Verfahren zum Testen und zum Härten von Softwareapplikationen
US10505709B2 (en) * 2015-06-01 2019-12-10 Nxp B.V. White-box cryptography interleaved lookup tables
US10700849B2 (en) * 2015-07-30 2020-06-30 Nxp B.V. Balanced encoding of intermediate values within a white-box implementation
EP3220306B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis
CN108090349A (zh) * 2017-12-19 2018-05-29 武汉珈港科技有限公司 一种基于白盒指令和扩展图灵模型的应用程序白盒化保护系统及方法
US10831869B2 (en) * 2018-07-02 2020-11-10 International Business Machines Corporation Method for watermarking through format preserving encryption
US10783082B2 (en) * 2019-08-30 2020-09-22 Alibaba Group Holding Limited Deploying a smart contract
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07312593A (ja) * 1994-05-17 1995-11-28 Nec Corp オンライン伝文暗号化装置
JPH10154976A (ja) * 1996-11-22 1998-06-09 Toshiba Corp タンパーフリー装置
JP2002514333A (ja) * 1997-06-09 2002-05-14 インタートラスト テクノロジーズ コーポレイション ソフトウェアセキュリティを増強するための混乱化技術
JP2005331656A (ja) * 2004-05-19 2005-12-02 Toshiba Corp 暗号装置、復号装置、鍵生成装置、プログラム及び方法
JP2006079347A (ja) * 2004-09-09 2006-03-23 Kddi Corp 符号化方法およびそのプログラム
US20060140401A1 (en) * 2000-12-08 2006-06-29 Johnson Harold J System and method for protecting computer software from a white box attack
JP2009529819A (ja) * 2006-03-10 2009-08-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ処理システムの完全性

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2318198A1 (en) * 1998-01-14 1999-07-22 Irdeto Access B.V. Method for transferring data from a head-end to a number of receivers
EP1038370B1 (en) 1998-06-25 2006-09-06 Koninklijke Philips Electronics N.V. Synchronous stream cipher
US6983371B1 (en) * 1998-10-22 2006-01-03 International Business Machines Corporation Super-distribution of protected digital content
US20050160271A9 (en) * 1998-11-19 2005-07-21 Brundage Trent J. Identification document and related methods
US7162642B2 (en) * 1999-01-06 2007-01-09 Digital Video Express, L.P. Digital content distribution system and method
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
US7058675B1 (en) * 2000-09-28 2006-06-06 Altera Corporation Apparatus and method for implementing efficient arithmetic circuits in programmable logic devices
JP4252229B2 (ja) * 2001-03-28 2009-04-08 ユミルリンク株式会社 情報交換システム、情報通信端末、情報交換方法、プログラム、および、記録媒体
US7007025B1 (en) * 2001-06-08 2006-02-28 Xsides Corporation Method and system for maintaining secure data input and output
WO2003003169A2 (en) * 2001-06-28 2003-01-09 Cloakware Corporation Secure method and system for biometric verification
US7191342B1 (en) * 2002-06-04 2007-03-13 Xilinx, Inc. Methods and circuits for allowing encrypted and unencrypted configuration data to share configuration frames
US7681035B1 (en) * 2003-09-10 2010-03-16 Realnetworks, Inc. Digital rights management handler and related methods
US7881466B2 (en) 2004-10-28 2011-02-01 Irdeto B.V. Method and system for obfuscating a cryptographic function
EP1667396B1 (en) * 2004-12-02 2008-04-09 Protegrity Corporation Database system with second preprocessor and method for accessing a database
CN1786963A (zh) * 2005-07-21 2006-06-14 曾致中 一种数据库密文查询的方法
US7664937B2 (en) * 2007-03-01 2010-02-16 Microsoft Corporation Self-checking code for tamper-resistance based on code overlapping

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07312593A (ja) * 1994-05-17 1995-11-28 Nec Corp オンライン伝文暗号化装置
JPH10154976A (ja) * 1996-11-22 1998-06-09 Toshiba Corp タンパーフリー装置
JP2002514333A (ja) * 1997-06-09 2002-05-14 インタートラスト テクノロジーズ コーポレイション ソフトウェアセキュリティを増強するための混乱化技術
US20060140401A1 (en) * 2000-12-08 2006-06-29 Johnson Harold J System and method for protecting computer software from a white box attack
JP2005331656A (ja) * 2004-05-19 2005-12-02 Toshiba Corp 暗号装置、復号装置、鍵生成装置、プログラム及び方法
JP2006079347A (ja) * 2004-09-09 2006-03-23 Kddi Corp 符号化方法およびそのプログラム
JP2009529819A (ja) * 2006-03-10 2009-08-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ処理システムの完全性

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
HAMILTON E. LINK AND WILLIAM D. NEUMANN: ""Clarifying Obfuscation: Improving the Security of White-Box DES"", INTERNATIONAL CONFERENCE ON INFORMATION TECHNOLOGY: CODING AND COMPUTING (ITCC 2005), vol. 1, JPN6012050648, 4 April 2005 (2005-04-04), pages 679 - 684, XP010795928, ISSN: 0002737378 *
JULIEN BRINGER, HERVE CHABANNE, EMMANUELLE DOTTAX: ""Perturbing and Protecting a Traceable Block Cipher"", CRYPTOLOGY EPRINT ARCHIVE: REPORT 2006/064, vol. Version: 20060223:223232, JPN6012050649, 20 February 2006 (2006-02-20), pages 1 - 12, ISSN: 0002737379 *
OLIVIER BILLET, HENRI GILBERT, AND CHARAF ECH-CHATBI: ""Cryptanalysis of a White Box AES Implementation"", LNCS, SELECTED AREAS IN CRYPTOGRAPHY, vol. 3357, JPN6012050650, August 2004 (2004-08-01), pages 227 - 240, XP007919556, ISSN: 0002737380, DOI: 10.1007/978-3-540-30564-4_16 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010510539A (ja) * 2006-11-17 2010-04-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ホワイトボックス実施のための暗号化方法
JP2010539535A (ja) * 2007-09-13 2010-12-16 イルデト・ビー・ヴイ コンテンツの暗号処理
JP2011514091A (ja) * 2008-03-05 2011-04-28 イルデト・ビー・ヴイ 暗号システム
US9710623B2 (en) 2008-03-05 2017-07-18 Irdeto B.V. Cryptographic system
JP5861018B1 (ja) * 2012-12-21 2016-02-16 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. テーブルネットワークによって構成されたコンピューティングデバイス
JP2016507940A (ja) * 2012-12-21 2016-03-10 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. テーブルネットワークによって構成されたコンピューティングデバイス

Also Published As

Publication number Publication date
BRPI0714242A2 (pt) 2013-01-29
EP2044724A2 (en) 2009-04-08
US20090254759A1 (en) 2009-10-08
US8543835B2 (en) 2013-09-24
WO2008010119A2 (en) 2008-01-24
CN101491001A (zh) 2009-07-22
CN101491001B (zh) 2012-03-14
JP5496663B2 (ja) 2014-05-21
EP2044724B1 (en) 2015-04-29
WO2008010119A3 (en) 2008-06-19

Similar Documents

Publication Publication Date Title
JP5496663B2 (ja) デジタルデータ処理装置の耐改竄性
JP5249053B2 (ja) データ処理システムの完全性
US8306216B2 (en) Method and system for tracking or identifying copy of implementation of computational method, and computation system
US9654280B2 (en) White-box cryptographic system with input dependent encodings
CN101491000B (zh) 用于混淆密码函数的方法和系统
KR101580879B1 (ko) 암호 키 데이터를 갱신하는 시스템 및 방법, 서버 시스템, 암호 키 갱신들을 제공하는 방법 및 컴퓨터 판독가능 기록매체
US9838198B2 (en) Splitting S-boxes in a white-box implementation to resist attacks
EP2092684A2 (en) Cryptographic method for a white-box implementation
US9819486B2 (en) S-box in cryptographic implementation
CN107273724B (zh) 为白盒实施方案的输入和输出加水印
US9025765B2 (en) Data security
US20160267258A1 (en) Implementing padding in a white-box implementation
US20210143978A1 (en) Method to secure a software code performing accesses to look-up tables

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20100405

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121002

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130930

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131007

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140305

R150 Certificate of patent or registration of utility model

Ref document number: 5496663

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees