JP6322961B2 - アプリケーションプログラムおよびその実行方法 - Google Patents

アプリケーションプログラムおよびその実行方法 Download PDF

Info

Publication number
JP6322961B2
JP6322961B2 JP2013230920A JP2013230920A JP6322961B2 JP 6322961 B2 JP6322961 B2 JP 6322961B2 JP 2013230920 A JP2013230920 A JP 2013230920A JP 2013230920 A JP2013230920 A JP 2013230920A JP 6322961 B2 JP6322961 B2 JP 6322961B2
Authority
JP
Japan
Prior art keywords
application program
computer
specific
registration
unique information
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
JP2013230920A
Other languages
English (en)
Other versions
JP2015090640A (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.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
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 Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2013230920A priority Critical patent/JP6322961B2/ja
Publication of JP2015090640A publication Critical patent/JP2015090640A/ja
Application granted granted Critical
Publication of JP6322961B2 publication Critical patent/JP6322961B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、アプリケーションプログラムおよびその実行方法に関し、特に、インストールされたアプリケーションプログラムが不正な手段で改竄された場合に、これを検知してユーザに認識させる技術に関する。
現在、コンピュータとして機能する電子機器は、いわゆるデスクトップパソコンやノートパソコンから、スマートフォンや電子タブレットに至るまで多岐にわたっており、これら様々な電子機器において多様なアプリケーションプログラムが利用されている。このため、実社会で利用されているアプリケーションプログラムの数は膨大な数にのぼり、今後も急激な勢いでその数を増してゆくものと予想される。一方、アプリケーションプログラムの提供形態も、物理的な記録媒体に格納して配布する従来の形態から、インターネットを介してオンラインでデータを送信する形態に移行しつつあり、一般ユーザは、Web上の所定のサイトをアクセスして、ネットワーク経由でアプリケーションプログラムをインストールして利用することができるようになってきている。
このように、ネットワーク経由でアプリケーションプログラムを配布する形態が普及したため、マルウェアの流布も容易になってきており、実害の発生が社会的な問題となってきている。最近は、金融取引や信販取引でのオンライン決済を行うためのアプリケーションプログラムも広く利用されるようになってきており、クラッカーが、このようなアプリケーションプログラムに改竄を加えた上で、これを偽サイトなどを通じてユーザに再配布して詐欺行為を行う事例も多くなってきている。ユーザが、改竄されたアプリケーションプログラムを知らずにインストールし、これを実行してしまうと、パスワードをはじめとする様々な情報がクラッカーの手に盗み出されてしまい、金銭的な実害が発生することになる。
通常、デジタルデータの改竄を防止するためには、電子署名の技術が利用されている。たとえば、下記の特許文献1には、携帯電話のメモリ内のデータに電子署名を施し、これをチェックすることにより改竄の有無を検出するシステムが開示されている。また、特許文献2には、情報処理装置内のアプリケーションプログラムの改竄の有無を、電子署名やハッシュ値を利用して監視するシステムが開示されている。一方、下記の特許文献3には、電子署名付加ファイルに対する改竄が行われた場合にも、有効な改竄検知を行う技術が開示されており、特許文献4には、更に、改竄のないアプリを実行許可リストに自動登録する技術が開示されている。
特開2007−293847号公報 国際公開第WO2008−047830号公報 特許第5056995号公報 特許第5126447号公報
上述したとおり、デジタルデータの改竄を防止するために、当該デジタルデータに対して電子署名を施すことは様々な産業分野で利用されており、前掲の特許文献1,2にも記載されているように、電子機器に配布するアプリケーションプログラムに対する改竄防止にも利用されている。たとえば、Android(登録商標)をOSとして採用するスマートフォンの場合、インストールするアプリケーションプログラムには、必ず電子署名を付加することが仕様によって定められており、電子署名が付加されていないアプリケーションプログラムや、付加されている電子署名との間に不整合が生じているアプリケーションプログラムは、OSによって不正なプログラムと判断され、実行が許可されない。
しかしながら、Android(登録商標)における電子署名は、あくまでも署名対象となるアプリケーションプログラムデータの内容を署名者が保証するものであり、署名者の身元まで保証するものではない。このため、クラッカーは、アプリケーションプログラムの内容を改竄した後、改竄後のアプリケーションプログラムを署名対象データとして自分自身を署名者とする電子署名を新たに行い、この新たな電子署名を付加して改竄後のアプリケーションプログラムを再配布することが可能である。このように、電子署名に対する改竄が行われた場合、上述したAndroid(登録商標)をOSとして利用している端末装置などでは、有効な改竄検知を行うことができない。
そこで、前掲の特許文献3,4には、電子署名に対する改竄をも有効に検知する改竄チェックルーチンをアプリケーションプログラム自身に組み込む技術が開示されている。しかしながら、そのような改竄検知ルーチンが存在しても、当然ながら、当該ルーチン自身が実際に実行されないと、その役割を果たすことはできない。このため、改竄されたアプリケーションプログラムによって、正規のアプリケーションプログラムが置き換えられ、改竄されたアプリケーションプログラムが実行された場合は、改竄検知を行うことができない。
特に、Android(登録商標)OSについては、OSの脆弱性を突いて、いわゆるインジェクションと呼ばれている改竄手法が可能になることが判明し、このような改竄手法による実害も発生している。このインジェクションと呼ばれている改竄手法は、Android(登録商標)OS用のアプリケーションプログラムが、パッケージ化された状態で配布される点を利用して、正規のアプリケーションパッケージの中に、正規のプログラム等をそのまま残し状態で、改竄されたプログラムを埋め込む手法を採用するものである。当該手法により改竄プログラムが埋め込まれたアプリケーションパッケージは、Android(登録商標)OSの脆弱性により、電子署名は正当なものと判断され、しかもプログラムを起動する指示を与えると、新たに埋め込まれた改竄プログラムの方が実行されてしまうという問題を抱えている。
現在は、この脆弱性に対するパッチ処理が完了しているが、パッチ処理が実施されていない端末装置では、依然として、このインジェクションと呼ばれている改竄手法の脅威にさらされていることになる。
一方、Android(登録商標)OS用のアプリケーションプログラムをはじめとして、最近のアプリケーションプログラムには、オンラインでバージョンアップを行う機能が備わっている。通常、新バージョンのプログラムが利用可能な状態になると、オンラインでユーザへの通知が行われ、ユーザが許可すれば、オンラインでバージョンアップが実行され、インストールされていたプログラムは最新版に置き換わる。ユーザにとっては非常に便利な機能であるが、新バージョンの通知が偽メールや偽サイトから行われたものであると、新バージョンのプログラムではなく、改竄されたプログラムへのすり替えが行われてしまう。
特に、この改竄されたプログラムが、上述したようなインジェクションによる改竄プログラムであったとすると、上記パッチ処理が完了していない端末装置では、改竄を有効に検知することができなくなる。もちろん、このような問題は、Android(登録商標)OSのみにおいて生じる問題ではなく、脆弱性をもった他のOSについても生じうる問題である。
そこで本発明は、インストールされている正規のプログラムが、改竄プログラムにすり替えられた場合に、すり替えの事実をユーザに認識させることが可能なアプリケーションプログラムおよびその実行方法を提供することを目的とする。
(1) 本発明の第1の態様は、
コンピュータに、所定の主処理を実行させる主処理ルーチンと、
コンピュータに、起動処理を実行させる起動処理ルーチンと、
コンピュータに、ユーザの指示に基づいて固有情報を入力し、入力した固有情報を所定の格納場所に格納する登録処理を実行させる登録処理ルーチンと、
コンピュータに、上記格納場所から固有情報を取り出し、取り出した固有情報もしくはこれに基づいて生成した派生情報をユーザに提示する提示処理を実行させる提示処理ルーチンと、
をアプリケーションプログラムに組み込み、
起動処理によって、特定のコンピュータにおいてアプリケーションプログラムが起動されたときに、当該特定のコンピュータについて過去に登録処理が実行されていた場合には、当該特定のコンピュータに、提示処理と主処理とを実行させるようにしたものである。
(2) 本発明の第2の態様は、上述した第1の態様に係るアプリケーションプログラムにおいて、
登録処理が、ユーザの指示に基づいて、文字列、記号、画像、動画、音声もしくは振動を含む固有情報を入力し、これを所定の格納場所に格納する処理を含み、
提示処理が、固有情報もしくは派生情報として、文字列、記号、画像、動画、音声もしくは振動またはこれらの組み合わせをユーザに提示する処理を含むようにしたものである。
(3) 本発明の第3の態様は、上述した第1または第2の態様に係るアプリケーションプログラムにおいて、
登録処理が、ユーザの指示に基づいて、所定の提示方法を含む固有情報を入力し、これを所定の格納場所に格納する処理を含み、
提示処理が、文字列、記号、画像、動画、音声もしくは振動またはこれらの組み合わせを上記提示方法に基づいてユーザに提示する処理を含むようにしたものである。
(4) 本発明の第4の態様は、上述した第1〜第3の態様に係るアプリケーションプログラムにおいて、
登録処理が、固有情報の入力を行う際に、当該固有情報が当該アプリケーションプログラムの正当性を確認するための提示処理に利用される情報である旨の説明メッセージを提示する処理を含むようにしたものである。
(5) 本発明の第5の態様は、上述した第1〜第4の態様に係るアプリケーションプログラムにおいて、
起動処理として、特定のコンピュータにおいてアプリケーションプログラムが起動されたときに、当該特定のコンピュータについて過去に登録処理が実行されていた場合には、当該特定のコンピュータに、提示処理の実行後に主処理を実行させる処理が行われるようにしたものである。
(6) 本発明の第6の態様は、上述した第5の態様に係るアプリケーションプログラムにおいて、
提示処理の実行後に所定の提示時間が経過した後、自動的に主処理が実行されるようにしたものである。
(7) 本発明の第7の態様は、上述した第5または第6の態様に係るアプリケーションプログラムにおいて、
提示処理の実行後に、ユーザによる所定の操作があったときに、主処理が実行されるようにしたものである。
(8) 本発明の第8の態様は、
コンピュータに、所定の主処理を実行させる主処理ルーチンと、
コンピュータに、起動処理を実行させる起動処理ルーチンと、
コンピュータに、ユーザの指示に基づいてコンピュータの使用環境に関する固有情報を入力し、入力した固有情報を所定の格納場所に格納する登録処理を実行させる登録処理ルーチンと、
コンピュータに、上記格納場所から固有情報を取り出し、取り出した固有情報と当該コンピュータの使用環境とが合致するか否かを確認し、確認結果をユーザに報知する確認処理を実行させる確認処理ルーチンと、
をアプリケーションプログラムに組み込み、
起動処理によって、特定のコンピュータにおいてアプリケーションプログラムが起動されたときに、当該特定のコンピュータについて過去に登録処理が実行されていた場合には、当該特定のコンピュータに、確認処理で合致が確認された場合にのみ主処理を実行させるようにしたものである。
(9) 本発明の第9の態様は、上述した第8の態様に係るアプリケーションプログラムにおいて、
登録処理が、ユーザの指示に基づいて、特定の方角を含む固有情報を入力し、これを所定の格納場所に格納する処理を含み、
確認処理が、固有情報に含まれている特定の方角と、コンピュータに備わっている方位センサが検出した当該コンピュータの地理的な向きと、が合致するか否かを確認する処理を含むようにしたものである。
(10) 本発明の第10の態様は、上述した第8の態様に係るアプリケーションプログラムにおいて、
登録処理が、ユーザの指示に基づいて、特定の角度を含む固有情報を入力し、これを所定の格納場所に格納する処理を含み、
確認処理が、固有情報に含まれている特定の角度と、コンピュータに備わっている加速度センサが検出した当該コンピュータの姿勢を示す角度と、が合致するか否かを確認する処理を含むようにしたものである。
(11) 本発明の第11の態様は、上述した第8〜第10の態様に係るアプリケーションプログラムにおいて、
登録処理が、固有情報の入力を行う際に、当該固有情報が当該アプリケーションプログラムの正当性を確認するための確認処理に利用される情報である旨の説明メッセージを提示する処理を含むようにしたものである。
(12) 本発明の第12の態様は、上述した第1〜第11の態様に係るアプリケーションプログラムにおいて、
登録処理が、ユーザの登録指示に基づいて実行されるようにしたものである。
(13) 本発明の第13の態様は、上述した第1〜第11の態様に係るアプリケーションプログラムにおいて、
起動処理が、特定のコンピュータにおいて当該アプリケーションプログラムが起動されたときに、当該特定のコンピュータについて過去に登録処理が実行されていなかった場合には、当該特定のコンピュータに、登録処理の実行後に主処理を実行させる処理を含むようにしたものである。
(14) 本発明の第14の態様は、上述した第1〜第13の態様に係るアプリケーションプログラムにおいて、
起動処理が、登録処理によって格納が行われるべき所定の格納場所に、固有情報が格納されているか否かに基づいて、過去に登録処理が実行されたか否かを判定する処理を含むようにしたものである。
(15) 本発明の第15の態様は、上述した第1〜第13の態様に係るアプリケーションプログラムにおいて、
登録処理が、特定のコンピュータについて固有情報を所定の格納場所に格納したことを登録履歴として記録する処理を含み、
起動処理が、登録履歴の有無に基づいて、当該特定のコンピュータについて過去に登録処理が実行されたか否かを判定する処理を含むようにしたものである。
(16) 本発明の第16の態様は、上述した第15の態様に係るアプリケーションプログラムにおいて、
登録履歴の記録場所として、登録処理を実行する特定のコンピュータ内の不揮発性メモリ領域を設定したものである。
(17) 本発明の第17の態様は、上述した第14〜第16の態様に係るアプリケーションプログラムにおいて、
起動処理が、当該アプリケーションプログラムと同一のグループに所属する別のプログラムによって固有情報が所定の場所に格納されているか否かに基づいて、もしくは、当該別のプログラムによって記録された登録履歴に基づいて、過去に登録処理が実行されたか否かを判定する処理を含むようにしたものである。
(18) 本発明の第18の態様は、上述した第17の態様に係るアプリケーションプログラムにおいて、
起動処理が、当該アプリケーションプログラムに対して旧バージョンの関係にあるアプリケーションプログラムによって固有情報が所定の場所に格納されているか否かに基づいて、もしくは、当該旧バージョンの関係にあるアプリケーションプログラムによって記録された登録履歴に基づいて、過去に登録処理が実行されたか否かを判定する処理を含むようにしたものである。
(19) 本発明の第19の態様は、上述した第1〜第18の態様に係るアプリケーションプログラムにおいて、
登録処理が、当該登録処理を実行中の特定のコンピュータ内の記憶装置もしくは当該特定のコンピュータに接続された外部の記憶装置を格納場所として固有情報を格納する処理を含み、
提示処理もしくは確認処理が、いずれかの記憶装置に格納されている固有情報を取り出す処理を含むようにしたものである。
(20) 本発明の第20の態様は、上述した第1〜第18の態様に係るアプリケーションプログラムにおいて、
登録処理が、当該登録処理を実行中の特定のコンピュータに対してネットワークを介して接続されたサーバ装置を格納場所として固有情報を格納する処理を含み、
提示処理もしくは確認処理が、上記サーバ装置に格納されている固有情報をネットワークを介して取り出す処理を含むようにしたものである。
(21) 本発明の第21の態様は、上述した第20の態様に係るアプリケーションプログラムにおいて、
登録処理が、当該登録処理を実行中の特定のコンピュータもしくは当該特定のコンピュータを利用している特定のユーザを識別するための識別情報に対応づけて、登録処理の対象となる固有情報をサーバ装置に格納する処理を含み、
提示処理もしくは確認処理が、この識別情報を利用して、この識別情報に対応づけて格納されている固有情報を取り出す処理を含むようにしたものである。
(22) 本発明の第22の態様は、上述した第1〜第21の態様に係るアプリケーションプログラムにおいて、
当該アプリケーションプログラムを構成するファイル全体のデータサイズを確認し、確認したデータサイズが予め設定されている設定サイズと一致するか否かを提示するサイズ確認処理を実行させるサイズ確認処理ルーチンを更に組み込むようにしたものである。
(23) 本発明の第23の態様は、上述した第1〜第22の態様に係るアプリケーションプログラムにおいて、
主処理ルーチン、起動処理ルーチン、登録処理ルーチン、提示処理ルーチン、確認処理ルーチン、サイズ確認処理ルーチンのうち、当該アプリケーションプログラムに組み込まれているルーチンが、Android(登録商標)OSプログラムの下で動作するプログラムにより構成されているようにしたものである。
(24) 本発明の第24の態様は、上述した第1〜第23の態様に係るアプリケーションプログラムをコンピュータ読み取り可能な記録媒体に記録して配布し、あるいは、当該アプリケーションプログラムをコンピュータにインストールした状態で配布するようにしたものである。
(25) 本発明の第25の態様は、アプリケーションプログラムの実行方法において、
コンピュータが、特定のアプリケーションプログラムに対する起動指示を受けたときに、過去に特定のアプリケーションプログラムに関する登録処理段階が実行されているか否かを判定する登録有無判定段階と、
登録有無判定段階において否定的判定がなされたときに、コンピュータが、ユーザの指示に基づいて固有情報を入力し、上記特定のアプリケーションプログラムに対応づけて、入力した固有情報を所定の格納場所に格納する登録処理段階と、
登録有無判定段階において肯定的判定がなされたときに、コンピュータが、上記格納場所に上記特定のアプリケーションプログラムに対応づけて格納されている固有情報を取り出し、取り出した固有情報もしくはこれに基づいて生成した派生情報をユーザに提示する提示処理段階と、
コンピュータが、登録処理段階もしくは提示処理段階を実行した後に、上記特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階と、
を行うようにしたものである。
(26) 本発明の第26の態様は、アプリケーションプログラムの実行方法において、
登録用コンピュータが、ユーザの指示に基づいて固有情報を入力し、特定の実行用コンピュータと特定のアプリケーションプログラムとの組み合わせに対応づけて、入力した固有情報を所定の格納場所に格納する登録処理段階と、
上記特定の実行用コンピュータが、上記特定のアプリケーションプログラムに対する起動指示を受けたときに、上記格納場所に上記特定の実行用コンピュータと上記特定のアプリケーションプログラムとの組み合わせに対応づけて格納されている固有情報を取り出し、取り出した固有情報もしくはこれに基づいて生成した派生情報をユーザに提示する提示処理段階と、
上記特定の実行用コンピュータが、提示処理段階を実行した後に、上記特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階と、
を行うようにしたものである。
(27) 本発明の第27の態様は、上述した第25または第26の態様に係るアプリケーションプログラムの実行方法において、
登録処理段階で、文字列、記号、画像、動画、音声もしくは振動を含む固有情報を所定の格納場所に格納し、
提示処理段階で、固有情報もしくは派生情報として、文字列、記号、画像、動画、音声もしくは振動またはこれらの組み合わせを提示するようにしたものである。
(28) 本発明の第28の態様は、上述した第25〜第27の態様に係るアプリケーションプログラムの実行方法において、
登録処理段階で、ユーザの指示に基づいて固有情報の入力を行う際に、当該固有情報が当該アプリケーションプログラムの正当性を確認するために提示処理段階で利用される情報である旨の説明メッセージを提示するようにしたものである。
(29) 本発明の第29の態様は、上述した第25の態様に係るアプリケーションプログラムの実行方法において、
アプリケーションプログラムによる登録処理段階および提示処理段階の処理動作を監視する監視プログラムを用意し、
コンピュータが、監視プログラムを実行することにより、登録処理段階で所定の格納場所に格納された固有情報を、別な格納場所にもコピーして格納する照合準備段階と、
コンピュータが、監視プログラムを実行することにより、提示処理段階で提示された固有情報もしくは派生情報と、上記別な格納場所に格納されている固有情報もしくはこれに基づいて生成した派生情報とが合致するか否かを照合し、照合結果をユーザに報知する照合処理段階と、
を更に行うようにしたものである。
(30) 本発明の第30の態様は、アプリケーションプログラムの実行方法において、
コンピュータが、特定のアプリケーションプログラムに対する起動指示を受けたときに、過去に当該特定のアプリケーションプログラムに関する登録処理段階が実行されているか否かを判定する登録有無判定段階と、
登録有無判定段階において否定的判定がなされたときに、コンピュータが、ユーザの指示に基づいてコンピュータの使用環境に関する固有情報を入力し、当該特定のアプリケーションプログラムに対応づけて、入力した固有情報を所定の格納場所に格納する登録処理段階と、
登録有無判定段階において肯定的判定がなされたときに、コンピュータが、上記格納場所に当該特定のアプリケーションプログラムに対応づけて格納されている固有情報を取り出し、取り出した固有情報とコンピュータの使用環境とが合致するか否かを確認し、確認結果をユーザに報知する確認処理段階と、
コンピュータが、登録処理段階を実行した後に、もしくは、確認処理段階を実行して合致が確認されたときに、特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階と、
を行うようにしたものである。
(31) 本発明の第31の態様は、アプリケーションプログラムの実行方法において、
登録用コンピュータが、ユーザの指示に基づいてコンピュータの使用環境に関する固有情報を入力し、特定の実行用コンピュータと特定のアプリケーションプログラムとの組み合わせに対応づけて、入力した固有情報を所定の格納場所に格納する登録処理段階と、
上記特定の実行用コンピュータが、上記特定のアプリケーションプログラムに対する起動指示を受けたときに、上記格納場所に上記特定の実行用コンピュータと上記特定のアプリケーションプログラムとの組み合わせに対応づけて格納されている固有情報を取り出し、取り出した固有情報と上記特定の実行用コンピュータの使用環境とが合致するか否かを確認し、確認結果をユーザに報知する確認処理段階と、
上記特定の実行用コンピュータが、確認処理段階を実行して合致が確認されたときに、上記特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階と、
を行うようにしたものである。
(32) 本発明の第32の態様は、上述した第30または第31の態様に係るアプリケーションプログラムの実行方法において、
登録処理段階で、ユーザの指示に基づいて、特定の方角を含む固有情報を入力し、これを所定の格納場所に格納し、
確認処理段階で、上記固有情報に含まれている特定の方角と、コンピュータに備わっている方位センサが検出した当該コンピュータの地理的な向きと、が合致するか否かを確認し、確認結果をユーザに報知するようにしたものである。
(33) 本発明の第33の態様は、上述した第30または第31の態様に係るアプリケーションプログラムの実行方法において、
登録処理段階で、ユーザの指示に基づいて、特定の角度を含む固有情報を入力し、これを所定の格納場所に格納し、
確認処理段階で、上記固有情報に含まれている特定の角度と、コンピュータに備わっている加速度センサが検出した当該コンピュータの姿勢を示す角度と、が合致するか否かを確認し、確認結果をユーザに報知するようにしたものである。
(34) 本発明の第34の態様は、上述した第30〜第33の態様に係るアプリケーションプログラムの実行方法において、
登録処理段階で、ユーザの指示に基づいて固有情報の入力を行う際に、当該固有情報が当該アプリケーションプログラムの正当性を確認するために確認処理段階で利用される情報である旨の説明メッセージを提示するようにしたものである。
(35) 本発明の第35の態様は、上述した第25〜第34の態様に係るアプリケーションプログラムの実行方法において、
登録処理段階で、同一のグループに所属する複数のアプリケーションプログラムについては、これら複数のアプリケーションプログラムに共通の固有情報を対応づけて格納する処理を行うようにしたものである。
(36) 本発明の第36の態様は、上述した第25〜第35の態様に係るアプリケーションプログラムの実行方法において、
コンピュータにアプリケーションプログラムがインストールされたときに、当該アプリケーションプログラムに対応づけた固有情報を所定の格納場所に格納する登録処理段階が実行されるようにしたものである。
(37) 本発明の第37の態様は、上述した第25〜第36の態様に係るアプリケーションプログラムの実行方法において、
登録処理段階で、当該登録処理段階を実行中のコンピュータに対してネットワークを介して接続されたサーバ装置を格納場所として固有情報を格納し、
提示処理段階もしくは確認処理段階で、上記サーバ装置に格納されている固有情報をネットワークを介して取り出すようにしたものである。
(38) 本発明の第38の態様は、上述した第37の態様に係るアプリケーションプログラムの実行方法において、
Webブラウザプログラムもしくは電子メールプログラムを利用して、登録処理段階が実行されるようにしたものである。
本発明の基本的な実施形態に係るアプリケーションプログラムおよびその実行方法によれば、アプリケーションプログラム内の登録処理ルーチンを用いて、ユーザは、任意の固有情報を所定の格納場所に格納する登録処理を行うことができる。この登録処理を行った後に当該アプリケーションプログラムを起動すると、提示処理ルーチンによって、登録しておいた固有情報がユーザに対して提示されるとともに、当該アプリケーションプログラムの本来の処理である主処理が実行されることになる。したがって、ユーザは、主処理の実行の際に提示される固有情報が正しいことを確認することにより、当該アプリケーションプログラムの正当性を認識することができる。
クラッカーの不法行為により、アプリケーションプログラムのすり替えが行われ、正規のプログラムの代わりに改竄プログラムが起動された場合、提示処理ルーチンによる正しい固有情報の提示が行われないため、ユーザは、当該アプリケーションプログラムの正当性を疑うことができ、改竄プログラムによる被害を抑えることができる。
一方、提示処理ルーチンの代わりに、確認処理ルーチンを実行する実施形態の場合、登録処理を行った後にアプリケーションプログラムを起動すると、登録しておいた固有情報がコンピュータの使用環境と合致するか否かを確認する処理が行われ、その結果がユーザに報知されるので、やはりユーザは、当該アプリケーションプログラムの正当性を認識することができる。しかも主処理は、合致の確認がされた場合にのみ実行されるので、改竄プログラムによる被害を抑えることができる。
このように、本発明に係るアプリケーションプログラムおよびその実行方法によれば、インストールされている正規のプログラムが、改竄プログラムにすり替えられた場合に、すり替えの事実をユーザに認識させることが可能になり、改竄プログラムによる被害を抑えることができる。
コンピュータ内でのアプリケーションプログラムのすり替え事例を示すブロック図である。 パッケージ化されたAndroid(登録商標)OS用のアプリケーションプログラムの構成例を示すブロック図である。 図2に示すパッケージに対して、改竄プログラムがインジェクションにより埋め込まれた状態を示すブロック図である。 本発明の基本的な実施形態に係るアプリケーションプログラムおよびその実行手順を示すブロック図である。 図4に示すアプリケーションプログラムの実行手順を示す流れ図である。 図4に示すアプリケーションプログラムの登録処理ルーチン330によって実行される登録処理における画面表示例を示す図である。 図6に示す登録処理に応じて、提示処理ルーチン340によって実行される提示処理における画面表示例を示す図である。 図4に示すアプリケーションプログラムの登録処理ルーチン330によって実行される登録処理における別な画面表示例を示す図である。 図8に示す登録処理に応じて、提示処理ルーチン340によって実行される提示処理における画面表示例を示す図である。 図4に示すアプリケーションプログラムの提示処理ルーチン340によって実行される提示処理における更に別な画面表示例を示す図である。 本発明の格納場所に関する変形例に係るアプリケーションプログラムおよびその実行手順を示すブロック図である。 本発明の格納場所に関する別な変形例に係るアプリケーションプログラムおよびその実行手順を示すブロック図である。 本発明の確認処理を行う変形例に係るアプリケーションプログラムおよびその実行手順を示すブロック図である。 図13に示すアプリケーションプログラムの実行手順を示す流れ図である。 図13に示すアプリケーションプログラムの登録処理ルーチン335によって実行される登録処理における画面表示例を示す図である。 図15に示す登録処理に応じて、確認処理ルーチン345によって実行される確認処理における画面表示例を示す図である。 図13に示すアプリケーションプログラムの登録処理ルーチン335によって実行される登録処理の別な形態を示す図である。 本発明のサイズ確認処理を行う変形例に係るアプリケーションプログラムおよびその実行手順を示すブロック図である。 本発明の監視プログラムを用いる変形例に係るアプリケーションプログラムおよびその実行手順を示すブロック図である。 本発明に係るアプリケーションプログラムの実行方法の基本的な実施形態を示す流れ図である。 本発明に係るアプリケーションプログラムの実行方法の変形例を示す流れ図である。
以下、本発明を図示する実施形態に基づいて説明する。
<<< §1. 改竄プログラムへのすり替え >>>
はじめに、本発明による課題解決の対象となる改竄プログラムへのすり替え事例の実体を簡単に説明しておく。図1は、このようなすり替え事例の典型例を示すブロック図である。
いま、図1(a) に示すように、コンピュータ100内に3つのアプリケーションプログラムA,B,C(以下、アプリA,B,Cという)がインストールされているものとしよう。コンピュータ100は、パソコンをはじめ、スマートフォン、電子タブレットなど、アプリケーションプログラムを実行可能な電子機器であれば、どのようなものでもかまわない。一般的なユーザの場合、より多数のアプリをインストールして利用しているのが実情であるが、図では、説明の便宜上、3種類のアプリA,B,Cのみがインストールされた単純な例を示す。
また、ここでは、アプリAは「Address」なるプログラム名が付された住所録管理用のプログラムであり、アプリBは「Bank」なるプログラム名が付されたオンラインバンキング用のプログラムであり、アプリCは「Chess」なるプログラム名が付されたチェスゲーム用のプログラムであるものとしよう。これらのアプリA,B,Cは、OSプログラム200の管理下で実行される。なお、実際には、コンピュータ100には、CPU,メモリ,ディスプレイ,入力装置などのハードウエアが備わっているが、ここでは、便宜上、インストールされた基本的なプログラムの構成のみを図示することにする。
通常、プログラムにはバージョン番号が付され、バージョンアップされるたびに、新たなバージョン番号が付された新プログラムによって置き換えられてゆく。図1(a) に示す例の場合、アプリAは、バージョン番号「Ver. 3」が付されたプログラムA3によって構成されており、アプリBは、バージョン番号「Ver. 5」が付されたプログラムB5によって構成されており、アプリCは、バージョン番号「Ver. 1」が付されたプログラムC1によって構成されている。
さて、ここでは、「Chess」なるアプリCが「Ver. 1」から「Ver. 2」にバージョンアップされ、アプリC′に置き換えられた場合を考えてみよう。図1(b) は、このようなバージョンアップが完了したときの状態を示している。バージョンアップ後も、同じ「Chess」なるプログラム名が付されているが、アプリC′は、バージョン番号「Ver. 2」が付されたプログラムC2であり、「Ver. 1」が付されたプログラムC1とは異なるプログラムである。
既に述べたように、Android(登録商標)OS用のアプリケーションプログラムをはじめとして、最近のアプリケーションプログラムには、オンラインでバージョンアップを行う機能が備わっている。したがって、図1(a) から(b) に示すようなバージョンアップ処理も、通常、オンラインによる処理として行われる。このようなオンラインによるバージョンアップ処理は、ユーザにとっては非常に便利な機能であるが、バージョンアップを行うサイトが正規のサイトではなく偽サイトであった場合、正規のバージョンアップ版のプログラムではなく、改竄された偽プログラム(マルウェア)がダウンロードされる結果となる。
図1(c) は、図1(a) に示す状態において、偽サイトをアクセスしてバージョンアップを行ってしまったため、マルウェアであるプログラムXがダウンロードされた状態を示す。図示のとおり、「Chess」なるアプリCは、プログラムX(マルウェア)なるアプリC''に置き換えられてしまっている。アプリC''も同じ「Chess」なるプログラム名を有しているため、ほとんどのユーザは、実際にはマルウェアに置換されてしまったことに気付くことはない。すなわち、ユーザ自身は、「Chess」なるアプリCを「Ver. 1」から「Ver. 2」にバージョンアップしたつもりであり、正常にバージョンアップ処理が完了したものと考えている。
実際、偽の電子メールなどによってユーザを偽サイトに導き(いわゆる「Phishing」と呼ばれている手法)、新バージョンのアプリがリリースされているとの説明のもとにバージョンアップ操作を促し、マルウェアをインストールさせる詐欺行為が問題となってきている。また、ウイルスに感染したコンピュータの場合、このウイルスの働きによって、偽のプログラムXをインストールされてしまうケースもある。この偽のプログラムXが、正規のプログラムに類似した画面表示を行うように作られていると、ユーザは、マルウェアであることに気付かず、プログラムXを長期間にわたって利用し続けるケースすらありうる。
ここで、プログラムX内に、たとえば、ユーザの個人情報などを盗み出してクラッカーに送信するルーチンが含まれていると、重要な情報がすべてクラッカーの手にわたってしまうことになる。特に、オンラインバンキング用のアプリBなどがマルウェアに置き換わってしまうと、ユーザが入力した銀行口座のアカウントやパスワードが、そのままクラッカーの手にわたってしまうため、重大な経済的被害が生じることになる。
このような改竄プログラムの流布を抑止するため、たとえば、Android(登録商標)OS用のアプリケーションプログラムには、電子署名を付与することが仕様で定められている。Android(登録商標)OS用のアプリケーションプログラムは、実際には複数のファイルの集合体から構成されており、ZIP形式での圧縮を含むパッケージ化処理を行い、署名情報を付加した上で、APKファイルと呼ばれる形式の1ファイルとして配布することになっている。図2は、このようなパッケージ化されたAPKファイルの実体構成を示すブロック図である。
図示の例は、「Chess」なるアプリCの構成例を示すものであり、パッケージ化されたAPKファイルに対して、「Chess.apk」なるファイル名が付されている(拡張子.apkは、Android(登録商標)OSの仕様で定められたAPKファイルであることを示す)。この例の場合、アプリCは、「classes.dex」なるファイル名が付されたプログラム本体部10(Java(登録商標)プログラム)と、「resources.arsc」なるファイル名が付されたリソースデータ20(画像・文字列のデータ)と、「AndroidManifest.xml」なるファイル名が付された補助ファイル30(マニフェストと呼ばれるxml形式のデータ)と、署名情報40と、によって構成されている(この他、必要に応じて、Shared Objectと呼ばれるサブルーチン群などのファイルが追加される)。
ここで、署名情報40は、プログラム本体部10,リソースデータ20,補助ファイル30の部分を圧縮してパッケージ化し、当該パッケージについてのハッシュ値を求め、このハッシュ値をプログラム提供者の鍵を用いて暗号化した情報として作成される。プログラム本体部10,リソースデータ20,補助ファイル30に対して何らかの改竄が行われると、署名情報40との整合性が失われることになるので、この整合性を確認するチェック処理を行うことにより、改竄の有無を検知することができる。
Android(登録商標)OSでは、電子署名が付加されていないアプリケーションプログラムや、付加されている電子署名に不整合が生じているアプリケーションプログラムは、不正なプログラムとして実行が許可されない仕様になっている。しかしながら、前述したとおり、最近、Android(登録商標)OSの脆弱性を突いたインジェクションと呼ばれている改竄手法が問題視されている。
図3は、図2に示す正規のAPKファイルに対して、このインジェクションの手法により改竄プログラム50が埋め込まれた状態を示すブロック図である。図示のとおり、インジェクションの手法では、もとのAPKファイル(アプリC)に含まれていた正規のプログラム本体部10,リソースデータ20,補助ファイル30,署名情報40はそのままの状態で残し、新たに改竄プログラム50を埋め込むことにより、アプリC''を作成する、という方法がとられる。図1(c) に示すプログラムXが、このような方法で作成されたアプリC''であった場合、OSの脆弱性により、当該アプリC''が支障なく実行されてしまうことになる。
脆弱性をもったAndroid(登録商標)OSの第1の問題点は、図3に示すアプリC''についての署名情報のチェック処理では、インジェクションによる改竄の事実が発見されない点である。署名情報40に対するチェック処理は、プログラム本体部10,リソースデータ20,補助ファイル30に対して、署名情報40が整合性を有するか否かを判定する処理として行われるため、改竄プログラム50が埋め込まれていたとしても、整合性ありとの判定が行われてしまうことになる。
そして、脆弱性をもったAndroid(登録商標)OSの第2の問題点は、このアプリC''を起動した場合、正規のプログラム本体部10ではなく、改竄プログラム50が実行されてしまう点である。これは、プログラム本体部10も改竄プログラム50も、「classes.dex」という同じファイル名(仕様上、APKファイルにおいて実行ファイルに付与すべきファイル名)が付与されており、インジェクションが行われた場合、改竄プログラム50の方が実行されてしまう仕様になっているためである。
現在は、端末メーカ側では、この脆弱性に対するパッチ処理がほぼ完了しているが、パッチ処理が実施されていない端末装置では、依然として、このインジェクションと呼ばれている改竄手法の脅威にさらされている。図1に示した例のように、ユーザが所定のサイトでバージョンアップ作業を行って、アプリCをアプリC′に改訂したつもりでいても、当該サイトが偽サイトであった場合、コンピュータ100内にインストールされるのは、アプリC′ではなく、図3に示すようなアプリC''ということになる。したがって、脆弱性に対するパッチ処理が施されていない場合、ユーザが「Chess」なるアプリを起動すると、改竄プログラム50が実行されることになる。
通常、改竄プログラム50は、正規のプログラム本体10を元に作成されたプログラムになっており、表向きは、正規のプログラムが実行されているように見せながら、裏で、個人情報を盗み出すような処理を実行する仕組になっていることが多い。このように、ユーザ自身が、全く気付かずに改竄アプリを利用し続けてしまうと、被害は大きく広がることになる。
本発明の主目的は、上例のように、インストールされている正規のプログラムが、改竄プログラムにすり替えられた場合に、すり替えの事実をユーザに認識させることにより、被害を最小限に抑えることにある。なお、図3には、最近、重大な問題提起がなされているAndroid(登録商標)OS用アプリにおけるインジェクションによる改竄が行われた例を示したが、もちろん、本発明は、インジェクションの手法によって作成された改竄プログラムへの対処に限定されるものではなく、不正なすり替え行為が行われた場合に広く適用可能な技術を提供するものである。また、本発明は、必ずしもAndroid(登録商標)OS用アプリへの適用に限定されるものではなく、任意のOS用アプリにも適用可能である。
<<< §2. 本発明の基本的な実施形態 >>>
図4は、本発明の基本的な実施形態に係るアプリケーションプログラムおよびその実行手順を示すブロック図である。図には、説明の便宜上、コンピュータ100内に、OSプログラム200とともに1組のアプリケーションプログラム300のみが格納されている状態が示されているが、実際には、より多数のアプリケーションプログラムが格納され、ユーザの選択により適宜実行されることになる。もちろん、コンピュータ100は、パソコン、スマートフォン、電子タブレットなど、アプリケーションプログラムを実行可能な電子機器であれば、どのようなものでもかまわない。
通常、コンピュータ100には、CPU,メモリ,ディスプレイ,入力装置などのハードウエアが備わっているが、ここでは、便宜上、OSプログラム200、アプリケーションプログラム300、格納場所250のみを図示してある。ここで、格納場所250は、後述するように、固有情報を格納するための記憶領域であり、たとえば、コンピュータ100に内蔵されているSSD(Solid State Drive)などの不揮発性メモリ内に確保された、アプリケーションプログラム300用の設定データなどを格納するための領域を利用すればよい。
図示されているアプリケーションプログラム300は、本発明に係るアプリケーションプログラムの一例であり、起動処理ルーチン310、主処理ルーチン320、登録処理ルーチン330、提示処理ルーチン340が組み込まれている。アプリケーションプログラム300が、Android(登録商標)OS用のプログラムの場合、これら各ルーチンは、Android(登録商標)OSプログラムの下で動作するプログラムにより構成されており、図2に示す例において、プログラム本体部10を構成するJava(登録商標)プログラムの一部ということになる。もちろん、このアプリケーションプログラム300は、コンピュータ読み取り可能な記録媒体に格納して配布することもできるし、オンラインで配布することもできる。
起動処理ルーチン310は、OSプログラム200からの指示を受けて、当該アプリケーションプログラム300が起動した時点で実行される起動時の制御を行うためのプログラムである。また、主処理ルーチン320は、所定の主処理を実行するためのプログラムである。ここで、主処理とは、このアプリケーションプログラム300の本来の機能を提供するための一連の処理であり、たとえば、図1に示すアプリAの場合は住所録管理処理、アプリBの場合はオンラインバンキング処理、アプリCの場合はチェスゲームの進行処理、ということになる。
一方、登録処理ルーチン330は、ユーザの指示に基づいて固有情報を入力し、入力した固有情報を所定の格納場所250に格納する登録処理を実行するためのプログラムである。また、提示処理ルーチン340は、格納場所250から固有情報を取り出し、取り出した固有情報もしくは当該固有情報に基づいて生成した派生情報をユーザに提示する提示処理を実行するためのプログラムである。
図では、説明の便宜上、ユーザの指示に基づいて入力された固有情報を符号P1で示し、格納場所250に格納された固有情報を符号P2で示し、ユーザに提示された固有情報を符号P3で示しているが、これら各固有情報P1,P2,P3の実体は同じものである。これに対して、派生情報Q3は、固有情報P3から派生的に生成された情報であり、固有情報P3自体ではないが、固有情報P3に基づいて作成された関連情報ということになる。
このコンピュータ100を利用するユーザが、OSプログラム200に対して、アプリケーションプログラム300に対する起動指示を与えると(あるいは、別なアプリケーションプログラムからの連携指示によって、アプリケーションプログラム300に対する起動指示が与えられると)、まず、アプリケーションプログラム300内の起動処理ルーチン310による起動処理が実行される。
この起動処理は、このコンピュータ100においてアプリケーションプログラム300が起動されたときに、当該コンピュータ100について過去に登録処理が実行されているか否かを判定し、登録処理が実行されていた場合には、まず、提示処理ルーチン340を実行した後に、主処理ルーチン320が実行されるような制御を行う機能を有する。また、ここに述べる実施形態の場合、過去に登録処理が実行されていなかった場合には、まず、登録処理ルーチン330を実行した後に、主処理ルーチン320が実行されるような制御を行う機能を有する。
図5は、図4に示すアプリケーションプログラム300の実行手順を示す流れ図である。ステップS10において、アプリケーションプログラム300の起動処理が開始すると、まず、起動処理ルーチン310が、ステップS11において、このコンピュータ100について過去に登録処理が実行されているか否かを判定する処理を行う。図4に示す例の場合、過去に登録処理が実行されていた場合には、所定の格納場所250(アプリケーションプログラム300用の設定データ格納領域)に固有情報P2が格納されているので、起動処理ルーチン310は、この格納場所250における固有情報P2の有無に基づいて、ステップS11の判定を行うことができる。
そして、ステップS11において、肯定的な判定がなされた場合にはステップS12へ進み、否定的な判定がなされた場合にはステップS13へ進むことになる。ここでは、このアプリケーションプログラム300が、コンピュータ100において初めて起動された場合を想定し、過去に登録処理が実行されていなかった(格納場所250に、まだ固有情報P2が格納されていなかった)ものとしよう。
この場合、ステップS11からステップS13へと進み、起動処理ルーチン310から登録処理ルーチン330への移行が行われる。そして、ステップS13では、登録処理ルーチン330による登録処理が実行される。すなわち、ユーザに対して、固有情報の入力を促すメッセージを表示し、ユーザの指示に基づいて固有情報P1を入力し、入力した固有情報P1を格納場所250に固有情報P2として格納する処理が実行される。
このような登録処理が完了すると、ステップS16へと進み、登録処理ルーチン330から主処理ルーチン320への移行が行われる。主処理ルーチン320によって実行される主処理が、当該アプリケーションプログラム300の本来の機能を提供するための一連の処理であることは既に述べたとおりであり、この主処理の具体的な説明は、ここでは省略する。なお、主処理が完了すると、すなわち、アプリケーションプログラム300が終了すると、制御はOSプログラム200に移行することになる。
こうして、アプリケーションプログラム300の初回起動が終了すると、格納場所250には固有情報P2が格納されている状態になるので、以後、アプリケーションプログラム300の2回目以降の起動が行われると、ステップS11において肯定的な判定がなされ、ステップS12の提示処理が実行される。すなわち、起動処理ルーチン310から提示処理ルーチン340への移行が行われ、格納場所250から固有情報P2を取り出し、これをそのまま固有情報P3としてユーザに提示するか、もしくは、当該固有情報P3に基づいて生成した派生情報Q3をユーザに提示する提示処理が実行される。
このような提示処理が完了すると、ステップS14,S15を経て、提示処理ルーチン340から主処理ルーチン320への移行が行われる。ステップS14,S15は、提示処理から主処理への移行タイミングを決定するためのプロセスである。ここに示す実施例の場合、まず、ステップS14において、ユーザによる所定の操作があったか否かが判定され、所定の操作があった場合には、ステップS16へと進み、主処理への移行が行われる。ユーザによる所定の操作がなかった場合には、続いて、ステップS15において、固有情報P3もしくは派生情報Q3の提示が行われてから、所定の提示時間が経過したか否かが判定され、所定の提示時間が経過していた場合には、ステップS16へと進み、主処理への移行が行われる。ステップS14,S15の双方で否定的判定が行われた場合には、再び、ステップS14へ戻り、同様の処理が繰り返し実行されることになる。
このように、提示処理から主処理への移行は、提示処理の実行後に、ユーザによる所定の操作があったときに(たとえば、コンピュータ100としてスマートフォンを利用している場合は、画面上でのタップ操作があったとき、あるいは、スマートフォン本体を傾けたり、揺すったりしたときに)、主処理が実行される(ステップS14)ようにしてもよいし、提示処理の実行後に所定の提示時間が経過した後(たとえば、5秒間の提示時間が経過した後)、自動的に主処理が実行される(ステップS15)ようにしてもよい。図5に示す例では、ステップS14,S15の双方を設けているが、もちろん、いずれか一方だけでも十分である。
また、図5に示す例の場合、ステップS11において否定的な判定がなされた場合には、ステップS13において必ず登録処理が実行されることになっているため、結局、アプリケーションプログラム300を初めて起動した場合には、必ず登録処理が実行されることになるが、登録処理は必ずしも初回起動時に行われるようにする必要はなく、ユーザの登録指示に基づいて実行されるようにしてもよい。この場合、図5のステップS13は省略し、ステップS11において否定的な判定がなされた場合には、そのままステップS16へ進み主処理へ移行するようにすればよい。この場合、登録処理ルーチン330は、主処理ルーチン340から必要なときに(たとえば、ユーザが登録指示コマンドを入力したとき)呼び出して実行することになる。
もっとも、ユーザの登録指示に基づいて登録処理が実行されるようにすると、ユーザが登録指示を与えない限り、固有情報の登録は行われず、提示処理も実行されないことになり、本発明の作用効果を奏することができない。したがって、実用上は、図5に示す例のように、初回起動時に登録処理が自動的に行われるような態様を採るのが好ましい。
また、実用上は、登録処理を行った後も、必要に応じて、格納場所250に格納されている固有情報P2を書き換える処理が可能になるようにしておくのが好ましい。この場合も、主処理ルーチン340から、必要なときに(たとえば、ユーザが登録指示コマンドを入力したとき)、登録処理ルーチン330を呼び出して実行することができるようにしておき、登録処理ルーチン330は、新たな固有情報P1が入力された場合には、既に格納場所250に格納されている旧固有情報P2を書き換える処理を行うようにすればよい。
本発明の特徴は、固有情報の登録処理を行った後にアプリケーションプログラム300を起動すると、提示処理ルーチン340によって、登録しておいた固有情報もしくはこれから派生した派生情報がユーザに対して提示される点である。固有情報は、ユーザ自身が入力した情報であり、いわばユーザ自身しか知り得ない情報ということになる。登録処理を行った後は、アプリケーションプログラム300の起動のたびに、この登録情報もしくは派生情報が提示されることになるので、ユーザは、毎回、登録情報もしくは派生情報が正しいものかを確認した上で、アプリケーションプログラム300の利用を行うことができる。
ところで、図5に示す処理手順の場合、過去に登録処理が実行されていた場合、まず、ステップS12の提示処理が実行され、続いて、ステップS16へ進んで主処理へ移行することになるので、必ず提示処理の実行後に主処理が実行されることになる。しかしながら、本発明を実行するにあたって、提示処理と主処理の実行順序は、必ずしも図5に示す例に限定されるものではなく、たとえば、提示処理と主処理とを同時に並行して実行するようにしてもかまわない。最近のOSは、複数のプログラムを並行して動作させるマルチタスク機能を備えているのが一般的であり、提示処理と主処理とを同時に実行することも可能である。要するに、本発明に係るアプリケーションプログラムの起動処理ルーチンは、過去に登録処理が実行されていた場合に、提示処理と主処理との双方を実行させれば足り、このときの両処理の実行順序は不問である。
しかしながら、改竄プログラムによる不正防止という観点からは、図5に示す処理手順のように、提示処理を先に行うようにするのが好ましい。ユーザは、提示処理により、起動したアプリケーションプログラムが正規のプログラムであるのか、すり替えが行われた不正な改竄プログラムであるのかの判断を行うことになるので、万一、改竄プログラムであることが判明した場合は、当該アプリケーションプログラムを直ちに中止できるようにすべきである。このような観点からは、先に提示処理を行い、その後で主処理が実行されるようにするのが好ましい。
ただ、実用上は、アプリケーションプログラムを起動するたびに、毎回、提示処理の実行完了を待った後に主処理を実行する、という方式を採ると、主処理が実行されるまでの時間が遅延することは否めない。特に、固有情報として動画情報を登録した場合、動画の提示が終了した後に主処理へ移行することにすると、主処理開始までにかなり時間がかかってしまう。このようなケースでは、提示処理と主処理とが同時に並行して実行されるようにすればよい。そうすれば、提示処理により動画が提示されている間に、主処理の先頭部分(通常は、種々の準備プロセス)が並行して実行されることになり、主処理の実体的な部分が開始されるまでの時間を短縮することができる。
なお、主処理のはじめに、ユーザがIDとパスワードの入力操作を行うようなアプリケーションプログラムの場合は、IDやパスワードの入力操作が行われる前に提示処理が完了するような設計をしておくのが好ましい。そうすれば、ユーザは、提示処理によって正規のプログラムであることを確認した上で、IDやパスワードの入力操作を安心して行うことが可能になる。
図2に例示するAndroid(登録商標)OS用のアプリCが、本発明に係るアプリケーションプログラムであった場合、すなわち、プログラム本体部10内に、図4に示す各ルーチン310,320,330,340が組み込まれていた場合、アプリCの初回起動時に所定の固有情報の登録が行われると、以後は、毎起動時に、登録されていた固有情報もしくはこれに基づく派生情報が提示されることになる。ユーザは、アプリCを起動するたびに、この固有情報もしくは派生情報を確認した上で、アプリCを利用することになる。
ここで、図1(b) に示すように、正規のサイトを利用して、アプリCをアプリC′にバージョンアップした場合を考えてみよう。アプリC(Ver. 1)の正規のプログラム提供者が、アプリC′(Ver. 2)についても、図4に示す各ルーチン310,320,330,340に相当するルーチンを組み込んでおくようにすれば、バージョンアップ後のアプリC′を起動すると、格納場所250に固有情報P2が格納されているので、アプリC′内の起動処理ルーチン310は、過去に登録処理が実行されていると判断することになり、提示処理ルーチン340が実行されることになる。このため、アプリC′の起動時には、やはり固有情報もしくはこれに基づく派生情報が提示されることになる。
前述したように、格納場所250は、アプリケーションプログラム300(この例の場合、「Chess」なるプログラム名が付されたゲームプログラム)用の設定データなどを格納するための領域に設けられた場所であり、アプリC(Ver. 1)からアプリC′(Ver. 2)にバージョンアップされた場合でも、通常、引き続き利用される領域になる。このため、同じプログラム名が付された「Chess」なるアプリであれば、アプリC(Ver. 1)からアプリC′(Ver. 2)にバージョンアップされても、旧バージョンで登録された固有情報P2は、新バージョンでも引き続き利用可能である。したがって、バージョンアップされたアプリC′(Ver. 2)については初回起動時であっても、「Chess」なるアプリとしては、過去に登録処理が実行されているため、図5のステップS11では肯定的な判定がなされ、ステップS12の提示処理が実行されることになる。
結局、ユーザから見れば、アプリC(Ver. 1)からアプリC′(Ver. 2)にバージョンアップした後も、バージョンアップ前と同様に、アプリの毎起動時に、固有情報もしくは派生情報の確認を行うことができるようになる。今後、アプリC′(Ver. 2)が更にバージョンアップした場合も同様である。要するに、同一のプログラム名が付されたアプリであれば、一度登録処理を行っておけば、以後、何度バージョンアップが行われても、毎起動時に、最初に登録した固有情報もしくは派生情報が提示されるので、ユーザは、これを確認した上で、安心して当該アプリを利用することができる。
一方、図1(c) に示すように、このユーザが偽サイトに導かれ、アプリCをアプリC′にバージョンアップするつもりが、実際には、マルウェアであるアプリC''に置き換える処理を行ってしまった場合を考えてみよう。このとき、アプリC''が、図3に示すようなインジェクションの手法によって改竄されたプログラムであったとすると、§1で述べたように、脆弱性をもったOSの下では、署名情報のチェック処理では、インジェクションによる改竄の事実は発見されず、しかも、この「Chess」なるアプリに対して起動操作を行うと、正規のプログラム本体部10の代わりに、偽の改竄プログラム50の方が実行されてしまうことになる。
ここで、改竄プログラム50は、正規のプログラムではないため、通常、図4に示すような起動処理ルーチン310,登録処理ルーチン330,提示処理ルーチン340を有していない。したがって、改竄プログラム50が起動されたとしても、図5に示すステップS11〜S15の処理は実行されず、主処理ルーチン320(この場合は、クラッカーが作成したマルウェアプログラムX)の実行が行われることになる。別言すれば、アプリC''を起動した場合、固有情報や派生情報の提示は行われないことになる。このため、ユーザは、これまで毎起動時に提示されていた固有情報や派生情報が、突然、提示されなくなったことに不審を抱くことができ、バージョンアップ後のアプリケーションプログラムの正当性を疑うことができる。こうして、ユーザは、バージョンアップ時にアプリケーションプログラムの不正な「すり替え」が行われたことを認識することができ、被害を最小限に抑えることができる。
もちろん、上例の場合、ユーザが「すり替え」に気付いた時点で、既に、改竄プログラム50は実行されてしまっているため、当該アプリをあわてて終了したとしても、個人情報の流出などを防ぐことができない場合もあろう。しかしながら、少なくとも、当該アプリがマルウェアにすり替わっていることを認識することができるので、それ以後、当該アプリを削除するなどの防御策を採ることができる。また、少なくとも、アカウントやパスワードを入力するような操作入力を行う前に、マルウェアであることを認識できるので、被害の拡大を防ぐことができる。
もちろん、クラッカーの中には、正規のプログラム本体部10を十分に解析し、その中に、起動処理ルーチン310,登録処理ルーチン330,提示処理ルーチン340が含まれていることを認識し、改竄プログラム50の中に、これらと同等のルーチンを組み込むような細工を行う者も現れるかもしれない。そのような「非常に巧みな改竄」が施されたプログラムとすり替えられた場合、起動時に図5に示すステップS11〜S15の処理が実行され、ユーザには、これまでと同様に、起動時に固有情報や派生情報が提示されることになる。
本発明は、上述した「非常に巧みな改竄」が施されたプログラムを用いた「すり替え」が行われた場合には、残念ながら、十分な効果を発揮することはできない。このような点において、本発明は、100%の安全性を提供する技術ではない。しかしながら、そもそもクラッカーの攻撃に対して100%の安全性を保証できる技術などは存在するものではない。実用上、クラッカーが、上述した「非常に巧みな改竄」が施されたプログラムを作成するには、非常に手間と時間がかかることになる。
これは、起動処理ルーチン310,登録処理ルーチン330,提示処理ルーチン340の内容を解析するためには、高度なプログラミングの知識と時間を必要とするためである。特に、これらの各ルーチンに対して難読化処理を施しておけば、正規のプログラム本体部10から各ルーチンを抽出し、その処理内容を解析することは、高度な知識をもったクラッカーでも容易ではない。特に、本発明で提示対象となる固有情報自体は、プログラム本体部10に組み込まれているわけではなく、ユーザが登録処理において任意に入力できる情報になっている。
したがって、改竄プログラム50の起動時に、このユーザが任意に入力した固有情報を提示させる処理を行うためには、格納場所250がどの場所に設定されており、固有情報がどのような書式で格納されているのか、といった内容まで十分に解析する必要があり、高度な知識をもったクラッカーにとっても時間のかかる作業になる。このような点を考慮すると、起動処理ルーチン310,登録処理ルーチン330,提示処理ルーチン340までもが組み込まれた改竄プログラム50を作成することは非常に困難であり、本発明によっても「すり替え」が検知できないような不正行為は、クラッカーにとってかなり敷居の高い仕事といえる。したがって、本発明は、100%の安全性を提供する技術ではないものの、産業上、十分に利用価値のある技術である。
<<< §3. 固有情報のバリエーション >>>
§2では、図4のブロック図および図5の流れ図を参照しながら、本発明の基本原理を説明した。ここでは、本発明に用いられる固有情報について、具体例を挙げながら、より詳細な説明を行うことにする。
固有情報は、アプリケーションプログラムの正当性確認に利用するために予め登録しておくべき情報であり、ユーザが自由意志で決定もしくは選択できる情報であれば、どのような情報であってもかまわない。前述したとおり、登録処理が完了した後は、当該アプリケーションプログラムが起動するたびに、この固有情報が主処理の実行前に提示されることになり、ユーザは、提示された内容を確認することにより、アプリケーションプログラムの正当性を認識することができる。
最も典型的な固有情報は、文字列である。以下、この文字列を固有情報として利用した実施例を説明する。図6は、図4に示すアプリケーションプログラム300の登録処理ルーチン330によって実行される登録処理における、コンピュータ100上での画面表示例を示す図である。アプリケーションプログラム300が初回起動されると、図5の流れ図のステップS11において否定的な判定がなされ、ステップS13における登録処理が実行される。図6は、このステップS13において、コンピュータ100のディスプレイ上に表示される画面ということになる。
図6(a) に示す画面は、本発明による登録処理が実行中であることをユーザに知らせるとともに、ユーザに固有情報として文字列を入力させるための画面である。図示のとおり、この画面上には、「このアプリは初めて起動されました。次回以降の起動時に、プログラムの正当性確認に用いるため、下欄に好きな言葉を入力して下さい。」なるメッセージが表示されている。このメッセージは、固有情報の入力を行う際に、当該固有情報がアプリケーションプログラム300の正当性を確認するための提示処理に利用される情報である旨を示すメッセージ(以下、説明メッセージという)である。
図示のとおり、この画面の下欄には、文字列入力欄101が設けられており、ユーザは、コンピュータ100の入力機能を利用して、ここに任意の文字列を固有情報P1として入力する作業を行う。図6(b) は、この文字列入力欄101に、「PATENT2013」なる文字列を入力した例が示されている。当該文字列は、ユーザが任意に設定した文字列であり、ユーザ自身しか知り得ない情報ということになる。当然ながら、改竄プログラム50を作成したクラッカーは知る由もない。
ユーザが文字列の入力を完了すると、画面は図6(c) のように変わり、登録処理が完了した旨が通知される。図示の例の場合「登録処理が完了しました。次回以降の起動時には毎回下記の言葉が表示されます。(表示されないと、正当性に問題あり)」なるメッセージが表示されており、その下の文字列入力欄101に、ユーザが入力した「PATENT2013」なる文字列からなる固有情報P1が表示されている。このメッセージも、入力した固有情報P1がアプリケーションプログラム300の正当性を確認するための提示処理に利用される情報である旨を示す説明メッセージであり、ユーザは、次回以降の起動時に毎回「PATENT2013」なる文字列が表示されないと、正当性に問題が生じていることを認識できる。
こうして入力された固有情報P1、すなわち、「PATENT2013」なる文字列は、登録処理ルーチン330によって所定の格納場所250内に固有情報P2として格納される。
このような登録処理が完了した後に、アプリケーションプログラム300が再度起動されると、図5の流れ図のステップS11において肯定的な判定がなされ、ステップS12における提示処理が実行される。図7は、このステップS11において、コンピュータ100のディスプレイ上に表示される画面の一例である。当該画面は、アプリケーションプログラム300が起動中であることをユーザに知らせるとともに、固有情報P2として登録されている文字列を表示するための画面である。
図7に示すとおり、この画面上には、「プログラムの正当性チェックのため下記の言葉が正しいことを確認して下さい。」なるメッセージが表示され、更に、文字列表示欄102には、提示処理ルーチン340によって格納場所250から取り出された「PATENT2013」なる文字列(固有情報P2)が、固有情報P3として表示されている。ユーザは、この表示を見て、文字列表示欄102に表示されている「PATENT2013」なる文字列(固有情報P3)が、登録処理時に入力した固有情報P1に合致することを確認することにより、正当性に問題が生じていないことを認識することができる。
この図7に示す表示内容を確認したユーザが、確認ボタン103を押すと、アプリケーションプログラム300内の主処理ルーチン320が実行される。すなわち、図示の確認ボタン103を押す操作は、図5の流れ図のステップS14に記載された「所定の操作あり?」の判定対象となる操作に相当し、確認ボタン103を押す操作を行うと、ステップS14からステップS16へ進む処理が行われる。なお、図5の流れ図に示す手順を採用した場合は、ステップS15で「所定の提示時間経過した?」との判定も併せて行われるので、図7に示す表示が行われた後、確認ボタン103を操作しなくても、所定の提示時間が経過すると、自動的にステップS16へ進む処理が行われ、主処理ルーチン320が実行されることになる。
もちろん、アプリケーションプログラムの起動時に、登録処理時と異なる文字列が表示されたり、図7に示すような確認画面自体が表示されなかったりした場合には、正当性に何らかの問題が生じているものと判断できるので、ユーザは、起動中のアプリケーションプログラムを直ちに終了し、コンピュータ100から削除するなどの防御措置をとることができる。
以上、固有情報として文字列を利用する典型例を説明したが、固有情報としては、文字列の他、記号、画像、動画、音声もしくは振動、または、これらの組み合わせを利用することも可能である。たとえば、登録処理時に、文字列の入力を行わせる代わりに、ユーザが撮影した写真や動画情報、あるいはユーザが録音した音声情報を入力させる処理(たとえば、その場で撮影や録音をさせる処理や、既存の画像ファイル、動画ファイル、音声ファイルなどを指定させる処理)を行えば、画像、動画、音声を固有情報として登録することが可能である。この場合、次回起動時には、登録した画像、動画、音声が提示されることになる。
また、加速度センサなどの振動を検知する装置と、振動アクチュエータなどの振動を発生させる装置(たとえば、携帯電話でのマナーモードにおける着信振動を生じさせる装置など)とを内蔵したコンピュータを利用している場合は、ユーザに本体を揺らす動作を行わせることにより、振動の情報(たとえば、振動方向や振幅を示す情報)を固有情報として登録することも可能である。この場合、次回起動時には、登録した振動を再現することにより、ユーザに対する固有情報の提示が行われる。
もちろん、文字列と振動との双方を固有情報として登録しておき、次回起動時には、その双方を提示する、というように、いくつかの要素を組み合わせた固有情報を利用することも可能である。
なお、固有情報は、必ずしもユーザ自身によって生成された情報である必要はなく、登録処理ルーチン330が用意したいくつかの情報の中から、ユーザに所望の情報を選択させ、選択された情報を固有情報として登録するような運用も可能である。たとえば、予め16種類の画像を用意しておき、これらをディスプレイ画面上に表示し、ユーザに好みの1画像を選択させ、選択された画像を固有情報として登録するようにすれば、ユーザ自身に画像を用意させることなしに、画像を固有情報として用いることが可能になる。
また、提示処理ルーチン340によって提示する情報は、必ずしも固有情報P3である必要はなく、格納場所250から取り出した固有情報P2(すなわち、固有情報P3)
に基づいて生成した派生情報Q3であってもかまわない。図8および図9は、固有情報の代わりに派生情報を提示する実施例を示す図である。
図8(a) は、登録処理ルーチン330による登録処理時の画面を示すものである。図示のとおり、「このアプリは初めて起動されました。次回以降の起動時に、プログラムの正当性確認に用いるため、右のいずれかの方角を選択して下さい。」なる説明メッセージが表示されており、右下には、8方向の方角のいずれかを選択させるための方角入力欄104が表示されている。図示の「N,S,E,W,NE,SE,NW,SW」なる記号は、それぞれ「北,南,東,西,北東,南東,北西,南西」(以下、8方位という)を示している。ユーザは、この方角入力欄104に表示されている8個の記号のうちのいずれか1つを選択する操作を行うことにより、当該記号で示される8方位の1つを固有情報P1として入力することができる。
ここでは、ユーザが「NW」なる記号をタップ操作で選択したものとしよう。ユーザが選択操作を完了すると、画面は図8(b) のように変わり、登録処理が完了した旨が通知される。図示の例の場合「登録処理が完了しました。次回以降の起動時には毎回下記の方角が表示されます。(表示されないと、正当性に問題あり)」なるメッセージが表示されており、その下の方角登録欄105には、ユーザが選択した「NW」なる記号(北西を示す記号)が固有情報P1として表示されている。ユーザは、次回以降の起動時に毎回「北西」という方角が表示されないと、正当性に問題が生じていることを示していると認識できる。
こうして入力された固有情報P1、すなわち、「NE」なる記号は、登録処理ルーチン330によって所定の格納場所250内に固有情報P2として格納される。
一方、図9は、上記登録処理が完了した後に、アプリケーションプログラムを起動することにより提示された画面の一例を示す図である。当該画面は、アプリケーションプログラム300が起動中であることをユーザに知らせるとともに、固有情報P2として登録されている記号「NW」に基づいて生成した「コンパス画像」を表示するための画面である。
図9に示すとおり、この画面上には、「プログラムの正当性チェックのため下の方角が正しいことを確認して下さい。」なるメッセージが表示され、更に、コンパス画像表示欄106には、記号「NW」から派生した「コンパス画像」、すなわち、「針が北西を示しているコンパスの画像」が派生情報Q3として表示されている。ユーザは、この派生情報Q3が、登録処理時に入力した固有情報P1(記号「NW」)に合致することを確認することにより、正当性に問題が生じていないことを認識することができる。確認が完了したユーザが、確認ボタン107を押すと、アプリケーションプログラム300内の主処理ルーチン320が実行される。
このように、提示処理では、登録処理で登録した固有情報をそのまま提示する必要はなく、固有情報に含まれている概念をユーザに伝えることができるように、固有情報から派生させた派生情報を提示するようにしてもかまわない。上例の場合、記号「NW」なる固有情報に含まれている「北西」という概念をユーザに伝えることができるように、「針が北西を示しているコンパスの画像」という派生情報をユーザに提示していることになる。
もちろん、「NW」のような8方位のいずれかの方角を示す記号と、コンパスの一部品として利用される針の画像と、を組み合わせた情報を固有情報として登録することも可能である。たとえば、図8(a) に示す方角選択画面において、更に、コンパスの針を何種類かの中から選択させるようにすれば、「選択した方角記号」と「選択した針の画像」との組み合わせが、固有情報として登録されることになるので、この固有情報に基づいて、「選択した針の画像」を用いて「選択した方角記号」が示す方向を指し示す「コンパス画像」を派生情報として生成し、これをコンパス画像表示欄106に表示することができる。ユーザは、自分自身が選択した針を用いて自分自身が選択した方角を指し示している「コンパス画像」が正しく表示されることにより、正当性に問題が生じていないことを認識することができる。
結局、本発明では、登録処理を行う際には、ユーザの指示に基づいて、文字列、記号、画像、動画、音声もしくは振動を含む固有情報を入力し、これを所定の格納場所に格納するようにし、提示処理を行う際には、固有情報もしくは当該固有情報に基づいて生成した派生情報として、文字列、記号、画像、動画、音声もしくは振動またはこれらの組み合わせをユーザに提示するようにすればよい。
最後に、固有情報のバリエーションとして、もう1つ変わったバリエーションを述べておく。このバリエーションでは、登録処理を行う際に、ユーザの指示に基づいて、提示方法を含む固有情報を入力するようにし、提示処理を行う際に、文字列、記号、画像、動画、音声もしくは振動またはこれらの組み合わせを、固有情報として登録した提示方法に基づいてユーザに提示するようにするのである。
図10は、このようなバリエーションに基づいて提示処理を行った一例を示す図であり、アプリケーションプログラムの起動時に表示される起動画面を示すものである。図10(a) ,図10(b) は、いずれも画面中央部に「アプリ起動中」という起動中表示108が表示され、その脇に「パンダの画像」が表示されている起動画面であるが、両者では、「パンダの画像」の表示位置が異なっている。これは、登録処理を行う際に、それぞれ異なる表示位置を固有情報として登録したためである。
図10(a) は、登録処理を行う際に、「パンダの画像」という画像情報と、「画面右上に表示する」という提示方法(表示位置)を指定する情報とが、固有情報として登録された場合に、次回起動時の提示処理によって表示される起動画面を示すものであり、画面右上の画像表示欄109Aに「パンダの画像」が表示されている。これに対して、図10(b) は、登録処理を行う際に、「パンダの画像」という画像情報と、「画面右下に表示する」という提示方法(表示位置)を指定する情報とが、固有情報として登録された場合に、次回起動時の提示処理によって表示される起動画面を示すものであり、画面右下の画像表示欄109Bに「パンダの画像」が表示されている。いずれも「パンダの画像」が表示される点に変わりはないが、提示方法が「右上位置に表示する」か「右下位置に表示する」かという点で相違する。
このように、固有情報に「提示方法」という情報を含ませるようにすると、より多彩な提示処理が可能になる。もちろん、「提示方法」を示す情報は、「表示位置」を示す情報に限定されるものではなく、この他にも様々な「提示方法」を指定することが可能である。たとえば、「天地を逆にして表示する」というような「表示向き」を指定する情報を固有情報に含ませておけば、「パンダの画像」が逆向きに表示されることになる。
あるいは、「画面周囲を時計まわりに回転させて表示する」というような動きのある「提示方法」を指定すれば、図10(a) に示す画像表示欄109Aが図の下方へ移動して、図10(b) に示す画像表示欄109Bの位置まで動き、更に、図の左方へと移動し、... というように、画面周囲を時計まわりに移動する動画を表示させることもできる。
更に、「提示方法」としては、「提示時間」(たとえば、5秒間表示するとか、右上位置に3秒、右下位置に2秒表示するとか)などを指定することも可能である。また、起動時に毎回異なる提示方法が採られるような指定(たとえば、奇数回目の起動時には右上に表示、偶数回目の起動時には右下に表示というような指定)を行うことも可能であるし、起動時期に応じて異なる提示方法が採られるような指定(たとえば、午前中は右上に表示、午後は右下に表示というような指定や、曜日によって特定の位置に表示するような指定)を行うことも可能である。
このように、登録処理において、特定の「提示方法」を固有情報として登録する場合は、予め用意されているいくつかの「提示方法」(たとえば、「右上表示」、「右下表示」、「左上表示」、「左下表示」、「時計まわり表示」、「反時計まわり表示」など)をユーザに選択させるようにすればよい。
もちろん、音声や振動についての提示方法を指定することも可能であり、「徐々に音量を大きくする」、「徐々に音量を小さくする」、「右から左へとステレオ音声のバランスを移動させる」、... 等の様々な提示方法を固有情報として登録することが可能である。あるいは、「パンダの画像、犬の鳴き声の音声、猫の画像という順番に提示する」というような順序に関する提示方法を固有情報として登録してもよい。
なお、ここでは、「パンダの画像」という画像情報と「画面右上に表示する」というような提示方法との組み合わせを固有情報として登録する例を述べたが、「提示方法」のみからなる単独の固有情報を登録するようにしてもかまわない。この場合、表示対象物は予め定められた「パンダの画像」のみに限定されることになり、ユーザは当該画像を指定する必要はない。ユーザは、「提示方法」のみを固有情報として指定する登録操作を行えばよい。
<<< §4. 格納場所に関する変形例 >>>
図4に示す基本的な実施形態では、固有情報P2を格納する格納場所250として、コンピュータ100に内蔵されているSSD(Solid State Drive)などの不揮発性メモリ内に確保された、アプリケーションプログラム300用の設定データなどを格納するための領域を利用した例を述べたが、固有情報P2の格納場所は、必ずしもアプリケーションプログラム300を実行中のコンピュータ100に内蔵されている記憶装置に設ける必要はない。
図11は、固有情報P2を、コンピュータ100の外部に接続された外部メモリ260に格納した変形例を示すブロック図である。ここで、外部メモリ260としては、たとえば、マイクロSDやICカードなどの記憶媒体を用いればよい。このように、外部メモリ260を固有情報P2の格納場所として利用するようにすると、コンピュータ100を機種変更などで交換した場合にも、外部メモリ260を新機種に移行する操作を行うことにより、新機種で実行されるアプリケーションプログラムが引き続き固有情報P2を利用して提示処理を行うことができるようになる。
図4に示す基本的な実施形態と、図11に示す変形例との相違は、固有情報P2の格納場所が、前者ではコンピュータ100内の格納場所250であるのに対して、後者では外部メモリ260となっている点だけである。その他の動作原理については、全く変わりはないので、ここでは図11に示す変形例についての詳細な動作説明は省略する。
要するに、本発明を実行するにあたって、登録処理では、当該登録処理を実行中の特定のコンピュータ内の記憶装置を格納場所250として用いて固有情報を格納する処理を行ってもよいし、当該特定のコンピュータに接続された外部の記憶装置(外部メモリ260)を格納場所として固有情報を格納する処理を行ってもよい。提示処理では、これらいずれかの記憶装置に格納されている固有情報が取り出されることになる。
一方、図12は、登録処理を行うにあたって、固有情報P2を、当該登録処理を実行中の特定のコンピュータ100に対してネットワークN(図示の例の場合は、インターネット)を介して接続されたサーバ装置400に格納するようにした変形例を示すブロック図である。すなわち、図4に示す基本的な実施形態における格納場所250が、ネットワークNを介して接続されたサーバ装置400に変更されたことになり、提示処理を行う際には、このサーバ装置400に格納されている固有情報P2をネットワークNを介して取り出すことになる。
このように、固有情報P2の格納場所として、サーバ装置400を利用するようにすると、コンピュータ100を機種変更などで交換した場合、マイクロSDやICカードなどの記憶媒体を新機種に移し替えるような作業を行わなくても、新機種で実行されるアプリケーションプログラムが引き続き固有情報P2を利用して提示処理を行うことができるようになるので、ユーザの便宜は更に向上する。
ただ、サーバ装置400は、通常、多数のクライアント装置からのアクセスを受けることを前提として運用される装置であるため、実用上は、図示の特定のコンピュータ100からの固有情報P2だけでなく、他のコンピュータからの固有情報も格納する役割を果たす必要がある。
そこで、図12に示す実施例の場合、登録処理ルーチン330によって実行される登録処理において、当該登録処理を実行中の特定のコンピュータ100を識別するための識別情報Iに対応づけて、登録処理の対象となる固有情報P2をサーバ装置400に送信し、固有情報P2と識別情報Iとが対応づけてサーバ装置400に格納されるような形態を採っている。このような形態を採った場合、提示処理ルーチン340は、この識別情報Iを利用して、サーバ装置400に当該識別情報Iに対応づけて格納されている固有情報P2を選択的に取り出すことができる。
なお、識別情報Iとしては、コンピュータ100を識別することができる情報であれば、どのような情報を利用してもかまわない。具体的には、コンピュータ100に付与された機体番号、コンピュータ100がスマートフォン等のように電話機能を有する場合は電話番号、SIMカード番号などを識別情報Iとして利用することができる。
また、コンピュータ100の利用者が特定されているケースでは、当該特定のコンピュータ100を利用している特定のユーザを識別する情報(たとえば、当該ユーザのメールアドレスや、当該利用者が所持している交通カードや社員証などのICカードからなる媒体に記録されている媒体識別コード、その他、特定の個人情報には結びつかないように生成したユニークな番号など)を識別情報Iとして用いるようにしてもよい。
図12に示す実施例では、コンピュータ100内の格納場所270内に、識別情報Iを格納した例が示されている。格納場所270としては、たとえば、コンピュータ100内の不揮発性メモリ内の領域を設定すればよい。登録処理ルーチン330がサーバ装置400に対して固有情報P2を登録する登録処理を実行する際には、ユーザが入力した固有情報P1(固有情報P2と同じ)とともに、格納場所270内に格納されている識別情報Iを送信し、両者が対応づけて格納されるようにすればよい。また、提示処理ルーチン340が、提示処理を行うために、サーバ装置400から固有情報P2を取り出す際には、格納場所270内に格納されている識別情報Iをサーバ装置400に送信して、当該識別情報Iに対応づけて格納されている固有情報P2を要求する処理を行えばよい。
もちろん、識別情報Iは、必ずしもコンピュータ100内の格納場所270に格納しておく必要はなく、たとえば、非接触式交通カードや非接触式社員証などの媒体に記録されている媒体識別コードを読み出して、これを識別情報Iとして利用するようにしてもかまわない。
この図12に示す実施例の場合、固有情報P2がサーバ装置400に格納される点を考慮して、もうひとつの工夫が施されている。すなわち、この実施例では、コンピュータ100にインストールされているアプリケーションプログラム300内の登録処理ルーチン330が、当該コンピュータ100について固有情報P2を所定の格納場所(この例の場合は、サーバ装置400)に格納したことを登録履歴として記録する処理を行う機能を有している。図示の例において、格納場所270内に描かれている登録履歴Hは、このようにして登録処理ルーチン330によって記録された履歴情報である。
図5の流れ図に示すとおり、アプリケーションプログラム300を起動すると、まず、ステップS11において、過去に登録処理が実行されているか否かの判定が行われる。図4に示す基本的な実施形態の場合、固有情報P2はコンピュータ100内部の格納場所250に格納されるため、格納場所250を参照して固有情報P2の有無を確認すれば、過去に登録処理が実行されているか否かの判定を容易に行うことができる。すなわち、登録処理によって格納が行われるべき所定の格納場所250に、固有情報P2が格納されているか否かに基づいて、過去に登録処理が実行されたか否かを判定することができる。これに対して、図12に示す実施例の場合、過去に登録処理が実行されているか否かを確認するためには、ネットワークNを介したサーバ装置400に対する照会作業が必要になる。
登録処理ルーチン330による登録処理において、固有情報P2および識別情報Iをサーバ装置400に格納する処理を行うとともに、コンピュータ100内部の格納場所270に、登録履歴Hを記録する処理を併せて行うようにすれば、起動処理ルーチン310は、ステップS11の判定を行う際に、サーバ装置400に対する照会作業を行わずに、内部の格納場所270を参照して登録履歴Hの有無を確認する作業を行うだけで、当該特定のコンピュータ100について過去に登録処理が実行されたか否かを判定することができる。すなわち、格納場所270内に登録履歴Hが存在しなければ、ステップS11で否定的判定を行い、サーバ装置400に対してステップS13の登録処理のためのアクセスを実行すればよいし、格納場所270内に登録履歴Hが存在すれば、ステップS11で肯定的判定を行い、サーバ装置400に対してステップS12の提示処理のためのアクセスを実行すればよい。
以上、固有情報の格納場所として、図4に示すように、コンピュータ100内の格納場所250を用いる例、図11に示すように、コンピュータ100の外部に接続された外部メモリ260を用いる例、図12に示すように、コンピュータ100に対してネットワークNを介してアクセス可能なサーバ装置400を用いる例を説明したが、固有情報を複数の部分情報に分割し、各部分情報をそれぞれ異なる格納場所に格納するようなことも可能である。
また、固有情報を所定の格納場所に格納したことを登録履歴として記録する処理を行う工夫は、図4に示すように、コンピュータ100内の格納場所250を用いる例や、図11に示すように、コンピュータ100の外部に接続された外部メモリ260を用いる例についても行うことが可能である。
<<< §5. 確認処理を行う変形例 >>>
ここでは、コンピュータの使用環境に関する情報を固有情報として登録し、提示処理の代わりに、確認処理を行う変形例を述べる。図13は、この確認処理を行う変形例に係るアプリケーションプログラムおよびその実行手順を示すブロック図である。図示のコンピュータ100Aは、図4に示すコンピュータ100に、更に、方位センサ150および加速度センサ160を付加した装置である。最近のスマートフォンなどの電子機器の多くには、方位センサ150や加速度センサ160が標準で装備されるようになってきている。
一方、このコンピュータ100Aにインストールされているアプリケーションプログラム305は、基本的には、図4に示すアプリケーションプログラム300と同じプログラムであるが、提示処理ルーチンの代わりに確認処理ルーチンが組み込まれている。すなわち、アプリケーションプログラム305には、起動処理ルーチン315、主処理ルーチン325、登録処理ルーチン335、確認処理ルーチン345(いずれもAndroid(登録商標)OSプログラムの下で動作するプログラム)が組み込まれている。
ここで、起動処理ルーチン315が実行する起動処理は、当該コンピュータ100Aにおいてアプリケーションプログラム305が起動されたときに、まず、当該特定のコンピュータ305について過去に登録処理が実行されていたか否かを判定する手順を含む点は、これまで述べてきた起動処理ルーチン310と同様である。そして、過去に登録処理が実行されていないと判定された場合には、登録処理ルーチン335を実行し、ユーザの指示に基づいて固有情報を入力し、入力した固有情報を所定の格納場所に格納する登録処理が行われるようにする点も、これまで述べてきた例と同様である。図13では、コンピュータ100A内の格納場所250が例示されているが、もちろん、図11に示す外部メモリ260や図12に示すサーバ装置400を格納場所として用いてもよい。
これまでの実施例と異なるのは、固有情報として、コンピュータの使用環境に関する情報を用いるようにし、過去に登録処理が実行されていると判定された場合には、提示処理ルーチン340ではなく、確認処理ルーチン345が実行される点である。この確認処理ルーチン345による確認処理は、格納場所250から固有情報P2を取り出し、取り出した固有情報P2と当該コンピュータ100Aのその時点における使用環境Eとが合致するか否かを確認し、確認結果Rをユーザに報知する処理になる。そして、この確認処理で合致が確認された場合にのみ、主処理ルーチン325(図4に示す主処理ルーチン320と全く同じ内容でよい)が実行されることになる。
また、確認処理ルーチン345による上記確認処理を可能にするため、ここに示す実施例の場合、方位センサ150および加速度センサ160が利用されている。また、これらセンサの検出値を利用して、登録処理ルーチン335における登録処理が行われるような構成を採用している。方位センサ150が出力する方角に関する情報や、加速度センサ160が出力する角度に関する情報(重力加速度の方向に基づいて認識したコンピュータ100Aの姿勢を示す角度の情報)は、コンピュータの使用環境に関する情報の1つとして利用することができる。ここでは、まず、方位センサ150が出力する方角に関する情報を固有情報として登録する具体例を説明しよう。
図14は、図13に示すアプリケーションプログラム305の実行手順を示す流れ図である。アプリケーションプログラム305が起動されると、ステップS20の起動処理が開始され、まず、起動処理ルーチン315が、ステップS21において、このコンピュータ100Aについて過去に登録処理が実行されているか否かを判定する処理を行う。具体的な判定方法は、これまでの実施例で説明したとおりである。そして、このステップS21において、肯定的な判定がなされた場合にはステップS22へ進み(後述する確認処理が行われる)、否定的な判定がなされた場合にはステップS23へ進むことになる。ここでは、このアプリケーションプログラム305が、コンピュータ100Aにおいて初めて起動された場合を想定し、ステップS23の登録処理が行われたものとしよう。
ステップS23の登録処理は、登録処理ルーチン335によって行われる。ここで行われる登録処理は、基本的には、これまで述べてきた登録処理と同様に、ユーザに対して、固有情報の入力を促すメッセージを表示し、ユーザの指示に基づいて固有情報P1を入力し、入力した固有情報P1を格納場所250に固有情報P2として格納する処理である。但し、ここで述べる実施例の場合、ユーザの指示に基づいて入力される固有情報P1は、文字列や画像ではなく、特定の方角を示す情報になる。
図8に示す実施例においても、特定の方角(北西)を固有情報P1として入力する例を示したが、ここで述べる実施例の場合、ユーザが登録指示を行った瞬間における方位センサ150の出力(特定の方角を示す情報)がそのまま固有情報P1として取り込まれ、格納場所250に固有情報P2として格納される。たとえば、方位センサ150が、北を0°、東を90°、南を180°、西を270°とした0〜360°の方位角を出力するセンサであった場合、特定の方位角φ(0°≦φ<360°)が固有情報として格納されることになる。
このような登録処理が完了すると、ステップS28へと進み、登録処理ルーチン335から主処理ルーチン325への移行が行われる。主処理ルーチン325によって実行される主処理は、これまでの実施例と同様、当該アプリケーションプログラム305の本来の機能を提供するための一連の処理である。この主処理が完了すると、制御はOSプログラム200に移行する。
こうして、アプリケーションプログラム305の初回起動が終了すると、格納場所250には固有情報P2が格納されている状態になるので、アプリケーションプログラム305の2回目以降の起動が行われると、今度は、ステップS21において肯定的な判定がなされ、起動処理ルーチン315から確認処理ルーチン345への移行が行われることにより、ステップS22以降の確認処理が実行される。
この確認処理は、その時点で方位センサ150が検出した方角(すなわち、コンピュータ100Aのその時点における地理的な向きとして与えられる使用環境E)と格納場所250から取り出した固有情報P2とが合致するか否かを確認し、確認結果Rをユーザに報知する処理になる。そして、この確認処理で合致が確認された場合にのみ、主処理ルーチン325が実行される。
具体的には、まず、ステップS22において、現在の使用環境を登録されている固有情報と比較する処理が行われる。すなわち、その時点において、方位センサ150から与えられるコンピュータ100Aの使用環境E(すなわち、その時点の方位角φ)と、格納場所250に格納されている固有情報P2との比較が行われる。そして、ステップS24において、両者が合致するか否かが判定される。
なお、実用上、この合致判定は、所定の近似幅をもって行うようにするのが好ましい。すなわち、必ずしも正確に一致しなくても、所定の近似幅の範囲内であれば「合致」との判定が行われるようにする。たとえば、上例のように、方位センサ150が0〜360°の方位角φを出力するセンサであった場合、固有情報P2も使用環境Eも、0〜360°の範囲内の角度φで表されるデータということになるので、たとえば、両者の角度差(0°が360°に等しくなる方位角としての角度差)が10°以内であれば「合致」との判定が行われるようにすればよい。
こうして得られた判定結果は、ユーザに報知される。すなわち、ステップS24において、両者が合致するとの肯定的な判定結果が得られた場合には、ステップS27へと進み、正常判定の報知がなされた後、ステップS28へ進み、主処理への移行が行われる。すなわち、確認処理ルーチン345から主処理ルーチン325へと移行し、主処理が実行されることになる。主処理が完了すると、制御はOSプログラム200に移行する。
一方、ステップS24において、両者が合致しないとの否定的な判定結果が得られた場合には、ステップS25へと進み、異常判定の報知がなされた後、ステップS26へ進み、主処理の実行は中止される。この場合、制御は、確認処理ルーチン345からOSプログラム200に移行する。ここでユーザが、アプリケーションプログラム305を再度起動する操作を行えば、再びステップS20からの起動処理が繰り返し実行されることになる。
続いて、図14の流れ図に示す処理の具体的な手順を、画面表示例を示しながら説明する。図15は、図13に示すアプリケーションプログラム305の登録処理ルーチン335によって実行される登録処理における、コンピュータ100A上での画面表示例を示す図である。アプリケーションプログラム305が初回起動されると、図14の流れ図のステップS21において否定的な判定がなされ、ステップS23における登録処理が実行される。図15は、このステップS23において、コンピュータ100Aのディスプレイ上に表示される画面ということになる。
図15(a) に示す画面は、本発明による登録処理が実行中であることをユーザに知らせるとともに、ユーザに固有情報として、現時点のコンピュータ100Aの地理的な向きに基づいて特定の方角を自動的に入力させるための画面である。図示のとおり、この画面上には、「このアプリは初めて起動されました。次回以降の起動時に、プログラムの正当性確認に用いるため、装置を特定の方角に向けた状態で登録ボタンを押してください。」なるメッセージが表示されている。このメッセージは、これまでの実施例と同様に、ここで入力する固有情報が、アプリケーションプログラム305の正当性を確認するための確認処理に利用される情報である旨を示す説明メッセージである。
ユーザは、このような説明メッセージが表示されたら、図15(b) に示すように、コンピュータ100Aの本体の特定部分を特定の方角に向けた状態で、画面上の登録ボタン111を押す操作を行えばよい。図は、コンピュータ100Aの上部を北西方向に向けた状態にして、登録ボタン111を押した状態を示す。登録処理ルーチン335は、登録ボタン111が押された時点における方位センサ150の出力に基づいて、コンピュータ100Aが向けられた方角を固有情報P1として取り込み、これを格納場所250に固有情報P2として格納する処理を行う。
たとえば、方位センサ150の出力が方位角φ=312°を示していた場合、312°という方位角自体を固有情報P1として取り込んでもよいし、予め8方位についての角度範囲を定めておき、φ=312°に対応する「北西」という方角を示す情報(たとえば、「NW」なる記号)を固有情報P1として取り込んでもよい。したがって、格納場所250には、312°という数値を固有情報P2として格納してもよいし、「NW」という方角を示す記号を固有情報P2として格納してもよい。
ユーザが登録ボタン111を押して、方角を示す固有情報の入力を完了すると、画面は図15(c) のように変わり、登録処理が完了した旨が通知される。図示の例の場合「登録処理が完了しました。次回以降の起動時には毎回装置を登録した方角に向けた場合にのみ正常判定されます。」なるメッセージが表示されている。このメッセージも、入力した固有情報P1がアプリケーションプログラム305の正当性を確認するための確認処理に利用される情報である旨を示す説明メッセージであり、ユーザは、次回以降の起動時には、登録した方角を向けた状態で起動した場合にのみ、正常と判定されることを認識することができる。別言すれば、起動時の方角に関して、そのような正しい判定が行われなかった場合には、正当性に問題が生じていることを認識できる。
このような登録処理が完了した後に、アプリケーションプログラム305が再度起動されると、図14の流れ図のステップS21において肯定的な判定がなされ、ステップS22以降の確認処理が実行される。すなわち、上述したように、確認処理ルーチン345により、方位センサ150の現時点の出力に基づく方位(方位角φの値でもよいし、それから導かれる8方位でもよい)と、格納場所250に格納されている固有情報P2(上例の場合、312°なる方位角もしくは「NW」なる記号)との比較が行われ、両者が合致するか否かが判定される。
この合致判定では、前述したとおり、方位角φの数値同士を比較する場合は、たとえば、両者の差が10°以内であれば「合致」との判定を行うようにすればよい。また、方位角φの数値と8方位とを比較する場合は、たとえば「北西(NE)」についての方位角範囲であれば、292.5°〜337.5°のように設定しておき、方位角φが当該範囲内に入っていれば「合致」との判定を行うようにすればよいし、8方位のいずれかを示す記号同士を比較する場合は、「NE」=「NE」のように両者が一致すれば「合致」との判定を行うようにすればよい。
ステップS24で肯定的な判定がなされると、ステップS27で正常判定の報知が行われた後にステップS28へ進み、主処理の実行に移行する。一方、ステップS24で否定的な判定がなされると、ステップS25で異常判定の報知が行われた後にステップS26へ進み、主処理の実行は中止される。図16(a) は、ステップS27における正常判定の報知画面の一例を示し、図17(b) は、ステップS25における異常判定の報知画面の一例を示す。
結局、アプリケーションプログラム305の初回起動時に、図15(b) に示すように、コンピュータ100Aを北西に向けた状態で固有情報の登録を行った場合、次回も同様に北西を向けた状態で起動すると、図16(a) に示すように、画面に正常判定結果表示112が提示されてから、主処理が実行されることになるが、別な方角を向けて起動した場合は、図16(b) に示すように、画面に異常判定結果表示113が提示されてから、アプリケーションプログラム305は強制終了されることになる。
したがって、アプリケーションプログラム305に対する不正なすり替えが行われていない場合は、北西を向けて起動すると、図16(a) に示す正常判定結果表示112の後に正常起動し、北西以外を向けて起動すると、図16(b) に示す異常判定結果表示113の後に強制終了することになる。すなわち、起動時にコンピュータ100Aが向いている方角に応じて、図16(a) もしくは(b) のいずれかの表示がなされることになり、ユーザは、起動時にそのような振る舞いがあれば、アプリケーションプログラム305自体は改竄を受けていないと判断することができる。これに対して、登録した方角とは食い違った振る舞いをしたり、起動時に、図16(a) ,(b) のいずれの表示もなされなかったりした場合は、改竄プログラムにすり替えられている可能性があると判断することができる。
要するに、上述した実施例の場合、登録処理では、ユーザの指示に基づいて、特定の方角を含む固有情報を入力し、これを所定の格納場所に格納する処理が行われ、確認処理では、上記固有情報に含まれている特定の方角と、コンピュータに備わっている方位センサが検出した当該コンピュータの地理的な向きと、が合致するか否かを確認する処理が行われ、合致が確認された場合にのみ主処理が実行されることになる。
以上、図13に示すコンピュータ100Aにおける方位センサ150の検出値を利用して方角を示す固有情報の登録を行う例を説明したが、続いて、加速度センサ160の検出値を利用して姿勢を示す固有情報の登録を行う例を説明する。加速度センサ160は、コンピュータ100Aの本体に対して作用する加速度を、三次元座標系における個々の座標軸方向成分ごとに検出する機能を有しており、コンピュータ100Aがほぼ静止状態に保たれていれば、重力加速度の方向を検知することができる。別言すれば、加速度センサ160は、コンピュータ100Aの鉛直軸(水平面)に対する姿勢を認識することができる。
そこで、ここでは、図17に示すように、コンピュータ100A(図では、薄い板状をしたスマートフォンの例が示されている)の姿勢として、水平面Shに対するディスプレイ表示面の傾斜角度θを定義し、これを固有情報として登録することを考えてみる。
この実施例の場合、まず登録処理で、ユーザに対して、コンピュータ100A本体を水平面に対して所定角度θだけ傾斜した状態にして(もちろん、θ=0°として、本体を水平に保持した状態にしてもよい)、登録ボタンを押す操作を行うように促す説明メッセージが提示される。登録処理ルーチン335は、ユーザが登録ボタンを押した時点で、加速度センサ160の出力に基づいて、その時点のコンピュータ100A本体の水平面に対する傾斜角度θを固有情報P1として取り込み、格納場所250に固有情報P2として格納する処理を行う。
このような登録処理が完了した後に、アプリケーションプログラム305が再度起動されると、確認処理ルーチン345による確認処理が実行される。すなわち、加速度センサ160の現時点の出力に基づいて、コンピュータ100Aの現時点の姿勢(使用環境E)を示す情報として、水平面Shに対する傾斜角度が認識され、格納場所250に格納されている固有情報P2(登録処理で格納した傾斜角度θ)との比較が行われ、両者が合致するか否かが判定される。
この合致判定においても、実用上は、比較対象となる両角度の差が、たとえば、10°以内であれば「合致」との判定を行うようにすればよい。両者が合致すれば、正常判定の報知が行われた後に主処理の実行に移行し、合致しない場合は、異常判定の報知が行われた後に主処理の実行が中止される点は、上述した実施例と同様である。
結局、アプリケーションプログラム305の初回起動時に、図17に示すように、コンピュータ100Aを水平面Shに対して角度θだけ傾斜させた状態で固有情報の登録を行った場合、次回もほぼ同じ傾斜状態で起動すると正常判定結果が表示されて主処理が実行されることになるが、異なる傾斜状態で起動すると異常判定結果が表示されて、アプリケーションプログラム305は強制終了されることになる。
要するに、上述した実施例の場合、登録処理では、ユーザの指示に基づいて、特定の角度を含む固有情報を入力し、これを所定の格納場所に格納する処理が行われ、確認処理では、上記固有情報に含まれている特定の角度と、コンピュータに備わっている方位センサが検出した当該コンピュータの姿勢を示す角度と、が合致するか否かを確認する処理が行われ、合致が確認された場合にのみ主処理が実行されることになる。
以上、図13に示すコンピュータ100Aに備わっている方位センサ150もしくは加速度センサ160を利用して、登録処理時(初回起動時)には、自動的に方角(方位角φ)もしくは姿勢(傾斜角度θ)を、使用環境を示す固有情報として登録し、確認処理時(2回目以降の起動時)には、固有情報として登録されていた方角もしくは姿勢が、起動時の方角もしくは姿勢(使用環境)と合致するか否かの判定を行う例を述べたが、§5で述べる確認処理を行う変形例を実施するにあたり、コンピュータの使用環境は、方角や姿勢に限定されるものではなく、この他にも種々の使用環境を固有情報として登録しておくことが可能である。
要するに、ここで述べる変形例では、コンピュータの何らかの使用環境を固有情報として登録しておき、その後の起動時におけるコンピュータの使用環境が、予め登録してあった使用環境に合致するか否かの確認処理を行い、確認結果をユーザに報知するとともに、合致が確認された場合にのみ主処理が実行されるような制御を行えばよい。
また、これまでの説明では、登録処理時に、ユーザが登録操作(登録ボタンの押圧操作)を行った時点で、方位センサ150もしくは加速度センサ160の出力を利用して、方角もしくは姿勢を示す情報を固有情報P1として自動的に取得する例を述べたが、登録処理時に、方位センサ150もしくは加速度センサ160の出力を利用せずに、方角や姿勢を示す情報をユーザに手入力させるようにしてもかまわない。たとえば、図8(a) に示すような入力インターフェイスを用意しておけば、任意の方角をユーザの選択操作によって入力することができるし、角度を数値で入力する入力インターフェイスを用意しておけば、任意の角度をユーザの手入力操作によって入力することができる。
<<< §6. その他の変形例 >>>
ここでは、更にいくつかの変形例を提示しておく。
<6−1.サイズ確認処理を行う変形例>
図18は、図4に示す基本的な実施形態に係るアプリケーションプログラム300に、更に、サイズ確認処理機能を付加した変形例に係るアプリケーションプログラム308およびその実行手順を示すブロック図である。図示のアプリケーションプログラム308には、図4に示すアプリケーションプログラム300と同様に、主処理ルーチン320、登録処理ルーチン330、提示処理ルーチン340が備わっており、これらの各ルーチンの機能は、これまで述べたとおりである。このアプリケーションプログラム308の特徴は、更に、サイズ確認処理ルーチン350が付加されている点と、起動処理ルーチン318が、このサイズ確認処理ルーチン350を呼び出す機能を有する点である。
すなわち、起動処理ルーチン318は、基本的には、図4に示す起動処理ルーチン310と同様に、図5に示すステップS11を実行して、初回起動時には登録処理ルーチン330を実行させ、2回目以降の起動時には提示処理ルーチンを実行させる制御を行う機能を有しているが、その前に、サイズ確認処理ルーチン350を呼び出して、サイズ確認処理を実行させる制御を行う。
このサイズ確認処理は、アプリケーションプログラム308を構成するファイル全体のデータサイズを確認し、確認したデータサイズが予め設定されている設定サイズと一致するか否かを提示する処理である。
なお、図18に示すアプリケーションプログラム308内には、5つのルーチンのみしか示されていないが、Android(登録商標)用プログラムの場合、この5つのルーチンは、図2に示すアプリCを構成するAPKパッケージ内のプログラム本体部10に相当するものであり、いずれもAndroid(登録商標)OSプログラムの下で動作するJava(登録商標)プログラムである。したがって、実際には、図18に示すアプリケーションプログラム308内には、図示されている5つのルーチンの他、リソースデータ20や補助ファイル30等が含まれており、アプリケーションプログラム308全体のファイルサイズは、これらリソースデータ20や補助ファイル30等を含んだAPKパッケージ全体のサイズということになる。
サイズ確認処理ルーチン350には、自分自身を含めたアプリケーションプログラム308全体のファイルサイズ(総バイト数)が予め基準値として記録されており(アプリケーションプログラム308をユーザに配布する時点から既に記録されている)、サイズ確認処理ルーチン350が実行されると、コンピュータ100にインストールされた状態におけるアプリケーションプログラム308のファイルサイズを検出し、これを基準値と比較する処理が行われ、比較結果がユーザに提示される。
図18に示すアプリケーションプログラム308は、コンピュータ100内の所定の記憶場所(たとえば、不揮発性メモリ内のアプリケーション格納用領域)にインストールされているので、当該記憶場所への格納情報を参照することにより、アプリケーションプログラム308全体のファイルサイズを検出することができる。これを予め記録されている基準値と比較することにより、ファイルサイズに関して問題がないかどうかの確認を行うことができる。なお、Android(登録商標)用プログラムのように、圧縮された状態で配布されるアプリケーションプログラムの場合は、伸張された状態(コンピュータ100にインストールされた状態)でのファイルサイズを基準値として記録しておくようにする。
図2に示すアプリCが、図3に示すアプリC''にすり替えられた場合、インジェクションの手法により改竄プログラム50が埋め込まれることになる。この場合、元のアプリCに含まれていたプログラム本体部10、リソースデータ20、補助ファイル30、署名情報40は、そっくりそのまま残っているので(そのため、署名情報による改竄チェックが機能しないことは既に述べたとおりである)、アプリC''のファイルサイズはアプリCのファイルサイズよりも改竄プログラム50の分だけ必ず増加することになる。したがって、アプリC''についてサイズ確認処理を実行すれば、サイズが不一致であることが確認され、当該確認結果がユーザに報知されることになる。
実用上は、図5の流れ図において、ステップS11の直前にサイズ確認処理を実行するようにし、サイズの一致確認が得られた場合にはステップS11へと進み、一致確認が得られなかった場合には、ユーザに異常を報知するとともに、当該アプリケーションプログラムを強制終了するようにするのが好ましい。
クラッカーが、正規のアプリケーションプログラムをそっくりコピーした上で、その中の一部を書き換えるという手法で改竄プログラム50を作成した場合、図4の基本的な実施形態に係るアプリケーションプログラム300では、起動処理ルーチン310,主処理ルーチン320,登録処理ルーチン330,提示処理ルーチン340がそっくりコピーされ、主処理ルーチン320の一部だけが書き換えられる可能性がある。この場合、§2で述べた基本的な実施形態に係る手順で当該改竄プログラム50を実行すると、図5の流れ図の手順が実行されるため、ユーザには改竄プログラム50が実行されていることが報知されない。
これに対して、図18に示すサイズ確認処理を行う変形例を適用した場合、クラッカーが、正規のアプリケーションプログラム308をそっくりコピーした上で、その中の一部を書き換えるという手法で改竄プログラム50を作成すると、起動処理ルーチン318,主処理ルーチン320,登録処理ルーチン330,提示処理ルーチン340,サイズ確認処理ルーチン350がそっくりコピーされ、主処理ルーチン320の一部だけが書き換えられる可能性が高い。この場合、サイズ確認処理ルーチン350は、サイズの基準値を含めて元のままであるので、サイズ確認処理を実行すると不一致が生じ、ユーザには改竄プログラム50が実行されていることが報知されることになる。
もちろん、クラッカーが改竄プログラム50を作成する際に、正規のプログラム内のサイズ確認処理ルーチン350を詳細に解析し、サイズの基準値までも改竄プログラム50に合致するような値に書き換えてしまった場合は、サイズ確認処理により改竄プログラム50の検出を行うことはできない。したがって、ここで述べる変形例も、100%の安全性を提供することはできないが、少なくとも、前述した基本的な実施形態よりは安全性をより高める効果は期待できる。
なお、ここでは、§2で述べた基本的な実施形態(図4に示す構成)にサイズ確認処理ルーチン350を付加した変形例を述べたが、この変形例は、これまで述べてきたいずれの実施例にも適用可能な技術である。
<6−2.監視プログラムを用いる変形例>
図19は、図4に基本的な実施形態として示したコンピュータ100に、アプリケーションプログラム300とは別個に監視プログラム500をインストールした変形例を示すブロック図である。図4に示す実施形態との相違は、新たに監視プログラム500がインストールされている点だけである。なお、ここでも、説明の便宜上、§2で述べた基本的な実施形態に監視プログラム500を組み込んだ変形例を説明するが、この変形例は、これまで述べてきたいずれの実施例にも適用可能な技術である。
この監視プログラム500は、アプリケーションプログラム300が実行する登録処理および提示処理の処理動作を監視する機能をもったプログラムである。具体的には、この監視機能は、照合準備段階と照合処理段階とによって実現される。
照合準備段階は、照合処理段階の準備を行うためのプロセスであり、アプリケーションプログラム300の動作を監視しながら、登録処理ルーチン330が実行する登録処理により固有情報P1が所定の格納場所250に固有情報P2として格納されたときに、当該固有情報P1を別な格納場所550にもコピーして、固有情報P4として格納するプロセスになる。
一方、照合処理段階は、提示処理ルーチン340が実行する提示処理により固有情報P3もしくは派生情報Q3がユーザに提示されたときに、この提示された固有情報P3もしくは派生情報Q3と、別な格納場所550に格納されている固有情報P4もしくはこれに基づいて生成した派生情報Q4とが合致するか否かを照合し、照合結果Vをユーザに報知するプロセスになる。
たとえば、図6に示す例では、登録処理ルーチン330の機能により、固有情報P1として「PATENT2013」なる文字列が入力され、当該文字列が固有情報P2として格納場所250に格納されることになる。このとき、ここで述べる変形例では、監視ブログラム500の機能により、「PATENT2013」なる文字列は、別な格納場所550にも固有情報P4として格納されることになる。
そして、当該アプリケーションプログラムが再度起動されると、図7に示す例のように、提示処理ルーチン340の機能により、固有情報P3とし「PATENT2013」なる文字列がユーザに提示されることになる。このとき、ここで述べる変形例では、監視ブログラム500の機能により、ユーザに提示される「PATENT2013」なる文字列と、別な格納場所550に格納されていた「PATENT2013」なる文字列とが合致するか否かの照合が行われ、その結果が、照合結果Vとしてユーザに報知される。
たとえば、図7に示す画面上に、「照合結果:一致」もしくは「照合結果:不一致」といった表示により、照合結果Vの報知を行えば、ユーザは、コンピュータ側で行われた自動照合の結果を知ることができる。これと併せて、文字列表示欄102に表示された固有情報P3を自分自身で確認することにより、改竄検知を行う上で、より確実な運用を行うことが可能になる。もちろん、固有情報P3の代わりに派生情報Q3の提示を行う場合は(たとえば、図8に示す記号「NW」なる固有情報P3の代わりに、図9に示す「コンパス画像」を派生情報Q3として提示する場合は)、派生情報Q3についての合致判定を行うようにすればよい。この監視プログラム500による照合処理の結果、両者が合致しなかった場合には、アプリケーションプログラム300を強制終了させるような処理も可能である。
なお、監視プログラム500を、コンピュータ100内にインストールして動作させる1つのアプリケーションプログラムとして用意した場合は、当該監視プログラム500は、いわゆる「常駐アプリ」として動作させ、常に起動させた状態におく必要がある。一般的なコンピュータは、マルチタクス機能を有しており、複数のアプリケーションプログラムを同時に起動した状態にして、並行して同時動作させることが可能である(実際には、OSプログラムの管理機能により、時分割で交替に動作することになるが、ユーザから見れば、複数のプログラムが同時に動作しているように見える)。
このため、監視プログラム500を常に起動させた状態におけば、監視プログラム500によって、アプリケーションプログラム300の動作状態を監視することができ、必要な時点で、上述した照合準備段階や照合処理段階の処理を適宜実行することができる。
たとえば、§4で述べた図12の実施例に示すコンピュータ100に、監視プログラム500を組み込んだ変形例の場合、登録処理ルーチン330によって、固有情報P2がネットワークNを介してサーバ装置400に格納されることになるが、その際、監視プログラム500によって通信経路を監視していれば、サーバ装置400に送信される固有情報P2を認識することができる(たとえば、特定の送信プロトコルや、固有情報P2に付される特定の符号などを目印に認識を行えばよい)。そこで、監視プログラム500は、この送信過程にある固有情報P2をコピーして、これを別な格納場所550へ格納する照合準備段階の処理を行うことができる。
また、上例の場合、アプリケーションプログラム300を再度起動すると、提示処理ルーチン340によって、ネットワークNを介してサーバ装置400から固有情報P2が取り出され、固有情報P3もしくは派生情報Q3としてユーザに提示されることになるが、監視プログラム500によってアプリケーションプログラム300の動作を監視していれば、提示対象となる固有情報P3もしくは派生情報Q3を抽出し、別な格納場所550に格納されていた固有情報P4を用いた照合処理が可能になる。
たとえば、固有情報P3が画面上に表示される画像であった場合、OSプログラム200などに用意されている画面キャプチャー機能を利用して、固有情報P3として提示されるべき画像のデータを取得し、別な格納場所550に格納されている固有情報P4に基づく照合を行えばよい。あるいは、画面表示が、OSプログラム200に用意されている特定の表示用サブルーチンを呼び出して行われる場合は、当該表示用サブルーチンに受け渡される画像データを取得して照合を行ってもよい。なお、照合結果が不一致であったため、アプリケーションプログラム300を強制終了させる場合は、監視プログラム500からOSプログラム200に対して、「アプリケーションプログラム300を強制終了させる」旨の要求を行い、OSプログラム200を介して、アプリケーションプログラム300を強制終了させるようにすればよい。
以上、監視プログラム500が、能動的にアプリケーションプログラム300を監視しながら、必要に応じて、照合準備段階や照合処理段階の手順を実行する例を述べたが、監視プログラム500の存在を前提としてアプリケーションプログラム300を作成することができる場合は、アプリケーションプログラム300側に、監視プログラム500への報告機能を用意しておくことにより、監視プログラム500が、受動的にアプリケーションプログラム300を監視するような形態を採ることも可能である。
たとえば、アプリケーションプログラム300内の登録処理ルーチン330に、登録処理の実行時に、登録対象となる固有情報P1を監視プログラム500にも引き渡す手順を組み込んでおけば、監視プログラム500は、能動的にアプリケーションプログラム300の動作を監視していなくても、受動的に引き渡しを待っていれば、照合準備段階を行うことができる。同様に、アプリケーションプログラム300内の提示処理ルーチン340に、提示処理の実行時に、提示対象となる固有情報P3もしくは派生情報Q3を監視プログラム500にも引き渡す手順を組み込んでおけば、監視プログラム500は、能動的にアプリケーションプログラム300の動作を監視していなくても、受動的に引き渡しを待っていれば、照合処理段階を行うことができる。
また、監視プログラム500は、必ずしも1つのアプリケーションプログラムとして用意する必要はなく、OSプログラム200に組み込まれた形式で用意することも可能である。この場合、照合準備段階や照合処理段階の手順は、OSプログラムの機能として実施されることになるので、より柔軟な処理が可能になる。
<6−3.グループ定義を行う変形例>
これまで、改竄プログラムへのすり替え検知の対象となるアプリケーションプログラムが、コンピュータ内に1組だけインストールされている実施例について本発明を説明してきたが、通常のユーザであれば、同一のコンピュータに複数のアプリケーションプログラムをインストールして利用するのが一般的である。このように、複数のアプリケーションプログラムがインストールされている場合、当然ながら、本発明を適用したアプリケーションプログラムについてのみ、これまで述べてきた登録処理、提示処理もしくは確認処理といった本発明に固有の処理が実行されることになる。
ここでは、図1(a) に示す例において、3つのアプリA,B,Cのすべてが、§2で述べた本発明の基本的な実施形態に係るアプリケーションプログラムであった場合を考えてみる。この場合、基本的には、個々のアプリA,B,Cのそれぞれが、図4に示すように、起動処理ルーチン310,主処理ルーチン320,登録処理ルーチン330,提示処理ルーチン340を備えたプログラムになるので、それぞれが独立した格納場所250にそれぞれの固有情報を格納する処理を行うことになる。
たとえば、アプリAの初回起動時には、固有情報PaがアプリA用の格納場所250Aに格納され、アプリAの次回以降の起動時には、当該固有情報Paが提示され、アプリBの初回起動時には、固有情報PbがアプリB用の格納場所250Bに格納され、アプリBの次回以降の起動時には、当該固有情報Pbが提示される、といった運用が行われることになる。しかしながら、このような運用を行うと、ユーザの立場からは、登録作業が煩雑になり、もし、個々のアプリごとに異なる固有情報を登録してしまった場合は、提示処理時の確認作業に混乱が生じることにもなる。
そこで、実用上は、個々のアプリケーションプログラムにグループ定義を行い、同一のグループに所属するアプリ間では、いずれか最初に起動されたアプリにおいて共通の登録処理を実行し、共通の固有情報を共通の格納場所に格納するようにし、それ以降に、当該グループに所属するいずれかのアプリが起動された場合には、既に過去に登録処理が実行されているものとして、共通の格納場所に格納されている共通の固有情報もしくはこれに基づいて生成した派生情報をユーザに提示する運用を採るのが好ましい。
たとえば、図1(a) 示す3つのアプリA,B,Cが同一のグループに所属するアプリとして定義されており、これらがコンピュータ100に対して同時期にインストールされたものとしよう(あるいは、これら3つのアプリA,B,Cがプリインストールされたコンピュータ100をユーザが入手した場合を考えてもよい)。
ここで、たとえば、ユーザがアプリCを最初に起動したとすると、アプリC内の起動処理ルーチン310により、当該コンピュータ100についての当該アプリCが所属するグループ内のアプリに関する登録処理は過去に実行されていないとの判断がなされ(すなわち、所定の格納場所250には、まだ固有情報が存在しないとの判断がなされ)、登録処理ルーチン330による登録処理が実行されることになる。具体的には、当該グループに共通の格納場所250に共通の固有情報が登録される。こうして、登録処理が実行された後、アプリCの主処理ルーチン320が実行され、ユーザには、アプリCの本来の機能が提供される。
続いて、ユーザがアプリAを起動したとすると、今度は、アプリA内の起動処理ルーチン310により、過去に登録処理が実行されているか否かの判断がなされる。この場合、当該アプリAについての登録処理は実行されていないものの、同一グループに所属するアプリCに関する登録処理が実行されていることが認識できるので(すなわち、共通の格納場所250に共通の固有情報が存在するので)、提示処理ルーチン340による提示処理が実行されることになる。要するに、起動されたアプリケーションプログラムと同一のグループに所属する別のプログラムによって固有情報が所定の場所に格納されているか否かに基づいて、過去に登録処理が実行されたか否かを判定する処理が行われることになる。
結局、同一のグループに所属するアプリA,B,Cのいずれか1つに関して登録処理が実行され、共通の固有情報の登録が行われると、その後は、当該グループに所属するいずれのアプリを起動した場合も、既に登録処理が実行されているものと判断され、共通の固有情報を提示する提示処理が行われることになる。このような運用を採れば、ユーザは、個々のアプリごとに登録作業を行う煩雑さから解放され、また、共通の固有情報が利用できるので、提示処理時の確認作業にも混乱が生じることがない。
もちろん、ここで述べるグループ定義を行う変形例は、§2で述べた基本的な実施形態のみならず、§4以降の実施例についても適用可能である。要するに、ここで述べる変形例を適用する場合、図5のステップS11や図14のステップS21に示す起動処理の判断を行う際に、同一グループに所属する別なアプリケーションプログラムによって登録処理が行われていた場合にも、肯定的な判断が行われるような運用を採ればよい。
なお、図12に示す実施例では、固有情報を所定の格納場所に格納したことを、登録履歴Hとして記録しておく例を述べたが、ここで述べるグループ定義を行う変形例においても、このような登録履歴Hを記録しておくと、過去に登録処理が実行されているか否かを判定する上で有用である。すなわち、同一のグループに所属するアプリケーションプログラムに関して、最初に登録処理が行われたときに、その事実を登録履歴Hとして記録しておくようにすれば、以後、当該グループに所属するいずれかのアプリケーションプログラムが起動されたときの起動処理において、当該起動中のアプリケーションプログラムと同一のグループに所属する別のプログラムによって記録された登録履歴に基づいて、過去に登録処理が実行されたか否かを判定する処理を行うことができるようになる。
また、これまで述べてきた実施形態では、バージョンの異なる同一のアプリケーションプログラムについては、同一のプログラムとする取扱いを行い、新バージョンのアプリケーションプログラムを起動した際に、旧バージョンのアプリケーションプログラムよって登録処理が実行されていた場合には、「過去に登録処理が実行されている」と判断して、提示処理もしくは確認処理を実行するようにしていた。別言すれば、起動されたアプリケーションプログラムに対して旧バージョンの関係にあるアプリケーションプログラムによって固有情報が所定の場所に格納されているか否かに基づいて、過去に登録処理が実行されたか否かを判定する処理が行われていた。ここで述べるグループ定義の概念を導入すれば、バージョンの異なる個々のアプリケーションプログラムを、同一グループに所属する別なアプリケーションプログラムとして取り扱うような運用も可能である。
たとえば、上述した登録履歴Hを利用する場合、新旧両バージョンのアプリケーションプログラムを、互いに異なるプログラムとして取り扱うようにしても、両者を同一のグループに所属するプログラムとして定義しておけば、起動中の新アプリケーションプログラムに対して旧バージョンの関係にあるアプリケーションプログラムによって記録された登録履歴Hに基づいて、過去に登録処理が実行されたか否かを判定する処理を行うことができる。
複数のアプリケーションプログラムについてのグループ定義方法としては、たとえば、同一のプログラム提供者から提供されたプログラムについては同一のグループとする、というような定義方法が最も実用的である。同一のプログラム提供者から提供されるアプリケーションプログラムであれば、組み込まれる登録処理ルーチン、提示処理ルーチン、確認処理ルーチン等を共通化することが可能なので、固有情報のデータフォーマットや、その格納場所を共通化することができ、同一のグループとして取り扱っても何ら支障は生じない。
複数のプログラムが同一のグループに所属するか否かは、たとえば、個々のアプリケーションプログラムに付与される何らかのデジタルサインに基づいて決定すればよい。たとえば、上例のように、同一のプログラム提供者から提供されたプログラムについては同一のグループとする、というようなグループ定義を行う場合は、個々のプログラム提供者名を示すデジタルサインがグループ識別子としての機能を果たすことになる。
もちろん、本発明を実施するにあたり、固有情報の標準フォーマットや共通の格納場所を予め仕様として定めておけば、異なるプログラム提供者から提供されたプログラムを同一のグループに所属させても問題は生じない。したがって、ユーザにグループ定義を任意に行わせることも可能である。たとえば、ユーザが同一のフォルダ内にインストールした複数のアプリケーションプログラムを同一のグループとして取り扱うこともできる。その他、同一のコンピュータにインストールされた全アプリケーションプログラムを、常に同一のグループとして取り扱う、という運用も可能であるし、特定のサブルーチンプログラムが組み込まれているアプリケーションプログラムを同一のグループとして取り扱う、という運用も可能である。
<<< §7. 方法発明としての把握 >>>
最後に、本発明をアプリケーションプログラムの実行方法として把握した場合の説明を行う。
<7−1.提示処理を行う実施形態>
図20は、§2で述べた基本的な実施形態に対応するアプリケーションプログラムの実行方法の手順を示す流れ図である。図示のとおり、この手順は、登録有無判定段階S31,提示処理段階S33,登録処理段階S34,主処理段階S35という4つの段階によって構成される。いずれの段階も、パソコン、スマートフォン、電子タブレット等のコンピュータによって実行される段階である。以下、これらの各段階が、すべて同一のコンピュータによって実行されるケースについて説明する。
登録有無判定段階S31は、コンピュータが、特定のアプリケーションプログラムに対する起動指示を受けたときに、過去に当該特定のアプリケーションプログラムに関する登録処理段階が実行されているか否かを判定する段階である。具体的には、これまでの実施例でも説明したとおり、特定の格納場所に固有情報もしくは登録履歴が格納されているか否かに基づいて判定を行うようにすればよい。
ステップS32は、この登録有無判定段階S31における判定結果に基づく分岐処理である。すなわち、登録有無判定段階S31において肯定的判定がなされたときには、ステップS32からステップS33へと進み提示処理段階が実行され、否定的判定がなされたときには、ステップS32からステップS34へと進み登録処理段階が実行される。ここに示す実施形態の場合、このコンピュータにおいて当該特定のアプリケーションプログラムを初めて起動すると、ステップS34の登録処理段階が行われ、当該特定のアプリケーションプログラムを2回目以降に起動すると、ステップS33の提示処理段階が行われる。
そして、ステップS34の登録処理段階では、ユーザの指示に基づいて固有情報を入力し、当該特定のアプリケーションプログラムに対応づけて、入力した固有情報を所定の格納場所に格納する処理が行われる。一方、ステップS33の提示処理段階では、当該格納場所に当該特定のアプリケーションプログラムに対応づけて格納されている固有情報を取り出し、取り出した固有情報もしくはこれに基づいて生成した派生情報をユーザに提示する処理が行われる。これらの各処理の詳細は、既に述べたとおりである。こうして、ステップS34の登録処理段階もしくはステップS33の提示処理段階が完了した後、ステップS35の主処理段階において、当該特定のアプリケーションプログラム内の所定の主処理が実行される。
ステップS34の登録処理段階で、文字列、記号、画像、動画、音声もしくは振動またはこれらの組み合わせを固有情報として利用することができ、ステップS33の提示処理段階で、文字列、記号、画像、動画、音声もしくは振動またはこれらの組み合わせを固有情報もしくは派生情報として利用することができる点も、既に述べたとおりである。実用上は、前述したとおり、ステップS34の登録処理段階で、ユーザの指示に基づいて固有情報の入力を行う際に、当該固有情報が当該特定のアプリケーションプログラムの正当性を確認するために、次回以降の起動時にステップS33で実行される提示処理段階で利用される情報である旨の説明メッセージを提示するのが好ましい。
なお、§6−2において述べた監視プログラムを用いる変形例(図19参照)を実施する場合には、ステップS34における登録処理段階およびステップS33における提示処理段階の処理動作を監視する監視プログラムを用意し、この監視プログラムを実行することにより、登録処理段階で所定の格納場所に格納された固有情報を、別な格納場所にもコピーして格納する照合準備段階と、提示処理段階で提示された固有情報もしくは派生情報と、上記別な格納場所に格納されている固有情報もしくはこれに基づいて生成した派生情報とが合致するか否かを照合し、照合結果をユーザに報知する照合処理段階と、を更に行うようにすればよい。
また、図20には、同一のコンピュータによって全段階を実施する手順が示されているが、登録処理段階と提示処理段階とは、異なるコンピュータによって実施してもかまわない。前述したとおり、本発明は、パソコン、スマートフォン、電子タブレットなど、様々な電子機器として普及しているコンピュータを利用して実施することを想定している。そして、最近では、同一のユーザが、複数の電子機器を利用するケースも珍しくなくなってきており、複数の電子機器間で共通して利用可能な同一のアプリケーションプログラムも提供されている(もちろん、アプリケーションとして同一という意味であって、プログラム自体は、個々の電子機器用に開発された個別のプログラムになっている)。
このような事情を考慮すると、登録処理段階と提示処理段階とは、必ずしも同一のコンピュータ(電子機器)で行う必要はない。たとえば、パソコン、スマートフォン、電子タブレットを所有するユーザが、これら3台のコンピュータに同一のアプリケーションプログラムをそれぞれインストールして利用する形態を考えてみよう。この場合、当該ユーザが、パソコンにインストールされた当該アプリケーションプログラムの初回起動時に登録処理を行い、所定の共通格納場所(たとえば、ネットワークを介して接続される特定のサーバ装置内の格納場所)に固有情報を格納する作業を行っておけば、スマートフォンおよび電子タブレットについては、登録処理を省略することが可能である。
すなわち、上例の場合、スマートフォンや電子タブレットで当該アプリケーションプログラムが起動されたときには、登録有無判定段階において、既に、当該アプリケーションプログラムに関する登録処理が別のコンピュータ(パソコン)により実行されている、と判断して提示処理段階が行われるようにすればよい。もちろん、この提示処理段階では、パソコンの登録処理で利用された共通格納場所から固有情報を取り出して提示する処理が行われることになる。
このような実施形態を採れば、複数のコンピュータを所有するユーザは、特定のアプリケーションプログラムに関して、いずれか1つのコンピュータ(以下、登録用コンピュータという)で登録処理を実行しておけば、他のコンピュータ(以下、実行用コンピュータという)での登録処理を省略することができるので、個々のコンピュータについて個別に登録作業を繰り返す煩雑さから解放されることになる。
結局、上記実施形態を採用する場合は、登録用コンピュータが、ユーザの指示に基づいて固有情報を入力し、特定の実行用コンピュータと特定のアプリケーションプログラムとの組み合わせに対応づけて、入力した固有情報を所定の格納場所に格納する登録処理段階と、上記特定の実行用コンピュータが、上記特定のアプリケーションプログラムに対する起動指示を受けたときに、上記格納場所に上記特定の実行用コンピュータと上記特定のアプリケーションプログラムとの組み合わせに対応づけて格納されている固有情報を取り出し、取り出した固有情報もしくはこれに基づいて生成した派生情報をユーザに提示する提示処理段階と、上記特定の実行用コンピュータが、上記提示処理段階を実行した後に、上記特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階と、を行うようにすればよい。
<7−2.確認処理を行う実施形態>
続いて、§5で述べたコンピュータの使用環境についての確認処理を行う実施形態に対応するアプリケーションプログラムの実行方法の手順を、図21の流れ図を参照しながら説明する。図示のとおり、この手順は、登録有無判定段階S41,確認処理段階S43,登録処理段階S44,主処理段階S46という4つの段階によって構成される。いずれの段階も、パソコン、スマートフォン、電子タブレット等のコンピュータによって実行される段階である。以下、これらの各段階が、すべて同一のコンピュータによって実行されるケースについて説明する。
登録有無判定段階S41は、コンピュータが、特定のアプリケーションプログラムに対する起動指示を受けたときに、過去に当該特定のアプリケーションプログラムに関する登録処理段階が実行されているか否かを判定する段階である。具体的には、これまでの実施例でも説明したとおり、特定の格納場所に固有情報もしくは登録履歴が格納されているか否かに基づいて判定を行うようにすればよい。
ステップS42は、この登録有無判定段階S41における判定結果に基づく分岐処理である。すなわち、登録有無判定段階S41において肯定的判定がなされたときには、ステップS42からステップS43へと進み確認処理段階が実行され、否定的判定がなされたときには、ステップS42からステップS44へと進み登録処理段階が実行される。ここに示す実施形態の場合、このコンピュータにおいて当該特定のアプリケーションプログラムを初めて起動すると、ステップS44の登録処理段階が行われ、当該特定のアプリケーションプログラムを2回目以降に起動すると、ステップS43の確認処理段階が行われる。
ステップS44の登録処理段階では、ユーザの指示に基づいてコンピュータの使用環境に関する固有情報を入力し、当該特定のアプリケーションプログラムに対応づけて、入力した固有情報を所定の格納場所に格納する処理が行われる。一方、ステップS43の確認処理段階では、当該格納場所に当該特定のアプリケーションプログラムに対応づけて格納されている固有情報を取り出し、取り出した固有情報と当該コンピュータの使用環境とが合致するか否かを確認し、確認結果をユーザに報知する処理が行われる。これらの各処理の詳細は、既に§5で述べたとおりである。
ここで、ステップS44の登録処理段階が完了した後、もしくは、ステップS43の確認処理段階を実行して、ステップS45において合致が確認された場合には、ステップS46において、当該特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階が実行される。一方、ステップS45において合致が確認されなかった場合には、主処理が実行されることなしに、当該特定のアプリケーションプログラムは終了する。
ステップS44の登録処理段階で、ユーザの指示に基づいて、特定の方角を含む固有情報を入力し、これを所定の格納場所に格納し、ステップS43の確認処理段階で、当該固有情報に含まれている特定の方角と、コンピュータに備わっている方位センサが検出した当該コンピュータの地理的な向きと、が合致するか否かを確認し、確認結果をユーザに報知する処理を行うことが可能な点は、既に述べたとおりである。
また、ステップS44の登録処理段階で、ユーザの指示に基づいて、特定の角度を含む固有情報を入力し、これを所定の格納場所に格納し、ステップS43の確認処理段階で、当該固有情報に含まれている特定の角度と、コンピュータに備わっている加速度センサが検出した当該コンピュータの姿勢を示す角度と、が合致するか否かを確認し、確認結果をユーザに報知する処理を行うことが可能な点も、既に述べたとおりである。
実用上は、前述したとおり、ステップS44の登録処理段階で、ユーザの指示に基づいて固有情報の入力を行う際に、当該固有情報が当該特定のアプリケーションプログラムの正当性を確認するために、次回以降の起動時にステップS43で実行される確認処理段階で利用される情報である旨の説明メッセージを提示するのが好ましい。
また、図21には、同一のコンピュータによって全段階を実施する手順が示されているが、§7−1で述べた実施形態と同様に、登録処理段階と確認処理段階とは、異なるコンピュータによって実施してもかまわない。たとえば、上例と同様に、パソコン、スマートフォン、電子タブレットという3台のコンピュータを所有するユーザが、これら3台に同一のアプリケーションプログラムをそれぞれインストールして利用する場合、当該ユーザが、パソコンにインストールされた当該アプリケーションプログラムの初回起動時に登録処理を行い、所定の共通格納場所(たとえば、ネットワークを介して接続される特定のサーバ装置内の格納場所)にコンピュータの使用環境に関する固有情報を格納する作業を行っておけば、スマートフォンおよび電子タブレットについては、登録処理を省略することが可能である。
このような実施形態を採用する場合は、登録用コンピュータが、ユーザの指示に基づいてコンピュータの使用環境に関する固有情報を入力し、特定の実行用コンピュータと特定のアプリケーションプログラムとの組み合わせに対応づけて、入力した固有情報を所定の格納場所に格納する登録処理段階と、上記特定の実行用コンピュータが、上記特定のアプリケーションプログラムに対する起動指示を受けたときに、上記格納場所に上記特定の実行用コンピュータと上記特定のアプリケーションプログラムとの組み合わせに対応づけて格納されている固有情報を取り出し、取り出した固有情報と上記特定の実行用コンピュータの使用環境とが合致するか否かを確認し、確認結果をユーザに報知する確認処理段階と、上記特定の実行用コンピュータが、上記確認処理段階を実行して合致が確認された場合に、上記特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階と、を行うようにすればよい。
<7−3.いくつかの変形例>
以上、本発明をアプリケーションプログラムの実行方法として把握した場合について、§7−1では、提示処理を行う実施形態を説明し、§7−2では、確認処理を行う実施形態を説明した。ここでは、これらの実施形態に適用可能な変形例を説明する。
まず、上述したアプリケーションプログラムの実行方法においても、§6−3で述べたグループ定義を行う変形例が適用可能である。すなわち、登録処理段階で、同一のグループに所属する複数のアプリケーションプログラムについては、これら複数のアプリケーションプログラムに共通の固有情報を対応づけて格納する処理を行うようにすれば、ユーザは、個々のアプリケーションプログラムごとに登録作業を行う煩雑さから解放される。
また、登録処理段階で固有情報を格納する格納場所として、§4で述べたように、ネットワークを介して接続されたサーバ装置を利用することも可能である。すなわち、登録処理段階を実行中のコンピュータに対してネットワークを介して接続されたサーバ装置を格納場所として固有情報を格納した場合、提示処理段階もしくは確認処理段階では、当該サーバ装置に格納されている固有情報をネットワークを介して取り出すようにすればよい。特に、アプリケーションプログラムを実行する実行用コンピュータとは別なコンピュータを登録用コンピュータとして利用して登録処理段階を行う実施形態の場合、サーバ装置内の特定の格納場所を複数のコンピュータについての共通格納場所として利用すると便利である。
この場合、固有情報は必ずしも単一のサーバ装置に格納する必要はなく、複数のサーバ装置に分散させて格納するようにしてもかまわない。たとえば、登録すべき固有情報を複数n個の部分情報に分割し、これらを複数n箇所のサーバ装置に分散して格納するようにしても、分割方法および分散した格納先を登録履歴として残しておけば、提示処理段階もしくは確認処理段階では、この登録履歴に基づいて、分散格納されていたn個の部分情報を取り出して元の固有情報を復元して利用することができる。このように固有情報を分割し、複数のサーバ装置に分散して格納するようにすると、固有情報の秘匿性が向上するメリットが得られる。
なお、登録処理段階は、必ずしも当該登録処理の対象となるアプリケーションプログラム内の登録処理ルーチンを用いて実行する必要はなく、任意のアプリケーションプログラムを利用して登録処理を実行することが可能である。たとえば、上例のように、ネットワークを介して接続されたサーバ装置を格納場所として利用する場合であれば、登録用コンピュータにインストールされたWebブラウザプログラムもしくは電子メールプログラムを利用して、登録処理段階を実行することも可能である。
たとえば、Webブラウザプログラムを利用して登録を行う場合は、所定のWebページに図6に例示するような登録用画面を表示し、当該Webページ上で、ユーザに任意の固有情報を入力してもらえばよい。一方、電子メールプログラムを利用して登録を行う場合は、ユーザに、予め定められた所定の書式に従って固有情報が記載された電子メールを送信してもらい、当該電子メールを受信したサーバ装置が、当該電子メールから、上記書式に応じて必要な情報を取り出し、これを格納場所に格納する処理を行えばよい。
もちろん、コンピュータ内のOSプログラムに登録処理段階を実行させる機能を持たせておくことも可能である。OSプログラムは、個々のアプリケーションプログラムのインストール処理を管理する機能を有しているので、OSプログラムに登録処理段階を実行させる運用を採る場合は、コンピュータにアプリケーションプログラムがインストールされたときに、当該アプリケーションプログラムに対応づけた固有情報を所定の格納場所に格納する登録処理段階が実行されるようにすることも可能である。
10:プログラム本体部
20:リソースデータ
30:補助ファイル
40:署名情報
50:偽のプログラム
100,100A:コンピュータ
101:文字列入力欄
102:文字列表示欄
103:確認ボタン
104:方角選択欄
105:方角登録欄
106:コンパス画像表示欄
107:確認ボタン
108:起動中表示
109A,109B:画像表示欄
111:登録ボタン
112:正常判定結果表示
113:異常判定結果表示
150:方位センサ
160:加速度センサ
200:OSプログラム
250:格納場所
260:外部メモリ
300,305,308:アプリケーションプログラム
310,315,318:起動処理ルーチン
320,325:主処理ルーチン
330,335:登録処理ルーチン
340:提示処理ルーチン
345:確認処理ルーチン
350:サイズ確認ルーチン
400:サーバ装置
500:監視プログラム
550:別な格納場所
A〜C,C′,C'':アプリケーションプログラム
E:使用環境
H:登録履歴
I:識別情報
N:インターネット
P1〜P4:固有情報
Q3:派生情報
R:確認結果
S11〜S46:流れ図の各ステップ
Sh:水平面
V:照合結果
θ:水平面に対する傾斜角度

Claims (39)

  1. コンピュータに、所定の主処理を実行させる主処理ルーチンと、
    コンピュータに、起動処理を実行させる起動処理ルーチンと、
    コンピュータに、ユーザの指示に基づいて固有情報を入力し、入力した固有情報を所定の格納場所に格納する登録処理を実行させる登録処理ルーチンと、
    コンピュータに、前記格納場所から前記固有情報を取り出し、取り出した前記固有情報もしくは取り出した前記固有情報に基づいて生成した派生情報をユーザに提示する提示処理を実行させる提示処理ルーチンと、
    を有するアプリケーションプログラムであって、
    前記起動処理が、特定のコンピュータにおいて前記アプリケーションプログラムが起動されたときに、前記特定のコンピュータについて過去に前記登録処理が実行されていた場合には、前記特定のコンピュータに、前記提示処理と前記主処理とを実行させる処理であり、前記登録処理によって格納が行われるべき所定の格納場所に、前記固有情報が格納されているか否かに基づいて、過去に前記登録処理が実行されたか否かを判定する処理を含むことを特徴とするアプリケーションプログラム。
  2. コンピュータに、所定の主処理を実行させる主処理ルーチンと、
    コンピュータに、起動処理を実行させる起動処理ルーチンと、
    コンピュータに、ユーザの指示に基づいて固有情報を入力し、入力した固有情報を所定の格納場所に格納する登録処理を実行させる登録処理ルーチンと、
    コンピュータに、前記格納場所から前記固有情報を取り出し、取り出した前記固有情報もしくは取り出した前記固有情報に基づいて生成した派生情報をユーザに提示する提示処理を実行させる提示処理ルーチンと、
    を有するアプリケーションプログラムであって、
    前記起動処理が、特定のコンピュータにおいて前記アプリケーションプログラムが起動されたときに、前記特定のコンピュータについて過去に前記登録処理が実行されていた場合には、前記特定のコンピュータに、前記提示処理と前記主処理とを実行させる処理であり、
    前記登録処理が、特定のコンピュータについて前記固有情報を所定の格納場所に格納したことを登録履歴として記録する処理を含み、
    前記起動処理が、前記登録履歴の有無に基づいて、前記特定のコンピュータについて過去に前記登録処理が実行されたか否かを判定する処理を含むことを特徴とするアプリケーションプログラム。
  3. 請求項2に記載のアプリケーションプログラムにおいて、
    登録履歴の記録場所として、登録処理を実行する特定のコンピュータ内の不揮発性メモリ領域が設定されていることを特徴とするアプリケーションプログラム。
  4. 請求項1〜3のいずれかに記載のアプリケーションプログラムにおいて、
    登録処理が、ユーザの指示に基づいて、文字列、記号、画像、動画、音声もしくは振動を含む固有情報を入力し、これを所定の格納場所に格納する処理を含み、
    提示処理が、固有情報もしくは派生情報として、文字列、記号、画像、動画、音声もしくは振動またはこれらの組み合わせをユーザに提示する処理を含むことを特徴とするアプリケーションプログラム。
  5. 請求項1〜4のいずれかに記載のアプリケーションプログラムにおいて、
    登録処理が、ユーザの指示に基づいて、提示方法を含む固有情報を入力し、これを所定の格納場所に格納する処理を含み、
    提示処理が、文字列、記号、画像、動画、音声もしくは振動またはこれらの組み合わせを前記提示方法に基づいてユーザに提示する処理を含むことを特徴とするアプリケーションプログラム。
  6. 請求項1〜5のいずれかに記載のアプリケーションプログラムにおいて、
    登録処理が、固有情報の入力を行う際に、当該固有情報が前記アプリケーションプログラムの正当性を確認するための提示処理に利用される情報である旨の説明メッセージを提示する処理を含むことを特徴とするアプリケーションプログラム。
  7. 請求項1〜6のいずれかに記載のアプリケーションプログラムにおいて、
    起動処理が、特定のコンピュータにおいて前記アプリケーションプログラムが起動されたときに、前記特定のコンピュータについて過去に登録処理が実行されていた場合には、前記特定のコンピュータに、提示処理の実行後に主処理を実行させる処理であることを特徴とするアプリケーションプログラム。
  8. 請求項7に記載のアプリケーションプログラムにおいて、
    提示処理の実行後に所定の提示時間が経過した後、自動的に主処理が実行されることを特徴とするアプリケーションプログラム。
  9. 請求項7または8に記載のアプリケーションプログラムにおいて、
    提示処理の実行後に、ユーザによる所定の操作があったときに、主処理が実行されることを特徴とするアプリケーションプログラム。
  10. コンピュータに、所定の主処理を実行させる主処理ルーチンと、
    コンピュータに、起動処理を実行させる起動処理ルーチンと、
    コンピュータに、ユーザの指示に基づいてコンピュータの使用環境に関する固有情報を入力し、入力した固有情報を所定の格納場所に格納する登録処理を実行させる登録処理ルーチンと、
    コンピュータに、前記格納場所から前記固有情報を取り出し、取り出した前記固有情報と当該コンピュータの使用環境とが合致するか否かを確認し、確認結果をユーザに報知する確認処理を実行させる確認処理ルーチンと、
    を有するアプリケーションプログラムであって、
    前記起動処理が、特定のコンピュータにおいて前記アプリケーションプログラムが起動されたときに、前記特定のコンピュータについて過去に前記登録処理が実行されていた場合には、前記特定のコンピュータに、前記確認処理で合致が確認された場合にのみ前記主処理を実行させる処理であり、前記登録処理によって格納が行われるべき所定の格納場所に、前記固有情報が格納されているか否かに基づいて、過去に前記登録処理が実行されたか否かを判定する処理を含むことを特徴とするアプリケーションプログラム。
  11. コンピュータに、所定の主処理を実行させる主処理ルーチンと、
    コンピュータに、起動処理を実行させる起動処理ルーチンと、
    コンピュータに、ユーザの指示に基づいてコンピュータの使用環境に関する固有情報を入力し、入力した固有情報を所定の格納場所に格納する登録処理を実行させる登録処理ルーチンと、
    コンピュータに、前記格納場所から前記固有情報を取り出し、取り出した前記固有情報と当該コンピュータの使用環境とが合致するか否かを確認し、確認結果をユーザに報知する確認処理を実行させる確認処理ルーチンと、
    を有するアプリケーションプログラムであって、
    前記起動処理が、特定のコンピュータにおいて前記アプリケーションプログラムが起動されたときに、前記特定のコンピュータについて過去に前記登録処理が実行されていた場合には、前記特定のコンピュータに、前記確認処理で合致が確認された場合にのみ前記主処理を実行させる処理であり、
    前記登録処理が、特定のコンピュータについて前記固有情報を所定の格納場所に格納したことを登録履歴として記録する処理を含み、
    前記起動処理が、前記登録履歴の有無に基づいて、前記特定のコンピュータについて過去に前記登録処理が実行されたか否かを判定する処理を含むことを特徴とするアプリケーションプログラム。
  12. 請求項11に記載のアプリケーションプログラムにおいて、
    登録履歴の記録場所として、登録処理を実行する特定のコンピュータ内の不揮発性メモリ領域が設定されていることを特徴とするアプリケーションプログラム。
  13. 請求項10〜12のいずれかに記載のアプリケーションプログラムにおいて、
    登録処理が、ユーザの指示に基づいて、特定の方角を含む固有情報を入力し、これを所定の格納場所に格納する処理を含み、
    確認処理が、前記固有情報に含まれている前記特定の方角と、コンピュータに備わっている方位センサが検出した当該コンピュータの地理的な向きと、が合致するか否かを確認する処理を含むことを特徴とするアプリケーションプログラム。
  14. 請求項10〜12のいずれかに記載のアプリケーションプログラムにおいて、
    登録処理が、ユーザの指示に基づいて、特定の角度を含む固有情報を入力し、これを所定の格納場所に格納する処理を含み、
    確認処理が、前記固有情報に含まれている前記特定の角度と、コンピュータに備わっている加速度センサが検出した当該コンピュータの姿勢を示す角度と、が合致するか否かを確認する処理を含むことを特徴とするアプリケーションプログラム。
  15. 請求項10〜14のいずれかに記載のアプリケーションプログラムにおいて、
    登録処理が、固有情報の入力を行う際に、当該固有情報が前記アプリケーションプログラムの正当性を確認するための確認処理に利用される情報である旨の説明メッセージを提示する処理を含むことを特徴とするアプリケーションプログラム。
  16. 請求項1〜15のいずれかに記載のアプリケーションプログラムにおいて、
    登録処理が、ユーザの登録指示に基づいて実行されることを特徴とするアプリケーションプログラム。
  17. 請求項1〜15のいずれかに記載のアプリケーションプログラムにおいて、
    起動処理が、特定のコンピュータにおいて前記アプリケーションプログラムが起動されたときに、前記特定のコンピュータについて過去に登録処理が実行されていなかった場合には、前記特定のコンピュータに、登録処理の実行後に主処理を実行させる処理を含むことを特徴とするアプリケーションプログラム。
  18. 請求項1〜17のいずれかに記載のアプリケーションプログラムにおいて、
    起動処理が、前記アプリケーションプログラムと同一のグループに所属する別のプログラムによって固有情報が所定の場所に格納されているか否かに基づいて、もしくは、前記別のプログラムによって記録された登録履歴に基づいて、過去に登録処理が実行されたか否かを判定する処理を含むことを特徴とするアプリケーションプログラム。
  19. 請求項18に記載のアプリケーションプログラムにおいて、
    起動処理が、前記アプリケーションプログラムに対して旧バージョンの関係にあるアプリケーションプログラムによって固有情報が所定の場所に格納されているか否かに基づいて、もしくは、前記旧バージョンの関係にあるアプリケーションプログラムによって記録された登録履歴に基づいて、過去に登録処理が実行されたか否かを判定する処理を含むことを特徴とするアプリケーションプログラム。
  20. 請求項1〜19のいずれかに記載のアプリケーションプログラムにおいて、
    登録処理が、当該登録処理を実行中の特定のコンピュータ内の記憶装置もしくは当該特定のコンピュータに接続された外部の記憶装置を格納場所として固有情報を格納する処理を含み、
    提示処理もしくは確認処理が、前記いずれかの記憶装置に格納されている前記固有情報を取り出す処理を含むことを特徴とするアプリケーションプログラム。
  21. 請求項1〜19のいずれかに記載のアプリケーションプログラムにおいて、
    登録処理が、当該登録処理を実行中の特定のコンピュータに対してネットワークを介して接続されたサーバ装置を格納場所として固有情報を格納する処理を含み、
    提示処理もしくは確認処理が、前記サーバ装置に格納されている前記固有情報をネットワークを介して取り出す処理を含むことを特徴とするアプリケーションプログラム。
  22. 請求項21に記載のアプリケーションプログラムにおいて、
    登録処理が、当該登録処理を実行中の特定のコンピュータもしくは当該特定のコンピュータを利用している特定のユーザを識別するための識別情報に対応づけて、登録処理の対象となる固有情報をサーバ装置に格納する処理を含み、
    提示処理もしくは確認処理が、前記識別情報を利用して、前記識別情報に対応づけて格納されている前記固有情報を取り出す処理を含むことを特徴とするアプリケーションプログラム。
  23. 請求項1〜22のいずれかに記載のアプリケーションプログラムにおいて、
    コンピュータに、前記アプリケーションプログラムを構成するファイル全体のデータサイズを確認し、確認したデータサイズが予め設定されている設定サイズと一致するか否かを提示するサイズ確認処理を実行させるサイズ確認処理ルーチンを更に有することを特徴とするアプリケーションプログラム。
  24. 請求項1〜23のいずれかに記載のアプリケーションプログラムにおいて、
    主処理ルーチン、起動処理ルーチン、登録処理ルーチン、提示処理ルーチン、確認処理ルーチン、サイズ確認処理ルーチンのうち、前記アプリケーションプログラムに組み込まれているルーチンが、Android(登録商標)OSプログラムの下で動作するプログラムにより構成されていることを特徴とするアプリケーションプログラム。
  25. 請求項1〜24のいずれかに記載のアプリケーションプログラムを記録したコンピュータ読み取り可能な記録媒体または前記アプリケーションプログラムがインストールされたコンピュータ。
  26. コンピュータが、書換可能なメモリ領域にインストールされている特定のアプリケーションプログラムに対する起動指示を受けたときに、過去に前記特定のアプリケーションプログラムに関する登録処理段階が実行されているか否かを判定する登録有無判定段階と、
    前記登録有無判定段階において否定的判定がなされたときに、前記コンピュータが、前記特定のアプリケーションプログラムに従って、ユーザの指示に基づいて固有情報を入力し、前記特定のアプリケーションプログラムに対応づけて、入力した固有情報を所定の格納場所に格納する登録処理段階と、
    前記登録有無判定段階において肯定的判定がなされたときに、前記コンピュータが、前記特定のアプリケーションプログラムに従って、前記格納場所に前記特定のアプリケーションプログラムに対応づけて格納されている前記固有情報を取り出し、取り出した前記固有情報もしくは取り出した前記固有情報に基づいて生成した派生情報をユーザに提示する提示処理段階と、
    前記コンピュータが、前記登録処理段階もしくは前記提示処理段階を実行した後に、前記特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階と、
    を有することを特徴とするアプリケーションプログラムの実行方法。
  27. 登録用コンピュータが、ユーザの指示に基づいて固有情報を入力し、特定の実行用コンピュータと特定のアプリケーションプログラムとの組み合わせに対応づけて、入力した固有情報を所定の格納場所に格納する登録処理段階と、
    前記特定の実行用コンピュータが、書換可能なメモリ領域にインストールされている前記特定のアプリケーションプログラムに対する起動指示を受けたときに、前記特定のアプリケーションプログラムに従って、前記格納場所に前記特定の実行用コンピュータと前記特定のアプリケーションプログラムとの組み合わせに対応づけて格納されている前記固有情報を取り出し、取り出した前記固有情報もしくは取り出した前記固有情報に基づいて生成した派生情報をユーザに提示する提示処理段階と、
    前記特定の実行用コンピュータが、前記提示処理段階を実行した後に、前記特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階と、
    を有することを特徴とするアプリケーションプログラムの実行方法。
  28. 請求項26または27に記載のアプリケーションプログラムの実行方法において、
    登録処理段階で、文字列、記号、画像、動画、音声もしくは振動を含む固有情報を所定の格納場所に格納し、
    提示処理段階で、前記固有情報もしくは前記固有情報に基づいて生成した派生情報として、文字列、記号、画像、動画、音声もしくは振動またはこれらの組み合わせを提示することを特徴とするアプリケーションプログラムの実行方法。
  29. 請求項26〜28のいずれかに記載のアプリケーションプログラムの実行方法において、
    登録処理段階で、ユーザの指示に基づいて固有情報の入力を行う際に、当該固有情報が前記アプリケーションプログラムの正当性を確認するために提示処理段階で利用される情報である旨の説明メッセージを提示することを特徴とするアプリケーションプログラムの実行方法。
  30. 請求項26に記載のアプリケーションプログラムの実行方法において、
    アプリケーションプログラムによる登録処理段階および提示処理段階の処理動作を監視する監視プログラムを用意し、
    コンピュータが、前記監視プログラムを実行することにより、前記登録処理段階で所定の格納場所に格納された固有情報を、別な格納場所にもコピーして格納する照合準備段階と、
    コンピュータが、前記監視プログラムを実行することにより、前記提示処理段階で提示された固有情報もしくは派生情報と、前記別な格納場所に格納されている固有情報もしくはこれに基づいて生成した派生情報とが合致するか否かを照合し、照合結果をユーザに報知する照合処理段階と、
    を更に行うことを特徴とするアプリケーションプログラムの実行方法。
  31. コンピュータが、書換可能なメモリ領域にインストールされている特定のアプリケーションプログラムに対する起動指示を受けたときに、過去に前記特定のアプリケーションプログラムに関する登録処理段階が実行されているか否かを判定する登録有無判定段階と、
    前記登録有無判定段階において否定的判定がなされたときに、前記コンピュータが、前記特定のアプリケーションプログラムに従って、ユーザの指示に基づいてコンピュータの使用環境に関する固有情報を入力し、前記特定のアプリケーションプログラムに対応づけて、入力した固有情報を所定の格納場所に格納する登録処理段階と、
    前記登録有無判定段階において肯定的判定がなされたときに、前記コンピュータが、前記特定のアプリケーションプログラムに従って、前記格納場所に前記特定のアプリケーションプログラムに対応づけて格納されている前記固有情報を取り出し、取り出した前記固有情報と前記コンピュータの使用環境とが合致するか否かを確認し、確認結果をユーザに報知する確認処理段階と、
    前記コンピュータが、前記登録処理段階を実行した後に、もしくは、前記確認処理段階を実行して合致が確認されたときに、前記特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階と、
    を有することを特徴とするアプリケーションプログラムの実行方法。
  32. 登録用コンピュータが、ユーザの指示に基づいてコンピュータの使用環境に関する固有情報を入力し、特定の実行用コンピュータと特定のアプリケーションプログラムとの組み合わせに対応づけて、入力した固有情報を所定の格納場所に格納する登録処理段階と、
    前記特定の実行用コンピュータが、書換可能なメモリ領域にインストールされている前記特定のアプリケーションプログラムに対する起動指示を受けたときに、前記特定のアプリケーションプログラムに従って、前記格納場所に前記特定の実行用コンピュータと前記特定のアプリケーションプログラムとの組み合わせに対応づけて格納されている前記固有情報を取り出し、取り出した前記固有情報と前記特定の実行用コンピュータの使用環境とが合致するか否かを確認し、確認結果をユーザに報知する確認処理段階と、
    前記特定の実行用コンピュータが、前記確認処理段階を実行して合致が確認されたときに、前記特定のアプリケーションプログラム内の所定の主処理を実行する主処理段階と、
    を有することを特徴とするアプリケーションプログラムの実行方法。
  33. 請求項31または32に記載のアプリケーションプログラムの実行方法において、
    登録処理段階で、ユーザの指示に基づいて、特定の方角を含む固有情報を入力し、これを所定の格納場所に格納し、
    確認処理段階で、前記固有情報に含まれている前記特定の方角と、コンピュータに備わっている方位センサが検出した当該コンピュータの地理的な向きと、が合致するか否かを確認し、確認結果をユーザに報知することを特徴とするアプリケーションプログラムの実行方法。
  34. 請求項31または32に記載のアプリケーションプログラムの実行方法において、
    登録処理段階で、ユーザの指示に基づいて、特定の角度を含む固有情報を入力し、これを所定の格納場所に格納し、
    確認処理段階で、前記固有情報に含まれている前記特定の角度と、コンピュータに備わっている加速度センサが検出した当該コンピュータの姿勢を示す角度と、が合致するか否かを確認し、確認結果をユーザに報知することを特徴とするアプリケーションプログラムの実行方法。
  35. 請求項31〜34のいずれかに記載のアプリケーションプログラムの実行方法において、
    登録処理段階で、ユーザの指示に基づいて固有情報の入力を行う際に、当該固有情報が前記アプリケーションプログラムの正当性を確認するために確認処理段階で利用される情報である旨の説明メッセージを提示することを特徴とするアプリケーションプログラムの実行方法。
  36. 請求項26〜35のいずれかに記載のアプリケーションプログラムの実行方法において、
    登録処理段階で、同一のグループに所属する複数のアプリケーションプログラムについては、これら複数のアプリケーションプログラムに共通の固有情報を対応づけて格納する処理を行うことを特徴とするアプリケーションプログラムの実行方法。
  37. 請求項26〜36のいずれかに記載のアプリケーションプログラムの実行方法において、
    コンピュータにアプリケーションプログラムがインストールされたときに、当該アプリケーションプログラムに対応づけた固有情報を所定の格納場所に格納する登録処理段階が実行されることを特徴とするアプリケーションプログラムの実行方法。
  38. 請求項26〜37のいずれかに記載のアプリケーションプログラムの実行方法において、
    登録処理段階で、当該登録処理段階を実行中のコンピュータに対してネットワークを介して接続されたサーバ装置を格納場所として固有情報を格納し、
    提示処理段階もしくは確認処理段階で、前記サーバ装置に格納されている前記固有情報をネットワークを介して取り出すことを特徴とするアプリケーションプログラムの実行方法。
  39. 請求項38に記載のアプリケーションプログラムの実行方法において、
    Webブラウザプログラムもしくは電子メールプログラムを利用して、登録処理段階が実行されることを特徴とするアプリケーションプログラムの実行方法。
JP2013230920A 2013-11-07 2013-11-07 アプリケーションプログラムおよびその実行方法 Expired - Fee Related JP6322961B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013230920A JP6322961B2 (ja) 2013-11-07 2013-11-07 アプリケーションプログラムおよびその実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013230920A JP6322961B2 (ja) 2013-11-07 2013-11-07 アプリケーションプログラムおよびその実行方法

Publications (2)

Publication Number Publication Date
JP2015090640A JP2015090640A (ja) 2015-05-11
JP6322961B2 true JP6322961B2 (ja) 2018-05-16

Family

ID=53194118

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013230920A Expired - Fee Related JP6322961B2 (ja) 2013-11-07 2013-11-07 アプリケーションプログラムおよびその実行方法

Country Status (1)

Country Link
JP (1) JP6322961B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6747095B2 (ja) * 2016-06-24 2020-08-26 ブラザー工業株式会社 情報処理プログラムおよび情報処理装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2503291B2 (ja) * 1990-06-01 1996-06-05 シャープ株式会社 小型電子機器
JP2002351565A (ja) * 2001-05-23 2002-12-06 Interstate:Kk 不正使用防止システム、不正使用防止方法及び不正使用防止プログラム
JP4331914B2 (ja) * 2002-02-26 2009-09-16 シスメックス株式会社 プログラム管理方法
JP4475894B2 (ja) * 2002-08-01 2010-06-09 パナソニック株式会社 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法
JP4608964B2 (ja) * 2004-06-25 2011-01-12 富士通株式会社 モジュール更新プログラム
JP2006221546A (ja) * 2005-02-14 2006-08-24 Alps Electric Co Ltd 情報処理装置
JP2007148779A (ja) * 2005-11-28 2007-06-14 Renesas Technology Corp マイクロコントローラおよびram
JP5054177B2 (ja) * 2010-09-28 2012-10-24 楽天株式会社 認証システム、認証方法、認証装置、情報端末、プログラム及び情報記録媒体
JP2013191226A (ja) * 2013-05-17 2013-09-26 Ricoh Co Ltd 情報処理装置、ソフトウェア更新方法及び画像処理装置

Also Published As

Publication number Publication date
JP2015090640A (ja) 2015-05-11

Similar Documents

Publication Publication Date Title
JP5891414B2 (ja) 情報処理装置およびアプリケーション不正連携防止方法
JP6888011B2 (ja) 信頼できる実行環境を有するモバイル装置
CN109561085B (zh) 一种基于设备识别码的身份验证方法、服务器及介质
JP5821034B2 (ja) 情報処理装置、仮想マシン生成方法及びアプリ配信システム
CN109492378A (zh) 一种基于设备识别码的身份验证方法、服务器及介质
CN106295255B (zh) 应用程序的加固方法和装置
US9607156B2 (en) System and method for patching a device through exploitation
JP5126447B1 (ja) アプリケーションプログラムの実行方法
US20130055335A1 (en) Security enhancement methods and systems
CN104885092A (zh) 用于操作系统的安全系统和方法
US9483636B2 (en) Runtime application integrity protection
Petracca et al. {AWare}: Preventing Abuse of {Privacy-Sensitive} Sensors via Operation Bindings
US9344406B2 (en) Information processing device, information processing method, and computer program product
US20140026228A1 (en) Information processing apparatus and control method
KR101277517B1 (ko) 애플리케이션 위/변조 탐지장치 및 방법
CN111143869A (zh) 应用程序包处理方法、装置、电子设备及存储介质
CN109766152B (zh) 一种交互方法及装置
WO2014017118A1 (en) Information processing apparatus and control method
CN107077565A (zh) 一种安全指示信息的配置方法及设备
CN107341003B (zh) 定制系统实现方法、计算机设备和存储介质
KR20170067003A (ko) 트러스티드 실행 환경 기반의 어플리케이션 프로그램 보호 방법 및 시스템
JP4597568B2 (ja) セキュアデバイス、情報処理端末、及び情報処理システム
Hwang et al. Bittersweet adb: Attacks and defenses
JP2012008732A (ja) インストール制御装置およびプログラム
CN108985049A (zh) 防回滚方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160923

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171019

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180326

R150 Certificate of patent or registration of utility model

Ref document number: 6322961

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees