JP5798959B2 - パッケージ生成装置、パッケージ生成方法、プログラム - Google Patents

パッケージ生成装置、パッケージ生成方法、プログラム Download PDF

Info

Publication number
JP5798959B2
JP5798959B2 JP2012060239A JP2012060239A JP5798959B2 JP 5798959 B2 JP5798959 B2 JP 5798959B2 JP 2012060239 A JP2012060239 A JP 2012060239A JP 2012060239 A JP2012060239 A JP 2012060239A JP 5798959 B2 JP5798959 B2 JP 5798959B2
Authority
JP
Japan
Prior art keywords
application
verification
package
data
execution file
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
JP2012060239A
Other languages
English (en)
Other versions
JP2013196123A (ja
Inventor
市原 尚久
尚久 市原
智 飯塚
智 飯塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Data Corp
Original Assignee
NTT Data Corp
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 NTT Data Corp filed Critical NTT Data Corp
Priority to JP2012060239A priority Critical patent/JP5798959B2/ja
Publication of JP2013196123A publication Critical patent/JP2013196123A/ja
Application granted granted Critical
Publication of JP5798959B2 publication Critical patent/JP5798959B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Description

本発明は、アプリケーションの正当性を検証する技術に関する。
コンピュータ装置にアプリケーションをインストールするアプリケーションパッケージには、そのアプリケーションの処理を行う実行ファイルの他に、そのアプリケーションを動作させるための設定情報や、アプリケーションを動作する際に画面に表示させる画像データ等が含まれる。このようなアプリケーションパッケージに、そのアプリケーションパッケージの作成者の電子署名を含ませておき、アプリケーションをコンピュータ装置にインストールする際に電子署名に基づく検証処理を行うことにより、そのアプリケーションパッケージの正当性を検証することができる(例えば、特許文献1)。
特表2007−535053号公報
しかしながら、上述のような検証方法では、そのアプリケーションパッケージが、開発完了時点のものと同一であることを検証することはできない。例えば、他者が開発して生成したアプリケーションパッケージをリバースエンジニアリングし、改ざん等を行って新たな配布者が無断でパッケージ化して配布する場合でも、その新たな配布者が自身の電子署名を付して新たなアプリケーションパッケージを配布すれば、電子署名による検証結果は正当と判定される。これでは、開発者がアプリケーションパッケージを配布した後に、アプリケーションが第三者によって改ざんされたり、悪意のあるコードが追加されたりして新たに作成されたアプリケーションパッケージが配布される可能性があると考えられる。すなわち、上述のような検証方法では、そのアプリケーションパッケージに基づいてアプリケーションがインストールされ、利用される段階において、そのアプリケーションが開発完了後に第三者によって改ざん等されたものでなく、開発完了時点のものと同一であることを検証することはできない。そこで、このようなアプリケーションパッケージが、そのアプリケーションの開発者によって作成された開発完了時点と同一であり、改ざん等がされていない正当なものであるか否かを検証し、作成時の正当性を担保することが望ましい。
本発明は、このような状況に鑑みてなされたもので、アプリケーションの正当性を検証するパッケージ生成装置、パッケージ生成方法、プログラムを提供する。
上述した課題を解決するために、本発明は、アプリケーションの実行ファイルが含まれる第1のパッケージを生成する第1のパッケージ生成部と、前記実行ファイルに対する署名データを生成する署名生成部と、前記実行ファイルと、前記署名データと、前記アプリケーションが動作する際に前記実行ファイルに基づいて、前記署名データを検証する検証データを生成し、生成した検証データを用いて前記署名データの検証処理を行う検証モジュールと、が含まれる第2のパッケージを生成する第2のパッケージ生成部と、を備え、前記アプリケーションの実行ファイルは、第1のプログラミング言語により記述されたソースコードに基づいて生成される中間コードであり、前記検証モジュールは、前記アプリケーションの実行ファイルから呼び出されて動作するものであり、前記第1のプログラミング言語よりも実行ファイルからソースコードが解析され難い第2のプログラミング言語により記述されたソースコードに基づいて生成されるネイティブコードであることを特徴とする。
また、本発明は、検証モジュールは、アプリケーションが動作するために必要な機能を備えており、アプリケーションが機能を動作させる際に実行され、検証モジュールは、検証処理の処理結果に基づいて機能を実行することを特徴とする。
また、本発明は、署名データには、検証処理に不要なダミーデータが含まれることを特徴とする。
また、本発明は、前記署名データが、ダミーデータの個数、複数のダミーデータのうちの何番目に正しい署名データが存在するかを示す情報、複数のダミーデータのうちの改行されている箇所を示す情報に基づいて生成されることを特徴とする。
また、本発明は、第1のパッケージ生成部が、アプリケーションの実行ファイルが含まれる第1のパッケージを生成する第1のパッケージ生成ステップと、署名生成部が、前記実行ファイルに対する署名データを生成する署名生成ステップと、第2のパッケージ生成部が、前記実行ファイルと、前記署名データと、前記アプリケーションが動作する際に前記実行ファイルに基づいて、前記署名データを検証する検証データを生成し、生成した検証データを用いて前記署名データの検証処理を行う検証モジュールと、が含まれる第2のパッケージを生成する第2のパッケージ生成ステップと、を備え、前記アプリケーションの実行ファイルは、第1のプログラミング言語により記述されたソースコードに基づいて生成される中間コードであり、前記検証モジュールは、前記アプリケーションの実行ファイルから呼び出されて動作するものであり、前記第1のプログラミング言語よりも実行ファイルからソースコードが解析され難い第2のプログラミング言語により記述されたソースコードに基づいて生成されるネイティブコードであることを特徴とする
また、本発明は、アプリケーションの実行ファイルと、前記実行ファイルに対して生成された署名データとが記憶されているコンピュータ、アプリケーションの実行ファイルが含まれる第1のパッケージを生成する第1のパッケージ生成手段、前記実行ファイルに対する署名データを生成する署名手段、前記実行ファイルと、前記署名データと、前記アプリケーションが動作する際に前記実行ファイルに基づいて、前記署名データを検証する検証データを生成し、生成した検証データを用いて前記署名データの検証処理を行う検証モジュールと、が含まれる第2のパッケージを生成する第2のパッケージ生成手段として動作させるプログラムであり、前記アプリケーションの実行ファイルは、第1のプログラミング言語により記述されたソースコードに基づいて生成される中間コードであり、前記検証モジュールは、前記アプリケーションの実行ファイルから呼び出されて動作するものであり、前記第1のプログラミング言語よりも実行ファイルからソースコードが解析され難い第2のプログラミング言語により記述されたソースコードに基づいて生成されるネイティブコードであることを特徴とするプログラムである。
以上説明したように、本発明によれば、パッケージ生成装置が、アプリケーションの実行ファイルが含まれる第1のパッケージを生成する第1のパッケージ生成部と、実行ファイルに対する署名データを生成する署名生成部と、実行ファイルと、署名データと、アプリケーションが動作する際に実行ファイルに基づいて、署名データを検証する検証データを生成し、生成した検証データを用いて署名データの検証処理を行う検証モジュールと、が含まれる第2のパッケージを生成する第2のパッケージ生成部と、を備えるようにしたので、アプリケーションの正当性を検証することができる。
本発明の一実施形態によるパッケージ生成装置の構成例を示すブロック図である。 本発明の一実施形態によるアプリケーションがインストールされたユーザ端末の構成例を示すブロック図である。 本発明の一実施形態によるパッケージ生成装置の動作例を示すフローチャートである。 本発明の一実施形態によるアプリケーションがインストールされたユーザ端末の動作例を示すフローチャートである。 本発明の一実施形態による難読化処理の例を示す図である。 本発明の一実施形態によるパッケージ生成装置の構成例を示すブロック図である。
以下、本発明の一実施形態について、図面を参照して説明する。
図1は、本実施形態によるパッケージ生成装置10の構成例を示すブロック図である。パッケージ生成装置10は、アプリケーションソースコード記憶部11と、検証モジュールソースコード記憶部12と、検証モジュールビルド部13と、検証モジュール記憶部14と、第1のパッケージ生成部15と、署名生成部16と、署名データ記憶部17と、第2のパッケージ生成部18とを備えており、アプリケーションパッケージを生成する。パッケージ生成装置10が生成するアプリケーションパッケージは、PC(パーソナルコンピュータ)、タブレットPC、スマートフォン等のコンピュータ装置にインストールされてアプリケーションを実行するものであり、本実施形態では、特にスマートフォンにインストールされるアプリケーションパッケージを想定して説明する。
アプリケーションソースコード記憶部11には、アプリケーションを実行する処理が記述されたソースコードであるアプリケーションソースコードが予め記憶されている。
検証モジュールソースコード記憶部12には、検証モジュールのソースコードである検証モジュールソースコードが予め記憶されている。検証モジュールは、アプリケーションソースコードに基づいて生成される実行ファイルの正当性を検証する検証処理を行うプログラムの実行ファイルである。検証モジュールは、アプリケーションの実行ファイルから呼び出されて動作する。すなわち、アプリケーションソースコードには、検証モジュールを呼び出して実行する処理の記述が含まれる。
ここで、アプリケーションソースコードと検証モジュールソースコードとは、異なるプログラミング言語により記述されているものとし、検証モジュールソースコードは、アプリケーションソースコードに用いられる第1のプログラミング言語よりも、実行ファイルからソースコードが解析されにくい第2のプログラミング言語により記述されるものとする。例えば、第1のプログラミング言語は、ビルドすると中間コードやクラス定義情報が生成されるJAVA(登録商標)であり、第2のプログラミング言語は、ビルドするとネイティブコードが生成されるC言語である。すなわち、アプリケーションの実行ファイルは第1のプログラミング言語により記述されたソースコードに基づいて生成された中間コードであり、検証モジュールは、第1のプログラミング言語よりも実行ファイルからソースコードが解析されにくい第2のプログラミング言語により記述されたソースコードに基づいて生成されたネイティブコードである。
検証モジュールビルド部13は、検証モジュールソースコード記憶部12に記憶されている検証モジュールソースコードをビルドして、検証モジュールの実行ファイルを生成し、生成した検証モジュールの実行ファイルを検証モジュール記憶部14に記憶させる。
検証モジュール記憶部14には、検証モジュールの実行ファイルが記憶される。
第1のパッケージ生成部15は、アプリケーションソースコード記憶部11に記憶されているアプリケーションソースコードと、検証モジュール記憶部14に記憶されている検証モジュールとをビルドし、第1のアプリケーションパッケージを生成する。符号aは、第1のアプリケーションパッケージの概要を示す図である。第1のアプリケーションパッケージには、アプリケーションソースコード記憶部11に記憶されているアプリケーションソースコードに基づいて生成されたアプリケーション実行ファイル(符号a1)と、検証モジュール記憶部14から読み出された検証モジュール(符号a2)とが含まれる。
署名生成部16は、第1のパッケージ生成部15が生成した第1のアプリケーションパッケージに含まれるアプリケーション実行ファイルに対する署名データを生成する。例えば、署名生成部16は、署名データを生成する対象である検証対象ファイル(アプリケーション実行ファイル)や、署名鍵、ハッシュアルゴリズム(例えば、SHA−256等)、生成した署名データを格納する場所(パス)等を定めた検証定義情報を自身の記憶領域に記憶しておく。署名生成部16は、検証定義情報に定められたハッシュアルゴリズムにより、アプリケーション実行ファイルに基づくハッシュ値を算出し、算出したハッシュ値を署名鍵によって暗号化した演算結果を署名データとして生成する。署名生成部16は、生成した署名データを、署名データ記憶部17に記憶させる。
署名データ記憶部17には、署名生成部16によって生成された署名データが記憶される。
第2のパッケージ生成部18は、アプリケーションソースコード記憶部11に記憶されているアプリケーションソースコードと、検証モジュール記憶部14に記憶されている検証モジュールと、署名データ記憶部17に記憶されている署名データとをビルドし、第2のアプリケーションパッケージを生成する。符号bは、第2のアプリケーションパッケージの概要を示す図である。第2のアプリケーションパッケージには、第1のアプリケーションパッケージに含まれるアプリケーション実行ファイルと同様のアプリケーション実行ファイル(符号b1)と、第1のアプリケーションパッケージに含まれる検証モジュールと同様の検証モジュール(符号b2)とに加えて、署名データ(符号b3)が含まれる。ここで、符号b1に示すアプリケーション実行ファイルは、アプリケーションソースコード記憶部11に記憶されているソースコードに基づいて再びビルドされたものであるが、第1のアプリケーションパッケージを生成する際のアプリケーションソースコードと第2のアプリケーションパッケージを生成する際のアプリケーションソースコードとは同一であるため、同一のバイナリファイルである中間コードが生成される。
図2は、このように生成された第2のアプリケーションパッケージに基づいてアプリケーションを実行するユーザ端末30の構成例を示す図である。例えば、ユーザ端末30は、スマートフォンである。ユーザ端末30は、ネットワークを介してパッケージ配布装置20に接続されており、パッケージ生成装置10によって生成された第2のアプリケーションパッケージを、パッケージ配布装置20からダウンロードする。ユーザ端末30は、入力部31と、出力部32と、通信部33と、記憶部34と、制御部40とを備えている。
入力部31は、ボタンやタッチパネル等の入力デバイスであり、ユーザからの入力を受け付ける。
出力部32は、ディスプレイやスピーカ等の出力デバイスであり、情報を出力する。
通信部33は、他のコンピュータ装置とネットワークを介して通信する。
記憶部34には、ユーザ端末30が動作するために利用される情報が記憶される。例えば、記憶部34には、OSや各種アプリケーションのプログラムが記憶されている。また、記憶部34には、パッケージ配布装置20からダウンロードした第2のアプリケーションパッケージ35が記憶されている。
第2のアプリケーションパッケージ35は、パッケージ生成装置10によって生成され、ユーザ端末30がパッケージ配布装置20からダウンロードし、インストールして記憶部34に記憶させたファイルである。第2のアプリケーションパッケージ35には、アプリケーション実行ファイル36と、検証モジュール37と、署名データ38とが含まれる、
アプリケーション実行ファイル36は、アプリケーションを実行するメインプログラムである。
検証モジュール37は、アプリケーション実行ファイル36が、正当な開発者により生成されたファイルであるか否かを検証するプログラムである。
署名データ38は、アプリケーション実行ファイル36に対して生成された署名データである。
制御部40は、記憶部34に記憶されているプログラムを実行し、ユーザ端末30が備える各部を制御する。ここで、制御部40は、記憶部34に記憶されている第2のアプリケーションパッケージ35を読み出し、アプリケーションを実行するために起動部41と検証処理部42とアプリケーション実行部43とを構成する。起動部41とアプリケーション実行部43とは、アプリケーション実行ファイル36によって構成され、検証処理部42は、検証モジュール37によって構成される。
起動部41は、ユーザから入力部31に入力される操作情報に応じて、アプリケーションを起動する起動処理を行う。ここで、起動部41は、ユーザから入力部31にアプリケーションの起動要求が入力されると、検証処理部42に検証要求を入力する。起動部41は、検証処理部42による検証結果によって、アプリケーション実行ファイル36が正当であることが示される場合には、アプリケーション実行部43に実行要求を入力し、アプリケーションを起動させる。一方、検証処理部42による検証結果によって、アプリケーション実行ファイル36が正当でないことが示される場合にはエラー処理を行い、アプリケーション実行部43を起動させずに処理を終了する。
検証処理部42は、起動部41からの検証要求に応じて、アプリケーション実行ファイル36が正当であるか否かを判定する検証処理を行う。例えば、検証処理部42は、パッケージ生成装置10の署名生成部16に記憶されている検証定義情報と同様の検証定義情報を、自身の記憶領域に記憶しておく。ただし、検証処理部42に記憶されている検証定義情報には署名鍵は含まれず、パッケージ生成装置10の署名生成部16においてハッシュ値を暗号化した署名鍵に対応する検証鍵が含まれる。検証処理部42は、検証定義情報に定められる検証鍵により署名データ38を復号し、ハッシュ値を取り出す。そして、アプリケーション実行ファイル36に基づいて、検証定義情報に定められたハッシュアルゴリズムによりハッシュ値である検証データを算出する。検証モジュール37は、復号したハッシュ値と、検証データとが一致すれば、アプリケーション実行ファイル36は正当であると判定し、一致しなければ、正当でない(不当である)と判定する。
アプリケーション実行部43は、起動部41からの実行要求に応じて、アプリケーションを実行する。
次に、図面を参照して、本実施形態によるパッケージ生成装置10の動作例を説明する。図3は、本実施形態によるパッケージ生成装置10の動作例を示すフローチャートである。
検証モジュールビルド部13は、検証モジュールソースコード記憶部12に記憶されている検証モジュールソースコードを読み出してビルドし、検証モジュールの実行ファイルを生成して検証モジュール記憶部14に記憶させる(ステップS1)。第1のパッケージ生成部15は、アプリケーションソースコード記憶部11に記憶されているアプリケーションソースコードを読み出し、検証モジュール記憶部14に記憶されている検証モジュールを読み出して、読み出したアプリケーションソースコードに検証モジュールを組み込んでビルドし、第1のアプリケーションパッケージを生成する(ステップS2)。
署名生成部16は、自身の記憶領域に記憶されている検証定義情報に含まれる署名鍵等に基づいて、第1のパッケージ生成部15によって生成された第1のアプリケーションパッケージに含まれるアプリケーション実行ファイルに対する署名データを生成し、署名データ記憶部17に記憶させる(ステップS3)。そして、第2のパッケージ生成部18は、アプリケーションソースコード記憶部11に記憶されているアプリケーションソースコードを読み出し、検証モジュール記憶部14に記憶されている検証モジュールを読み出し、署名データ記憶部17に記憶されている署名データを読み出して、アプリケーション実行ファイルと、検証モジュールと、署名データとが含まれる第2のアプリケーションパッケージを生成する(ステップS4)。
次に、図面を参照して、本実施形態により生成された第2のアプリケーションパッケージがインストールされたユーザ端末30の動作例を説明する。図4は、本実施形態によるユーザ端末30の動作例を示すフローチャートである。
ユーザ端末30は、パッケージ配布装置20に、第2のアプリケーションパッケージのダウンロード要求を送信する。パッケージ配布装置20は、ユーザ端末30から送信されたダウンロード要求に応じて、第2のアプリケーションパッケージをユーザ端末30に送信する。ユーザ端末30は、パッケージ配布装置20から送信された第2のアプリケーションパッケージを受信すると、受信した第2のアプリケーションパッケージをインストールし、記憶部34に記憶させる(ステップS11)。
入力部31にアプリケーションの実行要求が入力されると(ステップS12)、制御部40は、記憶部34に記憶されている第2のアプリケーションパッケージ35を読み出し、起動部41と、検証処理部42と、アプリケーション実行部43とを構成する。起動部41は、検証処理部42に検証要求を入力する。検証処理部42は、検証定義情報に定められたハッシュアルゴリズムにより、アプリケーション実行ファイル36に基づくハッシュ値である検証データを算出する(ステップS13)。
検証処理部42は、ステップS3において使用された署名鍵に対応する検証鍵を自身の記憶領域に記憶されている検証定義情報から読み出し、読み出した検証鍵により署名データ38を復号してハッシュ値を算出し、ステップS13において算出したハッシュ値である検証データと比較する(ステップS14)。検証処理部42が、復号したハッシュ値と検証データとが一致し、アプリケーション実行ファイル36が正当であると判定すると(ステップS14:YES)、アプリケーション実行部43が、アプリケーション処理を実行する(ステップS15)。アプリケーション実行ファイル36が正当でないと判定すると(ステップS14:NO)、アプリケーション実行部43は、エラーとして処理を終了する(ステップS16)。
なお、ユーザ端末30に記憶される第2のアプリケーションパッケージ35には、署名データ38が含まれるため、アプリケーションを改ざんしようとする攻撃者が、署名データ38の解析を試みる場合があると考えられる。そこで、署名生成部16が署名データを生成する際には、生成する署名データの難読化処理を行うこともできる。例えば、署名生成部16は、署名データには、検証処理に不要なダミーデータを含ませる。図5は、署名生成部16が難読化処理を行って生成する署名データの例を示す図である。まず、署名生成部16は、(a)に示すように、アプリケーション実行ファイルに対する署名データ(符号A)を生成する。また、署名生成部16は、(b)に示すように、署名データのダミーデータ(符号B1〜B6)を生成する。そして、署名生成部16は、(c)に示すように、署名データ(符号A)と、ダミーデータ(符号B1〜B6)とを合わせて、署名データとして生成する。さらに、署名生成部16は、(d)に示すように、署名データ(符号A)とダミーデータ(符号B1〜B6)とをランダムに改行し、署名データとして生成する。この他にも、例えば、署名データのバイト列の定められた箇所に不要なバイト列を挿入することなどにより、難読化処理を行うこともできる。
ここで、署名生成部16は、自身の記憶領域に記憶している検証定義情報に、このような難読化処理のルールについて定義したルール情報を含ませておき、検証定義情報に基づいて署名データを生成する。難読化処理のルール情報には、例えば、ダミーデータの個数、複数のダミーデータのうちの何番目に正しい署名データが存在するかを示す情報、複数のダミーデータのうちの改行されている箇所を示す情報等が含まれる。ユーザ端末30の検証処理部42にも、同様の検証定義情報を記憶させておき、検証処理部42は、このような検証定義情報に基づいて検証処理を行う。例えば、検証処理部42は、難読化処理のルール情報に基づいて、署名データに含まれるダミーデータを削除したり、改行を削除したりすること等により、署名データに含まれる複数のダミーデータのうちから正しい署名データを検出する。これによれば、アプリケーションを改ざんしようとする攻撃者が、署名データ38の内容を解析し難くすることができる。
上述の実施形態では、ユーザ端末30におけるアプリケーションの起動時に、起動部41が検証処理部42に検証要求を入力して検証処理を行う例を示したが、検証処理は、起動時のみでなく、アプリケーションの実行中にも、適宜行うこともできる。例えば、アプリケーション実行部43が、一定時間(例えば、5分)毎に、検証処理部42に検証要求を入力し、検証処理部42による検証結果が、アプリケーション実行ファイル36が正当であることを示す場合には処理を続行し、アプリケーション実行ファイル36が正当でないことを示す場合には処理を終了することもできる。
あるいは、検証モジュール37に、検証処理を行うプログラムのみでなく、アプリケーション実行部43がアプリケーションを実行するために必須であるプログラムや情報等を含ませておき、アプリケーション実行部43が動作する際には検証モジュール37に基づくプログラム等を呼び出さなければアプリケーションを実行できないようにして、検証モジュール37に基づくプログラムが呼び出された際に検証処理を行うようにすることもできる。図6は、このようなユーザ端末30の構成の例を示す図である。ここで、制御部40は、検証モジュール37に基づいて、検証処理部42に加えてアプリケーション処理部44を構成する。
アプリケーション処理部44は、アプリケーションソースコードに基づいて生成されるアプリケーションの実行ファイルが動作するために必要な機能を実行する。例えば、アプリケーション処理部44は、アプリケーション実行ファイル36が通信部33を介して他のコンピュータ装置と通信する機能を実行する。また、アプリケーション処理部44は、その機能を実行する際には、検証処理部42を動作させて検証処理を行わせ、アプリケーション実行ファイル36が正当であるとの検証結果が生成された場合にはその機能を実行し、正当でないとの検証結果が生成された場合にはその機能を実行しない。
一方、アプリケーション実行部43は、他のコンピュータ装置と通信を行う際には必ず検証モジュール37のアプリケーション処理部44を呼び出し、呼び出さなければ、他のコンピュータ装置と通信を行うことができないように構成する。このように、検証処理部42は、アプリケーション実行ファイル36がその機能を動作させる際に実行され、アプリケーション処理部44は、検証処理の処理結果に基づいて機能を実行する。これにより、第2のアプリケーションパッケージ35によって提供されるアプリケーションを実行する際には、アプリケーション処理部44が呼び出され、検証を行うことができる。
以上説明したように、本実施形態によれば、アプリケーション実行ファイル36が正当であるか否かを検証することができるため、改ざんされたアプリケーションが配布され、実行されることを防ぐことができる。例えば、従来のアプリケーションのインストール時における検証処理は、ユーザ端末30が検証機能を備えており、アプリケーションパッケージに含まれる電子署名に対応する検証鍵(公開鍵)を、ネットワークを介して取得して検証するようなものであった。これに対し、本実施形態によれば、ユーザ端末30は、ネットワーク通信を行うことなく、検証処理を行うことができる。さらに、第2のアプリケーションパッケージ35に含まれるプログラムのみで検証処理を実行することができるため、アプリケーションのインストール時のみでなく、起動時や動作中においても、検証処理を行うことができる。
さらに、検証モジュール37は、アプリケーション実行ファイル36よりも解析が困難なプログラミング言語により記述されビルドされたものであるため、例えば、攻撃者がアプリケーション実行ファイル36をリバースエンジニアリングしようとする際、アプリケーション実行ファイル36の内容はある程度解析できたとしても、検証モジュール37の内容を解析することは困難である。さらに、解析困難な検証モジュール37の処理を利用しなければアプリケーションが動作できないようにしたので、アプリケーション実行ファイル36が解析された場合でも、改ざんしたアプリケーションを動作させることができない。これにより、例えば、アプリケーション実行ファイル36の部分に、アプリケーションが有料であるか無料であるかを示す情報が記憶されているとき、リバースエンジニアリングによりその部分が改ざんされて有料が無料に書き換えられた場合でも、そのアプリケーションを動作させないようにすることができる。これにより、リバースエンジニアリングしやすいプログラミング言語によってアプリケーションが作成されることが定められているようなプラットフォームにおいてアプリケーションを提供する場合でも、そのプログラミング言語よりも解析困難なプログラミング言語により生成したモジュールを組み合わせて実行させることで、改ざんされたアプリケーションが使用されることを防ぐことが可能となる。
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりパッケージの生成やアプリケーションの検証を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境(あるいは表示環境)を備えたWWWシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
10 パッケージ生成装置
11 アプリケーションソースコード記憶部
12 検証モジュールソースコード記憶部
13 検証モジュールビルド部
14 検証モジュール記憶部
15 第1のパッケージ生成部
16 署名生成部
17 署名データ記憶部
18 第2のパッケージ生成部
20 パッケージ配布装置
30 ユーザ端末
31 入力部
32 出力部
33 通信部
34 記憶部
35 第2のアプリケーションパッケージ
36 アプリケーション実行ファイル
37 検証モジュール
38 署名データ
40 制御部
41 起動部
42 検証処理部
43 アプリケーション実行部
44 アプリケーション処理部

Claims (6)

  1. アプリケーションの実行ファイルが含まれる第1のパッケージを生成する第1のパッケージ生成部と、
    前記実行ファイルに対する署名データを生成する署名生成部と、
    前記実行ファイルと、前記署名データと、前記アプリケーションが動作する際に前記実行ファイルに基づいて、前記署名データを検証する検証データを生成し、生成した検証データを用いて前記署名データの検証処理を行う検証モジュールと、が含まれる第2のパッケージを生成する第2のパッケージ生成部と、
    を備え、
    前記アプリケーションの実行ファイルは、第1のプログラミング言語により記述されたソースコードに基づいて生成される中間コードであり、前記検証モジュールは、前記アプリケーションの実行ファイルから呼び出されて動作するものであり、前記第1のプログラミング言語よりも実行ファイルからソースコードが解析され難い第2のプログラミング言語により記述されたソースコードに基づいて生成されるネイティブコードである
    ことを特徴とするパッケージ生成装置。
  2. 前記検証モジュールは、前記アプリケーションが動作するために必要な機能を備えており、前記アプリケーションが当該機能を動作させる際に実行され、前記検証モジュールは、前記検証処理の処理結果に基づいて前記機能を実行する
    ことを特徴とする請求項1に記載のパッケージ生成装置。
  3. 前記署名データには、検証処理に不要なダミーデータが含まれる
    ことを特徴とする請求項1または請求項2に記載のパッケージ生成装置。
  4. 前記署名データは、ダミーデータの個数、複数のダミーデータのうちの何番目に正しい署名データが存在するかを示す情報、複数のダミーデータのうちの改行されている箇所を示す情報に基づいて生成される
    ことを特徴とする請求項1から請求項までのいずれか1項に記載のパッケージ生成装置。
  5. 第1のパッケージ生成部が、アプリケーションの実行ファイルが含まれる第1のパッケージを生成する第1のパッケージ生成ステップと、
    署名生成部が、前記実行ファイルに対する署名データを生成する署名生成ステップと、
    第2のパッケージ生成部が、前記実行ファイルと、前記署名データと、前記アプリケーションが動作する際に前記実行ファイルに基づいて、前記署名データを検証する検証データを生成し、生成した検証データを用いて前記署名データの検証処理を行う検証モジュールと、が含まれる第2のパッケージを生成する第2のパッケージ生成ステップと、
    を備え、
    前記アプリケーションの実行ファイルは、第1のプログラミング言語により記述されたソースコードに基づいて生成される中間コードであり、前記検証モジュールは、前記アプリケーションの実行ファイルから呼び出されて動作するものであり、前記第1のプログラミング言語よりも実行ファイルからソースコードが解析され難い第2のプログラミング言語により記述されたソースコードに基づいて生成されるネイティブコードである
    ことを特徴とするパッケージ生成方法。
  6. アプリケーションの実行ファイルと、前記実行ファイルに対して生成された署名データとが記憶されているコンピュータ
    アプリケーションの実行ファイルが含まれる第1のパッケージを生成する第1のパッケージ生成手段
    前記実行ファイルに対する署名データを生成する署名手段
    前記実行ファイルと、前記署名データと、前記アプリケーションが動作する際に前記実行ファイルに基づいて、前記署名データを検証する検証データを生成し、生成した検証データを用いて前記署名データの検証処理を行う検証モジュールと、が含まれる第2のパッケージを生成する第2のパッケージ生成手段
    として動作させるプログラムであり、前記アプリケーションの実行ファイルは、第1のプログラミング言語により記述されたソースコードに基づいて生成される中間コードであり、前記検証モジュールは、前記アプリケーションの実行ファイルから呼び出されて動作するものであり、前記第1のプログラミング言語よりも実行ファイルからソースコードが解析され難い第2のプログラミング言語により記述されたソースコードに基づいて生成されるネイティブコードである
    ことを特徴とするプログラム。
JP2012060239A 2012-03-16 2012-03-16 パッケージ生成装置、パッケージ生成方法、プログラム Expired - Fee Related JP5798959B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012060239A JP5798959B2 (ja) 2012-03-16 2012-03-16 パッケージ生成装置、パッケージ生成方法、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012060239A JP5798959B2 (ja) 2012-03-16 2012-03-16 パッケージ生成装置、パッケージ生成方法、プログラム

Publications (2)

Publication Number Publication Date
JP2013196123A JP2013196123A (ja) 2013-09-30
JP5798959B2 true JP5798959B2 (ja) 2015-10-21

Family

ID=49395049

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012060239A Expired - Fee Related JP5798959B2 (ja) 2012-03-16 2012-03-16 パッケージ生成装置、パッケージ生成方法、プログラム

Country Status (1)

Country Link
JP (1) JP5798959B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108319823A (zh) * 2018-02-02 2018-07-24 广东蜂助手网络技术股份有限公司 一种安卓app签名绑定方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6910128B1 (en) * 2000-11-21 2005-06-21 International Business Machines Corporation Method and computer program product for processing signed applets
JP4145118B2 (ja) * 2001-11-26 2008-09-03 松下電器産業株式会社 アプリケーション認証システム
JP2007226277A (ja) * 2004-04-02 2007-09-06 Matsushita Electric Ind Co Ltd 仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置
JP2007097439A (ja) * 2005-09-30 2007-04-19 Kirin Beverage Corp 安定化したデンプン及び/又は脂質含有ポタージュスープ及びその製造方法
JP4818824B2 (ja) * 2006-06-13 2011-11-16 Kddi株式会社 プログラム管理システムおよび端末装置
JP5278309B2 (ja) * 2007-03-27 2013-09-04 富士通株式会社 監査プログラム、監査システムおよび監査方法
EP2009565A1 (en) * 2007-06-28 2008-12-31 Gemplus Method for securely loading a client applet in an electronic portable device

Also Published As

Publication number Publication date
JP2013196123A (ja) 2013-09-30

Similar Documents

Publication Publication Date Title
CN109313690B (zh) 自包含的加密引导策略验证
CN106452783B (zh) 计算机系统及安全执行的方法
US8209746B2 (en) Content presentation-type authentication system
CN101436141B (zh) 基于数字签名的固件升级、固件封装方法与装置
US20170295013A1 (en) Method for fulfilling a cryptographic request requiring a value of a private key
CN104932902B (zh) 一种生成apk文件的方法及终端
CN110287654B (zh) 使用硬件信任根的媒体客户端装置鉴权
KR101190479B1 (ko) 티켓 인증 보안 설치 및 부트
CN111143869B (zh) 应用程序包处理方法、装置、电子设备及存储介质
EP3038004A1 (en) Method for providing security for common intermediate language-based program
CN105320535B (zh) 一种安装包的校验方法、客户端、服务器及系统
KR20140099126A (ko) 소프트웨어를 보안하기 위하여 해시 함수를 이용한 소프트웨어 처리 방법, 그 장치 및 그 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
CN102880456A (zh) 一种创建插件方法及装置
CN104915591A (zh) 一种数据处理方法及电子设备
KR102013983B1 (ko) 애플리케이션 무결성 인증 방법 및 인증 서버
CN107870793B (zh) 一种应用程序中加载so文件的方法及装置
WO2021114614A1 (zh) 应用程序安全启动方法、装置、计算机设备和存储介质
CN108710500A (zh) 资源发布方法、更新方法和装置
CN104680061A (zh) 一种Android环境下应用程序启动中代码签名验证的方法和系统
CN107003918A (zh) 用于提供验证应用完整性的方法和设备
JP6387908B2 (ja) 認証システム
CN114547558A (zh) 授权方法、授权控制方法及装置、设备和介质
JP6796861B2 (ja) アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステム
KR101324693B1 (ko) 어플리케이션 보안 시스템 및 방법
CN115516420A (zh) 用于软件更新的认证密钥的可控范围

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130816

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140827

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150416

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150622

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150824

R150 Certificate of patent or registration of utility model

Ref document number: 5798959

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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