JP5113169B2 - 暗号関数を難読化する方法およびシステム - Google Patents

暗号関数を難読化する方法およびシステム Download PDF

Info

Publication number
JP5113169B2
JP5113169B2 JP2009519028A JP2009519028A JP5113169B2 JP 5113169 B2 JP5113169 B2 JP 5113169B2 JP 2009519028 A JP2009519028 A JP 2009519028A JP 2009519028 A JP2009519028 A JP 2009519028A JP 5113169 B2 JP5113169 B2 JP 5113169B2
Authority
JP
Japan
Prior art keywords
parameters
execution environment
digital
computer program
content
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.)
Expired - Fee Related
Application number
JP2009519028A
Other languages
English (en)
Other versions
JP2009543244A (ja
Inventor
ペー アー イェー ミシールス,ウィルヘルミュス
エム ハー エム アー ホリッセン,パウリュス
Original Assignee
イルデト・コーポレート・ビー・ヴイ
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 イルデト・コーポレート・ビー・ヴイ filed Critical イルデト・コーポレート・ビー・ヴイ
Publication of JP2009543244A publication Critical patent/JP2009543244A/ja
Application granted granted Critical
Publication of JP5113169B2 publication Critical patent/JP5113169B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • 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/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Remote Monitoring And Control Of Power-Distribution Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

実行環境の正当性の検証
本発明は、コンピュータ・プログラム・モジュールを実行するための実行環境の少なくとも一部の正当性(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」と称される非特許文献1および以下で「Chow2」と称される非特許文献2は、鍵を隠蔽する意図をもつ方法を開示しているが、それは個々のステップではなく合成(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)」、『暗号学における選ばれた諸分野:第9回年次国際ワークショップ、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から知られているようなリージョン・コードが工作されていないかどうかを検証できる。
本発明のある側面によれば、本方法は、価値のあるコンテンツを処理するコンピュータ・プログラム・モジュールと組み合わせて使われる場合に特に有用である。そのような価値のあるコンテンツはたとえば、金融データ(たとえば電子バンキング)またはデジタル・コンテンツ(たとえばオーディオおよび/またはビデオ)であってもよい。価値のあるコンテンツは典型的には、ハッカーが簡単に読むことができる/使用できる「平文」フォーマットでは配送されない。典型的には、少なくとも暗号動作(たとえば、暗号化、認証)、エンコード動作(たとえば圧縮)および/またはスクランブル動作が入力パラメータの少なくとも一部に対して実行されている。この目的のため、前記複数のデジタル・パラメータは、次のうちの少なくとも一つのものの表現を含む:
・暗号鍵および/または暗号アルゴリズムといった暗号学的データ;
・符号化テーブルおよび/または符号化アルゴリズムといったデジタル・コンテンツ・エンコード/デコード・データ;
・スクランブル・テーブルおよび/またはスクランブル・アルゴリズムといったデジタル・コンテンツ・スクランブル/スクランブル解除データ。
ある実施形態では、前記デジタル入力データは、コンテンツ固有鍵の制御のもとで暗号化された、エンコードされたおよび/またはスクランブルされたデジタル・コンテンツであり;本方法はそれぞれ解読、デコードおよび/またはスクランブル解除を制御するために前記コンテンツ固有鍵の表現を受信し、少なくとも前記複数の所定のデジタル・パラメータのうちの一つの一部を、前記コンテンツ固有鍵の受信された表現から導出することを含む。よって、この実施形態では、コンピュータ・プログラム・モジュールのパラメータは、コンテンツ固有鍵ならびに実行環境に依存する。実行環境は典型的には、コンテンツ鍵ほど頻繁に変化しない。上記のように、パラメータはコンピュータ・プログラム・モジュールの命令にも依存しうる。このようにして、相変わらず異なるコンテンツ固有鍵を使用する柔軟性を維持しつつ、かつコンテンツ鍵が変化するたびにコンピュータ・プログラム・モジュールおよび/または実行環境を更新する必要なしに、高レベルのセキュリティが達成できる。
ある実施形態では、前記デジタル・パラメータの導出される部分は、難読化されたルックアップ・テーブルのネットワークを含む。ここで、少なくとも一つのテーブルが、実行環境の前記少なくとも一部に依存して難読化されており、前記アルゴリズムは、実行環境の前記少なくとも一部から少なくとも一つの補償要素を導出し、該少なくとも一つの補償要素を前記難読化されたルックアップ・テーブルの別の一つに挿入し、それによりルックアップ・テーブルの前記ネットワークを難読化したものがルックアップ・テーブルの前記ネットワークと機能的に等価になるようにするよう構成される。このようにして、難読化の選択における自由度が実行環境が正しいことを検証するために使われる、コンテンツ固有解読のホワイトボックス実装が達成できる。実行環境は少なくとも部分的には難読化されたテーブルにおいて表現される。実行環境のその部分が存在する状況でのみ、実行の間に、テーブルのもとのネットワークの機能性が達成できる。各コンテンツ項目について、コンテンツ固有鍵(および任意的にコンテンツ固有解読アルゴリズム)を作ることができる。各コンテンツ項目についてこれが配送されるだけでよい。実行環境を検査でき、望まれるなら、コンピュータ・プログラム・モジュールも検査できる。実行環境およびコンピュータ・プログラム・モジュールは一度配送されるだけでよい。それでいて、難読化を通じて結び合わされることによって、実行環境およびコンピュータ・プログラム・モジュールは検証できる。
ある好ましい実施形態では、前記パラメータは、互いの間に何らかの冗長性をもつ定数値を含む。すなわち、あるパラメータの変化を、別のパラメータに適切な変化を加えることによって補償することが可能である。たとえば、実行環境のある実行可能命令がきわめて重要であり、検証される必要がある場合、これらの命令は、前記パラメータの中に表現されることができる(たとえば単に統合される)。その際、他のパラメータは、これらの所与のパラメータについて補償するように選ばれ、それにより、もとのパラメータ(変化の前)と変化されたパラメータのどちらが使用されるかに関わりなく、当該実装は等価な機能性を提供するようになる。
本発明のこれらの側面およびその他の側面は、以下で、図面を参照して明快にされるであろう。
本発明が使用されうるシステムのブロック図である。 本システムの構造の詳細を示す図である。 ルックアップ・テーブルの難読化されたネットワークの例を示す図である。
図1は、本発明が使用されうる装置110のブロック図を示している。装置110は、より大きなシステム100の一部であってもよい。装置110は、ソフトウェアの制御のもとで動作される。その機能性の一部は、一つまたは複数のプログラム・モジュールに含まれている。この目的のため、本装置は、プロセッサ120を含む。本装置は、それ自体としては、パーソナル・コンピュータ、専用メディア再生器(たとえばDVD、ブルーレイ・ディスク・プレーヤー、HD-DVDプレーヤー)、ゲーム機(たとえばXボックス、プレイステーション(登録商標))といったいかなる好適な装置であってもよい。本装置はまた、PDAまたはスマートフォンのようなポータブル装置であってもよい。プロセッサ120は、デジタル信号プロセッサを含め、PC型のプロセッサまたは組み込みプロセッサといったいかなる好適なプロセッサであってもよい。本装置は、RAMのような作業メモリ130およびハードディスク、光記憶装置もしくはフラッシュメモリのような不揮発性記憶装置140を含んでいてもよい。本装置は、コンピュータ・プログラム・モジュール150を含む。プロセッサ120にロードされるとき、コンピュータ・プログラム・モジュール150は、複数の所定のデジタル・パラメータ154に依存してデジタル入力データ152の処理を引き起こすよう動作する。その処理の出力は、デジタル出力データ156である。そのような処理を実行できるために、コンピュータ・プログラム・モジュール150は実行環境158内にロードされる。そのような環境158は、オペレーティング・システム・カーネル、ライブラリ(たとえばMP3またはMPEG4デコーダのようなメディア・デコーダ、インターネット・プロトコルなど)を含んでいてもよい。実行環境158そのもの(または少なくとも活動的な部分)もプロセッサ120によって実行される。たとえば、モジュール150がDRMモジュールである場合、モジュール150はメディア再生器のほか、デジタル権利を管理し、解読/スクランブル解除および/またはデコードを制御するためのDRM固有のプラグインを含んでいてもよい。そのようなメディア再生器は、特定のコンテンツ・フォーマットについて、デジタル・コンテンツに対応するフォーマット固有のデコードを実行するための個別的なプラグインを実行することができてもよい。これらのコンテンツ・フォーマットは、AVI、DV、モーションJPEG、MPEG-1、MPEG-2、MPEG-4、WMV、オーディオCD、MP3、WMA、WAV、AIFF/AIFC、AUなどを含みうる。デジタル権利管理の目的のためには、コンテンツをデコードするだけでなく、そのコンテンツを解読および/またはスクランブル解除もする安全な(secure)プラグインが使用されうる。そのような機能性の一部が再使用され、その目的のために実行環境158に統合されるかどうかは当業者の選択である。たとえば、モジュール150は実行環境からメディア再生器を使用してもよく、たとえば解読またはデコードといった特定の動作を実行するためにそのようなメディア再生器内でプラグインとして動作してもよい。実行環境158がジャバのような仮想マシンを提供し、モジュール150が仮想マシンによって解釈されるべきコードであってもよいことも理解されるであろう。図1において、プログラム・モジュール150、そのパラメータ154および実行環境158は記憶装置140に記憶されていることが示されている。プログラム・モジュール150および/またはそのパラメータ154は別のところに記憶されてもよい(たとえばリムーバブルな光記憶160に記憶されてもよい)し、あるいは装置110の外部からオンデマンドで通信インターフェース170を通じて取得されてもよい。たとえば、インターフェース170は、インターネット172へのアクセスを与えてもよい。たとえば、オーディオおよび/またはビデオのようなデジタル・コンテンツがインターネット中のサーバー174からダウンロードされてもよい(入力データ152となる)。コンテンツが悪意ある者が直接使用できる「平文」形式で利用可能とならないよう、コンテンツは暗号化、スクランブル、エンコード(たとえば圧縮)といったいかなる好適な技法を通じて保護されてもよい。デジタル・コンテンツはまた、他のデジタル・データ、特に金融取引(インターネット・バンキング)といった保護するに値するデータであってもよい。ここで、入力はインターネットのような通信ネットワークを通じて受信され、安全に処理され、通信ネットワークを通じて出力される。そのような場合、出力は、インターフェース170のような通信インターフェースを通じて装置110の外部に、たとえばサーバー174のような銀行サーバーに供給されてもよい。上記のように、コンピュータ・プログラム・モジュールは装置110の外部から取得されてもよい。ある実施形態では、コンピュータ・プログラム・モジュールの少なくとも一部は、コンテンツを処理するために個別的に設計される。たとえば、コンテンツは、好ましくは一意的な鍵またはコンテンツ固有鍵を使って暗号化されていてもよい(たとえば各映画が映画に固有な鍵を用いて暗号化される)。その際、前記コンピュータ・プログラム・モジュールは、このコンテンツを解読できるよう設計されていてもよい。同様に、たとえば、金融取引については、その取引に固有のコンピュータ・プログラム・モジュールが、銀行の責任の下で提供されてもよい。次いでモジュールは金融データを固有の(好ましくは一意的な)仕方で処理でき、出力の一部として自らの識別情報(identity)をも提供してもよい。さまざまな好適な透かし入れ技法が存在しており、そのような識別情報を前記出力とマージするために使用されうる。すると銀行は、その識別情報をもつモジュールが使用されたことを検証できる。実行の間、プログラム・モジュール150、実行環境158の活動的な部分およびパラメータ154は作業メモリ130にロードされうる。装置110は、レンダリングされるべきコンテンツを指示するなどといったユーザーからのコマンドを取得するために、リモコン、キーボード、マウス、音声入力用マイクロホンなどといったユーザー入力手段(図示せず)も含んでいてもよい。装置110は、ユーザーに情報を提供するためおよび/またはレンダリングされたコンテンツを表現するための、ディスプレイ93および/またはスピーカーのようなユーザー出力手段(図示せず)をも含んでいてもよい。
本発明によれば、少なくとも前記複数の所定のデジタル・パラメータ154の一つの一部を、実行環境158の前記少なくとも一部から導出するために、所定のアルゴリズムが使用される。のちにより詳細に述べるように、パラメータは追加的または代替的に、プログラム・モジュール150自身など、他の部分から導出されてもよい。セキュリティを高めるために、前記パラメータのビットのうちのより多数を前記実行環境から導出することが望まれうる。前記アルゴリズムの複雑さ(complexity)が、ある所望されるレベルのセキュリティを得るためのビット数を決定することも理解されるであろう。たとえば、前記実行環境の主要(main)部分に対して決定される暗号学的に強力なハッシュに基づいている場合、前記パラメータの1024ビットを使うことがすでに非常に強力なセキュリティを与えうる。よって、使用されるのは、あるパラメータの一部のみ、いくつかのパラメータの一部(たとえば、いくつかのパラメータの最も重要なビット(the most significant bits))のみ、一つのパラメータ全体またはいくつかのパラメータ全体またはこれらの組み合わせでよい。同様に、前記実行環境の小さな部分だけ(たとえば一つまたは若干数のきわめて重要な命令または定数)が検査されてもよいし、あるいはかなりの部分(たとえば重要なライブラリ)が検査されてもよい。当業者は、実行環境のどの部分が検査される必要があるかを決定できる(たとえば、関連データを漏洩させる可能性が最も高い部分)。
図2は、上記の原理をさらに例解している。複数の図面において同じ参照符号が使われている場合、それらの参照符号は、可能性としてはさらなる詳細が追加された、同じ項目を指す。本発明によれば、所定のアルゴリズム200が、少なくとも前記複数の所定のデジタル・パラメータ154の一つの一部を、前記実行環境158の前記少なくとも一部から導出するために使用される。図2では、前記パラメータの一部210が前記実行環境158から導出される。のちにより詳細に述べるように、本発明の諸実施形態において、前記パラメータの一部212が前記プログラム・モジュール150自身から導出され、一部214がコンテンツ固有解読鍵220のような別個に供給されるパラメータから導出されてもよい。それ自身としては、前記パラメータはいかなる型のパラメータでもよい。たとえば、オーディオ/発話/ビデオ信号の信号処理のためには、前記パラメータはフィルタ設定であってもよい。暗号的な動作(たとえば解読または認証)またはスクランブル解除については、前記パラメータは鍵または鍵のような情報を表現してもよい。デコードのためには、前記パラメータはデコード・テーブルを表現してもよい。典型的には、前記パラメータは、モジュール150または実行環境158によって使用される定数である。
暗号アルゴリズムまたは同様のアルゴリズムを、ソフトウェアによって実行されるべき一つまたは複数のマッピング・テーブル(典型的にはマッピング・テーブルのネットワーク)としてどのように表現するかは既知であることを記しておく。たとえば、Chow1およびChow2はそのようなアプローチをそれぞれAESおよびDESについて記載している。これらのテーブルは鍵のような情報ならびにアルゴリズムの一部を表現する。そのようなテーブルを使うことの利点は、時間がかかるアルゴリズム・ステップが今やずっと高速なマッピング動作で置き換えられる(テーブルを記憶するためにより多くのメモリを使うことを代償として)ということである。そのようなアプローチの詳細な記述は、同時係属中の特許出願第061166930号(代理人整理番号PH005600)においても与えられている。アルゴリズムのこれらのいわゆるホワイトボックス・ソフトウェア実装では、ハッカーはそのようなテーブルへのアクセスを、たとえばメモリ130にロードされるときに取得しうることが想定される。テーブルが記憶装置140内で暗号化された形で記憶されていたとしても、ある時点で、モジュール150は実際に解読されたテーブルを使用しなければならなくなる。ホワイトボックス・アプローチでは、原則として、悪意ある者がソフトウェア・モジュール全体をコピーでき、これは他の装置でも機能しうる。これをする気をなくさせるために、いくつかのアプローチが使用されうる。たとえば、テーブルは、コピーするのがやりにくくなるほど大きくてもよい。もう一つのアプローチは、テーブルが、もとのユーザーを追跡できる情報を表すようにすることである。そうすればどんな不正コピーももとのユーザーまでたどることができる。Chow1およびChow2は、もとのテーブルが平文の形で利用可能でないことを保証するいくつかのアプローチを記載している。その代わり、これらのもとのテーブルは難読化される。好ましくは、ルックアップ・テーブルのネットワークが、前記テーブルの少なくともいくつかの入力および出力にエンコードを適用することによって難読化される。これらのエンコードは、ルックアップ・テーブルのコンテンツに影響をもつ。すなわち、エンコードを変えれば、テーブルの内容も予測可能な仕方で変化する。しかしながら、攻撃者にとっては、比較的複雑な仕方で入力および出力がエンコードされたマッピングを示す最終的なルックアップ・テーブルしか知らないので、エンコードをほぐすのは難しいことがありうる。ルックアップ・テーブルの要素に適用される変換は、エンコードを適切に変更することによって実現できる。出力エンコードを変えることによって、特定の値(particular values)が前記テーブル中に組み込まれうる。入力エンコードを変えることによって、たとえば前記テーブル中に値が現れる順序が変更されうる。以下、入力エンコードは、先行するルックアップ・テーブルの出力エンコードによって引き起こされるデータのエンコードをデコードしうるので、入力デコードとも称される。
ルックアップ・テーブルは、入力および出力のエンコードの両方を変えることによって最大限の自由度をもって操作されることができる。変えるときに少なくとも三つのルックアップ・テーブルを考えることで、少なくとも一つのテーブルの入力および出力のエンコードを変えることが許容される。そのような変更は、少なくとも二つの他のテーブルのエンコードを変えることによって補償されうる。図3は、鍵を抽出することを一層難しくする一つの方法を示している。XおよびYを二つの関数とする。図の310として示される演算Y○X=Y(X(c)) (Y*X(c)=Y(X(c))なので、これはY*X(c)と示してもよい)を考える。ここで、cは入力値で、たとえば4バイトの状態列(state column)であるが、本アプローチはいかなる型の入力値cにも適用される。マッピングXおよびYはルックアップ・テーブルとして実装でき、メモリに記憶できるが、メモリに記憶される場合には攻撃者が値を読むことができる。図の320は、ルックアップ・テーブルの内容が、入力エンコード(input encoding)Fおよび出力エンコード(output encoding)Hを使うことによってどのようにして難読化できるかを示している。X○F-1およびH○Yに対応するルックアップ・テーブルがXおよびYの代わりに図示されるように記憶され、XおよびYを抽出するのをより難しくする。図の330は、どのようにして追加的な、たとえばランダムな全単射関数Gを加えて二つのテーブルの中間結果もエンコードされるかを示している。この場合、二つのテーブルがメモリに記憶される:X′=G○X○F-1およびY′=H○Y○G-1。これは今一度、図の340に示される:
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の基礎である鍵を抽出できない。上記と同様の仕方で難読化されうるルックアップ・テーブル(のカスケードまたはネットワーク)として、他のアルゴリズムが実装されてもよい。本発明は、言及される例示的な暗号アルゴリズムに限定されない。
そのようなテーブルを使うことの利点は、モジュール150によって実行される関数のかなりの部分が実際にはデータとして、この場合ではパラメータとして表現されるということである。よって、実行環境158の十全な検査を可能にするために十分な数のパラメータが存在しうる。より少ないパラメータが使われる場合にも本アプローチが機能できることは理解されるであろう。よって、そのようなマッピング・テーブルを使うことは必須ではなく、使われれば利点となるというものである。
通常、プログラム・モジュール150は、特定の所定のパラメータ値を使うよう設計されているであろう。本発明によれば、それらのパラメータは少なくとも部分的には実行環境158から導出される。あらかじめ備えがなければ、前記モジュールはそのような導出されたパラメータを使って正しく動作しないことがありうる。前記モジュールは、それでも所望される結果を生成するよう簡単に設計できる。たとえば、前記モジュールがパラメータ(たとえば定数)z1を使うよう設計されており、アルゴリズム200が実行環境158の正しいバージョンに基づいて値z2を生成する場合、モジュール150は、パラメータz3 XOR z2を使うよう設計されうる(ここで、XORはビットごとの排他的論理和である)。ここで、z3はパラメータ154中の定数としてロードされ、z1 XOR z2として事前計算されたものである。モジュールはz3 XOR z2を計算し、実行環境が工作されていなければ、アルゴリズム200はz2のもとの値を生成することになる。z3はz1 XOR z2として事前計算されているので、モジュールはz3 XOR z2=(z3 XOR z2)XOR z2=z1を計算する。このようにして、一方ではモジュール150は実行の間に事実上もとのパラメータ(たとえばz1)を使用し、他方ではパラメータ(たとえばz2)として表されながら他の部分が検証できるよう、一つの形の補償が達成される。
特に、難読化されたテーブルのネットワークのより進んだ上記技法が使われる場合、相変わらず正しいパラメータのセットを使いながら、たとえば実行環境158から導出されたパラメータを検査する必要を補償することにおいて、より多くの自由度が達成される。たとえば、ある実施形態では、モジュール150および/または実行環境158の一部は、マッピング・テーブル、特にルックアップ・テーブルのネットワークを使って部分的に実装されてもよい。
ある実施形態では、ルックアップ・テーブルは、出力および/または入力のエンコードを使って難読化されうる。たとえば、ルックアップ・テーブルのネットワークにおける第一のルックアップ・テーブル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がモジュール150のもとの(開示されていない)テーブルを表すとする。アルゴリズム200による実行環境158の処理が値wを与えるとする。すると、難読化された第一および第二のテーブルf(t1(x))およびt2(f-1(x))が決定できる。そのようなテーブルをその全体においてパラメータ154として供給する代わりに、第一のテーブルにおいて、語wが取り残されることができる。アルゴリズム200は実際の実行環境158に基づいて語wを生成し、それを第一のルックアップ・テーブル中の適切な位置に挿入しなければならない。正しい語wがテーブル中の正しい位置に挿入される場合にのみ、難読化されたテーブルの組み合わせはもとのテーブルt1およびt2の組み合わせと同じ出力を生成する。この例において、モジュール150のテーブル(より一般には、パラメータ)は、実行環境の知識を使って難読化される。それにより、実行環境が検証される。実行環境が正しければ、難読化されたモジュールは正しく機能する。上に挙げた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を用いて補償されない。その場合、アルゴリズム200はテーブルCの欠けている補償要素を、実際の実行環境に基づいて構築し、それを関わっているテーブルに対してXORすることができ、それにより実行の間に補償が達成される。
WO2005/060147では、置換(permutation)piが難読化のために使われる。ここでもまた、piは実行環境から導出されうる。p2iおよびp2i+1を用いて難読化されたテーブルは、難読化されたテーブルの全ネットワークにおける補償効果が達成されないという意味で、やはり「半分」しか難読化されなくてもよい。(p2iまたはp2i+1の少なくとも一つの要素)が使用されない。その場合、この欠けている補償要素を実際の実行環境に基づいて生成するために前記アルゴリズムが使用される。
原理的には、実行環境のどの部分が検証されてもよいことは理解されるであろう。たとえば、一つまたは複数のコンピュータ命令またはその一部が、パラメータ(たとえば上述した語w)として直接使用されることによって検証されうる。同じことは、実行環境中のデータ(たとえばDVDプレーヤーで使われているリージョン・コードのような定数)についても当てはまる。アルゴリズム200は、命令/データを文字通りのコピーとして使用してもよいが、表現を計算してもよい。ある実施形態では、アルゴリズムは実行環境(の一部)のハッシュを計算し、そのハッシュをパラメータのための基礎として使う。たとえば、ハッシュが前記の語wをなしてもよい。いかなる好適なハッシュが使用されてもよい。
本発明に基づくある実施形態では、コンピュータ・プログラム・モジュールは、前記複数のパラメータが所定の基準を満たす場合にのみ実行される。パラメータ154に対するハッシュを計算し、これが正しいパラメータのセットに基づいてかつて事前計算された所望の値を与えるかどうかを検査するといった、単純な試験が実行されてもよい。試験がパラメータ・セットが正しくないことを示す場合、ユーザーは警告されてもよい。また、部分210、212および214のようなパラメータの別個の諸部分が別個に試験されてもよい。このようにして、どの部分がもはや正しくないかについて詳細な情報をユーザーに与えることができる。この事前試験は、主として、モジュール150の出力がおそらくは正しくないであろうというユーザーへの警告として使用される。よって、モジュールはそれでも実行されてもよい。それ自身としては、悪意のある者が試験を除去したとしても問題ではない。真の検証はモジュール150の正しい出力156として得られるからである。ハッカーが試験を見出し、除去するのをより難しくするために、標準的な難読化技法が使用されてもよい。
ある実施形態では、パラメータ・セットを明示的に検証する代わりに、またはそれに加えて、コンピュータ・プログラム・モジュール150の少なくとも一部の試行ランが、前記複数のパラメータ154を使って所定のデジタル入力データ152に対して実行され、試行ランの出力156が所定の基準を満たすかどうかが検証される。基準は単に、試行ランが、もとのアルゴリズム200および試験の間に後に使われるのと同じ所定のデジタル入力データを用いてもとの実行環境158中で実行されたもとのモジュール150を使って達成された出力を与えるということであってもよい。ここでもまた、試験そのものが通常の技法を使って難読化されてもよい。ある実施形態では、所定のデジタル入力データはサーバー174のようなサーバーから、チャレンジとして受信される。ランの出力はサーバーに与えられ、サーバーが検証を実行できる。たとえば、銀行はこのようにして、システムがいまだ安全であるかどうかを、たとえばさらなるデータおよび/またはソフトウェアを提供することによって続ける前に、まず検査しうる。その場合、検証は装置110内で行われる必要はない(だが追加的に、行われてもよい)。
ある実施形態では、所定のアルゴリズム200は、実行環境158の表現を前記少なくとも一つのパラメータ154に変換するためのコンピュータ実行可能命令を使って実装される。このようにして、アルゴリズム200は、実行環境158がパラメータ154においてどのように表現されるかを難読化する複雑な動作を実装できる。たとえば、アルゴリズム200は、スクランブル、暗号化、圧縮および/またはハッシュ動作を含んでいてもよい。アルゴリズムそのものは、Chow1および/またはChow2において開示されるホワイトボックス技法のようないかなる好適な技法を使って難読化されてもよい。ある実施形態では、アルゴリズムはモジュール150との組み合わせで供給される。よって、アルゴリズムはモジュール150の一部であってもよい。たとえば、アルゴリズムは、モジュール150のパラメータの少なくともいくつかを生成する、モジュール150の初期化ルーチンの一部をなしてもよい。アルゴリズム200が非常に単純でもよいことは理解されるであろう。たとえば、アルゴリズムは、モジュール150のパラメータとして使用される(たとえばコピーされる)べき実行モジュール158内のデータまたは命令をポイントするポインタの集合としてモジュール150中で与えられることができる。絶対値または相対値といった、ポインタのいかなる好適な形が使用されてもよい。そのような選択は当業者の能力の範囲内である。こうして、ある実施形態では、所定のアルゴリズム200は、実行環境の少なくとも一つのデータ要素が、前記複数のパラメータの一つもしくは複数または一部として使用されるようにする。アルゴリズム200がソフトウェアではなくハードウェアで実装されてもよいことは理解されるであろう。
本発明のある側面では、実行モジュール158および/またはモジュール150のコンピュータ実行可能命令は、パラメータ154と統合される。これは、メモリ130内のあるビット位置が、プロセッサ120によって実行される(実行環境158またはモジュール150の)命令としてのほかに、モジュール150のためのパラメータとしてもはたらくということを意味する。
ある実施形態では、パラメータ210と実行環境158との統合が生起してしまっている。前記複数のパラメータ210のビット表現の一部は、実行環境158のコンピュータ実行可能命令のビット表現の少なくとも一部に等しい。これは、実行環境のそれらの命令が実行のために、メモリ130内で、モジュール150の命令がパラメータを取得するために使用するのと同じメモリ位置からロードされるということを意味する。実行環境の一つまたは複数の命令全体がこのようにしてパラメータとしても使用されてもよいことは理解されるであろう。もし望まれるなら、実行命令の一部(たとえば演算子フィールド、最上位バイトなど)のみがパラメータと統合されてもよい。
ある実施形態では、パラメータ212とモジュール150との間の統合が生起してしまっている。前記複数のパラメータ212のビット表現の一部は、前記コンピュータ・プログラム・モジュール150のコンピュータ実行可能命令のビット表現の少なくとも一部に等しい。これらの命令は、命令の実行の間、前記命令の前記ビット表現の前記一部を保持する少なくとも一つのメモリ・アドレスを、参照によって前記パラメータの前記ビット表現の等しい部分を読むためにも使うよう構成される。よって、モジュール150の少なくとも一つの命令は、モジュール150内の別の命令がパラメータを取得するあるメモリ位置からロードされる。もちろん、命令またはパラメータ全体をロードする代わりに、その一部についても同じ原理は機能する。
ある実施形態では、前記複数のデジタル・パラメータは、次のうちの少なくとも一つのものの表現を含む:
・暗号鍵および/または暗号アルゴリズムといった暗号学的データ;
・符号化テーブルおよび/または符号化アルゴリズムといったデジタル・コンテンツ・エンコード/デコード・データ;
・スクランブル・テーブルおよび/またはスクランブル・アルゴリズムといったデジタル・コンテンツ・スクランブル/スクランブル解除データ。
あるさらなる実施形態では、デジタル入力データ152は、コンテンツ固有鍵の制御のもとで暗号化された、エンコードされたおよび/またはスクランブルされたオーディオ/ビデオのようなデジタル・コンテンツである。その場合、モジュール150はプロセッサ120をして、デジタル入力データを、ユーザーに対してレンダリングされることができるまたはさらに処理されることができる平文の形(または少なくとも部分的に変換された形に)に変換させる。この目的に向け、本方法は、それぞれ解読、デコードおよび/またはスクランブル解除を制御するために前記コンテンツ固有鍵の表現を受信することを含む。たとえば、コンテンツが暗号化されている場合、装置110は解読鍵を受信する。これを受信するのはいかなる仕方でもよい。たとえば、記憶装置160から読むまたはサーバー174からインターネット172を通じて受信するなどである。次いで、少なくとも前記複数の所定のデジタル・パラメータのうちの一つの一部214を、前記コンテンツ固有鍵の受信された表現から導出するためにアルゴリズム200が使用される。たとえば、前記コンテンツ固有鍵が単にパラメータ部分214として使用されてもよい。
ある実施形態では、前記コンテンツ固有鍵および/または前記コンテンツ固有解読アルゴリズムは、難読化されたルックアップ・テーブルのネットワークを含む形で、たとえば上記のようにして、供給される。上に示されたように、難読化はテーブル中の定数を選ぶことにおけるある程度の自由度を与える。上で、実行環境158から導出された語wが別の難読化されたテーブルにおいて(よってモジュール150の別のパラメータにおいて)補償されることができる例が与えられた。ある実施形態では、実行環境158(たとえば語w)から導出されたパラメータが、コンテンツ固有解読鍵/アルゴリズム220の難読化された実装において補償される。その際、アルゴリズム200は、実行環境158から導出されたパラメータ(たとえば語w)を正しい難読化されたテーブルにおける正しい位置にロードするよう構成される。その際、パラメータ154として使用される難読化されたテーブルのネットワークは互いを補償し、もともと意図されていたマッピングを実行する。こうしてコンテンツ固有解読は、実行環境から導出された情報を用いて難読化される。その部分が修正されていない形で存在している場合にのみ、解読が正しく実行されることが保証されることができる。同じ原理がコンテンツ固有符号化および/またはスクランブルについても機能することは理解されるであろう。同じようにして、コンテンツ固有パラメータ/アルゴリズムが、モジュール150から導出された情報(たとえばそれから導出された語w)を用いて難読化されうることも理解されるであろう。
本発明が、本発明を実施するよう適応されたコンピュータ・プログラム、特に担体(carrier)上または担体中のコンピュータ・プログラムにも広がることは理解されるであろう。プログラムは、ソース・コード、オブジェクト・コード、部分的にコンパイルされた形のようなソースおよびオブジェクト・コードの中間のコードの形であっても、あるいは本発明に基づく方法の実装における使用のために好適な他のいかなる形であってもよい。前記担体は、プログラムを担持することのできるいかなる実体またはデバイスであってもよい。たとえば、担体は、ROM、たとえばCD-ROMもしくは半導体メモリまたは磁気記憶媒体、たとえばフロッピー(登録商標)ディスクもしくはハードディスク記憶媒体を含みうる。さらに、担体は、電気ケーブルもしくは光ケーブルを介してまたは無線もしくは他の手段によって伝達されうる、電気的または光学的信号のような伝送可能な担体であってもよい。プログラムがそのような信号として具現されるとき、担体は、そのようなケーブルまたは他のデバイスもしくは手段によって構成されうる。あるいはまた、前記担体は、当該方法を実行するよう、あるいは当該方法の実行において使用するために適応されている、前記プログラムが埋め込まれた集積回路であってもよい。
上記の実施形態が本発明を限定するのではなく例解するものであり、当業者は付属の請求項の範囲から外れることなく数多くの代替的な実施形態を設計できるであろうことは注意しておくべきであろう。請求項において、括弧内に参照符号があったとしても、その請求項を限定するものと解釈してはならない。動詞「有する」およびその活用形の使用は、請求項において述べられている以外の要素やステップの存在を排除しない。要素の単数形の表現はそのような要素の複数の存在を排除しない。本発明は、いくつかの相異なる要素を有するハードウェアによって、および好適にプログラムされたコンピュータによって実装されうる。いくつかの手段を列挙する装置請求項では、これらの手段のいくつかが同一のハードウェア項目によって具現されてもよい。ある種の施策が互いに異なる従属請求項において記載されているというだけの事実は、それらの施策の組み合わせが有利に使用できないということを示すものではない。

Claims (13)

  1. コンピュータ・プログラム・モジュール(150)を実行するための実行環境(158)の少なくとも一部の正当性を検証する方法であって、前記コンピュータ・プログラム・モジュールは、デジタル入力データ(152)の処理を引き起こすよう動作し、該処理は、複数の所定のデジタル・パラメータ(154)に依存して実行され、当該方法は、所定のアルゴリズム(200)を使って、少なくとも前記複数の所定のデジタル・パラメータの一つの一部を、前記実行環境の前記少なくとも一部から導出することを含む、方法。
  2. 前記複数のパラメータが所定の基準を満たす場合にのみ前記コンピュータ・プログラム・モジュールを実行して、前記デジタル入力データ(152)の処理を引き起こすことを含む、請求項1記載の方法。
  3. 請求項2記載の方法であって、前記複数のパラメータが前記所定の基準を満たすかどうか検証することを含み、該検証することは、前記複数のパラメータを使って所定のデジタル入力データに対して前記コンピュータ・プログラム・モジュールの少なくとも一部の少なくとも一回の試行ランを実行し、そして前記試行ランの出力が所定の条件を満たすかどうかを検証することを含む、方法。
  4. 請求項3記載の方法であって、前記所定のデジタル入力データをサーバーからチャレンジとして受信し;前記試行ランの前記出力を前記サーバーに与えて前記サーバーが検証を実行できるようにすることを含む、方法。
  5. 前記所定のアルゴリズムが、前記実行環境の表現を前記少なくとも一つのパラメータに変換するためのコンピュータ実行可能命令を使って実装される、請求項1記載の方法。
  6. 前記複数のパラメータのビット表現の一部が、前記実行環境のコンピュータ実行可能命令のビット表現の少なくとも一部に等しく;前記コンピュータ・プログラム・モジュールの命令は、実行の間、前記実行環境の前記命令の前記ビット表現の前記一部を保持する少なくとも一つのメモリ・アドレスを、参照によって前記パラメータの前記ビット表現の前記の等しい部分を読むためにも使うよう構成される、請求項1記載の方法。
  7. 前記複数のパラメータのビット表現の一部が、前記コンピュータ・プログラム・モジュールのコンピュータ実行可能命令のビット表現の少なくとも一部に等しく;前記命令は、前記命令の実行の間、前記命令の前記ビット表現の前記一部を保持する少なくとも一つのメモリ・アドレスを、参照によって前記パラメータの前記ビット表現の前記の等しい部分を読むためにも使うよう構成される、請求項1記載の方法。
  8. 前記所定のアルゴリズムは、前記実行環境の少なくとも一つのデータ要素が前記複数のパラメータの一つもしくは複数または一部として使用されるようにする、請求項1記載の方法。
  9. 前記複数のデジタル・パラメータが、
    ・暗号鍵および/または暗号アルゴリズムといった暗号用データ;
    ・符号化テーブルおよび/または符号化アルゴリズムといったデジタル・コンテンツ・エンコード/デコード・データ;
    ・スクランブル・テーブルおよび/またはスクランブル・アルゴリズムといったデジタル・コンテンツ・スクランブル/スクランブル解除データ、
    のうちの少なくとも一つのものの表現を含む、請求項1記載の方法。
  10. 請求項8記載の方法であって、前記デジタル入力データは、コンテンツ固有鍵の制御のもとで暗号化された、エンコードされたおよび/またはスクランブルされたデジタル・コンテンツであり;当該方法はそれぞれ解読、デコードおよび/またはスクランブル解除を制御するために前記コンテンツ固有鍵の表現を受信し、少なくとも前記複数の所定のデジタル・パラメータのうちの一つの一部を、前記コンテンツ固有鍵の受信された表現から導出することを含む、方法。
  11. 請求項8記載の方法であって、前記デジタル・パラメータの前記の導出される部分は、難読化されたルックアップ・テーブルのネットワークを含み、ここで、少なくとも一つのテーブルが前記実行環境の前記少なくとも一部に依存して難読化されており、前記アルゴリズムは、前記実行環境の前記少なくとも一部から少なくとも一つの補償要素を導出し、該少なくとも一つの補償要素を前記難読化されたルックアップ・テーブルの別の一つに挿入し、それにより難読化されたルックアップ・テーブルの前記ネットワークがルックアップ・テーブルの前記ネットワークと機能的に等価になるようにするよう構成される、方法。
  12. コンピュータ・プログラム・モジュール(150)を実行するための実行環境(158)の少なくとも一部の正当性を検証するシステム(100)であって、当該システムはプロセッサ(120)と前記コンピュータ・プログラム・モジュールおよび前記実行環境を記憶する記憶装置(140)とを含み、前記コンピュータ・プログラム・モジュールは前記プロセッサに、デジタル入力データ(152)を処理させるよう動作するものであり、該処理は、複数の所定のデジタル・パラメータ(154)に依存して実行され、当該システムは、少なくとも前記複数の所定のデジタル・パラメータの一つの一部を、前記実行環境の前記少なくとも一部から導出する手段(200)を含む、システム。
  13. プロセッサに請求項1記載の方法を実行させるコンピュータ・プログラム。
JP2009519028A 2006-07-12 2007-07-04 暗号関数を難読化する方法およびシステム Expired - Fee Related JP5113169B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06117036.1 2006-07-12
EP06117036 2006-07-12
PCT/IB2007/052607 WO2008007305A2 (en) 2006-07-12 2007-07-04 Method and system for obfuscating a gryptographic function

Publications (2)

Publication Number Publication Date
JP2009543244A JP2009543244A (ja) 2009-12-03
JP5113169B2 true JP5113169B2 (ja) 2013-01-09

Family

ID=38778139

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009519028A Expired - Fee Related JP5113169B2 (ja) 2006-07-12 2007-07-04 暗号関数を難読化する方法およびシステム

Country Status (5)

Country Link
US (3) US8700915B2 (ja)
EP (1) EP2044723A2 (ja)
JP (1) JP5113169B2 (ja)
CN (1) CN101491000B (ja)
WO (1) WO2008007305A2 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515945A (ja) * 2007-01-11 2010-05-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 実装のコピーの追跡
JP5346024B2 (ja) * 2007-09-13 2013-11-20 イルデト・コーポレート・ビー・ヴイ コンテンツの暗号処理
JP5354914B2 (ja) * 2008-01-18 2013-11-27 三菱電機株式会社 暗号処理装置及び復号処理装置及びプログラム
CA2717625C (en) 2008-03-05 2018-09-25 Irdeto B.V. Cryptographic system
CN101807239A (zh) * 2010-03-29 2010-08-18 山东高效能服务器和存储研究院 一种防止源代码反编译的方法
JP2012084071A (ja) 2010-10-14 2012-04-26 Toshiba Corp デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置
KR20120042469A (ko) * 2010-10-25 2012-05-03 한국전자통신연구원 부가 정보와 암호키 결합을 이용한 콘텐츠 보호 장치 및 그 방법
WO2012122621A1 (en) * 2011-03-15 2012-09-20 Irdeto Canada Corporation Change-tolerant method of generating an identifier for a collection of assets in a computing environment using a secret sharing scheme
US8782420B2 (en) 2011-07-22 2014-07-15 Netflix, Inc System and method for obfuscation initiation values of a cryptography protocol
US8661527B2 (en) 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
JP5275432B2 (ja) 2011-11-11 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
JP5112555B1 (ja) 2011-12-02 2013-01-09 株式会社東芝 メモリカード、ストレージメディア、及びコントローラ
JP5100884B1 (ja) 2011-12-02 2012-12-19 株式会社東芝 メモリ装置
JP5204291B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、装置、システム
JP5204290B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、システム、及び装置
JP5275482B2 (ja) 2012-01-16 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
JP6133409B2 (ja) * 2012-05-25 2017-05-24 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. プログラムのリバースエンジニアリング及び/又は改竄に対する保護のための方法、システム及び装置
WO2014072855A1 (en) * 2012-11-07 2014-05-15 Koninklijke Philips N.V. Computing device storing look-up tables for computation of a function
BR112015014946A2 (pt) * 2012-12-21 2017-07-11 Koninklijke Philips Nv dispositivo de computação, compilador, método eletrônico para computar uma função de dados e programa de computador
US9201811B2 (en) 2013-02-14 2015-12-01 Kabushiki Kaisha Toshiba Device and authentication method therefor
US8984294B2 (en) 2013-02-15 2015-03-17 Kabushiki Kaisha Toshiba System of authenticating an individual memory device via reading data including prohibited data and readable data
US9654279B2 (en) * 2014-03-20 2017-05-16 Nxp B.V. Security module for secure function execution on untrusted platform
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
US10412054B2 (en) * 2014-06-24 2019-09-10 Nxp B.V. Method for introducing dependence of white-box implementation on a set of strings
SG10201405852QA (en) 2014-09-18 2016-04-28 Huawei Internat Pte Ltd Encryption function and decryption function generating method, encryption and decryption method and related apparatuses
DE102014016548A1 (de) * 2014-11-10 2016-05-12 Giesecke & Devrient Gmbh Verfahren zum Testen und zum Härten von Softwareapplikationen
RU2698764C2 (ru) * 2014-11-27 2019-08-29 Конинклейке Филипс Н.В. Электронное вычислительное устройство для выполнения замаскированных арифметических действий
RU2698763C2 (ru) * 2014-12-22 2019-08-29 Конинклейке Филипс Н.В. Электронное вычислительное устройство
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
US9940455B2 (en) 2015-02-25 2018-04-10 International Business Machines Corporation Programming code execution management
US10505709B2 (en) * 2015-06-01 2019-12-10 Nxp B.V. White-box cryptography interleaved lookup tables
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
US10061905B2 (en) * 2016-01-26 2018-08-28 Twentieth Century Fox Film Corporation Method and system for conditional access via license of proprietary functionality
US11093656B2 (en) * 2018-11-14 2021-08-17 Irdeto B.V. Change-tolerant method of generating an identifier for a collection of assets in a computing environment
CN110048834A (zh) * 2019-03-12 2019-07-23 深圳壹账通智能科技有限公司 动态密码发送方法、装置及计算机可读存储介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07129207A (ja) * 1993-10-28 1995-05-19 Fanuc Ltd 数値制御システム
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
KR100662667B1 (ko) 1998-06-25 2007-01-02 코닌클리케 필립스 일렉트로닉스 엔.브이. 동기 스트림 암호
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
FR2792141B1 (fr) * 1999-04-09 2001-06-15 Bull Cp8 Procede de securisation d'un ou plusieurs ensembles electroniques mettant en oeuvre un meme algorithme cryptographique avec cle secrete, une utilisation du procede et l'ensemble electronique
JP2001103049A (ja) * 1999-09-30 2001-04-13 Hitachi Software Eng Co Ltd ユーザ認証方法
JP4005293B2 (ja) * 2000-02-29 2007-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ、その制御方法、記録媒体及び伝送媒体
US7206941B2 (en) * 2000-08-28 2007-04-17 Contentguard Holdings, Inc. Method and apparatus for validating security components through a request for content
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
CN1215418C (zh) * 2001-01-09 2005-08-17 中兴通讯股份有限公司 一种防止在计算机中运行的应用系统被攻击或篡改的方法
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
JP2003050640A (ja) * 2001-08-07 2003-02-21 Matsushita Electric Ind Co Ltd ソフトウェア複製防止方法
US7346780B2 (en) * 2002-04-03 2008-03-18 Microsoft Corporation Integrity ordainment and ascertainment of computer-executable instructions
US7545931B2 (en) * 2002-04-12 2009-06-09 Microsoft Corporation Protection of application secrets
US7152243B2 (en) * 2002-06-27 2006-12-19 Microsoft Corporation Providing a secure hardware identifier (HWID) for use in connection with digital rights management (DRM) system
JP4320013B2 (ja) * 2003-02-26 2009-08-26 株式会社セキュアウェア 不正処理判定方法、データ処理装置、コンピュータプログラム、及び記録媒体
US7363620B2 (en) * 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
KR101037006B1 (ko) * 2003-11-28 2011-05-25 파나소닉 주식회사 데이터 처리장치
US7337324B2 (en) * 2003-12-01 2008-02-26 Microsoft Corp. System and method for non-interactive human answerable challenges
RU2370897C2 (ru) * 2003-12-11 2009-10-20 Кониклейке Филипс Электроникс Н.В. Система блочной криптографической защиты, использующая преобразования для сокрытия основной функции криптографической защиты каждого цикла шифрования
FR2867929B1 (fr) * 2004-03-19 2007-03-02 Gemplus Card Int Procede d'authentification dynamique de programmes par un objet portable electronique
US7577997B2 (en) * 2004-06-12 2009-08-18 Microsoft Corporation Image verification
US8156488B2 (en) * 2004-10-20 2012-04-10 Nokia Corporation Terminal, method and computer program product for validating a software application
US7881466B2 (en) * 2004-10-28 2011-02-01 Irdeto B.V. Method and system for obfuscating a cryptographic function
US8479016B2 (en) 2006-03-10 2013-07-02 Irdeto B.V. Method and system for obfuscating a cryptographic function
US20090119221A1 (en) * 2007-11-05 2009-05-07 Timothy Martin Weston System and Method for Cryptographically Authenticated Display Prompt Control for Multifunctional Payment Terminals

Also Published As

Publication number Publication date
CN101491000A (zh) 2009-07-22
CN101491000B (zh) 2011-12-28
WO2008007305A3 (en) 2008-03-06
US20170286685A1 (en) 2017-10-05
EP2044723A2 (en) 2009-04-08
JP2009543244A (ja) 2009-12-03
US20140365783A1 (en) 2014-12-11
US20090313480A1 (en) 2009-12-17
US8700915B2 (en) 2014-04-15
WO2008007305A2 (en) 2008-01-17

Similar Documents

Publication Publication Date Title
JP5113169B2 (ja) 暗号関数を難読化する方法およびシステム
JP5496663B2 (ja) デジタルデータ処理装置の耐改竄性
JP5249053B2 (ja) データ処理システムの完全性
EP3174238B1 (en) Protecting white-box feistel network implementation against fault attack
EP1807965B1 (en) Method, server and computer readable medium for obfuscating a cryptographic function
US9602273B2 (en) Implementing key scheduling for white-box DES implementation
US9819486B2 (en) S-box in cryptographic implementation
KR20100020481A (ko) 암호 키 데이터 갱신
EP2922235B1 (en) Security module for secure function execution on untrusted platform
EP3125462A1 (en) Balanced encoding of intermediate values within a white-box implementation
EP3035582A1 (en) Binding white-box implementation to reduced secure element
EP3068067B1 (en) Implementing padding in a white-box implementation
US9025765B2 (en) Data security
US10243937B2 (en) Equality check implemented with secret sharing

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: 20120221

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120518

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120820

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: 20120911

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121011

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151019

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees