(57)【特許請求の範囲】
【請求項１】
情報処理端末に処理させる種々のアプリケーションを記憶したセキュアデバイスであって、
前記アプリケーションの１つであるＭＴＡ（Master Trusted Agent）を認証するための情報を埋め込んだ前記ＭＴＡを、前記情報処理端末に対して発行するアプリ発行手段と、
前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤと、前記ＭＴＡ以外の前記アプリケーションに対応するアプリ暗号鍵とを対応づけて記憶する暗号鍵記憶手段と、
前記アプリ発行手段により発行した前記ＭＴＡから前記アプリＩＤを受けとった場合に、受け取った前記アプリＩＤに対応する前記アプリ暗号鍵を前記アプリ発行手段により発行した前記ＭＴＡに対して送信する送信手段と、
を有し、
前記ＭＴＡは、埋め込まれた前記ＭＴＡを認証するための情報を用いた認証の結果が真正である場合に、前記情報処理端末上で当該セキュアデバイスの処理を代行する機能により、前記送信手段により送信された前記アプリ暗号鍵を用いて、前記情報処理端末に記憶された暗号化済の前記ＭＴＡ以外の前記アプリケーションを復号するセキュアデバイス。
【請求項２】
前記ＭＴＡは、前記復号により、復号された暗号化済の前記ＭＴＡ以外のアプリケーションと、当該セキュアデバイスとの間で認証情報を共有させる請求項１記載のセキュアデバイス。
【請求項３】
前記ＭＴＡは、当該セキュアデバイスと前記ＭＴＡ以外の前記アプリケーションとに前記認証情報を渡すことにより、当該セキュアデバイスと前記ＭＴＡ以外の前記アプリケーションとの間で前記認証情報を共有させる、
請求項２記載のセキュアデバイス。
【請求項４】
前記ＭＴＡは、当該セキュアデバイスに前記認証情報を渡すとともに前記ＭＴＡ以外の前記アプリケーションに前記認証情報を埋め込むことにより、当該セキュアデバイスと前記ＭＴＡ以外の前記アプリケーションとの間で前記認証情報を共有させる、
請求項２記載のセキュアデバイス。
【請求項５】
前記ＭＴＡは、前記認証情報を当該セキュアデバイスから受け取り、受け取った前記認証情報を前記ＭＴＡ以外の前記アプリケーションに渡すことにより、当該セキュアデバイスと前記ＭＴＡ以外の前記アプリケーションとの間で前記認証情報を共有させる、
請求項２記載のセキュアデバイス。
【請求項６】
セキュアデバイスが発行した種々のアプリケーションを処理する情報処理端末であって、
前記アプリケーションの１つであるＭＴＡ（Master Trusted Agent）を起動する際に、前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡの発行を前記セキュアデバイスに対して要求するアプリ発行要求送信手段と、
前記セキュアデバイスから発行された前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡを受信するアプリ受信手段と、
を有し、
前記ＭＴＡは、前記ＭＴＡを認証するための情報を用いた認証の結果が真正である場合に、前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤを前記情報処理端末に送信するとともに、送信した前記アプリＩＤに対応する、前記ＭＴＡ以外の前記アプリケーションのアプリ暗号鍵を取得し、取得した前記アプリ暗号鍵を用いて、記憶された暗号化済の前記ＭＴＡ以外の前記アプリケーションを復号する情報処理端末。
【請求項７】
種々のアプリケーションを記憶したセキュアデバイスと、前記セキュアデバイスが発行した前記アプリケーションを処理する情報処理端末と、を有する通信システムであって、
前記セキュアデバイスは、
前記アプリケーションの１つであるＭＴＡ（Master Trusted Agent）を認証するための情報を埋め込んだ前記ＭＴＡを、前記情報処理端末に対して発行するアプリ発行手段と、
前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤと、前記ＭＴＡ以外の前記アプリケーションに対応するアプリ暗号鍵とを対応づけて記憶する暗号鍵記憶手段と、
前記アプリ発行手段により発行した前記ＭＴＡから前記アプリＩＤを受けとった場合に、受け取った前記アプリＩＤに対応する前記アプリ暗号鍵を前記アプリ発行手段により発行した前記ＭＴＡに対して送信する送信手段と、
を有し、
前記情報処理端末は、
前記ＭＴＡを起動する際に、前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡの発行を前記セキュアデバイスに対して要求するアプリ発行要求送信手段と、
前記セキュアデバイスから発行された前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡを受信するアプリ受信手段と、
を有し、
前記ＭＴＡは、
前記ＭＴＡを認証するための情報を用いた認証の結果が真正である場合に、前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤを前記情報処理端末に送信するとともに、送信した前記アプリＩＤに対応する、前記ＭＴＡ以外の前記アプリケーションのアプリ暗号鍵を取得し、取得した前記アプリ暗号鍵を用いて、記憶された暗号化済の前記ＭＴＡ以外の前記アプリケーションを復号する通信システム。
【請求項８】
情報処理端末に処理させる種々のアプリケーションを記憶したセキュアデバイスにおける通信方法であって、
前記アプリケーションの１つであるＭＴＡ（Master Trusted Agent）を認証するための情報を埋め込んだ前記ＭＴＡを、前記情報処理端末に対して発行するアプリ発行ステップと、
前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤと、前記ＭＴＡ以外の前記アプリケーションに対応するアプリ暗号鍵とを対応づけて記憶する暗号鍵記憶ステップと、
前記アプリ発行ステップにより発行した前記ＭＴＡから前記アプリＩＤを受けとった場合に、受け取った前記アプリＩＤに対応する前記アプリ暗号鍵を前記アプリ発行ステップにより発行した前記ＭＴＡに対して送信する送信ステップと、
を有し、
前記ＭＴＡは、埋め込まれた前記ＭＴＡを認証するための情報を用いた認証の結果が真正である場合に、前記情報処理端末上で前記セキュアデバイスの処理を代行する機能により、前記送信ステップにより送信された前記アプリ暗号鍵を用いて、前記情報処理端末に記憶された暗号化済の前記ＭＴＡ以外の前記アプリケーションを復号する通信方法。
【請求項９】
セキュアデバイスが発行した種々のアプリケーションを処理する情報処理端末における通信方法であって、
前記アプリケーションの１つであるＭＴＡ（Master Trusted Agent）を起動する際に、前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡの発行を前記セキュアデバイスに対して要求するアプリ発行要求送信ステップと、
前記セキュアデバイスから発行された前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡを受信するアプリ受信ステップと、
を有し、
前記ＭＴＡは、前記ＭＴＡを認証するための情報を用いた認証の結果が真正である場合に、前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤを前記情報処理端末に送信するとともに、送信した前記アプリＩＤに対応する、前記ＭＴＡ以外の前記アプリケーションのアプリ暗号鍵を取得し、取得した前記アプリ暗号鍵を用いて、記憶された暗号化済の前記ＭＴＡ以外の前記アプリケーションを復号する通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データをセキュアに保持するＪＡＶＡ（登録商標）カード等のセキュアデバイスと、そのセキュアデバイスを搭載する携帯電話やＰＤＡ（Personal Digital Assistant）、パーソナルコンピュータなどの情報処理端末に関する。
【背景技術】
【０００２】
近年、ＪＡＶＡ（登録商標）カード等のＣＰＵと耐タンパ性のある記憶領域を持つセキュアデバイスは、カードアプリ（アプリはアプリケーションの略で、アプリケーションとはアプリケーションプログラムのことである。以下同様である）を動作させることが可能であり、電子マネーや定期券、電子チケット等のサービスに利用されている。このセキュアデバイスを携帯電話等の情報処理端末に装着し、セキュアデバイスに対するユーザ・インターフェースとして情報処理端末のキーボードやディスプレイを使用し、また、セキュアデバイスに書き込むデータや読み出したデータを、情報処理端末の通信機能を利用してネットワーク上で伝送することにより、様々なサービスを実行することができる。そのサービスを実行する際に情報処理端末が行うべき動作を規定した端末アプリが情報処理端末上で動作する。
【０００３】
情報処理端末は、従来、ネットワークを通じてサービス・プロバイダから端末アプリをダウンロードするなどして、この端末アプリを取得している。
【０００４】
例えば、下記特許文献１には、セキュアデバイスに保持された電子マネーや電子チケット等の価値情報をオフライン環境下で表示する端末アプリを、サービス・プロバイダからダウンロードする情報処理端末が開示されている。
【特許文献１】特開２００３−１４１４５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、前記従来の方式では、情報処理端末上で起動される、セキュアデバイスにアクセスする端末アプリが、セキュアデバイスから見て真正なものであるかわからず、正規の認証情報を持つユーザが不正な端末アプリを用いて、真正な端末アプリに課せられるはずの制約を受けずに、セキュアデバイスの情報やサービスを利用可能であるという課題を有していた。
【０００６】
本発明は、前記従来の課題を解決するもので、端末アプリの真正性を認証することができるセキュアデバイス、情報処理端末、通信システム及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
前記従来の課題を解決するため、本発明のセキュアデバイスは、情報処理端末に処理させる種々のアプリケーションを記憶したセキュアデバイスであって、前記アプリケーションの１つであるＭＴＡ（Master Trusted Agent）を認証するための情報を埋め込んだ前記ＭＴＡを、前記情報処理端末に対して発行するアプリ発行手段と、前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤと、前記ＭＴＡ以外の前記アプリケーションに対応するアプリ暗号鍵とを対応づけて記憶する暗号鍵記憶手段と、前記アプリ発行手段により発行した前記ＭＴＡから前記アプリＩＤを受けとった場合に、受け取った前記アプリＩＤに対応する前記アプリ暗号鍵を前記アプリ発行手段により発行した前記ＭＴＡに対して送信する送信手段と、を有し、前記ＭＴＡは、埋め込まれた前記ＭＴＡを認証するための情報を用いた認証の結果が真正である場合に、前記情報処理端末上で当該セキュアデバイスの処理を代行する機能により、前記送信手段により送信された前記アプリ暗号鍵を用いて、前記情報処理端末に記憶された暗号化済の前記ＭＴＡ以外の前記アプリケーションを復号する構成を採る。
【０００８】
本発明の情報処理端末は、セキュアデバイスが発行した種々のアプリケーションを処理する情報処理端末であって、前記アプリケーションの１つであるＭＴＡ（Master Trusted Agent）を起動する際に、前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡの発行を前記セキュアデバイスに対して要求するアプリ発行要求送信手段と、前記セキュアデバイスから発行された前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡを受信するアプリ受信手段と、を有し、前記ＭＴＡは、前記ＭＴＡを認証するための情報を用いた認証の結果が真正である場合に、前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤを前記情報処理端末に送信するとともに、送信した前記アプリＩＤに対応する、前記ＭＴＡ以外の前記アプリケーションのアプリ暗号鍵を取得し、取得した前記アプリ暗号鍵を用いて、記憶された暗号化済の前記ＭＴＡ以外の前記アプリケーションを復号する構成を採る。
【０００９】
本発明の通信システムは、種々のアプリケーションを記憶したセキュアデバイスと、前記セキュアデバイスが発行した前記アプリケーションを処理する情報処理端末と、を有する通信システムであって、前記セキュアデバイスは、前記アプリケーションの１つであるＭＴＡ（Master Trusted Agent）を認証するための情報を埋め込んだ前記ＭＴＡを、前記情報処理端末に対して発行するアプリ発行手段と、前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤと、前記ＭＴＡ以外の前記アプリケーションに対応するアプリ暗号鍵とを対応づけて記憶する暗号鍵記憶手段と、前記アプリ発行手段により発行した前記ＭＴＡから前記アプリＩＤを受けとった場合に、受け取った前記アプリＩＤに対応する前記アプリ暗号鍵を前記アプリ発行手段により発行した前記ＭＴＡに対して送信する送信手段と、を有し、前記情報処理端末は、前記ＭＴＡを起動する際に、前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡの発行を前記セキュアデバイスに対して要求するアプリ発行要求送信手段と、前記セキュアデバイスから発行された前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡを受信するアプリ受信手段と、を有し、前記ＭＴＡは、前記ＭＴＡを認証するための情報を用いた認証の結果が真正である場合に、前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤを前記情報処理端末に送信するとともに、送信した前記アプリＩＤに対応する、前記ＭＴＡ以外の前記アプリケーションのアプリ暗号鍵を取得し、取得した前記アプリ暗号鍵を用いて、記憶された暗号化済の前記ＭＴＡ以外の前記アプリケーションを復号する構成を採る。
【００１０】
本発明の通信方法は、情報処理端末に処理させる種々のアプリケーションを記憶したセキュアデバイスにおける通信方法であって、前記アプリケーションの１つであるＭＴＡ（Master Trusted Agent）を認証するための情報を埋め込んだ前記ＭＴＡを、前記情報処理端末に対して発行するアプリ発行ステップと、前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤと、前記ＭＴＡ以外の前記アプリケーションに対応するアプリ暗号鍵とを対応づけて記憶する暗号鍵記憶ステップと、前記アプリ発行ステップにより発行した前記ＭＴＡから前記アプリＩＤを受けとった場合に、受け取った前記アプリＩＤに対応する前記アプリ暗号鍵を前記アプリ発行ステップにより発行した前記ＭＴＡに対して送信する送信ステップと、を有し、前記ＭＴＡは、埋め込まれた前記ＭＴＡを認証するための情報を用いた認証の結果が真正である場合に、前記情報処理端末上で前記セキュアデバイスの処理を代行する機能により、前記送信ステップにより送信された前記アプリ暗号鍵を用いて、前記情報処理端末に記憶された暗号化済の前記ＭＴＡ以外の前記アプリケーションを復号するようにした。
【００１１】
また、本発明の通信方法は、セキュアデバイスが発行した種々のアプリケーションを処理する情報処理端末における通信方法であって、前記アプリケーションの１つであるＭＴＡ（Master Trusted Agent）を起動する際に、前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡの発行を前記セキュアデバイスに対して要求するアプリ発行要求送信ステップと、前記セキュアデバイスから発行された前記ＭＴＡを認証するための情報を埋め込んだ前記ＭＴＡを受信するアプリ受信ステップと、を有し、前記ＭＴＡは、前記ＭＴＡを認証するための情報を用いた認証の結果が真正である場合に、前記ＭＴＡ以外の前記アプリケーションの識別情報であるアプリＩＤを前記情報処理端末に送信するとともに、送信した前記アプリＩＤに対応する、前記ＭＴＡ以外の前記アプリケーションのアプリ暗号鍵を取得し、取得した前記アプリ暗号鍵を用いて、記憶された暗号化済の前記ＭＴＡ以外の前記アプリケーションを復号するようにした。
【発明の効果】
【００６３】
本発明のセキュアデバイスは、アプリケーションに当該アプリケーションを認証するための情報を埋め込んで、情報処理端末に渡すようにしたため、情報処理端末によって当該アプリケーションが起動された際に、当該アプリケーションを認証するための情報を用いて認証を行うことにより、当該アプリケーションが真正であるか否かを認証することができる。
【発明を実施するための最良の形態】
【００６４】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００６５】
（実施の形態１）
本発明の実施の形態１では、端末アプリを保持するセキュアデバイスについて説明する。このセキュアデバイスを情報処理端末に装着し、情報処理端末が端末アプリの起動を要求すると、セキュアデバイスによりアプリ認証情報の埋め込まれた端末アプリが情報処理端末に発行され、情報処理端末が端末アプリを起動すると、セキュアデバイスと情報処理端末との間で、アプリ認証情報による認証が行われる。
【００６６】
図１において、情報処理端末３０は、端末ＯＳ３５と、端末アプリ３１の発行を要求するアプリ発行要求送信部３０１と、発行された端末アプリ３１を受けとるアプリ受信部３０２とを備えている。また、起動される端末アプリ３１は、セキュアデバイス１０により端末アプリ３１自身に埋め込まれたアプリ認証情報に基づいて認証を行うアプリ認証部３１１と、セキュアデバイス１０上のカードアプリ１１（図２（ａ）参照）と通信を行う通信部３１２とを備えている。なお、情報処理端末３０には、端末アプリ３１を保持するためのメモリやＨＤＤ等の記憶手段や、端末アプリ３１を実行するためのＣＰＵやメモリ等が設けられているが、説明および図では省略して説明するものとし、他の実施の形態でも同様である。また、図１では、情報処理端末３０に端末アプリ３１が設けられているが、これは、情報処理端末３０がセキュアデバイス１０から発行された端末アプリ３１を受け取りメモリ等に記憶していることを示している。このことは、情報処理端末３０にて端末アプリ３１を暗号化して記憶しておく後述の実施の形態３（図１２，図１３参照）を除く他の実施の形態でも同様である。
【００６７】
一方、セキュアデバイス１０は、端末アプリ３１にアプリ認証情報を埋め込んで、端末アプリ３１の発行を行うアプリ発行部１０１と、発行された端末アプリ３１を送信するアプリ送信部１０２と、埋め込んだアプリ認証情報に基づいて発行した端末アプリ３１の認証を行うアプリ認証部１０３と、情報処理端末３０上の端末アプリ３１と通信を行う通信部１０４と、真正性の確認された端末アプリ３１を保持するアプリ記憶部１０５と、発行した時に端末アプリ３１に埋め込んだアプリ認証情報を記憶する発行情報記憶部１０６とを備えている。なお、セキュアデバイス１０にも、カードアプリ１１や発行アプリ１２を実行するためのＭＰＵやメモリ等が設けられているが、説明および図では省略して説明するものとし、他の実施の形態でも同様である。また、図中、括弧書きの数字は、動作手順を示している（後述するその他の図においても同様である）。
【００６８】
次に、図１における動作を説明すると、情報処理端末３０のアプリ発行要求送信部３０１は、端末アプリ３１の起動が利用者等から要求されると、端末アプリ３１の発行要求を、セキュアデバイス１０のアプリ発行部１０１に送信する（図１の（１））。アプリ発行部１０１は、アプリ記憶部１０５から端末アプリ３１を読みだし、端末アプリ３１の発行毎に毎回異なるよう任意に発生させたアプリ認証情報を埋め込む発行処理を行い、発行に関する情報である、端末アプリ３１のアプリＩＤ（アプリの識別子）と、埋め込んだアプリ認証情報とを対応づけて、発行情報記憶部１０６に保存し、発行した端末アプリ３１をアプリ送信部１０２に渡す（図１の（２））。アプリ送信部１０２は、発行された端末アプリ３１を情報処理端末３０のアプリ受信部３０２に送信する（図１の（３））。アプリ受信部３０２は、発行された端末アプリ３１を受信し、起動する（図１の（４））。端末アプリ３１のアプリ認証部３１１は、セキュアデバイス１０のアプリ認証部１０３との間で埋め込まれたアプリ認証情報に基づく認証処理を行う（図１の（５））。その際、後述するようにアプリ認証情報に基づいて鍵（以下、アプリ認証鍵と呼ぶ）を生成して端末アプリ３１の認証を行うが、端末アプリ３１が認証されると、端末アプリ３１の通信部３１２およびセキュアデバイス１０の通信部１０４は、それぞれ認証処理中に新たに共有した鍵、すなわちアプリ認証鍵とは別に生成した鍵により通信を行う（図１の（６））。これにより、セキュアデバイス１０に格納されている重要なデータや価値あるデータである機密情報は、アプリ認証鍵により認証された端末アプリ３１にしか渡さないので、かかる機密情報を保護することが可能となると共に、アプリ認証鍵は認証のときしか使用せず、その後の通信では新たに生成した鍵を共有して通信するので、認証処理と通信処理とで使用する鍵が別々になり、認証と通信の独立性が高まり、認証鍵や通信の際に使用する鍵の漏洩等をより確実に防止することが可能となる。
【００６９】
図２（ａ）および図２（ｂ）の構成図は、それぞれ、実施の形態１の情報処理端末３０およびセキュアデバイス１０の各機能ブロックを実装する構成を示している。
【００７０】
情報処理端末３０上において、アプリ認証部３１１、通信部３１２、およびサービスの提供を受け、利用者への情報の提示や入力の受け付けなどを行うサービス部３１３は、端末アプリ３１によって実装される。また、アプリ発行要求送信部３０１およびアプリ受信部３０２は、セキュアデバイス１０に格納された端末アプリ３１の発行を依頼し、起動を行うアプリケーションである基本ローダ３２によって実装される。
【００７１】
セキュアデバイス１０上において、アプリ発行部１０１およびアプリ送信部１０２は、発行アプリ１２によって実装される。また、アプリ認証部１０３、通信部１０４およびサービスを提供するサービス提供部１０９は、カードアプリ１１によって実装される。アプリ記憶部１０５および発行情報記憶部１０６は、セキュアデバイス１０上にある、耐タンパ性を持つなど外部からの直接参照が困難な記憶領域で、例えばセキュアデバイス１０内のＥＥＰＲＯＭやフラッシュメモリによって実現される。
【００７２】
図３のシーケンス図は、このセキュアデバイス１０および情報処理端末３０の処理手順を示している。
【００７３】
情報処理端末３０の利用者による指示や、セキュアデバイス１０の挿入の情報処理端末３０による検出などがあった場合に、端末ＯＳ３５により基本ローダ３２が起動される（図３の（１））。基本ローダ３２は、起動する端末アプリ３１を指定するアプリＩＤをセキュアデバイス１０の発行アプリ１２に送信する（図３の（２））。
【００７４】
セキュアデバイス１０では、発行アプリ１２がアプリ認証情報を基本ローダ３２からアプリＩＤにより指定された端末アプリ３１に埋め込み（図３の（３））、情報処理端末３０の基本ローダ３２に発行する（図３の（４））。
【００７５】
基本ローダ３２は端末アプリ３１を受信すると、受信した端末アプリ３１を端末ＯＳ３５上で起動させる（図３の（５））。端末アプリ３１は、埋め込まれたアプリ認証情報を用いて、セキュアデバイス１１のカードアプリ１１との間で認証を行う（図３の（６））。
【００７６】
図４は、端末アプリ３１の生成から端末アプリ３１のセキュアデバイス１０へのダウンロード、さらには、情報処理端末３０上の端末アプリ３１とセキュアデバイス１０との認証に至るまでのシステムの動作の概要を示している。なお、図４に示すセキュアデバイス１０においては、図１に示すアプリ記憶部１０５と発行情報記憶部１０６とを１つの記憶装置１３として表現しており、発行情報１３１、機密情報１３２、端末アプリ３１、指示書１３３等を記憶している。
【００７７】
また、図４において、端末アプリ生成装置２０は、ソースコード２１をアプリ認証情報の埋め込みが可能な端末アプリに変換するソフトウェアが搭載されたコンピュータなどで構成され、埋め込み準備部２２と、コンパイラ２３と、指示書生成部２４とを有している。
【００７８】
以下の例では、端末アプリ３１に埋め込まれたアプリ認証情報から実行時にアプリ認証鍵を計算して、アプリ認証鍵によって認証する手法を取っている。さらに、ソースコード、特にアプリ認証鍵を計算し、認証を行う部分のソースコードを難読化すると効果的である。図４は、端末アプリ３１を通常どおり開発し、ＪＡＶＡ（登録商標）などの言語で書かれたソースコード２１を得た所から始まっている。
【００７９】
流れは、大きく分けて端末アプリ生成装置２０により、ソースコード２１から、アプリ認証情報の埋め込み可能な端末アプリ３１と、アプリ認証情報の埋め込み方を指示する指示書１３３を生成し、セキュアデバイス１０に記憶するまでの図４の（１）から（４）の動作と、セキュアデバイス１０が端末アプリ３１を発行し、認証処理が完了するまでの図４の（５）から（９）の動作から成っている。
【００８０】
次に、図４における動作を説明すると、まず、端末アプリ生成装置２０の埋め込み準備部２２は、開発した端末アプリのソースコード２１を受けとり（図４の（１））、埋め込み準備を行う。具体的には、埋め込み準備部２２は、受け取ったソースコード２１にアプリ認証情報を埋め込むための余地と、埋め込まれたアプリ認証情報からアプリ認証鍵を得て、セキュアデバイス１０と認証処理を行うためのソースコードを追加する。また、追加したソースコードに対応した埋め込み方とその利用の方法を指示する指示書１３３の雛型となる指示書テンプレートを生成する（図４の（２））。
【００８１】
この埋め込み準備の行われた端末アプリ３１のソースコードは、コンパイラ２３によってコンパイルされ、バイトコード（オブジェクトコード）として指示書生成部２４に出力される（図４の（３））。
【００８２】
次に、指示書生成部２４は、コンパイラ２３からの端末アプリ３１のバイトコードと、埋め込み準備部２２からの指示書テンプレートとから指示書１３３を生成し、コンパイラ２３と指示書生成部２４とは、それぞれ、端末アプリ３１のバイトコードと指示書１３３をセキュアデバイス１０の記憶装置１３に記憶する（図４の（４））。
【００８３】
利用者が情報処理端末３０にて起動の操作をするなどして、端末アプリ３１の起動が要求されると、基本ローダ３２が起動され、基本ローダ３２はセキュアデバイス１０の発行アプリ１２に対して、起動すべき端末アプリ３１のアプリＩＤを伝えて、起動すべき端末アプリ３１の発行を要求する（図４の（５））。これは、図１の（１）の動作に相当する。この時、利用者の認証、起動すべき端末アプリ３１のライセンスの認証などが行われてもよい。
【００８４】
セキュアデバイス１０内の発行アプリ１２は、記憶装置１３から端末アプリ３１と指示書１３３を読み出し、指示書１３３を参照して、乱数や乱数を計算する式等により毎回値の異なるアプリ認証情報を端末アプリ３１のバイトコードに埋め込む。そして、発行アプリ１２は、端末アプリ３１に埋め込んだアプリ認証情報からアプリ認証鍵を計算し、アプリＩＤと対応づけて発行情報１３１として記憶する（図４の（６））。これは、図１の（２）の動作に相当する。アプリ認証鍵は、情報処理端末３０上にて端末アプリ３１が実際に計算するアプリ認証鍵と同じものが計算される。
【００８５】
発行アプリ１２から発行された端末アプリ３１が情報処理端末３０の基本ローダ３２に渡されると、情報処理端末３０にて端末アプリ３１として起動される（図４の（７））。これは、図１の（３），（４）の動作に相当する。
【００８６】
端末アプリ３１は、端末アプリ３１に埋め込まれたアプリ認証情報と、端末アプリ生成部２０の埋め込み準備部２２によって端末アプリ３１のソースコード２１に追加されたセキュアデバイス１０と認証処理を行うためのコードとによってアプリ認証鍵を計算し、セキュアデバイス１０のカードアプリ１１との間で認証プログラムにより認証処理を行う（図４の（８））。これは、図１の（５）の動作に相当する。
【００８７】
認証処理の結果、情報処理端末３０に発行されて起動している端末アプリ３１が真正なものと認証され、認証された情報処理端末３０の端末アプリ３１から機密情報１３２等を読みだす要求を受けると、カードアプリ１１の通信部１０４は、記憶装置１３から機密情報１３２等を読みだして、情報処理端末３０の端末アプリ３１との間で、アプリ認証鍵とは別の鍵を共有し通信して渡す（図４の（９））。これは、図１の（６）の動作に相当する。認証されていない情報処理端末３０内の端末アプリ３１からの要求には応じない。
【００８８】
以下において、図４の具体的なデータ例を含めた詳細な動作について、図５〜図８を参照して説明する。
【００８９】
図４における端末アプリ生成装置２０の動作（２）では埋め込みの準備を行う。
【００９０】
具体的な埋め込みの例として以下では、埋め込まれるアプリ認証情報が変数に代入され、その変数からアプリ認証鍵を計算する方法について述べる。埋め込み準備部２２は、ソースコード２１に埋め込まれるアプリ認証情報が入る変数を用意し、それらの変数を用いてアプリ認証鍵を計算するコードを追加する。
【００９１】
埋め込む方法によっては、コンパイラ２３にデバッグ情報を出力させ、指示書テンプレートから指示書を生成する際に利用するなど、コンパイルの方法が重要になる。例えば、ローカル変数として代入される変数を用意する場合には、指示書１３３を生成するために、ローカル変数の情報が必要だが、通常コンパイラ２３はローカル変数の情報をバイトコードに残さない。デバッグ情報を出力させれば、ローカル変数の情報も残るため、指示書１３３の生成を行うことができるようになる。デバッグ情報をそのまま残しておくと、解析の手がかりになりえるため、指示書生成後、バイトコードからデバッグ情報を取り除くなど、バイトコードに余分な情報が残らないよう十分注意を払う。
【００９２】
また、ソースコードの難読化を行う場合は難読化の方法によっては、難読化のソフトウェアから情報を得る必要がでてくる。例えば、シンボル名を無意味なものに変換するような難読化を行う場合、もとの名前との対応がわからなければならない。
【００９３】
図５（ａ）は、図４における動作（２）、すなわち端末アプリ生成装置２０の埋め込み準備部２２により生成される指示書テンプレートの具体例である。
【００９４】
一行目は、端末アプリ３１に対するアプリ認証情報の埋め込み先と、アプリ認証情報として埋め込む情報を示している。変数名ｓ１，ｓ２，ｓ３はコード中の変数を表しており、この行は、ｓ１，ｓ２，ｓ３に乱数を入れるという意味である。このｓ１，ｓ２，ｓ３は埋め込み準備時にコード中に用意される。言語の仕様に応じて３２ビットの整数値を入れることを想定しているが、必要であれば、値の種類や範囲を明示してもよい。
【００９５】
二行目は、埋め込まれたアプリ認証情報からアプリ認証鍵を得る計算方法を示しており、この場合、埋め込んだ三個の変数の排他的論理和を取るという意味である。
【００９６】
図５（ｂ）は、図４における動作（４）、すなわち端末アプリ生成装置２０の指示書生成部２４により生成される上述の指示書テンプレートに対応した指示書１３３の具体例である。
【００９７】
コンパイルされて決定したｓ１，ｓ２，ｓ３のバイトコード上の位置で、ｓ１，ｓ２，ｓ３を置きかえる。図５（ｃ）に模式的に示したように、０ｘ４７，０ｘ５７，０ｘ６７はそれぞれｓ１，ｓ２，ｓ３の位置の先頭からのバイト数の十六進表記である（すなわち、０ｘ４７はｓ１が十進表記でバイトコードの７１バイト目であることを示す）。変数名は順に％１，％２，％３と番号で置きかえた。
【００９８】
バイトコードと指示書は、生成された後には、セキュアデバイス１０の記憶装置１３に記憶されるが、以下に注意すべきことについて述べる。
【００９９】
バイトコードと指示書１３３をセキュアデバイス１０に渡す際には、真正性の確認や改竄検知が可能な形で渡す必要がある。例えば、渡すデータのハッシュ値に端末アプリ生成装置の秘密鍵で電子署名を施した証明書を添付する。セキュアデバイス１０は証明書を検証できるよう生成装置の公開鍵証明書を持ち、受けとったデータを検証してから記憶する。
【０１００】
また、端末アプリ生成装置２０、あるいは端末アプリ生成装置２０から端末アプリと指示書を受けとって配布するサーバ等は、端末アプリや指示書が盗聴され、なりすまされることを防ぐために、セキュアデバイス１０に送信する際には、相互認証をした上で、セキュアな通信路を確立し、暗号化して送信する。セキュアデバイス１０側では、発行アプリ１２が受信、検証し記憶する。
【０１０１】
図４の動作（５）において、基本ローダ３２が、発行を要求する端末アプリ３１のアプリＩＤを発行アプリ１２に送信し、発行要求を行う。
【０１０２】
この時、アプリＩＤとともに情報処理端末３０の機種や型番、空きメモリなどの情報も送信し、発行アプリ１２が、アプリＩＤの他に送信された情報も利用して発行する端末アプリ３１を選択してもよい。例えば、セキュアデバイス１０は同じサービスに対して、機種Ａ用と機種Ｂ用、あるいは、多機能だが必要なメモリの大きいアプリとシンプルだが必要なメモリの少ないアプリを保持し、情報処理端末３０に応じて発行する端末アプリ３１を選択することができる。
【０１０３】
図４の動作（６）において、発行アプリ１２は指示書１３３を参照して端末アプリ３１のバイトコードにアプリ認証情報の埋め込みを行う。
【０１０４】
発行すべき端末アプリ３１の指示書１３３として、例えば、図５（ｂ）に示すような指示書１３３を受けとった発行アプリ１２は、この指示書１３３の一行目に従い、端末アプリ３１のバイトコードの０ｘ４７，０ｘ５７，０ｘ６７の位置に乱数（random）を埋め込み、それぞれ一から三番目の変数（％１，％２，％３）として記憶する。その後、二行目に従い、それらの排他的論理和を計算して、アプリ認証鍵とする。
【０１０５】
ここで、発行アプリ１２は、端末アプリ３１のバイトコードと指示書テンプレートを受けとり、指示書生成部２４と同様に指示書１３３を生成して埋め込むことも可能だが、その処理は複雑であり、しかも、セキュアデバイス１０上の発行アプリ１２が発行毎に実行するのは無駄であり、一度指示書１３３を生成しておけば同じものが使えるため、図４に示す端末アプリ生成装置２０のようにあらかじめ生成しておけば無駄を省ける。また、さらに複雑な処理をするために、コンパイラ２３の手を借りたり、難読化を用いたりする時には、指示書１３３を生成するために、より多くの情報を必要とするため、このことからも、指示書１３３はセキュアデバイス１０内で生成するのではなく、端末アプリ生成装置２０等のセキュアデバイス１０外にてあらかじめ作成した方が良い。
【０１０６】
図４の動作（８）において、カードアプリ１１は端末アプリ３１の認証処理を行う。
【０１０７】
端末アプリ３１は、指示書１３３の指示内容と同様に、アプリ認証情報である埋め込まれた三個の乱数値の排他的論理和をアプリ認証鍵とするようプログラムされている。カードアプリ１１は、記憶装置１３に記憶された発行情報１３１からアプリ認証鍵を得る。アプリ認証鍵による認証手法には共通鍵による手法を用いることが可能である。例えば、チャレンジ・レスポンスを用いるか、あるいは相互認証の必要がなければ、単にアプリ認証鍵をワンタイムパスワードとして扱って、セキュアデバイスに送信するだけでもよい。さらに認証時に、その後の通信に用いる新たな鍵を共有することが望ましい。
【０１０８】
ここで、発行アプリ１２は、アプリ認証鍵を発行情報１３１として保存する際に、アプリ認証鍵に有効期限をつけるようにしてもよい。つまり、この有効期限はカードアプリ１１のアプリ認証部１０３によって認証処理が行われる際に検証される。具体的には、アプリ認証部１０３は、アプリ発行部１０１によって端末アプリ３１が発行されてからの経過時間を計測し、その経過時間が所定の有効期限内の場合は、アプリ認証鍵は有効であり、認証を行うことが可能であり、その経過時間が所定の有効期限を過ぎた場合には、アプリ認証鍵を無効とし、認証を行わないようにする。また、アプリ認証鍵は、最初の認証のときにのみ用いられ、それ以降の通信に用いる鍵は別途共有する。そのため、端末アプリの情報処理端末３０へのロードが終了し、アプリ認証鍵による認証が終了するまでにかかる程度の時間だけ有効であれば十分である。必要以上に長い時間有効であると、発行した端末アプリが解析され、アプリ認証鍵が漏洩し、なりすましなどの攻撃が行われる危険が増すため、短めの期限を設定する。このように、認証を行うのに十分な期間だけ有効であるような有効期限をアプリ認証鍵に付けるようにすれば、端末アプリ３１を解析し、不当な端末アプリ３１になりすます攻撃を行おうとしても、認証情報の解析で余分に時間がかかっている間にアプリ認証鍵の期限が切れるため、不当な端末アプリになりすます攻撃から防御できると共に、何らかの攻撃が試みられていたことを検出できる。
【０１０９】
図６は、発行情報１３１の例である。アプリＩＤと、アプリ認証鍵と、アプリ認証鍵の有効期限が書かれており、例えば二行目は、アプリＩＤがａｐ１である端末アプリ３１は、アプリ認証鍵が０ｘｅｂａｂｅｆａｃ（十六進表記)であり、有効期限が２００３年３月３１日の７時０分５秒までであることを示している。
【０１１０】
異なる複数のサービスを一つのセキュアデバイス１０で提供するなどの目的で、複数のカードアプリ１１がインストールされる場合は、端末アプリ３１は自分が通信するべきカードアプリ１１がどれであるかを識別できることが必要である。端末アプリ３１の開発時にカードアプリ１１の識別情報を指定しておくのが簡便である。カードアプリ１１の識別情報は開発側に公開されないこともあり得る。この場合、発行アプリ１２がサーバ等からカードアプリ１１の識別情報を受けとり記憶する際に、埋め込みと同じ要領で指示書を受けとり、端末アプリに書きこむ。また、カードアプリ１１の識別情報を動的なものにできる場合は、発行アプリ１２が、カードアプリ１１の識別情報を発行時に埋め込んでもよい。
【０１１１】
また、端末アプリ３１は、情報処理端末３０にて端末アプリ３１が実行され終了する時、セキュアデバイス１０から入手した情報処理端末３０側に記憶することを意図されていない情報、例えばアプリ認証鍵やカードアプリ１１の識別情報等の発行情報１３１や機密情報１３２等はメモリ上も含めて記憶領域から全て消去して終了するようにプログラミングしておくと良い。このようにすれば、情報処理端末３０側に記憶することを意図されていない情報が情報処理端末３０側に渡っても、端末アプリ３１の実行終了時には、確実に消去されるので、漏洩することを防止することが可能となる。
【０１１２】
次に、アプリ認証情報の埋め込み方、および対応する指示書１３３のバリエーションを示す。
【０１１３】
図７は、端末アプリ３１に埋め込む認証情報の計算に用いられないダミーデータを入れる例である。図７（ａ）にダミーあり指示書テンプレートの例を示す。一行目は、ｓ１からｓ６まで六個の乱数をアプリ認証情報として端末アプリ３１に埋め込むという意味である。二行目は、ｓ６の値によって、ｓ１からｓ５の値から三個選んでａ，ｂ，ｃにするという意味である。つまり、六個の乱数のうち、二個はダミーデータということである。選び方は、例えば、ｓ１〜ｓ５から３個取り出して並べる全て並べ方（全順列という。この場合６０通りある）を作って番号を振り、ｓ６を全順列の数（この場合６０）で割った余りに対応する順列に従ってａ，ｂ，ｃに割りあてる。三行目は、割りあてたａ，ｂ，ｃを使ってアプリ認証鍵を計算する。図７（ｂ）は、図７（ａ）に示すダミーあり指示書テンプレートから生成される指示書１３３の例である。埋め込まれる位置が決定され、変数名が％７などに置きかわるのは、図５（ｂ）の場合と同様である。また、端末アプリ３１は、図７（ｂ）に示すダミーあり指示書１３３の指示内容と同様に、アプリ認証情報である埋め込まれた六個の乱数値から三個を選択して排他的論理和をアプリ認証鍵とするようプログラムされている。
【０１１４】
以上のように、ダミーあり指示書テンプレート、ダミーあり指示書１３３に従ってダミーデータを入れることによって、例えば、複数の発行された端末アプリ３１を比較することによって端末アプリ３１に埋め込まれたアプリ認証情報が外部から抽出できた場合でも、アプリ認証鍵の推測をより困難にすることができる。その結果、差分攻撃に対する耐タンパ性も強化することが可能となる。
【０１１５】
このように、実施の形態１では、端末アプリ３１を保持するセキュアデバイス１０が装着された情報処理端末３０が端末アプリ３１の起動を要求すると、セキュアデバイス１０が端末アプリ３１にアプリ認証情報を埋め込んで情報処理端末３０に発行するため、情報処理端末３０が発行された端末アプリ３１を起動すると、セキュアデバイス１０と情報処理端末３０との間で、アプリ認証情報に基づいて認証を行うことが可能になる。
【０１１６】
なお、本実施の形態においては、端末アプリ３１に埋め込む認証情報として指示書１３３に基づいて端末アプリ３１の発行毎に毎回値の異なるアプリ認証情報を用いる例を説明したが、本発明ではこれに限らず、セキュアデバイス１０から送信してもらわないと認識できないカードアプリ１１の識別情報や、それ以外の任意の情報でもよく、例えば、端末アプリ３１の動作を規定するパラメータであってもよいし、ライセンス情報などでもよい。その際、指示書１３３は、そのような情報を埋め込むことを指示する目的にも用いることができる。
【０１１７】
また、本実施の形態においては、発行アプリ１２がアプリ認証情報に基づきアプリ認証鍵を計算して発行情報の一つとして発行情報記憶部１０６に記憶するように説明したが、本発明ではこれに限らず、アプリ認証情報からアプリ認証鍵を計算するプログラムコードがカードアプリ１１内にあり、例えばカードアプリ１１内のアプリ認証部１０３等が認証時に発行アプリ１２によって作られたアプリ認証情報を読みこんでアプリ認証鍵を計算するようにしてもよい。この場合、発行アプリ１２が受け取る指示書１３３にはアプリ認証鍵の計算方法が書かれている必要がないので、発行アプリ１１にもアプリ認証鍵がわからず、認証の独立性が高まり、認証鍵の漏洩等をより確実に防止することができる。
【０１１８】
図８は埋め込んだアプリ認証情報からアプリ認証鍵を計算する際にカードアプリ１１を用いる例である。図８（ａ）に指示書テンプレートの例を示す。一行目は、２５６個のアプリ認証情報を埋め込むことを示している。この場合は、配列として埋め込んでいる。二行目は、埋め込んだアプリ認証情報を引数としてカードアプリ１１に渡し、カードアプリ１１が埋め込まれたアプリ認証情報から計算し、返された結果をアプリ認証鍵とすることを示している。図８（ｂ）は、指示書テンプレートから生成される指示書１３３の例である。埋め込まれる位置が決定され、変数名が０ｘ３７などに置きかわるのは、図５の場合と同様である。
【０１１９】
また、本実施の形態において、基本ローダ３２は発行された端末アプリを受けとってすぐに起動していたが、端末アプリ３１に対して発行アプリ１２による署名が行われており、基本ローダ３２がその署名の検証をしてから起動することで、不正な端末アプリ３１を起動してしまうことを防ぐようにしてもよい。
【０１２０】
（実施の形態２）
本発明の実施の形態２では、情報処理端末上でセキュアデバイスの処理を代行する機能を有しているＭＴＡ（Master Trusted Agent）と呼ばれる端末アプリと、その他の端末アプリとを保持するセキュアデバイスについて説明する。このセキュアデバイスを情報処理端末に装着すると、まず、ＭＴＡと呼ばれる端末アプリがセキュアデバイスから情報処理端末に発行されて情報処理端末にて起動され、ＭＴＡに埋め込まれた認証情報により認証されると、その後の端末アプリの起動は、ＭＴＡにより仲介される。つまり、情報処理端末がセキュアデバイス装着後、端末アプリの起動を要求すると、ＭＴＡ経由でセキュアデバイスによりアプリ認証情報の埋め込まれた端末アプリが発行され、ＭＴＡが端末アプリを起動すると、アプリ認証情報による認証が行われる。
【０１２１】
このため、実施の形態１の場合とは異なり、実施の形態２では、セキュアデバイスが情報処理端末に装着されると、まず、ＭＴＡと呼ばれる端末アプリがセキュアデバイスから情報処理端末に発行されて起動および認証され、先に認証された端末アプリであるＭＴＡが、他の実行すべき端末アプリの起動を行うために、他の実行すべき端末アプリを解析される可能性が低くなる。
【０１２２】
図９において、実施の形態２の情報処理端末３０は、端末ＯＳ３５と、端末アプリの発行を要求するアプリ発行要求送信部３０１と、発行された端末アプリ３１を受けとるアプリ受信部３０２と、端末アプリの発行を依頼するアプリ発行依頼部３０７とを備えている。また、起動される端末アプリ３１は、実施の形態１と同様に、埋め込まれたアプリ認証情報に基づいて認証を行うアプリ認証部３１１と、セキュアデバイス１０上のカードアプリ１１と通信を行う通信部３１２とを備えている。
【０１２３】
一方、セキュアデバイス１０は、実施の形態１と同様に、端末アプリ３１にアプリ認証情報を埋め込み端末アプリ３１の発行を行うアプリ発行部１０１と、発行された端末アプリ３１を送り出すアプリ送信部１０２と、埋め込んだアプリ認証情報に基づいて認証を行うアプリ認証部１０３と、情報処理端末３０上の端末アプリ３１と通信を行う通信部１０４と、真正性の確認された端末アプリ２０を保持するアプリ記憶部１０５と、発行した時に端末アプリ３１に埋め込んだアプリ認証情報を記憶する発行情報記憶部１０６とを備えている。
【０１２４】
次に図９における動作を説明すると、情報処理端末３０のアプリ発行要求送信部３０１は、端末アプリの起動が利用者等から要求されると、端末アプリの発行要求を、アプリ発行依頼部３０７に送信する（図９の（１））。アプリ発行依頼部３０７は、アプリ発行部１０１に、要求された端末アプリの起動を要求する（図９の（２））。アプリ発行部１０１は、アプリ記憶部１０５から端末アプリ３１を読みだし、端末アプリ３１の発行毎に異なるように任意に発生させたアプリ認証情報を埋め込む発行処理を行い、発行に関する情報である、端末アプリ３１のアプリＩＤ（アプリの識別子）と、埋め込んだアプリ認証情報とを対応づけて、発行情報記憶部１０６に保存し、発行した端末アプリ３１をアプリ送信部１０２に渡す（図９の（３））。アプリ送信部１０２は、発行された端末アプリ３１を情報処理端末３０のアプリ受信部３０２に送信する（図９の（４））。アプリ受信部３０２は、発行された端末アプリ３１を受信し、起動する（図９の（５））。端末アプリ３１のアプリ認証部３１１は、セキュアデバイス１０のアプリ認証部１０３との間で埋め込まれたアプリ認証情報を用いてアプリ認証鍵により認証を行う（図９の（６））。その認証の結果、情報処理端末３０にて起動している端末アプリ３１が真正なものと認証されると、端末アプリ３１の通信部３１２およびセキュアデバイス１０の通信部１０４は、アプリ認証鍵とは別の鍵、すなわちアプリ認証情報による認証中に新たに生成した鍵を共有してセキュアデバイス１０に記憶されている機密情報１３２等の通信を行う（図９の（７））。
【０１２５】
図１０（ａ）および図１０（ｂ）の構成図は、それぞれ、実施の形態２の情報処理端末３０およびセキュアデバイス１０の各機能ブロックを実装する構成を示している。
【０１２６】
情報処理端末３０上において、アプリ認証部３１１、通信部３１２、およびサービスの提供を受け、利用者への情報の提示や入力の受け付けなどを行うサービス部３１３は、端末アプリ３１によって実装される。また、アプリ発行要求送信部３０１は、端末アプリの発行を依頼するアプリローダ３３によって実装される。また、アプリ受信部３０２およびアプリ発行依頼部３０７は、ＭＴＡ３４によって実装される。
【０１２７】
セキュアデバイス１０上において、アプリ発行部１０１およびアプリ送信部１０２は、発行アプリ１２によって実装される。また、アプリ認証部１０３、通信部１０４およびサービスを提供するサービス提供部１０９は、カードアプリ１１によって実装される。アプリ記憶部１０５および発行情報記憶部１０６は、セキュアデバイス上にある、耐タンパ性を持つなど外部からの直接参照が困難な記憶領域で、例えばセキュアデバイス内のＥＥＰＲＯＭやフラッシュメモリによって実現される。
【０１２８】
図１１のシーケンス図は、実施の形態２のセキュアデバイス１０および情報処理端末３０の処理手順を示している。
【０１２９】
情報処理端末３０の利用者による指示や、情報処理端末３０によるセキュアデバイス１０挿入の検出などがあると、端末ＯＳ３５によりアプリローダ３３が起動される（図１１の（１））。その際、情報処理端末３０からセキュアデバイス１０に対し、自動的に、まず、ＭＴＡ３４の発行が要求され、情報処理端末３０はアプリ認証情報の埋め込まれたＭＴＡ３４を受信して起動し、他の端末アプリ３１と同様にセキュアデバイス１０との間で認証処理が行われ、起動しているＭＴＡ３４が真正なものと認証済みであるとする。アプリローダ３３は、起動させるべき端末アプリ３１を指定するアプリＩＤをＭＴＡ３４に伝える（図１１の（２））。ＭＴＡ３４は、必要に応じてセキュアデバイス１０と連携して利用者の認証を行う（図１１の（３））。アプリ発行要求をセキュアデバイス１０の発行アプリ１２に送信する（図１１の（４））。
【０１３０】
発行アプリ１２は、利用者に端末アプリを起動する権限があるか確認し（図１１の（５））、認可されると、アプリ認証情報を指定された発行すべき端末アプリ３１に埋め込み（図１１の（６））、ＭＴＡ３４に送信する（図１１の（７））。
【０１３１】
ＭＴＡ３４は、受信した端末アプリ３１を起動する（図の１１（８））。端末アプリ３１は、埋め込まれたアプリ認証情報を用いて、カードアプリ１１と、アプリ認証情報による認証を行って（図１１の（９））、新たに生成した共有鍵により機密情報１３２等の通信を行いながらそのプログラムを実行する。
【０１３２】
ここで、ＭＴＡ３４は認証済みであるため、前述のＭＴＡ３４による利用者の認証（図１１の（３））からセキュアデバイス１０による端末アプリ３１の発行まで（図１１の（７））の処理は、認証済みのセキュアチャネル上で実行されることになり、しかもセキュアデバイス１０から発行された実行すべき端末アプリ３１はＭＴＡ３４のアプリ受信部３０２によって受信されるので、ＭＴＡ３４を用いない実施の形態１の場合よりも、制限のある端末アプリ３１の発行をセキュアデバイス１０に要求したり、セキュアデバイス１０から受信した端末アプリ３１の改竄等を確実に防止したりすることが可能となる。
【０１３３】
このように、実施の形態２では、ＭＴＡ３４と呼ばれるアプリケーションとその他の端末アプリ３１を保持するセキュアデバイス１０が装着された情報処理端末３０上でＭＴＡ３４がまず発行されて起動されて認証され、ＭＴＡ３４起動後の実行すべき他の端末アプリ３１の起動等は、認証されたアプリケーションであるＭＴＡ３４が行うために、実行すべき端末アプリ３１を解析される可能性が低くなる。
【０１３４】
特に、実施の形態２では、認証済みのＭＴＡ３４が利用者の認証からセキュアデバイス１０による端末アプリ３１の発行までの処理を行い、しかもセキュアデバイス１０にて発行された実行すべき端末アプリ３１はＭＴＡ３４のアプリ受信部３０２が受信するので、ＭＴＡ３４を用いない実施の形態１の場合よりも、情報処理端末３０における端末アプリ３１の改竄等を確実に防止することが可能となる。
【０１３５】
なお、本実施の形態において、ＭＴＡがＪＡＶＡ（登録商標）のＶＭ（Virtual Machine）に相当するアプリ実行手段を保持しており、ＭＴＡ以外のアプリケーションをＭＴＡ自身が実行する構成であってもよい。この構成によれば、セキュアデバイスは、ＭＴＡ以外のアプリケーションを実行するアプリ実行手段自体を信頼することができるので、たとえば実行後に機密情報を確実に消去する等、ＭＴＡ以外のアプリケーションを安全に実行することができる。
【０１３６】
また、本実施の形態において、ＭＴＡ３４がセキュアデバイス１０に端末アプリ３１の発行を要求すると、セキュアデバイス１０が認証情報を埋め込んで、ＭＴＡ３４に発行していたが、セキュアデバイス１０は埋め込まずに、端末アプリ３１と指示書１３３をそのままＭＴＡ３４に渡し、ＭＴＡ３４が自身に埋め込まれた認証情報を端末アプリ３１に埋め込んで起動してもよい。このようにすることで、セキュアデバイス１０に発行の負荷をかけずにすむ。
【０１３７】
また、セキュアデバイス１０は、ＭＴＡ３４を発行する際に、ＭＴＡ３４自身を認証する認証情報に加えて、後からＭＴＡ３４が端末アプリ３１に埋め込むのに用いることができる余分の認証情報をさらに埋め込んでもよい。あるいは、ＭＴＡ３４はセキュアデバイス１０に埋め込むべき認証情報を要求して送信させてもよい。このようにすることで、安全性を犠牲にすることなくセキュアデバイス１０の負荷を軽減することができる。
【０１３８】
また、本実施の形態において、ＭＴＡ３４がセキュアデバイス１０に端末アプリ３１の発行を要求すると、セキュアデバイス１０が認証情報を埋め込んで、ＭＴＡ３４に発行していたが、セキュアデバイス１０は埋め込まずに、ＭＴＡ３４に単に端末アプリ３１と新たな認証情報を渡し、ＭＴＡ３４が認証情報を端末アプリ３１に渡して起動することで、埋め込みを必要としない端末アプリの起動を行ってもよい。このようにすることで、端末アプリ３１を埋め込み可能な形に加工する手間をなくすことができる。
【０１３９】
（実施の形態３）
本発明の実施の形態３では、ＭＴＡ（Master Trusted Agent）と呼ばれる端末アプリを保持するセキュアデバイスと、暗号化された端末アプリ（以下では暗号化済アプリと呼ぶ）を保持する情報処理端末について説明する。
【０１４０】
前述の実施の形態１，２では、セキュアデバイスに端末アプリを記憶しておくため、セキュアデバイスに十分な記憶容量が必要であった。しかし、ＩＣカードなどのように、容量が十分でない場合には、情報処理端末に端末アプリを記憶させることになり、しかも解析や無断使用を防止するため暗号化しなければならない。
【０１４１】
本実施の形態では、そのような場合においても、セキュアデバイスと端末アプリとが認証できるように起動する方法を開示する。
【０１４２】
また、セキュアデバイスを情報処理端末に装着すると、ＭＴＡと呼ばれる端末アプリが起動されて認証され、その後の端末アプリの起動は、ＭＴＡにより行われる。そこで、本実施の形態では、情報処理端末が端末アプリの起動を要求すると、ＭＴＡがセキュアデバイスからアプリ暗号鍵とハッシュ値を受けとって、暗号化済アプリの復号および検証を行い、復号された暗号化済みアプリが改竄等されてないとハッシュ値により検証された場合に、ＭＴＡは、端末アプリとセキュアデバイスにアプリ認証情報を渡し、端末アプリを起動すると、アプリ認証情報による認証が行われる。
【０１４３】
図１２において、実施の形態３の情報処理端末３０は、端末ＯＳ３５と、端末アプリ３１の発行を要求するアプリ発行要求送信部３０１と、端末アプリの発行を依頼するアプリ発行依頼部３０７と、暗号化済アプリを記憶する暗号化済アプリ記憶部３０４と、セキュアデバイス１０から暗号化済アプリを復号化するための鍵を受け取り、復号を行う端末側アプリ復号部３０５と、復号された端末アプリ３１を受けとり端末アプリ３１の発行を行う端末側アプリ発行部３０６とを備えている。また、起動される端末アプリ３１は、実施の形態１と同様に、アプリ認証情報に基づいて認証を行うアプリ認証部３１１と、セキュアデバイス１０上のカードアプリ１１と通信を行う通信部３１２とを備えている。
【０１４４】
一方、実施の形態３のセキュアデバイス１０は、情報処理端末３０から端末アプリ３１のアプリＩＤとアプリ認証情報を受けとるアプリ発行部１０１と、アプリ認証情報に基づいて認証を行うアプリ認証部１０３と、情報処理端末３０上の端末アプリ３１と通信を行う通信部１０４と、情報処理端末３０から受けとったアプリ認証情報を端末アプリ３１のアプリＩＤと対応づけて記憶する発行情報記憶部１０６と、指定された端末アプリ３１の復号に用いるアプリ暗号鍵を情報処理端末に送信するアプリ暗号鍵送信部１０７と、端末アプリ３１のアプリＩＤと端末アプリ３１を復号するためのアプリ暗号鍵と端末アプリ３１の正しいハッシュ値を記憶するアプリ暗号鍵記憶部１０８とを備えている。
【０１４５】
次に、図１２における動作を説明すると、情報処理端末３０のアプリ発行要求送信部３０１は、端末アプリ３１の起動が利用者等から要求されると、端末アプリ３１の発行要求を、アプリ発行依頼部３０７に送信する（図１２の（１））。アプリ発行依頼部３０７は、アプリ暗号鍵送信部１０７に対し、実行させるべき暗号化済み端末アプリ３１の識別情報であるアプリＩＤを送信して、要求された端末アプリ３１を復号化するためのアプリ暗号鍵と検証に用いるハッシュ値を要求する（図１２の（２））。アプリ暗号鍵送信部１０７は、受信したアプリＩＤに基づいてアプリ暗号鍵記憶部１０８から対応するアプリ暗号鍵とハッシュ値とを読み出し、端末側アプリ復号部３０５に送信する（図１２の（３））。端末側アプリ復号部３０５は、暗号化済アプリ記憶部３０４から、暗号化済の端末アプリ３１を読みだし、セキュアデバイス１０から受信したアプリ暗号鍵を用いて復号すると共に、ハッシュ値を計算して、端末アプリ３１が改竄されていないことを検証する（図１２の（４））。そして、端末側アプリ発行部３０６は、端末アプリ３１が改竄されていないことを検証すると、端末アプリ３１の復号毎に異なる値となるように任意にアプリ認証情報を発生させる発行処理を行い、発行に関する情報である、端末アプリ３１のアプリＩＤ（アプリの識別子）と、アプリ認証情報とをセキュアデバイス１０側のアプリ発行部１０１に送信する（図１２の（５））。アプリ発行部１０１は、端末アプリ３１のアプリＩＤと、アプリ認証情報とを受信すると、それらを対応づけて発行情報記憶部１０６に保存する（図１２の（６））。一方、端末側アプリ発行部３０６は、復号した端末アプリ３１にアプリ認証情報を渡して、端末アプリ３１を起動する（図１２の（７））。これにより、端末アプリ３１のアプリ認証部３１１は、セキュアデバイス１０のアプリ認証部１０３との間で前述の実施の形態１と同様に、アプリ認証情報によりアプリ認証鍵を生成して認証を行う（図１２の（８））。そして、情報処理端末３０の通信部３１２およびセキュアデバイス１０の通信部１０４は、アプリ認証情報による認証中に新たに共有したアプリ認証鍵とは別の鍵によりセキュアデバイス１０に記憶されている機密情報１３２等（図４参照）の通信を行う（図１２の（９））。
【０１４６】
図１３（ａ）および図１３（ｂ）の構成図は、それぞれ、実施の形態３の情報処理端末３０およびセキュアデバイス１０の各機能ブロックを実装する構成を示している。
【０１４７】
情報処理端末３０上において、アプリ認証部３１１、通信部３１２およびサービスの提供を受け、利用者への情報の提示や入力の受け付けなどを行うサービス部３１３は、端末アプリ３１によって実装される。また、アプリ発行要求送信部３０１は、アプリローダ３３によって実装される。また、アプリ発行依頼部３０７、端末側アプリ復号部３０５および端末側アプリ発行部３０６は、ＭＴＡ３４によって実装される。
【０１４８】
セキュアデバイス１０上において、アプリ発行部１０１およびアプリ暗号鍵送信部１０７は、発行アプリ１２によって実装される。また、アプリ認証部１０３、通信部１０４およびサービスを提供するサービス提供部１０９は、カードアプリ１１によって実装される。発行情報記憶部１０６およびアプリ暗号鍵記憶部１０８は、セキュアデバイス１０上にある、耐タンパ性を持つなど外部からの直接参照が困難な記憶領域で、例えばセキュアデバイス内のＥＥＰＲＯＭやフラッシュメモリによって実現される。
【０１４９】
図１４のシーケンス図は、実施の形態３のセキュアデバイス１０および情報処理端末３０の処理手順を示している。
【０１５０】
情報処理端末３０の利用者による指示や、情報処理端末３０によるセキュアデバイス１０の挿入の検出などがあると、端末ＯＳ３５によりアプリローダ３３が起動される（図１４の（１））。その際、実施の形態２の場合と同様に、自動的に、情報処理端末３０からセキュアデバイス１０に対しＭＴＡ３４の発行が要求され、情報処理端末３０は、アプリ認証情報の埋め込まれたＭＴＡ３４を受信して起動し、他の端末アプリ３１と同様にセキュアデバイス１０との間で認証処理が行われて、認証済みであるとする。アプリローダ３３は、起動する暗号化済みアプリを指定するアプリＩＤをＭＴＡ３４に伝える（図１４の（２））。ＭＴＡ３４は、必要に応じてセキュアデバイス１０と連携して利用者の認証を行い（図１４の（３））、アプリＩＤに対応した暗号化済みの端末アプリ３１の復号化に用いるアプリ暗号鍵の要求をセキュアデバイス１０の発行アプリ１２に送信する（図１４の（４））。
【０１５１】
発行アプリ１２は、利用者に暗号化済みの端末アプリ３１を起動する権限があるか確認し（図１４の（５））、確認されると、アプリＩＤに対応するアプリ暗号鍵とハッシュ値をＭＴＡ３４に送信する（図１４の（６））。ＭＴＡ３４は、受信したアプリ暗号鍵を用いて暗号化済の端末アプリ３１を復号化し、ハッシュ値を計算し、改竄されていないことを検証した後、復号毎に異なるように任意に発生させたアプリ認証情報を、アプリＩＤとともに発行アプリ１２に送信する（図１４の（７））。そして、発行アプリ１２は、アプリＩＤとアプリ認証情報を対応づけて記憶する。改竄が検出された場合は、端末アプリ３１を起動しない。
【０１５２】
また、ＭＴＡ３４は、端末アプリ３１にアプリ認証情報を渡して端末アプリ３１を端末ＯＳ上で起動する（図１４の（８））。端末アプリ３１は、渡されたアプリ認証情報を用いて、カードアプリ１１と、アプリ認証情報による認証を行って（図１４の（９））、機密情報等の通信を行いながらそのプログラムを実行する。
【０１５３】
よって、実施の形態２と同様に、ＭＴＡ３４は認証済みであるため、前述のＭＴＡ３４による利用者の認証（図１４の（３））からＭＴＡ３４によるアプリ認証情報の発行まで（図１４の（７））の処理は、認証済みのセキュアチャネル上で実行されることになるので、ＭＴＡ３４を用いない実施の形態１の場合よりも、制限のある端末アプリ３１の発行をセキュアデバイス１０に要求すること等を確実に防止することが可能となる。
【０１５４】
図１５のシーケンス図は、暗号化済アプリを情報処理端末３０にインストールする処理手順の一例を示している。
【０１５５】
端末アプリ３１を配布している端末アプリ生成装置２０（図４参照）等のサーバ４０に対し、利用者によりＷＷＷ(World Wide Web)経由で指定されるなど、なんらかの形でダウンロードしたい端末アプリ３１が指定されると、サーバ４０は、端末アプリ３１を暗号化するためのアプリ暗号鍵をセキュアデバイス１０と共有する（図１５の（１））。その後、サーバ４０からその端末アプリのアプリＩＤと検証用のハッシュ値がセキュアデバイス１０に伝えられる（図１５の（２））。セキュアデバイス１０は、アプリＩＤとアプリ暗号鍵とハッシュ値を対応づけて記憶する（図１５の（３））。サーバ４０は、端末アプリ３１をセキュアデバイス１０と共有したアプリ暗号鍵で暗号化して暗号化済アプリとし、アプリＩＤとともに情報処理端末３０のＭＴＡ３４に送信する（図１５の（４））。ＭＴＡ３４は、暗号化済の端末アプリ３１をそのままアプリＩＤと対応づけて暗号化済アプリ記憶部３０４に記憶する（図１５の（５））。
【０１５６】
以上の手順で、アプリ暗号鍵とハッシュ値はセキュアデバイス１０に記憶され、暗号化済の端末アプリ３１が情報処理端末３０に記憶される。なお、この図１５に示す例は、情報処理端末３０に暗号化済アプリをインストールする前に、セキュアデバイス１０から情報処理端末３０にＭＴＡ３４が発行され起動し認証されている場合を示しているが、ＭＴＡ３４が情報処理端末３０に発行されていない場合は、信頼度は落ちるものの、情報処理端末３０に予め内蔵されているアプリローダ３３等に以上のような機能を持たせればよい。
【０１５７】
図１６は、アプリ暗号鍵記憶部１０８に記憶されるデータの具体例である。アプリ暗号鍵記憶部１０８には、アプリＩＤと、アプリ暗号鍵と、暗号化済み端末アプリ３１のハッシュ値が書かれており、例えば二行目は、アプリＩＤがａｐ１である暗号済み端末アプリ３１は、アプリ暗号鍵が０ｘｅｆａｃｅ３２１であり、ハッシュ値が、０ｘ７ａｅ９ａ３ｃａであることを示している。
【０１５８】
このように、実施の形態３では、暗号化済の端末アプリ３１を保持した情報処理端末１０にＭＴＡ３４と呼ばれるアプリケーションを保持したセキュアデバイス１０が装着されると、まず、そのＭＴＡ３４が起動され、ＭＴＡ３４起動後の暗号化済みの端末アプリ３１の起動は、認証されたＭＴＡ３４により行われるため、実施の形態２と同様に、実行すべき端末アプリ３１を解析される可能性が低くなると共に、ＭＴＡ３４を用いない実施の形態１の場合よりも、情報処理端末３０における端末アプリ３１の改竄等を確実に防止することが可能となる。
【０１５９】
特に、実施の形態３では、情報処理端末３０が記憶している暗号化済みの端末アプリ３１の起動を要求すると、ＭＴＡ３４がセキュアデバイス１０からアプリ暗号鍵とハッシュ値とを受け取って、暗号化済の端末アプリ３１の復号および検証を行った後、復号された端末アプリ３１とセキュアデバイス１０にアプリ認証情報を渡し、復号された端末アプリ３１が起動されると、アプリ認証情報による認証が行われるため、セキュアデバイス１０に容量の大きい、あるいは、数多くの端末アプリ３１を記憶させておくことができないために、情報処理端末３０上に暗号化した端末アプリ３１を記憶しておく場合でも、セキュアデバイス１０は認証を行うことが可能になる。
【０１６０】
なお、本実施の形態において、ＭＴＡがＪＡＶＡ（登録商標）のＶＭ（Virtual Machine）に相当するアプリ実行手段を保持しており、ＭＴＡ以外のアプリケーションをＭＴＡ自身が実行する構成であってもよい。この構成によれば、セキュアデバイスは、ＭＴＡ以外のアプリケーションを実行するアプリ実行手段自体を信頼することができるので、たとえば実行後に機密情報を確実に消去する等、ＭＴＡ以外のアプリケーションを安全に実行することができる。
【０１６１】
また、セキュアデバイス１０と情報処理端末３０との間の通信速度が十分である場合は、暗号化済の端末アプリ３１を情報処理端末３０にて復号せずにセキュアデバイス１０に渡し、セキュアデバイス１０にて暗号化済の端末アプリ３１を復号するようにすれば、アプリ暗号鍵をセキュアデバイス１０から外へ出さずにセキュアデバイス１０内で暗号化済の端末アプリ３１を復号することができ、実施の形態２と同様に、復号された端末アプリ３１を情報処理端末３０に発行することも可能である。
【０１６２】
また、本実施の形態において、ＭＴＡ３４は復号された端末アプリ３１に対して、単にアプリ認証情報を渡すようにしているが、発行アプリ１２と同様に復号された端末アプリ３１に対して埋め込み処理を行ってもよい。この場合、復号された端末アプリ３１に対して埋め込み処理まで示し、アプリ認証鍵の計算方法が書かれていない指示書１３３が、暗号化済の端末アプリ３１とともに暗号化されて情報処理端末３０に記憶されているか、あるいはそのような指示書１３３がＭＴＡ３４と共にセキュアデバイス１０に記憶されており、ＭＴＡ３４の発行の際や、アプリ暗号鍵の受信の際に情報処理端末３０に送信されることになる。
【０１６３】
また、本実施の形態において、アプリ認証情報はＭＴＡ３４が生成し、セキュアデバイス１０に渡していたが、ＭＴＡ３４は単にセキュアデバイス１０にアプリ認証情報の生成を依頼し、セキュアデバイス１０が生成したアプリ認証情報を受けとることにしてもよい。
【０１６４】
また、本実施の形態では、セキュアデバイス１０から情報処理端末３０に発行されて起動し認証されたアプリケーションであるＭＴＡ３４が、暗号化済みの端末アプリ３１を復号するためのアプリ暗号鍵を要求しているが、これに限らず、予め情報処理端末３０に設けられているアプリケーションやファームウェア、さらには端末ＯＳ３５等にこのＭＴＡ３４の機能などを持たせるようにしても勿論良い。このようにすれば、セキュアデバイス１０から情報処理端末３０へのＭＴＡ３４の発行処理が省略できるので、その分、暗号化済みの端末アプリ３１を起動するまでの時間を短縮化することができる。ただし、この場合、情報処理端末３０が正規のファームウェアやＯＳを搭載していることを、セキュアデバイスに機器認証を行うなどして示す必要がある。
【０１６５】
（実施の形態４）
本発明の実施の形態４は、セキュアデバイスが端末アプリに認証情報として値そのものではなく、動的メソッド、すなわちその値を計算するためのメソッド（関数）の形で動的に毎回異なるように生成した認証情報メソッドを埋め込んで発行し、端末アプリの第三者による解析を困難にすることで、安全性をさらに向上させたものである。
【０１６６】
アプリ認証情報はできるかぎり安全な埋め込み方をすべきである。また、同時に、リソースの少ないカードアプリで実行可能でなければならない。その二つを満たす方式が必要とされる。
【０１６７】
最善にはアプリ認証情報は端末アプリの認証処理プログラム以外には抽出不可能であることが望ましい。しかしながら、端末アプリが取りだされ解析されてしまうと、最終的にアプリ認証情報が抽出されることが懸念される。それゆえ、解析はされることを前提として対策を考えた方が安全性は遙かに高まる。
【０１６８】
そこで、端末アプリが解析され抽出されても、次回利用時には再度解析が必要になり、抽出の自動化を困難とすることを考える。
【０１６９】
そのため、実施の形態４では、以下で説明する動的メソッドの手法を採る。実施の形態４の基本的な動作は、実施の形態１と同様であり、主に端末アプリを発行する部分が異なる。そこで、以下では、端末アプリを発行する部分であるセキュアデバイスのアプリ発行部の動作を中心に説明する。
【０１７０】
簡単に本実施の形態の動的メソッドの手法を説明すると、本実施の形態では、セキュアデバイスを情報処理端末に装着し、情報処理端末が端末アプリの起動を要求すると、セキュアデバイスによりランダムな計算式が生成され、その計算を行うプログラムコードが動的に生成される。
【０１７１】
このプログラムコードがアプリ認証情報を計算する認証情報メソッドとして端末アプリに埋め込まれ、そのようなプログラムコードが埋め込まれた端末アプリが情報処理端末に発行され、情報処理端末が端末アプリを起動すると、端末アプリに埋め込まれた認証情報メソッドのプログラムコードがアプリ認証情報を計算して、セキュアデバイスと情報処理端末との間で、アプリ認証情報に基づいた認証が行われる。
【０１７２】
図１７は、本発明の実施の形態４におけるセキュアデバイス１０の構成とその処理フローを示している。
【０１７３】
図１７において、実施の形態４のセキュアデバイス１０のアプリ発行部１０１は、アプリ認証情報を埋め込む認証情報メソッド埋込部１０１１と、アプリ記憶部１０５に格納された指示書１３３を解釈してアプリ認証情報の埋め込み方を認証情報メソッド埋込部１０１１に伝える指示書解釈部１０１２と、アプリ認証情報を計算する演算手順をランダムに生成する認証情報演算手順生成部１０１３と、アプリ認証情報を計算する演算手順からアプリ認証情報の演算を実際に行う情報処理端末３０用のプログラムコードである認証情報メソッドを生成する認証情報メソッド生成部１０１４と、ランダムに演算手順を生成するために用いる乱数を発生させる乱数発生部１０１５と、を備えている。さらに、実施の形態４のセキュアデバイス１０は、実施の形態１に示した構成に加えて、認証情報メソッド生成部１０１４が認証情報メソッドを生成するために用いる命令情報を記憶する命令情報記憶部１１０を備えている。
【０１７４】
次に図１７における動作を説明すると、認証情報演算手順生成部１０１３は、乱数発生部１０１５からの乱数を利用して、アプリ認証情報を計算する演算手順を表す式をランダムに生成し、認証情報メソッド生成部１０１４に渡す。また、その演算手順を表す式を計算した結果を発行情報記憶部１０６に記憶する（図１７の（１））。演算手順１０１３１は、演算手順を例示しており、変数ａ，ｂ，ｃに実施の形態１と同様の処理で、値を埋め込み、認証情報はａ＊ｂ＋ｃで演算する、という手順を示している。
【０１７５】
認証情報メソッド生成部１０１４は、情報処理端末３０が発行要求時に送信する当該情報処理端末３０に関する機種情報に基づいて当該情報処理端末３０の処理装置（ＣＰＵ）の種類に応じた命令情報１１０１を命令情報記憶部１１０から取得し、命令情報１１０１に基づいて認証情報演算手順生成部１０１３からの演算手順１０１３１を当該情報処理端末３０の処理装置（ＣＰＵ）が理解できる命令列に変換して認証情報メソッド１０１４１を生成し、認証情報メソッド埋込部１０１１に渡す（図１７の（２））。命令情報記憶部１１０に記憶された命令情報１１０１は、当該情報処理端末３０の処理装置(ＣＰＵ)が実行する命令情報を例示しており、アプリ認証情報を計算する演算手順を当該情報処理端末３０で実行可能なプログラムコードに変換するための情報になっている。認証情報メソッド１０１４１は、認証情報メソッドを例示しており、当該情報処理端末３０の処理装置(ＣＰＵ)が実行可能なプログラムコードである。
【０１７６】
認証情報メソッド埋込部１０１１は、生成された認証情報メソッド１０１４１を受け取り、指示書１３３の内容に従って、認証情報メソッド１０１４１を端末アプリ３１へ埋め込む。この時、命令列とは別に、式の変数に代入される値が変数領域に埋め込まれる（図１７の（３））。
【０１７７】
このため、端末アプリ３１が情報処理端末３０上で起動されると、認証情報メソッド１０１４１が実行されて、アプリ認証情報が計算される。このアプリ認証情報に基づいた認証を行うために必要な値が、発行情報記憶部１０６に保存されており、セキュアデバイス１０のアプリ認証部１０３はアプリ認証情報に基づいた認証処理を行う。
【０１７８】
次に、本実施の形態における具体的な処理について図４を用いて説明する。以下では、実施の形態１の場合の動作と異なる部分についてのみ説明し、それ以外の動作は実施の形態１の場合と同様である。
【０１７９】
まず、図４の動作（１）から（４）にあたる、セキュアデバイス１０に端末アプリ３１や指示書１３３を入れる準備について説明する。
【０１８０】
まず、端末アプリの開発者が端末アプリ３１を作成する。この時作成される端末アプリ３１は、通常の端末アプリである。図１８（ａ）は通常の端末アプリの物理イメージを表している。
【０１８１】
次に、認証情報メソッド１０１４１を埋め込むためのダミーメソッドをあらかじめ端末アプリに用意する。図１８（ｂ）はダミーメソッドが追加された端末アプリ３１の物理イメージを表している。
【０１８２】
ダミーメソッドはアプリ認証情報を表現するのに都合の良い変数型(例えば整数型であるｉｎｔ)の値を返すメソッドである。ダミーメソッドはバイナリ表現内に認証情報メソッド１０１４１を埋め込む場所を確保するプレースホルダーとしての役割を果たす。ダミーメソッドは、単に０を返すメソッドでもよいし、発行時にメソッドの長さを長くするのが困難な場合、ある程度複雑なメソッドにして十分な長さを確保するようにしてもよい。
【０１８３】
指示書１３３の生成時に、実施の形態１で行うことに加えて、メソッド情報を指示書１３３に入れる。端末アプリ３１自身のバイナリ表現中に十分な情報が存在する場合は、その情報へのオフセットでもよい。メソッドの情報としては、実際のメソッドのオフセット（コードの開始位置）とメソッドの長さが必要となる。これらの情報の生成には、コンパイラのデバッグ情報などを利用する。
【０１８４】
次に、図４の動作（５）にあたる、セキュアデバイスに端末アプリの発行要求を行う処理について説明する。この時、アプリＩＤに加え、情報処理端末３０の機種、ＣＰＵの種類等、認証情報メソッド生成部１０１４がコードの生成に用いる命令情報を選択するための情報を送信する。
【０１８５】
次に、図４の動作（６）にあたる、セキュアデバイス１０内で実際に発行する処理について説明する。実施の形態４の場合、値を返す認証情報メソッドをランダムに生成し、ダミーメソッドと置きかえる処理を行う。図１８（ｃ）は生成されたメソッドが埋め込まれた端末アプリの物理イメージを表している。
【０１８６】
具体的には、まず、演算手順１０１３１を式の形でランダムに発生させ、情報処理端末３０に合わせたプログラムコードに変換し、認証情報メソッド１０１４１の生成を行う。認証情報メソッド１０１４１の生成終了後、あるいは生成しながら、その認証情報メソッド１０１４１が返す値を計算する。その値を記憶しておき、発行後の認証処理に用いる。指示書１３３の情報から認証情報メソッド１０１４１の位置と長さの情報を得て、生成した認証情報メソッド１０１４１をダミーメソッドと置きかえる。認証情報メソッド１０１４１のサイズを長くすることが困難な場合は、もとのダミーメソッドのサイズを超えないように生成する。
【０１８７】
図１９（ａ），（ｂ）は、それぞれ本実施の形態４における指示書テンプレートと、指示書の例である。実施の形態１と同様に、具体的な認証処理はアプリ認証情報からアプリ認証鍵を計算し、等しい鍵を持っていることを確認することによって行う。
【０１８８】
一行目は、値を埋め込むことを指示している。この部分は、実施の形態１と同様である。
【０１８９】
二行目は、動的メソッド、すなわち端末アプリ３１へ埋め込むアプリ認証情報は値ではなく、メソッド（関数）の形での埋め込みを指示している。アプリ認証情報をメソッド（関数）の形で埋め込むことにより、外部から攻撃されても、アプリ認証情報の値の解析および抽出を困難化することができる。ここで、シンボルは、ダミーメソッドの名前を示しており、指示書を生成する際にそのメソッドのオフセットと長さに変換される。この例では、dm1, dm2 という名前のメソッドがダミーメソッドとして指定されている。[0x135,0x100] は、dm1 が 0x135（16進数表記）バイト目から始まり、0x100 バイト続くことを示している。[0x33f, 0x80] も同様に dm2 についての情報を示している。
【０１９０】
三行目と四行目は、アプリ認証鍵をどう計算するかを示している。指示書１３３を生成する時に、シンボルに対して出現順に %1, %2, ... と番号が割り当てられ、その番号を用いて計算式が表現される。式の意味は実施の形態１と同様である。%6 には dm1 が返す値が、%7 には dm2 が返す値が入る。
【０１９１】
ここで、発生させる演算手順が完全にランダムだと、０による除算等、エラーが発生するコードになるため、そのあたりを考慮にいれた生成を行う。例えば、除算を行う際に乱数によって発生させた除数が０の場合は再発生させる、除算を行わない、などの処理をする。
【０１９２】
また、実行環境によっては、端末アプリ３１が利用するリソースの情報がバイナリ表現に含まれていることがあり、実行前に検証したり、実行中に利用リソースが監査され、制限を越えてリソースを利用しないよう制限したりしている場合がある。このような環境下では、コードを変更することで利用するリソースが変更される場合、このような情報も変更し、制限に抵触しエラーが発生しないよう生成したメソッドにあわせて調整する。
【０１９３】
このように、実施の形態４では、端末アプリ３１へ埋め込むアプリ認証情報を値そのものではなく、その値を計算するプログラムコードを生成し、メソッド（関数）の形で埋め込むため、認証情報の解析および抽出の自動化を困難にでき、さらにメソッドの長さを変えられる場合には、メソッドの長さを変えることで比較攻撃に対しての耐性も得られる。
【０１９４】
特に、この実施の形態４では、動的メソッドを採用することにより、認証情報演算手順生成部１０１３が乱数発生部１０１５からの乱数を利用して、アプリ認証情報を計算する演算手順を表す式をランダムに生成することにより、端末アプリの発行毎に認証情報メソッドの内容を毎回変更するようにしたため、より確実に認証情報の解析および抽出の自動化を困難にすることができる。
【０１９５】
なお、本実施の形態においても、実施の形態１と同様に、端末アプリ３１に対して発行アプリ１２による署名が行われ、基本ローダ３２あるいはアプリローダ３３が端末アプリ３１の署名の検証をしてから起動するようにしてもよい。このようにすれば、署名の検証により、不正な端末アプリ３１を起動してしまうことを防止することが可能となる。
【０１９６】
また、本実施の形態において、発行するアプリケーションは、情報処理端末３０で起動する通常のアプリケーションとしたが、それに限らず、例えば情報処理端末３０の端末ＯＳ３５の一部や、ＪＡＶＡ（登録商標）のＶＭといった任意のプログラムを発行することが可能である。
【０１９７】
また、本実施の形態は、前述したように、基本的な動作は実施の形態１と同様で、端末アプリ３１を発行するセキュアデバイス１０のアプリ発行部１０１に前述の動的メソッドを実行するための構成である認証情報演算手順生成部１０１３や認証情報メソッド生成部１０１４、認証情報メソッド埋込部１０１１等を設けて説明しているが、本発明では、これに限らず、ＭＴＡ３４を使用している前述の実施の形態２や実施の形態３に本実施の形態の動的メソッドを実行するための構成を適用するようにしても勿論良い。この場合、実施の形態２の場合は、アプリ発行部１０１はセキュアデバイス１０内に設けられているので（図９，１０参照）、実施の形態４の動的メソッドを実行するための認証情報メソッド埋込部１０１１等をこのアプリ発行部１０１に設ければよいが、実施の形態３の場合は、ＭＴＡ３４内の端末側アプリ発行部３０６（図１３参照）に実施の形態４の動的メソッドを実行するための認証情報メソッド埋込部１０１１等またはその機能を持たせることになる。
【０１９８】
（実施の形態５）
本発明の実施の形態５では、アプリ認証情報を埋め込んだ後に、実行内容が変化しない単位で端末アプリのバイナリ表現のバイト列を毎回異なるように並びかえて発行するファイルスクランブルを適用したセキュアデバイスについて説明する。
【０１９９】
つまり、実施の形態５のセキュアデバイスを情報処理端末に装着し、情報処理端末が端末アプリの起動を要求すると、セキュアデバイスにより端末アプリのバイナリ表現のバイト列が実行内容が変化しない範囲で並びかえられたり、変更されたりする。
【０２００】
この並びかえられた端末アプリが発行され、情報処理端末が端末アプリを起動すると、セキュアデバイスと情報処理端末との間で、アプリ認証情報による認証が行われる。
【０２０１】
基本的な動作は実施の形態１と同様であり、主に端末アプリを発行する部分が異なる。そこで、以下では、端末アプリを発行する部分であるセキュアデバイスのアプリ発行部の動作を中心に説明する。
【０２０２】
図２０は、本発明の実施の形態５におけるセキュアデバイスの構成とその処理フローを示している。
【０２０３】
図２０において、セキュアデバイス１０のアプリ発行部１０１は、アプリ認証情報を埋め込む認証情報メソッド埋込部１０１１と、指示書１３３を解釈してアプリ認証情報の埋め込み方を認証情報メソッド埋込部１０１１に伝える指示書解釈部１０１２と、ランダムに値や並びかえ順序を生成するために用いる乱数を発生させる乱数発生部１０１５と、実際に認証に用いるアプリ認証情報を算出する認証情報算出部１０１６と、実行内容を変更しない単位で端末アプリのバイナリ表現のバイトの並びを並びかえるアプリスクランブル部１０１７と、を備えている。
【０２０４】
次に図２０における動作を説明する。認証情報算出部１０１６は、乱数発生部１０１５からの乱数を用いてアプリ認証情報を算出し、認証情報メソッド埋込部１０１１に渡す。また、アプリ認証情報を発行情報記憶部１０６に記憶する（図２０の（１））。
【０２０５】
認証情報メソッド埋込部１０１１は、算出されたアプリ認証情報を受け取って、指示書１３３にしたがい、アプリ認証情報を端末アプリ３１に埋め込み、アプリ認証情報が埋め込まれた端末アプリ３１をアプリスクランブル部１０１７へ出力する（図２０の（２））。
【０２０６】
アプリスクランブル部１０１７では、アプリ認証情報が埋め込まれた端末アプリ３１を受け取って、指示書解釈部１０１２からの解釈に基づいて指示書１３３にしたがって、端末アプリ３１の実行内容が変化しない範囲でアプリ認証情報が埋め込まれた端末アプリをスクランブルして発行する（図２０の（３））。例えば、端末アプリがＪＡＶＡ（登録商標）でプログラミングされている場合には、フィールドやメソッドといった単位でスクランブルすると、端末アプリ３１の実行内容が変化しないことになる。
【０２０７】
次に、本実施の形態における具体的な処理について図４を用いて説明する。以下では、実施の形態１の場合の動作と異なる部分についてのみ説明し、それ以外の動作は実施の形態１の場合と同様である。
【０２０８】
まず、図４の動作（１）から（４）にあたる、セキュアデバイス１０に端末アプリ３１や指示書１３３を入れる準備について説明する。
【０２０９】
実施の形態５のアプリスクランブル部１０１７では、端末アプリ３１の実行内容が変化しない範囲で端末アプリ３１をスクランブルするが、端末アプリ３１の具体的なスクランブルは、端末アプリ３１のメソッドを並びかえることで行う。そのために、指示書１３３の生成時に、実施の形態１で行うことに加えて、メソッド情報を指示書に入れる。端末アプリ３１自身のバイナリ表現中に十分なメソッド情報が存在する場合は、そのメソッド情報へのオフセットでもよい。メソッドの情報としては、実際のメソッドのオフセット（コードの開始位置）とメソッドの長さが必要となる。
【０２１０】
プログラムの記述に用いられる言語によっては、メソッドの位置を変化させると、アドレスが変化するため、そのままでは正しい呼び出しが行われなくなる場合がある。このような場合には、メソッドの呼び出し側の呼び出しアドレスを変更する等の処理が必要であるため、呼び出している位置等の情報が必要となる。
【０２１１】
これらの情報が必要な場合には、その情報あるいはその情報へのオフセットを指示書１３３に入れる。なお、これらの情報の生成には、コンパイラ２３のデバッグ情報などを利用する。
【０２１２】
呼び出すメソッドをコード中、番号で識別している言語では、このような変更は必要ないが、メソッドの番号を変更し、呼び出す際に指定する番号も合わせて変更することで、処理内容を変えずにコードを変化させることができる。
【０２１３】
また、呼び出すメソッドをコード中、名前で識別している言語でも、このような変更は必要ないが、メソッドの名前を変更し、呼び出す際に指定する名前も合わせて変更することで、処理内容を変えずにコードを変化させることができる。
【０２１４】
次に、図４の（６）にあたる、セキュアデバイス１０内で実際に端末アプリ３１を発行する処理について説明する。例えば、端末アプリ３１において複数あるメソッドのどの２つを入れかえるかを乱数で選択する。選んだメソッドの情報を利用して、選んだメソッドを入れ替える。呼び出し側の変更が必要な場合には、指示書１３３の情報を利用して呼び出し側の変更を行う。
【０２１５】
図２１（ａ），（ｂ）は、それぞれファイルスクランブルの指示書テンプレートと指示書の例である。
【０２１６】
一行目から三行目までは、実施の形態１と同様である。
【０２１７】
四行目はメソッドのスクランブルを行うことを指示している。それぞれ、指示書を生成する際に、スクランブルの対象となるメソッドに関する情報が追加される。図２１（ｂ）の四行目において、[0x100,0x180] は１番目のメソッドが 0x100 バイト目から始まり、0x180 バイト続くことを意味している。
【０２１８】
呼び出し側の変更について、図２２（ａ），（ｂ）を用いて説明する。メソッド名の横の括弧内はメソッドのオフセットを表わしている。図２２（ａ）において、メソッドを呼び出している部分が、メソッドＡ，Ｂ，Ｃ，Ｄの順にオフセットを指定して呼び出している。この場合、入れかえただけでは見当違いの部分のコードを実行しようとするため正常に機能しない。
【０２１９】
そこで、呼びだしている部分が指定しているメソッドのオフセットを入れかえ後のオフセットに変更する必要がある。これを行ったのが図２２（ｂ）であり、こちらは正常に機能する。
【０２２０】
このように、実施の形態５では、アプリ発行部１０１は、アプリ認証情報を端末アプリ３１に埋め込んだ後に、実行内容が変化しない範囲、例えば、ＪＡＶＡ（登録商標）で端末アプリ３１をプログラミングしている場合にはフィールドやメソッド等の単位で端末アプリ３１のバイナリ表現のバイト列を毎回異なるように並びかえて発行するため、情報処理端末３０に発行された端末アプリ３１におけるアプリ認証情報の位置は、スクランブルにより端末アプリ３１の発行毎に毎回異なることになり、情報処理端末３０に発行された端末アプリ３１を複数比較しても、アプリ認証情報の位置や、その解析の手掛かりが容易に得られなくなり、アプリ認証情報の抽出の自動化を困難にした上で端末アプリ３１の認証が可能である。
【０２２１】
さらに、別方面への応用として、本実施の形態で説明した手法を用いると、ソフトウェアをインストールする機器毎に、インストールされてホストの記憶媒体上にあるバイナリ表現が異なるようにすることが可能になる。
【０２２２】
バイナリ表現が機器毎に異なると、例えば、バイナリ表現を直接改変することで、ライセンス認証コードを回避する等の違法なパッチに対する耐性を獲得することが可能になる。
【０２２３】
なお、実施の形態１と同様に端末アプリ３１に対して発行アプリ１２による署名が行い、基本ローダ３２によって署名の検証をしてから起動するようにしてもよい。
【０２２４】
また、本実施の形態において、発行するアプリケーションは情報処理端末１０で起動する通常のアプリケーションとしたが、それに限らず、例えば情報処理端末３０の端末ＯＳ３５の一部や、ＪＡＶＡ（登録商標）（のＶＭといった任意のプログラムを発行することが可能である。
【０２２５】
また、実施の形態４で説明した認証情報として値そのものではなく、その値を計算する認証情報メソッドを埋め込む動的メソッドの手法と、実施の形態５で説明したアプリ認証情報を端末アプリ３１に埋め込んだ後に、実行内容が変化しない範囲で端末アプリ３１のバイナリ表現のバイト列を毎回異なるように並びかえて発行するファイルスクランブルの二つの手法を併用するようにすれば、情報処理端末に発行された端末アプリ３１を複数比較しても、アプリ認証情報の抽出の自動化をより困難化することができる。
【０２２６】
（実施の形態６）
本発明の実施の形態６では、実施の形態１における情報処理端末３０の構成要素の一部を典型的には集積回路であるＬＳＩとして実現した場合について説明する。
【０２２７】
図２３は、実施の形態６における情報処理端末３０とセキュアデバイス１０のブロック構成を示している。
【０２２８】
情報処理端末３０は、セキュアデバイス１０に対して端末アプリを要求し、受信した端末アプリを実行するアプリ実行ＬＳＩ２３００を備える。
【０２２９】
アプリ実行ＬＳＩ２３００は、セキュアデバイスから受信した端末アプリを実行するアプリ実行部２３０１と、実施の形態１におけるアプリ発行要求送信部３０１とアプリ受信部３０２とを備える。これらは個々に１チップ化されていても良いし、一部又は全てを含むように１チップ化されていても良い。
【０２３０】
動作は、セキュアデバイスから受信した端末アプリのコードが、情報処理端末３０の端末ＯＳではなくアプリ実行ＬＳＩ２３００のアプリ実行部２３０１によって実行される以外は、実施の形態１の場合と全く同じである。
【０２３１】
この場合のアプリ実行ＬＳＩ２３００の実現方法としては、ＣＰＵコアをベースにカスタムＬＳＩとして実現する方法もあれば、汎用ＤＳＰにソフトウェアを搭載することによって実現する方法、さらには、ハードワイヤードの専用のＬＳＩとして実現する方法など各種の方法がある。
【０２３２】
図２４は、アプリ実行ＬＳＩ２３００の内部構成の一例、特に、ＣＰＵコアをベースにカスタムＬＳＩとして実現した場合の一例を示している。
【０２３３】
図２４において、アプリ実行ＬＳＩ２３００は、ＣＰＵ２４００と、ＣＰＵ２４００が実行する基本プログラムを格納するＲＯＭ２４０１と、ＣＰＵ２４００が処理したデータ及びＣＰＵ２４００が実行する端末アプリを格納するＲＡＭ２４０２と、外部との入出力信号を制御する入出力信号制御部２４０３と、これらを結ぶバス２４０４とによって構成される。
【０２３４】
この場合、ＣＰＵ２４００とＲＯＭ２４０１とＲＡＭ２４０２とバス２４０４の部分がアプリ実行部２３０１に相当する。また、この場合、ＲＯＭ２４０１とＲＡＭ２４０２は、ＥＥＰＲＯＭやＦｅＲＡＭ等の不揮発性メモリによって構成されていても良い。
【０２３５】
ＲＯＭ２４０１には、実施の形態１における基本ローダのプログラムコードである基本ローダプログラムコード２４１２と、セキュアデバイスから受信した端末アプリのコードを実行するアプリ実行部２３０１のプログラムコードであるアプリ実行部プログラムコード２４１１とが格納されている。例えば、端末アプリがＪＡＶＡ（登録商標）アプリケーションの場合には、アプリ実行部プログラムコード２４１１は、ＪＡＶＡ（登録商標）アプリケーションのバイトコードを解釈して実行するＪＡＶＡ（登録商標）バーチャルマシンのプログラムコードとなる。
【０２３６】
ＣＰＵ２４００は、入出力信号制御部２４０３を介して受信した端末ＯＳ３５からの要求に基づいて、基本ローダプログラムコード２４１２を実行し、セキュアデバイス１０から端末アプリ３１を受信してＲＡＭ２４０２に格納し、さらに、アプリ実行部プログラムコード２４１１を実行し、受信した端末アプリ３１を実行する。この後、実施の形態１の場合と同じように、端末アプリ３１とセキュアデバイス１０との間で、端末アプリ３１に埋め込まれたアプリ認証情報を用いて認証処理を行う。図２４では、セキュアデバイス１０から受信した端末アプリ３１がＲＡＭ２４０２に格納されている状態を示している。
【０２３７】
このように、実施の形態６によれば、実施の形態１における情報処理端末３０の構成要素の一部をＬＳＩとして実現した場合にも、実施の形態１と同様の効果が得れる。
【０２３８】
（実施の形態７）
本発明の実施の形態７では、実施の形態２における情報処理端末３０の構成要素の一部を典型的には集積回路であるＬＳＩとして実現した場合につて説明する。
【０２３９】
図２５は、実施の形態７における情報処理端末３０とセキュアデバイス１０のブロック構成を示している。
【０２４０】
情報処理端末３０は、セキュアデバイス１０に対して端末アプリ３１を要求し、受信した端末アプリ３１を実行するアプリ実行ＬＳＩ２５００を備える。
【０２４１】
アプリ実行ＬＳＩ２５００は、セキュアデバイスから受信した端末アプリ３１を実行するアプリ実行部２５０１と、実施の形態２におけるアプリ発行要求送信部３０１とを備える。これらは個々に１チップ化されていても良いし、一部又は全てを含むように１チップ化されていても良い。
【０２４２】
動作は、セキュアデバイス１０から受信したＭＴＡのコードと端末アプリ３１のコードが、情報処理端末３０の端末ＯＳではなくアプリ実行ＬＳＩ２５００のアプリ実行部２３０１によって実行される以外は、実施の形態２の場合と全く同じである。
【０２４３】
この場合のアプリ実行ＬＳＩ２５００の実現方法としては、ＣＰＵコアをベースにカスタムＬＳＩとして実現する方法もあれば、汎用ＤＳＰにソフトウェアを搭載することによって実現する方法、さらには、ハードワイヤードの専用のＬＳＩとして実現する方法など各種の方法がある。
【０２４４】
図２６は、アプリ実行ＬＳＩ２５００の内部構成の一例、特に、ＣＰＵコアをベースにカスタムＬＳＩとして実現した場合の一例を示している。ハードウェア構成は、実施の形態６のアプリ実行ＬＳＩ２３００の場合と同じである。
【０２４５】
図２６において、アプリ実行ＬＳＩ２５００は、ＣＰＵ２４００と、ＣＰＵ２４００が実行する基本プログラムを格納するＲＯＭ２４０１と、ＣＰＵ２４００が処理したデータ及びＣＰＵ２４００が実行する端末アプリを格納するＲＡＭ２４０２と、外部との入出力信号を制御する入出力信号制御部２４０３と、これらを結ぶバス２４０４とによって構成される。
【０２４６】
この場合、ＣＰＵ２４００とＲＯＭ２４０１とＲＡＭ２４０２とバス２４０４の部分がアプリ実行部２５０１に相当する。またこの場合、ＲＯＭ２４０１とＲＡＭ２４０２は、ＥＥＰＲＯＭやＦｅＲＡＭ等の不揮発性メモリによって構成されていても良い。
【０２４７】
ＲＯＭ２４０１には、実施の形態２における基本ローダのプログラムコードである基本ローダプログラムコード２６１２と、セキュアデバイスから受信した端末アプリのコードを実行するアプリ実行部２５０１のプログラムコードであるアプリ実行部プログラムコード２６１１とが格納されている。例えば、端末アプリがＪＡＶＡ（登録商標）アプリケーションの場合には、アプリ実行部プログラムコード２６１１は、ＪＡＶＡ（登録商標）アプリケーションのバイトコードを解釈して実行するＪＡＶＡ（登録商標）バーチャルマシンのプログラムコードとなる。
【０２４８】
ＣＰＵ２４００は、入出力信号制御部２４０３を介して受信した端末ＯＳ３５からの要求に基づいて、基本ローダプログラムコード２６１２を実行し、まず、セキュアデバイス１０からＭＴＡ３４を受信してＲＡＭ２４０２に格納し、さらに、アプリ実行部プログラムコード２６１１を実行し、ＭＴＡ３４を実行する。ＭＴＡ３４とセキュアデバイス１０との間で、ＭＴＡ３４に埋め込まれたアプリ認証情報を用いて認証処理を行い、次に、アプリ実行部２５０１が実行するＭＴＡ３４は、セキュアデバイス１０から端末アプリ３１を受信してＲＡＭ２４０２に格納し、さらに、アプリ実行部２５０１が受信した端末アプリ３１を実行する。
【０２４９】
この後、実施の形態２の場合と同じように、端末アプリ３１とセキュアデバイス１０との間で、端末アプリ３１に埋め込まれたアプリ認証情報を用いて認証処理を行う。図２６では、セキュアデバイス１０から受信したＭＴＡ３４と端末アプリ３１がＲＡＭ２４０２に格納されている状態を示している。
【０２５０】
このように、実施の形態７によれば、実施の形態２における情報処理端末３０の構成要素の一部をＬＳＩとして実現した場合にも、実施の形態２と同様の効果が得れる。
【０２５１】
（実施の形態８）
本発明の実施の形態８では、実施の形態３における情報処理端末３０の構成要素の一部を典型的には集積回路であるＬＳＩとして実現した場合につて説明する。
【０２５２】
図２７は、実施の形態８における情報処理端末３０とセキュアデバイス１０のブロック構成を示している。
【０２５３】
情報処理端末３０は、セキュアデバイス１０に対して端末アプリを要求し、受信した端末アプリを実行するアプリ実行ＬＳＩ２７００を備える。
【０２５４】
アプリ実行ＬＳＩ２７００は、セキュアデバイスから受信した端末アプリを実行するアプリ実行部２７０１と、実施の形態３におけるアプリ発行要求送信部３０１とを備える。これらは個々に１チップ化されていても良いし、一部又は全てを含むように１チップ化されていても良い。
【０２５５】
動作は、セキュアデバイスから受信したＭＴＡのコードと端末アプリのコードが、情報処理端末３０の端末ＯＳではなくアプリ実行ＬＳＩ２７００のアプリ実行部２７０１によって実行される以外は、実施の形態３の場合と全く同じである。
【０２５６】
この場合のアプリ実行ＬＳＩ２７００の実現方法としては、ＣＰＵコアをベースにカスタムＬＳＩとして実現する方法もあれば、汎用ＤＳＰにソフトウェアを搭載することによって実現する方法、さらには、ハードワイヤードの専用のＬＳＩとして実現する方法など各種の方法がある。
【０２５７】
図２８は、アプリ実行ＬＳＩ２７００の内部構成の一例、特に、ＣＰＵコアをベースにカスタムＬＳＩとして実現した場合の一例を示している。ハードウェア構成は、実施の形態６のアプリ実行ＬＳＩ２３００の場合と同じである。
【０２５８】
図２８において、アプリ実行ＬＳＩ２７００は、ＣＰＵ２４００と、ＣＰＵ２４００が実行する基本プログラムを格納するＲＯＭ２４０１と、ＣＰＵ２４００が処理したデータ及びＣＰＵ２４００が実行する端末アプリを格納するＲＡＭ２４０２と、外部との入出力信号を制御する入出力信号制御部２４０３と、これらを結ぶバス２４０４とによって構成される。
【０２５９】
この場合、ＣＰＵ２４００とＲＯＭ２４０１とＲＡＭ２４０２とバス２４０４の部分がアプリ実行部２７０１に相当する。またこの場合、ＲＯＭ２４０１とＲＡＭ２４０２は、ＥＥＰＲＯＭやＦｅＲＡＭ等の不揮発性メモリによって構成されていても良い。
【０２６０】
ＲＯＭ２４０１には、実施の形態３における基本ローダのプログラムコードである基本ローダプログラムコード２８１２と、セキュアデバイスから受信した端末アプリのコードを実行するアプリ実行部２７０１のプログラムコードであるアプリ実行部プログラムコード２８１１とが格納されている。例えば、端末アプリがＪＡＶＡ（登録商標）アプリケーションの場合には、アプリ実行部プログラムコード２８１１は、ＪＡＶＡ（登録商標）アプリケーションのバイトコードを解釈して実行するＪＡＶＡ（登録商標）バーチャルマシンのプログラムコードとなる。
【０２６１】
ＣＰＵ２４００は、入出力信号制御部２４０３を介して受信した端末ＯＳ３５からの要求に基づいて、基本ローダプログラムコード２８１２を実行し、まず、セキュアデバイス１０からＭＴＡ３４を受信してＲＡＭ２４０２に格納し、さらに、アプリ実行部プログラムコード２８１１を実行し、ＭＴＡ３４を実行する。ＭＴＡ３４とセキュアデバイス１０との間で、ＭＴＡ３４に埋め込まれたアプリ認証情報を用いて認証処理を行う。
【０２６２】
次に、アプリ実行部２７０１が実行するＭＴＡ３４は、セキュアデバイス１０から起動する端末アプリ３１のアプリ暗号鍵を受信し、暗号化済アプリ記憶部３０４に格納されている端末アプリの暗号を復号化し、ハッシュ値を計算し、改竄されていないことを検証した後、ＲＡＭ２４０２に格納する。
【０２６３】
アプリ実行部２７０１が実行するＭＴＡ３４は、暗号の復号化処理毎に毎回異なるアプリ認証情報を生成し、アプリＩＤと共に発行アプリ発行部１０１に送信し、さらに、復号化された端末アプリ３１にアプリ認証情報を渡して端末アプリ３１をアプリ実行部２７０１上で起動する。この後、実施の形態３の場合と同じように、端末アプリ３１とセキュアデバイス１０との間でアプリ認証情報を用いて認証処理を行う。図２８では、セキュアデバイス１０から受信したＭＴＡ３４と端末アプリ３１がＲＡＭ２４０２に格納されている状態を示している。
【０２６４】
このように、実施の形態８によれば、実施の形態３における情報処理端末３０の構成要素の一部をＬＳＩとして実現した場合にも、実施の形態３と同様の効果が得れる。
【０２６５】
なお、実施の形態６、実施の形態７、及び実施の形態８では、アプリ実行ＬＳＩをＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０２６６】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０２６７】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【産業上の利用可能性】
【０２６８】
このように、本発明のセキュアデバイスは、端末アプリに当該端末アプリを認証するための情報を埋め込んで情報処理端末に発行することにより、セキュアデバイスと情報処理端末との間で端末アプリの認証を行うことが可能であり、例えば、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルコンピュータ、音楽再生（および録音）装置、カメラ、ビデオカメラ、自動預金預払機、街頭端末、決済端末等、各種の情報処理装置で使用される種々のセキュアデバイスに適用することができる。また、本発明の情報処理端末は、上述する各種の情報処理装置への適用が可能である。
【図面の簡単な説明】
【０２６９】
【図１】本発明の実施の形態１に係る情報処理端末とセキュアデバイスとを示す機能ブロック図
【図２】（ａ）図１の情報処理端末の構成図、（ｂ）図１のセキュアデバイスの構成図
【図３】本発明の実施の形態１におけるシーケンス図
【図４】本発明の実施の形態１における具体的なシステムを説明する図
【図５】（ａ）指示書テンプレートの具体例、（ｂ）指示書の具体例、（ｃ）指示書の数値の意味を説明する図
【図６】発行情報の具体例を示す図
【図７】（ａ）ダミーがある場合の指示書テンプレートの具体例、（ｂ）ダミーがある場合の指示書の具体例を示す図
【図８】（ａ）カードアプリに計算させる場合の指示書テンプレートの具体例、（ｂ）カードアプリに計算させる場合の指示書の具体例を示す図
【図９】本発明の実施の形態２に係る情報処理端末とセキュアデバイスとを示す機能ブロック図
【図１０】（ａ）図９の情報処理端末の構成図、（ｂ）図９のセキュアデバイスの構成図
【図１１】本発明の実施の形態２におけるシーケンス図
【図１２】本発明の実施の形態３に係る情報処理端末とセキュアデバイスとを示す機能ブロック図
【図１３】（ａ）図１２の情報処理端末の構成図、（ｂ）図１２のセキュアデバイスの構成図
【図１４】本発明の実施の形態３におけるシーケンス図
【図１５】本発明の実施の形態３における暗号化済アプリをインストールするシーケンス図
【図１６】アプリ暗号鍵記憶部に記憶されるデータの具体例を示す図
【図１７】本発明の実施の形態４に係る情報処理端末とセキュアデバイスとを示す機能ブロック図
【図１８】（ａ）通常の端末アプリ、（ｂ）ダミーメソッドが追加された端末アプリ、（ｃ）生成されたメソッドが埋め込まれた端末アプリを示す図
【図１９】（ａ）指示書テンプレートの具体例、（ｂ）指示書の具体例を示す図
【図２０】本発明の実施の形態５に係る情報処理端末とセキュアデバイスとを示す機能ブロック図
【図２１】（ａ）指示書テンプレートの具体例、（ｂ）指示書の具体例を示す図
【図２２】（ａ）スクランブル前の端末アプリの具体例、（ｂ）スクランブル後の端末アプリの具体例を示す図
【図２３】本発明の実施の形態６に係る情報処理端末のアプリ実行ＬＳＩと、セキュアデバイスとを示す機能ブロック図
【図２４】本発明の実施の形態６に係る情報処理端末のアプリ実行ＬＳＩの構成の一例を示すブロック図
【図２５】本発明の実施の形態７に係る情報処理端末のアプリ実行ＬＳＩと、セキュアデバイスとを示す機能ブロック図
【図２６】本発明の実施の形態７に係る情報処理端末のアプリ実行ＬＳＩの構成の一例を示すブロック図
【図２７】本発明の実施の形態８に係る情報処理端末のアプリ実行ＬＳＩと、セキュアデバイスとを示す機能ブロック図
【図２８】本発明の実施の形態８に係る情報処理端末のアプリ実行ＬＳＩの構成の一例を示すブロック図
【符号の説明】
【０２７０】
１０  セキュアデバイス
１０１  アプリ発行部
１０２  アプリ送信部
１０３  アプリ認証部
１０４  通信部
１０５  アプリ記憶部
１０６  発行情報記憶部
１０７  アプリ暗号鍵送信部
１０８  アプリ暗号鍵記憶部
１０９  サービス提供部
１１  カードアプリ
１２  発行アプリ
１３  記憶装置
２０  端末アプリ生成装置
２１  ソースコード
２２  埋め込み準備部
２３  コンパイラ
２４  指示書生成部
３０  情報処理端末
３０１  アプリ発行要求送信部
３０２  アプリ受信部
３０４  暗号化済アプリ記憶部
３０５  端末側アプリ復号部
３０６  端末側アプリ発行部
３０７  アプリ発行依頼部
３１  端末アプリ
３１１  アプリ認証部
３１２  通信部
３１３  サービス部
３２  基本ローダ
３３  アプリローダ
３４  ＭＴＡ
４０  サーバ
２３００、２５００、２７００  アプリ実行ＬＳＩ
【図１】
0004744106.tif 000002
【図２】
0004744106.tif 000003
【図３】
0004744106.tif 000004
【図４】
0004744106.tif 000005
【図５】
0004744106.tif 000006
【図６】
0004744106.tif 000007
【図７】
0004744106.tif 000008
【図８】
0004744106.tif 000009
【図９】
0004744106.tif 000010
【図１０】
0004744106.tif 000011
【図１１】
0004744106.tif 000012
【図１２】
0004744106.tif 000013
【図１３】
0004744106.tif 000014
【図１４】
0004744106.tif 000015
【図１５】
0004744106.tif 000016
【図１６】
0004744106.tif 000017
【図１７】
0004744106.tif 000018
【図１８】
0004744106.tif 000019
【図１９】
0004744106.tif 000020
【図２０】
0004744106.tif 000021
【図２１】
0004744106.tif 000022
【図２２】
0004744106.tif 000023
【図２３】
0004744106.tif 000024
【図２４】
0004744106.tif 000025
【図２５】
0004744106.tif 000026
【図２６】
0004744106.tif 000027
【図２７】
0004744106.tif 000028
【図２８】
0004744106.tif 000029