(57)【特許請求の範囲】
【請求項１】
デバイス固有情報を記憶するデバイス固有情報記憶部と、
第１の鍵が格納され且つ前記第１の鍵が難読化されているコンピュータプログラムを記憶するプログラム記憶部と、
データを記憶するデータ記憶部と、
前記データ記憶部を使用して前記コンピュータプログラムを実行する演算処理部と、
を備え、
前記コンピュータプログラムは、
前記演算処理部からアクセスする前記データ記憶部内の記憶場所の偏りを減らすメモリ保護ステップと、
前記デバイス固有情報から鍵識別情報を生成する鍵識別情報生成ステップと、
前記第１の鍵を使用して前記鍵識別情報を暗号化し、生成された暗号化鍵識別情報を前記コンピュータプログラムのデータ領域に格納する鍵識別情報暗号化ステップと、
第２の鍵を生成する鍵生成ステップと、
前記第１の鍵を使用して前記第２の鍵を暗号化し、生成された暗号化鍵を前記コンピュータプログラムのデータ領域に格納する鍵暗号化ステップと、
前記暗号化鍵識別情報と前記暗号化鍵とを、前記第１の鍵を有するサーバ装置へ送信する鍵情報送信ステップと、
を前記演算処理部に実行させる、
情報処理装置。
【請求項２】
前記コンピュータプログラムは、
所定の時機に前記デバイス固有情報から被検証鍵識別情報を生成する被検証鍵識別情報生成ステップと、
前記第１の鍵と前記コンピュータプログラムのデータ領域に格納される暗号化鍵識別情報とを使用して前記被検証鍵識別情報を検証する鍵識別情報検証ステップと、
前記被検証鍵識別情報の検証が失敗した場合に所定のエラー処理を実行するエラー処理実行ステップと、
を前記演算処理部に実行させる、
請求項１に記載の情報処理装置。
【請求項３】
前記コンピュータプログラムは、
前記被検証鍵識別情報の検証が成功した場合に前記サーバ装置との間で認証処理を実行する認証処理実行ステップ、
を前記演算処理部に実行させる、
請求項２に記載の情報処理装置。
【請求項４】
前記演算処理部は、データを一時的に保持するレジスタを有し、前記データ記憶部及び前記レジスタを使用して前記コンピュータプログラムを実行し、
前記コンピュータプログラムは、
マスク値を使用してデータをマスクし、マスクされたデータを前記レジスタに書き込み、前記レジスタに保持されるマスクされたデータ同士の演算を実行し、実行された演算の結果に対してマスクを解除するレジスタ保護ステップ、
を前記演算処理部に実行させる、
請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
第１の鍵が格納され且つ前記第１の鍵が難読化されているコンピュータプログラムであり、
コンピュータに、
前記コンピュータがアクセスするデータ記憶部内の記憶場所の偏りを減らすメモリ保護ステップと、
前記コンピュータが有するデバイス固有情報から鍵識別情報を生成する鍵識別情報生成ステップと、
前記第１の鍵を使用して前記鍵識別情報を暗号化し、生成された暗号化鍵識別情報を前記コンピュータプログラムのデータ領域に格納する鍵識別情報暗号化ステップと、
第２の鍵を生成する鍵生成ステップと、
前記第１の鍵を使用して前記第２の鍵を暗号化し、生成された暗号化鍵を前記コンピュータプログラムのデータ領域に格納する鍵暗号化ステップと、
前記暗号化鍵識別情報と前記暗号化鍵とを、前記第１の鍵を有するサーバ装置へ送信する鍵情報送信ステップと、
を実行させるためのコンピュータプログラム。
【請求項６】
所定の時機に前記デバイス固有情報から被検証鍵識別情報を生成する被検証鍵識別情報生成ステップと、
前記第１の鍵と前記コンピュータプログラムのデータ領域に格納される暗号化鍵識別情報とを使用して前記被検証鍵識別情報を検証する鍵識別情報検証ステップと、
前記被検証鍵識別情報の検証が失敗した場合に所定のエラー処理を実行するエラー処理実行ステップと、
を前記コンピュータに実行させるための請求項５に記載のコンピュータプログラム。
【請求項７】
前記被検証鍵識別情報の検証が成功した場合に前記サーバ装置との間で認証処理を実行する認証処理実行ステップ、
を前記コンピュータに実行させるための請求項６に記載のコンピュータプログラム。
【請求項８】
前記コンピュータは、データを一時的に保持するレジスタを有し、
前記コンピュータプログラムは、
マスク値を使用してデータをマスクし、マスクされたデータを前記レジスタに書き込み、前記レジスタに保持されるマスクされたデータ同士の演算を実行し、実行された演算の結果に対してマスクを解除するレジスタ保護ステップ、
を前記コンピュータに実行させるための請求項５から７のいずれか１項に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
従来、セキュアエレメント（Secure Element）として、ハードウェアで構成されるＳＩＭカード（Subscriber Identity Module Card）やＴＰＭ（Trusted Platform Module）などが知られている（例えば非特許文献１参照）。セキュアエレメントは耐タンパー性（Tamper Resistant）を有する。ＳＩＭカードやＴＰＭには、ハードウェアの製造時に、アプリケーションの認証や通信の暗号化などに用いられる鍵が安全に格納される。
【０００３】
また、ソフトウェアでセキュアエレメントを構成する技術が検討されている（例えば非特許文献２参照）。非特許文献２には、メモリ保護技術として、ＣＰＵ（Central Processing Unit）がメモリにアクセスする際のアドレスパターンが特定されないように保護する技術が開示される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】GlobalPlatform，“GlobalPlatform’s Proposition for NFC Mobile: Secure Element Management and Messaging”2009年，インターネット＜ＵＲＬ：http://www.globalplatform.org/documents/GlobalPlatform_NFC_Mobile_White_Paper.pdf＞
【非特許文献２】Yuto Nakano, Carlos Cid, Shinsaku Kiyomoto, and Yutaka Miyake,“Memory Access Pattern Protection for Resource-Constrained Devices”, Smart Card Research and Advanced Applications, Lecture Notes in Computer Science Vol.7771, pp.188-202, 2012.
【非特許文献３】Boaz Barak, Oded Goldreich, Rusell Impagliazzo, Steven Rudich, Amit Sahai, Salil Vadhan, and Ke Yang, “On the (Im)possibility of Obfuscating Programs”, CRYPTO 2001, Lecture Notes in Computer Science Volume 2139, 2001, pp 1-18, 2001.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に、ソフトウェアは複数の情報処理装置に対して共通化される。このため、セキュアエレメントを構成するソフトウェアも、複数の情報処理装置に対して共通化されることが好ましい。しかし、ハードウェアで構成されるＳＩＭカードやＴＰＭ等のセキュアエレメントは、自己に固有の鍵を例えば製造時から格納し、認証サーバ等の他の装置との間で鍵を共有することができるが、セキュアエレメントを構成するソフトウェアが複数の情報処理装置に対して共通化される場合には、情報処理装置へソフトウェアを配信する前から、情報処理装置に固有の鍵をソフトウェアに格納することができない。
【０００６】
このため、セキュアエレメントを構成するソフトウェアが複数の情報処理装置に対して共通化される場合、セキュアエレメントを構成するソフトウェアを実行する情報処理装置が、セキュアエレメントにより鍵を生成し、生成された鍵を情報処理装置以外の他の装置との間で共有することが要求される。
【０００７】
本発明は、このような事情を考慮してなされたものであり、セキュアエレメントを構成するソフトウェアを実行する情報処理装置が、セキュアエレメントにより鍵を生成し、生成された鍵を情報処理装置以外の他の装置との間で共有することができる、情報処理装置、及びコンピュータプログラムを提供することを課題とする。
【課題を解決するための手段】
【０００８】
（１）本発明の一態様は、デバイス固有情報を記憶するデバイス固有情報記憶部と、第１の鍵が格納され且つ前記第１の鍵が難読化されているコンピュータプログラムを記憶するプログラム記憶部と、データを記憶するデータ記憶部と、前記データ記憶部を使用して前記コンピュータプログラムを実行する演算処理部と、を備え、前記コンピュータプログラムは、前記演算処理部からアクセスする前記データ記憶部内の記憶場所の偏りを減らすメモリ保護ステップと、前記デバイス固有情報から鍵識別情報を生成する鍵識別情報生成ステップと、前記第１の鍵を使用して前記鍵識別情報を暗号化し、生成された暗号化鍵識別情報を前記コンピュータプログラムのデータ領域に格納する鍵識別情報暗号化ステップと、第２の鍵を生成する鍵生成ステップと、前記第１の鍵を使用して前記第２の鍵を暗号化し、生成された暗号化鍵を前記コンピュータプログラムのデータ領域に格納する鍵暗号化ステップと、前記暗号化鍵識別情報と前記暗号化鍵とを、前記第１の鍵を有するサーバ装置へ送信する鍵情報送信ステップと、を前記演算処理部に実行させる、情報処理装置である。
（２）本発明の一態様は、上記（１）の情報処理装置において、前記コンピュータプログラムは、所定の時機に前記デバイス固有情報から被検証鍵識別情報を生成する被検証鍵識別情報生成ステップと、前記第１の鍵と前記コンピュータプログラムのデータ領域に格納される暗号化鍵識別情報とを使用して前記被検証鍵識別情報を検証する鍵識別情報検証ステップと、前記被検証鍵識別情報の検証が失敗した場合に所定のエラー処理を実行するエラー処理実行ステップと、を前記演算処理部に実行させる、情報処理装置である。
（３）本発明の一態様は、上記（２）の情報処理装置において、前記コンピュータプログラムは、前記被検証鍵識別情報の検証が成功した場合に前記サーバ装置との間で認証処理を実行する認証処理実行ステップ、を前記演算処理部に実行させる、情報処理装置である。
（４）本発明の一態様は、上記（１）から（３）のいずれかの情報処理装置において、前記演算処理部は、データを一時的に保持するレジスタを有し、前記データ記憶部及び前記レジスタを使用して前記コンピュータプログラムを実行し、前記コンピュータプログラムは、マスク値を使用してデータをマスクし、マスクされたデータを前記レジスタに書き込み、前記レジスタに保持されるマスクされたデータ同士の演算を実行し、実行された演算の結果に対してマスクを解除するレジスタ保護ステップ、を前記演算処理部に実行させる、情報処理装置である。
【０００９】
（５）本発明の一態様は、第１の鍵が格納され且つ前記第１の鍵が難読化されているコンピュータプログラムであり、コンピュータに、前記コンピュータがアクセスするデータ記憶部内の記憶場所の偏りを減らすメモリ保護ステップと、前記コンピュータが有するデバイス固有情報から鍵識別情報を生成する鍵識別情報生成ステップと、前記第１の鍵を使用して前記鍵識別情報を暗号化し、生成された暗号化鍵識別情報を前記コンピュータプログラムのデータ領域に格納する鍵識別情報暗号化ステップと、第２の鍵を生成する鍵生成ステップと、前記第１の鍵を使用して前記第２の鍵を暗号化し、生成された暗号化鍵を前記コンピュータプログラムのデータ領域に格納する鍵暗号化ステップと、前記暗号化鍵識別情報と前記暗号化鍵とを、前記第１の鍵を有するサーバ装置へ送信する鍵情報送信ステップと、を実行させるためのコンピュータプログラムである。
（６）本発明の一態様は、上記（５）のコンピュータプログラムにおいて、所定の時機に前記デバイス固有情報から被検証鍵識別情報を生成する被検証鍵識別情報生成ステップと、前記第１の鍵と前記コンピュータプログラムのデータ領域に格納される暗号化鍵識別情報とを使用して前記被検証鍵識別情報を検証する鍵識別情報検証ステップと、前記被検証鍵識別情報の検証が失敗した場合に所定のエラー処理を実行するエラー処理実行ステップと、を前記コンピュータに実行させるためのコンピュータプログラムである。
（７）本発明の一態様は、上記（６）のコンピュータプログラムにおいて、前記被検証鍵識別情報の検証が成功した場合に前記サーバ装置との間で認証処理を実行する認証処理実行ステップ、を前記コンピュータに実行させるためのコンピュータプログラムである。
（８）本発明の一態様は、上記（５）から（７）のいずれかのコンピュータプログラムにおいて、前記コンピュータは、データを一時的に保持するレジスタを有し、前記コンピュータプログラムは、マスク値を使用してデータをマスクし、マスクされたデータを前記レジスタに書き込み、前記レジスタに保持されるマスクされたデータ同士の演算を実行し、実行された演算の結果に対してマスクを解除するレジスタ保護ステップ、を前記コンピュータに実行させるためのコンピュータプログラムである。
【発明の効果】
【００１０】
本発明によれば、セキュアエレメントを構成するソフトウェアを実行する情報処理装置が、セキュアエレメントにより鍵を生成し、生成された鍵を情報処理装置以外の他の装置との間で共有することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１実施形態に係る認証システムを示す構成図である。
【図２】本発明の第１実施形態に係る情報処理装置１を示すハードウェア構成図である。
【図３】本発明の第１実施形態に係る情報処理装置１を示す機能構成図である。
【図４】本発明の第１実施形態に係る鍵共有処理を示すフローチャートである。
【図５】本発明の第２実施形態に係る情報処理装置１を示すハードウェア構成図である。
【図６】本発明の第２実施形態に係る情報処理装置１を示す機能構成図である。
【図７】本発明の第２実施形態に係る認証処理を示すフローチャートである。
【図８】本発明の第３実施形態に係る情報処理装置１を示す機能構成図である。
【図９】メモリ保護処理の例を示す説明図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照し、本発明の実施形態について説明する。
【００１３】
［第１実施形態］
図１は、本発明の第１実施形態に係る認証システムを示す構成図である。図１において、情報処理装置１は、コンピュータプログラムを実行するコンピュータである。配信サーバ２は、情報処理装置１へ、プログラムＳＥを配信する。プログラムＳＥはコンピュータプログラムである。プログラムＳＥは、情報処理装置１にインストールされる。
【００１４】
プログラムＳＥは、通信回線を介して、配信サーバ２から情報処理装置１へ送信されてもよい。通信回線は、有線通信回線であってもよく、又は、無線通信回線であってもよい。プログラムＳＥは、コンピュータが読み取り可能な記録媒体に記録され、当該記録媒体から情報処理装置１に読み取られてもよい。
【００１５】
プログラムＳＥは、第１の鍵Ｋａを格納する。第１の鍵Ｋａは、プログラムＳＥの中で難読化されている。第１の鍵ＫａはプログラムＳＥのソースコード中に格納される。第１の鍵Ｋａを難読化するために、プログラムＳＥのソースコードにおいて、変数名の変更、ダミー変数の追加、関数名の変更などが行われる。これにより、プログラムＳＥがコンパイルされたデータを逆コンパイルしても、逆コンパイルされたデータから第１の鍵Ｋａを取得することが困難になる。さらに、プログラムＳＥのソースコードにおいて、文字列の暗号化、プログラムロジックの変更を行ってもよい。これにより、さらに、第１の鍵ＫａをプログラムＳＥから取得することが困難になる。コンピュータプログラムの難読化技術については、例えば非特許文献３に記載される。
【００１６】
プログラムＳＥはデータ領域ＡｒｅａＤを有する。
【００１７】
配信サーバ２は、第１の鍵Ｋａを認証サーバ３へ送信する。認証サーバ３は第１の鍵Ｋａを保持する。これにより、第１の鍵Ｋａは、プログラムＳＥを保持する情報処理装置１と、認証サーバ３との間で共有される。情報処理装置１と認証サーバ３とは、通信回線を介してデータを送受する。通信回線は、有線通信回線であってもよく、又は、無線通信回線であってもよい。
【００１８】
図２は、本発明の第１実施形態に係る情報処理装置１を示すハードウェア構成図である。図２において、情報処理装置１は、ＣＰＵ＿１１（演算処理部）と、プログラム記憶部１２と、データ記憶部１３と、デバイス固有情報記憶部１４と、操作部１５と、表示部１６と、通信部１７とを備える。これら各部はデータを交換できるように構成される。
【００１９】
ＣＰＵ＿１１は、コンピュータプログラムを実行する。プログラム記憶部１２は、ＣＰＵ＿１１によって実行されるコンピュータプログラムを記憶する。プログラム記憶部１２は、プログラムＳＥを記憶する。データ記憶部１３はデータを記憶する。ＣＰＵ＿１１は、データ記憶部１３にアクセスする。ＣＰＵ＿１１は、データ記憶部１３を使用してコンピュータプログラムを実行する。デバイス固有情報記憶部１４は、デバイス固有情報を記憶する。
【００２０】
操作部１５は、キーボード、テンキー、マウス等の入力デバイスから構成され、利用者の操作に応じたデータ入力を行う。表示部１６は、液晶表示装置等の表示デバイスから構成され、データ表示を行う。また、データ入力とデータ表示の両方が可能なタッチパネルを備えてもよい。
【００２１】
通信部１７は、通信ネットワークを介して他の装置と通信する。通信ネットワークを介して通信する方法として、携帯電話ネットワークや無線ＬＡＮ（Local Area Network）等の無線通信ネットワークを利用して通信する方法、公衆電話ネットワークなどの有線通信ネットワークを利用して通信する方法などが挙げられる。
【００２２】
情報処理装置１として、汎用のコンピュータ装置を使用してもよく、又は、専用のハードウェア装置として構成してもよい。また、情報処理装置１として、スマートフォン等の携帯通信端末装置、タブレット型のコンピュータ装置、据置き型のパーソナルコンピュータ装置などを使用してもよい。
【００２３】
デバイス固有情報として、情報処理装置１の製造番号、情報処理装置１のハードウェア識別番号、情報処理装置１のＯＳ（Operating System）又はアプリケーションソフトウェアが発生する情報処理装置１に固有の値、情報処理装置１が専用的に使用する通信回線に関する識別番号などが挙げられる。ハードウェア識別番号として、例えばＭＡＣ（Media Access Control）アドレスが挙げられる。ＯＳが発生する情報処理装置１に固有の値として、同一アプリケーションソフトウェアの開発で同一デバイスである時に発生する同一の値を利用することが挙げられる。情報処理装置１として携帯通信端末装置を使用する場合、デバイス固有情報として、携帯通信端末装置の電話番号を利用することが挙げられる。情報処理装置１として携帯通信端末装置を使用する場合、デバイス固有情報として、携帯通信端末装置のＳＩＭカードに格納される加入者情報を利用することが挙げられる。
【００２４】
なお、操作部１５及び表示部１６については、情報処理装置１とは別個に設けてもよい。例えば、情報処理装置１が、通信回線を介して、情報処理装置１の外部に設けられた入力デバイスや表示デバイスと接続してもよい。また、通信部１７は、情報処理装置１とは別個に設けてもよい。例えば、情報処理装置１として据置き型のパーソナルコンピュータ装置を使用し、パーソナルコンピュータ装置が、パーソナルコンピュータ装置とは別個の携帯通信端末装置を使用して通信するようにしてもよい。
【００２５】
図３は、本発明の第１実施形態に係る情報処理装置１を示す機能構成図である。図３に示される各部の機能は、図２に示すＣＰＵ＿１１がプログラム記憶部１２に記憶されるプログラムＳＥを実行することにより実現される。図３において、情報処理装置１は、メモリ保護部２１と、鍵識別情報生成部２２と、鍵識別情報暗号化部２３と、鍵生成部２４と、鍵暗号化部２５と、鍵情報送信部２６と、を備える。
【００２６】
メモリ保護部２１は、ＣＰＵ＿１１からアクセスするデータ記憶部１３内の記憶場所の偏りを減らすメモリ保護処理を実行する。鍵識別情報生成部２２は、デバイス固有情報記憶部１４に記憶されるデバイス固有情報から鍵識別情報を生成する。鍵識別情報暗号化部２３は、第１の鍵Ｋａを使用して鍵識別情報を暗号化し、暗号化鍵識別情報を生成する。鍵識別情報暗号化部２３は、生成された暗号化鍵識別情報をプログラムＳＥのデータ領域ＡｒｅａＤに格納する。
【００２７】
鍵生成部２４は、第２の鍵を生成する。鍵暗号化部２５は、第１の鍵Ｋａを使用して第２の鍵を暗号化し、暗号化鍵を生成する。鍵暗号化部２５は、生成された暗号化鍵をプログラムＳＥのデータ領域ＡｒｅａＤに格納する。鍵情報送信部２６は、暗号化鍵識別情報と暗号化鍵とを、通信部１７により認証サーバ３へ送信する。認証サーバ３は、第１の鍵Ｋａを有する。
【００２８】
次に、図４を参照して、第１実施形態に係る情報処理装置１の動作を説明する。図４は、本発明の第１実施形態に係る鍵共有処理を示すフローチャートである。
【００２９】
（ステップＳ１）鍵識別情報生成部２２は、デバイス固有情報記憶部１４に記憶されるデバイス固有情報Ｕｉｄから鍵識別情報を生成する。ここでは、鍵識別情報の生成方法の例として、ハッシュ関数を使用してハッシュ値を生成する。ハッシュ関数として、例えばＳＨＡ−２（２５６ｂｉｔ）を使用する。鍵識別情報生成部２２は、ハッシュ関数「ＳＨＡ−２（２５６ｂｉｔ）」を使用して、デバイス固有情報Ｕｉｄからハッシュ値ｈａｓｈ（Ｕｉｄ）を生成する。ハッシュ値ｈａｓｈ（Ｕｉｄ）が鍵識別情報となる。
【００３０】
（ステップＳ２）鍵識別情報暗号化部２３は、第１の鍵Ｋａを使用して鍵識別情報ｈａｓｈ（Ｕｉｄ）を暗号化し、暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））を生成する。鍵識別情報暗号化部２３は、生成された暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））をプログラムＳＥのデータ領域ＡｒｅａＤに格納する。
【００３１】
（ステップＳ３）鍵生成部２４は、第２の鍵を生成する。ここでは、第２の鍵の生成方法として、乱数を発生する。鍵生成部２４は、乱数ｒ＿ｋｅｙを発生する。
【００３２】
（ステップＳ４）鍵暗号化部２５は、第１の鍵Ｋａを使用して、第２の鍵である乱数ｒ＿ｋｅｙを暗号化し、暗号化鍵Ｋａ（ｒ＿ｋｅｙ）を生成する。鍵暗号化部２５は、生成された暗号化鍵Ｋａ（ｒ＿ｋｅｙ）をプログラムＳＥのデータ領域ＡｒｅａＤに格納する。
【００３３】
（ステップＳ５）鍵情報送信部２６は、暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））と暗号化鍵Ｋａ（ｒ＿ｋｅｙ）とを、通信部１７により認証サーバ３へ送信する。
【００３４】
認証サーバ３は、情報処理装置１から、暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））と暗号化鍵Ｋａ（ｒ＿ｋｅｙ）と受信する。認証サーバ３は、情報処理装置１から受信された暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））を、自己が保持する第１の鍵Ｋａで復号し、鍵識別情報ｈａｓｈ（Ｕｉｄ）を取得する。認証サーバ３は、情報処理装置１から受信された暗号化鍵Ｋａ（ｒ＿ｋｅｙ）を、自己が保持する第１の鍵Ｋａで復号し、第２の鍵ｒ＿ｋｅｙを取得する。認証サーバ３は、復号結果である鍵識別情報ｈａｓｈ（Ｕｉｄ）と第２の鍵ｒ＿ｋｅｙとを関連付けて保持する。これにより、第２の鍵ｒ＿ｋｅｙは、情報処理装置１と認証サーバ３との間で共有される。
【００３５】
上述した図４の鍵共有処理において、ＣＰＵ＿１１がデータ記憶部１３にアクセスする際には、メモリ保護部２１がメモリ保護処理を実行する。メモリ保護処理によって、ＣＰＵ＿１１からアクセスするデータ記憶部１３内の記憶場所の偏りが減る。これにより、データ記憶部１３へのアクセスのパターン（例えば、メモリへアクセスする際のアドレスパターン）を特定することが困難になる。この結果として、データ記憶部１３へのアクセスが解析されることによって第１の鍵Ｋａに関する処理が特定されること、を防止できる。
【００３６】
上述した第１実施形態によれば、情報処理装置１がプログラムＳＥを実行することによって、メモリ保護部２１の機能が実現される。メモリ保護部２１がメモリ保護処理を実行することによって、セキュアエレメントが構成される。情報処理装置１は、ＣＰＵ＿１１がプログラムＳＥを実行することによって構成されたセキュアエレメントにより第２の鍵ｒ＿ｋｅｙを生成し、生成された第２の鍵ｒ＿ｋｅｙを情報処理装置１以外の他の装置である認証サーバ３との間で共有することができる。
【００３７】
［第２実施形態］
本発明の第２実施形態を説明する。第２実施形態に係る認証システムの構成は、上述した図１の構成と同じである。
【００３８】
図５は、本発明の第２実施形態に係る情報処理装置１を示すハードウェア構成図である。図５において、図２の各部に対応する部分には同一の符号を付け、その説明を省略する。第２実施形態に係る情報処理装置１の構成は、上述した図２の構成と同じである。但し、プログラムＳＥのデータ領域ＡｒｅａＤは、暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））及び暗号化鍵Ｋａ（ｒ＿ｋｅｙ）を格納する。暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））は、上述した第１実施形態における図４のステップＳ２で生成されてプログラムＳＥのデータ領域ＡｒｅａＤに格納される。暗号化鍵Ｋａ（ｒ＿ｋｅｙ）は、上述した第１実施形態における図４のステップＳ４で生成されてプログラムＳＥのデータ領域ＡｒｅａＤに格納される。
【００３９】
上述した図４の鍵共有処理は、１回のみ実行される。プログラムＳＥは、図４の鍵共有処理を実行済みであることを示す履歴情報を有する。プログラムＳＥは、履歴情報がある場合には図４の鍵共有処理を実行しないように、構成される。ある情報処理装置１（Ａ）にインストールされたプログラムＳＥが情報処理装置１（Ａ）で実行されると、プログラムＳＥは、図４の鍵共有処理を実行済みであることを示す履歴情報を生成し、生成した履歴情報を自己で保持する。これにより、情報処理装置１（Ａ）で再度、プログラムＳＥが実行されても、履歴情報があるので、図４の鍵共有処理は実行されない。したがって、情報処理装置１（Ａ）で保持されるプログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））及び暗号化鍵Ｋａ（ｒ＿ｋｅｙ）は変更されない。
【００４０】
例えば、ある情報処理装置１（Ａ）にインストールされたプログラムＳＥが情報処理装置１（Ａ）で実行された後にコピーされ、プログラムＳＥのコピーが他の情報処理装置１（Ｂ）にインストールされたとする。この場合、情報処理装置１（Ｂ）にインストールされたプログラムＳＥは、情報処理装置１（Ａ）のデバイス固有情報Ｕｉｄから生成された暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））をデータ領域ＡｒｅａＤに格納すると共に、履歴情報を有する。これにより、情報処理装置１（Ｂ）では、履歴情報によって、図４の鍵共有処理が実行されない。このため、情報処理装置１（Ｂ）に保持されるプログラムＳＥのデータ領域ＡｒｅａＤは、情報処理装置１（Ａ）のデバイス固有情報Ｕｉｄから生成された暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））を格納したままとなる。
【００４１】
図６は、本発明の第２実施形態に係る情報処理装置１を示す機能構成図である。図６に示される各部の機能は、図５に示すＣＰＵ＿１１がプログラム記憶部１２に記憶される第２実施形態のプログラムＳＥを実行することにより実現される。図６において、図３の各部に対応する部分には同一の符号を付け、その説明を省略する。図６に示される情報処理装置１は、図３に示される情報処理装置１に対して、さらに、被検証鍵識別情報生成部３１と、鍵識別情報検証部３２と、エラー処理実行部３３と、認証処理実行部３４と、を備える。
【００４２】
被検証鍵識別情報生成部３１は、所定の時機に、デバイス固有情報記憶部１４に記憶されるデバイス固有情報から被検証鍵識別情報を生成する。鍵識別情報検証部３２は、第１の鍵ＫａとプログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵識別情報とを使用して、被検証鍵識別情報を検証する。エラー処理実行部３３は、鍵識別情報検証部３２による被検証鍵識別情報の検証が失敗した場合に、所定のエラー処理を実行する。認証処理実行部３４は、鍵識別情報検証部３２による被検証鍵識別情報の検証が成功した場合に、認証サーバ３との間で認証処理を実行する。
【００４３】
次に、図７を参照して、第２実施形態に係る情報処理装置１の動作を説明する。図７は、本発明の第２実施形態に係る認証処理を示すフローチャートである。
【００４４】
（ステップＳ１１）被検証鍵識別情報生成部３１は、所定の時機に、デバイス固有情報記憶部１４に記憶されるデバイス固有情報Ｕｉｄ’から被検証鍵識別情報を生成する。該所定の時機として、プログラムＳＥの起動時が挙げられる。被検証鍵識別情報生成部３１は、例えば、プログラムＳＥの起動時に毎回、デバイス固有情報記憶部１４に記憶されるデバイス固有情報Ｕｉｄ’から被検証鍵識別情報を生成する。
【００４５】
被検証鍵識別情報の生成方法は、鍵識別情報生成部２２による鍵識別情報の生成方法と同じである。ここでは、鍵識別情報及び被検証鍵識別情報の生成方法の例として、ハッシュ関数を使用してハッシュ値を生成する。被検証鍵識別情報生成部３１は、例えばプログラムＳＥの起動時に、デバイス固有情報記憶部１４に記憶されるデバイス固有情報Ｕｉｄ’からハッシュ値ｈａｓｈ（Ｕｉｄ’）を生成する。ハッシュ値ｈａｓｈ（Ｕｉｄ’）が被検証鍵識別情報となる。
【００４６】
（ステップＳ１２）鍵識別情報検証部３２は、第１の鍵ＫａとプログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））とを使用して、被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）を検証する。この検証方法として以下の例１，２が挙げられる。
【００４７】
（検証方法の例１）鍵識別情報検証部３２は、第１の鍵Ｋａを使用して被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）を暗号化し、暗号化被検証鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ’））を生成する。鍵識別情報検証部３２は、生成された暗号化被検証鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ’））と、プログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））とを比較する。この比較の結果、両者が一致した場合は被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）の検証が成功である。一方、両者が不一致した場合は被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）の検証が失敗である。
【００４８】
（検証方法の例２）鍵識別情報検証部３２は、第１の鍵Ｋａを使用して、プログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））を復号化する。鍵識別情報検証部３２は、暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））の復号結果と、被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）とを比較する。この比較の結果、両者が一致した場合は被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）の検証が成功である。一方、両者が不一致した場合は被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）の検証が失敗である。
【００４９】
被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）の検証が失敗する場合として、ある情報処理装置１（Ａ）にインストールされたプログラムＳＥがコピーされ、プログラムＳＥのコピーが他の情報処理装置１（Ｂ）にインストールされた場合が挙げられる。この場合、情報処理装置１（Ｂ）にインストールされたプログラムＳＥのデータ領域ＡｒｅａＤは、情報処理装置１（Ａ）のデバイス固有情報Ｕｉｄから生成された暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））を格納する。一方、上述したステップＳ１１では、情報処理装置１（Ｂ）のデバイス固有情報Ｕｉｄ’から、被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）が生成される。情報処理装置１（Ａ）のデバイス固有情報Ｕｉｄと情報処理装置１（Ｂ）のデバイス固有情報Ｕｉｄ’とは異なる。これにより、上述したステップＳ１２において、プログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））に基づく被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）の検証が失敗する。
【００５０】
プログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））が生成された情報処理装置１と、被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）が生成された情報処理装置１と、が同一である場合には、上述したステップＳ１２において、プログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））に基づく被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）の検証が成功する。これは、プログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））と、被検証鍵識別情報ｈａｓｈ（Ｕｉｄ’）とが、同じデバイス固有情報「Ｕｉｄ＝Ｕｉｄ’」から生成されたからである。
【００５１】
（ステップＳ１３）ステップＳ１２の検証結果が成功である場合にはステップＳ１４に進む。一方、ステップＳ１２の検証結果が失敗である場合にはステップＳ１５に進む。
【００５２】
（ステップＳ１４）認証処理実行部３４は、プログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））を通信部１７により認証サーバ３へ送信し、認証サーバ３に対して認証要求を行う。認証サーバ３は、情報処理装置１から受信された暗号化鍵識別情報Ｋａ（ｈａｓｈ（Ｕｉｄ））を、自己が保持する第１の鍵Ｋａで復号し、鍵識別情報ｈａｓｈ（Ｕｉｄ）を取得する。認証サーバ３は、取得された鍵識別情報ｈａｓｈ（Ｕｉｄ）に基づいて、自己が保持する第２の鍵ｒ＿ｋｅｙを取得する。これにより、認証サーバ３と認証処理実行部３４とは、両者で共有される第２の鍵ｒ＿ｋｅｙを使用して認証処理を実行する。この認証処理の例として、チャレンジ・レスポンス方法が挙げられる。
【００５３】
チャレンジ・レスポンス方法では、まず、認証サーバ３が乱数Ｒを発生する。認証サーバ３は、チャレンジ値として乱数Ｒを情報処理装置１へ送信する。情報処理装置１において、認証処理実行部３４は、通信部１７により認証サーバ３からのチャレンジ値Ｒを受信する。認証処理実行部３４は、プログラムＳＥのデータ領域ＡｒｅａＤに格納される暗号化鍵Ｋａ（ｒ＿ｋｅｙ）を第１の鍵Ｋａで復号化し、第２の鍵ｒ＿ｋｅｙを取得する。認証処理実行部３４は、第２の鍵ｒ＿ｋｅｙを使用してチャレンジ値Ｒを暗号化し、暗号化チャレンジ値ｒ＿ｋｅｙ（Ｒ）を生成する。認証処理実行部３４は、通信部１７により、レスポンス値として暗号化チャレンジ値ｒ＿ｋｅｙ（Ｒ）を認証サーバ３へ送信する。認証サーバ３は、情報処理装置１から受信された暗号化チャレンジ値ｒ＿ｋｅｙ（Ｒ）を、自己が保持する第２の鍵ｒ＿ｋｅｙで復号化する。認証サーバ３は、暗号化チャレンジ値ｒ＿ｋｅｙ（Ｒ）の復号結果と、チャレンジ値Ｒとを比較する。該比較結果が一致である場合、情報処理装置１の認証は成功である。一方、該比較結果が不一致である場合、情報処理装置１の認証は失敗である。
【００５４】
（ステップＳ１５）エラー処理実行部３３は、ステップＳ１２の検証結果が失敗である場合に、所定のエラー処理を実行する。所定のエラー処理として、例えば、ＣＰＵ＿１１によるプログラムの実行を全て又は一部を停止させることが挙げられる。
【００５５】
上述した第２実施形態によれば、ある情報処理装置１（Ａ）にインストールされたプログラムＳＥがコピーされ、プログラムＳＥのコピーが他の情報処理装置１（Ｂ）にインストールされたことを検出することができる。これにより、ソフトウェアのコピーを使用したなりすましを防止する効果が得られる。
【００５６】
［第３実施形態］
本発明の第３実施形態を説明する。第３実施形態に係る認証システムの構成は、上述した図１の構成と同じである。第３実施形態に係る情報処理装置１のハードウェア構成は、上述した図２又は図５の構成と同じである。第３実施形態では、上述した第１実施形態又は第２実施形態の情報処理装置１の機能構成に対して、さらに、レジスタ保護部を追加する。以下、第２実施形態の情報処理装置１の機能構成に対してレジスタ保護部を追加する場合を例に挙げて説明するが、第１実施形態の情報処理装置１の機能構成に対してレジスタ保護部を追加する場合も同様である。
【００５７】
図８は、本発明の第３実施形態に係る情報処理装置１を示す機能構成図である。図８に示される各部の機能は、図５に示すＣＰＵ＿１１がプログラム記憶部１２に記憶される第３実施形態のプログラムＳＥを実行することにより実現される。図８において、図６の各部に対応する部分には同一の符号を付け、その説明を省略する。図８に示される情報処理装置１は、図６に示される情報処理装置１に対して、さらに、レジスタ保護部４０を備える。
【００５８】
レジスタ保護部４０は、秘匿したいデータがＣＰＵ＿１１内のレジスタから取得されないように保護するレジスタ保護処理を実行する。ＣＰＵ＿１１内のレジスタはデータを一時的に保持する。ＣＰＵ＿１１は、ＣＰＵ＿１１内のレジスタを使用してコンピュータプログラムを実行する。ＣＰＵ＿１１内のレジスタで保持されるデータは、デバッガなどのツールを用いることにより、外部から取得できる。このため、秘匿したいデータについては、レジスタ保護処理によって、レジスタ上に現れないようにする。
【００５９】
レジスタ保護部４０が実行するレジスタ保護処理を説明する。レジスタ保護部４０は、マスク値を使用してデータをマスクし、マスクされたデータをレジスタに書き込む。レジスタ保護部４０は、レジスタに保持されるマスクされたデータ同士の演算を実行し、実行された演算の結果に対してマスクを解除する。このレジスタ保護処理によって、秘匿したいデータがレジスタ上に現れないようにする。
【００６０】
上述した第３実施形態によれば、レジスタ保護処理によって、秘匿したいデータがＣＰＵ＿１１内のレジスタから取得されることを防止できる。これにより、情報処理装置１において、ＣＰＵ＿１１がプログラムＳＥを実行することによって構成されるセキュアエレメントの耐タンパー性の向上を図ることができる。
【００６１】
なお、第１実施形態の情報処理装置１の機能構成に対してレジスタ保護部を追加する場合、上述した図３に示される構成に対して、さらにレジスタ保護部４０が追加される。
【００６２】
［メモリ保護処理の例］
図９を参照して、メモリ保護部２１が実行するメモリ保護処理の例を説明する。図９は、メモリ保護処理の例を示す説明図である。
【００６３】
（ステップＳ２０）メモリ保護部２１は、データ記憶部１３の記憶領域内に履歴１０１の領域とバッファ１０２の領域とを生成する。
【００６４】
（ステップＳ２１）メモリ保護部２１は、アクセス対象のデータが履歴１０１又はバッファ１０２に格納されているかを確認する。
【００６５】
（ステップＳ２２）メモリ保護部２１は、ステップＳ２１の確認の結果、アクセス対象のデータがバッファ１０２に格納されていない場合、アクセス対象のデータをバッファ１０２にコピーする。メモリ保護部２１は、ステップＳ２１の確認の結果、アクセス対象のデータが履歴１０１に格納されている場合、アクセス対象のデータを履歴１０１からバッファ１０２にコピーする。
【００６６】
（ステップＳ２３，Ｓ２４）メモリ保護部２１は、バッファ１０２に格納されるアクセス対象のデータにアクセスする。該アクセスの際に、メモリ保護部２１は、データ記憶部１３の記憶領域の中から無作為に選択した記憶場所へのアクセスを追加する。該アクセスの際に、メモリ保護部２１は、履歴１０１に格納されるデータの記憶場所へのアクセスを追加する。メモリ保護部２１は、アクセスしたデータ及び記憶場所の組を履歴１０１に格納する。
【００６７】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【００６８】
上述した実施形態では、情報処理装置１は第２の鍵ｒ＿ｋｅｙを、認証サービスを提供する認証サーバ３との間で共有したが、第２の鍵ｒ＿ｋｅｙを共有する他の装置は認証サービス以外の他のサービスを提供するサーバ装置であってもよい。情報処理装置１と第２の鍵ｒ＿ｋｅｙを共有するサーバ装置として、例えば、電子商取引サービスを提供するサーバ装置、動画データ等のコンテンツを配信するサーバ装置、クレジットカード等による決済サービスを提供するサーバ装置などが挙げられる。
【００６９】
プログラムＳＥは、他のアプリケーションソフトウェアに組み込まれていてもよい。
【００７０】
また、上述した情報処理装置１の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Digital Versatile Disk）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００７１】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００７２】
１…情報処理装置、２…配信サーバ、３…認証サーバ、１１…ＣＰＵ、１２…プログラム記憶部、１３…データ記憶部、１４…デバイス固有情報記憶部、１５…操作部、１６…表示部、１７…通信部、２１…メモリ保護部、２２…鍵識別情報生成部、２３…鍵識別情報暗号化部、２４…鍵生成部、２５…鍵暗号化部、２６…鍵情報送信部、３１…被検証鍵識別情報生成部、３２…鍵識別情報検証部、３３…エラー処理実行部、３４…認証処理実行部、４０…レジスタ保護部、ＡｒｅａＤ…データ領域、Ｋａ…第１の鍵、ＳＥ…プログラム
【図１】
0006357091.tif 000002
【図２】
0006357091.tif 000003
【図３】
0006357091.tif 000004
【図４】
0006357091.tif 000005
【図５】
0006357091.tif 000006
【図６】
0006357091.tif 000007
【図７】
0006357091.tif 000008
【図８】
0006357091.tif 000009
【図９】
0006357091.tif 000010