(57)【要約】【課題】サーバへの接続ができない状況でも、有効期限の認証を正しく行ってユーザによるスマホアプリの不正利用を抑止できる「アプリケーションの有効期限認証システム、有効期限認証装置および有効期限認証方法」を提供する。【解決手段】アプリケーションをインストールしたスマートフォン１０において、アプリケーションの今回の起動時刻が有効期限を超えているか否かを判定し、超えていない場合に認証許可、超えている場合に認証拒否とする第１の認証処理部１０３と、今回の起動時刻が前回の起動時刻よりも後か否かを判定し、後である場合に認証許可、後でない場合に認証拒否とする第２の認証処理部１０４とを備え、スマートフォン１０の内部時計を巻き戻した結果、今回の起動時刻（改竄した不正な起動時間）が前回の起動時刻よりも前の時刻になっていた場合に、第２の認証処理により認証を拒否できるようにする。【選択図】図２
2015207152.tif 000002
【特許請求の範囲】
【請求項１】
サーバから端末装置にダウンロードしてインストールされたアプリケーションの有効期限の認証を行う有効期限認証システムであって、
上記端末装置は、
上記アプリケーションの起動時刻を検出する起動時刻検出部と、
上記起動時刻検出部により検出された起動時刻を、少なくとも次回の起動時刻まで記憶しておく起動時刻記憶部と、
上記起動時刻検出部により検出された今回の起動時刻が、上記アプリケーションを使用可能な有効期限を超えているか否かを判定し、超えていない場合に認証許可、超えている場合に認証拒否とする第１の認証処理部と、
上記起動時刻検出部により検出された今回の起動時刻が、上記起動時刻記憶部に記憶されている前回の起動時刻よりも後か否かを判定し、後である場合に認証許可、後でない場合に認証拒否とする第２の認証処理部とを備えたことを特徴とするアプリケーションの有効期限認証システム。
【請求項２】
上記端末装置は、
起動された上記アプリケーションの使用終了時刻を検出する終了時刻検出部を更に備え、
上記起動時刻記憶部に代えて、上記終了時刻検出部により検出された終了時刻を、少なくとも次回の起動時刻まで記憶しておく終了時刻記憶部を備え、
上記第２の認証処理部は、上記起動時刻検出部により検出された今回の起動時刻が、上記終了時刻記憶部に記憶されている前回の終了時刻よりも後か否かを判定し、前回の終了時刻よりも後である場合に認証許可、前回の終了時刻よりも後でない場合に認証拒否とすることを特徴とする請求項１に記載のアプリケーションの有効期限認証システム。
【請求項３】
上記端末装置は、上記終了時刻検出部に代えて、
上記起動時刻検出部により検出された上記起動時刻から、上記アプリケーションが終了するまでの経過時間を計測する経過時間計測部と、
上記起動時刻検出部により検出された起動時刻に対して上記経過時間計測部により計測された経過時間を加算した時刻を、上記アプリケーションの使用終了時刻として設定する終了時刻設定部とを備えたことを特徴とする請求項２に記載のアプリケーションの有効期限認証システム。
【請求項４】
上記端末装置は、
上記端末装置において上記アプリケーションが起動されたときに、上記端末装置から上記サーバに接続可能かどうかを判定する接続判定部と、
上記接続判定部により接続可能と判定された場合、上記サーバに接続して認証の要求を行う認証要求部と、
上記認証要求部による要求に応じて上記サーバにおいて認証許可された場合の認証時刻を検出する認証時刻検出部と、
上記認証時刻検出部により検出された上記認証時刻を、上記アプリケーションの今回の起動時刻として設定する起動時刻設定部とを更に備え、
上記サーバは、
上記認証要求部による要求に応じて、上記サーバの現在時刻が上記有効期限を超えているか否かを判定し、超えていない場合に認証許可、超えている場合に認証拒否とする第３の認証処理部を備え、
上記接続判定部により接続可能と判定された場合は、上記第１の認証処理部に代えて上記第３の認証処理部による認証を行うようにしたことを特徴とする請求項１に記載のアプリケーションの有効期限認証システム。
【請求項５】
上記端末装置は、
上記起動時刻検出部により検出された起動時刻または上記起動時刻設定部により設定された起動時刻から、上記アプリケーションが終了するまでの経過時間を計測する経過時間計測部と、
上記起動時刻検出部により検出された起動時刻または上記起動時刻設定部により設定された起動時刻に対して上記経過時間計測部により計測された経過時間を加算した時刻を、上記アプリケーションの使用終了時刻として設定する終了時刻設定部と、
上記終了時刻設定部により設定された終了時刻を、少なくとも次回の起動時刻まで記憶しておく終了時刻記憶部とを更に備え、
上記第２の認証処理部は、上記起動時刻検出部により検出された上記今回の起動時刻または上記起動時刻設定部により設定された上記今回の起動時刻が、上記終了時刻記憶部に記憶されている前回の終了時刻よりも後か否かを判定し、前回の終了時刻よりも後である場合に認証許可、前回の終了時刻よりも後でない場合に認証拒否とすることを特徴とする請求項４に記載のアプリケーションの有効期限認証システム。
【請求項６】
サーバから端末装置にダウンロードしてインストールされたアプリケーションの有効期限の認証を行う有効期限認証装置であって、
上記アプリケーションの起動時刻を検出する起動時刻検出部と、
上記起動時刻検出部により検出された起動時刻を、少なくとも次回の起動時刻まで記憶しておく起動時刻記憶部と、
上記起動時刻検出部により検出された今回の起動時刻が、上記アプリケーションを使用可能な有効期限を超えているか否かを判定し、超えていない場合に認証許可、超えている場合に認証拒否とする第１の認証処理部と、
上記起動時刻検出部により検出された今回の起動時刻が、上記起動時刻記憶部に記憶されている前回の起動時刻よりも後か否かを判定し、後である場合に認証許可、後でない場合に認証拒否とする第２の認証処理部とを備えたことを特徴とするアプリケーションの有効期限認証装置。
【請求項７】
起動された上記アプリケーションの使用終了時刻を検出する終了時刻検出部を更に備え、
上記起動時刻記憶部に代えて、上記終了時刻検出部により検出された終了時刻を、少なくとも次回の起動時刻まで記憶しておく終了時刻記憶部を備え、
上記第２の認証処理部は、上記起動時刻検出部により検出された今回の起動時刻が、上記終了時刻記憶部に記憶されている前回の終了時刻よりも後か否かを判定し、前回の終了時刻よりも後である場合に認証許可、前回の終了時刻よりも後でない場合に認証拒否とすることを特徴とする請求項６に記載のアプリケーションの有効期限認証装置。
【請求項８】
上記終了時刻検出部に代えて、
上記起動時刻検出部により検出された上記起動時刻から、上記アプリケーションが終了するまでの経過時間を計測する経過時間計測部と、
上記起動時刻検出部により検出された起動時刻に対して上記経過時間計測部により計測された経過時間を加算した時刻を、上記アプリケーションの使用終了時刻として設定する終了時刻設定部とを備えたことを特徴とする請求項７に記載のアプリケーションの有効期限認証装置。
【請求項９】
上記端末装置において上記アプリケーションが起動されたときに、上記端末装置から上記サーバに接続可能かどうかを判定する接続判定部と、
上記接続判定部により接続可能と判定された場合、上記サーバに接続して認証の要求を行う認証要求部と、
上記認証要求部による要求に応じて上記サーバにおいて認証許可された場合の認証時刻を検出する認証時刻検出部と、
上記認証時刻検出部により検出された上記認証時刻を、上記アプリケーションの今回の起動時刻として設定する起動時刻設定部とを更に備えたことを特徴とする請求項６に記載のアプリケーションの有効期限認証装置。
【請求項１０】
上記起動時刻検出部により検出された起動時刻または上記起動時刻設定部により設定された起動時刻から、上記アプリケーションが終了するまでの経過時間を計測する経過時間計測部と、
上記起動時刻検出部により検出された起動時刻または上記起動時刻設定部により設定された起動時刻に対して上記経過時間計測部により計測された経過時間を加算した時刻を、上記アプリケーションの使用終了時刻として設定する終了時刻設定部と、
上記終了時刻設定部により設定された終了時刻を、少なくとも次回の起動時刻まで記憶しておく終了時刻記憶部とを更に備え、
上記第２の認証処理部は、上記起動時刻検出部により検出された上記今回の起動時刻または上記起動時刻設定部により設定された上記今回の起動時刻が、上記終了時刻記憶部に記憶されている前回の終了時刻よりも後か否かを判定し、前回の終了時刻よりも後である場合に認証許可、前回の終了時刻よりも後でない場合に認証拒否とすることを特徴とする請求項９に記載のアプリケーションの有効期限認証装置。
【請求項１１】
サーバから端末装置にダウンロードしてインストールされたアプリケーションの有効期限の認証を行う有効期限認証方法であって、
上記端末装置の起動時刻検出部が、上記アプリケーションの起動時刻を検出する第１のステップと、
上記端末装置において上記アプリケーションが起動されたときに、上記端末装置の接続判定部が、上記端末装置から上記サーバに接続可能かどうかを判定する第２のステップと、
上記接続判定部により接続可能ではないと判定された場合、上記端末装置の第１の認証処理部が、上記起動時刻検出部により検出された今回の起動時刻が、上記アプリケーションを使用可能な有効期限を超えているか否かを判定し、超えていない場合に認証許可、超えている場合に認証拒否とする第３のステップと、
上記接続判定部により接続可能と判定された場合、上記サーバの第３の認証処理部が、上記端末装置からの要求に応じて、上記サーバの現在時刻が上記有効期限を超えているか否かを判定し、超えていない場合に認証許可、超えている場合に認証拒否とする第４のステップと、
上記端末装置の認証時刻検出部が、上記第３の認証処理部により認証許可された場合の認証時刻を検出する第５のステップと、
上記端末装置の起動時刻設定部が、上記認証時刻検出部により検出された上記認証時刻を、上記アプリケーションの今回の起動時刻として設定する第６のステップと、
上記端末装置の第２の認証処理部が、上記起動時刻検出部により検出された今回の起動時刻または上記起動時刻設定部により設定された今回の起動時刻が、終了時刻記憶部に記憶されている前回のアプリケーション終了時刻よりも後か否かを判定し、後である場合に認証許可、後でない場合に認証拒否とする第７のステップと、
上記端末装置の経過時間計測部が、上記起動時刻検出部により検出された起動時刻または上記起動時刻設定部により設定された起動時刻から、上記アプリケーションが終了するまでの経過時間を計測する第８のステップと、
上記端末装置の終了時刻設定部が、上記起動時刻検出部により検出された起動時刻または上記起動時刻設定部により設定された起動時刻に対して上記経過時間計測部により計測された経過時間を加算した時刻を、上記アプリケーションの使用終了時刻として設定し、上記終了時刻記憶部に記憶させる第９のステップとを有することを特徴とするアプリケーションの有効期限認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションの有効期限認証システム、有効期限認証装置および有効期限認証方法に関し、特に、サーバから端末装置にダウンロードしてインストールされたアプリケーションの有効期限の認証を行う有効期限認証システムに用いて好適なものである。
【背景技術】
【０００２】
近年、スマートフォンと呼ばれる携帯端末が広く普及している。スマートフォンは、携帯電話の機能と携帯情報端末（ＰＤＡ）の機能とを融合させた携帯端末であり、通話機能だけでなく、ＰＤＡが得意とする各種のアプリケーション実行機能を持っている。スマートフォンでは、インターネット上のサーバから所望のアプリケーション（以下、スマホアプリという）をダウンロードしてインストールすることにより、ユーザがスマホアプリをいつでもどこでも好きなときに実行することができるようになされている。
【０００３】
なお、スマホアプリの中には、利用可能な期間を定めた有効期限が設定されているものがある。有効期限が設定されたスマホアプリを利用する際には、認証を受ける必要がある。一般的には、有効期限を含む利用者情報をサーバに記憶させ、ユーザがスマホアプリを利用する都度、あるいは１日１回などの頻度でスマートフォンからサーバに接続し、認証を受ける必要がある。認証を受けないと、スマホアプリを使えなくなったり、使用可能な機能に制限が加えられたりする。
【０００４】
ところで、スマートフォンからサーバに接続して認証を受けるシステムでは、有効期限の管理を厳格に行うことができる反面、以下のような問題があった。すなわち、通信エラーや通信回線の混雑等によってスマートフォンからサーバに接続できないと、認証を受けたくても受けることができない。特に、インフラ環境が発展途上の第三国においては、このような事態が頻繁に起こり得る。この場合、せっかくインストールしたスマホアプリを使用できなくなってしまうという問題があった。
【０００５】
この問題を解消するための一手法として、スマホアプリをサーバからスマートフォンにダウンロードしてインストールした後、サーバにアクセスを要することなく、スマホアプリ自身に持たせた有効期限管理の認証機能を用いて認証を行うようにすることが考えられる。従来、サーバでの認証を受けられない場合に、クライアント側で認証を行うようになされたシステムがいくつか提案されている（例えば、特許文献１〜３参照）。
【０００６】
特許文献１に記載のコンピュータネットワークシステムでは、クライアントコンピュータから認証用サーバコンピュータにアクセスして、クライアント認証をする場合において、認証用サーバコンピュータが動作不能状態となっていてアクセスできないとき、クライアントコンピュータが、認証用サーバコンピュータから受信し記憶手段に記憶したクライアントユーザ名およびパスワードによりクライアント認証をする。
【０００７】
また、特許文献２に記載のネットワークシステムでは、認証サーバから認証を得るための通信において通信エラーが発生した場合、メモリに記憶された認証結果履歴情報を読み出して、認証サーバに認証要求を送信してその結果として認証の成功が返信されたことが有ると判断される場合には、認証処理に成功したものとして処理を実行する。
【０００８】
上記特許文献１，２は、アプリケーションの利用に関する有効期限の認証をするものではない。これに対して、特許文献３に記載の情報処理サービス実行システムでは、原則としてユーザＰＣからオンラインでサーバに接続して有効期限の認証を行う一方、ネットワークに接続していないオフライン状態の場合は、ユーザＰＣに装着されたＩＣカード等の耐タンパデバイスを用いて有効期限の認証を行うようになされている。
【０００９】
具体的には、耐タンパデバイスは、オフライン認証回数およびオンライン最終認証日を含むオフライン認証データと会費納入の有無と有効期限とを含むユーザ情報を記憶するとともに、あらかじめ設定したオフライン認証可能回数とオンライン最終認証日からの認証可能期間とを含む認証条件を記憶する。そして、耐タンパデバイスがユーザＰＣよりユーザ認証を行うように指示を受けた場合、オフライン認証回数がオフライン認証可能回数内であり、かつ、認証を受ける日がオンライン最終認証日から認証可能期間内である場合、または、ユーザ情報において会費納入がなされおり、かつ、有効期限以内の場合の少なくとも一方の認証条件を満足する場合には、ユーザＰＣでアプリケーションの使用を許可する。
【００１０】
特許文献３に記載された有効期限の認証方法では、ユーザＰＣと耐タンパデバイスとの間でオフラインの認証を行う際に、ユーザＰＣが内蔵する時計を用いて認証を行うことになる。スマートフォン等の端末装置にインストールしたアプリケーションに持たせた有効期限管理の認証機能を用いて認証を行う場合も同様であり、端末装置が内蔵する時計を用いて認証を行うことになる。しかしながら、この場合は、ユーザが端末装置の内部時計を巻き戻す等の操作をすることにより、有効期限の認証を不正にパスさせてしまう可能性があるという問題が生じる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００３−２９６２７６号公報
【特許文献２】特許４３１３４２５号公報
【特許文献３】特許５１３８４６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明は、このような問題を解決するために成されたものであり、端末装置からサーバへの接続ができない状況でも、アプリケーションの利用に関する有効期限の認証を正しく行ってユーザによる不正利用を抑止できるようにすることを目的とする。
【課題を解決するための手段】
【００１３】
上記した課題を解決するために、本発明では、サーバからアプリケーションをダウンロードしてインストールした端末装置において、アプリケーションの今回の起動時刻が有効期限を超えているか否かを判定し、超えていない場合に認証許可、超えている場合に認証拒否とする第１の認証処理を行うとともに、今回の起動時刻が前回の起動時刻よりも後か否かを判定し、後である場合に認証許可、後でない場合に認証拒否とする第２の認証処理を行うようにしている。前回の起動時刻に代えて、アプリケーションの前回の使用終了時刻を用いてもよい。
【００１４】
本発明の他の態様では、端末装置においてアプリケーションが起動されたときに、端末装置からサーバに接続可能な場合は、第１の認証処理に代えて、端末装置からサーバに接続してサーバによる第３の認証処理を行い、その認証時刻を、アプリケーションの今回の起動時刻として設定するようにしている。
【発明の効果】
【００１５】
上記のように構成した本発明によれば、端末装置からサーバに接続することなく、端末装置にて行われる第１の認証処理によって、アプリケーションの有効期限が過ぎているか否かを判定することができる。この第１の認証処理は端末装置の内部時計を用いて行われるため、ユーザがその内部時計を巻き戻す等の不正操作を行うことにより、本当は有効期限を過ぎているのに、過ぎていないように起動時間を改竄する可能性がある。しかし、内部時計を巻き戻した結果、今回の起動時刻（改竄した不正な起動時間）が前回の起動時刻よりも前の時刻になっていると、第２の認証処理により認証拒否とされる。
【００１６】
これにより、端末装置からサーバへの接続ができない状況でも、第１の認証処理および第２の認証処理によってアプリケーションの有効期限の認証を正しく行って、ユーザによるアプリケーションの不正利用を抑止することができる。第２の認証処理において、前回の起動時刻に代えて前回の終了時刻を用いた場合は、ユーザが内部時計を巻き戻すと、今回の起動時刻（改竄した不正な起動時間）が前回の終了時刻よりも前の時刻になっている可能性が高くなるので、有効期限の認証を不正にパスさせてしまう可能性をより低減することができる。
【００１７】
また、本発明の他の特徴によれば、アプリケーションの起動時に端末装置からサーバに接続可能な場合は、第１の認証処理に代えて、サーバの内部時計を用いたサーバによる第３の認証処理が行われ、その認証時刻がアプリケーションの今回の起動時刻とみなされる。そして、その正しい起動時刻（＝サーバの認証時刻）が、次回のアプリケーション起動時における第２の認証処理において前回の起動時刻として用いられるので、次回のアプリケーション起動時においても有効期限の認証を不正にパスさせてしまう可能性をより低減することができる。
【図面の簡単な説明】
【００１８】
【図１】第１の実施形態によるアプリケーションの有効期限認証システムの構成例を示す図である。
【図２】第１の実施形態によるスマートフォンの構成例を示すブロック図である。
【図３】第１の実施形態による認証処理の内容を説明するための図である。
【図４】第１の実施形態によるスマートフォンの動作例を示すフローチャートである。
【図５】第１の実施形態によるスマートフォンの他の構成例を示す図である。
【図６】図５に示したスマートフォンによる認証処理の内容を説明するための図である。
【図７】第２の実施形態によるスマートフォンおよびサーバの構成例を示すブロック図である。
【図８】第２の実施形態による認証処理の内容を説明するための図である。
【図９】第２の実施形態によるスマートフォンおよびサーバの動作例を示すフローチャートである。
【図１０】第２の実施形態によるスマートフォンおよびサーバの他の構成例を示す図である。
【図１１】図１０に示したスマートフォンによる認証処理の内容を説明するための図である。
【発明を実施するための形態】
【００１９】
（第１の実施形態）
以下、本発明の第１の実施形態を図面に基づいて説明する。図１は、第１の実施形態によるアプリケーションの有効期限認証システムの構成例を示す図である。図１に示すように、第１の実施形態によるアプリケーションの有効期限認証システムは、スマートフォン１０およびサーバ２０を備え、これらがインターネット１００を介して接続可能に構成されている。
【００２０】
スマートフォン１０は、サーバ２０から所望のスマホアプリをダウンロードし、内部の記憶媒体にインストールして実行することが可能である。本実施形態では、スマートフォン１０にインストールされるスマホアプリには、利用可能な期間を定めた有効期限が設定されているものとする。有効期限は、例えば、インストール後の所定日数は無料で使えるとする期限や、１回の課金で利用可能な期間を定める期限などである。
【００２１】
第１の実施形態では、サーバか２０からスマートフォン１０にダウンロードしてインストールされたスマホアプリの有効期限の認証を、スマートフォン１０の内部処理として行う。つまり、このスマートフォン１０は、本発明の有効期限認証装置を構成する。
【００２２】
なお、ここでは端末装置の一例としてスマートフォン１０を挙げているが、所望のアプリケーションをインストールして実行可能な端末であり、かつ、内部に時計機能を有した端末であれば、何れも適用可能である。例えば、タブレット端末、携帯電話、パーソナルコンピュータなどをスマートフォン１０に代えて用いるようにしてもよい。
【００２３】
図２は、第１の実施形態によるスマートフォン１０の構成例を示すブロック図である。ここでは、第１の実施形態に関連する主要な構成のみを示している。図２に示すように、第１の実施形態によるスマートフォン１０は、有効期限設定部１０１、起動時刻検出部１０２、第１の認証処理部１０３、第２の認証処理部１０４、有効期限記憶部１２１、起動時刻記憶部１２２および時計部１２３を備えて構成されている。
【００２４】
有効期限設定部１０１、起動時刻検出部１０２、第１の認証処理部１０３および第２の認証処理部１０４の各機能ブロックは、実際にはコンピュータのＣＰＵ、ＲＡＭ、ＲＯＭなどを備えて構成され、ＲＡＭやＲＯＭ、ハードディスクまたは半導体メモリ等の記録媒体に記憶されたプログラムが動作することによって実現される。このプログラムは、例えば、サーバ２０からスマートフォン１０にダウンロードしてインストールされたスマホアプリのプログラムである。
【００２５】
有効期限設定部１０１は、スマートフォン１０にインストールされたスマホアプリの有効期限を設定し、有効期限記憶部１２１に記憶させる。例えば、スマホアプリの有効期限がインストール後３０日までということがスマホアプリのプログラム中に組み込まれている場合、有効期限設定部１０１は、スマホアプリがインストールされた日時を時計部１２３から取得し、その日時から３０日後の日時を有効期限に設定し、有効期限記憶部１２１に記憶させる。
【００２６】
起動時刻検出部１０２は、スマートフォン１０にインストールされたスマホアプリの起動時刻を検出する。すなわち、起動時刻検出部１０２は、スマホアプリの起動を検出したときに、そのときの日時を時計部１２３から取得する。起動時刻検出部１０２は、検出した起動時刻を起動時刻記憶部１２２に記憶させる。起動時刻記憶部１２２は、起動時刻検出部１０２により検出された起動時刻を少なくとも次回の起動時刻まで記憶しておく。すなわち、起動時刻検出部１０２が次回の起動時刻を起動時刻記憶部１２２に記憶させる際に、前回の起動時刻を上書きしてもよい。
【００２７】
第１の認証処理部１０３は、起動時刻検出部１０２により検出された今回の起動時刻が、有効期限記憶部１２１に記憶されている有効期限を超えているか否かを判定する。そして、今回の起動時刻が有効期限を超えていない場合には認証許可、超えている場合には認証拒否とする。
【００２８】
第２の認証処理部１０４は、起動時刻検出部１０２により検出された今回の起動時刻が、起動時刻記憶部１２２に記憶されている前回の起動時刻よりも後か否かを判定する。そして、今回の起動時刻が前回の起動時刻よりも後である場合には認証許可、後でない場合には認証拒否とする。なお、第２の認証処理部１０４は、第１の認証処理部１０３で認証許可となった場合にのみ実施すればよい。
【００２９】
図３は、第１の実施形態による認証処理の内容を説明するための図である。図３の例では、スマートフォン１０にスマホアプリがインストールされた時点から３０日後の日時が有効期限Ｔｅとして設定されている。また、インストール直後にスマホアプリが初めて起動された後、有効期限Ｔｅが到来する前にｎ−１回目の起動が行われ、有効期限Ｔｅが過ぎた後にｎ回目の起動が行われたものとする。
【００３０】
ｎ回目の起動が行われたとき、第１の認証処理部１０３は、起動時刻検出部１０２により検出されたｎ回目（今回）の起動時刻Ｔａが、有効期限記憶部１２１に記憶されている有効期限Ｔｅを超えているか否かを判定する。図３の例では、ｎ回目の起動時刻Ｔａが有効期限Ｔｅを超えている。よって、この場合に第１の認証処理部１０３は、認証拒否とする。これは、スマートフォン１０のユーザが時計部１２３の時間巻き戻しといった不正操作を行っていない正常な状態での動作である。
【００３１】
これに対して、図３の点線矢印で示すように、ユーザがスマートフォン１０の時計部１２３を不正に操作して、時間を巻き戻していたとする。この場合、第１の認証処理部１０３は、起動時刻検出部１０２により検出されたｎ回目（今回）の起動時刻Ｔａ’が、有効期限記憶部１２１に記憶されている有効期限Ｔｅを超えていないと判定し、認証許可としてしまう。
【００３２】
一方、第２の認証処理部１０４は、起動時刻検出部１０２により検出されたｎ回目の起動時刻Ｔａ’（不正操作された今回の時刻）が、起動時刻記憶部１２２に記憶されているｎ−１回目（前回）の起動時刻Ｔａ−１よりも後か否かを判定する。図３の例では、不正に巻き戻されたｎ回目の起動時刻Ｔａ’は、ｎ−１回目の起動時刻Ｔａ−１よりも前となっている。よって、この場合に第２の認証処理部１０４は、認証拒否とする。
【００３３】
このように、第１の実施形態によれば、内部時計の巻き戻し操作により第１の認証処理部１０３によって行われる通常の認証が不正にパスされてしまう状況であっても、第２の認証処理部１０４による認証処理によって認証を拒否することができる。これにより、本来は有効期限Ｔｅを過ぎているスマホアプリの不正利用を防止することができる。
【００３４】
なお、ｎ−１回目の起動時刻Ｔａ−１と有効期限Ｔｅとの間の時刻（不正に巻き戻された時刻）にスマホアプリが起動された場合は、第２の認証処理もパスしてしまう。しかし、そのとき検出された不正な起動時刻Ｔａ’が次回のスマホアプリ起動時に前回の起動時刻として第２の認証処理に使われるので、次回の起動時はさらに第２の認証処理をパスしにくい状況となる。そして、いつかは必ず第２の認証処理をパスすることができなくなるので、ユーザが不正にスマホアプリを使い続けることはできない。
【００３５】
図４は、第１の実施形態によるスマートフォン１０の動作例を示すフローチャートである。図４に示すフローチャートは、例えば、スマホアプリが起動されたときに開始する。なお、ここでは、スマートフォン１０にスマホアプリがインストールされた場合、その直後にスマホアプリが自動的に起動するものとして説明する。
【００３６】
スマホアプリが起動されると、まず有効期限設定部１０１は、初回の起動か否かを判定する（ステップＳ１）。初回の起動であった場合、有効期限設定部１０１は、スマホアプリの有効期限Ｔｅを設定して有効期限記憶部１２１に記憶させる（ステップＳ２）。なお、スマホアプリの起動が初回ではない場合、ステップＳ２の処理は行わない。
【００３７】
次に、起動時刻検出部１０２は、スマホアプリの起動時刻Ｔａを検出し（ステップＳ３）、検出した起動時刻Ｔａを起動時刻記憶部１２２に記憶させる（ステップＳ４）。そして、第１の認証処理部１０３は、起動時刻検出部１０２により検出された今回の起動時刻Ｔａが、有効期限記憶部１２１に記憶されている有効期限Ｔｅを超えているか否かを判定する（ステップＳ５）。ここで、今回の起動時刻Ｔａが有効期限Ｔｅを超えている場合、第１の認証処理部１０３は認証結果を“拒否”とする（ステップＳ６）。これにより、図４に示すフローチャートの処理は終了する。
【００３８】
一方、今回の起動時刻Ｔａが有効期限Ｔｅを超えていない場合、第２の認証処理部１０４は、起動時刻検出部１０２により検出された今回の起動時刻Ｔａが、起動時刻記憶部１２２に記憶されている前回の起動時刻Ｔａ−１よりも後か否かを判定する（ステップＳ７）。ここで、今回の起動時刻Ｔａが前回の起動時刻Ｔａ−１よりも後である場合、第２の認証処理部１０４は認証結果を“許可”とする（ステップＳ８）。一方、今回の起動時刻Ｔａが前回の起動時刻Ｔａ−１よりも後ではない場合、第２の認証処理部１０４は認証結果を“拒否”とする（ステップＳ６）。これにより、図４に示すフローチャートの処理は終了する。
【００３９】
以上詳しく説明したように、第１の実施形態では、サーバ２０からスマホアプリをダウンロードしてインストールしたスマートフォン１０において、スマホアプリの今回の起動時刻が有効期限を超えているか否かを判定し、超えていない場合に認証許可、超えている場合に認証拒否とする第１の認証処理を行うとともに、今回の起動時刻が前回の起動時刻よりも後か否かを判定し、後である場合に認証許可、後でない場合に認証拒否とする第２の認証処理を行うようにしている。
【００４０】
このように構成した第１の実施形態によれば、スマートフォン１０からサーバ２０に接続することなく、スマートフォン１０にて行われる第１の認証処理によって、スマホアプリの有効期限が過ぎているか否かに基づく認証を行うことができる。仮に、ユーザによりスマートフォン１０の内部時計の巻き戻し操作が行われ、第１の認証処理部１０３によって行われる通常の認証が不正にパスされてしまう状況であっても、今回の起動時刻（改竄した不正な起動時間）が前回の起動時刻よりも前の時刻になっていると、第２の認証処理によって認証拒否とすることができる。これにより、スマートフォン１０からサーバ２０への接続ができない状況であっても、第１の認証処理および第２の認証処理によってスマホアプリの有効期限の認証を正しく行って、ユーザによるスマホアプリの不正利用を抑止することができる。
【００４１】
図５は、第１の実施形態によるスマートフォン１０の他の構成例を示す図である。なお、この図５において、図２に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図５に示すスマートフォン１０は、終了時刻検出部１０５を更に備えている。また、第２の認証処理部１０４および起動時刻記憶部１２２に代えて、第２の認証処理部１０４’および終了時刻記憶部１２４を備えている。
【００４２】
終了時刻検出部１０５は、起動されたスマホアプリの使用終了時刻（スマホアプリをシャットダウンした時刻）を検出する。すなわち、終了時刻検出部１０５は、スマホアプリの終了を検出したときに、そのときの日時を時計部１２３から取得する。終了時刻検出部１０５は、検出した終了時刻を終了時刻記憶部１２４に記憶させる。終了時刻記憶部１２４は、終了時刻検出部１０５により検出された終了時刻を少なくとも次回の起動時刻まで記憶しておく。
【００４３】
第２の認証処理部１０４’は、起動時刻検出部１０２により検出された今回の起動時刻が、終了時刻記憶部１２４に記憶されている前回の終了時刻よりも後か否かを判定する。そして、今回の起動時刻が前回の終了時刻よりも後である場合には認証許可、前回の終了時刻よりも後でない場合には認証拒否とする。
【００４４】
図６は、図５に示したスマートフォン１０による認証処理の内容を説明するための図である。図６の例でも図３と同様、スマートフォン１０にスマホアプリがインストールされた時点から３０日後の日時が有効期限Ｔｅとして設定されている。また、有効期限Ｔｅが到来する前にスマホアプリについてｎ−１回目の起動および終了が行われ、有効期限Ｔｅが過ぎた後にｎ回目の起動が行われたものとする。
【００４５】
ｎ回目の起動が行われたとき、第１の認証処理部１０３は、起動時刻検出部１０２により検出されたｎ回目（今回）の起動時刻Ｔａが、有効期限記憶部１２１に記憶されている有効期限Ｔｅを超えているか否かを判定する。図６の例では、ｎ回目の起動時刻Ｔａが有効期限Ｔｅを超えている。よって、この場合に第１の認証処理部１０３は、認証拒否とする。これは、スマートフォン１０のユーザが時計部１２３の時間巻き戻しといった不正操作を行っていない正常な状態での動作である。
【００４６】
これに対して、図６の点線矢印で示すように、ユーザが時計部１２３を不正に操作して、時間を巻き戻していたとする。この場合、第１の認証処理部１０３は、起動時刻検出部１０２により検出されたｎ回目（今回）の起動時刻Ｔａ’が、有効期限記憶部１２１に記憶されている有効期限Ｔｅを超えていないと判定し、認証許可としてしまう。
【００４７】
一方、第２の認証処理部１０４’は、起動時刻検出部１０２により検出されたｎ回目の起動時刻Ｔａ’（不正操作された今回の時刻）が、終了時刻記憶部１２４に記憶されているｎ−１回目（前回）の終了時刻Ｔｂ−１よりも後か否かを判定する。図６の例では、不正に巻き戻されたｎ回目の起動時刻Ｔａ’は、ｎ−１回目の終了時刻Ｔｂ−１よりも前となっている。よって、この場合に第２の認証処理部１３は、認証拒否とする。
【００４８】
このように、第２の認証処理部１０４’において、前回の起動時刻に代えて前回の終了時刻を用いて第２の認証処理を行うようにした場合、ユーザが内部時計を巻き戻したときに、今回の起動時刻Ｔａ’（改竄した不正な起動時間）が前回の終了時刻Ｔｂ−１よりも前の時刻になっている可能性が高くなる。こにより、ユーザが内部時計の巻き戻しにより有効期限の認証を不正にパスさせてしまう可能性をより低減することができる。
【００４９】
（第２の実施形態）
次に、本発明の第２の実施形態を説明する。第２の実施形態によるアプリケーションの有効期限認証システムの全体構成は、図１と同様である。図７は、第２の実施形態によるスマートフォン１０およびサーバ２０の構成例を示すブロック図である。なお、この図７において、図２に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。
【００５０】
図７に示すように、第２の実施形態によるスマートフォン１０は、接続判定部１１１、認証要求部１１２、認証結果受信部１１３、認証時刻検出部１１４および起動時刻設定部１１５を更に備えている。また、第２の実施形態によるスマートフォン１０は、起動時刻検出部１０２に代えて起動時刻検出部１０２’を備えている。一方、第２の実施形態によるサーバ２０は、有効期限設定部２０１、第３の認証処理部２０２、認証結果送信部２０３、有効期限記憶部２２１および時計部２２３を備えている。
【００５１】
スマートフォン１０の接続判定部１１１は、スマートフォン１０においてスマホアプリが起動されたときに、スマートフォン１０からサーバ２０に接続可能かどうかを判定する。例えば、スマートフォン１０からサーバ２０に対して所定の確認信号を送信し、それから所定時間以内にサーバ２０から応答信号が返ってくるか否かを判定する。そして、所定時間以内にレスポンスがあった場合は接続可能、なかった場合は接続不可能と判定する。接続判定部１１１は、判定の結果を起動時刻検出部１０２’および認証要求部１１２に通知する。
【００５２】
認証要求部１１２は、接続判定部１１１により接続可能と判定された場合、サーバ２０に接続して認証の要求を行う。このとき認証要求部１１２は、スマホアプリを特定可能な識別情報と共に認証要求をサーバ２０に送信する。スマホアプリを特定可能な識別情報の例として、スマホアプリがインストールされているスマートフォン１０またはそのユーザの識別情報、あるいは当該スマホアプリ自身の識別情報が挙げられる。
【００５３】
スマートフォン１０の識別情報としては、例えばＭＡＣアドレスを用いることが可能である。ユーザの識別情報としては、例えばスマホアプリのインストール時にサーバ２０に接続し、ユーザ操作に応じて登録したユーザ名やユーザＩＤなどを用いることが可能である。また、スマホアプリ自身の識別情報としては、サーバ２０側において発行したスマホアプリのシリアル番号などを用いることが可能である。これらの識別情報は、スマートフォン１０の図示しない記憶部に記憶させておく。
【００５４】
認証結果受信部１１３は、認証要求部１１２による要求に応じてサーバ２０において行われた第３の認証処理の結果を表す認証結果情報をサーバ２０から受信する。認証時刻検出部１１４は、認証結果受信部１１３がサーバ２０から受信した認証結果情報で示される第３の認証処理の結果が認証許可であった場合、サーバ２０において認証された時刻を検出する。この認証時刻は、サーバ２０が第３の認証処理を行ったときに時計部２２３から取得し、認証結果情報の中に含めて送信する。認証時刻検出部１１４は、認証結果受信部１１３にて受信した認証結果情報を確認することにより、認証時刻を検出する。
【００５５】
起動時刻設定部１１５は、認証時刻検出部１１４により検出された認証時刻を、スマホアプリの今回の起動時刻として設定する。すなわち、起動時刻設定部１１５は、起動時刻検出部１０２’により検出された起動時刻に代えて、認証時刻検出部１１４により検出された認証時刻をスマホアプリの今回の起動時刻として用いるように設定する。これにより、ユーザがスマートフォン１０の時計部１２３を操作して内部時計を巻き戻していたとしても、巻き戻された不正な時刻ではなく、サーバ２０にて認証が行われたときの正しい時刻でスマホアプリが起動されたとみなすことができる。
【００５６】
起動時刻検出部１０２’は、スマートフォン１０からサーバ２０に対する接続が不可能であると接続判定部１１１により判定された場合、第１の実施形態で説明したのと同様の処理を行う。すなわち、起動時刻検出部１０２’は、自身で検出した今回の起動時刻を起動時刻記憶部１２２に記憶させる。また、第１の認証処理部１０３および第２の認証処理部１０４は、起動時刻検出部１０２’により検出された起動時刻を用いて、第１の認証処理および第２の認証処理をそれぞれ行う。
【００５７】
一方、スマートフォン１０からサーバ２０に対する接続が可能であると接続判定部１１１により判定された場合、起動時刻検出部１０２’は、起動時刻設定部１１５により設定された起動時刻（つまり、サーバ２０の内部時計により検出された認証時刻であって、スマートフォン１０にてスマホアプリが起動されたときの本来の正しい時刻）を今回の起動時刻として起動時刻記憶部１２２に記憶させる。また、第２の認証処理部１０４は、起動時刻設定部１１５により設定された起動時刻を用いて、第２の認証処理を行う。なお、第１の認証処理部１０３による第１の認証処理は行わない。
【００５８】
サーバ２０の有効期限設定部２０１は、スマートフォン１０にダウンロードしたスマホアプリの有効期限を設定し、有効期限記憶部２２１に記憶させる。例えば、有効期限設定部２０１は、スマートフォン１０へのインストール直後にスマホアプリが起動されて認証要求が最初にサーバ２０に送られてきたときに、そのときの日時を時計部２２３から取得し、その日時から３０日後の日時を有効期限に設定して有効期限記憶部２２１に記憶させる。
【００５９】
ここで、スマホアプリの初回起動時にサーバ２０に接続できない場合（すなわち、サーバ２０による第３の認証処理を受けられない場合）はスマホアプリを利用できないようにしておき、始めに第３の認証処理を受けた時点を有効期限の起算点とする。このようにすれば、スマートフォン１０の内部で管理される有効期限とサーバ２０の内部で管理される有効期限とを一致させることができる。
【００６０】
有効期限設定部２０１は、スマホアプリの有効期限を有効期限記憶部２２１に記憶させる際、上述したスマホアプリを特定可能な識別情報と関連付けて有効期限を記憶させる。当該識別情報としてスマートフォン１０のＭＡＣアドレスを用いる場合、例えば、スマートフォン１０がサーバ２０に対して最初に送信する認証要求の中にＭＡＣアドレスを含ませておき、これを有効期限設定部２０１が取得して有効期限記憶部２２１に記憶させる。
【００６１】
スマホアプリを特定可能な識別情報としてユーザ名やユーザＩＤなどのユーザ情報を用いる場合、例えば、スマホアプリを最初に起動するときにユーザ情報の入力画面をスマートフォン１０に表示させ、当該入力画面を通じてユーザ情報をユーザ操作により入力させる。そして、スマートフォン１０がサーバ２０に対して最初に送信する認証要求の中に、入力画面を通じて入力されたユーザ情報を含ませておき、これを有効期限設定部２０１が取得して有効期限記憶部２２１に記憶させる。
【００６２】
また、スマホアプリを特定可能な識別情報としてスマホアプリのシリアル番号を用いる場合、例えば、最初にスマホアプリをサーバ２０からスマートフォン１０にダウンロードする際に、シリアル番号を通知する。そして、スマートフォン１０がサーバ２０に対して最初に送信する認証要求の中にシリアル番号を含ませておき、これを有効期限設定部２０１が取得して有効期限記憶部２２１に記憶させる。
【００６３】
第３の認証処理部２０２は、スマートフォン１０の認証要求部１１２から送られてくる認証要求に応じて、時計部２２３から取得されるサーバ２０の現在時刻が、有効期限記憶部２２１に記憶されているスマホアプリの有効期限を超えているか否かを判定する。そして、現在時刻が有効期限を超えていない場合には認証許可、超えている場合には認証拒否とする。この第３の認証処理部２０２による第３の認証処理は、スマートフォン１０の第１の認証処理部１０３による第１の認証処理に代えて行われる。
【００６４】
認証結果送信部２０３は、第３の認証処理部２０２によって行われた第３の認証処理の結果を表す認証結果情報をスマートフォン１０に送信する。上述したように、この認証結果情報の中には、時計部２２３から取得される認証時刻が含まれている。
【００６５】
図８は、第２の実施形態による認証処理の内容を説明するための図である。図８の例では、スマートフォン１０にスマホアプリがインストールされた時点から３０日後の日時が有効期限Ｔｅとして設定されている。また、インストール直後にスマホアプリが初めて起動された後、有効期限Ｔｅが到来する前にｎ−１回目の起動が行われ、有効期限Ｔｅが過ぎた後にｎ回目の起動が行われたものとする。
【００６６】
また、図８は、ｎ−１回目の起動時にはスマートフォン１０がサーバ２０に接続可能だったため第２の認証処理および第３の認証処理を受け、ｎ回目の起動時にはスマートフォン１０がサーバ２０に接続不可能だったため第１の認証処理および第２の認証処理を受けた例を示している。また、ｎ−１回目の起動時もｎ回目の起動時も、ユーザによるスマートフォン１０の内部時計の不正な巻き戻しが行われていたとする。
【００６７】
ｎ−１回目の起動が行われたとき、スマートフォン１０がサーバ２０に接続可能であると、スマートフォン１０の第１の認証処理部１０３に代えて、サーバ２０の第３の認証処理部２０２による認証処理が行われる。この場合、第３の認証処理部２０２は、時計部２２３から取得されるサーバ２０の現在時刻Ｔｎ−１が、有効期限記憶部２２１に記憶されているスマホアプリの有効期限Ｔｅを超えているか否かを判定する。図８の例では、現在時刻Ｔｎ−１が有効期限Ｔｅを超えていないので、認証結果は許可となる。この場合、サーバ２０の現在時刻Ｔｎ−１が認証時刻となる。
【００６８】
この場合、認証結果送信部２０３は、認証許可の結果を表す認証結果情報（認証時刻Ｔｎ−１を含む）をスマートフォン１０に送信する。スマートフォン１０では、この認証結果情報に基づいて認証時刻検出部１１４が認証時刻Ｔｎ−１を検出する。そして、点線矢印Ａで示すように、起動時刻設定部１１５が、起動時刻検出部１０２’により検出されたスマホアプリの起動時刻Ｔａ−１’（不正に巻き戻された時刻）に代えて、認証時刻検出部１１４により検出された認証時刻Ｔｎ−１を今回の起動時刻として設定する。よって、この認証時刻Ｔｂ−１が起動時刻記憶部１２２に記憶され、ｎ回目の起動時における第２の認証処理に使われる。なお、ｎ−１回目の起動時においても認証時刻Ｔｎ−１を今回の起動時刻に用いた第２の認証処理が行われるが、図８の例では認証許可となる。
【００６９】
ｎ回目の起動時において、スマートフォン１０がサーバ２０に接続不可能であると、第１の認証処理部１０３は、スマートフォン１０の起動時刻検出部１０２’により検出されたｎ回目（今回）の起動時刻Ｔａ’（点線矢印Ｂのように不正に巻き戻された時刻）が、有効期限記憶部１２１に記憶されている有効期限Ｔｅを超えているか否かを判定する。この場合、不正に巻き戻されたｎ回目の起動時刻Ｔａ’が有効期限Ｔｅを超えていないので、認証許可となってしまう。
【００７０】
一方、第２の認証処理部１０４は、起動時刻検出部１０２’により検出されたｎ回目の起動時刻Ｔａ’（不正操作された今回の時刻）が、起動時刻記憶部１２２に記憶されているｎ−１回目（前回）の起動時刻Ｔｎ−１よりも後か否かを判定する。図８の例では、不正に巻き戻されたｎ回目の起動時刻Ｔａ’は、ｎ−１回目の起動時刻Ｔｎ−１よりも前となっている。よって、この場合に第２の認証処理部１０４は、認証拒否とする。
【００７１】
図９は、第２の実施形態によるスマートフォン１０の動作例を示すフローチャートである。図９に示すフローチャートは、例えば、スマホアプリが起動されたときに開始する。なお、ここでは、スマートフォン１０にスマホアプリがインストールされた場合、その直後にスマホアプリが自動的に起動するものとして説明する。
【００７２】
スマートフォン１０においてスマホアプリが起動されると、まず有効期限設定部１０１は、初回の起動か否かを判定する（ステップＳ１１）。初回の起動であった場合、接続判定部１１１は、スマートフォン１０からサーバ２０に接続可能かどうかを判定する（ステップＳ１２）。ここで、接続不可能能と判定された場合、図９に示すフローチャートの処理は終了する。一方、接続可能と判定された場合、有効期限設定部１０１は、スマホアプリの有効期限Ｔｅを設定して有効期限記憶部１２１に記憶させる（ステップＳ１３）。
【００７３】
その後、認証要求部１１２は、サーバ２０に接続して認証の要求を行う（ステップＳ１４）。この認証要求を受け取ったサーバ２０では、有効期限設定部２０１が、認証要求に含まれる識別情報により特定されるスマホアプリが最初に行っている認証要求か否かを判定する（ステップＳ１５）。例えば、サーバ２０において、スマホアプリの識別情報に関連付けて、第３の認証処理部２０２による認証処理を行った回数を記憶させておいたり、初回の認証要求か否かを示すフラグ情報を記憶させておくことにより、初回の認証要求か否かを判定することが可能である。
【００７４】
有効期限設定部２０１は、初回の認証要求であると判定された場合、スマホアプリの有効期限Ｔｅを設定して有効期限記憶部２２１に記憶させる（ステップＳ１６）。なお、認証要求が初回ではない場合、ステップＳ１６の処理は行わない。次に、第３の認証処理部２０２は、サーバ２０の時計部２２３から取得されるサーバ２０の現在時刻Ｔｎが、有効期限記憶部２２１に記憶されているスマホアプリの有効期限Ｔｅを超えているか否かを判定する（ステップＳ１７）。
【００７５】
ここで、サーバ２０の現在時刻Ｔｎが有効期限Ｔｅを超えていない場合、第３の認証処理部２０２は認証結果を“許可”とする（ステップＳ１８）。一方、サーバ２０の現在時刻Ｔｎが有効期限Ｔｅを超えている場合、第３の認証処理部２０２は認証結果を“拒否”とする（ステップＳ１９）。その後、認証結果送信部２０３は、現在時刻Ｔｎを認証時刻に設定して（ステップＳ２０）、その認証時刻Ｔｎを含めて認証結果情報をスマートフォン１０に送信する（ステップＳ２１）。
【００７６】
スマートフォン１０では、認証結果送信部２０３により送信された認証結果情報を認証結果受信部１１３が受信する（ステップＳ２２）。認証時刻検出部１１４は、認証結果情報により示される認証結果が“許可”であるか否かを判定する（ステップＳ２３）。ここで、認証結果が“許可”でなかった場合、図９に示すフローチャートの処理は終了する。この場合、スマホアプリは使用できない状態となる。
【００７７】
一方、認証結果が“許可”であった場合、認証時刻検出部１１４は、認証結果受信部１１３にて受信した認証結果情報を確認することにより、認証時刻Ｔｎを検出する。そして、起動時刻設定部１１５は、認証時刻検出部１１４により検出された認証時刻Ｔｎを、スマホアプリの今回の起動時刻Ｔａとして設定する（ステップＳ２４）。この場合、起動時刻検出部１０２’は、起動時刻設定部１１５により設定されたスマホアプリの起動時刻Ｔａ（＝サーバ２０の認証時刻Ｔｎ）を起動時刻記憶部１２２に記憶させる（ステップＳ２５）。
【００７８】
次に、第２の認証処理部１０４は、起動時刻設定部１１５により設定された今回の起動時刻Ｔａ（＝Ｔｎ）が、起動時刻記憶部１２２に記憶されている前回の起動時刻Ｔａ−１よりも後か否かを判定する（ステップＳ２６）。ここで、今回の起動時刻Ｔａが前回の起動時刻Ｔａ−１よりも後である場合、第２の認証処理部１０４は認証結果を“許可”とする（ステップＳ２７）。一方、今回の起動時刻Ｔａが前回の起動時刻Ｔａ−１よりも後ではない場合、第２の認証処理部１０４は認証結果を“拒否”とする（ステップＳ２８）。これにより、図９に示すフローチャートの処理は終了する。
【００７９】
上記ステップＳ１１において、スマホアプリが初回の起動でないと有効期限設定部１０１により判定された場合、接続判定部１１１は、スマートフォン１０からサーバ２０に接続可能かどうかを判定する（ステップＳ２９）。ここで、接続可能と判定された場合、処理はステップＳ１４に進む。一方、接続不可能と判定された場合、起動時刻検出部１０２’は、スマホアプリの起動時刻Ｔａを検出し（ステップＳ３０）、検出した起動時刻Ｔａを起動時刻記憶部１２２に記憶させる（ステップＳ３１）。
【００８０】
そして、第１の認証処理部１０３は、起動時刻検出部１０２’により検出された今回の起動時刻Ｔａが、有効期限記憶部１２１に記憶されている有効期限Ｔｅを超えているか否かを判定する（ステップＳ３２）。ここで、今回の起動時刻Ｔａが有効期限Ｔｅを超えている場合、第１の認証処理部１０３は認証結果を“拒否”とする（ステップＳ２８）。これにより、図９に示すフローチャートの処理は終了する。
【００８１】
一方、今回の起動時刻Ｔａが有効期限Ｔｅを超えていない場合、第２の認証処理部１０４は、起動時刻検出部１０２’により検出された今回の起動時刻Ｔａが、起動時刻記憶部１２２に記憶されている前回の起動時刻Ｔａ−１よりも後か否かを判定する（ステップＳ３３）。ここで、今回の起動時刻Ｔａが前回の起動時刻Ｔａ−１よりも後である場合、第２の認証処理部１０４は認証結果を“許可”とする（ステップＳ２７）。一方、今回の起動時刻Ｔａが前回の起動時刻Ｔａ−１よりも後でない場合、第２の認証処理部１０４は認証結果を“拒否”とする（ステップＳ２８）。これにより、図９に示すフローチャートの処理は終了する。
【００８２】
以上詳しく説明したように、第２の実施形態によれば、内部時計の巻き戻し操作により第１の認証処理部１０３によって行われる通常の認証が不正にパスされてしまう状況であっても、第２の認証処理部１０４による認証処理によって認証を拒否することができる。しかも、第２の実施形態によれば、スマホアプリの起動時にスマートフォン１０からサーバ２０に接続可能な場合は、第１の認証処理に代えて、サーバ２０の内部時計を用いた第３の認証処理が行われ、その認証時刻がスマホアプリの今回の起動時刻とみなされる。そして、その正しい起動時刻（サーバ２０の認証時刻）が、次回のスマホアプリ起動時における第２の認証処理において前回の起動時刻として用いられるので、次回のスマホアプリ起動時においても有効期限の認証を不正にパスさせてしまう可能性をより低減することができる。
【００８３】
なお、上記第２の実施形態では、接続判定部１１によりスマートフォン１０がサーバ２０に接続可能と判定された場合、スマートフォン１０の第１の認証処理部１０３に代えてサーバ２０の第３の認証処理部２０２による認証を行う例について説明したが、本発明はこれに限定されない。例えば、スマートフォン１０がサーバ２０に接続可能と判定された場合、スマートフォン１０の第１の認証処理部１０２および第２の認証処理部１０４に代えてサーバ２０の第３の認証処理部２０２による認証を行うようにしてもよい。
【００８４】
また、上記第２の実施形態では、スマホアプリが起動される都度、起動時刻検出部１０２’が起動時刻Ｔａ（起動時刻検出部１０２’自身で検出した起動時刻または起動時刻設定部１１５により設定されたサーバ２０の認証時刻の何れか）を起動時刻記憶部１２２に記憶させる例について説明したが、本発明はこれに限定されない。例えば、起動時刻検出部１０２’が今回記憶させようとしている起動時刻Ｔａが、既に起動時刻記憶部１２２に記憶されている前回の起動時刻Ｔａ−１よりも後になっている場合にのみ、今回の起動時刻Ｔａを記憶させるようにしてもよい。
【００８５】
例えば、図８の例において、ｎ−１回目の起動時にサーバ２０の認証時刻Ｔｂ−１をスマホアプリの起動時刻Ｔａ−１として起動時刻記憶部１２２に記憶させた後、ｎ回の起動時にスマートフォン１０がサーバ２０に接続できない場合、ｎ回目の起動時に起動時刻検出部１０２’が起動時刻記憶部１２２に記憶させる起動時刻Ｔａは、起動時刻検出部１０２’で検出したものとなる。しかし、この起動時刻が不正な時計巻き戻しによる時刻Ｔａ’である場合、図８のように、今回の起動時刻Ｔａ’が、既に起動時刻記憶部１２２に記憶されている前回の起動時刻Ｔａ−１（＝Ｔｎ−１）よりも前となる。よって、この場合、起動時刻検出部１０２’は、今回の起動時刻Ｔａ’を起動時刻記憶部１２２に記憶させず、既に起動時刻記憶部１２２に記憶されている起動時刻Ｔａ−１（＝Ｔｎ−１）をそのまま保持する。
【００８６】
図１０は、第２の実施形態によるスマートフォン１０の他の構成例を示す図である。なお、この図１０において、図７に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図１０に示すスマートフォン１０は、経過時間計測部１０６および終了時刻設定部１０７を更に備えている。また、図７に示した第２の認証処理部１０４および起動時刻記憶部１２２に代えて、第２の認証処理部１０４’および終了時刻記憶部１２４を備えている。
【００８７】
経過時間計測部１０６は、時計部１２３を用いて、スマホアプリの起動時刻から、スマホアプリが終了（シャットダウン）するまでの経過時間を計測する。ここで、起動時刻は、スマートフォン１０がサーバ２０に接続不可能な場合は、起動時刻検出部１０２’により検出された起動時刻である。一方、スマートフォン１０がサーバ２０に接続可能な場合は、起動時刻設定部１１５がサーバ２０から取得して今回の起動時刻として起動時刻検出部１０２’に設定した認証時刻である。
【００８８】
終了時刻設定部１０７は、起動時刻検出部１０２’により検出された今回の起動時刻または起動時刻設定部１１５により設定された今回の起動時刻に対して経過時間計測部１０６により計測された経過時間を加算した時刻を、スマホアプリの使用終了時刻として設定する。そして、終了時刻設定部１０７は、設定した終了時刻を終了時刻記憶部１２４に記憶させる。終了時刻記憶部１２４は、終了時刻設定部１０７により設定された終了時刻を少なくとも次回の起動時刻まで記憶しておく。
【００８９】
第２の認証処理部１０４’は、起動時刻検出部１０２’により検出された今回の起動時刻または起動時刻設定部１１５により設定された今回の起動時刻が、終了時刻記憶部１２４に記憶されている前回の終了時刻よりも後か否かを判定する。そして、今回の起動時刻が前回の終了時刻よりも後である場合には認証許可、前回の終了時刻よりも後でない場合には認証拒否とする。
【００９０】
図１１は、図１０に示したスマートフォン１０による認証処理の内容を説明するための図である。図１１の例でも図８と同様、スマートフォン１０にスマホアプリがインストールされた時点から３０日後の日時が有効期限Ｔｅとして設定されている。また、インストール直後にスマホアプリが初めて起動された後、有効期限Ｔｅが到来する前にｎ−１回目の起動が行われ、有効期限Ｔｅが過ぎた後にｎ回目の起動が行われたものとする。
【００９１】
また、図１１は、ｎ−１回目の起動時にはスマートフォン１０がサーバ２０に接続可能だったため第２の認証処理および第３の認証処理を受け、ｎ回目の起動時にはスマートフォン１０がサーバ２０に接続不可能だったため第１の認証処理および第２の認証処理を受けた例を示している。また、ｎ−１回目の起動時もｎ回目の起動時も、ユーザによるスマートフォン１０の内部時計の不正な巻き戻しが行われていたとする。
【００９２】
ｎ−１回目の起動が行われたとき、スマートフォン１０がサーバ２０に接続可能であると、スマートフォン１０の第１の認証処理部１０３に代えて、サーバ２０の第３の認証処理部２０２による認証処理が行われる。この場合、第３の認証処理部２０２は、時計部２２３から取得されるサーバ２０の現在時刻Ｔｎ−１が、有効期限記憶部２２１に記憶されているスマホアプリの有効期限Ｔｅを超えているか否かを判定する。図１１の例では、現在時刻Ｔｎ−１が有効期限Ｔｅを超えていないので、認証結果は許可となる。
【００９３】
この場合、認証結果送信部２０３は、認証許可の結果を表す認証結果情報（認証時刻Ｔｎ−１を含む）をスマートフォン１０に送信する。スマートフォン１０では、この認証結果情報に基づいて認証時刻検出部１１４が認証時刻Ｔｎ−１を検出する。そして、起動時刻設定部１１５が、起動時刻検出部１０２’により検出されたスマホアプリの起動時刻Ｔａ−１’（不正に巻き戻された時刻）に代えて、認証時刻検出部１１４により検出された認証時刻Ｔｎ−１を今回の起動時刻として設定する。
【００９４】
ここで、第２の認証処理部１０４’は、今回の起動時刻として設定された認証時刻Ｔｎ−１が、終了時刻記憶部１２４に記憶されているｎ−２回目（前回）の終了時刻（図示せず）よりも後か否かを判定する。図１１の例では、今回の起動時刻（＝認証時刻Ｔｎ−１）は前回の終了時刻よりも後と判定され、認証許可となる。
【００９５】
さらに、この今回の起動時刻（＝認証時刻Ｔｎ−１）からスマホアプリを終了するまでの経過時間Ｙが経過時間計測部１０６により計測され、認証時刻Ｔｎ−１にこの経過時間Ｙを加算した時刻Ｔｂ−１（＝Ｔｎ−１＋Ｙ）がスマホアプリの終了時刻として終了時刻設定部１０７により設定される。よって、この終了時刻Ｔｂ−１が終了時刻記憶部１２４に記憶され、ｎ回目の起動時における第２の認証処理に使われる。
【００９６】
ｎ回目の起動時において、スマートフォン１０がサーバ２０に接続不可能であると、第１の認証処理部１０３は、スマートフォン１０の起動時刻検出部１０２’により検出されたｎ回目（今回）の起動時刻Ｔａ’（不正に巻き戻された時刻）が、有効期限記憶部１２１に記憶されている有効期限Ｔｅを超えているか否かを判定する。この場合、不正に巻き戻されたｎ回目の起動時刻Ｔａが有効期限Ｔｅ’を超えていないので、認証許可となってしまう。
【００９７】
一方、第２の認証処理部１０４’は、起動時刻検出部１０２’により検出されたｎ回目の起動時刻Ｔａ’（不正操作された今回の時刻）が、終了時刻記憶部１２４に記憶されているｎ−１回目（前回）の終了時刻Ｔｂ−１（＝Ｔｎ−１＋Ｙ）よりも後か否かを判定する。図１１の例では、不正に巻き戻されたｎ回目の起動時刻Ｔａ’は、ｎ−１回目の終了時刻Ｔｂ−１よりも前となっている。よって、この場合に第２の認証処理部１０４’は、認証拒否とする。
【００９８】
このように、第２の認証処理部１０４’において、前回の起動時刻に代えて前回の終了時刻を用いて第２の認証処理を行うようにした場合、ユーザが内部時計を巻き戻したときに、今回の起動時刻（改竄した不正な起動時間）が前回の終了時刻よりも前の時刻になっている可能性が高くなる。こにより、ユーザが内部時計の巻き戻しにより有効期限の認証を不正にパスさせてしまう可能性をより低減することができる。
【００９９】
また、図１０の例では、スマートフォン１０の時計部１２３を用いてスマホアプリの終了時刻を検出するのではなく、起動時刻検出部１０２’により検出された今回の起動時刻または起動時刻設定部１１５により設定された今回の起動時刻に対して経過時間計測部１０６により計測された経過時間を加算した時刻を、スマホアプリの使用終了時刻として設定している。このようにすれば、サーバ２０に接続して取得した認証時刻を今回の起動時刻として設定した場合には、スマートフォン１０の時計部１２３が不正に巻き戻されていたとしても、本来の正しい起動時刻（＝認証時刻）を起点としてスマホアプリが使用されている間に計測される経過時間をもとに正しい終了時刻を検出し、終了時刻記憶部１２４に記憶させることができる。これにより、次回の起動時に第２の認証処理を行う場合に、内部時計の巻き戻しにより起動時刻が改竄されていても、前回の終了時刻よりも前の時刻になっている可能性がより高くなり、スマホアプリの不正利用をより確実に防止することができる。
【０１００】
なお、上記第１の実施形態では終了時刻検出部１０５によりスマホアプリの終了時刻を検出したが、第２の実施形態と同様に、起動時刻検出部１０２により検出された起動時刻からスマホアプリが終了するまでの経過時間を計測し、今回の起動時刻に対して経過時間を加算した時刻をスマホアプリの使用終了時刻として設定するようにしてもよい。
【０１０１】
その他、上記第１および第２の実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１０２】
１０  スマートフォン
２０  サーバ
１０１  有効期限設定部
１０２  起動時刻検出部
１０３  第１の認証処理部
１０４，１０４’  第２の認証処理部
１０５  終了時刻検出部
１０６  経過時間計測部
１０７  終了時刻設定部
１１１  接続判定部
１１２  認証要求部
１１３  認証結果受信部
１１４  認証時刻検出部
１１５  起動時刻設定部
１２１  有効期限記憶部
１２２  起動時刻記憶部
１２３  時計部
１２４  終了時刻記憶部
２０１  有効期限設定部
２０２  第３の認証処理部
２０３  認証結果送信部
２２１  有効期限記憶部
２２３  時計部
【図１】
2015207152.tif 000003
【図２】
2015207152.tif 000004
【図３】
2015207152.tif 000005
【図４】
2015207152.tif 000006
【図５】
2015207152.tif 000007
【図６】
2015207152.tif 000008
【図７】
2015207152.tif 000009
【図８】
2015207152.tif 000010
【図９】
2015207152.tif 000011
【図１０】
2015207152.tif 000012
【図１１】
2015207152.tif 000013