説明

集積回路、暗号通信装置、暗号通信システム、情報処理方法、及び暗号通信方法

【課題】不正複製ICの利用を防止することが可能な集積回路を提供すること。
【解決手段】素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、前記所定の秘密情報を利用する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号部と、を備える、集積回路が提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、集積回路、暗号通信装置、暗号通信システム、情報処理方法、及び暗号通信方法に関する。
【背景技術】
【0002】
クレジットカード、キャッシュカード、プリペイドカード、身分証明書、各種会員証等、様々な場面で多種多様なカードが利用されている。このような各種カードには、カードの種類、発行者、利用者等に関する情報が記録されている。例えば、磁気カードの場合、こうした情報は、カード上の磁気ストライプに記録されている。そのため、スキミングと呼ばれる手法により磁気情報が不正に読み取られたり、改竄されたりする危険性がある。一方、カードの普及に伴い、カードを利用した多種多様なサービスが提供されてきており、カードに記録される情報の多量化及び高価値化が進んでいる。そのため、より大量のデータを安全に保護することが可能なカードの実現が求められている。
【0003】
こうした要求に対し、最近ではカード内部に小型の半導体集積回路(以下、IC)を搭載したICカードと呼ばれるカードが利用されるようになってきた。ICカードにおいては、各種の情報がICに設けられた不揮発性メモリに格納される。そのため、磁気カードよりも多くの情報を記録することができる。また、ICには暗号回路が搭載されており、ICカードの情報を読み書きするリーダ/ライタ端末(以下、端末)との間で通信する際、相互認証及び暗号通信が実施される。そのため、通信が傍受されたとしても、相互認証及び暗号通信に用いる鍵を知らない限り、その内容を取得することは極めて困難である。
【0004】
相互認証に利用される鍵は、例えば、ICの配線構造の一部として埋め込まれたり、不揮発性メモリに格納されたプログラムデータの一部として保持されたりしている。そのため、ICから鍵を取得するためには、ICに対するリバースエンジニアリングを実施するか、IC及びその不揮発性メモリに格納されたプログラムデータを複製する必要がある。しかし、このようなリバースエンジニアリングや複製行為等の不正解析行為を実施するには専門的な知識と高度な解析設備とが必要とされる。そのため、不正解析行為により得られた情報を利用して不正な端末や不正なICカードを作成することは困難であると考えられている。
【0005】
こうした理由から、現在では、衛星有料放送用のカードや電子マネーを取り扱うカード等、金銭情報等の高価値な情報を多量に保持する用途でICカードが広く利用されるようになってきている。また、高価値な情報を記録したICカードを用いて様々なサービスが提供されるようになってきている。一方で、ICに対する高度な不正解析技術や、テスト回路を利用した鍵の不正取得技術等、様々な攻撃手法が考案されている。さらに、最近ではIC全体の構造を露呈して複製ICを作成してしまう技術も研究されている。ICが複製されると、ICの回路構造や不揮発性メモリの内容も複製されるため、相互認証及び暗号通信に利用する鍵までもが複製されてしまう。その結果、相互認証及び暗号通信が実質的に無効化されてしまうことになる。
【0006】
こうした不正複製ICの利用防止対策としては、例えば、下記の非特許文献1に記載された手法が利用できる。同文献に記載の手法は、Physical Unclonable Function(PUF)を利用して不正複製ICと本物のICとを区別し、本物のICとの間でのみ認証処理及び暗号通信が実現されるようにする技術に関する。なお、PUFとは、ICの設計は同一であるものの、実際に製造される際に生じるIC毎のばらつきを利用して、同一の入力値に対してIC毎に異なる値を出力するよう構成された一種の演算回路である。従って、同じ入力値であっても、本物のICに搭載されたPUFが出力する出力値と、不正複製ICに搭載されたPUFが出力する出力値とが異なる。同文献に記載の技術は、このようなPUFの性質を利用したものである。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】G.E.Suh and S.Devadas, “Physical Unclonable Functions for Device Authentication and Secret Key Generation”, The 44th Design Automation Conference, pp.9−14, 2007
【発明の概要】
【発明が解決しようとする課題】
【0008】
上記の文献に記載の技術について簡単に説明する。当該技術は、IC毎にPUFを利用して生成した入力値(以下、チャレンジ値)と出力値(以下、レスポンス値)のペアを多数保持しておき、認証の際、あるチャレンジ値をPUFに入力し、その出力と保持しているレスポンス値とを比較するというものである。当然、認証の際にチャレンジ値を入力したICが本物のICであればレスポンス値が一致し、不正複製ICであればレスポンス値が不一致となる。通常、チャレンジ値とレスポンス値のペアは、ICの製品出荷前に各ICついて生成され、製造業者等(以下、センタ)により保持される。そして、センタが保持するペアの情報を認証者が参照し、認証の際に各ICに対してチャレンジ値を提供すると共に、そのICから取得されたレスポンス値を用いて上記の比較処理を実施する。
【0009】
しかしながら、上記文献に記載の技術等、チャレンジ値とレスポンス値のペア(以下、チャレンジ/レスポンス)を多数保持する技術を用いると、非常に大きなサイズのデータを格納可能なデータベースが必要になる。例えば、セキュリティを維持するために1つのICに対して複数のペアを利用する場合、流通するIC数×各ICが利用するペア数分だけチャレンジ/レスポンスが必要になる。このようなデータベースをセンタに構築することは不可能でないかもしれない。しかし、センタのデータベースにアクセスできる端末しかICとの間で認証処理を行うことができないという問題がある。さらに、ICと端末との間で相互認証をしようとする場合、このようなデータベースをICに格納することは現実的に不可能であるため、実際上、上記技術を用いて相互認証を実現することができないという問題がある。
【0010】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、各ICに対するチャレンジ/レスポンスが格納されたデータベースを用いずにPUFを用いたセキュアな認証を実現することが可能な、新規かつ改良された集積回路、暗号通信装置、暗号通信システム、情報処理方法、及び暗号通信方法を提供することにある。
【課題を解決するための手段】
【0011】
上記課題を解決するために、本発明のある観点によれば、素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、前記所定の秘密情報を利用する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号部と、を備える、集積回路が提供される。
【0012】
また、上記の集積回路は、外部から前記所定値が与えられた際に、当該所定値を前記演算回路に入力して前記出力値を取得すると共に当該所定値を前記記憶部に格納する出力値取得部と、前記所定値と共に前記所定の秘密情報が与えられた際に、前記出力値取得部により前記演算回路を用いて取得された出力値を鍵として当該所定の秘密情報を暗号化し、当該暗号化処理により得られた暗号文を前記記憶部に格納する暗号化部と、をさらに備えていてもよい。
【0013】
また、前記記憶部には、前記所定の秘密情報として相互認証用の鍵が前記出力値を鍵とする暗号文の形で格納されていてもよい。その場合、前記復号部は、前記相互認証用の鍵を用いて相互認証する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記相互認証用の鍵を復元する。
【0014】
また、上記課題を解決するために、本発明の別の観点によれば、素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として、外部装置との間で共有する所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、前記所定の秘密情報を利用する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号部と、を有する、集積回路と、前記外部装置との間で相互認証することにより共有情報を取得する相互認証部と、前記相互認証部による相互認証で取得された共有情報と前記復号部で復元された所定の秘密情報とを組み合わせて暗号通信用の鍵を生成する暗号通信鍵生成部と、前記暗号通信鍵生成部で生成された暗号通信用の鍵を用いて前記外部装置との間で暗号通信を実行する暗号通信部と、を備える、暗号通信装置が提供される。
【0015】
また、上記課題を解決するために、本発明の別の観点によれば、素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、前記所定の秘密情報を利用する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号部と、を有する、集積回路と、第2の通信装置と相互認証することにより共有情報を取得する相互認証部と、前記第2の通信装置と相互認証が成功して共有情報を取得した場合に、前記復号部を用いて前記所定の秘密情報を復元し、当該所定の秘密情報と前記共有情報とを組み合わせて暗号通信用の鍵を生成する暗号通信鍵生成部と、前記暗号通信鍵生成部で生成された暗号通信用の鍵を用いて前記第2の通信装置との間で暗号通信を実行する暗号通信部と、を備える、第1の通信装置と、素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として前記所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、前記所定の秘密情報を利用する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号部と、を有する、集積回路と、前記第1の通信装置と相互認証することにより共有情報を取得する相互認証部と、前記第1の通信装置と相互認証が成功して共有情報が取得された場合に、前記復号部を用いて前記所定の秘密情報を復元し、当該所定の秘密情報と前記共有情報とを組み合わせて暗号通信用の鍵を生成する暗号通信鍵生成部と、前記暗号通信鍵生成部で生成された暗号通信用の鍵を用いて前記第1の通信装置との間で暗号通信を実行する暗号通信部と、を備える、第2の通信装置と、を含む、暗号通信システムが提供される。
【0016】
また、前記第1の通信装置は、前記第1及び第2の通信装置が共に保持する保持情報に対し、前記暗号通信鍵生成部で生成された暗号通信用の鍵をパラメータとする所定の演算処理を実行する演算部と、前記演算部から出力された第1の演算結果を前記第2の通信装置に送信する送信部と、をさらに備えていてもよい。そして、前記第2の通信装置は、前記第1及び第2の通信装置が共に保持する保持情報に対し、前記暗号通信鍵生成部で生成された暗号通信用の鍵をパラメータとする所定の演算処理を実行する演算部と、前記演算部から出力された第2の演算結果を前記第1の通信装置に送信する送信部と、をさらに備えていてもよい。この場合、前記第1の通信装置は、前記第2の通信装置から受信した前記第2の演算結果と前記第1の演算結果を比較する。さらに、前記第2の通信装置は、前記第1の通信装置から受信した前記第1の演算結果と前記第2の演算結果を比較する。そして、前記第1及び第2の通信装置が有する暗号通信部は、前記第1及び第2の演算結果がいずれも一致した場合に前記暗号通信を実行する。
【0017】
また、上記課題を解決するために、本発明の別の観点によれば、素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、を有する集積回路を利用し、前記所定の秘密情報を利用する際、前記記憶部に格納された所定値を前記演算回路に入力し、当該所定値に対応する出力値を取得する出力値取得ステップと、前記出力値取得ステップで前記演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号ステップと、を含む、情報処理方法が提供される。
【0018】
また、上記の情報処理方法は、外部装置との間で相互認証することにより共有情報を取得する相互認証ステップと、前記相互認証ステップによる相互認証で取得された共有情報と前記復号ステップで復元された所定の秘密情報とを組み合わせて暗号通信用の鍵を生成する鍵生成ステップと、前記鍵生成ステップで生成された暗号通信用の鍵を用いて前記外部装置との間で暗号通信を実行する暗号通信ステップと、をさらに含んでいてもよい。
【0019】
また、上記課題を解決するために、本発明の別の観点によれば、第1の通信装置により、第2の通信装置と相互認証することにより共有情報を取得する相互認証ステップと、素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、を有する集積回路を利用し、前記第2の通信装置とに間で相互認証が成功して共有情報を取得した場合に、前記記憶部に格納された所定値を前記演算回路に入力し、当該所定値に対応する出力値を取得する出力値取得ステップと、前記出力値取得ステップで前記演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号ステップと、前記復元ステップで復元された所定の秘密情報と前記共有情報とを組み合わせて暗号通信用の鍵を生成する鍵生成ステップと、前記鍵生成ステップで生成した暗号通信用の鍵を用いて前記第2の通信装置との間で暗号通信を実行する暗号通信ステップと、前記第2の通信装置により、第1の通信装置と相互認証することにより共有情報を取得する相互認証ステップと、素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、を有する集積回路を利用し、前記第2の通信装置とに間で相互認証が成功して共有情報を取得した場合に、前記記憶部に格納された所定値を前記演算回路に入力し、当該所定値に対応する出力値を取得する出力値取得ステップと、前記出力値取得ステップで前記演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号ステップと、前記復元ステップで復元された所定の秘密情報と前記共有情報とを組み合わせて暗号通信用の鍵を生成する鍵生成ステップと、前記鍵生成ステップで生成した暗号通信用の鍵を用いて前記第1の通信装置との間で暗号通信を実行する暗号通信ステップと、を含む、暗号通信方法が提供される。
【0020】
また、上記課題を解決するために、本発明の別の観点によれば、上記の情報処理方法、又は暗号通信方法の各ステップをコンピュータに実現させるためのプログラムが提供されうる。さらに、上記課題を解決するために、本発明の別の観点によれば、当該プログラムが記録されたコンピュータにより読み取り可能な記録媒体が提供される。
【発明の効果】
【0021】
以上説明したように本発明によれば、各ICに対するチャレンジ/レスポンスが格納されたデータベースを用いずにPUFを用いたセキュアな認証を実現することが可能になる。
【図面の簡単な説明】
【0022】
【図1】PUFの動作を説明するための説明図である。
【図2】PUFを利用した認証処理方法の一例を示す説明図である。
【図3】PUFを利用した認証処理方法の一例を示す説明図である。
【図4】PUFを利用した認証処理方法の一例を示す説明図である。
【図5】PUFを利用した認証処理方法の一例を示す説明図である。
【図6】PUFを利用した認証処理方法の一例を示す説明図である。
【図7】PUFを利用した認証処理方法の一例を示す説明図である。
【図8】PUFを利用した認証処理方法の一例を示す説明図である。
【図9】本発明の第1実施形態に係るICカードの一構成例を示す説明図である。
【図10】同実施形態に係るICカード利用者端末の一構成例を示す説明図である。
【図11】同実施形態に係る認証処理の一部(登録フェーズ)に関する処理の流れを示す説明図である。
【図12】同実施形態に係る認証処理の一部(登録フェーズにおけるPUF処理動作)に関する処理の流れを示す説明図である。
【図13】同実施形態に係る認証処理の一部(認証フェーズ)に関する処理の流れを示す説明図である。
【図14】同実施形態に係る認証処理の一部(認証フェーズ)に関する処理の流れをより具体的に示す説明図である。
【図15】同実施形態に係る認証処理の一部(認証フェーズ)に関する処理の流れをより具体的に示す説明図である。
【図16】本発明の第2実施形態に係るICカードの一構成例を示す説明図である。
【図17】同実施形態に係るICカード利用者端末の一構成例を示す説明図である。
【図18】同実施形態に係る認証処理の一部(認証フェーズ)に関する処理の流れを示す説明図である。
【図19】同実施形態に係る認証処理の一部(鍵一致確認フェーズ)に関する処理の流れを示す説明図である。
【図20】同実施形態に係る認証処理の一部(鍵一致確認フェーズ)に関する処理の流れをより詳細に示す説明図である。
【図21】同実施形態に係る認証処理の一部(鍵一致確認フェーズ)に関する処理の流れをより詳細に示す説明図である。
【図22】本発明の第3実施形態に係るICカードの一構成例を示す説明図である。
【図23】同実施形態に係るICカード利用者端末の一構成例を示す説明図である。
【図24】同実施形態に係る認証処理の一部(認証フェーズ)に関する処理の流れを示す説明図である。
【図25】同実施形態に係る認証処理の一部(認証フェーズ)に関する処理の流れをより具体的に示す説明図である。
【図26】同実施形態に係る認証処理の一部(認証フェーズ)に関する処理の流れをより具体的に示す説明図である。
【発明を実施するための形態】
【0023】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0024】
[説明の流れについて]
ここで、以下に記載する本発明の実施形態に関する説明の流れについて簡単に述べる。まず、図1を参照しながら、PUFの動作について簡単に説明する。次いで、図2〜図8を参照しながら、チャレンジ/レスポンスを格納したデータベースを利用する認証処理方法について簡単に説明する。その説明の中で、本発明の各実施形態に係る技術が解決しようとする課題について述べる。
【0025】
次いで、図9、図10を参照しながら、本発明の第1実施形態に係るICカード200、及びICカード利用者端末300の機能構成について説明する。この説明の中で、同実施形態におけるセンタ100の役割についても述べる。さらに、図11を参照しながら、後述する登録フェーズにおいて実行される処理の流れについて説明する。そして、図12を参照しながら、PUFを利用する部分に関するICカード200及びICカード利用者端末300の処理動作について説明する。次いで、図13〜図15を参照しながら、後述する認証フェーズにおいて実行される処理の流れについて説明する。
【0026】
次いで、図16、図17を参照しながら、本発明の第2実施形態に係るICカード230、及びICカード利用者端末330の機能構成について説明する。次いで、図18を参照しながら、認証フェーズにおいてICカード利用者端末330及びICカード230により実行される処理の流れについて説明する。次いで、図19〜図21を参照しながら、後述する鍵一致フェーズにおいてICカード利用者端末330及びICカード230により実行される処理の流れについて説明する。
【0027】
次いで、図22、図23を参照しながら、本発明の第3実施形態に係るICカード250、及びICカード利用者端末350の機能構成について説明する。次いで、図24〜図26を参照しながら、認証フェーズにおいてICカード利用者端末350及びICカード250により実行される処理の流れについて説明する。最後に、同実施形態の技術的思想について纏め、当該技術的思想から得られる作用効果について簡単に説明する。
【0028】
(説明項目)
1:PUFを利用した認証処理方法
1−1:PUFの動作
1−2:データベース及びPUFを利用する認証処理方法
2:第1実施形態
2−1:ICカード200の機能構成
2−2:ICカード利用者端末300の機能構成
2−3:登録フェーズの処理
2−4:認証フェーズの処理
3:第2実施形態
3−1:ICカード230の機能構成
3−2:ICカード利用者端末330の機能構成
3−3:認証フェーズの処理
3−3−1:全体的な処理の流れ
3−3−2:鍵一致確認フェーズ
4:第3実施形態
3−1:ICカード250の機能構成
3−2:ICカード利用者端末350の機能構成
3−3:認証フェーズの処理
5:まとめ
【0029】
<1:PUFを利用した認証処理方法>
まず、本発明に係る実施形態について説明するに先立ち、PUFを利用した一般的な認証処理方法の一例について説明する。なお、ここで説明する認証処理方法の他にも、例えば、国際公開WO2007072450や国際公開WO2008152564に類似の技術が開示されている。そして、これらの技術は、いずれも後述する課題を包含している。そして、後述する本発明の各実施形態を適用することにより、当該課題が解決される。
【0030】
[1−1:PUFの動作]
まず、図1を参照しながら、PUFの動作について説明する。図1は、PUFの動作を示す説明図である。PUFは、チャレンジ値(challenge)の入力に対してレスポンス値(response)を出力する一種の演算回路である。但し、同一のPUFに対して同一のチャレンジ値が入力された場合、何度入力してもPUFから同じレスポンス値が出力されるという特性がある。また、PUFの入出力特性は、そのPUFが搭載される素子に依存して決まる。そのため、同じ構成のPUFが搭載されていても、異なるICに搭載されたPUFは異なる入出力特性を有する。つまり、同一のチャレンジ値を2つの異なるICに搭載された同一構成のPUFに入力すると、2つのPUFから出力されたレスポンス値は違うものとなる。
【0031】
このような性質を利用すると、図1に示すように、本物のIC(Original)と不正コピーされたIC(Copy)とを容易に見分けることができる。
【0032】
例えば、本物のICに予め所定のチャレンジ値(challenge)を入力し、PUFから出力されたレスポンス値(response1)を取得しておく。その後、認証処理を実行する際に、認証の対象となるICに対して同じチャレンジ値(challenge)を入力し、そのICのPUFから出力されたレスポンス値(response’)を取得する。そして、取得したレスポンス値(response’)と予め取得しておいたレスポンス値(response1)とを比較し、一致すれば認証成立とし、不一致の場合には認証不成立とする。このとき、認証対象のICが不正コピーIC(Copy)である場合、取得したレスポンス値(response’=response1)は、予め取得したおいたレスポンス値(response1≠response2)と異なる。そのため、そのICを不正コピーICと判定して認証不成立とすることができる。
【0033】
[1−2:データベース及びPUFを利用する認証処理方法]
図1に示したPUFの動作及び特性を利用した一般的な認証処理方法として、例えば、図2に示すような手法が考案されている。図2は、データベース及びPUFを利用した認証処理方法(以下、SD07)を示す説明図である。以下、SD07について説明する。
【0034】
SD07の認証処理方法は、センタにチャレンジ/レスポンスを登録するための「登録フェーズ」と、登録フェーズで登録されたチャレンジ/レスポンスを利用してICを認証する「認証フェーズ」とに分けられる。なお、センタは、例えば、ICの製造業者や信頼のおける第三者である。また、各チャレンジ値は、例えば、センタにおいて疑似乱数生成器等を用いてランダムに生成される。図2の例では、センタにより予めN個のチャレンジ値(chal,…,chal)が生成されているものとする。
【0035】
登録フェーズでは、まず、センタから各ICにチャレンジ値が与えられる。例えば、第k番目のIC(以下、IC;k=1,…,N)に対しては、チャレンジ値(chal)が与えられる。チャレンジ値chalが与えられると、ICは、与えられたチャレンジ値chalをPUFに入力してレスポンス値(resp)を生成する。このようにして生成されたレスポンス値respは、センタにより取得される。センタは、全てのICからレスポンス値(resp,…,resp)を取得すると、取得したレスポンス値と各ICに与えたチャレンジ値とのペアをデータベース(DB)に格納する。このとき、センタは、各ICのID(k=1,…,N)、チャレンジ値chal、レスポンス値respを関連付けてデータベースに格納する。このようにしてデータベースが構築される。
【0036】
一方、認証フェーズでは、まず、ICから端末にIDが入力される。例えば、ICは、端末に対してIDを入力する。ICからIDが入力されると、端末は、データベースを参照し、IDに対応するチャレンジ/レスポンスのレコードを検索する。そして、端末は、検索処理により検出されたチャレンジ/レスポンス(chal,resp)をデータベースから取得する。そして、端末は、ICに対してチャレンジ値chalのみを与える。ICは、与えられたチャレンジ値chalをPUFに入力してレスポンス値respを生成する。そして、ICは生成したレスポンス値respを端末に提供する。
【0037】
ICからレスポンス値respが提供されると、端末は、提供されたレスポンス値respとデータベースから取得したレスポンス値respとを比較し、一致するか否かを確認する。既に説明したPUFの特性から、ICが本物であればレスポンス値respは一致し、不正コピーされたものであればレスポンス値respは不一致となる。また、IC以外のICからIDが誤って入力された場合にも、レスポンス値respが不一致となる。そのため、端末は、レスポンス値respが一致する場合、ICが本物のICであるとして認証成立とする。
【0038】
このような構成にすることで、ICの回路構造及び不揮発性メモリの内容が不正にコピーされたとしても、上記の認証処理により不正ICの利用を未然に防止することが可能になる。但し、この例では、データベースにICの数だけチャレンジ/レスポンスのデータが格納されることになる。また、各ICに1組のチャレンジ/レスポンスしか用意されていないと、レスポンス値respが伝送路で盗聴され、不正に取得されたレスポンス値respが利用された場合に不正な認証が成立してしまう。そのため、セッション毎にチャレンジ/レスポンスの組を変更する方法が用いられる。
【0039】
この方法を利用する場合、IC毎に複数組のチャレンジ/レスポンスが必要になる。そこで、センタは、登録フェーズにおいて複数のチャレンジ値を用いてIC毎に複数組のチャレンジ/レスポンスを生成する。そして、センタは、生成したチャレンジ/レスポンスをデータベースに登録する。このような登録処理により、例えば、図3に示すようなデータベースが構築される。但し、センタが各ICに対してm個のチャレンジ値を入力し、IC毎にm組のチャレンジ/レスポンスが生成されたものとする。また、ICに対応する第j番目のチャレンジ値をchal(k,j)、レスポンス値をresp(k,j)と表記した。図3に例示したデータベースの場合、そのサイズは、m×IC製造数×1ペアのデータサイズで決まる。
【0040】
例えば、ID、チャレンジ値、及びレスポンス値のデータサイズをそれぞれ128bit、ICの製造総数N=10,000,000、ペア数をmとすると、データベースのサイズは、10,000,000×(m×(128+128)+128)≒(320m+160)MBとなる。従って、m=10ならばデータベースのデータサイズは約32GBとなり、m=100ならば約320GBとなる。なお、各チャレンジ/レスポンスのペアは認証処理に利用される度に削除される。そのため、ペア数mは、ICが利用可能な認証回数に相当する。従って、実際にはペア数mをより大きな値に設定する必要がある。さらに、データベースに格納されるチャレンジ/レスポンスの情報は、ICの真贋確認に用いる秘密情報であるため、厳重に秘密管理されるべきものである。
【0041】
こうした理由から、上記のようなデータベースを管理できるのはセンタ等に限られてしまう。そのため、センタ等が管理する上記のようなデータベースにアクセス可能な端末しか上記の認証方法を利用できないということになる。また、端末レベルはおろか、ICカードが上記のような巨大なデータベースを保持することは現実的に不可能であるため、端末がデータベースにアクセスできたとしても、ICとの間で相互認証を実現することはできない。その結果、SD07の方法を利用して相互認証を実現することは実質的に不可能であると言わざるを得ないのである。
【0042】
(SD07方式における認証処理の流れについて)
ここで、図4〜図8を参照しながら、SD07方式に係る認証フェーズの処理について、その流れをより詳細に説明する。
【0043】
まず、図4を参照する。図4は、認証フェーズにおけるセンタ、端末、ICの全体的な処理の流れを示す説明図である。なお、端末をICと表記し、ICをICと表記する場合がある。また、ICのIDはIDであるとする。さらに、データベースはセンタにより管理されているものとする。
【0044】
認証フェーズでは、まず、端末からICに対してIDの発行要求が送信される(S12)。端末からIDの発行要求を受けると、ICは、自身のIDであるIDを端末に対して返信する(S14)。ICからIDを受信すると、端末は、受信したIDをセンタに送信する(S16)。端末からIDを受信すると、センタは、データベースを参照し、IDに対応するチャレンジ/レスポンスのレコードを検索する。図3のように、各IDに対して複数のレコードが存在する場合、センタは、IDで特定されたレコードの中からランダムにレコードを選択し、チャレンジ/レスポンスを取得すると共に、取得したチャレンジ/レスポンスのレコードを削除する(S18)。
【0045】
例えば、(chal(R,j),resp(R,j))を取得した場合、センタは、(chal(R,j),resp(R,j))を端末に送信する(S20)。センタから送信された(chal(R,j),resp(R,j))を受信すると、端末は、チャレンジ値chal(R,j)のみをICに送信する(S22)。端末から送信されたチャレンジ値chal(R,j)を受信すると、ICは、受信したチャレンジ値chal(R,j)をPUFに入力し(S24)、PUFからレスポンス値resp(R,j)’を取得する(S26)。次いで、ICRは、取得したレスポンス値resp(R,j)’を端末に送信する(S28)。
【0046】
ICからレスポンス値resp(R,j)’を受信すると、端末は、受信したレスポンス値resp(R,j)’と、センタから取得したレスポンス値resp(R,j)とを比較し、一致していれば認証成立とし、不一致の場合には認証不成立とする(S30)。SD07においては、このような流れで認証処理が実行される。なお、図4の例では、ステップS18で一度使用したチャレンジ/レスポンスのレコードが削除されるため、盗聴されたレスポンス値を再び用いて認証を試みるリプレイ攻撃に対しても耐性を有する。図4の例は、センタ、端末、ICの間で相互に実行される処理を中心に示したものであった。そこで、センタ、端末、ICが個々に実行する処理の流れについて以下で説明する。
【0047】
(端末の処理)
まず、図5を参照しながら、SD07の認証処理において端末が実行する処理の流れを説明する。図5に示すように、端末は、ICにID発行要求を送信する(S32)。次いで、端末は、ICからIDとしてIDを受信する(S34)。次いで、端末は、ICから受信したIDをセンタに送信する(S36)。次いで、端末は、データベースに格納されたIDに対応するチャレンジ/レスポンス(chal(R,j),resp(R,j))をセンタから取得する(S38)。次いで、端末は、ICにチャレンジ値chal(R,j)を送信する(S40)。次いで、端末は、ICからレスポンス値resp(R,j)’を受信する(S42)。
【0048】
次いで、端末は、センタから取得したレスポンス値resp(R,j)と、ICから取得したレスポンス値resp(R,j)’とが一致するか否かを判定する(S44)。resp(R,j)=resp(R,j)’である場合、端末は、認証成立(S46)とし、一連の認証処理を終了する。一方、resp(R,j)≠resp(R,j)’である場合、端末は、認証不成立(S48)とし、エラー処理を実行して一連の処理を終了する。このように、端末は、認証処理に利用するチャレンジ/レスポンスを取得するためにセンタのデータベースにアクセスする必要がある。また、センタから取得したチャレンジ/レスポンスのうち、チャレンジ値のみをICに入力し、ICから取得されるレスポンス値を予め取得したレスポンス値と比較することで認証の正否を判定している。
【0049】
(ICの処理)
次に、図6を参照しながら、SD07の認証処理においてIC(IC)が実行する処理の流れを説明する。図6に示すように、ICは、端末からID発行要求を受信すると(S52)、受信した発行要求に応じて端末に自身のIDであるIDを送信する(S54)。次いで、ICは、端末からチャレンジ値chal(R,j)を受信すると(S56)、後述するPUF処理動作Aを実行してレスポンス値resp(R,j)’を生成する(S58)。そして、ICは、PUF処理動作Aで生成したレスポンス値resp(R,j)’を端末に送信する(S60)。
【0050】
ここで、図7を参照しながら、PUF処理動作Aの処理について説明する。ICは、ステップS56で端末からチャレンジ値chal(R,j)を取得すると(S62)、取得したチャレンジ値chal(R,j)をPUFに入力してレスポンス値resp(R,j)’を取得する(S64)。次いで、ICは、PUFから取得したレスポンス値resp(R,j)’をチャレンジ値chal(R,j)に対応するレスポンス値resp(R,j)’であるとして出力する(S66)。このように、認証フェーズにおいてICが実行する主な処理は、端末から受信したチャレンジ値chal(R,j)をPUFに入力してレスポンス値resp(R,j)’を生成することである。
【0051】
(センタの処理)
次に、図8を参照しながら、SD07の認証処理においてセンタが実行する処理の流れを説明する。図8に示すように、センタは、端末からICのIDであるIDを受信すると(S72)、IDに対応するデータベースDB(IDに対応するレコードの集合)を検索し(S74)、検出されたDBの中から任意にチャレンジ/レスポンス(chal(R,j),resp(R,j))を選択する(S76)。次いで、センタは、選択した(chal(R,j),resp(R,j))を端末に送信し(S78)、(chal(R,j),resp(R,j))をデータベースから削除する(S80)。このように、一度利用したチャレンジ/レスポンスを削除することでリプレイ攻撃に対する耐性を得ることができる。
【0052】
以上説明したように、SD07の方法は、登録フェーズにおいて各ICのPUFに対するチャレンジ/レスポンスのペアを格納したデータベースを構築し、認証フェーズにおいてデータベースを利用することにより不正複製ICの利用を防止するというものである。しかしながら、不正複製ICの利用防止を目的として上記のようにデータベースを利用すると、データベースのサイズが巨大になってしまう。また、このようなデータベースをICに搭載することは現実的に不可能であることから、端末とICとの間におけるSD07を利用した相互認証は実現不可能である。
【0053】
こうした問題点に対し、後述する各実施形態においては、巨大なデータベースを構築せずに、PUFを利用した不正複製ICの利用防止を実現することが可能な認証処理方法が提案される。また、当該認証処理方法を用いることにより、端末とICとの間の相互認証も実現できるようになる。
【0054】
(相互認証に関して)
既に述べた通り、登録フェーズにおいて構築されたデータベースに格納されている情報は、認証フェーズにおいて端末が各ICを認証する際に利用される。上記の通り、SD07の方法を用いると、データベースのサイズは非常に大きなものとなりうる。しかし、センタは十分な環境(計算能力、記憶能力)を保持していることが多い。さらに、端末とセンタとは安全な通信路を介して接続されている。そのため、認証を実施するために端末自身がデータベースを秘密に保持しておく必要はない。そのため、センタが大きなサイズのデータベースを秘密に保持しておく必要があるものの、SD07の方式を利用したICの認証は十分に実現可能である。
【0055】
しかし、金銭情報等の高価値な情報が記録されたICカードを扱う場合、端末によるICカードの認証のみならず、ICカードによる端末の認証も要求される。SD07の方法を利用して相互認証を実現するためには、各端末のICにもPUFを搭載し、各端末用に生成されたチャレンジ/レスポンスのペアをデータベースに登録しておく必要がある。さらに、各ICカードがデータベースに対して自由にアクセス可能な状況を構築しておくか、そのデータベースをICカードが保持しておく必要がある。ICカードがデータベースを保持しておくことは現実的でない点については既に述べた。また、ICカードは、通常、端末を通じてしかセンタのデータベースにアクセスすることができない。
【0056】
従って、データベースをセンタが秘密に保持している場合、端末の認証成立が確認できていない状態にあるICカードは、端末を認証するために用いるデータベースにアクセスすることができない。そのため、データベースをICカードの不揮発性メモリに格納しておくことができない以上、SD07の方法を用いて相互認証を実現することはできないのである。また、仮にデータベースをICカードに格納できたとしても、ICの回路構成及び不揮発性メモリが複製された場合にはデータベースそのものが複製されてしまうため、不正複製ICにより相互認証が成立してしまう。その結果、不正複製ICの利用を防止するという本来の目的を達成することができないのである。こうした課題は、後述する各実施形態の認証処理方法を用いることで解決することができる。
【0057】
<2:第1実施形態>
まず、本発明の第1実施形態について説明する。本実施形態は、上記のような課題に鑑みて考案されたものであり、端末、ICカード間の相互認証を実現しつつ、不正複製ICの利用を防止することが可能な方法を提供するものである。なお、本実施形態の技術は、PUFの特性を利用して不正複製ICの利用を防止するという点においてSD07と共通しているが、PUFの利用方法が大きく異なる。上記の通り、SD07においては、ICに搭載されたPUFに対して所定の入力を与え、同じ入力に対して予め取得しておいた出力値を再び出力できるか否かに応じて認証の成否を判断している。もちろん、認証が不成立であれば、その後の処理が継続されないため、不正複製ICの利用防止になる。
【0058】
一方、本実施形態の方法は、PUFの特性を利用するものの、PUFの出力値そのものからは判断せず、PUFの出力値により暗号化された秘密情報が認証フェーズにおいて正しく復号できるか否かに応じて認証の成否を判断するというものである。このような構成にすることで、SD07等の方法では必要不可欠であったデータベースが不要になる。さらに、ICが保持すべき情報量も低減することができる。その結果、不正複製ICの利用を防止しつつ、相互認証を実現することが可能となる。なお、このような特徴を持つ本実施形態の認証処理方法は、様々な相互認証方式や秘密情報の確認手段等に適用することが可能である。以下では、その中から選択された一つの具体例について説明する。
【0059】
なお、本実施形態の技術を実現するために利用可能なPUFとしては、例えば、シリコンPUF、オプティカルPUF、デジタルPUF等が挙げられる。シリコンPUFは、製造工程に起因する半導体チップ間のばらつきを利用したものである。また、オプティカルPUFは、コヒーレント光(例えば、レーザ光)が放射された際に生成されるスペクトルパターンの予測不能性を利用したものである。オプティカルPUFとしては、例えば、P.S.Ravikanthによる研究成果“Physical One−Way Functions”,2001が知られている。
【0060】
一方、シリコンPUFについては、例えば、Blaise Gassendらによる“Silicon Physical Random Functions”,Proceedings of the 9th ACM Conference on Computer and Commuinications Security,November 2002に記載がある。もちろん、これらの技術の他にも、現在又は将来において利用可能な他の構成により実現されたPUFを用いることも可能である。さらに言えば、PUFと同様に素子固有の物理的特性により入出力特性が決定される任意の演算回路がこれらのPUFに代えて利用できる。
【0061】
[2−1:ICカード200の機能構成]
まず、図9を参照しながら、本発明の第1実施形態に係るICカード200の機能構成について説明する。この中で、本実施形態に係るセンタ100の主な機能構成についても説明する。図9は、本実施形態に係るICカード200の機能構成を示す説明図である。
【0062】
図9に示すように、ICカード200は、主に、鍵情報取得部202と、レスポンス生成部204と、PUF206と、記憶部208と、暗号化部210と、相互認証部212と、復号部214と、共有鍵生成部216と、暗号通信部218とを有する。なお、記憶部208は、ICカード200に設けられる不揮発性メモリに相当する。また、センタ100は、主に、鍵情報提供部102と、記憶部104とを有する。
【0063】
なお、本実施形態の認証処理方法においても、登録フェーズと認証フェーズとが存在する。そのため、以下では、フェーズ毎に分けてICカード200の機能構成について説明する。但し、本実施形態に係る登録フェーズでは、データベースの構築は行われず、各ICに共通のチャレンジ値(chal)及び秘密情報(mk)が提供される。そして、各ICにおいてチャレンジ値chalに対応するレスポンス値respが生成され、レスポンス値respを鍵として秘密情報mkが暗号化される。この暗号化処理により生成された暗号文C=Eresp(mk)は、各ICにおいてチャレンジ値chalと共に不揮発性メモリに格納される。なお、E(B)は、鍵Aを用いてBを暗号化した暗号文を意味する。また、E(B)をE(A,B)と表記する場合もある。
【0064】
一方、本実施形態に係る認証フェーズでは、各ICが自身で不揮発性メモリに格納した暗号文Cとチャレンジ値chalとを読み出し、そのチャレンジ値chalをPUF206に入力してレスポンス値respを生成する。そして、本実施形態では、生成したrespを用いて各ICが暗号文Cを復号し、暗号文Cから復号して得られた秘密情報mkを利用して暗号通信を実施する。その結果、不正複製ICは正しい秘密情報mkを得られず、暗号通信を実施することができなくなるのである。本実施形態においては、このような方法を用いることで、データベースを利用することなく不正複製ICの利用を防止し、相互認証を実現可能にしているのである。
【0065】
(登録フェーズに関する機能構成について)
まず、登録フェーズに関するICカード200の機能構成について説明する。登録フェーズでは、まず、センタ100からICカード200に対してシステム共通のチャレンジ値chal、及びシステム秘密情報mkが提供される。本実施形態において提供されるチャレンジ値chalは、IC毎に異なるものではなく、センタ100、ICカード200、及び後述するICカード利用者端末300を含むシステム全体で共通のものである。同様に、本実施形態において提供されるシステム秘密情報mkは、IC毎に異なるものではなく、センタ100、ICカード200、及び後述するICカード利用者端末300を含むシステム全体で共通のものである。
【0066】
これらチャレンジ値chal及びシステム秘密情報mkは、センタ100が有する記憶部104に格納されている。そして、登録フェーズにおいて、センタ100が有する鍵情報提供部102により記憶部104から読み出され、各ICカード200に対して提供される。センタ100から提供されたチャレンジ値chal及びシステム秘密情報mkは、ICカード200が有する鍵情報取得部202により取得される。そして、鍵情報取得部202で取得されたチャレンジ値chalは、記憶部208に格納される。また、鍵情報取得部202で取得されたシステム秘密情報mkは、暗号化部210に入力される。
【0067】
さらに、記憶部208に格納されたチャレンジ値chalは、レスポンス生成部204により読み出され、PUF206に入力される。PUF206は、レスポンス生成部204から入力されたチャレンジ値chalに対するレスポンス値respを生成する。ここでPUF206から出力されるレスポンス値respは、ICカード200に固有のものである点に注意されたい。PUF206で生成されたレスポンス値respは、レスポンス生成部204に入力される。このようにしてレスポンス値respを生成すると、レスポンス生成部204は、レスポンス値respを暗号化部210に入力する。
【0068】
上記の通り、暗号化部210には、鍵情報取得部202からシステム秘密情報が入力され、レスポンス生成部204からレスポンス値respが入力される。そこで、暗号化部210は、入力されたレスポンス値respを鍵に利用してシステム秘密情報mkを暗号化する。この暗号化処理により暗号文C=Eresp(mk)が生成される。暗号化部210で生成された暗号文Cは、記憶部208に格納される。ここまでの処理が登録フェーズにおいて実行される。これらの処理の後、ICカード200の記憶部208には、チャレンジ値chal、及び暗号文Cが格納されていることになる。なお、システム秘密情報mkは、ICカード200の内部に保持されない点に注意されたい。
【0069】
(認証フェーズに関する機能構成について)
次に、認証フェーズに関するICカード200の機能構成について説明する。認証フェーズでは、まず、ICカード200とICカード利用者端末300との間で相互認証が実施される。この相互認証に利用する相互認証用の鍵Kauthは、記憶部208に格納されているものとする。そのため、相互認証部212は、記憶部208から相互認証鍵Kauthを読み出し、この相互認証鍵Kauthを利用してICカード利用者端末300との間で相互認証を成立させる。そして、相互認証部212は、相互認証が成立後、ICカード利用者端末300との間でセッションを確立するために利用されるセッション鍵Ksesを取得する。相互認証部212により取得されたセッション鍵Ksesは、共有鍵生成部216に入力される。
【0070】
また、認証フェーズでは、ICカード利用者端末300との間で相互認証が実現した後で、ICカード利用者端末300との間で暗号通信を実現するために用いる共有鍵Kの生成処理が実行される。まず、レスポンス生成部204により記憶部208からチャレンジ値chalが読み出される。そして、レスポンス生成部204は、記憶部208から読み出したチャレンジ値chalをPUF206に入力する。PUF206は、レスポンス生成部204から入力されたチャレンジ値chalに対するレスポンス値respを生成する。そして、PUF206で生成されたレスポンス値respは、レスポンス生成部204に入力される。このようにしてレスポンス生成部204によりPUF206を用いて取得されたレスポンス値respは、復号部214に入力される。
【0071】
さて、ここではPUF206によりレスポンス値respが生成されると記載したが、ICカード200が不正複製ICであった場合、PUF206によりレスポンス値resp’(≠resp)が生成される。登録フェーズでレスポンス値respを生成したICカード200はセンタ100が想定する本物のICである。一方、このICカード200が不正複製されて生成されたICカード200には、記憶部208に格納されている暗号文C及びチャレンジ値chalも含めて同じ構成が再現される。しかし、PUF206の入出力特性だけは本物のICと不正複製ICとで異なる。そのため、レスポンス生成部204が認証フェーズで再びレスポンス値respをPUF206に生成させることで、認証の度に本物のICか不正複製ICかを見分けることができるのである。この点を念頭に置きながら、さらに説明を進める。但し、以下の説明ではICカード200が本物のICであるとする。
【0072】
レスポンス生成部204からレスポンス値respが入力されると、復号部214は、記憶部208から暗号文C=Eresp(C)を読み出す。そして、復号部214は、レスポンス生成部204から入力されたレスポンス値respを鍵として暗号文Cを復号する。この復号処理により復元されたシステム秘密情報mkは、共有鍵生成部216に入力される。このとき、レスポンス生成部204から入力されたレスポンス値が暗号文Cの生成時に使用したものと異なる場合、正しいシステム秘密情報mkが復元されない。つまり、復号部214で復元されたステム秘密情報の正誤により本物のICと不正複製ICとを見分けることができるのである。
【0073】
復号部214からシステム秘密情報mkが入力されると、共有鍵生成部216は、相互認証部212から入力されたセッション鍵Ksesと、復号部214から入力されたシステム秘密情報mkとを組み合わせて共有鍵Kを生成する。例えば、共有鍵生成部216は、ハッシュ関数H(…)を用いて共有鍵K=H(Kses||mk)を生成する。なお、A||Bは、AとBとの連結を意味する。もちろん、システム秘密情報mkとセッション鍵Ksesとを他の所定の方法で組み合わせて共有鍵Kを生成することもできる。上記のハッシュ関数Hを利用する方法は一例であり、他の任意の方法を本実施形態に適用することができる点に注意されたい。
【0074】
共有鍵生成部216で生成された共有鍵Kは、暗号通信部218に入力される。暗号通信部218は、共有鍵生成部216から入力された共有鍵Kを用いてICカード利用者端末300と暗号通信を実施する。もし、復号部214で正しいシステム秘密情報mkが復元されていないと、暗号通信部218には正しい共有鍵Kが入力されないため、暗号通信を実施することができない。例えば、暗号通信部218が取得した暗号文を復号することができない。さらに、暗号通信部218が送信した暗号文をICカード利用者端末300で復号することができない。従って、ICカード200が不正複製ICである場合、ICカード利用者端末300との間の相互認証が成立したとしても、実際にICカード200の情報を読み書きするための暗号通信は実現不可能になるのである。
【0075】
[2−2:ICカード利用者端末300の機能構成]
次に、図10を参照しながら、本実施形態に係るICカード利用者端末300の機能構成について説明する。図10は、本実施形態に係るICカード利用者端末300の機能構成を示す説明図である。なお、本実施形態においては、ICカード200とICカード利用者端末300との間の相互認証を想定しているため、ICカード利用者端末300にもICカード200と実質的に同じ機能構成が設けられる。
【0076】
そのため、図10に示すように、ICカード利用者端末300は、主に、鍵情報取得部302と、レスポンス生成部304と、PUF306と、記憶部308と、暗号化部310と、相互認証部312と、復号部314と、共有鍵生成部316と、暗号通信部318とを有する。なお、記憶部308は不揮発性メモリに相当する。
【0077】
(登録フェーズに関する機能構成について)
まず、登録フェーズに関するICカード利用者端末300の機能構成について説明する。登録フェーズでは、まず、センタ100からICカード利用者端末300に対してシステム共通のチャレンジ値chal、及びシステム秘密情報mkが提供される。上記の通り、本実施形態において提供されるチャレンジ値chalは、センタ100、ICカード利用者端末300、及び後述するICカード利用者端末300を含むシステム全体で共通のものである。同様に、本実施形態において提供されるシステム秘密情報mkは、センタ100、ICカード利用者端末300、及び後述するICカード利用者端末300を含むシステム全体で共通のものである。
【0078】
これらチャレンジ値chal及びシステム秘密情報mkは、センタ100が有する記憶部104に格納されている。そして、登録フェーズにおいて、センタ100が有する鍵情報提供部102により記憶部104から読み出され、各ICカード利用者端末300に対して提供される。センタ100から提供されたチャレンジ値chal及びシステム秘密情報mkは、ICカード利用者端末300が有する鍵情報取得部302により取得される。そして、鍵情報取得部302で取得されたチャレンジ値chalは、記憶部308に格納される。また、鍵情報取得部302で取得されたシステム秘密情報mkは、暗号化部310に入力される。
【0079】
さらに、記憶部308に格納されたチャレンジ値chalは、レスポンス生成部304により読み出され、PUF306に入力される。PUF306は、レスポンス生成部304から入力されたチャレンジ値chalに対するレスポンス値respを生成する。ここでPUF306から出力されるレスポンス値respは、ICカード利用者端末300に固有のものである。もちろん、上記のICカード200において生成されるレスポンス値respとも異なるものである点に注意されたい。PUF306で生成されたレスポンス値respは、レスポンス生成部304に入力される。PUF306を利用してレスポンス値respを生成すると、レスポンス生成部304は、レスポンス値respを暗号化部310に入力する。
【0080】
上記の通り、暗号化部310には、鍵情報取得部302からシステム秘密情報が入力され、レスポンス生成部304からレスポンス値respが入力される。そこで、暗号化部310は、入力されたレスポンス値respを鍵に利用してシステム秘密情報mkを暗号化する。この暗号化処理により暗号文C=Eresp(mk)が生成される。暗号化部310で生成された暗号文Cは、記憶部308に格納される。ここまでの処理が登録フェーズにおいて実行される。これらの処理の後、ICカード利用者端末300の記憶部308には、チャレンジ値chal、及び暗号文Cが格納される。なお、システム秘密情報mkは、ICカード利用者端末300の内部に保持されない点に注意されたい。
【0081】
(認証フェーズに関する機能構成について)
次に、認証フェーズに関するICカード利用者端末300の機能構成について説明する。認証フェーズでは、まず、ICカード利用者端末300とICカード200との間で相互認証が実施される。この相互認証に利用する相互認証用の鍵Kauthは、記憶部308に格納されているものとする。そのため、相互認証部312は、記憶部308から相互認証鍵Kauthを読み出し、この相互認証鍵Kauthを利用してICカード200との間で相互認証を成立させる。そして、相互認証部312は、相互認証が成立後、ICカード200との間でセッションを確立するために利用されるセッション鍵Ksesを取得する。そして、相互認証部312で取得されたセッション鍵Ksesは、共有鍵生成部316に入力される。
【0082】
また、認証フェーズでは、ICカード利用者端末300との間で相互認証が実現した後で、ICカード200との間で暗号通信を実現するために用いる共有鍵Kの生成処理が実行される。まず、レスポンス生成部304により記憶部308からチャレンジ値chalが読み出される。そして、レスポンス生成部304は、記憶部308から読み出したチャレンジ値chalをPUF306に入力する。PUF306は、レスポンス生成部304から入力されたチャレンジ値chalに対するレスポンス値respを生成する。そして、PUF306で生成されたレスポンス値respは、レスポンス生成部304に入力される。このようにしてレスポンス生成部304によりPUF306を用いて取得されたレスポンス値respは、復号部314に入力される。なお、以下の説明ではICカード利用者端末300が本物であると仮定して説明を進める。
【0083】
レスポンス生成部304からレスポンス値respが入力されると、復号部314は、記憶部308から暗号文C=Eresp(C)を読み出す。そして、復号部314は、レスポンス生成部304から入力されたレスポンス値respを鍵として暗号文Cを復号する。この復号処理により復元されたシステム秘密情報mkは、共有鍵生成部316に入力される。このとき、レスポンス生成部304から入力されたレスポンス値が暗号文Cの生成時に使用したものと異なる場合、正しいシステム秘密情報mkが復元されない。
【0084】
復号部314からシステム秘密情報mkが入力されると、共有鍵生成部316は、相互認証部312から入力されたセッション鍵Ksesと、復号部314から入力されたシステム秘密情報mkとを組み合わせて共有鍵Kを生成する。例えば、共有鍵生成部316は、ハッシュ関数H(…)を用いて共有鍵K=H(Kses||mk)を生成する。もちろん、システム秘密情報mkとセッション鍵Ksesとを他の所定の方法で組み合わせて共有鍵Kを生成することもできる。上記のハッシュ関数Hを利用する方法は一例であり、他の任意の方法を本実施形態に適用することができる点に注意されたい。但し、ICカード200と同じ所定の方法で共有鍵Kが生成される点に注意が必要である。
【0085】
共有鍵生成部316で生成された共有鍵Kは、暗号通信部318に入力される。暗号通信部318は、共有鍵生成部316から入力された共有鍵Kを用いてICカード利用者端末300と暗号通信を実施する。もし、復号部314で正しいシステム秘密情報mkが復元されていないと、暗号通信部318には正しい共有鍵Kが入力されないため、暗号通信を実施することができない。従って、ICカード利用者端末300が不正複製されたものである場合、ICカード200との間の相互認証が成立したとしても、実際にICカード200の情報を読み書きするための暗号通信は実現不可能になるのである。
【0086】
以上、ICカード200、及びICカード利用者端末300の機能構成について説明した。なお、上記の機能構成は一例であり、例えば、相互認証の方法や暗号通信に用いる方式等について、適宜変更することが可能である。既に述べたように、本実施形態の技術的特徴は、認証フェーズにおいてICカード200、ICカード利用者端末300が逐次、レスポンス値を生成してシステム秘密情報mkを復元し、その正誤を真偽の判断に利用している点にある。従って、このような技術的特徴の本質的な部分を変更しない限りにおいて、任意に構成を変更することができる。そして、こうした変更を実施したとしても、変更後の構成は本実施形態の技術的範囲に属すると言える。
【0087】
[2−3:登録フェーズの処理]
次に、図11、図12を参照しながら、登録フェーズにおいて実行される処理の流れについて説明する。図11は、登録フェーズにおいて実行される処理の全体的な流れを示す説明図である。一方、図12は、PUFを利用した部分に関する処理の流れを示す説明図である。
【0088】
まず、図11を参照する。図11に示すように、まず、センタ100は、各ICを示すパラメータkを0にセットする(S102)。なお、以下の説明においては、説明の都合上、ICカード200もICカード利用者端末300も単にICと表現することがある。また、各ICを区別するための指標を付してIC等と表現することがある。次いで、センタ100は、パラメータkを1インクリメントする(S104)。次いで、センタ100は、ICの製造数Nを基準にk≦Nであるか否かを判断する(S106)。k≦Nである場合、センタ100は、ステップS108の処理に進行する。一方、k≦Nでない場合、センタ100は、一連の処理を終了する。
【0089】
ステップS108に進行した場合、センタ100は、ICに対し、ICのIDであるIDを指定してシステム共通のチャレンジ値chal、及びシステム秘密情報mkを入力する(S108)。次いで、チャレンジ値chal及びシステム秘密情報mkがセンタ100から入力されたICにおいて後述するPUF処理動作Bが実行される(S110)。PUF処理動作Bが実行されると、再びステップS104の処理に戻り、センタ100によりパラメータkのインクリメント操作が実行され(S104)、それ以降の処理ステップが繰り返し実行される。
【0090】
次に、図12を参照する。図12は、PUF処理動作Bの処理ステップを詳細に示したものである。図12に示すように、まず、ICは、ID、チャレンジ値chal、システム秘密情報mkをセンタ100から取得する(S112)。次いで、ICは、チャレンジ値chalをPUFに入力し、レスポンス値respを取得する(S114)。なお、以下の説明においては、ICのPUFで取得されたレスポンス値を表すためにrespのように指標kを付して表現することにする。次いで、ICは、取得したレスポンス値respを鍵にシステム秘密情報mkを暗号化し、暗号文C=Erespk(mk)を計算する(S116)。そして、ICは、ID、チャレンジ値chal、及びレスポンス値Cを不揮発性メモリに格納し(S118)、PUF処理動作Bの処理ステップを終了する。
【0091】
先に説明した通り、図11、図12に示した流れで処理が実行されることにより、上記ICに相当するICカード200の記憶部208及びICカード利用者端末300の記憶部308にチャレンジ値chalと暗号文Cとが格納される。また、センタ100により発行されたID(=ID)も登録フェーズで記憶部208、308に格納される。
【0092】
[2−4:認証フェーズの処理]
次に、図13〜図15を参照しながら、認証フェーズにおいて実行される処理の流れについて説明する。なお、この説明の中では、ICカード利用者端末300とICカード200との間における認証フェーズの処理を想定することにする。また、ICカード利用者端末300をICと表現し、ICカード200をICと表現することがある。図13は、認証フェーズにおけるICカード利用者端末300とICカード200との間のやり取りも含めた全体的な処理の流れを示す説明図である。図14は、主にICカード利用者端末300において実行される処理の流れを示す説明図である。図15は、主にICカード200において実行される処理の流れを示す説明図である。
【0093】
まず、図13を参照する。図13に示すように、まず、ICカード利用者端末300とICカード200との間で相互認証処理が実施される(S202)。このとき、相互認証が成立すると、ICカード利用者端末300とICカード200との間でセッションを確立する際に利用するセッション鍵Ksesが共有される。なお、このステップで実施される認証は、ICカード利用者端末300、ICカード200の一方又は双方が不正複製されたものであっても成立してしまう。そのため、ICカード利用者端末300、ICカード200において以下の処理が実施される。
【0094】
まず、相互認証(S202)が成立すると、ICカード利用者端末300は、PUFにチャレンジ値chalを入力してレスポンス値respを取得する(S204)。そして、ICカード利用者端末300は、取得したレスポンス値respを用いて暗号文Cを復号し、システム秘密鍵mkを復元する(S206)。なお、D(B)は、鍵Aを用いて暗号文Bに復号処理を施すことを意味する。このとき、取得したレスポンス値respが正しいものでない場合、正しいシステム秘密情報mkが復元されない点に注意されたい。システム秘密情報mkを復元すると、ICカード利用者端末300は、暗号通信に用いる共有鍵K=H(Kses||mk)を算出する(S208)。
【0095】
同様に、相互認証(S202)が成立すると、ICカード200は、PUFにチャレンジ値chalを入力してレスポンス値respを取得する(S210)。そして、ICカード200は、取得したレスポンス値respを用いて暗号文Cを復号し、システム秘密鍵mkを復元する(S212)。このとき、取得したレスポンス値respが正しいものでない場合、正しいシステム秘密情報mkが復元されない点に注意されたい。システム秘密情報mkを復元すると、ICカード200は、暗号通信に用いる共有鍵K=H(Kses||mk)を算出する(S214)。このようにして共有鍵Kが共有されると、ICカード利用者端末300とICカード200との間で共有鍵Kを利用した暗号通信が実施される(S216)。
【0096】
以上、認証フェーズについてシステムに関する全体的な処理の流れを説明した。以下、ICカード利用者端末300及びICカード200が個々に実行する処理の流れについて、より詳細に説明する。
【0097】
まず、図14を参照する。図14に示すように、ICカード利用者端末300は、ICカード200との間で相互認証及びセッション鍵の共有処理(S222)を実施した後、相互認証が成立したか否かを判断する(S224)。相互認証が成立した場合、ICカード利用者端末300は、ステップS226の処理に進行する。一方、相互認証が成立しなかった場合、ICカード利用者端末300は、認証不成立として一連の処理を終了する。ステップS226の処理に進行した場合、ICカード利用者端末300は、記憶部308からチャレンジ値chal及び暗号文Cを取得する(S226)。
【0098】
次いで、ICカード利用者端末300は、チャレンジ値chalをPUF306に入力し、レスポンス値respを取得する(S228)。次いで、ICカード利用者端末300は、取得したレスポンス値respを用いて暗号文Cを復号し、システム秘密情報mkを取得する(S230)。次いで、ICカード利用者端末300は、ステップS222で共有したセッション鍵Kses、及び暗号文Cから復元したシステム秘密情報mkを用いて共有鍵Kを生成する(S232)。
【0099】
仮に、ICカード利用者端末300が不正複製されたものである場合、ステップS228で取得されるレスポンス値respが正規のものとは異なるため、ステップS230で正しいシステム秘密情報mkが復元されない。そのため、ステップS232で正しい共有鍵Kが算出できなくなり、暗号通信が失敗する。その結果、不正複製攻撃によりステップS222の相互認証が成立したとしても、不正にICカード200の情報を読み書きしたり、不正にICカード利用者端末300の情報を読み書きしたりすることはできない。
【0100】
次に、図15を参照する。図15に示すように、ICカード200は、ICカード利用者端末300との間で相互認証及びセッション鍵の共有処理(S242)を実施した後、相互認証が成立したか否かを判断する(S244)。相互認証が成立した場合、ICカード200は、ステップS246の処理に進行する。一方、相互認証が成立しなかった場合、ICカード200は、認証不成立として一連の処理を終了する。
【0101】
ステップS246の処理に進行した場合、ICカード200は、記憶部208からチャレンジ値chal及び暗号文Cを取得する(S246)。次いで、ICカード200は、チャレンジ値chalをPUF206に入力し、レスポンス値respを取得する(S248)。次いで、ICカード200は、取得したレスポンス値respを用いて暗号文Cを復号し、システム秘密情報mkを取得する(S250)。次いで、ICカード200は、ステップS242で共有したセッション鍵Kses、及び暗号文Cから復元したシステム秘密情報mkを用いて共有鍵Kを生成する(S252)。
【0102】
仮に、ICカード200が不正複製されたものである場合、ステップS248で取得されるレスポンス値respが正規のものとは異なるため、ステップS250で正しいシステム秘密情報mkが復元されない。そのため、ステップS252で正しい共有鍵Kが算出できなくなり、暗号通信が失敗する。その結果、不正複製攻撃によりステップS242の相互認証が成立したとしても、不正にICカード200の情報を読み書きしたり、不正にICカード利用者端末300の情報を読み書きしたりすることはできない。
【0103】
以上説明したように、本実施形態に係る認証処理方法を利用することで、PUFの特性を生かして不正複製ICによるタンパリングを防止することができる。また、当該認証処理方法の場合、SD07方式のようなデータベースが必要とされない。例えば、チャレンジ値は、システム全体で共通のものを利用することができるため、1個で済む。また、レスポンス値は、登録フェーズの実行時、及び認証フェーズの各実行時に生成され、暗号化又は復号に利用された後はICにもセンタにも保持されない。そのため、継続的に保持する必要のあるレスポンス値の数は0個である。また、各ICが不揮発性メモリに保持すべき情報は、主に1個の暗号文及び1個のチャレンジ値である。従って、通常のICに搭載されている不揮発性メモリに容易に格納することができる。その結果、不正複製攻撃を防止しつつ、端末−IC間の相互認証を実現することができる。
【0104】
(補足説明)
なお、上記の不揮発性メモリ(記憶部208、308)は、EEPROMやフラッシュメモリ等の半導体記録媒体を用いて実現することができる。また、ソフトアルゴリズムと微細な電気ヒューズを組み合わせたチップモーフィング技術を用いて実現されるPROMを記憶部208、308に利用することも可能である。なお、EEPROMは、Electrically Erasable and Programmable Read Only Memoryの略である。また、PROMは、Programable Read Only Memoryの略である。また、認証フェーズにおいて利用される相互認証鍵Kauthは、事前にICの配線構造を利用して格納されていてもよいし、不揮発性メモリに格納されていてもよい。さらに、登録フェーズでセンタ100から提供されるものとしてもよい。また、上記の認証処理方法は、最終的に共有鍵暗号方式で暗号通信することを想定した例であったが、公開鍵暗号方式での暗号通信を想定した方式に変更することも可能である。こうした変更例についても、本実施形態の技術的範囲に含まれることは言うまでもない。
【0105】
以上、本発明の第1実施形態に係る技術について詳細に説明した。第1実施形態の技術を適用することにより、不正複製ICの利用防止を実現しつつ、端末−IC間の相互認証を実現することができる。当該技術を適用することにより、このような効果を有する十分にセキュアなシステムを構築することができるが、少し工夫を加えることで、よりセキュリティの高いシステムを実現することもできる。以下、セキュリティの更なる向上を目指して考案された技術について説明する。
【0106】
<3:第2実施形態>
上記の通り、第1実施形態では、相互認証後にセッション鍵Ksesとシステム秘密情報mkとを用いて算出される共有鍵Kの構成を工夫することにより、不正複製ICでは暗号通信を正しく実行できないようにした。通常、異なる共通鍵Kを用いて暗号通信した場合、暗号文から復号された値が意味のある値(例えば、コマンド等)になることは考えられない。そのため、現実的には、第1実施形態の技術を適用することにより、不正複製ICの利用を十分に防止することが可能である。
【0107】
しかしながら、セキュリティの向上という観点で考えると、通信相手との間で正しい共有鍵を共有していることを相互に確認してから暗号通信を実施することが好ましい。つまり、不正複製ICから受信した暗号文を復号する前に共有鍵の真偽判定ができるようにする構成の方が好ましい。そこで、相互認証成立後に鍵一致確認を実施するように変更した構成を第2実施形態として提案する。このような構成を適用することにより、不正複製ICが生成した暗号文を復号せずに済む分だけセキュリティを向上させることができる。
【0108】
以下で説明する第2実施形態は、上記の第1実施形態の認証フェーズにおいて、暗号通信を実施する前段に鍵一致確認フェーズを追加したものである。鍵一致確認フェーズは、所定の方法により通信相手との間で同じ共有鍵を保持しているか否かを確認するための処理ステップである。以下の説明においては、説明の都合上、具体的な処理内容の一例を記載しているが、共有鍵が正しく共有されているか否かを判定できる方法であれば任意の方法に変更することができる。つまり、鍵一致確認フェーズにおける具体的な処理内容については、その目的を同じくする任意の方法に代替可能である点に注意されたい。
【0109】
[3−1:ICカード230の機能構成]
まず、図16を参照しながら、本発明の第2実施形態に係るICカード230の機能構成について説明する。但し、上記の第1実施形態に係るICカード200と実質的に同一の機能を有する構成要素については同一の符号を付することにより詳細な説明を省略する。図16は、本実施形態に係るICカード230の機能構成を示す説明図である。
【0110】
図16に示すように、ICカード230は、主に、鍵情報取得部202と、レスポンス生成部204と、PUF206と、記憶部208と、暗号化部210と、相互認証部212と、復号部214と、共有鍵生成部216と、暗号通信部218と、鍵一致確認部232とを有する。従って、上記の第1実施形態に係るICカード200との主な違いは、鍵一致確認部232の存在にある。また、登録フェーズに関する機能構成及び処理内容は上記の第1実施形態に係るICカード200と実質的に同一である。そのため、登録フェーズに関する機能構成及び処理内容については説明を省略する。
【0111】
(認証フェーズに関する機能構成について)
そこで、認証フェーズに関するICカード230の機能構成について説明する。認証フェーズでは、まず、ICカード230とICカード利用者端末330との間で相互認証が実施される。このとき、相互認証部212は、記憶部208から相互認証鍵Kauthを読み出し、この相互認証鍵Kauthを利用してICカード利用者端末330との間で相互認証を成立させる。そして、相互認証部212は、相互認証が成立後、ICカード利用者端末330との間でセッションを確立するために利用されるセッション鍵Ksesを取得する。そして、相互認証部212で取得されたセッション鍵Ksesは、共有鍵生成部216に入力される。
【0112】
また、認証フェーズでは、ICカード利用者端末330との間で相互認証が実現した後で、ICカード利用者端末330との間で暗号通信を実現するために用いる共有鍵Kの生成処理が実行される。まず、レスポンス生成部204により記憶部208からチャレンジ値chalが読み出される。そして、レスポンス生成部204は、記憶部208から読み出したチャレンジ値chalをPUF206に入力する。PUF206は、レスポンス生成部204から入力されたチャレンジ値chalに対するレスポンス値respを生成する。そして、PUF206で生成されたレスポンス値respは、レスポンス生成部204に入力される。このようにしてレスポンス生成部204によりPUF206を用いて取得されたレスポンス値respは、復号部214に入力される。
【0113】
レスポンス生成部204からレスポンス値respが入力されると、復号部214は、記憶部208から暗号文C=Eresp(mk)を読み出す。そして、復号部214は、レスポンス生成部204から入力されたレスポンス値respを鍵として暗号文Cを復号する。この復号処理により復元されたシステム秘密情報mkは、共有鍵生成部216に入力される。復号部214からシステム秘密情報mkが入力されると、共有鍵生成部216は、相互認証部212から入力されたセッション鍵Ksesと、復号部214から入力されたシステム秘密情報mkとを組み合わせて共有鍵Kを生成する。
【0114】
共有鍵生成部216で生成された共有鍵Kは、鍵一致確認部232に入力される。鍵一致確認部232は、共有鍵生成部216から入力された共有鍵Kと、ICカード利用者端末330が保持する共有鍵Kとが一致するか否かを所定の方法で確認する。所定の方法としては、例えば、乱数のMAC演算を利用した方法やデジタル署名を利用した方法等、様々な方法が考えられる。なお、上記のMACは、Message Authentication Codeの略である。鍵一致確認部232により共有鍵Kの一致が確認された場合、鍵一致確認部232から暗号通信部218に共有鍵Kが入力される。一方、鍵一致確認が失敗した場合、鍵一致確認部232は、エラーを出力して認証処理を終了する。
【0115】
そして、暗号通信部218は、鍵一致確認部232から入力された共有鍵Kを用いてICカード利用者端末330と暗号通信を実施する。もし、復号部214で正しいシステム秘密情報mkが復元されていないと、鍵一致確認部232において鍵一致確認が失敗し、暗号通信を実施することができない。従って、ICカード230が不正複製ICである場合、又はICカード利用者端末330が不正複製されたものである場合、ICカード利用者端末330との間の相互認証が成立したとしても、実際にICカード230の情報を読み書きするための暗号通信は実現不可能になるのである。
【0116】
また、ICカード利用者端末330が正規のものであることが分かっている場合、鍵一致確認が失敗したICカード230を特定することが可能になり、不正複製の可能性があるICカード230を容易に発見することができるようになる。逆に、ICカード230が正規のものであることが分かっている場合、鍵一致確認が失敗したICカード利用者端末330を特定することが可能になり、不正複製の可能性があるICカード利用者端末330を発見することができるようになる。
【0117】
[3−2:ICカード利用者端末330の機能構成]
次に、図17を参照しながら、本発明の第2実施形態に係るICカード利用者端末330の機能構成について説明する。但し、上記の第1実施形態に係るICカード利用者端末300と実質的に同一の機能を有する構成要素については同一の符号を付することにより詳細な説明を省略する。図17は、本実施形態に係るICカード利用者端末330の機能構成を示す説明図である。
【0118】
図17に示すように、ICカード利用者端末330は、主に、鍵情報取得部302と、レスポンス生成部304と、PUF306と、記憶部308と、暗号化部310と、相互認証部312と、復号部314と、共有鍵生成部316と、暗号通信部318と、鍵一致確認部332とを有する。従って、上記の第1実施形態に係るICカード利用者端末300との主な違いは、鍵一致確認部332の存在にある。また、登録フェーズに関する機能構成及び処理内容は上記の第1実施形態に係るICカード利用者端末300と実質的に同一である。そのため、登録フェーズに関する機能構成及び処理内容については説明を省略する。
【0119】
(認証フェーズに関する機能構成について)
そこで、認証フェーズに関するICカード利用者端末330の機能構成について説明する。認証フェーズでは、まず、ICカード利用者端末330とICカード230との間で相互認証が実施される。このとき、相互認証部312は、記憶部308から相互認証鍵Kauthを読み出し、この相互認証鍵Kauthを利用してICカード230との間で相互認証を成立させる。そして、相互認証部312は、相互認証が成立後、ICカード230との間でセッションを確立するために利用されるセッション鍵Ksesを取得する。そして、相互認証部312で取得されたセッション鍵Ksesは、共有鍵生成部316に入力される。
【0120】
また、認証フェーズでは、ICカード230との間で相互認証が実現した後で、ICカード230との間で暗号通信を実現するために用いる共有鍵Kの生成処理が実行される。まず、レスポンス生成部304により記憶部308からチャレンジ値chalが読み出される。そして、レスポンス生成部304は、記憶部308から読み出したチャレンジ値chalをPUF306に入力する。PUF306は、レスポンス生成部304から入力されたチャレンジ値chalに対するレスポンス値respを生成する。そして、PUF306で生成されたレスポンス値respは、レスポンス生成部304に入力される。このようにしてレスポンス生成部304によりPUF306を用いて取得されたレスポンス値respは、復号部314に入力される。
【0121】
レスポンス生成部304からレスポンス値respが入力されると、復号部314は、記憶部308から暗号文C=Eresp(mk)を読み出す。そして、復号部314は、レスポンス生成部304から入力されたレスポンス値respを鍵として暗号文Cを復号する。この復号処理により復元されたシステム秘密情報mkは、共有鍵生成部316に入力される。復号部314からシステム秘密情報mkが入力されると、共有鍵生成部316は、相互認証部312から入力されたセッション鍵Ksesと、復号部314から入力されたシステム秘密情報mkとを組み合わせて共有鍵Kを生成する。
【0122】
共有鍵生成部316で生成された共有鍵Kは、鍵一致確認部332に入力される。鍵一致確認部332は、共有鍵生成部316から入力された共有鍵Kと、ICカード230が保持する共有鍵Kとが一致するか否かを所定の方法で確認する。所定の方法としては、例えば、乱数のMAC演算を利用した方法やデジタル署名を利用した方法等、様々な方法が考えられる。鍵一致確認部332により共有鍵Kの一致が確認された場合、鍵一致確認部332から暗号通信部318に共有鍵Kが入力される。一方、鍵一致確認が失敗した場合、鍵一致確認部332は、エラーを出力して認証処理を終了する。
【0123】
そして、暗号通信部318は、鍵一致確認部332から入力された共有鍵Kを用いてICカード230と暗号通信を実施する。もし、復号部314で正しいシステム秘密情報mkが復元されていないと、鍵一致確認部332において鍵一致確認が失敗し、暗号通信を実施することができない。従って、ICカード230が不正複製ICである場合、又はICカード利用者端末330が不正複製されたものである場合、ICカード230との間の相互認証が成立したとしても、実際にICカード利用者端末330の情報を読み書きするための暗号通信は実現不可能になるのである。
【0124】
また、ICカード利用者端末330が正規のものであることが分かっている場合、鍵一致確認が失敗したICカード230を特定することが可能になり、不正複製の可能性があるICカード230を容易に発見することができるようになる。逆に、ICカード230が正規のものであることが分かっている場合、鍵一致確認が失敗したICカード利用者端末330を特定することが可能になり、不正複製の可能性があるICカード利用者端末330を発見することができるようになる。
【0125】
[3−3:認証フェーズの処理]
次に、図18〜図21を参照しながら、認証フェーズにおいて実行される処理の流れについて説明する。なお、この説明の中では、ICカード利用者端末330とICカード230との間における認証フェーズの処理を想定することにする。また、ICカード利用者端末330をICと表現し、ICカード230をICと表現することがある。図18は、ICカード利用者端末330とICカード230との間のやり取りも含めた認証フェーズの全体的な処理の流れを示す説明図である。
【0126】
図19は、ICカード利用者端末330とICカード230との間のやり取りも含めた鍵一致確認フェーズの全体的な処理の流れを示す説明図である。図20は、ICカード利用者端末330において実行される鍵一致確認処理の流れを示す説明図である。図21は、ICカード230において実行される鍵一致確認処理の流れを示す説明図である。
【0127】
(3−3−1:全体的な処理の流れ)
まず、図18を参照する。図18に示すように、まず、ICカード利用者端末330とICカード230との間で相互認証処理が実施される(S302)。このとき、相互認証が成立すると、ICカード利用者端末330とICカード230との間でセッションを確立する際に利用するセッション鍵Ksesが共有される。なお、このステップで実施される認証は、ICカード利用者端末330、ICカード230の一方又は双方が不正複製されたものであっても成立してしまう。そのため、ICカード利用者端末330、ICカード230において以下の処理が実施される。
【0128】
まず、相互認証(S302)が成立すると、ICカード利用者端末330は、PUFにチャレンジ値chalを入力してレスポンス値respを取得する(S304)。そして、ICカード利用者端末330は、取得したレスポンス値respを用いて暗号文Cを復号し、システム秘密鍵mkを復元する(S306)。このとき、取得したレスポンス値respが正しいものでない場合、正しいシステム秘密情報mkが復元されない点に注意されたい。システム秘密情報mkを復元すると、ICカード利用者端末330は、暗号通信に用いる共有鍵K=H(Kses||mk)を算出する(S308)。
【0129】
同様に、相互認証(S302)が成立すると、ICカード230は、PUFにチャレンジ値chalを入力してレスポンス値respを取得する(S310)。そして、ICカード230は、取得したレスポンス値respを用いて暗号文Cを復号し、システム秘密鍵mkを復元する(S312)。このとき、取得したレスポンス値respが正しいものでない場合、正しいシステム秘密情報mkが復元されない点に注意されたい。システム秘密情報mkを復元すると、ICカード230は、暗号通信に用いる共有鍵K=H(Kses||mk)を算出する(S314)。
【0130】
このようにして共有鍵Kが共有されると、ICカード利用者端末330とICカード230との間で共有鍵Kの鍵一致確認処理が実行される(S316;鍵一致確認フェーズ)。ステップS316において鍵一致確認が成立すると、ICカード利用者端末330とICカード230との間で共有鍵Kを利用した暗号通信が実施される(S318)。以上、認証フェーズについてシステムに関する全体的な処理の流れを説明した。次に、鍵一致確認フェーズにおける処理の流れについて説明する。
【0131】
(3−3−2:鍵一致確認フェーズ)
次に、図19を参照する。なお、図19〜図21に示す鍵一致確認方法は一例であり、この方法に限定されない点に注意されたい。また、この例では、ICカード利用者端末330が鍵一致確認処理を開始するInitiatorであるものとし、ICカード230がInitiatorの処理に対応するResponderであるものとしている。そのため、鍵一致確認処理がICカード230から開始された場合、ICカード230がInitiatorになり、ICカード利用者端末330がResponderになる。
【0132】
図19に示すように、鍵一致確認フェーズでは、まず、ICカード利用者端末330により乱数rが生成され(S322)、ICカード230により乱数rが生成される(S324)。次いで、ICカード利用者端末330からICカード230に乱数rが送信される(S326)。乱数rを受信すると、ICカード230は、MAC演算を実施してKCT=MAC(r||r)を算出する(S328)。但し、MAC(B)は、鍵AによるデータBのMAC演算を表す。次いで、ICカード230は、ステップS324で生成した乱数rと、ステップS328で算出したKCTとを連結してICカード利用者端末330に送信する(S330)。
【0133】
次いで、ICカード利用者端末330は、ICカード230から受信した乱数rを用いてMAC演算を実行し、KCT’=MAC(r||r)を算出する(S332)。次いで、ICカード利用者端末330は、ICカード230から取得したKCTと、ステップS332で算出したKCT’とが一致するか否かを判定し、不一致の場合に鍵一致確認不成立として一連の処理を終了する(S334)。一方、KCTとKCT’とが一致した場合、ICカード利用者端末330は、乱数r、rを用いてMAC演算を実施し、KCT=MAC(r||r)を算出する(S336)。
【0134】
そして、ICカード利用者端末330は、ステップS336で算出したKCTをICカード230に送信する(S338)。KCTを受信すると、ICカード230は、乱数r、rを用いてMAC演算を実施し、KCT’=MAC(r||r)を算出する(S340)。そして、ICカード230は、ステップS340で算出したKCT’と、ICカード利用者端末330から受信したKCTとが一致するか否かを判定し、不一致の場合に鍵一致確認不成立として一連の処理を終了する(S342)。一方、KCTとKCT’とが一致した場合、ICカード230は、ICカード利用者端末330との間で共有鍵Kを用いた暗号通信を開始する。
【0135】
以上、鍵一致確認フェーズについて全体的な処理の流れを説明した。以下、ICカード利用者端末330及びICカード230が個々に実行する処理の流れについて、より詳細に説明する。
【0136】
まず、図20を参照する。図20に示すように、ICカード利用者端末330(Initiator)は、乱数rを生成してICカード230(Responder)に送信する(S352)。次いで、ICカード利用者端末330は、ICカード230からr||KCTを受信する(S354)。次いで、ICカード利用者端末330は、受信したrを利用してMAC演算を実施し、KCT’=MAC(r||r)を算出する(S356)。次いで、ICカード利用者端末330は、KCT’=KCTか否かを判定する(S358)。KCT’=KCTである場合、ICカード利用者端末330は、KCT=MAC(r||r)を算出してICカード230に送信する(S360)。一方、KCT’=KCTでない場合、ICカード利用者端末330は、鍵不一致であるとして一連の処理を終了する。
【0137】
次に、図21を参照する。図21に示すように、ICカード230(Responder)は、ICカード利用者端末330(Initiator)から乱数rを受信する(S362)。次いで、ICカード230は、乱数rを生成してICカード利用者端末330に送信する(S364)。次いで、ICカード230は、KCT=MAC(r||r)を算出してICカード利用者端末330に送信する(S366)。次いで、ICカード230は、KCTを受信する(S368)。次いで、ICカード230は、KCT’=MAC(r||r)を算出する(S370)。次いで、ICカード230は、KCT’=KCTであるか否かを判定する(S372)。KCT’=KCTである場合、ICカード230は、鍵一致であると判断して(S374)共通鍵Kを利用した暗号通信を実施する。一方、KCT’=KCTでない場合、ICカード230は、鍵不一致であると判断して(S376)一連の処理を終了する。
【0138】
以上、本実施形態に係る鍵一致フェーズの処理について説明した。上記の鍵一致確認処理では、共有鍵Kを利用した乱数のMAC演算を利用して鍵一致確認を行っているが、例えば、公開鍵暗号技術を利用して本実施形態に係る技術を実現する場合には相互認証用鍵によるデジタル署名を利用する方法なども考えられる。また、乱数r及びrに関しても、相互認証処理を実施した際に利用した乱数や暗号文等を利用するなど、様々なバリエーションが考えられる。こうしたバリエーションについても、本実施形態の技術的範囲に含まれることは言うまでもない。
【0139】
以上、本発明の第2実施形態について説明した。上記のように、相互認証後、鍵一致確認を実施することにより、不正な暗号文を復号させられるリスクを回避することが可能となる。また、相互認証用の鍵は各種データと共に不正複製により取得はされたものの、取得されたデータの中で、どのデータが相互認証用鍵であるかは露見していないという状況下であれば、不正複製されたICの存在を特定することができる。つまり、相互認証は成立するものの、鍵一致確認フェーズにおいて不一致となるICは不正複製ICであるため、本実施形態の技術を適用することにより不正複製ICを発見することができる。
【0140】
<4:第3実施形態>
次に、本発明の第3実施形態について説明する。上記の第1及び第2実施形態においては、相互認証の成立後に暗号通信が正しく行えるか否か、或いは、共通鍵が一致しているか否かを確認することにより、不正複製ICか否かを判断していた。そして、第1実施形態の方法は、通信相手が正当か否かを確認するために暗号文を復号してみる必要がある。また、第2実施形態の方法は、暗号文を復号する前に正当性を確認できるものの、鍵一致確認の処理を実行する分だけ第1実施形態の方法よりも通信量が増加してしまう。そこで、通信量を増加させず、暗号文を復号する前に正当性を確認する方法について検討した。その結果考案されたのが以下で説明する第3実施形態の方法である。
【0141】
第3実施形態の方法は、登録フェーズにおいてシステム秘密情報の代わりに相互認証用鍵をレスポンス値で暗号化し、認証フェーズにおいて相互認証用鍵をレスポンス値で復号し、復号した相互認証鍵で相互認証を実施するというものである。不正複製ICが正しいレスポンス値を得られないという特性を利用している点は上記の第1及び第2実施形態と同じであるが、不正複製ICによる相互認証を防止しているという点が大きく異なる。相互認証が成立しないと、正しいセッション鍵が得られないため、セッション鍵を用いて暗号通信することができない。従って、不正複製ICによる情報の改竄や盗難等を効果的に防止することができる。また、不正複製ICは相互認証することができないため、通信相手が不正な暗号文を復号せずに済む上、鍵一致確認処理が発生しないのである。
【0142】
[3−1:ICカード250の機能構成]
まず、図22を参照しながら、本発明の第3実施形態に係るICカード250の機能構成について説明する。この中で、本実施形態に係るセンタ150の主な機能構成についても説明する。なお、上記の第1実施形態に係るICカード200と実質的に同一の機能を有する構成要素については同一の符号を付することにより詳細な説明を省略する。図22は、本実施形態に係るICカード250の機能構成を示す説明図である。
【0143】
図22に示すように、ICカード250は、主に、鍵情報取得部202と、レスポンス生成部204と、PUF206と、記憶部208と、暗号化部252と、復号部254と、相互認証部256と、暗号通信部258とを有する。また、センタ150は、主に、鍵情報提供部152と、記憶部154とを有する。
【0144】
以下、フェーズ毎に分けてICカード250の機能構成について説明する。なお、本実施形態に係る登録フェーズでは、各ICに共通のチャレンジ値(chal)が提供される。そして、各ICにおいてチャレンジ値chalに対応するレスポンス値respが生成され、レスポンス値respを鍵として相互認証鍵Kauthが暗号化される。この暗号化処理により生成された暗号文EK=Eresp(Kauth)は、各ICにおいてチャレンジ値chalと共に不揮発性メモリに格納される。
【0145】
一方、本実施形態に係る認証フェーズでは、各ICが自身で不揮発性メモリに格納した暗号文EKとチャレンジ値chalとを読み出し、そのチャレンジ値chalをPUF206に入力してレスポンス値respを生成する。そして、生成したrespを用いて各ICが暗号文EKを復号し、暗号文EKを復号して得られた相互認証鍵Kauthを用いて相互認証を実施する。その結果、不正複製ICは正しい相互認証鍵Kauthを得られず、相互認証を成立させることができなくなるのである。本実施形態においては、このような方法により不正複製ICの利用を防止し、相互認証を実現可能にしているのである。
【0146】
(登録フェーズに関する機能構成について)
まず、登録フェーズに関するICカード250の機能構成について説明する。登録フェーズでは、まず、センタ150からICカード250に対してシステム共通のチャレンジ値chal、及び相互認証鍵Kauthが提供される。これらチャレンジ値chal及び相互認証鍵Kauthは、センタ150が有する記憶部154に格納されている。そして、登録フェーズにおいて、センタ150が有する鍵情報提供部152により記憶部154から読み出され、各ICカード250に対して提供される。センタ150から提供されたチャレンジ値chal及び相互認証鍵Kauthは、ICカード250が有する鍵情報取得部202により取得される。
【0147】
そして、鍵情報取得部202で取得されたチャレンジ値chalは、記憶部208に格納される。また、鍵情報取得部202で取得された相互認証鍵Kauthは、暗号化部252に入力される。記憶部208に格納されたチャレンジ値chalは、レスポンス生成部204により読み出され、PUF206に入力される。PUF206は、レスポンス生成部204から入力されたチャレンジ値chalに対するレスポンス値respを生成する。ここでPUF206から出力されるレスポンス値respは、ICカード250に固有のものである。PUF206で生成されたレスポンス値respは、レスポンス生成部204に入力される。このようにしてレスポンス値respを生成すると、レスポンス生成部204は、レスポンス値respを暗号化部252に入力する。
【0148】
上記の通り、暗号化部252には、鍵情報取得部202から相互認証鍵Kauthが入力され、レスポンス生成部204からレスポンス値respが入力される。そこで、暗号化部252は、入力されたレスポンス値respを鍵に利用して相互認証鍵Kauthを暗号化する。この暗号化処理により暗号文EK=Eresp(Kauth)が生成される。暗号化部252で生成された暗号文EKは、記憶部208に格納される。ここまでの処理が登録フェーズにおいて実行される。これらの処理の後、ICカード250の記憶部208には、チャレンジ値chal、及び暗号文EKが格納されていることになる。なお、相互認証鍵Kauthは、ICカード250の内部に保持されない点に注意されたい。
【0149】
(認証フェーズに関する機能構成について)
次に、認証フェーズに関するICカード250の機能構成について説明する。認証フェーズでは、まず、ICカード250とICカード利用者端末350との間で相互認証が実施される。この相互認証に利用する相互認証用の鍵Kauthは、記憶部208には格納されていない。そのため、認証フェーズでは、ICカード利用者端末350との間で相互認証を実現するために用いる相互認証鍵Kauthの生成処理が実行される。
【0150】
まず、レスポンス生成部204により記憶部208からチャレンジ値chalが読み出される。そして、レスポンス生成部204は、記憶部208から読み出したチャレンジ値chalをPUF206に入力する。PUF206は、レスポンス生成部204から入力されたチャレンジ値chalに対するレスポンス値respを生成する。そして、PUF206で生成されたレスポンス値respは、レスポンス生成部204に入力される。このようにしてレスポンス生成部204によりPUF206を用いて取得されたレスポンス値respは、復号部254に入力される。
【0151】
さて、ここではPUF206によりレスポンス値respが生成されると記載したが、ICカード250が不正複製ICであった場合、PUF206によりレスポンス値resp’(≠resp)が生成される。登録フェーズでレスポンス値respを生成したICカード250はセンタ150が想定する本物のICである。一方、このICカード250が不正複製されて生成されたICカード250には、記憶部208に格納されている暗号文EK及びチャレンジ値chalも含めて同じ構成が再現される。しかし、PUF206の入出力特性だけは本物のICと不正複製ICとで異なる。そのため、レスポンス生成部204が認証フェーズで再びレスポンス値respをPUF206に生成させることで、認証の度に本物のICか不正複製ICかを見分けることができるのである。
【0152】
レスポンス生成部204からレスポンス値respが入力されると、復号部254は、記憶部208から暗号文EK=Eresp(Kauth)を読み出す。そして、復号部254は、レスポンス生成部204から入力されたレスポンス値respを鍵として暗号文EKを復号する。この復号処理により復元された相互認証鍵Kauthは、相互認証部256に入力される。このとき、レスポンス生成部204から入力されたレスポンス値が暗号文EKの生成時に使用したものと異なる場合、正しい相互認証鍵Kauthが復元されない。つまり、復号部254で復元された相互認証鍵Kauthの正誤により本物のICと不正複製ICとを見分けることができるのである。
【0153】
相互認証鍵Kauthが入力されると、相互認証部256は、入力された相互認証鍵Kauthを用いてICカード利用者端末350との間で相互認証を実施する。そして、相互認証部256は、相互認証が成立後、ICカード利用者端末350との間でセッションを確立するために利用されるセッション鍵Ksesを取得する。相互認証部256により取得されたセッション鍵Ksesは、暗号通信部258に入力される。そして、暗号通信部258は、相互認証部256から入力されたセッション鍵Ksesを用いてICカード利用者端末350と暗号通信を実施する。
【0154】
もし、復号部254で正しい相互認証鍵Kauthが復元されていないと、相互認証部256による相互認証が成立しないため、暗号通信部258にはセッション鍵Ksesが入力されない。そのため、不正複製ICによる暗号通信は実現できない。従って、ICカード250が不正複製ICである場合、実際にICカード250の情報を読み書きするための暗号通信は実現不可能になるのである。
【0155】
[3−2:ICカード利用者端末350の機能構成]
次に、図23を参照しながら、本発明の第3実施形態に係るICカード利用者端末350の機能構成について説明する。この中で、本実施形態に係るセンタ150の主な機能構成についても説明する。図22は、本実施形態に係るICカード利用者端末350の機能構成を示す説明図である。なお、上記の第1実施形態に係るICカード200と実質的に同一の機能を有する構成要素については同一の符号を付することにより詳細な説明を省略する。また、本実施形態においても、ICカード250とICカード利用者端末350との間の相互認証を想定しているため、ICカード利用者端末350にもICカード250と実質的に同じ機能構成が設けられる。
【0156】
図23に示すように、ICカード利用者端末350は、主に、鍵情報取得部302と、レスポンス生成部304と、PUF306と、記憶部308と、暗号化部352と、復号部354と、相互認証部356と、暗号通信部358とを有する。
【0157】
以下、フェーズ毎に分けてICカード利用者端末350の機能構成について説明する。なお、本実施形態に係る登録フェーズでは、各ICに共通のチャレンジ値(chal)が提供される。そして、各ICにおいてチャレンジ値chalに対応するレスポンス値respが生成され、レスポンス値respを鍵として相互認証鍵Kauthが暗号化される。この暗号化処理により生成された暗号文EK=Eresp(Kauth)は、各ICにおいてチャレンジ値chalと共に不揮発性メモリに格納される。
【0158】
一方、本実施形態に係る認証フェーズでは、各ICが自身で不揮発性メモリに格納した暗号文EKとチャレンジ値chalとを読み出し、そのチャレンジ値chalをPUF306に入力してレスポンス値respを生成する。そして、生成したrespを用いて各ICが暗号文EKを復号し、暗号文EKを復号して得られた相互認証鍵Kauthを用いて相互認証を実施する。その結果、不正複製ICは正しい相互認証鍵Kauthを得られず、相互認証を成立させることができなくなるのである。本実施形態においては、このような方法により不正複製ICの利用を防止し、相互認証を実現可能にしているのである。
【0159】
(登録フェーズに関する機能構成について)
まず、登録フェーズに関するICカード利用者端末350の機能構成について説明する。登録フェーズでは、まず、センタ150からICカード利用者端末350に対してシステム共通のチャレンジ値chal、及び相互認証鍵Kauthが提供される。センタ150から提供されたチャレンジ値chal及び相互認証鍵Kauthは、ICカード利用者端末350が有する鍵情報取得部302により取得される。そして、鍵情報取得部302で取得されたチャレンジ値chalは、記憶部308に格納される。
【0160】
また、鍵情報取得部302で取得された相互認証鍵Kauthは、暗号化部352に入力される。記憶部308に格納されたチャレンジ値chalは、レスポンス生成部304により読み出され、PUF306に入力される。PUF306は、レスポンス生成部304から入力されたチャレンジ値chalに対するレスポンス値respを生成する。ここでPUF306から出力されるレスポンス値respは、ICカード利用者端末350に固有のものである。PUF306で生成されたレスポンス値respは、レスポンス生成部304に入力される。このようにしてレスポンス値respを生成すると、レスポンス生成部304は、レスポンス値respを暗号化部352に入力する。
【0161】
上記の通り、暗号化部352には、鍵情報取得部302から相互認証鍵Kauthが入力され、レスポンス生成部304からレスポンス値respが入力される。そこで、暗号化部352は、入力されたレスポンス値respを鍵に利用して相互認証鍵Kauthを暗号化する。この暗号化処理により暗号文EK=Eresp(Kauth)が生成される。暗号化部352で生成された暗号文EKは、記憶部308に格納される。ここまでの処理が登録フェーズにおいて実行される。これらの処理の後、ICカード利用者端末350の記憶部308には、チャレンジ値chal、及び暗号文EKが格納されていることになる。なお、相互認証鍵Kauthは、ICカード利用者端末350の内部に保持されない点に注意されたい。
【0162】
(認証フェーズに関する機能構成について)
次に、認証フェーズに関するICカード利用者端末350の機能構成について説明する。認証フェーズでは、まず、ICカード利用者端末350とICカード250との間で相互認証が実施される。この相互認証に利用する相互認証用の鍵Kauthは、記憶部308には格納されていない。そのため、認証フェーズでは、ICカード250との間で相互認証を実現するために用いる相互認証鍵Kauthの生成処理が実行される。
【0163】
まず、レスポンス生成部304により記憶部308からチャレンジ値chalが読み出される。そして、レスポンス生成部304は、記憶部308から読み出したチャレンジ値chalをPUF306に入力する。PUF306は、レスポンス生成部304から入力されたチャレンジ値chalに対するレスポンス値respを生成する。そして、PUF306で生成されたレスポンス値respは、レスポンス生成部304に入力される。このようにしてレスポンス生成部304によりPUF306を用いて取得されたレスポンス値respは、復号部354に入力される。
【0164】
レスポンス生成部304からレスポンス値respが入力されると、復号部354は、記憶部308から暗号文EK=Eresp(Kauth)を読み出す。そして、復号部354は、レスポンス生成部304から入力されたレスポンス値respを鍵として暗号文EKを復号する。この復号処理により復元された相互認証鍵Kauthは、相互認証部356に入力される。このとき、レスポンス生成部304から入力されたレスポンス値が暗号文EKの生成時に使用したものと異なる場合、正しい相互認証鍵Kauthが復元されない。つまり、復号部354で復元された相互認証鍵Kauthの正誤により本物のICと不正複製ICとを見分けることができるのである。
【0165】
相互認証鍵Kauthが入力されると、相互認証部356は、入力された相互認証鍵Kauthを用いてICカード250との間で相互認証を実施する。そして、相互認証部356は、相互認証が成立後、ICカード250との間でセッションを確立するために利用されるセッション鍵Ksesを取得する。相互認証部356により取得されたセッション鍵Ksesは、暗号通信部358に入力される。暗号通信部358は、相互認証部356から入力されたセッション鍵Ksesを用いてICカード250と暗号通信を実施する。
【0166】
もし、復号部354で正しい相互認証鍵Kauthが復元されていないと、相互認証部356による相互認証が成立しないため、暗号通信部358にはセッション鍵Ksesが入力されない。そのため、不正複製ICによる暗号通信は実現できない。従って、ICカード利用者端末350が不正複製ICである場合、実際にICカード250の情報を読み書きするための暗号通信は実現不可能になるのである。
【0167】
[3−3:認証フェーズの処理]
次に、図24〜図26を参照しながら、認証フェーズにおいて実行される処理の流れについて説明する。図24は、認証フェーズにおけるICカード利用者端末350とICカード250との間のやり取りも含めた全体的な処理の流れを示す説明図である。図25は、主にICカード利用者端末350において実行される処理の流れを示す説明図である。図26は、主にICカード250において実行される処理の流れを示す説明図である。
【0168】
まず、図24を参照する。図24に示すように、まず、ICカード利用者端末350は、PUFにチャレンジ値chalを入力してレスポンス値respを取得する(S402)。そして、ICカード利用者端末350は、取得したレスポンス値respを用いて暗号文EKを復号し、相互認証鍵Kauthを復元する(S404)。このとき、取得したレスポンス値respが正しいものでない場合、正しい相互認証鍵Kauthが復元されない点に注意されたい。
【0169】
同様に、ICカード250は、PUFにチャレンジ値chalを入力してレスポンス値respを取得する(S406)。そして、ICカード250は、取得したレスポンス値respを用いて暗号文EKを復号し、相互認証鍵Kauthを復元する(S408)。このとき、取得したレスポンス値respが正しいものでない場合、正しい相互認証鍵Kauthが復元されない点に注意されたい。
【0170】
そして、ICカード利用者端末350及びICカード250は、それぞれ復号した相互認証鍵Kauthを利用して相互認証を実施し、相互認証が成立した場合にセッション鍵Ksesを共有する(S410)。セッション鍵Ksesが共有されると、ICカード利用者端末350とICカード250との間で暗号通信が実施される(S412)。以上、認証フェーズに関する全体的な処理の流れを説明した。以下、ICカード利用者端末350及びICカード250が個々に実行する処理の流れについて、より詳細に説明する。
【0171】
まず、図25を参照する。図25に示すように、ICカード利用者端末350は、記憶部308からチャレンジ値chal及び暗号文EKを取得する(S422)。次いで、ICカード利用者端末350は、チャレンジ値chalをPUF306に入力し、レスポンス値respを取得する(S424)。次いで、ICカード利用者端末350は、取得したレスポンス値respを用いて暗号文EKを復号し、相互認証鍵Kauthを取得する(S426)。次いで、ICカード利用者端末350は、取得した相互認証鍵Kauthを利用して相互認証及び鍵共有処理を実施する(S428)。
【0172】
次いで、ICカード利用者端末350は、相互認証が成立したか否かを判断する(S430)。相互認証が成立した場合、ICカード利用者端末350は、認証成立(S432)としてステップS428で取得したセッション鍵Ksesを用いて暗号通信を実施する。一方、相互認証が成立していない場合、ICカード利用者端末350は、認証不成立(S434)として認証処理に係る一連の処理を終了する。
【0173】
仮に、ICカード利用者端末350が不正複製されたものである場合、ステップS424で取得されるレスポンス値respが正規のものとは異なるため、ステップS426で正しい相互認証鍵Kauthが復元されない。そのため、ステップS428で相互認証が失敗する。その結果、不正複製攻撃により不正にICカード250の情報を読み書きしたり、不正にICカード利用者端末350の情報を読み書きしたりすることはできない。
【0174】
次に、図26を参照する。図26に示すように、ICカード250は、記憶部208からチャレンジ値chal及び暗号文EKを取得する(S442)。次いで、ICカード250は、チャレンジ値chalをPUF206に入力し、レスポンス値respを取得する(S444)。次いで、ICカード250は、取得したレスポンス値respを用いて暗号文EKを復号し、相互認証鍵Kauthを取得する(S446)。次いで、ICカード250は、取得した相互認証鍵Kauthを利用して相互認証及び鍵共有処理を実施する(S448)。
【0175】
次いで、ICカード250は、相互認証が成立したか否かを判断する(S450)。相互認証が成立した場合、ICカード250は、認証成立(S452)としてステップS448で取得したセッション鍵Ksesを用いて暗号通信を実施する。一方、相互認証が成立していない場合、ICカード250は、認証不成立(S454)として認証処理に係る一連の処理を終了する。
【0176】
仮に、ICカード250が不正複製されたものである場合、ステップS444で取得されるレスポンス値respが正規のものとは異なるため、ステップS446で正しい相互認証鍵Kauthが復元されない。そのため、ステップS448で相互認証が失敗する。その結果、不正複製攻撃により不正にICカード利用者端末350の情報を読み書きしたり、不正にICカード250の情報を読み書きしたりすることはできない。
【0177】
以上、本発明の第3実施形態について説明した。上記の通り、本実施形態に係る認証処理方法を利用することで、上記の第1及び第2実施形態の方法と同様に、PUFの特性を生かして不正複製ICによるタンパリングを防止することができる。さらに、上記の第1及び実施形態とは異なり、通信量を増加させることなく、暗号通信により受信した通信相手の暗号文を復号せずに通信相手の真偽を判別することができる。
【0178】
<5:まとめ>
最後に、上記の各実施形態に係る認証処理方法について簡単に纏める。上記の各実施形態に係る認証処理方法は、半導体集積回路(IC)にPUFを搭載し、相互認証時にPUFの特性を利用することで、不正に複製されたICの利用を防止する技術に関する。また、当該認証処理方法は、SD07方式のようなデータベースを利用せず、PUF出力値を鍵として暗号化されたシステム秘密情報又は相互認証鍵の復号可否を確認することで不正複製ICの利用防止を実現するものである。
【0179】
ここで、簡単にSD07方式と上記各実施形態の方式との相違点について纏める。上記の通り、SD07方式では、登録フェーズにおいて、各ICのPUFに対応するチャレンジ/レスポンスのペアを格納したデータベースをセンタが生成し、秘密に管理していた。そして、認証フェーズでは、端末がセンタのデータベースを参照し、登録されたチャレンジ値をICに与えてデータベースに登録されたものと同じレスポンス値をICが出力するか否かを判断していた。さらに、SD07方式では、この判断結果を受けて認証の成否を決定することで不正複製ICの利用を防止していた。
【0180】
しかし、このような構成法を採用すると、センタが非常に大きなサイズのデータベースを構築し、それを安全に保持管理する必要があった。さらに、相互認証を行うためにはICにデータベースを格納する必要があり、実質的に相互認証が実現不可能であった。例えば、ICの総製造数NをN=10,000,000、各ICのID、チャレンジ値、及びレスポンス値のデータサイズをそれぞれ128bitとした場合、IC毎に100個のチャレンジ/レスポンスを登録すると、データベースサイズは約320GBになる。このような巨大なサイズのデータは、ICの不揮発性メモリには到底格納できない。
【0181】
一方、本発明に係る各実施形態の方法では、登録フェーズにおいて各ICに1つのID、1つのチャレンジ値、1つのシステム秘密情報又は相互認証鍵を与えるだけである。また、そのチャレンジ値及びシステム秘密情報はシステムで共通化できる。また、認証フェーズにおいてPUFの出力値を確認するために端末やICがセンタにアクセスする必要がない。そのため、相互認証を実現するためにセンタが情報を保持しておく必要はない。
【0182】
そのため、端末−IC間の相互認証が実現できる。また、認証フェーズにおいて各IC又は端末がPUFの出力値を用いて暗号文を復号するため、復号値の正誤により、認証処理の際に各IC又は端末が不正複製されたものか否かが判別可能になる。その結果、SD07方式と同様に不正複製ICの利用を防止できる。さらに、上記の第2実施形態の方法を用いると、不正の有無を確認するために通信相手から受信した暗号文を復号せずに済むため、セキュリティを更に向上させることができる。そして、上記の第3実施形態の方法を用いると、通信量を増加させず、通信相手から受信した暗号文を復号することなく、通信相手が不正複製されたものか否かを確認することができる。
【0183】
(備考)
上記のICカード200、230、250、及びICカード利用者端末300、330、350は、集積回路又は暗号通信装置の一例である。また、上記のPUF206、306は、演算回路の一例である。上記の第1及び第2実施形態におけるシステム秘密情報mk、及び上記の第3実施形態における相互認証鍵Kauthは、所定の秘密情報の一例である。上記のチャレンジ値は、演算回路に入力される所定値の一例である。上記のレスポンス生成部204、304は、出力値取得部の一例である。上記の共有鍵生成部216、316は、暗号通信鍵生成部の一例である。また、上記の共通鍵Kは、暗号通信用の鍵の一例である。さらに、上記のセッション鍵Ksesは、相互認証で取得された共有情報の一例である。上記のICカード230、ICカード利用者端末330は、第1又は第2の通信装置の一例である。上記の鍵一致確認部232、332は、演算部及び送信部の一例である。
【0184】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【0185】
100 センタ
102 鍵情報提供部
104 記憶部
200、230、250 ICカード
202 鍵情報取得部
204 レスポンス生成部
206 PUF
208 記憶部
210 暗号化部
212 相互認証部
214 復号部
216 共有鍵生成部
218 暗号通信部
232 鍵一致確認部
252 暗号化部
254 復号部
256 相互認証部
258 暗号通信部
300、330、350 ICカード利用者端末
302 鍵情報取得部
304 レスポンス生成部
306 PUF
308 記憶部
310 暗号化部
312 相互認証部
314 復号部
316 共有鍵生成部
318 暗号通信部
332 鍵一致確認部
352 暗号化部
354 復号部
356 相互認証部
358 暗号通信部

