(57)【要約】【課題】ステータスレジスタ値の固定攻撃に対する耐性を有する認証装置を提供すること。【解決手段】互いに異なる第１又は第２のビット値が格納されるレジスタと、入力情報と当該入力情報に対応する認証情報とが一致するか否かを判定して、当該判定結果が真の場合にレジスタに第１のビット値を格納し、偽の場合にレジスタに第２のビット値を格納する第１の判定処理部と、入力情報と当該入力情報に対応する認証情報とが不一致であるか否かを判定して、当該判定結果が真の場合にレジスタに第１のビット値を格納し、偽の場合にレジスタに第２のビット値を格納する第２の判定処理部と、第１の判定処理部による判定処理でレジスタに第１のビット値が格納され、各第２の判定処理部による判定処理でレジスタに第２のビット値が格納された場合に認証成立と判定する認証装置が提供される。【選択図】図４
2010250374.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なる第１又は第２のビット値が格納されるレジスタと、
入力情報と当該入力情報に対応する認証情報とが一致するか否かを判定して、当該判定結果が真の場合に前記レジスタに第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納するｍ個（１≦ｍ≦Ｎ−１、Ｎ≧２）の第１の判定処理部と、
入力情報と当該入力情報に対応する認証情報とが不一致であるか否かを判定して、当該判定結果が真の場合に前記レジスタに第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納する（Ｎ−ｍ）個の第２の判定処理部と、
全ての前記第１の判定処理部による判定処理で前記レジスタに第１のビット値が格納され、全ての前記各第２の判定処理部による判定処理で前記レジスタに第２のビット値が格納された場合に認証成立と判定する認証判定部と、
を備える、認証装置。
【請求項２】
判定処理の実行命令と当該実行命令に対する入力データが入力された場合に、当該入力データを用いて前記実行命令を実行した結果が真の場合に前記レジスタに第１のビット値を格納し、偽の場合に前記第２のビット値を格納する演算処理回路を備え、
前記第１の判定処理部は、前記演算処理回路に対し、２つの入力データに対する一致判定処理の実行命令と、当該入力データとして前記入力情報及び当該入力情報に対応する認証情報とを入力することで前記レジスタに前記第１又は第２のビット値を格納し、
前記第２の判定処理部は、前記演算処理回路に対し、２つの入力データに対する不一致判定処理の実行命令と、当該入力データとして前記入力情報及び当該入力情報に対応する認証情報とを入力することで前記レジスタに前記第１又は第２のビット値を格納する、請求項１に記載の認証装置。
【請求項３】
アプリケーションプログラムの実行環境を形成するための第１のプログラムを認証するために用いる第１の認証情報と、前記アプリケーションプログラムの認証に用いる第２の認証情報とが格納された記憶部をさらに備え、
前記第１の判定処理部は、実行対象の前記第１のプログラムから前記入力情報として得られる認証用の情報と前記記憶部に格納された第１の認証情報とが一致するか否かを判定して前記レジスタに第１又は第２のビット値を格納し、
前記第２の判定処理部は、実行対象の前記第２のプログラムから前記入力情報として得られる認証用の情報と前記記憶部に格納された第２の認証情報とが不一致であるか否かを判定して前記レジスタに第１又は第２のビット値を格納する、請求項１又は２に記載の認証装置。
【請求項４】
アプリケーションプログラムの実行環境を形成するための第１のプログラムを認証するために用いる第１の認証情報と、前記アプリケーションプログラムの認証に用いる第２の認証情報とが格納された記憶部をさらに備え、
前記第２の判定処理部は、実行対象の前記第１のプログラムから前記入力情報として得られる認証用の情報と前記記憶部に格納された第１の認証情報とが不一致であるか否かを判定して前記レジスタに第１又は第２のビット値を格納し、
前記第１の判定処理部は、実行対象の前記第２のプログラムから前記入力情報として得られる認証用の情報と前記記憶部に格納された第２の認証情報とが一致するか否かを判定して前記レジスタに第１又は第２のビット値を格納する、請求項１又は２に記載の認証装置。
【請求項５】
外部機器との間の認証処理に利用する第１の認証情報と、前記外部機器を介したユーザ認証に利用する第２の認証情報とが格納される記憶部をさらに備え、
前記第１の判定処理部は、前記外部機器から入力された入力情報と前記記憶部に格納された第１の認証情報とが一致するか否かを判定して前記レジスタに第１又は第２のビット値を格納し、
前記第２の判定処理部は、前記外部機器を介してユーザにより入力された入力情報と前記記憶部に格納された第２の認証情報とが不一致であるか否かを判定して前記レジスタに第１又は第２のビット値を格納する、請求項１又は２に記載の認証装置。
【請求項６】
外部機器との間の認証処理に利用する第１の認証情報と、前記外部機器を介したユーザ認証に利用する第２の認証情報とが格納される記憶部をさらに備え、
前記第１の判定処理部は、前記外部機器を介してユーザにより入力された入力情報と前記記憶部に格納された第２の認証情報とが一致するか否かを判定して前記レジスタに第１又は第２のビット値を格納し、
前記第２の判定処理部は、前記外部機器から入力された入力情報と前記記憶部に格納された第１の認証情報とが不一致であるか否かを判定して前記レジスタに第１又は第２のビット値を格納する、請求項１又は２に記載の認証装置。
【請求項７】
入力情報と当該入力情報に対応する認証情報とが一致するか否かを判定して、互いに異なる第１又は第２のビット値が格納されるレジスタに対し、当該判定結果が真の場合に第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納する第１の判定処理ステップをｍ回（１≦ｍ≦Ｎ−１、Ｎ≧２）実行するステップと、
入力情報と当該入力情報に対応する認証情報とが不一致であるか否かを判定し、当該判定結果が真の場合に前記レジスタに第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納する第２の判定処理ステップを（Ｎ−ｍ）回実行するステップと、
全ての前記第１の判定処理ステップによる判定処理で前記レジスタに第１のビット値が格納され、全ての前記各第２の判定処理部による判定処理で前記レジスタに第２のビット値が格納された場合に認証成立と判定する認証判定ステップと、
を含む、認証処理方法。
【請求項８】
入力情報と当該入力情報に対応する認証情報とが一致するか否かを判定して、互いに異なる第１又は第２のビット値が格納されるレジスタに対し、当該判定結果が真の場合に第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納する第１の判定処理ステップをｍ回（１≦ｍ≦Ｎ−１、Ｎ≧２）実行するステップと、
入力情報と当該入力情報に対応する認証情報とが不一致であるか否かを判定し、当該判定結果が真の場合に前記レジスタに第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納する第２の判定処理ステップを（Ｎ−ｍ）回実行するステップと、
全ての前記第１の判定処理ステップによる判定処理で前記レジスタに第１のビット値が格納され、全ての前記各第２の判定処理部による判定処理で前記レジスタに第２のビット値が格納された場合に認証成立と判定する認証判定ステップと、
をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証装置、認証方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ネットワーク環境の普及に伴い、パーソナルコンピュータ（以下、ＰＣ）等の汎用電子機器のみならず、テレビジョン受像機、録画再生装置、携帯オーディオ機器等、専用機能を有する電子機器までもがネットワークに接続可能な状態になってきている。こうした状況に伴い、各種電子機器には、利用者の個人情報保護や、コンピュータウィルス、マルウェアに対する対策等、セキュリティの確保がますます重要になってきている。そのため、各種の電子機器には通信相手の正当性を確認する認証機能を搭載することが求められている。特に、その内部で主要な役割を果たす半導体集積回路（以下、ＩＣ）には、セキュリティを確保するために、外部から入力されたソフトウェアやファームウェア（以下、プログラム）の正当性を確認する認証機能の実現が要求される。
【０００３】
このような認証機能は、多くの場合、暗号技術を利用して実現される。暗号技術を利用した認証機能としては、通信相手が正しい鍵を保持しているか否かを確認する相手認証や、プログラム等が正しいものか否かを確認する電子署名、ＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）等が存在する。相手認証では、認証したい相手に乱数を送信して暗号文を生成してもらい、相手から返信された暗号文を復号した結果が自身の送った乱数と一致するか否かを判定して相手の鍵が正しいか否かを判断する。また、電子署名やＭＡＣでは、鍵を利用したデータの演算結果が期待値と一致するか否かでデータの改竄や鍵の作成者に対する正当性等を確認する。例えば、下記の特許文献１には、こうした認証機能に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３７４９６４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
こうした安全な暗号アルゴリズムを正しく利用している限り、不正な通信相手を正規の通信相手であると誤認させられたり、不正なプログラムを実行させられたりすることは理論上ない。しかしながら、認証を実行するプログラムの実装方法に欠陥等があった場合、鍵を保持しない攻撃者は、正規の通信相手に成りすましたり、不正なプログラムを実行させたりすることが可能になる。
【０００６】
例えば、認証を実施するプログラムは、検証や可読性の観点から、認証成立可否の条件分岐部分が、「条件式が真ならば認証成立、偽ならば認証不成立」となるように実装される。そのため、このプログラムを実行すると、ＩＣ内部のマイクロプロセッサ（ＭＰＵ；Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、条件式の真偽に応じてフラグレジスタの所定ビットの値を１又は０にセットする。例えば、フラグレジスタの所定ビットの値には、条件式が真である場合に１、偽である場合に０がセットされる。
【０００７】
そこで、上記のプログラムは、フラグレジスタの所定ビットの値を読み出し、１の場合に認証成立処理を実行し、０の場合に認証不成立の処理を実行する。従って、認証成立の場合、フラグレジスタの所定ビットの値は常に１となる。しかしながら、このようにプログラムを実装すると、ＦＩＢ（Ｆｏｃｕｓ  Ｉｏｎ  Ｂｅａｍ）を利用してフラグレジスタ値出力配線が電源又はグランド（ＧＮＤ）に短絡された場合、ＭＰＵのフラグレジスタの所定ビットの値が１に固定されてしまう。同様に、レーザ光照射によるフラグレジスタの値固定等の攻撃により、ＭＰＵのフラグレジスタの所定ビットの値が１に固定されてしまう。その結果、攻撃者によりＭＰＵに認証成立の処理を実行させられてしまう。
【０００８】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、ＭＰＵ等が持つレジスタの所定ビットの値が固定されたとしても、不正に認証処理が実行されないようにすることが可能な、新規かつ改良された認証装置、認証方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明のある観点によれば、互いに異なる第１又は第２のビット値が格納されるレジスタと、入力情報と当該入力情報に対応する認証情報とが一致するか否かを判定して、当該判定結果が真の場合に前記レジスタに第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納するｍ個（１≦ｍ≦Ｎ−１、Ｎ≧２）の第１の判定処理部と、入力情報と当該入力情報に対応する認証情報とが不一致であるか否かを判定して、当該判定結果が真の場合に前記レジスタに第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納する（Ｎ−ｍ）個の第２の判定処理部と、全ての前記第１の判定処理部による判定処理で前記レジスタに第１のビット値が格納され、全ての前記各第２の判定処理部による判定処理で前記レジスタに第２のビット値が格納された場合に認証成立と判定する認証判定部と、を備える、認証装置が提供される。
【００１０】
また、上記の認証装置は、判定処理の実行命令と当該実行命令に対する入力データが入力された場合に、当該入力データを用いて前記実行命令を実行した結果が真の場合に前記レジスタに第１のビット値を格納し、偽の場合に前記第２のビット値を格納する演算処理回路を備えていてもよい。この場合、前記第１の判定処理部は、前記演算処理回路に対し、２つの入力データに対する一致判定処理の実行命令と、当該入力データとして前記入力情報及び当該入力情報に対応する認証情報とを入力することで前記レジスタに前記第１又は第２のビット値を格納する。さらに、前記第２の判定処理部は、前記演算処理回路に対し、２つの入力データに対する不一致判定処理の実行命令と、当該入力データとして前記入力情報及び当該入力情報に対応する認証情報とを入力することで前記レジスタに前記第１又は第２のビット値を格納する。
【００１１】
また、上記の認証装置は、アプリケーションプログラムの実行環境を形成するための第１のプログラムを認証するために用いる第１の認証情報と、前記アプリケーションプログラムの認証に用いる第２の認証情報とが格納された記憶部をさらに備えていてもよい。この場合、前記第１の判定処理部は、実行対象の前記第１のプログラムから前記入力情報として得られる認証用の情報と前記記憶部に格納された第１の認証情報とが一致するか否かを判定して前記レジスタに第１又は第２のビット値を格納する。さらに、前記第２の判定処理部は、実行対象の前記第２のプログラムから前記入力情報として得られる認証用の情報と前記記憶部に格納された第２の認証情報とが不一致であるか否かを判定して前記レジスタに第１又は第２のビット値を格納する。
【００１２】
また、上記の認証装置は、アプリケーションプログラムの実行環境を形成するための第１のプログラムを認証するために用いる第１の認証情報と、前記アプリケーションプログラムの認証に用いる第２の認証情報とが格納された記憶部をさらに備えていてもよい。この場合、前記第２の判定処理部は、実行対象の前記第１のプログラムから前記入力情報として得られる認証用の情報と前記記憶部に格納された第１の認証情報とが不一致であるか否かを判定して前記レジスタに第１又は第２のビット値を格納する。さらに、前記第１の判定処理部は、実行対象の前記第２のプログラムから前記入力情報として得られる認証用の情報と前記記憶部に格納された第２の認証情報とが一致するか否かを判定して前記レジスタに第１又は第２のビット値を格納する。
【００１３】
また、上記の認証装置は、外部機器との間の認証処理に利用する第１の認証情報と、前記外部機器を介したユーザ認証に利用する第２の認証情報とが格納される記憶部をさらに備えていてもよい。この場合、前記第１の判定処理部は、前記外部機器から入力された入力情報と前記記憶部に格納された第１の認証情報とが一致するか否かを判定して前記レジスタに第１又は第２のビット値を格納する。さらに、前記第２の判定処理部は、前記外部機器を介してユーザにより入力された入力情報と前記記憶部に格納された第２の認証情報とが不一致であるか否かを判定して前記レジスタに第１又は第２のビット値を格納する。
【００１４】
また、上記の認証装置は、外部機器との間の認証処理に利用する第１の認証情報と、前記外部機器を介したユーザ認証に利用する第２の認証情報とが格納される記憶部をさらに備えていてもよい。この場合、前記第１の判定処理部は、前記外部機器を介してユーザにより入力された入力情報と前記記憶部に格納された第２の認証情報とが一致するか否かを判定して前記レジスタに第１又は第２のビット値を格納する。さらに、前記第２の判定処理部は、前記外部機器から入力された入力情報と前記記憶部に格納された第１の認証情報とが不一致であるか否かを判定して前記レジスタに第１又は第２のビット値を格納する。
【００１５】
また、上記課題を解決するために、本発明の別の観点によれば、入力情報と当該入力情報に対応する認証情報とが一致するか否かを判定して、互いに異なる第１又は第２のビット値が格納されるレジスタに対し、当該判定結果が真の場合に第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納する第１の判定処理ステップをｍ回（１≦ｍ≦Ｎ−１、Ｎ≧２）実行するステップと、入力情報と当該入力情報に対応する認証情報とが不一致であるか否かを判定し、当該判定結果が真の場合に前記レジスタに第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納する第２の判定処理ステップを（Ｎ−ｍ）回実行するステップと、全ての前記第１の判定処理ステップによる判定処理で前記レジスタに第１のビット値が格納され、全ての前記各第２の判定処理部による判定処理で前記レジスタに第２のビット値が格納された場合に認証成立と判定する認証判定ステップと、を含む、認証処理方法が提供される。
【００１６】
また、上記課題を解決するために、本発明の別の観点によれば、入力情報と当該入力情報に対応する認証情報とが一致するか否かを判定して、互いに異なる第１又は第２のビット値が格納されるレジスタに対し、当該判定結果が真の場合に第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納する第１の判定処理ステップをｍ回（１≦ｍ≦Ｎ−１、Ｎ≧２）実行するステップと、入力情報と当該入力情報に対応する認証情報とが不一致であるか否かを判定し、当該判定結果が真の場合に前記レジスタに第１のビット値を格納し、偽の場合に前記レジスタに第２のビット値を格納する第２の判定処理ステップを（Ｎ−ｍ）回実行するステップと、全ての前記第１の判定処理ステップによる判定処理で前記レジスタに第１のビット値が格納され、全ての前記各第２の判定処理部による判定処理で前記レジスタに第２のビット値が格納された場合に認証成立と判定する認証判定ステップと、をコンピュータに実現させるためのプログラムが提供される。
【００１７】
また、上記課題を解決するために、本発明の別の観点によれば、上記のプログラムが記録されたコンピュータにより読み取り可能な記録媒体が提供される。
【発明の効果】
【００１８】
以上説明したように本発明によれば、ＭＰＵ等が持つレジスタの所定ビットの値が固定されたとしても、不正に認証処理が実行されないようにすることが可能になる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に係る認証処理システムの一構成例を示す説明図である。
【図２】同実施形態に係る認証処理方法の一例を示す説明図である。
【図３】同実施形態に係るＩＣカード利用者端末の一構成例を示す説明図である。
【図４】同実施形態に係るＩＣカードの一構成例を示す説明図である。
【図５】同実施形態に係るＩＣカードによる処理の流れを示す説明図である。
【図６Ａ】同実施形態に係るＩＣカードが実行する動作の一部を示す説明図である。
【図６Ｂ】同実施形態に係るＩＣカードが実行する動作の一部を示す説明図である。
【図７】同実施形態に係るＩＣカードによる処理のより具体的な流れを示す説明図である。
【図８】同実施形態に係る認証処理方法と一般的な認証処理方法とを対比するための説明図である。
【図９】一般的な認証処理方法を用いた場合に実行され得るタンパリングの一例を示す説明図である。
【図１０】一般的な認証処理方法を用いた場合に実行され得るタンパリングの一例を示す説明図である。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２１】
［説明の流れについて］
ここで、以下に記載する本発明の実施形態に関する説明の流れについて簡単に述べる。まず、図１を参照しながら、本発明の一実施形態に係る認証処理システムの一構成例について説明する。次いで、図２を参照しながら、同実施形態に係る認証処理の流れについて説明する。次いで、図３を参照しながら、同実施形態に係るＩＣカード利用者端末１０の機能構成について説明する。次いで、図４を参照しながら、同実施形態に係るＩＣカード２０の機能構成について説明する。次いで、図５を参照しながら、同実施形態に係るＩＣカード２０による処理の流れについて説明する。
【００２２】
次いで、図６Ａ、図６Ｂを参照しながら、同実施形態に係るＩＣカード２０の一部動作について、より詳細に説明する。次いで、図７を参照しながら、同実施形態に係るＩＣカード２０による処理の一部について、より具体的な処理の流れについて説明する。次いで、図８〜図１０を参照しながら、同実施形態に係る認証処理方法と一般的な認証処理方法との違いについて説明し、同実施形態に係る認証処理方法を適用することで得られる効果について述べる。最後に、同実施形態の技術的思想について纏め、当該技術的思想から得られる作用効果について簡単に説明する。
【００２３】
（説明項目）
１：実施形態
１−１：認証処理システムの構成
１−２：認証処理方法の全体的な流れ
１−３：ＩＣカード利用者端末１０の機能構成
１−４：ＩＣカード２０の機能構成
１−５：一般的な認証処理方法との対比
２：まとめ
【００２４】
＜１：実施形態＞
本発明の一実施形態について説明する。本実施形態は、半導体集積回路（ＩＣ）上で動作する相互認証やメッセージ認証といった各種認証処理を実施するプログラムの実装方法に関するものである。また、本実施形態は、認証を実施するプログラムに含まれる認証成立可否判断部分に関し、条件式が真ならば認証成立処理を実施する部分と、偽ならば認証成立処理を実施する部分を混在させるようにプログラムを実装する点に特徴がある。この特徴により、ＦＩＢやレーザー照射等の解析技術を利用した認証結果の固定化攻撃により認証結果が改竄されるのを防止することができる。但し、本実施形態の技術は、認証成立可否判断を複数回実施する認証実施プログラムを実装するケースに適用される。
【００２５】
［１−１：認証処理システムの構成］
まず、図１を参照しながら、本実施形態に係る認証処理システムの一構成例について説明する。図１は、本実施形態に係る認証処理システムの一構成例を示す説明図である。なお、図１に示すシステム構成は一例であり、本実施形態に係る技術の適用範囲はこれに限定されない。例えば、本実施形態においては、説明の都合上、非接触ＩＣカードによる認証処理が例として用いられる。しかし、ＩＣを搭載した種々の電子機器や接触型のＩＣカード等も本実施形態の技術的範囲に属する点に注意されたい。
【００２６】
図１に示すように、認証処理システムは、主に、ＩＣカード利用者端末１０と、ＩＣカード２０とにより構成される。なお、ＩＣカード２０は、認証装置の一例である。ＩＣカード利用者端末１０は、例えば、ＰＣ等に接続されたり、交通機関の改札や小売店舗、銀行窓口等に設置されているようなＩＣ情報の読み書き用端末である。ＩＣカード利用者端末１０は、主に、入力デバイス１２、表示デバイス１４、演算装置１６、及び読み書き装置１８により構成される。但し、これらの構成要素の一部は実施の態様に応じて省略されることもある。
【００２７】
入力デバイス１２は、ＩＣカード利用者が個人情報や認証情報（ＰＩＮ；Ｐｅｒｓｏｎａｌ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  Ｎｕｍｂｅｒ）等を入力するための入力手段である。また、表示デバイス１４は、ＩＣカード利用者が入力した個人情報を入力したり、認証情報の入力を促すメッセージを表示したりするのに用いる表示手段である。演算装置１６は、表示デバイス１４の表示や読み書き装置１８の動作を制御する手段である。また、演算装置１６は、入力デバイス１２を用いて入力されたＩＣカード利用者の個人情報や認証情報、或いは、読み書き装置１８を介して取得した各種の情報を保持することができる。さらに、演算装置１６は、認証処理における各種の演算処理を実行する手段である。
【００２８】
また、読み書き装置１８は、ＩＣカード２０との間で通信することによりＩＣカード２０に搭載されたＩＣチップ２２の情報を読み出したり、ＩＣチップ２２に情報を書き込んだりする手段である。なお、読み書き装置１８とＩＣカード２０との間の通信は、非接触通信であっても、接触通信であってもよい。上記の通り、ＩＣカード２０には、ＩＣチップ２２が設けられている。また、非接触通信の場合、ＩＣカード２０には、ループアンテナが配線されており、ループアンテナの端部がＩＣチップ２２に接続されている。そのため、読み書き装置１８が発生させる磁界の変動によりループアンテナに誘導される電力の変調を利用してＩＣカード２０とＩＣカード利用者端末１０との間で通信が実現する。
【００２９】
図１に示した構成は一例であるが、説明の都合上、図１のシステム構成を想定して以下の説明を進める。もちろん、本実施形態に係る技術の適用範囲はこれに限定されない。
【００３０】
［１−２：認証処理方法の全体的な流れ］
次に、図２を参照しながら、本実施形態の認証処理システムにおける認証処理方法の全体的な流れについて説明する。図２は、本実施形態の認証処理システムにおける認証処理方法の全体的な流れを示す説明図である。但し、図２に示す認証処理方法は一例であり、本実施形態に係る技術の適用範囲はこれに限定されない。例えば、本実施形態は、複数回の判定処理を含む任意の認証処理方法に適用することが可能である。従って、図２は、複数回の判定処理を含む認証処理方法の中から選択された一例である点に注意されたい。
【００３１】
まず、利用者は、ＩＣカード利用者端末１０に対し、入力デバイス１２を用いてＰＩＮを入力する（Ｓ１０２、Ｓ１０４）。なお、ここで利用者が入力すべきＰＩＮの情報は、ＩＣカード２０に保持されている。次いで、ＩＣカード利用者端末１０は、乱数要求を発行してＩＣカード２０に送信する（Ｓ１０６）。この乱数要求は、ＩＣカード２０が生成した乱数を取得するためのものである。ＩＣカード利用者端末１０から乱数要求を受信すると、ＩＣカード２０は、乱数（ｒ）を生成する（Ｓ１０８）。次いで、ＩＣカード２０は、生成した乱数ｒをＩＣカード利用者端末１０に送信する（Ｓ１１０）。
【００３２】
ＩＣカード２０から乱数ｒを受信すると、ＩＣカード利用者端末１０は、乱数（Ｋ０）を生成する（Ｓ１１２）。次いで、ＩＣカード２０が発行した公開鍵ＰＫを用いて、ＩＣカード２０から取得した乱数ｒ、ステップＳ１１２で生成した乱数Ｋ０、及び利用者により入力されたＰＩＮを暗号化する（Ｓ１１４）。この暗号化処理により、暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））が生成される。なお、Ｅ（Ａ，Ｂ）と表記した場合、Ｅ（Ａ，Ｂ）は、Ａを暗号鍵としてＢを暗号化した暗号文を意味する。また、Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））は、ｒ、Ｋ０、ＰＩＮが公開鍵ＰＫに対応する秘密鍵ＳＫでそれぞれ復号できる形式で暗号化された暗号文を意味する。
【００３３】
暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））を生成すると、ＩＣカード利用者端末１０は、暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））をＩＣカード２０に送信する（Ｓ１１６）。ＩＣカード利用者端末１０から暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））を受信すると、ＩＣカード２０は、公開鍵ＰＫに対応する秘密鍵ＳＫを利用してｒ、Ｋ０、ＰＩＮを復号する（Ｓ１１８）。次いで、ＩＣカード２０は、復号したＰＩＮと、自身が保持するＰＩＮとが不一致であるか否かを確認する（Ｓ１２０）。このとき、ＩＣカード２０は、ＰＩＮが不一致の場合に真（ｔｒｕｅ）と判定する。ＰＩＮが不一致の場合、ＩＣカード２０は、エラー処理を実行して一連の認証処理を終了する。
【００３４】
ＰＩＮが一致した場合、ＩＣカード２０は、ステップＳ１１８で復号された乱数ｒと、ステップＳ１０８で自身が生成した乱数ｒとが一致するか否かを確認する（Ｓ１２２）。このとき、ＩＣカード２０は、乱数ｒが一致する場合に真（ｔｒｕｅ）と判定する。乱数ｒが不一致の場合、ＩＣカード２０は、エラー処理を実行して一連の認証処理を終了する。一方、乱数ｒが一致した場合、ＩＣカード２０は、乱数（Ｋ１）を生成する（Ｓ１２４）。次いで、ＩＣカード２０は、ステップＳ１１８で復号された乱数Ｋ０を用いて乱数Ｋ１を暗号化する（Ｓ１２６）。この暗号化処理により、暗号文Ｅ（Ｋ０，Ｋ１）が生成される。次いで、ＩＣカード２０は、生成した暗号文Ｅ（Ｋ０，Ｋ１）をＩＣカード利用者端末１０に送信する（Ｓ１２８）。
【００３５】
ＩＣカード２０から暗号文Ｅ（Ｋ０，Ｋ１）を受信すると、ＩＣカード利用者端末１０は、ステップＳ１１２に生成した乱数Ｋ０を鍵にして暗号文Ｅ（Ｋ０，Ｋ１）に含まれる乱数Ｋ１を復号する（Ｓ１３０）。次いで、ＩＣカード利用者端末１０は、乱数Ｋ０、Ｋ１を用いて共通鍵Ｋ＝Ｋ１  ｘｏｒ  Ｋ０を生成する（Ｓ１３２）。但し、ｘｏｒは排他的論理和演算を意味する。同様に、ＩＣカード２０は、乱数Ｋ０、Ｋ１を用いて共通鍵Ｋ＝Ｋ１  ｘｏｒ  Ｋ０を生成する（Ｓ１３４）。そして、ＩＣカード利用者端末１０とＩＣカード２０とは共通鍵Ｋを利用して暗号通信する（Ｓ１３６）。
【００３６】
上記の通り、図２に示した認証処理方法には、ＩＣカード２０による２回の判定処理（ステップＳ１２０、Ｓ１２２）が含まれている。そして、本実施形態においては、ステップＳ１２０の判定処理が不一致確認であり、ステップＳ１２２の判定処理が一致確認である。そのため、ステップＳ１２０の判定処理で「偽」、ステップＳ１２２の判定処理で「真」の場合に認証が成立する。このように、認証の成否を判定するための真偽値が複数の判定処理で異なるようにする点が本実施形態の技術的特徴の中心部分である。以下、当該技術について図２に示した処理を例に挙げつつ、より詳細に説明する。
【００３７】
［１−３：ＩＣカード利用者端末１０の機能構成］
まず、図３を参照しながら、本実施形態に係るＩＣカード利用者端末１０の機能構成について説明する。図３は、本実施形態に係るＩＣカード利用者端末１０の機能構成例を示す説明図である。なお、図３に示した機能構成例は、図２の認証処理を実行するためのものであり、対象とする認証処理方法の種類等により適宜変更される点に注意されたい。
【００３８】
図３に示すように、ＩＣカード利用者端末１０は、主に、入力デバイス１２と、表示デバイス１４と、通信部１０２と、乱数取得部１０４と、乱数生成部１０６と、記憶部１０８と、暗号化部１１０と、共通鍵生成部１１２と、復号部１１４とを有する。また、乱数取得部１０４、乱数生成部１０６、記憶部１０８、暗号化部１１０、共通鍵生成部１１２、及び復号部１１４の機能は、演算装置１６により実現される。そして、通信部１０２の機能は、読み書き装置１８により実現される。
【００３９】
まず、利用者が入力デバイス１２を用いてＰＩＮを入力すると、入力デバイス１２から暗号化部１１０にＰＩＮが入力される。このとき、表示デバイス１４に入力したＰＩＮの確認情報が表示されてもよい。また、入力デバイス１２から乱数取得部１０４にＰＩＮが入力されたことを示す通知情報（ｉｎｆｏ）が入力される。この通知情報を受けると、乱数取得部１０４は、乱数要求（ｒｅｑｕｅｓｔ）を発行し、通信部１０２を介してＩＣカード２０に送信する。この乱数要求を受けてＩＣカード２０から乱数ｒが送信されると、通信部１０２を通じて乱数ｒが乱数取得部１０４に入力される。
【００４０】
このようにしてＩＣカード２０から乱数ｒを取得すると、乱数取得部１０４は、取得した乱数ｒを暗号化部１１０に入力する。また、暗号化部１１０には、乱数生成部１０６により生成された乱数Ｋ０も入力される。乱数生成部１０６は、乱数Ｋ０を生成し、暗号化部１１０の他に、共通鍵生成部１１２及び復号部１１４に乱数Ｋ０を入力する。また、暗号化部１１０は、記憶部１０８に格納されているＩＣカード２０の公開鍵ＰＫを取得し、入力されたＰＩＮ、ｒ、Ｋ０を公開鍵ＰＫで暗号化する。この暗号化処理により暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））が生成される。
【００４１】
暗号化部１１０で生成された暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））は、通信部１０２を通じてＩＣカード２０に送信される。暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））を受けてＩＣカード２０によりＰＩＮ及び乱数ｒの認証処理が実行され、認証が成功すると乱数Ｋ０を用いて乱数Ｋ１を暗号化した暗号文Ｅ（Ｋ０，Ｋ１）がＩＣカード２０から送信される。通信部１０２が受信した暗号文Ｅ（Ｋ０，Ｋ１）は、通信部１０２から復号部１１４に入力される。暗号文Ｅ（Ｋ０，Ｋ１）が入力されると、復号部１１４は、乱数生成部１０６から入力された乱数Ｋ０を用いて暗号文Ｅ（Ｋ０，Ｋ１）に含まれる乱数Ｋ１を復号する。そして、復号部１１４により復号された乱数Ｋ１は共通鍵生成部１１２に入力される。
【００４２】
復号部１１４から乱数Ｋ１が入力されると、共通鍵生成部１１２は、乱数生成部１０６で生成された乱数Ｋ０と復号部１１４から入力された乱数Ｋ１とを用いて共通鍵Ｋ＝Ｋ０  ｘｏｒ  Ｋ１を生成する。なお、共通鍵生成部１１２で生成される共通鍵Ｋは、乱数Ｋ０、Ｋ１に基づいて生成されるものであればよい。そのため、共通鍵Ｋの生成に用いる演算式は、必ずしも上記の排他的論理和演算に限定されない。但し、説明の都合上、上記の演算式により共通鍵が生成されるものとする。共通鍵生成部１１２により生成された共通鍵Ｋは、復号部１１４、及び暗号化部１１０に入力される。
【００４３】
暗号化部１１０は、記憶部１０８に格納されている送信データ（ｄａｔａ）を共通鍵Ｋで暗号化し、通信部１０２を通じてＩＣカード２０に送信する。一方、共通鍵Ｋを用いて暗号化された暗号文がＩＣカード２０から送信された場合、通信部１０２を介して受信した暗号文は復号部１１４に入力される。そして、復号部１１４は、受信した暗号文に対し、共通鍵Ｋを用いて復号処理を実行する。このようにして暗号通信が実現される。以上、ＩＣカード利用者端末１０の機能構成について説明した。以下、ＩＣカード２０の機能構成について詳細に説明する。
【００４４】
［１−４：ＩＣカード２０の機能構成］
次に、図４を参照しながら、本実施形態に係るＩＣカード２０の機能構成例について説明する。図４は、本実施形態に係るＩＣカード２０の機能構成例を示す説明図である。なお、図４に示した機能構成例は、図２の認証処理を実行するためのものであり、対象とする認証処理方法の種類等により適宜変更される点に注意されたい。
【００４５】
図４に示すように、ＩＣカード２０は、主に、通信部２０２と、第１乱数生成部２０４と、記憶部２０６と、復号部２０８と、ＰＩＮ確認部２１０と、乱数確認部２１２と、第２乱数生成部２１４と、暗号化部２１６と、共通鍵生成部２１８とを有する。これらの構成要素のうち、ＰＩＮ確認部２１０、及び乱数確認部２１２の機能に主な特徴がある。また、上記のＰＩＮ確認部２１０は、第２の判定処理部の一例である。さらに、上記の乱数確認部２１２は、第１の判定処理部の一例である。そして、上記のＰＩＮ確認部２１０、及び乱数確認部２１２は、認証判定部の一例である。
【００４６】
まず、ＩＣカード利用者端末１０から乱数要求（ｒｅｑｕｅｓｔ）が送信されると、ＩＣカード２０は、通信部２０２により乱数要求を受信する。受信した乱数要求は、通信部２０２を通じて第１乱数生成部２０４に入力される。第１乱数生成部２０４は、乱数要求に応じて乱数ｒを生成する。そして、第１乱数生成部２０４により生成された乱数ｒは、通信部２０２に入力されると共に、記憶部２０６に格納される。記憶部２０６には、乱数ｒの他、利用者のＰＩＮ、及び公開鍵ＰＫに対応する秘密鍵ＳＫが格納されている。
【００４７】
第１乱数生成部２０４から通信部２０２に乱数ｒが入力されると、乱数ｒは、通信部２０２を介してＩＣカード利用者端末１０に送信される。その後、乱数ｒを受信したＩＣカード利用者端末１０から公開鍵ＰＫを利用して生成された暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））が送信されると、ＩＣカード２０は、通信部２０２により暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））を受信する。そして、暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））は、通信部２０２から復号部２０８に入力される。
【００４８】
暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））が入力されると、復号部２０８は、記憶部２０６から公開鍵ＰＫに対応する秘密鍵ＳＫを読み出し、秘密鍵ＳＫを用いて暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））を復号し、ｒ、Ｋ０、ＰＩＮを取得する。そして、復号部２０８は、取得したｒを乱数確認部２１２に入力し、取得したＰＩＮをＰＩＮ確認部２１０に入力し、取得したＫ０を暗号化部２１６に入力する。
【００４９】
ＰＩＮ確認部２１０は、復号部２０８から入力されたＰＩＮと、記憶部２０６から読み出したＰＩＮとが不一致であるか否かを確認する。確認の結果、ＰＩＮが不一致である場合（判定演算の出力＝「真」）、ＰＩＮ確認部２１０は、エラー処理を実行する。一方、ＰＩＮが不一致でない場合（判定演算の出力＝「偽」）、ＰＩＮ確認部２１０は、ＰＩＮ認証の成立（ｏｋ）を乱数確認部２１２に通知する。
【００５０】
ＰＩＮ認証の成立が通知されると、乱数確認部２１２は、復号部２０８から入力されたｒと、記憶部２０６から読み出したｒとが一致するか否かを確認する。確認の結果、ｒが一致する場合（判定演算の出力＝「真」）、乱数確認部２１２は、乱数による認証が成立したことを示す通知（ｏｋ）を第２乱数生成部２１４に入力する。一方、ｒが一致しない場合（判定演算の出力＝「偽」）、乱数確認部２１２は、エラー処理を実行する。
【００５１】
乱数確認部２１２により乱数による認証が成立したことを示す通知が入力されると、第２乱数生成部２１４は、乱数Ｋ１を生成する。第２乱数生成部２１４により生成された乱数Ｋ１は、暗号化部２１６に入力される。乱数Ｋ１が入力されると、暗号化部２１６は、復号部２０８から入力されたＫ０を用いて乱数Ｋ１を暗号化する。この暗号化処理により暗号文Ｅ（Ｋ０，Ｋ１）が生成される。そして、暗号化部２１６により生成された暗号文Ｅ（Ｋ０，Ｋ１）は、通信部２０２を通じてＩＣカード利用者端末１０に送信される。
【００５２】
また、復号部２０８により取得されたＫ０と第２乱数生成部２１４で生成された乱数Ｋ１とは、共通鍵生成部２１８に入力される。共通鍵生成部２１８は、入力されたＫ０、Ｋ１を用いて共通鍵Ｋ＝Ｋ０  ｘｏｒ  Ｋ１を生成する。なお、共通鍵生成部２１８で生成される共通鍵Ｋは、乱数Ｋ０、Ｋ１に基づいて生成されるものであればよい。そのため、共通鍵Ｋの生成に用いる演算式は、必ずしも上記の排他的論理和演算に限定されない。但し、説明の都合上、上記の演算式により共通鍵が生成されるものとする。
【００５３】
共通鍵生成部２１８で生成された共通鍵Ｋは、暗号化部２１６に入力されると共に、記憶部２０６に格納される。暗号化部２１６は、暗号通信により送信データを暗号化する際に共通鍵Ｋを用いる。また、復号部２０８は、暗号通信により受信した暗号文を復号する際に、記憶部２０６に格納された共通鍵Ｋを用いて暗号文を復号する。このようにして暗号通信が実現される。以上、ＩＣカード２０の機能構成について説明した。上記の通り、本実施形態におけるＩＣカード２０の特徴部分はＰＩＮ確認部２１０及び乱数確認部２１２の機能にある。以下、この特徴部分に注目し、より詳細に説明する。
【００５４】
（判定処理に関する動作について）
まず、図５を参照しながら、ＩＣカード２０による処理の流れについて、ＰＩＮ確認部２１０、及び乱数確認部２１２の処理を中心に説明する。図５は、ＩＣカード２０による処理の流れを示す説明図である。
【００５５】
まず、ＩＣカード２０は、ＩＣカード利用者端末１０から送信された乱数要求を通信部２０２により受信する（Ｓ１４２）。次いで、ＩＣカード２０は、第１乱数生成部２０４により乱数ｒを生成し、通信部２０２を通じて乱数ｒをＩＣカード利用者端末１０に送信する（Ｓ１４４）。次いで、ＩＣカード２０は、ＩＣカード利用者端末１０から暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））を受信し、復号部２０８により復号する（Ｓ１４６）。ステップＳ１４６の処理により、ｒ、Ｋ０、ＰＩＮが取得される。
【００５６】
そこで、ＰＩＮ確認部２１０は、取得したＰＩＮと、ＩＣカード２０に保持されているＰＩＮとが不一致であるか否かを確認する（Ｓ１４８）。確認の結果、不一致である場合、ＩＣカード２０は、エラー処理を実行する（Ｓ１５２）。一方、不一致でない場合、ＩＣカード２０は、ステップＳ１５０の処理に進行する。ここで、ＰＩＮ確認部２１０が「一致であるか否か」を判定するのではなく、「不一致であるか否か」を判定している点に注意されたい。このような構成にする理由については後述する。
【００５７】
ステップＳ１５０に進行した場合、乱数確認部２１２により、取得したｒと、ＩＣカード２０に保持されているｒとが一致するか否かが確認される（Ｓ１５０）。確認の結果、一致しない場合、ＩＣカード２０は、エラー処理を実行する（Ｓ１５２）。一方、一致する場合、ＩＣカード２０は、ステップＳ１５４の処理に進行する。ここで、ＰＩＮ確認部２１０が「不一致であるか否か」を判定するのに対し、乱数確認部２１２が「一致するか否か」を判定している点に注意されたい。
【００５８】
ステップＳ１５４に進行した場合、ＩＣカード２０は、第２乱数生成部２１４により乱数Ｋ１を生成する（Ｓ１５４）。次いで、ＩＣカード２０は、暗号化部２１６により暗号文Ｅ（Ｋ０，Ｋ１）を生成し、通信部２０２を通じてＩＣカード利用者端末１０に送信する（Ｓ１５６）。また、ＩＣカード２０は、共通鍵生成部２１８により共通鍵Ｋ＝Ｋ０  ｘｏｒ  Ｋ１を生成する（Ｓ１５８）。
【００５９】
ここで、ステップＳ１４８、Ｓ１５０の処理について、より詳細に説明する。上記の通り、ステップＳ１４８の処理は、ＰＩＮの「不一致確認」のための判定処理である。一方、ステップＳ１５０の処理は、乱数ｒの「一致確認」のための判定処理である。これらの処理は、実際には図６Ａ、図６Ｂに示すようにＩＣカード２０に搭載されているＭＰＵ２２０を利用して実行される。なお、ＭＰＵ２２０は、演算処理回路の一例である。
【００６０】
まず、図６Ａを参照する。図６Ａは、ＰＩＮ確認部２１０による「不一致確認」処理を模式的に示したものである。なお、図６Ａにおいて、ＩＣカード利用者端末１０から取得したＰＩＮをＰＩＮ’と表記し、ＩＣカード２０に保持されているＰＩＮを単にＰＩＮと表記することにする。図６Ａに示すように、ＭＰＵ２２０には、フラグレジスタ２２２（ＦＲ）が設けられている。なお、ここでは「フラグレジスタ」と表記するが、広義にはＭＰＵ２２０の演算状態を示すステータスレジスタのことを意味する。また、フラグレジスタ２２２は、レジスタの一例である。
【００６１】
また、フラグレジスタ２２２には、所定のビット位置にゼロフラグ（ＺＦ）が含まれる。ゼロフラグは、演算結果が１（判定処理における「真」）のときにセットされる（１が書き込まれる）部分である。逆に、演算結果が０（判定処理における「偽」）の場合、ゼロフラグはクリアされる（０が書き込まれる）。
【００６２】
上記の通り、ＰＩＮ確認部２１０は、ＰＩＮとＰＩＮ’とが不一致であるか否かを判定する。言い換えると、ＰＩＮ確認部２１０は、不一致であるか否かを判定させる判定処理命令（ｂｎｅ  Ａ，Ｂ）と、パラメータであるＰＩＮ及びＰＩＮ’とをＭＰＵ２２０に入力し、フラグレジスタ２２２のゼロフラグに格納された値を参照する。ここで、「ｂｎｅ  Ａ，Ｂ」は、パラメータＡ、Ｂが不一致の場合に「真」、不一致でない場合に「偽」と判定する処理命令を意味する。
【００６３】
この命令が入力されると、ＭＰＵ２２０は、ＰＩＮとＰＩＮ’とが不一致であるか否かを判定し、判定結果が「真」である場合にフラグレジスタ２２２のゼロフラグをセットし、判定結果が「偽」である場合にフラグレジスタ２２２のゼロフラグをクリアする。従って、ＰＩＮ認証が成立する場合、フラグレジスタ２２２のゼロフラグには「０」が格納されていることになる。
【００６４】
次に、図６Ｂを参照する。図６Ｂは、乱数確認部２１２による「一致確認」処理を模式的に示したものである。なお、図６Ｂにおいて、ＩＣカード利用者端末１０から取得したｒをｒ’と表記し、ＩＣカード２０に保持されているｒを単にｒと表記することにする。上記の通り、乱数確認部２１２は、ｒとｒ’とが一致するか否かを判定する。言い換えると、乱数確認部２１２は、一致するか否かを判定させる判定処理命令（ｂｅｑ  Ａ，Ｂ）と、パラメータであるｒ及びｒ’とをＭＰＵ２２０に入力し、フラグレジスタ２２２のゼロフラグに格納された値を参照する。
【００６５】
ここで、「ｂｅｑ  Ａ，Ｂ」は、パラメータＡ、Ｂが一致の場合に「真」、一致しない場合に「偽」と判定する処理命令を意味する。この命令がＭＰＵ２２０に入力されると、ＭＰＵ２２０は、ｒとｒ’とが一致するか否かを判定し、判定結果が「真」である場合にフラグレジスタ２２２のゼロフラグをセットし、判定結果が「偽」である場合にフラグレジスタ２２２のゼロフラグをクリアする。従って、乱数ｒによる認証が成立する場合、フラグレジスタ２２２のゼロフラグには「１」が格納されていることになる。
【００６６】
図６Ａ、図６Ｂから明らかなように、「一致確認」も、「不一致確認」も、２つのパラメータを比較し、その一致／不一致を判定するという点では同じであるが、ＭＰＵ２２０で実行される演算処理が異なるため、同じ「一致」でもゼロフラグの値が異なる。本実施形態では、図６Ａ、図６Ｂで示した『同じ「一致（又は不一致）」に対してゼロフラグの値が変化する』という性質を利用し、セキュリティを高める方法を提案しているのである。仮に、フラグレジスタ２２２のゼロフラグが「１」に固定された場合、一般的な方式ではＰＩＮ認証も乱数による認証も成立してしまう。しかし、本実施形態の方法を利用すると、ＰＩＮ認証が不成立となり、タンパリングを防ぐことができるのである。以下、この点について、より詳細に説明する。
【００６７】
［１−５：一般的な認証処理方法との対比］
まず、図５に示した本実施形態に係る認証処理の中で、ＰＩＮ認証及び乱数認証に関する部分を含むステップＳ１４６〜Ｓ１５４（以下、ステップＳ１６０）に関し、図７を参照しながら、ＭＰＵ２２０による動作の流れについて説明する。その後、一般的な認証処理方法（図８）を用いた場合のＭＰＵ２２０による動作の流れ（図９）について説明する。さらに、一般的な認証処理方法（図９）と本実施形態の方法（図７）とを対比しながら、ゼロフラグを固定する攻撃（図１０）に対する耐性について述べる。
【００６８】
（本実施形態に係る認証処理方法におけるＭＰＵ２２０の動作について）
まず、図７を参照する。図７は、図５に示したステップＳ１４８、Ｓ１５０の処理をＭＰＵ２２０の動作に関して詳細に示したものである。
【００６９】
図７に示すように、ステップＳ１４６の処理によりＰＩＮ、ｒが得られると、ＰＩＮ確認部２１０は、ＭＰＵ２２０に対して命令「ｂｎｅ  Ａ，Ｂ」と、ＰＩＮ及びＰＩＮ’とを入力する。ＭＰＵ２２０は、入力された命令に応じてＰＩＮとＰＩＮ’とが不一致であるか否かを判定する（Ｓ１４８１）。判定結果が「真（ＹＥＳ）」である場合、ＭＰＵ２２０は、フラグレジスタ２２２のゼロフラグに「１」を格納する（Ｓ１４８２）。一方、判定結果が「偽（ＮＯ）」である場合、ＭＰＵ２２０は、フラグレジスタ２２２のゼロフラグに「０」を格納する（Ｓ１４８３）。
【００７０】
次いで、ＰＩＮ確認部２１０は、フラグレジスタ２２２のゼロフラグが「０」であるか否かを確認する（Ｓ１４８４）。ゼロフラグが「０」でない場合、ＩＣカード２０は、エラー処理を実行する（Ｓ１５２）。一方、ゼロフラグが「０」である場合、ＩＣカード２０は、ステップＳ１５０１の処理に進行する。仮に、ゼロフラグの固定攻撃を受けてゼロフラグの値が「１」に固定されている場合であっても、ステップＳ１４８４において攻撃を防ぐことができる。
【００７１】
ステップＳ１５０１の処理に進行した場合、乱数確認部２１２は、ＭＰＵ２２０に対して命令「ｂｅｑ  Ａ，Ｂ」と、ｒ及びｒ’とを入力する。ＭＰＵ２２０は、入力された命令に応じてｒとｒ’とが一致するか否かを判定する（Ｓ１５０１）。判定結果が「真（ＹＥＳ）」である場合、ＭＰＵ２２０は、フラグレジスタ２２２のゼロフラグに「１」を格納する（Ｓ１５０２）。一方、判定結果が「偽（ＮＯ）」である場合、ＭＰＵ２２０は、フラグレジスタ２２２のゼロフラグに「０」を格納する（Ｓ１５０３）。
【００７２】
次いで、乱数確認部２１２は、フラグレジスタ２２２のゼロフラグが「１」であるか否かを確認する（Ｓ１５０４）。ゼロフラグが「１」でない場合、ＩＣカード２０は、エラー処理を実行する（Ｓ１５２）。一方、ゼロフラグが「１」である場合、ＩＣカード２０は、ステップＳ１５４の処理に進行する。仮に、ゼロフラグの固定攻撃を受けてゼロフラグの値が「０」に固定されている場合であっても、ステップＳ１５０４において攻撃を防ぐことができる。
【００７３】
（一般的な認証処理方法におけるＭＰＵ２２０の動作について）
次に、図８、図９を参照しながら、一般的な認証処理方法におけるＭＰＵ２２０の動作について説明する。図８は、一般的な認証処理方法の全体的な流れを示す説明図である。また、図９は、ＰＩＮ認証及び乱数認証に関する部分について、ＭＰＵ２２０の動作を詳細に示した認証処理の流れを示す説明図である。
【００７４】
まず、図８を参照する。まず、ＩＣカード利用者端末１０から乱数要求を受信し（Ｓ１２）、乱数ｒを生成してＩＣカード利用者端末１０に送信する（Ｓ１４）。次いで、ＩＣカード利用者端末１０から暗号文Ｅ（ＰＫ，（ｒ，Ｋ０，ＰＩＮ））を受信してｒ、ＰＩＮを取得する（Ｓ１６）。次いで、取得したＰＩＮと予め保持しているＰＩＮとが一致するか否かを確認する（Ｓ１８）。確認の結果、一致していればステップＳ２０の処理に進行し、一致していなければエラー処理を実行する（Ｓ２２）。
【００７５】
ステップＳ２０の処理に進行した場合、取得したｒと予め保持しているｒとが一致するか否かを確認する（Ｓ２０）。確認の結果、一致していればステップＳ２４の処理に進行し、一致していなければエラー処理を実行する（Ｓ２２）。ステップＳ２４の処理に進行した場合、乱数Ｋ１を生成し（Ｓ２４）、暗号文Ｅ（Ｋ０，Ｋ１）を生成してＩＣカード利用者端末１０に送信する（Ｓ２６）。また、共通鍵Ｋを生成する（Ｓ２８）。
【００７６】
上記の通り、一般的な認証処理方法において、ステップＳ１８、Ｓ２０で実行される２回の判定処理はいずれも「一致確認」である。この点を踏まえて図９を参照する。
【００７７】
図９に示すように、ステップＳ１６の処理によりＰＩＮ、ｒが得られると、ＭＰＵ２２０に対して命令「ｂｅｑ  Ａ，Ｂ」と、ＰＩＮ及びＰＩＮ’とが入力される。ＭＰＵ２２０は、入力された命令に応じてＰＩＮとＰＩＮ’とが一致するか否かを判定する（Ｓ０１８１）。判定演算の出力が「真（ＹＥＳ）」である場合、ＭＰＵ２２０は、フラグレジスタ２２２のゼロフラグに「１」を格納する（Ｓ０１８２）。一方、判定演算の出力が「偽（ＮＯ）」である場合、ＭＰＵ２２０は、フラグレジスタ２２２のゼロフラグに「０」を格納する（Ｓ０１８３）。
【００７８】
次いで、フラグレジスタ２２２のゼロフラグが「１」であるか否かが確認される（Ｓ０１８４）。ゼロフラグが「１」でない場合、エラー処理が実行される（Ｓ２２）。一方、ゼロフラグが「１」である場合、ステップＳ０２０１の処理に進行する。仮に、ゼロフラグの固定攻撃を受けてゼロフラグの値が「１」に固定されている場合、ステップＳ０１８４の判定処理を通過してしまい、攻撃を防ぐことができない。
【００７９】
ステップＳ０２０１の処理に進行した場合、ＭＰＵ２２０に対して命令「ｂｅｑ  Ａ，Ｂ」と、ｒ及びｒ’とが入力される。ＭＰＵ２２０は、入力された命令に応じてｒとｒ’とが一致するか否かを判定する（Ｓ０２０１）。判定演算の出力が「真（ＹＥＳ）」である場合、ＭＰＵ２２０は、フラグレジスタ２２２のゼロフラグに「１」を格納する（Ｓ０２０２）。一方、判定演算の出力が「偽（ＮＯ）」である場合、ＭＰＵ２２０は、フラグレジスタ２２２のゼロフラグに「０」を格納する（Ｓ０２０３）。
【００８０】
次いで、フラグレジスタ２２２のゼロフラグが「１」であるか否かが確認される（Ｓ０２０４）。ゼロフラグが「１」でない場合、エラー処理を実行する（Ｓ２２）。一方、ゼロフラグが「１」ある場合、ステップＳ２４の処理に進行する。仮に、ゼロフラグの固定攻撃を受けてゼロフラグの値が「１」に固定されている場合、ステップＳ０２０４の判定処理を通過してしまい、攻撃を防ぐことができない。
【００８１】
つまり、図１０に示すように、ＰＩＮの一致確認（ステップＳ４４）、及びｒの一致確認（ステップＳ４６）が無効化されてしまうのである。ここで、図１０を参照しながら、ゼロフラグのビット値を固定化する攻撃と、その攻撃により一般的な認証処理方法を採用したＩＣカードが受ける影響とについて簡単に纏める。
【００８２】
図１０に示すように、悪意者は、まず、乱数要求を発行してＩＣカードに送信する（Ｓ３０）。ＩＣカードは、受信した乱数要求に応じて乱数ｒを生成する（Ｓ３４）。そして、ＩＣカードは、生成した乱数ｒを攻撃者に送信する（Ｓ３２）。次いで、攻撃者は、乱数Ｋ０’を生成する（Ｓ３６）。そして、ＩＣカードの公開鍵ＰＫでｒ’、Ｋ０’、ＰＩＮ’を暗号化し、暗号文Ｅ（ＰＫ，（ｒ’，Ｋ０’，ＰＩＮ’））を生成する（Ｓ３８）。但し、ｒ’は、ＩＣカードが生成したｒとは異なるものである。また、ＰＩＮ’は、ＩＣカードが保持するＰＩＮとは異なるものである。なお、ｒ’の代わりにｒが用いられる可能性もある。
【００８３】
そして、攻撃者は、生成した暗号文Ｅ（ＰＫ，（ｒ’，Ｋ０’，ＰＩＮ’））をＩＣカードに送信する（Ｓ４０）。但し、このとき、攻撃者は、ＩＣカードに対してレーザ照射を開始し、ＩＣカードのＭＰＵ２２０が持つフラグレジスタ２２２のゼロフラグを「１」に固定する。ＩＣカードでは、暗号文Ｅ（ＰＫ，（ｒ’，Ｋ０’，ＰＩＮ’））が受信され、公開鍵ＰＫに対応する秘密鍵を用いてｒ’、Ｋ０’、ＰＩＮ’が復号される（Ｓ４２）。次いで、ＰＩＮの一致確認（Ｓ４４）、及びｒの一致確認（Ｓ４６）が実行される。
【００８４】
しかし、攻撃者によりフラグレジスタ２２２のゼロフラグが「１」に固定されているため、ＰＩＮ≠ＰＩＮ’、ｒ≠ｒ’であるにも関わらず、ＰＩＮ認証及びｒ認証が成立してしまう。つまり、ステップＳ４４、Ｓ４６の認証処理が無効化されてしまうのである。ステップＳ４４、Ｓ４６の認証が成立すると、ＩＣカードは、乱数Ｋ１を生成する（Ｓ４８）。次いで、ＩＣカードは、ステップＳ４２において復号したＫ０’でＫ１を暗号化し、暗号文Ｅ（Ｋ０’，Ｋ１）を生成する（Ｓ５０）。
【００８５】
そして、ＩＣカードは、暗号文Ｅ（Ｋ０’，Ｋ１）を攻撃者に送信する（Ｓ５２）。暗号文Ｅ（Ｋ０’，Ｋ１）を受信した攻撃者は、自身が保持するＫ０’を用いて暗号文Ｅ（Ｋ０’，Ｋ１）を復号し、Ｋ１を取得する（Ｓ５４）。さらに、取得したＫ１を用いて共通鍵Ｋ＝Ｋ１  ｘｏｒ  Ｋ０’を生成する（Ｓ５６）。同様に、ＩＣカードも共通鍵Ｋ＝Ｋ１  ｘｏｒ  Ｋ０’を生成する。この時点で攻撃者とＩＣカードとが共有鍵Ｋを共有した状態になるので、この共有鍵Ｋを用いて暗号通信Ｓ６０が成立してしまう。その結果、攻撃者によりＩＣカードの情報が自由に改竄できる状態になってしまう。
【００８６】
こうした状況は、一般的な認証処理方法を利用する限り、ＦＩＢを利用したフラグレジスタ値出力配線の短絡攻撃についても同様に成立してしまう。しかし、本実施形態に係る認証処理方法を適用することにより、これらの攻撃に対してエラーが出力されるようになり、ＩＣカード２０の情報が改竄される状態になることを防止できる。
【００８７】
なお、攻撃者がＰＩＮ認証とｒ認証との間でレーザの照射／非照射を切り替える方法を思いつくかもしれないが、このようなレーザの照射制御は技術的に極めて困難である。また、上記のような攻撃に対する耐性を得るための新たな回路を付加していないため、本実施形態の技術を適用しても回路規模の増加やロジックの複雑化を招かない。そのため、製造コストや設計負担が増大せずに、セキュリティを高めることが可能である。
【００８８】
以上、本実施形態に係る技術について具体例を挙げながら詳細に説明した。上記の例では、当該技術の適用対象をＩＣカード２０とした。しかし、ＩＣカード利用者端末１０で複数回の判定処理を含むような認証が実施される場合にはＩＣカード利用者端末１０に当該技術を適用することもできる。さらに、当該技術が適用される対象物はＩＣカードやＩＣチップに限定されない。つまり、ＭＰＵ２２０のような構成を有する演算ユニットを搭載し、複数回の判定処理を実行する際、ＭＰＵ２２０に判定演算の命令を入力し、フラグレジスタ２２２の所定ビットに出力される値を参照して判定処理を実行する任意の手段に対して適用できる。そのため、このような手段を有するＰＣ、携帯端末、携帯電話、ＩＣチップ、リーダ／ライタ、及び各種の電子機器等に対して適用可能である。
【００８９】
＜２：まとめ＞
本実施形態に係る技術は、複数回の認証処理を実行する認証装置に適用される。例えば、利用者の個人識別番号ＰＩＮを利用した相手認証と、乱数ｒを利用した鍵共有を実施するＩＣカード等に適用できる。このような構成を適用すると、非正規利用者の排除と、過去のデータを利用したなりすまし攻撃を防止することができる。但し、認証処理の際に実施される判定処理を実際に実行するＭＰＵのフラグレジスタ値が「１」又は「０」に固定されてしまうと、いずれの認証も不正に成立してしまうという問題を有している。
【００９０】
こうした問題に対し、本実施形態は、認証成立処理を条件式が「真」である場合に実施する部分と、「偽」である場合に実施する部分とを交互又はランダムに実装する方法を提案している。このような実装方法を適用することで、フラグレジスタの値が「０」である場合に認証成立となる処理と、「１」である場合に認証成立となる処理とが実装される。その結果、フラグレジスタの値が固定化された場合であっても、攻撃者による不正な認証成立処理の実施を防止することが可能になる。
【００９１】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【００９２】
例えば、上記の実施形態に関する説明の中では、説明を容易にするために本実施形態の技術を外部機器との間の相互認証へと適用する方法が主に示されていた。しかし、本実施形態に係る技術は、認証装置の一例であるＩＣカード等の内部で実行される様々な認証処理に対して適用することができる。例えば、ＩＣカード等の内部で実行されるプログラム認証に適用することができる。ＩＣカード等には、様々なサービスを提供するためにアプリケーションプログラムが搭載されている。また、ＩＣカード等には、例えば、起動時に実行されてアプリケーションプログラム等の実行環境を形成するためのファームウェアが搭載されている。
【００９３】
これらファームウェアやアプリケーションプログラムは、ＩＣカード等に格納された各種の情報を読み出したり、ＩＣカード等に情報を書き込むために利用される。そのため、これらファームウェアやアプリケーションプログラムの改竄を高いレベルで防止する必要がある。多くの場合、ＩＣカード等の内部では、ファームウェアやアプリケーションプログラムの改竄を防止するためにプログラム認証が行われる。しかし、レーザ照射等のタンパリング攻撃が行われると、ＩＣカード等の内部で実行される認証処理が無効化されてしまう。そこで、ファームウェアやアプリケーションプログラムの認証処理に本実施形態の技術を適用し、耐タンパ性を高めることが重要になる。
【００９４】
例えば、実行対象のアプリケーションプログラムの認証処理と、そのアプリケーションプログラムの実行環境を形成するために用いるファームウェアの認証処理とを続けて行い、その際に本実施形態の技術を適用する。このような方法を用いることで、レーザ照射等のタンパリング攻撃によりプログラム認証を無効化しつつ、不正なアプリケーションプログラムが実行されることを効果的に防止することができる。このように、本実施形態に係る技術は、外部機器との間で相互に実行される認証処理のみならず、機器内部で実行される認証処理にも大きな効果を発揮する。
【符号の説明】
【００９５】
１０    ＩＣカード利用者端末
１２    入力デバイス
１４    表示デバイス
１６    演算装置
１８    読み書き装置
２０    ＩＣカード
２２    ＩＣチップ
１０２    通信部
１０４    乱数取得部
１０６    乱数生成部
１０８    記憶部
１１０    暗号化部
１１２    共通鍵生成部
１１４    復号部
２０２    通信部
２０４    第１乱数生成部
２０６    記憶部
２０８    復号部
２１０    ＰＩＮ確認部
２１２    乱数確認部
２１４    第２乱数生成部
２１６    暗号化部
２１８    共通鍵生成部
２２０    ＭＰＵ
２２２    フラグレジスタ
【図１】
2010250374.tif 000003
【図２】
2010250374.tif 000004
【図３】
2010250374.tif 000005
【図４】
2010250374.tif 000006
【図５】
2010250374.tif 000007
【図６Ａ】
2010250374.tif 000008
【図６Ｂ】
2010250374.tif 000009
【図７】
2010250374.tif 000010
【図８】
2010250374.tif 000011
【図９】
2010250374.tif 000012
【図１０】
2010250374.tif 000013