(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
一般的に、ソフトウェアは複数の情報処理装置に対して共通化される。このため、セキュアエレメントを構成するソフトウェアも、複数の情報処理装置に対して共通化されることが好ましい。しかし、ハードウェアで構成されるSIMカードやTPM等のセキュアエレメントは、自己に固有の鍵を例えば製造時から格納し、認証サーバ等の他の装置との間で鍵を共有することができるが、セキュアエレメントを構成するソフトウェアが複数の情報処理装置に対して共通化される場合には、情報処理装置へソフトウェアを配信する前から、情報処理装置に固有の鍵をソフトウェアに格納することができない。
【0006】
このため、セキュアエレメントを構成するソフトウェアが複数の情報処理装置に対して共通化される場合、セキュアエレメントを構成するソフトウェアを実行する情報処理装置が、セキュアエレメントにより鍵を生成し、生成された鍵を情報処理装置以外の他の装置との間で共有することが要求される。
【0007】
本発明は、このような事情を考慮してなされたものであり、セキュアエレメントを構成するソフトウェアを実行する情報処理装置が、セキュアエレメントにより鍵を生成し、生成された鍵を情報処理装置以外の他の装置との間で共有することができる、情報処理装置、及びコンピュータプログラムを提供することを課題とする。
【課題を解決するための手段】
【0008】
(1)本発明の一態様は、デバイス固有情報を記憶するデバイス固有情報記憶部と、第1の鍵が格納され且つ前記第1の鍵が難読化されているコンピュータプログラムを記憶するプログラム記憶部と、データを記憶するデータ記憶部と、前記データ記憶部を使用して前記コンピュータプログラムを実行する演算処理部と、を備え、前記コンピュータプログラムは、前記演算処理部からアクセスする前記データ記憶部内の記憶場所の偏りを減らすメモリ保護ステップと、前記デバイス固有情報から鍵識別情報を生成する鍵識別情報生成ステップと、前記第1の鍵を使用して前記鍵識別情報を暗号化し、生成された暗号化鍵識別情報を前記コンピュータプログラムのデータ領域に格納する鍵識別情報暗号化ステップと、第2の鍵を生成する鍵生成ステップと、前記第1の鍵を使用して前記第2の鍵を暗号化し、生成された暗号化鍵を前記コンピュータプログラムのデータ領域に格納する鍵暗号化ステップと、前記暗号化鍵識別情報と前記暗号化鍵とを、前記第1の鍵を有するサーバ装置へ送信する鍵情報送信ステップと、を前記演算処理部に実行させる、情報処理装置である。
(2)本発明の一態様は、上記(1)の情報処理装置において、前記コンピュータプログラムは、所定の時機に前記デバイス固有情報から被検証鍵識別情報を生成する被検証鍵識別情報生成ステップと、前記第1の鍵と前記コンピュータプログラムのデータ領域に格納される暗号化鍵識別情報とを使用して前記被検証鍵識別情報を検証する鍵識別情報検証ステップと、前記被検証鍵識別情報の検証が失敗した場合に所定のエラー処理を実行するエラー処理実行ステップと、を前記演算処理部に実行させる、情報処理装置である。
(3)本発明の一態様は、上記(2)の情報処理装置において、前記コンピュータプログラムは、前記被検証鍵識別情報の検証が成功した場合に前記サーバ装置との間で認証処理を実行する認証処理実行ステップ、を前記演算処理部に実行させる、情報処理装置である。
(4)本発明の一態様は、上記(1)から(3)のいずれかの情報処理装置において、前記演算処理部は、データを一時的に保持するレジスタを有し、前記データ記憶部及び前記レジスタを使用して前記コンピュータプログラムを実行し、前記コンピュータプログラムは、マスク値を使用してデータをマスクし、マスクされたデータを前記レジスタに書き込み、前記レジスタに保持されるマスクされたデータ同士の演算を実行し、実行された演算の結果に対してマスクを解除するレジスタ保護ステップ、を前記演算処理部に実行させる、情報処理装置である。
【0009】
(5)本発明の一態様は、第1の鍵が格納され且つ前記第1の鍵が難読化されているコンピュータプログラムであり、コンピュータに、前記コンピュータがアクセスするデータ記憶部内の記憶場所の偏りを減らすメモリ保護ステップと、前記コンピュータが有するデバイス固有情報から鍵識別情報を生成する鍵識別情報生成ステップと、前記第1の鍵を使用して前記鍵識別情報を暗号化し、生成された暗号化鍵識別情報を前記コンピュータプログラムのデータ領域に格納する鍵識別情報暗号化ステップと、第2の鍵を生成する鍵生成ステップと、前記第1の鍵を使用して前記第2の鍵を暗号化し、生成された暗号化鍵を前記コンピュータプログラムのデータ領域に格納する鍵暗号化ステップと、前記暗号化鍵識別情報と前記暗号化鍵とを、前記第1の鍵を有するサーバ装置へ送信する鍵情報送信ステップと、を実行させるためのコンピュータプログラムである。
(6)本発明の一態様は、上記(5)のコンピュータプログラムにおいて、所定の時機に前記デバイス固有情報から被検証鍵識別情報を生成する被検証鍵識別情報生成ステップと、前記第1の鍵と前記コンピュータプログラムのデータ領域に格納される暗号化鍵識別情報とを使用して前記被検証鍵識別情報を検証する鍵識別情報検証ステップと、前記被検証鍵識別情報の検証が失敗した場合に所定のエラー処理を実行するエラー処理実行ステップと、を前記コンピュータに実行させるためのコンピュータプログラムである。
(7)本発明の一態様は、上記(6)のコンピュータプログラムにおいて、前記被検証鍵識別情報の検証が成功した場合に前記サーバ装置との間で認証処理を実行する認証処理実行ステップ、を前記コンピュータに実行させるためのコンピュータプログラムである。
(8)本発明の一態様は、上記(5)から(7)のいずれかのコンピュータプログラムにおいて、前記コンピュータは、データを一時的に保持するレジスタを有し、前記コンピュータプログラムは、マスク値を使用してデータをマスクし、マスクされたデータを前記レジスタに書き込み、前記レジスタに保持されるマスクされたデータ同士の演算を実行し、実行された演算の結果に対してマスクを解除するレジスタ保護ステップ、を前記コンピュータに実行させるためのコンピュータプログラムである。
【発明の効果】
【0010】
本発明によれば、セキュアエレメントを構成するソフトウェアを実行する情報処理装置が、セキュアエレメントにより鍵を生成し、生成された鍵を情報処理装置以外の他の装置との間で共有することができる。
【発明を実施するための形態】
【0012】
以下、図面を参照し、本発明の実施形態について説明する。
【0013】
[第1実施形態]
図1は、本発明の第1実施形態に係る認証システムを示す構成図である。
図1において、情報処理装置1は、コンピュータプログラムを実行するコンピュータである。配信サーバ2は、情報処理装置1へ、プログラムSEを配信する。プログラムSEはコンピュータプログラムである。プログラムSEは、情報処理装置1にインストールされる。
【0014】
プログラムSEは、通信回線を介して、配信サーバ2から情報処理装置1へ送信されてもよい。通信回線は、有線通信回線であってもよく、又は、無線通信回線であってもよい。プログラムSEは、コンピュータが読み取り可能な記録媒体に記録され、当該記録媒体から情報処理装置1に読み取られてもよい。
【0015】
プログラムSEは、第1の鍵Kaを格納する。第1の鍵Kaは、プログラムSEの中で難読化されている。第1の鍵KaはプログラムSEのソースコード中に格納される。第1の鍵Kaを難読化するために、プログラムSEのソースコードにおいて、変数名の変更、ダミー変数の追加、関数名の変更などが行われる。これにより、プログラムSEがコンパイルされたデータを逆コンパイルしても、逆コンパイルされたデータから第1の鍵Kaを取得することが困難になる。さらに、プログラムSEのソースコードにおいて、文字列の暗号化、プログラムロジックの変更を行ってもよい。これにより、さらに、第1の鍵KaをプログラムSEから取得することが困難になる。コンピュータプログラムの難読化技術については、例えば非特許文献3に記載される。
【0016】
プログラムSEはデータ領域AreaDを有する。
【0017】
配信サーバ2は、第1の鍵Kaを認証サーバ3へ送信する。認証サーバ3は第1の鍵Kaを保持する。これにより、第1の鍵Kaは、プログラムSEを保持する情報処理装置1と、認証サーバ3との間で共有される。情報処理装置1と認証サーバ3とは、通信回線を介してデータを送受する。通信回線は、有線通信回線であってもよく、又は、無線通信回線であってもよい。
【0018】
図2は、本発明の第1実施形態に係る情報処理装置1を示すハードウェア構成図である。
図2において、情報処理装置1は、CPU_11(演算処理部)と、プログラム記憶部12と、データ記憶部13と、デバイス固有情報記憶部14と、操作部15と、表示部16と、通信部17とを備える。これら各部はデータを交換できるように構成される。
【0019】
CPU_11は、コンピュータプログラムを実行する。プログラム記憶部12は、CPU_11によって実行されるコンピュータプログラムを記憶する。プログラム記憶部12は、プログラムSEを記憶する。データ記憶部13はデータを記憶する。CPU_11は、データ記憶部13にアクセスする。CPU_11は、データ記憶部13を使用してコンピュータプログラムを実行する。デバイス固有情報記憶部14は、デバイス固有情報を記憶する。
【0020】
操作部15は、キーボード、テンキー、マウス等の入力デバイスから構成され、利用者の操作に応じたデータ入力を行う。表示部16は、液晶表示装置等の表示デバイスから構成され、データ表示を行う。また、データ入力とデータ表示の両方が可能なタッチパネルを備えてもよい。
【0021】
通信部17は、通信ネットワークを介して他の装置と通信する。通信ネットワークを介して通信する方法として、携帯電話ネットワークや無線LAN(Local Area Network)等の無線通信ネットワークを利用して通信する方法、公衆電話ネットワークなどの有線通信ネットワークを利用して通信する方法などが挙げられる。
【0022】
情報処理装置1として、汎用のコンピュータ装置を使用してもよく、又は、専用のハードウェア装置として構成してもよい。また、情報処理装置1として、スマートフォン等の携帯通信端末装置、タブレット型のコンピュータ装置、据置き型のパーソナルコンピュータ装置などを使用してもよい。
【0023】
デバイス固有情報として、情報処理装置1の製造番号、情報処理装置1のハードウェア識別番号、情報処理装置1のOS(Operating System)又はアプリケーションソフトウェアが発生する情報処理装置1に固有の値、情報処理装置1が専用的に使用する通信回線に関する識別番号などが挙げられる。ハードウェア識別番号として、例えばMAC(Media Access Control)アドレスが挙げられる。OSが発生する情報処理装置1に固有の値として、同一アプリケーションソフトウェアの開発で同一デバイスである時に発生する同一の値を利用することが挙げられる。情報処理装置1として携帯通信端末装置を使用する場合、デバイス固有情報として、携帯通信端末装置の電話番号を利用することが挙げられる。情報処理装置1として携帯通信端末装置を使用する場合、デバイス固有情報として、携帯通信端末装置のSIMカードに格納される加入者情報を利用することが挙げられる。
【0024】
なお、操作部15及び表示部16については、情報処理装置1とは別個に設けてもよい。例えば、情報処理装置1が、通信回線を介して、情報処理装置1の外部に設けられた入力デバイスや表示デバイスと接続してもよい。また、通信部17は、情報処理装置1とは別個に設けてもよい。例えば、情報処理装置1として据置き型のパーソナルコンピュータ装置を使用し、パーソナルコンピュータ装置が、パーソナルコンピュータ装置とは別個の携帯通信端末装置を使用して通信するようにしてもよい。
【0025】
図3は、本発明の第1実施形態に係る情報処理装置1を示す機能構成図である。
図3に示される各部の機能は、
図2に示すCPU_11がプログラム記憶部12に記憶されるプログラムSEを実行することにより実現される。
図3において、情報処理装置1は、メモリ保護部21と、鍵識別情報生成部22と、鍵識別情報暗号化部23と、鍵生成部24と、鍵暗号化部25と、鍵情報送信部26と、を備える。
【0026】
メモリ保護部21は、CPU_11からアクセスするデータ記憶部13内の記憶場所の偏りを減らすメモリ保護処理を実行する。鍵識別情報生成部22は、デバイス固有情報記憶部14に記憶されるデバイス固有情報から鍵識別情報を生成する。鍵識別情報暗号化部23は、第1の鍵Kaを使用して鍵識別情報を暗号化し、暗号化鍵識別情報を生成する。鍵識別情報暗号化部23は、生成された暗号化鍵識別情報をプログラムSEのデータ領域AreaDに格納する。
【0027】
鍵生成部24は、第2の鍵を生成する。鍵暗号化部25は、第1の鍵Kaを使用して第2の鍵を暗号化し、暗号化鍵を生成する。鍵暗号化部25は、生成された暗号化鍵をプログラムSEのデータ領域AreaDに格納する。鍵情報送信部26は、暗号化鍵識別情報と暗号化鍵とを、通信部17により認証サーバ3へ送信する。認証サーバ3は、第1の鍵Kaを有する。
【0028】
次に、
図4を参照して、第1実施形態に係る情報処理装置1の動作を説明する。
図4は、本発明の第1実施形態に係る鍵共有処理を示すフローチャートである。
【0029】
(ステップS1)鍵識別情報生成部22は、デバイス固有情報記憶部14に記憶されるデバイス固有情報Uidから鍵識別情報を生成する。ここでは、鍵識別情報の生成方法の例として、ハッシュ関数を使用してハッシュ値を生成する。ハッシュ関数として、例えばSHA−2(256bit)を使用する。鍵識別情報生成部22は、ハッシュ関数「SHA−2(256bit)」を使用して、デバイス固有情報Uidからハッシュ値hash(Uid)を生成する。ハッシュ値hash(Uid)が鍵識別情報となる。
【0030】
(ステップS2)鍵識別情報暗号化部23は、第1の鍵Kaを使用して鍵識別情報hash(Uid)を暗号化し、暗号化鍵識別情報Ka(hash(Uid))を生成する。鍵識別情報暗号化部23は、生成された暗号化鍵識別情報Ka(hash(Uid))をプログラムSEのデータ領域AreaDに格納する。
【0031】
(ステップS3)鍵生成部24は、第2の鍵を生成する。ここでは、第2の鍵の生成方法として、乱数を発生する。鍵生成部24は、乱数r_keyを発生する。
【0032】
(ステップS4)鍵暗号化部25は、第1の鍵Kaを使用して、第2の鍵である乱数r_keyを暗号化し、暗号化鍵Ka(r_key)を生成する。鍵暗号化部25は、生成された暗号化鍵Ka(r_key)をプログラムSEのデータ領域AreaDに格納する。
【0033】
(ステップS5)鍵情報送信部26は、暗号化鍵識別情報Ka(hash(Uid))と暗号化鍵Ka(r_key)とを、通信部17により認証サーバ3へ送信する。
【0034】
認証サーバ3は、情報処理装置1から、暗号化鍵識別情報Ka(hash(Uid))と暗号化鍵Ka(r_key)と受信する。認証サーバ3は、情報処理装置1から受信された暗号化鍵識別情報Ka(hash(Uid))を、自己が保持する第1の鍵Kaで復号し、鍵識別情報hash(Uid)を取得する。認証サーバ3は、情報処理装置1から受信された暗号化鍵Ka(r_key)を、自己が保持する第1の鍵Kaで復号し、第2の鍵r_keyを取得する。認証サーバ3は、復号結果である鍵識別情報hash(Uid)と第2の鍵r_keyとを関連付けて保持する。これにより、第2の鍵r_keyは、情報処理装置1と認証サーバ3との間で共有される。
【0035】
上述した
図4の鍵共有処理において、CPU_11がデータ記憶部13にアクセスする際には、メモリ保護部21がメモリ保護処理を実行する。メモリ保護処理によって、CPU_11からアクセスするデータ記憶部13内の記憶場所の偏りが減る。これにより、データ記憶部13へのアクセスのパターン(例えば、メモリへアクセスする際のアドレスパターン)を特定することが困難になる。この結果として、データ記憶部13へのアクセスが解析されることによって第1の鍵Kaに関する処理が特定されること、を防止できる。
【0036】
上述した第1実施形態によれば、情報処理装置1がプログラムSEを実行することによって、メモリ保護部21の機能が実現される。メモリ保護部21がメモリ保護処理を実行することによって、セキュアエレメントが構成される。情報処理装置1は、CPU_11がプログラムSEを実行することによって構成されたセキュアエレメントにより第2の鍵r_keyを生成し、生成された第2の鍵r_keyを情報処理装置1以外の他の装置である認証サーバ3との間で共有することができる。
【0037】
[第2実施形態]
本発明の第2実施形態を説明する。第2実施形態に係る認証システムの構成は、上述した
図1の構成と同じである。
【0038】
図5は、本発明の第2実施形態に係る情報処理装置1を示すハードウェア構成図である。
図5において、
図2の各部に対応する部分には同一の符号を付け、その説明を省略する。第2実施形態に係る情報処理装置1の構成は、上述した
図2の構成と同じである。但し、プログラムSEのデータ領域AreaDは、暗号化鍵識別情報Ka(hash(Uid))及び暗号化鍵Ka(r_key)を格納する。暗号化鍵識別情報Ka(hash(Uid))は、上述した第1実施形態における
図4のステップS2で生成されてプログラムSEのデータ領域AreaDに格納される。暗号化鍵Ka(r_key)は、上述した第1実施形態における
図4のステップS4で生成されてプログラムSEのデータ領域AreaDに格納される。
【0039】
上述した
図4の鍵共有処理は、1回のみ実行される。プログラムSEは、
図4の鍵共有処理を実行済みであることを示す履歴情報を有する。プログラムSEは、履歴情報がある場合には
図4の鍵共有処理を実行しないように、構成される。ある情報処理装置1(A)にインストールされたプログラムSEが情報処理装置1(A)で実行されると、プログラムSEは、
図4の鍵共有処理を実行済みであることを示す履歴情報を生成し、生成した履歴情報を自己で保持する。これにより、情報処理装置1(A)で再度、プログラムSEが実行されても、履歴情報があるので、
図4の鍵共有処理は実行されない。したがって、情報処理装置1(A)で保持されるプログラムSEのデータ領域AreaDに格納される暗号化鍵識別情報Ka(hash(Uid))及び暗号化鍵Ka(r_key)は変更されない。
【0040】
例えば、ある情報処理装置1(A)にインストールされたプログラムSEが情報処理装置1(A)で実行された後にコピーされ、プログラムSEのコピーが他の情報処理装置1(B)にインストールされたとする。この場合、情報処理装置1(B)にインストールされたプログラムSEは、情報処理装置1(A)のデバイス固有情報Uidから生成された暗号化鍵識別情報Ka(hash(Uid))をデータ領域AreaDに格納すると共に、履歴情報を有する。これにより、情報処理装置1(B)では、履歴情報によって、
図4の鍵共有処理が実行されない。このため、情報処理装置1(B)に保持されるプログラムSEのデータ領域AreaDは、情報処理装置1(A)のデバイス固有情報Uidから生成された暗号化鍵識別情報Ka(hash(Uid))を格納したままとなる。
【0041】
図6は、本発明の第2実施形態に係る情報処理装置1を示す機能構成図である。
図6に示される各部の機能は、
図5に示すCPU_11がプログラム記憶部12に記憶される第2実施形態のプログラムSEを実行することにより実現される。
図6において、
図3の各部に対応する部分には同一の符号を付け、その説明を省略する。
図6に示される情報処理装置1は、
図3に示される情報処理装置1に対して、さらに、被検証鍵識別情報生成部31と、鍵識別情報検証部32と、エラー処理実行部33と、認証処理実行部34と、を備える。
【0042】
被検証鍵識別情報生成部31は、所定の時機に、デバイス固有情報記憶部14に記憶されるデバイス固有情報から被検証鍵識別情報を生成する。鍵識別情報検証部32は、第1の鍵KaとプログラムSEのデータ領域AreaDに格納される暗号化鍵識別情報とを使用して、被検証鍵識別情報を検証する。エラー処理実行部33は、鍵識別情報検証部32による被検証鍵識別情報の検証が失敗した場合に、所定のエラー処理を実行する。認証処理実行部34は、鍵識別情報検証部32による被検証鍵識別情報の検証が成功した場合に、認証サーバ3との間で認証処理を実行する。
【0043】
次に、
図7を参照して、第2実施形態に係る情報処理装置1の動作を説明する。
図7は、本発明の第2実施形態に係る認証処理を示すフローチャートである。
【0044】
(ステップS11)被検証鍵識別情報生成部31は、所定の時機に、デバイス固有情報記憶部14に記憶されるデバイス固有情報Uid’から被検証鍵識別情報を生成する。該所定の時機として、プログラムSEの起動時が挙げられる。被検証鍵識別情報生成部31は、例えば、プログラムSEの起動時に毎回、デバイス固有情報記憶部14に記憶されるデバイス固有情報Uid’から被検証鍵識別情報を生成する。
【0045】
被検証鍵識別情報の生成方法は、鍵識別情報生成部22による鍵識別情報の生成方法と同じである。ここでは、鍵識別情報及び被検証鍵識別情報の生成方法の例として、ハッシュ関数を使用してハッシュ値を生成する。被検証鍵識別情報生成部31は、例えばプログラムSEの起動時に、デバイス固有情報記憶部14に記憶されるデバイス固有情報Uid’からハッシュ値hash(Uid’)を生成する。ハッシュ値hash(Uid’)が被検証鍵識別情報となる。
【0046】
(ステップS12)鍵識別情報検証部32は、第1の鍵KaとプログラムSEのデータ領域AreaDに格納される暗号化鍵識別情報Ka(hash(Uid))とを使用して、被検証鍵識別情報hash(Uid’)を検証する。この検証方法として以下の例1,2が挙げられる。
【0047】
(検証方法の例1)鍵識別情報検証部32は、第1の鍵Kaを使用して被検証鍵識別情報hash(Uid’)を暗号化し、暗号化被検証鍵識別情報Ka(hash(Uid’))を生成する。鍵識別情報検証部32は、生成された暗号化被検証鍵識別情報Ka(hash(Uid’))と、プログラムSEのデータ領域AreaDに格納される暗号化鍵識別情報Ka(hash(Uid))とを比較する。この比較の結果、両者が一致した場合は被検証鍵識別情報hash(Uid’)の検証が成功である。一方、両者が不一致した場合は被検証鍵識別情報hash(Uid’)の検証が失敗である。
【0048】
(検証方法の例2)鍵識別情報検証部32は、第1の鍵Kaを使用して、プログラムSEのデータ領域AreaDに格納される暗号化鍵識別情報Ka(hash(Uid))を復号化する。鍵識別情報検証部32は、暗号化鍵識別情報Ka(hash(Uid))の復号結果と、被検証鍵識別情報hash(Uid’)とを比較する。この比較の結果、両者が一致した場合は被検証鍵識別情報hash(Uid’)の検証が成功である。一方、両者が不一致した場合は被検証鍵識別情報hash(Uid’)の検証が失敗である。
【0049】
被検証鍵識別情報hash(Uid’)の検証が失敗する場合として、ある情報処理装置1(A)にインストールされたプログラムSEがコピーされ、プログラムSEのコピーが他の情報処理装置1(B)にインストールされた場合が挙げられる。この場合、情報処理装置1(B)にインストールされたプログラムSEのデータ領域AreaDは、情報処理装置1(A)のデバイス固有情報Uidから生成された暗号化鍵識別情報Ka(hash(Uid))を格納する。一方、上述したステップS11では、情報処理装置1(B)のデバイス固有情報Uid’から、被検証鍵識別情報hash(Uid’)が生成される。情報処理装置1(A)のデバイス固有情報Uidと情報処理装置1(B)のデバイス固有情報Uid’とは異なる。これにより、上述したステップS12において、プログラムSEのデータ領域AreaDに格納される暗号化鍵識別情報Ka(hash(Uid))に基づく被検証鍵識別情報hash(Uid’)の検証が失敗する。
【0050】
プログラムSEのデータ領域AreaDに格納される暗号化鍵識別情報Ka(hash(Uid))が生成された情報処理装置1と、被検証鍵識別情報hash(Uid’)が生成された情報処理装置1と、が同一である場合には、上述したステップS12において、プログラムSEのデータ領域AreaDに格納される暗号化鍵識別情報Ka(hash(Uid))に基づく被検証鍵識別情報hash(Uid’)の検証が成功する。これは、プログラムSEのデータ領域AreaDに格納される暗号化鍵識別情報Ka(hash(Uid))と、被検証鍵識別情報hash(Uid’)とが、同じデバイス固有情報「Uid=Uid’」から生成されたからである。
【0051】
(ステップS13)ステップS12の検証結果が成功である場合にはステップS14に進む。一方、ステップS12の検証結果が失敗である場合にはステップS15に進む。
【0052】
(ステップS14)認証処理実行部34は、プログラムSEのデータ領域AreaDに格納される暗号化鍵識別情報Ka(hash(Uid))を通信部17により認証サーバ3へ送信し、認証サーバ3に対して認証要求を行う。認証サーバ3は、情報処理装置1から受信された暗号化鍵識別情報Ka(hash(Uid))を、自己が保持する第1の鍵Kaで復号し、鍵識別情報hash(Uid)を取得する。認証サーバ3は、取得された鍵識別情報hash(Uid)に基づいて、自己が保持する第2の鍵r_keyを取得する。これにより、認証サーバ3と認証処理実行部34とは、両者で共有される第2の鍵r_keyを使用して認証処理を実行する。この認証処理の例として、チャレンジ・レスポンス方法が挙げられる。
【0053】
チャレンジ・レスポンス方法では、まず、認証サーバ3が乱数Rを発生する。認証サーバ3は、チャレンジ値として乱数Rを情報処理装置1へ送信する。情報処理装置1において、認証処理実行部34は、通信部17により認証サーバ3からのチャレンジ値Rを受信する。認証処理実行部34は、プログラムSEのデータ領域AreaDに格納される暗号化鍵Ka(r_key)を第1の鍵Kaで復号化し、第2の鍵r_keyを取得する。認証処理実行部34は、第2の鍵r_keyを使用してチャレンジ値Rを暗号化し、暗号化チャレンジ値r_key(R)を生成する。認証処理実行部34は、通信部17により、レスポンス値として暗号化チャレンジ値r_key(R)を認証サーバ3へ送信する。認証サーバ3は、情報処理装置1から受信された暗号化チャレンジ値r_key(R)を、自己が保持する第2の鍵r_keyで復号化する。認証サーバ3は、暗号化チャレンジ値r_key(R)の復号結果と、チャレンジ値Rとを比較する。該比較結果が一致である場合、情報処理装置1の認証は成功である。一方、該比較結果が不一致である場合、情報処理装置1の認証は失敗である。
【0054】
(ステップS15)エラー処理実行部33は、ステップS12の検証結果が失敗である場合に、所定のエラー処理を実行する。所定のエラー処理として、例えば、CPU_11によるプログラムの実行を全て又は一部を停止させることが挙げられる。
【0055】
上述した第2実施形態によれば、ある情報処理装置1(A)にインストールされたプログラムSEがコピーされ、プログラムSEのコピーが他の情報処理装置1(B)にインストールされたことを検出することができる。これにより、ソフトウェアのコピーを使用したなりすましを防止する効果が得られる。
【0056】
[第3実施形態]
本発明の第3実施形態を説明する。第3実施形態に係る認証システムの構成は、上述した
図1の構成と同じである。第3実施形態に係る情報処理装置1のハードウェア構成は、上述した
図2又は
図5の構成と同じである。第3実施形態では、上述した第1実施形態又は第2実施形態の情報処理装置1の機能構成に対して、さらに、レジスタ保護部を追加する。以下、第2実施形態の情報処理装置1の機能構成に対してレジスタ保護部を追加する場合を例に挙げて説明するが、第1実施形態の情報処理装置1の機能構成に対してレジスタ保護部を追加する場合も同様である。
【0057】
図8は、本発明の第3実施形態に係る情報処理装置1を示す機能構成図である。
図8に示される各部の機能は、
図5に示すCPU_11がプログラム記憶部12に記憶される第3実施形態のプログラムSEを実行することにより実現される。
図8において、
図6の各部に対応する部分には同一の符号を付け、その説明を省略する。
図8に示される情報処理装置1は、
図6に示される情報処理装置1に対して、さらに、レジスタ保護部40を備える。
【0058】
レジスタ保護部40は、秘匿したいデータがCPU_11内のレジスタから取得されないように保護するレジスタ保護処理を実行する。CPU_11内のレジスタはデータを一時的に保持する。CPU_11は、CPU_11内のレジスタを使用してコンピュータプログラムを実行する。CPU_11内のレジスタで保持されるデータは、デバッガなどのツールを用いることにより、外部から取得できる。このため、秘匿したいデータについては、レジスタ保護処理によって、レジスタ上に現れないようにする。
【0059】
レジスタ保護部40が実行するレジスタ保護処理を説明する。レジスタ保護部40は、マスク値を使用してデータをマスクし、マスクされたデータをレジスタに書き込む。レジスタ保護部40は、レジスタに保持されるマスクされたデータ同士の演算を実行し、実行された演算の結果に対してマスクを解除する。このレジスタ保護処理によって、秘匿したいデータがレジスタ上に現れないようにする。
【0060】
上述した第3実施形態によれば、レジスタ保護処理によって、秘匿したいデータがCPU_11内のレジスタから取得されることを防止できる。これにより、情報処理装置1において、CPU_11がプログラムSEを実行することによって構成されるセキュアエレメントの耐タンパー性の向上を図ることができる。
【0061】
なお、第1実施形態の情報処理装置1の機能構成に対してレジスタ保護部を追加する場合、上述した
図3に示される構成に対して、さらにレジスタ保護部40が追加される。
【0062】
[メモリ保護処理の例]
図9を参照して、メモリ保護部21が実行するメモリ保護処理の例を説明する。
図9は、メモリ保護処理の例を示す説明図である。
【0063】
(ステップS20)メモリ保護部21は、データ記憶部13の記憶領域内に履歴101の領域とバッファ102の領域とを生成する。
【0064】
(ステップS21)メモリ保護部21は、アクセス対象のデータが履歴101又はバッファ102に格納されているかを確認する。
【0065】
(ステップS22)メモリ保護部21は、ステップS21の確認の結果、アクセス対象のデータがバッファ102に格納されていない場合、アクセス対象のデータをバッファ102にコピーする。メモリ保護部21は、ステップS21の確認の結果、アクセス対象のデータが履歴101に格納されている場合、アクセス対象のデータを履歴101からバッファ102にコピーする。
【0066】
(ステップS23,S24)メモリ保護部21は、バッファ102に格納されるアクセス対象のデータにアクセスする。該アクセスの際に、メモリ保護部21は、データ記憶部13の記憶領域の中から無作為に選択した記憶場所へのアクセスを追加する。該アクセスの際に、メモリ保護部21は、履歴101に格納されるデータの記憶場所へのアクセスを追加する。メモリ保護部21は、アクセスしたデータ及び記憶場所の組を履歴101に格納する。
【0067】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【0068】
上述した実施形態では、情報処理装置1は第2の鍵r_keyを、認証サービスを提供する認証サーバ3との間で共有したが、第2の鍵r_keyを共有する他の装置は認証サービス以外の他のサービスを提供するサーバ装置であってもよい。情報処理装置1と第2の鍵r_keyを共有するサーバ装置として、例えば、電子商取引サービスを提供するサーバ装置、動画データ等のコンテンツを配信するサーバ装置、クレジットカード等による決済サービスを提供するサーバ装置などが挙げられる。
【0069】
プログラムSEは、他のアプリケーションソフトウェアに組み込まれていてもよい。
【0070】
また、上述した情報処理装置1の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVD(Digital Versatile Disk)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【0071】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。