(57)【特許請求の範囲】
【請求項１】
モバイル応用プログラムの一般コードを実行するメインプロセッサと、
前記モバイル応用プログラムの核心コードを実行するコプロセッサと、
前記メインプロセッサ及び前記コプロセッサの間に連結されて、前記メインプロセッサ及び前記コプロセッサ間の通信を可能にするコプロセッサドライバと、
データを暗号化して共有するための暗号化共有メモリと、を含み、
前記一般コードは、前記メインプロセッサで実行可能な命令語で構成され、前記核心コードは、前記コプロセッサで実行可能な命令語で構成され、
前記メインプロセッサは、
前記一般コードを実行する最中に前記核心コードを呼び出すとき、前記暗号化共有メモリを初期化し、前記一般コードのデータを暗号化された形態で前記暗号化共有メモリに作成し、
前記コプロセッサは、
前記暗号化共有メモリに作成された暗号化されたデータを復号して参照する
モバイル機器。
【請求項２】
前記コプロセッサにのみ接近が許容され、前記核心コードを保存する核心コード保存所をさらに含み、
前記コプロセッサは、
前記モバイル応用プログラムの設置時に、前記モバイル応用プログラムから分離された前記核心コードを前記核心コード保存所に保存する請求項１に記載のモバイル機器。
【請求項３】
前記コプロセッサドライバは、
前記メインプロセッサから核心コード呼び出しを要請されれば、前記コプロセッサに前記核心コード呼び出しを伝達し、前記コプロセッサから核心コード処理結果を受信して、前記メインプロセッサに伝達する請求項２に記載のモバイル機器。
【請求項４】
前記コプロセッサは、
前記コプロセッサドライバから前記核心コード呼び出しが伝達されれば、前記核心コード保存所から前記核心コードをロードして実行する請求項３に記載のモバイル機器。
【請求項５】
前記コプロセッサは、
前記核心コードを実行する最中に核心コードのデータを暗号化された形態で前記暗号化共有メモリに作成し、
前記メインプロセッサは、
前記暗号化共有メモリに作成された暗号化されたデータを復号して参照する請求項１に記載のモバイル機器。
【請求項６】
前記核心コードは、
ユーザによって選択されるか、モバイルプラットフォームであらかじめ定義した関数を用いて選択される請求項１に記載のモバイル機器。
【請求項７】
モバイル応用プログラムの一般コードを実行するメインプロセッサ、前記モバイル応用プログラムの核心コードを実行するコプロセッサ、前記メインプロセッサと前記コプロセッサとの間の通信を可能にするコプロセッサドライバ、及びデータを暗号化して共有するための暗号化共有メモリを含むモバイル機器の動作方法であって、
前記メインプロセッサが、前記コプロセッサで実行可能な命令語で構成されたモバイル応用プログラムの核心コードを呼び出す段階と、
前記コプロセッサドライバが、前記メインプロセッサから核心コード呼び出しを受信して、前記コプロセッサに伝達する段階と、
前記コプロセッサが核心コードを実行した後、実行結果を前記コプロセッサドライバに伝達する段階と、
前記コプロセッサドライバが、前記実行結果を前記メインプロセッサに伝達する段階と、を含み、
前記メインプロセッサは、
前記核心コードを呼び出すとき、前記暗号化共有メモリを初期化し、前記一般コードのデータを暗号化された形態で前記暗号化共有メモリに作成し、
前記コプロセッサは、
前記暗号化共有メモリに作成された暗号化されたデータを復号して参照する
モバイル機器の動作方法。
【請求項８】
前記呼び出す段階以前に、
前記コプロセッサが、前記モバイル応用プログラムの設置時に、前記モバイル応用プログラムから分離された前記核心コードを核心コード保存所に保存する段階をさらに含み、
前記コプロセッサドライバから前記コプロセッサに、核心コード呼び出しが伝達されたことに応じて、前記コプロセッサが、前記核心コード保存所から前記核心コードをロードして実行する段階をさらに含む請求項７に記載のモバイル機器の動作方法。
【請求項９】
前記呼び出す段階は、
前記メインプロセッサが、前記メインプロセッサで実行可能な命令語で構成された前記モバイル応用プログラムの一般コードを実行する段階と、
前記核心コード呼び出しが必要であると判断されれば、核心コード呼び出しを前記コプロセッサドライバに対して送信する段階と、を含む請求項８に記載のモバイル機器の動作方法。
【請求項１０】
前記メインプロセッサが、前記一般コードを実行する最中に前記核心コードを呼び出すとき、前記一般コードのデータを暗号化された形態で前記暗号化共有メモリに作成する段階と、
前記コプロセッサが、前記核心コードを実行する最中に前記核心コードのデータを暗号化された形態で前記暗号化共有メモリに作成する段階と、
前記メインプロセッサ及び前記コプロセッサが、前記暗号化共有メモリを通じて暗号化されたデータを共有する段階と、をさらに含む請求項９に記載のモバイル機器の動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モバイル機器及び該モバイル機器の動作方法に係り、より詳細に説明すれば、モバイル応用プログラムの核心コードを保護するモバイル機器及び該モバイル機器の動作方法に関する。
【背景技術】
【０００２】
多くのユーザがスマートフォンバンキングを用いるが、まだスマートフォンバンキングの保安は脆弱である。スマートフォンは、共用ネットワーク網に該当するインターネットに連結するので、保安の危険性が大きい。インターネット網を通じて侵入したハッカーがスマートフォン内の情報を流出し、悪性コードやフィッシング攻撃からも自由ではない。また、偽造・変造バンキングアプリケーションでユーザの金融情報が奪取されうる。
【０００３】
スマートフォンバンキングを支援する金融アプリケーションだけではなく、ゲーム、ＳＮＳアプリケーションも保安に脆弱である。
【０００４】
有名ゲームアプリケーションの偽造・変造アプリケーションに挿入されたトロイの木馬型ウィルスで個人情報が流出される事件があり、ＳＮＳアプリケーションの偽造・変造アプリケーションが不法課金する事件もあった。
【０００５】
このようなアプリケーションの偽造・変造を防止し、無欠性を確保しようとするアプリケーション偽造・変造防止ソリューションに関する研究が進められている。主に難読化技法とアンチデバッギング機能とを用いてリバースエンジニアリングと偽造・変造危険性とを低める技術が適用されている。
【０００６】
しかし、応用プログラムレベルで偽造・変造探知用コードを適用して実行する既存の偽造・変造探知技術は、アプリケーションの構造を分析することができて偽造・変造攻撃から安全ではない。特に、アンドロイドモバイルシステムのダルビック仮想マシンで行われるダルビックバイトコードを抽出すれば、当該応用アプリケーションの構造を分析することができる。すなわち、応用プログラムレベルの偽造・変造探知技術は、迂回及び回避が可能である。したがって、応用プログラムレベルではなく、プラットフォームレベルの偽造・変造探知技術が必要である。
【０００７】
既存の技術は、モバイル応用プログラムの核心コードを難読化を進行して核心コードを保護し、インターネット環境のサーバに分離されたファイルを保存することによって、難読化を進行する方法が開示されている。
【０００８】
しかし、インターネット環境が流動的に変わるモバイル環境では、サーバと連結されない可能性が存在し、これにより、実行されない可能性がある。
【０００９】
また、データ消耗量が高すぎると、実際に適用しにくい問題が発生する。
【００１０】
本発明の背景となる技術は、特許文献１に開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】韓国登録特許第１０−１３２８０１２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明が解決しようとする技術的課題は、偽造・変造攻撃に脆弱なモバイル応用プログラムで核心コードを保護するための技法であって、核心コードをメインプロセッサと他のコプロセッサで実行可能な形態に分離することによって、モバイル応用プログラムの核心コードを保護するモバイル機器及び該モバイル機器の動作方法を提供することである。
【課題を解決するための手段】
【００１３】
本発明の１つの特徴によれば、モバイル機器は、モバイル応用プログラムの一般コードを実行するメインプロセッサと、前記モバイル応用プログラムの核心コードを実行するコプロセッサと、前記メインプロセッサ及び前記コプロセッサの間に連結されて、前記メインプロセッサ及び前記コプロセッサ間の通信を可能にするコプロセッサドライバと、を含み、前記一般コードは、前記メインプロセッサで実行可能な命令語で構成され、前記核心コードは、前記コプロセッサで実行可能な命令語で構成される。
【００１４】
本発明の他の特徴によれば、モバイル機器の動作方法は、メインプロセッサ、コプロセッサ及び前記メインプロセッサと前記コプロセッサとの間の通信を可能にするコプロセッサドライバを含むモバイル機器の動作方法であって、前記メインプロセッサが、前記コプロセッサで実行可能な命令語で構成されたモバイル応用プログラムの核心コードを呼び出す段階と、前記コプロセッサドライバが、前記メインプロセッサから核心コード呼び出しを受信して、前記コプロセッサに伝達する段階と、前記コプロセッサが核心コードを実行した後、実行結果を前記コプロセッサドライバに伝達する段階と、前記コプロセッサドライバが、前記実行結果を前記メインプロセッサに伝達する段階と、を含む。
【発明の効果】
【００１５】
本発明の実施形態によれば、モバイル応用プログラム設置時に、核心コードは、運用体制以下レベルで区分して、メインプロセッサと一般コードは、直接接近できない別途の核心コード保存所に設置することによって、核心コードの露出を防止して逆工学抵抗性を増加させる。
【００１６】
また、モバイル機器のコプロセッサで核心コードを実行することによって、核心コードがモバイル機器のメインプロセッサに露出されないために、モバイル機器の中央処理装置を用いた動的分析を防止して逆工学抵抗性を増加させる。
【００１７】
また、コプロセッサを用いることによって、ネットワークを使わなくても良いので、モバイル環境にさらに最適化することができる。そして、核心コードをモバイル機器のコプロセッサに合わせて開発することによって、分離された核心コードの命令語集合や構造が変更されて逆工学分析抵抗性を強化させる。
【００１８】
また、モバイル応用プログラムの実行時点にモバイル機器のメインプロセッサとコプロセッサとが暗号化された共有メモリを共有するために、逆工学抵抗性を増加させる。
【００１９】
また、モバイル応用プログラムは、分離された核心コードを別途に配布する過程が不要であり、モバイル応用プログラムの既存配布過程と異ならず、ユーザ側面では、核心コード分離前と後の使用上の差を感じることができないために、技術導入による拒否感がない。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態によるモバイル応用プログラムのコード区分例示図である。
【図２】本発明の実施形態によるモバイル機器の構成を示すブロック図である。
【図３】図２のメインプロセッサの細部構成を示すブロック図である。
【図４】図２のコプロセッサの細部構成を示すブロック図である。
【図５】本発明の実施形態によるモバイル機器の動作を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、添付した図面を参照して、本発明の実施形態について当業者が容易に実施できるように詳しく説明する。しかし、本発明は、さまざまな異なる形態として具現され、ここで説明する実施形態に限定されるものではない。そして、図面で本発明を明確に説明するために、説明と関係のない部分は省略し、明細書全体を通じて類似した部分については、類似した図面符号を付する。
【００２２】
明細書全体で、ある部分がある構成要素を“含む”とする時、これは、特に反対される記載のない限り、他の構成要素を除くものではなく、他の構成要素をさらに含むことができることを意味する。
【００２３】
また、明細書に記載の“…部”、“…モジュール”という用語は、少なくとも１つの機能や動作を処理する単位を意味し、これは、ハードウェアやソフトウェアまたはハードウェア及びソフトウェアの結合として具現可能である。
【００２４】
以下、図面を参照して、本発明の実施形態によるモバイル機器及び該モバイル機器の動作方法について詳しく説明する。
【００２５】
図１は、本発明の実施形態によるモバイル応用プログラムのコード区分例示図である。
【００２６】
図１を参照すれば、モバイル応用プログラムは、モバイル機器に設けられて実行可能な応用プログラムを意味する。例えば、スマートフォンで実行されるアプリ（ａｐｐ）を含む。ユーザは、アプリ（ａｐｐ）をモバイルコンテンツを自在に売買する仮想の市場であるモバイルアプリケーションマーケットでダウンロードされて、スマートフォンなどのモバイル機器に設置することができる。
【００２７】
ここで、モバイル機器は、モバイル応用プログラムを設置して実行する端末機であって、スマートフォン、スマートパッド、携帯電話、ノート型パソコン、タブレットＰＣ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）などが該当する。特に、スマートフォンまたはスマートパッドの場合、応用プログラムは、機器上にアプリケーションで提供することができる。
【００２８】
この際、モバイル応用プログラムは、偽造・変造行為から保護する必要がある核心コードで構成された核心コードファイルと、核心コードを除いた一般コードで構成された一般コードファイルとに基づいて構成される。
【００２９】
核心コードは、モバイルプラットフォームであらかじめ定義した関数を使って設定しうる。また、ユーザまたは当該応用プログラムの開発者や認証関連関係者から直接設定されることもある。
【００３０】
核心コードは、応用プログラムを実行する時、省略が不可能であり、必ず一回以上実行されなければならない部分に選択されうる。すなわち、分岐文や条件文などで実行順序が多様な条件によって変更されない部分が核心コードに選択されうる。
【００３１】
モバイル機器は、モバイル応用プログラムのパッケージングによって相対的に露出が容易なモバイル応用プログラムで、このような核心コードを保護するが、難読化技法をモバイル機器のメインプロセッサとコプロセッサとに分散的に適用することによって、逆工学難易度を高めうる。このような構成について図２〜図５を参照して詳しく説明する。
【００３２】
図２は、本発明の実施形態によるモバイル機器の構成を示すブロック図であり、図３は、図２のメインプロセッサの細部構成を示すブロック図であり、図４は、図２のコプロセッサの細部構成を示すブロック図である。
【００３３】
まず、図２を参照すれば、モバイル機器は、システム・オン・チップ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ）２００、メインプロセッサ３００、コプロセッサ４００、コプロセッサドライバ５００、核心コード保存所６００、一般コード保存部７００、動的ランダムアクセスメモリ（ＤＲＡＭ、Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８００、暗号化共有メモリ９００を含む。
【００３４】
システム・オン・チップ２００は、メインプロセッサ３００及びコプロセッサ４００を含む。メインプロセッサ３００は、モバイル応用プログラム命令語に応答してデータ処理演算を行う。メインプロセッサ３００は、モバイル応用プログラムの一般コードを実行する。一般コードは、メインプロセッサ３００で実行可能な命令語で構成される。
【００３５】
図３を参照すれば、メインプロセッサ３００は、一般コード実行部３０１、核心コード呼び出し部（Ｓｔｕｂ）３０３及び共有メモリ暗復号部３０５を含む。
【００３６】
一般コード実行部３０１は、モバイル応用プログラムの一般コードを実行する。
【００３７】
核心コード呼び出し部３０３は、一般コードを実行する最中に核心コードを呼び出すが、呼び出し情報をコプロセッサドライバ５００に伝達する。そして、コプロセッサ４００の核心コード処理結果をコプロセッサドライバ５００から伝達される。
【００３８】
共有メモリ暗復号部３０５は、一般コード実行部３０１が実行した実行コードを暗号化された形態で暗号化共有メモリ９００に作成する。そして、暗号化共有メモリに作成されたコプロセッサ４００の暗号化された実行コードを復号して参照する。
【００３９】
再び、図２を参照すれば、コプロセッサ４００は、コプロセッサドライバ５００を通じてメインプロセッサ３００と通信する。コプロセッサ４００は、メインプロセッサ３００の呼び出しに応答して所定の演算を行う。
【００４０】
コプロセッサ４００は、モバイル応用プログラムの核心コードを実行する。核心コードは、コプロセッサ４００で実行可能な命令語で構成される。
【００４１】
図４を参照すれば、コプロセッサ４００は、核心コード実行部４０１、核心コード応答部４０３及び共有メモリ暗復号部４０５を含む。
【００４２】
核心コード実行部４０１は、核心コード保存所６００から核心コードをロードして実行する。
【００４３】
核心コード応答部（Ｓｋｅｌｅｔｏｎ）４０３は、コプロセッサドライバ５００を通じてメインプロセッサ３００から核心コード呼び出しを伝達される。そして、核心コード実行部４０１の核心コード処理結果をコプロセッサドライバ５００に伝達する。
【００４４】
共有メモリ暗復号部４０５は、暗号化共有メモリ９００に作成されたメインプロセッサ３００の暗号化された実行コードを復号して参照する。そして、核心コードを実行する最中に核心コードの実行コードを暗号化された形態で暗号化共有メモリ９００に作成する。
【００４５】
再び、図２を参照すれば、コプロセッサドライバ５００は、メインプロセッサ３００及びコプロセッサ４００の間に連結されて、メインプロセッサ３００及びコプロセッサ４００間の通信を可能にする。
【００４６】
コプロセッサドライバ５００は、メインプロセッサ３００から核心コード呼び出しを要請されれば、コプロセッサ４００に核心コード呼び出しを伝達する。そして、コプロセッサ４００から核心コード処理結果を受信してメインプロセッサ３００に伝達する。
【００４７】
核心コード保存所６００は、コプロセッサ４００にのみ接近が許容され、核心コードを保存する。コプロセッサ４００は、モバイル応用プログラムの設置時に、モバイル応用プログラムから分離された核心コードを核心コード保存所６００に保存する。
【００４８】
一般コード保存部７００は、モバイル応用プログラムの一般コードを保存する。
【００４９】
動的ランダムアクセスメモリ（ＤＲＡＭ）８００は、暗号化共有メモリ９００を含む。暗号化共有メモリ９００は、メインプロセッサ３００の実行コードまたはコプロセッサ４００のデータを暗号化する。そして、メインプロセッサ３００及びコプロセッサ４００間に暗号化されたデータを互いに共有する。
【００５０】
前述した構成に基づいてモバイル機器の動作を説明すれば、次の通りである。
【００５１】
図５は、本発明の実施形態によるモバイル機器の動作を示すフローチャートである。
【００５２】
図５を参照すれば、メインプロセッサ３００は、モバイル応用プログラムの一般コードを設置する（ステップＳ１０１）。
【００５３】
コプロセッサ４００は、核心コード保存所６００にモバイル応用プログラムの核心コードを設置する（ステップＳ１０３）。
【００５４】
このように、モバイル機器は、コプロセッサを用いたモバイル応用プログラムの設置時に、一般コード設置と核心コード設置とに区分され、核心コードは、一般コードとメインプロセッサが接近できない別途の核心コード保存所に設けられ、コプロセッサによって行われる。
【００５５】
以後、メインプロセッサ３００は、一般コードを実行（ステップＳ１０５）する最中に核心コードを呼び出すとき、暗号化された共有メモリ９００を初期化する（ステップＳ１０７）。そして、必要に応じて、暗号化された共有メモリ９００にデータを作成する（ステップＳ１０９）。すなわち、モバイル応用プログラム実行時に、一般コード実行中、核心コード呼び出し（Ｓｔｕｂ）時に、必要に応じて暗号化された共有メモリを初期化し、データを暗号化する。
【００５６】
メインプロセッサ３００は、コプロセッサドライバ５００に核心コード呼び出しを伝達する（ステップＳ１１１）。そうすると、コプロセッサドライバ５００は、核心コード呼び出し情報をコプロセッサ４００に伝達する（ステップＳ１１３）。すなわち、コプロセッサドライバ５００に核心コード呼び出し情報を伝達して、メインプロセッサ３００は、コプロセッサ４００と通信する。
【００５７】
コプロセッサ４００は、核心コード保存所６００から核心コードをロード（ステップＳ１１５）して実行する（ステップＳ１１７）。
【００５８】
コプロセッサ４００は、暗号化共有メモリ９００にデータを作成する（ステップＳ１１９）。
【００５９】
コプロセッサ４００は、核心コード実行後、核心コード処理結果をコプロセッサドライバ５００に伝達する（ステップＳ１２１）。
【００６０】
そうすると、コプロセッサドライバ５００は、処理結果をメインプロセッサ３００に伝達する（ステップＳ１２３）。したがって、コプロセッサ４００は、コプロセッサドライバ５００に核心コード処理結果を伝達してメインプロセッサ３００と通信する。
【００６１】
前述したように、一般コードは、メインプロセッサ３００でのみ実行し、分離された核心コードは、コプロセッサ４００で実行して、実行時点に核心コードをメインプロセッサ３００に露出せず、メインプロセッサ３００とコプロセッサ４００との間の暗号化共有メモリ９００は、暗号化するために、相対的に逆工学が難しくなる。
【００６２】
前述した本発明の実施形態は、装置及び方法を通じる具現に限らず、本発明の実施形態の構成に対応する機能を実現するプログラムまたはそのプログラムが記録された記録媒体を通じて具現されることもある。
【００６３】
以上、本発明の実施形態について詳細に説明したが、本発明の権利範囲は、これに限定されるものではなく、次の特許請求の範囲で定義している本発明の基本概念を用いた当業者の多様な変形及び改良形態も、本発明の権利範囲に属するものである。
【産業上の利用可能性】
【００６４】
本発明は、モバイル機器及び該モバイル機器の動作方法関連の技術分野に適用可能である。
【符号の説明】
【００６５】
１００：応用プログラム提供サーバ
１０１：一般コード
１０３：核心コード
２００：システム・オン・チップ
３００：メインプロセッサ
３０１：一般コード実行部
３０３：核心コード呼び出し部
３０５：共有メモリ暗復号部
４００：コプロセッサ
４０１：核心コード実行部
４０３：核心コード応答部
４０５  共有メモリ暗号化部
５００：コプロセッサドライバ
６００：核心コード保存所
７００：一般コード保存部
８００：動的ランダムアクセスメモリ
９００：暗号化共有メモリ
【図１】
0006297149.tif 000002
【図２】
0006297149.tif 000003
【図３】
0006297149.tif 000004
【図４】
0006297149.tif 000005
【図５】
0006297149.tif 000006