(57)【要約】      （修正有）【課題】不正なプログラム解析からｉＯＳアプリケーションを保護する。【解決手段】アプリケーションプロバイダは、純正デバイス上で実行されることになるモジュールのバージョンを取得しＳ２０、また、脱獄されたデバイス上で実行されることになるモジュールを取得するＳ２１。純正のｉＯＳによって許可されたソフトウェア保護技法を、純正デバイスのバージョンに適用して、純正デバイスのための保護されたバージョンを取得しＳ２２、脱獄されたｉＯＳに特有のソフトウェア保護技法を、脱獄されたデバイスのバージョンに適用して、脱獄されたデバイスのための保護されたバージョンを取得するＳ２３。次に、脱獄検出機能を生成しＳ２４、脱獄検出機能、純正デバイス上での使用のためのバージョン、脱獄されたデバイス上での使用のためのバージョンを含む、アプリケーションパッケージを生成しＳ２５、ｉＯＳデバイスに出力するＳ２６。【選択図】図２
2017004528.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムを有し純正であるまたは脱獄されている実行デバイスによって実行されることを意図したモジュールを保護するためのアプリケーションプロバイダデバイスであって、
純正実行デバイス上で実行されることを意図した前記モジュールの第１のバージョンを取得する手段であって、前記第１のバージョンは、前記純正デバイス上の前記オペレーティングシステムによって許可された第１のソフトウェア保護技法を実施する、前記第１のバージョンを取得する手段と、
脱獄されたデバイス上で実行されることを意図した前記モジュールの第２のバージョンを取得する手段であって、前記第２のバージョンは、前記純正デバイス上の前記オペレーティングシステムによって許可されない第２のソフトウェア保護技法を実施する、前記第２のバージョンを取得する手段と、
前記実行デバイスが純正であるか脱獄されているかを決定し、前記実行デバイスが純正である場合は前記モジュールの前記第１のバージョンを呼び出し、前記実行デバイスが脱獄されている場合は前記モジュールの前記第２のバージョンを呼び出すように構成された脱獄検出機能を取得する手段と、
前記脱獄検出機能、前記モジュールの前記第１のバージョン、および前記モジュールの前記第２のバージョンを備えたアプリケーションパッケージを生成する手段と、
前記アプリケーションパッケージを出力する手段と、
を備える、前記アプリケーションプロバイダデバイス。
【請求項２】
前記モジュールの前記第１のバージョンを保護するために、前記第１のソフトウェア保護技法を用いる手段をさらに備える、請求項１に記載のアプリケーションプロバイダデバイス。
【請求項３】
前記第１のソフトウェア保護技法は、制御フローグラフ平坦化、および前記実行デバイスが純正であることの検証の少なくとも１つを備える、請求項２に記載のアプリケーションプロバイダデバイス。
【請求項４】
前記モジュールの前記第２のバージョンを保護するために、前記第２のソフトウェア保護技法を用いる手段をさらに備える、請求項１に記載のアプリケーションプロバイダデバイス。
【請求項５】
前記第２のソフトウェア保護技法は動的暗号化である、請求項４に記載のアプリケーションプロバイダデバイス（１１０）。
【請求項６】
オペレーティングシステムを有し、純正であるまたは脱獄されている実行デバイスによって実行されることを意図したモジュールを保護するための方法であって、アプリケーションプロバイダデバイスにおいて、
取得手段によって、
純正実行デバイス上で実行されることを意図した前記モジュールの第１のバージョンであって、前記純正デバイス上の前記オペレーティングシステムによって許可された第１のソフトウェア保護技法を実施する、前記第１のバージョンと、
脱獄されたデバイス上で実行されることを意図した前記モジュールの第２のバージョンであって、前記純正デバイス上の前記オペレーティングシステムによって許可されない第２のソフトウェア保護技法を実施する、前記第２のバージョンと、
前記実行デバイスが純正であるか脱獄されているかを決定し、前記実行デバイスが純正である場合は前記モジュールの前記第１のバージョンを呼び出し、前記実行デバイスが脱獄されている場合は前記モジュールの前記第２のバージョンを呼び出すように構成された脱獄検出機能と、
を取得するステップと、
生成手段によって、前記脱獄検出機能、前記モジュールの前記第１のバージョン、および前記モジュールの前記第２のバージョンを備えたアプリケーションパッケージを生成するステップと、
出力手段によって、前記アプリケーションパッケージを出力するステップと、
を含む、前記方法。
【請求項７】
前記モジュールの前記第１のバージョンを保護するために、第１の使用手段によって、前記第１のソフトウェア保護技法を用いるステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記第１のソフトウェア保護技法は、制御フローグラフ平坦化、および前記実行デバイスが純正であることの検証の少なくとも１つを備える、請求項７に記載の方法。
【請求項９】
前記モジュールの前記第２のバージョンを保護するために、第２の使用手段によって、前記第２のソフトウェア保護技法を用いるステップをさらに含む、請求項６に記載の方法。
【請求項１０】
前記第２のソフトウェア保護技法は動的暗号化である、請求項９に記載の方法。
【請求項１１】
プロセッサーによって実行可能なプログラムコード命令を備えたコンピュータプログラムであって、前記プログラムコードは、
純正実行デバイス上で実行されることを意図したモジュールの第１のバージョンであって、前記純正デバイス上のオペレーティングシステムによって許可された第１のソフトウェア保護技法を実施する、前記第１のバージョンと、
脱獄されたデバイス上で実行されることを意図した前記モジュールの第２のバージョンであって、前記純正デバイス上の前記オペレーティングシステムによって許可されない第２のソフトウェア保護技法を実施する、前記第２のバージョンと、
脱獄機能を実行しているデバイスが純正であるか脱獄されているかを決定し、前記実行デバイスが純正である場合は前記モジュールの前記第１のバージョンを呼び出し、前記実行デバイスが脱獄されている場合は前記モジュールの前記第２のバージョンを呼び出すように構成された脱獄検出機能と、
を備える、前記コンピュータプログラム。
【請求項１２】
オペレーティングシステムを有する実行デバイスであって、
−  メモリであって、純正実行デバイス上で実行されることを目的とし、前記純正デバイス上の前記オペレーティングシステムによって許可された第１のソフトウェア保護技法を実施する、モジュールの第１のバージョンと、脱獄されたデバイス上で実行されることを目的とし、前記純正デバイス上の前記オペレーティングシステムによって許可されない第２のソフトウェア保護技法を実施する、前記モジュールの第２のバージョンと、脱獄機能を実行している前記デバイスが純正であるか脱獄されているかを決定するように構成された前記脱獄検出機能と、を記憶するメモリと、
−  前記実行デバイスが純正であるか脱獄されているかを決定するために、前記脱獄検出機能を実行する手段と、
−  前記実行デバイスが純正であると決定された場合は、前記モジュールの前記第１のバージョンを呼び出し、前記実行デバイスが脱獄されていると決定された場合は、前記モジュールの前記第２のバージョンを呼び出す手段と、
を備える、前記実行デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般にソフトウェア保護に関し、具体的にはｉＯＳ上で実行されるソフトウェアの保護に関する。
【背景技術】
【０００２】
この項は、以下で述べられおよび／または特許請求される本開示の様々な態様に関連し得る技術の様々な態様を、読者に紹介するためのものである。この考察は、本開示の様々な態様のより良い理解を容易にするために、背景情報を読者にもたらすのに役立つと考えられる。従ってこれらの記述はこの観点から読まれるべきであり、従来技術であることを認めるものではないことが理解されるべきである。
【０００３】
ｉＯＳアプリケーションは、供給源から、それらがインストールされることになるｉＯＳデバイスへ暗号化されて配布されることによって、リバースエンジニアリングに対して保護される。ｉＯＳデバイスにインストールされた後に、ｉＯＳ自体はプロセスの隔離および権限の分離を用いて動的解析に対してアプリケーションを保護する。
【０００４】
しかし保護は、脱獄され（jailbroken）ていないｉＯＳデバイスのみに適用される。「Ｈａｃｋｉｎｇ  ａｎｄ  Ｓｅｃｕｒｉｎｇ  ｉＯＳ  Ａｐｐｌｉｃａｔｉｏｎｓ」においてＪｏｎａｔｈａｎ  Ｚｄｚｉａｒｓｋｉによって説明されているように、ＧＮＵデバッガ（ｇｄｂ）を用いて、脱獄されたデバイスからアプリケーションのコードをダンプすることは容易である。脱獄されたデバイスは、脱獄されていないデバイス上では使用できない拡大された権限を得るために変更される。
【０００５】
従ってｉＯＳによって提供される保護に依存することは十分ではない。しかしｉＯＳは、インストールされたアプリケーション内のいかなるコード変更も許可しないので、用いることができる唯一のソフトウェア保護機構は、完全性チェックおよび制御フローグラフ（ＣＦＧ）平坦化であり、通常はそれらの両方が一緒に用いられる。ｉＯＳによって提供される暗号化は弱く、アプリケーションはまた静的解析を用いたリバースエンジニアリングに対して脆弱であるので、しばしばこれらのソフトウェア保護機構が必要とされる。
【０００６】
しかしまたＣＦＧ平坦化は、動的攻撃ではなく静的攻撃のみに有効であり、「Ａ  Ｇｅｎｅｒｉｃ  Ａｔｔａｃｋ  ｏｎ  Ｃｈｅｃｋｓｕｍｍｉｎｇ−Ｂａｓｅｄ  Ｓｏｆｔｗａｒｅ  Ｔａｍｐｅｒ  Ｒｅｓｉｓｔａｎｃｅ」で述べられているように、Ｗｕｒｓｔｅｒらは、２つのコードセクションを並列に実行することによって、完全性チェックを回避することが可能であることを示している。
【０００７】
ｉＯＳアプリケーションの保護に関連する従来の問題の少なくとも一部を克服する解決策を有することが望ましいことが、理解されるであろう。本原理はこのような解決策をもたらす。
【発明の概要】
【０００８】
第１の態様では本原理は、オペレーティングシステムを有し純正であるまたは脱獄されている実行デバイスによって実行されることを意図したモジュールを保護するためのアプリケーションプロバイダデバイスを対象とする。上記アプリケーションプロバイダデバイスは、純正実行デバイス上で実行されることを意図した上記モジュールの第１のバージョンであって、上記純正デバイス上の上記オペレーティングシステムによって許可された第１のソフトウェア保護技法を実施する、上記第１のバージョンと、脱獄されたデバイス上で実行されることを意図した上記モジュールの第２のバージョンであって、上記純正デバイス上の上記オペレーティングシステムによって許可されない第２のソフトウェア保護技法を実施する、上記第２のバージョンと、上記実行デバイスが純正であるか脱獄されているかを決定するように構成された脱獄検出機能と、を取得するための手段と、上記実行デバイスが純正である場合は上記モジュールの上記第１のバージョンを呼び出し、上記実行デバイスが脱獄されている場合は上記モジュールの上記第２のバージョンを呼び出し、上記脱獄検出機能、上記モジュールの上記第１のバージョン、および上記モジュールの上記第２のバージョンを含んだアプリケーションパッケージを生成する手段と、を含む。上記アプリケーションプロバイダデバイスはまた、上記アプリケーションパッケージを出力する手段を含む。
【０００９】
上記第１の態様の様々な実施形態は、以下を含む：
・上記モジュールの上記第１のバージョンを保護するために、上記第１のソフトウェア保護技法を用いる手段。上記第１のソフトウェア保護技法は、制御フローグラフ平坦化、および上記実行デバイスが純正であることの検証の少なくとも１つを含むことができる。
・上記モジュールの上記第２のバージョンを保護するために、上記第２のソフトウェア保護技法を用いる手段。上記第２のソフトウェア保護技法は、動的暗号化とすることができる。
【００１０】
第２の態様では本原理は、オペレーティングシステムを有し純正であるまたは脱獄されている実行デバイスによって実行されることを意図したモジュールを保護するための方法を対象とする。方法は、アプリケーションプロバイダデバイスにおいて、取得するステップであって、純正実行デバイス上で実行されることを意図した上記モジュールの第１のバージョンであって、上記純正デバイス上の上記オペレーティングシステムによって許可された第１のソフトウェア保護技法を実施する、上記第１のバージョンと、脱獄されたデバイス上で実行されることを意図した上記モジュールの第２のバージョンであって、上記純正デバイス上の上記オペレーティングシステムによって許可されない第２のソフトウェア保護技法を実施する、上記第２のバージョンと、上記実行デバイスが純正であるか脱獄されているかを決定し、上記実行デバイスが純正である場合は上記モジュールの上記第１のバージョンを呼び出し、上記実行デバイスが脱獄されている場合は上記モジュールの上記第２のバージョンを呼び出すように構成された脱獄検出機能と、を取得するステップと、上記脱獄検出機能、上記モジュールの上記第１のバージョン、および上記モジュールの上記第２のバージョンを含んだアプリケーションパッケージを生成するステップと、上記アプリケーションパッケージを出力するステップと、を含む。
【００１１】
上記第２の態様の様々な実施形態は、以下を含む：
・上記処理装置は、上記第１のソフトウェア保護技法を用いて、上記モジュールの上記第１のバージョンを保護するようにさらに構成されること。上記第１のソフトウェア保護技法は、制御フローグラフ平坦化、および上記実行デバイスが純正であることの検証の少なくとも１つを含むことができる。
・上記処理装置は、上記モジュールの上記第２のバージョンを保護するために、上記第２のソフトウェア保護技法を用いるようにさらに構成されること。上記第２のソフトウェア保護技法は、動的暗号化とすることができる。
【００１２】
第３の態様では本原理は、プロセッサーによって実行可能なプログラムコード命令を含んだコンピュータプログラムを対象とし、上記プログラムコードは、純正実行デバイス上で実行されることを意図したモジュールの第１のバージョンであって、上記純正デバイス上のオペレーティングシステムによって許可された第１のソフトウェア保護技法を実施する、上記第１のバージョンと、脱獄されたデバイス上で実行されることを意図した上記モジュールの第２のバージョンであって、上記純正デバイス上の上記オペレーティングシステムによって許可されない第２のソフトウェア保護技法を実施する、上記第２のバージョンと、脱獄機能を実行しているデバイスが純正であるか脱獄されているかを決定し、上記実行デバイスが純正である場合は上記モジュールの上記第１のバージョンを呼び出し、上記実行デバイスが脱獄されている場合は上記モジュールの上記第２のバージョンを呼び出すように構成された脱獄検出機能と、を含む。
【００１３】
第４の態様では本原理は、オペレーティングシステムを有する実行デバイスを対象とし、上記実行デバイスは、メモリであって、純正実行デバイス上で実行されることを目的とし、上記純正デバイス上の上記オペレーティングシステムによって許可された第１のソフトウェア保護技法を実施する、モジュールの第１のバージョンと、脱獄されたデバイス上で実行されることを目的とし、上記純正デバイス上の上記オペレーティングシステムによって許可されない第２のソフトウェア保護技法を実施する、上記モジュールの第２のバージョンと、脱獄機能を実行している上記デバイスが純正であるか脱獄されているかを決定するように構成された上記脱獄検出機能と、を記憶するメモリと、上記実行デバイスが純正であるか脱獄されているかを決定するために、上記脱獄検出機能を実行する手段と、上記実行デバイスが純正であると決定された場合は、上記モジュールの上記第１のバージョンを呼び出し、上記実行デバイスが脱獄されていると決定された場合は、上記モジュールの上記第２のバージョンを呼び出す手段と、を含む。
【図面の簡単な説明】
【００１４】
次に添付の図面を参照して、非限定的な例として本原理の好ましい特徴が述べられる。
【図１】本原理を実施するシステム１００を示す図である。
【図２】本原理による、保護されたモジュールを生成する方法を示す図である。
【図３】本原理によるアプリケーションパッケージを示す図である。
【発明を実施するための形態】
【００１５】
図に示される要素は、ハードウェア、ソフトウェア、またはそれらの組み合わせの様々な形で実施され得ることが理解されるべきである。これらの要素は、プロセッサー、メモリ、および入力／出力インターフェースを含むことができる、１または複数の適切にプログラムされた汎用デバイス上のハードウェアおよびソフトウェアの組み合わせにおいて実施されることが好ましい。本明細書では「結合された」という語句は、直接接続される、または１または複数の中間の構成要素を通して接続されることを意味するように定義される。このような中間の構成要素は、ハードウェアおよびソフトウェアベースの構成要素の両方を含むことができる。
【００１６】
この説明は本開示の原理を示す。従って当業者は、本明細書には明示的に述べられないまたは示されないが、本開示の原理を具体化しその範囲内に含まれる様々な構成を考案できることが理解されるであろう。
【００１７】
本明細書に記載されたすべての例および条件的語句は、当技術分野を発展させるための発明者の寄与による本開示の原理および概念の理解において、読者を補助するための教育的な目的のためであり、このような具体的に記載された例および条件に限定されないものと解釈されるべきである。
【００１８】
さらに本明細書における本開示の原理、態様、および実施形態、ならびにそれらの特定の例を述べるすべての記述は、それらの構造的および機能的等価物の両方を包含することが意図される。さらにこのような等価物は、現在知られている等価物、および将来に開発される等価物、すなわち構造に関わらず同じ機能を行う開発された任意の要素の両方を含むことが意図される。
【００１９】
従って例えば当業者には、本明細書において示されたブロック図は、本開示の原理を具体化する説明に役立つ回路の概念的な図を表すことが理解されるであろう。同様にいずれのフローチャート、フロー図、状態遷移図、擬似コードなどは、コンピュータ可読媒体内に実質的に表され得る様々なプロセスを表し、それに従ってコンピュータまたはプロセッサーにより、そのようなコンピュータまたはプロセッサーが明示的に示されているかどうかに関わらず、実行されることが理解されるであろう。
【００２０】
図に示される様々な要素の機能は、専用ハードウェア、ならびに適切なソフトウェアと関連してソフトウェアを実行する能力を有するハードウェアの使用を通じてもたらされ得る。プロセッサーによってもたらされるとき、機能は、単一の専用プロセッサーにより、単一の共有プロセッサーにより、またはそのいくつかは共有され得る複数の個別のプロセッサーによりもたらされ得る。さらに「プロセッサー」または「コントローラ」という用語の明示的な使用は、ソフトウェアを実行する能力を有するハードウェアを排他的に指すものと解釈されるべきではなく、暗黙に、非限定的にディジタル信号プロセッサー（ＤＳＰ）ハードウェア、ソフトウェアを記憶するための読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、および不揮発性ストレージを含むことができる。
【００２１】
また従来型および／またはカスタムの他のハードウェアも含まれ得る。同様に、図に示されるいずれのスイッチも概念的のみである。それらの機能は、プログラムロジックの動作を通して、専用ロジックを通して、プログラム制御と専用ロジックの相互作用を通して、さらには手動で実行することができ、より具体的に状況から理解されるように実施者によって特定の技法を選択することができる。
【００２２】
本明細書の特許請求の範囲において、特定の機能を行う手段として表されるいずれの要素も、その機能を行う任意の方法を包含することが意図され、これは例えば、ａ）その機能を行う回路要素の組み合わせ、またはｂ）任意の形での、従ってその機能を行うようにそのソフトウェアを実行するための適切な回路と組み合わされたファームウェア、マイクロコードなどを含むソフトウェアを含む。このような特許請求の範囲によって定義される本開示は、様々な列挙された手段によってもたらされる機能は、特許請求の範囲が要求するするやり方で組み合わされ一緒にもたらされるという事実にある。従ってそれらの機能をもたらすことができるいずれの手段も、本明細書において示されるものと等価であると見なされる。
【００２３】
説明ではモジュールに言及される。このモジュールは実行可能コードを含み、共有ライブラリ、実行可能なものの内部のもしくはライブラリのコードの一部分、さらにはアプリケーション全体とすることができる。
【００２４】
本原理の方法およびデバイスは、モジュールの２つのバージョンを含んだアプリケーションパッケージをもたらし、すなわち脱獄されていないデバイス（本明細書の以下では「純正デバイス」と呼ばれる）上で実行されることになる１つのバージョン、および脱獄されたデバイス上で実行されることになる１つのバージョンである。各バージョンは同じ機能を実施するが、異なるソフトウェア保護機構を用いて保護される（しかしいくつかのソフトウェア保護機構は、両方のバージョンによって共有され得ることが理解されるであろう）。
【００２５】
図１は本原理を実施するシステム１００を示す。システム１００は、ｉＯＳモジュールを生成し、ｉＯＳモジュールを実行するように構成されたｉＯＳデバイス１２０に直接または間接に提供するように構成されたアプリケーションプロバイダ１１０を含む。アプリケーションプロバイダ１１０およびｉＯＳデバイス１２０は、少なくとも１つのハードウェア処理装置（「プロセッサー」）１１１、１２１、メモリ１１２、１２２、および他のデバイスと通信するように構成された少なくとも１つの通信インターフェース１１３、１２３を含む。当業者には、図示のデバイスは、明瞭にするために非常に簡略化されており、従って内部接続および電源のような機能は示されていないことが理解されるであろう。非一時的記憶媒体１３０は、本明細書の以下でさらに述べられるようにｉＯＳモジュールを記憶する。
【００２６】
図２は本原理による、保護されたモジュールを生成する方法を示す。アプリケーションプロバイダは、純正デバイス上で実行されることになるモジュールのバージョンをステップＳ２０で、および脱獄されたデバイス上で実行されることになるモジュールのバージョンをステップＳ２１で取得する。各バージョンはそれ自体のみ（すなわち他方のバージョンではなく）を参照し、それが脱獄されたデバイスまたは純正デバイスによって実行されるためのものかどうかに応じて、特定のソフトウェア保護機構を用いて保護される。
【００２７】
純正デバイス上では、ユーザモジュール（すなわちユーザによってダウンロードされたモジュール）は、非ルートで実行する。デバッギング攻撃はオペレーティングシステムによって反撃され、オペレーティングシステムはアプリケーションに対するデフォルトの暗号化、プロセス隔離（サンドボックス化）を適用し、非ルートアプリケーションからのデバッガのアタッチメントを禁止する。ｉＯＳが動的攻撃に対する保護を提供するので、アプリケーションプロバイダ１１０が、純正デバイス自体のバージョンのコードにおいて、例えばＣＦＧ平坦化を用いて、静的解析に対する保護をもたらすことで十分となり得る。さらに、モジュールを保護するために完全性チェックを用いることができる。
【００２８】
脱獄されたデバイス上ではデバッギングまたは動的攻撃はｉＯＳによって防止されないが、ただ同時に、脱獄によって生成される破損サンドボックス隔離（broken sandbox isolation）など、ｉＯＳの変更されたシステム権限は、動的コード暗号化（自己書き換えコード）およびアンチデバッギングのような、低レベルソフトウェア保護機構の使用を可能にする。これはアプリケーションプロバイダが、脱獄されたデバイスのバージョン内に、このようなソフトウェア保護機構を含めることを可能にする。従って脱獄されたデバイスのバージョンは、例えば動的暗号化および完全性チェックを用いて、動的攻撃に対して保護され得る。
【００２９】
ステップＳ２２でアプリケーションプロバイダ１１０は、純正のｉＯＳによって許可された少なくとも１つのソフトウェア保護技法を、純正デバイスのバージョンに適用して、純正デバイスのための保護されたバージョンを取得し、ステップＳ２３でアプリケーションプロバイダ１１０は、脱獄されたｉＯＳに特有の（すなわち脱獄されたｉＯＳによって許可されるが、純正のｉＯＳには許可されない）少なくとも１つのソフトウェア保護技法を、脱獄されたデバイスのバージョンに適用して、脱獄されたデバイスのための保護されたバージョンを取得する。またステップＳ２０およびＳ２１で取得されたバージョンは、バージョンが取得されたときに、すでにこれらのソフトウェア保護方法を用いて保護されていることが可能である。
【００３０】
次いでステップＳ２４でアプリケーションプロバイダ１１０は、脱獄検出機能を生成する。脱獄検出機能は、それが実行されるデバイスが純正デバイスであるか脱獄されたデバイスであるかを決定する能力を有する。純正デバイス上では分岐（forking）は許可されないので、脱獄検出機能は例えばｆｏｒｋ（）を用い、分岐が成功したかどうかを見るために返されたプロセスｉｄをチェックすることができ、そうである場合、デバイスは脱獄されたと決定することができる。同様に、ヌルの引数を有するｓｙｓｔｅｍ（）の呼び出しは、脱獄されたデバイス上では１を返し、純正デバイス上では０を返し、これもまた脱獄の決定を可能にする。他の脱獄検出機能は、Ｚｄｚｉａｒｓｋｉにより「Ｈａｃｋｉｎｇ  ａｎｄ  Ｓｅｃｕｒｉｎｇ  ｉＯＳ  Ａｐｐｌｉｃａｔｉｏｎｓ」で述べられている。脱獄検出機能は、脱獄を検出する複数の異なる方法を用いることが好ましい。
【００３１】
脱獄検出機能はまた、検出がこのバージョンの実行時にも行われるように、純正デバイスのバージョンのコード内に挿入されることが好ましい。純正バージョンの内部の脱獄検出機能は、完全性チェックによって保護され、実行デバイスが脱獄されていると決定された場合は実行フローを変えるように構成されることが好ましい。脱獄検出機能の純正バージョンへの挿入は、この時点でまたはそれより前に、純正バージョンを保護するときに行うことができる。
【００３２】
次いでステップＳ２５でアプリケーションプロバイダ１１０は、脱獄検出機能、純正デバイス上での使用のためのバージョン、脱獄されたデバイス上での使用のためのバージョンを含む、アプリケーションパッケージを生成し、脱獄検出機能は、実行デバイスの脱獄状態、すなわち純正であるか脱獄されているかに応じて適切なバージョンを呼び出す。ステップＳ２６でアプリケーションプロバイダ１１０は、アプリケーションパッケージを、ｉＯＳデバイス１２０に直接、または中間記憶部（図示せず）に出力する。
【００３３】
図３は、実行デバイスの脱獄状態を決定し、次いでアプリケーションの純正バージョン３２０または脱獄されたバージョン３３０を呼び出すように構成された、脱獄検出機能３１０を含む本原理によるアプリケーションパッケージ３００を示す。純正バージョンのコードは、述べられたように複数の脱獄検出機能３２５を含む。
【００３４】
図３ではアプリケーションパッケージ３００は、３つのモジュール、すなわち脱獄検出機能３１０、およびモジュールの２つのバージョン３２０、３３０を有するように示される。３つのモジュールは、実行時に脱獄検出機能３１０に届き、脱獄検出機能３１０が次いでどのバージョンを実行するかを決定する、単一のアプリケーションの一部とすることができることが理解されるであろう。
【００３５】
変形形態ではアプリケーションパッケージは、３つのアプリケーションを含み、各アプリケーションは、脱獄検出機能および２つのバージョンの１つを含む。脱獄検出機能を含んだアプリケーションは、最初に実行されることになり、それはデバイスが脱獄されているか否かの決定の結果に応じて、他の２つのアプリケーションの１つを呼び出す。
【００３６】
従って本原理は、少なくともいくつかの場合において従来の保護方法を改善することができる、ｉＯＳソフトウェアモジュールのソフトウェア保護のための解決策をもたらすことが理解されるであろう。具体的には実施形態に応じて本原理は、同じアプリケーションパッケージを純正デバイスおよび脱獄されたデバイスに配布することを可能にすることができる。
【００３７】
本原理は、それらが最も関心のある使用をもたらし得る場合であると考えられるので、ｉＯＳとの使用に対して述べられてきた。しかし、特にそれらがメモリページにおける書き込み許可を制限する場合に、アンドロイドなどの他の（セキュアな）オペレーティングシステムに対しても、本原理は用いられ得ることが理解されるであろう。
【００３８】
説明において開示された各特徴、ならびに（適切な場合に）請求項および図面は、単独でまたは任意の適切な組み合わせにおいてもたらされ得る。ハードウェアにおいて実施されるものとして述べられた特徴は、ソフトウェアにおいても実施することができ、逆も同様である。請求項内に現れる参照番号は、例示のためのみであり、請求項の範囲に対していかなる限定効果を有するものではない。
【図１】
2017004528.tif 000003
【図２】
2017004528.tif 000004
【図３】
2017004528.tif 000005
【外国語明細書】
2017004528000001.pdf