(57)【要約】【課題】ソースコードからＲＯＭキーが外部に漏えいした場合、全てのＩＣカードへの攻撃が可能となってしまう。【解決手段】ＩＣカードごとに割り当てられた固有のカードＩＤに対応する値と、外部から入力される秘密情報とに基づきハッシュ値を算出し、算出したハッシュ値を補間式に代入して求められる前記補間式の解に基づき、ＩＣカードの認証処理に用いられる秘密鍵を求める秘密鍵生成部と、前記秘密鍵によって暗号化されたコマンド情報を外部から入力した場合、前記秘密鍵生成部が求めた前記秘密鍵に基づき、前記暗号化されたコマンド情報を復号する復号部と、を備える。【選択図】図２
2015012498.tif 000002
【特許請求の範囲】
【請求項１】
ＩＣカードごとに割り当てられた固有のカードＩＤに対応する値と、外部から入力される秘密情報とに基づきハッシュ値を算出し、算出したハッシュ値を補間式に代入して求められる前記補間式の解に基づき、前記ＩＣカードの認証処理に用いられる秘密鍵を求める秘密鍵生成部と、
前記秘密鍵によって暗号化されたコマンド情報を外部から入力した場合、前記秘密鍵生成部が求めた前記秘密鍵に基づき、前記暗号化されたコマンド情報を復号する復号部と、
を備えることを特徴とするＩＣカード。
【請求項２】
前記補間式は、異なる前記カードＩＤが割り当てられた複数の前記ＩＣカード間で共通の方程式であることを特徴とする請求項１に記載のＩＣカード。
【請求項３】
前記秘密鍵生成部は、
予め決められた値で前記補間式の解を除算した余りを、前記秘密鍵として求めることを特徴とする請求項１又は２に記載のＩＣカード。
【請求項４】
前記秘密鍵生成部は、
前記カードＩＤに基づき、予め決められた数の複数のＩＣカードが属するグループごとに割り当てられる固有のロットＩＤを求め、求めた前記ロットＩＤと前記秘密情報とに基づくハッシュ値を前記補間式に代入して前記補間式の解を求めることを特徴とする請求項１から３のうちいずれか一項に記載のＩＣカード。
【請求項５】
前記補間式は、以下に示す式であり、
【数１】
2015012498.tif 000021
上記式において、Ｊは前記補間式を共有している全ての前記ＩＣカードにおいて使用される前記秘密鍵の数、ｊは任意の前記秘密鍵に対応する情報、Ｋｅｙｊは前記秘密鍵、ｒｊは前記秘密情報、Ｒｊは前記ロットＩＤと前記秘密情報とに基づくハッシュ値、ｓｊは前記補間式の解、ｃ及びｂ１〜ｂｊ−１は前記補間式に含まれる係数、ｐは任意の素数、ｋｊは任意の整数、であることを特徴とする請求項４に記載のＩＣカード。
【請求項６】
前記秘密鍵生成部は、
前記カードＩＤと前記秘密情報とに基づくハッシュ値を前記補間式に代入して前記補間式の解を求めることを特徴とする請求項１から３のうちいずれか一項に記載のＩＣカード。
【請求項７】
前記補間式は、以下に示す式であり、
【数２】
2015012498.tif 000022
上記式において、Ｉは前記補間式を共有している前記ＩＣカードの数、ｉは任意の前記ＩＣカードを示す情報、ｊは任意の前記秘密鍵に対応する情報、Ｋｅｙｊは前記秘密鍵、ｒｊは前記秘密情報、Ｒｉは前記カードＩＤと前記秘密情報に基づくハッシュ値、ｓｉは前記補間式の解、ｃ及びｂ１〜ｂｉ−１は前記補間式に含まれる係数、ｐは任意の素数、ｋｉは任意の整数、であることを特徴とする請求項６に記載のＩＣカード。
【請求項８】
ＩＣカードごとに割り当てられた固有のカードＩＤに対応する値と、外部から入力される秘密情報とに基づきハッシュ値を算出し、算出したハッシュ値を補間式に代入して求められる前記補間式の解に基づき、前記ＩＣカードの認証処理に用いられる秘密鍵を求める秘密鍵生成ステップと、
前記秘密鍵によって暗号化されたコマンド情報を外部から入力した場合、前記秘密鍵生成ステップにおいて求めた前記秘密鍵に基づき、前記暗号化されたコマンド情報を復号する復号ステップと、
を備えることを特徴とするＩＣカードの認証処理方法。
【請求項９】
コンピュータを、
ＩＣカードごとに割り当てられた固有のカードＩＤに対応する値と、外部から入力される秘密情報とに基づきハッシュ値を算出し、算出したハッシュ値を補間式に代入して求められる前記補間式の解に基づき、ＩＣカードの認証処理に用いられる秘密鍵を求める秘密鍵生成手段、
前記秘密鍵によって暗号化されたコマンド情報を外部から入力した場合、前記秘密鍵生成手段が求めた前記秘密鍵に基づき、前記暗号化されたコマンド情報を復号する復号手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力するコマンドに基づく認証を行うＩＣカード、ＩＣカードの認証処理方法、及びプログラムに関する。
【背景技術】
【０００２】
ＩＣ（Ｉｎｔｅｇｒａｔｅｄ Ｃｉｒｃｕｉｔ）チップを備えた情報媒体を用いて、例えば電子マネーサービス、キャッシュカードサービス、クレジットカードサービスなどの様々なサービスが提供されている。このような情報媒体は、複数の工程処理を経て製造される。
ここで、複数の工程処理がそれぞれ異なる工程処理者（エンティティ）により行われる場合、特定の工程処理者が無制限にＩＣチップの内容を書き換えることが可能であれば、不正利用が可能なカードが製造されることなどが考えられる。このため、それぞれの工程処理は独立して行われることが望ましい。
そこで、ＩＣチップベンダのみが、ＩＣチップ内に、ＲＯＭキーと呼ばれる認証用の秘密鍵を書き込む。また、発行者が秘密鍵によって暗号化されたコマンドを入力し、コンピュータが、入力したコマンドに基づき正しい発行者であるか否かの認証を行い、認証が成功した場合、発行処理を実行するものがある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２５３２２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載されている方式では、ＲＯＭキーのデータがソースコードの中に含まれているため、ＩＣチップベンダが、ソースコードからＲＯＭキーを取り出すことが可能であった。このため、ソースコードからＲＯＭキーが外部に漏えいした場合、全てのＩＣカードへの攻撃が可能となってしまうという問題があった。
【０００５】
本発明は、上記の課題を解決することができるＩＣカード、ＩＣカードの認証処理方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるＩＣカードは、ＩＣカードごとに割り当てられた固有のカードＩＤに対応する値と、外部から入力される秘密情報とに基づきハッシュ値［Ｒ］を算出し、算出したハッシュ値［Ｒ］を補間式に代入して求められる前記補間式の解［ｓ］に基づき、前記ＩＣカードの認証処理に用いられる秘密鍵［Ｋｅｙ］を求める秘密鍵生成部と、前記秘密鍵［Ｋｅｙ］によって暗号化されたコマンド情報を外部から入力した場合、前記秘密鍵生成部が求めた前記秘密鍵［Ｋｅｙ］に基づき、前記暗号化されたコマンド情報を復号する復号部と、を備える。
【０００７】
また、この発明は上述した課題を解決するためになされたもので、本発明の一態様によるＩＣカードの認証処理方法は、ＩＣカードごとに割り当てられた固有のカードＩＤに対応する値と、外部から入力される秘密情報とに基づきハッシュ値［Ｒ］を算出し、算出したハッシュ値［Ｒ］を補間式に代入して求められる前記補間式の解［ｓ］に基づき、前記ＩＣカードの認証処理に用いられる秘密鍵［Ｋｅｙ］を求める秘密鍵生成ステップと、前記秘密鍵［Ｋｅｙ］よって暗号化されたコマンド情報を外部から入力した場合、前記秘密鍵生成ステップにおいて求めた前記秘密鍵［Ｋｅｙ］に基づき、前記暗号化されたコマンド情報を復号する復号ステップと、を備えることを特徴とする。
【０００８】
さらに、この発明は上述した課題を解決するためになされたもので、本発明の一態様によるプログラムは、コンピュータを、ＩＣカードごとに割り当てられた固有のカードＩＤに対応する値と、外部から入力される秘密情報とに基づきハッシュ値［Ｒ］を算出し、算出したハッシュ値［Ｒ］を補間式に代入して求められる前記補間式の解［ｓ］に基づき、ＩＣカードの認証処理に用いられる秘密鍵［Ｋｅｙ］を求める秘密鍵生成手段、前記秘密鍵［Ｋｅｙ］によって暗号化されたコマンド情報を外部から入力した場合、前記秘密鍵生成手段が求めた前記秘密鍵［Ｋｅｙ］に基づき、前記暗号化されたコマンド情報を復号する復号手段、として機能させるためのプログラムである。
【発明の効果】
【０００９】
本発明によれば、ソースコードからＲＯＭキーが取り出されることを防止し、ＲＯＭキーの漏えいを防止することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るＩＣチップ発行システムにおけるエンティティの一例を示すブロック図である。
【図２】本発明の一実施形態に係るＩＣチップ発行システムにおいて実施される処理の概要について説明するための図である。
【図３】本発明の一実施形態に係るＩＣチップ発行システムの構成の一例を示すブロック図である。
【図４】本発明の一実施形態において利用されるテーブルの一例を示す図である。
【図５】本発明の一実施形態において利用されるテーブルの一例を示す図である。
【図６】本発明の一実施形態におけるカード開発処理の一例について説明するためのフローチャートである。
【図７】本発明の一実施形態における０次発行処理の一例について説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
［第１実施形態］
以下、本発明の一実施形態について、図面を参照して説明する。
本実施形態によるＩＣチップ発行システム１は、複数の工程処理を経て市場に提供されるＩＣチップを備えたＩＣカードを発行する。図１は、本実施形態の各工程処理を行う工程処理者（エンティティ）を示す図である。
符号ａのエンティティは、ＩＣカードＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）や、ＩＣカードのＲＯＭ内に記憶させておく秘密鍵生成情報を開発するカード開発者ａである（ＩＣカード開発工程Ａ）。カード開発者ａは、秘密鍵生成情報等を渡して、ＩＣカードの製造を依頼する。この秘密鍵生成情報は、入力する情報に基づきＩＣチップが秘密鍵を求めるためのロジック等の情報を含む。この秘密鍵は、ＩＣカードの発行処理において入力されるコマンドを復号するための鍵である。なお、秘密鍵生成情報及についての詳細な説明は後述する。
【００１２】
符号ｂのエンティティは、発行するＩＣカードのハードウェア面を総合的に管理する管理者（以下、カードベンダという）である。このカードベンダｂは、カード開発者ａから受け取った秘密鍵生成情報等を渡してＩＣチップの製造を依頼し、ＩＣベンダによって製造されたＩＣチップをＩＣカードに搭載して、ＩＣカードを製造する（ＩＣカード製造工程Ｂ）。
符号ｃのエンティティは、ＩＣカードＯＳや秘密鍵生成情報等が記憶されたＩＣチップを物理的に製造するＩＣチップベンダｃである（ＩＣチップ製造工程Ｃ）。このＩＣチップベンダｃは、受け取った秘密鍵生成情報等をＩＣチップに書き込み作成したＩＣチップを、カードベンダｂに納品する。
【００１３】
符号ｄのエンティティは、カードベンダによって製造されたＩＣカードにデータ構造を記憶させる製造者（以下、０次発行者ｄという）である（０次発行処理工程Ｄ）。この０次発行者ｄは、カード開発者ａから受け取ったコマンドや秘密情報を、カードベンダｂによって製造されたＩＣカードに入力して、０次発行を行う。
符号ｅのエンティティは、製造者によって製造されたＩＣカードにサービスプログラムを記憶させる生産者ｅである（サービス製造工程Ｅ）。
符号ｆのエンティティは、製造されたＩＣカードを用いてサービスを提供するサービス提供者である（サービス提供工程Ｆ）。
ここでは、ＩＣカード開発工程Ａと、ＩＣチップ製造工程Ｃと、ＩＣカード製造工程Ｂと、０次発行処理工程Ｄとは、主にＩＣカードのハードウェア面の製造を行う工程である。一方、サービス製造工程Ｅと、サービス提供工程Ｆとは、主にＩＣカードを用いて提供するサービスのソフトウェア面の製造を行う工程である。
【００１４】
本実施形態では、０次発行者処理工程Ｄにおいて、秘密鍵により暗号化されたコマンドに基づく認証処理を行う。この秘密鍵は、ＩＣチップに直接書き込まれない情報であって、入力される秘密情報等に基づきＩＣチップが求める情報である。よって、ＩＣチップベンダｃには、ＩＣチップに書き込まれる情報として、秘密鍵を求めるための情報（秘密鍵生成情報）が提供されるのみで、秘密鍵は提供されない。また、０次発行者ｄにも、秘密鍵で暗号化されたコマンドや秘密情報は提供されるが、秘密鍵は提供されない。これにより、本発明に係るＩＣチップ発行システム１は、例えば、ＩＣチップベンダｃに提供された情報が、０次発行者ｄに流出したとしても、０次発行者ｄが秘密鍵を得ることができないシステムを提供することができる。
【００１５】
次に、図２を参照して、本実施形態に係るＩＣチップ発行システム１において実行される処理の概要について説明する。図２は、本実施形態に係るＩＣチップ発行システム１において実施される処理の概要について説明するための図である。
図２に示す通り、本実施形態に係るＩＣチップ発行システム１は、主に、カード開発者端末１０と、カードベンダ端末２０と、ＩＣチップベンダ端末３０と、０次発行者端末４０と、ＩＣチップ５０とを備える。
カード開発者端末１０は、カード開発者ａによって操作され、ＩＣカード開発工程Ａを実行する端末である。カードベンダ端末２０は、カードベンダｂによって操作され、ＩＣカード製造工程Ｂを実行する端末である。ＩＣチップベンダ端末３０は、ＩＣチップベンダｃによって操作され、ＩＣチップ製造工程Ｃを実行する端末である。０次発行者端末４０は、０次発行者ｄによって操作され、０次発行処理工程Ｄを実行する端末である。ＩＣチップ５０は、ＩＣチップベンダｃによって製造されるＩＣチップである。なお、本実施形態において、ＩＣチップ製造工程Ｃは、カードベンダｂからの委託を受けたＩＣチップベンダｃがＩＣチップ５０を製造する工程であるから、ＩＣカード製造処理Ｂに含まれる処理である。
【００１６】
カード開発者ａは、カード開発者端末１０を用いて、ＩＣカードの開発を行い、ＩＣカードＯＳと秘密鍵生成情報とを作成する。そして、カード開発者ａは、作成したカードＯＳと秘密鍵生成情報を、カードベンダｂ側に渡す。なお、カードＯＳと秘密鍵生成情報は、セキュリティが確保されたネットワークを介して、カード開発者端末１０からカードベンダ端末２０に送信されるものであってもよく、郵送等によりカード開発者ａからカードベンダｂに引き渡されるものであってもよい。
【００１７】
カードベンダｂは、カードＯＳと秘密鍵生成情報をＩＣチップベンダｃ側に渡し、ＩＣチップの製造を依頼する。なお、カードＯＳと秘密鍵生成情報は、セキュリティが確保されたネットワークを介して、カードベンダ端末２０からＩＣチップベンダ端末３０に送信されるものであってもよく、郵送等によりカードベンダｂからＩＣチップベンダｃに引き渡されるものであってもよい。
【００１８】
ＩＣチップベンダｃは、カードベンダｂからＩＣチップの製造を依頼された場合、カードＯＳと秘密鍵生成情報とを書き込んだＩＣチップ５０を製造し、製造したＩＣチップ５０をカードベンダｂに納品する。
【００１９】
カードベンダｂは、ＩＣチップベンダｃから納品されたＩＣチップ５０を内蔵するＩＣカードを製造する。なお、カードベンダｂは、製造されたＩＣカードの表面に、各ＩＣチップ５０に書き込まれているカードＩＤと同じ情報を印字してもよい。そして、カードベンダｂは、製造したＩＣカードを、０次発行者ｄに渡す。
【００２０】
一方、カード開発者ａは、発行コマンドを秘密鍵で暗号化した暗号化発行コマンドを生成し、生成した暗号化発行コマンドを、秘密情報とともに、０次発行者ｄに渡す。なお、本実施形態において、暗号化発行コマンドと秘密情報とを、発行処理に必要な情報という。暗号化発行コマンドと秘密情報は、セキュリティが確保されたネットワークを介して、カード開発者端末１０から０次発行者端末４０に送信されるものであってもよく、郵送等によりカード開発者ａから０次発行者ｄに引き渡されるものであってもよい。
０次発行者ｄは、０次発行者端末４０に、暗号化発行コマンドと秘密情報とを入力し、ＩＣカードの発行処理を実行する。この０次発行者端末４０は、暗号化発行コマンドと秘密情報とを入力し、入力した情報を一時的に記憶部に格納しておき、発行対象であるＩＣカードごとに、対応する情報を記憶部から読み出して、発行処理を実行するものであってもよい。
【００２１】
ここで、ＩＣチップ５０に書き込む秘密鍵生成情報について詳細に説明する。
この秘密鍵生成情報には、例えば、カードＩＤを示す情報と、“カードＩＤからロットＩＤを求めるためのロジック”、“秘密情報ｒとロットＩＤ（又はカードＩＤ）からハッシュ値Ｒを求めるためのロジック”、“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解を求めるためのロジック”、及び、“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”が含まれている。
なお、鍵変換式とは、秘密鍵Ｋｅｙの値を含む方程式であって、この方程式により秘密鍵Ｋｅｙを算出することができる式である。また、本実施形態において、鍵変換式の解は、鍵変換解ｓと称し、補間式ｇ（Ｒ）の解と同一の値である。
【００２２】
なお、ＩＣチップ５０は、鍵変換式の解を求める方法として異なる方法を用いる場合、各方法に応じてそれぞれ異なる種類の情報を、秘密鍵生成情報として含む。
本実施形態において、ＩＣチップ発行システム１は、鍵変換式の解を求める方法として、以下に示す２つの方法を利用することができる。
一つの方法として、ＩＣチップ発行システム１は、ロットＩＤに基づくハッシュ値を補間式に代入して鍵変換式の解（つまり、鍵変換式解）を求める方式（以下、ロットＩＤに応じた鍵変換方法という）を利用することができる。この場合、秘密鍵生成情報は、“カードＩＤからロットＩＤを求めるためのロジック”を含み、“秘密情報ｒとロットＩＤからハッシュ値Ｒを求めるためのロジック”を含む。
また、他の方法として、ＩＣチップ発行システム１は、カードＩＤに基づくハッシュ値を補間式に代入して鍵変換式の解（つまり、鍵変換式解）を求める方式（以下、カードＩＤに応じた鍵変換方法という）を利用することができる。この場合、秘密鍵生成情報は、“カードＩＤからロットＩＤを求めるためのロジック”を含まず、“秘密情報ｒとカードＩＤからハッシュ値Ｒを求めるためのロジック”を含む。
なお、上の二つ方法において共通する点として、いずれの方法においても、秘密鍵生成情報は、“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解を求めるためのロジック”、及び、“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”は備える。
【００２３】
また、本実施形態において、秘密鍵Ｋｅｙは、異なるカードＩＤが割り当てられた複数のＩＣカード間で共通の情報である。
さらに、本実施形態において、補間式ｇ（Ｒ）は、異なるカードＩＤが割り当てられた複数のＩＣカード間で共通の情報である。
さらにまた、本実施形態において、補間式ｇ（Ｒ）は、異なる秘密鍵Ｋｅｙを求める複数のＩＣカード（つまり、“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”により異なる秘密鍵Ｋｅｙを求めるＩＣカード）間で共通の情報である。
【００２４】
カードＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）とは、個々のカードを識別するための固有の個体識別情報である。本実施形態において、カード開発者ａ（又は、カード開発者端末１０）は、各カードに対して、シーケンシャルな番号、例えば、カードＩＤ：００１，００２，００３・・・のような３ケタの番号をカードＩＤとして割り当てる。なお、本発明はこれに限られず、カードＩＤは、３ケタ以上の情報であってもよく、数字だけ、アルファベットだけ、又は、数字とアルファベットの組み合わせからなる情報であってもよい。なお、本実施形態において、同一の補間式ｇ（Ｒ）を共有するＩＣカードの数はＩ個であって、本明細書中では、カードＩＤｉ（ｉ＝１，２，３，・・・，Ｉ）とも記す。
【００２５】
また、ロットＩＤとは、予め決められた数の複数のＩＣカードが属するグループごとに割り当てられる固有のグループ識別情報である。同一のロットＩＤが割り当てられたグループには、それぞれ、同一の秘密情報ｒｊと秘密鍵Ｋｅｙｊが割り当てられる。なお、同一のロットＩＤが割り当てられたグループに属するＩＣカードの数は、カード開発者ａによって、任意に設定可能である。また、本実施形態において、同一の補間式ｇ（Ｒ）を共有するロットＩＤの数はＪ個であって、本明細書中では、ロットＩＤｊ（ｊ＝１，２，３，・・・，Ｊ）とも記す。
【００２６】
“カードＩＤからロットＩＤを求めるためのロジック”とは、カードＩＤからロットＩＤを求めるための演算式（又はカードＩＤからロットＩＤを求めるための条件に基づく処理）を実行するプログラムである。本実施形態において、カード開発者ａは、カードＩＤ：００１〜１００のＩＣカードにロットＩＤ＝１を、カードＩＤ：１０１〜３００のＩＣカードにロットＩＤ＝２を、それぞれ割り当てる。この場合、カードＩＤ：００１〜１００からはロットＩＤ＝１を求めるロジックと、カードＩＤ：１０１〜３００からはロットＩＤ＝２を求めるためのロジックが、カード開発者ａにより作成される。
【００２７】
“秘密情報ｒとロットＩＤ（又はカードＩＤ）からハッシュ値Ｒを求めるためのロジック”とは、秘密情報ｒとロットＩＤ（又はカードＩＤ）からハッシュ値Ｒを算出するための演算式（又は秘密情報ｒとロットＩＤ（又はカードＩＤ）からハッシュ値Ｒを算出するための条件に基づく処理）を実行するプログラムである。なお、ハッシュ値Ｒは、補間式ｇ（Ｒ）に代入される変数である。
ロットＩＤに応じた鍵変換方法の場合、“秘密情報ｒとロットＩＤからハッシュ値Ｒｊを求めるためのロジック”が、カードＩＤに応じた鍵変換方法の場合、“秘密情報ｒとカードＩＤからハッシュ値Ｒを求めるためのロジック”が、それぞれＩＣチップ５０に格納されている。
【００２８】
ロットＩＤに応じた鍵変換方法の場合の“秘密情報ｒとロットＩＤからハッシュ値Ｒを求めるためのロジック”は、以下の式で定義され、ロットＩＤごとにハッシュ値Ｒを求めるための演算式である。
【００２９】
【数１】
2015012498.tif 000003
【００３０】
なお、上述の式において、Ｌｏｔ＿ＩＤｊはロットＩＤであり、以下、ロットＩＤと記す。また、秘密情報ｒとロットＩＤに基づくハッシュ値Ｒを、以下、ハッシュ値Ｒｊと記す。ロットＩＤに応じた鍵変換方法で利用される秘密情報ｒを、以下、秘密情報ｒｊと記す。
【００３１】
一方、カードＩＤに応じた鍵変換方法の場合の“秘密情報ｒとカードＩＤからハッシュ値Ｒを求めるためのロジック”は、以下の式で定義され、カードＩＤごとにハッシュ値Ｒを求めるための演算式である。
【００３２】
【数２】
2015012498.tif 000004
【００３３】
なお、上述の式において、Ｃａｒｄ＿ＩＤｉはカードＩＤｉである。また、秘密情報ｒとカードＩＤに基づくハッシ値Ｒを、以下、ハッシュ値Ｒｉと記す。一方、本実施形態において、秘密情報ｒは、ロットＩＤごとに決められる情報であるため、秘密情報ｒｊである。
【００３４】
“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解ｓを求めるためのロジック”とは、補間式ｇ（Ｒ）にハッシュ値Ｒを代入して、補間式ｇ（Ｒ）の一の解である鍵変換式解ｓを求めるための演算式（又は補間式ｇ（Ｒ）の一の解である鍵変換式解ｓを求めるための条件に基づく処理）を実行するプログラムである。この補間式ｇ（Ｒ）は、異なる秘密鍵Ｋｅｙが割り当てられた複数のＩＣカード間で共通に利用される式である。また、この補間式ｇ（Ｒ）は、鍵変換式の解である鍵変換式解ｓを求める補間式であって、例えば、ラグランジェ補間式である。この補間式ｇ（Ｒ）において、未知数は、ハッシュ値Ｒである。なお、鍵変換式解ｓは、補間式の解でもある。
【００３５】
ロットＩＤｊに応じた鍵変換方法の場合の“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解ｓを求めるためのロジック”は、以下の式で定義され、ロットＩＤｊごとに鍵変換式解ｓｊを求めるための演算式である。
【００３６】
【数３】
2015012498.tif 000005
【００３７】
なお、上述の式において、ｃ及びｂ１〜ｂＪ−１は係数である。また、ロットＩＤに応じた鍵変換方法で求められる鍵変換式解ｓを、以下、鍵変換式解ｓｊと記す。
【００３８】
一方、カードＩＤに応じた鍵変換方法の場合の“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解ｓを求めるためのロジック”は、以下の式で定義され、カードＩＤごとに鍵変換式解ｓｉを求めるための演算式である。
【００３９】
【数４】
2015012498.tif 000006
【００４０】
なお、上述の式において、ｃ及びｂ１〜ｂＩ−１は係数である。また、カードＩＤに応じた鍵変換方法で求められる鍵変換式解ｓを、以下、鍵変換式解ｓｉと記す。
【００４１】
“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”とは、鍵変換式の解である鍵変換式解ｓに基づき、秘密鍵Ｋｅｙを求める演算式（又は鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるための条件に基づく処理）を実行するプログラムである。この鍵変換式としては、異なる秘密鍵Ｋｅｙ同士でも共通の１つの式が利用される。なお、この鍵変換式には、鍵変換式パラメータ（任意の法ｐ及び任意の整数ｋ）が含まれている。この任意の整数ｋは、ロットＩＤ又はカードＩＤごとに、異なる値である。また、任意の法ｐは、素数であって、全ての秘密鍵Ｋｅｙｊよりも大きい値である。例えば、秘密鍵Ｋｅｙｊが１２８ｂｉｔである場合、任意の法ｐは１２９ｂｉｔの素数のうち最も小さい値である。このように、任意の法ｐのビット数を秘密鍵Ｋｅｙｊのビット数に応じて決定することにより、算出される秘密鍵Ｋｅｙｊのビット数を任意の法ｐ以下のサイズに固定化することが可能となる。
【００４２】
ロットＩＤに応じた鍵変換方法の場合の鍵変換式解ｓは、以下の式で定義されている。
【００４３】
【数５】
2015012498.tif 000007
【００４４】
なお、上述の式において、ｐは大きな素数であり、秘密鍵Ｋｅｙｊはｐの要素に含まれる。また、ｋｊは、Ｋｅｙｊ≡ｓｊ ｍｏｄ ｐを満たす任意の整数である。
【００４５】
また、ロットＩＤに応じた鍵変換方法の場合の“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”は、以下の式で定義され、ロットＩＤごとに秘密鍵Ｋｅｙｊを求めるための演算式である。
【００４６】
【数６】
2015012498.tif 000008
【００４７】
一方、カードＩＤに応じた鍵変換方法の場合の鍵変換式解ｓは、以下の式で定義されている。
【００４８】
【数７】
2015012498.tif 000009
【００４９】
なお、上述の式において、ｐは大きな素数であり、秘密鍵Ｋｅｙｊはｐの要素に含まれる。また、ｋｉは、Ｋｅｙｊ≡ｓｉ ｍｏｄ ｐを満たす任意の整数である。
【００５０】
また、カードＩＤに応じた鍵変換方法の場合の“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”は、以下の式で定義され、カードＩＤごとに秘密鍵Ｋｅｙｊを求めるための演算式である。
【００５１】
【数８】
2015012498.tif 000010
【００５２】
次に、図３を参照して、本実施形態に係るＩＣチップ発行システム１の構成の一例について説明する。図３は、本実施形態に係るＩＣチップ発行システム１の構成を示すブロック図である。
上述の通り、ＩＣチップ発行システム１は、カード開発者端末１０と、カードベンダ端末２０と、ＩＣチップベンダ端末３０と、０次発行者端末４０と、ＩＣチップ５０とを備える。なお、本発明に係るＩＣチップ発行システム１は、サービス製造工程Ｅを実行する端末や、サービス提供工程Ｆを実行する端末を備えるものであってもよいが、ここでの説明は省略する。
【００５３】
カード開発者端末１０は、例えば、パーソナルコンピュータであって、入力部１１と、演算処理部１２と、出力部１３と、記憶部１４とを備える。
カードベンダ端末２０は、例えば、パーソナルコンピュータであって、入力部２１と、演算処理部２２と、出力部２３と、記憶部２４とを備える。
ＩＣチップベンダ端末３０は、例えば、パーソナルコンピュータであって、入力部３１と、演算処理部３２と、出力部３３と、記憶部３４とを備える。
０次発行者端末４０は、例えば、パーソナルコンピュータであって、入力部４１と、演算処理部４２と、出力部４３と、記憶部４４とを備える。
【００５４】
入力部１１，２１，３１，４１は、例えば、ユーザからの操作を受け付けるマウスやキーボード等の操作部や、データの入力を受け付ける端子等を含む。
演算処理部１２，２２，３２，４２は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）であって、記憶部１４に格納されているプログラムを実行する。
出力部１３，２３，３３，４３は、例えば、外部のメモリ媒体やネットワークを介して接続される外部装置にデータを出力する端子等を含む。
記憶部１４，２４，３４，４４は、各装置が実行するプログラムや種々の情報を格納する。
【００５５】
ＩＣチップ５０は、ＩＣチップベンダｃによって生成されるＩＣチップである。このＩＣチップ５０は、入力部５１と、記憶部５２と、秘密鍵生成部５３と、復号部５４と、コマンド実行部５５と、出力部５６とを備える。
入力部５１は、例えば、０次発行者端末４０の出力部４３と接続されており、この出力部４３からの情報を入力する。
記憶部５２は、例えば、カードＩＤ（個体識別番号）を示す情報と、“カードＩＤからロットＩＤを求めるためのロジック”、“秘密情報ｒとロットＩＤ（又はカードＩＤ）からハッシュ値Ｒを求めるためのロジック”、“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解を求めるためのロジック”、及び、“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”を格納する。
【００５６】
秘密鍵生成部５３は、入力部５１を介して秘密情報ｒを外部から入力した場合、記憶部５２から読み出したカードＩＤ（又は、カードＩＤから求められるロットＩＤ）と秘密情報ｒとに基づくハッシュ値Ｒを求める。この秘密鍵生成部５３は、求めたハッシュ値Ｒを補間式ｇ（Ｒ）に代入して鍵変換式の解である鍵変換式解ｓを求め、求めた鍵変換式解ｓに基づき、秘密鍵Ｋｅｙを求める。
【００５７】
例えば、ロットＩＤに応じた鍵変換方法を利用する場合、秘密鍵生成部５３は、カードＩＤに基づき、予め決められた数の複数のＩＣカードが属する一つのグループごとに割り当てられた固有のロットＩＤを求める。また、秘密鍵生成部５３は、求めたロットＩＤと秘密情報ｒｊとに基づくハッシュ値Ｒｊを求め、求めたハッシュ値Ｒｊを補間式ｇ（Ｒｊ）に代入して鍵変換式の解である鍵変換式解ｓｊを求める。そして、秘密鍵生成部５３は、求めた鍵変換式解ｓｊを、予め決められた値（以下に説明する素数ｐ）で除算した余りを、秘密鍵Ｋｅｙｊとする。
【００５８】
一方、カードＩＤに応じた鍵変換方法を利用する場合、秘密鍵生成部５３は、カードＩＤと秘密情報ｒｊとに基づくハッシュ値Ｒｉを求め、求めたハッシュ値Ｒｉを補間式ｇ（Ｒｉ）に代入して鍵変換式の解である鍵変換式解ｓｉを求める。そして、秘密鍵生成部５３は、求めた鍵変換式解ｓｉを、予め決められた値（以下に説明する素数ｐ）で除算した余りを、秘密鍵Ｋｅｙｉとする。
【００５９】
復号部５４は、秘密鍵Ｋｅｙによって暗号化された暗号化発行コマンドを０次発行者端末４０から入力した場合、秘密鍵生成部５３によって求められた秘密鍵Ｋｅｙに基づき、暗号化発行コマンドを復号する。
【００６０】
コマンド実行部５５は、認証が成功した後、発行コマンドを受け入れ、発行コマンドに応じた処理を実行する。このコマンド実行部５５は、例えば、以下のようなＩＣカードコマンドに応じた処理を実行することができる。
・ＧＥＴＣＨＡＬＬＥＮＧＥ
・ＥＸＴＥＲＮＡＬ ＡＵＴＨＥＮＴＩＣＡＴＥ
・ＩＮＴＥＲＮＡＬ ＡＵＴＨＥＮＴＩＣＡＴＥ
本実施形態において、０次発行者ｄが秘密情報ｒをカードに送信するコマンドや、コマンドを復号した結果から使用された復号鍵（秘密鍵Ｋｅｙ）が正しいか否かの認証処理（つまり、正しい０次発行者ｄであるか否かの認証）を指示するコマンド等（以下、発行時認証用コマンドという）は、一般的なコマンドではない独自コマンドである。また、発行時認証用コマンドは、暗号化されていない非暗号化コマンドである。
これら独自コマンドは、秘密鍵Ｋｅｙにより暗号化可能である。なお、コマンドを暗号化することにより、コマンド送信時に添付する秘密データを保護したり、独自コマンドを保護したり、コマンドシーケンスを保護することができる。
【００６１】
出力部５６は、例えば、０次発行者端末４０の入力部４１と接続されており、この入力部４１へ情報を出力する。
【００６２】
次に、図４，５を参照して、秘密鍵Ｋｅｙを求めるためのロジックを作成するための情報を格納するテーブルの一例について説明する。
図４は、ロットＩＤに応じた鍵変換方法の場合に用意されるテーブルであって、ロットＩＤごとに、秘密鍵Ｋｅｙｊを求めるためのロジックを作成するための情報を格納するテーブルの一例を示す図である。図４に示すテーブルは、ロットＩＤごとに、カードＩＤ、秘密情報ｒｊ、秘密鍵Ｋｅｙｊ、ハッシュ値Ｒｊ、鍵変換式解ｓｊ、及び補間式ｇ（Ｒｊ）を、それぞれ対応付けて格納するテーブルである。この図４に示すテーブルには、ロットＩＤ：１〜Ｊのそれぞれに対応するＪ個の補間式が格納されている。
【００６３】
一方、図５は、カードＩＤに応じた鍵変換方法の場合に用意されるテーブルであって、カードＩＤごとに、秘密鍵Ｋｅｙｊを求めるためのロジックを作成するための情報を格納するテーブルの一例を示す図である。図５に示すテーブルは、カードＩＤごとに、ロットＩＤ、秘密情報ｒｊ、秘密鍵Ｋｅｙｊ、ハッシュ値Ｒｉ、鍵変換式解ｓｉ、及び補間式ｇ（Ｒｉ）を、それぞれ対応付けて格納するテーブルである。この図５に示すテーブルには、カードＩＤ：００１〜Ｉのそれぞれに対応するＩ個の補間式が格納されている。
【００６４】
これら図４，５に示す通り、秘密情報ｒｊと秘密鍵Ｋｅｙｊは、ロットＩＤごとに決められている。これら図４，５に示すテーブルは、例えば、カード開発者端末１０の記憶部１４に格納されている。
このカード開発者端末１０は、ロットＩＤごとに異なるハッシュ値Ｒｊを用いて秘密鍵Ｋｅｙｊを求めるためのロジックを作成する場合、図４に示すテーブルに格納されているｊ個の補間式ｇ（Ｒ１），ｇ（Ｒ２），・・・，（Ｒｊ）の連立方程式を計算することにより、ロットＩＤ：１〜Ｊが割り当てられた全てのＩＣカードに共通の補間式を求めることができる。
一方、カードＩＤごとに異なるハッシュ値Ｒｉを用いて秘密鍵Ｋｅｙｊを求めるためのロジックを作成する場合、カード開発者端末１０は、図５に示すテーブルに格納されているＩ個の補間式ｇ（Ｒ００１），ｇ（Ｒ００２），・・・，（ＲＩ）の連立方程式を計算することにより、カードＩＤ：００１〜Ｉが割り当てられた全てのＩＣカードに共通の補間式を求めることができる。
【００６５】
次に、図６を参照して、本実施形態に係るカード開発者ａ（又はカード開発者端末１０）によって実行される処理の一例について説明する。図６は、本実施形態に係るカード開発者ａ（又はカード開発者端末１０）によって実行される処理の一例について説明するためのフローチャートである。なお、ここでは、ロットＩＤに応じた鍵変換方法に用いられる秘密鍵生成情報を生成するための処理と、カードＩＤに応じた鍵変換方法に用いられる秘密鍵生成情報を生成するための処理とを、同時に説明する。
（ステップＳＴ１０１）
まず、カード開発者ａは、各カードのカードＩＤを決定する。このカードＩＤは、個々のカードを識別するための固有の情報である。例えば、カード開発者ａは、カードＩＤ：００１，００２，００３，・・・１００，１０１，・・・，３００，・・・，ｉ，・・・Ｉを割り当てる。
【００６６】
（ステップＳＴ１０２）
次に、カード開発者ａは、同一の秘密鍵Ｋｅｙｊを利用するカードの数を、秘密鍵Ｋｅｙｊごとに決定する。言い換えると、カード開発者ａは、異なるＩＣカード間で共通の秘密鍵Ｋｅｙｊを利用する一のグループに含まれるカード数を決定する。このカード開発者ａは、例えば、カードＩＤ：００１〜１００の１００枚のカードを１つのグループとし、カードＩＤ：１０１〜３００の２００枚のカードを１つのグループとすることを決定する。
【００６７】
（ステップＳＴ１０３）
そして、カード開発者ａは、同一の秘密鍵Ｋｅｙｊを利用するグループそれぞれに対して、個々のグループを識別するためのロットＩＤを割り当てる。このカード開発者ａは、例えば、カードＩＤ：００１〜１００のグループに対してロットＩＤ：１を割り当てる。また、カード開発者ａは、例えば、カードＩＤ：１０１〜３００のグループに対してロットＩＤ：２を割り当てる。
【００６８】
（ステップＳＴ１０４）
次いで、カード開発者ａは、それぞれ対応するロットＩＤとカードＩＤとを、入力部１１を介してカード開発者端末１０に入力し、対応するロットＩＤとカードＩＤ同士をそれぞれ対応付けて記憶部１４に登録する。つまり、カード開発者端末１０の演算処理部１２は、入力するロットＩＤとカードＩＤとを、それぞれ対応付けて、記憶部１４のテーブルに書き込む。
また、カード開発者端末１０の演算処理部１２は、“カードＩＤからロットＩＤを求めるためのロジック”を生成し、記憶部１４に格納する。
【００６９】
（ステップＳＴ１０５）
そして、カード開発者ａは、各グループ（つまり、同一のロットＩＤが割り当てられた複数のカード）に、同一の秘密情報ｒｊを割り当て、カード開発者端末１０に入力する。つまり、カード開発者ａは、それぞれのロットＩＤ（ｊ＝１，２，・・・）に対して、発行処理時の認証用に使用する秘密情報ｒｊを決定し、カード開発者端末１０の記憶部１４に登録する。
例えば、カード開発者ａは、ロットＩＤ：１のグループには秘密情報ｒ１＝ＸＸＸＸＸＸを、ロットＩＤ：２のグループには秘密情報ｒ２＝ＹＹＹＹＹＹを、それぞれ割り当てる。つまり、カード開発者端末１０の演算処理部１２は、入力する秘密情報ｒｊとロットＩＤとをそれぞれ対応付けて、記憶部１４のテーブルに書き込む。なお、秘密情報ｒｊは、安全に生成された乱数であることが好ましく、例えば、カード開発者端末１０の演算処理部１２によって発行される任意の数字（又はアルファベット、数字とアルファベットの組み合わせ）であってもよい。
【００７０】
（ステップＳＴ１０６）
次いで、カード開発者端末１０の演算処理部１２は、補間式に代入する未知数であるハッシュ値Ｒを求める。つまり、この演算処理部１２は、ロットＩＤごとにハッシュ値Ｒｊを求めるとともに（ロットＩＤに応じた鍵変換方法に対応）、カードＩＤごとにハッシュ値Ｒｉを求める（カードＩＤに応じた鍵変換方法に対応）。
例えば、ロットＩＤごとにハッシュ値Ｒｊを求める場合（ロットＩＤに応じた鍵変換方法に対応）、カード開発者端末１０の演算処理部１２は、以下の式に従って、テーブルにおいてそれぞれ対応付けられているロットＩＤと秘密情報ｒｊとに基づくハッシュ値ＲｊをロットＩＤごとに求める。
【００７１】
【数９】
2015012498.tif 000011
【００７２】
つまり、カード開発者端末１０の演算処理部１２が、ロットＩＤ：１，２，・・・，ｊ，・・・ごとに、ハッシュ値Ｒ１，Ｒ２，・・・，Ｒｊ，・・・を生成する。
【００７３】
一方、カードＩＤごとにハッシュ値Ｒｉを求める場合（カードＩＤに応じた鍵変換方法に対応）、カード開発者端末１０の演算処理部１２は、以下の式に従って、テーブルにおいてそれぞれ対応付けられているカードＩＤと秘密情報ｒｊとに基づくハッシュ値ＲｉをカードＩＤごとに求める。
【００７４】
【数１０】
2015012498.tif 000012
【００７５】
つまり、カード開発者端末１０の演算処理部１２が、カードＩＤ：００１，００２，００３，・・・，ｉ，・・・ごとに、ハッシュ値Ｒ００１，Ｒ００２，Ｒ００３，・・・，Ｒｉ，・・・を求める。
【００７６】
また、カード開発者端末１０の演算処理部１２は、“秘密情報ｒとロットＩＤ（又はカードＩＤ）からハッシュ値Ｒを求めるためのロジック”を生成し、記憶部１４に格納する。
【００７７】
（ステップＳＴ１０７）
そして、カード開発者端末１０の演算処理部１２は、ロットＩＤごとに、秘密鍵Ｋｅｙｊを生成する。なお、この秘密鍵Ｋｅｙｊは、演算処理部１２によって生成される任意の乱数であってもよく、カード開発者ａにより決められカード開発者端末１０に入力される情報であってもよい。
そして、カード開発者端末１０の演算処理部１２は、生成した秘密鍵Ｋｅｙｊを、ロットＩＤに対応付けて、記憶部１４のテーブルに書き込む。
【００７８】
（ステップＳＴ１０８）
次いで、カード開発者端末１０の演算処理部１２は、鍵変換式に含まれる鍵変換式パラメータ（任意の法ｐと任意の整数ｋ）を生成する。なお、任意の整数ｋは、ロットＩＤごとに決められた任意の整数ｋｊ、又は、カードＩＤごとに決められた任意の整数ｋｉを含む。
【００７９】
また、カード開発者端末１０の演算処理部１２は、“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”を生成し、記憶部１４に格納する。
本実施形態において、ロットＩＤごとに鍵変換式を用意する場合（ロットＩＤに応じた鍵変換方法に対応）、カード開発者端末１０の演算処理部１２は、以下に示す鍵変換式を生成し、記憶部１４に格納する。
【００８０】
【数１１】
2015012498.tif 000013
【００８１】
そして、演算処理部１２は、以下の式で示す“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”を生成し、記憶部１４に格納する。
【００８２】
【数１２】
2015012498.tif 000014
【００８３】
一方、カードＩＤごとに鍵変換式を用意する場合（カードＩＤに応じた鍵変換方法に対応）、カード開発者端末１０は、以下に示す鍵変換式を生成し、記憶部１４に格納する。
【００８４】
【数１３】
2015012498.tif 000015
【００８５】
そして、演算処理部１２は、以下の式で示す“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”を生成し、記憶部１４に格納する。
【００８６】
【数１４】
2015012498.tif 000016
【００８７】
（ステップＳＴ１０９）
そして、カード開発者端末１０の演算処理部１２は、鍵変換式に、ステップＳＴ１０７で生成した秘密鍵Ｋｅｙｊと、ステップＳＴ１０８において生成した鍵変換式パラメータ（ｐ，ｋ）を代入して、補間式ｇ（Ｒ）の解である鍵変換式解ｓを求める。
言い換えると、カード開発者端末１０の演算処理部１２は、秘密鍵Ｋｅｙｊを、任意の整数ｋを用いて、任意の法ｐのもとで合同な別の値ｓに変換する。
【００８８】
例えば、ステップＳＴ１０７において、ロットＩＤごとにハッシュ値Ｒｊが生成されている場合、カード開発者端末１０の演算処理部１２は、ステップＳＴ１０６において生成したハッシュ値Ｒ１を補間式ｇ（Ｒ１）に代入して、ｃ，ｂ１，ｂ２，・・・，ｂＪ−１を含む数値で表される鍵変換式解ｓ１を算出する。つまり、カード開発者端末１０は、以下の式に示す鍵変換式解ｓ１を算出する。
【００８９】
【数１５】
2015012498.tif 000017
【００９０】
（ステップＳＴ１１０）
次いで、カード開発者端末１０の演算処理部１２は、全てのロットＩＤ：１，２，・・・，Ｊについて、ステップＳＴ１０９の処理を実行したか否かを判定する。全てのロットＩＤについてステップＳＴ１０９の処理が終了していない場合、カード開発者端末１０の演算処理部１２は、ステップＳＴ１０９に戻って、ステップＳＴ１０９の処理を繰り返す。
【００９１】
例えば、カード開発者端末１０の演算処理部１２は、ステップＳＴ１０９の処理に戻って、ステップＳＴ１０６において生成したハッシュ値Ｒ２を補間式ｇ（Ｒ２）に代入して、以下の式に示す鍵変換式解ｓ２を算出する。
【００９２】
【数１６】
2015012498.tif 000018
【００９３】
そして、この処理を繰り返し、カード開発者端末１０の演算処理部１２は、ステップＳＴ１０６において生成したハッシュ値Ｒｊを補間式ｇ（Ｒｊ）に代入して、以下の式に示す鍵変換式解ｓｊを算出する。
【００９４】
【数１７】
2015012498.tif 000019
【００９５】
（ステップＳＴ１１１）
ステップＳＴ１１０において、全てのロットＩＤ：１，２，・・・，ＪについてステップＳＴ１０９の処理が終了したと判定した場合、カード開発者端末１０の演算処理部１２は、ステップＳＴ１０９において算出した全ての鍵変換式ｓ１，ｓ２，・・・，ｓＪの連立方程式を解くことにより、補間式に含まれる係数ｃ，ｂ１，ｂ２，・・・，ｂＪ−１を求める。
これにより、カード開発者端末１０の演算処理部１２は、補間式ｇ（Ｒｊ）＝ｃ＋ｂ１・Ｒｊ＋ｂ２・（Ｒｊ）２＋，・・・，ｂＪ−１・（Ｒｊ）Ｊ−１を得ることができる。つまり、カード開発者端末１０の演算処理部１２は、“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解ｓを求めるためのロジック”を生成し、記憶部１４に格納することができる。
【００９６】
なお、カード開発者端末１０の演算処理部１２は、ステップＳＴ１０６において、カードＩＤごとにハッシュ値Ｒｉが生成されている場合（つまり、カードＩＤに応じた鍵変換方法を用いる場合）も、上述と同様にして、補間式ｇ（Ｒｉ）＝ｃ＋ｂ１・Ｒｉ＋ｂ２・（Ｒｉ）２＋，・・・，ｂＩ−１・（Ｒｉ）Ｉ−１を得ることができる。
【００９７】
簡単に説明すると、カード開発者端末１０は、ステップＳＴ１０９の処理を繰り返すことにより、以下の式に示す鍵変換式解ｓ００１，ｓ００２，・・・，ｓｉ，・・・を算出する。
【００９８】
【数１８】
2015012498.tif 000020
【００９９】
そして、全てのカードＩＤについてステップＳＴ１０９の処理が終了したと判定した場合、カード開発者端末１０は、ステップＳＴ１０９において算出した全ての鍵変換式ｓ００１，ｓ００２，・・・，ｓｉ，・・・の連立方程式を解くことにより、補間式に含まれる係数ｃ，ｂ１，ｂ２，・・・，ｂＩ−１を求める。
これにより、カード開発者端末１０の演算処理部１２は、補間式ｇ（Ｒｉ）＝ｃ＋ｂ１・Ｒｉ＋ｂ２・（Ｒｉ）２＋，・・・，ｂＩ−１・（Ｒｉ）Ｉ−１を得ることができる。
カード開発者端末１０の演算処理部１２は、“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解ｓを求めるためのロジック”を生成し、記憶部１４に格納する。
【０１００】
そして、カード開発者端末１０の演算処理部１２は、これら処理によって得られた情報、つまり、カードＩＤを示す情報と、“カードＩＤからロットＩＤを求めるためのロジック、“秘密情報ｒとロットＩＤ（又はカードＩＤ）からハッシュ値Ｒを求めるためのロジック”、“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解ｓを求めるためのロジック”、及び、“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”を、ソースコードに実装する。
【０１０１】
（ステップＳＴ１１２）
次いで、カード開発者端末１０の演算処理部１２は、作成したソースコードを、所定のメモリ媒体に書き込み、又は、セキュリティが確保されたネットワークを介してカードベンダ端末２０に送信する。これにより、カードＯＳや秘密鍵生成情報等を含むソースコードが書き込まれた所定のメモリ媒体をカードベンダｂ側に渡すこと、又は、カードＯＳや秘密鍵生成情報等を含むソースコードをネットワークを介してカードベンダ端末２０に渡すことができる。
【０１０２】
（ステップＳＴ１１３）
また、カード開発者端末１０の演算処理部１２は、ステップＳＴ１０７において生成した秘密鍵Ｋｅｙｊにより、発行処理に用いられる発行コマンドを暗号化する。そして、カード開発者端末１０は、暗号化した発行コマンドと秘密情報ｒｊとを、共通するロットＩＤごとに対応付けた情報を所定のメモリ媒体に書き込み、又は、セキュリティが確保されたネットワークを介して０次発行者端末４０に送信する。これにより、秘密鍵Ｋｅｙｊにより暗号化された発行コマンドと秘密情報ｒｊとを、０次発行者ｄ側に渡すこと、又は、秘密鍵Ｋｅｙｊにより暗号化された発行コマンドと秘密情報ｒｊとを、ネットワークを介して０次発行者ｄ側に渡すことができる。
【０１０３】
次に、図７を参照して、本実施形態に係る０次発行者ｄ（又は０次発行者端末４０）によって実行される処理の一例について説明する。図７は、本実施形態に係る０次発行者ｄ（又は０次発行者端末４０）によって実行される処理の一例について説明するためのフローチャートである。なお、ここでは、０次発行者端末４０と、発行処理の対象であるＩＣチップ５０が、通信可能に接続されている。
【０１０４】
（ステップＳＴ２０１）
例えば、０次発行者ｄは、入力部４１を介して、０次発行者端末４０に、秘密情報ｒ１を入力する。０次発行者端末４０の演算処理部４２は、入力した秘密情報ｒ１を、記憶部４４に書き込む。なお、０次発行者端末４０の演算処理部４２は、秘密情報ｒ１が記憶されたメモリ媒体が入力部４１に接続された場合、このメモリ媒体から読み出した情報を、記憶部４４に書き込むものであってもよい。
（ステップＳＴ２０２）
次いで、０次発行者ｄは、入力部４１を介して、０次発行者端末４０の演算処理部４２に、発行時認証用コマンドを入力する。
（ステップＳＴ２０３）
発行時認証用コマンドを入力すると、０次発行者端末４０の演算処理部４２は、発行時認証用コマンドを、出力部４３を介して、発行対象であるＩＣチップ５０に出力する。また、演算処理部４２は、発行時認証用コマンドとともに、ステップＳＴ２０１で入力した秘密情報ｒ１も、ＩＣチップ５０に出力する。
【０１０５】
（ステップＳＴ２０４）
次いで、発行処理の対象であるＩＣチップ５０は、入力部５１を介して、０次発行者端末４０から、発行時認証用コマンドの認証を指示するコマンドと秘密情報ｒ１を入力する。なお、本実施形態において、発行時認証用コマンドは非暗号化コマンドであるため、ＩＣチップは、この発行時認証用コマンドに従って、以下の処理を実行する。（ステップＳＴ２０５）
ＩＣチップ５０の秘密鍵生成部５３は、記憶部５２に“カードＩＤからロットＩＤを求めるためのロジック”が記憶されている場合、このロジックを参照して、カードＩＤからロットＩＤを求める。
例えば、ＩＣチップ５０の記憶部５２には、カードＩＤ：００１と、“カードＩＤからロットＩＤを求めるためのロジック”とが書き込まれている。この場合、秘密鍵生成部５３は、“カードＩＤからロットＩＤを求めるためのロジック”を参照して、カードＩＤ：００１からロットＩＤ：１を求める。
【０１０６】
（ステップＳＴ２０６）
次いで、秘密鍵生成部５３は、記憶部５２に記憶されている“秘密情報ｒとロットＩＤからハッシュ値Ｒを求めるためのロジック”を参照する。
（ステップＳＴ２０７）
そして、ＩＣチップ５０の秘密鍵生成部５３は、秘密情報ｒ１と、ステップＳＴ２０５において算出したロットＩＤとに基づき、“秘密情報ｒとロットＩＤからハッシュ値Ｒを求めるためのロジック”からハッシュ値Ｒ１を求める。
【０１０７】
（ステップＳＴ２０８）
次いで、秘密鍵生成部５３は、記憶部５２に保存されている“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解ｓを求めるためのロジック”に従って、この補間式ｇ（Ｒ）にハッシュ値Ｒ１を代入して、鍵変換式解ｓ１を算出する。
【０１０８】
（ステップＳＴ２０９）
そして、秘密鍵生成部５３は、記憶部５２に保存されている“補間式ｇ（Ｒ）の解である鍵変換式解ｓに基づき秘密鍵Ｋｅｙを求めるためのロジック”に従って、ステップＳＴ２０８によって算出した鍵変換式解ｓ１を素数ｐで除算した余り秘密鍵Ｋｅｙ１を算出する。
【０１０９】
（ステップＳＴ２１０）
次いで、秘密鍵生成部５３は、秘密鍵Ｋｅｙの算出に成功したことを示すレスポンスを０次発行者端末４０に出力する。例えば、秘密鍵生成部５３は、正常に処理が実行されたことを示すレスポンス（９０００）を、０次発行者端末４０に出力する。
【０１１０】
（ステップＳＴ２１１）
そして、０次発行者ｄは、入力部４１を介して、０次発行者端末４０に、秘密鍵Ｋｅｙによって暗号化されている暗号化発行コマンドを入力する。
（ステップＳＴ２１２）
０次発行者端末４０の演算処理部４２は、入力した暗号化発行コマンドを、出力部４３を介して、ＩＣチップ５０に出力する。
【０１１１】
（ステップＳＴ２１３）
そして、ＩＣチップ５０の復号部５４は、入力部５１を介して入力された暗号化発行コマンドを、ステップＳＴ２０９において生成された秘密鍵Ｋｅｙ１により復号する。
（ステップＳＴ２１４）
次いで、復号部５４は、復号された発行コマンドが、正しく復号されたか否かを検証する。
【０１１２】
（ステップＳＴ２１５）
復号された発行コマンドが、正しく復号されているとの検証結果が得られた場合、復号部５４は、暗号化発行コマンドの認証が成功したことを判定し、コマンド実行部５５に通知する。また、ＩＣチップ５０のコマンド実行部５５は、認証が成功した後、発行コマンドを受け入れ、発行コマンドに応じた処理を実行する。
（ステップＳＴ２１６）
一方、復号された発行コマンドが、正しく復号されていないとの検証結果が得られた場合、復号部５４は、暗号化発行コマンドの認証を失敗したことを判定し、コマンド実行部５５にエラーを通知する。
【０１１３】
なお、ステップＳＴ２０５において、記憶部５２に“カードＩＤからロットＩＤを求めるためのロジック”が記憶されていない場合、秘密鍵生成部５３は、カードＩＤからロットＩＤを求める処理はしない。また、この場合、記憶部５２には、“秘密情報ｒとカードＩＤからハッシュ値Ｒを求めるためのロジック”が記憶されている。このため、秘密鍵生成部５３は、ステップＳＴ２０６において、“秘密情報ｒとカードＩＤからハッシュ値Ｒを求めるためのロジック”を参照し、ステップＳＴ２０７において、秘密情報ｒ１とカードＩＤ：００１とに基づき、ハッシュ値Ｒ００１を求める。次いで、秘密鍵生成部５３は、ステップＳＴ２０８において、記憶部５２に保存されている“補間式ｇ（Ｒ）にハッシュ値Ｒを代入して鍵変換式解を求めるためのロジック”に従って、この補間式ｇ（Ｒ）にハッシュ値Ｒ００１を代入して、鍵変換式解ｓ００１を算出する。そして、秘密鍵生成部５３は、ステップＳＴ２０９において、算出した鍵変換式解ｓ００１を素数ｐで除算した余り秘密鍵Ｋｅｙ１を算出する。以降、上述のロットＩＤに応じた鍵変換方法を採用している場合と同様にして、ステップＳＴ２１０〜２１６の処理を実行する。
【０１１４】
上述の通り、本実施形態に係るＩＣカードは、内蔵するＩＣチップ５０に、暗号化された発行コマンドを復号するための秘密鍵Ｋｅｙを直接記憶せずに、外部から入力する情報に基づき秘密鍵Ｋｅｙを求めるロジックを記憶する。これにより、ＩＣチップ５０を製造するＩＣチップベンダｃに秘密鍵Ｋｅｙを秘密にしておくことができる。
また、ＩＣチップは秘密鍵Ｋｅｙを求めるロジックを記憶することにより、暗号化された発行コマンドを復号する際に、０次発行者ｄは、秘密鍵ＫｅｙをＩＣカードに入力するのではなく、秘密鍵Ｋｅｙを求めるための情報、例えば、秘密情報ｒやカードＩＤを入力する。これにより、０次発行処理工程Ｄを実行する０次発行者ｄに秘密鍵Ｋｅｙを秘密しておくことができる。よって、例えば、ＩＣチップベンダｃに提供された情報が、０次発行者ｄに流出したとしても、０次発行者ｄが秘密鍵Ｋｅｙを得ることができないシステムを提供することができる。
【０１１５】
また、本実施形態に係るＩＣカードは、異なるＩＣカード間で共通の秘密鍵Ｋｅｙを用いている。これにより、秘密鍵Ｋｅｙごとにカード開発者ａによって実施される検査処理の労力を削減することができる。
【０１１６】
さらに、本実施形態に係るＩＣカードは、異なるＩＣカード間で共通の補間式を用いている。これにより、補間式ごとにカード開発者ａによって実施される検査処理の労力を削減することができる。
【０１１７】
また、本実施形態に係るＩＣカードは、一のロットＩＤが割り当てられるＩＣカードの枚数を、カード開発者ａによって決められた任意の数とすることができる。つまり、一の秘密鍵Ｋｅｙを共有しているＩＣカードの枚数を、カード開発者ａによって決められた任意の数に制限することができる。これにより、仮に、秘密鍵Ｋｅｙが漏えいした場合であっても、攻撃が成功する範囲を制限し、漏えいが影響する範囲を制限することができる。
【０１１８】
なお、本発明は上記内容に限られない。例えば、図６の処理において、ステップＳＴ１０１〜ＳＴ１０３は、カード開発者端末１０によって実行されるものであってもよい。例えば、カード開発者端末１０は、固有のカードＩＤを各カードに割り当て、予め決められたロッドに含まれるカードの枚数（例えば、１００枚）ごとに、カードＩＤが割り当てられた複数のカードのグループに区分して、区分した各グループに固有のロッドＩＤを割り当てるものであってもよい。
また、図７の処理において、０次発行者端末４０が、ＩＣカードに対応する秘密情報ｒと暗号化発行コマンドを選択し、入力するものであってもよい。例えば、０次発行者ｄは、入力部４１を介して、０次発行者端末４０に、全ての秘密情報ｒ１，ｒ２，・・・，ｒＪと、秘密鍵Ｋｅｙ１，Ｋｅｙ２，・・・，ＫｅｙＪによって暗号化された暗号化発行コマンドを入力し、０次発行者端末４０の演算処理部４２が、入力した情報を、記憶部４４に書き込む。そして、ＩＣチップ５０は、自身に割り当てられたカードＩＣ又はロットＩＤを０次発行者端末４０に送信し、自身に割り当てられたカードＩＣ又はロットＩＤに対応する秘密情報ｒと暗号化発行コマンドの送信を要求するものであってもよい。この場合、０次発行者ｄが、対象となるＩＣカードごとに、秘密情報ｒや暗号化発行コードを選択する手間が省ける。
【０１１９】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより工程毎の認証処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１２０】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【０１２１】
１  ＩＣチップ発行システム
１０  カード開発者端末
２０  カードベンダ端末
３０  ＩＣチップベンダ端末
４０  ０次発行者端末
５０  ＩＣチップ
５１  入力部
５２  記憶部
５３  秘密鍵生成部
５４  復号部
５５  コマンド実行部
５６  出力部
【図１】
2015012498.tif 000023
【図２】
2015012498.tif 000024
【図３】
2015012498.tif 000025
【図４】
2015012498.tif 000026
【図５】
2015012498.tif 000027
【図６】
2015012498.tif 000028
【図７】
2015012498.tif 000029