(57)【要約】【課題】セキュアデバイス内またはサーバ内での処理負荷及びカードアプリまたはサーバアプリのコードサイズを低く抑えたまま、端末アプリの認証情報演算の内容を毎回異なる複雑な演算処理にする。【解決手段】アプリローダ３０１からアプリ管理部１０１１に端末アプリ３０２の発行要求があると、指示内容実行部１０１２は、情報処理端末３０に処理を行わせるアプリケーションとの認証処理に必要な認証鍵の演算に用いる認証情報を端末アプリ３０２に埋め込み、演算複雑化部１０１３は、演算結果を答えとする演算問題を作成し認証情報演算の一部として端末アプリ３０２に埋め込む。認証情報演算部１０１４は、認証情報と演算結果を演算して認証鍵を生成し、認証処理部１０３２は、認証鍵によって端末アプリ３０２の認証処理を行う。これにより、演算処理の複雑さは増加せず、端末アプリ３０２の認証情報演算は毎回異なる複雑な演算内容となる。【選択図】図１
2007183931.tif 000002
【特許請求の範囲】
【請求項１】
情報処理端末に装着され、データを格納すると共に演算を秘匿した状態で実行するセキュアデバイスであって、
前記情報処理端末に処理を行わせるためのアプリケーションを格納する記憶部と、
前記アプリケーションと前記セキュアデバイスとの認証処理に必要な認証鍵を計算するために用いる認証情報を前記アプリケーションに埋め込む指示内容実行部と、
あらかじめ選択された演算結果を解答とする演算問題を作成し、その演算問題を認証情報演算の一部として前記アプリケーションに埋め込む演算複雑化部と、
前記認証情報と前記演算結果を演算して認証鍵を生成する認証情報演算部と、
前記認証鍵により、前記情報処理端末が実行するアプリケーションとの認証処理を行う認証処理部と、
を備えるセキュアデバイス。
【請求項２】
前記記憶部は、
前記演算複雑化部による前記演算問題の作成に用いられる演算複雑化情報をさらに格納し、
前記演算複雑化情報には、少なくとも演算問題と演算結果の組が保持されている、
請求項１に記載のセキュアデバイス。
【請求項３】
前記演算問題のデータは、前記アプリケーションに埋め込むことが可能なプログラムコードのイメージを含む、
請求項１または請求項２に記載のセキュアデバイス。
【請求項４】
前記プログラムコードのイメージは、前記演算問題を解くためのコードである、
請求項３に記載のセキュアデバイス。
【請求項５】
前記演算複雑化部は、
前記アプリケーションが行う複雑な演算結果の一部が前記演算複雑化情報に保持された演算結果となるように、対応する演算問題を選択する、
請求項２から請求項４のいずれかに記載のセキュアデバイス。
【請求項６】
データを格納すると共に演算を秘匿した状態で実行するセキュアデバイスと、アプリケーションの発行を要求し、前記セキュアデバイスから複雑化された演算を含むアプリケーションを受信して起動するアプリローダとを備える情報処理端末であって、
前記セキュアデバイスが、
前記情報処理端末に処理を行わせるためのアプリケーションを格納する記憶部と、
前記アプリケーションと前記セキュアデバイスとの認証処理に必要な認証鍵を計算するために用いる認証情報を前記アプリケーションに埋め込む指示内容実行部と、
あらかじめ選択された演算結果を解答とする演算問題を作成し、その演算問題を認証情報演算の一部として前記アプリケーションに埋め込む演算複雑化部と、
前記認証情報と前記演算結果を演算して認証鍵を生成する認証情報演算部と、
前記認証鍵により、前記情報処理端末が実行するアプリケーションとの認証処理を行う認証処理部と、
を備える情報処理端末。
【請求項７】
前記記憶部は、
前記演算複雑化部による前記演算問題の作成に用いられる演算複雑化情報をさらに格納し、
前記演算複雑化情報には、少なくとも演算問題と演算結果の組が保持されている、
請求項６に記載の情報処理端末。
【請求項８】
前記演算問題のデータは、前記アプリケーションに埋め込むことが可能なプログラムコードのイメージを含む、
請求項６または請求項７に記載の情報処理端末。
【請求項９】
前記プログラムコードのイメージは、前記演算問題を解くためのコードである、
請求項８に記載の情報処理端末。
【請求項１０】
前記演算複雑化部は、
前記アプリケーションが行う複雑な演算結果の一部が前記演算複雑化情報に保持された演算結果となるように、対応する演算問題を選択する、
請求項７から請求項９のいずれかに記載の情報処理端末。
【請求項１１】
情報処理端末に処理を行わせるためのアプリケーションを前記情報処理端末に送信するサーバであって、
前記アプリケーションを格納する記憶部と、
前記アプリケーションと前記サーバとの認証処理に必要な認証鍵を計算するために用いる認証情報を前記アプリケーションに埋め込む指示内容実行部と、
あらかじめ選択された演算結果を解答とする演算問題を作成し、その演算問題を認証情報演算の一部として前記アプリケーションに埋め込む演算複雑化部と、
前記認証情報と前記演算結果を演算して認証鍵を生成する認証情報演算部と、
前記認証鍵により、前記情報処理端末が実行するアプリケーションとの認証処理を行う認証処理部と、
を備えるサーバ。
【請求項１２】
前記記憶部は、
前記演算複雑化部による前記演算問題の作成に用いられる演算複雑化情報をさらに格納し、
前記演算複雑化情報には、少なくとも演算問題と演算結果の組が保持されている、
請求項１１に記載のサーバ。
【請求項１３】
前記演算問題のデータは、前記アプリケーションに埋め込むことが可能なプログラムコードのイメージを含む、
請求項１１または請求項１２に記載のサーバ。
【請求項１４】
前記プログラムコードのイメージは、前記演算問題を解くためのコードである、
請求項１３に記載のサーバ。
【請求項１５】
前記演算複雑化部は、
前記アプリケーションが行う複雑な演算結果の一部が前記演算複雑化情報に保持された演算結果となるように、対応する演算問題を選択する、
請求項１２から請求項１４のいずれかに記載のサーバ。
【請求項１６】
前記演算複雑化部が作成する演算問題の複雑度を選択する複雑度選択部、をさらに備える、
請求項１１から請求項１５のいずれかに記載のサーバ。
【請求項１７】
情報処理端末に処理を行わせるためのアプリケーションとの認証処理に必要な認証鍵を計算するのに用いる認証情報と、演算結果と、を選択するステップと、
選択された演算結果を解答とする演算問題を作成するステップと、
選択された認証情報を前記アプリケーションに埋め込み、作成された演算問題を認証情報演算の一部として前記アプリケーションに埋め込むステップと、
前記認証情報および前記演算問題が埋め込まれた前記アプリケーションを前記情報処理端末に送信するステップと、
前記情報処理端末に送信した前記アプリケーションに埋め込まれた前記認証情報と前記演算結果を演算して生成される認証鍵により、前記情報処理端末が実行するアプリケーションとの認証処理を行うステップと、
を備えることを特徴とする認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非対称演算によって認証を行うセキュアデバイス、情報処理端末、サーバ、およびこれら認証方法に関し、特に、データをセキュアに保持するＩＣ（Integrated Circuit）カード等のセキュアデバイスと、そのセキュアデバイスを搭載する携帯電話、ＰＤＡ（Personal Digital Assistant）、およびパーソナルコンピュータなどの情報処理端末と、データをセキュアに保持するサーバと、認証方法とに関する。
【背景技術】
【０００２】
近年、ＩＣカード等のＣＰＵ（Central Processing Unit）と耐タンパ性のある記憶領域を持つセキュアデバイスは、カードアプリケーション（以下、適宜アプリケーションを略して「アプリ」という）を動作させることが可能であり、電子マネー、定期券、電子チケット等のサービスに利用されている。このセキュアデバイスを携帯電話等の情報処理端末に装着し、セキュアデバイスに対するユーザ・インターフェースとして情報処理端末のキーボードやディスプレイを使用し、また、セキュアデバイスに書き込むデータや読み出したデータを、情報処理端末の通信機能を利用してネットワーク上で伝送することにより、様々なサービスを実行することができる。それらのサービスを実行する際に情報処理端末が行うべき動作を規定した端末アプリが情報処理端末上で動作する。また、音楽データ配信などの利用に制約を設けるべきサービスにおいて、データをセキュアに保持しサーバアプリを動作させるサーバへのアクセスを専用の端末アプリに対してのみ許可することが行われている。
【０００３】
情報処理端末は、従来、ネットワークを通じてサービス・プロバイダから端末アプリをダウンロードするなどして、所望の端末アプリを取得している。このようなダウンロード方式では、情報処理端末上で起動される、セキュアデバイスやセキュアにデータを保持するサーバ（以下単に「サーバ」という）にアクセスする端末アプリが、セキュアデバイスやサーバから見て真正なものであるか否かが分からない。そのため、正規のユーザが図らずも不正な端末アプリを用いてしまい、真正な端末アプリに課せられるはずの制約を受けることなく、セキュアデバイスまたはサーバの情報やサービスを利用できてしまうことがある。このことは、例えば、情報処理端末への保存や、ネットワークへの送信、および印刷が禁止されている情報などに対して、それらの動作を可能にしてしまうことを示している。そのような状態では、機密情報の機密性、価値情報の価値の保護などを十分に確保することができない。
【０００４】
そのような不具合を解決するために、セキュアデバイスと端末アプリとの間で認証処理を行わせる方式があり、この方式は典型的な二者間の認証方式として知られている。この方式は、双方の情報処理端末がパスワードやＩＤのような認証情報を演算し、この認証情報演算によって暗号アルゴリズムで用いる鍵を生成し、両者が同じ鍵を生成したことを確認することによって認証としている（例えば、特許文献１参照）。
【０００５】
このとき、端末アプリの認証情報演算を行う要素が容易に解析できるものであると、パスワードを推測して鍵を生成することが可能になる。もし、パスワードの推測によって鍵の生成が可能になると、セキュアデバイスに認証要求を何度も行わずに、以前に成功した認証処理でやりとりされた情報を利用することで、不正な第三者によってパスワードを発見する攻撃が可能となってしまう。また、逆に、パスワードを知っている場合に、別に作成した端末アプリにおいて鍵を生成して認証を行うことで、真正な端末アプリに課せられるはずの制約を回避することが可能になる。
【０００６】
このような事態を防ぐために、端末アプリの認証情報演算を複雑にして解析を困難にすることが考えられる。しかし、認証情報演算を複雑にすればするほど解析を困難にすることができるが、セキュアデバイスやサーバでも同じ鍵を生成する同じ認証情報演算を行わなければならない。そのためには、カードアプリやサーバが実行するアプリケーションの処理負荷とコードサイズが増大する。したがって、ＣＰＵの処理速度やメモリの演算処理能力が限られているセキュアデバイスでは、認証情報演算をあまり複雑にすることはできない。また、多数の情報処理端末から端末アプリの要求を受けるサーバでも、短時間に集中して複数の要求がある可能性があるため、やはり認証情報演算を複雑にすることは難しい。そこで、特定の認証情報演算に対してはテーブルを用いて演算処理を行う方法を適用することにより、セキュアデバイスやサーバにおける認証情報演算の複雑性を下げる技術が開示されている（例えば、特許文献２参照）。
【特許文献１】特開２００３−２６３４１４号公報
【特許文献２】特開平１１−２８８２１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、前記特許文献を含む従来の技術では認証情報演算の内容は変化しないため、いくら認証情報演算を複雑にしても、一度、認証情報の演算内容を解析されてしまうと不正が可能となる。しかも、従来の技術では、ＣＰＵの処理速度やメモリの演算処理能力の限られているセキュアデバイス側や個々の認証処理による装置負荷を低減すべきサーバ側で同等の複雑な処理をしなければならないという課題は依然として解消されていない。
【０００８】
本発明はこのような事情に鑑みてなされたものであり、セキュアデバイス内での処理負荷およびカードアプリのコードサイズを低く抑えたままで、端末アプリの認証情報演算の内容を毎回異なる複雑な演算処理にすることができるセキュアデバイス、このセキュアデバイスを搭載した情報処理端末、および認証方法を提供することを目的とする。さらに、本発明は、サーバ内での処理負荷およびサーバアプリのコードサイズを低く抑えたままで、端末アプリの認証情報演算の内容を毎回異なる複雑な演算処理にすることができるサーバを提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記従来の課題を解決するために、本発明のセキュアデバイスは、情報処理端末に装着され、データを格納すると共に演算を秘匿した状態で実行するセキュアデバイスであって、前記情報処理端末に処理を行わせるためのアプリケーションを格納する記憶部と、前記アプリケーションと前記セキュアデバイスとの認証処理に必要な認証鍵を計算するために用いる認証情報を前記アプリケーションに埋め込む指示内容実行部と、あらかじめ選択された演算結果を解答とする演算問題を作成し、その演算問題を認証情報演算の一部として前記アプリケーションに埋め込む演算複雑化部と、前記認証情報と前記演算結果を演算して認証鍵を生成する認証情報演算部と、前記認証鍵により、前記情報処理端末が実行するアプリケーションとの認証処理を行う認証処理部とを備える構成を採っている。
【００１０】
このような構成によれば、セキュアデバイス内ではあらかじめ選択された演算結果を用いるために演算処理の複雑さがほとんど上がらない。しかも、演算問題を解かなければならない端末アプリケーションの認証情報演算は、複雑な演算内容となる。また、ある演算結果を回答とする演算問題は、通常、複数存在するため、端末アプリケーションの認証情報演算を毎回異なる内容とすることができる。よって、端末アプリケーションへの攻撃に対するセキュリティを高い状態に維持することができる。
【００１１】
また、本発明のセキュアデバイスにおいては、前記記憶部は、前記演算複雑化部による前記演算問題の作成に用いられる演算複雑化情報をさらに格納し、前記演算複雑化情報には、少なくとも演算問題と演算結果の組が保持された構成を採っている。このような構成によれば、セキュアデバイス内では演算問題の生成を行わなくても済むので、処理負荷とコードサイズは共に上がらず、かつ、演算問題を解かなければならない端末アプリケーションの認証情報演算は複雑な演算内容となる。
【００１２】
また、本発明のセキュアデバイスにおいては、前記演算問題のデータは、前記アプリケーションに埋め込むことが可能なプログラムコードのイメージを含む構成を採っている。このような構成によれば、コードが増えた分だけデータが複雑になり、その部分を解読するのが難しくなるので、データの解析をさらに困難にすることができる。
【００１３】
また、本発明のセキュアデバイスにおいては、前記プログラムコードのイメージは前記演算問題を解くためのコードである構成を採っている。このような構成によれば、演算問題を解く部分が仮に解析されたとしても、このプログラムコードのイメージを更新することでセキュリティを回復することができる。
【００１４】
また、本発明のセキュアデバイスにおいては、前記演算複雑化部は、前記アプリケーションが行う複雑な演算結果の一部が前記演算複雑化情報に保持された演算結果となるように対応する演算問題を選択する構成を採っている。このような構成によれば、セキュアデバイス内ではあらかじめ答えのわかっている問題を選ぶだけで済むため、演算処理の複雑さは上がらない。しかも、演算問題を解かなければならない端末アプリケーションの認証情報演算は複雑な演算内容になる。
【００１５】
また、本発明の情報処理端末は、データを格納すると共に演算を秘匿した状態で実行するセキュアデバイスと、アプリケーションの発行を要求し、前記セキュアデバイスから複雑化された演算を含むアプリケーションを受信して起動するアプリローダとを備えており、前記セキュアデバイスが、前記情報処理端末に処理を行わせるためのアプリケーションを格納する記憶部と、前記アプリケーションと前記セキュアデバイスとの認証処理に必要な認証鍵を計算するために用いる認証情報を前記アプリケーションに埋め込む指示内容実行部と、あらかじめ選択された演算結果を解答とする演算問題を作成し、その演算問題を認証情報演算の一部として前記アプリケーションに埋め込む演算複雑化部と、前記認証情報と前記演算結果を演算して認証鍵を生成する認証情報演算部と、前記認証鍵により、前記情報処理端末が実行するアプリケーションとの認証処理を行う認証処理部とを備える構成を採っている。
【００１６】
このような構成によれば、セキュアデバイス内ではあらかじめ選択された演算結果を用いるために演算処理の複雑さがほとんど上がらない。しかも、演算問題を解かなければならない端末アプリケーションの認証情報演算は複雑な演算内容になる。また、ある演算結果を回答とする演算問題は、通常、複数存在するため、端末アプリケーションの認証情報演算を毎回異なる内容とすることができる。よって、端末アプリケーションへの攻撃に対するセキュリティを高い状態に維持することができる。
【００１７】
また、本発明の情報処理端末においては、セキュアデバイスの記憶部は、前記演算複雑化部による前記演算問題の作成に用いられる演算複雑化情報をさらに格納し、この演算複雑化情報には、少なくとも演算問題と演算結果の組が保持されている構成を採っている。このような構成によれば、セキュアデバイス内では演算問題の生成をしなくて済むため、処理負荷とコードサイズは共に上がらず、かつ、演算問題を解かなければならない端末アプリケーションの認証情報演算は複雑な演算内容になる。
【００１８】
また、本発明の情報処理端末においては、前記演算問題のデータは前記アプリケーションに埋め込むことが可能なプログラムコードのイメージを含む構成を採っている。このような構成によれば、コードが増えた分だけ演算が複雑になり、さらにその部分を解読するのが困難となるので解析がさらに難しくなる。
【００１９】
また、本発明の情報処理端末においては、前記プログラムコードのイメージは前記演算問題を解くためのコードである構成を採っている。このような構成によれば、演算問題を解く部分が仮に解析されたとしても、このプログラムコードのイメージを更新することでセキュリティを回復することができる。
【００２０】
また、本発明の情報処理端末においては、セキュアデバイスの演算複雑化部は、前記アプリケーションが行う複雑な演算結果の一部が前記演算複雑化情報に保持された演算結果となるように対応する演算問題を選択する構成を採っている。このような構成によれば、セキュアデバイス内ではあらかじめ答えのわかっている問題を選ぶだけですむため演算処理の複雑さは上がらない。しかも、演算問題を解かなければならない端末アプリケーションの認証情報演算は複雑な演算内容になる。
【００２１】
また、本発明のサーバは、情報処理端末に処理を行わせるためのアプリケーションを前記情報処理端末に送信するサーバであって、前記アプリケーションを格納する記憶部と、前記アプリケーションと前記サーバとの認証処理に必要な認証鍵を計算するために用いる認証情報を前記アプリケーションに埋め込む指示内容実行部と、あらかじめ選択された演算結果を解答とする演算問題を作成し、その演算問題を認証情報演算の一部として前記アプリケーションに埋め込む演算複雑化部と、前記認証情報と前記演算結果を演算して認証鍵を生成する認証情報演算部と、前記認証鍵により、前記情報処理端末が実行するアプリケーションとの認証処理を行う認証処理部とを備える構成を採っている。
【００２２】
このような構成によれば、サーバ内ではあらかじめ選択された演算結果を用いるために演算処理の複雑さがほとんど上がらない。しかも、演算問題を解かなければならない端末アプリケーションの認証情報演算は複雑な演算内容となる。また、ある演算結果を回答とする演算問題は、通常、複数存在するため、端末アプリケーションの認証情報演算を毎回異なる内容とすることができる。よって、端末アプリケーションへの攻撃に対するセキュリティを高い状態に維持することができる。
【００２３】
また、本発明のサーバにおいては、前記演算複雑化部が作成する演算問題の複雑度を選択する複雑度選択部をさらに備える構成を採っている。このような構成によれば、端末アプリケーションの認証情報演算の複雑度を状況に応じて選択できるので、多数の情報処理端末から端末アプリケーションの要求を受け付ける場合や、通信環境や情報処理端末の動作環境に柔軟に対応でき、サービスの円滑化を図ることができる。
【００２４】
また、本発明の認証方法は、情報処理端末に処理を行わせるためのアプリケーションとの認証処理に必要な認証鍵を計算するのに用いる認証情報と、演算結果と、を選択するステップと、選択された演算結果を解答とする演算問題を作成するステップと、選択された認証情報を前記アプリケーションに埋め込み、作成された演算問題を認証情報演算の一部として前記アプリケーションに埋め込むステップと、前記認証情報および前記演算問題が埋め込まれた前記アプリケーションを前記情報処理端末に送信するステップと、前記情報処理端末に送信した前記アプリケーションに埋め込まれた前記認証情報と前記演算結果を演算して生成される認証鍵により、前記情報処理端末が実行するアプリケーションとの認証処理を行うステップとを有している。
【００２５】
このような構成によれば、セキュアデバイス内やサーバ内での処理負荷およびカードアプリのコードサイズを低く抑えたままで、端末アプリの認証情報演算の内容を複雑な演算処理にすることができる。また、ある演算結果を回答とする演算問題は、通常、複数存在するため、端末アプリケーションの認証情報演算を毎回異なる内容とすることができる。よって、端末アプリケーションへの攻撃に対するセキュリティを高い状態に維持することができる。
【発明の効果】
【００２６】
本発明によれば、演算複雑化部や演算複雑化情報を保持していて、自身の演算処理の複雑さをほとんど上げることなく、情報処理端末の演算処理の複雑さだけを上げるように演算処理の複雑化を実行している。これにより、セキュアデバイス内またはサーバ内での処理負荷及びカードアプリケーションまたはサーバアプリケーションのコードサイズを抑えたまま、端末アプリケーションの認証情報演算の内容を毎回異なる複雑な演算処理にすることができる。したがって、認証情報演算の解析が困難となり、認証処理の安全を確保することができる。
【発明を実施するための最良の形態】
【００２７】
〈発明の概要〉
本発明のセキュアデバイスは、あらかじめ選択された演算結果を解答とする演算問題を作成して、認証情報演算の一部としてアプリケーションに埋め込む演算複雑化部と、演算複雑化部による演算問題の作成に用いられる演算複雑化情報とを保持している。このとき、演算複雑化情報には演算問題と演算結果の組が保持されている。これによって、セキュアデバイス内での処理負荷およびカードアプリケーションのコードサイズを抑えたまま、端末アプリケーションの認証情報演算の内容を毎回異なる複雑な演算処理にすることができ、データの解析が困難となることで認証処理の安全を確保することができる。つまり、セキュアデバイスによる演算処理の複雑さをほとんど上げることなく、情報処理端末の演算処理の複雑さだけを上げることができる。
【００２８】
以下、図面を用いて本発明における情報処理端末の実施の形態の幾つかを詳細に説明する。尚、各実施の形態に用いる図面において、同一の構成要素は同一の符号を付し、かつ重複する説明は可能な限り省略する。
【００２９】
〈実施の形態１〉
本発明の実施の形態１では、端末アプリを保持するセキュアデバイスについて説明する。このセキュアデバイスを情報処理端末に装着し、情報処理端末が端末アプリの起動を要求すると、セキュアデバイスにより複雑化された認証情報演算を行うメソッドと認証情報とが埋め込まれた端末アプリが発行される。そして、情報処理端末が端末アプリを起動すると、端末アプリはセキュアデバイスよりも複雑な演算処理によって認証鍵を演算し、さらに、セキュアデバイスはより簡単な演算処理によって認証鍵を演算し、セキュアデバイスと情報処理端末との間で認証鍵による認証が行われる。
【００３０】
図１は、本発明の実施の形態１に係るセキュアデバイスおよび情報処理端末の構成と動作の流れを示す図である。まず、図１を用いてセキュアデバイス１０と情報処理端末３０の構成を説明する。
【００３１】
図１において、セキュアデバイス１０は、端末アプリ３０２に演算メソッドや認証情報を埋め込んで端末アプリ３０２の発行を行う発行アプリ１０１と、情報サービスを行うサービスアプリ１０３と、発行アプリ１０１や発行アプリ１０１が用いる情報を記憶する記憶部１０２とを備えている。
【００３２】
発行アプリ１０１とサービスアプリ１０３は、例えばＪａｖａ（登録商標）言語で記述されたカードアプリであり、セキュアデバイス１０のＣＰＵおよびＪａｖａ（登録商標）仮想マシンによって解釈・実行される。端末アプリ３０２は、例えばＪａｖａ（登録商標）言語で記述されたアプリケーションであり、情報処理端末３０のＣＰＵおよびＪａｖａ（登録商標）仮想マシンによって解釈・実行される。
【００３３】
発行アプリ１０１は、端末アプリ３０２を管理するアプリ管理部１０１１と、指示書１０２１を解釈して認証情報の埋め込み処理を行う指示内容実行部１０１２と、演算を複雑化する演算複雑化部１０１３と、認証情報を演算して認証鍵を生成する認証情報演算部１０１４と、サービスアプリ１０３からの要求に答えて認証鍵を渡す認証情報引渡部１０１５とを備えている。
【００３４】
サービスアプリ１０３は、発行アプリ１０１に認証鍵を要求する認証情報取得部１０３１と、認証鍵を用いて認証処理を行う認証処理部１０３２と、サービスアプリ１０３に固有な処理を行うサービス固有部１０３３とを備えている。
【００３５】
記憶部１０２は、セキュアデバイス１０上にある、例えばＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）やフラッシュメモリなどの記憶装置であって、さらに耐タンパ性を持たせるなど外部からの直接参照が困難な記憶領域として構成される。この記憶部１０２には、発行処理についての指示が書かれた指示書１０２１と、端末アプリ３０２のバイナリイメージである端末アプリデータ１０２２と、演算複雑化部１０１３が複雑化に用いる演算複雑化情報１０２３と、発行した端末アプリ３０２の識別情報と認証鍵とをペアにして記憶しておく発行情報１０２４とが格納されている。
【００３６】
一方、情報処理端末３０は、端末アプリ３０２と、この端末アプリ３０２の発行を要求して受信するアプリローダ３０１とを備えている。また、起動される端末アプリ３０２は、発行アプリ１０１により埋め込まれたｍ個（ｍは１以上の整数）の演算メソッド３０３１〜３０３ｍとｎ個（ｎは１以上の整数）の認証情報３０４１〜３０４ｎを備え、演算複雑化部１０１３によって複雑化され、演算メソッドや認証情報に基づいた演算を行う認証情報複雑演算部３０２１と、認証を行う認証処理部３０２２と、端末アプリ固有の動作をする端末アプリ固有部３０２３とを備えている。
【００３７】
次に、図１に示すセキュアデバイス１０と情報処理端末３０の動作について、図２を参照して説明する。
【００３８】
図２は、セキュアデバイス１０および情報処理端末３０の動作の流れを示すフローチャートである。図２におけるステップ番号は、図１における括弧書きの数字と対応している。
【００３９】
情報処理端末３０のアプリローダ３０１は、端末アプリ３０２の起動が利用者等から要求されると、端末アプリ３０２の発行要求を、セキュアデバイス１０における発行アプリ１０１のアプリ管理部１０１１へ送信する（ステップＳ１）。すると、アプリ管理部１０１１は、要求された端末アプリ３０２に対応する端末アプリデータ１０２２と対応する指示書１０２１とを選択し、記憶部１０２から読み出す。そして、アプリ管理部１０１１は、読み出した端末アプリデータ１０２２および指示書１０２１を、指示内容実行部１０１２に渡す（ステップＳ２）。
【００４０】
すると、指示内容実行部１０１２は、受け取った指示書１０２１を解釈して、認証情報３０４１〜３０４ｎ（ｎ個全部ではなくてもよい）を端末アプリデータ１０２２に埋め込む処理を行い、処理結果を指示書１０２１とともに演算複雑化部１０１３に渡す（ステップＳ３）。演算複雑化部１０１３は、演算複雑化情報１０２３を用いて、端末アプリ３０２だけが複雑な演算になるよう演算メソッド３０３１〜３０３ｍや認証情報３０４１〜３０４ｎ（ｎ個全部ではなくてもよい）を埋め込み、端末アプリ３０２を生成する。そして、演算複雑化部１０１３は、生成した端末アプリ３０２をアプリローダ３０１に渡し、認証鍵の演算に必要な情報を認証情報演算部１０１４に渡す。具体的には、演算複雑化部１０１３は、受け取った指示書１０２１を利用して演算メソッドを埋め込み、どの演算メソッドイメージの組を埋めたかという情報（以下、演算メソッド組情報という）を利用して、演算メソッド毎に決められた定数を打ち消すインバース値Ｃと、認証鍵の演算式とを取得し、インバース値Ｃを認証情報として埋め込む。また、演算複雑化部１０１３は、認証鍵の演算に必要な情報として、認証情報３０４２〜３０４ｎおよび演算式を、認証情報演算部１０１４に渡す（ステップＳ４）。演算メソッド組情報およびインバース値については、後に詳述する。
【００４１】
次に、認証情報演算部１０１４は、演算式に認証情報３０４２〜３０４ｎを代入して認証鍵を演算し、端末アプリデータ１０２２の識別情報とペアにして発行情報１０２４に記憶する（ステップＳ５）。さらに、情報処理端末３０において、アプリローダ３０１が、発行された端末アプリ３０２を受信して端末アプリ３０２を起動すると、端末アプリ３０２の認証情報複雑演算部３０２１は、認証情報３０４１〜３０４ｎや演算メソッド３０３１〜３０３ｍを用いて認証鍵を演算し、演算された認証鍵を認証処理部３０２２に渡す（ステップＳ６）。
【００４２】
すると、情報処理端末３０において、端末アプリ３０２の認証処理部３０２２は、セキュアデバイス１０側のサービスアプリ１０３の認証処理部１０３２と共に認証処理を開始する（ステップＳ７）。さらに、セキュアデバイス１０において、サービスアプリ１０３の認証情報取得部１０３１は、セキュアデバイス１０の認証処理部１０３２が必要とする認証鍵を、発行アプリ１０１の認証情報引渡部１０１５から取得する。この認証鍵は、ステップＳ５で認証情報演算部１０１４が演算し、発行情報１０２４に記憶しておいたものである（ステップＳ８）。そして、セキュアデバイス１０の認証処理部１０３２は、認証情報取得部１０３１から認証鍵を受け取り、端末アプリ３０２の認証処理部３０２２と共に、同一の認証鍵であることを確認し、認証処理を行う。ここで、同一の認証鍵であることを確認するためにチャレンジ・レスポンスを用いる（ステップＳ９）。
【００４３】
さらに、情報処理端末３０の認証処理部３０２２とセキュアデバイス１０の認証処理部１０３２は、それぞれ端末アプリ固有部３０２３とサービス固有部１０３３に認証結果を伝える（ステップＳ１０）。そして、情報処理端末３０の端末アプリ固有部３０２３とセキュアデバイス１０のサービス固有部１０３３は、認証処理中に新たに共有した鍵によって相互通信を行う（ステップＳ１１）。認証処理に失敗した場合には、その後の端末アプリ固有部３０２３とサービス固有部１０３３との相互通信は行われず、情報処理端末３０は端末アプリ３０２を消去する。
【００４４】
以下、認証情報複雑演算部３０２１の演算が複雑になり、認証情報演算部１０１４の演算が簡単ですむ原理について説明する。
【００４５】
まず、上記原理の概要を述べる。説明を簡単にするために認証情報３０４１〜３０４ｎの数ｎを５とし、認証情報３０４２〜３０４５をそれぞれａ，ｂ，ｃ，ｄとし、認証情報３０４１をＣとする。なお、認証情報３０４２〜３０４５はいずれも６４ビットの数である。これはＪａｖａ（登録商標）のｌｏｎｇ型で扱うことを想定しているためである。
【００４６】
演算メソッドとして、与えられた引数にａ，ｂ，ｃ，ｄのいずれか（複数でもよい）を掛け、さらに演算メソッド毎に決まった定数を掛けて得た結果を返すメソッドを使う。これらの定数も６４ビットである。認証情報複雑演算部３０２１はＣ（つまり、認証情報３０４１）を演算メソッド３０３１に渡すことから始めて、その演算結果を演算メソッド３０３２〜３０３ｍに次々に渡して演算させ、Ｃ，ａ，ｂ，ｃ，ｄの値と定数からなる積を得る。最後に、認証情報複雑演算部３０２１は２の３２乗で割った余りを認証鍵とする。実際の利用の際には、鍵は例えば１２８ビットや２５６ビット必要であるので、この方法で３２ビットの値を複数埋めるか、直接埋める情報を使うなど他の方法を併用することになる。
【００４７】
Ｃは、掛けられた定数全ての積とＣとの積を２の６４乗で割ると必ず１余るように選ばれている（そのような意味でＣをインバース値と呼ぶ）。このように都合がよいように選択した解答１に対して、解答が１になるような演算問題を作成する工夫をしているため、結局ａ，ｂ，ｃ，ｄからなる積を演算することになる。認証鍵は演算した結果を２の３２乗で割った余りであるため、セキュアデバイス１０で６４ビットの演算を行う必要もなく、ａ，ｂ，ｃ，ｄの下位３２ビットを用いたｉｎｔ型による演算でよい。
【００４８】
次に、演算複雑化情報１０２３について説明する。
【００４９】
図３は、本発明の実施の形態１の演算複雑化部１０１３が用いる演算複雑化情報１０２３の一例を示す構成図である。図３を用いて演算複雑化情報１０２３について述べる。図３に示すように、演算複雑化情報１０２３は、埋め込まれる演算メソッドイメージ、インバース値の一覧“ｉｎｖｅｒｓｅ”、埋めたメソッドからインバース値を選ぶ“ｉｎｄｅｘ”、認証情報演算部１０１４が用いる演算式の一覧“ｃａｌｃ”を含んでいる。
【００５０】
まず、インバース値の候補となりうる値を全て列挙し、番号をつけておく。この情報は図３では“ｉｎｖｅｒｓｅ”として表わされている情報である。０：Ｃ１−Ｃ１−：０ｘ５ＢＣ７２２０１は、０番のインバース値Ｃ１−Ｃ１−の値が、０ｘ５ＢＣ７２２０１であることを示している。Ｃｎ＋とＣｎ−という数のペアは、掛けて２の６４乗で割った余りが１になるように選ばれている。
【００５１】
さらに、演算メソッド組情報から番号を得る表を用意しておくことで、容易に演算メソッド組情報からインバース値を得られるようにしてある。この表は、図３では“ｉｎｄｅｘ”として表わされている情報である。例えば、（１，２）：１は、演算メソッドイメージの組として、演算メソッドイメージ１と演算メソッドイメージ２を選んだ場合には、インデックス１番のインバース値を用いるということを示している。それぞれのメソッドで掛けられる定数がＣ１＋Ｃ２＋であるので、Ｃ１−Ｃ２−が選ばれるようになっている。
【００５２】
さらに、演算メソッドイメージごとに、どのような演算が行われるかを示す演算式を記憶しておく。図３の“ｃａｌｃ”として表わされている情報がそれである。５：ａ＊ｃは、演算メソッドイメージ５では、ａ＊ｃが実行されるということを示している。定数は発行アプリ１０１には無用なので除いてある。
【００５３】
例えば、演算メソッドとして１と２が選ばれた場合、演算メソッド組情報は（１，２）である。これらの情報から、Ｃとしてインデックス番号が１であるＣ１−Ｃ2−を選ぶことができ、認証情報演算部１０１４が演算する式は、“ｃａｌｃ”の１と２の式を掛けたａ＊ｂであることがわかる。
【００５４】
次に、指示書１０２１および発行情報１０２４について説明する。
【００５５】
図４は、本発明の実施の形態１における指示書と発行情報の具体例を説明するための図であり、（Ａ）を指示書の一例を示す図、（Ｂ）は指示書の数値の意味を説明するための図、（Ｃ）は発行情報の一例を示す図である。指示書は埋め込みや複雑化処理をするために、指示内容実行部１０１２や演算複雑化部１０１３によって用いられる情報であり、端末アプリデータ１０２２の変数の位置と型や、メソッドの位置などを記述したものである。ダミーメソッドを入れて演算メソッドの場所を確保する場合は、さらに埋め込み可能なメソッドサイズの最大値が必要である。
【００５６】
図４（Ａ）は指示書の例を示しており、この指示書に記載されているような位置情報を得るためには、端末アプリデータ１０２２を解析しなければならない。この解析はカードアプリで行ってもよいが、解析が困難なために、通常は外部であらかじめ解析して作成したものを保持しておく。
【００５７】
指示書の位置情報と端末アプリデータ１０２２との関係を図で説明したのが図４（Ｂ）である。この一例は、ｌｏｎｇ型の変数ｓ１，ｓ２，ｓ３の場所がそれぞれ０ｘ４７，０ｘ６７，０ｘ８７、演算メソッドｍ１，ｍ２の場所がそれぞれ０ｘ５７，０ｘ７７、その場所に埋められるメソッドのサイズの最大値がそれぞれ０ｘ０ａ、０ｘ０ｂ、インバース値Ｃの場所が０ｘ９７であることを示している。なお、カードアプリに変数名は必要ないため指示書には記述されていない。
【００５８】
変数の場所は認証情報を埋め込むときに用いられ、演算メソッドの場所は演算メソッドイメージを埋め込むときに用いられる。すなわち、変数ｓ１に認証情報を埋め込むときには、０ｘ４７番地から８バイトにランダムな値を埋め込むことになり、メソッドｍ１に演算メソッドイメージを埋め込むときには、０ｘ５７番地以降０ｘ０ａバイト以内で埋め込むことになる。その他、変数の値の範囲等を必要に応じて記述しておくこともできる。
【００５９】
図４（Ｃ）は、発行情報１０２４に記憶される情報の一例を示している。すなわち、図４（Ｃ）のように、端末アプリ３０２の名称やＩＤ等、端末アプリ３０２を一意に特定できる情報と認証鍵をペアにして記憶する。
【００６０】
次に、図４の指示書と発行情報の動作の流れについて、図１および図２を参照し、図１および図２のステップ番号に対応させて説明する。
【００６１】
アプリローダ３０１は、端末アプリ３０２の発行要求をセキュアデバイス１０の発行アプリ１０１のアプリ管理部１０１１へ送信する（ステップＳ１）。すると、アプリ管理部１０１１は、端末アプリデータ１０２２と指示書１０２１を選んで指示内容実行部１０１２に渡す（ステップＳ２）。
【００６２】
次に、端末アプリデータ１０２２と指示書１０２１を受け取った指示内容実行部１０１２は、指示書１０２１に書かれている変数の位置情報を用いて、端末アプリデータ１０２２に認証情報３０４２〜３０４ｎとして乱数を埋めて演算複雑化部１０１３に渡す。このとき、認証情報３０４１は後のために空けておく（ステップＳ３）。
【００６３】
指示内容実行部１０１２から端末アプリデータ１０２２と指示書１０２１を受け取った演算複雑化部１０１３は、指示書１０２１に書かれているメソッドの位置情報を用いて端末アプリデータ１０２２にあらかじめ用意された演算メソッドを埋められる場所にランダムに演算メソッドイメージ１０２３０１〜１０２３０６を選んで埋める。図３では演算メソッドイメージ１（１０２３０１）と演算メソッドイメージ２（１０２３０２）を埋めているが、同じ演算メソッドイメージを複数選んでもよい。これらが演算メソッド３０３１〜３０３ｍになる。そのため、これらの演算メソッドイメージは発行の度に毎回異なり、この場合には６（演算メソッドイメージの数）のｍ乗通りある。演算メソッドイメージの数がｌ個の場合にはｌのｍ乗通りあることになる。
【００６４】
次に、演算複雑化部１０１３は、演算メソッド組情報を用いて、演算複雑化情報１０２３の“ｉｎｄｅｘ”から必要な番号を得て、“ｉｎｖｅｒｓｅ”からインバース値Ｃを取得し、端末アプリデータ１０２２の認証情報３０４１として埋める。演算メソッド組情報を用いて演算複雑化情報１０２３から対応する演算式を得て、演算式と認証情報３０４２〜３０４ｎを認証情報演算部１０１４に渡す。この演算式は図３中の“ｃａｌｃ”として表わされている情報である（ステップＳ４）。
【００６５】
このようにして演算複雑化部１０１３で演算式が取得されると、認証情報演算部１０１４は、演算式に認証情報３０４２〜３０４ｎを代入して認証鍵を演算する。そして、認証鍵を端末アプリ３０２の識別情報と対応させて発行情報１０２４として記憶部１０２に記憶させる（ステップＳ５）。
【００６６】
次に、演算メソッドに含まれる定数とインバース値Ｃの選び方について説明する。
【００６７】
まず、インデックス番号がｎであるＣｎ＋とＣｎ−のペアを選ぶ。これは片方をランダムな奇数とし、もう片方を、掛けて２の６４乗で割った余りが１になるように拡張ユークリッドアルゴリズムを用いて選ぶ。このようなペアをいくつか選ぶ（図３では６組選んである）。
【００６８】
次に、演算メソッド３０３ｍではｍ番目の定数Ｃｍ＋を掛けることに決める。そのため、演算メソッド組情報に対してどのような定数が掛けられるかがわかる。例えば、演算メソッド３０３１として演算メソッドイメージ１０２３０１、演算メソッド３０３２として演算メソッドイメージ１０２３０２が埋め込まれていたとすると、Ｃ１＋とＣ２＋が掛けあわされることになる。この場合、インバース値としてはＣ１−とＣ２−を掛けたものを選べばよい。つまり、掛けられた定数に対応するペアのもう一方を全て掛けあわせたものをインバース値として選ぶことになる。そのような組み合わせを全て列挙しておき、演算メソッド組情報からインデックスを得てインバース値を得る方法は前述した通りである。
【００６９】
一般に、演算複雑化情報１０２３の生成には、その生成のためのプログラムのコード量も多く、かつ演算に時間がかかるため、演算複雑化情報１０２３はあらかじめ生成されて保持される。このための演算複雑化情報生成装置（図示せず）が別に存在し、その演算複雑化情報生成装置によって生成された情報をセキュアデバイスが保持することになる。
【００７０】
以上説明したように、本発明の実施の形態１によれば、認証鍵を計算するために用いる認証情報を端末アプリ３０２に埋め込むとともに、あらかじめ選択された演算結果を解答とする演算問題を作成して情報処理端末３０側での認証情報演算の一部として端末アプリ３０２に埋め込む。これにより、セキュアデバイス１０内での処理負荷およびカードアプリのコードサイズを低く抑えたままで、端末アプリ３０２の認証情報演算の内容を複雑な演算処理にすることができる。また、認証情報や演算問題をランダムに選択するので、情報処理端末３０側での認証情報演算を毎回異なる内容とすることができる。よって、端末アプリケーションへの攻撃に対するセキュリティを高い状態に維持することができる。また、情報処理端末３０側では、複雑な認証情報演算を行うことで認証鍵を生成することができ、一方、セキュアデバイス１０側では少ない演算量で同じ認証鍵を生成することができ、情報処理端末３０とセキュアデバイス１０の間で、生成された認証鍵が一致するか否かによる相互の認証を行なうことができる。
【００７１】
なお、実施の形態１においては、インバース値Ｃを埋め込み最終的に定数が消えるようにしたが、これに限定されるものではない。例えば、Ｃの代わりに定数１を埋め込んで、Ｃは発行アプリ１０１が記憶しておき、端末アプリ３０２の計算結果をそのまま受け取って、自分でＣを掛けて定数を消し、自分で演算した認証鍵と比較することで、端末アプリ３０２の認証とすることも可能である。このようにすることにより、Ｃだけ他の認証情報に依存して選ばれているという情報を隠すことができる。ただし、この場合は相互の認証とはならない。
【００７２】
なお、実施の形態１においては、セキュアデバイス１０を情報処理端末３０に装着したときに、情報処理端末３０が端末アプリ３０２の起動を要求するようになっていたが、装着時に限らず、装着中であればいつ情報処理端末３０が端末アプリ３０２の起動を要求してもよい。
【００７３】
また、実施の形態１においては、認証情報３０４１〜３０４ｎのほとんどを指示内容実行部１０１２が埋め込み、インバース値Ｃだけを演算複雑化部１０１３が埋め込んだが、全てを演算複雑化部１０１３が埋め込んでもよい。さらに、実施の形態１においては、認証情報３０４１〜３０４ｎから認証鍵を生成して、認証鍵を共通鍵と見立てて、同一の鍵を持っていることを、チャレンジ・レスポンスを用いて認証処理をすることとしたが、これに限ることはなく、前述のインバース値Ｃを埋め込まない方法のように、異なる認証処理を行ってもよい。
【００７４】
また、実施の形態１において、認証情報を６４ビットとしたが、最後に３２ビットで割った余りを用いるならこれより大きい値でもよく、例えば１２８ビットでもよい。その場合は、端末アプリで多倍長演算を実装することになり、さらなる複雑化が見込める。さらに、実施の形態１においては、演算式を使って認証情報３０４１〜３０４ｎの演算をさせたが、これに限ることはなく、演算複雑化部１０１３が、複雑化処理を行いながら認証情報３０４１〜３０４ｎを掛けていって認証鍵を得てもよい。その場合は、演算式の解釈が不要となるのでさらに簡単な機構になる。
【００７５】
また、実施の形態１においては、認証情報複雑演算部３０２１は端末アプリ３０２内に静的に用意されていたが、これに限ることはなく、このメソッドもデータとして複数用意してカード内に記憶しておき、端末アプリ３０２の発行時に発行アプリ１０１が埋め込むようにしてもよい。この場合は、指示書１０２１には認証情報複雑演算部３０２１の場所を示す番地の値が記載されている。そのようにすることで、さらにランダムな複雑さを増すことになり、安全性が増すばかりでなく、万一、解析が完全になされた場合でも、この認証情報複雑演算部３０２１のデータを更新することで、セキュリティを回復することができる。
【００７６】
また、実施の形態１においては、演算メソッドイメージや認証情報複雑演算部３０２１のデータに難読化を施しておいてもよい。そうすることでさらなる複雑化が可能となる。さらに、実施の形態１においては、演算メソッドイメージや認証情報複雑演算部３０２１のデータをカード毎に異なるようにしてもよい。そうすることで、カードを破棄した結果第三者に不正に取得された情報を他のカードに直接流用できなくなり、結果的にセキュリティがさらに高まる。
【００７７】
また、実施の形態１においては、認証情報３０４１〜３０４ｎを全て埋め込んだが、一部だけ埋め込んで、残りの認証情報を起動後に渡すよう構成してもよい。そうすることで、認証処理の実行前に情報が揃わないために解析を困難にすることができる。さらに、実施の形態１においては、解答から問題を簡単に作成できる情報を演算複雑化情報１０２３として保持しているが、これに限ることはなく、カードの演算能力が許せば問題を自ら生成するようにしてもよいし、さらに解答をランダムに生成して、それを解とする問題を生成してもよい。そうすることによってより複雑化することができる。
【００７８】
また、実施の形態１においては、定数およびインバース値はあらかじめ決められていたが、カードアプリの能力に余裕があれば、これらの定数をランダムに生成してインバース値を求めるようにしてもよい。この場合は、よりランダム性が高まりさらに安全性を高めることができる。
【００７９】
〈実施の形態２〉
実施の形態２における情報処理端末３０とセキュアデバイス１０の構成は、図１の実施の形態１の場合と同様である。ただし、演算複雑化情報１０２３の内容とそれを扱う演算複雑化部１０１３の動作が異なる。
【００８０】
まず、認証情報複雑演算部３０２１の演算が複雑になり、認証情報演算部１０１４の演算が簡単ですむ原理について概要を述べる。説明を簡単にするために認証情報３０４１〜３０４ｎの数ｎを４とし、認証情報３０４１〜３０４４をそれぞれａ，ｂ，ｃ，ｄとする。ただし、実施の形態１とは異なり、認証情報３０４１をインバース値Ｃとしない。このときの認証情報３０４１〜３０４４はいずれも６４ビットの数である。実施の形態２の具体例では、演算メソッドとして、与えられた引数にａ，ｂ，ｃ，ｄのいずれか（複数でもよい）を掛け、さらに演算メソッド毎に決まった定数を掛けて得た結果を返すメソッドを使う。
【００８１】
認証情報複雑演算部３０２１は、１を演算メソッド３０３１に渡すことから始めて、その演算結果を演算メソッド３０３２〜３０３ｍに次々に渡して演算を行わせ、最終的にはａ，ｂ，ｃ，ｄの値と定数からなる積を得る。そして、最後に認証情報複雑演算部３０２１は２の３２乗で割った余りを認証鍵とする。定数と入れる演算メソッドの組は、掛けられた定数全ての積を２の６４乗で割ると必ず１余るように選ばれている。一方、認証情報演算部１０１４は、定数値による演算を行う必要はない。
【００８２】
次に、演算複雑化情報１０２３について説明する。
【００８３】
図５は、本発明の実施の形態２における演算複雑化部が用いる演算複雑化情報１０２３の一例を示す構成図である。図５を用いて演算複雑化情報１０２３について述べる。演算複雑化情報１０２３は、図３の”ｉｎｖｅｒｓｅ”および“ｉｎｄｅｘ”に代えて、埋め込まれる演算メソッドイメージおよび埋めるメソッドのペアを記述した“ｐａｉｒ”を含み、認証情報演算部１０１４が用いる演算式の一覧“ｃａｌｃ”を含んでいる。ただし、“ｃａｌｃ”の内容は、図３とは異なっている。
【００８４】
このとき、埋める演算メソッドは定数がうまく打ち消されるペアが存在するように選ばれる。そのために、図５の“ｐａｉｒ”情報のように打ち消し合うペアを列挙しておき、片方をランダムに選んだとき、もう一方を打ち消すように選ぶことができるようにしてある。図５において、“ｐａｉｒ”の０：  ３は、演算メソッドイメージ０を選んだ場合、演算メソッドイメージ３を選べば打ち消し合うことを示している。また、５：  ０＊２、２＊４は、５を選んだ場合、（０，２）か（２，４）のペアを選ぶ必要があることを示している。
【００８５】
認証情報演算部１０１４が認証情報演算に用いる演算式は、埋め込むメソッドのペアによって決定される。つまり、図５に示す“ｃａｌｃ”の（０，３）：  ａ＊ｄは、（０，３）というペアを選んだとき、認証情報を演算する式としてａ＊ｄを用いることを示している。
【００８６】
また、図５の演算メソッドイメージ１０２３０５のように複数の定数を一回で打ち消すようにすることもできる。このとき、演算メソッドイメージ１０２３０５を埋め込むことにした場合、そのペアとして、演算メソッドイメージ１０２３００と演算メソッドイメージ１０２３０２あるいは演算メソッドイメージ１０２３０２と演算メソッドイメージ１０２３０４の両方を埋め込むことになる。
【００８７】
演算メソッド３０３１〜３０３ｍに含まれる定数Ｃｎ＋とＣｎ−は、実施の形態１と同様に掛けて２の６４乗で割った余りが１になるように選ぶ。このようなペアをいくつか選び（図５では２組選び）、打ち消すペアが存在するように演算メソッドイメージを用意する。
【００８８】
次に、実施の形態２におけるセキュアデバイス１０と情報処理端末３０の動作について、図１および図２を参照し、図１および図２のステップ番号に対応させて説明する。
【００８９】
まず、アプリローダ３０１は、端末アプリ３０２の発行要求を、セキュアデバイス１０の発行アプリ１０１のアプリ管理部１０１１へ送信する（ステップＳ１）。すると、アプリ管理部１０１１は端末アプリデータ１０２２と指示書１０２１を選んで指示内容実行部１０１２に渡す（ステップＳ２）。
【００９０】
端末アプリデータ１０２２と指示書１０２１を受け取った指示内容実行部１０１２は、指示書１０２１に書かれている変数の位置情報を用いて、端末アプリデータ１０２２に認証情報３０４１〜３０４ｎとして乱数を埋めて演算複雑化部１０１３に渡す。このとき、認証情報３０４１にも乱数を埋める点が、実施の形態１とは異なる（ステップＳ３）。
【００９１】
指示内容実行部１０１２から端末アプリデータ１０２２と指示書１０２１を受け取った演算複雑化部１０１３は、指示書１０２１に書かれているメソッドの位置情報を用いて端末アプリデータ１０２２にあらかじめ用意された演算メソッドを埋められる場所に演算メソッドイメージ１０２３００〜１０２３０６（図５では６個）を選んで埋める。
【００９２】
このとき、演算複雑化部１０１３は、ある定数（例えばＣ１＋）が掛けられる演算メソッドイメージを選んだ場合には、それを打ち消す定数（Ｃ１−）が掛けられる演算メソッドイメージを選ぶようにする。図５では、演算メソッドイメージ０（１０２３００）と演算メソッドイメージ３（１０２３０３）が埋められている。このために用いる情報が図５の“ｐａｉｒ”情報である。このようにして選ばれて埋められた演算メソッドイメージが演算メソッド３０３１〜３０３ｍになる。そのため、これらの演算メソッドは発行の度に毎回異なる。
【００９３】
次に、演算複雑化部１０１３は、演算メソッド組情報を用いて演算複雑化情報１０２３から対応する演算式を得て、演算式と認証情報３０４１〜３０４ｎを認証情報演算部１０１４に渡す。ただし、実施の形態１とは異なり、インバース値Ｃの取得は行わない（ステップＳ４）。すると、認証情報演算部１０１４は、演算式と認証情報３０４１〜３０４ｎを得て、演算式に認証情報３０４１〜３０４ｎを代入して認証鍵を演算する。この演算式は図５中の“ｃａｌｃ”として表わされている情報である。最後に、認証鍵を端末アプリ３０２の識別情報と対応させて発行情報１０２４として記憶部１０２に記憶させる（ステップＳ５）。
【００９４】
このように、本発明の実施の形態２によれば、実施の形態１の演算複雑化情報１０２３において比較的データサイズが大きいインバース値Ｃの情報がなくなるため、セキュアデバイス１０の記憶部１０２の容量を小さく抑えることができる。
【００９５】
〈実施の形態３〉
実施の形態３に係る情報処理端末３０とセキュアデバイス１０の構成は、図１に示す実施の形態１に係る情報処理端末３０およびセキュアデバイス１０と同様である。ただし、演算複雑化情報１０２３の内容とそれを扱う演算複雑化部１０１３の動作は、実施の形態１とは異なる。
【００９６】
図６は、本発明の実施の形態３における演算複雑化部が用いる演算複雑化情報１０２３の一例を示す構成図である。図６を用いて演算複雑化情報１０２３について述べる。実施の形態２との違いは、掛けて１になるペアだけではなく、任意の数になるペアが記述可能なことである。掛けた結果が図６における“ｐａｉｒ２”の“ａｎｓｗｅｒ”という情報であり、埋めたメソッドの組が（０，３）なら定数の積は１、（４，５）なら定数の積は３になることを示している。
【００９７】
このように、本発明の実施の形態３によれば、演算複雑化部１０１３の動作の大部分は実施の形態２と同じであるが、実施の形態３の演算複雑化部１０１３は、ペアを選ぶ際に演算結果を選択し、その値になるペアからランダムに選択して、認証情報演算部１０１４へ選んだ演算結果も渡す部分が異なる。このようにすることにより定数の規則性がさらに分かり難くなる。
【００９８】
〈実施の形態４〉
本発明の実施の形態４では、端末アプリを保持しネットワークを介して情報処理端末にサービスを提供するサーバについて説明する。情報処理端末がサーバに端末アプリのダウンロード要求を送信すると、サーバにより複雑化された認証情報演算を行うメソッドと認証情報とが埋め込まれた端末アプリが発行される。そして、情報処理端末が端末アプリを起動すると、端末アプリはサーバよりも複雑な演算処理によって認証鍵を演算し、さらに、サーバはより簡単な演算処理によって認証鍵を演算し、サーバと情報処理端末との間で認証鍵による認証が行われる。
【００９９】
図７は、本発明の実施の形態４におけるサーバおよび情報処理端末の構成と動作の流れを示す図であり、実施の形態１の図１に対応するものである。そこで、図１と同一部分には同一符号を付し、これについての説明を省略する。サーバ４０には、ネットワーク５０を介して、複数の情報処理端末３０が接続されている。ただし、ここでは１つの情報処理端末３０のみを図示する。サーバ４０は、図１の指示書１０２１とは異なる内容の指示書４０２１を記憶する記憶部４０２と、図１のアプリ管理部１０１１とは異なる動作を行うアプリ管理部４０１１を有する発行アプリ４０１とを備えている。発行アプリ４０１は、さらに複雑度選択部４０１０を有する。
【０１００】
記憶部４０２は、認証情報演算の複雑さのレベル（以下「複雑度」）ごとに用意された指示書４０２１をあらかじめ格納している。それぞれの指示書４０２１は、対応する複雑度の認証情報演算を情報処理端末３０に実行させる端末アプリ３０２の発行を指示する内容となっている。
【０１０１】
複雑度選択部４０１０は、端末アプリ３０２で実行させるべき認証情報演算の複雑度を選択し、選択結果をアプリ管理部４０１１に渡す。
【０１０２】
アプリ管理部４０１１は、複雑度選択部４０１０による複雑度の選択結果に基づいて、端末アプリ３０２を管理する
【０１０３】
発行アプリ４０１は、例えばＪａｖａ（登録商標）言語で記述されたアプリであり、サーバ４０のＣＰＵおよびＪａｖａ（登録商標）仮想マシンによって解釈・実行される。
【０１０４】
記憶部４０２は、サーバ４０上にある、ハードディスクなどの記憶装置であって、さらにアクセスコントロールを行うなど外部からの直接参照が困難な記憶領域として構成される。
【０１０５】
次に、図７に示すサーバ４０と情報処理端末３０の動作について、図８を参照して説明する。
【０１０６】
図８は、サーバ４０および情報処理端末３０の動作の流れを示すフローチャートであり、実施の形態１の図２に対応するものである。図２と同一部分には同一符号を付し、これについての説明を省略するとともに、実施の形態１のセキュアデバイス１０をサーバ４０に置き換えて説明を行なう。また、図８におけるステップ番号は、図７における括弧書きの英数字と対応している。
【０１０７】
情報処理端末３０のアプリローダ３０１は、端末アプリ３０２のダウンロードが利用者等から要求されると、端末アプリ３０２の発行要求を、サーバ４０における発行アプリ４０１のアプリ管理部４０１１へ送信する。このとき、端末アプリ３０２の発行要求は、複雑度選択部４０１０にも入力される（ステップＳ１）。
【０１０８】
すると、まず、複雑度選択部４０１０は、端末アプリ３０２の発行要求の送信元の情報処理端末３０に対して、どのような複雑度の認証情報演算を行なわせるべきかを選択し、選択結果をアプリ管理部４０１１に渡す（ステップＳ２ａ）。
【０１０９】
通常、通信データを分析することによる成りすましを防ぐために、端末アプリ３０２を発行してから相互認証を完了するまでの時間にはタイムアウトが設定される。ところが、トラフィックが多い場合には、サーバ４０と情報処理端末３０との間の通信速度が低下し、相互認証が完了するまでに時間がかかり、真正な端末アプリ３０２との間で相互認証をしているにもかかわらず認証処理が失敗してしまう場合がある。そこで、例えば、複雑度選択部４０１０は、ネットワーク負荷のレベルや情報処理装置３０との間の通信速度を判別し、ネットワーク負荷が高い場合や通信速度が低い場合、端末アプリ３０２の要求に対し、比較的低い複雑度を選択する。これにより、相互認証が完了するまでの時間が長くなるのを防ぎ、不必要に認証処理が失敗するのを防ぐことができる。
【０１１０】
アプリ管理部４０１１は、複雑度選択部４０１０から選択された複雑度を受け取ると、記憶部４０２から、要求された端末アプリデータ１０２２と、対応する指示書４０２１のうち選択された複雑度に該当する指示書４０２１とを読み出し、指示内容実行部１０１２に渡す（ステップＳ２ｂ）。
【０１１１】
続くステップＳ３，Ｓ４の処理を経て、複雑度選択部４０１０で選択された複雑度の認証情報演算を情報処理端末３０に実行させる端末アプリ３０２が、情報処理端末３０に発行される。ステップＳ５以降の処理は、実施の形態１の図２と同様である。ただし、サーバ４０と情報処理端末３０との間の端末アプリ３０２および相互認証におけるチャレンジ・レスポンスのメッセージの受け渡しは、ネットワーク５０を介して行なわれる。
【０１１２】
このように、本発明の実施の形態４によれば、実施の形態１の場合と同様の原理で、情報処理端末３０の認証情報複雑演算部３０２１の演算は複雑になり、サーバ４０の認証情報演算部１０１４の演算は簡単ですむ。つまり、このように構成することで、サーバ４０の処理の負荷を軽減することが出来る。また、端末アプリ３０２の認証情報複雑演算部３０２１が実行する演算の複雑度を状況に応じて選択できるので、多数の情報処理端末から端末アプリの要求を受け付ける場合や、通信環境や情報処理端末の動作環境に柔軟に対応でき、サービスの円滑化を図ることができる。
【０１１３】
なお、以上説明した実施の形態４では、認証処理演算の複雑度を可変とするために、複雑度ごとに指示書４０２１を用意するようにしたが、これに限るものではない。例えば、アプリ管理部４０１１が、複雑度選択部４０１０で選択された複雑度に応じて、端末アプリ３０２に埋め込む演算メソッドの数や種類を変えるようにしてもよい。この場合、例えば、指示書４０２１の中に求められる複雑度に応じた指示を記述しておくようにすればよい。
【０１１４】
また、複雑度選択部４０１０は、通信の相手先の情報処理能力を判別し、情報処理能力の高さに応じて複雑度を選択したり、通信の相手先の信頼度を判別し、信頼度の高さに応じて複雑度を選択してもよい。具体的には、例えば、信頼度の低い種類の情報処理端末３０の場合には、埋め込む演算メソッドの数を増やしたり、演算メソッドの種類を処理が複雑なものにすることで、認証情報複雑演算部３０２１の演算処理がより複雑になるようにする。また、信頼度の高い種類の情報処理端末３０の場合には、埋め込む演算メソッドの数を減らしたり、演算メソッドの種類を処理が複雑でないものにすることで、認証情報複雑演算部３０２１の演算処理の複雑度を軽減する。
【０１１５】
また、複雑度選択部４０１０は、使用するネットワーク５０の種類（伝送速度や信頼度など）に応じて適切な複雑度を選択してもよい。具体的には、例えば、信頼度の低いネットワークの場合には、埋め込む演算メソッドの数を増やしたり、演算メソッドの種類を処理が複雑なものにすることで、認証情報複雑演算部３０２１の演算処理がより複雑になるようにする。また、信頼度の高いネットワークの場合には、埋め込む演算メソッドの数を減らしたり、演算メソッドの種類を処理が複雑でないものにすることで、認証情報複雑演算部３０２１の演算処理の複雑度を軽減する。
【０１１６】
また、複雑度選択部４０１０は、情報処理端末３０の処理能力やネットワーク５０の伝送速度に応じて、上記した認証処理のタイムアウトの時間を変えるようにしてよい。例えば、情報処理端末３０の処理能力が低い場合やネットワーク５０の伝送速度が遅い場合など、認証処理におけるレスポンスが遅くなる場合には、タイムアウト時間を長くする。また、情報処理端末３０の処理能力が高い場合やネットワーク５０の伝送速度が速い場合など、認証処理におけるレスポンスが速くなる場合には、タイムアウト時間を短くする。
【０１１７】
〈実施の形態５〉
本発明の実施の形態５における情報処理端末３０とサーバ４０の構成は図７の実施の形態４の場合と同様である。ただし、演算複雑化情報１０２３の内容とそれを扱う演算複雑化部１０１３の動作が、それぞれ、実施の形態２における演算複雑化情報１０２３の内容とそれを扱う演算複雑化部１０１３の動作と同様となっている。したがって、実施の形態２の場合と同様の原理で、情報処理端末３０の認証情報複雑演算部３０２１の演算は複雑になり、サーバ４０の認証情報演算部１０１４の演算は簡単で済むようにすることが出来る。
【０１１８】
実施の形態５におけるサーバ４０と情報処理端末３０の動作について、図７および図８０を参照し、図７および図８のステップ番号に対応させて説明する。
【０１１９】
ステップＳ１〜Ｓ２ｂの処理は実施の形態４と同様であり、端末アプリデータ１０２２および選択された複雑度の指示書４０２１とが指示内容実行部１０１２へ渡される。次いで、指示内容実行部１０１２は、指示書４０２１に書かれている変数の位置情報を用いて、認証情報３０４１〜３０４ｎに乱数を埋めて演算複雑化部１０１３に渡す。このとき、認証情報３０４１にも乱数を埋める点が、実施の形態４とは異なる（ステップＳ３）。
【０１２０】
次に、演算複雑化部１０１３は、演算メソッド組情報を用いて演算複雑化情報１０２３から対応する演算式を得て、演算式と認証情報３０４１〜３０４ｎを認証情報演算部１０１４に渡す。ただし、実施の形態４とは異なり、インバース値Ｃの取得は行わない（ステップＳ４）。
【０１２１】
具体的には演算複雑化部１０１３は、指示書４０２１に書かれているメソッドの位置情報を用いて端末アプリデータ１０２２にあらかじめ用意された演算メソッドを埋められる場所に演算メソッドイメージ１０２３００〜１０２３０６を選んで埋める。このとき、実施の形態２の図５に示す演算複雑化情報１０２３を用いる。つまり、定数がうまく打ち消されるようなメソッドのペアを記述した“ｐａｉｒ”と、演算式を“ｐａｉｒ”を用いて記述した“ｃａｌｃ”とを含んでいる。図５に示す演算複雑化情報１０２３を用いた演算複雑化部１０１３の処理は、実施の形態２で説明した通りである。
【０１２２】
ステップＳ５以降の処理は、実施の形態４の図８と同様、つまり実施の形態１の図２と同様である。
【０１２３】
このように、本発明の実施の形態５によれば、実施の形態２で得られる特有の効果を、サーバ４０でも得ることができる。
【０１２４】
〈実施の形態６〉
本発明の実施の形態６における情報処理端末３０とサーバ４０の構成は、図７に示す実施の形態４に係る情報処理端末３０およびセキュアデバイス１０と同様である。ただし、演算複雑化情報１０２３の内容とそれを扱う演算複雑化部１０１３の動作が、それぞれ、実施の形態３における演算複雑化情報１０２３の内容とそれを扱う演算複雑化部１０１３の動作と同様となっている。したがって、実施の形態３の場合と同様の原理で、情報処理端末３０の認証情報複雑演算部３０２１の演算は複雑になり、サーバ４０の認証情報演算部１０１４の演算は簡単で済むようにすることが出来る。
【０１２５】
実施の形態６におけるサーバ４０と情報処理端末３０の動作について、図７および図８０を参照し、図７および図８のステップ番号に対応させて説明する。
【０１２６】
ステップＳ１〜Ｓ２ｂの処理は実施の形態４と同様であり、端末アプリデータ１０２２および選択された複雑度の指示書４０２１とが指示内容実行部１０１２へ渡される。次いで、指示内容実行部１０１２は、指示書４０２１に書かれている変数の位置情報を用いて、認証情報３０４１〜３０４ｎに乱数を埋めて演算複雑化部１０１３に渡す。このとき、認証情報３０４１にも乱数を埋める点が、実施の形態４とは異なる（ステップＳ３）。
【０１２７】
次に、演算複雑化部１０１３は、演算メソッド組情報を用いて演算複雑化情報１０２３から対応する演算式を得て、演算式と認証情報３０４１〜３０４ｎを認証情報演算部１０１４に渡す。ただし、実施の形態４とは異なり、インバース値Ｃの取得は行わない（ステップＳ４）。
【０１２８】
具体的には演算複雑化部１０１３は、指示書４０２１に書かれているメソッドの位置情報を用いて端末アプリデータ１０２２にあらかじめ用意された演算メソッドを埋められる場所に演算メソッドイメージ１０２３００〜１０２３０６を選んで埋める。このとき、実施の形態３の図６に示す演算複雑化情報１０２３を用いる。つまり、掛けて“ａｎｓｗｅｒ”の値になるようなメソッドのペアを記述した“ｐａｉｒ”と、演算式を“ｐａｉｒ”とを用いて記述した“ｃａｌｃ”を含んでいる。図６に示す演算複雑化情報１０２３を用いた演算複雑化部１０１３の処理は、実施の形態３で説明した通りである。
【０１２９】
ステップＳ５以降の処理は、実施の形態４の図８と同様、つまり実施の形態１の図２と同様である。
【０１３０】
このように、本発明の実施の形態６によれば、実施の形態３で得られる特有の効果を、サーバ４０でも得ることができる。
【０１３１】
〈まとめ〉
以上説明したように、いずれの実施の形態においても、単純に認証情報を演算するよりも余分な演算を行わせるよう毎回異なるコードの追加を可能にしたため、攻撃者が解析しなければならない命令数が増加する。しかも、命令数が毎回異なるために解析がさらに困難になる。また、仮に、悪意の第三者が一度解析に成功しても、再度の解析をしなければならなくなるのでセキュリティは充分に確保される。しかも、セキュアデバイス内やサーバ内ではあらかじめ答えのわかっている問題を選ぶだけですむため、セキュアデバイス側またはサーバ側での認証鍵演算の処理の複雑さを抑えることができる。
【０１３２】
さらに、サーバでは、端末アプリ側での認証鍵演算の処理の複雑度を状況に応じて選択するので、多数の情報処理端末から端末アプリの要求を受け付ける場合や、通信環境や情報処理端末の動作環境に柔軟に対応でき、サービスの円滑化を図ることができる。また、通信環境や情報処理端末の動作環境を判別し、適切な複雑度を選択するので、安全性確保とサービスの円滑化とをバランスよく両立させることができる。
【産業上の利用可能性】
【０１３３】
本発明のセキュアデバイス、情報処理端末、および認証方法は、セキュアデバイス内での処理負荷およびカードアプリのコードサイズを低く抑えたままで、端末アプリの認証情報演算の内容を毎回異なる複雑な演算処理にすることができるセキュアデバイス、このセキュアデバイスを搭載した情報処理端末、および認証方法として有用である。つまり、本発明のセキュアデバイスおよび認証方法は、認証情報の演算内容が毎回異なる複雑な演算内容に変化し、しかもセキュアデバイス内での演算処理の複雑さが上がらないようにすることができ、かつ、端末アプリとの間で安全な認証が可能なセキュアデバイスおよび認証方法として有用である。したがって、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルコンピュータ、音楽再生・録音装置、カメラ、ビデオカメラ、自動預金預払機、街頭端末、決済端末など、各種の情報処理装置で使用される種々のセキュアデバイスに適用することが可能となる。また、本発明の情報処理端末は、上述した各種の情報処理装置への適用も可能である。さらに、本発明のサーバは、サーバ内での処理負荷およびサーバアプリのコードサイズを低く抑えたままで、端末アプリの認証情報演算の内容を毎回異なる複雑な演算処理にすることができるサーバとして有用である。したがって、ネットワーク上に配置されて音楽データ配信などのサービスを提供する各種サーバに適用することが可能となる。
【図面の簡単な説明】
【０１３４】
【図１】本発明の実施の形態１〜実施の形態３に係るセキュアデバイスおよび情報処理端末の構成と動作の流れを示す図
【図２】本発明の実施の形態１〜実施の形態３に係るセキュアデバイスおよび情報処理端末の動作の流れを示すフローチャート
【図３】本発明の実施の形態１および実施の形態４における演算複雑化部が用いる演算複雑化情報の一例を示す構成図
【図４】本発明の実施の形態１および実施の形態４における指示書と発行情報の具体例を説明するための図
【図５】本発明の実施の形態２および実施の形態５における演算複雑化部が用いる演算複雑化情報の一例を示す構成図
【図６】本発明の実施の形態３および実施の形態６における演算複雑化部が用いる演算複雑化情報の一例を示す構成図
【図７】本発明の実施の形態４〜実施の形態６に係るサーバおよび情報処理端末の構成と動作の流れを示す図
【図８】本発明の実施の形態４〜実施の形態６に係るサーバおよび情報処理端末の動作の流れを示すフローチャート
【符号の説明】
【０１３５】
１０  セキュアデバイス
１０１、４０１  発行アプリ
１０１１、４０１１  アプリ管理部
１０１２  指示内容実行部
１０１３  演算複雑化部
１０１４  認証情報演算部
１０１５  認証情報引渡部
１０２、４０２  記憶部
１０２１、４０２１  指示書
１０２２  端末アプリデータ
１０２３  演算複雑化情報
１０２３００〜１０２３０５  演算メソッドイメージ
１０２４  発行情報
１０２９  サービス固有情報
１０３  サービスアプリ
１０３１  認証情報取得部
１０３２、３０２２  認証処理部
１０３３  サービス固有部
３０  情報処理端末
３０１  アプリローダ
３０２  端末アプリ
３０２１  認証情報複雑演算部
３０２３  端末アプリ固有部
３０３１〜３０３ｍ  演算メソッド
３０４１〜３０４ｎ  認証情報
４０  サーバ
４０１０  複雑度選択部
５０  ネットワーク
【図１】
2007183931.tif 000003
【図２】
2007183931.tif 000004
【図３】
2007183931.tif 000005
【図４】
2007183931.tif 000006
【図５】
2007183931.tif 000007
【図６】
2007183931.tif 000008
【図７】
2007183931.tif 000009
【図８】
2007183931.tif 000010