(58)【調査した分野】(Int.Cl.,DB名)
端末に格納されている第1の情報と、前記第1の情報と異なる第2の情報とを関連付けて、前記第1の情報に対応して用意された記憶領域に記憶する記憶部と、制御部と、を備え、前記制御部は、
アプリケーションが、前記第1の情報を取得する第1のAPI(Application Program Interface)を第1の時点で実行しようとするときに、前記記憶部の前記第1の情報に対応する記憶領域から前記第2の情報を読み出す第1の情報読み出しステップと、
読み出した前記第2の情報を前記アプリケーションに返す返答ステップと、
前記第1の時点よりも後の第2の時点において、前記アプリケーションが前記第2の情報を指定して前記第1のAPIと異なる第2のAPIを実行しようとするときに、指定された前記第2の情報と関連付けられた前記第1の情報を前記記憶部から読み出す第2の情報読み出しステップと、
読み出した前記第1の情報を用いて前記第2のAPIの処理を行い、前記第1の情報を含まない処理結果を前記アプリケーションに返す処理ステップと、
を実行することを特徴とする情報処理装置。
アプリケーションが、端末に格納されている第1の情報を取得する第1のAPI(Application Program Interface)を第1の時点で実行しようとするときに、前記第1のAPIの処理を行って前記第1の情報を取得する情報取得ステップと、
取得した前記第1の情報と、前記第1の情報と異なる第2の情報とを関連付けて記憶部に格納する情報格納ステップと、
前記第2の情報を前記アプリケーションに返す返答ステップと、
前記第1の時点よりも後の第2の時点において、前記アプリケーションが前記第2の情報を指定して前記第1のAPIと異なる第2のAPIを実行しようとするときに、指定された前記第2の情報と関連付けられた前記第1の情報を前記記憶部から読み出す情報読み出しステップと、
読み出した前記第1の情報を用いて前記第2のAPIの処理を行い、前記第1の情報を含まない処理結果を前記アプリケーションに返す処理ステップと、
をコンピュータに実行させるためのプログラム。
アプリケーションが、端末に格納されている第1の情報を取得する第1のAPI(Application Program Interface)を第1の時点で実行しようとするときに、前記第1の情報と、前記第1の情報と異なる第2の情報とを関連付けて、前記第1の情報に対応して用意された記憶領域に記憶している記憶部の前記第1の情報に対応する記憶領域から前記第2の情報を読み出す第1の情報読み出しステップと、
読み出した前記第2の情報を前記アプリケーションに返す返答ステップと、
前記第1の時点よりも後の第2の時点において、前記アプリケーションが前記第2の情報を指定して前記第1のAPIと異なる第2のAPIを実行しようとするときに、指定された前記第2の情報と関連付けられた前記第1の情報を前記記憶部から読み出す第2の情報読み出しステップと、
読み出した前記第1の情報を用いて前記第2のAPIの処理を行い、前記第1の情報を含まない処理結果を前記アプリケーションに返す処理ステップと、
をコンピュータに実行させるためのプログラム。
【発明の概要】
【発明が解決しようとする課題】
【0008】
前述したように、アプリケーションは、情報の取得に関するパーミッションを宣言することで、端末に存在する情報を簡単に取得することができる。以下、
図19を参照して、アプリケーションが端末の機密情報を取得して表示するときの処理の流れを説明する。
【0009】
アプリケーションは、端末に格納されている機密情報を取得するAPIである情報取得APIを呼び出す(ステップS900)。呼び出された情報取得APIは端末内の所定の場所から機密情報を取得する(ステップS905)。機密情報を取得した情報取得APIは、取得した機密情報をアプリケーションに返答する(ステップS910)。機密情報を受け取ったアプリケーションは、情報を表示するAPIである表示APIを呼び出す(ステップS915)。呼び出された表示APIは機密情報を表示し(ステップS920)、処理結果をアプリケーションに返答する(ステップS925)。
【0010】
上記の処理では、ステップS910でアプリケーションに機密情報が通知されている。このように、現在の仕様ではアプリケーションが機密情報を簡単に取得できてしまうため、早急な対策が望まれる。
【0011】
本発明は、上述した課題に鑑みてなされたものであって、アプリケーションによる情報の利用を制限することができる情報処理装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明は、上記の課題を解決するためになされたもので、記憶部と制御部を備え、前記制御部は、アプリケーションが、端末に格納されている第1の情報を取得する第1のAPI(Application Program Interface)を第1の時点で実行しようとするときに、前記第1の情報を取得する情報取得ステップと、取得した前記第1の情報と、前記第1の情報と異なる第2の情報とを前記記憶部に格納する情報格納ステップと、前記第2の情報を前記アプリケーションに返す返答ステップと、前記第1の時点よりも後の第2の時点において、前記アプリケーションが前記第2の情報を指定して前記第1のAPIと異なる第2のAPIを実行しようとするときに、指定された前記第2の情報と関連付けられた前記第1の情報を前記記憶部から読み出す情報読み出しステップと、読み出した前記第1の情報を用いて前記第2のAPIの処理を行
い、前記第1の情報を含まない処理結果を前記アプリケーションに返す処理ステップと、を実行することを特徴とする情報処理装置である。
【0013】
また、本発明の情報処理装置において、前記制御部は、前記情報取得ステップ、前記返答ステップ、および前記処理ステップを実行する第1の制御部と、前記情報格納ステップおよび前記情報読み出しステップを実行する第2の制御部と、を有することを特徴とする。
【0014】
また、本発明の情報処理装置は、ユーザに通知を行う通知部をさらに備え、前記情報読み出しステップは、前記第1の時点よりも後の第2の時点において、前記アプリケーションが前記第2の情報を指定して前記第1のAPIと異なる第2のAPIを実行しようとするときに、指定された前記第2の情報と関連付けられた前記第1の情報を前記記憶部から読み出す読み出しステップと、前記通知部を介してユーザに通知を行う通知ステップと、を有し、前記処理ステップでは、ユーザに通知を行った後、ユーザの許可が得られた場合のみ、読み出した前記第1の情報を用いて前記第2のAPIの処理を行
い、前記第1の情報を含まない処理結果を前記アプリケーションに返すことを特徴とする。
【0015】
また、本発明は、端末に格納されている第1の情報と、前記第1の情報と異なる第2の情報とを関連付けて、前記第1の情報に対応して用意された記憶領域に記憶する記憶部と、制御部と、を備え、前記制御部は、アプリケーションが、前記第1の情報を取得する第1のAPI(Application Program Interface)を第1の時点で実行しようとするときに、前記記憶部の前記第1の情報に対応する記憶領域から前記第2の情報を読み出す第1の情報読み出しステップと、読み出した前記第2の情報を前記アプリケーションに返す返答ステップと、前記第1の時点よりも後の第2の時点において、前記アプリケーションが前記第2の情報を指定して前記第1のAPIと異なる第2のAPIを実行しようとするときに、指定された前記第2の情報と関連付けられた前記第1の情報を前記記憶部から読み出す第2の情報読み出しステップと、読み出した前記第1の情報を用いて前記第2のAPIの処理を行
い、前記第1の情報を含まない処理結果を前記アプリケーションに返す処理ステップと、を実行することを特徴とする情報処理装置である。
【0016】
また、本発明の情報処理装置において、前記制御部は、前記返答ステップおよび前記処理ステップを実行する第1の制御部と、前記第1の情報読み出しステップおよび前記第2の情報読み出しステップを実行する第2の制御部と、を有することを特徴とする。
【0017】
また、本発明の情報処理装置は、ユーザに通知を行う通知部をさらに備え、前記第1の情報読み出しステップは、前記第1の時点よりも後の第2の時点において、前記アプリケーションが前記第2の情報を指定して前記第1のAPIと異なる第2のAPIを実行しようとするときに、指定された前記第2の情報と関連付けられた前記第1の情報を前記記憶部から読み出す読み出しステップと、前記通知部を介してユーザに通知を行う通知ステップと、を有し、前記処理ステップでは、ユーザに通知を行った後、ユーザの許可が得られた場合のみ、読み出した前記第1の情報を用いて前記第2のAPIの処理を行
い、前記第1の情報を含まない処理結果を前記アプリケーションに返すことを特徴とする。
【0018】
また、本発明の情報処理装置において、前記アプリケーションと前記第2の制御部に対して異なるUID(User ID)が与えられていることを特徴とする。
【0019】
また、本発明の情報処理装置において、前記通知ステップでは、読み出した前記第1の情報をユーザに通知することを特徴とする。
【0020】
また、本発明は、アプリケーションが、端末に格納されている第1の情報を取得する第1のAPI(Application Program Interface)を第1の時点で実行しようとするときに、前記第1のAPIの処理を行って前記第1の情報を取得する情報取得ステップと、取得した前記第1の情報と、前記第1の情報と異なる第2の情報とを関連付けて記憶部に格納する情報格納ステップと、前記第2の情報を前記アプリケーションに返す返答ステップと、前記第1の時点よりも後の第2の時点において、前記アプリケーションが前記第2の情報を指定して前記第1のAPIと異なる第2のAPIを実行しようとするときに、指定された前記第2の情報と関連付けられた前記第1の情報を前記記憶部から読み出す情報読み出しステップと、読み出した前記第1の情報を用いて前記第2のAPIの処理を行
い、前記第1の情報を含まない処理結果を前記アプリケーションに返す処理ステップと、をコンピュータに実行させるためのプログラムである。
【0021】
また、本発明は、アプリケーションが、端末に格納されている第1の情報を取得する第1のAPI(Application Program Interface)を第1の時点で実行しようとするときに、前記第1の情報と、前記第1の情報と異なる第2の情報とを関連付けて、前記第1の情報に対応して用意された記憶領域に記憶している記憶部の前記第1の情報に対応する記憶領域から前記第2の情報を読み出す第1の情報読み出しステップと、読み出した前記第2の情報を前記アプリケーションに返す返答ステップと、前記第1の時点よりも後の第2の時点において、前記アプリケーションが前記第2の情報を指定して前記第1のAPIと異なる第2のAPIを実行しようとするときに、指定された前記第2の情報と関連付けられた前記第1の情報を前記記憶部から読み出す第2の情報読み出しステップと、読み出した前記第1の情報を用いて前記第2のAPIの処理を行
い、前記第1の情報を含まない処理結果を前記アプリケーションに返す処理ステップと、をコンピュータに実行させるためのプログラムである。
【発明の効果】
【0022】
本発明によれば、アプリケーションに対して、端末に格納されている第1の情報を直接参照させず、第1の情報と異なる第2の情報を参照させることによって、アプリケーションによる情報の利用を制限することができる。
【発明を実施するための形態】
【0024】
以下、図面を参照し、本発明の実施形態を説明する。本明細書および図面では、便宜上、必要に応じてandroid(登録商標)という文字列を*andrd*という文字列で代用し、java(登録商標)という文字列を*jv*という文字列で代用している。すなわち、*andrd*という文字列はandroid(登録商標)という文字列と等価であり、*jv*という文字列はjava(登録商標)という文字列と等価である。
【0025】
(第1の実施形態)
まず、本発明の第1の実施形態を説明する。
図1は、本実施形態による情報処理装置の構成を示している。本実施形態の情報処理装置は、OS にAndroid(登録商標)を実装したスマートフォン等の装置として構成されている。
図1に示すように情報処理装置は、アプリケーション10、制御部11、記憶部12、表示部13を有する。
【0026】
アプリケーション10は、SMSクライアントアプリケーション等であり、アプリケーションの処理として規定された各種の処理を行う。制御部11は、アプリケーション10からの要求に応じてAPIの実行を制御する。制御部11は、情報取得API実行部11aおよび表示API実行部11bを有する。情報取得API実行部11aは、情報処理装置(端末)に格納されている機密情報を取得するAPIである情報取得APIを実行する。表示API実行部11bは、情報を表示するAPIである表示APIを実行する。情報取得APIは、TelephonyManagerクラスのgetLine1Number等である。表示APIは、TextViewクラスのsetText等である。APIはメソッドであるが、本実施形態で注目するメソッドを他のメソッドと区別するためAPIと記載している。
【0027】
記憶部12は、揮発性または不揮発性のメモリで構成されており、OSのプログラムや、アプリケーションプログラム、情報処理装置が使用する各種データ等を記憶する。記憶部12は、揮発性メモリと不揮発性メモリの組合せであってもよい。表示部13は各種情報を表示する。
【0028】
本実施形態のOSのプログラムでは、アプリケーションフレームワークで提供されている既存のクラスを定義しているコードに対して、制御部11の動作に必要な新たなコードが追加されている。つまり、本実施形態のOSのプログラムは、制御部11の動作を規定したコードを含む。
【0029】
既存のOSのソースプログラムに対して、制御部11の動作を規定するコードが追加されることで、OSのソースプログラムが修正され、修正されたソースプログラムがアセンブル(コンパイル)されることで、修正されたOSの実行プログラム(実行ファイル)が生成される。このようにして生成されたOSの実行プログラムが情報処理装置にインストールされている。情報処理装置においてOSが起動することで制御部11が起動する。
【0030】
本実施形態のOSのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータ(本実施形態の情報処理装置)に読み込ませ、実行させることにより、制御部11は、プログラムで規定された処理を実行する。
【0031】
ここで、「コンピュータ」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM、DVD−ROM、フラッシュメモリ等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0032】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0033】
次に、本実施形態の情報処理装置の動作を説明する。
図2は、情報処理装置が機密情報を表示するときの処理の流れを示している。
【0034】
ある第1の時点でアプリケーション10は情報取得APIを呼び出す(ステップS100)。情報取得API実行部11aは、情報取得APIが呼び出されたことを検出し、情報処理装置内の所定の場所から機密情報を取得する(ステップS105)。機密情報は、電話番号、端末識別番号、SIM番号、国情報、通話履歴、電話帳データ、位置情報、受信メールの内容、カレンダー情報等である。また、情報取得API実行部11aはダミー情報を取得する(ステップS110)。ダミー情報は、秘匿すべき機密情報ではなく、アプリケーション10に通知してもよい情報(例えば乱数)である。ステップS110におけるダミー情報の取得は、予め生成されて情報処理装置内の所定の場所に格納されたダミー情報を読み出すこと、ダミー情報を新たに生成することのどちらでもよい。
【0035】
ダミー情報および機密情報を取得した情報取得API実行部11aは、取得した各情報を関連付けて記憶部12に保存する(ステップS115)。
図3は、記憶部12に保存された情報の一例を示している。1つのダミー情報(key0等)と1つの機密情報(電話番号等)とが対になって関連付けられ、それぞれのダミー情報および機密情報の組合せがテーブルとして保存されている。
【0036】
ダミー情報および機密情報を保存した後、情報取得API実行部11aはダミー情報をアプリケーション10に返答する(ステップS120)。
図19では機密情報がアプリケーションに返答されているが、
図2では機密情報ではなくダミー情報がアプリケーション10に返答される。続いて、ある第2の時点でアプリケーション10は、ダミー情報を引数に指定して表示APIを呼び出す(ステップS125)。指定するダミー情報は1つでも複数でもよい。このとき、アプリケーション10から表示API実行部11bにダミー情報が通知される。
【0037】
表示API実行部11bは、表示APIが呼び出されたことを検出し、アプリケーション10から通知されたダミー情報と同一のダミー情報に対応する機密情報を記憶部12から読み出す(ステップS130)。例えば、
図3の例では、アプリケーション10からkey0が通知された場合、テーブルから電話番号が読み出され、アプリケーション10からkey1が通知された場合、テーブルから端末識別番号が読み出される。
【0038】
機密情報を読み出した表示API実行部11bは、読み出した機密情報を表示部13に表示する(ステップS135)。
図4は、表示部13に表示された機密情報の一例を示している。電話番号等の機密情報400が表示部13の画面に表示される。機密情報を表示した後、表示API実行部11bは処理結果をアプリケーション10に返答する(ステップS140)。
【0039】
上記の処理では、アプリケーション10にダミー情報が通知され、機密情報は通知されない。したがって、アプリケーション10が機密情報を直接利用できないようにすることができる。
【0040】
次に、本実施形態における制御部11の動作を実現するコード(ソースコード)の一例を説明する。
図5は、OSの既存のアプリケーションフレームワークに追加するクラスのコードの一例を示している。コード500ではダミー情報と機密情報を管理するテーブルが記述されている。コード510ではダミー情報と機密情報をテーブルに格納するメソッド(secretinsert)が記述されている。コード520ではダミー情報を検索キーとしてテーブルから機密情報を検索するメソッド(secretsearch)が記述されている。
【0041】
図6は、OSの既存のアプリケーションフレームワークにおいて、既存のTelephonyManagerクラスの情報取得APIであるgetLine1Numberのコードを変更した一例を示している。コード600では、ダミー情報および機密情報を取得し、
図5に示したメソッド(secretinsert)によりダミー情報と機密情報をテーブルに格納し、ダミー情報(key0)を返答することが記述されている。
【0042】
図7は、OSの既存のアプリケーションフレームワークにおいて、既存のTextViewクラスの表示APIであるsetTextのコードを変更した一例を示している。なお、
図7ではコードの一部を省略している。以下ではコード700に記述されている内容を説明する。変数textはsetTextの引数であり、表示する文字列を示す。indexOf("key0")は、文字列の中で文字key0が最初に出現する位置を文字数(0を起点とする)で返し、文字列に文字key0が出現しない場合に-1を返答するメソッドである。「indexOf("key0")!"=-1」という条件は、変数textの中に文字key0が出現したということを示している。したがって、変数text、すなわち表示する文字列の中にダミー情報key0が存在する場合に、
図5に示したメソッド(secretsearch)により、ダミー情報key0に対応する機密情報がテーブルから検索され、表示する文字列中のダミー情報が機密情報で置き換えられる。
【0043】
上述したように、本実施形態によれば、アプリケーション10が機密情報を直接利用できないように、機密情報の利用を制限することができる。したがって、情報漏洩を防止することができる。
【0044】
(第2の実施形態)
次に、本発明の第2の実施形態を説明する。第1の実施形態では、機密情報を表示する例を示したが、第2の実施形態では、機密情報をメモリカードに書き込む例を示す。
図8は、本実施形態による情報処理装置の構成を示している。本実施形態では、制御部11が表示API実行部11bの代わりに書き込みAPI実行部11cを有し、入力部14およびメモリカード15が設けられている。他の構成については、第1の実施形態の構成と同様である。
【0045】
書き込みAPI実行部11cは、ファイルの書き込みを行うAPIである書き込みAPIを実行する。書き込みAPIは、BufferedWriterクラスのwriteであり、保存場所にメモリカードを指定することで、メモリカードへの書き込みを行うことができる。入力部14は、ユーザが操作するキーやボタン等を有し、ユーザによって入力された情報を制御部11に通知する。メモリカード15は、例えば情報処理装置に着脱可能な可搬記憶媒体である。
【0046】
次に、本実施形態の情報処理装置の動作を説明する。
図9は、情報処理装置が機密情報をメモリカードに保存するときの処理の流れを示している。ステップS200〜S220の処理は
図2のステップS100〜S120の処理と同様であるので、ステップS200〜S220については説明を省略する。
【0047】
ある第2の時点でアプリケーション10は、ダミー情報を引数に指定して書き込みAPIを呼び出す(ステップS225)。指定するダミー情報は1つでも複数でもよい。このとき、アプリケーション10から書き込みAPI実行部11cにダミー情報が通知される。
【0048】
書き込みAPIが呼び出されると、書き込みAPI実行部11cは、書き込みAPIが呼び出されたことを検出し、アプリケーション10から通知されたダミー情報と同一のダミー情報に対応する機密情報を記憶部12から読み出す(ステップS230)。この後、機密情報をメモリカード15に保存してもよいかどうかをユーザに確認させるための処理が行なわれる。書き込みAPI実行部11cは、読み出した機密情報を含むメッセージを表示部13に表示し、ユーザに確認を促す(ステップS235)。
【0049】
図10は、表示部13に表示されたメッセージの一例を示している。電話番号等の機密情報1000と共に、ユーザに確認を促すメッセージ1010が表示部13の画面に表示される。さらに、ユーザが機密情報を保存することを許可するためのボタン1020と、ユーザが機密情報を保存することを拒否するためのボタン1030とが表示部13の画面に表示される。ユーザによって入力部14を介してボタン1020またはボタン1030が操作され、機密情報の保存を許可する/しないを示す情報が入力される。
【0050】
表示部13に表示されたメッセージを確認したユーザによって、入力部14を介して情報が入力される(ステップS240)。機密情報の保存を許可することを示す情報が入力された場合、書き込みAPI実行部11cは、記憶部12から読み出した機密情報をメモリカード15に書き込む(ステップS245)。なお、機密情報の保存を拒否することを示す情報が入力された場合、書き込みAPI実行部11cが、アプリケーション10から通知されたダミー情報をメモリカード15に書き込むようにしてもよいし、メモリカード15への書き込みを中止してもよい。機密情報をメモリカード15に書き込んだ後、書き込みAPI実行部11cは処理結果をアプリケーション10に返答する(ステップS250)。
【0051】
上記の処理では、アプリケーション10にダミー情報が通知され、機密情報は通知されない。また、アプリケーション10がOSの標準的な書き込みAPIを使用せずに、独自に作成されたネイティブメソッドを使用してメモリカード15に機密情報を保存しようとしても、アプリケーション10には機密情報の代わりにダミー情報が通知されているので、アプリケーション10からネイティブメソッドにダミー情報が渡され、メモリカード15にはダミー情報が保存される。したがって、本実施形態においても、アプリケーション10が機密情報を直接利用できないように、機密情報の利用を制限することができ、情報漏洩を防止することができる。
【0052】
従来のパーミッションに基づいてアプリケーションの動作に制限を与える機構では、アプリケーションが宣言したパーミッションが、アプリケーションによって、いつ、どのように使用されているのかをユーザが知ることができない。ユーザが、アプリケーションをインストールするために、パーミッションを一度許可してしまうと、パーミッションを必要とする動作をアプリケーションが実行したとしても、ユーザにはそのことが通知されない。そのため、ユーザが情報漏洩などの被害に気づくことが難しい。
【0053】
また、ユーザの誤操作に起因する課題もある。例えば、SMSクライアントアプリケーションの動作中に画面に表示されたボタンのうちSMSによりメッセージを送信するボタンをユーザが間違えて押しても、メッセージの送信動作を止めることができない。したがって、ユーザビリティの観点で、APIを利用した処理が行われる前に、アプリケーションがこれから行う動作をユーザが確認でき、動作の実行の可否をユーザが選択できるようになると、ユーザの誤操作による不利益が発生しなくなる。
【0054】
本実施形態では、機密情報がメモリカード15に書き込まれる際に、機密情報の書き込みを行ってもよいかどうかをユーザに確認させることができる。さらに、ユーザは、メモリカード15に書き込まれる機密情報を表示部13上で確認した上で、機密情報の書き込みを許可するかどうかを決定することができる。
【0055】
(第3の実施形態)
次に、本発明の第3の実施形態を説明する。本実施形態では、機密情報を表示する例を示す。
図11は、本実施形態による情報処理装置の構成を示している。本実施形態では、制御部11が情報取得API実行部11aおよび表示API実行部11bの他にAPI実行制御部11dを有する。API実行制御部11dは、情報取得APIおよび表示APIが呼び出されたときにそれらのAPIの実行を制御する。他の構成については、第1の実施形態の構成と同様である。
【0056】
本実施形態では、情報取得APIを定義するTelephonyManagerクラスのコードに対して、情報取得API実行部11aが実行する処理を規定するコードが追加され、表示APIを定義するTextViewクラスのコードに対して、表示API実行部11bが実行する処理を規定するコードが追加されている。また、アプリケーションのインストールおよびアンインストールの管理を行ったり、アプリケーションに適切なパーミッションが付与されているか否かの判定を行ったりするPackageManagerServiceクラスのコードに対して、API実行制御部11dが実行する処理を規定するコードが追加されている。
【0057】
情報取得API実行部11aおよび表示API実行部11bは、アプリケーション10が情報取得API実行部11aおよび表示API実行部11bのそれぞれを呼び出したときにアプリケーション10と同一のプロセスで処理を行う。Android(登録商標)では、通常、UID(User ID)と呼ばれる、プロセス毎に異なるIDがプロセスに与えられ、UIDが異なるプロセス間ではリソースを共有することができない。
【0058】
本実施形態では、アプリケーション10が記憶部12のテーブルに直接アクセスして機密情報を取得できないようにするため、アプリケーション10のプロセスと、API実行制御部11dのプロセスとには、異なるUIDが与えられ、API実行制御部11dは、アプリケーション10と異なるプロセスで処理を行う。上記によって、機密情報の安全性を高めることができる。
【0059】
次に、本実施形態の情報処理装置の動作を説明する。
図12は、情報処理装置が機密情報を表示するときの処理の流れを示している。
【0060】
ある第1の時点でアプリケーション10は情報取得APIを呼び出す(ステップS300)。情報取得API実行部11aは、情報取得APIが呼び出されたことを検出し、情報処理装置内の所定の場所から機密情報を取得する(ステップS305)。また、情報取得API実行部11aはダミー情報を取得する(ステップS310)。
【0061】
ダミー情報および機密情報を取得した情報取得API実行部11aは、取得した各情報をAPI実行制御部11dに通知し、各情報の保存をAPI実行制御部11dに要求する。要求を受けたAPI実行制御部11dは、情報取得API実行部11aから通知されたダミー情報および機密情報を関連付けて記憶部12に保存する(ステップS315)。
【0062】
ダミー情報および機密情報が保存された後、情報取得API実行部11aはダミー情報をアプリケーション10に返答する(ステップS320)。続いて、ある第2の時点でアプリケーション10は、ダミー情報を引数に指定して表示APIを呼び出す(ステップS325)。このとき、アプリケーション10から表示API実行部11bにダミー情報が通知される。
【0063】
表示API実行部11bは、表示APIが呼び出されたことを検出し、アプリケーション10から通知されたダミー情報をAPI実行制御部11dに通知し、機密情報の読み出しをAPI実行制御部11dに要求する(ステップS330)。要求を受けたAPI実行制御部11dは、表示API実行部11bから通知されたダミー情報と同一のダミー情報に対応する機密情報を記憶部12から読み出す(ステップS335)。
【0064】
機密情報を読み出したAPI実行制御部11dは、読み出した機密情報を表示API実行部11bに通知する。表示API実行部11bは、通知された機密情報を表示部13に表示する(ステップS340)。機密情報を表示した後、表示API実行部11bは処理結果をアプリケーション10に返答する(ステップS345)。
【0065】
上記の処理では、アプリケーション10にダミー情報が通知され、機密情報は通知されない。したがって、本実施形態においても、アプリケーション10が機密情報を直接利用できないように、機密情報の利用を制限することができ、情報漏洩を防止することができる。また、アプリケーション10と異なるプロセスで処理を行うAPI実行制御部11dのみが、機密情報が保存された記憶部12のテーブルにアクセスできるようにすることによって、機密情報の安全性を高めることができる。
【0066】
(第4の実施形態)
次に、本発明の第4の実施形態を説明する。本実施形態では、機密情報をメモリカードに書き込む例を示す。
図13は、本実施形態による情報処理装置の構成を示している。本実施形態では、制御部11が情報取得API実行部11aおよび書き込みAPI実行部11cの他にAPI実行制御部11eを有する。API実行制御部11eは、情報取得APIおよび表示APIが呼び出されたときにそれらのAPIの実行を制御する。他の構成については、第2の実施形態の構成と同様である。
【0067】
本実施形態では、情報取得APIを定義するTelephonyManagerクラスのコードに対して、情報取得API実行部11aが実行する処理を規定するコードが追加され、書き込みAPIを定義するBufferedWriterクラスのコードに対して、書き込みAPI実行部11cが実行する処理を規定するコードが追加されている。また、PackageManagerServiceクラスのコードに対して、API実行制御部11eが実行する処理を規定するコードが追加されている。
【0068】
情報取得API実行部11aおよび書き込みAPI実行部11cは、アプリケーション10が情報取得API実行部11aおよび書き込みAPI実行部11cのそれぞれを呼び出したときにアプリケーション10と同一のプロセスで処理を行う。本実施形態でも、アプリケーション10が記憶部12のテーブルに直接アクセスして機密情報を取得できないようにするため、アプリケーション10のプロセスと、API実行制御部11eのプロセスとには、異なるUIDが与えられ、API実行制御部11eは、アプリケーション10と異なるプロセスで処理を行う。上記によって、機密情報の安全性を高めることができる。
【0069】
次に、本実施形態の情報処理装置の動作を説明する。
図14は、情報処理装置が機密情報を表示するときの処理の流れを示している。ステップS400〜S420の処理は
図12のステップS300〜S320の処理と同様であるので、ステップS400〜S420については説明を省略する。
【0070】
ある第2の時点でアプリケーション10は、ダミー情報を引数に指定して書き込みAPIを呼び出す(ステップS425)。このとき、アプリケーション10から書き込みAPI実行部11cにダミー情報が通知される。
【0071】
書き込みAPIが呼び出されると、書き込みAPI実行部11cは、書き込みAPIが呼び出されたことを検出し、アプリケーション10から通知されたダミー情報をAPI実行制御部11eに通知し、機密情報の読み出しをAPI実行制御部11eに要求する(ステップS430)。要求を受けたAPI実行制御部11eは、書き込みAPI実行部11cから通知されたダミー情報と同一のダミー情報に対応する機密情報を記憶部12から読み出す(ステップS435)。
【0072】
この後、機密情報をメモリカード15に保存してもよいかどうかをユーザに確認させるための処理が行なわれる。書き込みAPI実行部11cは、読み出した機密情報を含むメッセージを表示部13に表示し、ユーザに確認を促す(ステップS440)。
【0073】
表示部13に表示されたメッセージを確認したユーザによって、入力部14を介して情報が入力される(ステップS445)。API実行制御部11eは、入力された情報を書き込みAPI実行部11cに通知する。機密情報の保存を許可することを示す情報が入力された場合、書き込みAPI実行部11cは、記憶部12から読み出した機密情報をメモリカード15に書き込む(ステップS450)。なお、機密情報の保存を拒否することを示す情報が入力された場合、書き込みAPI実行部11cが、アプリケーション10から通知されたダミー情報をメモリカード15に書き込むようにしてもよいし、メモリカード15への書き込みを中止してもよい。機密情報をメモリカード15に書き込んだ後、書き込みAPI実行部11cは処理結果をアプリケーション10に返答する(ステップS455)。
【0074】
上記の処理では、アプリケーション10にダミー情報が通知され、機密情報は通知されない。したがって、本実施形態においても、アプリケーション10が機密情報を直接利用できないように、機密情報の利用を制限することができ、情報漏洩を防止することができる。また、アプリケーション10と異なるプロセスで処理を行うAPI実行制御部11eのみが、機密情報が保存された記憶部12のテーブルにアクセスできるようにすることによって、機密情報の安全性を高めることができる。
【0075】
また、機密情報がメモリカード15に書き込まれる際に、機密情報の書き込みを行ってもよいかどうかをユーザに確認させることができる。さらに、ユーザは、メモリカード15に書き込まれる機密情報を表示部13上で確認し、機密情報の書き込みを許可するかどうかを決定することができる。
【0076】
(第5の実施形態)
次に、本発明の第5の実施形態を説明する。
【0077】
第1〜第4の実施形態では、アプリケーションが起動後に機密情報に初めてアクセスする時点で、その都度、異なるダミー情報を取得する方式を採用してもよい。例えば、アプリケーションAが機密情報αにアクセスした時点で乱数を生成し、以後、アプリケーションAは一時的にこの乱数をダミー情報βとして使用する。この場合、アプリケーションAが機密情報αにアクセスした時点で取得するダミー情報βと、アプリケーションBが機密情報αにアクセスした時点で取得するダミー情報γとは異なり得る。アプリケーションが終了した時点で、アプリケーションが取得していたダミー情報はメモリから開放される。このため、アプリケーションAが一旦終了した後に再起動し、再び機密情報αにアクセスする際に取得するダミー情報δも、ダミー情報β,γとは異なり得る。
【0078】
情報処理装置の電源がオフとなる際には全てのアプリケーションが終了し、各アプリケーションが取得していたダミー情報はメモリから開放される。よって、各アプリケーションが使用するダミー情報の管理に揮発型の記憶装置を用いることが可能となり、例えば配列を用いたコーディングにより実現することができる。
【0079】
一方、アプリケーションが機密情報毎に固定されたダミー情報を取得する方式も可能であり、第5の実施形態ではこの方式について説明する。この方式では、アプリケーションが同一の機密情報にアクセスした際に、常に同一のダミー情報がアプリケーションに通知される。情報処理装置の電源がオフとなった場合でも、各機密情報に対応したダミー情報は情報処理装置に保存されている。この方式では、各アプリケーションが使用するダミー情報の管理に不揮発型の記憶装置を用いることが可能となり、例えば既存のコンテンツプロバイダを変形することで実現することができる。
【0080】
本実施形態は第1の実施形態の変形例であり、本実施形態の構成は、第1の実施形態の構成(
図1)と同様である。本実施形態では、所定のアプリケーションが情報取得APIを実行した時点で、記憶部12にはダミー情報と機密情報を関連付けたテーブルが予め格納されているものとする。例えば、あるアプリケーションが初めて機密情報を取得する際に、
図2のステップS100〜S115の処理により、ダミー情報と機密情報を関連付けたテーブルが記憶部12に保存される。また、ダミー情報と機密情報は、記憶部12において機密情報毎(あるいは情報取得API毎)に用意された記憶領域に保存されている。後述する処理では、情報取得APIが呼び出された際、その情報取得APIが識別され、その情報取得APIに対応する記憶領域、すなわちその情報取得APIによって取得される機密情報に対応する記憶領域が参照される。
【0081】
次に、本実施形態の情報処理装置の動作を説明する。
図15は、情報処理装置が機密情報を表示するときの処理の流れを示している。
【0082】
ある第1の時点でアプリケーション10は情報取得APIを呼び出す(ステップS500)。情報取得API実行部11aは、情報取得APIが呼び出されたことを検出し、情報取得APIにより取得される機密情報に対応した記憶部12の記憶領域からダミー情報を読み出す(ステップS505)。情報取得API実行部11aは、読み出したダミー情報をアプリケーション10に返答する(ステップS510)。以降のステップS515〜S530の処理は
図2のステップS125〜S140の処理と同様であるので、ステップS515〜S530については説明を省略する。
【0083】
本実施形態においても、アプリケーション10が機密情報を直接利用できないように、機密情報の利用を制限することができ、情報漏洩を防止することができる。
【0084】
(第6の実施形態)
次に、本発明の第6の実施形態を説明する。本実施形態では、アプリケーションが機密情報毎に固定されたダミー情報を取得する方式について説明する。本実施形態は第2の実施形態の変形例であり、本実施形態の構成は、第2の実施形態の構成(
図8)と同様である。本実施形態では、第5の実施形態と同様に、所定のアプリケーションが情報取得APIを実行した時点で、記憶部12にはダミー情報と機密情報を関連付けたテーブルが予め格納されているものとする。また、ダミー情報と機密情報は、記憶部12において機密情報毎(あるいは情報取得API毎)に用意された記憶領域に保存されている。
【0085】
図16は、情報処理装置が機密情報をメモリカードに保存するときの処理の流れを示している。ステップS600〜S610の処理は
図15のステップS500〜S510の処理と同様であるので、ステップS600〜S610については説明を省略する。また、ステップS615〜S640の処理は
図9のステップS225〜S250の処理と同様であるので、ステップS615〜S640については説明を省略する。
【0086】
本実施形態においても、アプリケーション10が機密情報を直接利用できないように、機密情報の利用を制限することができ、情報漏洩を防止することができる。
【0087】
(第7の実施形態)
次に、本発明の第7の実施形態を説明する。本実施形態では、アプリケーションが機密情報毎に固定されたダミー情報を取得する方式について説明する。本実施形態は第3の実施形態の変形例であり、本実施形態の構成は、第3の実施形態の構成(
図11)と同様である。本実施形態では、第5の実施形態と同様に、所定のアプリケーションが情報取得APIを実行した時点で、記憶部12にはダミー情報と機密情報を関連付けたテーブルが予め格納されているものとする。また、ダミー情報と機密情報は、記憶部12において機密情報毎(あるいは情報取得API毎)に用意された記憶領域に保存されている。
【0088】
次に、本実施形態の情報処理装置の動作を説明する。
図17は、情報処理装置が機密情報を表示するときの処理の流れを示している。
【0089】
ある第1の時点でアプリケーション10は情報取得APIを呼び出す(ステップS700)。情報取得API実行部11aは、情報取得APIが呼び出されたことを検出し、情報取得APIにより取得される機密情報に対応したダミー情報をAPI実行制御部11dに要求する(ステップS705)。API実行制御部11dは、ダミー情報を要求した情報取得APIにより取得される機密情報に対応した記憶部12の記憶領域からダミー情報を読み出す(ステップS710)。情報取得API実行部11aは、読み出したダミー情報を情報取得API実行部11aに通知し、情報取得API実行部11aはダミー情報をアプリケーション10に返答する(ステップS715)。以降のステップS720〜S740の処理は
図12のステップS325〜S345の処理と同様であるので、ステップS720〜S740については説明を省略する。
【0090】
本実施形態においても、アプリケーション10が機密情報を直接利用できないように、機密情報の利用を制限することができ、情報漏洩を防止することができる。また、機密情報の安全性を高めることができる。
【0091】
(第8の実施形態)
次に、本発明の第8の実施形態を説明する。本実施形態では、アプリケーションが機密情報毎に固定されたダミー情報を取得する方式について説明する。本実施形態は第4の実施形態の変形例であり、本実施形態の構成は、第4の実施形態の構成(
図13)と同様である。本実施形態では、第5の実施形態と同様に、所定のアプリケーションが情報取得APIを実行した時点で、記憶部12にはダミー情報と機密情報を関連付けたテーブルが予め格納されているものとする。また、ダミー情報と機密情報は、記憶部12において機密情報毎(あるいは情報取得API毎)に用意された記憶領域に保存されている。
【0092】
図18は、情報処理装置が機密情報をメモリカードに保存するときの処理の流れを示している。ステップS800〜S815の処理は
図17のステップS700〜S715の処理と同様であるので、ステップS800〜S815については説明を省略する。また、ステップS820〜S850の処理は
図14のステップS425〜S455の処理と同様であるので、ステップS820〜S850については説明を省略する。
【0093】
本実施形態においても、アプリケーション10が機密情報を直接利用できないように、機密情報の利用を制限することができ、情報漏洩を防止することができる。また、機密情報の安全性を高めることができる。
【0094】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、各実施形態の情報処理装置をスマートフォン等の携帯電話端末に適用してもよいし、適用先は汎用的なOSで動作する装置であればよく、各実施形態の情報処理装置を家電製品や車等に適用してもよい。