【特許請求の範囲】
【請求項1】
素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、
所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、
前記所定の秘密情報を利用する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号部と、
を備える、集積回路。
【請求項2】
外部から前記所定値が与えられた際に、当該所定値を前記演算回路に入力して前記出力値を取得すると共に当該所定値を前記記憶部に格納する出力値取得部と、
前記所定値と共に前記所定の秘密情報が与えられた際に、前記出力値取得部により前記演算回路を用いて取得された出力値を鍵として当該所定の秘密情報を暗号化し、当該暗号化処理により得られた暗号文を前記記憶部に格納する暗号化部と、
をさらに備える、請求項1に記載の集積回路。
【請求項3】
前記記憶部には、前記所定の秘密情報として相互認証用の鍵が前記出力値を鍵とする暗号文の形で格納されており、
前記復号部は、前記相互認証用の鍵を用いて相互認証する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記相互認証用の鍵を復元する、請求項1に記載の集積回路。
【請求項4】
素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として、外部装置との間で共有する所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、前記所定の秘密情報を利用する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号部と、を有する、集積回路と、
前記外部装置との間で相互認証することにより共有情報を取得する相互認証部と、
前記相互認証部による相互認証で取得された共有情報と前記復号部で復元された所定の秘密情報とを組み合わせて暗号通信用の鍵を生成する暗号通信鍵生成部と、
前記暗号通信鍵生成部で生成された暗号通信用の鍵を用いて前記外部装置との間で暗号通信を実行する暗号通信部と、
を備える、暗号通信装置。
【請求項5】
素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、前記所定の秘密情報を利用する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号部と、を有する、集積回路と、
第2の通信装置と相互認証することにより共有情報を取得する相互認証部と、
前記第2の通信装置と相互認証が成功して共有情報を取得した場合に、前記復号部を用いて前記所定の秘密情報を復元し、当該所定の秘密情報と前記共有情報とを組み合わせて暗号通信用の鍵を生成する暗号通信鍵生成部と、
前記暗号通信鍵生成部で生成された暗号通信用の鍵を用いて前記第2の通信装置との間で暗号通信を実行する暗号通信部と、
を備える、第1の通信装置と;
素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として前記所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、前記所定の秘密情報を利用する際に、前記記憶部に格納された所定値を前記演算回路に入力し、当該演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号部と、を有する、集積回路と、
前記第1の通信装置と相互認証することにより共有情報を取得する相互認証部と、
前記第1の通信装置と相互認証が成功して共有情報が取得された場合に、前記復号部を用いて前記所定の秘密情報を復元し、当該所定の秘密情報と前記共有情報とを組み合わせて暗号通信用の鍵を生成する暗号通信鍵生成部と、
前記暗号通信鍵生成部で生成された暗号通信用の鍵を用いて前記第1の通信装置との間で暗号通信を実行する暗号通信部と、
を備える、第2の通信装置と;
を含む、暗号通信システム。
【請求項6】
前記第1の通信装置は、
前記第1及び第2の通信装置が共に保持する保持情報に対し、前記暗号通信鍵生成部で生成された暗号通信用の鍵をパラメータとする所定の演算処理を実行する演算部と、
前記演算部から出力された第1の演算結果を前記第2の通信装置に送信する送信部と、
をさらに備え、
前記第2の通信装置は、
前記第1及び第2の通信装置が共に保持する保持情報に対し、前記暗号通信鍵生成部で生成された暗号通信用の鍵をパラメータとする所定の演算処理を実行する演算部と、
前記演算部から出力された第2の演算結果を前記第1の通信装置に送信する送信部と、
をさらに備え、
前記第1の通信装置は、前記第2の通信装置から受信した前記第2の演算結果と前記第1の演算結果を比較し、
前記第2の通信装置は、前記第1の通信装置から受信した前記第1の演算結果と前記第2の演算結果を比較し、
前記第1及び第2の通信装置が有する暗号通信部は、前記第1及び第2の演算結果がいずれも一致した場合に前記暗号通信を実行する、請求項5に記載の暗号通信システム。
【請求項7】
素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、を有する集積回路を利用し、
前記所定の秘密情報を利用する際、前記記憶部に格納された所定値を前記演算回路に入力し、当該所定値に対応する出力値を取得する出力値取得ステップと、
前記出力値取得ステップで前記演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号ステップと、
を含む、情報処理方法。
【請求項8】
外部装置との間で相互認証することにより共有情報を取得する相互認証ステップと、
前記相互認証ステップによる相互認証で取得された共有情報と前記復号ステップで復元された所定の秘密情報とを組み合わせて暗号通信用の鍵を生成する鍵生成ステップと、
前記鍵生成ステップで生成された暗号通信用の鍵を用いて前記外部装置との間で暗号通信を実行する暗号通信ステップと、
をさらに含む、請求項7に記載の情報処理方法。
【請求項9】
第1の通信装置により、
第2の通信装置と相互認証することにより共有情報を取得する相互認証ステップと、
素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、を有する集積回路を利用し、前記第2の通信装置とに間で相互認証が成功して共有情報を取得した場合に、前記記憶部に格納された所定値を前記演算回路に入力し、当該所定値に対応する出力値を取得する出力値取得ステップと、
前記出力値取得ステップで前記演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号ステップと、
前記復元ステップで復元された所定の秘密情報と前記共有情報とを組み合わせて暗号通信用の鍵を生成する鍵生成ステップと、
前記鍵生成ステップで生成した暗号通信用の鍵を用いて前記第2の通信装置との間で暗号通信を実行する暗号通信ステップと、
前記第2の通信装置により、
第1の通信装置と相互認証することにより共有情報を取得する相互認証ステップと、
素子固有の物理的な特性により決まる入出力特性を持つ演算回路と、所定値の入力に対して前記演算回路から出力された出力値を鍵として所定の秘密情報に暗号化処理を施すことにより得られる暗号文と、前記演算回路に入力された所定値とが格納された記憶部と、を有する集積回路を利用し、前記第2の通信装置とに間で相互認証が成功して共有情報を取得した場合に、前記記憶部に格納された所定値を前記演算回路に入力し、当該所定値に対応する出力値を取得する出力値取得ステップと、
前記出力値取得ステップで前記演算回路から出力された出力値を用いて前記記憶部に格納された暗号文を復号することにより前記所定の秘密情報を復元する復号ステップと、
前記復元ステップで復元された所定の秘密情報と前記共有情報とを組み合わせて暗号通信用の鍵を生成する鍵生成ステップと、
前記鍵生成ステップで生成した暗号通信用の鍵を用いて前記第1の通信装置との間で暗号通信を実行する暗号通信ステップと、
を含む、暗号通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate


【公開番号】特開2010−226603(P2010−226603A)
【公開日】平成22年10月7日(2010.10.7)
【国際特許分類】
【出願番号】特願2009−73676(P2009−73676)
【出願日】平成21年3月25日(2009.3.25)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.EEPROM
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】