JP2017004528A - iOSソフトウェアモジュールの保護のためのデバイスおよび方法 - Google Patents
iOSソフトウェアモジュールの保護のためのデバイスおよび方法 Download PDFInfo
- Publication number
- JP2017004528A JP2017004528A JP2016115671A JP2016115671A JP2017004528A JP 2017004528 A JP2017004528 A JP 2017004528A JP 2016115671 A JP2016115671 A JP 2016115671A JP 2016115671 A JP2016115671 A JP 2016115671A JP 2017004528 A JP2017004528 A JP 2017004528A
- Authority
- JP
- Japan
- Prior art keywords
- version
- genuine
- module
- execution device
- protection technique
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000001514 detection method Methods 0.000 claims abstract description 33
- 230000006870 function Effects 0.000 claims description 41
- 238000012795 verification Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000002955 isolation Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000007704 transition 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- 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
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/101—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
- G06F21/1015—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to users
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6281—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
【課題】不正なプログラム解析からiOSアプリケーションを保護する。【解決手段】アプリケーションプロバイダは、純正デバイス上で実行されることになるモジュールのバージョンを取得しS20、また、脱獄されたデバイス上で実行されることになるモジュールを取得するS21。純正のiOSによって許可されたソフトウェア保護技法を、純正デバイスのバージョンに適用して、純正デバイスのための保護されたバージョンを取得しS22、脱獄されたiOSに特有のソフトウェア保護技法を、脱獄されたデバイスのバージョンに適用して、脱獄されたデバイスのための保護されたバージョンを取得するS23。次に、脱獄検出機能を生成しS24、脱獄検出機能、純正デバイス上での使用のためのバージョン、脱獄されたデバイス上での使用のためのバージョンを含む、アプリケーションパッケージを生成しS25、iOSデバイスに出力するS26。【選択図】図2
Description
本開示は一般にソフトウェア保護に関し、具体的にはiOS上で実行されるソフトウェアの保護に関する。
この項は、以下で述べられおよび/または特許請求される本開示の様々な態様に関連し得る技術の様々な態様を、読者に紹介するためのものである。この考察は、本開示の様々な態様のより良い理解を容易にするために、背景情報を読者にもたらすのに役立つと考えられる。従ってこれらの記述はこの観点から読まれるべきであり、従来技術であることを認めるものではないことが理解されるべきである。
iOSアプリケーションは、供給源から、それらがインストールされることになるiOSデバイスへ暗号化されて配布されることによって、リバースエンジニアリングに対して保護される。iOSデバイスにインストールされた後に、iOS自体はプロセスの隔離および権限の分離を用いて動的解析に対してアプリケーションを保護する。
しかし保護は、脱獄され(jailbroken)ていないiOSデバイスのみに適用される。「Hacking and Securing iOS Applications」においてJonathan Zdziarskiによって説明されているように、GNUデバッガ(gdb)を用いて、脱獄されたデバイスからアプリケーションのコードをダンプすることは容易である。脱獄されたデバイスは、脱獄されていないデバイス上では使用できない拡大された権限を得るために変更される。
従ってiOSによって提供される保護に依存することは十分ではない。しかしiOSは、インストールされたアプリケーション内のいかなるコード変更も許可しないので、用いることができる唯一のソフトウェア保護機構は、完全性チェックおよび制御フローグラフ(CFG)平坦化であり、通常はそれらの両方が一緒に用いられる。iOSによって提供される暗号化は弱く、アプリケーションはまた静的解析を用いたリバースエンジニアリングに対して脆弱であるので、しばしばこれらのソフトウェア保護機構が必要とされる。
しかしまたCFG平坦化は、動的攻撃ではなく静的攻撃のみに有効であり、「A Generic Attack on Checksumming−Based Software Tamper Resistance」で述べられているように、Wursterらは、2つのコードセクションを並列に実行することによって、完全性チェックを回避することが可能であることを示している。
iOSアプリケーションの保護に関連する従来の問題の少なくとも一部を克服する解決策を有することが望ましいことが、理解されるであろう。本原理はこのような解決策をもたらす。
第1の態様では本原理は、オペレーティングシステムを有し純正であるまたは脱獄されている実行デバイスによって実行されることを意図したモジュールを保護するためのアプリケーションプロバイダデバイスを対象とする。上記アプリケーションプロバイダデバイスは、純正実行デバイス上で実行されることを意図した上記モジュールの第1のバージョンであって、上記純正デバイス上の上記オペレーティングシステムによって許可された第1のソフトウェア保護技法を実施する、上記第1のバージョンと、脱獄されたデバイス上で実行されることを意図した上記モジュールの第2のバージョンであって、上記純正デバイス上の上記オペレーティングシステムによって許可されない第2のソフトウェア保護技法を実施する、上記第2のバージョンと、上記実行デバイスが純正であるか脱獄されているかを決定するように構成された脱獄検出機能と、を取得するための手段と、上記実行デバイスが純正である場合は上記モジュールの上記第1のバージョンを呼び出し、上記実行デバイスが脱獄されている場合は上記モジュールの上記第2のバージョンを呼び出し、上記脱獄検出機能、上記モジュールの上記第1のバージョン、および上記モジュールの上記第2のバージョンを含んだアプリケーションパッケージを生成する手段と、を含む。上記アプリケーションプロバイダデバイスはまた、上記アプリケーションパッケージを出力する手段を含む。
上記第1の態様の様々な実施形態は、以下を含む:
・上記モジュールの上記第1のバージョンを保護するために、上記第1のソフトウェア保護技法を用いる手段。上記第1のソフトウェア保護技法は、制御フローグラフ平坦化、および上記実行デバイスが純正であることの検証の少なくとも1つを含むことができる。
・上記モジュールの上記第2のバージョンを保護するために、上記第2のソフトウェア保護技法を用いる手段。上記第2のソフトウェア保護技法は、動的暗号化とすることができる。
・上記モジュールの上記第1のバージョンを保護するために、上記第1のソフトウェア保護技法を用いる手段。上記第1のソフトウェア保護技法は、制御フローグラフ平坦化、および上記実行デバイスが純正であることの検証の少なくとも1つを含むことができる。
・上記モジュールの上記第2のバージョンを保護するために、上記第2のソフトウェア保護技法を用いる手段。上記第2のソフトウェア保護技法は、動的暗号化とすることができる。
第2の態様では本原理は、オペレーティングシステムを有し純正であるまたは脱獄されている実行デバイスによって実行されることを意図したモジュールを保護するための方法を対象とする。方法は、アプリケーションプロバイダデバイスにおいて、取得するステップであって、純正実行デバイス上で実行されることを意図した上記モジュールの第1のバージョンであって、上記純正デバイス上の上記オペレーティングシステムによって許可された第1のソフトウェア保護技法を実施する、上記第1のバージョンと、脱獄されたデバイス上で実行されることを意図した上記モジュールの第2のバージョンであって、上記純正デバイス上の上記オペレーティングシステムによって許可されない第2のソフトウェア保護技法を実施する、上記第2のバージョンと、上記実行デバイスが純正であるか脱獄されているかを決定し、上記実行デバイスが純正である場合は上記モジュールの上記第1のバージョンを呼び出し、上記実行デバイスが脱獄されている場合は上記モジュールの上記第2のバージョンを呼び出すように構成された脱獄検出機能と、を取得するステップと、上記脱獄検出機能、上記モジュールの上記第1のバージョン、および上記モジュールの上記第2のバージョンを含んだアプリケーションパッケージを生成するステップと、上記アプリケーションパッケージを出力するステップと、を含む。
上記第2の態様の様々な実施形態は、以下を含む:
・上記処理装置は、上記第1のソフトウェア保護技法を用いて、上記モジュールの上記第1のバージョンを保護するようにさらに構成されること。上記第1のソフトウェア保護技法は、制御フローグラフ平坦化、および上記実行デバイスが純正であることの検証の少なくとも1つを含むことができる。
・上記処理装置は、上記モジュールの上記第2のバージョンを保護するために、上記第2のソフトウェア保護技法を用いるようにさらに構成されること。上記第2のソフトウェア保護技法は、動的暗号化とすることができる。
・上記処理装置は、上記第1のソフトウェア保護技法を用いて、上記モジュールの上記第1のバージョンを保護するようにさらに構成されること。上記第1のソフトウェア保護技法は、制御フローグラフ平坦化、および上記実行デバイスが純正であることの検証の少なくとも1つを含むことができる。
・上記処理装置は、上記モジュールの上記第2のバージョンを保護するために、上記第2のソフトウェア保護技法を用いるようにさらに構成されること。上記第2のソフトウェア保護技法は、動的暗号化とすることができる。
第3の態様では本原理は、プロセッサーによって実行可能なプログラムコード命令を含んだコンピュータプログラムを対象とし、上記プログラムコードは、純正実行デバイス上で実行されることを意図したモジュールの第1のバージョンであって、上記純正デバイス上のオペレーティングシステムによって許可された第1のソフトウェア保護技法を実施する、上記第1のバージョンと、脱獄されたデバイス上で実行されることを意図した上記モジュールの第2のバージョンであって、上記純正デバイス上の上記オペレーティングシステムによって許可されない第2のソフトウェア保護技法を実施する、上記第2のバージョンと、脱獄機能を実行しているデバイスが純正であるか脱獄されているかを決定し、上記実行デバイスが純正である場合は上記モジュールの上記第1のバージョンを呼び出し、上記実行デバイスが脱獄されている場合は上記モジュールの上記第2のバージョンを呼び出すように構成された脱獄検出機能と、を含む。
第4の態様では本原理は、オペレーティングシステムを有する実行デバイスを対象とし、上記実行デバイスは、メモリであって、純正実行デバイス上で実行されることを目的とし、上記純正デバイス上の上記オペレーティングシステムによって許可された第1のソフトウェア保護技法を実施する、モジュールの第1のバージョンと、脱獄されたデバイス上で実行されることを目的とし、上記純正デバイス上の上記オペレーティングシステムによって許可されない第2のソフトウェア保護技法を実施する、上記モジュールの第2のバージョンと、脱獄機能を実行している上記デバイスが純正であるか脱獄されているかを決定するように構成された上記脱獄検出機能と、を記憶するメモリと、上記実行デバイスが純正であるか脱獄されているかを決定するために、上記脱獄検出機能を実行する手段と、上記実行デバイスが純正であると決定された場合は、上記モジュールの上記第1のバージョンを呼び出し、上記実行デバイスが脱獄されていると決定された場合は、上記モジュールの上記第2のバージョンを呼び出す手段と、を含む。
次に添付の図面を参照して、非限定的な例として本原理の好ましい特徴が述べられる。
本原理を実施するシステム100を示す図である。
本原理による、保護されたモジュールを生成する方法を示す図である。
本原理によるアプリケーションパッケージを示す図である。
図に示される要素は、ハードウェア、ソフトウェア、またはそれらの組み合わせの様々な形で実施され得ることが理解されるべきである。これらの要素は、プロセッサー、メモリ、および入力/出力インターフェースを含むことができる、1または複数の適切にプログラムされた汎用デバイス上のハードウェアおよびソフトウェアの組み合わせにおいて実施されることが好ましい。本明細書では「結合された」という語句は、直接接続される、または1または複数の中間の構成要素を通して接続されることを意味するように定義される。このような中間の構成要素は、ハードウェアおよびソフトウェアベースの構成要素の両方を含むことができる。
この説明は本開示の原理を示す。従って当業者は、本明細書には明示的に述べられないまたは示されないが、本開示の原理を具体化しその範囲内に含まれる様々な構成を考案できることが理解されるであろう。
本明細書に記載されたすべての例および条件的語句は、当技術分野を発展させるための発明者の寄与による本開示の原理および概念の理解において、読者を補助するための教育的な目的のためであり、このような具体的に記載された例および条件に限定されないものと解釈されるべきである。
さらに本明細書における本開示の原理、態様、および実施形態、ならびにそれらの特定の例を述べるすべての記述は、それらの構造的および機能的等価物の両方を包含することが意図される。さらにこのような等価物は、現在知られている等価物、および将来に開発される等価物、すなわち構造に関わらず同じ機能を行う開発された任意の要素の両方を含むことが意図される。
従って例えば当業者には、本明細書において示されたブロック図は、本開示の原理を具体化する説明に役立つ回路の概念的な図を表すことが理解されるであろう。同様にいずれのフローチャート、フロー図、状態遷移図、擬似コードなどは、コンピュータ可読媒体内に実質的に表され得る様々なプロセスを表し、それに従ってコンピュータまたはプロセッサーにより、そのようなコンピュータまたはプロセッサーが明示的に示されているかどうかに関わらず、実行されることが理解されるであろう。
図に示される様々な要素の機能は、専用ハードウェア、ならびに適切なソフトウェアと関連してソフトウェアを実行する能力を有するハードウェアの使用を通じてもたらされ得る。プロセッサーによってもたらされるとき、機能は、単一の専用プロセッサーにより、単一の共有プロセッサーにより、またはそのいくつかは共有され得る複数の個別のプロセッサーによりもたらされ得る。さらに「プロセッサー」または「コントローラ」という用語の明示的な使用は、ソフトウェアを実行する能力を有するハードウェアを排他的に指すものと解釈されるべきではなく、暗黙に、非限定的にディジタル信号プロセッサー(DSP)ハードウェア、ソフトウェアを記憶するための読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、および不揮発性ストレージを含むことができる。
また従来型および/またはカスタムの他のハードウェアも含まれ得る。同様に、図に示されるいずれのスイッチも概念的のみである。それらの機能は、プログラムロジックの動作を通して、専用ロジックを通して、プログラム制御と専用ロジックの相互作用を通して、さらには手動で実行することができ、より具体的に状況から理解されるように実施者によって特定の技法を選択することができる。
本明細書の特許請求の範囲において、特定の機能を行う手段として表されるいずれの要素も、その機能を行う任意の方法を包含することが意図され、これは例えば、a)その機能を行う回路要素の組み合わせ、またはb)任意の形での、従ってその機能を行うようにそのソフトウェアを実行するための適切な回路と組み合わされたファームウェア、マイクロコードなどを含むソフトウェアを含む。このような特許請求の範囲によって定義される本開示は、様々な列挙された手段によってもたらされる機能は、特許請求の範囲が要求するするやり方で組み合わされ一緒にもたらされるという事実にある。従ってそれらの機能をもたらすことができるいずれの手段も、本明細書において示されるものと等価であると見なされる。
説明ではモジュールに言及される。このモジュールは実行可能コードを含み、共有ライブラリ、実行可能なものの内部のもしくはライブラリのコードの一部分、さらにはアプリケーション全体とすることができる。
本原理の方法およびデバイスは、モジュールの2つのバージョンを含んだアプリケーションパッケージをもたらし、すなわち脱獄されていないデバイス(本明細書の以下では「純正デバイス」と呼ばれる)上で実行されることになる1つのバージョン、および脱獄されたデバイス上で実行されることになる1つのバージョンである。各バージョンは同じ機能を実施するが、異なるソフトウェア保護機構を用いて保護される(しかしいくつかのソフトウェア保護機構は、両方のバージョンによって共有され得ることが理解されるであろう)。
図1は本原理を実施するシステム100を示す。システム100は、iOSモジュールを生成し、iOSモジュールを実行するように構成されたiOSデバイス120に直接または間接に提供するように構成されたアプリケーションプロバイダ110を含む。アプリケーションプロバイダ110およびiOSデバイス120は、少なくとも1つのハードウェア処理装置(「プロセッサー」)111、121、メモリ112、122、および他のデバイスと通信するように構成された少なくとも1つの通信インターフェース113、123を含む。当業者には、図示のデバイスは、明瞭にするために非常に簡略化されており、従って内部接続および電源のような機能は示されていないことが理解されるであろう。非一時的記憶媒体130は、本明細書の以下でさらに述べられるようにiOSモジュールを記憶する。
図2は本原理による、保護されたモジュールを生成する方法を示す。アプリケーションプロバイダは、純正デバイス上で実行されることになるモジュールのバージョンをステップS20で、および脱獄されたデバイス上で実行されることになるモジュールのバージョンをステップS21で取得する。各バージョンはそれ自体のみ(すなわち他方のバージョンではなく)を参照し、それが脱獄されたデバイスまたは純正デバイスによって実行されるためのものかどうかに応じて、特定のソフトウェア保護機構を用いて保護される。
純正デバイス上では、ユーザモジュール(すなわちユーザによってダウンロードされたモジュール)は、非ルートで実行する。デバッギング攻撃はオペレーティングシステムによって反撃され、オペレーティングシステムはアプリケーションに対するデフォルトの暗号化、プロセス隔離(サンドボックス化)を適用し、非ルートアプリケーションからのデバッガのアタッチメントを禁止する。iOSが動的攻撃に対する保護を提供するので、アプリケーションプロバイダ110が、純正デバイス自体のバージョンのコードにおいて、例えばCFG平坦化を用いて、静的解析に対する保護をもたらすことで十分となり得る。さらに、モジュールを保護するために完全性チェックを用いることができる。
脱獄されたデバイス上ではデバッギングまたは動的攻撃はiOSによって防止されないが、ただ同時に、脱獄によって生成される破損サンドボックス隔離(broken sandbox isolation)など、iOSの変更されたシステム権限は、動的コード暗号化(自己書き換えコード)およびアンチデバッギングのような、低レベルソフトウェア保護機構の使用を可能にする。これはアプリケーションプロバイダが、脱獄されたデバイスのバージョン内に、このようなソフトウェア保護機構を含めることを可能にする。従って脱獄されたデバイスのバージョンは、例えば動的暗号化および完全性チェックを用いて、動的攻撃に対して保護され得る。
ステップS22でアプリケーションプロバイダ110は、純正のiOSによって許可された少なくとも1つのソフトウェア保護技法を、純正デバイスのバージョンに適用して、純正デバイスのための保護されたバージョンを取得し、ステップS23でアプリケーションプロバイダ110は、脱獄されたiOSに特有の(すなわち脱獄されたiOSによって許可されるが、純正のiOSには許可されない)少なくとも1つのソフトウェア保護技法を、脱獄されたデバイスのバージョンに適用して、脱獄されたデバイスのための保護されたバージョンを取得する。またステップS20およびS21で取得されたバージョンは、バージョンが取得されたときに、すでにこれらのソフトウェア保護方法を用いて保護されていることが可能である。
次いでステップS24でアプリケーションプロバイダ110は、脱獄検出機能を生成する。脱獄検出機能は、それが実行されるデバイスが純正デバイスであるか脱獄されたデバイスであるかを決定する能力を有する。純正デバイス上では分岐(forking)は許可されないので、脱獄検出機能は例えばfork()を用い、分岐が成功したかどうかを見るために返されたプロセスidをチェックすることができ、そうである場合、デバイスは脱獄されたと決定することができる。同様に、ヌルの引数を有するsystem()の呼び出しは、脱獄されたデバイス上では1を返し、純正デバイス上では0を返し、これもまた脱獄の決定を可能にする。他の脱獄検出機能は、Zdziarskiにより「Hacking and Securing iOS Applications」で述べられている。脱獄検出機能は、脱獄を検出する複数の異なる方法を用いることが好ましい。
脱獄検出機能はまた、検出がこのバージョンの実行時にも行われるように、純正デバイスのバージョンのコード内に挿入されることが好ましい。純正バージョンの内部の脱獄検出機能は、完全性チェックによって保護され、実行デバイスが脱獄されていると決定された場合は実行フローを変えるように構成されることが好ましい。脱獄検出機能の純正バージョンへの挿入は、この時点でまたはそれより前に、純正バージョンを保護するときに行うことができる。
次いでステップS25でアプリケーションプロバイダ110は、脱獄検出機能、純正デバイス上での使用のためのバージョン、脱獄されたデバイス上での使用のためのバージョンを含む、アプリケーションパッケージを生成し、脱獄検出機能は、実行デバイスの脱獄状態、すなわち純正であるか脱獄されているかに応じて適切なバージョンを呼び出す。ステップS26でアプリケーションプロバイダ110は、アプリケーションパッケージを、iOSデバイス120に直接、または中間記憶部(図示せず)に出力する。
図3は、実行デバイスの脱獄状態を決定し、次いでアプリケーションの純正バージョン320または脱獄されたバージョン330を呼び出すように構成された、脱獄検出機能310を含む本原理によるアプリケーションパッケージ300を示す。純正バージョンのコードは、述べられたように複数の脱獄検出機能325を含む。
図3ではアプリケーションパッケージ300は、3つのモジュール、すなわち脱獄検出機能310、およびモジュールの2つのバージョン320、330を有するように示される。3つのモジュールは、実行時に脱獄検出機能310に届き、脱獄検出機能310が次いでどのバージョンを実行するかを決定する、単一のアプリケーションの一部とすることができることが理解されるであろう。
変形形態ではアプリケーションパッケージは、3つのアプリケーションを含み、各アプリケーションは、脱獄検出機能および2つのバージョンの1つを含む。脱獄検出機能を含んだアプリケーションは、最初に実行されることになり、それはデバイスが脱獄されているか否かの決定の結果に応じて、他の2つのアプリケーションの1つを呼び出す。
従って本原理は、少なくともいくつかの場合において従来の保護方法を改善することができる、iOSソフトウェアモジュールのソフトウェア保護のための解決策をもたらすことが理解されるであろう。具体的には実施形態に応じて本原理は、同じアプリケーションパッケージを純正デバイスおよび脱獄されたデバイスに配布することを可能にすることができる。
本原理は、それらが最も関心のある使用をもたらし得る場合であると考えられるので、iOSとの使用に対して述べられてきた。しかし、特にそれらがメモリページにおける書き込み許可を制限する場合に、アンドロイドなどの他の(セキュアな)オペレーティングシステムに対しても、本原理は用いられ得ることが理解されるであろう。
説明において開示された各特徴、ならびに(適切な場合に)請求項および図面は、単独でまたは任意の適切な組み合わせにおいてもたらされ得る。ハードウェアにおいて実施されるものとして述べられた特徴は、ソフトウェアにおいても実施することができ、逆も同様である。請求項内に現れる参照番号は、例示のためのみであり、請求項の範囲に対していかなる限定効果を有するものではない。
Claims (12)
- オペレーティングシステムを有し純正であるまたは脱獄されている実行デバイスによって実行されることを意図したモジュールを保護するためのアプリケーションプロバイダデバイスであって、
純正実行デバイス上で実行されることを意図した前記モジュールの第1のバージョンを取得する手段であって、前記第1のバージョンは、前記純正デバイス上の前記オペレーティングシステムによって許可された第1のソフトウェア保護技法を実施する、前記第1のバージョンを取得する手段と、
脱獄されたデバイス上で実行されることを意図した前記モジュールの第2のバージョンを取得する手段であって、前記第2のバージョンは、前記純正デバイス上の前記オペレーティングシステムによって許可されない第2のソフトウェア保護技法を実施する、前記第2のバージョンを取得する手段と、
前記実行デバイスが純正であるか脱獄されているかを決定し、前記実行デバイスが純正である場合は前記モジュールの前記第1のバージョンを呼び出し、前記実行デバイスが脱獄されている場合は前記モジュールの前記第2のバージョンを呼び出すように構成された脱獄検出機能を取得する手段と、
前記脱獄検出機能、前記モジュールの前記第1のバージョン、および前記モジュールの前記第2のバージョンを備えたアプリケーションパッケージを生成する手段と、
前記アプリケーションパッケージを出力する手段と、
を備える、前記アプリケーションプロバイダデバイス。 - 前記モジュールの前記第1のバージョンを保護するために、前記第1のソフトウェア保護技法を用いる手段をさらに備える、請求項1に記載のアプリケーションプロバイダデバイス。
- 前記第1のソフトウェア保護技法は、制御フローグラフ平坦化、および前記実行デバイスが純正であることの検証の少なくとも1つを備える、請求項2に記載のアプリケーションプロバイダデバイス。
- 前記モジュールの前記第2のバージョンを保護するために、前記第2のソフトウェア保護技法を用いる手段をさらに備える、請求項1に記載のアプリケーションプロバイダデバイス。
- 前記第2のソフトウェア保護技法は動的暗号化である、請求項4に記載のアプリケーションプロバイダデバイス(110)。
- オペレーティングシステムを有し、純正であるまたは脱獄されている実行デバイスによって実行されることを意図したモジュールを保護するための方法であって、アプリケーションプロバイダデバイスにおいて、
取得手段によって、
純正実行デバイス上で実行されることを意図した前記モジュールの第1のバージョンであって、前記純正デバイス上の前記オペレーティングシステムによって許可された第1のソフトウェア保護技法を実施する、前記第1のバージョンと、
脱獄されたデバイス上で実行されることを意図した前記モジュールの第2のバージョンであって、前記純正デバイス上の前記オペレーティングシステムによって許可されない第2のソフトウェア保護技法を実施する、前記第2のバージョンと、
前記実行デバイスが純正であるか脱獄されているかを決定し、前記実行デバイスが純正である場合は前記モジュールの前記第1のバージョンを呼び出し、前記実行デバイスが脱獄されている場合は前記モジュールの前記第2のバージョンを呼び出すように構成された脱獄検出機能と、
を取得するステップと、
生成手段によって、前記脱獄検出機能、前記モジュールの前記第1のバージョン、および前記モジュールの前記第2のバージョンを備えたアプリケーションパッケージを生成するステップと、
出力手段によって、前記アプリケーションパッケージを出力するステップと、
を含む、前記方法。 - 前記モジュールの前記第1のバージョンを保護するために、第1の使用手段によって、前記第1のソフトウェア保護技法を用いるステップをさらに含む、請求項6に記載の方法。
- 前記第1のソフトウェア保護技法は、制御フローグラフ平坦化、および前記実行デバイスが純正であることの検証の少なくとも1つを備える、請求項7に記載の方法。
- 前記モジュールの前記第2のバージョンを保護するために、第2の使用手段によって、前記第2のソフトウェア保護技法を用いるステップをさらに含む、請求項6に記載の方法。
- 前記第2のソフトウェア保護技法は動的暗号化である、請求項9に記載の方法。
- プロセッサーによって実行可能なプログラムコード命令を備えたコンピュータプログラムであって、前記プログラムコードは、
純正実行デバイス上で実行されることを意図したモジュールの第1のバージョンであって、前記純正デバイス上のオペレーティングシステムによって許可された第1のソフトウェア保護技法を実施する、前記第1のバージョンと、
脱獄されたデバイス上で実行されることを意図した前記モジュールの第2のバージョンであって、前記純正デバイス上の前記オペレーティングシステムによって許可されない第2のソフトウェア保護技法を実施する、前記第2のバージョンと、
脱獄機能を実行しているデバイスが純正であるか脱獄されているかを決定し、前記実行デバイスが純正である場合は前記モジュールの前記第1のバージョンを呼び出し、前記実行デバイスが脱獄されている場合は前記モジュールの前記第2のバージョンを呼び出すように構成された脱獄検出機能と、
を備える、前記コンピュータプログラム。 - オペレーティングシステムを有する実行デバイスであって、
− メモリであって、純正実行デバイス上で実行されることを目的とし、前記純正デバイス上の前記オペレーティングシステムによって許可された第1のソフトウェア保護技法を実施する、モジュールの第1のバージョンと、脱獄されたデバイス上で実行されることを目的とし、前記純正デバイス上の前記オペレーティングシステムによって許可されない第2のソフトウェア保護技法を実施する、前記モジュールの第2のバージョンと、脱獄機能を実行している前記デバイスが純正であるか脱獄されているかを決定するように構成された前記脱獄検出機能と、を記憶するメモリと、
− 前記実行デバイスが純正であるか脱獄されているかを決定するために、前記脱獄検出機能を実行する手段と、
− 前記実行デバイスが純正であると決定された場合は、前記モジュールの前記第1のバージョンを呼び出し、前記実行デバイスが脱獄されていると決定された場合は、前記モジュールの前記第2のバージョンを呼び出す手段と、
を備える、前記実行デバイス。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15305876.3 | 2015-06-09 | ||
EP15305876.3A EP3104291A1 (en) | 2015-06-09 | 2015-06-09 | Device and method for protection of ios software modules |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017004528A true JP2017004528A (ja) | 2017-01-05 |
Family
ID=53442696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016115671A Pending JP2017004528A (ja) | 2015-06-09 | 2016-06-09 | iOSソフトウェアモジュールの保護のためのデバイスおよび方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160364569A1 (ja) |
EP (2) | EP3104291A1 (ja) |
JP (1) | JP2017004528A (ja) |
KR (1) | KR20160144921A (ja) |
CN (1) | CN106250728A (ja) |
ES (1) | ES2668991T3 (ja) |
PL (1) | PL3104292T3 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200105706A (ko) | 2018-01-17 | 2020-09-08 | 가부시키가이샤 사이게임스 | 통신을 행하기 위한 시스템, 프로그램, 방법 및 서버 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107133169B (zh) * | 2017-04-26 | 2021-03-23 | 腾讯科技(深圳)有限公司 | 应用测试包生成方法及生成装置 |
CN108334775B (zh) * | 2018-01-23 | 2022-09-23 | 创新先进技术有限公司 | 一种越狱插件检测方法及装置 |
KR20220021311A (ko) | 2020-08-13 | 2022-02-22 | 주식회사 안랩 | 응용프로그램인터페이스 보호 방법 |
CN112784264B (zh) * | 2021-01-18 | 2024-04-02 | 北京洛塔信息技术有限公司 | 越狱状态检测方法、装置、设备及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9881151B2 (en) * | 2011-08-31 | 2018-01-30 | Lenovo (Singapore) Pte. Ltd. | Providing selective system privileges on an information handling device |
US9787681B2 (en) * | 2012-01-06 | 2017-10-10 | Optio Labs, Inc. | Systems and methods for enforcing access control policies on privileged accesses for mobile devices |
US8826169B1 (en) * | 2012-06-04 | 2014-09-02 | Amazon Technologies, Inc. | Hiding content of a digital content item |
US9619653B2 (en) * | 2012-07-31 | 2017-04-11 | Adobe Systems Incorporated | System and method for detecting a security compromise on a device |
US8862892B2 (en) * | 2012-07-31 | 2014-10-14 | Adobe Systems Incorporated | System and method for detecting a security compromise on a device |
US20140173733A1 (en) * | 2012-12-17 | 2014-06-19 | Fixmo, Inc. | Exploit detection and reporting of a device using server chaining |
EP3005209B1 (en) * | 2013-05-30 | 2021-02-17 | JScrambler S.A. | Web application protection |
US9910724B2 (en) * | 2013-09-13 | 2018-03-06 | Airwatch Llc | Fast and accurate identification of message-based API calls in application binaries |
CN103561176B (zh) * | 2013-11-07 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 一种终端设备的通话记录获取方法、装置及终端设备 |
EP2913773A1 (en) * | 2014-02-27 | 2015-09-02 | Thomson Licensing | Run-time Continuous Address Space Layout Randomization of flattened Control Flow Graph |
US9516491B2 (en) * | 2015-02-27 | 2016-12-06 | T-Mobile Usa, Inc. | Remote device modification |
-
2015
- 2015-06-09 EP EP15305876.3A patent/EP3104291A1/en not_active Withdrawn
-
2016
- 2016-06-01 ES ES16172364.8T patent/ES2668991T3/es active Active
- 2016-06-01 EP EP16172364.8A patent/EP3104292B1/en active Active
- 2016-06-01 PL PL16172364T patent/PL3104292T3/pl unknown
- 2016-06-03 KR KR1020160069723A patent/KR20160144921A/ko unknown
- 2016-06-07 CN CN201610396826.3A patent/CN106250728A/zh active Pending
- 2016-06-08 US US15/177,067 patent/US20160364569A1/en not_active Abandoned
- 2016-06-09 JP JP2016115671A patent/JP2017004528A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200105706A (ko) | 2018-01-17 | 2020-09-08 | 가부시키가이샤 사이게임스 | 통신을 행하기 위한 시스템, 프로그램, 방법 및 서버 |
US10908978B2 (en) | 2018-01-17 | 2021-02-02 | Cygames, Inc. | System, program, method, and server for performing communication |
Also Published As
Publication number | Publication date |
---|---|
EP3104292A1 (en) | 2016-12-14 |
ES2668991T3 (es) | 2018-05-23 |
US20160364569A1 (en) | 2016-12-15 |
KR20160144921A (ko) | 2016-12-19 |
EP3104291A1 (en) | 2016-12-14 |
PL3104292T3 (pl) | 2018-08-31 |
EP3104292B1 (en) | 2018-04-18 |
CN106250728A (zh) | 2016-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7101761B2 (ja) | コール・パス依存認証 | |
Simon et al. | What you get is what you C: Controlling side effects in mainstream C compilers | |
JP2017004528A (ja) | iOSソフトウェアモジュールの保護のためのデバイスおよび方法 | |
Schuster et al. | Evaluating the effectiveness of current anti-ROP defenses | |
US8473961B2 (en) | Methods to generate security profile for restricting resources used by a program based on entitlements of the program | |
EP2946330B1 (en) | Method and system for protecting computerized systems from malicious code | |
JP6083097B2 (ja) | ハードウェア保護アプリケーションのシステム・サービス要求相互作用を容易化する方法 | |
CN107077562B (zh) | 用于动态控制代码执行的计算机实现的方法和系统 | |
US20160210216A1 (en) | Application Control Flow Models | |
CN107430650B (zh) | 保护计算机程序以抵御逆向工程 | |
Zhang et al. | IntPatch: Automatically fix integer-overflow-to-buffer-overflow vulnerability at compile-time | |
CA3023939A1 (en) | Method and apparatus for dynamic executable verification | |
JP6435834B2 (ja) | 命令実行制御装置、命令実行制御方法 | |
Wang et al. | To detect stack buffer overflow with polymorphic canaries | |
US10120987B2 (en) | Device and method for executing protected iOS software modules | |
WO2016206565A1 (zh) | 恶意程序检测方法及装置 | |
Zhou et al. | Smile: Secure memory introspection for live enclave | |
KR20180015723A (ko) | 보안 구역과 하위 보안 구역 사이의 전이를 위한 장치 및 방법 | |
WO2017182089A1 (en) | Method for write-protecting boot code if boot sequence integrity check fails | |
Hauser et al. | Sleak: Automating address space layout derandomization | |
KR20180093529A (ko) | 바이트코드와 네이티브코드 간의 상호 의존성에 기반한 어플리케이션 위변조 방지 방법 및 장치 | |
Chen et al. | Vulnerability-based backdoors: Threats from two-step trojans | |
JP2007041777A (ja) | 言語処理方法 | |
KR101628101B1 (ko) | 시그니처 탐지를 위한 침입 차단 시스템 장비 | |
Wang | Source-Free, Component-driven Software Security Hardening |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20161202 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20161202 |