プログラム、端末装置、および認証システム
【課題】サービス利用時の安全性を向上させることができるプログラム、端末装置、および認証システムを提供する。
【解決手段】アプリケーションプログラム30は、認証情報を用いて認証を行うサーバへ認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成されたアプリケーション処理プログラム31と、サーバが認証を行った後、サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるためのアプリケーション処理プログラム31とを有する。
【解決手段】アプリケーションプログラム30は、認証情報を用いて認証を行うサーバへ認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成されたアプリケーション処理プログラム31と、サーバが認証を行った後、サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるためのアプリケーション処理プログラム31とを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータに所定の機能を実現させるためのプログラムに関する。また、本発明は、プログラムを読み込んで実行するコンピュータを含む端末装置、および端末装置とサーバとを備える認証システムにも関する。
【背景技術】
【0002】
スマートフォン向けの各種サービスの中には、ユーザ名やパスワード等の認証情報(認証子)を用いて認証を行い、端末やユーザを特定した上でサービスを提供するものがある。このようなサービスは、ターゲティング広告や、アプリケーションの利用統計調査サービス、メールサービス、コンテンツ決済サービスなど、多岐にわたる。認証手順では、正規のユーザではないユーザが、不正に改造されたOSや偽のアプリケーションを使用して正規のユーザになりすますことによって、プライバシーの漏洩や誤課金等のセキュリティリスクが存在する。このため、アプリケーションが正しいことを認証するクライアント認証は必須の技術となる。
【0003】
スマートフォンに適用される認証技術については、認証情報のほかに、端末で取得可能な情報を用いて認証を行う技術がある。例えば、特許文献1には、暗証番号と、端末に予め組み込まれている端末IDとを用いた認証技術が記載されている。また、特許文献2には、認証画面を撮影した画像から得られる端末識別情報等を携帯電話番号と共に用いた認証技術が記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−88053号公報
【特許文献2】特開2009−230432号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
メールサービスやコンテンツ決済サービス等の各種サービスを提供するアプリケーションのプログラムは、例えばJava(登録商標)言語で記述されるが、一般に、Java(登録商標)言語は、その仕様上、C言語等と比較して、リバースエンジニアリングへの耐性が低い。このため、実行コードを逆コンパイルして得られるコードの静的解析により、認証方式や認証手順の内容を容易に解析される脅威や、アプリケーションに組み込まれている認証情報を容易に詐称される脅威が存在し、サービス利用時の認証を安全に実現できない。
【0006】
本発明は、上述した課題に鑑みてなされたものであって、サービス利用時の安全性を向上させることができるプログラム、端末装置、および認証システムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するためになされたもので、認証情報を用いて認証を行うサーバへ前記認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、を備えたことを特徴とするプログラムである。
【0008】
また、本発明のプログラムにおいて、前記第1のプログラムは前記認証情報を含むことを特徴とする。
【0009】
また、本発明のプログラムにおいて、前記送信部は、前記サーバへ、前記認証情報と、前記認証情報とは異なる識別情報とを送信し、前記第1のプログラムは前記識別情報を含むことを特徴とする。
【0010】
また、本発明のプログラムにおいて、前記第1のプログラムは、前記送信部と、ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、前記第1のプログラムは前記第2のアドレス情報を含むことを特徴とする。
【0011】
また、本発明のプログラムにおいて、前記送信部は、前記サーバへ、前記認証情報と、ネットワークへの接続に使用しているアドレス情報とを送信することを特徴とする。
【0012】
また、本発明は、認証情報を用いて認証を行うサーバへ前記認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、を備えたことを特徴とするプログラムを読み込んで実行するコンピュータを含む端末装置である。
【0013】
また、本発明の端末装置において、前記第1のプログラムは前記認証情報を含むことを特徴とする。
【0014】
また、本発明の端末装置において、前記送信部は、前記サーバへ、前記認証情報と、前記認証情報とは異なる識別情報とを送信し、前記第1のプログラムは前記識別情報を含むことを特徴とする。
【0015】
また、本発明の端末装置において、前記第1のプログラムは、前記送信部と、ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、前記第1のプログラムは前記第2のアドレス情報を含むことを特徴とする。
【0016】
また、本発明の端末装置において、前記送信部は、前記サーバへ、前記認証情報と、ネットワークへの接続に使用しているアドレス情報とを送信することを特徴とする。
【0017】
また、本発明は、第1の認証情報を用いて認証を行うサーバと、前記サーバへ前記第1の認証情報を送信する端末装置とを備える認証システムであって、前記端末装置は、前記サーバへ前記第1の認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、を読み込んで実行するコンピュータを含み、前記サーバは、前記端末装置から前記第1の認証情報を受信する受信部と、前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合して認証を行う認証部と、を有することを特徴とする認証システムである。
【0018】
また、本発明の認証システムにおいて、前記第1のプログラムが前記第1の認証情報を含むことを特徴とする。
【0019】
また、本発明の認証システムにおいて、前記送信部は、前記サーバへ、前記第1の認証情報と、前記第1の認証情報とは異なる第1の識別情報とを送信し、前記第1のプログラムは前記第1の識別情報を含み、前記受信部は前記端末装置から前記第1の認証情報と前記第1の識別情報とを受信し、前記認証部は、前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合し、前記第1の識別情報と、第2の識別情報を記憶する前記記憶部に記憶されている前記第2の識別情報とを照合して認証を行うことを特徴とする。
【0020】
また、本発明の認証システムにおいて、前記第1のプログラムは、前記送信部と、ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、前記第1のプログラムは前記第2のアドレス情報を含むことを特徴とする。
【0021】
また、本発明の認証システムにおいて、前記送信部は、前記サーバへ、前記第1の認証情報と、ネットワークへの接続に使用している第1のアドレス情報とを送信し、前記受信部は前記端末装置から前記第1の認証情報と前記アドレス情報とを受信し、前記認証部は、前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合し、前記第1のアドレス情報と、第2のアドレス情報を記憶する前記記憶部に記憶されている前記第2のアドレス情報とを照合して認証を行うことを特徴とする。
【発明の効果】
【0022】
本発明によれば、認証情報を送信する送信部としてコンピュータを機能させるための第1のプログラムを、逆コンパイルが困難なネイティブコードで構成することによって、プログラムが本物(正規)であることを保証し、サービス利用時の安全性を向上させることができる。
【図面の簡単な説明】
【0023】
【図1】本発明の一実施形態による認証システムの構成を示すブロック図である。
【図2】本発明の一実施形態による端末の構成を示すブロック図である。
【図3】本発明の一実施形態におけるアプリケーションプログラムの構成を示す参考図である。
【図4】本発明の一実施形態におけるアプリケーションがハードウェアにアクセスする方法を示す参考図である。
【図5】本発明の一実施形態によるサーバの構成を示すブロック図である。
【図6】本発明の一実施形態における認証の手順を示すシーケンス図である。
【図7】本発明の一実施形態におけるアプリケーションプログラムの構成を示す参考図である。
【図8】本発明の一実施形態における認証の手順を示すシーケンス図である。
【図9】本発明の一実施形態におけるアプリケーションプログラムの構成を示す参考図である。
【図10】本発明の一実施形態における認証の手順を示すシーケンス図である。
【図11】本発明の一実施形態におけるアプリケーションプログラムの構成を示す参考図である。
【図12】本発明の一実施形態における認証の手順を示すシーケンス図である。
【図13】本発明の一実施形態における認証の手順を示すシーケンス図である。
【発明を実施するための形態】
【0024】
以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態による認証システムの構成を示している。認証を受ける端末1(端末装置)と、認証を行うサーバ2とで認証システムが構成されている。端末1は複数台存在していてもよい。
【0025】
図2は端末1の構成を示している。端末1は、CPU(Central Processing Unit)10、通信部11、表示部12、操作部13、メモリ14、および記憶部15を有する。CPU10は、記憶部15に格納されている各種のプログラムを読み出してメモリ14に読み込み、プログラムの各種命令に従って各種の演算を行い、端末1内の各部を制御する。通信部11は、外部の他の通信装置(本実施形態ではサーバ2)と通信を行う。表示部12は各種の情報を表示する。操作部13は、ユーザが操作する各種操作部材を有する。
【0026】
メモリ14は、記憶部15から読み込まれたプログラムや、CPU10が演算を行った結果等を一時的に記憶する揮発性メモリで構成されている。記憶部15は、CPU10の動作を規定する各種のプログラムや、認証に使用される認証情報、端末1内で処理される各種データ等を記憶する不揮発性メモリで構成されている。本実施形態の認証情報は、電話番号、メールアドレス、IMEI(International Mobile Equipment Identity)、IMSI(International Mobile Subscriber Identity)等である。本実施形態の端末1は、一例として、Android(登録商標)をOSに採用しているものとする。
【0027】
メモリ14上ではアプリケーション16が起動する。アプリケーション16は、サーバ2が提供するサービスの利用に関する各種処理をCPU10に実行させるためのプログラムである。アプリケーション16のプログラムは、アプリケーション処理部17(処理部)のプログラム(第2のプログラム)と認証処理部18(送信部、制御部)のプログラム(第1のプログラム)で構成されている。図2では、アプリケーション16のプログラムが記憶部15からメモリ14に読み込まれて、メモリ14上でアプリケーション処理部17と認証処理部18が起動している状態が示されている。メモリ14上で起動したアプリケーション処理部17と認証処理部18は、CPU10およびメモリ14の資源を利用して各種処理を行う。アプリケーション処理部17は、サーバ2が提供するサービスの利用に係る各種処理を行う。認証処理部18は、サービスの利用時に認証に係る各種処理を行う。
【0028】
図3は、アプリケーション16のプログラムであるアプリケーションプログラム30の構成を示している。アプリケーションプログラム30には、Java(登録商標)言語で記述されてコンパイルされたアプリケーション処理プログラム31(拡張子.dex)と、C言語で記述されてコンパイルされた認証処理プログラム32(拡張子.so)とが含まれる。アプリケーション処理プログラム31はアプリケーション処理部17のプログラムであり、認証処理プログラム32は認証処理部18のプログラムである。
【0029】
認証処理プログラム32は、逆コンパイルが困難なネイティブコード(機械語)で構成されている。認証処理プログラム32の作成の際、C言語で記述されたプログラムに高級言語レベルでの難読化を行った後、プログラムをコンパイルしてネイティブコードに変換し、ネイティブコードに低級言語レベルでの難読化を行うことが望ましい。サーバ2が認証に用いる認証情報を端末上で取得する機能および認証情報をサーバ2へ送信する機能を実現する認証処理プログラム32をネイティブコードで構成することによって、認証処理プログラム32が本物(正規)であることを保証し、安全性を向上させることができる。
【0030】
Android(登録商標)では、アプリケーション処理プログラム31と認証処理プログラム32は対になっており、認証処理プログラム32に対応して作成されたアプリケーション処理プログラム31からしか認証処理プログラム32を呼び出すことはできない仕組みが設けられている。したがって、拡張子.dexを有する偽のプログラムから不正に認証処理プログラム32を呼び出すことはできない。本実施形態では、認証処理プログラム32が本物であることが保証され、その認証処理プログラム32を呼び出すことができるのは本物のアプリケーション処理プログラム31だけなので、結果としてアプリケーション16の全体が本物であることを保証し、安全性を向上させることができる。
【0031】
図4は、アプリケーション処理部17と認証処理部18が端末内のハードウェアにアクセスする様子を示している。アプリケーション処理部17は、OSが提供する共通機能であるAPI(Application Program Interface)40および各ハードウェアに対応したデバイスドライバ41を介してハードウェア42(通信部11等に対応)にアクセスする。認証処理部18は、API40を介さずにデバイスドライバ41を介してハードウェア42にアクセスすることが可能である。デバイスドライバはハードウェア毎に異なるが、図4では個々のデバイスドライバを代表してデバイスドライバ41としている。
【0032】
上記のように拡張子.soのプログラムはAPIを介さずにハードウェアにアクセスするため、ハードウェアに高速にアクセスすることが可能である。この高速性に着目して、特定のハードウェアへの高速なアクセスが頻繁に発生するゲーム等のアプリケーションでは、拡張子.dexのプログラムと拡張子.soのプログラムを組み合わせた仕組みが利用されている。本実施形態では、この仕組みを認証処理に応用している。OSが不正に改造されると、APIを介して取得される認証情報は信頼できなくなるが、本実施形態では認証処理部18がAPI40を介さずにハードウェア42にアクセスするため、認証情報の本物性を保証することができる。
【0033】
図5はサーバ2の構成を示している。サーバ2は、CPU20、通信部21、メモリ22、および記憶部23を有する。CPU20は、記憶部23に格納されている各種のプログラムを読み出してメモリ22に読み込み、プログラムの各種命令に従って各種の演算を行い、サーバ2内の各部を制御する。通信部21は、外部の他の通信装置(本実施形態では端末1)と通信を行う。メモリ22は、記憶部23から読み込まれたプログラムや、CPU20が演算を行った結果等を一時的に記憶する揮発性メモリで構成されている。記憶部23は、CPU20の動作を規定する各種のプログラムや、サーバ2内で処理される各種データを記憶する不揮発性メモリで構成されている。
【0034】
メモリ22上では認証処理部24(受信部、認証部)が起動する。認証処理部24は、認証に係る各種処理をCPU20に実行させるためのプログラムである。図5では、認証処理部24のプログラムが記憶部23からメモリ22に読み込まれて、メモリ22上で認証処理部24が起動している状態が示されている。メモリ22上で起動した認証処理部24は、CPU20およびメモリ22の資源を利用して各種処理を行う。
【0035】
<第1の動作例>
次に、認証時の端末1とサーバ2の動作を説明する。まず、図6を参照し、第1の動作例を説明する。図6は、第1の動作例における認証の手順を示している。サービスの利用開始時に端末1のアプリケーション処理部17は、サーバ2にサービスの利用を要求するためのサービス利用要求を、通信部11を介してサーバ2へ送信する(ステップS100)。サーバ2の認証処理部24は、通信部21を介してサービス利用要求を受信する。認証処理部24は、サービス利用要求に基づいて、端末1に認証情報の送信を要求するための認証情報要求を、通信部21を介して、サービス利用要求の送信元である端末1へ送信する(ステップS105)。また、認証処理部24は、サービス利用要求のパケットに含まれる送信元のIPアドレスと関連付けたタイマーを起動し、時間の計測を開始する。
【0036】
端末1のアプリケーション処理部17は、通信部11を介して認証情報要求を受信する。アプリケーション処理部17は、認証情報要求に基づいて、認証処理部18に認証処理を依頼する(ステップS110)。依頼を受けた認証処理部18は、デバイスドライバ41に認証情報の取得を依頼し(ステップS115)、記憶部15にアクセスしたデバイスドライバ41から認証情報を取得する(ステップS120)。
【0037】
認証処理部18は、取得した認証情報を、通信部11を介してサーバ2へ送信する(ステップS125)。サーバ2の認証処理部24は、通信部21を介して認証情報を受信する。認証情報の通信には、https(Hypertext Transfer Protocol over Secure Socket Layer)等の暗号通信路が用いられる。
【0038】
認証処理部24は、認証情報のパケットに含まれる送信元のIPアドレスが、サービス利用要求のパケットに含まれる送信元のIPアドレスと一致するか否かを判定し、両者が一致した場合、そのIPアドレスに関連付けられているタイマーが計測している時間が所定の時間以内であるか否かを判定する。タイマーが計測している時間が所定の時間を超えている場合、認証に失敗する。このように、端末1からの認証情報の送信監視に制限時間を設けているのは、サーバ2が認証情報の送信監視に必要以上の負荷をかけないようにするためである。タイマーが計測している時間が所定の時間以内であった場合、以下のように認証情報を用いた認証が行われる。
【0039】
記憶部23には、端末1のサービス加入時等に予め登録された認証情報が格納されている。認証処理部24は、記憶部23から認証情報を読み出し、端末1から受信した認証情報と照合を行う(ステップS130)。端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれかと一致した場合は認証に成功し、端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれとも一致しなかった場合は認証に失敗する。
【0040】
認証に成功した場合、認証処理部24は、認証に成功したことを知らせる認証結果通知を、通信部21を介して、サービス利用要求の送信元である端末1へ送信する(ステップS135)。端末1のアプリケーション処理部17は、通信部11を介して認証結果通知を受信し、認証結果通知に基づいて、サービスの利用に係る各種処理を行う。例えば、アプリケーション処理部17は、サービスの利用に必要な情報をサーバ2と通信したり、サービスの利用状態や利用結果等を表示部12に表示したり、操作部13を介して入力される情報を処理したりする。
【0041】
<第2の動作例>
次に、第2の動作例を説明する。第2の動作例では、図7に示すように、認証処理プログラム32に電話番号等の認証情報が組み込まれて(埋め込まれて)いる。認証処理プログラム32の作成時に、認証情報が記載されたソースコードがコンパイルされ、認証処理プログラム32に認証情報が組み込まれる。図8は、第1の動作例における認証の手順を示している。以下では、第1の動作例と異なる部分のみを説明する。
【0042】
アプリケーション処理部17から認証処理の依頼を受けると(ステップS110)、認証処理部18は認証処理プログラム32中の認証情報を、通信部11を介してサーバ2へ送信する(ステップS140)。以降の動作は第1の動作例と同様である。
【0043】
上記のように第2の動作例では認証情報が認証処理プログラム32に組み込まれているため、認証情報を取得するための記憶部15へのアクセスが発生せず、より安全性が向上する。第2の動作例における認証情報は、記憶部15に格納されている電話番号等の情報と同一の情報でなくてもよく、アプリケーション16の作成者(サービス提供者)がアプリケーション16毎に割り当てた固有の情報であってもよい。
【0044】
<第3の動作例>
次に、第3の動作例を説明する。第3の動作例では、図9に示すように、アプリケーションプログラム30(アプリケーション16)を識別する識別情報が認証処理プログラム32に組み込まれて(埋め込まれて)いる。識別情報は認証情報とは異なる情報であるが、異なる端末に与えられる複数のアプリケーションプログラム間で共通であってもよい。図10は、第3の動作例における認証の手順を示している。以下では、第1の動作例と異なる部分のみを説明する。
【0045】
アプリケーション処理部17から認証処理の依頼を受けると(ステップS110)、認証処理部18は、デバイスドライバ41を介して記憶部15から認証情報を取得し(ステップS115,S120)、取得した認証情報と認証処理プログラム32中の識別情報とを、通信部11を介してサーバ2へ送信する(ステップS145)。サーバ2の認証処理部24は、通信部21を介して認証情報および識別情報を受信する。タイマーが計測している時間の確認が行われた後、以下のように認証情報および識別情報を用いた認証が行われる。
【0046】
記憶部23には、予め登録された識別情報が認証情報と共に格納されている。認証処理部24は、記憶部23から認証情報を読み出し、端末1から受信した認証情報と照合を行うと共に、記憶部23から識別情報を読み出し、端末1から受信した識別情報と照合を行う(ステップS150)。端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれかと一致すると共に、端末1から受信した識別情報が、記憶部23に格納されている識別情報のいずれかと一致した場合は認証に成功する。また、端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれとも一致しなかった場合、または、端末1から受信した識別情報が、記憶部23に格納されている識別情報のいずれとも一致しなかった場合は認証に失敗する。以降の動作は第1の動作例と同様である。
【0047】
上記のように第3の動作例では、認証情報を用いた認証が行われると共に、識別情報を用いた認証が行われる。識別情報を用いた認証に成功した場合、認証情報を送信した端末1のアプリケーションプログラム30(アプリケーション16)が本物(正規)であることをサーバ2が確認することができるため、より安全性が向上する。第3の動作例は第2の動作例と組み合わせてもよい。
【0048】
<第4の動作例>
次に、第4の動作例を説明する。第4の動作例では、第三世代携帯電話方式の3G回線でネットワークに接続するときのIPアドレスの確認が行われる。図11に示すように、通信キャリアが3G回線で使用しているIPアドレスの範囲を示す範囲情報が認証処理プログラム32に組み込まれて(埋め込まれて)いる。認証処理プログラム32の作成時に、範囲情報が記載されたソースコードがコンパイルされ、認証処理プログラム32に範囲情報が組み込まれる。図12は、第4の動作例における認証の手順を示している。以下では、第1の動作例と異なる部分のみを説明する。
【0049】
アプリケーション処理部17から認証処理の依頼を受けると(ステップS110)、認証処理部18は、認証情報と、ネットワークへの接続に使用しているIPアドレスとの取得をデバイスドライバ41に依頼し(ステップS155)、記憶部15にアクセスしたデバイスドライバ41から認証情報を取得し、通信部11にアクセスしたデバイスドライバ41からIPアドレスを取得する(ステップS160)。
【0050】
認証処理部18は、取得したIPアドレスを用いて認証情報の送信制御を行う。具体的には、認証処理部18は、取得したIPアドレスを認証処理プログラム32中の範囲情報と比較し、取得したIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれるか否かを判定する。端末1が3G回線でネットワークに接続する場合、ハードウェアである通信部11のROM(Read Only Memory)に格納されているプログラムによる制御に従って、通信キャリアのサーバとの間で認証が行われ、認証が正しく行われると、端末1はネットワークへの接続が許可される。通信部11のROMに格納されているプログラムの改造は困難であるので、3G回線の通信キャリアによる認証を受けてネットワークに接続している端末1がサーバ2へ送信する認証情報の本物性が保証され、より安全性が向上する。
【0051】
取得したIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれない場合、認証処理部18は認証を中止する。また、取得したIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれる場合、第1の動作例と同様に認証情報がサーバ2へ送信される。以降の動作は第1の動作例と同様である。取得したIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれる場合、そのことを明示する情報をサーバ2へ通知し、サーバ2は、この情報が端末1から受信されなかったら認証を中止し、この情報が端末1から受信されたら認証を継続してもよい。第4の動作例は、第2の動作例または第3の動作例と組み合わせてもよい。
【0052】
<第5の動作例>
次に、第5の動作例を説明する。第5の動作例では、IPアドレスの確認がサーバ2で行われる。図13は、第5の動作例における認証の手順を示している。以下では、第1の動作例と異なる部分のみを説明する。
【0053】
ステップS105でサーバ2へ送信されるサービス利用要求のパケットおよびステップS125でサーバ2へ送信される認証情報のパケットには端末1のIPアドレスが含まれるが、このIPアドレスは、認証処理部18がデバイスドライバ41を介して通信部11から取得したものである。サーバ2の記憶部23には、通信キャリアが3G回線で使用しているIPアドレスの範囲を示す範囲情報が認証情報と共に格納されている。
【0054】
認証処理部24は、記憶部23から認証情報を読み出し、端末1から受信した認証情報と照合を行うと共に、記憶部23から範囲情報を読み出し、端末1から受信した認証情報のパケットに含まれるIPアドレスと照合を行う(ステップS165)。端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれかと一致すると共に、端末1から受信した認証情報のパケットに含まれるIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれる場合は認証に成功する。また、端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれとも一致しなかった場合、または、端末1から受信した認証情報のパケットに含まれるIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれない場合は認証に失敗する。以降の動作は第1の動作例と同様である。第5の動作例は、第2の動作例または第3の動作例と組み合わせてもよい。
【0055】
上述したように、本実施形態によれば、認証処理を行う認証処理プログラム32を、逆コンパイルが困難なネイティブコードで構成することによって、アプリケーションプログラム30が本物(正規)であることを保証し、サービス利用時の安全性を向上させることができる。
【0056】
また、サーバ2へ送信される認証情報を認証処理プログラム32に予め組み込むことによって、認証情報の取得のための記憶部15へのアクセスが発生せず、サービス利用時の安全性をより向上させることができる。
【0057】
また、認証情報を用いた認証と、アプリケーションプログラム30(アプリケーション16)を識別する識別情報を用いた認証とを組み合わせることによって、アプリケーションプログラム30(アプリケーション16)が本物(正規)であることを保証し、サービス利用時の安全性をより向上させることができる。
【0058】
また、認証情報を用いた認証と、3G回線でネットワークに接続するときのIPアドレスの確認とを組み合わせることによって、3G回線の通信キャリアによる認証を受けた端末1がサーバ2へ送信する認証情報の本物性を保証し、サービス利用時の安全性をより向上させることができる。
【0059】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、上記ではOSにAndroid(登録商標)が採用されている場合の実施形態を説明したが、OSの形態によらず、アプリケーションプログラムが、APIを介してハードウェアにアクセスするプログラムと、APIを介さずにハードウェアにアクセスするプログラムとで構成される場合に、上記の実施形態を同様に適用することが可能である。
【符号の説明】
【0060】
1・・・端末、2・・・サーバ、10,20・・・CPU、11,21・・・通信部、12・・・表示部、13・・・操作部、14,22・・・メモリ、15,23・・・記憶部、16・・・アプリケーション、17・・・アプリケーション処理部、18,24・・・認証処理部
【技術分野】
【0001】
本発明は、コンピュータに所定の機能を実現させるためのプログラムに関する。また、本発明は、プログラムを読み込んで実行するコンピュータを含む端末装置、および端末装置とサーバとを備える認証システムにも関する。
【背景技術】
【0002】
スマートフォン向けの各種サービスの中には、ユーザ名やパスワード等の認証情報(認証子)を用いて認証を行い、端末やユーザを特定した上でサービスを提供するものがある。このようなサービスは、ターゲティング広告や、アプリケーションの利用統計調査サービス、メールサービス、コンテンツ決済サービスなど、多岐にわたる。認証手順では、正規のユーザではないユーザが、不正に改造されたOSや偽のアプリケーションを使用して正規のユーザになりすますことによって、プライバシーの漏洩や誤課金等のセキュリティリスクが存在する。このため、アプリケーションが正しいことを認証するクライアント認証は必須の技術となる。
【0003】
スマートフォンに適用される認証技術については、認証情報のほかに、端末で取得可能な情報を用いて認証を行う技術がある。例えば、特許文献1には、暗証番号と、端末に予め組み込まれている端末IDとを用いた認証技術が記載されている。また、特許文献2には、認証画面を撮影した画像から得られる端末識別情報等を携帯電話番号と共に用いた認証技術が記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−88053号公報
【特許文献2】特開2009−230432号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
メールサービスやコンテンツ決済サービス等の各種サービスを提供するアプリケーションのプログラムは、例えばJava(登録商標)言語で記述されるが、一般に、Java(登録商標)言語は、その仕様上、C言語等と比較して、リバースエンジニアリングへの耐性が低い。このため、実行コードを逆コンパイルして得られるコードの静的解析により、認証方式や認証手順の内容を容易に解析される脅威や、アプリケーションに組み込まれている認証情報を容易に詐称される脅威が存在し、サービス利用時の認証を安全に実現できない。
【0006】
本発明は、上述した課題に鑑みてなされたものであって、サービス利用時の安全性を向上させることができるプログラム、端末装置、および認証システムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するためになされたもので、認証情報を用いて認証を行うサーバへ前記認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、を備えたことを特徴とするプログラムである。
【0008】
また、本発明のプログラムにおいて、前記第1のプログラムは前記認証情報を含むことを特徴とする。
【0009】
また、本発明のプログラムにおいて、前記送信部は、前記サーバへ、前記認証情報と、前記認証情報とは異なる識別情報とを送信し、前記第1のプログラムは前記識別情報を含むことを特徴とする。
【0010】
また、本発明のプログラムにおいて、前記第1のプログラムは、前記送信部と、ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、前記第1のプログラムは前記第2のアドレス情報を含むことを特徴とする。
【0011】
また、本発明のプログラムにおいて、前記送信部は、前記サーバへ、前記認証情報と、ネットワークへの接続に使用しているアドレス情報とを送信することを特徴とする。
【0012】
また、本発明は、認証情報を用いて認証を行うサーバへ前記認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、を備えたことを特徴とするプログラムを読み込んで実行するコンピュータを含む端末装置である。
【0013】
また、本発明の端末装置において、前記第1のプログラムは前記認証情報を含むことを特徴とする。
【0014】
また、本発明の端末装置において、前記送信部は、前記サーバへ、前記認証情報と、前記認証情報とは異なる識別情報とを送信し、前記第1のプログラムは前記識別情報を含むことを特徴とする。
【0015】
また、本発明の端末装置において、前記第1のプログラムは、前記送信部と、ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、前記第1のプログラムは前記第2のアドレス情報を含むことを特徴とする。
【0016】
また、本発明の端末装置において、前記送信部は、前記サーバへ、前記認証情報と、ネットワークへの接続に使用しているアドレス情報とを送信することを特徴とする。
【0017】
また、本発明は、第1の認証情報を用いて認証を行うサーバと、前記サーバへ前記第1の認証情報を送信する端末装置とを備える認証システムであって、前記端末装置は、前記サーバへ前記第1の認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、を読み込んで実行するコンピュータを含み、前記サーバは、前記端末装置から前記第1の認証情報を受信する受信部と、前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合して認証を行う認証部と、を有することを特徴とする認証システムである。
【0018】
また、本発明の認証システムにおいて、前記第1のプログラムが前記第1の認証情報を含むことを特徴とする。
【0019】
また、本発明の認証システムにおいて、前記送信部は、前記サーバへ、前記第1の認証情報と、前記第1の認証情報とは異なる第1の識別情報とを送信し、前記第1のプログラムは前記第1の識別情報を含み、前記受信部は前記端末装置から前記第1の認証情報と前記第1の識別情報とを受信し、前記認証部は、前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合し、前記第1の識別情報と、第2の識別情報を記憶する前記記憶部に記憶されている前記第2の識別情報とを照合して認証を行うことを特徴とする。
【0020】
また、本発明の認証システムにおいて、前記第1のプログラムは、前記送信部と、ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、前記第1のプログラムは前記第2のアドレス情報を含むことを特徴とする。
【0021】
また、本発明の認証システムにおいて、前記送信部は、前記サーバへ、前記第1の認証情報と、ネットワークへの接続に使用している第1のアドレス情報とを送信し、前記受信部は前記端末装置から前記第1の認証情報と前記アドレス情報とを受信し、前記認証部は、前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合し、前記第1のアドレス情報と、第2のアドレス情報を記憶する前記記憶部に記憶されている前記第2のアドレス情報とを照合して認証を行うことを特徴とする。
【発明の効果】
【0022】
本発明によれば、認証情報を送信する送信部としてコンピュータを機能させるための第1のプログラムを、逆コンパイルが困難なネイティブコードで構成することによって、プログラムが本物(正規)であることを保証し、サービス利用時の安全性を向上させることができる。
【図面の簡単な説明】
【0023】
【図1】本発明の一実施形態による認証システムの構成を示すブロック図である。
【図2】本発明の一実施形態による端末の構成を示すブロック図である。
【図3】本発明の一実施形態におけるアプリケーションプログラムの構成を示す参考図である。
【図4】本発明の一実施形態におけるアプリケーションがハードウェアにアクセスする方法を示す参考図である。
【図5】本発明の一実施形態によるサーバの構成を示すブロック図である。
【図6】本発明の一実施形態における認証の手順を示すシーケンス図である。
【図7】本発明の一実施形態におけるアプリケーションプログラムの構成を示す参考図である。
【図8】本発明の一実施形態における認証の手順を示すシーケンス図である。
【図9】本発明の一実施形態におけるアプリケーションプログラムの構成を示す参考図である。
【図10】本発明の一実施形態における認証の手順を示すシーケンス図である。
【図11】本発明の一実施形態におけるアプリケーションプログラムの構成を示す参考図である。
【図12】本発明の一実施形態における認証の手順を示すシーケンス図である。
【図13】本発明の一実施形態における認証の手順を示すシーケンス図である。
【発明を実施するための形態】
【0024】
以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態による認証システムの構成を示している。認証を受ける端末1(端末装置)と、認証を行うサーバ2とで認証システムが構成されている。端末1は複数台存在していてもよい。
【0025】
図2は端末1の構成を示している。端末1は、CPU(Central Processing Unit)10、通信部11、表示部12、操作部13、メモリ14、および記憶部15を有する。CPU10は、記憶部15に格納されている各種のプログラムを読み出してメモリ14に読み込み、プログラムの各種命令に従って各種の演算を行い、端末1内の各部を制御する。通信部11は、外部の他の通信装置(本実施形態ではサーバ2)と通信を行う。表示部12は各種の情報を表示する。操作部13は、ユーザが操作する各種操作部材を有する。
【0026】
メモリ14は、記憶部15から読み込まれたプログラムや、CPU10が演算を行った結果等を一時的に記憶する揮発性メモリで構成されている。記憶部15は、CPU10の動作を規定する各種のプログラムや、認証に使用される認証情報、端末1内で処理される各種データ等を記憶する不揮発性メモリで構成されている。本実施形態の認証情報は、電話番号、メールアドレス、IMEI(International Mobile Equipment Identity)、IMSI(International Mobile Subscriber Identity)等である。本実施形態の端末1は、一例として、Android(登録商標)をOSに採用しているものとする。
【0027】
メモリ14上ではアプリケーション16が起動する。アプリケーション16は、サーバ2が提供するサービスの利用に関する各種処理をCPU10に実行させるためのプログラムである。アプリケーション16のプログラムは、アプリケーション処理部17(処理部)のプログラム(第2のプログラム)と認証処理部18(送信部、制御部)のプログラム(第1のプログラム)で構成されている。図2では、アプリケーション16のプログラムが記憶部15からメモリ14に読み込まれて、メモリ14上でアプリケーション処理部17と認証処理部18が起動している状態が示されている。メモリ14上で起動したアプリケーション処理部17と認証処理部18は、CPU10およびメモリ14の資源を利用して各種処理を行う。アプリケーション処理部17は、サーバ2が提供するサービスの利用に係る各種処理を行う。認証処理部18は、サービスの利用時に認証に係る各種処理を行う。
【0028】
図3は、アプリケーション16のプログラムであるアプリケーションプログラム30の構成を示している。アプリケーションプログラム30には、Java(登録商標)言語で記述されてコンパイルされたアプリケーション処理プログラム31(拡張子.dex)と、C言語で記述されてコンパイルされた認証処理プログラム32(拡張子.so)とが含まれる。アプリケーション処理プログラム31はアプリケーション処理部17のプログラムであり、認証処理プログラム32は認証処理部18のプログラムである。
【0029】
認証処理プログラム32は、逆コンパイルが困難なネイティブコード(機械語)で構成されている。認証処理プログラム32の作成の際、C言語で記述されたプログラムに高級言語レベルでの難読化を行った後、プログラムをコンパイルしてネイティブコードに変換し、ネイティブコードに低級言語レベルでの難読化を行うことが望ましい。サーバ2が認証に用いる認証情報を端末上で取得する機能および認証情報をサーバ2へ送信する機能を実現する認証処理プログラム32をネイティブコードで構成することによって、認証処理プログラム32が本物(正規)であることを保証し、安全性を向上させることができる。
【0030】
Android(登録商標)では、アプリケーション処理プログラム31と認証処理プログラム32は対になっており、認証処理プログラム32に対応して作成されたアプリケーション処理プログラム31からしか認証処理プログラム32を呼び出すことはできない仕組みが設けられている。したがって、拡張子.dexを有する偽のプログラムから不正に認証処理プログラム32を呼び出すことはできない。本実施形態では、認証処理プログラム32が本物であることが保証され、その認証処理プログラム32を呼び出すことができるのは本物のアプリケーション処理プログラム31だけなので、結果としてアプリケーション16の全体が本物であることを保証し、安全性を向上させることができる。
【0031】
図4は、アプリケーション処理部17と認証処理部18が端末内のハードウェアにアクセスする様子を示している。アプリケーション処理部17は、OSが提供する共通機能であるAPI(Application Program Interface)40および各ハードウェアに対応したデバイスドライバ41を介してハードウェア42(通信部11等に対応)にアクセスする。認証処理部18は、API40を介さずにデバイスドライバ41を介してハードウェア42にアクセスすることが可能である。デバイスドライバはハードウェア毎に異なるが、図4では個々のデバイスドライバを代表してデバイスドライバ41としている。
【0032】
上記のように拡張子.soのプログラムはAPIを介さずにハードウェアにアクセスするため、ハードウェアに高速にアクセスすることが可能である。この高速性に着目して、特定のハードウェアへの高速なアクセスが頻繁に発生するゲーム等のアプリケーションでは、拡張子.dexのプログラムと拡張子.soのプログラムを組み合わせた仕組みが利用されている。本実施形態では、この仕組みを認証処理に応用している。OSが不正に改造されると、APIを介して取得される認証情報は信頼できなくなるが、本実施形態では認証処理部18がAPI40を介さずにハードウェア42にアクセスするため、認証情報の本物性を保証することができる。
【0033】
図5はサーバ2の構成を示している。サーバ2は、CPU20、通信部21、メモリ22、および記憶部23を有する。CPU20は、記憶部23に格納されている各種のプログラムを読み出してメモリ22に読み込み、プログラムの各種命令に従って各種の演算を行い、サーバ2内の各部を制御する。通信部21は、外部の他の通信装置(本実施形態では端末1)と通信を行う。メモリ22は、記憶部23から読み込まれたプログラムや、CPU20が演算を行った結果等を一時的に記憶する揮発性メモリで構成されている。記憶部23は、CPU20の動作を規定する各種のプログラムや、サーバ2内で処理される各種データを記憶する不揮発性メモリで構成されている。
【0034】
メモリ22上では認証処理部24(受信部、認証部)が起動する。認証処理部24は、認証に係る各種処理をCPU20に実行させるためのプログラムである。図5では、認証処理部24のプログラムが記憶部23からメモリ22に読み込まれて、メモリ22上で認証処理部24が起動している状態が示されている。メモリ22上で起動した認証処理部24は、CPU20およびメモリ22の資源を利用して各種処理を行う。
【0035】
<第1の動作例>
次に、認証時の端末1とサーバ2の動作を説明する。まず、図6を参照し、第1の動作例を説明する。図6は、第1の動作例における認証の手順を示している。サービスの利用開始時に端末1のアプリケーション処理部17は、サーバ2にサービスの利用を要求するためのサービス利用要求を、通信部11を介してサーバ2へ送信する(ステップS100)。サーバ2の認証処理部24は、通信部21を介してサービス利用要求を受信する。認証処理部24は、サービス利用要求に基づいて、端末1に認証情報の送信を要求するための認証情報要求を、通信部21を介して、サービス利用要求の送信元である端末1へ送信する(ステップS105)。また、認証処理部24は、サービス利用要求のパケットに含まれる送信元のIPアドレスと関連付けたタイマーを起動し、時間の計測を開始する。
【0036】
端末1のアプリケーション処理部17は、通信部11を介して認証情報要求を受信する。アプリケーション処理部17は、認証情報要求に基づいて、認証処理部18に認証処理を依頼する(ステップS110)。依頼を受けた認証処理部18は、デバイスドライバ41に認証情報の取得を依頼し(ステップS115)、記憶部15にアクセスしたデバイスドライバ41から認証情報を取得する(ステップS120)。
【0037】
認証処理部18は、取得した認証情報を、通信部11を介してサーバ2へ送信する(ステップS125)。サーバ2の認証処理部24は、通信部21を介して認証情報を受信する。認証情報の通信には、https(Hypertext Transfer Protocol over Secure Socket Layer)等の暗号通信路が用いられる。
【0038】
認証処理部24は、認証情報のパケットに含まれる送信元のIPアドレスが、サービス利用要求のパケットに含まれる送信元のIPアドレスと一致するか否かを判定し、両者が一致した場合、そのIPアドレスに関連付けられているタイマーが計測している時間が所定の時間以内であるか否かを判定する。タイマーが計測している時間が所定の時間を超えている場合、認証に失敗する。このように、端末1からの認証情報の送信監視に制限時間を設けているのは、サーバ2が認証情報の送信監視に必要以上の負荷をかけないようにするためである。タイマーが計測している時間が所定の時間以内であった場合、以下のように認証情報を用いた認証が行われる。
【0039】
記憶部23には、端末1のサービス加入時等に予め登録された認証情報が格納されている。認証処理部24は、記憶部23から認証情報を読み出し、端末1から受信した認証情報と照合を行う(ステップS130)。端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれかと一致した場合は認証に成功し、端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれとも一致しなかった場合は認証に失敗する。
【0040】
認証に成功した場合、認証処理部24は、認証に成功したことを知らせる認証結果通知を、通信部21を介して、サービス利用要求の送信元である端末1へ送信する(ステップS135)。端末1のアプリケーション処理部17は、通信部11を介して認証結果通知を受信し、認証結果通知に基づいて、サービスの利用に係る各種処理を行う。例えば、アプリケーション処理部17は、サービスの利用に必要な情報をサーバ2と通信したり、サービスの利用状態や利用結果等を表示部12に表示したり、操作部13を介して入力される情報を処理したりする。
【0041】
<第2の動作例>
次に、第2の動作例を説明する。第2の動作例では、図7に示すように、認証処理プログラム32に電話番号等の認証情報が組み込まれて(埋め込まれて)いる。認証処理プログラム32の作成時に、認証情報が記載されたソースコードがコンパイルされ、認証処理プログラム32に認証情報が組み込まれる。図8は、第1の動作例における認証の手順を示している。以下では、第1の動作例と異なる部分のみを説明する。
【0042】
アプリケーション処理部17から認証処理の依頼を受けると(ステップS110)、認証処理部18は認証処理プログラム32中の認証情報を、通信部11を介してサーバ2へ送信する(ステップS140)。以降の動作は第1の動作例と同様である。
【0043】
上記のように第2の動作例では認証情報が認証処理プログラム32に組み込まれているため、認証情報を取得するための記憶部15へのアクセスが発生せず、より安全性が向上する。第2の動作例における認証情報は、記憶部15に格納されている電話番号等の情報と同一の情報でなくてもよく、アプリケーション16の作成者(サービス提供者)がアプリケーション16毎に割り当てた固有の情報であってもよい。
【0044】
<第3の動作例>
次に、第3の動作例を説明する。第3の動作例では、図9に示すように、アプリケーションプログラム30(アプリケーション16)を識別する識別情報が認証処理プログラム32に組み込まれて(埋め込まれて)いる。識別情報は認証情報とは異なる情報であるが、異なる端末に与えられる複数のアプリケーションプログラム間で共通であってもよい。図10は、第3の動作例における認証の手順を示している。以下では、第1の動作例と異なる部分のみを説明する。
【0045】
アプリケーション処理部17から認証処理の依頼を受けると(ステップS110)、認証処理部18は、デバイスドライバ41を介して記憶部15から認証情報を取得し(ステップS115,S120)、取得した認証情報と認証処理プログラム32中の識別情報とを、通信部11を介してサーバ2へ送信する(ステップS145)。サーバ2の認証処理部24は、通信部21を介して認証情報および識別情報を受信する。タイマーが計測している時間の確認が行われた後、以下のように認証情報および識別情報を用いた認証が行われる。
【0046】
記憶部23には、予め登録された識別情報が認証情報と共に格納されている。認証処理部24は、記憶部23から認証情報を読み出し、端末1から受信した認証情報と照合を行うと共に、記憶部23から識別情報を読み出し、端末1から受信した識別情報と照合を行う(ステップS150)。端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれかと一致すると共に、端末1から受信した識別情報が、記憶部23に格納されている識別情報のいずれかと一致した場合は認証に成功する。また、端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれとも一致しなかった場合、または、端末1から受信した識別情報が、記憶部23に格納されている識別情報のいずれとも一致しなかった場合は認証に失敗する。以降の動作は第1の動作例と同様である。
【0047】
上記のように第3の動作例では、認証情報を用いた認証が行われると共に、識別情報を用いた認証が行われる。識別情報を用いた認証に成功した場合、認証情報を送信した端末1のアプリケーションプログラム30(アプリケーション16)が本物(正規)であることをサーバ2が確認することができるため、より安全性が向上する。第3の動作例は第2の動作例と組み合わせてもよい。
【0048】
<第4の動作例>
次に、第4の動作例を説明する。第4の動作例では、第三世代携帯電話方式の3G回線でネットワークに接続するときのIPアドレスの確認が行われる。図11に示すように、通信キャリアが3G回線で使用しているIPアドレスの範囲を示す範囲情報が認証処理プログラム32に組み込まれて(埋め込まれて)いる。認証処理プログラム32の作成時に、範囲情報が記載されたソースコードがコンパイルされ、認証処理プログラム32に範囲情報が組み込まれる。図12は、第4の動作例における認証の手順を示している。以下では、第1の動作例と異なる部分のみを説明する。
【0049】
アプリケーション処理部17から認証処理の依頼を受けると(ステップS110)、認証処理部18は、認証情報と、ネットワークへの接続に使用しているIPアドレスとの取得をデバイスドライバ41に依頼し(ステップS155)、記憶部15にアクセスしたデバイスドライバ41から認証情報を取得し、通信部11にアクセスしたデバイスドライバ41からIPアドレスを取得する(ステップS160)。
【0050】
認証処理部18は、取得したIPアドレスを用いて認証情報の送信制御を行う。具体的には、認証処理部18は、取得したIPアドレスを認証処理プログラム32中の範囲情報と比較し、取得したIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれるか否かを判定する。端末1が3G回線でネットワークに接続する場合、ハードウェアである通信部11のROM(Read Only Memory)に格納されているプログラムによる制御に従って、通信キャリアのサーバとの間で認証が行われ、認証が正しく行われると、端末1はネットワークへの接続が許可される。通信部11のROMに格納されているプログラムの改造は困難であるので、3G回線の通信キャリアによる認証を受けてネットワークに接続している端末1がサーバ2へ送信する認証情報の本物性が保証され、より安全性が向上する。
【0051】
取得したIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれない場合、認証処理部18は認証を中止する。また、取得したIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれる場合、第1の動作例と同様に認証情報がサーバ2へ送信される。以降の動作は第1の動作例と同様である。取得したIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれる場合、そのことを明示する情報をサーバ2へ通知し、サーバ2は、この情報が端末1から受信されなかったら認証を中止し、この情報が端末1から受信されたら認証を継続してもよい。第4の動作例は、第2の動作例または第3の動作例と組み合わせてもよい。
【0052】
<第5の動作例>
次に、第5の動作例を説明する。第5の動作例では、IPアドレスの確認がサーバ2で行われる。図13は、第5の動作例における認証の手順を示している。以下では、第1の動作例と異なる部分のみを説明する。
【0053】
ステップS105でサーバ2へ送信されるサービス利用要求のパケットおよびステップS125でサーバ2へ送信される認証情報のパケットには端末1のIPアドレスが含まれるが、このIPアドレスは、認証処理部18がデバイスドライバ41を介して通信部11から取得したものである。サーバ2の記憶部23には、通信キャリアが3G回線で使用しているIPアドレスの範囲を示す範囲情報が認証情報と共に格納されている。
【0054】
認証処理部24は、記憶部23から認証情報を読み出し、端末1から受信した認証情報と照合を行うと共に、記憶部23から範囲情報を読み出し、端末1から受信した認証情報のパケットに含まれるIPアドレスと照合を行う(ステップS165)。端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれかと一致すると共に、端末1から受信した認証情報のパケットに含まれるIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれる場合は認証に成功する。また、端末1から受信した認証情報が、記憶部23に格納されている認証情報のいずれとも一致しなかった場合、または、端末1から受信した認証情報のパケットに含まれるIPアドレスが、範囲情報の示すIPアドレスの範囲に含まれない場合は認証に失敗する。以降の動作は第1の動作例と同様である。第5の動作例は、第2の動作例または第3の動作例と組み合わせてもよい。
【0055】
上述したように、本実施形態によれば、認証処理を行う認証処理プログラム32を、逆コンパイルが困難なネイティブコードで構成することによって、アプリケーションプログラム30が本物(正規)であることを保証し、サービス利用時の安全性を向上させることができる。
【0056】
また、サーバ2へ送信される認証情報を認証処理プログラム32に予め組み込むことによって、認証情報の取得のための記憶部15へのアクセスが発生せず、サービス利用時の安全性をより向上させることができる。
【0057】
また、認証情報を用いた認証と、アプリケーションプログラム30(アプリケーション16)を識別する識別情報を用いた認証とを組み合わせることによって、アプリケーションプログラム30(アプリケーション16)が本物(正規)であることを保証し、サービス利用時の安全性をより向上させることができる。
【0058】
また、認証情報を用いた認証と、3G回線でネットワークに接続するときのIPアドレスの確認とを組み合わせることによって、3G回線の通信キャリアによる認証を受けた端末1がサーバ2へ送信する認証情報の本物性を保証し、サービス利用時の安全性をより向上させることができる。
【0059】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、上記ではOSにAndroid(登録商標)が採用されている場合の実施形態を説明したが、OSの形態によらず、アプリケーションプログラムが、APIを介してハードウェアにアクセスするプログラムと、APIを介さずにハードウェアにアクセスするプログラムとで構成される場合に、上記の実施形態を同様に適用することが可能である。
【符号の説明】
【0060】
1・・・端末、2・・・サーバ、10,20・・・CPU、11,21・・・通信部、12・・・表示部、13・・・操作部、14,22・・・メモリ、15,23・・・記憶部、16・・・アプリケーション、17・・・アプリケーション処理部、18,24・・・認証処理部
【特許請求の範囲】
【請求項1】
認証情報を用いて認証を行うサーバへ前記認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、
前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、
を備えたことを特徴とするプログラム。
【請求項2】
前記第1のプログラムは前記認証情報を含むことを特徴とする請求項1に記載のプログラム。
【請求項3】
前記送信部は、前記サーバへ、前記認証情報と、前記認証情報とは異なる識別情報とを送信し、
前記第1のプログラムは前記識別情報を含む
ことを特徴とする請求項1または請求項2に記載のプログラム。
【請求項4】
前記第1のプログラムは、
前記送信部と、
ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、
としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、
前記第1のプログラムは前記第2のアドレス情報を含む
ことを特徴とする請求項1〜請求項3のいずれか一項に記載のプログラム。
【請求項5】
前記送信部は、前記サーバへ、前記認証情報と、ネットワークへの接続に使用しているアドレス情報とを送信することを特徴とする請求項1〜請求項3のいずれか一項に記載のプログラム。
【請求項6】
認証情報を用いて認証を行うサーバへ前記認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、
前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、
を備えたことを特徴とするプログラムを読み込んで実行するコンピュータを含む端末装置。
【請求項7】
前記第1のプログラムは前記認証情報を含むことを特徴とする請求項6に記載の端末装置。
【請求項8】
前記送信部は、前記サーバへ、前記認証情報と、前記認証情報とは異なる識別情報とを送信し、
前記第1のプログラムは前記識別情報を含む
ことを特徴とする請求項6または請求項7に記載の端末装置。
【請求項9】
前記第1のプログラムは、
前記送信部と、
ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、
としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、
前記第1のプログラムは前記第2のアドレス情報を含む
ことを特徴とする請求項6〜請求項8のいずれか一項に記載の端末装置。
【請求項10】
前記送信部は、前記サーバへ、前記認証情報と、ネットワークへの接続に使用しているアドレス情報とを送信することを特徴とする請求項6〜請求項8のいずれか一項に記載の端末装置。
【請求項11】
第1の認証情報を用いて認証を行うサーバと、前記サーバへ前記第1の認証情報を送信する端末装置とを備える認証システムであって、
前記端末装置は、
前記サーバへ前記第1の認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、
前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、
を読み込んで実行するコンピュータを含み、
前記サーバは、
前記端末装置から前記第1の認証情報を受信する受信部と、
前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合して認証を行う認証部と、
を有する
ことを特徴とする認証システム。
【請求項12】
前記第1のプログラムが前記第1の認証情報を含むことを特徴とする請求項11に記載の認証システム。
【請求項13】
前記送信部は、前記サーバへ、前記第1の認証情報と、前記第1の認証情報とは異なる第1の識別情報とを送信し、
前記第1のプログラムは前記第1の識別情報を含み、
前記受信部は前記端末装置から前記第1の認証情報と前記第1の識別情報とを受信し、
前記認証部は、前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合し、前記第1の識別情報と、第2の識別情報を記憶する前記記憶部に記憶されている前記第2の識別情報とを照合して認証を行う
ことを特徴とする請求項11または請求項12に記載の認証システム。
【請求項14】
前記第1のプログラムは、
前記送信部と、
ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、
としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、
前記第1のプログラムは前記第2のアドレス情報を含む
ことを特徴とする請求項11〜請求項13のいずれか一項に記載の認証システム。
【請求項15】
前記送信部は、前記サーバへ、前記第1の認証情報と、ネットワークへの接続に使用している第1のアドレス情報とを送信し、
前記受信部は前記端末装置から前記第1の認証情報と前記アドレス情報とを受信し、
前記認証部は、前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合し、前記第1のアドレス情報と、第2のアドレス情報を記憶する前記記憶部に記憶されている前記第2のアドレス情報とを照合して認証を行う
ことを特徴とする請求項11〜請求項13のいずれか一項に記載の認証システム。
【請求項1】
認証情報を用いて認証を行うサーバへ前記認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、
前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、
を備えたことを特徴とするプログラム。
【請求項2】
前記第1のプログラムは前記認証情報を含むことを特徴とする請求項1に記載のプログラム。
【請求項3】
前記送信部は、前記サーバへ、前記認証情報と、前記認証情報とは異なる識別情報とを送信し、
前記第1のプログラムは前記識別情報を含む
ことを特徴とする請求項1または請求項2に記載のプログラム。
【請求項4】
前記第1のプログラムは、
前記送信部と、
ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、
としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、
前記第1のプログラムは前記第2のアドレス情報を含む
ことを特徴とする請求項1〜請求項3のいずれか一項に記載のプログラム。
【請求項5】
前記送信部は、前記サーバへ、前記認証情報と、ネットワークへの接続に使用しているアドレス情報とを送信することを特徴とする請求項1〜請求項3のいずれか一項に記載のプログラム。
【請求項6】
認証情報を用いて認証を行うサーバへ前記認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、
前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、
を備えたことを特徴とするプログラムを読み込んで実行するコンピュータを含む端末装置。
【請求項7】
前記第1のプログラムは前記認証情報を含むことを特徴とする請求項6に記載の端末装置。
【請求項8】
前記送信部は、前記サーバへ、前記認証情報と、前記認証情報とは異なる識別情報とを送信し、
前記第1のプログラムは前記識別情報を含む
ことを特徴とする請求項6または請求項7に記載の端末装置。
【請求項9】
前記第1のプログラムは、
前記送信部と、
ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、
としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、
前記第1のプログラムは前記第2のアドレス情報を含む
ことを特徴とする請求項6〜請求項8のいずれか一項に記載の端末装置。
【請求項10】
前記送信部は、前記サーバへ、前記認証情報と、ネットワークへの接続に使用しているアドレス情報とを送信することを特徴とする請求項6〜請求項8のいずれか一項に記載の端末装置。
【請求項11】
第1の認証情報を用いて認証を行うサーバと、前記サーバへ前記第1の認証情報を送信する端末装置とを備える認証システムであって、
前記端末装置は、
前記サーバへ前記第1の認証情報を送信する送信部としてコンピュータを機能させるための、ネイティブコードで構成された第1のプログラムと、
前記サーバが認証を行った後、前記サーバが提供するサービスの利用に係る処理を行う処理部としてコンピュータを機能させるための第2のプログラムと、
を読み込んで実行するコンピュータを含み、
前記サーバは、
前記端末装置から前記第1の認証情報を受信する受信部と、
前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合して認証を行う認証部と、
を有する
ことを特徴とする認証システム。
【請求項12】
前記第1のプログラムが前記第1の認証情報を含むことを特徴とする請求項11に記載の認証システム。
【請求項13】
前記送信部は、前記サーバへ、前記第1の認証情報と、前記第1の認証情報とは異なる第1の識別情報とを送信し、
前記第1のプログラムは前記第1の識別情報を含み、
前記受信部は前記端末装置から前記第1の認証情報と前記第1の識別情報とを受信し、
前記認証部は、前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合し、前記第1の識別情報と、第2の識別情報を記憶する前記記憶部に記憶されている前記第2の識別情報とを照合して認証を行う
ことを特徴とする請求項11または請求項12に記載の認証システム。
【請求項14】
前記第1のプログラムは、
前記送信部と、
ネットワークへの接続に使用している第1のアドレス情報と、所定の第2のアドレス情報とを照合し、照合結果に基づいて前記認証情報の送信を制御する制御部と、
としてコンピュータを機能させるための、ネイティブコードで構成されたプログラムであって、
前記第1のプログラムは前記第2のアドレス情報を含む
ことを特徴とする請求項11〜請求項13のいずれか一項に記載の認証システム。
【請求項15】
前記送信部は、前記サーバへ、前記第1の認証情報と、ネットワークへの接続に使用している第1のアドレス情報とを送信し、
前記受信部は前記端末装置から前記第1の認証情報と前記アドレス情報とを受信し、
前記認証部は、前記第1の認証情報と、第2の認証情報を記憶する記憶部に記憶されている前記第2の認証情報とを照合し、前記第1のアドレス情報と、第2のアドレス情報を記憶する前記記憶部に記憶されている前記第2のアドレス情報とを照合して認証を行う
ことを特徴とする請求項11〜請求項13のいずれか一項に記載の認証システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2013−20579(P2013−20579A)
【公開日】平成25年1月31日(2013.1.31)
【国際特許分類】
【出願番号】特願2011−155584(P2011−155584)
【出願日】平成23年7月14日(2011.7.14)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】
【公開日】平成25年1月31日(2013.1.31)
【国際特許分類】
【出願日】平成23年7月14日(2011.7.14)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】
[ Back to top ]