(57)【要約】【課題】アプリケーションのリバースエンジニアリングを抑制する技術を提供すること。【解決手段】一般に、実施形態のアプリ開発用環境プログラムは、アプリケーションの開発環境を提供する。アプリ開発用環境プログラムは、アプリケーションのインストール要求を受け付け、アプリケーションが開発アプリケーションであると判定する場合、開発アプリケーションのインストールを許可し、アプリケーションが流通アプリケーションであると判定する場合、流通アプリケーションのインストールを禁止することをコンピュータに実行させる。【選択図】図２
2019114028.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションの開発環境を提供するアプリ開発用環境プログラムであって、
アプリケーションのインストール要求を受け付け、
前記アプリケーションが開発アプリケーションであると判定する場合、前記開発アプリケーションのインストールを許可し、
前記アプリケーションが流通アプリケーションであると判定する場合、前記流通アプリケーションのインストールを禁止する
ことをコンピュータに実行させるアプリ開発用環境プログラム。
【請求項２】
デバッグログを出力できてアプリケーションの動作を確認するためのアプリ開発モードと、デバッグログを出力できない通常モードとを備え、
前記アプリ開発モード時にアプリケーションのインストール要求を受け付けると、
前記アプリケーションが開発アプリケーションであると判定する場合、前記開発アプリケーションのインストールを許可し、
前記アプリケーションが流通アプリケーションであると判定する場合、前記流通アプリケーションのインストールを禁止する装置。
【請求項３】
請求項２に記載の装置において、
前記通常モード時には、前記流通アプリケーションのインストールを許可し、
前記アプリ開発モード時にインストール済みの前記流通アプリケーションがあると判定する場合、インストール済みの前記流通アプリケーションをアンインストールする装置。
【請求項４】
請求項２または請求項３に記載の装置において、
前記アプリ開発モード時にアプリケーションのインストール要求を受け付けると、
前記アプリケーションが前記開発アプリケーションであると判定する場合、秘密鍵を用いて暗号化された前記開発アプリケーションの復号を前記秘密鍵とペアの公開鍵を用いて行い、前記開発アプリケーションを復号できる場合、前記開発アプリケーションのインストールを許可し、前記開発アプリケーションを復号できない場合、前記開発アプリケーションのインストールを禁止する装置。
【請求項５】
請求項４に記載の装置において、
前記アプリ開発モード時に前記アプリケーションのインストール要求を受け付けると、
前記アプリケーションが前記開発アプリケーションであると判定する場合、前記開発アプリケーションが有する電子署名であって署名用秘密鍵を用いて前記装置の識別情報を暗号化した電子署名を、前記署名用秘密鍵のペアの検証用公開鍵で復号してハッシュ値を生成し、
前記ハッシュ値が自機の前記識別情報のハッシュ値と合致する場合、前記秘密鍵のインストールを許可し、合致しない場合、前記秘密鍵のインストールを禁止する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この明細書に記載の実施形態は、アプリケーションのリバースエンジニアリングを抑制する技術に関する。
【背景技術】
【０００２】
ＭＦＰ(Multi-Function Peripheral)等の装置にアプリケーションをインストールし、装置に機能を追加することがある。アプリケーションは、ソースコードを含むファイル群が１つまたは複数のファイルにパッケージ化された状態で読み込まれてインストールされる。アプリケーションは、Ｊａｖａ（登録商標）やＰｙｔｈｏｎ、Ｃ言語等のプログラミング言語で記述される。アプリケーションは、装置において、言語毎に用意された実行環境にて機械語に変換されて実行される。アプリケーションの機能は、ＡＰＩ(Application Programming Interface)により提供されることがある。
【０００３】
アプリケーションの開発は、装置の開発会社やソフトウェア開発会社によって行われる。アプリケーションの利用者への配布は、専用のＷｅｂサイトを介して行われたり、個別の契約により行われたりする。アプリケーションの開発会社にとって、アプリケーションの内部構造やバイナリ・ソースコードは、知的財産であり保護が必要である。
【０００４】
流通アプリケーションは、配布後の流通状態のアプリケーションを指す。流通アプリケーションは、改ざんを防いだり、知的財産の流出を防いだりするために暗号化されている。そのため、一般に、流通アプリケーションを入手しても、内部構造を知ることは困難である。ＭＦＰ等の装置は、通常、流通アプリケーションのみをインストールできる。
【０００５】
アプリケーションの開発には、ＳＤＫ(Software Development Kit。例えば特許文献１。) が用いられる。ＳＤＫは、アプリケーションのインストール対象の装置に対応するアプリケーションの開発環境を提供する。ＳＤＫには、開発・デバッグに必要なライブラリや技術文書のほか、装置の動作をシミュレートするためのエミュレータが含まれる。
【０００６】
開発アプリケーションは、開発中のアプリケーションを指す。開発アプリケーションは、一般に暗号化されていない。開発アプリケーションの動作は、開発アプリケーションをエミュレータにインストールすることで確認できる。アプリケーションの開発者には、アプリ開発モードを備えるＭＦＰ等の装置が貸与されることがある。アプリ開発モードを備える装置には、流通アプリケーションだけでなく開発アプリケーションもインストールできる。装置に開発アプリケーションをインストールし、装置をアプリ開発モードとすることで、開発アプリケーションの動作を確認できる。
【０００７】
エミュレータやアプリ開発モードは、ユーザが開発アプリケーションの動作を確認できるように、通常モードではアクセスできないファイルシステムにアクセスできる。エミュレータやアプリ開発モードは、デバッグログ出力機能を備え、開発に必要なエラー情報や処理状況を出力できる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第４９３８８６９号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
デバッグログ出力機能が出力する情報は、開発に必要な情報だが、通常のＭＦＰでは知りえない内部的な情報であり、該情報を用いてアプリケーションのリバースエンジニアリングが行われるおそれがある。
【００１０】
開発アプリケーションは、開発者の管理下にあるため、第三者によるリバースエンジニアリングを防止できる。しかし、流通アプリケーションは、販売用のＷｅｂサイト等を通じて第三者が入手可能である。従って、現状では、第三者が、流通アプリケーションをエミュレータやアプリ開発モードを有する装置にインストールし、デバッグログ出力機能により出力される内部的な情報を用いることで、流通アプリケーションがリバースエンジニアリングされるおそれがある。
【００１１】
この明細書は、アプリケーションのリバースエンジニアリングを抑制する技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
一般に、実施形態のアプリ開発用環境プログラムは、アプリケーションの開発環境を提供する。アプリ開発用環境プログラムは、アプリケーションのインストール要求を受け付け、アプリケーションが開発アプリケーションであると判定する場合、開発アプリケーションのインストールを許可し、アプリケーションが流通アプリケーションであると判定する場合、流通アプリケーションのインストールを禁止することをコンピュータに実行させる。
【００１３】
一般に、実施形態の装置は、デバッグログを出力できてアプリケーションの動作を確認するためのアプリ開発モードと、デバッグログを出力できない通常モードとを備え、アプリ開発モード時にアプリケーションのインストール要求を受け付けると、アプリケーションが開発アプリケーションであると判定する場合、開発アプリケーションのインストールを許可し、アプリケーションが流通アプリケーションであると判定する場合、流通アプリケーションのインストールを禁止する。
【図面の簡単な説明】
【００１４】
【図１】ＰＣのブロック図である。
【図２】アプリケーションのインストール処理を示すフローチャートである。
【図３】ＭＦＰの構成を示すブロック図である。
【図４】アプリケーションのインストール処理を示すフローチャートである。
【図５】流通アプリケーションのアンインストール処理を示すフローチャートである。
【図６】ＭＦＰの構成を示すブロック図である。
【図７】開発アプリケーションのインストール処理を示すフローチャートであ。
【図８】公開鍵のインストール処理を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、実施形態について図面を参照しつつ説明する。
（第１実施形態）
図１は、ＰＣ１(Personal Computer) のブロック図である。
ＰＣ１は、プロセッサ１１、メモリ１２、ネットワークＩ／Ｆ１３(Interface)、ディスプレイ１４、および操作部１５を備える。
【００１６】
メモリ１２は、ＯＳ１２１(Operating System)やＳＤＫ１２２（アプリ開発用環境プログラム）のほか、各種のプログラム、アプリケーション、閾値、設定値等を記憶する。
プロセッサ１１は、ＯＳ１２１を起動させ、アプリケーションを読み込むことによって各種の機能を実現する。プロセッサ１１は、ＳＤＫ１２２を読み込むことによって、ＭＦＰ（装置）のアプリケーションの開発環境をユーザに提供する。ＳＤＫ１２２は、アプリケーションの開発環境を実現するためのライブラリや技術文書のほか、各種のプログラムや設定ファイルを備える。ＳＤＫ１２２は、エミュレータ１２３、デバッガ１２４、およびインストール制御部１２５を含む。
【００１７】
エミュレータ１２３は、ＭＦＰの少なくとも一部の動作を模倣するものであり、本実施形態では実際のＭＦＰと同一の機能を提供する。エミュレータ１２３は、ＭＦＰのアプリケーションをインストールし、アプリケーションに対して実際のＭＦＰ上で動作させる場合と同じ動作を行わせる。
【００１８】
デバッガ１２４は、エミュレータ１２３上でアプリケーションが動作する際に生じるエラー情報やアプリケーションの処理状況であるデバッグログを出力する。ユーザは、エミュレータ１２３およびデバッガ１２４を用いて開発中のアプリケーションの動作を確認できる。
【００１９】
インストール制御部１２５は、エミュレータ１２３上で動作し、アプリケーションをエミュレータ１２３へインストールする。インストール制御部１２５については後述する。
【００２０】
ネットワークＩ／Ｆ１３は、ＰＣ１が外部の装置と通信を行うインターフェースである。
ディスプレイ１４は、アプリケーションの開発のためのＵＩ(User Interface)や、アプリケーションのインストールのためのＵＩ等の画像を表示する。
操作部１５は、キーボードやマウス等であり、ユーザの入力を受け付ける。
【００２１】
以下、図２のフローチャートを参照し、インストール制御部１２５によるアプリケーションのインストール処理について説明する。インストール制御部１２５は、プロセッサ１１に読み込まれて実行される。ＳＤＫ１２２は起動しているものとする。
ＳＤＫ１２２のインストール制御部１２５は、エミュレータ１２３へのアプリケーションのインストール要求を受け付け、アプリケーションのインストール処理を開始する（Ａｃｔ１１）。
【００２２】
インストール制御部１２５は、本実施形態ではエミュレータ１２３上で動作するが、ＭＦＰ上でも動作可能なモジュールである。インストール制御部１２５は、動作環境がエミュレータ１２３かＭＦＰかによって動作を変える。動作環境がＭＦＰである場合（Ａｃｔ１２：ＮＯ）のインストール制御部１２５の処理は、第２実施形態以降で説明する。
【００２３】
インストール制御部１２５は、動作環境がエミュレータ１２３である場合（Ａｃｔ１２：ＹＥＳ）、インストール要求されたアプリケーションが流通アプリケーションであるか、開発アプリケーションであるかを判定する（Ａｃｔ１３）。
【００２４】
流通アプリケーションは、アプリケーションの開発者以外の第三者に配布されて流通状態であることを予定しているアプリケーションのことを指す。本実施形態では、流通アプリケーションには、署名者および署名以降に改ざんされていないことを証明する電子署名が付されているものとする。電子署名は、コードサイニング証明書を利用するものであってもよい。本実施形態では、流通アプリケーションは暗号化されているものとする。
【００２５】
開発アプリケーションは、開発中のアプリケーションであり、開発者の管理下にあることを予定しているアプリケーションのことを指す。本実施形態では、開発アプリケーションには電子署名が付されていないものとする。本実施形態では、開発アプリケーションは暗号化されていないものとする。
【００２６】
インストール制御部１２５は、暗号化されているアプリケーションを流通アプリケーションと判定し、暗号化されていないアプリケーションを開発アプリケーションと判定する。なお、アプリケーションは、インストール時には複数のファイルを備えておりパッケージ化されているところ、インストール制御部１２５は、正規の電子署名を有するアプリケーションを流通アプリケーションと判定し、正規の電子署名を有さないアプリケーションを開発アプリケーションと判定してもよい。
【００２７】
インストール制御部１２５は、流通アプリケーションであることを示す設定ファイルがあるアプリケーションを流通アプリケーションと判定してもよい。
インストール制御部１２５は、開発アプリケーションであることを示す設定ファイルがあるアプリケーション、または流通アプリケーションであることを示す設定ファイルが無いアプリケーションを開発アプリケーションと判定してもよい。
【００２８】
インストール制御部１２５は、予め定められたファイルの属性値や拡張子を有するアプリケーションを開発アプリケーションと判定し、予め定められたファイルの属性値や拡張子（それらは開発アプリケーションのものとは異なる）を有するアプリケーションを流通アプリケーションと判定してもよい。
【００２９】
インストール制御部１２５は、インストール要求されたアプリケーションが開発アプリケーションであると判定する場合（Ａｃｔ１３：ＹＥＳ）、開発アプリケーションのインストールを許可し（Ａｃｔ１４）、開発アプリケーションのインストールを進めて（Ａｃｔ１５：ＮＯ，Ａｃｔ１５）、インストールを終了させる（Ａｃｔ１５：ＹＥＳ）。
【００３０】
インストール制御部１２５は、インストール要求されたアプリケーションが流通アプリケーションであると判定する場合（Ａｃｔ１３：ＮＯ）、流通アプリケーションのインストールを禁止し（Ａｃｔ１６）、流通アプリケーションのインストール処理を中断または終了する（Ａｃｔ１７）。
【００３１】
流通アプリケーションをエミュレータ１２３上にインストールすると、通常のＭＦＰでは知り得ない内部的な情報をエミュレータ１２３に出力させることが可能になり、場合によっては流通アプリケーションの内部の構造を知ることができてしまう。そのため、流通アプリケーションのリバースエンジニアリングが容易になってしまうおそれがある。
【００３２】
本実施形態では、流通アプリケーションがエミュレータ１２３上にインストールされることを禁止するので、流通アプリケーションがリバースエンジニアリングされることを抑制できる。また、本実施形態では、開発アプリケ―ションがエミュレータ１２３上にインストールされることを許可するが、開発アプリケ―ションは開発者の元で管理できるので、開発アプリケ―ションが第三者にリバースエンジニアリングされることは、開発者の管理により防ぐことができる。
【００３３】
（第２実施形態）
図３は、ＭＦＰ２の構成を示すブロック図である。
ＭＦＰ２は、プリント機能、スキャン機能、ＦＡＸ送信機能等の複数の機能を有する。ＭＦＰ２は、プリンタ２１、スキャナ２２、プロセッサ２３、メモリ２４、ネットワークＩ／Ｆ２５、ディスプレイ２６、および操作部２７を備える。
【００３４】
ネットワークＩ／Ｆ２５は、ＭＦＰ２が外部の装置と通信を行うインターフェースである。
ディスプレイ２６は、タッチパネル等であり、ＭＦＰ２の設定情報や動作ステータス、ログ情報、およびユーザへの通知等を表示する。
操作部２７は、キーやタッチパネルであり、ユーザの入力を受け付ける。
【００３５】
プリンタ２１は、シートに画像を形成する。プリンタ２１の印刷方式は、電子転写方式、インクジェット方式、熱転写方式のいずれでもよい。印刷対象のシートは、用紙、封筒、transparencyであってもよい。
スキャナ２２は、撮像素子を備え、シート上の画像を撮像し、画像データを生成する。ＭＦＰ２は、該画像データに基づいてプリンタ２１によりシートに画像を形成したり、該画像をネットワークＩ／Ｆ２５を介して外部の宛先にＦＡＸ送信したりできる。
【００３６】
メモリ２４は、ＯＳ２４１およびインストール制御部２４２のほか、各種のプログラム、アプリケーション、閾値、設定値等を記憶する。
プロセッサ２３は、ＭＦＰ２全体を制御する。プロセッサ２３は、ＯＳ２４１を起動させ、アプリケーションを読み込むことによって各種の機能を実現する。  
【００３７】
ＭＦＰ２は、エラー情報やアプリケーションの処理状況であるデバッグログを出力できない通常モードと、デバッグログを出力できるアプリ開発モードとを備える。アプリ開発モードは、開発アプリケーションの動作を確認するためのモードである。
【００３８】
インストール制御部２４２は、通常モードでは、流通アプリケーションのインストールのみを許可し、アプリ開発モードでは、開発アプリケーションのインストールのみを許可する。
【００３９】
以下、図４のフローチャートを参照し、インストール制御部２４２によるアプリケーションのインストール処理について説明する。インストール制御部２４２は、プロセッサ２３に読み込まれて実行される。
インストール制御部２４２は、アプリケーションのインストール要求を受け付け、アプリケーションのインストール処理を開始する（Ａｃｔ２１）。
【００４０】
インストール制御部２４２は、動作環境がエミュレータ１２３であると判定する場合（Ａｃｔ２２：ＮＯ）、第１実施形態の図２のＡｃｔ１３の処理を行う。
【００４１】
インストール制御部２４２は、動作環境がＭＦＰ２であると判定する場合において（Ａｃｔ２２：ＹＥＳ）、アプリ開発モードである場合（Ａｃｔ２３：ＹＥＳ）、第１実施形態の図１のＡｃｔ１３〜Ａｃｔ１７と同様の処理Ａｃｔ２４〜２８を行う。すなわち、インストール制御部２４２は、インストール要求を受け付けるアプリケーションが開発アプリケーションの場合（Ａｃｔ２４：ＹＥＳ）、開発アプリケーションのインストールを許可し（Ａｃｔ２５）、インストールを完了させる（Ａｃｔ２６）。
【００４２】
インストール制御部２４２は、インストール要求を受け付けるアプリケーションが流通アプリケーションの場合（Ａｃｔ２４：ＮＯ）、流通アプリケーションのインストールを禁止し（Ａｃｔ２７）、インストールを中断または終了させる（Ａｃｔ２８）。
【００４３】
インストール制御部２４２は、通常モードである場合（Ａｃｔ２３：ＮＯ）、インストール要求を受け付けるアプリケーションが開発アプリケーションの場合（Ａｃｔ２９：ＹＥＳ）、開発アプリケーションのインストールを禁止し（Ａｃｔ２７）、インストールを中断または終了させる（Ａｃｔ２８）。
【００４４】
一方、インストール制御部２４２は、インストール要求を受け付けるアプリケーションが流通アプリケーションの場合（Ａｃｔ２９：ＮＯ）、流通アプリケーションのインストールを許可し（Ａｃｔ２５）、インストールを完了させる（Ａｃｔ２６：ＹＥＳ）。
【００４５】
ＭＦＰ２に流通アプリケーションをアプリ開発モードで実行させると、通常モード時では知り得ない内部的な情報をＭＦＰ２に出力させることが可能になり、場合によっては流通アプリケーションの内部の構造を知ることができてしまう。そのため、流通アプリケーションのリバースエンジニアリングが容易になってしまうおそれがある。
【００４６】
本実施形態では、流通アプリケーションがアプリ開発モードでインストールされることを禁止するので、流通アプリケーションがリバースエンジニアリングされることを抑制できる。また、本実施形態では、開発アプリケ―ションがアプリ開発モードでインストールされることを許可するが、開発アプリケ―ションは開発者の元で管理できるので、開発アプリケ―ションが第三者にリバースエンジニアリングされることは、開発者の管理により防ぐことができる。
【００４７】
本実施形態では、インストール制御部２４２がエミュレータ１２３で動作させることも可能なプログラムモジュールとなっているので、ＭＦＰ２上で動作させるための専用のインストール制御部２４２のプログラムモジュールの開発を不要にでき、コストを削減できる。
【００４８】
（第３実施形態）
本実施形態のＭＦＰ２の装置構成は、第２実施形態と同様である。図５のフローチャートを参照して、通常モードからアプリ開発モードへの切り替え時にＭＦＰ２のインストール制御部２４２が行うアンインストール処理を説明する。
インストール制御部２４２は、ＭＦＰ２が通常モードからアプリ開発モードへ切り替えると（Ａｃｔ３１：ＹＥＳ）、ＭＦＰ２上にインストール済みの流通アプリケーションがある場合（Ａｃｔ３２：ＹＥＳ）、インストール済みの流通アプリケーションを全てアンインストールする（Ａｃｔ３３）。
【００４９】
インストール制御部２４２は、ＭＦＰ２が通常モードからアプリ開発モードへ切り替わらない場合（Ａｃｔ３１：ＮＯ）、切り替わるまで（Ａｃｔ３１：ＹＥＳ）Ａｃｔ３２、３３の処理を待機する。インストール制御部２４２は、ＭＦＰ２上にインストール済みの流通アプリケーションが無い場合（Ａｃｔ３２：ＮＯ）、本処理を終了する。
【００５０】
なお、インストール制御部２４２は、Ａｃｔ３２において、インストール済みの流通アプリケーションまたは開発アプリケーションがある場合（Ａｃｔ３２：ＹＥＳ）、インストール済みの流通アプリケーションまたは開発アプリケーションを全てアンインストールしてもよい（Ａｃｔ３３）。
【００５１】
本実施形態では、通常モード時に流通アプリケーションをインストールしても、アプリ開発モード時に流通アプリケーションを削除する。そのため、本実施形態では、アプリ開発モード時に流通アプリケーションが実行されることを確実に防止でき、流通アプリケーションのリバースエンジニアリングの抑制をより図ることができる。
【００５２】
（第４実施形態）
アプリケーションのデモ等を行う目的で、開発アプリケーションを顧客に送り、該開発アプリケーションを顧客のアプリ開発モードにしたＭＦＰ２で実行してもらう場合がある。この場合、開発アプリケーションが開発者の管理下から離れるため、例えば該顧客から第三者に開発アプリケーションが渡り、第三者によって開発アプリケーションがリバースエンジニアリングされるおそれがある。そこで、本実施形態では、開発アプリケーションのリバースエンジニアリングを抑制できる技術を提供する。
【００５３】
本実施形態では、公開鍵方式で開発アプリケーションを暗号化する。すなわち、ＳＤＫ１２２により公開鍵および秘密鍵のペアを生成し、ＳＤＫ１２２により秘密鍵で開発アプリケーションを暗号化するとともに公開鍵を出力する。追加のルールを用いてより複雑な暗号化手順を踏んで開発アプリケーションを暗号化してもよい。鍵ペアの生成および開発アプリケーションの暗号化は、ＳＤＫ１２２とは別のアプリケーションで行ってもよい。
【００５４】
図６は、ＭＦＰ２の構成を示すブロック図である。以下、図７のフローチャートを参照して、鍵データ管理部２４３およびインストール制御部２４２による開発アプリケーションのインストール処理を説明する。
本実施形態では、メモリ２４内に鍵データ管理部２４３がある。鍵データ管理部２４３は、プロセッサ２３に読み込まれて実行される。鍵データ管理部２４３は、開発アプリケーションのインストールの前に公開鍵をＭＦＰ２にインストールする（Ａｃｔ２０）。
【００５５】
Ａｃｔ２１〜Ａｃｔ２９は、図４のＡｃｔ２１〜Ａｃｔ２９と同様の処理なので説明を省略もしくは簡略化する。
インストール制御部２４２は、開発モード時に（Ａｃｔ２３：ＹＥＳ）、インストール要求を受け付けるアプリケーションが開発アプリケーションか、流通アプリケーションかを判定する（Ａｃｔ２４）。
【００５６】
インストール制御部２４２は、アプリケーションが予め定められたファイルの属性値や拡張子を有する場合、アプリケーションを開発アプリケーションと判定する。インストール制御部２４２は、アプリケーションが開発アプリケーションのものとは別の予め定められたファイルの属性値や拡張子を有する場合、アプリケーションを流通アプリケーションと判定する。
【００５７】
インストール制御部２４２は、インストール要求を受け付けるアプリケーションが開発アプリケーションと判定する場合（Ａｃｔ２４：ＹＥＳ）、インストール済みの公開鍵で開発アプリケーションの復号を行う（Ａｃｔ３０）。インストール制御部２４２は、インストール済みの公開鍵で開発アプリケーションを復号できる場合（Ａｃｔ３０：ＹＥＳ）、開発アプリケーションのインストールを許可し（Ａｃｔ２５）、開発アプリケーションのインストールを完了させる（Ａｃｔ２６）。
【００５８】
インストール制御部２４２は、開発アプリケーションをインストール済みの公開鍵で復号できない場合（Ａｃｔ３０：ＮＯ）、開発アプリケーションのインストールを禁止し（Ａｃｔ２７）、開発アプリケーションのインストールを中断または終了させる（Ａｃｔ２８）。
【００５９】
本実施形態では、開発アプリケーションを配布しても、公開鍵をインストールしたＭＦＰ２のみが開発アプリケーションをインストールできるので、公開鍵の配布を管理することで、開発アプリケーションのインストール先を管理できる。そのため、本実施形態では、第三者による開発アプリケーションのリバースエンジニアリングを抑制できる。
【００６０】
なお、鍵データ管理部２４３は、インストール済みの公開鍵を、対応する開発アプリケーションのインストール後やインストールから一定時間経過後に削除してもよいし、ＭＦＰ２から出力できないようにしてもよい。
【００６１】
また、開発モードを備えるＭＦＰ２を用いたアプリケーションの開発時の手順と、エミュレータ１２３を用いたアプリケーションの開発時の手順に同一性を持たせるために、公開鍵をエミュレータ１２３にインストールできるようにしてもよい。そして、エミュレータ１２３は、インストール要求を受け付けるアプリケーションが開発アプリケーションである場合、公開鍵のペアの秘密鍵で暗号化された開発アプリケーションを公開鍵で復号してもよい。
【００６２】
（第５実施形態）
第４実施形態では、開発アプリケーションの復号用の公開鍵のインストールに制限がかからない例を説明した。第４実施形態では、公開鍵のインストール先の管理を、公開鍵の配布先を管理することで行うことになる。
本実施形態では、開発アプリケーションの公開鍵自体に、インストール先のＭＦＰ２を制限する仕組みを入れることにより、開発アプリケーションのインストール対象のＭＦＰ２しか公開鍵をインストールできないようにする。
【００６３】
本実施形態では、開発アプリケーションの復号用の公開鍵に電子署名を付す。すなわち、開発アプリケーションを作成するＳＤＫ１２２にて、開発アプリケーションのインストール対象のＭＦＰ２のシリアル番号（一意の識別情報）を元にハッシュ値を生成する。ＳＤＫ１２２は、署名用秘密鍵および検証用公開鍵を生成し、署名用秘密鍵を用いて該ハッシュ値を暗号化し、電子署名を生成する。ＳＤＫ１２２は、電子署名を開発アプリケーションの復号用の公開鍵に付す。
【００６４】
続いて、ＭＦＰ２（鍵データ管理部２４３）によるアプリケーションのインストール処理における公開鍵のインストール処理を図８のフローチャートを参照して説明する。
ＭＦＰ２の鍵データ管理部２４３は、開発アプリケーションの復号用の公開鍵および検証用公開鍵を取得する（Ａｃｔ２０１）。
【００６５】
鍵データ管理部２４３は、復号用の公開鍵に付された電子署名を検証用公開鍵で復号して第１ハッシュ値を生成するとともに、自機のＭＦＰ２のシリアル番号を元に第２ハッシュ値を生成する（Ａｃｔ２０２）。
【００６６】
鍵データ管理部２４３は、第１、第２ハッシュ値が等しい場合、復号用の公開鍵は正規と判定する（Ａｃｔ２０３：ＹＥＳ）。鍵データ管理部２４３は、復号用の公開鍵のインストールを許可し（Ａｃｔ２０４）、公開鍵のインストールを完了させる（Ａｃｔ２０５：ＹＥＳ）。この後、インストール制御部２４２が、インストール要求を受け付けるアプリケーションのインストール処理を開始する（Ａｃｔ２１）。以降の処理は、第４実施形態の処理と同様である。これにより、ＭＦＰ２がインストール済みの検証用公開鍵に対応する開発アプリケーションのインストール要求を受け付ける場合、該開発アプリケーションを承認し、インストールすることとなる。
【００６７】
鍵データ管理部２４３は、第１、第２ハッシュ値が異なる場合、復号用の公開鍵は正規のものでは無いと判定する（Ａｃｔ２０３：ＮＯ）。鍵データ管理部２４３は、復号用の公開鍵のインストールを禁止し（Ａｃｔ２０６）、公開鍵のインストールを中断または終了させる（Ａｃｔ２０７：ＹＥＳ）。この場合、ＭＦＰ２によるアプリケーションのインストール処理は終了する。
【００６８】
本実施形態では、開発アプリケーションのインストールを許可するＭＦＰ２を限定でき、開発アプリケーションを配布する場合においても、開発アプリケ―ションのリバースエンジニアリングを抑制できる。
【００６９】
（変形例）
本実施形態では、アプリケーションのインストール対象の装置の例としてＭＦＰ２を挙げたが、該装置はスマートフォン等でもよく、適宜の装置であってもよい。
【００７０】
以上に詳述したように、この明細書によれば、アプリケーションのリバースエンジニアリングを抑制する技術を提供できる。
【符号の説明】
【００７１】
１…ＭＦＰ（装置）、１２２…ＳＤＫ（アプリ開発用環境プログラム）。
【図１】
2019114028.tif 000003
【図２】
2019114028.tif 000004
【図３】
2019114028.tif 000005
【図４】
2019114028.tif 000006
【図５】
2019114028.tif 000007
【図６】
2019114028.tif 000008
【図７】
2019114028.tif 000009
【図８】
2019114028.tif 000010