【文献】
浅井稔也,他,改良リングオシレータPUFのFPGA実装とその評価,電子情報通信学会技術研究報告,電子情報通信学会,2011年 2月24日,Vol. 110,No. 439,pp. 173-178
(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、発振器の発振周波数は、製造時のばらつきにより変化する他に、発振器の配置や配線の違いによっても変化する。例えば、配線が長ければその分だけ信号の遅延が生じるため、発振周波数が小さくなるなどである。このような発振器の配置や配線の違いによる発振周波数の変化が大きいと、相対的に製造時のばらつきが発振周波数に与える影響が小さくなってしまう。そして、発振器の配置や配線に起因して、選択された発振器と出力される固有の値との対応関係に偏りが生じると、製造時のばらつきが再現できていない偽造品であっても固有の値が正規品と同じになる可能性が高まるなど、デバイスのユニーク性(差異性)が低下してしまい、セキュリティの観点から問題となる。
【0006】
本発明は、上述した課題に鑑みなされたものであり、デバイスのユニーク性をより高めた値を導出することを主目的とする。
【課題を解決するための手段】
【0007】
本発明の情報セキュリティシステムは、
ホストとデバイスとを備えた情報セキュリティシステムであって、
製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路と、
前記複数の発振器のうち少なくとも1つの発振器を選択する選択手段と、
前記選択された発振器を発振させ、該発振の周波数に基づく実測周波数関連値を取得する取得手段と、
前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する補正手段と、
を備え、
前記発振回路及び前記選択手段は、前記デバイスが有しており、
前記取得手段は、前記デバイス又は前記ホストが有しており、
前記補正手段は、前記デバイス又は前記ホストが有している、
ものである。
【0008】
この本発明の情報セキュリティシステムでは、製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路をデバイスが有している。そして、まず、この複数の発振器のうち少なくとも1つの発振器を選択し、選択された発振器を発振させ、その発振の周波数に基づく実測周波数関連値を取得する。続いて、取得された実測周波数関連値を、複数のデバイスにおける選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する。このように、実測周波数関連値を平均周波数関連値で補正することで、実測周波数関連値から発振器の配置や配線に起因する発振周波数の変化分を除去することができ、デバイスのユニーク性をより高めた補正後周波数関連値を導出することができる。なお、「選択された発振器と同じ配置及び配線の発振器」とは、選択された発振器と発振器内部の回路や素子の配置及び発振器内部の配線が同じである発振器を含む。
【0009】
ここで、補正により発振器の配置や配線に起因する発振周波数の変化分を除去することができる理由について説明する。まず、実測周波数関連値は、発振器の製造ばらつきに起因する発振周波数の変化分と、発振器の配置や配線に起因する発振周波数の変化分との両方の影響を受けた値となる。そして、同じ配置及び配線の発振器であれば、発振器の配置や配線に起因する発振周波数の変化分は同程度であるのに対し、発振器の製造ばらつきに起因する発振周波数の変化分は発振器毎に異なる。そのため、平均周波数関連値においては、製造ばらつきに起因する発振周波数の変化分は互いに打ち消しあい、配置や配線に起因する発振周波数の変化分の影響が残る。したがって、この平均周波数関連値で実測周波数関連値を補正することで、実測周波数関連値から配置や配線に起因する発振周波数の変化分を除去することができる。なお、平均周波数関連値は、配置や配線に起因する発振周波数の変化分を除去可能な値であればよいため、実際に選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値であればよく、実際に選択された発振器自体を発振させたときの周波数に基づいている必要はない。
【0010】
なお、実測周波数関連値は、例えば、所定期間における発振回数としてもよいし、所定回数発振するのに要する時間としてもよい。2つ以上の発振器を選択する場合には、実測周波数関連値は、例えば所定期間における発振回数の差又は比としてもよいし、所定回数発振するのに要する時間の差又は比としてもよい。平均周波数関連値は、例えば、複数のデバイスにおける実測周波数関連値の平均としてもよい。2つ以上の発振器を選択する場合には、平均周波数関連値は、例えば選択された2つの発振器とそれぞれ同じ配置及び配線の発振器について、所定期間における発振回数の差又は比か、所定回数発振するのに要する時間の差又は比を導出し、これを複数のデバイスに渡って導出して平均したものとしてもよい。あるいは、平均周波数関連値は、所定期間における発振回数又は所定回数発振するのに要する時間を選択された2つ以上の発振器のそれぞれについて複数のデバイスに渡って平均し、その平均の差又は比としてもよい。補正後周波数関連値は、例えば実測周波数関連値と平均周波数関連値との差又は比としてもよい。
【0011】
本発明の情報セキュリティシステムにおいて、前記発振器は、リング状に奇数段の反転回路が直列接続されたリングオシレーターとしてもよい。リングオシレーターは、IC内部の論理素子や配線のみを用いて構成可能であり、デバイスの製造ばらつきが論理素子の遅延に影響することでデバイス間の差異がその発振周波数特性に表れやすいため、本発明に適用する意義が高い。なお、反転回路とは、入力値に対して出力値が反転する回路であり、例えば、NOTゲート,NANDゲート又はNORゲートの少なくともいずれかとしてもよい。また、リングオシレーターの反転回路の段数は、奇数段であればよく、例えば段数を3段以上としてもよく、7段としてもよい。また、リングオシレーターは、奇数段の反転回路と反転回路でない他の遅延回路とがリング状に直列接続されたものとしてもよい。特に反転回路の段数を1段とする場合には、反転回路と遅延回路とをリング状に直列接続することが好ましい。段数や遅延回路の有無は、例えばリングオシレーターからの出力信号を扱う上で適した発振周波数となるように適宜選択することができる。
【0012】
本発明の情報セキュリティシステムにおいて、前記発振器は、リング状に奇数段の反転回路が直列接続されるとともに、少なくとも1つ以上の段において複数の反転回路が並列に接続され、該並列に接続された反転回路のうちいずれを各段の経路とするかによって複数の信号経路が選択可能であり、且つ、該信号経路を構成する各反転回路の製造ばらつきに起因する各信号経路固有の発振周波数をもち、前記選択手段は、前記複数の発振器のうち少なくとも1つの発振器を選択すると共に、該選択された発振器について複数の前記信号経路のうちいずれか1つの信号経路を選択する手段であり、前記取得手段は、前記選択された発振器を前記選択された信号経路で発振させ、該発振の周波数に基づく前記実測周波数関連値を取得する手段であり、前記補正手段は、前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を前記選択された信号経路で発振させたときの周波数の平均に基づく値である前記平均周波数関連値に基づいて補正した前記補正後周波数関連値を導出する手段としてもよい。こうすれば、1つの発振器の各段において並列に接続されたいずれの反転回路を選択するかにより、発振器の固有の発振周波数が異なる値となるため、擬似的に発振器の数を増やすことができる。なお、いずれの発振器が選択されるかによって補正後周波数関連値は異なる値となるため、発振器の数が多いほど補正後周波数関連値が第三者に予測されにくくなり、セキュリティを向上させることができる。
【0013】
本発明の情報セキュリティシステムにおいて、前記補正手段は、前記選択された発振器の前記選択された信号経路が所定の基準信号経路でなく且つ該基準信号経路と比べて1つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記基準信号経路で発振させたときの前記平均周波数関連値である基準値と、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値と前記基準値との差であるオフセット値と、を用いて、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との和を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段としてもよい。こうすれば、基準信号経路でなく且つオフセット信号経路でもない信号経路の平均周波数関連値を、基準値とオフセット値との和をとるという簡易な処理で導出できる。なお、前記補正手段は、前記選択された発振器の前記選択された信号経路が前記オフセット信号経路であるときには、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との和を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段としてもよい。
【0014】
本発明の情報セキュリティシステムにおいて、前記補正手段は、前記選択された発振器の前記選択された信号経路が所定の基準信号経路でなく且つ該基準信号経路と比べて1つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記基準信号経路で発振させたときの前記平均周波数関連値である基準値と、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値と前記基準値との比であるオフセット値と、を用いて、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との積を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段としてもよい。こうすれば、基準信号経路でなく且つオフセット信号経路でもない信号経路の平均周波数関連値を、基準値とオフセット値との積をとるという簡易な処理で導出できる。なお、前記オフセット値は、複数の前記デバイスについて前記選択された発振器と同じ配置及び配線の発振器を前記オフセット信号経路で発振させたときの前記平均周波数関連値を前記基準値で除した値としてもよい。また、前記補正手段は、前記選択された発振器の前記選択された信号経路が前記オフセット信号経路であるときには、前記選択された信号経路のうち前記基準信号経路と異なる反転回路に対応する前記オフセット値と前記基準値との積を前記選択された信号経路に対応する前記平均周波数関連値として導出し、該導出された平均周波数関連値に基づいて前記取得された実測周波数関連値を補正した前記補正後周波数関連値を導出する手段としてもよい。
【0015】
本発明の情報セキュリティシステムにおいて、前記選択手段は、前記複数の発振器のうち2つの発振器を選択する手段であり、前記取得手段は、前記選択された2つの発振器を発振させ、該2つの発振器の周波数の差に基づく値である前記実測周波数関連値を取得する手段であり、前記補正手段は、前記取得された実測周波数関連値を、複数の前記デバイスについての前記選択された2つの発振器と同じ配置及び配線の発振器を発振させたときの該2つの発振器の周波数の平均的な差に基づく値である前記平均周波数関連値に基づいて補正することで、前記補正後周波数関連値を導出する手段としてもよい。こうすれば、1つの発振器のみを選択する場合と比較して、発振器の選択のパターン数が増す。なお発振器の選択のパターンによって補正後周波数関連値は異なる値となるため、発振器の選択のパターン数が多いほど補正後周波数関連値が第三者に予測されにくくなり、セキュリティを向上させることができる。なお、2つの発振器の周波数の差に基づく値とは、例えば所定期間における発振回数の差又は比としてもよいし、所定回数発振するのに要する時間の差又は比としてもよいし、2つの発振器を同時に発振させて一方の発振器が所定回数発振したときの他方の発振回数としてもよい。また、2つの発振器の周波数の平均的な差に基づく値とは、2つの発振器の所定期間における発振回数の差又は比の平均としてもよいし、所定回数発振するのに要する時間の差又は比の平均としてもよいし、所定期間における発振回数又は所定回数発振するのに要する時間を2つの発振器のそれぞれについて複数のデバイスに渡って平均し、その平均の差又は比としてもよい。あるいは、2つの発振器の周波数の平均的な差に基づく値は、2つの発振器を同時に発振させて一方の発振器が所定回数発振したときの他方の発振回数を複数のデバイスについて導出し、その平均としてもよい。
【0016】
本発明の情報セキュリティシステムにおいて、前記取得手段及び前記補正手段は、前記ホストが有しているものとしてもよい。一般に、ホストと比べてデバイスは実装できる回路や処理能力に制限があることが多いため、このようにする意義が高い。
【0017】
本発明の情報セキュリティシステムにおいて、前記デバイスの有する発振器と該発振器の前記固有の発振周波数に基づく前記所定の固有値とを対応付けて記憶する固有値記憶手段と、前記固有値記憶手段から前記選択された発振器に対応する前記固有値を読み出し、該読み出した固有値が前記導出された補正後周波数関連値と一致するか否かにより、該デバイスが正規のものであるか否かを判定する判定手段と、を備え、前記固有値記憶手段及び前記判定手段は、前記ホストが有しているものとしてもよい。こうすれば、ユニーク性をより高めた補正後周波数関連値を用いてデバイスが正規のものであるか否かを判定するため、例えば実測周波数関連値をそのまま用いてデバイスが正規のものであるか否かを判定する場合と比べて判定の精度が高まり、セキュリティが向上する。
【0018】
本発明の情報セキュリティシステムにおいて、前記デバイスにおける前記選択された発振器の前記固有の発振周波数に基づく前記所定の固有値に基づいて暗号化された暗号データを前記デバイスに出力する暗号データ出力手段と、前記導出された補正後周波数関連値に基づいて前記出力された暗号データを復号する復号手段と、を備え、前記暗号データ出力手段は、前記ホストが有しており、前記復号手段は、前記デバイスが有しているものとしてもよい。こうすれば、ユニーク性をより高めた補正後周波数関連値が固有値と一致していないと正しく暗号データを復号することができないため、暗号データが正規のデバイス以外のデバイスで復号されることをより防止できる。
【0019】
本発明のホストは、製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路を備えるデバイスと情報のやり取りを行うホストであって、
前記複数の発振器のうち選択された少なくとも1つの発振器を発振させたときの該発振の周波数に基づく実測周波数関連値を前記デバイスから取得する取得手段と、
前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する補正手段と、
を備えたものである。
【0020】
この本発明のホストは、製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路を有するデバイスと情報のやり取りを行う。具体的には、まず、この複数の発振器のうち選択された少なくとも1つの発振器を発振させたときの発振の周波数に基づく実測周波数関連値を取得する。続いて、取得された実測周波数関連値を、複数のデバイスにおける選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する。このように、実測周波数関連値を平均周波数関連値で補正することで、実測周波数関連値から発振器の配置や配線に起因する発振周波数の変化分を除去することができ、デバイスのユニーク性をより高めた補正後周波数関連値を導出することができる。なお、このホストにおいて、上述した情報セキュリティシステムのホストの種々の態様を採用してもよいし、上述した情報セキュリティシステムのホストの各機能を実現するような構成を追加してもよい。
【0021】
本発明のデバイスは、
製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路と、
前記複数の発振器のうち少なくとも1つの発振器を選択する選択手段と、
前記選択された発振器を発振させ、該発振の周波数に基づく実測周波数関連値を取得する取得手段と、
前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正することで、補正後周波数関連値を導出する補正手段と、
を備えたものである。
【0022】
この本発明のデバイスは、製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路を備えている。そして、この複数の発振器のうち少なくとも1つの発振器を選択し、選択された発振器を発振させ、その発振の周波数に基づく実測周波数関連値を取得する。続いて、取得された実測周波数関連値を、複数のデバイスにおける選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する。このように、実測周波数関連値を平均周波数関連値で補正することで、実測周波数関連値から発振器の配置や配線に起因する発振周波数の変化分を除去することができ、デバイスのユニーク性をより高めた補正後周波数関連値を導出することができる。なお、このデバイスにおいて、上述した情報セキュリティシステムのデバイスの種々の態様を採用してもよいし、上述した情報セキュリティシステムのデバイスの各機能を実現するような構成を追加してもよい。
【0023】
本発明のホストの制御方法は、
製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路を備えたデバイスと情報のやりとりを行うホストの制御方法であって、
(a)前記複数の発振器のうち選択された少なくとも1つの発振器を発振させたときの該発振の周波数に基づく実測周波数関連値を前記デバイスから取得するステップと、
(b)前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出するステップと、
を含むものである。
【0024】
この本発明のホストの制御方法では、デバイスが有し製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路における複数の発振器のうち、選択された少なくとも1つの発振器を発振させたときの発振の周波数に基づく実測周波数関連値を取得する。続いて、取得された実測周波数関連値を、複数のデバイスにおける選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する。このように、実測周波数関連値を平均周波数関連値で補正することで、実測周波数関連値から発振器の配置や配線に起因する発振周波数の変化分を除去することができ、発振器のユニーク性をより高めた補正後周波数関連値を導出することができる。なお、このホストの制御方法において、上述した情報セキュリティシステムのホストの種々の態様を採用してもよいし、上述した情報セキュリティシステムのホストの各機能を実現するようなステップを追加してもよい。
【0025】
本発明のデバイスの制御方法は、
製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路を備えたデバイスの制御方法であって、
(a)前記複数の発振器のうち少なくとも1つの発振器を選択するステップと、
(b)前記選択された発振器を発振させ、該発振の周波数に基づく実測周波数関連値を取得するステップと、
(c)前記取得された実測周波数関連値を、複数の前記デバイスにおける前記選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出するステップと、
を含むものである。
【0026】
この本発明のデバイスの制御方法では、デバイスが有し製造ばらつきに起因する固有の発振周波数をもつ複数の発振器を有する発振回路における複数の発振器のうち少なくとも1つの発振器を選択し、選択された発振器を発振させ、その発振の周波数に基づく実測周波数関連値を取得する。続いて、取得された実測周波数関連値を、複数のデバイスにおける選択された発振器と同じ配置及び配線の発振器を発振させたときの周波数の平均に基づく値である平均周波数関連値に基づいて補正した補正後周波数関連値を導出する。このように、実測周波数関連値を平均周波数関連値で補正することで、実測周波数関連値から発振器の配置や配線に起因する発振周波数の変化分を除去することができ、発振器のユニーク性をより高めた補正後周波数関連値を導出することができる。なお、このデバイスの制御方法において、上述した情報セキュリティシステムのデバイスの種々の態様を採用してもよいし、上述した情報セキュリティシステムのデバイスの各機能を実現するようなステップを追加してもよい。
【0027】
本発明の第1のプログラムは、上述したホストの制御方法の各ステップを1又は複数のコンピューターに実現させるためのものである。この第1のプログラムをコンピューターに実行させれば、上述した本発明のホストの制御方法が実現されるため、本発明のホストの制御方法と同様の作用効果が得られる。また、本発明の第2のプログラムは、上述したデバイスの制御方法の各ステップを1又は複数のコンピューターに実現させるためのものである。この第2のプログラムをコンピューターに実行させれば、上述した本発明のデバイスの制御方法が実現されるため、本発明のデバイスの制御方法と同様の作用効果が得られる。第1のプログラム及び第2のプログラムは、コンピューターが読み取り可能な記録媒体(例えばハードディスク、ROM、FD、CD、DVDなど)に記録されていてもよいし、伝送媒体(インターネットやLANなどの通信網)を介してあるコンピューターから別のコンピューターに配信されてもよいし、その他どのような形で授受されてもよい。
【発明を実施するための形態】
【0029】
[第1実施形態]
図1は、第1実施形態である情報セキュリティシステム10の構成の概略を示す構成図である。図示するように、情報セキュリティシステム10は、ICカード20と、カードリーダー30と、サーバー40とを備えている。この情報セキュリティシステム10は、ICカード20に記憶された情報を用いて、ICカード20の所有者であるユーザーに例えば現金の預け入れや払い戻しなどのATM(Automated Teller Machine)サービスや有料コンテンツを購入するコンテンツ購入サービスなどのサービスを提供する装置である。本実施形態では、情報セキュリティシステム10は、ATM(Automated Teller Machine)サービスを提供するものとした。
【0030】
ICカード20は、ATMサービスに用いるキャッシュカードであり、CPU,ROM,RAMなどを備えたマイクロプロセッサーとして構成されたICチップ21を備えている。ICチップ21は、ICチップ21全体の制御を司る制御部22と,ICカード20の識別用のIDなど各種データを記憶する記憶部24と,ICカード20の固有の値を出力するためのPUF回路50とを備えている。本実施形態では、ICカード20は接触型であるものとしたが、非接触型であってもよい。このICカード20は、図示は省略するが同様の構成のものが複数存在し、それぞれ別のユーザーが所有している。
【0031】
PUF回路50は、複数の発振器53を備えた発振回路52と、発振器53を選択する選択回路54と、選択された発振器53の発振回数をカウントして発振器53の発振周波数に基づく値を測定する測定回路56とを備えている。
図2は、PUF回路50の構成の概略を示す構成図である。
【0032】
発振回路52は、製造ばらつきに起因する固有の発振周波数をもつ第1発振器53a〜第5発振器53eの5個の発振器53をそれぞれ所定位置に配置し所定の配線を行ったものである。この発振回路52では、
図2に示すように、選択回路54の主発振器セレクター55a及び副発振器セレクター55bの入力部に各発振器53からの出力部がそれぞれ配線により接続されている。
【0033】
図3は、発振器53の構成の概略を示す構成図である。なお、第1発振器53a〜第5発振器53eの内部の構成はいずれも同じである。このため、
図3では1つの発振器53の構成を示している。発振器53は、6個のインバーター60と3個の経路セレクター66とを備え、リング状に奇数段(本実施形態では3段)のインバーター(NOTゲート)60が直列接続されると共に、各段において複数(本実施形態では2つ)のインバーター60が並列に接続されたリングオシレーターとして構成されている。具体的には、発振器53は、1段目のインバーター60として並列に接続された第1インバーター61a,第2インバーター61bを備え、2段目のインバーター60として並列に接続された第3インバーター62a,第4インバーター62bを備え、3段目のインバーター60として並列に接続された第5インバーター63a,第6インバーター63bを備えている。この第1インバーター61a〜第6インバーター63bは、入力値に対して出力値が反転する反転回路である。また、発振器53は、3個の経路セレクター66として、第1経路セレクター66aと、第2経路セレクター66bと、第3経路セレクター66cとを備えている。第1経路セレクター66aは、1段目のインバーター60のうち選択したいずれか1つの出力を2段目のインバーター60に出力するものである。第1経路セレクター66aの入力部は、1段目のインバーター60すなわち第1インバーター61a及び第2インバーター61bの出力部とそれぞれ配線で接続されており、第1経路セレクター66aの出力部は、2段目のインバーター60すなわち第3インバーター62a及び第4インバーター62bの入力部とそれぞれ配線で接続されている。第2経路セレクター66bは、2段目のインバーター60のうち選択したいずれか1つの出力を3段目のインバーター60に出力するものである。第2経路セレクター66bの入力部は、2段目のインバーター60すなわち第3インバーター62a及び第4インバーター62bの出力部とそれぞれ配線で接続されており、第2経路セレクター66bの出力部は、3段目のインバーター60すなわち第5インバーター63a及び第6インバーター63bの入力部とそれぞれ配線で接続されている。第3経路セレクター66cは、3段目のインバーター60のうち選択したいずれか1つの出力を1段目のインバーター60に出力するものである。第3経路セレクター66cの入力部は、3段目のインバーター60すなわち第5インバーター63a及び第6インバーター63bの出力部とそれぞれ配線で接続されており、第3経路セレクター66cの出力部は、1段目のインバーター60すなわち第1インバーター61a及び第2インバーター61bの入力部とそれぞれ配線で接続されている。なお、第3経路セレクター66cの出力部は、発振器53の出力部とも配線で接続されており、この発振器53の出力部が選択回路54の主発振器セレクター55a,副発振器セレクター55bの入力部にそれぞれに接続されるよう発振回路52内の配線がなされている(
図2参照)。第1経路セレクター66a,第2経路セレクター66b,第3経路セレクター66cはそれぞれ経路選択信号p,q,rが制御部22から入力されるようになっており、この経路選択信号p,q,rの値によって各段で選択されるインバーター60が定まるようになっている。具体的には、第1経路セレクター66aは、経路選択信号pが値0のときには第1インバーター61aを選択し、値1のときには第2インバーター61bを選択する。第2経路セレクター66bは、経路選択信号qが値0のときには第3インバーター62aを選択し、値1のときには第4インバーター62bを選択する。第3経路セレクター66cは、経路選択信号rが値0のときには第5インバーター63aを選択し、値1のときには第6インバーター63bを選択する。
【0034】
発振器53は、この経路選択信号p,q,rにより、並列に接続された各段のインバーター60のうちいずれを各段の経路として選択するかによって複数の信号経路が選択可能である。経路選択信号p,q,rで定まる発振器53の信号経路を信号経路W(p,q,r)と称する。この経路選択信号p,q,rで選択された信号経路W(p,q,r)は、直列に接続された3段のインバーター60で構成されるため、発振器53の出力は発振周波数で発振する。例えば、信号経路W(0,0,0)、すなわち第1インバーター61a,第3インバーター62a,第5インバーター63aが選択された状態において、第1インバーター61aの入力が値0である場合を考える。この場合、第1インバーター61aの出力及び第3インバーター62aの入力が値1,第3インバーター62aの出力及び第5インバーター63aの入力が値0,第5インバーター63aの出力が値1となって、発振器53からは値1が出力される。また、第5インバーター63aの出力である値1は第1インバーター61aの入力となるため、第1インバーター61aの入力が値0から値1に変化する。すると、第1インバーター61aの出力及び第3インバーター62aの入力が値0,第3インバーター62aの出力及び第5インバーター63aの入力が値1,第5インバーター63aの出力が値0となって、発振器53の出力は値0となる。このようにして、発振器53の出力は値0と値1とを繰り返す、すなわち発振する。そして、この発振器53の発振周波数は、信号経路W(p,q,r)を構成する各インバーター60の製造ばらつきに起因する各信号経路固有の値となる。
【0035】
選択回路54は、
図2に示すように、主発振器セレクター55aと副発振器セレクター55bとを備えている。主発振器セレクター55aは、発振回路52から引き出された第1発振器53a〜第5発振器53eの各出力部が自身の入力部と配線で接続されるとともに、自身の出力部が測定回路56の第1カウンター57aの入力部と配線で接続されている。主発振器セレクター55aは、第1発振器53a〜第5発振器53eのうち選択したいずれか1つの発振器53の出力を測定回路56の第1カウンター57aに出力する。
副発振器セレクター55bは、発振回路52から引き出された第1発振器53a〜第5発振器53eの各出力部が自身の入力部と配線で接続されるとともに、自身の出力部が測定回路56の第2カウンター57bの入力部と配線で接続されている。副発振器セレクター55bは、第1発振器53a〜第5発振器53eのうち選択したいずれか1つの発振器53の出力を測定回路56の第2カウンター57bに出力する。なお、第1カウンター57aにより選択されている発振器53を主発振器と表記し、第2カウンター57bにより選択されている発振器53を副発振器と称する。主発振器セレクター55a,副発振器セレクター55bは、それぞれ主発振器選択信号k1,副発振器選択信号k2が制御部22から入力されるようになっており、この主発振器選択信号k1,副発振器選択信号k2の値によって選択される発振器53が定まるようになっている。主発振器選択信号k1,副発振器選択信号k2は値1〜5のいずれかであり、それぞれが第1発振器53a〜第5発振器53eに対応している。なお、主発振器選択信号k1と副発振器選択信号k2とが同時に同じ値となることはなく、主発振器及び副発振器には異なる発振器53が選択される。
【0036】
測定回路56は、第1カウンター57aと、第2カウンター57bと、出力決定部58とを備えている。第1カウンター57aは、自身の入力部が主発振器セレクター55aの出力部と配線で接続されると共に自身の出力部が出力決定部58の入力部と配線で接続されている。
【0037】
第1カウンター57aは、主発振器セレクター55aを介して入力された主発振器の出力信号の発振回数(例えば信号の立ち上がり数)をカウントして、カウント数を出力決定部58に出力する。第2カウンター57bは、自身の入力部が副発振器セレクター55bの出力部と配線で接続されると共に自身の出力部が出力決定部58の入力部と配線で接続されている。第2カウンター57bは、副発振器セレクター55bを介して入力された副発振器の出力信号の発振回数をカウントして、カウント数を出力決定部58に出力する。
【0038】
出力決定部58は、自身の入力部が第1カウンター57a及び第2カウンター57bの出力部と配線で接続されており、自身の出力部が制御部22に接続されている。出力決定部58は、第1カウンター57aのカウント数が入力されると、このカウント数が変化するタイミングから主発振器の発振周期を導出して、導出した発振周期を実測周期T(k,p,q,r)として出力する。実測周期T(k,p,q,r)は、発振器番号kに対応する発振器53を信号経路W(p,q,r)で発振させたときの発振周期の実測値を意味する。なお、発振器番号kは値1〜5のいずれかの値であり、それぞれ第1発振器53a〜第5発振器53eに対応している。上述したように発振器53の発振周波数は、信号経路W(p,q,r)を構成する各インバーター60の製造ばらつきに起因する各信号経路固有の値となるため、この実測周期T(k,p,q,r)も発振器番号k,経路選択信号p,q,rに対応した固有の値となる。また、出力決定部58は、第1カウンター57a及び第2カウンター57bのカウント数が入力され、入力された第2カウンター57bのカウント数が所定カウント値Cp(例えば16進数×4桁の表記で値8000)になったときの第1カウンター57aのカウント数を実測カウント値Cとして制御部22に出力する。ここで、主発振器選択信号k1で定まる主発振器を主発振器の経路選択信号p,q,r(以下、主経路選択信号p1,q1,r1と称する)で定まる主信号経路W(p1,q1,r1)で発振させたときの発振周波数をf1とし、副発振器選択信号k2で定まる副発振器を副発振器の経路選択信号p,q,r(以下、副経路選択信号p2,q2,r2と称する)で定まる副信号経路W(p2,q2,r2)で発振させたときの発振周波数をf2とすると、実測カウント値Cは以下の式(1)で表される値となる。ここで、発振周波数f1は主発振器選択信号k1、主経路選択信号p1,q1,r1に対応する固有の値となり、発振周波数f2は副発振器選択信号k2、副経路選択信号p2,q2,r2に対応する固有の値となるから、実測カウント値Cは発振周波数f1は主発振器選択信号k1、主経路選択信号p1,q1,r1、副発振器選択信号k2、副経路選択信号p2,q2,r2の組み合わせに対応する固有の値となる。なお、主発振器選択信号k1、主経路選択信号p1,q1,r1、副発振器選択信号k2、副経路選択信号p2,q2,r2の組み合わせをチャレンジCHと称する。第1カウンター57aは、カウント数をグレイコードで出力決定部58に出力するようになっており、出力決定部58はこのグレイコードを通常のバイナリコードに変換したものを実測カウント値Cとして出力する。このようにすることで、第1カウンター57aの出力と第2カウンター57bの出力との同期をとらなくとも、実測カウント値Cの誤差を最大で値1に抑えることができる。
【0040】
ここで、発振器53毎及び信号経路W(p,q,r)毎に発振周波数が固有の値となる理由について詳細に説明する。発振器53を構成する6つのインバーター60は同じものであり、いずれの信号経路W(p,q,r)を選択した場合でも発振器53の発振周波数の定格値(例えば、170MHzなど)は同じ値である。同様に、第1発振器53a〜第5発振器53e間でも互いに内部の構成が同じであるため発振周波数の定格値は同じである。しかし、インバーター60の製造時のばらつきによってインバーター60の遅延時間にわずかな違いが生じるため、実際には第1発振器53a〜第5発振器53e毎、及び信号経路W(p,q,r)毎に発振周波数に違いが生じる。このばらつきは、例えば発振周波数の定格値の数%程度以下である。また、内部の構成が同じでも発振器53の配置や配線の違いによって遅延時間に違いが生じるため、これによっても発振周波数に違いが生じる。なお、発振器53の配置や配線の違いとは、発振器内部の回路や素子の配置及び発振器内部の配線の違いを含み、例えば発振器53内の信号経路W(p,q,r)毎の発振に用いられるインバーター60の配置や配線の違いなどである。具体的には、例えば、信号経路W(0,0,0)では3段目のインバーター60が第5インバーター63aであるのに対し信号経路W(0,0,1)では3段目のインバーター60が第6インバーター63bであるため、発振に用いられる3段目のインバーター60の配置,第2経路セレクター66bから3段目のインバーター60までの配線,3段目のインバーター60から第3経路セレクター66cまでの配線が異なるなど、同じ発振器53であっても信号経路W(p,q,r)によって発振周波数に違いが生じる。また、例えば第1発振器53aと第2発振器53bとでは同じ信号経路W(0,0,0)であってもその信号経路を構成する配線の長さが異なるなど、異なる発振器53の間では同じ信号経路であっても発振周波数に違いが生じる。このようなインバーター60の製造時のばらつきと発振器53の配置や配線の違いとによって、発振器53は第1発振器53a〜第5発振器53e毎、及び信号経路W(p,q,r)毎に固有の発振周波数で発振する。
【0041】
カードリーダー30は、ネットワーク11を介してサーバー40と接続されており、サーバー40の端末として機能する。このカードリーダー30は、カードリーダー30全体の制御を司る制御部32と、各種データを記憶する記憶部34と、ICカード20を挿入可能なカードスロット36とを備えている。カードリーダー30は、ネットワーク11を介してサーバー40とデータのやり取りを行うと共に、カードスロット36に挿入されたICカード20とデータのやり取りを行う。
【0042】
サーバー40は、ICカード20が正規のカードであるか否かの判定を行うものであり、サーバー40全体の制御を司る制御部41と、各種データを記憶する記憶部45とを備えている。制御部41は、取得部42と、補正部43と、判定部44とを備えており、記憶部45は、平均値テーブル46と、固有値テーブル47とを備えている。取得部42は、ICカード20の主発振器及び副発振器を発振させ、その発振周波数の差に基づく値である上述した実測カウント値Cを取得する機能を有する。補正部43は、複数のICカード20についての実測カウント値Cを取得した主発振器及び副発振器と同じ配置及び配線の発振器53を発振させたときの2つの発振器53の周波数の平均的な差に基づく値を平均値テーブル46から導出し、取得部42により取得された実測カウント値Cを平均値テーブル46から導出した値に基づいて補正することで、補正後カウント値Ccを導出する機能を有する。判定部44は、固有値テーブル47からICカード20の主発振器及び副発振器に対応する固有値Iを読み出し、読み出した固有値Iが補正後カウント値Cと一致するか否かにより、ICカード20が正規のものであるか否かを判定する機能を有する。平均値テーブル46は、補正部43が実測カウント値Cを補正するために用いる値を各発振器53と対応付けて記憶しているテーブルである。また、固有値テーブル47は、ICカード20の有する主発振器,主信号経路,副発振器,副信号経路の組み合わせと、主発振器及び副発振器の固有の発振周波数に基づく所定の固有値Iとを対応付けて記憶しているテーブルである。
【0043】
次に、こうして構成された情報セキュリティシステム10の動作について説明する。まず、サーバー40が平均値テーブル46及び固有値テーブル47を作成して記憶部45に記憶する処理について説明し、その後情報セキュリティシステム10全体の動作について説明する。
【0044】
まず、サーバー40が事前に平均値テーブル46を作成して記憶部45に記憶しておく処理について説明する。
図4は、平均値記憶ルーチンの一例を示すフローチャートである。このルーチンは、複数(例えば数百〜数万枚)のICカード20を用意し、用意したICカード20のICチップ21とサーバー40とを接続して、サーバー40の制御部41がネットワーク11を介さず直接に複数のICカード20と情報をやりとりできる状態にした上で、制御部41により実行される。この平均値記憶ルーチンは、ユーザーにICカード20を配布する前に予め実行しておくものである。なお、この平均値記憶ルーチンは、発振器53の配置や配線に起因する発振周波数の変化分を除去可能な値としての平均値を取得して記憶しておくものである。そのため、このルーチンに用いるICカード20は、情報セキュリティシステム10を構成するICカード20と発振器53の配置や配線を含めて同じ構成のICカードであればよく、必ずしも情報セキュリティシステム10を構成するICカード20、すなわち後にユーザーに配布するICカード20である必要はない。したがって、例えば情報セキュリティシステム10を構成するICカード20を製造する前や、サーバー40がネットワーク11に接続される前に平均値記憶ルーチンを実行してもよい。
【0045】
この平均値記憶ルーチンが実行されると、制御部41は、まず、接続された複数のICカード20のうち1つを処理対象のICカードに設定する(ステップS200)。続いて、発振器番号kを値1に設定し(ステップS205)、実測周期T(k,0,0,0),T(k,1,0,0),T(k,0,1,0),T(k,0,0,1)を取得する(ステップS210)。実測周期T(k,p,q,r)は、上述したように発振器番号kに対応する発振器53を信号経路W(p,q,r)で発振させたときの発振周期の実測値である。なお、信号経路W(0,0,0)を基準信号経路、信号経路W(1,0,0),W(0,1,0),W(0,0,1)をオフセット信号経路と称する。オフセット信号経路は、基準信号経路と比べて経路選択信号p,q,rのうちいずれか1つの値のみが異なる信号経路である。換言すると、オフセット信号経路は、基準信号経路と比べて1つのインバーター60のみが異なる信号経路である。本実施形態では、例えば実測周期T(k,0,0,0)は、次のように取得する。主発振器選択信号k1として値kを、主経路選択信号p1,q1,r1として値0,0,0を、それぞれ取得部42が制御部22に送信して、これに対応する実測周期T(k,0,0,0)を送信するよう取得部42が制御部22を制御する。これを受けて、制御部22は、送信された主発振器選択信号k1を主発振器セレクター55aに設定し、主経路選択信号p1,q1,r1を主発振器の経路セレクター66に設定する。そして、出力決定部58から主発振器選択信号k1、経路選択信号p,q,rに対応する実測周期T(k,0,0,0)が出力されると、制御部22はこれを取得部42に送信し、取得部42が実測周期T(k、0,0,0)を取得する。実測周期T(k,1,0,0),T(k,0,1,0),T(k,0,0,1)についても、主経路選択信号p1,q1.r1の値が異なる以外は同様にして取得するものとした。なお、基準信号経路でなく且つオフセット信号経路でもない信号経路W(p,q,r)については、実測周期の測定を行わない。これは、後述する処理において、基準信号経路の実測周期Tの平均値とオフセット信号経路の実測周期Tの平均値とから、このような経路の平均値を計算により求めるよう設定されているためである。
【0046】
続いて、制御部41は、発振器番号kが上限値(本実施形態では値5)であるか否かを判定し(ステップS215)、発振器番号kが上限値でないときには、発振器番号kを値1インクリメントして(ステップS220)、ステップS210以降の処理を行う。これにより、第1発振器53a〜第5発振器53eについて、それぞれ実測周期T(k,0,0,0),T(k,1,0,0),T(k,0,1,0),T(k,0,0,1)が順次取得される。一方、ステップS215で発振器番号kが上限値であるときには、接続された複数のICカード20のうち未処理のICカード20があるか否かを判定する(ステップS225)。そして、未処理のICカード20があるときには、ステップS200以降の処理を行う。これにより、サーバー40に接続された全てのICカード20について実測周期Tが順次取得されることになる。
【0047】
ステップS225で未処理のICカード20がないときには、発振器番号kを値1に設定し(ステップS230)、サーバー40に接続された複数のICカード20について取得した実測周期T(k,0,0,0),T(k,1,0,0),T(k,0,1,0),T(k,0,0,1)をそれぞれ平均した値である平均周期Tave(k,0,0,0),Tave(k,1,0,0),Tave(k,0,1,0),Tave(k,0,0,1)を導出する(ステップS235)。例えば、千枚のICカード20について実測周期Tの測定を行った場合には、千個の実測周期T(k,0,0,0)の平均値を平均周期Tave(k、0,0,0)とする。平均周期Tave(k,1,0,0),Tave(k,0,1,0),Tave(k,0,0,1)についても同様である。
【0048】
そして、制御部41は、導出した平均周期Tave(k,0,0,0)を基準値Tb(k)として発振器番号kと対応付けて平均値テーブル46として記憶部45に記憶する(ステップS240)。続いて、以下の式(2)〜(4)で導出したオフセット値To(k,1,0,0),To(k,0,1,0),To(k,0,0,1)をそれぞれ発振器番号kと対応付けて平均値テーブル46として記憶部45に記憶する(ステップS245)。なお、式(2)〜(4)からわかるように、オフセット値To(k,1,0,0),To(k,0,1,0),To(k,0,0,1)は、それぞれ平均周期Tave(k,1,0,0),Tave(k,0,1,0),Tave(k,0,0,1)と基準値Tb(k)との差である。そして、発振器番号kが上限値(本実施形態では値5)であるか否かを判定し(ステップS250)、発振器番号kが上限値でないときには、発振器番号kを値1インクリメントして(ステップS255)、ステップS235以降の処理を行う。一方、ステップS250で発振器番号kが上限値であるときには、本ルーチンを終了する。
【0049】
To(k,1,0,0)=Tave(k,1,0,0)−Tb(k) (2)
To(k,0,1,0)=Tave(k,0,1,0)−Tb(k) (3)
To(k,0,0,1)=Tave(k,0,0,1)−Tb(k) (4)
【0050】
このように平均値記憶ルーチンを実行することで、平均値テーブル46が作成されて記憶部45に記憶される。
図5は、平均値テーブル46の一例を示す説明図である。この図に示すように、平均値テーブル46では、発振器番号kの値1〜5について、それぞれ基準値Tb(k),オフセット値To(k、1,0,0),To(k、0,1,0),To(k、0,0,1)の値が対応付けられている。ここで、上述したように基準値Tb(k)は、発振器番号kに対応する発振器53を基準信号経路で発振させたときの発振周期T(k,0,0,0)を複数のICカード20について測定して平均した値である。そして、同じ信号経路且つ同じ発振器53であれば、発振器53の配置や配線に起因する発振周波数の変化分はどのICカード20でも同程度であるのに対し、製造ばらつきに起因する発振周波数の変化分はICカード20毎に異なる。そのため、発振周期T(k,0,0,0)の平均値である基準値Tb(k)は、製造ばらつきに起因する発振周波数の変化分は互いに打ち消しあい、発振器53の配置や配線に起因する発振周波数の変化分の影響が残った値となる。このように、発振周期の平均をとった値である平均周期Tave(k,p,q,r)は、発振周波数の定格値と発振器53の配置や配線に起因する発振周波数の変化分とで定まる値となる。また、オフセット値To(k,1,0,0)は平均周期Tave(k,1,0,0)と基準値Tb(k)との差であり、両者は信号経路が信号経路W(1,0,0)であるか信号経路W(0,0,0)であるかが異なるから、この違いに起因する発振周波数の差に相当する値がオフセット値To(k,1,0,0)となる。具体的には、発振器53の1段目のインバーター60として第2インバーター61bを選択したときと第1インバーター61aを選択したときとで信号の経路となる配線が異なり、この配線の長さ等で定まる遅延時間の違いに相当する値がオフセット値To(k,1,0,0)となる。例えば、第3経路セレクター66cの出力から第1インバーター61aの入力までの配線と比べて第3経路セレクター66cの出力から第2インバーター61bの入力までの配線が長いほど、平均周期Tave(k,1,0,0)は基準値Tb(k)よりも大きい値となりオフセット値To(k,1,0,0)も大きい値となる。同様に、信号経路が信号経路W(0,1,0)であるか信号経路W(0,0,0)であるかの違いに起因する発振周波数の差に相当する値がオフセット値To(k,0,1,0)となり、信号経路が信号経路W(0,0,1)であるか信号経路W(0,0,0)であるかの違いに起因する発振周波数の差に相当する値がオフセット値To(k,0,0,1)となる。
【0051】
続いて、サーバー40が事前に固有値テーブル47を記憶しておく処理について説明する。
図6は、固有値記憶ルーチンの一例を示すフローチャートである。このルーチンは、情報セキュリティシステム10を構成するICカード20を製造した後、ユーザーにICカード20を配布する前に実行される。また、このルーチンは、ユーザーに配布するICカード20のICチップ21とサーバー40とを接続して、サーバー40の制御部41がネットワーク11を介さず直接に複数のICカード20と情報をやりとりできる状態にした上で、制御部41により実行される。なお、サーバー40がネットワーク11に接続される前に固有値記憶ルーチンを実行してもよい。また、固有値記憶ルーチンを実行する前には平均値テーブル記憶ルーチンを実行しておき、平均値テーブル46を作成しておく。
【0052】
この固有値記憶ルーチンが実行されると、制御部41は、まず、サーバー40に接続されたICカード20のうち1つを処理対象のICカードに設定し(ステップS300)、処理対象のICカード20のIDを取得する(ステップS305)。具体的には、制御部41が、処理対象のICカード20の記憶部24に記憶されたIDを送信するよう制御部22を制御し、制御部22から送信されたIDを取得する。続いて、処理対象のチャレンジCHの設定、すなわち主発振器選択信号k1,主経路選択信号p1,q1,r1、副発振器選択信号k2,副経路選択信号p2,q2,r2の設定を行う(ステップS310)。ここで、本実施形態では、主発振器選択信号k1と副発振器選択信号k2との組み合わせは20通り存在し、1つの主発振器選択信号k1と副発振器選択信号k2との組み合わせについて主経路選択信号p1,q1,r1の組み合わせが8通り、副経路選択信号p2,q2,r2の組み合わせが8通り存在するため、20×8×8=1280通りのチャレンジCHが存在する。ステップS310では、この1280通りのチャレンジCHのうち未処理のもの1つを処理対象のチャレンジCHに設定する。
【0053】
続いて、制御部41は、処理対象のチャレンジCHに対応する実測カウント値CをICカード20から取得する(ステップS315)。この処理は具体的には以下のように行う。まず、処理対象のチャレンジCHを処理対象のICカード20の制御部22に送信して、チャレンジCHに対応する実測カウント値Cをサーバー40に送信するよう取得部42が制御部22に指令する。これを受けて、制御部22は、送信されたチャレンジCHに含まれる主発振器選択信号k1を主発振器セレクター55aに設定し、副発振器選択信号k2を副発振器セレクター55bに設定し、主経路選択信号p1,q1,r1、副経路選択信号p2,q2,r2、をそれぞれ主発振器及び副発振器の経路セレクター66に設定する。そして、出力決定部58からチャレンジCHに対応する実測カウント値Cが出力されると、制御部22はこれを取得部42に送信し、取得部42が実測カウント値Cを取得する。
【0054】
次に、制御部41の補正部43は、処理対象のチャレンジCHの主発振器選択信号k1,主経路選択信号p1,q1,r1に対応する平均周期Tave(k1,p1,q1,r1)を導出する主平均周期導出処理を行う(ステップS320)。なお、平均周期Tave(k1,p1,q1,r1)は主平均周期T1aveとも称する。ここで、固有値記憶ルーチンの説明を中断して、主平均周期導出処理について説明する。
図7は、主平均周期導出処理の一例を示すフローチャートである。
【0055】
この主平均周期導出処理では、補正部43は、まず、主信号経路W(p1,q1,r1)が基準信号経路であるか否かを判定する(ステップS400)。本実施形態では、基準信号経路は信号経路W(0,0,0)であるため、主経路選択信号p1,q1,r1がいずれも値0であるか否かを判定することになる。そして、主信号経路W(p1,q1,r1)が基準信号経路であるときには、平均値テーブル46に記憶された基準値Tb(k1)の値を主平均周期T1aveとして導出して(ステップS410)、主平均周期導出処理を終了する。平均値記憶ルーチンで説明したように基準値Tb(k1)は平均周期Tave(k1,0,0,0)であるため、主信号経路W(p1,q1,r1)が基準信号経路であるときには基準値Tb(k1)をそのままT1aveとするのである。
【0056】
一方、ステップS400で主信号経路W(p1,q1,r1)が基準信号経路でないと判定したときには、補正部43は、主信号経路W(p1,q1,r1)がオフセット信号経路であるか否かを判定する(ステップS420)。本実施形態では、オフセット信号経路は信号経路W(1,0,0),W(0,1,0),W(0,0,1)であるため、主経路選択信号p1,q1,r1が値(1,0,0)、値(0,1,0)、値(0,0,1)のいずれかであるか否かを判定することになる。そして、主信号経路W(p1,q1,r1)がオフセット信号経路であるときには、平均値テーブル46に記憶された基準値Tb(k1)とオフセット値To(k1,p1,q1,r1)との和を主平均周期T1aveとして導出して(ステップS430)、主平均周期導出処理を終了する。平均値記憶ルーチンで説明したようにオフセット値To(k1,1,0,0),To(k1,0,1,0),To(k1,0,0,1)は、それぞれ平均周期Tave(k1,1,0,0),Tave(k1,0,1,0),Tave(k1,0,0,1)と基準値Tb(k1)との差であるため、主信号経路W(p1,q1,r1)がオフセット信号経路であるときにはこのようにして主平均周期T1aveを導出するのである。
【0057】
また、ステップS420で主信号経路W(p1,q1,r1)がオフセット信号経路でないときには、補正部43は、主経路選択信号p1が値0であるか否かを判定し(ステップS440)、主経路選択信号p1が値0でないときには平均値テーブル46に記憶されたオフセット値To(k1,p1,0,0)を読み出す(ステップS445)。続いて、主経路選択信号p1が値0であるとき又はオフセット値To(k1,p1,0,0)を読み出した後に、主経路選択信号q1が値0であるか否かを判定し(ステップS450)、主経路選択信号q1が値0でないときには平均値テーブル46に記憶されたオフセット値To(k1,0,q1,0)を読み出す(ステップS455)。次に、主経路選択信号q1が値0であるとき又はオフセット値To(k1,0,q1,0)を読み出した後に、主経路選択信号r1が値0であるか否かを判定し(ステップS460)、主経路選択信号r1が値0でないときには平均値テーブル46に記憶されたオフセット値To(k1,0,0,r1)を読み出す(ステップS465)。そして、主経路選択信号r1が値0であるとき又はオフセット値To(k1,0,0,r1)を読み出した後に、オフセット値To(k1,p1,0,0),To(k1,0,q1,0),To(k1,0,0,r1)のうちステップS445,S455,S465により読み出されたオフセット値と基準値Tb(k1)との和を主平均周期T1aveとして導出して(ステップS470)、主平均周期導出処理を終了する。このように、主信号経路W(p1,q1,r1)が基準信号経路でもオフセット信号経路でもないときには、主経路選択信号p1,q1,r1のうち基準信号経路と異なる値のものすなわち値0でないものを判定し、値0でない主経路選択信号に対応するオフセット値を平均値テーブル46から読み出して、読み出したオフセット値と基準値Tb(k1)との和を主平均周期T1aveとして導出するのである。
【0058】
ここで、このようにして主平均周期T1aveを導出する理由について説明する。例えば平均周期Tave(k1,1,1,0)と平均周期Tave(k1,0,0,0)とを比較すると、両者は発振器53の1段目のインバーター60が第2インバーター61bであるか第1インバーター61aであるかの違いと、2段目のインバーター60が第4インバーター62bであるか第3インバーター62aであるかの違いがある。そこで、1段目のインバーター60が第2インバーター61bであるか第1インバーター61aであるかの違いによる発振周波数の差に相当する値であるオフセット値To(k1,1,0,0)と、2段目のインバーター60が第4インバーター62bであるか第3インバーター62aであるかの違いによる発振周波数の差に相当する値であるオフセット値To(k1,0,1,0)とを基準値Tb(k1)とを合計することで、平均周期Tave(k1,1,1,0)に近似した値が得られると考えられる。このように主信号経路W(p1,q1,r1)が基準信号経路でもオフセット信号経路でもないときに、オフセット値Toと基準値Tb(k1)とを用いて平均周期Tave(k1,p1,q1,r1)を導出することで、予め全ての信号経路p,q,rについて実測周期T(k,p,q,r)の測定及び平均周期Tave(k,p,q,r)の導出を行って平均値テーブル46に記憶しておく場合と比べて、平均値テーブル46の作成に要する時間を短くするとともに平均値テーブル46のデータ量を小さくしているのである。平均値記憶ルーチンにおいて基準信号経路でなく且つオフセット信号経路でもない信号経路W(p,q,r)については実測周期の測定を行わないものとしたのはこのような理由による。
【0059】
図6の固有値記憶ルーチンに戻る。ステップS320で主平均周期T1aveを導出すると、制御部41の補正部43は、処理対象のチャレンジCHの副発振器選択信号k2,副経路選択信号p2,q2,r2に対応する平均周期Tave(k2,p2,q2,r2)(副平均周期T2aveとも称する)を導出する副平均周期導出処理を行う(ステップS325)。この処理は、
図7で説明した主平均周期導出処理と同様にして行う。すなわち、副信号経路W(p2,q2,r2)が基準信号経路であるときには、基準値Tb(k2)の値を副平均周期T2aveとして導出し、副信号経路W(p2,q2,r2)がオフセット信号経路であるときには、基準値Tb(k2)の値とオフセット値To(k2,p2,q2,r2)との和を副平均周期T2aveとして導出する。また、副信号経路W(p2,q2,r2)が基準信号経路でもオフセット信号経路でもないときには、副経路選択信号p2,q2,r2のうち基準信号経路と異なる値のものすなわち値0でないものを判定し、値0でない副経路選択信号に対応するオフセット値を平均値テーブル46から読み出して、読み出したオフセット値と基準値Tb(k1)との和を副平均周期T1aveとして導出する。
【0060】
続いて、制御部41の補正部43は、ステップS315で取得した実測カウント値Cを補正するための補正値Caveを以下の式(5)により導出する(ステップS330)。ここで、式(5)におけるT2ave/T1aveは、式(1)におけるf1/f2の平均値に相当する。すなわち、補正値Caveは、複数のICカード20について同じチャレンジCHに対応する実測カウント値Cを取得してこれを平均した値に相当するものである。そして、補正値Caveを導出すると、制御部41の補正部43は、補正値Caveを用いてステップS315で取得した実測カウント値Cを補正した補正後カウント値Ccを式(6)により導出する(ステップS335)。式(6)からわかるように、補正後カウント値Ccは、実測カウント値Cと補正値Caveとの差である。ここで、補正値Caveは、実測カウント値Cの平均に相当する値であり、実測周期T(k、p、q、r)に対する平均周期Tave(k,p,q,r)と同様に、実測カウント値Cから発振器53の製造ばらつきに起因する発振周波数の変化分は互いに打ち消しあって除かれ、発振器53の配置や配線に起因する発振周波数の変化分の影響が残った値となる。そのため、実測カウント値Cとこの補正値Caveとの差である補正後カウント値Ccは、実測カウント値Cから発振器53の配置や配線に起因する発振周波数の変化分が除去され、発振器53の製造ばらつきに起因する発振周波数の変化分を表す値となる。より具体的には、補正後カウント値Ccは、処理対象のICカード20における発振器53のうち処理対象のチャレンジCHで定まる主発振器の主信号経路と副発振器の副信号経路とに関する部分の製造ばらつきに起因する発振周波数の変化分により定まる値となる。そして、この製造ばらつきはICカード20に固有のものであるため、補正後カウント値CcはICカード20の固有の値となり、この値を用いてICカード20が正規のものであるか否かの判定を行うことができる。
【0061】
Cave=T2ave/T1ave×Cp (5)
Cc=C−Cave (6)
【0062】
次に、制御部41は、補正後カウント値Ccが値0以上であるか否かを判定する(ステップS340)。そして、補正後カウント値Ccが値0以上であるときには、固有値Iを値1として、この固有値IとステップS305で取得したID及びステップS310で設定したチャレンジCHとを対応付けて固有値テーブルとして記憶する(ステップS345)。一方、補正後カウント値Ccが値0以上でないときには、固有値Iを値0として、この固有値IとステップS305で取得したID及びステップS310で設定したチャレンジCHとを対応付けて固有値テーブル47として記憶する(ステップS350)。この固有値Iは処理対象のICカード20におけるチャレンジCHに対応する固有の値であるため、後でICカード20が正規のものであるか否かを判定する場合において、ここで記憶した固有値Iと同じ値が判定対象のICカード20から導出されるかどうかによってその判定を行うことができる。
【0063】
ここで、補正後カウント値Cc自体ではなく、補正後カウント値Ccが値0以上であるか否かに応じた値を固有値Iとして記憶する理由について説明する。同じICカード20について同じチャレンジCHに対応する実測カウント値CをPUF回路50から取得する場合、理想的には実測カウント値Cは常に同じ値となるが、実際は誤差やノイズ等の影響によりわずかに異なる値が実測カウント値Cとして取得される場合がある。そのため、固有値記憶ルーチンで予め求めておいた補正後カウント値Ccと同じ値が得られるかどうかによりICカード20が正規のものであるか否かを判定すると、正規のカードであっても誤差やノイズの大きさによっては同じ値が得られず正しい判定ができない場合がある。そこで、補正後カウント値Ccが値0以上か否かを表す値を固有値Iとして、換言すると補正後カウント値Ccを2値化したものを固有値Iとして、誤差があったとしても予め記憶しておいた固有値Iと同じ値が得られるようにしているのである。本実施形態で補正後カウント値Ccが値0以上であるか否かに応じた値を固有値Iとして記憶するのはこのような理由による。ここで、補正後カウント値Ccの絶対値が誤差やノイズ分と比較して同等以下に小さい場合には、2値化してもなお誤差やノイズにより固有値Iが同じ値とならないなど、2値化した固有値Iの安定性が低下する場合がある。このようなケースへの対処方法として、例えばステップS335で導出した補正後カウント値Ccの絶対値が所定の閾値以下であるときには処理対象のチャレンジCHは不安定な固有値Iを出力してしまうため認証用途に適さないとみなして、ステップS345又はS350での固有値テーブルへの記憶を行わないこととしてもよい。こうすることで,認証時に不安定な固有値Iを生成するチャレンジCHを用いることを防止して、認証の安定性を高めることができる。なお、補正後カウント値Ccを2値化したものを固有値Iとすると、予め記憶された固有値Iと同じ値が正規のカードでないICカード20から得られた値と偶然一致する可能性が高まるという問題があるが、複数のチャレンジCHを設定して複数個の固有値Iが全て一致するか否かによりICカード20が正規のカードであるか否かを判定することでこの問題は解決できる。
【0064】
そして、ステップS345又はステップS350で固有値Iを記憶すると、未処理のチャレンジCHがあるか否かを判定する(ステップS355)。そして、未処理のチャレンジCHがあるときにはステップS310以降の処理を行う。一方、未処理のチャレンジCHがないときには、接続された複数のICカード20のうち未処理のICカード20があるか否かを判定する(ステップS269)。そして、未処理のICカード20があるときには、ステップS300以降の処理を行う。未処理のICカード20がないときには、本ルーチンを終了する。この固有値記憶ルーチンを実行することで、サーバー40に接続された全てのICカード20についての固有値Iのテーブルである固有値テーブル47が作成されて、記憶部45に記憶される。
図8は、固有値テーブル47の一例を示す説明図である。この図に示すように、固有値テーブル47では、ICカード20のID及びチャレンジCHと固有値Iとを対応付けられている。なお、上述したように本実施形態ではチャレンジCHは1280通りの組合せが存在するため、ICカード20の1つのIDについて1280個の固有値Iが存在する。
【0065】
次に、情報セキュリティシステム10の動作、特に、カードリーダー30のカードスロット36に挿入されたICカード20が正規のカードであるか否かの判定をサーバー40が行う際の動作について説明する。
図9は、ICカード認証処理の様子を示すシーケンスである。この処理は、カードリーダー30が、カードスロット36にICカード20が挿入されたことを検出したときに開始される。
【0066】
このICカード認証処理が開始されると、まず、カードリーダー30の制御部32がカードスロット36に挿入されたICカード20に対してIDの送信要求を送信する(ステップS500)。続いて、この送信要求を受信したICカード20の制御部22は記憶部24から自身のIDを読み出し、これをカードリーダー30に送信する(ステップS505)。そして、制御部32は、ICカード20から受信したIDをサーバー40に送信する(ステップS510)。
【0067】
IDを受信すると、サーバー40の制御部41は、今回のICカード20が正規のカードであるか否かの判定に用いるチャレンジCHを決定する(ステップS515)。本実施形態では、制御部41は、1280通りのチャレンジCHのうち128個のチャレンジCHをランダムに選出して判定に用いるチャレンジCHとして決定するものとした。続いて、制御部41は、受信したID及び決定したチャレンジCHに対応する固有値Iを固有値テーブル47から読み出す(ステップS520)。決定したチャレンジCHは128個であるため、固有値Iも128個が固有値テーブル47から読み出される。
【0068】
続いて、制御部41は、決定したチャレンジCHに対応する補正値Caveを導出する(ステップS525)。この補正値Caveは、上述した
図6の固有値記憶ルーチンのステップS330で説明した補正値Caveと同じものである。そのため、128個のチャレンジCHに対応する各補正値Caveは、上述した固有値記憶ルーチンのステップS320〜S330の処理と同様の処理により導出する。
【0069】
そして、制御部41は、ステップS515で決定したチャレンジCHと、ステップS520で読み出した固有値Iと、ステップS525で導出した補正値Caveとを対応付けて記憶部45に記憶し(ステップS530)、決定した128個のチャレンジCHをカードリーダー30に送信する(ステップS535)。カードリーダー30の制御部32は、サーバー40から送信されたチャレンジCHをICカード20に送信する(ステップS540)。
【0070】
カードリーダー30からチャレンジCHが送信されると、ICカード20の制御部22は、送信された128個のチャレンジCHに対応する実測カウント値Cを取得する(ステップS545)。具体的には、まず、制御部22が、送信されたチャレンジCHに含まれる主発振器選択信号k1を主発振器セレクター55aに設定し、副発振器選択信号k2を副発振器セレクター55bに設定し、主経路選択信号p1,q1,r1、副経路選択信号p2,q2,r2をそれぞれ主発振器及び副発振器の経路セレクター66に設定する。そして、制御部22は、出力決定部58からチャレンジCHに対応する実測カウント値Cを取得する。この処理を、128個のチャレンジCHについてそれぞれ行って、128個の実測カウント値Cを取得する。
【0071】
実測カウント値Cを取得すると、制御部22は、チャレンジCHと実測カウント値Cとを対応付けてカードリーダー30に送信する(ステップS550)。カードリーダー30の制御部32は、ICカード20から送信されたチャレンジCHをサーバー40に送信する(ステップS555)。
【0072】
カードリーダー30からチャレンジCHと実測カウント値Cとが送信されると、サーバー40の制御部41は、送信されたチャレンジCHと実測カウント値Cとを対応付けて記憶部45に記憶する(ステップS560)。この処理と上述したステップS530とにより、記憶部45にはチャレンジCH,固有値I,補正値Cave,実測カウント値Cが対応付けられたテーブル(以下、判定用テーブルと称する)が記憶される。
【0073】
続いて、制御部41は、この判定用テーブルを用いてカードスロット36に接続されたICカード20が正規のものであるか否かを判定する判定処理を行う(ステップS565)。ここで、ICカード認証処理の説明を中断して、判定処理について説明する。
図10は、判定処理の一例を示すフローチャートである。
【0074】
この判定処理が開始されると、制御部41は、まず、記憶部45の判定用テーブルに含まれる128個のチャレンジCHのうち未処理のもの1つを処理対象のチャレンジCHに設定する(ステップS600)。続いて、制御部41の判定部44は、処理対象のチャレンジCHに対応する固有値I,補正値Cave,実測カウント値Cを判定用テーブルから読み出す(ステップS605)。そして、制御部41の補正部43は、読み出した補正値Caveと実測カウント値Cとから、補正後カウント値Ccを導出する(ステップS610)。なお、補正後カウント値Ccは、上述した
図6のステップS335と同様に式(6)により導出する。そして、補正部43は、補正後カウント値Ccが値0以上であるか否かを判定して(ステップS615)、補正後カウント値Ccが値0以上であるときには、レスポンス値Reを値1に設定し(ステップS620)、補正後カウント値Ccが値0以上でないときには、レスポンス値Reを値0に設定する(ステップS625)。
【0075】
続いて、制御部41の判定部44は、レスポンス値ReがステップS605で読み出した固有値Iと一致するか否かを判定する(ステップS630)。レスポンス値Reが固有値Iと一致するときには、判定部44は、未処理のチャレンジCHがあるか否かを判定し(ステップS635)、未処理のチャレンジCHがある場合にはステップS600に進む。そして、ステップS635で未処理のチャレンジCHがないときには、判定部44は、カードスロット36に挿入されたICカード20は正規のカードであると判定し(ステップS640)、本処理を終了する。一方、ステップS630でレスポンス値Reが固有値Iと一致しないときには、判定部44は、カードスロット36に挿入されたICカード20は正規のカードでないと判定して(ステップS645)、本処理を終了する。
【0076】
図9のICカード認証処理の説明に戻る。ステップS565の判定処理を行うと、制御部41は、判定結果に応じた処理を行って(ステップS570)、本処理を終了する。例えば、判定処理でICカード20が正規のカードであったときには、制御部41は、ICカード20を挿入したユーザーが希望するATMサービス(現金の払い戻しなど)をカードリーダー30の図示しない操作部を介して入力するよう促す所定の表示画面をカードリーダー30の図示しない表示部に表示するよう、カードリーダー30に指令を送信する。そして、カードリーダー30が表示画面を表示し、その後のユーザーの操作に従ってATMサービスをユーザーに提供する処理を行う。また、例えば、判定処理でICカード20が正規のカードでなかったときには、制御部41は、カードスロット36に挿入されたICカード20が使用不能である旨をカードリーダー30の表示部に表示するよう、カードリーダー30に指令を送信する。
【0077】
このように、ICカード認証処理では、サーバー40が128個のチャレンジCHに対応する実測カウント値CをICカード20から取得し、実測カウント値Cを補正した補正後カウント値Ccの値から導出したレスポンス値Reが固有値テーブル47に記憶された固有値Iと全て一致するか否かによって、ICカード20が正規のカードであるか否かの判定を行うのである。上述したように補正後カウント値Ccは、実測カウント値Cから発振器53の配置や配線に起因する発振周波数の変化分が除去され、ICカード20における発振器53のうち処理対象のチャレンジCHで定まる主発振器の主信号経路と副発振器の副信号経路とに関する部分の製造ばらつきに起因する発振周波数の変化分により定まる値となる。そして、この製造ばらつきはICカード20を複製したとしても再現できないため、予め
図6の固有値記憶ルーチンを行って固有値テーブル47を作成したときに用いたICカード20自身からのレスポンス値Reのみが固有値Iと全て一致する。しかも、補正後カウント値Ccは、実測カウント値Cから発振器53の配置や配線に起因する発振周波数の変化分が除去された値であるから、実測カウント値Cと比べてICカード20のユニーク性をより高めた値となっている。例えば実測カウント値Cそのものを予め固有値テーブル47の固有値Iとして記憶しておき、レスポンス値Reも実測カウント値Cそののもを用いるとすると、発振器53の配置や配線に起因して、チャレンジCHと固有値I,レスポンス値Reとの対応関係に偏りが生じることのより製造時のばらつきが再現できていない偽造品であっても固有値Iとレスポンス値Reとが一致する可能性が高まる場合がある。本実施形態では、実測カウント値Cを補正した補正後カウント値Ccを用いることで、このようなことを防止してICカード20のユニーク性を高めることができる。
【0078】
ここで、第1実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。第1実施形態のサーバー40が本発明のホストに相当し、ICカード20がデバイスに相当し、発振回路52が発振回路に相当し、選択回路54が選択手段に相当し、取得部42が取得手段に相当し、補正部43が補正手段に相当し、固有値テーブル47が固有値記憶手段に相当し、判定部44が判定手段に相当する。なお、本実施形態では、サーバー40の動作を説明することにより本発明のホストの制御方法の一例も明らかにしている。
【0079】
以上詳述した第1実施形態の情報セキュリティシステム10によれば、製造ばらつきに起因する固有の発振周波数をもつ複数の発振器53を有する発振回路52をICカード20が有している。そして、まず、この複数の発振器53のうち少なくとも1つの発振器53を選択し、選択された発振器53を発振させ、その発振周波数に基づく実測カウント値Cを取得する。続いて、取得された実測カウント値Cを、複数のICカード20における選択された発振器と同じ配置及び配線の発振器53を発振させたときの周波数の平均に基づく値である補正値Caveに基づいて補正した補正後カウント値Cc及びレスポンス値Reを導出する。このように、実測カウント値Cを補正値Caveで補正することで、実測カウント値Cから発振器53の配置や配線に起因する発振周波数の変化分を除去することができ、ICカード20のユニーク性をより高めた補正後カウント値Cc及びレスポンス値Reを導出することができる。
【0080】
また、発振器53は、リング状に奇数段のインバーター60が直列接続されたリングオシレーターとしている。リングオシレーターは、IC内部の論理素子や配線のみを用いて構成可能であり、デバイス(ICカード20)の製造ばらつきが論理素子の遅延に影響することでデバイス間の差異がその発振周波数特性に表れやすいため、本発明に適用する意義が高い。
【0081】
さらに、発振器53は、1つの発振器53の各段において並列に接続されたいずれのインバーター60を選択するかにより、複数の選択経路W(p,q,r)が選択可能である。そして、取得部42は、選択された発振器53を選択された信号経路W(p,q,r)で発振させ、発振の周波数に基づく実測カウント値Cを取得し、補正部43は、取得された実測カウント値Cを、補正値Caveに基づいて補正した補正後カウント値Ccを導出する。こうすれば、1つの発振器53の各段において並列に接続されたいずれのインバーター60を選択するかにより、発振器53の固有の発振周波数が異なる値となるため、擬似的に発振器53の数を増やすことができる。なお、いずれの発振器53が選択されるかによって補正後カウント値Ccやレスポンス値Reは異なる値となるため、発振器53の数が多いほど補正後カウント値Ccやレスポンス値Reが第三者に予測されにくくなり、セキュリティを向上させることができる。
【0082】
さらにまた、補正部43は、選択された発振器53の選択された信号経路が基準信号経路でなく且つ基準信号経路と比べて1つの反転回路のみが異なる信号経路であるオフセット信号経路でないときには、複数のICカード20について選択された発振器と同じ配置及び配線の発振器53を基準信号経路で発振させたときの平均周期Tである基準値Tbと、複数のICカード20について選択された発振器と同じ配置及び配線の発振器53をオフセット信号経路で発振させたときの平均周期Tと基準値Tbとの差であるオフセット値Toと、を用いて、選択された信号経路のうち基準信号経路と異なる反転回路に対応するオフセット値Toと基準値Tbとの和を選択された信号経路に対応する平均周期Tとして導出し、導出された平均周期Tに基づいて実測カウント値Cを補正した補正後カウント値Ccを導出する。このため、基準信号経路でなく且つオフセット信号経路でもない信号経路の平均周波数関連値を、基準値Tbとオフセット値Toとの和をとるという簡易な処理で導出できる。
【0083】
そしてまた、選択回路54は、複数の発振器53のうち2つの発振器を選択し、取得部42は、選択された2つの発振器53を発振させ、2つの発振器の周波数の差に基づく値である実測カウント値Cを取得する手段であり、補正部43は、取得された実測カウント値Cを、複数のICカード20についての選択された2つの発振器53と同じ配置及び配線の発振器53を発振させたときの2つの発振器の周波数の平均的な差に基づく値である補正値Caveに基づいて補正することで、補正後カウント値Ccを導出する。このため、1つの発振器53のみを選択する場合と比較して、発振器53の選択のパターン数すなわちチャレンジCHの総数が増す。
【0084】
そしてまた、ICカード20の有する発振器53と発振器53の固有の発振周波数に基づく固有値Iとを対応付けて記憶する固有値テーブル47と、固有値テーブル47から選択された発振器53に対応する固有値Iを読み出し、読み出した固有値Iが導出されたレスポンス値Reと一致するか否かにより該デバイスが正規のものであるか否かを判定する判定部44と、をサーバー40が備えている。このため、ユニーク性をより高めた補正後カウント値Cc及びレスポンス値Reを用いてICカード20が正規のものであるか否かを判定するため、例えば実測カウント値Cをそのまま用いてICカード20が正規のものであるか否かを判定する場合と比べて判定の精度が高まり、セキュリティが向上する。
【0085】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【0086】
上述した第1実施形態では、サーバー40の制御部41が補正部43を有するものとしたが、ICカード20の制御部22が補正部を有するものとしてもよい。この場合、サーバー40からチャレンジCHと併せて補正値CaveをICカード20に送信して、ICカード20が実測カウント値Cを補正値Caveで補正して補正後カウント値Ccやレスポンス値Reを導出し、導出した値をサーバー40に送信するものとすればよい。
【0087】
[第2実施形態]
図11は、第2実施形態である情報セキュリティシステム110の構成の概略を示す構成図である。なお、第2実施形態の構成要素のうち第1実施形態と同様の構成については、第1実施形態と同じ符号を付してその説明を省略する。
【0088】
図11に示すように、情報セキュリティシステム110は、ユーザーPC130と、ユーザーPC130に接続されたFPGA(Field Programmable Gate Array)120と、サーバー140とを備えている。この情報セキュリティシステム110は、FPGA120の再構成可能回路126に回路を構成するための回路データを暗号化した暗号データをサーバー140が提供し、正規のFPGA120のみがこの暗号データを復号して利用できるようにした装置である。
【0089】
FPGA120は、ユーザーPC130の拡張カードとしての機能を有し、サーバー140から提供された回路データに基づいて事後的に回路の構成や再構成が可能な集積回路である。このFPGA120は、全体の制御を司る制御部121と、事後的に回路の構成及び再構成が可能な再構成可能回路126と、FPGA120の電源がオンされたときに所定の処理を行う起動処理部128と、PUF回路50とを備えている。制御部121は、CPU,ROM,RAMなどを備えたマイクロプロセッサーとして構成され、取得部122と、補正部123と、復号部124とを備えている。この制御部121は、PUF回路50から取得した実測カウント値Cに基づいて得られる補正後カウント値Ccに基づきサーバー140から提供された暗号データを復号し、復号して得られた回路データを用いて再構成可能回路126に回路を構成する機能を有する。取得部122は、PUF回路50の主発振器及び副発振器を発振させ、その発振周波数の差に基づく値である実測カウント値Cを取得する機能を有する。補正部123は、取得部122により取得された実測カウント値Cを、複数のICカード20についての実測カウント値Cを取得した主発振器及び副発振器と同じ配置及び配線の発振器53を発振させたときの2つの発振器53の周波数の平均的な差に基づく値に基づいて補正することで、補正後カウント値Ccを導出する機能を有する。復号部124は、補正部123に導出された補正後カウント値Ccに基づいてサーバー140から出力された暗号データを復号する機能を有する。再構成可能回路126は、スイッチの切り替えにより機能を変更可能な論理回路ブロックと、スイッチの切り替えにより接続を変更可能な配線とを多数備えた回路として構成されている。この再構成可能回路126は、FPGA120の電源がオフの状態では回路が構成されていない状態であり、電源がオンされた状態で各スイッチを切り替えることにより回路の構成や変更がなされる。各スイッチの切り替えは、制御部121が回路データに基づいて出力するスイッチの切り替え信号に基づいて行われる。起動処理部128は、CPU,ROM,RAMなどを備えたマイクロプロセッサーとして構成されており、ROMには制御部121及びPUF回路50を構成するためのデータやFPGA120のIDが記憶されている。ここで、FPGA120の制御部121及びPUF回路50は、再構成可能回路126と同様にスイッチの切り替えにより構成された回路であり、電源がオフの状態では構成されていない。起動処理部128は、FPGA120の電源がオンされる毎にROMに記憶されたデータに基づいてスイッチの切り替え信号を出力し、FPGA120内に制御部121及びPUF回路50を構成する機能を有する。なお、
図11ではFPGA120の電源がオンされ起動処理部128により制御部121及びPUF回路50が構成された状態を示している。ここで、PUF回路50はFPGA120の電源がオンされる毎に構成されるが、同じFPGA120について起動処理部128が同じデータに基づいてPUF回路50を構成する場合には、常に同じPUF回路50が構成される。そのため、PUF回路50の発振器53の製造ばらつきに起因する発振周波数の変化分や、発振器53の配置や配線に起因する発振周波数の変化分も変わることはなく、同じチャレンジCHに対して出力される実測カウント値CがPUF回路50の構成の都度変わることはない。
【0090】
ユーザーPC130は、ネットワーク11を介してサーバー40と接続された周知の汎用パソコンであり、コントローラー132と、HDD134と、拡張スロット136と、バス137と、表示装置138と、入力装置139とを備えている。コントローラー132は、CPU,ROM,RAMなどを備えたプロセッサーとして構成されている。HDD134は、各種アプリケーションプログラムや各種データファイルを記憶する大容量メモリである。拡張スロット136は、FPGA120などの拡張カードが接続可能であり、接続されたFPGA120とユーザーPC130との間のインターフェースとしての機能を有する。バス137は、例えばPCI(Peripheral Component Interconnect)バスとして構成され、コントローラー132,HDD134,拡張スロット136,表示装置138,及び入力装置139を接続している。表示装置138は、例えば液晶ディスプレイとして構成されており、制御部20から出力された表示データに基づく画像を表示して各種情報をユーザーに表示する機能を有している。入力装置139は、例えばキーボードやマウス等の入力装置として構成されており、ユーザーから入力された操作に基づく操作信号を制御部20に出力する機能を有している。
【0091】
サーバー140は、ユーザーの求めに応じて再構成可能回路126に構成する回路の回路データをFPGA120に提供するものであり、サーバー140全体の制御を司る制御部141と、各種データを記憶する記憶部145とを備えている。制御部141は、取得部142と、補正部143と、暗号データ出力部148とを備えており、記憶部145は、平均値テーブル146と、固有値テーブル147とを備えている。取得部142は、実測カウント値Cを取得する対象がICカード20ではなくFPGA120である点以外は、取得部42と同様の機能を有する。補正部143は、補正後カウント値Ccを導出する対象がICカード20ではなくFPGA120である点以外は、補正部43と同様の機能を有する。暗号データ出力部148は、FPGA120における選択された発振器53の固有の発振周波数に基づく固有値Iに基づいて回路データを暗号化した暗号データをFPGA120に出力する機能を有する。平均値テーブル146は、補正部143が実測カウント値Cを補正するために用いる値を各発振器53と対応付けて記憶しているテーブルであり、ICカード20ではなくFPGA120のPUF回路50についての値を記憶している点以外は平均値テーブル46と同様の構成を有する。固有値テーブル147は、FPGA120のPUF回路50についての固有値Iを記憶している点以外は、固有値テーブル47と同様の構成を有する。また、記憶部145には、FPGA120にの再構成可能回路126に構成可能な複数の回路データと、回路データを識別するための回路識別情報とが対応付けて記憶されている。
【0092】
次に、こうして構成された情報セキュリティシステム110の動作、特に、記憶部145に記憶された回路データを暗号化した暗号データをサーバー140がFPGA120に提供し、FPGA120がその復号を行って回路データを取得する際の動作について説明する。
図12は、回路データ提供処理の様子を示すシーケンスである。この処理は、FPGA120の電源がオフからオンに変わったときに開始される。なお、
図12の処理のうち、
図9と同様の処理については同じステップ番号を付して、詳細な説明を省略する。
【0093】
ここで、サーバー140は、予め
図4の平均値記憶ルーチン及び
図6の固有値記憶ルーチンと同様の処理を実行済みであり、平均値テーブル146及び固有値テーブル147を作成して記憶部145に記憶しているものとした。より具体的には、まず、複数のFPGA120を用意し、用意したFPGA120とサーバー140とを接続して、サーバー140の制御部141がネットワーク11を介さず直接に複数のFPGA120と情報をやりとりできる状態にした上で、
図4の平均値記憶ルーチンと同様の処理を制御部141により実行しておく。これにより、サーバー140に接続された全てのFPGA120についてFPGA120のID及びチャレンジCHと固有値Iとを対応付けた固有値テーブル147が作成されて記憶部145に記憶される。また、ユーザーが入手する前のFPGA120とサーバー40とを接続して、サーバー40の制御部141がネットワーク11を介さず直接に複数のFPGA120と情報をやりとりできる状態にした上で、
図6の固有値記憶ルーチンと同様の処理を制御部141により実行しておく。これにより、サーバー40に接続された全てのFPGA120についてFPGA120のID及びチャレンジCHと固有値Iとを対応付けた固有値テーブル147が作成されて記憶部145に記憶される。
【0094】
図12の回路データ提供処理が開始されると、まず、FPGA120の電源がオンされたことにより、起動処理部128が制御部121及びPUF回路50を構成する(ステップS700)。続いて、起動処理部128により構成された制御部121は、起動処理部128のROMに記憶されたFPGA120のIDを読み出してユーザーPC130に送信する(ステップS705)。
【0095】
そして、ユーザーPC130のコントローラー132は、FPGA120からIDを受信すると、ユーザーがFPGA120への提供を希望する回路データの回路識別情報を入力装置139を介して受け付ける(ステップS710)。この処理は、例えば回路識別情報を入力装置139を介して入力するようユーザーに促す図示しない所定の入力画面を表示するようコントローラー132が表示装置138を制御して、ユーザーが入力装置139に入力した操作に基づいて回路識別情報を入力装置139からコントローラー132が受信することにより行う。なお、ユーザーは、再構成可能回路126に構成したい所定の機能を有する回路データを使用する権利を回路データの提供者から購入することで、この回路データの回路識別情報を予め入手しているものとした。回路識別情報を受け付けると、コントローラー132は、ステップS705で送信されたIDと受け付けた回路識別情報とをネットワーク11を介してサーバー140に送信する(ステップS715)。
【0096】
ステップS715で送信されたID及び回路識別情報を受信すると、サーバー140の制御部141は、ステップS515〜S525の処理を行う。これにより、制御部141は128個のチャレンジCHを決定し、受信したID及び決定したチャレンジCHに対応する固有値Iを固有値テーブル147から読み出し、決定したチャレンジCHに対応する補正値Caveを固有値テーブル147から導出する。
【0097】
続いて、制御部141は、ステップS715で送信された回路識別情報に対応する回路データを記憶部145から読み出す(ステップS720)。次に、制御部141は、ステップS520で読み出した固有値Iに基づいてステップS720で読み出した回路データを暗号化した暗号データを生成する(ステップS725)。本実施形態では、チャレンジに対応する128個の固有値Iを128ビットの鍵情報として用いて、暗号方式の1つであるAES(Advanced Encryption Standard)により回路データを暗号化するものとした。なお、128個の固有値Iから所定の演算により求めた値を鍵情報として回路データを暗号化してもよい。
【0098】
暗号データを生成すると、暗号データ出力部148は、ステップS515で決定したチャレンジCHと、ステップS525で導出した補正値Caveと、ステップS725で生成した暗号データとを、ネットワーク11を介してユーザーPC130に送信する(ステップS730)。ユーザーPC130のコントローラー132は、サーバー140から送信されたチャレンジCH,補正値Cave,及び暗号データを拡張スロット136を介してFPGA120に送信する(ステップS735)。FPGA120の制御部121は、コントローラー132から送信されたチャレンジCHと補正値Caveとを対応付けた復号用テーブルを作成し、復号用テーブルとコントローラー132から送信された暗号データとを図示しない制御部121のRAMなどに記憶する(ステップS740)。
【0099】
そして、制御部121は、ステップS740で記憶した暗号データをPUF回路50の固有の値を用いて復号する復号処理を行う(ステップS745)。ここで、回路データ提供処理の説明を中断して、復号処理について説明する。
図13は、復号処理の一例を示すフローチャートである。なお、
図13の処理のうち、
図10の判定処理と同様の処理については同じステップ番号を付して、詳細な説明を省略する。
【0100】
この復号処理が開始されると、制御部121は、ステップS600の処理を行ってステップS740で記憶した128個のチャレンジのうち未処理のもの1つを処理対象のチャレンジCHに設定する。続いて、制御部121の取得部122は、処理対象のチャレンジCHに対応する実測カウント値Cを取得する(ステップS800)。この処理は、
図6の固有値記憶ルーチンのステップS315においてICカード20の制御部22が行う処理を同様にして行う。すなわち、取得部122が処理対象のチャレンジCHに含まれる主発振器選択信号k1,副発振器選択信号k2,主経路選択信号p1,q1,r1,副経路選択信号p2,q2,r2をPUF回路50に送信し、測定回路56の出力決定部58からチャレンジCHに対応する実測カウント値Cを取得する。
【0101】
続いて、復号部124は、処理対象のチャレンジCHに対応する補正値CaveをステップS740で作成された復号用テーブルから読み出す(ステップS810)。そして、補正部123は、ステップS610の処理を行い、ステップS810で読み出した補正値CaveとステップS800で取得した実測カウント値Cとから上述した式(6)により補正後カウント値Ccを導出する。そして、ステップS615〜S625の処理を行う。これにより、復号部124、補正後カウント値Ccが値0以上であるときにはレスポンス値Reを値1に設定し、補正後カウント値Ccが値0未満であるときにはレスポンス値Reを値0に設定する。
【0102】
次に、復号部124は、ステップS635の処理を行って未処理のチャレンジCHがあるか否かを判定し、未処理のチャレンジCHがある場合にはステップS600に進む。これにより、128個のチャレンジCHにそれぞれ対応するレスポンス値Reが設定されるまで上述した処理を繰り返す。そして、ステップS635で未処理のチャレンジCHがないときには、復号部124はステップS740で記憶した暗号データをレスポンス値Reに基づいて復号して(ステップS820)、復号処理を終了する。ステップS820の処理は、本実施形態では、チャレンジに対応する128個のレスポンス値Reを128ビットの鍵情報として用いて、AESを復号する処理により暗号データを復号化するものとした。暗号データがステップS725において回路データをどのような手法で暗号化したものであるかは、予めFPGA120とサーバー140との間で取り決められているものとした。こうすることで、ステップS725とステップS820とで処理に用いる鍵情報が一致していればステップS820の復号を正しく行うことができる。なお、暗号データと共に、暗号化した手法を識別するための情報を付加してサーバー140がFPGA120に暗号データを送信するものとしてもよい。
【0103】
図12の回路データ提供処理の説明に戻る。ステップS745の復号処理を行うと、制御部121は、復号して得られた回路データに基づいて、再構成可能回路126内に回路を構成して(ステップS750)、本処理を終了する。ここで、FPGA120で導出されるレスポンス値Reが、サーバー140で導出された固有値Iと一致していないときには、ステップS725とステップS820とで処理に用いた鍵情報が一致せず、ステップS820における復号が正しく行われない。そのため、ユーザーが提供を希望していた回路データがFPGA120内に構成されることはない。
【0104】
このように、回路データ提供処理では、FPGA120のユニーク性をより高めた値であるレスポンス値Reが、サーバー140での回路データの暗号化に用いた固有値Iと一致しているときにのみ正しく暗号データを復号できるようにして、回路データが正規のFPGA120以外のデバイスで利用されることを防止するのである。
【0105】
ここで、第2実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。第2実施形態のサーバー140が本発明のホストに相当し、FPGA120がデバイスに相当し、発振回路52が発振回路に相当し、選択回路54が選択手段に相当し、取得部122が取得手段に相当し、補正部123が補正手段に相当し、暗号データ出力部148が暗号データ出力手段に相当し、復号部124が復号手段に相当する。なお、本実施形態では、サーバー40の動作を説明することにより本発明のデバイスの制御方法の一例も明らかにしている。
【0106】
以上詳述した第2実施形態の情報セキュリティシステム110によれば、FPGA120がチャレンジCHに対応するPUF回路50の実測カウント値Cを取得し、取得された実測カウント値Cを補正値Caveに基づいて補正した補正後カウント値Cc及びレスポンス値Reを導出する。このため、実測カウント値Cから発振器53の配置や配線に起因する発振周波数の変化分を除去してユニーク性をより高めることができ、FPGA120のユニーク性をより高めた補正後カウント値Cc及びレスポンス値Reを導出することができる。
【0107】
また、サーバー140がチャレンジCHに対応する固有値Iに基づいて暗号化された暗号データをFPGA120に出力し、FPGA120が導出したレスポンス値Reに基づいて暗号データを復号する。これにより、ユニーク性をより高めたレスポンス値Reが固有値Iと一致していないと正しく暗号データを復号することができないため、暗号データが正規のFPGA120以外のデバイスで復号されることをより防止できる。
【0108】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【0109】
例えば、上述した第2実施形態では、
図12のステップS710においてユーザーが入力した回路識別情報をコントローラー132が受け付けるものとしたが、予め回路識別情報がFPGA120やユーザーPC130に記憶されており、ユーザーの操作を介さず自動的にコントローラー132が回路識別情報を取得するものとしてもよい。
【0110】
上述した第1,第2実施形態では、
図4の平均値処理ルーチンにおいて基準値Tb(k)とオフセット値To(k,1,0,0),To(k,0,1,0),To(k,0,0,1)とを導出して記憶部45,記憶部145に記憶するものとしたが、基準値Tb(k)と平均周期Tave(k、1,0,0),Tave(k,0,1,0),Tave(k,0,0,1)とを記憶するものとしてもよい。この場合、
図7の主平均周期導出処理や副平均周期導出において、オフセット値Toを基準値Tbと平均周期Taveとから導出すればよい。また、オフセット値Toを用いず、各発振器53の各経路についてそれぞれ平均周期Taveを導出して記憶部45,145に記憶するものとしてもよい。
【0111】
上述した第1,第2実施形態では、入力された第2カウンター57bのカウント数が所定カウント値Cp(例えば16進数×4桁の表記で値8000)になったときの第1カウンター57aのカウント数を実測カウント値Cとしたが、選択された2つの発振器の周波数の差に基づく値であれば、どのような値を実測カウント値Cとしてもよい。例えば、実測カウント値Cは、選択された発振器がそれぞれ所定回数発振するのに要する時間の差又は比としてもよい。
【0112】
上述した第1,第2実施形態では、基準値Tb及びオフセット値Toは、平均周期Taveすなわち時間を表す値を用いて導出するものとしたが、周波数を表す値を用いて導出してもよい。例えば、平均値記憶ルーチンにおいて実測周期Tの代わりに実測周波数を取得するものとし、実測周波数の平均値として平均周波数を求めて、基準信号経路における平均周波数を基準値Tbとし、オフセット信号経路における平均周波数と基準値Tbとの差をオフセット値Toとしてもよい。この場合、
図6の固有値記憶ルーチンのステップS320では、
図7の主平均周期導出処理と同様の処理を行って、主信号経路の平均周波数A1を基準値Tbやオフセット値Toを用いて導出する処理を行えばよい。同様に、
図7の固有値記憶ルーチンのステップS325では、
図7の主平均周期導出処理と同様の処理を行って、副信号経路の平均周波数A2を基準値Tbやオフセット値Toを用いて導出する処理を行えばよい。そして、
図6の固有値記憶ルーチンのステップS330では、式(5)に代えてCave=A1/A2×Cpにより補正後カウント値Ccを導出すればよい。このように、基準値Tb及びオフセット値Toを周波数を表す値としても、本実施形態と同様に補正後カウント値Ccを導出することができる。なお、本実施形態のように、基準信号経路でなく且つオフセット信号経路でもない信号経路についてその信号経路のうち基準信号経路と異なる反転回路に対応するオフセット値Toと基準値Tbとの和を用いる態様においては、時間を表す値を用いて基準値Tb及びオフセット値Toを導出しておく場合の方が、周波数を表す値を用いて基準値Tb及びオフセット値Toを導出しておく場合と比べて、オフセット値Toと基準値Tbとの和により導出した値がより精度の高い値となるため好ましい。
【0113】
上述した第1,第2実施形態では、平均周期Tと基準値Tbとの差によりオフセット値Toを導出するものとしたが、平均周期Tと基準値Tbとの比によりオフセット値Toを導出もよい。例えば、平均周期Tを基準値Tbで除したものをオフセット値Toとしてもよい。この場合、基準信号経路でなく且つオフセット信号経路でもない信号経路については、その信号経路のうち基準信号経路と異なる反転回路に対応するオフセット値Toと基準値Tbとの積により平均周期Tを導出するものとすればよい。このようにしても、基準信号経路でなく且つオフセット信号経路でもない信号経路の平均周波数関連値を、基準値Tbとオフセット値Toとの積を求めるという簡易な処理で導出できる。なお、このようにオフセット値Toと基準値Tbとの積を用いる態様においては、上述した時間を表す値を用いて基準値Tb及びオフセット値Toを導出しておく場合と、周波数を表す値を用いて基準値Tb及びオフセット値Toを導出しておく場合とで、オフセット値Toと基準値Tbとの積により導出した値の精度は変わらない。
【0114】
上述した第1,第2実施形態では、サーバーが128個のチャレンジCHを決定してこれをICカード20やFPGA120に送信するものとしたが、ICカード20やFPGA120が決定してサーバーに送信するものとしてもよい。
【0115】
上述した第1,第2実施形態では、発振器53はリング状に3段のインバーター60が直列接続されると共に、各段において2つのインバーター60が並列に接続されたリングオシレーターとして構成されているものとしたが、段数は奇数段であればよく、並列数はいくつとしてもよい。また、各段で並列数が異なるものとしてもよい。また、並列に接続されたインバーター60がなくリング状に奇数段の反転回路が直列接続されたリングオシレーターとしてもよい。また、発振器は製造ばらつきに起因する固有の発振周波数をもつものであればよく、リングオシレーターに限られない。
【0116】
上述した第1,第2実施形態では、チャレンジによりPUF回路50の2つの発振器53を選択して選択された発振器53の発振周波数に基づく実測カウント値Cを導出するものとしたが、発振器53を1つだけ選択するものとしてもよい。この場合、例えばPUF回路50からは選択された発振器53の発振周波数を実測カウント値として導出し、この実測カウント値と予め求めた発振器53の発振周波数の平均値との差をとることで補正後カウント値を導出するものとしてもよい。この場合でも、平均値により実測カウント値を補正することで実測カウント値から発振器53の配置や配線に起因する発振周波数の変化分を除去することができ、PUF回路50のユニーク性をより高めた補正後カウント値を導出することができる。また、発振周波数に限らず発振周波数に関連する値であればどのようなものを用いて実測カウント値や補正後カウント値を導出してもよい。例えばPUF回路50からは選択された発振器53の周期を実測カウント値として導出し、この実測カウント値と予め求めた発振器53の周期の平均値との差をとることで補正後カウント値を導出するものとしてもよい。
【0117】
上述した第1,第2実施形態では、サーバー40,140にICカード20,FPGA120を接続し、予め基準値Tbやオフセット値Toを導出して平均値テーブル46,146を記憶したり固有値Iを導出して固有値テーブル47,147を記憶したりするものとしたが、サーバー40、サーバー140が基準値Tb,オフセット値To,固有値Iを導出せず、予め別に作成された平均値テーブル46,146,固有値テーブル47,147を外部から受け取って記憶部45,145に記憶するものとしてもよい。
【0118】
上述した第1実施形態において、ICカード20の固有の値に基づいてサーバー40とICカード20との間でやり取りする情報を暗号化するものとしてもよい。例えば、サーバー40は、チャレンジCHに対応する固有値Iに基づいて暗号化した暗号データと平文のチャレンジCH及び補正値Caveとを送信するものとし、ICカード20は、受信したチャレンジCHに対応する実測カウント値Cと受信した補正値Caveとから導出したレスポンス値Reに基づいて暗号データを復号するものとしてもよい。同様に、ICカード20のレスポンス値Reに基づいて暗号化した暗号データをサーバー40に送信し、サーバー40は受信した暗号データを固有値Iに基づいて復号するものとしてもよい。こうすれば、ICカード20とサーバー40との間でやり取りする情報のセキュリティを向上させることができる。
【実施例】
【0119】
以下には、情報セキュリティシステムのPUF回路を実際に作成した例を実施例として説明する。
【0120】
[実験例1]
実験例1のPUF回路として、
図2のPUF回路50の発振器53の数を512個としたPUF回路を作成した。具体的には、512個の発振器をそれぞれ所定位置に配置し所定の配線を行った発振回路と、512個の発振器のうちいずれか1つを主発振器として選択する主発振器セレクターと512個の発振器のうちいずれか1つを副発振器として選択する副発振器セレクターとを備えた選択回路と、主発振器及び副発振器の発振周波数に基づく実測カウント値Cを出力する測定回路とを備えたPUF回路を作成した。なお、512個の発振器は、いずれもリング状に7個のインバーターを直列接続したリングオシレーターとして構成した。このため、実験例1のPUF回路を構成する発振器には並列接続されたインバーターが存在せず、信号経路は1つである。
【0121】
このPUF回路は、具体的には、産業総合研究所製のサイドチャネル攻撃用標準評価ボードSASEBO-GIIを用意し、この基板に実装された評価用FPGA(Xilinx社製,Virtex5シリーズ(65nm),LX30)に回路を構成することにより作成した。
【0122】
[実験例2]
512個の発振器を、いずれも28個のインバーターと7段の経路セレクターとを備え、リング状に7段のインバーターが直列接続されると共に、各段において4つのインバーターが並列に接続されたリングオシレーターとした点以外は、実験例1と同様のPUF回路を作成した。なお、実験例2の発振器は、7段の各段において4つのインバーターが並列に接続されているため、信号経路は4
7=16384通り存在する。
【0123】
[ユニーク性評価試験]
実験例1及び実験例2のPUF回路をそれぞれ5個作成して、ユニーク性の評価試験を行った。具体的には以下のように行った。まず、実験例1の5個のPUF回路に入力する128個のチャレンジCHを定めた。次に、5個のPUF回路に対して
図4の平均値記憶ルーチンを行って実測周期Tから512個の平均周期Taveを導出し、128個のチャレンジCHにそれぞれ対応する補正値Caveを各PUF回路について導出しておいた。続いて、この128個のチャレンジCHに対応する128個の実測カウント値Cを各PUF回路について取得した。そして、
図10の判定処理のステップS610〜S625と同様にして実測カウント値Cと補正値Caveとから128個のレスポンス値Reを各PUF回路について導出して128ビットの補正あり固有値とし、5個のPUF回路間で128ビットの補正あり固有値のうち値が異なるビットの割合を差異率Dとして算出した。また、比較のために128個の実測カウント値Cを値0以上か否かで二値化した値を128ビットの補正なし固有値とし、同様に5個のPUF回路間で値が異なるビットの割合を差異率Dとして算出した。実験例2についても同様にして128ビットの補正あり固有値と補正なし固有値とを導出して、それぞれ5個のPUF回路間で値が異なるビットの割合を差異率Dとして算出した。ここで、差異率Dは50%に近いほど導出される固有値に偏りがないことを意味するため好ましく、差異率Dが50%に近いほどその固有値はPUF回路のユニーク性を高めた値であるといえる。
【0124】
(実験結果)
ユニーク性評価試験の結果を
図14〜17に示す。
図14は、実験例1の5個のPUF回路間で補正あり固有値の差異率Dを示すテーブルである。
図15は、実験例1の5個のPUF回路間で補正なし固有値の差異率Dを示すテーブルである。
図16は、実験例2の5個のPUF回路間で補正あり固有値の差異率Dを示すテーブルである。
図17は、実験例2の5個のPUF回路間で補正なし固有値の差異率Dを示すテーブルである。なお、
図14〜
図17では、5個のPUF回路を番号1〜5で区別しており、5個のPUF回路のうち2個の固有値を比較したときの差異率Dを、縦軸と横軸との交点の数値で示している。例えば、
図14では、実験例1の1番のPUF回路と2番のPUF回路とで補正あり固有値を比較したときに、差異率Dが36.21%であったことを示している。
【0125】
図14〜
図17から、差異率Dは、
図15及び
図17ではいずれも数%程度であり50%から離れた値となっているのに対し、
図14及び
図16ではそれよりも50%に近い値となっていることがわかった。この結果から、異なるPUF回路間であっても補正なし固有値は互いに数%程度しか異なる値とならず、補正なし固有値は他のPUF回路と値が一致しやすい、すなわちユニーク性の低い値であることがわかった。そして、補正あり固有値を用いることで、異なるPUF回路間で固有値の差異率Dが50%に近づいており、補正あり固有値はユニーク性をより高めた値であることがわかった。
【0126】
[発振周波数の分布測定]
実験例2の5つのPUF回路について、実測発振周波数と補正後発振周波数とを導出し、その分布を調べた。まず、PUF回路の512個の発振器についてそれぞれ64通りの信号経路をランダムに設定し、1つのPUF回路について512×64=32768個の擬似的な発振器を測定対象に定めた。そして、この測定対象の発振器の実測発振周波数f1〜f32768を測定し、測定した32768個の実測発振周波数の平均値及び標準偏差を算出した。他の4つのPUF回路についても同じ32768個の擬似的な発振器を測定対象として、同様に実測発振周波数f1〜f32768を測定してその平均値及び標準偏差を算出した。また、5つのPUF回路全体で32768×5個の実測発振周波数の平均値及び標準偏差を算出した。次に、この5つのPUF回路を用いて、この32768個の発振器それぞれについて各PUF回路から測定された5つの実測発振周波数の平均値を求めて、平均値f1ave〜f32768aveとした。また、5つのPUF回路の32768個の発振器全ての実測発振周波数の平均値を求めて、平均値faveとした。そして、各PUF回路について補正後発振周波数Fn=fn/fnave×fave(nは1〜32768までの整数)を算出し、各PUF回路について補正後発振周波数F1〜F32768の平均値及び標準偏差を算出した。また、5つのPUF回路全体で32768×5個の補正後発振周波数の平均値及び標準偏差を算出した。
【0127】
(測定結果)
図18は、実測発振周波数f1〜f32768の平均値及び標準偏差を示すテーブルである。
図19は、補正後発振周波数F1〜F32768の平均値及び標準偏差を示すテーブルである。なお、
図18,19では、5個のPUF回路を番号1〜5で区別している。
図18からわかるように、実測発振周波数の標準偏差はいずれも25MHz程度の値であるのに対し、補正後発振周波数の標準偏差はいずれも1MHz前後と小さい値となっている。ここで、補正後発振周波数は、実測周波数を平均値で補正したものであるため、実測発振周波数から発振器の配置や配線に起因する発振周波数の変化分を除去した値となっている。これらのことから、実測発振周波数におけるばらつきに与える影響は、PUF回路の製造時のばらつきに起因するものよりも発振器の配置や配線に起因するものが大きかったことが確認できた。このように発振器の配置や配線に起因する影響が大きい場合には、補正せず実測発振周波数を用いてPUF回路の固有値を導出しても製造時のばらつきによる発振周波数の変化分を十分利用できず、固有値がユニーク性の低い値となってしまうと考えられる。一方、補正後発振周波数を用いて固有値を導出すれば、発振器の配置や配線に起因する実測発振周波数のばらつきが大きくともこれを除去することができるため、ユニーク性の高い値を固有値として導出することができる。