JP5808019B2 - ホワイトボックス暗号化技術を用いるインターロックされたバイナリ保護 - Google Patents
ホワイトボックス暗号化技術を用いるインターロックされたバイナリ保護 Download PDFInfo
- Publication number
- JP5808019B2 JP5808019B2 JP2012508860A JP2012508860A JP5808019B2 JP 5808019 B2 JP5808019 B2 JP 5808019B2 JP 2012508860 A JP2012508860 A JP 2012508860A JP 2012508860 A JP2012508860 A JP 2012508860A JP 5808019 B2 JP5808019 B2 JP 5808019B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- application
- binary
- integrity verification
- protected
- 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
Links
- 238000005516 engineering process Methods 0.000 title description 17
- 230000006870 function Effects 0.000 claims description 183
- 238000000034 method Methods 0.000 claims description 103
- 238000006243 chemical reaction Methods 0.000 claims description 93
- 238000009377 nuclear transmutation Methods 0.000 claims description 82
- 230000009466 transformation Effects 0.000 claims description 79
- 238000012795 verification Methods 0.000 claims description 63
- 239000010410 layer Substances 0.000 claims description 56
- 230000008569 process Effects 0.000 claims description 52
- 230000015654 memory Effects 0.000 claims description 39
- 238000000844 transformation Methods 0.000 claims description 35
- 238000010276 construction Methods 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 21
- 230000002441 reversible effect Effects 0.000 claims description 18
- 230000003068 static effect Effects 0.000 claims description 15
- 230000004048 modification Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 6
- 238000003780 insertion Methods 0.000 claims 2
- 230000037431 insertion Effects 0.000 claims 2
- 239000002346 layers by function Substances 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 16
- 238000004458 analytical method Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 235000019580 granularity Nutrition 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 230000035772 mutation Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000006378 damage Effects 0.000 description 3
- 230000007123 defense Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000007943 implant Substances 0.000 description 3
- 239000011229 interlayer Substances 0.000 description 3
- 230000002427 irreversible effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000017105 transposition Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000013102 re-test Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
- H04L2209/603—Digital right managament [DRM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Description
a)構築時ツールセットを用意して、前記アプリケーションにバイナリトランスミューテーションの準備を行いかつツールセットを使用することにより前記アプリケーションの元の実行を安全な実行に変換するステップと、
b)元のアプリケーションに意味的に等価な保護されるアプリケーションを生成するステップとを含み、該アプリケーションが、トランスミューテーションの準備ともインターロックされるインターロックされたトランスミューテーション実行を含み、それによりバイナリ保護が保護されるアプリケーションから分離されないようになっている。
この文脈において、「意味的に等価」という用語は、「同様の結果または出力を生成する」と言う意味に解釈されるべきである。
構築時において、一連の変更をアプリケーションコードに対して適用しかつ変更されたアプリケーションコードと組み合わされた新しいコードをインプラントするトランスミューテーション準備と、
インプラントされたコードを含む保護されるアプリケーションの実行の際に、準備されたトランスミューテーション保護を行うトランスミューテーション実行とがそれである。
(A)ソフトウェアアプリケーションが、実行の前に分析され静的に変換される構築時フェーズと、
(B)変換されたソフトウェアアプリケーションが、メモリ内で実行される実行時フェーズである。
前記バイナリアプリケーションコードに一連の変更を行って、変更されたバイナリアプリケーションコードを生成することにより、構築時フェーズにおいて、前記バイナリソフトウェアアプリケーションに対する複数のバイナリトランスミューテーションの組み合わせを実行するステップを含み、前記変更が、構築時に前記変更されたバイナリアプリケーションコードと絡みあった新しいコードをインプラントすることを含み、
トランスミューテーションの間に相互依存性を生成して配置することによって、前記トランスミューテーションをインターロックするステップと、
トランスミューテーションの前記組み合わせとインターロッキングを、保護対象のバイナリアプリケーションコードとインプラントされたコードの両方に適用するステップと、
バイナリ保護が、保護されるアプリケーションから分離されることがないように、元のアプリケーションに意味的に等価で前記インターロックされたトランスミューテーションを含む保護されるアプリケーションを生成するステップとを含む。
前記バイナリアプリケーションを解析して、1以上のバイナリトランスミューテーションを適用できる前記アプリケーションの1以上のコンポーネントを決定するステップを含み、前記コンポーネントがコンポーネントコードを含み、さらに、
前記コンポーネントコードへ一連の変更を行って、変更されたコンポーネントコードを生成するステップを含み、前記変更が、前記コンポーネントコードに1以上のWB変換を適用しかつ前記バイナリアプリケーションのコードへの前記変更と絡み合わされた新しいコードをインプラントすることを含み、さらに、
前記変更間に相互依存性を生成かつ配置することにより前記変更をインターロックするステップと、
保護対象のバイナリアプリケーションコードおよびインプラントされたコードの両方に前記変更を適用しかつインターロックを行って、元のアプリケーションに意味的に等価で、しかしバイナリ保護が保護されるアプリケーションと分離されないように前記インターロックされた変更を含むトランスミュートされたアプリケーションを生成するステップとを含む。
・アンチデバッグトランスミューテーション(AD)は、保護されるアプリケーションがデバッガにアタッチされているかどうかを確認。
・保護されるアプリケーションが、メモリ内で実行される間、ブロックトランスミューテーション(BT)は、動的コード解析および攻撃からのバイナリ保護を提供する。その主な役割は、バイナリアプリケーションをホワイトボックス変換されたブロックに分割し、その後、実行時における要求の際に、変換を取り除き、かつその後実行の後にそれらを破壊することから構成される。したがって、現在実行中のコードのブロックのみが露出される。
・機能トランスミューテーション(FT)が、ブロックトランスミューテーションとして働くも、多くの機能ブロックを含み得る機能に対してホワイトボックス変換を適用し、実行時に、機能を起動しながら変換を除去しかつ機能からのリターン後その機能を破壊する。
・完全性検証トランスミューテーション(IV)は、保護されるアプリケーションのインメモリコードセグメントまたはそのコンポーネントのいずれかが、タンパリングを受けていないことかつ/またはアプリケーションのコンポーネントのディスクイメージが改変されていないことを保証する。
・モジュールトランスミューテーション(MT)は、バイナリ―コードがメモリにロードされる前に静的コード解析および攻撃からのバイナリ保護を提供する。
・命令トランスミューテーション(IT)は、命令により、実行前に変換が取り除かれなければならないように、ホワイトボックス変換を用いて個々の命令を改変する。さらに、これらの変更は、保護される命令自体を変更することさえ含み得る(たとえば、エントリハンドラおよび出口ハンドラを挿入するかまたは命令により操作されたアドレスをその元の値から変更するよう要求することにより)。
図3は、本発明の実施例による本件のバイナリ保護システム100を示し、その主要なセキュリティコンポーネントが、インターロックされたセキュリティ層として保護されるバイナリアプリケーション105に自動的に挿入される。各セキュリティ層は、IVトランスミューテーション125、FTトランスミューテーション130、BTトランスミューテーション135またはMTトランスミューテーション120のいずれを実現するものであれ、実行可能なコードにより実現される。セキュリティ層およびそれらが保護するコードは、いずれも、層間でインターロックする関係の生成を図る、先行/後続の関係を有するコードにより実現される。なお、図3は、実際は模式化された図である。MT、FT、BTおよび命令トランスミューテーション(IT)(図示せず)は、好ましくは、一連の層間トランスミューテーションにおいて、連続的に入れ子になった層(すなわち、図28に示すように、MTがFTをカプセル化し、次にFTがBTをカプセル化し、BTがITをカプセル化する)において構成され、一方、IV125およびADB140が、内層的に適用され得る(すなわち、各入れ子になった層、層からなるグループまたは保護されるアプリケーション全体に適用される)。
図6は、このような保護されたバイナリアプリケーションモジュールを構築するためのプロセス、すなわち構築時プロセスを説明することにより最善の理解が得られる。この項では、各セキュリティコンポーネントの保護フェーズおよびそれが個々に適用される態様を説明する。保護のフローと保護されるバイナリアプリケーションの構造を表現しかつ分析する。また、この項では、セキュリティコンポーネント同士の対話についても指摘する。一般に、これらのセキュリティコンポーネントは、バイナリアプリケーションに対して直接的に自動的に適用される。セキュリティコンポーネントのセキュリティエンジンは、レジデントセキュリティモジュール300内に常駐する。セキュリティコンポーネントをインストールするために何らのユーザ対話も要求されないのが一般的である。バイナリアプリケーションは、大量に変換され、レジデントセキュリティモジュールのペイロード350として含まれる。こうして、たとえばペイロードは、変換された機能410(および各変換された機能についてのエントリハンドラおよび出口ハンドラ(図示せず))を含む。望ましいセキュリティ技術によれば、アプリケーションは、バイナリレベルで改変されていくつかの段で変換される。バイナリアプリケーションがモジュールトランスミューテーションで保護されている場合、ペイロードの構造は重要ではなく、ペイロードは単一のエンティティとして考えられる。
図7は、入力がバイナリアプリケーションである本発明の実施例による保護のフローを示す。機能トランスミューテーションは、アプリケーションを動的攻撃から守るポストリンク保護技術である。元のバイナリアプリケーション105をその複合機能に分解し(機能1、機能2、機能3、・・・機能N等)、これらをFT処理ブロック130によりWBアルゴリズムで変換する。FT処理130を、ホワイトボックス変換構築時ファシリティ140により実行し、ホワイトボックス変換キーおよび各機能用のオペレーションコードを生成しかつアセンブルする。変換された各機能410は、レジデントセキュリティモジュールのペイロードとして含まれる。FT処理も、各機能用エントリハンドラ420および出口ハンドラ420もインストールする。各機能は、それ自体のホワイトボックスキー(およびそれ自体の変換コード)で変換されるので、結果として保護されるバイナリモジュールには、各機能用の隠しWB逆変換キー(変換コード)が含まれる。この時点で、キーとコードという用語について混乱を避けるため、ここでコードとは、変換を実行するために使用するアルゴリズム/ソフトウェアコードを意味し、それが一般に独自のキーを使用することとする。
図8は、本発明の実施例による、ブロックトランスミューテーションコンポーネント135の保護フローを示す。ブロックトランスミューテーションコンポーネント135は、保護されるアプリケーションがメモリ内で実行される間、動的コード解析および攻撃からのバイナリ保護を行う。ブロックトランスミューテーションは、バイナリ命令を挿入かつ置換することによりバイナリアプリケーションを改変する。さらに、バイナリアプリケーションコードを、実行時で要求があった際に実行するために、実行可能な状態に戻す必要があるホワイトボックス変換ブロックへ分解する。BT処理ブロック135は、アプリケーションのバイナリモジュールをその必要な機能へ分解し、その後各機能をブロックに分割する。その後、ホワイトボックス変換コードを使用して、ブロックを変換する。BTは、アプリケーションバイナリ構造に最大の影響を与える。BTで保護される機能は、大きく改変される。たとえば、元の命令のいくつかは、新しい命令で置換され、それ以外のいくつかの命令は、機能アドレス空間内で再配置される。新しい命令を挿入するので、BTで保護される各機能のサイズはより大きくなる。したがって、BT保護による機能は、専用のバイナリロケーションへ再配置される。実行時では、BTで保護される機能は、WB変換ブロック440に分割された大きなコードセグメントからなる。ブロックはグループに分割され、かつブロックからなる各グループは、独自のホワイトボックスキーで変換される。結果として得られるバイナリアプリケーションは、その元の挙動を維持しつつ、よりタンパリングに対する耐性が高まる。変換されたホワイトボックスキーおよび逆変換ルーチンは、保護されるバイナリモジュールの一部である。さらに、プログラム実行の間、恒常的に、元のアプリケーションの制御フローを遮断しかつ変更することで、バイナリアプリケーションを自動的な攻撃から保護する。レジデントセキュリティモジュールは、ブロックの物理メモリアドレスをランダムに改変する動的ブロック転置マネジャ155を含む。ホワイトボックス変換されたブロックは、レジデントセキュリティモジュールはと結合されたペイロード内に含まれる。
図9は、本発明の実施例による静的解析および攻撃からバイナリアプリケーションを保護するモジュールトランスミューテーション120のコンポーネントによる保護プロセスを示す図である。一般に、保護されるアプリケーションには、保護されるアプリケーションが複数のトランスミュートされたモジュールを含むように、このプロセスが各モジュールについて繰り返されるいくつかのモジュール(実行ファイル共有ライブラリ)からなることが可能である。元のバイナリアプリケーション105が変換され、圧縮され、かつレジデントセキュリティモジュールのペイロードとして含まれる。結果として得られる保護されたバイナリモジュールが、デプロイされたアプリケーションにおける元のモジュールを置換する。図9の右側のボックスは、モジュールトランスミューテーションで保護するアプリケーションバイナリモジュール200を明らかにする。静的な保護のため、メモリにアプリケーションをロードする機能性を別にすれば、レジデントセキュリティモジュール300は、実行時でペイロード360に対して逆変換を行う経過を含みかつ完全性検証能力も含む。図9は、ペイロード350の一部を構成するペイロード360の一部を示す。
図10は、本発明の実施例に従い、保護されるアプリケーションの挙動を改変しようとするタンパリング攻撃を検出する完全性検証コンポーネントによる保護プロセスを示す。構築時において、入力バイナリモジュールは、デジタル署名されており、バウチャデータを作る。バウチャは、署名の集まりと、保護されるアプリケーションに関する他の情報を含む。バウチャデータは、ホワイトボックスアルゴリズムを用いてIVプロセス125により変換され、かつ変換されたバウチャデータは、保護されるアプリケーションに埋め込まれるかまたは別のファイルにエキスポートされる。一般には、保護されるアプリケーションは、いくつかのモジュール(実行ファイルおよび共有ライブラリ)から構成することができる。この場合、アプリケーションにタンパリング耐性を持たせるということは、すべてのモジュールが署名されかつバウチャデータがすべてのモジュールのシングルエンティティに記憶できるかまたは好ましくは、各モジュールがそれ自体のバウチャデータを個別に記憶させることを意味する。モジュールごとにバウチャデータを可能にすることで、アプリケーションに、再署名なしで個々のモジュールを更新する柔軟性が付与されるのみならず、各バウチャを異なるキーで変換できることによりセキュリティが向上する。
図11は、保護されるアプリケーションが実行時で安全に実行される様子を示す概略図である。図6に示すとおり、保護されたバイナリアプリケーションは、RSM300とその変換されたペイロード350とからなる。ペイロードの構造は、構築時に適用されるバイナリトランスミューテーションに依存する。保護されるバイナリアプリケーションが開始されると、RSMは制御を行い、ペイロードを実行する準備をする。効果的には、RSMはOSローディングプロセスを置換する。RSMは、保護されるアプリケーションについての情報を含み、逆変換が適用されると、変換されたペイロードが配置されることになるメモリ空間を割り当てる。ペイロードに対して変換を扱う前に、RSMは、3つのオペレーションを行う。すなわち、1)セキュリティエンジンを初期設定する、2)アンチデバッグコンポーネントを実行する、および3)ペイロードの完全性をチェックする。
図12は、実行時実施の際のモジュールトランスミューテーション(MT)コンポーネントを示す。保護されるアプリケーションが、メモリにロードされる際、RSMがコントロールしいくつかのセキュリティオペレーションを行う。第1に、RSMは、保護されるアプリケーションがデバッガの制御下にないことを確認しかつ自身およびペイロードの完全性をチェックし、ペイロードを実行の準備ができた状態に変換する。MTコンポーネントは、基本的には静的保護のためのものである。攻撃者がディスク上のペイロードを解析しないようにする。ペイロードがデプロイされた後、ペイロードおよびRSMに埋め込まれた他のセキュリティコンポーネントが制御を行い、動的解析および攻撃からアプリケーションを守る。さらに、ペイロードはバイナリ保護アプリケーションに関連する実行時データを含む。
図13は、完全性検証コンポーネントの実行時処理を示す。
保護されるアプリケーションがメモリ内に配備されると、その構造は、要求に応じて実行可能な状態に動的に変換されかつ実行の後に再び破壊されるコードセグメントから構成される。IVトランスミューテーション(IV)により、保護されるアプリケーションまたはそのコンポーネントのいずれかのインメモリコードセグメントが、タンパリングされずかつアプリケーションのディスクイメージが外部から改変されていないことが確定する。基本原則は、保護/構築時に生成される完全性検証データと、保護されるバイナリアプリケーションの実行時イメージとの比較に基づく。ブロックまたは機能がその変換状態を変えるたびに、実行時署名を適切に更新する。したがって、それらの変換状態を動的に変更するセグメントから構成されるバイナリアプリケーション等の自己改変コードアプリケーションの完全性をチェックすることが可能である。
一般に、アプリケーションモジュール実行の間、保護される機能が起動されると、そのエントリ機能ハンドラがまず実行され、ホワイトボックス変換実行時ファシリティと対話し、その機能に特定的なホワイトボックス変換実行時キーデータおよびオペレーションコードを使用して、ホワイトボックス変換逆オペレーションを実行することによりホワイトボックス変換された機能コードが逆変換され、実行メモリに逆変換された機能がロードされ、かつ機能から出る時には、実行制御が機能に渡されて、機能の出口ハンドラが起動される。随意には、各機能についてRSMが、リターンの前に機能のメモリ足跡をクリアするかスクランブルする。さらに、IV、ADBの一方または両方のトランスミューテーションをエントリ機能ハンドラおよび出口機能ハンドラに暗示的に適用することにより保護されている機能に対して適用されるFTと、IVまたはADBトランスミューテーションのうちいずれかまたは両方がインターロックされるように、層内保護を起動することができる。
図16は、動的解析および攻撃に対する保護でチャージされるブロックトランスミューテーション(BT)コンポーネントの実行時プロセスを示す。中心となる原則は、バイナリアプリケーションをディスクリートなブロックに分解することに基づく。構築時に、ブロックは、ホワイトボックス変換を用いて変換される。実行時に、ブロックは、要求に応じて動的に変換され、実行可能な状態に戻される。実行時では、最小数のブロックのみが(かつ理想的には単一のブロックのみ)が、クリーンな形になり、残りのブロックが未変換のままであることが好ましい。実行の後、ブロックは破壊され、BTおよびFTは、変換−実行−破壊という同じ基本原則を共有するが、これらは異なった態様で実現される。BEで保護される機能は構築時に改変される。たとえば、変換ルーチンへの呼び出しが、保護される機能内に挿入される。
上に説明した技術に加えて、このシステムが提供する技術的インフラストラクチャは、保護される機能の動的ローディングも可能化する。この動的ローディング機能性により、ユーザは、ホワイトボックス変換を用いて機能を保護することができ、必要な時にこの機能をロードでき、この機能を起動でき、メモリから安全にこの機能を消去することができる。基礎のアプリケーションを変更することなく容易に機能のアップデートができることに加え、このシステムでは、保護される機能がメモリにおいてクリアな形式になる時間が最小になる。
図18は、動的機能ローディングの構築時処理を示す。ユーザは、保護対象の機能を供給する。これらは、ユーザが供給するホワイトボックス変換キーおよびアルゴリズム仕様に関連して動的機能ローダー処理エンジンを介して処理される。このプロセスにより、変換された機能および隠しホワイトボックス逆変換キーを含む保護された変換データモジュールが生成される。このデータモジュールを様々な方法で(ダウンロード等)アプリケーションに供給ことができる。これにより、ユーザは、元のアプリケーションを再構築、再テストおよび再配備する必要なしに、機能の性質または保護レベルを簡単に変更できる。また、ユーザは、通常、実行ファイルおよび動的にロードされるかまたは共有されるライブラリ等のコードバイナリを可能にしないかもしれない標的システム上の領域に、機能コードを(このデータモジュールの形で)配置することもできる。
図19は、動的機能ローディングの実行時プロセスを示す。実行時で、アプリケーションは、どの保護データモジュールをロードし、かつどの機能を起動すべきかを指定する動的機能ローディングライブラリへの呼び出しを行う。そこで、ライブラリは、保護データモジュールにおける機能を発見し、これをメモリ内に実行可能な形で変換する。ライブラリは、アプリケーションのために機能を起動し、その結果を戻す。機能を起動したのち、アプリケーションは、その機能をメモリから安全に消去することを依頼することができる。
・ブロックトランスミューテーション
・機能に基づく完全性検証
・ブロックに基づく完全性検証
・アンチデバッグ
インターロッキングは、様々なセキュリティ技術間に強い相関を創出することによりセキュリティ標準を向上させることを目的とするものである。これはクリティカルコードおよびデータを中心とする。あるセキュリティエンジンの重要なコンポーネントが、他のセキュリティコンポーネントにより生成される値に依存する。このようなインターロックセキュリティエンジンの例を図14に示すが、検証された機能の動的変換の前に、完全性をチェックする。しかしながら、インターロッキングは、より複雑にすることが可能である。たとえば、IVおよびADのコンポーネントにより、他のセキュリティコンポーネントの部分(実行可能コード)を含むフェイルアンドサクセス(Fail and Success)コールバックルーチンが提供される。
暗号技術において大切なセキュリティ上のパラダイムは、復号化キーを保護することから構成される。ホワイトボックス技術を使用することは、この要件を満たす大きな前進の一歩である。数学的変換が復号化ルーチンによってのみ知られる復号化キーに適用され、攻撃者が各命令の実行を観察している場合でも、キーが露出しない復号化オペレーションが得られる。本発明は、隠し復号化キーを2つの部分に分割することから構成される追加のセキュリティ対策を導入する。一方の内部部分は、保護されるバイナリアプリケーションに埋め込まれ、外部部分は、エンドユーザが、実行フェーズで付与する必要がある。図2は、暗号化30および隠し復号化キー35両方を生成するプロセスを示す。保護時には、隠し復号化キーが、図27に示すように分解される。実行時には、RSMがキーの復元の役割を果たす。この技術は、いずれのホワイトボックス変換にもおよぶ。キー分割の特徴は、WB変換すなわちMT、IVおよびBTを利用するすべてのセキュリティコンポーネントに当てはまる。
Claims (45)
- 1つまたはそれ以上のコンピュータ装置が、バイナリアプリケーションコードを含むバイナリソフトウェアアプリケーションを、元の形から安全な形に変換する方法であって、
前記方法は、
1つまたはそれ以上のコンピュータ装置が、変換されたバイナリアプリケーションコードを生成するために、構築フェーズにおいて、元のバイナリアプリケーションコードへ複数の変換を適用するステップを含み、前記複数の変換は、複数のアプリケーション層で適用され、変換されたバイナリアプリケーションコードは前記元のバイナリアプリケーションコードと意味的に等価ではなく、
前記方法はさらに、
1つまたはそれ以上のコンピュータ装置が、保護されたアプリケーションを生成するために、前記変換されたバイナリアプリケーションコードを複数の逆変換キーおよび複数の逆変換コードと結合して1つまたはそれ以上のメモリに記憶するステップを含み、前記複数の逆変換キーのそれぞれは、実行フェーズにおいて、前記複数の逆変換コード中で対応する逆変換コードへのアクセスを提供するように構成され、
1つまたはそれ以上のコンピュータ装置が、前記保護されたアプリケーションを実行すると、変換されたバイナリアプリケーションコードにおいて対応する部分に対して、当該部分の実行よりも前に、前記複数の逆変換キーに基づいて前記メモリ上でアクセスできる前記複数の逆変換コードのそれぞれが適用されることにより、前記保護されたアプリケーションの実行が前記元のバイナリアプリケーションコードの実行と意味的に等価となる、方法。 - 前記複数のアプリケーション層は、前記元のバイナリアプリケーションコードの連続的に入れ子になった層を含む、請求項1に記載の方法。
- 前記保護されたアプリケーションを実行可能とするために、前記複数の逆変換コードが、変換されたバイナリアプリケーションコードに所定の順序で適用される、請求項2に記載の方法。
- 前記複数の変換が、前記元のバイナリアプリケーションコードの前記複数のアプリケーション層へ第1の順序で適用され、
前記保護されたアプリケーションを実行可能とするために、前記複数の逆変換コードが、前記変換されたバイナリアプリケーションコードへ、前記第1の順序とは逆の第2の順序で適用される、請求項3に記載の方法。 - 前記複数の変換における第1の変換が、前記複数の変換における第2の変換への入力として使用される出力を生成する、請求項4に記載の方法。
- 前記複数の変換におけるそれぞれの変換が、元のバイナリアプリケーションコードに1つまたはそれ以上の変更を生じさせ、前記複数の逆変換コードにおいて対応するそれぞれの逆変換コードが、前記変換されたバイナリアプリケーションコードに、前記1つまたはそれ以上の変更の結果を覆す1つまたはそれ以上の追加の変更を生じさせ、
前記変更は、1つまたはそれ以上のバイナリコードの改変、バイナリコードの挿入、バイナリコードの除去を含む、請求項1から5のいずれかに記載の方法。 - 前記連続的に入れ子になった層が、1つまたはそれ以上のモジュールを含むアプリケーション層、1つまたは複数の機能を含むモジュール層、1つまたは複数の命令ブロックを含む機能層、および、個々の機械命令を含む命令層を含む、請求項1から5のいずれかに記載の方法。
- 1つまたはそれ以上のコンピュータ装置が、1以上の元のバイナリアプリケーションコードおよび前記変換されたバイナリアプリケーションコードの前記複数のアプリケーション層における少なくとも1つの層に1以上の層内トランスミューテーションを適用することをさらに含む、請求項1から5のいずれかに記載の方法。
- 前記1以上の層内トランスミューテーションが、前記少なくとも1つの層に適用されるアンチデバッグトランスミューテーションと、前記元のバイナリアプリケーションコードと変換されたバイナリアプリケーションコードとに適用される完全性検証トランスミューテーションを含み、
前記保護されたアプリケーションの正しい実行が、前記完全性検証トランスミューテーションで追加された完全性チェックの結果に依存する、請求項8に記載の方法。 - 元のバイナリアプリケーションコードが、1つまたはそれ以上のソースコード変換によって変換されたソースコードから生成され、前記元のバイナリアプリケーションコードに適用された前記複数の変換のうち1つまたはそれ以上が、前記1つまたはそれ以上のソースコード変換の結果を覆す、請求項2に記載の方法。
- 前記元のバイナリアプリケーションコードに適用される前記複数の変換の1つまたはそれ以上が、1つまたはそれ以上のホワイトボックス構築時キーを用いて適用され、前記複数の逆変換キーの1つまたはそれ以上が、前記ホワイトボックス構築時キーに対応する1つまたはそれ以上のホワイトボックス実行時キーを含む、請求項1に記載の方法。
- それぞれのホワイトボックス構築時キーが対応するホワイトボックス実行時キーと対にされ、両方のキーが、元のキーデータとユーザから供給される変換アルゴリズム選択とに基づいて生成される、請求項11に記載の方法。
- 少なくとも1つの層内トランスミューテーションを適用することは、
a)1つまたはそれ以上のコンピュータ装置が、完全性検証に特定的なホワイトボックス変換キーおよびオペレーションコードを生成しかつアセンブルするステップと、
b)1つまたはそれ以上のコンピュータ装置が、構築時の元のアプリケーションバイナリコードのハッシング情報を表す静的完全性検証バウチャデータを計算するステップと、
c)1つまたはそれ以上のコンピュータ装置が、前記特定的ホワイトボックス変換キーおよびオペレーションコードを使用することにより完全性検証に特定的なホワイトボックス変換を適用して、前記バウチャデータを変換し、バウチャデータへの不正アクセスおよび攻撃を防止するステップと、
d)1つまたはそれ以上のコンピュータ装置が、前記専用ホワイトボックス変換キーおよびオペレーションコードに対応する隠しホワイトボックス変換実行時キーデータをアセンブルするステップと、
e)1つまたはそれ以上のコンピュータ装置が、完全性検証ライブラリが起動される間、ホワイトボックス変換実行時ファシリティと対話して、完全性検証に特定的なホワイトボックス変換逆オペレーションをホワイトボックス変換実行時キーデータに対して行うことにより、ホワイトボックス変換された完全性検証データをプレーン完全性検証データに逆変換し、かつプレーンデータを保護されたデータ構造にロードするステップと、
f)1つまたはそれ以上のコンピュータ装置が、オペレーティングシステムによりメモリにロードされるバイナリコードの動的完全性検証バウチャデータであって、実行時のアプリケーションバイナリコードのハッシング情報を表す動的完全性検証バウチャデータを計算し、かつ、前記動的完全性検証バウチャデータを、保護されるデータ構造に記憶するステップと、
g)1つまたはそれ以上のコンピュータ装置が、保護された形式で提示される、前記静的完全性検証バウチャデータを前記動的完全性検証バウチャデータに対して比較することにより、保護対象のアプリケーションコードの完全性をチェックするステップとを含む、請求項9に記載の方法。 - 完全性検証トランスミューテーションのアプリケーションが、ユーザが構築フェーズにアプリケーションのソースコードの選択された場所に、完全性検証API呼び出しを挿入できるようにし、その後、実行フェーズに実行される構築フェーズのアプリケーションに対して、自動的に、自動完全性検証エンジンを付加することにより、指定されたオプションのユーザ指定により決定される完全性のチェックを含む、請求項13に記載の方法。
- 1つまたはそれ以上のコンピュータ装置が、前記ホワイトボックス実行時キーが生成された後に、前記元のキーデータを隠すステップをさらに含む、請求項12に記載の方法。
- 前記複数のアプリケーション層の異なる層の異なる変換に対して、異なったホワイトボックス構築時キーとホワイトボックス実行時キーとが生成される、請求項11または12に記載の方法。
- 前記完全性検証変換が、前記元のバイナリアプリケーションコードそのものの完全性をチェックすると共に、前記コードに適用される他の全てのバイナリ変換のコードの完全性もチェックする、請求項14に記載の方法。
- 前記完全性検証変換の実行が、コールバック機能を呼び出すことにより前記アプリケーションにインターロックされる、請求項14に記載の方法。
- 変換されたバイナリアプリケーションコードは実行不可能である、請求項1に記載の方法。
- 変換されたバイナリアプリケーションコードはエラーを含む、請求項1に記載の方法。
- 前記複数の逆変換コードは、保護されたアプリケーションの一部である保護されたセキュリティモジュールに記憶される、請求項1に記載の方法。
- 変換されたバイナリアプリケーションコードにおいて実行されたそれぞれの部分が、実行後にメモリから除去される、請求項1に記載の方法。
- バイナリアプリケーションコードを含むバイナリソフトウェアアプリケーションを、元の形から安全な形に変換するシステムであって、
1つまたはそれ以上のプロセッサと、
前記1つまたはそれ以上のプロセッサの少なくとも1つと動作可能に結合された1つまたはそれ以上のメモリとを含み、
前記1つまたはそれ以上のメモリは、前記1つまたはそれ以上のプロセッサの少なくとも1つで実行されたときに、当該プロセッサに以下の処理を実行させる命令を格納し、
当該処理は、
変換されたバイナリアプリケーションコードを生成するために、構築フェーズにおいて、元のバイナリアプリケーションコードへ複数の変換を適用するステップを含み、前記複数の変換は、複数のアプリケーション層で適用され、変換されたバイナリアプリケーションコードは前記元のバイナリアプリケーションコードと意味的に等価ではなく、
前記処理はさらに、
保護されたアプリケーションを生成するために、前記変換されたバイナリアプリケーションコードを複数の逆変換キーおよび複数の逆変換コードと結合して1つまたはそれ以上のメモリに記憶するステップを含み、前記複数の逆変換キーのそれぞれは、実行フェーズにおいて、前記複数の逆変換コード中で対応する逆変換コードへのアクセスを提供するように構成され、
前記保護されたアプリケーションを実行すると、変換されたバイナリアプリケーションコードにおいて対応する部分に対して、当該部分の実行よりも前に、前記複数の逆変換キーに基づいて前記メモリ上でアクセスできる前記複数の逆変換コードのそれぞれが適用されることにより、前記保護されたアプリケーションの実行が前記元のバイナリアプリケーションコードの実行と意味的に等価となる、システム。 - 前記複数のアプリケーション層は、前記元のバイナリアプリケーションコードの連続的に入れ子になった層を含む、請求項23に記載のシステム。
- 前記保護されたアプリケーションを実行可能とするために、前記複数の逆変換コードが、変換されたバイナリアプリケーションコードに所定の順序で適用される、請求項24に記載のシステム。
- 前記複数の変換が、前記元のバイナリアプリケーションコードの前記複数のアプリケーション層へ第1の順序で適用され、
前記保護されたアプリケーションを実行可能とするために、前記複数の逆変換コードが、前記変換されたバイナリアプリケーションコードへ、前記第1の順序とは逆の第2の順序で適用される、請求項25に記載のシステム。 - 前記複数の変換における第1の変換が、前記複数の変換における第2の変換への入力として使用される出力を生成する、請求項26に記載のシステム。
- 前記複数の変換におけるそれぞれの変換が、元のバイナリアプリケーションコードに1つまたはそれ以上の変更を生じさせ、前記複数の逆変換コードにおいて対応するそれぞれの逆変換コードが、前記変換されたバイナリアプリケーションコードに、前記1つまたはそれ以上の変更の結果を覆す1つまたはそれ以上の追加の変更を生じさせ、
前記変更は、1つまたはそれ以上のバイナリコードの改変、バイナリコードの挿入、バイナリコードの除去を含む、請求項23から27のいずれかに記載のシステム。 - 前記連続的に入れ子になった層が、1つまたはそれ以上のモジュールを含むアプリケーション層、1つまたは複数の機能を含むモジュール層、1つまたは複数の命令ブロックを含む機能層、および、個々の機械命令を含む命令層を含む、請求項23から27のいずれかに記載のシステム。
- 1以上の元のバイナリアプリケーションコードおよび前記変換されたバイナリアプリケーションコードの前記複数のアプリケーション層における少なくとも1つの層に1以上の層内トランスミューテーションを適用することをさらに含む、請求項23から27のいずれかに記載のシステム。
- 前記1以上の層内トランスミューテーションが、前記少なくとも1つの層に適用されるアンチデバッグトランスミューテーションと、前記元のバイナリアプリケーションコードと変換されたバイナリアプリケーションコードとに適用される完全性検証トランスミューテーションを含み、
前記保護されたアプリケーションの正しい実行が、前記完全性検証トランスミューテーションで追加された完全性チェックの結果に依存する、請求項30に記載のシステム。 - 元のバイナリアプリケーションコードが、1つまたはそれ以上のソースコード変換によって変換されたソースコードから生成され、前記元のバイナリアプリケーションコードに適用された前記複数の変換のうち1つまたはそれ以上が、前記1つまたはそれ以上のソースコード変換の結果を覆す、請求項24に記載のシステム。
- 前記元のバイナリアプリケーションコードに適用される前記複数の変換の1つまたはそれ以上が、1つまたはそれ以上のホワイトボックス構築時キーを用いて適用され、前記複数の逆変換キーの1つまたはそれ以上が、前記ホワイトボックス構築時キーに対応する1つまたはそれ以上のホワイトボックス実行時キーを含む、請求項23に記載のシステム。
- それぞれのホワイトボックス構築時キーが対応するホワイトボックス実行時キーと対にされ、両方のキーが、元のキーデータとユーザから供給される変換アルゴリズム選択とに基づいて生成される、請求項33に記載のシステム。
- 少なくとも1つの層内トランスミューテーションを適用することは、
a)完全性検証に特定的なホワイトボックス変換キーおよびオペレーションコードを生成しかつアセンブルするステップと、
b)構築時の元のアプリケーションバイナリコードのハッシング情報を表す静的完全性検証バウチャデータを計算するステップと、
c)前記特定的ホワイトボックス変換キーおよびオペレーションコードを使用することにより完全性検証に特定的なホワイトボックス変換を適用して、前記バウチャデータを変換し、バウチャデータへの不正アクセスおよび攻撃を防止するステップと、
d)前記専用ホワイトボックス変換キーおよびオペレーションコードに対応する隠しホワイトボックス変換実行時キーデータをアセンブルするステップと、
e)完全性検証ライブラリが起動される間、ホワイトボックス変換実行時ファシリティと対話して、完全性検証に特定的なホワイトボックス変換逆オペレーションをホワイトボックス変換実行時キーデータに対して行うことにより、ホワイトボックス変換された完全性検証データをプレーン完全性検証データに逆変換し、かつプレーンデータを保護されたデータ構造にロードするステップと、
f)OSによりメモリにロードされるバイナリコードの動的完全性検証バウチャデータであって、実行時のアプリケーションバイナリコードのハッシング情報を表す動的完全性検証バウチャデータを計算し、かつ、前記動的完全性検証バウチャデータを、保護されるデータ構造に記憶するステップと、
g)保護された形式で提示される、前記静的完全性検証バウチャデータを前記動的完全性検証バウチャデータに対して比較することにより、保護対象のアプリケーションコードの完全性をチェックするステップとを含む、請求項31に記載のシステム。 - 完全性検証トランスミューテーションのアプリケーションが、ユーザが構築フェーズにアプリケーションのソースコードの選択された場所に、完全性検証API呼び出しを挿入できるようにし、その後、実行フェーズに実行される構築フェーズのアプリケーションに対して、自動的に、自動完全性検証エンジンを付加することにより、指定されたオプションのユーザ指定により決定される完全性のチェックを含む、請求項35に記載のシステム。
- 前記ホワイトボックス実行時キーが生成された後に、前記元のキーデータを隠すステップをさらに含む、請求項34に記載のシステム。
- 前記複数のアプリケーション層の異なる層の異なる変換に対して、異なったホワイトボックス構築時キーとホワイトボックス実行時キーとが生成される、請求項33または34に記載のシステム。
- 前記完全性検証変換が、前記元のバイナリアプリケーションコードそのものの完全性をチェックすると共に、前記コードに適用される他の全てのバイナリ変換のコードの完全性もチェックする、請求項36に記載のシステム。
- 前記完全性検証変換の実行が、コールバック機能を呼び出すことにより前記アプリケーションにインターロックされる、請求項36に記載のシステム。
- 変換されたバイナリアプリケーションコードは実行不可能である、請求項23に記載のシステム。
- 変換されたバイナリアプリケーションコードはエラーを含む、請求項23に記載のシステム。
- 前記複数の逆変換コードは、保護されたアプリケーションの一部である保護されたセキュリティモジュールに記憶される、請求項23に記載のシステム。
- 変換されたバイナリアプリケーションコードにおいて実行されたそれぞれの部分が、実行後にメモリから除去される、請求項23に記載のシステム。
- コンピュータ読み取り可能な命令を記憶した、コンピュータ読み取り可能な記録媒体であって、
前記命令は、1つまたはそれ以上のコンピュータ装置で実行されたときに、前記1つまたはそれ以上のコンピュータ装置のうち少なくとも1つに、請求項1〜22のいずれかに記載の方法を実施させる、記録媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17594509P | 2009-05-06 | 2009-05-06 | |
US61/175,945 | 2009-05-06 | ||
PCT/CA2010/000666 WO2010127438A1 (en) | 2009-05-06 | 2010-05-06 | Interlocked binary protection using whitebox cryptography |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2012526310A JP2012526310A (ja) | 2012-10-25 |
JP2012526310A5 JP2012526310A5 (ja) | 2013-06-20 |
JP5808019B2 true JP5808019B2 (ja) | 2015-11-10 |
Family
ID=43049872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012508860A Expired - Fee Related JP5808019B2 (ja) | 2009-05-06 | 2010-05-06 | ホワイトボックス暗号化技術を用いるインターロックされたバイナリ保護 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9141787B2 (ja) |
EP (1) | EP2430584B1 (ja) |
JP (1) | JP5808019B2 (ja) |
KR (1) | KR101676326B1 (ja) |
CN (1) | CN102483790B (ja) |
CA (1) | CA2761065C (ja) |
WO (1) | WO2010127438A1 (ja) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2362314A1 (en) * | 2010-02-18 | 2011-08-31 | Thomson Licensing | Method and apparatus for verifying the integrity of software code during execution and apparatus for generating such software code |
KR20140058419A (ko) * | 2011-03-24 | 2014-05-14 | 이르데토 비.브이. | 공격 저항을 위하여 어플리케이션 전체에 걸쳐 종속성 네트워크들을 제공하는 방법 및 시스템 |
BR112014028947A2 (pt) * | 2012-05-25 | 2017-06-27 | Koninklijke Philips Nv | método de configuração de um processador, dispositivo para configuração de um processador, processador, e produto de programa de computador |
US10089126B2 (en) * | 2013-03-21 | 2018-10-02 | Vmware, Inc. | Function exit instrumentation for tail-call optimized code |
US9678816B2 (en) | 2012-06-29 | 2017-06-13 | Vmware, Inc. | System and method for injecting faults into code for testing thereof |
US8918768B2 (en) | 2012-12-06 | 2014-12-23 | Apple Inc. | Methods and apparatus for correlation protected processing of data operations |
KR101428915B1 (ko) * | 2013-02-22 | 2014-08-11 | 한양대학교 산학협력단 | 안드로이드 보안을 위한 피드백 기반 어플리케이션 재가공 프레임워크 방법과 그 시스템 |
US9721120B2 (en) | 2013-05-14 | 2017-08-01 | Apple Inc. | Preventing unauthorized calls to a protected function |
US20150199530A1 (en) | 2014-01-10 | 2015-07-16 | General Electric Company | Systems and Methods With Cryptography and Tamper Resistance Software Security |
GB201405706D0 (en) * | 2014-03-31 | 2014-05-14 | Irdeto Bv | Software protection |
US20160124744A1 (en) * | 2014-04-03 | 2016-05-05 | Empire Technology Development Llc | Sub-packaging of a packaged application including selection of user-interface elements |
US9075990B1 (en) | 2014-07-01 | 2015-07-07 | Shape Security, Inc. | Reliable selection of security countermeasures |
KR101695639B1 (ko) * | 2014-08-13 | 2017-01-16 | (주)잉카엔트웍스 | 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템 |
WO2016049225A1 (en) * | 2014-09-23 | 2016-03-31 | The Regents Of The University Of California | Provably secure virus detection |
FR3030818B1 (fr) * | 2014-12-23 | 2016-12-23 | Valeo Comfort & Driving Assistance | Procede de transmission securisee d'une cle virtuelle et methode d'authentification d'un terminal mobile |
CN105790931B (zh) * | 2014-12-26 | 2019-05-24 | 中国移动通信集团公司 | 一种密钥分发方法、网络设备、终端设备及系统 |
US10205710B2 (en) * | 2015-01-08 | 2019-02-12 | Intertrust Technologies Corporation | Cryptographic systems and methods |
KR102311340B1 (ko) | 2015-01-15 | 2021-10-15 | 한국전자통신연구원 | 암호화 장치 및 방법 |
IN2015DE01753A (ja) * | 2015-06-11 | 2015-08-28 | Pradeep Varma | |
US10642962B2 (en) | 2015-07-28 | 2020-05-05 | Western Digital Technologies, Inc. | Licensable function for securing stored data |
KR101790948B1 (ko) * | 2015-10-26 | 2017-10-27 | 삼성에스디에스 주식회사 | Drm 서비스 제공 장치 및 방법, drm 서비스를 이용한 콘텐츠 재생 장치 및 방법 |
US10171234B2 (en) * | 2015-12-16 | 2019-01-01 | Nxp B.V. | Wide encoding of intermediate values within a white-box implementation |
GB201522315D0 (en) * | 2015-12-17 | 2016-02-03 | Irdeto Bv | Securing webpages, webapps and applications |
US10503931B2 (en) * | 2016-05-09 | 2019-12-10 | Arris Enterprises Llc | Method and apparatus for dynamic executable verification |
KR101933649B1 (ko) * | 2016-05-27 | 2018-12-28 | 삼성에스디에스 주식회사 | 화이트박스 암호 알고리즘을 이용한 공개키 암호화를 위한 장치 및 방법 |
CN106599620A (zh) * | 2016-11-16 | 2017-04-26 | 中国人民解放军国防科学技术大学 | 一种基于动态代码变换的二进制软件保护方法 |
WO2019028547A1 (en) | 2017-08-08 | 2019-02-14 | Crypto4A Technologies Inc. | METHOD AND SYSTEM FOR DEPLOYING AND EXECUTING EXECUTABLE CODE BY SECURE MACHINE |
ES2774104T3 (es) * | 2017-08-10 | 2020-07-16 | Siemens Ag | Procedimiento y equipo para proteger un software frente a una utilización no autorizada |
US10785017B2 (en) * | 2018-04-24 | 2020-09-22 | Microsoft Technology Licensing, Llc | Mitigating timing attacks via dynamically scaled time dilation |
US10965444B2 (en) | 2018-04-24 | 2021-03-30 | Microsoft Technology Licensing, Llc | Mitigating timing attacks via dynamically triggered time dilation |
US11017078B2 (en) | 2018-04-24 | 2021-05-25 | Microsoft Technology Licensing, Llc | Environmentally-trained time dilation |
FR3098319A1 (fr) * | 2019-07-05 | 2021-01-08 | Commissariat à l'énergie atomique et aux énergies alternatives | Procédé d'exécution d'un code binaire d'une fonction sécurisée par un microprocesseur |
US11263316B2 (en) * | 2019-08-20 | 2022-03-01 | Irdeto B.V. | Securing software routines |
US11409843B2 (en) | 2019-10-10 | 2022-08-09 | Nxp B.V. | Method for protecting a software program from copying |
CN111625784B (zh) * | 2020-05-29 | 2023-09-12 | 重庆小雨点小额贷款有限公司 | 一种应用的反调试方法、相关装置及存储介质 |
CN116668007B (zh) * | 2023-08-01 | 2023-10-31 | 中电信量子科技有限公司 | 基于白盒sm4算法的加密通信方法、终端及系统 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3683031B2 (ja) * | 1996-04-17 | 2005-08-17 | 株式会社リコー | プログラム保護装置 |
EP0988591A1 (en) * | 1997-06-09 | 2000-03-29 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
JP3637743B2 (ja) | 1997-10-15 | 2005-04-13 | ソニー株式会社 | 投射型液晶表示装置 |
US7757097B2 (en) * | 1999-09-03 | 2010-07-13 | Purdue Research Foundation | Method and system for tamperproofing software |
US7054443B1 (en) * | 2000-03-27 | 2006-05-30 | Microsoft Corporation | System and method for protecting digital goods using random and automatic code obfuscation |
CA2327911A1 (en) * | 2000-12-08 | 2002-06-08 | Cloakware Corporation | Obscuring functions in computer software |
JP4475894B2 (ja) * | 2002-08-01 | 2010-06-09 | パナソニック株式会社 | 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法 |
JP4514473B2 (ja) | 2004-02-23 | 2010-07-28 | 富士通株式会社 | コンピュータシステム、中央装置及びプログラム実行方法 |
GB0421774D0 (en) * | 2004-09-30 | 2004-11-03 | Ttp Communications Ltd | Source code protection |
EP1646174A1 (en) | 2004-10-07 | 2006-04-12 | Axalto SA | Method and apparatus for generating cryptographic sets of instructions automatically and code generation |
US7587616B2 (en) * | 2005-02-25 | 2009-09-08 | Microsoft Corporation | System and method of iterative code obfuscation |
JP4770425B2 (ja) | 2005-11-24 | 2011-09-14 | 富士ゼロックス株式会社 | 保護済み実行プログラムの作成のためのプログラム、方法及び装置 |
JP4048382B1 (ja) | 2006-09-01 | 2008-02-20 | 富士ゼロックス株式会社 | 情報処理システムおよびプログラム |
US8752032B2 (en) * | 2007-02-23 | 2014-06-10 | Irdeto Canada Corporation | System and method of interlocking to protect software-mediated program and device behaviours |
JP2008250475A (ja) | 2007-03-29 | 2008-10-16 | Brother Ind Ltd | 情報処理装置、ネットワークシステム、およびプログラム |
KR20090032701A (ko) * | 2007-09-28 | 2009-04-01 | 에스케이 텔레콤주식회사 | 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체 |
GB0719250D0 (en) | 2007-10-02 | 2007-11-14 | Iti Scotland Ltd | Anti-hack method |
US8121294B2 (en) * | 2008-10-21 | 2012-02-21 | Apple Inc. | System and method for a derivation function for key per page |
-
2010
- 2010-05-06 US US13/319,561 patent/US9141787B2/en active Active
- 2010-05-06 WO PCT/CA2010/000666 patent/WO2010127438A1/en active Application Filing
- 2010-05-06 CA CA2761065A patent/CA2761065C/en not_active Expired - Fee Related
- 2010-05-06 JP JP2012508860A patent/JP5808019B2/ja not_active Expired - Fee Related
- 2010-05-06 KR KR1020117029157A patent/KR101676326B1/ko active IP Right Grant
- 2010-05-06 EP EP10771931.2A patent/EP2430584B1/en active Active
- 2010-05-06 CN CN201080030733.XA patent/CN102483790B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP2430584A4 (en) | 2017-07-19 |
CN102483790A (zh) | 2012-05-30 |
CA2761065A1 (en) | 2010-11-11 |
WO2010127438A1 (en) | 2010-11-11 |
EP2430584B1 (en) | 2019-11-13 |
CA2761065C (en) | 2018-01-02 |
US20120192283A1 (en) | 2012-07-26 |
JP2012526310A (ja) | 2012-10-25 |
KR20120032477A (ko) | 2012-04-05 |
US9141787B2 (en) | 2015-09-22 |
CN102483790B (zh) | 2016-01-20 |
KR101676326B1 (ko) | 2016-11-15 |
EP2430584A1 (en) | 2012-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5808019B2 (ja) | ホワイトボックス暗号化技術を用いるインターロックされたバイナリ保護 | |
EP2467800B1 (en) | System and method to protect java bytecode code against static and dynamic attacks within hostile execution environments | |
KR101159487B1 (ko) | 소프트웨어 보안 | |
EP2828745B1 (en) | Updating software components | |
CN109840430B (zh) | Plc的安全处理单元及其总线仲裁方法 | |
CN103827880B (zh) | 保护非本机代码安全的方法 | |
US20170116410A1 (en) | Software protection | |
US20160275019A1 (en) | Method and apparatus for protecting dynamic libraries | |
CN107430650B (zh) | 保护计算机程序以抵御逆向工程 | |
US7970133B2 (en) | System and method for secure and flexible key schedule generation | |
US20170068804A1 (en) | Method for Protecting a Computer Program From Being Influenced, and Computer System | |
Falcarin et al. | Exploiting code mobility for dynamic binary obfuscation | |
Shioji et al. | Code shredding: byte-granular randomization of program layout for detecting code-reuse attacks | |
KR20070022150A (ko) | 소프트웨어 변조를 방지하기 위한 시스템, 방법, 및컴퓨터-판독가능 매체 | |
CN112685697B (zh) | 一种防止安卓应用被破解篡改的方法及终端 | |
Zhu et al. | Mobile code security on destination platform | |
Cai et al. | Research on Dynamic Safe Loading Techniques in Android Application Protection System | |
CN109933961A (zh) | 一种软件加固方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130502 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130502 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140401 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20140630 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20140707 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140801 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150106 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150406 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150501 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150605 |
|
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: 20150818 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20150821 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20150821 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150904 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5808019 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |