(57)【特許請求の範囲】
【請求項１】
ホストとデバイスとを備えた情報セキュリティシステムであって、
リング状に奇数段の反転回路が直列接続されるとともに、少なくとも１つ以上の段において複数の反転回路が並列に接続され、該並列に接続された反転回路のうちいずれを各段の経路とするかによって複数の信号経路が選択可能であり、且つ、該信号経路を構成する各反転回路の製造ばらつきに起因する各信号経路固有の発振周波数をもつ複数の発振器を有する発振回路と、
前記複数の発振器のうち少なくとも１つの発振器を選択すると共に、該選択された発振器について複数の前記信号経路のうちいずれか１つの信号経路を選択する選択手段と、
前記選択された発振器を前記選択された信号経路で発振させ、該発振の周波数に基づく実測周波数関連値を取得する取得手段と、
前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を前記選択された信号経路で発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する補正手段と、
を備え、
前記補正手段は、前記選択された発振器の前記選択された信号経路が所定の基準信号経路でなく且つ該基準信号経路と比べて１つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記基準信号経路で発振させたときの前記平均周波数関連値である基準値と、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値と前記基準値との差であるオフセット値と、を用いて、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との和を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段であり、
前記発振回路及び前記選択手段は、前記デバイスが有しており、
前記取得手段は、前記デバイス又は前記ホストが有しており、
前記補正手段は、前記デバイス又は前記ホストが有している、
情報セキュリティシステム。
【請求項２】
前記選択手段は、前記複数の発振器のうち２つの発振器を選択すると共に、該選択された発振器の各々について複数の前記信号経路のうちいずれか１つの信号経路を選択する手段であり、
前記取得手段は、前記選択された２つの発振器を前記選択された信号経路で発振させ、該２つの発振器の周波数の差に基づく値である前記実測周波数関連値を取得する手段であり、
前記補正手段は、前記取得された実測周波数関連値を、複数の前記デバイスについての前記選択された２つの発振器と同じ配置及び配線の発振器を前記選択された信号経路で発振させたときの該２つの発振器の周波数の平均的な差に基づく値である前記平均周波数関連値に基づいて補正することで、前記補正後周波数関連値を導出する手段である、
請求項１に記載の情報セキュリティシステム。
【請求項３】
前記取得手段及び前記補正手段は、前記ホストが有している、
請求項１又は２に記載の情報セキュリティシステム。
【請求項４】
請求項１〜３のいずれか１項に記載の情報セキュリティシステムであって、
前記デバイスの有する発振器と該発振器の前記各信号経路固有の発振周波数に基づく前記所定の固有値とを対応付けて記憶する固有値記憶手段と、
前記固有値記憶手段から前記選択された発振器の前記選択された信号経路に対応する前記固有値を読み出し、該読み出した固有値が前記導出された補正後周波数関連値と一致するか否かにより、該デバイスが正規のものであるか否かを判定する判定手段と、
を備え、
前記固有値記憶手段及び前記判定手段は、前記ホストが有している、
情報セキュリティシステム。
【請求項５】
請求項１〜３のいずれか１項に記載の情報セキュリティシステムであって、
前記デバイスにおける前記選択された発振器の前記選択された信号経路固有の発振周波数に基づく前記所定の固有値に基づいて暗号化された暗号データを前記デバイスに出力する暗号データ出力手段と、
前記導出された補正後周波数関連値に基づいて前記出力された暗号データを復号する復号手段と、
を備え、
前記暗号データ出力手段は、前記ホストが有しており、
前記復号手段は、前記デバイスが有している、
情報セキュリティシステム。
【請求項６】
リング状に奇数段の反転回路が直列接続されるとともに、少なくとも１つ以上の段において複数の反転回路が並列に接続され、該並列に接続された反転回路のうちいずれを各段の経路とするかによって複数の信号経路が選択可能であり、且つ、該信号経路を構成する各反転回路の製造ばらつきに起因する各信号経路固有の発振周波数をもつ複数の発振器を有する発振回路を備えるデバイスと情報のやり取りを行うホストであって、
前記複数の発振器のうち選択された少なくとも１つの発振器を選択された信号経路で発振させたときの該発振の周波数に基づく実測周波数関連値を前記デバイスから取得する取得手段と、
前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を前記選択された信号経路で発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する補正手段と、
を備え、
前記補正手段は、前記選択された発振器の前記選択された信号経路が所定の基準信号経路でなく且つ該基準信号経路と比べて１つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記基準信号経路で発振させたときの前記平均周波数関連値である基準値と、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値と前記基準値との差であるオフセット値と、を用いて、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との和を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段である、
ホスト。
【請求項７】
リング状に奇数段の反転回路が直列接続されるとともに、少なくとも１つ以上の段において複数の反転回路が並列に接続され、該並列に接続された反転回路のうちいずれを各段の経路とするかによって複数の信号経路が選択可能であり、且つ、該信号経路を構成する各反転回路の製造ばらつきに起因する各信号経路固有の発振周波数をもつ複数の発振器を有する発振回路と、
前記複数の発振器のうち少なくとも１つの発振器を選択すると共に、該選択された発振器について複数の前記信号経路のうちいずれか１つの信号経路を選択する選択手段と、
前記選択された発振器を前記選択された信号経路で発振させ、該発振の周波数に基づく実測周波数関連値を取得する取得手段と、
前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を前記選択された信号経路で発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正することで、補正後周波数関連値を導出する補正手段と、
を備え、
前記補正手段は、前記選択された発振器の前記選択された信号経路が所定の基準信号経路でなく且つ該基準信号経路と比べて１つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記基準信号経路で発振させたときの前記平均周波数関連値である基準値と、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値と前記基準値との差であるオフセット値と、を用いて、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との和を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段である、
デバイス。
【請求項８】
リング状に奇数段の反転回路が直列接続されるとともに、少なくとも１つ以上の段において複数の反転回路が並列に接続され、該並列に接続された反転回路のうちいずれを各段の経路とするかによって複数の信号経路が選択可能であり、且つ、該信号経路を構成する各反転回路の製造ばらつきに起因する各信号経路固有の発振周波数をもつ複数の発振器を有する発振回路を備えたデバイスと情報のやりとりを行うホストの制御方法であって、
（ａ）前記複数の発振器のうち選択された少なくとも１つの発振器を選択された信号経路で発振させたときの該発振の周波数に基づく実測周波数関連値を前記デバイスから取得するステップと、
（ｂ）前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を前記選択された信号経路で発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出するステップと、
を含み、
前記ステップ（ｂ）では、前記選択された発振器の前記選択された信号経路が所定の基準信号経路でなく且つ該基準信号経路と比べて１つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記基準信号経路で発振させたときの前記平均周波数関連値である基準値と、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値と前記基準値との差であるオフセット値と、を用いて、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との和を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する、
ホストの制御方法。
【請求項９】
リング状に奇数段の反転回路が直列接続されるとともに、少なくとも１つ以上の段において複数の反転回路が並列に接続され、該並列に接続された反転回路のうちいずれを各段の経路とするかによって複数の信号経路が選択可能であり、且つ、該信号経路を構成する各反転回路の製造ばらつきに起因する各信号経路固有の発振周波数をもつ複数の発振器を有する発振回路を備えたデバイスの制御方法であって、
（ａ）前記複数の発振器のうち少なくとも１つの発振器を選択すると共に、該選択された発振器について複数の前記信号経路のうちいずれか１つの信号経路を選択するステップと、
（ｂ）前記選択された発振器を前記選択された信号経路で発振させ、該発振の周波数に基づく実測周波数関連値を取得するステップと、
（ｃ）前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を前記選択された信号経路で発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出するステップと、
を含み、
前記ステップ（ｃ）では、前記選択された発振器の前記選択された信号経路が所定の基準信号経路でなく且つ該基準信号経路と比べて１つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記基準信号経路で発振させたときの前記平均周波数関連値である基準値と、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値と前記基準値との差であるオフセット値と、を用いて、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との和を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する、
デバイスの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報セキュリティシステム，ホスト，デバイス，その制御方法及びそのプログラムに関する。
【背景技術】
【０００２】
従来、情報セキュリティシステムにおいて、ＰＵＦ（physical Unclonable Function，物理的複製不可能関数）と呼ばれる技術が知られている。このＰＵＦは、製造時に制御できない固有の物理的特徴を用いるものであり、この固有の物理的特徴まで第三者が複製することは困難であることを利用して偽造や秘密情報の漏洩を防止するものである。このようなＰＵＦの具体例として、固有の発振周波数を持つ発振器を用い、この発振器の発振周波数の製造時のわずかなばらつきを固有の物理的特徴として利用するものが考えられている。  
【０００３】
例えば特許文献１には、ＮＯＴ回路及びＮＡＮＤ回路を直列に接続して出力が発振するように構成したリングオシレーターを、ＰＵＦとして用いることが記載されている。そして、このリングオシレーターを複数配置したデバイスにおいて、複数のリングオシレーターのうちから選択された２つのリングオシレーターの発振周波数を測定し、測定した発振周波数の大小関係に基づく値を出力ビットとして出力することが記載されている。これにより、選択されたリングオシレーターの発振周波数の大小関係が製造時のばらつきにより変わることを利用して、固有の値を出力ビットとして出力することができる。例えば、このリングオシレーターと同じものを製造したとしても、製造時の発振周波数のばらつきまでは再現できないため、上記大小関係が同じになるとは限らず、出力ビットは同じ値になるとは限らない。そして、このようなリングオシレーターの選択と出力ビットとの正しい対応関係を予めリングオシレーターの製造時に調べて記憶しておき、リングオシレーターの選択と出力ビットとの対応が予め記憶しておいた対応関係と一致するか否かの判定を複数回行うことで、リングオシレーターを備えたデバイスが正規のものであるか否かを判定できるとしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００８／０５６６１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、発振器の発振周波数は、製造時のばらつきにより変化する他に、発振器の配置や配線の違いによっても変化する。例えば、配線が長ければその分だけ信号の遅延が生じるため、発振周波数が小さくなるなどである。このような発振器の配置や配線の違いによる発振周波数の変化が大きいと、相対的に製造時のばらつきが発振周波数に与える影響が小さくなってしまう。そして、発振器の配置や配線に起因して、選択された発振器と出力される固有の値との対応関係に偏りが生じると、製造時のばらつきが再現できていない偽造品であっても固有の値が正規品と同じになる可能性が高まるなど、デバイスのユニーク性（差異性）が低下してしまい、セキュリティの観点から問題となる。
【０００６】
本発明は、上述した課題に鑑みなされたものであり、デバイスのユニーク性をより高めた値を導出することを主目的とする。
【課題を解決するための手段】
【０００７】
本発明の情報セキュリティシステムは、
ホストとデバイスとを備えた情報セキュリティシステムであって、
製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路と、
前記複数の発振器のうち少なくとも１つの発振器を選択する選択手段と、
前記選択された発振器を発振させ、該発振の周波数に基づく実測周波数関連値を取得する取得手段と、
前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する補正手段と、
を備え、
前記発振回路及び前記選択手段は、前記デバイスが有しており、
前記取得手段は、前記デバイス又は前記ホストが有しており、
前記補正手段は、前記デバイス又は前記ホストが有している、
ものである。
【０００８】
この本発明の情報セキュリティシステムでは、製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路をデバイスが有している。そして、まず、この複数の発振器のうち少なくとも１つの発振器を選択し、選択された発振器を発振させ、その発振の周波数に基づく実測周波数関連値を取得する。続いて、取得された実測周波数関連値を、複数のデバイスにおける選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する。このように、実測周波数関連値を平均周波数関連値で補正することで、実測周波数関連値から発振器の配置や配線に起因する発振周波数の変化分を除去することができ、デバイスのユニーク性をより高めた補正後周波数関連値を導出することができる。なお、「選択された発振器と同じ配置及び配線の発振器」とは、選択された発振器と発振器内部の回路や素子の配置及び発振器内部の配線が同じである発振器を含む。
【０００９】
ここで、補正により発振器の配置や配線に起因する発振周波数の変化分を除去することができる理由について説明する。まず、実測周波数関連値は、発振器の製造ばらつきに起因する発振周波数の変化分と、発振器の配置や配線に起因する発振周波数の変化分との両方の影響を受けた値となる。そして、同じ配置及び配線の発振器であれば、発振器の配置や配線に起因する発振周波数の変化分は同程度であるのに対し、発振器の製造ばらつきに起因する発振周波数の変化分は発振器毎に異なる。そのため、平均周波数関連値においては、製造ばらつきに起因する発振周波数の変化分は互いに打ち消しあい、配置や配線に起因する発振周波数の変化分の影響が残る。したがって、この平均周波数関連値で実測周波数関連値を補正することで、実測周波数関連値から配置や配線に起因する発振周波数の変化分を除去することができる。なお、平均周波数関連値は、配置や配線に起因する発振周波数の変化分を除去可能な値であればよいため、実際に選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値であればよく、実際に選択された発振器自体を発振させたときの周波数に基づいている必要はない。
【００１０】
なお、実測周波数関連値は、例えば、所定期間における発振回数としてもよいし、所定回数発振するのに要する時間としてもよい。２つ以上の発振器を選択する場合には、実測周波数関連値は、例えば所定期間における発振回数の差又は比としてもよいし、所定回数発振するのに要する時間の差又は比としてもよい。平均周波数関連値は、例えば、複数のデバイスにおける実測周波数関連値の平均としてもよい。２つ以上の発振器を選択する場合には、平均周波数関連値は、例えば選択された２つの発振器とそれぞれ同じ配置及び配線の発振器について、所定期間における発振回数の差又は比か、所定回数発振するのに要する時間の差又は比を導出し、これを複数のデバイスに渡って導出して平均したものとしてもよい。あるいは、平均周波数関連値は、所定期間における発振回数又は所定回数発振するのに要する時間を選択された２つ以上の発振器のそれぞれについて複数のデバイスに渡って平均し、その平均の差又は比としてもよい。補正後周波数関連値は、例えば実測周波数関連値と平均周波数関連値との差又は比としてもよい。
【００１１】
本発明の情報セキュリティシステムにおいて、前記発振器は、リング状に奇数段の反転回路が直列接続されたリングオシレーターとしてもよい。リングオシレーターは、ＩＣ内部の論理素子や配線のみを用いて構成可能であり、デバイスの製造ばらつきが論理素子の遅延に影響することでデバイス間の差異がその発振周波数特性に表れやすいため、本発明に適用する意義が高い。なお、反転回路とは、入力値に対して出力値が反転する回路であり、例えば、ＮＯＴゲート，ＮＡＮＤゲート又はＮＯＲゲートの少なくともいずれかとしてもよい。また、リングオシレーターの反転回路の段数は、奇数段であればよく、例えば段数を３段以上としてもよく、７段としてもよい。また、リングオシレーターは、奇数段の反転回路と反転回路でない他の遅延回路とがリング状に直列接続されたものとしてもよい。特に反転回路の段数を１段とする場合には、反転回路と遅延回路とをリング状に直列接続することが好ましい。段数や遅延回路の有無は、例えばリングオシレーターからの出力信号を扱う上で適した発振周波数となるように適宜選択することができる。
【００１２】
本発明の情報セキュリティシステムにおいて、前記発振器は、リング状に奇数段の反転回路が直列接続されるとともに、少なくとも１つ以上の段において複数の反転回路が並列に接続され、該並列に接続された反転回路のうちいずれを各段の経路とするかによって複数の信号経路が選択可能であり、且つ、該信号経路を構成する各反転回路の製造ばらつきに起因する各信号経路固有の発振周波数をもち、前記選択手段は、前記複数の発振器のうち少なくとも１つの発振器を選択すると共に、該選択された発振器について複数の前記信号経路のうちいずれか１つの信号経路を選択する手段であり、前記取得手段は、前記選択された発振器を前記選択された信号経路で発振させ、該発振の周波数に基づく前記実測周波数関連値を取得する手段であり、前記補正手段は、前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を前記選択された信号経路で発振させたときの周波数の平均に基づく値である前記平均周波数関連値に基づいて補正した前記補正後周波数関連値を導出する手段としてもよい。こうすれば、１つの発振器の各段において並列に接続されたいずれの反転回路を選択するかにより、発振器の固有の発振周波数が異なる値となるため、擬似的に発振器の数を増やすことができる。なお、いずれの発振器が選択されるかによって補正後周波数関連値は異なる値となるため、発振器の数が多いほど補正後周波数関連値が第三者に予測されにくくなり、セキュリティを向上させることができる。
【００１３】
本発明の情報セキュリティシステムにおいて、前記補正手段は、前記選択された発振器の前記選択された信号経路が所定の基準信号経路でなく且つ該基準信号経路と比べて１つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記基準信号経路で発振させたときの前記平均周波数関連値である基準値と、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値と前記基準値との差であるオフセット値と、を用いて、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との和を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段としてもよい。こうすれば、基準信号経路でなく且つオフセット信号経路でもない信号経路の平均周波数関連値を、基準値とオフセット値との和をとるという簡易な処理で導出できる。なお、前記補正手段は、前記選択された発振器の前記選択された信号経路が前記オフセット信号経路であるときには、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との和を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段としてもよい。
【００１４】
本発明の情報セキュリティシステムにおいて、前記補正手段は、前記選択された発振器の前記選択された信号経路が所定の基準信号経路でなく且つ該基準信号経路と比べて１つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記基準信号経路で発振させたときの前記平均周波数関連値である基準値と、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値と前記基準値との比であるオフセット値と、を用いて、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との積を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段としてもよい。こうすれば、基準信号経路でなく且つオフセット信号経路でもない信号経路の平均周波数関連値を、基準値とオフセット値との積をとるという簡易な処理で導出できる。なお、前記オフセット値は、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値を前記基準値で除した値としてもよい。また、前記補正手段は、前記選択された発振器の前記選択された信号経路が前記オフセット信号経路であるときには、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との積を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段としてもよい。
【００１５】
本発明の情報セキュリティシステムにおいて、前記選択手段は、前記複数の発振器のうち２つの発振器を選択する手段であり、前記取得手段は、前記選択された２つの発振器を発振させ、該２つの発振器の周波数の差に基づく値である前記実測周波数関連値を取得する手段であり、前記補正手段は、前記取得された実測周波数関連値を、複数の前記デバイスについての前記選択された２つの発振器と同じ配置及び配線の発振器を発振させたときの該２つの発振器の周波数の平均的な差に基づく値である前記平均周波数関連値に基づいて補正することで、前記補正後周波数関連値を導出する手段としてもよい。こうすれば、１つの発振器のみを選択する場合と比較して、発振器の選択のパターン数が増す。なお発振器の選択のパターンによって補正後周波数関連値は異なる値となるため、発振器の選択のパターン数が多いほど補正後周波数関連値が第三者に予測されにくくなり、セキュリティを向上させることができる。なお、２つの発振器の周波数の差に基づく値とは、例えば所定期間における発振回数の差又は比としてもよいし、所定回数発振するのに要する時間の差又は比としてもよいし、２つの発振器を同時に発振させて一方の発振器が所定回数発振したときの他方の発振回数としてもよい。また、２つの発振器の周波数の平均的な差に基づく値とは、２つの発振器の所定期間における発振回数の差又は比の平均としてもよいし、所定回数発振するのに要する時間の差又は比の平均としてもよいし、所定期間における発振回数又は所定回数発振するのに要する時間を２つの発振器のそれぞれについて複数のデバイスに渡って平均し、その平均の差又は比としてもよい。あるいは、２つの発振器の周波数の平均的な差に基づく値は、２つの発振器を同時に発振させて一方の発振器が所定回数発振したときの他方の発振回数を複数のデバイスについて導出し、その平均としてもよい。
【００１６】
本発明の情報セキュリティシステムにおいて、前記取得手段及び前記補正手段は、前記ホストが有しているものとしてもよい。一般に、ホストと比べてデバイスは実装できる回路や処理能力に制限があることが多いため、このようにする意義が高い。
【００１７】
本発明の情報セキュリティシステムにおいて、前記デバイスの有する発振器と該発振器の前記固有の発振周波数に基づく前記所定の固有値とを対応付けて記憶する固有値記憶手段と、前記固有値記憶手段から前記選択された発振器に対応する前記固有値を読み出し、該読み出した固有値が前記導出された補正後周波数関連値と一致するか否かにより、該デバイスが正規のものであるか否かを判定する判定手段と、を備え、前記固有値記憶手段及び前記判定手段は、前記ホストが有しているものとしてもよい。こうすれば、ユニーク性をより高めた補正後周波数関連値を用いてデバイスが正規のものであるか否かを判定するため、例えば実測周波数関連値をそのまま用いてデバイスが正規のものであるか否かを判定する場合と比べて判定の精度が高まり、セキュリティが向上する。
【００１８】
本発明の情報セキュリティシステムにおいて、前記デバイスにおける前記選択された発振器の前記固有の発振周波数に基づく前記所定の固有値に基づいて暗号化された暗号データを前記デバイスに出力する暗号データ出力手段と、前記導出された補正後周波数関連値に基づいて前記出力された暗号データを復号する復号手段と、を備え、前記暗号データ出力手段は、前記ホストが有しており、前記復号手段は、前記デバイスが有しているものとしてもよい。こうすれば、ユニーク性をより高めた補正後周波数関連値が固有値と一致していないと正しく暗号データを復号することができないため、暗号データが正規のデバイス以外のデバイスで復号されることをより防止できる。
【００１９】
本発明のホストは、製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路を備えるデバイスと情報のやり取りを行うホストであって、
前記複数の発振器のうち選択された少なくとも１つの発振器を発振させたときの該発振の周波数に基づく実測周波数関連値を前記デバイスから取得する取得手段と、
前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する補正手段と、
を備えたものである。
【００２０】
この本発明のホストは、製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路を有するデバイスと情報のやり取りを行う。具体的には、まず、この複数の発振器のうち選択された少なくとも１つの発振器を発振させたときの発振の周波数に基づく実測周波数関連値を取得する。続いて、取得された実測周波数関連値を、複数のデバイスにおける選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する。このように、実測周波数関連値を平均周波数関連値で補正することで、実測周波数関連値から発振器の配置や配線に起因する発振周波数の変化分を除去することができ、デバイスのユニーク性をより高めた補正後周波数関連値を導出することができる。なお、このホストにおいて、上述した情報セキュリティシステムのホストの種々の態様を採用してもよいし、上述した情報セキュリティシステムのホストの各機能を実現するような構成を追加してもよい。
【００２１】
本発明のデバイスは、
製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路と、
前記複数の発振器のうち少なくとも１つの発振器を選択する選択手段と、
前記選択された発振器を発振させ、該発振の周波数に基づく実測周波数関連値を取得する取得手段と、
前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正することで、補正後周波数関連値を導出する補正手段と、
を備えたものである。
【００２２】
この本発明のデバイスは、製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路を備えている。そして、この複数の発振器のうち少なくとも１つの発振器を選択し、選択された発振器を発振させ、その発振の周波数に基づく実測周波数関連値を取得する。続いて、取得された実測周波数関連値を、複数のデバイスにおける選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する。このように、実測周波数関連値を平均周波数関連値で補正することで、実測周波数関連値から発振器の配置や配線に起因する発振周波数の変化分を除去することができ、デバイスのユニーク性をより高めた補正後周波数関連値を導出することができる。なお、このデバイスにおいて、上述した情報セキュリティシステムのデバイスの種々の態様を採用してもよいし、上述した情報セキュリティシステムのデバイスの各機能を実現するような構成を追加してもよい。
【００２３】
本発明のホストの制御方法は、
製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路を備えたデバイスと情報のやりとりを行うホストの制御方法であって、
（ａ）前記複数の発振器のうち選択された少なくとも１つの発振器を発振させたときの該発振の周波数に基づく実測周波数関連値を前記デバイスから取得するステップと、
（ｂ）前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出するステップと、
を含むものである。
【００２４】
この本発明のホストの制御方法では、デバイスが有し製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路における複数の発振器のうち、選択された少なくとも１つの発振器を発振させたときの発振の周波数に基づく実測周波数関連値を取得する。続いて、取得された実測周波数関連値を、複数のデバイスにおける選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する。このように、実測周波数関連値を平均周波数関連値で補正することで、実測周波数関連値から発振器の配置や配線に起因する発振周波数の変化分を除去することができ、発振器のユニーク性をより高めた補正後周波数関連値を導出することができる。なお、このホストの制御方法において、上述した情報セキュリティシステムのホストの種々の態様を採用してもよいし、上述した情報セキュリティシステムのホストの各機能を実現するようなステップを追加してもよい。
【００２５】
本発明のデバイスの制御方法は、
製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路を備えたデバイスの制御方法であって、
（ａ）前記複数の発振器のうち少なくとも１つの発振器を選択するステップと、
（ｂ）前記選択された発振器を発振させ、該発振の周波数に基づく実測周波数関連値を取得するステップと、
（ｃ）前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出するステップと、
を含むものである。
【００２６】
この本発明のデバイスの制御方法では、デバイスが有し製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路における複数の発振器のうち少なくとも１つの発振器を選択し、選択された発振器を発振させ、その発振の周波数に基づく実測周波数関連値を取得する。続いて、取得された実測周波数関連値を、複数のデバイスにおける選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する。このように、実測周波数関連値を平均周波数関連値で補正することで、実測周波数関連値から発振器の配置や配線に起因する発振周波数の変化分を除去することができ、発振器のユニーク性をより高めた補正後周波数関連値を導出することができる。なお、このデバイスの制御方法において、上述した情報セキュリティシステムのデバイスの種々の態様を採用してもよいし、上述した情報セキュリティシステムのデバイスの各機能を実現するようなステップを追加してもよい。
【００２７】
本発明の第１のプログラムは、上述したホストの制御方法の各ステップを１又は複数のコンピューターに実現させるためのものである。この第１のプログラムをコンピューターに実行させれば、上述した本発明のホストの制御方法が実現されるため、本発明のホストの制御方法と同様の作用効果が得られる。また、本発明の第２のプログラムは、上述したデバイスの制御方法の各ステップを１又は複数のコンピューターに実現させるためのものである。この第２のプログラムをコンピューターに実行させれば、上述した本発明のデバイスの制御方法が実現されるため、本発明のデバイスの制御方法と同様の作用効果が得られる。第１のプログラム及び第２のプログラムは、コンピューターが読み取り可能な記録媒体（例えばハードディスク、ＲＯＭ、ＦＤ、ＣＤ、ＤＶＤなど）に記録されていてもよいし、伝送媒体（インターネットやＬＡＮなどの通信網）を介してあるコンピューターから別のコンピューターに配信されてもよいし、その他どのような形で授受されてもよい。
【図面の簡単な説明】
【００２８】
【図１】情報セキュリティシステム１０の構成の概略を示す構成図。
【図２】ＰＵＦ回路５０の構成の概略を示す構成図。
【図３】発振器５３の構成の概略を示す構成図。
【図４】平均値記憶ルーチンの一例を示すフローチャート。
【図５】平均値テーブル４６の一例を示す説明図。
【図６】固有値記憶ルーチンの一例を示すフローチャート。
【図７】主平均周期導出処理の一例を示すフローチャート。
【図８】固有値テーブル４７の一例を示す説明図。
【図９】ＩＣカード認証処理の様子を示すシーケンス。
【図１０】判定処理の一例を示すフローチャート。
【図１１】情報セキュリティシステム１１０の構成の概略を示す構成図。
【図１２】回路データ提供処理の様子を示すシーケンス。
【図１３】復号処理の一例を示すフローチャート。
【図１４】実験例１の補正あり固有値の差異率Ｄを示すテーブル。
【図１５】実験例１の補正なし固有値の差異率Ｄを示すテーブル。
【図１６】実験例２の補正あり固有値の差異率Ｄを示すテーブル。
【図１７】実験例２の補正なし固有値の差異率Ｄを示すテーブル。
【図１８】実測発振周波数の平均値及び標準偏差を示すテーブル。
【図１９】補正後発振周波数の平均値及び標準偏差を示すテーブル。
【発明を実施するための形態】
【００２９】
［第１実施形態］
図１は、第１実施形態である情報セキュリティシステム１０の構成の概略を示す構成図である。図示するように、情報セキュリティシステム１０は、ＩＣカード２０と、カードリーダー３０と、サーバー４０とを備えている。この情報セキュリティシステム１０は、ＩＣカード２０に記憶された情報を用いて、ＩＣカード２０の所有者であるユーザーに例えば現金の預け入れや払い戻しなどのＡＴＭ（Automated Teller Machine）サービスや有料コンテンツを購入するコンテンツ購入サービスなどのサービスを提供する装置である。本実施形態では、情報セキュリティシステム１０は、ＡＴＭ（Automated Teller Machine）サービスを提供するものとした。
【００３０】
ＩＣカード２０は、ＡＴＭサービスに用いるキャッシュカードであり、ＣＰＵ，ＲＯＭ，ＲＡＭなどを備えたマイクロプロセッサーとして構成されたＩＣチップ２１を備えている。ＩＣチップ２１は、ＩＣチップ２１全体の制御を司る制御部２２と，ＩＣカード２０の識別用のＩＤなど各種データを記憶する記憶部２４と，ＩＣカード２０の固有の値を出力するためのＰＵＦ回路５０とを備えている。本実施形態では、ＩＣカード２０は接触型であるものとしたが、非接触型であってもよい。このＩＣカード２０は、図示は省略するが同様の構成のものが複数存在し、それぞれ別のユーザーが所有している。
【００３１】
ＰＵＦ回路５０は、複数の発振器５３を備えた発振回路５２と、発振器５３を選択する選択回路５４と、選択された発振器５３の発振回数をカウントして発振器５３の発振周波数に基づく値を測定する測定回路５６とを備えている。図２は、ＰＵＦ回路５０の構成の概略を示す構成図である。
【００３２】
発振回路５２は、製造ばらつきに起因する固有の発振周波数をもつ第１発振器５３ａ〜第５発振器５３ｅの５個の発振器５３をそれぞれ所定位置に配置し所定の配線を行ったものである。この発振回路５２では、図２に示すように、選択回路５４の主発振器セレクター５５ａ及び副発振器セレクター５５ｂの入力部に各発振器５３からの出力部がそれぞれ配線により接続されている。
【００３３】
図３は、発振器５３の構成の概略を示す構成図である。なお、第１発振器５３ａ〜第５発振器５３ｅの内部の構成はいずれも同じである。このため、図３では１つの発振器５３の構成を示している。発振器５３は、６個のインバーター６０と３個の経路セレクター６６とを備え、リング状に奇数段（本実施形態では３段）のインバーター（ＮＯＴゲート）６０が直列接続されると共に、各段において複数（本実施形態では２つ）のインバーター６０が並列に接続されたリングオシレーターとして構成されている。具体的には、発振器５３は、１段目のインバーター６０として並列に接続された第１インバーター６１ａ，第２インバーター６１ｂを備え、２段目のインバーター６０として並列に接続された第３インバーター６２ａ，第４インバーター６２ｂを備え、３段目のインバーター６０として並列に接続された第５インバーター６３ａ，第６インバーター６３ｂを備えている。この第１インバーター６１ａ〜第６インバーター６３ｂは、入力値に対して出力値が反転する反転回路である。また、発振器５３は、３個の経路セレクター６６として、第１経路セレクター６６ａと、第２経路セレクター６６ｂと、第３経路セレクター６６ｃとを備えている。第１経路セレクター６６ａは、１段目のインバーター６０のうち選択したいずれか１つの出力を２段目のインバーター６０に出力するものである。第１経路セレクター６６ａの入力部は、１段目のインバーター６０すなわち第１インバーター６１ａ及び第２インバーター６１ｂの出力部とそれぞれ配線で接続されており、第１経路セレクター６６ａの出力部は、２段目のインバーター６０すなわち第３インバーター６２ａ及び第４インバーター６２ｂの入力部とそれぞれ配線で接続されている。第２経路セレクター６６ｂは、２段目のインバーター６０のうち選択したいずれか１つの出力を３段目のインバーター６０に出力するものである。第２経路セレクター６６ｂの入力部は、２段目のインバーター６０すなわち第３インバーター６２ａ及び第４インバーター６２ｂの出力部とそれぞれ配線で接続されており、第２経路セレクター６６ｂの出力部は、３段目のインバーター６０すなわち第５インバーター６３ａ及び第６インバーター６３ｂの入力部とそれぞれ配線で接続されている。第３経路セレクター６６ｃは、３段目のインバーター６０のうち選択したいずれか１つの出力を１段目のインバーター６０に出力するものである。第３経路セレクター６６ｃの入力部は、３段目のインバーター６０すなわち第５インバーター６３ａ及び第６インバーター６３ｂの出力部とそれぞれ配線で接続されており、第３経路セレクター６６ｃの出力部は、１段目のインバーター６０すなわち第１インバーター６１ａ及び第２インバーター６１ｂの入力部とそれぞれ配線で接続されている。なお、第３経路セレクター６６ｃの出力部は、発振器５３の出力部とも配線で接続されており、この発振器５３の出力部が選択回路５４の主発振器セレクター５５ａ，副発振器セレクター５５ｂの入力部にそれぞれに接続されるよう発振回路５２内の配線がなされている（図２参照）。第１経路セレクター６６ａ，第２経路セレクター６６ｂ，第３経路セレクター６６ｃはそれぞれ経路選択信号ｐ，ｑ，ｒが制御部２２から入力されるようになっており、この経路選択信号ｐ，ｑ，ｒの値によって各段で選択されるインバーター６０が定まるようになっている。具体的には、第１経路セレクター６６ａは、経路選択信号ｐが値０のときには第１インバーター６１ａを選択し、値１のときには第２インバーター６１ｂを選択する。第２経路セレクター６６ｂは、経路選択信号ｑが値０のときには第３インバーター６２ａを選択し、値１のときには第４インバーター６２ｂを選択する。第３経路セレクター６６ｃは、経路選択信号ｒが値０のときには第５インバーター６３ａを選択し、値１のときには第６インバーター６３ｂを選択する。
【００３４】
発振器５３は、この経路選択信号ｐ，ｑ，ｒにより、並列に接続された各段のインバーター６０のうちいずれを各段の経路として選択するかによって複数の信号経路が選択可能である。経路選択信号ｐ，ｑ，ｒで定まる発振器５３の信号経路を信号経路Ｗ（ｐ，ｑ，ｒ）と称する。この経路選択信号ｐ，ｑ，ｒで選択された信号経路Ｗ（ｐ，ｑ，ｒ）は、直列に接続された３段のインバーター６０で構成されるため、発振器５３の出力は発振周波数で発振する。例えば、信号経路Ｗ（０，０，０）、すなわち第１インバーター６１ａ，第３インバーター６２ａ，第５インバーター６３ａが選択された状態において、第１インバーター６１ａの入力が値０である場合を考える。この場合、第１インバーター６１ａの出力及び第３インバーター６２ａの入力が値１，第３インバーター６２ａの出力及び第５インバーター６３ａの入力が値０，第５インバーター６３ａの出力が値１となって、発振器５３からは値１が出力される。また、第５インバーター６３ａの出力である値１は第１インバーター６１ａの入力となるため、第１インバーター６１ａの入力が値０から値１に変化する。すると、第１インバーター６１ａの出力及び第３インバーター６２ａの入力が値０，第３インバーター６２ａの出力及び第５インバーター６３ａの入力が値１，第５インバーター６３ａの出力が値０となって、発振器５３の出力は値０となる。このようにして、発振器５３の出力は値０と値１とを繰り返す、すなわち発振する。そして、この発振器５３の発振周波数は、信号経路Ｗ（ｐ，ｑ，ｒ）を構成する各インバーター６０の製造ばらつきに起因する各信号経路固有の値となる。
【００３５】
選択回路５４は、図２に示すように、主発振器セレクター５５ａと副発振器セレクター５５ｂとを備えている。主発振器セレクター５５ａは、発振回路５２から引き出された第１発振器５３ａ〜第５発振器５３ｅの各出力部が自身の入力部と配線で接続されるとともに、自身の出力部が測定回路５６の第１カウンター５７ａの入力部と配線で接続されている。主発振器セレクター５５ａは、第１発振器５３ａ〜第５発振器５３ｅのうち選択したいずれか１つの発振器５３の出力を測定回路５６の第１カウンター５７ａに出力する。
副発振器セレクター５５ｂは、発振回路５２から引き出された第１発振器５３ａ〜第５発振器５３ｅの各出力部が自身の入力部と配線で接続されるとともに、自身の出力部が測定回路５６の第２カウンター５７ｂの入力部と配線で接続されている。副発振器セレクター５５ｂは、第１発振器５３ａ〜第５発振器５３ｅのうち選択したいずれか１つの発振器５３の出力を測定回路５６の第２カウンター５７ｂに出力する。なお、第１カウンター５７ａにより選択されている発振器５３を主発振器と表記し、第２カウンター５７ｂにより選択されている発振器５３を副発振器と称する。主発振器セレクター５５ａ，副発振器セレクター５５ｂは、それぞれ主発振器選択信号ｋ１，副発振器選択信号ｋ２が制御部２２から入力されるようになっており、この主発振器選択信号ｋ１，副発振器選択信号ｋ２の値によって選択される発振器５３が定まるようになっている。主発振器選択信号ｋ１，副発振器選択信号ｋ２は値１〜５のいずれかであり、それぞれが第１発振器５３ａ〜第５発振器５３ｅに対応している。なお、主発振器選択信号ｋ１と副発振器選択信号ｋ２とが同時に同じ値となることはなく、主発振器及び副発振器には異なる発振器５３が選択される。
【００３６】
測定回路５６は、第１カウンター５７ａと、第２カウンター５７ｂと、出力決定部５８とを備えている。第１カウンター５７ａは、自身の入力部が主発振器セレクター５５ａの出力部と配線で接続されると共に自身の出力部が出力決定部５８の入力部と配線で接続されている。
【００３７】
第１カウンター５７ａは、主発振器セレクター５５ａを介して入力された主発振器の出力信号の発振回数（例えば信号の立ち上がり数）をカウントして、カウント数を出力決定部５８に出力する。第２カウンター５７ｂは、自身の入力部が副発振器セレクター５５ｂの出力部と配線で接続されると共に自身の出力部が出力決定部５８の入力部と配線で接続されている。第２カウンター５７ｂは、副発振器セレクター５５ｂを介して入力された副発振器の出力信号の発振回数をカウントして、カウント数を出力決定部５８に出力する。
【００３８】
出力決定部５８は、自身の入力部が第１カウンター５７ａ及び第２カウンター５７ｂの出力部と配線で接続されており、自身の出力部が制御部２２に接続されている。出力決定部５８は、第１カウンター５７ａのカウント数が入力されると、このカウント数が変化するタイミングから主発振器の発振周期を導出して、導出した発振周期を実測周期Ｔ（ｋ，ｐ，ｑ，ｒ）として出力する。実測周期Ｔ（ｋ，ｐ，ｑ，ｒ）は、発振器番号ｋに対応する発振器５３を信号経路Ｗ（ｐ，ｑ，ｒ）で発振させたときの発振周期の実測値を意味する。なお、発振器番号ｋは値１〜５のいずれかの値であり、それぞれ第１発振器５３ａ〜第５発振器５３ｅに対応している。上述したように発振器５３の発振周波数は、信号経路Ｗ（ｐ，ｑ，ｒ）を構成する各インバーター６０の製造ばらつきに起因する各信号経路固有の値となるため、この実測周期Ｔ（ｋ，ｐ，ｑ，ｒ）も発振器番号ｋ，経路選択信号ｐ，ｑ，ｒに対応した固有の値となる。また、出力決定部５８は、第１カウンター５７ａ及び第２カウンター５７ｂのカウント数が入力され、入力された第２カウンター５７ｂのカウント数が所定カウント値Ｃｐ（例えば１６進数×４桁の表記で値８０００）になったときの第１カウンター５７ａのカウント数を実測カウント値Ｃとして制御部２２に出力する。ここで、主発振器選択信号ｋ１で定まる主発振器を主発振器の経路選択信号ｐ，ｑ，ｒ（以下、主経路選択信号ｐ１，ｑ１，ｒ１と称する）で定まる主信号経路Ｗ（ｐ１，ｑ１，ｒ１）で発振させたときの発振周波数をｆ１とし、副発振器選択信号ｋ２で定まる副発振器を副発振器の経路選択信号ｐ，ｑ，ｒ（以下、副経路選択信号ｐ２，ｑ２，ｒ２と称する）で定まる副信号経路Ｗ（ｐ２，ｑ２，ｒ２）で発振させたときの発振周波数をｆ２とすると、実測カウント値Ｃは以下の式（１）で表される値となる。ここで、発振周波数ｆ１は主発振器選択信号ｋ１、主経路選択信号ｐ１，ｑ１，ｒ１に対応する固有の値となり、発振周波数ｆ２は副発振器選択信号ｋ２、副経路選択信号ｐ２，ｑ２，ｒ２に対応する固有の値となるから、実測カウント値Ｃは発振周波数ｆ１は主発振器選択信号ｋ１、主経路選択信号ｐ１，ｑ１，ｒ１、副発振器選択信号ｋ２、副経路選択信号ｐ２，ｑ２，ｒ２の組み合わせに対応する固有の値となる。なお、主発振器選択信号ｋ１、主経路選択信号ｐ１，ｑ１，ｒ１、副発振器選択信号ｋ２、副経路選択信号ｐ２，ｑ２，ｒ２の組み合わせをチャレンジＣＨと称する。第１カウンター５７ａは、カウント数をグレイコードで出力決定部５８に出力するようになっており、出力決定部５８はこのグレイコードを通常のバイナリコードに変換したものを実測カウント値Ｃとして出力する。このようにすることで、第１カウンター５７ａの出力と第２カウンター５７ｂの出力との同期をとらなくとも、実測カウント値Ｃの誤差を最大で値１に抑えることができる。
【００３９】
Ｃ＝ｆ１／ｆ２×Ｃｐ    （１）
【００４０】
ここで、発振器５３毎及び信号経路Ｗ（ｐ，ｑ，ｒ）毎に発振周波数が固有の値となる理由について詳細に説明する。発振器５３を構成する６つのインバーター６０は同じものであり、いずれの信号経路Ｗ（ｐ，ｑ，ｒ）を選択した場合でも発振器５３の発振周波数の定格値（例えば、１７０ＭＨｚなど）は同じ値である。同様に、第１発振器５３ａ〜第５発振器５３ｅ間でも互いに内部の構成が同じであるため発振周波数の定格値は同じである。しかし、インバーター６０の製造時のばらつきによってインバーター６０の遅延時間にわずかな違いが生じるため、実際には第１発振器５３ａ〜第５発振器５３ｅ毎、及び信号経路Ｗ（ｐ，ｑ，ｒ）毎に発振周波数に違いが生じる。このばらつきは、例えば発振周波数の定格値の数％程度以下である。また、内部の構成が同じでも発振器５３の配置や配線の違いによって遅延時間に違いが生じるため、これによっても発振周波数に違いが生じる。なお、発振器５３の配置や配線の違いとは、発振器内部の回路や素子の配置及び発振器内部の配線の違いを含み、例えば発振器５３内の信号経路Ｗ（ｐ，ｑ，ｒ）毎の発振に用いられるインバーター６０の配置や配線の違いなどである。具体的には、例えば、信号経路Ｗ（０，０，０）では３段目のインバーター６０が第５インバーター６３ａであるのに対し信号経路Ｗ（０，０，１）では３段目のインバーター６０が第６インバーター６３ｂであるため、発振に用いられる３段目のインバーター６０の配置，第２経路セレクター６６ｂから３段目のインバーター６０までの配線，３段目のインバーター６０から第３経路セレクター６６ｃまでの配線が異なるなど、同じ発振器５３であっても信号経路Ｗ（ｐ，ｑ，ｒ）によって発振周波数に違いが生じる。また、例えば第1発振器５３ａと第２発振器５３ｂとでは同じ信号経路Ｗ（０，０，０）であってもその信号経路を構成する配線の長さが異なるなど、異なる発振器５３の間では同じ信号経路であっても発振周波数に違いが生じる。このようなインバーター６０の製造時のばらつきと発振器５３の配置や配線の違いとによって、発振器５３は第１発振器５３ａ〜第５発振器５３ｅ毎、及び信号経路Ｗ（ｐ，ｑ，ｒ）毎に固有の発振周波数で発振する。
【００４１】
カードリーダー３０は、ネットワーク１１を介してサーバー４０と接続されており、サーバー４０の端末として機能する。このカードリーダー３０は、カードリーダー３０全体の制御を司る制御部３２と、各種データを記憶する記憶部３４と、ＩＣカード２０を挿入可能なカードスロット３６とを備えている。カードリーダー３０は、ネットワーク１１を介してサーバー４０とデータのやり取りを行うと共に、カードスロット３６に挿入されたＩＣカード２０とデータのやり取りを行う。
【００４２】
サーバー４０は、ＩＣカード２０が正規のカードであるか否かの判定を行うものであり、サーバー４０全体の制御を司る制御部４１と、各種データを記憶する記憶部４５とを備えている。制御部４１は、取得部４２と、補正部４３と、判定部４４とを備えており、記憶部４５は、平均値テーブル４６と、固有値テーブル４７とを備えている。取得部４２は、ＩＣカード２０の主発振器及び副発振器を発振させ、その発振周波数の差に基づく値である上述した実測カウント値Ｃを取得する機能を有する。補正部４３は、複数のＩＣカード２０についての実測カウント値Ｃを取得した主発振器及び副発振器と同じ配置及び配線の発振器５３を発振させたときの２つの発振器５３の周波数の平均的な差に基づく値を平均値テーブル４６から導出し、取得部４２により取得された実測カウント値Ｃを平均値テーブル４６から導出した値に基づいて補正することで、補正後カウント値Ｃｃを導出する機能を有する。判定部４４は、固有値テーブル４７からＩＣカード２０の主発振器及び副発振器に対応する固有値Ｉを読み出し、読み出した固有値Ｉが補正後カウント値Ｃと一致するか否かにより、ＩＣカード２０が正規のものであるか否かを判定する機能を有する。平均値テーブル４６は、補正部４３が実測カウント値Ｃを補正するために用いる値を各発振器５３と対応付けて記憶しているテーブルである。また、固有値テーブル４７は、ＩＣカード２０の有する主発振器，主信号経路，副発振器，副信号経路の組み合わせと、主発振器及び副発振器の固有の発振周波数に基づく所定の固有値Ｉとを対応付けて記憶しているテーブルである。
【００４３】
次に、こうして構成された情報セキュリティシステム１０の動作について説明する。まず、サーバー４０が平均値テーブル４６及び固有値テーブル４７を作成して記憶部４５に記憶する処理について説明し、その後情報セキュリティシステム１０全体の動作について説明する。
【００４４】
まず、サーバー４０が事前に平均値テーブル４６を作成して記憶部４５に記憶しておく処理について説明する。図４は、平均値記憶ルーチンの一例を示すフローチャートである。このルーチンは、複数（例えば数百〜数万枚）のＩＣカード２０を用意し、用意したＩＣカード２０のＩＣチップ２１とサーバー４０とを接続して、サーバー４０の制御部４１がネットワーク１１を介さず直接に複数のＩＣカード２０と情報をやりとりできる状態にした上で、制御部４１により実行される。この平均値記憶ルーチンは、ユーザーにＩＣカード２０を配布する前に予め実行しておくものである。なお、この平均値記憶ルーチンは、発振器５３の配置や配線に起因する発振周波数の変化分を除去可能な値としての平均値を取得して記憶しておくものである。そのため、このルーチンに用いるＩＣカード２０は、情報セキュリティシステム１０を構成するＩＣカード２０と発振器５３の配置や配線を含めて同じ構成のＩＣカードであればよく、必ずしも情報セキュリティシステム１０を構成するＩＣカード２０、すなわち後にユーザーに配布するＩＣカード２０である必要はない。したがって、例えば情報セキュリティシステム１０を構成するＩＣカード２０を製造する前や、サーバー４０がネットワーク１１に接続される前に平均値記憶ルーチンを実行してもよい。
【００４５】
この平均値記憶ルーチンが実行されると、制御部４１は、まず、接続された複数のＩＣカード２０のうち１つを処理対象のＩＣカードに設定する（ステップＳ２００）。続いて、発振器番号ｋを値１に設定し（ステップＳ２０５）、実測周期Ｔ（ｋ，０，０，０），Ｔ（ｋ，１，０，０），Ｔ（ｋ，０，１，０），Ｔ（ｋ，０，０，１）を取得する（ステップＳ２１０）。実測周期Ｔ（ｋ，ｐ，ｑ，ｒ）は、上述したように発振器番号ｋに対応する発振器５３を信号経路Ｗ（ｐ，ｑ，ｒ）で発振させたときの発振周期の実測値である。なお、信号経路Ｗ（０，０，０）を基準信号経路、信号経路Ｗ（１，０，０），Ｗ（０，１，０），Ｗ（０，０，１）をオフセット信号経路と称する。オフセット信号経路は、基準信号経路と比べて経路選択信号ｐ，ｑ，ｒのうちいずれか１つの値のみが異なる信号経路である。換言すると、オフセット信号経路は、基準信号経路と比べて１つのインバーター６０のみが異なる信号経路である。本実施形態では、例えば実測周期Ｔ（ｋ，０，０，０）は、次のように取得する。主発振器選択信号ｋ１として値ｋを、主経路選択信号ｐ１，ｑ１，ｒ１として値０，０，０を、それぞれ取得部４２が制御部２２に送信して、これに対応する実測周期Ｔ（ｋ，０，０，０）を送信するよう取得部４２が制御部２２を制御する。これを受けて、制御部２２は、送信された主発振器選択信号ｋ１を主発振器セレクター５５ａに設定し、主経路選択信号ｐ１，ｑ１，ｒ１を主発振器の経路セレクター６６に設定する。そして、出力決定部５８から主発振器選択信号ｋ１、経路選択信号ｐ，ｑ，ｒに対応する実測周期Ｔ（ｋ，０，０，０）が出力されると、制御部２２はこれを取得部４２に送信し、取得部４２が実測周期Ｔ（ｋ、０，０，０）を取得する。実測周期Ｔ（ｋ，１，０，０），Ｔ（ｋ，０，１，０），Ｔ（ｋ，０，０，１）についても、主経路選択信号ｐ１，ｑ１．ｒ１の値が異なる以外は同様にして取得するものとした。なお、基準信号経路でなく且つオフセット信号経路でもない信号経路Ｗ（ｐ，ｑ，ｒ）については、実測周期の測定を行わない。これは、後述する処理において、基準信号経路の実測周期Ｔの平均値とオフセット信号経路の実測周期Ｔの平均値とから、このような経路の平均値を計算により求めるよう設定されているためである。
【００４６】
続いて、制御部４１は、発振器番号ｋが上限値（本実施形態では値５）であるか否かを判定し（ステップＳ２１５）、発振器番号ｋが上限値でないときには、発振器番号ｋを値１インクリメントして（ステップＳ２２０）、ステップＳ２１０以降の処理を行う。これにより、第１発振器５３ａ〜第５発振器５３ｅについて、それぞれ実測周期Ｔ（ｋ，０，０，０），Ｔ（ｋ，１，０，０），Ｔ（ｋ，０，１，０），Ｔ（ｋ，０，０，１）が順次取得される。一方、ステップＳ２１５で発振器番号ｋが上限値であるときには、接続された複数のＩＣカード２０のうち未処理のＩＣカード２０があるか否かを判定する（ステップＳ２２５）。そして、未処理のＩＣカード２０があるときには、ステップＳ２００以降の処理を行う。これにより、サーバー４０に接続された全てのＩＣカード２０について実測周期Ｔが順次取得されることになる。
【００４７】
ステップＳ２２５で未処理のＩＣカード２０がないときには、発振器番号ｋを値１に設定し（ステップＳ２３０）、サーバー４０に接続された複数のＩＣカード２０について取得した実測周期Ｔ（ｋ，０，０，０），Ｔ（ｋ，１，０，０），Ｔ（ｋ，０，１，０），Ｔ（ｋ，０，０，１）をそれぞれ平均した値である平均周期Ｔａｖｅ（ｋ，０，０，０），Ｔａｖｅ（ｋ，１，０，０），Ｔａｖｅ（ｋ，０，１，０），Ｔａｖｅ（ｋ，０，０，１）を導出する（ステップＳ２３５）。例えば、千枚のＩＣカード２０について実測周期Ｔの測定を行った場合には、千個の実測周期Ｔ（ｋ，０，０，０）の平均値を平均周期Ｔａｖｅ（ｋ、０，０，０）とする。平均周期Ｔａｖｅ（ｋ，１，０，０），Ｔａｖｅ（ｋ，０，１，０），Ｔａｖｅ（ｋ，０，０，１）についても同様である。
【００４８】
そして、制御部４１は、導出した平均周期Ｔａｖｅ（ｋ，０，０，０）を基準値Ｔｂ（ｋ）として発振器番号ｋと対応付けて平均値テーブル４６として記憶部４５に記憶する（ステップＳ２４０）。続いて、以下の式（２）〜（４）で導出したオフセット値Ｔｏ（ｋ，１，０，０），Ｔｏ（ｋ，０，１，０），Ｔｏ（ｋ，０，０，１）をそれぞれ発振器番号ｋと対応付けて平均値テーブル４６として記憶部４５に記憶する（ステップＳ２４５）。なお、式（２）〜（４）からわかるように、オフセット値Ｔｏ（ｋ，１，０，０），Ｔｏ（ｋ，０，１，０），Ｔｏ（ｋ，０，０，１）は、それぞれ平均周期Ｔａｖｅ（ｋ，１，０，０），Ｔａｖｅ（ｋ，０，１，０），Ｔａｖｅ（ｋ，０，０，１）と基準値Ｔｂ（ｋ）との差である。そして、発振器番号ｋが上限値（本実施形態では値５）であるか否かを判定し（ステップＳ２５０）、発振器番号ｋが上限値でないときには、発振器番号ｋを値１インクリメントして（ステップＳ２５５）、ステップＳ２３５以降の処理を行う。一方、ステップＳ２５０で発振器番号ｋが上限値であるときには、本ルーチンを終了する。
【００４９】
Ｔｏ（ｋ，１，０，０）＝Ｔａｖｅ（ｋ，１，０，０）−Ｔｂ（ｋ）    （２）
Ｔｏ（ｋ，０，１，０）＝Ｔａｖｅ（ｋ，０，１，０）−Ｔｂ（ｋ）    （３）
Ｔｏ（ｋ，０，０，１）＝Ｔａｖｅ（ｋ，０，０，１）−Ｔｂ（ｋ）    （４）
【００５０】
このように平均値記憶ルーチンを実行することで、平均値テーブル４６が作成されて記憶部４５に記憶される。図５は、平均値テーブル４６の一例を示す説明図である。この図に示すように、平均値テーブル４６では、発振器番号ｋの値１〜５について、それぞれ基準値Ｔｂ（ｋ），オフセット値Ｔｏ（ｋ、１，０，０），Ｔｏ（ｋ、０，１，０），Ｔｏ（ｋ、０，０，１）の値が対応付けられている。ここで、上述したように基準値Ｔｂ（ｋ）は、発振器番号ｋに対応する発振器５３を基準信号経路で発振させたときの発振周期Ｔ（ｋ，０，０，０）を複数のＩＣカード２０について測定して平均した値である。そして、同じ信号経路且つ同じ発振器５３であれば、発振器５３の配置や配線に起因する発振周波数の変化分はどのＩＣカード２０でも同程度であるのに対し、製造ばらつきに起因する発振周波数の変化分はＩＣカード２０毎に異なる。そのため、発振周期Ｔ（ｋ，０，０，０）の平均値である基準値Ｔｂ（ｋ）は、製造ばらつきに起因する発振周波数の変化分は互いに打ち消しあい、発振器５３の配置や配線に起因する発振周波数の変化分の影響が残った値となる。このように、発振周期の平均をとった値である平均周期Ｔａｖｅ（ｋ，ｐ，ｑ，ｒ）は、発振周波数の定格値と発振器５３の配置や配線に起因する発振周波数の変化分とで定まる値となる。また、オフセット値Ｔｏ（ｋ，１，０，０）は平均周期Ｔａｖｅ（ｋ，１，０，０）と基準値Ｔｂ（ｋ）との差であり、両者は信号経路が信号経路Ｗ（１，０，０）であるか信号経路Ｗ（０，０，０）であるかが異なるから、この違いに起因する発振周波数の差に相当する値がオフセット値Ｔｏ（ｋ，１，０，０）となる。具体的には、発振器５３の１段目のインバーター６０として第２インバーター６１ｂを選択したときと第１インバーター６１ａを選択したときとで信号の経路となる配線が異なり、この配線の長さ等で定まる遅延時間の違いに相当する値がオフセット値Ｔｏ（ｋ，１，０，０）となる。例えば、第３経路セレクター６６ｃの出力から第１インバーター６１ａの入力までの配線と比べて第３経路セレクター６６ｃの出力から第２インバーター６１ｂの入力までの配線が長いほど、平均周期Ｔａｖｅ（ｋ，１，０，０）は基準値Ｔｂ（ｋ）よりも大きい値となりオフセット値Ｔｏ（ｋ，１，０，０）も大きい値となる。同様に、信号経路が信号経路Ｗ（０，１，０）であるか信号経路Ｗ（０，０，０）であるかの違いに起因する発振周波数の差に相当する値がオフセット値Ｔｏ（ｋ，０，１，０）となり、信号経路が信号経路Ｗ（０，０，１）であるか信号経路Ｗ（０，０，０）であるかの違いに起因する発振周波数の差に相当する値がオフセット値Ｔｏ（ｋ，０，０，１）となる。
【００５１】
続いて、サーバー４０が事前に固有値テーブル４７を記憶しておく処理について説明する。図６は、固有値記憶ルーチンの一例を示すフローチャートである。このルーチンは、情報セキュリティシステム１０を構成するＩＣカード２０を製造した後、ユーザーにＩＣカード２０を配布する前に実行される。また、このルーチンは、ユーザーに配布するＩＣカード２０のＩＣチップ２１とサーバー４０とを接続して、サーバー４０の制御部４１がネットワーク１１を介さず直接に複数のＩＣカード２０と情報をやりとりできる状態にした上で、制御部４１により実行される。なお、サーバー４０がネットワーク１１に接続される前に固有値記憶ルーチンを実行してもよい。また、固有値記憶ルーチンを実行する前には平均値テーブル記憶ルーチンを実行しておき、平均値テーブル４６を作成しておく。
【００５２】
この固有値記憶ルーチンが実行されると、制御部４１は、まず、サーバー４０に接続されたＩＣカード２０のうち１つを処理対象のＩＣカードに設定し（ステップＳ３００）、処理対象のＩＣカード２０のＩＤを取得する（ステップＳ３０５）。具体的には、制御部４１が、処理対象のＩＣカード２０の記憶部２４に記憶されたＩＤを送信するよう制御部２２を制御し、制御部２２から送信されたＩＤを取得する。続いて、処理対象のチャレンジＣＨの設定、すなわち主発振器選択信号ｋ１，主経路選択信号ｐ１，ｑ１，ｒ１、副発振器選択信号ｋ２，副経路選択信号ｐ２，ｑ２，ｒ２の設定を行う（ステップＳ３１０）。ここで、本実施形態では、主発振器選択信号ｋ１と副発振器選択信号ｋ２との組み合わせは２０通り存在し、１つの主発振器選択信号ｋ１と副発振器選択信号ｋ２との組み合わせについて主経路選択信号ｐ１，ｑ１，ｒ１の組み合わせが８通り、副経路選択信号ｐ２，ｑ２，ｒ２の組み合わせが８通り存在するため、２０×８×８＝１２８０通りのチャレンジＣＨが存在する。ステップＳ３１０では、この１２８０通りのチャレンジＣＨのうち未処理のもの１つを処理対象のチャレンジＣＨに設定する。
【００５３】
続いて、制御部４１は、処理対象のチャレンジＣＨに対応する実測カウント値ＣをＩＣカード２０から取得する（ステップＳ３１５）。この処理は具体的には以下のように行う。まず、処理対象のチャレンジＣＨを処理対象のＩＣカード２０の制御部２２に送信して、チャレンジＣＨに対応する実測カウント値Ｃをサーバー４０に送信するよう取得部４２が制御部２２に指令する。これを受けて、制御部２２は、送信されたチャレンジＣＨに含まれる主発振器選択信号ｋ１を主発振器セレクター５５ａに設定し、副発振器選択信号ｋ２を副発振器セレクター５５ｂに設定し、主経路選択信号ｐ１，ｑ１，ｒ１、副経路選択信号ｐ２，ｑ２，ｒ２、をそれぞれ主発振器及び副発振器の経路セレクター６６に設定する。そして、出力決定部５８からチャレンジＣＨに対応する実測カウント値Ｃが出力されると、制御部２２はこれを取得部４２に送信し、取得部４２が実測カウント値Ｃを取得する。
【００５４】
次に、制御部４１の補正部４３は、処理対象のチャレンジＣＨの主発振器選択信号ｋ１，主経路選択信号ｐ１，ｑ１，ｒ１に対応する平均周期Tａｖｅ（ｋ１，ｐ１，ｑ１，ｒ１）を導出する主平均周期導出処理を行う（ステップＳ３２０）。なお、平均周期Tａｖｅ（ｋ１，ｐ１，ｑ１，ｒ１）は主平均周期Ｔ１ａｖｅとも称する。ここで、固有値記憶ルーチンの説明を中断して、主平均周期導出処理について説明する。図７は、主平均周期導出処理の一例を示すフローチャートである。
【００５５】
この主平均周期導出処理では、補正部４３は、まず、主信号経路Ｗ（ｐ１，ｑ１，ｒ１）が基準信号経路であるか否かを判定する（ステップＳ４００）。本実施形態では、基準信号経路は信号経路Ｗ（０，０，０）であるため、主経路選択信号ｐ１，ｑ１，ｒ１がいずれも値０であるか否かを判定することになる。そして、主信号経路Ｗ（ｐ１，ｑ１，ｒ１）が基準信号経路であるときには、平均値テーブル４６に記憶された基準値Ｔｂ（ｋ１）の値を主平均周期Ｔ１ａｖｅとして導出して（ステップＳ４１０）、主平均周期導出処理を終了する。平均値記憶ルーチンで説明したように基準値Ｔｂ（ｋ１）は平均周期Tａｖｅ（ｋ１，０，０，０）であるため、主信号経路Ｗ（ｐ１，ｑ１，ｒ１）が基準信号経路であるときには基準値Ｔｂ（ｋ１）をそのままＴ１ａｖｅとするのである。
【００５６】
一方、ステップＳ４００で主信号経路Ｗ（ｐ１，ｑ１，ｒ１）が基準信号経路でないと判定したときには、補正部４３は、主信号経路Ｗ（ｐ１，ｑ１，ｒ１）がオフセット信号経路であるか否かを判定する（ステップＳ４２０）。本実施形態では、オフセット信号経路は信号経路Ｗ（１，０，０），Ｗ（０，１，０），Ｗ（０，０，１）であるため、主経路選択信号ｐ１，ｑ１，ｒ１が値（１，０，０）、値（０，１，０）、値（０，０，１）のいずれかであるか否かを判定することになる。そして、主信号経路Ｗ（ｐ１，ｑ１，ｒ１）がオフセット信号経路であるときには、平均値テーブル４６に記憶された基準値Ｔｂ（ｋ１）とオフセット値Ｔｏ（ｋ１，ｐ１，ｑ１，ｒ１）との和を主平均周期Ｔ１ａｖｅとして導出して（ステップＳ４３０）、主平均周期導出処理を終了する。平均値記憶ルーチンで説明したようにオフセット値Ｔｏ（ｋ１，１，０，０），Ｔｏ（ｋ１，０，１，０），Ｔｏ（ｋ１，０，０，１）は、それぞれ平均周期Ｔａｖｅ（ｋ１，１，０，０），Ｔａｖｅ（ｋ１，０，１，０），Ｔａｖｅ（ｋ１，０，０，１）と基準値Ｔｂ（ｋ１）との差であるため、主信号経路Ｗ（ｐ１，ｑ１，ｒ１）がオフセット信号経路であるときにはこのようにして主平均周期Ｔ１ａｖｅを導出するのである。
【００５７】
また、ステップＳ４２０で主信号経路Ｗ（ｐ１，ｑ１，ｒ１）がオフセット信号経路でないときには、補正部４３は、主経路選択信号ｐ１が値０であるか否かを判定し（ステップＳ４４０）、主経路選択信号ｐ１が値０でないときには平均値テーブル４６に記憶されたオフセット値Ｔｏ（ｋ１，ｐ１，０，０）を読み出す（ステップＳ４４５）。続いて、主経路選択信号ｐ１が値０であるとき又はオフセット値Ｔｏ（ｋ１，ｐ１，０，０）を読み出した後に、主経路選択信号ｑ１が値０であるか否かを判定し（ステップＳ４５０）、主経路選択信号ｑ１が値０でないときには平均値テーブル４６に記憶されたオフセット値Ｔｏ（ｋ１，０，ｑ１，０）を読み出す（ステップＳ４５５）。次に、主経路選択信号ｑ１が値０であるとき又はオフセット値Ｔｏ（ｋ１，０，ｑ１，０）を読み出した後に、主経路選択信号ｒ１が値０であるか否かを判定し（ステップＳ４６０）、主経路選択信号ｒ１が値０でないときには平均値テーブル４６に記憶されたオフセット値Ｔｏ（ｋ１，０，０，ｒ１）を読み出す（ステップＳ４６５）。そして、主経路選択信号ｒ１が値０であるとき又はオフセット値Ｔｏ（ｋ１，０，０，ｒ１）を読み出した後に、オフセット値Ｔｏ（ｋ１，ｐ１，０，０），Ｔｏ（ｋ１，０，ｑ１，０），Ｔｏ（ｋ１，０，０，ｒ１）のうちステップＳ４４５，Ｓ４５５，Ｓ４６５により読み出されたオフセット値と基準値Ｔｂ（ｋ１）との和を主平均周期Ｔ１ａｖｅとして導出して（ステップＳ４７０）、主平均周期導出処理を終了する。このように、主信号経路Ｗ（ｐ１，ｑ１，ｒ１）が基準信号経路でもオフセット信号経路でもないときには、主経路選択信号ｐ１，ｑ１，ｒ１のうち基準信号経路と異なる値のものすなわち値０でないものを判定し、値０でない主経路選択信号に対応するオフセット値を平均値テーブル４６から読み出して、読み出したオフセット値と基準値Ｔｂ（ｋ１）との和を主平均周期Ｔ１ａｖｅとして導出するのである。
【００５８】
ここで、このようにして主平均周期Ｔ１ａｖｅを導出する理由について説明する。例えば平均周期Ｔａｖｅ（ｋ１，１，１，０）と平均周期Ｔａｖｅ（ｋ１，０，０，０）とを比較すると、両者は発振器５３の１段目のインバーター６０が第２インバーター６１ｂであるか第１インバーター６１ａであるかの違いと、２段目のインバーター６０が第４インバーター６２ｂであるか第３インバーター６２ａであるかの違いがある。そこで、１段目のインバーター６０が第２インバーター６１ｂであるか第１インバーター６１ａであるかの違いによる発振周波数の差に相当する値であるオフセット値Ｔｏ（ｋ１，１，０，０）と、２段目のインバーター６０が第４インバーター６２ｂであるか第３インバーター６２ａであるかの違いによる発振周波数の差に相当する値であるオフセット値Ｔｏ（ｋ１，０，１，０）とを基準値Ｔｂ（ｋ１）とを合計することで、平均周期Ｔａｖｅ（ｋ１，１，１，０）に近似した値が得られると考えられる。このように主信号経路Ｗ（ｐ１，ｑ１，ｒ１）が基準信号経路でもオフセット信号経路でもないときに、オフセット値Ｔｏと基準値Ｔｂ（ｋ１）とを用いて平均周期Ｔａｖｅ（ｋ１，ｐ１，ｑ１，ｒ１）を導出することで、予め全ての信号経路ｐ，ｑ，ｒについて実測周期Ｔ（ｋ，ｐ，ｑ，ｒ）の測定及び平均周期Ｔａｖｅ（ｋ，ｐ，ｑ，ｒ）の導出を行って平均値テーブル４６に記憶しておく場合と比べて、平均値テーブル４６の作成に要する時間を短くするとともに平均値テーブル４６のデータ量を小さくしているのである。平均値記憶ルーチンにおいて基準信号経路でなく且つオフセット信号経路でもない信号経路Ｗ（ｐ，ｑ，ｒ）については実測周期の測定を行わないものとしたのはこのような理由による。
【００５９】
図６の固有値記憶ルーチンに戻る。ステップＳ３２０で主平均周期Ｔ１ａｖｅを導出すると、制御部４１の補正部４３は、処理対象のチャレンジＣＨの副発振器選択信号ｋ２，副経路選択信号ｐ２，ｑ２，ｒ２に対応する平均周期Ｔａｖｅ（ｋ２，ｐ２，ｑ２，ｒ２）（副平均周期Ｔ２ａｖｅとも称する）を導出する副平均周期導出処理を行う（ステップＳ３２５）。この処理は、図７で説明した主平均周期導出処理と同様にして行う。すなわち、副信号経路Ｗ（ｐ２，ｑ２，ｒ２）が基準信号経路であるときには、基準値Ｔｂ（ｋ２）の値を副平均周期Ｔ２ａｖｅとして導出し、副信号経路Ｗ（ｐ２，ｑ２，ｒ２）がオフセット信号経路であるときには、基準値Ｔｂ（ｋ２）の値とオフセット値Ｔｏ（ｋ２，ｐ２，ｑ２，ｒ２）との和を副平均周期Ｔ２ａｖｅとして導出する。また、副信号経路Ｗ（ｐ２，ｑ２，ｒ２）が基準信号経路でもオフセット信号経路でもないときには、副経路選択信号ｐ２，ｑ２，ｒ２のうち基準信号経路と異なる値のものすなわち値０でないものを判定し、値０でない副経路選択信号に対応するオフセット値を平均値テーブル４６から読み出して、読み出したオフセット値と基準値Ｔｂ（ｋ１）との和を副平均周期Ｔ１ａｖｅとして導出する。
【００６０】
続いて、制御部４１の補正部４３は、ステップＳ３１５で取得した実測カウント値Ｃを補正するための補正値Ｃａｖｅを以下の式（５）により導出する（ステップＳ３３０）。ここで、式（５）におけるＴ２ａｖｅ／Ｔ１ａｖｅは、式（１）におけるｆ１／ｆ２の平均値に相当する。すなわち、補正値Ｃａｖｅは、複数のＩＣカード２０について同じチャレンジＣＨに対応する実測カウント値Ｃを取得してこれを平均した値に相当するものである。そして、補正値Ｃａｖｅを導出すると、制御部４１の補正部４３は、補正値Ｃａｖｅを用いてステップＳ３１５で取得した実測カウント値Ｃを補正した補正後カウント値Ｃｃを式（６）により導出する（ステップＳ３３５）。式（６）からわかるように、補正後カウント値Ｃｃは、実測カウント値Ｃと補正値Ｃａｖｅとの差である。ここで、補正値Ｃａｖｅは、実測カウント値Ｃの平均に相当する値であり、実測周期Ｔ（ｋ、ｐ、ｑ、ｒ）に対する平均周期Ｔａｖｅ（ｋ，ｐ，ｑ，ｒ）と同様に、実測カウント値Ｃから発振器５３の製造ばらつきに起因する発振周波数の変化分は互いに打ち消しあって除かれ、発振器５３の配置や配線に起因する発振周波数の変化分の影響が残った値となる。そのため、実測カウント値Ｃとこの補正値Ｃａｖｅとの差である補正後カウント値Ｃｃは、実測カウント値Ｃから発振器５３の配置や配線に起因する発振周波数の変化分が除去され、発振器５３の製造ばらつきに起因する発振周波数の変化分を表す値となる。より具体的には、補正後カウント値Ｃｃは、処理対象のＩＣカード２０における発振器５３のうち処理対象のチャレンジＣＨで定まる主発振器の主信号経路と副発振器の副信号経路とに関する部分の製造ばらつきに起因する発振周波数の変化分により定まる値となる。そして、この製造ばらつきはＩＣカード２０に固有のものであるため、補正後カウント値ＣｃはＩＣカード２０の固有の値となり、この値を用いてＩＣカード２０が正規のものであるか否かの判定を行うことができる。
【００６１】
Ｃａｖｅ＝Ｔ２ａｖｅ／Ｔ１ａｖｅ×Ｃｐ    （５）
Ｃｃ＝Ｃ−Ｃａｖｅ                        （６）
【００６２】
次に、制御部４１は、補正後カウント値Ｃｃが値０以上であるか否かを判定する（ステップＳ３４０）。そして、補正後カウント値Ｃｃが値０以上であるときには、固有値Ｉを値１として、この固有値ＩとステップＳ３０５で取得したＩＤ及びステップＳ３１０で設定したチャレンジＣＨとを対応付けて固有値テーブルとして記憶する（ステップＳ３４５）。一方、補正後カウント値Ｃｃが値０以上でないときには、固有値Ｉを値０として、この固有値ＩとステップＳ３０５で取得したＩＤ及びステップＳ３１０で設定したチャレンジＣＨとを対応付けて固有値テーブル４７として記憶する（ステップＳ３５０）。この固有値Ｉは処理対象のＩＣカード２０におけるチャレンジＣＨに対応する固有の値であるため、後でＩＣカード２０が正規のものであるか否かを判定する場合において、ここで記憶した固有値Ｉと同じ値が判定対象のＩＣカード２０から導出されるかどうかによってその判定を行うことができる。
【００６３】
ここで、補正後カウント値Ｃｃ自体ではなく、補正後カウント値Ｃｃが値０以上であるか否かに応じた値を固有値Ｉとして記憶する理由について説明する。同じＩＣカード２０について同じチャレンジＣＨに対応する実測カウント値ＣをＰＵＦ回路５０から取得する場合、理想的には実測カウント値Ｃは常に同じ値となるが、実際は誤差やノイズ等の影響によりわずかに異なる値が実測カウント値Ｃとして取得される場合がある。そのため、固有値記憶ルーチンで予め求めておいた補正後カウント値Ｃｃと同じ値が得られるかどうかによりＩＣカード２０が正規のものであるか否かを判定すると、正規のカードであっても誤差やノイズの大きさによっては同じ値が得られず正しい判定ができない場合がある。そこで、補正後カウント値Ｃｃが値０以上か否かを表す値を固有値Ｉとして、換言すると補正後カウント値Ｃｃを２値化したものを固有値Ｉとして、誤差があったとしても予め記憶しておいた固有値Ｉと同じ値が得られるようにしているのである。本実施形態で補正後カウント値Ｃｃが値０以上であるか否かに応じた値を固有値Ｉとして記憶するのはこのような理由による。ここで、補正後カウント値Ｃｃの絶対値が誤差やノイズ分と比較して同等以下に小さい場合には、２値化してもなお誤差やノイズにより固有値Ｉが同じ値とならないなど、２値化した固有値Ｉの安定性が低下する場合がある。このようなケースへの対処方法として、例えばステップＳ３３５で導出した補正後カウント値Ｃｃの絶対値が所定の閾値以下であるときには処理対象のチャレンジＣＨは不安定な固有値Ｉを出力してしまうため認証用途に適さないとみなして、ステップＳ３４５又はＳ３５０での固有値テーブルへの記憶を行わないこととしてもよい。こうすることで，認証時に不安定な固有値Ｉを生成するチャレンジＣＨを用いることを防止して、認証の安定性を高めることができる。なお、補正後カウント値Ｃｃを２値化したものを固有値Ｉとすると、予め記憶された固有値Ｉと同じ値が正規のカードでないＩＣカード２０から得られた値と偶然一致する可能性が高まるという問題があるが、複数のチャレンジＣＨを設定して複数個の固有値Ｉが全て一致するか否かによりＩＣカード２０が正規のカードであるか否かを判定することでこの問題は解決できる。
【００６４】
そして、ステップＳ３４５又はステップＳ３５０で固有値Ｉを記憶すると、未処理のチャレンジＣＨがあるか否かを判定する（ステップＳ３５５）。そして、未処理のチャレンジＣＨがあるときにはステップＳ３１０以降の処理を行う。一方、未処理のチャレンジＣＨがないときには、接続された複数のＩＣカード２０のうち未処理のＩＣカード２０があるか否かを判定する（ステップＳ２６９）。そして、未処理のＩＣカード２０があるときには、ステップＳ３００以降の処理を行う。未処理のＩＣカード２０がないときには、本ルーチンを終了する。この固有値記憶ルーチンを実行することで、サーバー４０に接続された全てのＩＣカード２０についての固有値Ｉのテーブルである固有値テーブル４７が作成されて、記憶部４５に記憶される。図８は、固有値テーブル４７の一例を示す説明図である。この図に示すように、固有値テーブル４７では、ＩＣカード２０のＩＤ及びチャレンジＣＨと固有値Ｉとを対応付けられている。なお、上述したように本実施形態ではチャレンジＣＨは１２８０通りの組合せが存在するため、ＩＣカード２０の１つのＩＤについて１２８０個の固有値Ｉが存在する。
【００６５】
次に、情報セキュリティシステム１０の動作、特に、カードリーダー３０のカードスロット３６に挿入されたＩＣカード２０が正規のカードであるか否かの判定をサーバー４０が行う際の動作について説明する。図９は、ＩＣカード認証処理の様子を示すシーケンスである。この処理は、カードリーダー３０が、カードスロット３６にＩＣカード２０が挿入されたことを検出したときに開始される。
【００６６】
このＩＣカード認証処理が開始されると、まず、カードリーダー３０の制御部３２がカードスロット３６に挿入されたＩＣカード２０に対してＩＤの送信要求を送信する（ステップＳ５００）。続いて、この送信要求を受信したＩＣカード２０の制御部２２は記憶部２４から自身のＩＤを読み出し、これをカードリーダー３０に送信する（ステップＳ５０５）。そして、制御部３２は、ＩＣカード２０から受信したＩＤをサーバー４０に送信する（ステップＳ５１０）。
【００６７】
ＩＤを受信すると、サーバー４０の制御部４１は、今回のＩＣカード２０が正規のカードであるか否かの判定に用いるチャレンジＣＨを決定する（ステップＳ５１５）。本実施形態では、制御部４１は、１２８０通りのチャレンジＣＨのうち１２８個のチャレンジＣＨをランダムに選出して判定に用いるチャレンジＣＨとして決定するものとした。続いて、制御部４１は、受信したＩＤ及び決定したチャレンジＣＨに対応する固有値Ｉを固有値テーブル４７から読み出す（ステップＳ５２０）。決定したチャレンジＣＨは１２８個であるため、固有値Ｉも１２８個が固有値テーブル４７から読み出される。
【００６８】
続いて、制御部４１は、決定したチャレンジＣＨに対応する補正値Ｃａｖｅを導出する（ステップＳ５２５）。この補正値Ｃａｖｅは、上述した図６の固有値記憶ルーチンのステップＳ３３０で説明した補正値Ｃａｖｅと同じものである。そのため、１２８個のチャレンジＣＨに対応する各補正値Ｃａｖｅは、上述した固有値記憶ルーチンのステップＳ３２０〜Ｓ３３０の処理と同様の処理により導出する。
【００６９】
そして、制御部４１は、ステップＳ５１５で決定したチャレンジＣＨと、ステップＳ５２０で読み出した固有値Ｉと、ステップＳ５２５で導出した補正値Ｃａｖｅとを対応付けて記憶部４５に記憶し（ステップＳ５３０）、決定した１２８個のチャレンジＣＨをカードリーダー３０に送信する（ステップＳ５３５）。カードリーダー３０の制御部３２は、サーバー４０から送信されたチャレンジＣＨをＩＣカード２０に送信する（ステップＳ５４０）。
【００７０】
カードリーダー３０からチャレンジＣＨが送信されると、ＩＣカード２０の制御部２２は、送信された１２８個のチャレンジＣＨに対応する実測カウント値Ｃを取得する（ステップＳ５４５）。具体的には、まず、制御部２２が、送信されたチャレンジＣＨに含まれる主発振器選択信号ｋ１を主発振器セレクター５５ａに設定し、副発振器選択信号ｋ２を副発振器セレクター５５ｂに設定し、主経路選択信号ｐ１，ｑ１，ｒ１、副経路選択信号ｐ２，ｑ２，ｒ２をそれぞれ主発振器及び副発振器の経路セレクター６６に設定する。そして、制御部２２は、出力決定部５８からチャレンジＣＨに対応する実測カウント値Ｃを取得する。この処理を、１２８個のチャレンジＣＨについてそれぞれ行って、１２８個の実測カウント値Ｃを取得する。
【００７１】
実測カウント値Ｃを取得すると、制御部２２は、チャレンジＣＨと実測カウント値Ｃとを対応付けてカードリーダー３０に送信する（ステップＳ５５０）。カードリーダー３０の制御部３２は、ＩＣカード２０から送信されたチャレンジＣＨをサーバー４０に送信する（ステップＳ５５５）。
【００７２】
カードリーダー３０からチャレンジＣＨと実測カウント値Ｃとが送信されると、サーバー４０の制御部４１は、送信されたチャレンジＣＨと実測カウント値Ｃとを対応付けて記憶部４５に記憶する（ステップＳ５６０）。この処理と上述したステップＳ５３０とにより、記憶部４５にはチャレンジＣＨ，固有値Ｉ，補正値Ｃａｖｅ，実測カウント値Ｃが対応付けられたテーブル（以下、判定用テーブルと称する）が記憶される。
【００７３】
続いて、制御部４１は、この判定用テーブルを用いてカードスロット３６に接続されたＩＣカード２０が正規のものであるか否かを判定する判定処理を行う（ステップＳ５６５）。ここで、ＩＣカード認証処理の説明を中断して、判定処理について説明する。図１０は、判定処理の一例を示すフローチャートである。
【００７４】
この判定処理が開始されると、制御部４１は、まず、記憶部４５の判定用テーブルに含まれる１２８個のチャレンジＣＨのうち未処理のもの１つを処理対象のチャレンジＣＨに設定する（ステップＳ６００）。続いて、制御部４１の判定部４４は、処理対象のチャレンジＣＨに対応する固有値Ｉ，補正値Ｃａｖｅ，実測カウント値Ｃを判定用テーブルから読み出す（ステップＳ６０５）。そして、制御部４１の補正部４３は、読み出した補正値Ｃａｖｅと実測カウント値Ｃとから、補正後カウント値Ｃｃを導出する（ステップＳ６１０）。なお、補正後カウント値Ｃｃは、上述した図６のステップＳ３３５と同様に式（６）により導出する。そして、補正部４３は、補正後カウント値Ｃｃが値０以上であるか否かを判定して（ステップＳ６１５）、補正後カウント値Ｃｃが値０以上であるときには、レスポンス値Ｒｅを値１に設定し（ステップＳ６２０）、補正後カウント値Ｃｃが値０以上でないときには、レスポンス値Ｒｅを値０に設定する（ステップＳ６２５）。
【００７５】
続いて、制御部４１の判定部４４は、レスポンス値ＲｅがステップＳ６０５で読み出した固有値Ｉと一致するか否かを判定する（ステップＳ６３０）。レスポンス値Ｒｅが固有値Ｉと一致するときには、判定部４４は、未処理のチャレンジＣＨがあるか否かを判定し（ステップＳ６３５）、未処理のチャレンジＣＨがある場合にはステップＳ６００に進む。そして、ステップＳ６３５で未処理のチャレンジＣＨがないときには、判定部４４は、カードスロット３６に挿入されたＩＣカード２０は正規のカードであると判定し（ステップＳ６４０）、本処理を終了する。一方、ステップＳ６３０でレスポンス値Ｒｅが固有値Ｉと一致しないときには、判定部４４は、カードスロット３６に挿入されたＩＣカード２０は正規のカードでないと判定して（ステップＳ６４５）、本処理を終了する。
【００７６】
図９のＩＣカード認証処理の説明に戻る。ステップＳ５６５の判定処理を行うと、制御部４１は、判定結果に応じた処理を行って（ステップＳ５７０）、本処理を終了する。例えば、判定処理でＩＣカード２０が正規のカードであったときには、制御部４１は、ＩＣカード２０を挿入したユーザーが希望するＡＴＭサービス（現金の払い戻しなど）をカードリーダー３０の図示しない操作部を介して入力するよう促す所定の表示画面をカードリーダー３０の図示しない表示部に表示するよう、カードリーダー３０に指令を送信する。そして、カードリーダー３０が表示画面を表示し、その後のユーザーの操作に従ってＡＴＭサービスをユーザーに提供する処理を行う。また、例えば、判定処理でＩＣカード２０が正規のカードでなかったときには、制御部４１は、カードスロット３６に挿入されたＩＣカード２０が使用不能である旨をカードリーダー３０の表示部に表示するよう、カードリーダー３０に指令を送信する。
【００７７】
このように、ＩＣカード認証処理では、サーバー４０が１２８個のチャレンジＣＨに対応する実測カウント値ＣをＩＣカード２０から取得し、実測カウント値Ｃを補正した補正後カウント値Ｃｃの値から導出したレスポンス値Ｒｅが固有値テーブル４７に記憶された固有値Ｉと全て一致するか否かによって、ＩＣカード２０が正規のカードであるか否かの判定を行うのである。上述したように補正後カウント値Ｃｃは、実測カウント値Ｃから発振器５３の配置や配線に起因する発振周波数の変化分が除去され、ＩＣカード２０における発振器５３のうち処理対象のチャレンジＣＨで定まる主発振器の主信号経路と副発振器の副信号経路とに関する部分の製造ばらつきに起因する発振周波数の変化分により定まる値となる。そして、この製造ばらつきはＩＣカード２０を複製したとしても再現できないため、予め図６の固有値記憶ルーチンを行って固有値テーブル４７を作成したときに用いたＩＣカード２０自身からのレスポンス値Ｒｅのみが固有値Ｉと全て一致する。しかも、補正後カウント値Ｃｃは、実測カウント値Ｃから発振器５３の配置や配線に起因する発振周波数の変化分が除去された値であるから、実測カウント値Ｃと比べてＩＣカード２０のユニーク性をより高めた値となっている。例えば実測カウント値Ｃそのものを予め固有値テーブル４７の固有値Ｉとして記憶しておき、レスポンス値Ｒｅも実測カウント値Ｃそののもを用いるとすると、発振器５３の配置や配線に起因して、チャレンジＣＨと固有値Ｉ，レスポンス値Ｒｅとの対応関係に偏りが生じることのより製造時のばらつきが再現できていない偽造品であっても固有値Ｉとレスポンス値Ｒｅとが一致する可能性が高まる場合がある。本実施形態では、実測カウント値Ｃを補正した補正後カウント値Ｃｃを用いることで、このようなことを防止してＩＣカード２０のユニーク性を高めることができる。
【００７８】
ここで、第１実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。第１実施形態のサーバー４０が本発明のホストに相当し、ＩＣカード２０がデバイスに相当し、発振回路５２が発振回路に相当し、選択回路５４が選択手段に相当し、取得部４２が取得手段に相当し、補正部４３が補正手段に相当し、固有値テーブル４７が固有値記憶手段に相当し、判定部４４が判定手段に相当する。なお、本実施形態では、サーバー４０の動作を説明することにより本発明のホストの制御方法の一例も明らかにしている。
【００７９】
以上詳述した第１実施形態の情報セキュリティシステム１０によれば、製造ばらつきに起因する固有の発振周波数をもつ複数の発振器５３を有する発振回路５２をＩＣカード２０が有している。そして、まず、この複数の発振器５３のうち少なくとも１つの発振器５３を選択し、選択された発振器５３を発振させ、その発振周波数に基づく実測カウント値Ｃを取得する。続いて、取得された実測カウント値Ｃを、複数のＩＣカード２０における選択された発振器と同じ配置及び配線の発振器５３を発振させたときの周波数の平均に基づく値である補正値Ｃａｖｅに基づいて補正した補正後カウント値Ｃｃ及びレスポンス値Ｒｅを導出する。このように、実測カウント値Ｃを補正値Ｃａｖｅで補正することで、実測カウント値Ｃから発振器５３の配置や配線に起因する発振周波数の変化分を除去することができ、ＩＣカード２０のユニーク性をより高めた補正後カウント値Ｃｃ及びレスポンス値Ｒｅを導出することができる。
【００８０】
また、発振器５３は、リング状に奇数段のインバーター６０が直列接続されたリングオシレーターとしている。リングオシレーターは、ＩＣ内部の論理素子や配線のみを用いて構成可能であり、デバイス（ＩＣカード２０）の製造ばらつきが論理素子の遅延に影響することでデバイス間の差異がその発振周波数特性に表れやすいため、本発明に適用する意義が高い。
【００８１】
さらに、発振器５３は、１つの発振器５３の各段において並列に接続されたいずれのインバーター６０を選択するかにより、複数の選択経路Ｗ（ｐ，ｑ，ｒ）が選択可能である。そして、取得部４２は、選択された発振器５３を選択された信号経路Ｗ（ｐ，ｑ，ｒ）で発振させ、発振の周波数に基づく実測カウント値Ｃを取得し、補正部４３は、取得された実測カウント値Ｃを、補正値Ｃａｖｅに基づいて補正した補正後カウント値Ｃｃを導出する。こうすれば、１つの発振器５３の各段において並列に接続されたいずれのインバーター６０を選択するかにより、発振器５３の固有の発振周波数が異なる値となるため、擬似的に発振器５３の数を増やすことができる。なお、いずれの発振器５３が選択されるかによって補正後カウント値Ｃｃやレスポンス値Ｒｅは異なる値となるため、発振器５３の数が多いほど補正後カウント値Ｃｃやレスポンス値Ｒｅが第三者に予測されにくくなり、セキュリティを向上させることができる。
【００８２】
さらにまた、補正部４３は、選択された発振器５３の選択された信号経路が基準信号経路でなく且つ基準信号経路と比べて１つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数のＩＣカード２０について選択された発振器と同じ配置及び配線の発振器５３を基準信号経路で発振させたときの平均周期Ｔである基準値Ｔｂと、複数のＩＣカード２０について選択された発振器と同じ配置及び配線の発振器５３をオフセット信号経路で発振させたときの平均周期Ｔと基準値Ｔｂとの差であるオフセット値Ｔｏと、を用いて、選択された信号経路のうち基準信号経路と異なる反転回路に対応するオフセット値Ｔｏと基準値Ｔｂとの和を選択された信号経路に対応する平均周期Ｔとして導出し、導出された平均周期Ｔに基づいて実測カウント値Ｃを補正した補正後カウント値Ｃｃを導出する。このため、基準信号経路でなく且つオフセット信号経路でもない信号経路の平均周波数関連値を、基準値Ｔｂとオフセット値Ｔｏとの和をとるという簡易な処理で導出できる。
【００８３】
そしてまた、選択回路５４は、複数の発振器５３のうち２つの発振器を選択し、取得部４２は、選択された２つの発振器５３を発振させ、２つの発振器の周波数の差に基づく値である実測カウント値Ｃを取得する手段であり、補正部４３は、取得された実測カウント値Ｃを、複数のＩＣカード２０についての選択された２つの発振器５３と同じ配置及び配線の発振器５３を発振させたときの２つの発振器の周波数の平均的な差に基づく値である補正値Ｃａｖｅに基づいて補正することで、補正後カウント値Ｃｃを導出する。このため、１つの発振器５３のみを選択する場合と比較して、発振器５３の選択のパターン数すなわちチャレンジＣＨの総数が増す。
【００８４】
そしてまた、ＩＣカード２０の有する発振器５３と発振器５３の固有の発振周波数に基づく固有値Ｉとを対応付けて記憶する固有値テーブル４７と、固有値テーブル４７から選択された発振器５３に対応する固有値Ｉを読み出し、読み出した固有値Ｉが導出されたレスポンス値Ｒｅと一致するか否かにより該デバイスが正規のものであるか否かを判定する判定部４４と、をサーバー４０が備えている。このため、ユニーク性をより高めた補正後カウント値Ｃｃ及びレスポンス値Ｒｅを用いてＩＣカード２０が正規のものであるか否かを判定するため、例えば実測カウント値Ｃをそのまま用いてＩＣカード２０が正規のものであるか否かを判定する場合と比べて判定の精度が高まり、セキュリティが向上する。
【００８５】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【００８６】
上述した第１実施形態では、サーバー４０の制御部４１が補正部４３を有するものとしたが、ＩＣカード２０の制御部２２が補正部を有するものとしてもよい。この場合、サーバー４０からチャレンジＣＨと併せて補正値ＣａｖｅをＩＣカード２０に送信して、ＩＣカード２０が実測カウント値Ｃを補正値Ｃａｖｅで補正して補正後カウント値Ｃｃやレスポンス値Ｒｅを導出し、導出した値をサーバー４０に送信するものとすればよい。
【００８７】
［第２実施形態］
図１１は、第２実施形態である情報セキュリティシステム１１０の構成の概略を示す構成図である。なお、第２実施形態の構成要素のうち第１実施形態と同様の構成については、第１実施形態と同じ符号を付してその説明を省略する。
【００８８】
図１１に示すように、情報セキュリティシステム１１０は、ユーザーＰＣ１３０と、ユーザーＰＣ１３０に接続されたＦＰＧＡ（Field Programmable Gate Array）１２０と、サーバー１４０とを備えている。この情報セキュリティシステム１１０は、ＦＰＧＡ１２０の再構成可能回路１２６に回路を構成するための回路データを暗号化した暗号データをサーバー１４０が提供し、正規のＦＰＧＡ１２０のみがこの暗号データを復号して利用できるようにした装置である。
【００８９】
ＦＰＧＡ１２０は、ユーザーＰＣ１３０の拡張カードとしての機能を有し、サーバー１４０から提供された回路データに基づいて事後的に回路の構成や再構成が可能な集積回路である。このＦＰＧＡ１２０は、全体の制御を司る制御部１２１と、事後的に回路の構成及び再構成が可能な再構成可能回路１２６と、ＦＰＧＡ１２０の電源がオンされたときに所定の処理を行う起動処理部１２８と、ＰＵＦ回路５０とを備えている。制御部１２１は、ＣＰＵ，ＲＯＭ，ＲＡＭなどを備えたマイクロプロセッサーとして構成され、取得部１２２と、補正部１２３と、復号部１２４とを備えている。この制御部１２１は、ＰＵＦ回路５０から取得した実測カウント値Ｃに基づいて得られる補正後カウント値Ｃｃに基づきサーバー１４０から提供された暗号データを復号し、復号して得られた回路データを用いて再構成可能回路１２６に回路を構成する機能を有する。取得部１２２は、ＰＵＦ回路５０の主発振器及び副発振器を発振させ、その発振周波数の差に基づく値である実測カウント値Ｃを取得する機能を有する。補正部１２３は、取得部１２２により取得された実測カウント値Ｃを、複数のＩＣカード２０についての実測カウント値Ｃを取得した主発振器及び副発振器と同じ配置及び配線の発振器５３を発振させたときの２つの発振器５３の周波数の平均的な差に基づく値に基づいて補正することで、補正後カウント値Ｃｃを導出する機能を有する。復号部１２４は、補正部１２３に導出された補正後カウント値Ｃｃに基づいてサーバー１４０から出力された暗号データを復号する機能を有する。再構成可能回路１２６は、スイッチの切り替えにより機能を変更可能な論理回路ブロックと、スイッチの切り替えにより接続を変更可能な配線とを多数備えた回路として構成されている。この再構成可能回路１２６は、ＦＰＧＡ１２０の電源がオフの状態では回路が構成されていない状態であり、電源がオンされた状態で各スイッチを切り替えることにより回路の構成や変更がなされる。各スイッチの切り替えは、制御部１２１が回路データに基づいて出力するスイッチの切り替え信号に基づいて行われる。起動処理部１２８は、ＣＰＵ，ＲＯＭ，ＲＡＭなどを備えたマイクロプロセッサーとして構成されており、ＲＯＭには制御部１２１及びＰＵＦ回路５０を構成するためのデータやＦＰＧＡ１２０のＩＤが記憶されている。ここで、ＦＰＧＡ１２０の制御部１２１及びＰＵＦ回路５０は、再構成可能回路１２６と同様にスイッチの切り替えにより構成された回路であり、電源がオフの状態では構成されていない。起動処理部１２８は、ＦＰＧＡ１２０の電源がオンされる毎にＲＯＭに記憶されたデータに基づいてスイッチの切り替え信号を出力し、ＦＰＧＡ１２０内に制御部１２１及びＰＵＦ回路５０を構成する機能を有する。なお、図１１ではＦＰＧＡ１２０の電源がオンされ起動処理部１２８により制御部１２１及びＰＵＦ回路５０が構成された状態を示している。ここで、ＰＵＦ回路５０はＦＰＧＡ１２０の電源がオンされる毎に構成されるが、同じＦＰＧＡ１２０について起動処理部１２８が同じデータに基づいてＰＵＦ回路５０を構成する場合には、常に同じＰＵＦ回路５０が構成される。そのため、ＰＵＦ回路５０の発振器５３の製造ばらつきに起因する発振周波数の変化分や、発振器５３の配置や配線に起因する発振周波数の変化分も変わることはなく、同じチャレンジＣＨに対して出力される実測カウント値ＣがＰＵＦ回路５０の構成の都度変わることはない。
【００９０】
ユーザーＰＣ１３０は、ネットワーク１１を介してサーバー４０と接続された周知の汎用パソコンであり、コントローラー１３２と、ＨＤＤ１３４と、拡張スロット１３６と、バス１３７と、表示装置１３８と、入力装置１３９とを備えている。コントローラー１３２は、ＣＰＵ，ＲＯＭ，ＲＡＭなどを備えたプロセッサーとして構成されている。ＨＤＤ１３４は、各種アプリケーションプログラムや各種データファイルを記憶する大容量メモリである。拡張スロット１３６は、ＦＰＧＡ１２０などの拡張カードが接続可能であり、接続されたＦＰＧＡ１２０とユーザーＰＣ１３０との間のインターフェースとしての機能を有する。バス１３７は、例えばＰＣＩ（Peripheral Component Interconnect）バスとして構成され、コントローラー１３２，ＨＤＤ１３４，拡張スロット１３６，表示装置１３８，及び入力装置１３９を接続している。表示装置１３８は、例えば液晶ディスプレイとして構成されており、制御部２０から出力された表示データに基づく画像を表示して各種情報をユーザーに表示する機能を有している。入力装置１３９は、例えばキーボードやマウス等の入力装置として構成されており、ユーザーから入力された操作に基づく操作信号を制御部２０に出力する機能を有している。
【００９１】
サーバー１４０は、ユーザーの求めに応じて再構成可能回路１２６に構成する回路の回路データをＦＰＧＡ１２０に提供するものであり、サーバー１４０全体の制御を司る制御部１４１と、各種データを記憶する記憶部１４５とを備えている。制御部１４１は、取得部１４２と、補正部１４３と、暗号データ出力部１４８とを備えており、記憶部１４５は、平均値テーブル１４６と、固有値テーブル１４７とを備えている。取得部１４２は、実測カウント値Ｃを取得する対象がＩＣカード２０ではなくＦＰＧＡ１２０である点以外は、取得部４２と同様の機能を有する。補正部１４３は、補正後カウント値Ｃｃを導出する対象がＩＣカード２０ではなくＦＰＧＡ１２０である点以外は、補正部４３と同様の機能を有する。暗号データ出力部１４８は、ＦＰＧＡ１２０における選択された発振器５３の固有の発振周波数に基づく固有値Ｉに基づいて回路データを暗号化した暗号データをＦＰＧＡ１２０に出力する機能を有する。平均値テーブル１４６は、補正部１４３が実測カウント値Ｃを補正するために用いる値を各発振器５３と対応付けて記憶しているテーブルであり、ＩＣカード２０ではなくＦＰＧＡ１２０のＰＵＦ回路５０についての値を記憶している点以外は平均値テーブル４６と同様の構成を有する。固有値テーブル１４７は、ＦＰＧＡ１２０のＰＵＦ回路５０についての固有値Ｉを記憶している点以外は、固有値テーブル４７と同様の構成を有する。また、記憶部１４５には、ＦＰＧＡ１２０にの再構成可能回路１２６に構成可能な複数の回路データと、回路データを識別するための回路識別情報とが対応付けて記憶されている。
【００９２】
次に、こうして構成された情報セキュリティシステム１１０の動作、特に、記憶部１４５に記憶された回路データを暗号化した暗号データをサーバー１４０がＦＰＧＡ１２０に提供し、ＦＰＧＡ１２０がその復号を行って回路データを取得する際の動作について説明する。図１２は、回路データ提供処理の様子を示すシーケンスである。この処理は、ＦＰＧＡ１２０の電源がオフからオンに変わったときに開始される。なお、図１２の処理のうち、図９と同様の処理については同じステップ番号を付して、詳細な説明を省略する。
【００９３】
ここで、サーバー１４０は、予め図４の平均値記憶ルーチン及び図６の固有値記憶ルーチンと同様の処理を実行済みであり、平均値テーブル１４６及び固有値テーブル１４７を作成して記憶部１４５に記憶しているものとした。より具体的には、まず、複数のＦＰＧＡ１２０を用意し、用意したＦＰＧＡ１２０とサーバー１４０とを接続して、サーバー１４０の制御部１４１がネットワーク１１を介さず直接に複数のＦＰＧＡ１２０と情報をやりとりできる状態にした上で、図４の平均値記憶ルーチンと同様の処理を制御部１４１により実行しておく。これにより、サーバー１４０に接続された全てのＦＰＧＡ１２０についてＦＰＧＡ１２０のＩＤ及びチャレンジＣＨと固有値Ｉとを対応付けた固有値テーブル１４７が作成されて記憶部１４５に記憶される。また、ユーザーが入手する前のＦＰＧＡ１２０とサーバー４０とを接続して、サーバー４０の制御部１４１がネットワーク１１を介さず直接に複数のＦＰＧＡ１２０と情報をやりとりできる状態にした上で、図６の固有値記憶ルーチンと同様の処理を制御部１４１により実行しておく。これにより、サーバー４０に接続された全てのＦＰＧＡ１２０についてＦＰＧＡ１２０のＩＤ及びチャレンジＣＨと固有値Ｉとを対応付けた固有値テーブル１４７が作成されて記憶部１４５に記憶される。
【００９４】
図１２の回路データ提供処理が開始されると、まず、ＦＰＧＡ１２０の電源がオンされたことにより、起動処理部１２８が制御部１２１及びＰＵＦ回路５０を構成する（ステップＳ７００）。続いて、起動処理部１２８により構成された制御部１２１は、起動処理部１２８のＲＯＭに記憶されたＦＰＧＡ１２０のＩＤを読み出してユーザーＰＣ１３０に送信する（ステップＳ７０５）。
【００９５】
そして、ユーザーＰＣ１３０のコントローラー１３２は、ＦＰＧＡ１２０からＩＤを受信すると、ユーザーがＦＰＧＡ１２０への提供を希望する回路データの回路識別情報を入力装置１３９を介して受け付ける（ステップＳ７１０）。この処理は、例えば回路識別情報を入力装置１３９を介して入力するようユーザーに促す図示しない所定の入力画面を表示するようコントローラー１３２が表示装置１３８を制御して、ユーザーが入力装置１３９に入力した操作に基づいて回路識別情報を入力装置１３９からコントローラー１３２が受信することにより行う。なお、ユーザーは、再構成可能回路１２６に構成したい所定の機能を有する回路データを使用する権利を回路データの提供者から購入することで、この回路データの回路識別情報を予め入手しているものとした。回路識別情報を受け付けると、コントローラー１３２は、ステップＳ７０５で送信されたＩＤと受け付けた回路識別情報とをネットワーク１１を介してサーバー１４０に送信する（ステップＳ７１５）。
【００９６】
ステップＳ７１５で送信されたＩＤ及び回路識別情報を受信すると、サーバー１４０の制御部１４１は、ステップＳ５１５〜Ｓ５２５の処理を行う。これにより、制御部１４１は１２８個のチャレンジＣＨを決定し、受信したＩＤ及び決定したチャレンジＣＨに対応する固有値Ｉを固有値テーブル１４７から読み出し、決定したチャレンジＣＨに対応する補正値Ｃａｖｅを固有値テーブル１４７から導出する。
【００９７】
続いて、制御部１４１は、ステップＳ７１５で送信された回路識別情報に対応する回路データを記憶部１４５から読み出す（ステップＳ７２０）。次に、制御部１４１は、ステップＳ５２０で読み出した固有値Ｉに基づいてステップＳ７２０で読み出した回路データを暗号化した暗号データを生成する（ステップＳ７２５）。本実施形態では、チャレンジに対応する１２８個の固有値Ｉを１２８ビットの鍵情報として用いて、暗号方式の１つであるＡＥＳ（Advanced Encryption Standard）により回路データを暗号化するものとした。なお、１２８個の固有値Ｉから所定の演算により求めた値を鍵情報として回路データを暗号化してもよい。
【００９８】
暗号データを生成すると、暗号データ出力部１４８は、ステップＳ５１５で決定したチャレンジＣＨと、ステップＳ５２５で導出した補正値Ｃａｖｅと、ステップＳ７２５で生成した暗号データとを、ネットワーク１１を介してユーザーＰＣ１３０に送信する（ステップＳ７３０）。ユーザーＰＣ１３０のコントローラー１３２は、サーバー１４０から送信されたチャレンジＣＨ，補正値Ｃａｖｅ，及び暗号データを拡張スロット１３６を介してＦＰＧＡ１２０に送信する（ステップＳ７３５）。ＦＰＧＡ１２０の制御部１２１は、コントローラー１３２から送信されたチャレンジＣＨと補正値Ｃａｖｅとを対応付けた復号用テーブルを作成し、復号用テーブルとコントローラー１３２から送信された暗号データとを図示しない制御部１２１のＲＡＭなどに記憶する（ステップＳ７４０）。
【００９９】
そして、制御部１２１は、ステップＳ７４０で記憶した暗号データをＰＵＦ回路５０の固有の値を用いて復号する復号処理を行う（ステップＳ７４５）。ここで、回路データ提供処理の説明を中断して、復号処理について説明する。図１３は、復号処理の一例を示すフローチャートである。なお、図１３の処理のうち、図１０の判定処理と同様の処理については同じステップ番号を付して、詳細な説明を省略する。
【０１００】
この復号処理が開始されると、制御部１２１は、ステップＳ６００の処理を行ってステップＳ７４０で記憶した１２８個のチャレンジのうち未処理のもの１つを処理対象のチャレンジＣＨに設定する。続いて、制御部１２１の取得部１２２は、処理対象のチャレンジＣＨに対応する実測カウント値Ｃを取得する（ステップＳ８００）。この処理は、図６の固有値記憶ルーチンのステップＳ３１５においてＩＣカード２０の制御部２２が行う処理を同様にして行う。すなわち、取得部１２２が処理対象のチャレンジＣＨに含まれる主発振器選択信号ｋ１，副発振器選択信号ｋ２，主経路選択信号ｐ１，ｑ１，ｒ１，副経路選択信号ｐ２，ｑ２，ｒ２をＰＵＦ回路５０に送信し、測定回路５６の出力決定部５８からチャレンジＣＨに対応する実測カウント値Ｃを取得する。
【０１０１】
続いて、復号部１２４は、処理対象のチャレンジＣＨに対応する補正値ＣａｖｅをステップＳ７４０で作成された復号用テーブルから読み出す（ステップＳ８１０）。そして、補正部１２３は、ステップＳ６１０の処理を行い、ステップＳ８１０で読み出した補正値ＣａｖｅとステップＳ８００で取得した実測カウント値Ｃとから上述した式（６）により補正後カウント値Ｃｃを導出する。そして、ステップＳ６１５〜Ｓ６２５の処理を行う。これにより、復号部１２４、補正後カウント値Ｃｃが値０以上であるときにはレスポンス値Ｒｅを値１に設定し、補正後カウント値Ｃｃが値０未満であるときにはレスポンス値Ｒｅを値０に設定する。
【０１０２】
次に、復号部１２４は、ステップＳ６３５の処理を行って未処理のチャレンジＣＨがあるか否かを判定し、未処理のチャレンジＣＨがある場合にはステップＳ６００に進む。これにより、１２８個のチャレンジＣＨにそれぞれ対応するレスポンス値Ｒｅが設定されるまで上述した処理を繰り返す。そして、ステップＳ６３５で未処理のチャレンジＣＨがないときには、復号部１２４はステップＳ７４０で記憶した暗号データをレスポンス値Ｒｅに基づいて復号して（ステップＳ８２０）、復号処理を終了する。ステップＳ８２０の処理は、本実施形態では、チャレンジに対応する１２８個のレスポンス値Ｒｅを１２８ビットの鍵情報として用いて、ＡＥＳを復号する処理により暗号データを復号化するものとした。暗号データがステップＳ７２５において回路データをどのような手法で暗号化したものであるかは、予めＦＰＧＡ１２０とサーバー１４０との間で取り決められているものとした。こうすることで、ステップＳ７２５とステップＳ８２０とで処理に用いる鍵情報が一致していればステップＳ８２０の復号を正しく行うことができる。なお、暗号データと共に、暗号化した手法を識別するための情報を付加してサーバー１４０がＦＰＧＡ１２０に暗号データを送信するものとしてもよい。
【０１０３】
図１２の回路データ提供処理の説明に戻る。ステップＳ７４５の復号処理を行うと、制御部１２１は、復号して得られた回路データに基づいて、再構成可能回路１２６内に回路を構成して（ステップＳ７５０）、本処理を終了する。ここで、ＦＰＧＡ１２０で導出されるレスポンス値Ｒｅが、サーバー１４０で導出された固有値Ｉと一致していないときには、ステップＳ７２５とステップＳ８２０とで処理に用いた鍵情報が一致せず、ステップＳ８２０における復号が正しく行われない。そのため、ユーザーが提供を希望していた回路データがＦＰＧＡ１２０内に構成されることはない。
【０１０４】
このように、回路データ提供処理では、ＦＰＧＡ１２０のユニーク性をより高めた値であるレスポンス値Ｒｅが、サーバー１４０での回路データの暗号化に用いた固有値Ｉと一致しているときにのみ正しく暗号データを復号できるようにして、回路データが正規のＦＰＧＡ１２０以外のデバイスで利用されることを防止するのである。
【０１０５】
ここで、第２実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。第２実施形態のサーバー１４０が本発明のホストに相当し、ＦＰＧＡ１２０がデバイスに相当し、発振回路５２が発振回路に相当し、選択回路５４が選択手段に相当し、取得部１２２が取得手段に相当し、補正部１２３が補正手段に相当し、暗号データ出力部１４８が暗号データ出力手段に相当し、復号部１２４が復号手段に相当する。なお、本実施形態では、サーバー４０の動作を説明することにより本発明のデバイスの制御方法の一例も明らかにしている。
【０１０６】
以上詳述した第２実施形態の情報セキュリティシステム１１０によれば、ＦＰＧＡ１２０がチャレンジＣＨに対応するＰＵＦ回路５０の実測カウント値Ｃを取得し、取得された実測カウント値Ｃを補正値Ｃａｖｅに基づいて補正した補正後カウント値Ｃｃ及びレスポンス値Ｒｅを導出する。このため、実測カウント値Ｃから発振器５３の配置や配線に起因する発振周波数の変化分を除去してユニーク性をより高めることができ、ＦＰＧＡ１２０のユニーク性をより高めた補正後カウント値Ｃｃ及びレスポンス値Ｒｅを導出することができる。
【０１０７】
また、サーバー１４０がチャレンジＣＨに対応する固有値Ｉに基づいて暗号化された暗号データをＦＰＧＡ１２０に出力し、ＦＰＧＡ１２０が導出したレスポンス値Ｒｅに基づいて暗号データを復号する。これにより、ユニーク性をより高めたレスポンス値Ｒｅが固有値Ｉと一致していないと正しく暗号データを復号することができないため、暗号データが正規のＦＰＧＡ１２０以外のデバイスで復号されることをより防止できる。
【０１０８】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【０１０９】
例えば、上述した第２実施形態では、図１２のステップＳ７１０においてユーザーが入力した回路識別情報をコントローラー１３２が受け付けるものとしたが、予め回路識別情報がＦＰＧＡ１２０やユーザーＰＣ１３０に記憶されており、ユーザーの操作を介さず自動的にコントローラー１３２が回路識別情報を取得するものとしてもよい。
【０１１０】
上述した第１，第２実施形態では、図４の平均値処理ルーチンにおいて基準値Ｔｂ（ｋ）とオフセット値Ｔｏ（ｋ，１，０，０），Ｔｏ（ｋ，０，１，０），Ｔｏ（ｋ，０，０，１）とを導出して記憶部４５，記憶部１４５に記憶するものとしたが、基準値Ｔｂ（ｋ）と平均周期Ｔａｖｅ（ｋ、１，０，０），Ｔａｖｅ（ｋ，０，１，０），Ｔａｖｅ（ｋ，０，０，１）とを記憶するものとしてもよい。この場合、図７の主平均周期導出処理や副平均周期導出において、オフセット値Ｔｏを基準値Ｔｂと平均周期Ｔａｖｅとから導出すればよい。また、オフセット値Ｔｏを用いず、各発振器５３の各経路についてそれぞれ平均周期Ｔａｖｅを導出して記憶部４５，１４５に記憶するものとしてもよい。
【０１１１】
上述した第１，第２実施形態では、入力された第２カウンター５７ｂのカウント数が所定カウント値Ｃｐ（例えば１６進数×４桁の表記で値８０００）になったときの第１カウンター５７ａのカウント数を実測カウント値Ｃとしたが、選択された２つの発振器の周波数の差に基づく値であれば、どのような値を実測カウント値Ｃとしてもよい。例えば、実測カウント値Ｃは、選択された発振器がそれぞれ所定回数発振するのに要する時間の差又は比としてもよい。
【０１１２】
上述した第１，第２実施形態では、基準値Ｔｂ及びオフセット値Ｔｏは、平均周期Ｔａｖｅすなわち時間を表す値を用いて導出するものとしたが、周波数を表す値を用いて導出してもよい。例えば、平均値記憶ルーチンにおいて実測周期Ｔの代わりに実測周波数を取得するものとし、実測周波数の平均値として平均周波数を求めて、基準信号経路における平均周波数を基準値Ｔｂとし、オフセット信号経路における平均周波数と基準値Ｔｂとの差をオフセット値Ｔｏとしてもよい。この場合、図６の固有値記憶ルーチンのステップＳ３２０では、図７の主平均周期導出処理と同様の処理を行って、主信号経路の平均周波数Ａ１を基準値Ｔｂやオフセット値Ｔｏを用いて導出する処理を行えばよい。同様に、図７の固有値記憶ルーチンのステップＳ３２５では、図７の主平均周期導出処理と同様の処理を行って、副信号経路の平均周波数Ａ２を基準値Ｔｂやオフセット値Ｔｏを用いて導出する処理を行えばよい。そして、図６の固有値記憶ルーチンのステップＳ３３０では、式（５）に代えてＣａｖｅ＝Ａ１／Ａ２×Ｃｐにより補正後カウント値Ｃｃを導出すればよい。このように、基準値Ｔｂ及びオフセット値Ｔｏを周波数を表す値としても、本実施形態と同様に補正後カウント値Ｃｃを導出することができる。なお、本実施形態のように、基準信号経路でなく且つオフセット信号経路でもない信号経路についてその信号経路のうち基準信号経路と異なる反転回路に対応するオフセット値Ｔｏと基準値Ｔｂとの和を用いる態様においては、時間を表す値を用いて基準値Ｔｂ及びオフセット値Ｔｏを導出しておく場合の方が、周波数を表す値を用いて基準値Ｔｂ及びオフセット値Ｔｏを導出しておく場合と比べて、オフセット値Ｔｏと基準値Ｔｂとの和により導出した値がより精度の高い値となるため好ましい。
【０１１３】
上述した第１，第２実施形態では、平均周期Ｔと基準値Ｔｂとの差によりオフセット値Ｔｏを導出するものとしたが、平均周期Ｔと基準値Ｔｂとの比によりオフセット値Ｔｏを導出もよい。例えば、平均周期Ｔを基準値Ｔｂで除したものをオフセット値Ｔｏとしてもよい。この場合、基準信号経路でなく且つオフセット信号経路でもない信号経路については、その信号経路のうち基準信号経路と異なる反転回路に対応するオフセット値Ｔｏと基準値Ｔｂとの積により平均周期Ｔを導出するものとすればよい。このようにしても、基準信号経路でなく且つオフセット信号経路でもない信号経路の平均周波数関連値を、基準値Ｔｂとオフセット値Ｔｏとの積を求めるという簡易な処理で導出できる。なお、このようにオフセット値Ｔｏと基準値Ｔｂとの積を用いる態様においては、上述した時間を表す値を用いて基準値Ｔｂ及びオフセット値Ｔｏを導出しておく場合と、周波数を表す値を用いて基準値Ｔｂ及びオフセット値Ｔｏを導出しておく場合とで、オフセット値Ｔｏと基準値Ｔｂとの積により導出した値の精度は変わらない。
【０１１４】
上述した第１，第２実施形態では、サーバーが１２８個のチャレンジＣＨを決定してこれをＩＣカード２０やＦＰＧＡ１２０に送信するものとしたが、ＩＣカード２０やＦＰＧＡ１２０が決定してサーバーに送信するものとしてもよい。
【０１１５】
上述した第１，第２実施形態では、発振器５３はリング状に３段のインバーター６０が直列接続されると共に、各段において２つのインバーター６０が並列に接続されたリングオシレーターとして構成されているものとしたが、段数は奇数段であればよく、並列数はいくつとしてもよい。また、各段で並列数が異なるものとしてもよい。また、並列に接続されたインバーター６０がなくリング状に奇数段の反転回路が直列接続されたリングオシレーターとしてもよい。また、発振器は製造ばらつきに起因する固有の発振周波数をもつものであればよく、リングオシレーターに限られない。
【０１１６】
上述した第１，第２実施形態では、チャレンジによりＰＵＦ回路５０の２つの発振器５３を選択して選択された発振器５３の発振周波数に基づく実測カウント値Ｃを導出するものとしたが、発振器５３を１つだけ選択するものとしてもよい。この場合、例えばＰＵＦ回路５０からは選択された発振器５３の発振周波数を実測カウント値として導出し、この実測カウント値と予め求めた発振器５３の発振周波数の平均値との差をとることで補正後カウント値を導出するものとしてもよい。この場合でも、平均値により実測カウント値を補正することで実測カウント値から発振器５３の配置や配線に起因する発振周波数の変化分を除去することができ、ＰＵＦ回路５０のユニーク性をより高めた補正後カウント値を導出することができる。また、発振周波数に限らず発振周波数に関連する値であればどのようなものを用いて実測カウント値や補正後カウント値を導出してもよい。例えばＰＵＦ回路５０からは選択された発振器５３の周期を実測カウント値として導出し、この実測カウント値と予め求めた発振器５３の周期の平均値との差をとることで補正後カウント値を導出するものとしてもよい。
【０１１７】
上述した第１，第２実施形態では、サーバー４０，１４０にＩＣカード２０,ＦＰＧＡ１２０を接続し、予め基準値Ｔｂやオフセット値Ｔｏを導出して平均値テーブル４６，１４６を記憶したり固有値Ｉを導出して固有値テーブル４７，１４７を記憶したりするものとしたが、サーバー４０、サーバー１４０が基準値Ｔｂ，オフセット値Ｔｏ，固有値Ｉを導出せず、予め別に作成された平均値テーブル４６，１４６，固有値テーブル４７，１４７を外部から受け取って記憶部４５，１４５に記憶するものとしてもよい。
【０１１８】
上述した第１実施形態において、ＩＣカード２０の固有の値に基づいてサーバー４０とＩＣカード２０との間でやり取りする情報を暗号化するものとしてもよい。例えば、サーバー４０は、チャレンジＣＨに対応する固有値Ｉに基づいて暗号化した暗号データと平文のチャレンジＣＨ及び補正値Ｃａｖｅとを送信するものとし、ＩＣカード２０は、受信したチャレンジＣＨに対応する実測カウント値Ｃと受信した補正値Ｃａｖｅとから導出したレスポンス値Ｒｅに基づいて暗号データを復号するものとしてもよい。同様に、ＩＣカード２０のレスポンス値Ｒｅに基づいて暗号化した暗号データをサーバー４０に送信し、サーバー４０は受信した暗号データを固有値Ｉに基づいて復号するものとしてもよい。こうすれば、ＩＣカード２０とサーバー４０との間でやり取りする情報のセキュリティを向上させることができる。
【実施例】
【０１１９】
以下には、情報セキュリティシステムのＰＵＦ回路を実際に作成した例を実施例として説明する。
【０１２０】
［実験例１］
実験例１のＰＵＦ回路として、図２のＰＵＦ回路５０の発振器５３の数を５１２個としたＰＵＦ回路を作成した。具体的には、５１２個の発振器をそれぞれ所定位置に配置し所定の配線を行った発振回路と、５１２個の発振器のうちいずれか１つを主発振器として選択する主発振器セレクターと５１２個の発振器のうちいずれか１つを副発振器として選択する副発振器セレクターとを備えた選択回路と、主発振器及び副発振器の発振周波数に基づく実測カウント値Ｃを出力する測定回路とを備えたＰＵＦ回路を作成した。なお、５１２個の発振器は、いずれもリング状に７個のインバーターを直列接続したリングオシレーターとして構成した。このため、実験例１のＰＵＦ回路を構成する発振器には並列接続されたインバーターが存在せず、信号経路は１つである。
【０１２１】
このＰＵＦ回路は、具体的には、産業総合研究所製のサイドチャネル攻撃用標準評価ボードSASEBO-GIIを用意し、この基板に実装された評価用ＦＰＧＡ（Xilinx社製，Virtex5シリーズ(65nm），LX30）に回路を構成することにより作成した。
【０１２２】
［実験例２］
５１２個の発振器を、いずれも２８個のインバーターと７段の経路セレクターとを備え、リング状に７段のインバーターが直列接続されると共に、各段において４つのインバーターが並列に接続されたリングオシレーターとした点以外は、実験例１と同様のＰＵＦ回路を作成した。なお、実験例２の発振器は、７段の各段において４つのインバーターが並列に接続されているため、信号経路は４7＝１６３８４通り存在する。
【０１２３】
［ユニーク性評価試験］
実験例１及び実験例２のＰＵＦ回路をそれぞれ５個作成して、ユニーク性の評価試験を行った。具体的には以下のように行った。まず、実験例１の５個のＰＵＦ回路に入力する１２８個のチャレンジＣＨを定めた。次に、５個のＰＵＦ回路に対して図４の平均値記憶ルーチンを行って実測周期Ｔから５１２個の平均周期Ｔａｖｅを導出し、１２８個のチャレンジＣＨにそれぞれ対応する補正値Ｃａｖｅを各ＰＵＦ回路について導出しておいた。続いて、この１２８個のチャレンジＣＨに対応する１２８個の実測カウント値Ｃを各ＰＵＦ回路について取得した。そして、図１０の判定処理のステップＳ６１０〜Ｓ６２５と同様にして実測カウント値Ｃと補正値Ｃａｖｅとから１２８個のレスポンス値Ｒｅを各ＰＵＦ回路について導出して１２８ビットの補正あり固有値とし、５個のＰＵＦ回路間で１２８ビットの補正あり固有値のうち値が異なるビットの割合を差異率Ｄとして算出した。また、比較のために１２８個の実測カウント値Ｃを値０以上か否かで二値化した値を１２８ビットの補正なし固有値とし、同様に５個のＰＵＦ回路間で値が異なるビットの割合を差異率Ｄとして算出した。実験例２についても同様にして１２８ビットの補正あり固有値と補正なし固有値とを導出して、それぞれ５個のＰＵＦ回路間で値が異なるビットの割合を差異率Ｄとして算出した。ここで、差異率Ｄは５０％に近いほど導出される固有値に偏りがないことを意味するため好ましく、差異率Ｄが５０％に近いほどその固有値はＰＵＦ回路のユニーク性を高めた値であるといえる。
【０１２４】
（実験結果）
ユニーク性評価試験の結果を図１４〜１７に示す。図１４は、実験例１の５個のＰＵＦ回路間で補正あり固有値の差異率Ｄを示すテーブルである。図１５は、実験例１の５個のＰＵＦ回路間で補正なし固有値の差異率Ｄを示すテーブルである。図１６は、実験例２の５個のＰＵＦ回路間で補正あり固有値の差異率Ｄを示すテーブルである。図１７は、実験例２の５個のＰＵＦ回路間で補正なし固有値の差異率Ｄを示すテーブルである。なお、図１４〜図１７では、５個のＰＵＦ回路を番号１〜５で区別しており、５個のＰＵＦ回路のうち２個の固有値を比較したときの差異率Ｄを、縦軸と横軸との交点の数値で示している。例えば、図１４では、実験例１の１番のＰＵＦ回路と２番のＰＵＦ回路とで補正あり固有値を比較したときに、差異率Ｄが３６．２１％であったことを示している。
【０１２５】
図１４〜図１７から、差異率Ｄは、図１５及び図１７ではいずれも数％程度であり５０％から離れた値となっているのに対し、図１４及び図１６ではそれよりも５０％に近い値となっていることがわかった。この結果から、異なるＰＵＦ回路間であっても補正なし固有値は互いに数％程度しか異なる値とならず、補正なし固有値は他のＰＵＦ回路と値が一致しやすい、すなわちユニーク性の低い値であることがわかった。そして、補正あり固有値を用いることで、異なるＰＵＦ回路間で固有値の差異率Ｄが５０％に近づいており、補正あり固有値はユニーク性をより高めた値であることがわかった。
【０１２６】
［発振周波数の分布測定］
実験例２の５つのＰＵＦ回路について、実測発振周波数と補正後発振周波数とを導出し、その分布を調べた。まず、ＰＵＦ回路の５１２個の発振器についてそれぞれ６４通りの信号経路をランダムに設定し、１つのＰＵＦ回路について５１２×６４＝３２７６８個の擬似的な発振器を測定対象に定めた。そして、この測定対象の発振器の実測発振周波数ｆ１〜ｆ３２７６８を測定し、測定した３２７６８個の実測発振周波数の平均値及び標準偏差を算出した。他の４つのＰＵＦ回路についても同じ３２７６８個の擬似的な発振器を測定対象として、同様に実測発振周波数ｆ１〜ｆ３２７６８を測定してその平均値及び標準偏差を算出した。また、５つのＰＵＦ回路全体で３２７６８×５個の実測発振周波数の平均値及び標準偏差を算出した。次に、この５つのＰＵＦ回路を用いて、この３２７６８個の発振器それぞれについて各ＰＵＦ回路から測定された５つの実測発振周波数の平均値を求めて、平均値ｆ１ａｖｅ〜ｆ３２７６８ａｖｅとした。また、５つのＰＵＦ回路の３２７６８個の発振器全ての実測発振周波数の平均値を求めて、平均値ｆａｖｅとした。そして、各ＰＵＦ回路について補正後発振周波数Ｆｎ＝ｆｎ／ｆｎａｖｅ×ｆａｖｅ（ｎは１〜３２７６８までの整数）を算出し、各ＰＵＦ回路について補正後発振周波数Ｆ１〜Ｆ３２７６８の平均値及び標準偏差を算出した。また、５つのＰＵＦ回路全体で３２７６８×５個の補正後発振周波数の平均値及び標準偏差を算出した。
【０１２７】
（測定結果）
図１８は、実測発振周波数ｆ１〜ｆ３２７６８の平均値及び標準偏差を示すテーブルである。図１９は、補正後発振周波数Ｆ１〜Ｆ３２７６８の平均値及び標準偏差を示すテーブルである。なお、図１８，１９では、５個のＰＵＦ回路を番号１〜５で区別している。図１８からわかるように、実測発振周波数の標準偏差はいずれも２５ＭＨｚ程度の値であるのに対し、補正後発振周波数の標準偏差はいずれも１ＭＨｚ前後と小さい値となっている。ここで、補正後発振周波数は、実測周波数を平均値で補正したものであるため、実測発振周波数から発振器の配置や配線に起因する発振周波数の変化分を除去した値となっている。これらのことから、実測発振周波数におけるばらつきに与える影響は、ＰＵＦ回路の製造時のばらつきに起因するものよりも発振器の配置や配線に起因するものが大きかったことが確認できた。このように発振器の配置や配線に起因する影響が大きい場合には、補正せず実測発振周波数を用いてＰＵＦ回路の固有値を導出しても製造時のばらつきによる発振周波数の変化分を十分利用できず、固有値がユニーク性の低い値となってしまうと考えられる。一方、補正後発振周波数を用いて固有値を導出すれば、発振器の配置や配線に起因する実測発振周波数のばらつきが大きくともこれを除去することができるため、ユニーク性の高い値を固有値として導出することができる。
【符号の説明】
【０１２８】
１０，１１０  情報セキュリティシステム、１１  ネットワーク、２０  ＩＣカード、２１  ＩＣチップ、２２  制御部、２４  記憶部、３０  カードリーダー、３２  制御部、３４  記憶部、３６  カードスロット、４０，１４０  サーバー、４１  制御部、４２  取得部、４３  補正部、４４  判定部、４５  記憶部、４６  平均値テーブル、４７  固有値テーブル、５０  ＰＵＦ回路、５２  発振回路、５３  発振器、５３ａ〜５３ｅ  第１〜第５発振器、５４  選択回路、５５ａ  主発振器セレクター、５５ｂ  副発振器セレクター、５６  測定回路、５７ａ，５７ｂ  第１，第２カウンター、５８  出力決定部、６０  インバーター、６１ａ，６１ｂ  第１，第２インバーター、６２ａ，６２ｂ  第３，第４インバーター、６３ａ，６３ｂ  第５，第６インバーター、６６  経路セレクター、６６ａ〜６６ｃ  第１〜第３経路セレクター、１２０  ＦＰＧＡ、１２１  制御部、１２２  取得部、１２３  補正部、１２４  復号部、１２６  再構成可能回路、１２８  起動処理部、１３０  ユーザーＰＣ、１３２  コントローラー、１３４  ＨＤＤ、１３６  拡張スロット、１３７  バス、１３８  表示装置、１３９  入力装置、１４１  制御部、１４５  記憶部、１４８  暗号データ出力部。
【図１】
0005747327.tif 000002
【図２】
0005747327.tif 000003
【図３】
0005747327.tif 000004
【図４】
0005747327.tif 000005
【図５】
0005747327.tif 000006
【図６】
0005747327.tif 000007
【図７】
0005747327.tif 000008
【図８】
0005747327.tif 000009
【図９】
0005747327.tif 000010
【図１０】
0005747327.tif 000011
【図１１】
0005747327.tif 000012
【図１２】
0005747327.tif 000013
【図１３】
0005747327.tif 000014
【図１４】
0005747327.tif 000015
【図１５】
0005747327.tif 000016
【図１６】
0005747327.tif 000017
【図１７】
0005747327.tif 000018
【図１８】
0005747327.tif 000019
【図１９】
0005747327.tif 000020