本発明は、認証や暗号を実現するシステムに関するものであり、暗号処理で用いる鍵などの秘密データや、機器固有のIDデータを解析から保護された形でセキュアに実装する情報セキュリティ装置に関する。
近年、デジタルコンテンツの著作権保護やネット上の通信データの秘匿を目的として、各種民生機器などで暗号処理を行うケースが多くなってきた。暗号処理においては、その処理に用いる鍵やIDデータを機器内に蓄積する必要があり、著作権保護システムや秘話通信システムの安全性は、前記鍵やIDデータの秘匿性に大きく依存する。従って、そういった秘密データを、機器外部からの解析から保護された形でセキュアに蓄積する必要がある。
秘密データをセキュアに蓄積する典型的な従来方法としては、耐タンパー性の高いハードウェアチップ(耐タンパーチップ)内に蓄積する方法や、耐タンパーが施されたソフトウェアプログラム内に埋め込むような方法があった。しかし、前者の方法では、秘密データの高い秘匿性は実現できるものの特殊な専用チップが必要となるためコストが高くなるという問題があり、後者の方法では、一般的には余り高い秘匿性は実現できず、時間をかけて解析を行うことで秘密データが露呈してしまう可能性があった。
耐タンパーチップのような特殊なハードウェアを必要とせず、秘密データの高い秘匿性を実現可能な方法として、PUF(Physically Uncloanable Function)と呼ばれる技術がある。PUFとは、デバイスの物理的な特性を利用して、物理的な解析に対しても耐性があるような秘密データの蓄積方法である。PUFの具体的な方法は、各種があるが、中でも特許文献1に開示のSilicon PUFと呼ばれる方法は、製造に特殊な環境や設備を必要としないことから、安価な製造コストで高い耐タンパー性を実現でき、低コスト性が要求される民生機器などに特に適した方法といえる。
(Silicon PUFの概要)
図1は、従来のSilicon PUFを実現する回路の構成を示した図である。図1において、PUF回路2000は、トリガ信号を入力すると、1ビットの秘密データを出力する回路である。
PUF回路2000は、8個のリングオシレータ(第1リングオシレータ2001〜第8リングオシレータ2008)と、入力データに基づいて前記8個のリングオシレータのうちから1個を選択するリングオシレータ選択部(第1リングオシレータ選択部2011及び第2リングオシレータ選択部2012)と、前記リングオシレータ選択部が選択したリングオシレータの発振周波数をカウントする周波数カウント部(第1周波数カウント部2021及び第2周波数カウント部2022)と、カウントした周波数を元にPUF回路2000の出力ビットを決定する出力ビット決定部2030とからなる。以下、PUF回路2000の動作を説明する。
まず、リングオシレータ選択部2011、2012はそれぞれ、8個のリングオシレータ2001〜2008の中から予め決定した1個をそれぞれ選択する。次に、前記リングオシレータ2001〜2008にトリガ信号が入力され、リングオシレータは発振動作を開始する。周波数カウント部2021、2022は、前記リングオシレータ選択部2011、2012が選択したリングオシレータからの出力信号をそれぞれ計測して、リングオシレータの発振周波数を計測する。そして、出力ビット決定部2030は、前記計測した2つの発振周波数を比較し、その大小関係によって、PUF回路2000の出力ビットを決定する。
上記一連の動作により、PUF回路2000にトリガ信号を入力すると、PUF回路2000の内部で出力ビットが1ビットだけ決定され出力される。8個のリングオシレータ2001〜2008は、リングオシレータの段数などの回路構成は同一であるが、製造プロセスにおいて遅延時間など物理的な特性に若干であるがバラつきが生じる。それにより、各リングオシレータの発振周波数は、少しずつ異なった値となる。その異なり方は、PUF回路を製造する際に予測不可能な形で決まり、かつ、PUF回路ごとに違ってくる。このような発振周波数により出力ビットが異なる。また、入力データに対する出力ビットの対応関係は、PUF回路内の各リングオシレータの発振周波数を計測することで解析することができる。しかし、PUF回路に対して、例えばブロービングなどで、外部から発振周波数による解析操作を行うと、リングオシレータの物理特性が変化して、出力ビット計算時と同じ発振周波数を計測することができないので、外部からの解析により、入力データに対する出力ビットの対応関係を調べることは困難である。また、PUF回路は、リングオシレータ、周波数カウンタ、比較器などの組み合わせ回路によって実現できるため、特殊な製造環境や設備を必要とせず、通常のLSI製造環境・設備を用いて安価に製造することが可能である。
(Silicon PUFの課題)
上記のとおり、Silicon PUFの技術により、安価なコストによって、解析困難な形でチップごとに異なった入出力関係を有する関数を実装することが可能となったが、以下のような課題もある。PUF回路の出力ビットは、入力データに基づいて選択されたリングオシレータの発振周波数の大小関係で決定される。先ほど説明したとおり、回路製造時の遅延時間などの物理特性のバラつきによって、リングオシレータの発信周波数にバラつきが生じるが、周波数の差がわずかしかない二つのリングオシレータ間の大小関係は、温度変化など外部の環境によって逆転してしまう恐れがある。例えば、ある入力データによって、二つのリングオシレータA及びBが選択され、発振周波数がそれぞれ1256Hz、1245Hzと計測されたとする。このとき、出力ビット値は、[Aの発振周波数]>[Bの発振周波数]から“1”と判定される。また、別のタイミングで同じ入力データを、このPUF回路に入力すると、同じリングオシレータA及びBが選択されるが、このとき、先ほどよりも外部の温度が上昇したとする。その場合、リングオシレータの遅延時間が上昇するので、発振周波数も、それぞれ低下することになるが、その低下の度合いにも、リングオシレータによって若干であるがバラつきがあるので、リングオシレータの元もとの周波数差が僅かしかない場合には、大小関係が反転してしまう恐れがある。上記の例では、リングオシレータAとBとの周波数差は、9Hzしかないので、温度変化によって、[Aの発振周波数]>[Bの発振周波数]という大小関係は反転してしまう恐れがある。即ち、同じ入力データに対して、場合によっては、違う出力ビット値を出力してしまう恐れがあり、出力ビット値の安定性に課題がある。
(Slilicon PUFの改良)
上記課題に対し、従来方法では誤り訂正符号を導入し、出力値(出力ビットの値)の誤りを訂正することで安定性を向上させている。
図2は、従来方法における情報セキュリティ装置3000の構成を示している。情報セキュリティ装置3000は、外部から入力された入力データに対し、PUFを使用して生成した鍵を用いた鍵付ハッシュ値を出力している。鍵付ハッシュ値は、鍵付ハッシュ関数を用いて生成される。鍵付ハッシュ関数については、非特許文献1の189〜195ページに記載されている。
情報セキュリティ装置3000は、外部から入力データを受け付ける入力部3001と、鍵付ハッシュ値を出力する出力部3002と、鍵付ハッシュ値を生成するハッシュ生成部3003と、PUFを用いて鍵を生成するPUF部3004と、誤り訂正情報に基づき、鍵を誤り訂正し訂正後ハッシュ鍵を生成する誤り訂正部3005と、誤り訂正情報を格納する誤り訂正情報格納部3006とを備える。
PUF部3004は先のPUF回路2000を複数、例えば、6個備え、それぞれのPUF回路の出力ビットを連結した6ビットを鍵とする。
情報セキュリティ装置3000の動作を以下に示す。入力部3001は外部のデータの入力を受け付け、これによりPUF部3004内のPUF回路2000にトリガ信号を入力する。PUF回路2000では、出力ビットを生成し、PUF部3004は6つのPUF回路2000の出力ビットを連結したものを鍵とする。その後、誤り訂正部3005は鍵を誤り訂正情報を用いて訂正し訂正後ハッシュ鍵を生成する。さらにハッシュ生成部3003は訂正後ハッシュ鍵を用いて、入力データの鍵付ハッシュ値を生成し、出力部3002がこれを出力する。
誤り訂正情報は、情報セキュリティ装置3000の製造時に、PUF部3004内のPUF回路2000の値を計測して決定する。具体的には、PUF部3004の鍵を複数回計測し、その中で最も高確率に発生する鍵の値を求め、これに対して誤り訂正情報を確定し、誤り訂正情報格納部3006に格納する。
米国特許出願公開第2003/0204743号明細書
岡本龍明、山本博資、"現代暗号"、産業図書(1997年)
しかしながら、上記従来技術では、メモリ(誤り訂正情報格納部3006)に格納された誤り訂正情報を解析することで、誤り訂正部3005からハッシュ生成部3003に入力される訂正後ハッシュ鍵の鍵値が求めやすくなってしまうという問題がある。
例えば、3ビットごとの繰り返し符号を用いて誤り訂正する方法を考える。繰り返し符号では、3ビットのハミング重みを計算し、それが1以下であれば“0”、2以上であれば“1”と復号化する。例えば、“011”であれば、“1”と復号化する。上記のPUF部3004の出力は6ビットであるが、これを2ビットごとの3組に分割し、誤り訂正情報を、3ビットの繰り返し符号の1ビット分を3組合わせた合計3ビットとする。情報セキュリティ装置3000の製造時に、PUF部3004の出力値を計測し、最も高確率に発生する出力値を“11 00 01”であるとする。誤り訂正情報を“X Y Z”(X、Y、Zは0または1)とする。このとき、一つ目の符号は“11X”となるが、これを復号化すると“1”となる。ここで誤りが起こっても正しく復号化できるように“X”を1に設定する。同様に、“Y”を0に設定する。“Z”は0、1のどちらに設定してもよいが、ここでは“1”とする。そうすると、誤り訂正情報は“1 0 1”であり、復号化後の値、すなわち、訂正後ハッシュ鍵は“1 0 1”である。したがって、誤り訂正情報と訂正後ハッシュ鍵が等しくなり、攻撃者が誤り訂正情報を解析することで訂正後ハッシュ鍵を知ることができる。
上記例は、極端なケースで説明しているが、このような誤り訂正方法や誤り訂正情報の設定をしない場合も、攻撃者が誤り訂正情報を用いて訂正後ハッシュ鍵の鍵値を求めやすくなる可能性がある。鍵値が求められると、それをメモリに格納して鍵付ハッシュ関数に使用するPUFのシミュレータを攻撃者が作成し、それを用いた偽造が可能になるため秘匿性が保たれなくなる。
このように、従来技術では、PUFの安全性が低いという課題がある。
そこで本発明は、上記課題を解決するものであって、メモリに格納された情報を攻撃者により解析されても、PUFの安全性が低下しない情報セキュリティ装置を提供することを目的とする。つまり、秘密データの安定性と秘匿性を高めた情報セキュリティ装置を提供することを目的とする。
上記目的を達成するために、本発明に係る情報セキュリティ装置は、予め設定された秘密データを出力する情報セキュリティ装置であって、予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第1の耐タンパー回路と、第1の訂正用データを記憶している訂正用データ記憶手段と、第2の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第2の耐タンパー回路と、前記訂正用データ記憶手段に記憶されている第1の訂正用データと、前記第2の耐タンパー回路から出力される第2の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成手段と、前記訂正情報生成手段により生成された誤り訂正情報を用いて、前記第1の耐タンパー回路から出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正手段とを備えることを特徴とする。例えば、前記第1の耐タンパー回路に設定される秘密データと、前記第2の耐タンパー回路に設定される第2の訂正用データとは、PUF(Physically Unclonable Function)により設定されている。
これにより、秘密データの誤り訂正に直接的に用いられる誤り訂正情報は、従来のようにメモリに格納されておらず、第2の耐タンパー回路を用いて生成されるため、攻撃者に対して誤り訂正情報を見つけ難くすることができ、その結果、第1の耐タンパー回路に設定された秘密データの安全性および秘匿性を高めることができる。さらに、本発明では、周辺温度などの環境変化や経年的な要因によって第1の耐タンパー回路から出力される秘密データに誤りが生じても、誤り訂正情報によってその誤りが訂正されるため、秘密データの安定性を高めることができる。
また、前記情報セキュリティ装置は、さらに、入力データを取得する取得手段と、前記誤り訂正手段から出力される秘密データを鍵として用い、前記鍵により前記入力データを暗号化する暗号化手段とを備えることを特徴としてもよい。
例えば、入力データは鍵付ハッシュ値や暗号文に変換される。これにより、鍵付ハッシュ値や暗号文などの安全性を高めることができる。
また、前記第1の耐タンパー回路は、1ビットの値を前記秘密データの少なくとも一部として出力する1つ以上の第1のPUF回路を備え、前記第2の耐タンパー回路は、2ビット以上の値を前記第2の訂正用データの少なくとも一部として出力する1つ以上の第2のPUF回路を備えることを特徴としてもよい。
例えば、第2のPUF回路から1ビットの値しか出力されないような場合には、ノイズなどによってその値に誤りが生じることがある。しかし、本発明では、第2のPUF回路は2ビット以上の値を出力するため、そのうちの1ビットに誤りが生じても、その誤りを容易に訂正することができ、第2の耐タンパー回路から出力される第2の訂正用データの耐ノイズ性を向上することができる。
また、前記第1の耐タンパー回路は、1つ以上の第1のPUF回路を備え、前記第1のPUF回路は、発振信号を出力するN(N≧2)個の発振部と、前記N個の発振部からM(M≦N)個の発振部を選択する選択部と、前記選択部により選択されたM個の発振部から出力される発振信号の周波数の大小関係に基づいて出力値を決定して出力する決定部とを備え、前記選択部は、前記決定部によって決定される出力値が前記予め定められた秘密データの少なくとも一部を示すようにM個の発振部を選択することを特徴としてもよい。具体的には、前記選択部は、前記M個の発振部から出力される発振信号の周波数の差分が第1の閾値以上となるように前記M個の発振部を選択する。
例えば、選択された2つの発振部から出力される発振信号の周波数の差分が極めて小さい場合には、それらの発振部の物理特性が経年的に変化することによって、それらの周波数の大小関係が反転してしまうことがある。しかし、本発明では、周波数の差分が第1の閾値以上になるようにM個の発振部が選択されるため、それらの発振部の物理特性が経年変化しても、それらの発振部から出力される発振信号の周波数の大小関係が変化してしまうのを抑えることができる。その結果、第1の耐タンパー回路から出力される秘密データに発生する誤りを抑えることができる。
また、前記情報セキュリティ装置は、さらに、前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第1の耐タンパー回路から出力される秘密データとを比較することにより、前記第1の耐タンパー回路から出力される秘密データに誤りが生じたか否かを判別する誤り判別手段と、前記誤り判別手段により誤りが生じたと判別されたときには、前記第1の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、前記第1のPUF回路は、さらに、前記再設定要求手段から再設定の要求を受け付けたときには、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部を備えることを特徴としてもよい。
これにより、第1の耐タンパー回路が出力した秘密データに誤りが生じたときには、予め定められた秘密データが第1の耐タンパー回路に設定し直されるため、誤り訂正の精度を高めることができ、秘密データの安定性をさらに向上することができる。
また、前記第1のPUF回路は、さらに、前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、前記選択部がM個の発振部を選択する際に、前記発振周波数の差分が前記第1の閾値以上となるようなM個の発振部を選択することができないときに、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備えることを特徴としてもよい。
N個の発振部の何れを選択しても、選択されたM個の発振部から出力される発振信号の周波数の差分が第1の閾値未満となってしまう場合には、その第1のPUF回路からの出力値に誤りが生じ易くその信頼性が低くなる。したがって、本発明では、このような場合には、第1のPUF回路が出力すべき、予め定められた秘密データの少なくとも一部が秘密データ用記憶部に格納され、その秘密データの少なくとも一部が出力されるため、第1の耐タンパー回路から出力される秘密データに誤りが生じるのを防ぎ、信頼性を高めることができる。
また、前記第1の耐タンパー回路は、複数の前記第1のPUF回路と、前記複数の第1のPUF回路から出力される出力値を結合することにより秘密データを生成する結合部とを備え、前記誤り判別手段は、前記第1の耐タンパー回路から出力される秘密データに誤りが生じたと判別するときには、さらに、前記複数の第1のPUF回路のうち、誤った出力値を出力する第1のPUF回路を特定し、前記再設定要求手段は、誤った出力値を出力していると特定された第1のPUF回路に対して、出力値が前記予め定められた秘密データの一部を示すように、出力値の再設定を要求することを特徴としてもよい。
これにより、誤った出力値を出力する第1のPUF回路が特定されて、その特定された第1のPUF回路の出力値が再設定されるため、予め定められた秘密データを第1の耐タンパー回路に適切に設定し直すことができる。
また、前記情報セキュリティ装置は、さらに、前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第1の耐タンパー回路から出力される誤り訂正前の秘密データとを比較することにより、前記誤り訂正前の秘密データに誤りが生じたか否かを判別する誤り判別手段と、前記誤り判別手段により誤りが生じたと判別されたときには、前記第1の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、前記第1のPUF回路は、さらに、前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、前記再設定要求手段から再設定の要求を受け付けたときには、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備えることを特徴としてもよい。
第1のPUF回路が一度でも誤った出力値を出力した場合には、その第1のPUF回路の信頼性は疑わしい。したがって、本発明では、このような場合には、その第1のPUF回路が出力すべき出力値である、予め定められた秘密データの少なくとも一部が秘密データ用記憶部に格納され、その秘密データの少なくとも一部が出力されるため、第1の耐タンパー回路から出力される秘密データに誤りが生じるのを防ぎ、信頼性を高めることができる。
また、前記第1のPUF回路は、さらに、前記M個の発振部から出力される発振信号の周波数の差分が第2の閾値未満であるか否かを判別する差分判別部と、前記差分判別部によって前記第2の閾値未満であると判別されると、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部とを備えることを特徴としてもよい。
これにより、第1のPUF回路から出力される出力値の誤りを未然に防ぐことができる。
また、前記第1のPUF回路は、さらに、前記第1および第2の閾値のうちの少なくとも一方を格納している閾値格納部と、前記閾値格納部に格納されている、前記第1および第2の閾値のうちの少なくとも一方を更新する更新部とを備えることを特徴としてもよい。
これにより、予め定められた秘密データを適切なタイミングで設定し直すことができる。
また、上記目的を達成するために、本発明に係るデータ生成装置は、秘密データの誤りを訂正するための第1の訂正用データを生成するデータ生成装置であって、予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第1の耐タンパー回路から出力される出力値を計測する第1の計測手段と、第2の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第2の耐タンパー回路から出力される出力値を計測する第2の計測手段と、前記第1および第2の計測手段によって計測された出力値に基づいて、前記第1の訂正用データを生成するデータ生成手段と、前記データ生成手段によって生成された前記第1の訂正用データを記憶媒体に格納する格納処理手段とを備えることを特徴とする。例えば、前記データ生成手段は、前記第1の計測手段によって計測された出力値と、前記秘密データの示す値との差分を算出することにより、誤り訂正情報を生成する第1の生成手段と、前記第2の計測手段によって計測された出力値と、前記誤り訂正情報の示す値との差分を算出することにより、前記第1の訂正用データを生成する第2の生成手段とを備える。
これにより、第2の訂正用データを用いて誤り訂正情報を生成するために必要な第1の訂正用データを適切に生成することができる。
なお、本発明は、このような情報セキュリティ装置およびデータ生成装置として実現することができるだけでなく、その装置によって行われる処理方法や、その処理方法をコンピュータに実行させるプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
本発明の情報セキュリティ装置は、メモリに格納された情報を用いても、PUFにより秘匿された秘密データを攻撃者が知ることができなくなり、PUFの安全性が低下しないようにすることができ、その価値は大きい。さらに、本発明の情報セキュリティ装置によれば、従来技術のPUF回路と同様に製造コストが安価でセキュアにデータを保管可能という特徴を保持しつつ、かつ、経年変化に対する出力ビット値の安定性を向上できるような情報セキュリティ装置を提供することが可能になるという効果がある。
図1は、従来のPUF回路の構成を示す図である。
図2は、従来のPUFの誤り訂正を用いた情報セキュリティ装置の構成を示す図である。
図3は、本発明の実施の形態1における情報セキュリティシステムの構成を示すブロック図である。
図4は、同上の情報セキュリティ装置の構成を示す図である。
図5は、同上の情報生成用PUF部の構成を示す図である。
図6は、同上の第1のPUF回路の構成を示す図である。
図7は、同上の誤り訂正用PUF部の構成を示す図である。
図8は、同上の第2のPUF回路の構成を示す図である。
図9は、同上の第2のPUF回路の差分と出力値のマッピングを示す図である。
図10は、同上の誤り訂正情報生成装置の構成を示す図である。
図11は、同上の環境変化解析部で解析した出力値の分布を示す図である。
図12Aは、同上の誤り訂正情報生成装置が誤り訂正部分情報を設定するときの動作を示すフローチャートである。
図12Bは、同上の情報セキュリティ装置が鍵付ハッシュ値を計算するときの動作を示すフローチャートである。
図13は、本発明の実施の形態2におけるPUF回路の構成を示すブロック図である。
図14は、同上のリングオシレータの構成を示すブロック図である。
図15は、同上のPUF回路が入力値データを設定するときの動作を示すフローチャートである。
図16は、同上のPUF回路が出力ビットを算出するときの動作を示すフローチャートである。
図17は、同上のPUF回路が入力値データを再設定するときの動作を示すフローチャートである。
図18は、本発明の実施の形態3に係るPUF回路の構成を示すブロック図である。
図19は、同上の情報生成用PUF部にハッシュ鍵を設定する方法を説明するための図である。
図20は、同上の情報セキュリティ装置の構成を示す図である。
図21は、同上の誤り訂正処理部の構成を示す図である。
図22は、同上のPUF回路の他の動作を示す図である。
符号の説明
1 PUF回路
13 出力ビット決定部
14 入力値保管部
15 入力値設定部
16 入力値再設定判定部
17 閾値保管部
18 出力ビット制御部
19 出力ビット保管部
101〜108 第1〜第8リングオシレータ
111,112 第1、第2リングオシレータ選択部
121,122 第1、第2周波数カウント部
1000 情報セキュリティシステム
1100,3000 情報セキュリティ装置
1101,3001 入力部
1102,3002 出力部
1103,3003 ハッシュ生成部
1104 情報生成用PUF部
11041A〜11041I 第1のPUF回路
11042 ハッシュ鍵生成部
1105,3005 誤り訂正部
1106 誤り訂正用PUF部
11061A〜11061I 第2のPUF回路
11062 誤り訂正用PUF情報生成部
1107 誤り訂正部分情報格納部
1108 誤り訂正情報生成部
1200 誤り訂正情報生成装置
1201 PUF回路計測部
1202 環境変化部
1203 環境変化解析部
1204 誤り訂正部分情報生成部
1205 誤り訂正部分情報設定部
2000 PUF回路
2001 第1リングオシレータ
2002 第2リングオシレータ
2003 第3リングオシレータ
2004 第4リングオシレータ
2005 第5リングオシレータ
2006 第6リングオシレータ
2007 第7リングオシレータ
2008 第8リングオシレータ
2011 第1リングオシレータ選択部
2012 第2リングオシレータ選択部
2021 第1周波数カウント部
2022 第2周波数カウント部
2030 出力ビット決定部
3004 PUF部
3006 誤り訂正情報格納部
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
本発明に係る第1の実施の形態としての情報セキュリティシステム1000について、説明する。
図3は、実施の形態1における情報セキュリティシステム1000の構成を示す図である。
本情報セキュリティシステム1000は、秘密データの安定性と秘匿性を高めた情報セキュリティ装置1100と、誤り訂正部分情報を生成して情報セキュリティ装置1100に設定する誤り訂正情報生成装置1200とを備える。なお、本実施の形態では、誤り訂正情報生成装置1200がデータ生成装置として構成されている。
<情報セキュリティ装置1100の構成>
図4は、情報セキュリティ装置1100の構成を示す図である。情報セキュリティ装置1100は、データ(入力データ)の入力を受け付ける入力部1101と、データを出力する出力部1102と、鍵付ハッシュ値を計算するハッシュ生成部1103と、鍵付ハッシュ関数の鍵であるハッシュ鍵を生成する情報生成用PUF部1104と、ハッシュ鍵の誤りを訂正し訂正後ハッシュ鍵を生成する誤り訂正部1105と、誤り訂正用PUF情報を生成する誤り訂正用PUF部1106と、誤り訂正部分情報を格納する誤り訂正部分情報格納部1107と、誤り訂正情報を生成する誤り訂正情報生成部1108とを備える。
なお、本実施の形態では、情報生成用PUF部1104が、予め設定された秘密データたるハッシュ鍵を出力するように設定された第1の耐タンパー回路として構成され、誤り訂正部分情報格納部1107が、第1の訂正用データたる誤り訂正部分情報を記憶している訂正用データ記憶手段として構成されている。また、誤り訂正用PUF部1106が、第2の訂正用データたる誤り訂正用PUF情報を出力するように設定された第2の耐タンパー回路として構成され、誤り訂正情報生成部1108が、誤り訂正情報を生成する訂正情報生成手段として構成されている。さらに、入力部1101が、入力データを取得する取得手段として構成され、ハッシュ生成部1103が、入力データを暗号化する暗号化手段として構成されている。
入力部1101は、外部より入力された入力データを受け付け、ハッシュ生成部1103に入力する。入力部1101は、さらに入力データを受け付けたときに、PUF回路へのトリガを情報生成用PUF部1104と誤り訂正用PUF部1106に入力する。
出力部1102は、鍵付ハッシュ値を出力する。
ハッシュ生成部1103は、誤り訂正部1105で出力された訂正後ハッシュ鍵と入力部1101で受け付けた入力データを用いて、鍵付ハッシュ値を計算し、出力部1102に入力する。
情報生成用PUF部1104は、鍵付ハッシュ関数のハッシュ鍵を生成する。
図5は、情報生成用PUF部1104の構成を示す図である。
情報生成用PUF部1104は、図5に示すように、9つの第1のPUF回路11041A、11041B、11041C、11041D、11041E、11041F、11041G、11041H、11041Iと、第1のPUF回路のビットを連結してハッシュ鍵を生成するハッシュ鍵生成部11042とからなる。後述する第1のPUF回路は1ビットの情報を出力し、情報生成用PUF部1104は9つの第1のPUF回路の各1ビットの情報を連結して、誤り訂正部1105に入力する。なお、ここでは第1のPUF回路の数は9としていたが、9に限らず、2以上であれば何でもよい。
(第1のPUF回路11041A、・・・、11041G、11041H、11041Iの構成について)
第1のPUF回路11041A、・・・、11041Iはそれぞれ、同じ構成であるため、以下では代表して第1のPUF回路11041Aの構成を説明する。
図6は、第1のPUF回路11041Aの構成を示す図である。
第1のPUF回路11041Aは、図6に示すように、第1リングオシレータ11041A01、第2リングオシレータ11041A02、・・・、及び第8リングオシレータ11041A08と、第1リングオシレータ選択部11041A11と、第2リングオシレータ選択部11041A12と、第1周波数カウント部11041A21と、第2周波数カウント部11041A22と、出力ビット決定部11041A30とから構成される。なお、本実施の形態では、第1リングオシレータ11041A01〜第8リングオシレータ11041A08がそれぞれ、発振信号を出力する発振部として構成され、第1リングオシレータ選択部11041A11と第2リングオシレータ選択部11041A12とがそれぞれ、発振部を選択する選択部として構成され、出力ビット決定部11041A30が、第1のPUF回路11041Aの出力値を決定して出力する決定部として構成されている。
第1リングオシレータ11041A01〜第8リングオシレータ11041A08は、同じ構成であり、それぞれトリガ信号に対して出力信号(発振信号)を出力する。
第1リングオシレータ選択部11041A11は、第1リングオシレータ11041A01〜11041A08の中から予め与えられたリングオシレータを選択する。
第2リングオシレータ選択部11041A12は、第1リングオシレータ11041A01〜11041A08の中から、第1リングオシレータ選択部11041A11と異なり、予め与えられたリングオシレータを選択する。なお、リングオシレータの数を8としていたが、これに限らない。リングオシレータの数は2以上であればよい。
第1周波数カウント部11041A21は、第1リングオシレータ選択部11041A11で選択したリングオシレータの周波数を計測する。
第2周波数カウント部11041A22は、第2リングオシレータ選択部11041A12で選択したリングオシレータの周波数を計測する。
出力ビット決定部11041A30は、第1周波数カウント部11041A21で計測した周波数F1と第2周波数カウント部11041A22で計測した周波数F2を比較し、F1≧F2であれば“0”、F1<F2であれば“1”を出力する。なお、ここでは周波数を計測するとしたが、周波数そのものではなく、周波数に近いもの、例えば、予め与えられた一定時間内のリングオシレータの出力信号が予め与えられた振幅と等しくなる回数を計測するとしてもよい。この場合、周波数の代わりにこの回数を比較して、“0”、“1”の出力ビットを決定してもよい。また、上記ではF1≧F2の場合“0”、F1<F2の場合“1”を出力するとしたが、F1<F2の場合“1”、F1≧F2の場合“0”を出力するとしてもよい。
(第1のPUF回路11041A、・・・、11041Iの動作について)
以下、構成について説明したときと同様に、代表して第1のPUF回路11041Aの動作を説明する。
第1リングオシレータ選択部11041A11は、予め与えられたリングオシレータを選択する。第2リングオシレータ選択部11041A12も、予め与えられたリングオシレータを選択する。第1周波数カウント部11041A21は、第1リングオシレータ選択部11041A11で選択したリングオシレータの周波数を計測する。第2周波数カウント部11041A22は、第2リングオシレータ選択部11041A12で選択したリングオシレータの周波数を計測する。出力ビット決定部11041A30は、第1周波数カウント部11041A21及び第2周波数カウント部11041A22で計測した周波数を用いて、出力ビットを決定する。
(ハッシュ鍵生成部11042について)
ハッシュ鍵生成部11042は、第1のPUF回路11041A〜11041Gのビットを連結し、連結したものをハッシュ鍵とする。
誤り訂正部1105は、誤り訂正情報生成部1108で生成した誤り訂正情報を用いて、情報生成用PUF部1104で生成したハッシュ鍵を誤り訂正し、訂正後ハッシュ鍵を生成する。誤り訂正の方法は、何でもよいが、簡単のため、例を示す。
(誤り訂正の方法例)
この例では、3ビットの繰り返し符号を3つ連結したものを使用している。繰り返し符号とは、“0”を“000”、“1”を“111”と符号化し、復号時には3ビットの多数決を取る符号である。例えば、“101”であれば1の数が2で多数決を取ると“1”と復号化される。すなわち、符号のハミング重み(1の数)が1以下であれば“0”、2以上であれば“1”と復号化する。
誤り訂正情報を“010 010 001”とする。情報生成用PUF部1104で生成したハッシュ鍵を“101 000 111”とする。誤り訂正部1105では、誤り訂正情報とハッシュ鍵の排他的論理和(XOR)を取る。
“010 010 001” XOR “101 000 111”
=“111 010 110”
これに対し復号化すると、一つ目の繰り返し符号は“111”であるため“1”、二つ目は“010”であるため“0”、三つ目は“110”であるため“1”と復号化する。
したがって、この例では訂正後ハッシュ鍵は“101”となる。
誤り訂正用PUF部1106は、誤り訂正用PUF情報を生成する。
図7は、誤り訂正用PUF部1106の構成を示す図である。
誤り訂正用PUF部1106は、図7に示すように、9つの第2のPUF回路11061A、11061B、11061C、11061D、11061E、11061F、11061G、11061H、11061Iと、第2のPUF回路のビットを連結して誤り訂正用PUF情報を生成する誤り訂正用PUF情報生成部11062とからなる。後述する第2のPUF回路は3ビットの情報を出力し、誤り訂正用PUF部1106は9つの第2のPUF回路の各3ビットの情報を連結して、誤り訂正情報生成部1108に入力する。なお、ここでは第2のPUF回路の数は9としていたが、9に限らず、2以上であれば何でもよい。
(第2のPUF回路11061A、・・・、11061Iの構成について)
第2のPUF回路11061A、・・・、11061Iはそれぞれ、同じ構成であるため、以下では代表して第2のPUF回路11061Aの構成を示す。
図8は、第2のPUF回路11061Aの構成を示す図である。
第2のPUF回路11061Aは、図8に示すように、第1リングオシレータ11061A01、第2リングオシレータ11061A02、・・・、及び第8リングオシレータ11061A08と、第1リングオシレータ選択部11061A11と、第2リングオシレータ選択部11061A12と、第1周波数カウント部11061A21と、第2周波数カウント部11061A22と、出力ビット決定部11061A30とから構成される。
第1リングオシレータ11061A01〜第8リングオシレータ11061A08は、同じ構成であり、それぞれトリガ信号に対して出力信号を出力する。
第1リングオシレータ選択部11061A11は、第1リングオシレータ11061A01〜11061A08の中から予め与えられたリングオシレータを選択する。
第2リングオシレータ選択部11061A12は、第1リングオシレータ11061A01〜11061A08の中から、第1リングオシレータ選択部11061A11と異なり、予め与えられたリングオシレータを選択する。なお、リングオシレータの数を8としていたが、これに限らない。リングオシレータの数は2以上であればよい。
第1周波数カウント部11061A21は、第1リングオシレータ選択部11061A11で選択したリングオシレータの周波数を計測する。
第2周波数カウント部11061A22は、第2リングオシレータ選択部11061A12で選択したリングオシレータの周波数を計測する。
出力ビット決定部11061A30は、第1周波数カウント部11061A21で計測した周波数F1と第2周波数カウント部11061A22で計測した周波数F2とを比較し、F1とF2の差分によって、“0”から“7”までの値を示す3ビットを1要素として出力する。
図9は、周波数の差分(F2−F1)に対する値(3ビット)のマッピングを示す図である。図9では、差分の−300から300までを8等分してそれぞれを“0”から“7”までマッピングしている。なお、マッピング方法はこれだけに限らない。範囲をこれ以外、例えば−500から500までとしてもよいし、等分ではなく、値ごとに不等分にマッピングしてもよい。
(第2のPUF回路11061A、・・・、11061Iの動作について)
以下、構成について説明したときと同様に、代表して第2のPUF回路11061Aの動作を説明する。
第1リングオシレータ選択部11061A11は、予め与えられたリングオシレータを選択する。第2リングオシレータ選択部11061A12も、予め与えられたリングオシレータを選択する。第1周波数カウント部11061A21は、第1リングオシレータ選択部11061A11で選択したリングオシレータの周波数を計測する。第2周波数カウント部11061A22は、第2リングオシレータ選択部11061A12で選択したリングオシレータの周波数を計測する。出力ビット決定部11061A30は、第1周波数カウント部11061A21及び第2周波数カウント部11061A22で計測した周波数を用いて、出力である3ビットを決定する。つまり、出力ビット決定部11061A30は、第1周波数カウント部11061A21と、第2周波数カウント部11061A22で計測した周波数との差分に応じた3ビットの値を、図9に示すマッピングを用いて決定する。例えば、出力ビット決定部11061A30は、差分が0以上75未満であれば“4”を決定し、差分が75以上150未満であれば“5”を決定する。
(誤り訂正用PUF情報生成部11062について)
誤り訂正用PUF情報生成部11062は、第2のPUF回路11061A〜11061Iから出力される各要素を連結し、連結したものを誤り訂正用PUF情報とする。例えば、第2のPUF回路11061A〜11061Iから出力される各要素が、“2”、“6”、“5”、“1”、“5”、“7”、“2”、“3”、“7”であれば、誤り訂正用PUF情報は“265 157 237”である。
誤り訂正部分情報格納部1107は、誤り訂正情報の部分情報である誤り訂正部分情報を格納する。誤り訂正部分情報は誤り訂正情報生成装置1200が生成して格納する。
誤り訂正情報生成部1108は、誤り訂正用PUF部1106が生成する誤り訂正用PUF情報と、誤り訂正部分情報格納部1107が格納している誤り訂正部分情報とを用いて、誤り訂正情報を生成する。誤り訂正情報の生成方法の例を以下に示す。この例では、誤り訂正用PUF情報を、予め与えられた方法により符号化し、その結果生成された符号化後誤り訂正用PUF情報と誤り訂正部分情報の排他的論理和を取っているが、誤り訂正情報の生成方法は、この例に限らない。排他的論理和の部分をガロア体における乗算に変えてもよい。また、排他的論理和の代わりに、符号化後誤り訂正用PUF情報と誤り訂正部分情報を整数値と見立てて、加算するとしてもよい。
(誤り訂正情報生成の例)
誤り訂正用PUF部1106が出力した誤り訂正用PUF情報が上記のように、“265 157 237”であるとする。これに対し、この要素の値が3以下の場合“0”、4以上の場合“1”と1ビットの値に符号化する。符号化した結果、“011 011 001”となり、これを符号化後誤り訂正用PUF情報とする。これと誤り訂正部分情報格納部1107に格納されている誤り訂正部分情報との差分を取る。誤り訂正部分情報を“001 001 000”とするとき、誤り訂正情報は、
“011 011 001” XOR “001 001 000”
=“010 010 001”
である。
なお、この符号化はこれだけに限らず、例えば、4以上を“0”、3以下を“1”と符号化してもよい。
<誤り訂正情報生成装置1200の構成>
図10は、誤り訂正情報生成装置1200の構成を示す図である。誤り訂正情報生成装置1200は、情報セキュリティ装置1100内の第1のPUF回路及び第2のPUF回路の出力値を計測するPUF回路計測部1201と、第1のPUF回路及び第2のPUF回路の周囲の環境を変化させる環境変化部1202と、環境変化によるPUF回路計測部1201で計測した出力値の分布を解析する環境変化解析部1203と、環境変化解析部1203の解析結果により誤り訂正部分情報を生成する誤り訂正部分情報生成部1204と、誤り訂正部分情報を情報セキュリティ装置1100内の誤り訂正部分情報格納部1107に格納する誤り訂正部分情報設定部1205とを備える。なお、本実施の形態では、PUF回路計測部1201が第1の計測手段および第2の計測手段として構成され、誤り訂正部分情報生成部1204がデータ生成手段として構成され、誤り訂正部分情報設定部1205が格納処理手段として構成されている。また、本実施の形態における誤り訂正部分情報生成部1204は、誤り訂正情報を生成する第1の生成手段と、その誤り訂正情報を用いて第1の訂正用データたる誤り訂正部分情報を生成する第2の生成手段とを備えている。
PUF回路計測部1201は、第1のPUF回路11041A〜11041Iと、第2のPUF回路11061A〜11061Iの出力値を計測する。
環境変化部1202は、第1のPUF回路及び第2のPUF回路の周囲の環境を変化させる。具体的には、例えば、周囲の温度を変化させる。
環境変化解析部1203は、環境変化によるPUF回路計測部1201で計測した出力値の分布を解析する。すなわち、温度ごとの第1のPUF回路及び第2のPUF回路の出力値の分布を求める。
誤り訂正部分情報生成部1204は、誤り訂正部分情報を生成する。
(誤り訂正部分情報生成部1204の処理)
誤り訂正部分情報生成部1204はまず、環境変化解析部1203で解析した第1のPUF回路の出力値の分布に基づいて、誤り訂正情報を求める。
図11は、第1のPUF回路及び第2のPUF回路の出力値の分布例を示す図である。具体的な例としては、第1のPUF回路の出力値の分布で最も高確率で出現した出力値に対し、誤り訂正符号を用いて符号化をしたものとその出力値との差分を誤り訂正情報とする。上記誤り訂正の方法例や誤り訂正情報生成の例と合わせると、最も高確率で出現した出力値は、9つの第1のPUF回路11041A〜11041Iの出力値を並べると“101 000 110”である。ここで、例として、3ビットの繰り返し符号を用いるため、最も高確率で出現する出力値も、3ビットごとに区切って判断する。図11では、一つ目の3ビットは0℃のとき“100”、10℃のとき“101”、20℃のとき“101”であるため、最も高確率で出現した出力値は“101”である。同様に、二つ目は“000”、三つ目は“110”となる。3ビットの繰り返し符号を3つ並べたものを使用してこの出力値を符号化すると、“111 000 111”になる。したがって、出力値と符号化したものの差分は、
“101 000 110” XOR “111 000 111”
=“010 000 001”
であり、これを誤り訂正情報とする。
次に、誤り訂正部分情報生成部1204は、環境変化解析部1203で解析した第2のPUF回路の出力値の分布に基づいて、誤り訂正用PUF情報を求める。図11は、出力値の分布例を示している。一つの第2のPUF回路の出力値は3ビットの要素であるが、図11では、第2のPUF回路11061A〜11061Iの出力値を左から順番に並べている。誤り訂正部分情報の生成方法の具体的な例としては、第2のPUF回路の出力値の分布で各要素で最も高確率で出現した出力値に対し、予め定めた方法で符号化した符号化後誤り訂正用PUF情報と誤り訂正情報との差分を誤り訂正部分情報とする。図11の例では、一つ目の要素は0℃のとき“3”、10℃のとき“2”、20℃のとき“2”であるため、最も高確率で出現した出力値は“2”である。これに対し、誤り訂正情報生成の例と同じ符号化方法を使用すると、この要素の値が4以下の場合“0”、5以上の場合“1”と1ビットの値に符号化する。図11の例では、一つ目の要素は“2”であるため、符号化後の値は“0”となる。同様に二つ目以降も符号化すると、符号化後誤り訂正用PUF情報は“011 011 001”となる。符号化後誤り訂正用PUF情報と、誤り訂正情報との差分を取ると、
“010 000 001” XOR “011 011 001”
=“001 011 000”
となり、“001 011 000”を誤り訂正部分情報とする。
誤り訂正部分情報設定部1205は、誤り訂正部分情報生成部1204で生成した誤り訂正部分情報を、情報セキュリティ装置1100内の誤り訂正部分情報格納部1107に格納する。
<情報セキュリティシステム1000の動作>
図12Aは、情報セキュリティシステム1000の誤り訂正情報生成装置1200が誤り訂正部分情報を設定するときの動作を示すフローチャートである。
誤り訂正情報生成装置1200は、誤り訂正部分情報を設定する時には、以下のように動作する。なお、誤り訂正部分情報を生成して情報セキュリティ装置1100内の誤り訂正部分情報格納部1107に設定する処理は、情報セキュリティ装置1100の製造時に実施される。
ステップS101:環境変化部1202は、第1のPUF回路及び第2のPUF回路の周囲の環境を変化させる。さらに環境変化部1202は、変化させた環境の情報を、環境変化解析部1203に入力する。
ステップS102:PUF回路計測部1201は、第1のPUF回路及び第2のPUF回路の出力値を計測し、環境変化解析部1203に入力する。
ステップS103:環境変化解析部1203は、環境の情報と第1のPUF回路及び第2のPUF回路の出力値から分布を得る。
ステップS104:誤り訂正部分情報生成部1204は、出力値の分布より、誤り訂正部分情報を生成する。
ステップS105:誤り訂正部分情報設定部1205は、誤り訂正部分情報を、情報セキュリティ装置1100内の誤り訂正部分情報格納部1107に格納する。
図12Bは、情報セキュリティシステム1000の情報セキュリティ装置1100が鍵付ハッシュ値を計算するときの動作を示すフローチャートである。
情報セキュリティ装置1100は、鍵付ハッシュ値を計算する時には、以下のように動作する。なお、情報セキュリティ装置1100が、入力された入力データに対し、鍵付ハッシュ値を生成し出力する処理は、ユーザからの入力やアプリケーションプログラムからのトリガにより行われる。
ステップS201:入力部1101は、外部より入力された入力データを受け付け、ハッシュ生成部1103に入力する。さらに、入力部1101は、PUF回路へのトリガ信号を情報生成用PUF部1104と誤り訂正用PUF部1106に入力する。
ステップS202:情報生成用PUF部1104は、ハッシュ鍵を生成し、誤り訂正部1105に入力する。
ステップS203:誤り訂正用PUF部1106は、誤り訂正用PUF情報を生成し、誤り訂正情報生成部1108に入力する。
ステップS204:誤り訂正情報生成部1108は、誤り訂正用PUF情報と誤り訂正部分情報格納部1107に格納されている誤り訂正部分情報とを用いて、誤り訂正情報を生成し、誤り訂正部1105に入力する。
ステップS205:誤り訂正部1105は、誤り訂正情報を用いて、ハッシュ鍵を誤り訂正し、訂正後ハッシュ鍵を生成し、ハッシュ生成部1103に入力する。
ステップS206:ハッシュ生成部1103は、訂正後ハッシュ鍵を鍵として使用して、入力データの鍵付ハッシュ値を生成し、出力部1102に入力する。
ステップS207:出力部1102は、鍵付ハッシュ値を外部へ出力する。
このように本実施の形態では、情報セキュリティ装置1100は、誤り訂正情報を直接メモリに格納せず、誤り訂正部分情報を格納している。そのため、誤り訂正情報に攻撃者が直接アクセスできないため、PUFの秘密、すなわち、ハッシュ鍵を攻撃者が得ることが困難であり、安全である。また、誤り訂正用PUF部1106と誤り訂正情報生成部1108を設けることで、誤り訂正部分情報から誤り訂正情報を復元でき、誤り訂正が正しく働く。
(実施の形態2)
実施の形態1における情報生成用PUF部1104のハッシュ鍵の誤りは、環境変化によって生じることがあるが、PUF回路の周波数特性の経年変化によっても生じることがある。本実施の形態では、実施の形態1における情報セキュリティシステム1000の構成に対して、さらに、PUF回路の経年的な出力変動を抑えることにより、情報生成用PUF部1104から出力されるハッシュ鍵の誤りを軽減することを特徴とする。
以下、本発明の実施の形態2について、図面を参照しながら説明する。
(PUF回路1の構成)
図13は、本発明の実施の形態2におけるPUF回路1の構成の一例を示したブロック図である。PUF回路1は、実施の形態1における第1のPUF回路11041A〜11041Iのそれぞれに相当し、第1〜第8リングオシレータ101〜108と、第1〜第2リングオシレータ選択部111〜112と、第1〜第2周波数カウント部121〜122と、出力ビット決定部13と、入力値保管部14と、入力値設定部15と、入力値再設定判定部16と、閾値保管部17と、出力ビット制御部18と、出力ビット保管部19とからなる。
なお、本実施の形態では、出力ビット保管部19が、秘密データたるハッシュ鍵の一部を記憶するための秘密データ用記憶部として構成され、出力ビット制御部18が、ハッシュ鍵の一部を出力ビット保管部19に格納する格納処理部として構成されているとともに、出力ビット保管部19に格納されているハッシュ鍵の一部を出力する出力制御部として構成されている。以下、各部の詳細について説明する。
(1)第1〜第8リングオシレータ101〜108
第1〜第8リングオシレータ101〜108はそれぞれ、奇数個の否定回路をリング状に接続した構成を基本とする発振回路であり、トリガ信号の入力により所定の発振周波数を有する発振信号(出力信号)を出力する。これら8個のリングオシレータの構成及び動作は全て同じであるので、以下では、それらをリングオシレータ100として、その構成及び動作を説明する。
図14は、リングオシレータ100の構成の一例を示すブロック図である。リングオシレータ100は、7段のリングオシレータであり、NAND回路21と、7個の否定回路22〜28からなる。なお、本実施の形態では、7段のリングオシレータとしているが、これは奇数段であれば何段のリングオシレータであってもよい。
リングオシレータ100にトリガ信号が入力されていない場合、即ち、トリガ信号として「0」が入力されている場合、NAND回路21の出力は「1」となる。よって、否定回路22の出力は「0」となり、否定回路23の出力は「1」となり、・・・、否定回路27の出力(即ちNAND回路21の1つの入力)は「1」となるが、NAND回路21のもう1つの入力は「0」であるから、NAND回路21の出力は「1」のままである。即ち、リングオシレータ100は、上記の定常状態で安定する。このとき、否定回路28の出力、即ちリングオシレータ100の出力信号は「0」で安定する。まとめると、リングオシレータ100へのトリガ信号が「0」の場合にはリングオシレータ100は発振せず、その出力信号は「0」で安定する。
一方、リングオシレータ100にトリガ信号が入力された場合、即ち、トリガ信号として「1」が入力された場合、NAND回路21の出力は「1」となる。よって、否定回路22の出力は「0」となり、否定回路23の出力は「1」となり、・・・、否定回路27の出力は「1」となる。このとき、NAND回路21の2つの入力はどちらも「1」になるため、NAND回路21の出力は、「1」から「0」に遷移する。この遷移に伴い、否定回路22の出力は「1」となり、否定回路23の出力は「0」となり、・・・、否定回路27の出力は「0」となる。このとき、NAND回路21の一方の入力が「0」になるため、NAND回路21の出力は、再び「0」から「1」に遷移する。上記のように、トリガ信号「1」が入力されると、リングオシレータ100の内部状態は安定せずに、NAND回路21の出力は「1」と「0」の間で遷移を繰り返し、発振する。このとき、リングオシレータ100は、所定の発振周波数を有する発振信号を出力する。前記発振周波数は、リングオシレータの段数で決まり、理論的には段数と回路構成が同じリングオシレータであれば、同じになることになる。しかし、実際には、同一の構成を持つリングオシレータであっても、リングオシレータを構成する回路素子の周波数特性のバラつきが生じるので、発振周波数にも若干のバラつきがある。なお、上記発振状態において、トリガ信号が「0」に変化すると、NAND回路21の出力は「1」で安定するので、発振動作は停止し、出力信号は「0」になる。
(2)第1〜第2リングオシレータ選択部111〜112
第1〜第2リングオシレータ選択部111〜112は、それぞれ、入力値保管部14から入力される3ビットの入力値データに基づいて、前記第1〜第8リングオシレータ101〜108から1個を選択し、選択したリングオシレータから出力される発振信号を取得して第1周波数カウント部121または第2周波数カウント部122に入力する。つまり、第1リングオシレータ選択部111は、選択したリングオシレータから出力される発振信号を取得して第1周波数カウント部121に入力し、第2リングオシレータ選択部112は、選択したリングオシレータから出力される発振信号を取得して第2周波数カウント部122に入力する。
3ビットの入力値データと、選択するリングオシレータとの対応関係は、任意の入力値データが、ある1つのリングオシレータに対応していれば、どのようなものであっても良いが、本実施の形態では、以下の通りとする。第1〜第2リングオシレータ選択部111〜112は、それぞれ、入力値データ「000」(2進数)に対しては、第1リングオシレータ101を選択する。入力値データ「001」(2進数)に対しては、第2リングオシレータ102を選択する。入力値データ「010」(2進数)に対しては、第3リングオシレータ103を選択する。・・・。入力データ「111」(2進数)に対しては、第8リングオシレータ108を選択する。なお、第1リングオシレータ選択部111および第2リングオシレータ選択部112は、それぞれ、互いに異なる入力値データを取得して、互いに異なるリングオシレータを選択する。
(3)第1〜第2周波数カウント部121〜122
第1〜第2周波数カウント部121〜122は、それぞれ、第1リングオシレータ選択部111または第2リングオシレータ選択部112から入力される発振信号の発振周波数を計測して、計測結果を出力ビット決定部13に入力する。つまり、第1周波数カウント部121は、第1リングオシレータ選択部111から入力される発振信号の発振周波数を計測し、第2周波数カウント部122は、第2リングオシレータ選択部112から入力される発振信号の発振周波数を計測する。
(4)出力ビット決定部13
出力ビット決定部13は、第1周波数カウント部121および第2周波数カウント部122からそれぞれ入力される発振周波数の大小関係を比較し、その比較結果に基づいて1ビットの出力ビットの値を決定して、その決定された値を示す出力ビットを出力ビット制御部18に入力する。
比較結果と出力ビットの値との対応関係はどのようなものでもよいか、本実施の形態では、(第1周波数カウント部121の計測周波数)<(第2周波数カウント部122の計測周波数)であれば、「1」と決定し、そうでなければ「0」と決定するものとする。
(5)出力ビット制御部18
出力ビット制御部18は、PUF回路1に対して外部からトリガ信号が入力されて出力ビットの出力要求があった場合には、まず、出力ビット保管部19に出力ビットが保管されているか否かを確認する。出力ビットが保管されている場合には、保管されている出力ビットをPUF回路1から出力して処理を終了する。出力ビット保管部19に出力ビットが保管されていない場合には、出力ビット決定部13から、出力ビットが入力された後に、以下の処理を行う。
出力ビット制御部18は、まず、出力ビット決定部13から入力される出力ビットを一時保管し、入力値設定部15から、出力ビットの退避要求信号が入力された場合には、一時保管している出力ビットを、PUF回路1の出力ビットとして出力するとともに、出力ビット保管部19に出力する。一方、入力値設定部15から、出力ビットの退避要求信号が入力されない場合には、一時保管している出力ビットを、PUF回路1の出力ビットとして出力する。
(6)入力値保管部14
入力値保管部14は、第1リングオシレータ選択部111及び第2リングオシレータ選択部112に入力する3ビットの入力値データを2個保管する。以降では、第1リングオシレータ選択部111に入力する3ビットの入力値データを第1入力値データとし、第2リングオシレータ選択部112に入力する3ビットの入力値データを第2入力値データとする。
(7)入力値設定部15
入力値設定部15は、初期化時、または入力値再設定判定部16より入力値再設定要求信号が入力されたときに動作し、閾値保管部17に保管されている入力設定用閾値以上の周波数差を有する2個のリングオシレータが選択されるように、第1リングオシレータ選択部111及び第2リングオシレータ選択部112への入力値データ(それぞれ3ビット)を設定する。
具体的に、入力値設定部15は、初期化時には、PUF回路1の外部から出力設定値を取得し、その出力設定値を示す出力ビットがPUF回路1から出力されるように、第1リングオシレータ選択部111及び第2リングオシレータ選択部112への入力値データを設定する。このとき、出力設定値が「1」であれば、入力値設定部15は、(第1周波数カウント部121の計測周波数)<(第2周波数カウント部122の計測周波数)であって且つ、それらの周波数の差の絶対値が入力設定用閾値以上となるような2つのリングオシレータが選択されるように、2つの入力値データを設定する。また、出力設定値が「0」であれば、入力値設定部15は、(第1周波数カウント部121の計測周波数)≧(第2周波数カウント部122の計測周波数)であって且つ、それらの周波数の差の絶対値が入力設定用閾値以上となるような2つのリングオシレータが選択されるように、2つの入力値データを設定する。
また、入力値設定部15は、入力値再設定要求信号を取得したときには、既に設定されている、第1周波数カウント部121の計測周波数と、第2周波数カウント部122の計測周波数との大小関係を維持し、それらの周波数の差の絶対値が入力設定用閾値以上となるような2つのリングオシレータが改めて選択されるように、2つの入力値データを再設定する。
また、前記入力設定用閾値以上の周波数差を有する2個のリングオシレータを選択するような入力値データの決定に失敗した場合(即ち、周波数差が前記閾値以上になるリングオシレータのペアが見つからなかった場合)には、入力値設定部15は、出力ビットの退避要求信号を出力ビット制御部18に入力する。
なお、本実施の形態では、第1リングオシレータ選択部111、第2リングオシレータ選択部112、入力値保管部14および入力値設定部15が、8個のリングオシレータから2個のリングオシレータを選択する選択部として構成されている。また、入力値設定部15が、周波数差が第1の閾値たる入力設定用閾値以上となる2個のリングオシレータを検索する検索部として構成され、入力値保管部14が、検索部によって検索された2個のリングオシレータを示す選択パラメータたる入力値データを保持するパラメータ保持部として構成されている。さらに、第1リングオシレータ選択部111および第2リングオシレータ選択部112がそれぞれ、入力値データの示すリングオシレータを選択すべきリングオシレータとして決定して選択する選択決定部として構成されている。
(8)入力値再設定判定部16
入力値再設定判定部16は、第1周波数カウント部121および第2周波数カウント部122から出力される発振周波数を観測し、その周波数差の絶対値が、閾値保管部17に保管されている入力値再設定判定用閾値よりも小さくなった場合には、入力値設定部15に入力値再設定要求信号を入力する。
なお、本実施の形態では、入力値再設定判定部16が、周波数差が第2の閾値たる入力値再設定判定用閾値未満であるか否かを判別する差分判別部と、上述の選択部による選択を再度実行させる再設定部として構成されている。
(9)閾値保管部17
閾値保管部17は、入力設定用閾値及び入力値再設定判定用閾値を保管する。これらの値は正の値である。本実施の形態では、これらの値は、PUF回路1の製造時に書き込むものとするが、回路製造後に外部から書き込むようにしても良いし、書き込んだ後でも、外部から書き換えることができるようにしても良い。また、何らかの認証を行った上で、外部からの書き込みを許可するようにしても良い。なお、本実施の形態では、閾値保管部17が、第1の閾値たる入力設定用閾値と、第2の閾値たる入力値再設定判定用閾値とを格納している閾値格納部として構成されている。
以下、PUF回路1の動作を説明する。PUF回路1の動作は、「入力値データの設定」、「出力ビットの算出」および「入力値データの再設定」の3種類に大別され、以下、それぞれについて説明する。
(入力値データの設定)
図15は、PUF回路1が入力値データを設定するときの動作を示すフローチャートである。
「入力値データの設定」は、PUF回路1が製造された後の初期化処理として実行する処理である。「入力値データの設定」処理は、以下のようにして行う。
ステップS301:入力値設定部15は、PUF回路1の外部から入力される1ビットの値を出力設定値として受け付ける。また、閾値保管部17に保管されている入力設定用閾値を読み込む。
ステップS302:入力値設定部15は、入力値データの候補を選択して、その候補における第1周波数カウント部121および第2周波数カウント部122による発振周波数の計測を実行させる。即ち、入力値設定部15は、第1入力値データの候補としてN1=000(2進数)〜111(2進数)の中から何れか1つを選択し、第2入力値データの候補としてN2=000(2進数)〜111(2進数)の中から何れか1つを選択する。そして、入力値設定部15は、(第1入力値データの候補,第2入力値データの候補)=(N1,N2)の組み合わせによって選択されるリングオシレータを用い、第1周波数カウント部121および第2周波数カウント部122による発振周波数の計測を実行させる。具体的には、PUF回路1は以下の動作を実行する。
ステップS302a:入力値設定部15は、第1入力値データ及び第2入力値データの候補として(N1,N2)を生成し、第1リングオシレータ選択部111にN1を、第2リングオシレータ選択部112にN2を、それぞれ入力する。
ステップS302b:第1リングオシレータ選択部111は、前記N1に基づいて、前に述べた規則に従い、第1リングオシレータ101〜第8リングオシレータ108の中から1つのリングオシレータを選択する。第2リングオシレータ選択部112は、前記N2に基づいて、前に述べた規則に従い、第1リングオシレータ101〜第8リングオシレータ108の中から1つのリングオシレータを選択する。
ステップS302c:ここで、ステップS302bで選択された2個のリングオシレータにトリガ信号が入力されると、選択された2つのリングオシレータは発振して、発振信号を出力する。このとき、第1リングオシレータ選択部111により選択されたリングオシレータは、同第1リングオシレータ選択部111を介して第1周波数カウント部121に発振信号を入力する。第2リングオシレータ選択部112により選択されたリングオシレータは、同第2リングオシレータ選択部112を介して第2周波数カウント部122に発振信号を入力する。
ステップS302d:第1周波数カウント部121及び第2周波数カウント部122は、それぞれ入力された発振信号から発振周波数を計測する。ここで、第1周波数カウント部121は、発振周波数F1を計測し、第2周波数カウント部122は、発振周波数F2を計測する。そして、計測したF1及びF2を、入力値設定部15に入力する。
ステップS303:入力値設定部15は、上述のように計測された発振周波数F1,F2に基づいて選択された入力値データの候補が、設定されるべき入力値データとして相応しいか否か、つまり選択された候補が失敗であったか否かを判別する。具体的には、入力値設定部15は、入力されたF1及びF2から、周波数の差分D=F2−F1を計算し、差分DとステップS301で受け付けた出力設定値との間に矛盾がなく、かつ、差分Dの絶対値が入力設定用閾値以上であれば、選択された候補が失敗でないと判別する。この場合、後述するステップS304で説明するように、入力値設定部15は、そのときの(N1,N2)について、N1を第1入力値データ、N2を第2入力値データとして、入力値保管部14に入力し、出力設定値を消去する。ここで、「差分Dと出力設定値との間に矛盾がない」とは、出力設定値が0の場合には差分Dが負の値または0であることを意味し、出力設定値が1の場合には差分Dが正の値であることを意味する。上記の条件を満たさない場合には、入力値設定部15は、選択された候補が失敗と判別する。この場合、後述するステップS305で説明するように、別の候補(N1,N2)を生成して、ステップS302a〜S302dを繰り返し実行する。なお、全ての(N1,N2)の組み合わせについて、上記の条件を満たすような(N1,N2)が見つからなかった場合には、後述するステップS306で説明するように、入力値設定部15は、出力設定値と、上述の退避要求信号に相当する入力値設定失敗信号とを出力ビット制御部18に入力した後、出力設定値を消去する。
ステップS304:入力値保管部14は、入力値設定部15から入力されるN1、N2、すなわち失敗でないと判別された第1入力値データの候補N1と第2入力値データの候補N2とを、それぞれ設定されるべき第1入力値データおよび第2入力値データとして保管し、「入力値データの設定」処理を終了する。
ステップS305:入力値設定部15は、選択された第1入力値データの候補N1および第2入力値データの候補N2がステップS303で失敗と判別されると、その候補N1,N2以外の他の候補があるか否かを判別する。ここで、入力値設定部15は、他の候補があると判別すると、ステップS302からの処理を繰り返し、他の候補がないと判別すると、ステップS306の処理を実行する。
ステップS306:入力値設定部15は、上述のように他の候補がないと判別すると、出力ビット制御部18に対して、出力設定値と入力値設定失敗信号とを出力する。出力ビット制御部18は、入力値設定失敗信号と出力設定値を受け付けて、出力設定値(出力設定値を示す出力ビット)を、出力ビット保管部19に入力する。出力ビット保管部19は、出力設定値を保管し、「入力値データの設定」処理を終了する。
(出力ビットの算出)
図16は、PUF回路1が出力ビットを算出するときの動作を示すフローチャートである。
「出力ビットの算出」処理は、PUF回路1の外部からトリガ信号が入力されたときに実行される。この処理により、PUF回路1は、内部にセキュアに保持する1ビットの出力ビットをPUF回路1の外部に出力する。具体的には、PUF回路1へのトリガ信号が入力されると、以下の一連の動作を行う。
ステップS401:出力ビット制御部18は、出力ビット保管部19に出力設定値(出力設定値を示す出力ビット)が保管されているかどうかを確認して、保管されている場合には、その出力設定値(1ビット)をPUF回路1からの出力ビットとして出力して、「出力ビットの算出」処理を終了する。出力設定値が保管されていない場合には、ステップS402に進む。
ステップS402:入力値保管部14は、内部に保管する第1入力値データを第1リングオシレータ選択部111に、第2入力値データを第2リングオシレータ選択部112にそれぞれ入力する。
ステップS403:第1リングオシレータ選択部111は、第1入力値データに基づいて、第1リングオシレータ101〜第8リングオシレータ108の中から1つを選択する。また、第2リングオシレータ選択部112は、第2入力値データに基づいて、第1リングオシレータ101〜第8リングオシレータ108の中から1つを選択する。
ステップS404:ステップS403において選択された2個のリングオシレータにそれぞれトリガ信号が入力され、発振動作が行われて、発振信号が出力される。このとき、出力された発振信号は、それぞれ、第1リングオシレータ選択部111及び第2リングオシレータ選択部112を介して、第1周波数カウント部121及び第2周波数カウント部122に入力される。
ステップS405:第1周波数カウント部121および第2周波数カウント部122は、それぞれ入力される発振信号の発振周波数F1、F2を計測し、出力ビット決定部13及び入力値再設定判定部16に入力する。
ステップS406:出力ビット決定部13は、入力される発振周波数F1、F2の大小関係を比較して、比較結果に基づいて、既に述べた判定規則に従い、1ビットの出力ビットを決定して、出力ビット制御部18に入力する。出力ビット制御部18は、入力された出力ビットを一時保管する。
ステップS407:入力値再設定判定部16は、閾値保管部17に保管されている入力値再設定判定用閾値を読み出す。次に、入力値再設定判定部16は、入力される発振周波数F1、F2から、周波数差分D=F2−F1を計算し、差分Dの絶対値が、前記入力値再設定判定用閾値以上であるか確認する。もしも、前記閾値未満であれば、入力値再設定判定部16は、入力値設定部15に、入力値再設定要求信号を入力する。一方、前記閾値以上であれば、入力値再設定判定部16は何も行わない。
ステップS408:入力値設定部15は、入力値再設定要求信号を受け付けると、後で説明する入力値データの再設定処理を実行する。この処理の結果、「入力値保管部14に保管する第1入力値データN1、第2入力値データN2を更新する」か、「入力値再設定失敗信号を出力ビット制御部18に送信する」か、のいずれかが行われる。
ステップS409:出力ビット制御部18は、出力ビット決定部13から入力されて一時保管されている1ビットの出力ビットをPUF回路1の出力ビットとして出力する。入力値設定部15から、入力値再設定失敗信号を受け取っていない場合には、出力ビット制御部18は、そのまま出力ビットの算出を終了する。入力値再設定失敗信号を受け取った場合には、出力ビット制御部18は、更に前記1ビットの出力ビットを、出力設定値として出力ビット保管部19に入力する。そして、出力ビット保管部19は、前記出力設定値を内部に保管して、「出力ビットの算出」処理を終了する。
(入力値データの再設定)
図17は、PUF回路1が入力値データを再設定するときの動作を示すフローチャートである。
「入力値データの再設定」処理は、上述の「出力ビットの算出」処理において、入力値設定部15が入力値再設定要求信号を受け付けた場合に実行するサブルーチン処理である。「入力値データの再設定」処理は、以下のようにして行う。
ステップS501:入力値設定部15は、入力設定用閾値と出力設定値を特定する。つまり、入力値設定部15は、閾値保管部17に保管する入力設定用閾値を読み込む。さらに、入力値設定部15は、「出力ビットの算出」のステップS405において、第1周波数カウント部121から入力された発振周波数F1と、第2周波数カウント部122から入力された発振周波数F2との大小関係を比較し、F2>F1であれば、出力設定値を「1」とし、そうでなければ、出力設定値を「0」とする。
ステップS502:入力値設定部15は、入力値データの候補を選択して、その候補における第1周波数カウント部121および第2周波数カウント部122による発振周波数の計測を実行させる。即ち、入力値設定部15は、第1入力値データの候補としてN1=000(2進数)〜111(2進数)の中から何れか1つを選択し、第2入力値データの候補としてN2=000(2進数)〜111(2進数)の中から何れか1つを選択する。そして、入力値設定部15は、(第1入力値データの候補,第2入力値データの候補)=(N1,N2)の組み合わせによって選択されるリングオシレータを用い、第1周波数カウント部121および第2周波数カウント部122による発振周波数の計測を実行させる。具体的には、PUF回路1は以下の動作を実行する。
ステップS502a:入力値設定部15は、第1入力値データ及び第2入力値データの候補として(N1,N2)を生成し、第1リングオシレータ選択部111にN1を、第2リングオシレータ選択部112にN2を、それぞれ入力する。
ステップS502b:第1リングオシレータ選択部111は、前記N1に基づいて、前に述べた規則に従い、第1リングオシレータ101〜第8リングオシレータ108の中から1つのリングオシレータを選択する。第2リングオシレータ選択部112は、前記N2に基づいて、前に述べた規則に従い、第1リングオシレータ101〜第8リングオシレータ108の中から1つのリングオシレータを選択する。
ステップS502c:ここで、ステップS502bで選択された2個のリングオシレータにトリガ信号が入力されると、選択された2つのリングオシレータは発振して、発振信号を出力する。このとき、第1リングオシレータ選択部111により選択されたリングオシレータは、同第1リングオシレータ選択部111を介して第1周波数カウント部121に発振信号を入力する。第2リングオシレータ選択部112により選択されたリングオシレータは、同第2リングオシレータ選択部112を介して第2周波数カウント部122に発振信号を入力する。
ステップS502d:第1周波数カウント部121及び第2周波数カウント部122は、それぞれ入力された発振信号から発振周波数を計測する。ここで、第1周波数カウント部121は、発振周波数F1を計測し、第2周波数カウント部122は、発振周波数F2を計測する。そして、計測したF1及びF2を、入力値設定部15に入力する。
ステップS503:入力値設定部15は、上述のように計測された発振周波数F1,F2に基づいて選択された入力値データの候補が、設定されるべき入力値データとして相応しいか否か、つまり選択された候補が失敗であったか否かを判別する。具体的には、入力値設定部15は、入力されたF1及びF2から、周波数の差分D=F2−F1を計算し、差分DとステップS501で特定した出力設定値との間に矛盾がなく、かつ、差分Dの絶対値が入力設定用閾値以上であれば、選択された候補が失敗でないと判別する。この場合、後述するステップS504で説明するように、入力値設定部15は、そのときの(N1,N2)について、N1を第1入力値データ、N2を第2入力値データとして、入力値保管部14に入力し、出力設定値を消去する。ここで、「差分Dと出力設定値との間に矛盾がない」とは、出力設定値が0の場合には差分Dが負の値または0であることを意味し、出力設定値が1の場合には差分Dが正の値であることを意味する。上記の条件を満たさない場合には、入力値設定部15は、選択された候補が失敗と判別する。この場合、後述するステップS505で説明するように、別の候補(N1,N2)を生成して、ステップS502a〜S502dを繰り返し実行する。なお、全ての(N1,N2)の組み合わせについて、入力設定用閾値に基づく上記の条件を満たすようなものがなかった場合には、後述するステップS506で説明するように、入力値設定部15は、出力設定値と、上述の退避要求信号に相当する入力値再設定失敗信号とを出力ビット制御部18に入力する。そして、出力設定値を消去する。
ステップS504:入力値保管部14は、入力値設定部15から入力されるN1、N2、すなわち失敗でないと判別された第1入力値データの候補N1と第2入力値データの候補N2とを、それぞれ設定されるべき第1入力データおよび第2入力データとして保管し、「入力値データの再設定」処理を終了する。
ステップS505:入力値設定部15は、選択された第1入力値データの候補N1および第2入力値データの候補N2がステップS503で失敗と判別されると、その候補N1,N2以外の他の候補があるか否かを判別する。ここで、入力値設定部15は、他の候補があると判別すると、ステップS502からの処理を繰り返し、他の候補がないと判別すると、ステップS506の処理を実行する。
ステップS506:入力値設定部15は、上述のように他の候補がないと判別すると、出力ビット制御部18に対して、出力設定値と入力値再設定失敗信号とを出力する。出力ビット制御部18は、入力値再設定失敗信号と出力設定値を受け付けて、出力設定値を、出力ビット保管部19に入力する。出力ビット保管部19は、出力設定値を保管し、「入力値データの再設定」処理を終了する。
(PUF回路1の動作概要)
以上の動作を元に、本実施の形態におけるPUF回路1の動作は、以下の通りである。
PUF回路1が製造された後に、PUF回路1は「入力値データの設定」処理を行い、1または0の出力ビットを設定する。その後、PUF回路1は「出力ビットの算出」処理を行い、「入力値データの設定」処理により設定された1ビットの出力ビットを出力する。その際、PUF回路1は、入力値保管部14に設定している入力値データ(N1,N2)によって選択される2つのリングオシレータの周波数差が、経年変化などにより、所定の閾値未満になったと検知した場合には、「入力値データの再設定」処理を行い、前記入力値データの再設定を行う。
本実施の形態においては、リングオシレータを構成する回路の周波数特性の経年変化により、設定された入力値データによって選択される2つのリングオシレータの周波数差が所定の閾値未満になったことを検知して、周波数差が所定の閾値以上になるように、入力値データを再設定する。一方、従来では、上記のような経年変化により、リングオシレータの周波数差が小さくなり、外部環境の変化によって周波数の大小関係が逆転する恐れが高くなったとしても、入力値データを再設定するような仕組みは備えていない。従って、経年変化による周波数特性の変化に対して、PUF回路1は、従来の構成よりも、出力ビットの安定性という点で向上しているといえる。
また、本実施の形態では、入力設定用閾値及び入力値再設定判定用閾値という2つの値を導入して、閾値保管部17に保管している。従来では、これらの値をPUF回路内部に保管することはない。しかし、これらの値は、リングオシレータの周波数差分の絶対値に関する閾値なので、この値から、出力ビットの算出処理において選択されるリングオシレータの発振周波数の大小関係を推測することはできない。即ち、これらの値から、1ビットの出力ビットを推測することはできず、本実施の形態におけるPUF回路1においても、従来のPUF回路と同様に安全に秘密データを保持することが可能である。
また、本実施の形態では、経年変化によるリングオシレータの周波数特性の変化が進んで、入力値データの再設定処理において、所定の閾値以上の周波数差となるリングオシレータペアが見つからなかった場合には、出力ビットを出力ビット保管部19に保管し、以降は、この出力ビット保管部19に保管されている出力ビットを出力する。これは、入力値データの再設定によって、これ以上安定した出力ビットをPUFの構成により保持することが困難と判断した場合には、出力ビットをそのまま保持することで、出力ビットの安定性を保持し続けようとするものである。これにより、出力ビットの安全性は、PUFで記憶している場合と比べて低下する。しかし、鍵データのような数十ビット〜数百ビットの秘密データのうち、仮に1ビットだけが解析され露呈したとしても、致命的な安全性低下に繋がることは稀であるので、実質的に安全性上に著しい問題を生じることはない。なお、上記の仕組みは、高い安全性を有するPUF回路を実現する場合には、削除してもよい。
以上にて述べたように、本実施の形態では、PUF回路において、リングオシレータの周波数差分が所定の閾値未満になったことを検知すると、周波数差が閾値以上となるようなリングオシレータを選択するように入力値データを再設定する。これによって、リングオシレータの周波数特性が経年変化しても、PUF回路の出力ビットの安定性を向上することができる。即ち、経年変化が起こっても、出力ビットが反転してしまわないようなPUF回路を用いた情報セキュリティ装置を提供することが可能である。
(実施の形態3)
次に、本発明の実施の形態3について、図面を参照しながら説明する。実施の形態3では、実施の形態2に加えて、更に、PUF回路の外部で行う誤り訂正符号を用いた誤り訂正、もしくは、誤り検出の結果を元に、入力値データの再設定処理を実行する構成を追加することで、周波数の経年変化に対するPUF回路の出力ビットの安定性をより向上させた構成となっている。
(PUF回路4の構成)
図18は、実施の形態3に係るPUF回路4の内部構成の一例を示したブロック図である。PUF回路4は、実施の形態1およびその変形例における第1のPUF11041A〜11041Iのそれぞれに相当し、図13の実施の形態2におけるPUF回路1とほぼ同じ構成である。すなわち、PUF回路4は、第1〜第8リングオシレータ101〜108と、第1〜第2リングオシレータ選択部111〜112と、第1〜第2周波数カウント部121〜122と、出力ビット決定部13と、入力値保管部14と、入力値設定部45と、入力値再設定判定部16と、閾値保管部17と、出力ビット制御部18と、出力ビット保管部19とからなる。
PUF回路1と唯一異なる点は、PUF回路4は、外部から入力値再設定要求信号が入力され、入力値設定部45は前記入力値再設定要求信号を受け付ける点である。つまり、本実施の形態における入力値設定部45は、実施の形態2の入力設定部15と同様の機能を有するとともに、PUF回路4の外部から入力値再設定要求信号を取得したときには、入力値再設定判定部16から入力値再設定要求信号を取得したときと同様、実施の形態2における「入力値データの再設定」処理を実行する。
本実施の形態における情報生成用PUF部は、このようなPUF回路4を9個備え、3ビットの秘密データであるハッシュ鍵をセキュアに保持することができる。
図19は、本実施の形態における情報生成用PUF部にハッシュ鍵を設定する方法を説明するための図である。
情報生成用PUF部1104aは、9つのPUF回路4と、9つのPUF回路4から出力される出力ビットを連結するビット連結部302とを備える。ビット連結部302は、実施の形態1のハッシュ鍵生成部11042と同様の機能を有する。このような情報生成用PUF部1104aに3ビットのハッシュ鍵を設定するときには、誤り訂正符号生成部300と、ビット分割部301とを用いる。ハッシュ鍵の設定処理は、情報生成用PUF部1104aが製造された後で、ハッシュ鍵が設定されていない状態において行われる処理である。
誤り訂正符号生成部300は、3ビットのハッシュ鍵に対して誤り訂正符号化を行って、ハッシュ鍵に対する誤り訂正符号を生成する。ビット分割部301は、誤り訂正符号生成部300が生成した誤り訂正符号をビット単位に分割して、各ビットをそれぞれ各PUF回路4に出力設定値として入力する。以下、具体的な例を挙げてハッシュ鍵の設定処理について説明する。
まず、ハッシュ鍵Mを誤り訂正符号生成部300に入力する。誤り訂正符号生成部300は、ハッシュ鍵Mに対する誤り訂正符号(誤り訂正符号語C)を、以下のように生成する。まず、ハッシュ鍵MをM=(m1、m2、m3)とする。ここで、m1、m2、m3は、それぞれ1ビットの値であり、m1はMの最上位ビット、m2はMの上位から2ビット目のビット、m3は、Mの最下位ビットとする。このとき、誤り訂正符号生成部300は、Mに対する誤り訂正符号語Cを9ビットの値C=(m1、m1、m1、m2、m2、m2、m3、m3、m3)として決定する。例えば、M=101(2進数)の場合、C=111000111(2進数)であり、M=011(2進数)の場合、C=000111111(2進数)である。誤り訂正符号生成部300は、こうして得られた9ビットの誤り訂正符号語Cをビット分割部301に入力する。ビット分割部301は、入力された9ビットのCを上位から1ビットずつ分割して、各ビットをそれぞれ9つのPUF回路4に入力する。9つのPUF回路4は、それぞれ入力された1ビットデータを出力設定値として、実施の形態2におけるPUF回路1の「入力値データの設定」処理と全く同じ処理を行う。
図20は、本実施の形態における情報セキュリティ装置1100aの構成を示す図である。
本実施の形態における情報セキュリティ装置1100aは、情報生成用PUF部1104aと、誤り訂正処理部303と、排他的論理和部305と、ビット分割部306と、復号化部304と、入力部1101と、ハッシュ生成部1103と、出力部1102とからなる。なお、本実施の形態における入力部1101、ハッシュ生成部1103および出力部1102は、実施の形態1の情報セキュリティ装置1100における入力部1101、ハッシュ生成部1103および出力部1102と同じである。
トリガ信号が情報生成用PUF部1104aの9つのPUF回路4に入力されると、各PUF回路4は、実施の形態2における「出力ビットの算出」処理と同じ処理を行って、それぞれ1ビットの出力ビットを出力する。ビット連結部302は、9つのPUF回路4の順列に従って、1番目のPUF回路4の出力ビットが最上位ビットとなり、9番目のPUF回路4の出力ビットが最下位ビットとなるように、ビット連結を行うことにより、誤り訂正前のハッシュ鍵を9ビットデータとして生成し、誤り訂正処理部303と排他的論理和部305とに入力する。なお、本実施の形態では、ビット連結部302が、複数のPUF回路4から出力される出力値を結合する結合部として構成されている。
誤り訂正処理部303は、入力された9ビットデータに対して誤り訂正を行い、その結果の9ビットデータを出力する。
図21は、誤り訂正処理部303の構成を示す図である。
誤り訂正処理部303は、誤り訂正部1105aと、誤り訂正情報生成部1108と、誤り訂正用PUF部1106と、誤り訂正部分情報格納部1107とを備えている。本実施の形態における誤り訂正情報生成部1108、誤り訂正用PUF部1106、および誤り訂正部分情報格納部1107は、実施の形態1における誤り訂正情報生成部1108、誤り訂正用PUF部1106、および誤り訂正部分情報格納部1107と同じである。
また、本実施の形態における誤り訂正部1105aは、実施の形態1における誤り訂正部1105と同様に排他的論理和の演算を実行するが、3ビットの繰り返し符号を1ビットにするような復号化は実行しない。つまり、誤り訂正部1105aは、誤り訂正前のハッシュ鍵である9ビットデータと誤り訂正情報との排他的論理和を取って、その結果である9ビットデータを復号化部304と排他的論理和部305とに入力する。
復号化部304は、誤り訂正処理部303から入力された9ビットデータを、3ビットの繰り返し符号に分割し、各3ビットの繰り返し符号を1ビットに復号化する。つまり、本実施の形態における誤り訂正部1105aと復号化部304とにより、実施の形態1の誤り訂正部1105が実現される。
具体的に、復号化部304は、入力された誤り訂正結果の9ビットデータから誤り訂正符号化のために付加した冗長性を除去して、3ビットの訂正後ハッシュ鍵を出力する。つまり、復号化部304は、上述の9ビットデータを上位から3ビットずつ分割し、各3ビットデータについて、000(2進数)の場合は0(2進数)に、111(2進数)の場合は1(2進数)に変換した後、再び連結して3ビットデータとする。これにより、「入力値データの設定」処理において各PUF回路4に設定したハッシュ鍵である3ビットと同じデータが得られる。ここで、上記に用いた誤り訂正符号は、情報ビットに対して情報ビットと同じ値2ビットを冗長ビットとして付加する繰り返し符号であり、3ビット(情報ビット1ビットと冗長ビット2ビット)のうち1ビットに誤りが生じてデータが反転しても、誤りを検知して訂正することが可能である。
なお、誤り訂正処理部303は、以下のようにして誤り訂正処理を行ってもよい。すなわち、誤り訂正処理部303は、入力された9ビットデータを、上位から3ビットずつに分割して、c1、c2、c3とする。次に、c1、c2、c3のそれぞれについて、ハミング重み(1の立っているビットの数)を計算する。そして、ハミング重みが2以上であれば、111(2進数)とし、ハミング重みが1以下であれば、000(2進数)とする。例えば、010(2進数)であれば、000(2進数)とし、110(2進数)であれば、111(2進数)とする。そうして得られた3ビット×3個のデータを、上位から、c1の誤り訂正処理結果、c2の誤り訂正処理結果、c3の誤り訂正処理結果の順に連結したものを、最終的な誤り訂正結果の9ビットデータとして、復号化部304及び排他的論理和部305に入力する。
排他的論理和部305は、ビット連結部302から入力された誤り訂正前の9ビットデータと、誤り訂正処理部303から入力された誤り訂正後の9ビットデータとの排他的論理和演算を行い、その演算結果である9ビットデータをビット分割部306に入力する。これは、誤り訂正前と訂正後のデータを比較して、誤り訂正が行われたビット位置に1を立てる処理を行っていることと同じである。つまり、本実施の形態では、排他的論理和部305が、情報生成用PUF部1104aから出力されるハッシュ鍵に誤りが生じたか否かを判別する誤り判別手段として構成されている。
ビット分割部306は、入力された9ビットデータを上位から1ビットずつ分割して、各ビットをそれぞれ各PUF回路4に入力する。これにより、誤り訂正が行われたビットを出力したPUF回路4には、1ビットデータ「1」が入力値再設定要求信号として入力され、誤り訂正が行われなかったビットを出力したPUF回路4には、1ビットデータ「0」が入力されることになる。 つまり、本実施の形態では、ビット分割部306が、情報生成用PUF部1104aに対して、ハッシュ鍵の再設定を要求する再設定要求手段として構成されている。
入力値再設定要求信号が入力されたPUF回路4は、上記実施の形態2と同様の「入力値データの再設定」処理を実行する。つまり、PUF回路4は、図17を用いて上述のように説明した処理を実行する。但し、PUF回路4の入力値設定部45は、ステップS501において出力設定値を特定するときには、既に出力ビットに誤りが生じているため、上述とは逆の規則に基づいて出力設定値を特定する。例えば、入力値設定部45は、第1周波数カウント部121から入力された発振周波数F1と、第2周波数カウント部122から入力された発振周波数F2との大小関係を比較し、F2≦F1であれば、出力設定値を「1」とし、そうでなければ、出力設定値を「0」とする。
なお、本実施の形態では、PUF回路4の入力値設定部45が、ハッシュ鍵の再設定を行う再設定部として構成されている。
本実施の形態では、誤りが発生していると検知されたビット(誤り訂正が行われたビット)については、そのビット値を生成したPUF回路に対して入力値データの再設定処理を指示することが特徴である。この構成により、実施の形態2では得られなかった以下のような効果がある。例えば、実施の形態2の場合は、入力値再設定判定用閾値をRとしたとき、リングオシレータの周波数特性が急激に変化し、発振周波数の差分(F2−F1)が、元々はF2−F1>Rであったものが、F2−F1<−Rとなるように変化した場合、PUF回路の出力ビット値は反転してしまい、更に、F2−F1の絶対値は、R以上になるために、入力値の再設定処理は行われない。しかし、本実施の形態においては、上記の出力ビットの反転が検知され、入力値の再設定処理が行われるために、適切に入力値データが再設定される。このように、本実施の形態においては、リングオシレータの急激な周波数特性変化についても、適切に入力値データの再設定が行われ、出力ビットの安定性が保たれる。
なお、本実施の形態では、出力ビットに誤りが生じたときには、その出力ビットを出力したPUF回路4、つまり入力値再設定要求信号を取得したPUF回路4は、入力値データの再設定を行ったが、入力値データの再設定を行うことなく、出力すべき出力ビットの値、すなわち出力設定値を出力ビット保管部19に格納してもよい。
図22は、入力値再設定要求信号を取得したPUF回路4の他の動作を示すフローチャートである。
まず、入力値再設定要求信号を取得した入力値設定部45は出力設定値を特定する(ステップS601)。このとき、入力値設定部45は、上述と同様、既に出力ビットに誤りが生じているため、第1周波数カウント部121から入力された発振周波数F1と、第2周波数カウント部122から入力された発振周波数F2との大小関係を比較し、F2≦F1であれば、出力設定値を「1」とし、そうでなければ、出力設定値を「0」とする。
そして、入力値設定部45は、特定した出力設定値と退避要求信号とを出力ビット制御部18に出力することにより、その出力ビット制御部18にその出力設定値(出力設定値を示す出力ビット)を出力ビット保管部19に格納させる(ステップS602)。
このように、入力値再設定要求信号を取得したPUF回路4が入力値データの再設定を行わず出力設定値を出力ビット保管部19に格納する場合には、PUF回路4における今後の処理負担を軽減し、出力ビットを安定させることができる。
(変形例)
上記に説明した実施の形態1〜3は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
(1)情報セキュリティ装置及び誤り訂正情報生成装置で使用する誤り訂正符号は、繰り返し符号であるが、これに限らない。誤り訂正符号であれば何でもよい。例えば、リード・ソロモン符号などの代数的符号や畳み込み符号であってもよい。また、符号長(ビットや要素の数)を9とし、情報記号数を3としていたが、これに限らない。安全性の面では、訂正後ハッシュ鍵は80ビット以上である方がよい。
(2)情報セキュリティ装置では、鍵付ハッシュ値を出力するとしているが、これに限らない。秘密の鍵を用いて入力データを変換した変換データを出力すればよい。変換データは、鍵付ハッシュ値の他に、暗号文、復号文、署名データなどがある。
(3)情報セキュリティ装置では、PUF回路を使用しているが、これだけに限らない。PUF回路の代わりに、秘密の情報を出力可能な耐タンパー回路であればよい。また、環境や経年劣化により出力が変化する耐タンパー回路であってもよい。耐タンパー回路として、特許文献2(特開2006−060109号公報)に記載されている、識別情報生成回路を使用してもよい。識別情報生成回路は、電源をオンした際のフリップフロップやRAM、StaticRAMの各メモリセルから最初に出力される論理信号から、固有の識別コードを生成する。なお、PUFには、スペックルパタンを利用したOptical PUF、ゲート遅延を利用したSilicon PUF、誘電率を利用したCoating PUF、およびノイズ音を利用したAcoustic PUFなどがある。
(4)誤り訂正情報生成装置の環境変化部では、PUF回路の周囲の温度を変化させるとしていたが、他の環境変化、例えば、電圧変化であってもよい。また、環境変化ではなく、現在の環境を取得して、環境変化解析部へ現在の環境を知らせる構成でもよい。
(5)第2のPUF回路において、差分から“0”から“7”までの値への変換するルールは予め、固定化したものを与えているが、この変換ルールを誤り訂正情報生成装置が決定して第2のPUF回路に埋め込む、もしくは誤り訂正部分情報格納部に格納してもよい。また、第2のPUF回路の誤り訂正情報を誤り訂正部分情報格納部に格納してもよい。この場合、第2のPUF回路の誤り訂正情報を用いて、誤り訂正用PUF情報を知り、誤り訂正部分情報から第1のPUF回路の誤り訂正情報を攻撃者が知ることが可能になる。しかし、攻撃者の解析に要する処理量が大きくなるため、安全性の向上としては有効である。さらに、PUF回路をさらに第3、第4、・・・と追加して、誤り訂正情報を攻撃者がより求めにくくしてもよい。
(6)実施の形態では、2個のリングオシレータの発振周波数の大小関係から1ビットまたは3ビットの出力ビットを決定していたが、これは2個とは限らず、3個以上のリングオシレータであってもよい。このとき、例えば、3個のリングオシレータの周波数が、A、B、Cのとき、A、B、Cの大小関係の全パタンと出力ビットの対応関係が予めルールとして決定されていれば良い。また、このとき入力値再設定判定部における判定方法としては、A、B、Cを周波数の大きい順に並べた上で、(1番目の周波数)と(2番目の周波数)の差分と(2番目の周波数)と(3番目の周波数)の差分をそれぞれ計算し、各差分値が所定の閾値以上であるかどうかをチェックすることで、判定すればよい。
(7)実施の形態では、「入力値データの設定」処理および「入力値データの再設定」処理において、入力値設定用閾値以上の差分を有する入力値ペア(N1,N2)が見つかった時点で、その値を、入力値保管部に設定あるいは再設定していたが、これは、まず全ての入力値ペア(N1,N2)について、周波数の差分値を求めた上で、差分値の一番大きくなる(N1,N2)を選び、そのときの差分値が入力値設定用閾値以上であれば、選んだ値を入力値保管部に設定あるいは再設定し、上記閾値未満であれば、入力値設定失敗信号あるいは入力値再設定失敗信号を送付するようにしてもよい。
(8)閾値保管部に保管する入力設定用閾値及び入力値再設定判定用閾値は、必ずしもPUF回路の製造時に設定する必要はなく、製造後に、設定するようにしても良い。また、一度設定した後でも、再設定ができるようにしても良い。つまり、入力設定用閾値及び入力値再設定判定用閾値の少なくとも一方を更新してもよい。例えば、PUF回路が出力ビット算出処理を所定回数行うたびに、閾値を変更したり、入力値データの再設定処理の際に、現在設定されている入力設定用閾値を満たすリングオシレータペアが存在しない場合には、今の閾値よりも小さくするようにその閾値を変更したり、してもよい。
(9)入力値再設定判定部による入力値再設定判定は、出力ビット算出処理を行うごとに毎回行う必要はなく、所定回数出力ビット算出処理を行うごとに行うようにしてもよいし、外部からの指示信号を受け付けたときに行うようにしてもよい。
(10)本実施の形態では、発振回路としてリングオシレータを用いた場合の構成を示しているが、これは固体振動子発振回路、CR発振回路、LC反結合発振回路、など発振回路であれば何でもよい。
(11)実施の形態では、1つのPUF回路から出力されるデータは1ビットまたは3ビットであったが、これは1ビットまたは3ビットに限定されず、発振周波数の大小関係から出力ビットを決定する決定ルールを予め決めておけば、2ビットや4ビット以上であってもよい。
(12)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(13)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
(14)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なIC(Integrated Circuit)カードまたは単体のモジュールから構成されているとしてもよい。例えば、図4に示す情報セキュリティ装置1100の全体をICカードとして構成したり、その情報セキュリティ装置1100のうち情報生成用PUF部1104と、誤り訂正部1105と、誤り訂正情報生成部1108と、誤り訂正用PUF部1106と、誤り訂正部分情報格納部1107とをICカードとして構成してもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(15)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
(16)また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記ディジタル信号であるとしてもよい。
(17)また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
(18)また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
(19)また、前記プログラムまたは前記ディジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(20)上記実施の形態1〜3及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明に係る情報セキュリティ装置は、メモリに格納された情報を用いても、PUFにより秘匿された鍵値などの秘密データを攻撃者が知ることができなくなり、PUFの安全性が低下しないようにすることができるという効果を奏し、例えば、ICカードなどに適用することができる。また、本発明にかかる情報セキュリティ装置は、鍵データやIDデータなどの秘密データをセキュアかつ安価に保持しつつ、従来技術よりも、経年変化に対する秘密データの安定性を向上させるという特徴を有するので、高セキュリティ、低コスト、かつ高安定性での実現が求められる情報セキュリティ装置の実現に有用である。
本発明は、認証や暗号を実現するシステムに関するものであり、暗号処理で用いる鍵などの秘密データや、機器固有のIDデータを解析から保護された形でセキュアに実装する情報セキュリティ装置に関する。
近年、デジタルコンテンツの著作権保護やネット上の通信データの秘匿を目的として、各種民生機器などで暗号処理を行うケースが多くなってきた。暗号処理においては、その処理に用いる鍵やIDデータを機器内に蓄積する必要があり、著作権保護システムや秘話通信システムの安全性は、前記鍵やIDデータの秘匿性に大きく依存する。従って、そういった秘密データを、機器外部からの解析から保護された形でセキュアに蓄積する必要がある。
秘密データをセキュアに蓄積する典型的な従来方法としては、耐タンパー性の高いハードウェアチップ(耐タンパーチップ)内に蓄積する方法や、耐タンパーが施されたソフトウェアプログラム内に埋め込むような方法があった。しかし、前者の方法では、秘密データの高い秘匿性は実現できるものの特殊な専用チップが必要となるためコストが高くなるという問題があり、後者の方法では、一般的には余り高い秘匿性は実現できず、時間をかけて解析を行うことで秘密データが露呈してしまう可能性があった。
耐タンパーチップのような特殊なハードウェアを必要とせず、秘密データの高い秘匿性を実現可能な方法として、PUF(Physically Uncloanable Function)と呼ばれる技術がある。PUFとは、デバイスの物理的な特性を利用して、物理的な解析に対しても耐性があるような秘密データの蓄積方法である。PUFの具体的な方法は、各種があるが、中でも特許文献1に開示のSilicon PUFと呼ばれる方法は、製造に特殊な環境や設備を必要としないことから、安価な製造コストで高い耐タンパー性を実現でき、低コスト性が要求される民生機器などに特に適した方法といえる。
(Silicon PUFの概要)
図1は、従来のSilicon PUFを実現する回路の構成を示した図である。図1において、PUF回路2000は、トリガ信号を入力すると、1ビットの秘密データを出力する回路である。
PUF回路2000は、8個のリングオシレータ(第1リングオシレータ2001〜第8リングオシレータ2008)と、入力データに基づいて前記8個のリングオシレータのうちから1個を選択するリングオシレータ選択部(第1リングオシレータ選択部2011及び第2リングオシレータ選択部2012)と、前記リングオシレータ選択部が選択したリングオシレータの発振周波数をカウントする周波数カウント部(第1周波数カウント部2021及び第2周波数カウント部2022)と、カウントした周波数を元にPUF回路2000の出力ビットを決定する出力ビット決定部2030とからなる。以下、PUF回路2000の動作を説明する。
まず、リングオシレータ選択部2011、2012はそれぞれ、8個のリングオシレータ2001〜2008の中から予め決定した1個をそれぞれ選択する。次に、前記リングオシレータ2001〜2008にトリガ信号が入力され、リングオシレータは発振動作を開始する。周波数カウント部2021、2022は、前記リングオシレータ選択部2011、2012が選択したリングオシレータからの出力信号をそれぞれ計測して、リングオシレータの発振周波数を計測する。そして、出力ビット決定部2030は、前記計測した2つの発振周波数を比較し、その大小関係によって、PUF回路2000の出力ビットを決定する。
上記一連の動作により、PUF回路2000にトリガ信号を入力すると、PUF回路2000の内部で出力ビットが1ビットだけ決定され出力される。8個のリングオシレータ2001〜2008は、リングオシレータの段数などの回路構成は同一であるが、製造プロセスにおいて遅延時間など物理的な特性に若干であるがバラつきが生じる。それにより、各リングオシレータの発振周波数は、少しずつ異なった値となる。その異なり方は、PUF回路を製造する際に予測不可能な形で決まり、かつ、PUF回路ごとに違ってくる。このような発振周波数により出力ビットが異なる。また、入力データに対する出力ビットの対応関係は、PUF回路内の各リングオシレータの発振周波数を計測することで解析することができる。しかし、PUF回路に対して、例えばブロービングなどで、外部から発振周波数による解析操作を行うと、リングオシレータの物理特性が変化して、出力ビット計算時と同じ発振周波数を計測することができないので、外部からの解析により、入力データに対する出力ビットの対応関係を調べることは困難である。また、PUF回路は、リングオシレータ、周波数カウンタ、比較器などの組み合わせ回路によって実現できるため、特殊な製造環境や設備を必要とせず、通常のLSI製造環境・設備を用いて安価に製造することが可能である。
(Silicon PUFの課題)
上記のとおり、Silicon PUFの技術により、安価なコストによって、解析困難な形でチップごとに異なった入出力関係を有する関数を実装することが可能となったが、以下のような課題もある。PUF回路の出力ビットは、入力データに基づいて選択されたリングオシレータの発振周波数の大小関係で決定される。先ほど説明したとおり、回路製造時の遅延時間などの物理特性のバラつきによって、リングオシレータの発信周波数にバラつきが生じるが、周波数の差がわずかしかない二つのリングオシレータ間の大小関係は、温度変化など外部の環境によって逆転してしまう恐れがある。例えば、ある入力データによって、二つのリングオシレータA及びBが選択され、発振周波数がそれぞれ1256Hz、1245Hzと計測されたとする。このとき、出力ビット値は、[Aの発振周波数]>[Bの発振周波数]から“1”と判定される。また、別のタイミングで同じ入力データを、このPUF回路に入力すると、同じリングオシレータA及びBが選択されるが、このとき、先ほどよりも外部の温度が上昇したとする。その場合、リングオシレータの遅延時間が上昇するので、発振周波数も、それぞれ低下することになるが、その低下の度合いにも、リングオシレータによって若干であるがバラつきがあるので、リングオシレータの元もとの周波数差が僅かしかない場合には、大小関係が反転してしまう恐れがある。上記の例では、リングオシレータAとBとの周波数差は、9Hzしかないので、温度変化によって、[Aの発振周波数]>[Bの発振周波数]という大小関係は反転してしまう恐れがある。即ち、同じ入力データに対して、場合によっては、違う出力ビット値を出力してしまう恐れがあり、出力ビット値の安定性に課題がある。
(Slilicon PUFの改良)
上記課題に対し、従来方法では誤り訂正符号を導入し、出力値(出力ビットの値)の誤りを訂正することで安定性を向上させている。
図2は、従来方法における情報セキュリティ装置3000の構成を示している。情報セキュリティ装置3000は、外部から入力された入力データに対し、PUFを使用して生成した鍵を用いた鍵付ハッシュ値を出力している。鍵付ハッシュ値は、鍵付ハッシュ関数を用いて生成される。鍵付ハッシュ関数については、非特許文献1の189〜195ページに記載されている。
情報セキュリティ装置3000は、外部から入力データを受け付ける入力部3001と、鍵付ハッシュ値を出力する出力部3002と、鍵付ハッシュ値を生成するハッシュ生成部3003と、PUFを用いて鍵を生成するPUF部3004と、誤り訂正情報に基づき、鍵を誤り訂正し訂正後ハッシュ鍵を生成する誤り訂正部3005と、誤り訂正情報を格納する誤り訂正情報格納部3006とを備える。
PUF部3004は先のPUF回路2000を複数、例えば、6個備え、それぞれのPUF回路の出力ビットを連結した6ビットを鍵とする。
情報セキュリティ装置3000の動作を以下に示す。入力部3001は外部のデータの入力を受け付け、これによりPUF部3004内のPUF回路2000にトリガ信号を入力する。PUF回路2000では、出力ビットを生成し、PUF部3004は6つのPUF回路2000の出力ビットを連結したものを鍵とする。その後、誤り訂正部3005は鍵を誤り訂正情報を用いて訂正し訂正後ハッシュ鍵を生成する。さらにハッシュ生成部3003は訂正後ハッシュ鍵を用いて、入力データの鍵付ハッシュ値を生成し、出力部3002がこれを出力する。
誤り訂正情報は、情報セキュリティ装置3000の製造時に、PUF部3004内のPUF回路2000の値を計測して決定する。具体的には、PUF部3004の鍵を複数回計測し、その中で最も高確率に発生する鍵の値を求め、これに対して誤り訂正情報を確定し、誤り訂正情報格納部3006に格納する。
米国特許出願公開第2003/0204743号明細書
岡本龍明、山本博資、"現代暗号"、産業図書(1997年)
しかしながら、上記従来技術では、メモリ(誤り訂正情報格納部3006)に格納された誤り訂正情報を解析することで、誤り訂正部3005からハッシュ生成部3003に入力される訂正後ハッシュ鍵の鍵値が求めやすくなってしまうという問題がある。
例えば、3ビットごとの繰り返し符号を用いて誤り訂正する方法を考える。繰り返し符号では、3ビットのハミング重みを計算し、それが1以下であれば“0”、2以上であれば“1”と復号化する。例えば、“011”であれば、“1”と復号化する。上記のPUF部3004の出力は6ビットであるが、これを2ビットごとの3組に分割し、誤り訂正情報を、3ビットの繰り返し符号の1ビット分を3組合わせた合計3ビットとする。情報セキュリティ装置3000の製造時に、PUF部3004の出力値を計測し、最も高確率に発生する出力値を“11 00 01”であるとする。誤り訂正情報を“X Y Z”(X、Y、Zは0または1)とする。このとき、一つ目の符号は“11X”となるが、これを復号化すると“1”となる。ここで誤りが起こっても正しく復号化できるように“X”を1に設定する。同様に、“Y”を0に設定する。“Z”は0、1のどちらに設定してもよいが、ここでは“1”とする。そうすると、誤り訂正情報は“1 0 1”であり、復号化後の値、すなわち、訂正後ハッシュ鍵は“1 0 1”である。したがって、誤り訂正情報と訂正後ハッシュ鍵が等しくなり、攻撃者が誤り訂正情報を解析することで訂正後ハッシュ鍵を知ることができる。
上記例は、極端なケースで説明しているが、このような誤り訂正方法や誤り訂正情報の設定をしない場合も、攻撃者が誤り訂正情報を用いて訂正後ハッシュ鍵の鍵値を求めやすくなる可能性がある。鍵値が求められると、それをメモリに格納して鍵付ハッシュ関数に使用するPUFのシミュレータを攻撃者が作成し、それを用いた偽造が可能になるため秘匿性が保たれなくなる。
このように、従来技術では、PUFの安全性が低いという課題がある。
そこで本発明は、上記課題を解決するものであって、メモリに格納された情報を攻撃者により解析されても、PUFの安全性が低下しない情報セキュリティ装置を提供することを目的とする。つまり、秘密データの安定性と秘匿性を高めた情報セキュリティ装置を提供することを目的とする。
上記目的を達成するために、本発明に係る情報セキュリティ装置は、予め設定された秘密データを出力する情報セキュリティ装置であって、予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第1の耐タンパー回路と、第1の訂正用データを記憶している訂正用データ記憶手段と、第2の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第2の耐タンパー回路と、前記訂正用データ記憶手段に記憶されている第1の訂正用データと、前記第2の耐タンパー回路から出力される第2の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成手段と、前記訂正情報生成手段により生成された誤り訂正情報を用いて、前記第1の耐タンパー回路から出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正手段とを備えることを特徴とする。例えば、前記第1の耐タンパー回路に設定される秘密データと、前記第2の耐タンパー回路に設定される第2の訂正用データとは、PUF(Physically Unclonable Function)により設定されている。
これにより、秘密データの誤り訂正に直接的に用いられる誤り訂正情報は、従来のようにメモリに格納されておらず、第2の耐タンパー回路を用いて生成されるため、攻撃者に対して誤り訂正情報を見つけ難くすることができ、その結果、第1の耐タンパー回路に設定された秘密データの安全性および秘匿性を高めることができる。さらに、本発明では、周辺温度などの環境変化や経年的な要因によって第1の耐タンパー回路から出力される秘密データに誤りが生じても、誤り訂正情報によってその誤りが訂正されるため、秘密データの安定性を高めることができる。
また、前記情報セキュリティ装置は、さらに、入力データを取得する取得手段と、前記誤り訂正手段から出力される秘密データを鍵として用い、前記鍵により前記入力データを暗号化する暗号化手段とを備えることを特徴としてもよい。
例えば、入力データは鍵付ハッシュ値や暗号文に変換される。これにより、鍵付ハッシュ値や暗号文などの安全性を高めることができる。
また、前記第1の耐タンパー回路は、1ビットの値を前記秘密データの少なくとも一部として出力する1つ以上の第1のPUF回路を備え、前記第2の耐タンパー回路は、2ビット以上の値を前記第2の訂正用データの少なくとも一部として出力する1つ以上の第2のPUF回路を備えることを特徴としてもよい。
例えば、第2のPUF回路から1ビットの値しか出力されないような場合には、ノイズなどによってその値に誤りが生じることがある。しかし、本発明では、第2のPUF回路は2ビット以上の値を出力するため、そのうちの1ビットに誤りが生じても、その誤りを容易に訂正することができ、第2の耐タンパー回路から出力される第2の訂正用データの耐ノイズ性を向上することができる。
また、前記第1の耐タンパー回路は、1つ以上の第1のPUF回路を備え、前記第1のPUF回路は、発振信号を出力するN(N≧2)個の発振部と、前記N個の発振部からM(M≦N)個の発振部を選択する選択部と、前記選択部により選択されたM個の発振部から出力される発振信号の周波数の大小関係に基づいて出力値を決定して出力する決定部とを備え、前記選択部は、前記決定部によって決定される出力値が前記予め定められた秘密データの少なくとも一部を示すようにM個の発振部を選択することを特徴としてもよい。具体的には、前記選択部は、前記M個の発振部から出力される発振信号の周波数の差分が第1の閾値以上となるように前記M個の発振部を選択する。
例えば、選択された2つの発振部から出力される発振信号の周波数の差分が極めて小さい場合には、それらの発振部の物理特性が経年的に変化することによって、それらの周波数の大小関係が反転してしまうことがある。しかし、本発明では、周波数の差分が第1の閾値以上になるようにM個の発振部が選択されるため、それらの発振部の物理特性が経年変化しても、それらの発振部から出力される発振信号の周波数の大小関係が変化してしまうのを抑えることができる。その結果、第1の耐タンパー回路から出力される秘密データに発生する誤りを抑えることができる。
また、前記情報セキュリティ装置は、さらに、前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第1の耐タンパー回路から出力される秘密データとを比較することにより、前記第1の耐タンパー回路から出力される秘密データに誤りが生じたか否かを判別する誤り判別手段と、前記誤り判別手段により誤りが生じたと判別されたときには、前記第1の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、前記第1のPUF回路は、さらに、前記再設定要求手段から再設定の要求を受け付けたときには、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部を備えることを特徴としてもよい。
これにより、第1の耐タンパー回路が出力した秘密データに誤りが生じたときには、予め定められた秘密データが第1の耐タンパー回路に設定し直されるため、誤り訂正の精度を高めることができ、秘密データの安定性をさらに向上することができる。
また、前記第1のPUF回路は、さらに、前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、前記選択部がM個の発振部を選択する際に、前記発振周波数の差分が前記第1の閾値以上となるようなM個の発振部を選択することができないときに、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備えることを特徴としてもよい。
N個の発振部の何れを選択しても、選択されたM個の発振部から出力される発振信号の周波数の差分が第1の閾値未満となってしまう場合には、その第1のPUF回路からの出力値に誤りが生じ易くその信頼性が低くなる。したがって、本発明では、このような場合には、第1のPUF回路が出力すべき、予め定められた秘密データの少なくとも一部が秘密データ用記憶部に格納され、その秘密データの少なくとも一部が出力されるため、第1の耐タンパー回路から出力される秘密データに誤りが生じるのを防ぎ、信頼性を高めることができる。
また、前記第1の耐タンパー回路は、複数の前記第1のPUF回路と、前記複数の第1のPUF回路から出力される出力値を結合することにより秘密データを生成する結合部とを備え、前記誤り判別手段は、前記第1の耐タンパー回路から出力される秘密データに誤りが生じたと判別するときには、さらに、前記複数の第1のPUF回路のうち、誤った出力値を出力する第1のPUF回路を特定し、前記再設定要求手段は、誤った出力値を出力していると特定された第1のPUF回路に対して、出力値が前記予め定められた秘密データの一部を示すように、出力値の再設定を要求することを特徴としてもよい。
これにより、誤った出力値を出力する第1のPUF回路が特定されて、その特定された第1のPUF回路の出力値が再設定されるため、予め定められた秘密データを第1の耐タンパー回路に適切に設定し直すことができる。
また、前記情報セキュリティ装置は、さらに、前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第1の耐タンパー回路から出力される誤り訂正前の秘密データとを比較することにより、前記誤り訂正前の秘密データに誤りが生じたか否かを判別する誤り判別手段と、前記誤り判別手段により誤りが生じたと判別されたときには、前記第1の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、前記第1のPUF回路は、さらに、前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、前記再設定要求手段から再設定の要求を受け付けたときには、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備えることを特徴としてもよい。
第1のPUF回路が一度でも誤った出力値を出力した場合には、その第1のPUF回路の信頼性は疑わしい。したがって、本発明では、このような場合には、その第1のPUF回路が出力すべき出力値である、予め定められた秘密データの少なくとも一部が秘密データ用記憶部に格納され、その秘密データの少なくとも一部が出力されるため、第1の耐タンパー回路から出力される秘密データに誤りが生じるのを防ぎ、信頼性を高めることができる。
また、前記第1のPUF回路は、さらに、前記M個の発振部から出力される発振信号の周波数の差分が第2の閾値未満であるか否かを判別する差分判別部と、前記差分判別部によって前記第2の閾値未満であると判別されると、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部とを備えることを特徴としてもよい。
これにより、第1のPUF回路から出力される出力値の誤りを未然に防ぐことができる。
また、前記第1のPUF回路は、さらに、前記第1および第2の閾値のうちの少なくとも一方を格納している閾値格納部と、前記閾値格納部に格納されている、前記第1および第2の閾値のうちの少なくとも一方を更新する更新部とを備えることを特徴としてもよい。
これにより、予め定められた秘密データを適切なタイミングで設定し直すことができる。
また、上記目的を達成するために、本発明に係るデータ生成装置は、秘密データの誤りを訂正するための第1の訂正用データを生成するデータ生成装置であって、予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第1の耐タンパー回路から出力される出力値を計測する第1の計測手段と、第2の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第2の耐タンパー回路から出力される出力値を計測する第2の計測手段と、前記第1および第2の計測手段によって計測された出力値に基づいて、前記第1の訂正用データを生成するデータ生成手段と、前記データ生成手段によって生成された前記第1の訂正用データを記憶媒体に格納する格納処理手段とを備えることを特徴とする。例えば、前記データ生成手段は、前記第1の計測手段によって計測された出力値と、前記秘密データの示す値との差分を算出することにより、誤り訂正情報を生成する第1の生成手段と、前記第2の計測手段によって計測された出力値と、前記誤り訂正情報の示す値との差分を算出することにより、前記第1の訂正用データを生成する第2の生成手段とを備える。
これにより、第2の訂正用データを用いて誤り訂正情報を生成するために必要な第1の訂正用データを適切に生成することができる。
なお、本発明は、このような情報セキュリティ装置およびデータ生成装置として実現することができるだけでなく、その装置によって行われる処理方法や、その処理方法をコンピュータに実行させるプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
本発明の情報セキュリティ装置は、メモリに格納された情報を用いても、PUFにより秘匿された秘密データを攻撃者が知ることができなくなり、PUFの安全性が低下しないようにすることができ、その価値は大きい。さらに、本発明の情報セキュリティ装置によれば、従来技術のPUF回路と同様に製造コストが安価でセキュアにデータを保管可能という特徴を保持しつつ、かつ、経年変化に対する出力ビット値の安定性を向上できるような情報セキュリティ装置を提供することが可能になるという効果がある。
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
本発明に係る第1の実施の形態としての情報セキュリティシステム1000について、説明する。
図3は、実施の形態1における情報セキュリティシステム1000の構成を示す図である。
本情報セキュリティシステム1000は、秘密データの安定性と秘匿性を高めた情報セキュリティ装置1100と、誤り訂正部分情報を生成して情報セキュリティ装置1100に設定する誤り訂正情報生成装置1200とを備える。なお、本実施の形態では、誤り訂正情報生成装置1200がデータ生成装置として構成されている。
<情報セキュリティ装置1100の構成>
図4は、情報セキュリティ装置1100の構成を示す図である。情報セキュリティ装置1100は、データ(入力データ)の入力を受け付ける入力部1101と、データを出力する出力部1102と、鍵付ハッシュ値を計算するハッシュ生成部1103と、鍵付ハッシュ関数の鍵であるハッシュ鍵を生成する情報生成用PUF部1104と、ハッシュ鍵の誤りを訂正し訂正後ハッシュ鍵を生成する誤り訂正部1105と、誤り訂正用PUF情報を生成する誤り訂正用PUF部1106と、誤り訂正部分情報を格納する誤り訂正部分情報格納部1107と、誤り訂正情報を生成する誤り訂正情報生成部1108とを備える。
なお、本実施の形態では、情報生成用PUF部1104が、予め設定された秘密データたるハッシュ鍵を出力するように設定された第1の耐タンパー回路として構成され、誤り訂正部分情報格納部1107が、第1の訂正用データたる誤り訂正部分情報を記憶している訂正用データ記憶手段として構成されている。また、誤り訂正用PUF部1106が、第2の訂正用データたる誤り訂正用PUF情報を出力するように設定された第2の耐タンパー回路として構成され、誤り訂正情報生成部1108が、誤り訂正情報を生成する訂正情報生成手段として構成されている。さらに、入力部1101が、入力データを取得する取得手段として構成され、ハッシュ生成部1103が、入力データを暗号化する暗号化手段として構成されている。
入力部1101は、外部より入力された入力データを受け付け、ハッシュ生成部1103に入力する。入力部1101は、さらに入力データを受け付けたときに、PUF回路へのトリガを情報生成用PUF部1104と誤り訂正用PUF部1106に入力する。
出力部1102は、鍵付ハッシュ値を出力する。
ハッシュ生成部1103は、誤り訂正部1105で出力された訂正後ハッシュ鍵と入力部1101で受け付けた入力データを用いて、鍵付ハッシュ値を計算し、出力部1102に入力する。
情報生成用PUF部1104は、鍵付ハッシュ関数のハッシュ鍵を生成する。
図5は、情報生成用PUF部1104の構成を示す図である。
情報生成用PUF部1104は、図5に示すように、9つの第1のPUF回路11041A、11041B、11041C、11041D、11041E、11041F、11041G、11041H、11041Iと、第1のPUF回路のビットを連結してハッシュ鍵を生成するハッシュ鍵生成部11042とからなる。後述する第1のPUF回路は1ビットの情報を出力し、情報生成用PUF部1104は9つの第1のPUF回路の各1ビットの情報を連結して、誤り訂正部1105に入力する。なお、ここでは第1のPUF回路の数は9としていたが、9に限らず、2以上であれば何でもよい。
(第1のPUF回路11041A、・・・、11041G、11041H、11041Iの構成について)
第1のPUF回路11041A、・・・、11041Iはそれぞれ、同じ構成であるため、以下では代表して第1のPUF回路11041Aの構成を説明する。
図6は、第1のPUF回路11041Aの構成を示す図である。
第1のPUF回路11041Aは、図6に示すように、第1リングオシレータ11041A01、第2リングオシレータ11041A02、・・・、及び第8リングオシレータ11041A08と、第1リングオシレータ選択部11041A11と、第2リングオシレータ選択部11041A12と、第1周波数カウント部11041A21と、第2周波数カウント部11041A22と、出力ビット決定部11041A30とから構成される。なお、本実施の形態では、第1リングオシレータ11041A01〜第8リングオシレータ11041A08がそれぞれ、発振信号を出力する発振部として構成され、第1リングオシレータ選択部11041A11と第2リングオシレータ選択部11041A12とがそれぞれ、発振部を選択する選択部として構成され、出力ビット決定部11041A30が、第1のPUF回路11041Aの出力値を決定して出力する決定部として構成されている。
第1リングオシレータ11041A01〜第8リングオシレータ11041A08は、同じ構成であり、それぞれトリガ信号に対して出力信号(発振信号)を出力する。
第1リングオシレータ選択部11041A11は、第1リングオシレータ11041A01〜11041A08の中から予め与えられたリングオシレータを選択する。
第2リングオシレータ選択部11041A12は、第1リングオシレータ11041A01〜11041A08の中から、第1リングオシレータ選択部11041A11と異なり、予め与えられたリングオシレータを選択する。なお、リングオシレータの数を8としていたが、これに限らない。リングオシレータの数は2以上であればよい。
第1周波数カウント部11041A21は、第1リングオシレータ選択部11041A11で選択したリングオシレータの周波数を計測する。
第2周波数カウント部11041A22は、第2リングオシレータ選択部11041A12で選択したリングオシレータの周波数を計測する。
出力ビット決定部11041A30は、第1周波数カウント部11041A21で計測した周波数F1と第2周波数カウント部11041A22で計測した周波数F2を比較し、F1≧F2であれば“0”、F1<F2であれば“1”を出力する。なお、ここでは周波数を計測するとしたが、周波数そのものではなく、周波数に近いもの、例えば、予め与えられた一定時間内のリングオシレータの出力信号が予め与えられた振幅と等しくなる回数を計測するとしてもよい。この場合、周波数の代わりにこの回数を比較して、“0”、“1”の出力ビットを決定してもよい。また、上記ではF1≧F2の場合“0”、F1<F2の場合“1”を出力するとしたが、F1<F2の場合“1”、F1≧F2の場合“0”を出力するとしてもよい。
(第1のPUF回路11041A、・・・、11041Iの動作について)
以下、構成について説明したときと同様に、代表して第1のPUF回路11041Aの動作を説明する。
第1リングオシレータ選択部11041A11は、予め与えられたリングオシレータを選択する。第2リングオシレータ選択部11041A12も、予め与えられたリングオシレータを選択する。第1周波数カウント部11041A21は、第1リングオシレータ選択部11041A11で選択したリングオシレータの周波数を計測する。第2周波数カウント部11041A22は、第2リングオシレータ選択部11041A12で選択したリングオシレータの周波数を計測する。出力ビット決定部11041A30は、第1周波数カウント部11041A21及び第2周波数カウント部11041A22で計測した周波数を用いて、出力ビットを決定する。
(ハッシュ鍵生成部11042について)
ハッシュ鍵生成部11042は、第1のPUF回路11041A〜11041Gのビットを連結し、連結したものをハッシュ鍵とする。
誤り訂正部1105は、誤り訂正情報生成部1108で生成した誤り訂正情報を用いて、情報生成用PUF部1104で生成したハッシュ鍵を誤り訂正し、訂正後ハッシュ鍵を生成する。誤り訂正の方法は、何でもよいが、簡単のため、例を示す。
(誤り訂正の方法例)
この例では、3ビットの繰り返し符号を3つ連結したものを使用している。繰り返し符号とは、“0”を“000”、“1”を“111”と符号化し、復号時には3ビットの多数決を取る符号である。例えば、“101”であれば1の数が2で多数決を取ると“1”と復号化される。すなわち、符号のハミング重み(1の数)が1以下であれば“0”、2以上であれば“1”と復号化する。
誤り訂正情報を“010 010 001”とする。情報生成用PUF部1104で生成したハッシュ鍵を“101 000 111”とする。誤り訂正部1105では、誤り訂正情報とハッシュ鍵の排他的論理和(XOR)を取る。
“010 010 001” XOR “101 000 111”
=“111 010 110”
これに対し復号化すると、一つ目の繰り返し符号は“111”であるため“1”、二つ目は“010”であるため“0”、三つ目は“110”であるため“1”と復号化する。
したがって、この例では訂正後ハッシュ鍵は“101”となる。
誤り訂正用PUF部1106は、誤り訂正用PUF情報を生成する。
図7は、誤り訂正用PUF部1106の構成を示す図である。
誤り訂正用PUF部1106は、図7に示すように、9つの第2のPUF回路11061A、11061B、11061C、11061D、11061E、11061F、11061G、11061H、11061Iと、第2のPUF回路のビットを連結して誤り訂正用PUF情報を生成する誤り訂正用PUF情報生成部11062とからなる。後述する第2のPUF回路は3ビットの情報を出力し、誤り訂正用PUF部1106は9つの第2のPUF回路の各3ビットの情報を連結して、誤り訂正情報生成部1108に入力する。なお、ここでは第2のPUF回路の数は9としていたが、9に限らず、2以上であれば何でもよい。
(第2のPUF回路11061A、・・・、11061Iの構成について)
第2のPUF回路11061A、・・・、11061Iはそれぞれ、同じ構成であるため、以下では代表して第2のPUF回路11061Aの構成を示す。
図8は、第2のPUF回路11061Aの構成を示す図である。
第2のPUF回路11061Aは、図8に示すように、第1リングオシレータ11061A01、第2リングオシレータ11061A02、・・・、及び第8リングオシレータ11061A08と、第1リングオシレータ選択部11061A11と、第2リングオシレータ選択部11061A12と、第1周波数カウント部11061A21と、第2周波数カウント部11061A22と、出力ビット決定部11061A30とから構成される。
第1リングオシレータ11061A01〜第8リングオシレータ11061A08は、同じ構成であり、それぞれトリガ信号に対して出力信号を出力する。
第1リングオシレータ選択部11061A11は、第1リングオシレータ11061A01〜11061A08の中から予め与えられたリングオシレータを選択する。
第2リングオシレータ選択部11061A12は、第1リングオシレータ11061A01〜11061A08の中から、第1リングオシレータ選択部11061A11と異なり、予め与えられたリングオシレータを選択する。なお、リングオシレータの数を8としていたが、これに限らない。リングオシレータの数は2以上であればよい。
第1周波数カウント部11061A21は、第1リングオシレータ選択部11061A11で選択したリングオシレータの周波数を計測する。
第2周波数カウント部11061A22は、第2リングオシレータ選択部11061A12で選択したリングオシレータの周波数を計測する。
出力ビット決定部11061A30は、第1周波数カウント部11061A21で計測した周波数F1と第2周波数カウント部11061A22で計測した周波数F2とを比較し、F1とF2の差分によって、“0”から“7”までの値を示す3ビットを1要素として出力する。
図9は、周波数の差分(F2−F1)に対する値(3ビット)のマッピングを示す図である。図9では、差分の−300から300までを8等分してそれぞれを“0”から“7”までマッピングしている。なお、マッピング方法はこれだけに限らない。範囲をこれ以外、例えば−500から500までとしてもよいし、等分ではなく、値ごとに不等分にマッピングしてもよい。
(第2のPUF回路11061A、・・・、11061Iの動作について)
以下、構成について説明したときと同様に、代表して第2のPUF回路11061Aの動作を説明する。
第1リングオシレータ選択部11061A11は、予め与えられたリングオシレータを選択する。第2リングオシレータ選択部11061A12も、予め与えられたリングオシレータを選択する。第1周波数カウント部11061A21は、第1リングオシレータ選択部11061A11で選択したリングオシレータの周波数を計測する。第2周波数カウント部11061A22は、第2リングオシレータ選択部11061A12で選択したリングオシレータの周波数を計測する。出力ビット決定部11061A30は、第1周波数カウント部11061A21及び第2周波数カウント部11061A22で計測した周波数を用いて、出力である3ビットを決定する。つまり、出力ビット決定部11061A30は、第1周波数カウント部11061A21と、第2周波数カウント部11061A22で計測した周波数との差分に応じた3ビットの値を、図9に示すマッピングを用いて決定する。例えば、出力ビット決定部11061A30は、差分が0以上75未満であれば“4”を決定し、差分が75以上150未満であれば“5”を決定する。
(誤り訂正用PUF情報生成部11062について)
誤り訂正用PUF情報生成部11062は、第2のPUF回路11061A〜11061Iから出力される各要素を連結し、連結したものを誤り訂正用PUF情報とする。例えば、第2のPUF回路11061A〜11061Iから出力される各要素が、“2”、“6”、“5”、“1”、“5”、“7”、“2”、“3”、“7”であれば、誤り訂正用PUF情報は“265 157 237”である。
誤り訂正部分情報格納部1107は、誤り訂正情報の部分情報である誤り訂正部分情報を格納する。誤り訂正部分情報は誤り訂正情報生成装置1200が生成して格納する。
誤り訂正情報生成部1108は、誤り訂正用PUF部1106が生成する誤り訂正用PUF情報と、誤り訂正部分情報格納部1107が格納している誤り訂正部分情報とを用いて、誤り訂正情報を生成する。誤り訂正情報の生成方法の例を以下に示す。この例では、誤り訂正用PUF情報を、予め与えられた方法により符号化し、その結果生成された符号化後誤り訂正用PUF情報と誤り訂正部分情報の排他的論理和を取っているが、誤り訂正情報の生成方法は、この例に限らない。排他的論理和の部分をガロア体における乗算に変えてもよい。また、排他的論理和の代わりに、符号化後誤り訂正用PUF情報と誤り訂正部分情報を整数値と見立てて、加算するとしてもよい。
(誤り訂正情報生成の例)
誤り訂正用PUF部1106が出力した誤り訂正用PUF情報が上記のように、“265 157 237”であるとする。これに対し、この要素の値が3以下の場合“0”、4以上の場合“1”と1ビットの値に符号化する。符号化した結果、“011 011 001”となり、これを符号化後誤り訂正用PUF情報とする。これと誤り訂正部分情報格納部1107に格納されている誤り訂正部分情報との差分を取る。誤り訂正部分情報を“001 001 000”とするとき、誤り訂正情報は、
“011 011 001” XOR “001 001 000”
=“010 010 001”
である。
なお、この符号化はこれだけに限らず、例えば、4以上を“0”、3以下を“1”と符号化してもよい。
<誤り訂正情報生成装置1200の構成>
図10は、誤り訂正情報生成装置1200の構成を示す図である。誤り訂正情報生成装置1200は、情報セキュリティ装置1100内の第1のPUF回路及び第2のPUF回路の出力値を計測するPUF回路計測部1201と、第1のPUF回路及び第2のPUF回路の周囲の環境を変化させる環境変化部1202と、環境変化によるPUF回路計測部1201で計測した出力値の分布を解析する環境変化解析部1203と、環境変化解析部1203の解析結果により誤り訂正部分情報を生成する誤り訂正部分情報生成部1204と、誤り訂正部分情報を情報セキュリティ装置1100内の誤り訂正部分情報格納部1107に格納する誤り訂正部分情報設定部1205とを備える。なお、本実施の形態では、PUF回路計測部1201が第1の計測手段および第2の計測手段として構成され、誤り訂正部分情報生成部1204がデータ生成手段として構成され、誤り訂正部分情報設定部1205が格納処理手段として構成されている。また、本実施の形態における誤り訂正部分情報生成部1204は、誤り訂正情報を生成する第1の生成手段と、その誤り訂正情報を用いて第1の訂正用データたる誤り訂正部分情報を生成する第2の生成手段とを備えている。
PUF回路計測部1201は、第1のPUF回路11041A〜11041Iと、第2のPUF回路11061A〜11061Iの出力値を計測する。
環境変化部1202は、第1のPUF回路及び第2のPUF回路の周囲の環境を変化させる。具体的には、例えば、周囲の温度を変化させる。
環境変化解析部1203は、環境変化によるPUF回路計測部1201で計測した出力値の分布を解析する。すなわち、温度ごとの第1のPUF回路及び第2のPUF回路の出力値の分布を求める。
誤り訂正部分情報生成部1204は、誤り訂正部分情報を生成する。
(誤り訂正部分情報生成部1204の処理)
誤り訂正部分情報生成部1204はまず、環境変化解析部1203で解析した第1のPUF回路の出力値の分布に基づいて、誤り訂正情報を求める。
図11は、第1のPUF回路及び第2のPUF回路の出力値の分布例を示す図である。具体的な例としては、第1のPUF回路の出力値の分布で最も高確率で出現した出力値に対し、誤り訂正符号を用いて符号化をしたものとその出力値との差分を誤り訂正情報とする。上記誤り訂正の方法例や誤り訂正情報生成の例と合わせると、最も高確率で出現した出力値は、9つの第1のPUF回路11041A〜11041Iの出力値を並べると“101 000 110”である。ここで、例として、3ビットの繰り返し符号を用いるため、最も高確率で出現する出力値も、3ビットごとに区切って判断する。図11では、一つ目の3ビットは0℃のとき“100”、10℃のとき“101”、20℃のとき“101”であるため、最も高確率で出現した出力値は“101”である。同様に、二つ目は“000”、三つ目は“110”となる。3ビットの繰り返し符号を3つ並べたものを使用してこの出力値を符号化すると、“111 000 111”になる。したがって、出力値と符号化したものの差分は、
“101 000 110” XOR “111 000 111”
=“010 000 001”
であり、これを誤り訂正情報とする。
次に、誤り訂正部分情報生成部1204は、環境変化解析部1203で解析した第2のPUF回路の出力値の分布に基づいて、誤り訂正用PUF情報を求める。図11は、出力値の分布例を示している。一つの第2のPUF回路の出力値は3ビットの要素であるが、図11では、第2のPUF回路11061A〜11061Iの出力値を左から順番に並べている。誤り訂正部分情報の生成方法の具体的な例としては、第2のPUF回路の出力値の分布で各要素で最も高確率で出現した出力値に対し、予め定めた方法で符号化した符号化後誤り訂正用PUF情報と誤り訂正情報との差分を誤り訂正部分情報とする。図11の例では、一つ目の要素は0℃のとき“3”、10℃のとき“2”、20℃のとき“2”であるため、最も高確率で出現した出力値は“2”である。これに対し、誤り訂正情報生成の例と同じ符号化方法を使用すると、この要素の値が4以下の場合“0”、5以上の場合“1”と1ビットの値に符号化する。図11の例では、一つ目の要素は“2”であるため、符号化後の値は“0”となる。同様に二つ目以降も符号化すると、符号化後誤り訂正用PUF情報は“011 011 001”となる。符号化後誤り訂正用PUF情報と、誤り訂正情報との差分を取ると、
“010 000 001” XOR “011 011 001”
=“001 011 000”
となり、“001 011 000”を誤り訂正部分情報とする。
誤り訂正部分情報設定部1205は、誤り訂正部分情報生成部1204で生成した誤り訂正部分情報を、情報セキュリティ装置1100内の誤り訂正部分情報格納部1107に格納する。
<情報セキュリティシステム1000の動作>
図12Aは、情報セキュリティシステム1000の誤り訂正情報生成装置1200が誤り訂正部分情報を設定するときの動作を示すフローチャートである。
誤り訂正情報生成装置1200は、誤り訂正部分情報を設定する時には、以下のように動作する。なお、誤り訂正部分情報を生成して情報セキュリティ装置1100内の誤り訂正部分情報格納部1107に設定する処理は、情報セキュリティ装置1100の製造時に実施される。
ステップS101:環境変化部1202は、第1のPUF回路及び第2のPUF回路の周囲の環境を変化させる。さらに環境変化部1202は、変化させた環境の情報を、環境変化解析部1203に入力する。
ステップS102:PUF回路計測部1201は、第1のPUF回路及び第2のPUF回路の出力値を計測し、環境変化解析部1203に入力する。
ステップS103:環境変化解析部1203は、環境の情報と第1のPUF回路及び第2のPUF回路の出力値から分布を得る。
ステップS104:誤り訂正部分情報生成部1204は、出力値の分布より、誤り訂正部分情報を生成する。
ステップS105:誤り訂正部分情報設定部1205は、誤り訂正部分情報を、情報セキュリティ装置1100内の誤り訂正部分情報格納部1107に格納する。
図12Bは、情報セキュリティシステム1000の情報セキュリティ装置1100が鍵付ハッシュ値を計算するときの動作を示すフローチャートである。
情報セキュリティ装置1100は、鍵付ハッシュ値を計算する時には、以下のように動作する。なお、情報セキュリティ装置1100が、入力された入力データに対し、鍵付ハッシュ値を生成し出力する処理は、ユーザからの入力やアプリケーションプログラムからのトリガにより行われる。
ステップS201:入力部1101は、外部より入力された入力データを受け付け、ハッシュ生成部1103に入力する。さらに、入力部1101は、PUF回路へのトリガ信号を情報生成用PUF部1104と誤り訂正用PUF部1106に入力する。
ステップS202:情報生成用PUF部1104は、ハッシュ鍵を生成し、誤り訂正部1105に入力する。
ステップS203:誤り訂正用PUF部1106は、誤り訂正用PUF情報を生成し、誤り訂正情報生成部1108に入力する。
ステップS204:誤り訂正情報生成部1108は、誤り訂正用PUF情報と誤り訂正部分情報格納部1107に格納されている誤り訂正部分情報とを用いて、誤り訂正情報を生成し、誤り訂正部1105に入力する。
ステップS205:誤り訂正部1105は、誤り訂正情報を用いて、ハッシュ鍵を誤り訂正し、訂正後ハッシュ鍵を生成し、ハッシュ生成部1103に入力する。
ステップS206:ハッシュ生成部1103は、訂正後ハッシュ鍵を鍵として使用して、入力データの鍵付ハッシュ値を生成し、出力部1102に入力する。
ステップS207:出力部1102は、鍵付ハッシュ値を外部へ出力する。
このように本実施の形態では、情報セキュリティ装置1100は、誤り訂正情報を直接メモリに格納せず、誤り訂正部分情報を格納している。そのため、誤り訂正情報に攻撃者が直接アクセスできないため、PUFの秘密、すなわち、ハッシュ鍵を攻撃者が得ることが困難であり、安全である。また、誤り訂正用PUF部1106と誤り訂正情報生成部1108を設けることで、誤り訂正部分情報から誤り訂正情報を復元でき、誤り訂正が正しく働く。
(実施の形態2)
実施の形態1における情報生成用PUF部1104のハッシュ鍵の誤りは、環境変化によって生じることがあるが、PUF回路の周波数特性の経年変化によっても生じることがある。本実施の形態では、実施の形態1における情報セキュリティシステム1000の構成に対して、さらに、PUF回路の経年的な出力変動を抑えることにより、情報生成用PUF部1104から出力されるハッシュ鍵の誤りを軽減することを特徴とする。
以下、本発明の実施の形態2について、図面を参照しながら説明する。
(PUF回路1の構成)
図13は、本発明の実施の形態2におけるPUF回路1の構成の一例を示したブロック図である。PUF回路1は、実施の形態1における第1のPUF回路11041A〜11041Iのそれぞれに相当し、第1〜第8リングオシレータ101〜108と、第1〜第2リングオシレータ選択部111〜112と、第1〜第2周波数カウント部121〜122と、出力ビット決定部13と、入力値保管部14と、入力値設定部15と、入力値再設定判定部16と、閾値保管部17と、出力ビット制御部18と、出力ビット保管部19とからなる。
なお、本実施の形態では、出力ビット保管部19が、秘密データたるハッシュ鍵の一部を記憶するための秘密データ用記憶部として構成され、出力ビット制御部18が、ハッシュ鍵の一部を出力ビット保管部19に格納する格納処理部として構成されているとともに、出力ビット保管部19に格納されているハッシュ鍵の一部を出力する出力制御部として構成されている。以下、各部の詳細について説明する。
(1)第1〜第8リングオシレータ101〜108
第1〜第8リングオシレータ101〜108はそれぞれ、奇数個の否定回路をリング状に接続した構成を基本とする発振回路であり、トリガ信号の入力により所定の発振周波数を有する発振信号(出力信号)を出力する。これら8個のリングオシレータの構成及び動作は全て同じであるので、以下では、それらをリングオシレータ100として、その構成及び動作を説明する。
図14は、リングオシレータ100の構成の一例を示すブロック図である。リングオシレータ100は、7段のリングオシレータであり、NAND回路21と、7個の否定回路22〜28からなる。なお、本実施の形態では、7段のリングオシレータとしているが、これは奇数段であれば何段のリングオシレータであってもよい。
リングオシレータ100にトリガ信号が入力されていない場合、即ち、トリガ信号として「0」が入力されている場合、NAND回路21の出力は「1」となる。よって、否定回路22の出力は「0」となり、否定回路23の出力は「1」となり、・・・、否定回路27の出力(即ちNAND回路21の1つの入力)は「1」となるが、NAND回路21のもう1つの入力は「0」であるから、NAND回路21の出力は「1」のままである。即ち、リングオシレータ100は、上記の定常状態で安定する。このとき、否定回路28の出力、即ちリングオシレータ100の出力信号は「0」で安定する。まとめると、リングオシレータ100へのトリガ信号が「0」の場合にはリングオシレータ100は発振せず、その出力信号は「0」で安定する。
一方、リングオシレータ100にトリガ信号が入力された場合、即ち、トリガ信号として「1」が入力された場合、NAND回路21の出力は「1」となる。よって、否定回路22の出力は「0」となり、否定回路23の出力は「1」となり、・・・、否定回路27の出力は「1」となる。このとき、NAND回路21の2つの入力はどちらも「1」になるため、NAND回路21の出力は、「1」から「0」に遷移する。この遷移に伴い、否定回路22の出力は「1」となり、否定回路23の出力は「0」となり、・・・、否定回路27の出力は「0」となる。このとき、NAND回路21の一方の入力が「0」になるため、NAND回路21の出力は、再び「0」から「1」に遷移する。上記のように、トリガ信号「1」が入力されると、リングオシレータ100の内部状態は安定せずに、NAND回路21の出力は「1」と「0」の間で遷移を繰り返し、発振する。このとき、リングオシレータ100は、所定の発振周波数を有する発振信号を出力する。前記発振周波数は、リングオシレータの段数で決まり、理論的には段数と回路構成が同じリングオシレータであれば、同じになることになる。しかし、実際には、同一の構成を持つリングオシレータであっても、リングオシレータを構成する回路素子の周波数特性のバラつきが生じるので、発振周波数にも若干のバラつきがある。なお、上記発振状態において、トリガ信号が「0」に変化すると、NAND回路21の出力は「1」で安定するので、発振動作は停止し、出力信号は「0」になる。
(2)第1〜第2リングオシレータ選択部111〜112
第1〜第2リングオシレータ選択部111〜112は、それぞれ、入力値保管部14から入力される3ビットの入力値データに基づいて、前記第1〜第8リングオシレータ101〜108から1個を選択し、選択したリングオシレータから出力される発振信号を取得して第1周波数カウント部121または第2周波数カウント部122に入力する。つまり、第1リングオシレータ選択部111は、選択したリングオシレータから出力される発振信号を取得して第1周波数カウント部121に入力し、第2リングオシレータ選択部112は、選択したリングオシレータから出力される発振信号を取得して第2周波数カウント部122に入力する。
3ビットの入力値データと、選択するリングオシレータとの対応関係は、任意の入力値データが、ある1つのリングオシレータに対応していれば、どのようなものであっても良いが、本実施の形態では、以下の通りとする。第1〜第2リングオシレータ選択部111〜112は、それぞれ、入力値データ「000」(2進数)に対しては、第1リングオシレータ101を選択する。入力値データ「001」(2進数)に対しては、第2リングオシレータ102を選択する。入力値データ「010」(2進数)に対しては、第3リングオシレータ103を選択する。・・・。入力データ「111」(2進数)に対しては、第8リングオシレータ108を選択する。なお、第1リングオシレータ選択部111および第2リングオシレータ選択部112は、それぞれ、互いに異なる入力値データを取得して、互いに異なるリングオシレータを選択する。
(3)第1〜第2周波数カウント部121〜122
第1〜第2周波数カウント部121〜122は、それぞれ、第1リングオシレータ選択部111または第2リングオシレータ選択部112から入力される発振信号の発振周波数を計測して、計測結果を出力ビット決定部13に入力する。つまり、第1周波数カウント部121は、第1リングオシレータ選択部111から入力される発振信号の発振周波数を計測し、第2周波数カウント部122は、第2リングオシレータ選択部112から入力される発振信号の発振周波数を計測する。
(4)出力ビット決定部13
出力ビット決定部13は、第1周波数カウント部121および第2周波数カウント部122からそれぞれ入力される発振周波数の大小関係を比較し、その比較結果に基づいて1ビットの出力ビットの値を決定して、その決定された値を示す出力ビットを出力ビット制御部18に入力する。
比較結果と出力ビットの値との対応関係はどのようなものでもよいか、本実施の形態では、(第1周波数カウント部121の計測周波数)<(第2周波数カウント部122の計測周波数)であれば、「1」と決定し、そうでなければ「0」と決定するものとする。
(5)出力ビット制御部18
出力ビット制御部18は、PUF回路1に対して外部からトリガ信号が入力されて出力ビットの出力要求があった場合には、まず、出力ビット保管部19に出力ビットが保管されているか否かを確認する。出力ビットが保管されている場合には、保管されている出力ビットをPUF回路1から出力して処理を終了する。出力ビット保管部19に出力ビットが保管されていない場合には、出力ビット決定部13から、出力ビットが入力された後に、以下の処理を行う。
出力ビット制御部18は、まず、出力ビット決定部13から入力される出力ビットを一時保管し、入力値設定部15から、出力ビットの退避要求信号が入力された場合には、一時保管している出力ビットを、PUF回路1の出力ビットとして出力するとともに、出力ビット保管部19に出力する。一方、入力値設定部15から、出力ビットの退避要求信号が入力されない場合には、一時保管している出力ビットを、PUF回路1の出力ビットとして出力する。
(6)入力値保管部14
入力値保管部14は、第1リングオシレータ選択部111及び第2リングオシレータ選択部112に入力する3ビットの入力値データを2個保管する。以降では、第1リングオシレータ選択部111に入力する3ビットの入力値データを第1入力値データとし、第2リングオシレータ選択部112に入力する3ビットの入力値データを第2入力値データとする。
(7)入力値設定部15
入力値設定部15は、初期化時、または入力値再設定判定部16より入力値再設定要求信号が入力されたときに動作し、閾値保管部17に保管されている入力設定用閾値以上の周波数差を有する2個のリングオシレータが選択されるように、第1リングオシレータ選択部111及び第2リングオシレータ選択部112への入力値データ(それぞれ3ビット)を設定する。
具体的に、入力値設定部15は、初期化時には、PUF回路1の外部から出力設定値を取得し、その出力設定値を示す出力ビットがPUF回路1から出力されるように、第1リングオシレータ選択部111及び第2リングオシレータ選択部112への入力値データを設定する。このとき、出力設定値が「1」であれば、入力値設定部15は、(第1周波数カウント部121の計測周波数)<(第2周波数カウント部122の計測周波数)であって且つ、それらの周波数の差の絶対値が入力設定用閾値以上となるような2つのリングオシレータが選択されるように、2つの入力値データを設定する。また、出力設定値が「0」であれば、入力値設定部15は、(第1周波数カウント部121の計測周波数)≧(第2周波数カウント部122の計測周波数)であって且つ、それらの周波数の差の絶対値が入力設定用閾値以上となるような2つのリングオシレータが選択されるように、2つの入力値データを設定する。
また、入力値設定部15は、入力値再設定要求信号を取得したときには、既に設定されている、第1周波数カウント部121の計測周波数と、第2周波数カウント部122の計測周波数との大小関係を維持し、それらの周波数の差の絶対値が入力設定用閾値以上となるような2つのリングオシレータが改めて選択されるように、2つの入力値データを再設定する。
また、前記入力設定用閾値以上の周波数差を有する2個のリングオシレータを選択するような入力値データの決定に失敗した場合(即ち、周波数差が前記閾値以上になるリングオシレータのペアが見つからなかった場合)には、入力値設定部15は、出力ビットの退避要求信号を出力ビット制御部18に入力する。
なお、本実施の形態では、第1リングオシレータ選択部111、第2リングオシレータ選択部112、入力値保管部14および入力値設定部15が、8個のリングオシレータから2個のリングオシレータを選択する選択部として構成されている。また、入力値設定部15が、周波数差が第1の閾値たる入力設定用閾値以上となる2個のリングオシレータを検索する検索部として構成され、入力値保管部14が、検索部によって検索された2個のリングオシレータを示す選択パラメータたる入力値データを保持するパラメータ保持部として構成されている。さらに、第1リングオシレータ選択部111および第2リングオシレータ選択部112がそれぞれ、入力値データの示すリングオシレータを選択すべきリングオシレータとして決定して選択する選択決定部として構成されている。
(8)入力値再設定判定部16
入力値再設定判定部16は、第1周波数カウント部121および第2周波数カウント部122から出力される発振周波数を観測し、その周波数差の絶対値が、閾値保管部17に保管されている入力値再設定判定用閾値よりも小さくなった場合には、入力値設定部15に入力値再設定要求信号を入力する。
なお、本実施の形態では、入力値再設定判定部16が、周波数差が第2の閾値たる入力値再設定判定用閾値未満であるか否かを判別する差分判別部と、上述の選択部による選択を再度実行させる再設定部として構成されている。
(9)閾値保管部17
閾値保管部17は、入力設定用閾値及び入力値再設定判定用閾値を保管する。これらの値は正の値である。本実施の形態では、これらの値は、PUF回路1の製造時に書き込むものとするが、回路製造後に外部から書き込むようにしても良いし、書き込んだ後でも、外部から書き換えることができるようにしても良い。また、何らかの認証を行った上で、外部からの書き込みを許可するようにしても良い。なお、本実施の形態では、閾値保管部17が、第1の閾値たる入力設定用閾値と、第2の閾値たる入力値再設定判定用閾値とを格納している閾値格納部として構成されている。
以下、PUF回路1の動作を説明する。PUF回路1の動作は、「入力値データの設定」、「出力ビットの算出」および「入力値データの再設定」の3種類に大別され、以下、それぞれについて説明する。
(入力値データの設定)
図15は、PUF回路1が入力値データを設定するときの動作を示すフローチャートである。
「入力値データの設定」は、PUF回路1が製造された後の初期化処理として実行する処理である。「入力値データの設定」処理は、以下のようにして行う。
ステップS301:入力値設定部15は、PUF回路1の外部から入力される1ビットの値を出力設定値として受け付ける。また、閾値保管部17に保管されている入力設定用閾値を読み込む。
ステップS302:入力値設定部15は、入力値データの候補を選択して、その候補における第1周波数カウント部121および第2周波数カウント部122による発振周波数の計測を実行させる。即ち、入力値設定部15は、第1入力値データの候補としてN1=000(2進数)〜111(2進数)の中から何れか1つを選択し、第2入力値データの候補としてN2=000(2進数)〜111(2進数)の中から何れか1つを選択する。そして、入力値設定部15は、(第1入力値データの候補,第2入力値データの候補)=(N1,N2)の組み合わせによって選択されるリングオシレータを用い、第1周波数カウント部121および第2周波数カウント部122による発振周波数の計測を実行させる。具体的には、PUF回路1は以下の動作を実行する。
ステップS302a:入力値設定部15は、第1入力値データ及び第2入力値データの候補として(N1,N2)を生成し、第1リングオシレータ選択部111にN1を、第2リングオシレータ選択部112にN2を、それぞれ入力する。
ステップS302b:第1リングオシレータ選択部111は、前記N1に基づいて、前に述べた規則に従い、第1リングオシレータ101〜第8リングオシレータ108の中から1つのリングオシレータを選択する。第2リングオシレータ選択部112は、前記N2に基づいて、前に述べた規則に従い、第1リングオシレータ101〜第8リングオシレータ108の中から1つのリングオシレータを選択する。
ステップS302c:ここで、ステップS302bで選択された2個のリングオシレータにトリガ信号が入力されると、選択された2つのリングオシレータは発振して、発振信号を出力する。このとき、第1リングオシレータ選択部111により選択されたリングオシレータは、同第1リングオシレータ選択部111を介して第1周波数カウント部121に発振信号を入力する。第2リングオシレータ選択部112により選択されたリングオシレータは、同第2リングオシレータ選択部112を介して第2周波数カウント部122に発振信号を入力する。
ステップS302d:第1周波数カウント部121及び第2周波数カウント部122は、それぞれ入力された発振信号から発振周波数を計測する。ここで、第1周波数カウント部121は、発振周波数F1を計測し、第2周波数カウント部122は、発振周波数F2を計測する。そして、計測したF1及びF2を、入力値設定部15に入力する。
ステップS303:入力値設定部15は、上述のように計測された発振周波数F1,F2に基づいて選択された入力値データの候補が、設定されるべき入力値データとして相応しいか否か、つまり選択された候補が失敗であったか否かを判別する。具体的には、入力値設定部15は、入力されたF1及びF2から、周波数の差分D=F2−F1を計算し、差分DとステップS301で受け付けた出力設定値との間に矛盾がなく、かつ、差分Dの絶対値が入力設定用閾値以上であれば、選択された候補が失敗でないと判別する。この場合、後述するステップS304で説明するように、入力値設定部15は、そのときの(N1,N2)について、N1を第1入力値データ、N2を第2入力値データとして、入力値保管部14に入力し、出力設定値を消去する。ここで、「差分Dと出力設定値との間に矛盾がない」とは、出力設定値が0の場合には差分Dが負の値または0であることを意味し、出力設定値が1の場合には差分Dが正の値であることを意味する。上記の条件を満たさない場合には、入力値設定部15は、選択された候補が失敗と判別する。この場合、後述するステップS305で説明するように、別の候補(N1,N2)を生成して、ステップS302a〜S302dを繰り返し実行する。なお、全ての(N1,N2)の組み合わせについて、上記の条件を満たすような(N1,N2)が見つからなかった場合には、後述するステップS306で説明するように、入力値設定部15は、出力設定値と、上述の退避要求信号に相当する入力値設定失敗信号とを出力ビット制御部18に入力した後、出力設定値を消去する。
ステップS304:入力値保管部14は、入力値設定部15から入力されるN1、N2、すなわち失敗でないと判別された第1入力値データの候補N1と第2入力値データの候補N2とを、それぞれ設定されるべき第1入力値データおよび第2入力値データとして保管し、「入力値データの設定」処理を終了する。
ステップS305:入力値設定部15は、選択された第1入力値データの候補N1および第2入力値データの候補N2がステップS303で失敗と判別されると、その候補N1,N2以外の他の候補があるか否かを判別する。ここで、入力値設定部15は、他の候補があると判別すると、ステップS302からの処理を繰り返し、他の候補がないと判別すると、ステップS306の処理を実行する。
ステップS306:入力値設定部15は、上述のように他の候補がないと判別すると、出力ビット制御部18に対して、出力設定値と入力値設定失敗信号とを出力する。出力ビット制御部18は、入力値設定失敗信号と出力設定値を受け付けて、出力設定値(出力設定値を示す出力ビット)を、出力ビット保管部19に入力する。出力ビット保管部19は、出力設定値を保管し、「入力値データの設定」処理を終了する。
(出力ビットの算出)
図16は、PUF回路1が出力ビットを算出するときの動作を示すフローチャートである。
「出力ビットの算出」処理は、PUF回路1の外部からトリガ信号が入力されたときに実行される。この処理により、PUF回路1は、内部にセキュアに保持する1ビットの出力ビットをPUF回路1の外部に出力する。具体的には、PUF回路1へのトリガ信号が入力されると、以下の一連の動作を行う。
ステップS401:出力ビット制御部18は、出力ビット保管部19に出力設定値(出力設定値を示す出力ビット)が保管されているかどうかを確認して、保管されている場合には、その出力設定値(1ビット)をPUF回路1からの出力ビットとして出力して、「出力ビットの算出」処理を終了する。出力設定値が保管されていない場合には、ステップS402に進む。
ステップS402:入力値保管部14は、内部に保管する第1入力値データを第1リングオシレータ選択部111に、第2入力値データを第2リングオシレータ選択部112にそれぞれ入力する。
ステップS403:第1リングオシレータ選択部111は、第1入力値データに基づいて、第1リングオシレータ101〜第8リングオシレータ108の中から1つを選択する。また、第2リングオシレータ選択部112は、第2入力値データに基づいて、第1リングオシレータ101〜第8リングオシレータ108の中から1つを選択する。
ステップS404:ステップS403において選択された2個のリングオシレータにそれぞれトリガ信号が入力され、発振動作が行われて、発振信号が出力される。このとき、出力された発振信号は、それぞれ、第1リングオシレータ選択部111及び第2リングオシレータ選択部112を介して、第1周波数カウント部121及び第2周波数カウント部122に入力される。
ステップS405:第1周波数カウント部121および第2周波数カウント部122は、それぞれ入力される発振信号の発振周波数F1、F2を計測し、出力ビット決定部13及び入力値再設定判定部16に入力する。
ステップS406:出力ビット決定部13は、入力される発振周波数F1、F2の大小関係を比較して、比較結果に基づいて、既に述べた判定規則に従い、1ビットの出力ビットを決定して、出力ビット制御部18に入力する。出力ビット制御部18は、入力された出力ビットを一時保管する。
ステップS407:入力値再設定判定部16は、閾値保管部17に保管されている入力値再設定判定用閾値を読み出す。次に、入力値再設定判定部16は、入力される発振周波数F1、F2から、周波数差分D=F2−F1を計算し、差分Dの絶対値が、前記入力値再設定判定用閾値以上であるか確認する。もしも、前記閾値未満であれば、入力値再設定判定部16は、入力値設定部15に、入力値再設定要求信号を入力する。一方、前記閾値以上であれば、入力値再設定判定部16は何も行わない。
ステップS408:入力値設定部15は、入力値再設定要求信号を受け付けると、後で説明する入力値データの再設定処理を実行する。この処理の結果、「入力値保管部14に保管する第1入力値データN1、第2入力値データN2を更新する」か、「入力値再設定失敗信号を出力ビット制御部18に送信する」か、のいずれかが行われる。
ステップS409:出力ビット制御部18は、出力ビット決定部13から入力されて一時保管されている1ビットの出力ビットをPUF回路1の出力ビットとして出力する。入力値設定部15から、入力値再設定失敗信号を受け取っていない場合には、出力ビット制御部18は、そのまま出力ビットの算出を終了する。入力値再設定失敗信号を受け取った場合には、出力ビット制御部18は、更に前記1ビットの出力ビットを、出力設定値として出力ビット保管部19に入力する。そして、出力ビット保管部19は、前記出力設定値を内部に保管して、「出力ビットの算出」処理を終了する。
(入力値データの再設定)
図17は、PUF回路1が入力値データを再設定するときの動作を示すフローチャートである。
「入力値データの再設定」処理は、上述の「出力ビットの算出」処理において、入力値設定部15が入力値再設定要求信号を受け付けた場合に実行するサブルーチン処理である。「入力値データの再設定」処理は、以下のようにして行う。
ステップS501:入力値設定部15は、入力設定用閾値と出力設定値を特定する。つまり、入力値設定部15は、閾値保管部17に保管する入力設定用閾値を読み込む。さらに、入力値設定部15は、「出力ビットの算出」のステップS405において、第1周波数カウント部121から入力された発振周波数F1と、第2周波数カウント部122から入力された発振周波数F2との大小関係を比較し、F2>F1であれば、出力設定値を「1」とし、そうでなければ、出力設定値を「0」とする。
ステップS502:入力値設定部15は、入力値データの候補を選択して、その候補における第1周波数カウント部121および第2周波数カウント部122による発振周波数の計測を実行させる。即ち、入力値設定部15は、第1入力値データの候補としてN1=000(2進数)〜111(2進数)の中から何れか1つを選択し、第2入力値データの候補としてN2=000(2進数)〜111(2進数)の中から何れか1つを選択する。そして、入力値設定部15は、(第1入力値データの候補,第2入力値データの候補)=(N1,N2)の組み合わせによって選択されるリングオシレータを用い、第1周波数カウント部121および第2周波数カウント部122による発振周波数の計測を実行させる。具体的には、PUF回路1は以下の動作を実行する。
ステップS502a:入力値設定部15は、第1入力値データ及び第2入力値データの候補として(N1,N2)を生成し、第1リングオシレータ選択部111にN1を、第2リングオシレータ選択部112にN2を、それぞれ入力する。
ステップS502b:第1リングオシレータ選択部111は、前記N1に基づいて、前に述べた規則に従い、第1リングオシレータ101〜第8リングオシレータ108の中から1つのリングオシレータを選択する。第2リングオシレータ選択部112は、前記N2に基づいて、前に述べた規則に従い、第1リングオシレータ101〜第8リングオシレータ108の中から1つのリングオシレータを選択する。
ステップS502c:ここで、ステップS502bで選択された2個のリングオシレータにトリガ信号が入力されると、選択された2つのリングオシレータは発振して、発振信号を出力する。このとき、第1リングオシレータ選択部111により選択されたリングオシレータは、同第1リングオシレータ選択部111を介して第1周波数カウント部121に発振信号を入力する。第2リングオシレータ選択部112により選択されたリングオシレータは、同第2リングオシレータ選択部112を介して第2周波数カウント部122に発振信号を入力する。
ステップS502d:第1周波数カウント部121及び第2周波数カウント部122は、それぞれ入力された発振信号から発振周波数を計測する。ここで、第1周波数カウント部121は、発振周波数F1を計測し、第2周波数カウント部122は、発振周波数F2を計測する。そして、計測したF1及びF2を、入力値設定部15に入力する。
ステップS503:入力値設定部15は、上述のように計測された発振周波数F1,F2に基づいて選択された入力値データの候補が、設定されるべき入力値データとして相応しいか否か、つまり選択された候補が失敗であったか否かを判別する。具体的には、入力値設定部15は、入力されたF1及びF2から、周波数の差分D=F2−F1を計算し、差分DとステップS501で特定した出力設定値との間に矛盾がなく、かつ、差分Dの絶対値が入力設定用閾値以上であれば、選択された候補が失敗でないと判別する。この場合、後述するステップS504で説明するように、入力値設定部15は、そのときの(N1,N2)について、N1を第1入力値データ、N2を第2入力値データとして、入力値保管部14に入力し、出力設定値を消去する。ここで、「差分Dと出力設定値との間に矛盾がない」とは、出力設定値が0の場合には差分Dが負の値または0であることを意味し、出力設定値が1の場合には差分Dが正の値であることを意味する。上記の条件を満たさない場合には、入力値設定部15は、選択された候補が失敗と判別する。この場合、後述するステップS505で説明するように、別の候補(N1,N2)を生成して、ステップS502a〜S502dを繰り返し実行する。なお、全ての(N1,N2)の組み合わせについて、入力設定用閾値に基づく上記の条件を満たすようなものがなかった場合には、後述するステップS506で説明するように、入力値設定部15は、出力設定値と、上述の退避要求信号に相当する入力値再設定失敗信号とを出力ビット制御部18に入力する。そして、出力設定値を消去する。
ステップS504:入力値保管部14は、入力値設定部15から入力されるN1、N2、すなわち失敗でないと判別された第1入力値データの候補N1と第2入力値データの候補N2とを、それぞれ設定されるべき第1入力データおよび第2入力データとして保管し、「入力値データの再設定」処理を終了する。
ステップS505:入力値設定部15は、選択された第1入力値データの候補N1および第2入力値データの候補N2がステップS503で失敗と判別されると、その候補N1,N2以外の他の候補があるか否かを判別する。ここで、入力値設定部15は、他の候補があると判別すると、ステップS502からの処理を繰り返し、他の候補がないと判別すると、ステップS506の処理を実行する。
ステップS506:入力値設定部15は、上述のように他の候補がないと判別すると、出力ビット制御部18に対して、出力設定値と入力値再設定失敗信号とを出力する。出力ビット制御部18は、入力値再設定失敗信号と出力設定値を受け付けて、出力設定値を、出力ビット保管部19に入力する。出力ビット保管部19は、出力設定値を保管し、「入力値データの再設定」処理を終了する。
(PUF回路1の動作概要)
以上の動作を元に、本実施の形態におけるPUF回路1の動作は、以下の通りである。
PUF回路1が製造された後に、PUF回路1は「入力値データの設定」処理を行い、1または0の出力ビットを設定する。その後、PUF回路1は「出力ビットの算出」処理を行い、「入力値データの設定」処理により設定された1ビットの出力ビットを出力する。その際、PUF回路1は、入力値保管部14に設定している入力値データ(N1,N2)によって選択される2つのリングオシレータの周波数差が、経年変化などにより、所定の閾値未満になったと検知した場合には、「入力値データの再設定」処理を行い、前記入力値データの再設定を行う。
本実施の形態においては、リングオシレータを構成する回路の周波数特性の経年変化により、設定された入力値データによって選択される2つのリングオシレータの周波数差が所定の閾値未満になったことを検知して、周波数差が所定の閾値以上になるように、入力値データを再設定する。一方、従来では、上記のような経年変化により、リングオシレータの周波数差が小さくなり、外部環境の変化によって周波数の大小関係が逆転する恐れが高くなったとしても、入力値データを再設定するような仕組みは備えていない。従って、経年変化による周波数特性の変化に対して、PUF回路1は、従来の構成よりも、出力ビットの安定性という点で向上しているといえる。
また、本実施の形態では、入力設定用閾値及び入力値再設定判定用閾値という2つの値を導入して、閾値保管部17に保管している。従来では、これらの値をPUF回路内部に保管することはない。しかし、これらの値は、リングオシレータの周波数差分の絶対値に関する閾値なので、この値から、出力ビットの算出処理において選択されるリングオシレータの発振周波数の大小関係を推測することはできない。即ち、これらの値から、1ビットの出力ビットを推測することはできず、本実施の形態におけるPUF回路1においても、従来のPUF回路と同様に安全に秘密データを保持することが可能である。
また、本実施の形態では、経年変化によるリングオシレータの周波数特性の変化が進んで、入力値データの再設定処理において、所定の閾値以上の周波数差となるリングオシレータペアが見つからなかった場合には、出力ビットを出力ビット保管部19に保管し、以降は、この出力ビット保管部19に保管されている出力ビットを出力する。これは、入力値データの再設定によって、これ以上安定した出力ビットをPUFの構成により保持することが困難と判断した場合には、出力ビットをそのまま保持することで、出力ビットの安定性を保持し続けようとするものである。これにより、出力ビットの安全性は、PUFで記憶している場合と比べて低下する。しかし、鍵データのような数十ビット〜数百ビットの秘密データのうち、仮に1ビットだけが解析され露呈したとしても、致命的な安全性低下に繋がることは稀であるので、実質的に安全性上に著しい問題を生じることはない。なお、上記の仕組みは、高い安全性を有するPUF回路を実現する場合には、削除してもよい。
以上にて述べたように、本実施の形態では、PUF回路において、リングオシレータの周波数差分が所定の閾値未満になったことを検知すると、周波数差が閾値以上となるようなリングオシレータを選択するように入力値データを再設定する。これによって、リングオシレータの周波数特性が経年変化しても、PUF回路の出力ビットの安定性を向上することができる。即ち、経年変化が起こっても、出力ビットが反転してしまわないようなPUF回路を用いた情報セキュリティ装置を提供することが可能である。
(実施の形態3)
次に、本発明の実施の形態3について、図面を参照しながら説明する。実施の形態3では、実施の形態2に加えて、更に、PUF回路の外部で行う誤り訂正符号を用いた誤り訂正、もしくは、誤り検出の結果を元に、入力値データの再設定処理を実行する構成を追加することで、周波数の経年変化に対するPUF回路の出力ビットの安定性をより向上させた構成となっている。
(PUF回路4の構成)
図18は、実施の形態3に係るPUF回路4の内部構成の一例を示したブロック図である。PUF回路4は、実施の形態1およびその変形例における第1のPUF11041A〜11041Iのそれぞれに相当し、図13の実施の形態2におけるPUF回路1とほぼ同じ構成である。すなわち、PUF回路4は、第1〜第8リングオシレータ101〜108と、第1〜第2リングオシレータ選択部111〜112と、第1〜第2周波数カウント部121〜122と、出力ビット決定部13と、入力値保管部14と、入力値設定部45と、入力値再設定判定部16と、閾値保管部17と、出力ビット制御部18と、出力ビット保管部19とからなる。
PUF回路1と唯一異なる点は、PUF回路4は、外部から入力値再設定要求信号が入力され、入力値設定部45は前記入力値再設定要求信号を受け付ける点である。つまり、本実施の形態における入力値設定部45は、実施の形態2の入力設定部15と同様の機能を有するとともに、PUF回路4の外部から入力値再設定要求信号を取得したときには、入力値再設定判定部16から入力値再設定要求信号を取得したときと同様、実施の形態2における「入力値データの再設定」処理を実行する。
本実施の形態における情報生成用PUF部は、このようなPUF回路4を9個備え、3ビットの秘密データであるハッシュ鍵をセキュアに保持することができる。
図19は、本実施の形態における情報生成用PUF部にハッシュ鍵を設定する方法を説明するための図である。
情報生成用PUF部1104aは、9つのPUF回路4と、9つのPUF回路4から出力される出力ビットを連結するビット連結部302とを備える。ビット連結部302は、実施の形態1のハッシュ鍵生成部11042と同様の機能を有する。このような情報生成用PUF部1104aに3ビットのハッシュ鍵を設定するときには、誤り訂正符号生成部300と、ビット分割部301とを用いる。ハッシュ鍵の設定処理は、情報生成用PUF部1104aが製造された後で、ハッシュ鍵が設定されていない状態において行われる処理である。
誤り訂正符号生成部300は、3ビットのハッシュ鍵に対して誤り訂正符号化を行って、ハッシュ鍵に対する誤り訂正符号を生成する。ビット分割部301は、誤り訂正符号生成部300が生成した誤り訂正符号をビット単位に分割して、各ビットをそれぞれ各PUF回路4に出力設定値として入力する。以下、具体的な例を挙げてハッシュ鍵の設定処理について説明する。
まず、ハッシュ鍵Mを誤り訂正符号生成部300に入力する。誤り訂正符号生成部300は、ハッシュ鍵Mに対する誤り訂正符号(誤り訂正符号語C)を、以下のように生成する。まず、ハッシュ鍵MをM=(m1、m2、m3)とする。ここで、m1、m2、m3は、それぞれ1ビットの値であり、m1はMの最上位ビット、m2はMの上位から2ビット目のビット、m3は、Mの最下位ビットとする。このとき、誤り訂正符号生成部300は、Mに対する誤り訂正符号語Cを9ビットの値C=(m1、m1、m1、m2、m2、m2、m3、m3、m3)として決定する。例えば、M=101(2進数)の場合、C=111000111(2進数)であり、M=011(2進数)の場合、C=000111111(2進数)である。誤り訂正符号生成部300は、こうして得られた9ビットの誤り訂正符号語Cをビット分割部301に入力する。ビット分割部301は、入力された9ビットのCを上位から1ビットずつ分割して、各ビットをそれぞれ9つのPUF回路4に入力する。9つのPUF回路4は、それぞれ入力された1ビットデータを出力設定値として、実施の形態2におけるPUF回路1の「入力値データの設定」処理と全く同じ処理を行う。
図20は、本実施の形態における情報セキュリティ装置1100aの構成を示す図である。
本実施の形態における情報セキュリティ装置1100aは、情報生成用PUF部1104aと、誤り訂正処理部303と、排他的論理和部305と、ビット分割部306と、復号化部304と、入力部1101と、ハッシュ生成部1103と、出力部1102とからなる。なお、本実施の形態における入力部1101、ハッシュ生成部1103および出力部1102は、実施の形態1の情報セキュリティ装置1100における入力部1101、ハッシュ生成部1103および出力部1102と同じである。
トリガ信号が情報生成用PUF部1104aの9つのPUF回路4に入力されると、各PUF回路4は、実施の形態2における「出力ビットの算出」処理と同じ処理を行って、それぞれ1ビットの出力ビットを出力する。ビット連結部302は、9つのPUF回路4の順列に従って、1番目のPUF回路4の出力ビットが最上位ビットとなり、9番目のPUF回路4の出力ビットが最下位ビットとなるように、ビット連結を行うことにより、誤り訂正前のハッシュ鍵を9ビットデータとして生成し、誤り訂正処理部303と排他的論理和部305とに入力する。なお、本実施の形態では、ビット連結部302が、複数のPUF回路4から出力される出力値を結合する結合部として構成されている。
誤り訂正処理部303は、入力された9ビットデータに対して誤り訂正を行い、その結果の9ビットデータを出力する。
図21は、誤り訂正処理部303の構成を示す図である。
誤り訂正処理部303は、誤り訂正部1105aと、誤り訂正情報生成部1108と、誤り訂正用PUF部1106と、誤り訂正部分情報格納部1107とを備えている。本実施の形態における誤り訂正情報生成部1108、誤り訂正用PUF部1106、および誤り訂正部分情報格納部1107は、実施の形態1における誤り訂正情報生成部1108、誤り訂正用PUF部1106、および誤り訂正部分情報格納部1107と同じである。
また、本実施の形態における誤り訂正部1105aは、実施の形態1における誤り訂正部1105と同様に排他的論理和の演算を実行するが、3ビットの繰り返し符号を1ビットにするような復号化は実行しない。つまり、誤り訂正部1105aは、誤り訂正前のハッシュ鍵である9ビットデータと誤り訂正情報との排他的論理和を取って、その結果である9ビットデータを復号化部304と排他的論理和部305とに入力する。
復号化部304は、誤り訂正処理部303から入力された9ビットデータを、3ビットの繰り返し符号に分割し、各3ビットの繰り返し符号を1ビットに復号化する。つまり、本実施の形態における誤り訂正部1105aと復号化部304とにより、実施の形態1の誤り訂正部1105が実現される。
具体的に、復号化部304は、入力された誤り訂正結果の9ビットデータから誤り訂正符号化のために付加した冗長性を除去して、3ビットの訂正後ハッシュ鍵を出力する。つまり、復号化部304は、上述の9ビットデータを上位から3ビットずつ分割し、各3ビットデータについて、000(2進数)の場合は0(2進数)に、111(2進数)の場合は1(2進数)に変換した後、再び連結して3ビットデータとする。これにより、「入力値データの設定」処理において各PUF回路4に設定したハッシュ鍵である3ビットと同じデータが得られる。ここで、上記に用いた誤り訂正符号は、情報ビットに対して情報ビットと同じ値2ビットを冗長ビットとして付加する繰り返し符号であり、3ビット(情報ビット1ビットと冗長ビット2ビット)のうち1ビットに誤りが生じてデータが反転しても、誤りを検知して訂正することが可能である。
なお、誤り訂正処理部303は、以下のようにして誤り訂正処理を行ってもよい。すなわち、誤り訂正処理部303は、入力された9ビットデータを、上位から3ビットずつに分割して、c1、c2、c3とする。次に、c1、c2、c3のそれぞれについて、ハミング重み(1の立っているビットの数)を計算する。そして、ハミング重みが2以上であれば、111(2進数)とし、ハミング重みが1以下であれば、000(2進数)とする。例えば、010(2進数)であれば、000(2進数)とし、110(2進数)であれば、111(2進数)とする。そうして得られた3ビット×3個のデータを、上位から、c1の誤り訂正処理結果、c2の誤り訂正処理結果、c3の誤り訂正処理結果の順に連結したものを、最終的な誤り訂正結果の9ビットデータとして、復号化部304及び排他的論理和部305に入力する。
排他的論理和部305は、ビット連結部302から入力された誤り訂正前の9ビットデータと、誤り訂正処理部303から入力された誤り訂正後の9ビットデータとの排他的論理和演算を行い、その演算結果である9ビットデータをビット分割部306に入力する。これは、誤り訂正前と訂正後のデータを比較して、誤り訂正が行われたビット位置に1を立てる処理を行っていることと同じである。つまり、本実施の形態では、排他的論理和部305が、情報生成用PUF部1104aから出力されるハッシュ鍵に誤りが生じたか否かを判別する誤り判別手段として構成されている。
ビット分割部306は、入力された9ビットデータを上位から1ビットずつ分割して、各ビットをそれぞれ各PUF回路4に入力する。これにより、誤り訂正が行われたビットを出力したPUF回路4には、1ビットデータ「1」が入力値再設定要求信号として入力され、誤り訂正が行われなかったビットを出力したPUF回路4には、1ビットデータ「0」が入力されることになる。 つまり、本実施の形態では、ビット分割部306が、情報生成用PUF部1104aに対して、ハッシュ鍵の再設定を要求する再設定要求手段として構成されている。
入力値再設定要求信号が入力されたPUF回路4は、上記実施の形態2と同様の「入力値データの再設定」処理を実行する。つまり、PUF回路4は、図17を用いて上述のように説明した処理を実行する。但し、PUF回路4の入力値設定部45は、ステップS501において出力設定値を特定するときには、既に出力ビットに誤りが生じているため、上述とは逆の規則に基づいて出力設定値を特定する。例えば、入力値設定部45は、第1周波数カウント部121から入力された発振周波数F1と、第2周波数カウント部122から入力された発振周波数F2との大小関係を比較し、F2≦F1であれば、出力設定値を「1」とし、そうでなければ、出力設定値を「0」とする。
なお、本実施の形態では、PUF回路4の入力値設定部45が、ハッシュ鍵の再設定を行う再設定部として構成されている。
本実施の形態では、誤りが発生していると検知されたビット(誤り訂正が行われたビット)については、そのビット値を生成したPUF回路に対して入力値データの再設定処理を指示することが特徴である。この構成により、実施の形態2では得られなかった以下のような効果がある。例えば、実施の形態2の場合は、入力値再設定判定用閾値をRとしたとき、リングオシレータの周波数特性が急激に変化し、発振周波数の差分(F2−F1)が、元々はF2−F1>Rであったものが、F2−F1<−Rとなるように変化した場合、PUF回路の出力ビット値は反転してしまい、更に、F2−F1の絶対値は、R以上になるために、入力値の再設定処理は行われない。しかし、本実施の形態においては、上記の出力ビットの反転が検知され、入力値の再設定処理が行われるために、適切に入力値データが再設定される。このように、本実施の形態においては、リングオシレータの急激な周波数特性変化についても、適切に入力値データの再設定が行われ、出力ビットの安定性が保たれる。
なお、本実施の形態では、出力ビットに誤りが生じたときには、その出力ビットを出力したPUF回路4、つまり入力値再設定要求信号を取得したPUF回路4は、入力値データの再設定を行ったが、入力値データの再設定を行うことなく、出力すべき出力ビットの値、すなわち出力設定値を出力ビット保管部19に格納してもよい。
図22は、入力値再設定要求信号を取得したPUF回路4の他の動作を示すフローチャートである。
まず、入力値再設定要求信号を取得した入力値設定部45は出力設定値を特定する(ステップS601)。このとき、入力値設定部45は、上述と同様、既に出力ビットに誤りが生じているため、第1周波数カウント部121から入力された発振周波数F1と、第2周波数カウント部122から入力された発振周波数F2との大小関係を比較し、F2≦F1であれば、出力設定値を「1」とし、そうでなければ、出力設定値を「0」とする。
そして、入力値設定部45は、特定した出力設定値と退避要求信号とを出力ビット制御部18に出力することにより、その出力ビット制御部18にその出力設定値(出力設定値を示す出力ビット)を出力ビット保管部19に格納させる(ステップS602)。
このように、入力値再設定要求信号を取得したPUF回路4が入力値データの再設定を行わず出力設定値を出力ビット保管部19に格納する場合には、PUF回路4における今後の処理負担を軽減し、出力ビットを安定させることができる。
(変形例)
上記に説明した実施の形態1〜3は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
(1)情報セキュリティ装置及び誤り訂正情報生成装置で使用する誤り訂正符号は、繰り返し符号であるが、これに限らない。誤り訂正符号であれば何でもよい。例えば、リード・ソロモン符号などの代数的符号や畳み込み符号であってもよい。また、符号長(ビットや要素の数)を9とし、情報記号数を3としていたが、これに限らない。安全性の面では、訂正後ハッシュ鍵は80ビット以上である方がよい。
(2)情報セキュリティ装置では、鍵付ハッシュ値を出力するとしているが、これに限らない。秘密の鍵を用いて入力データを変換した変換データを出力すればよい。変換データは、鍵付ハッシュ値の他に、暗号文、復号文、署名データなどがある。
(3)情報セキュリティ装置では、PUF回路を使用しているが、これだけに限らない。PUF回路の代わりに、秘密の情報を出力可能な耐タンパー回路であればよい。また、環境や経年劣化により出力が変化する耐タンパー回路であってもよい。耐タンパー回路として、特許文献2(特開2006−060109号公報)に記載されている、識別情報生成回路を使用してもよい。識別情報生成回路は、電源をオンした際のフリップフロップやRAM、StaticRAMの各メモリセルから最初に出力される論理信号から、固有の識別コードを生成する。なお、PUFには、スペックルパタンを利用したOptical PUF、ゲート遅延を利用したSilicon PUF、誘電率を利用したCoating PUF、およびノイズ音を利用したAcoustic PUFなどがある。
(4)誤り訂正情報生成装置の環境変化部では、PUF回路の周囲の温度を変化させるとしていたが、他の環境変化、例えば、電圧変化であってもよい。また、環境変化ではなく、現在の環境を取得して、環境変化解析部へ現在の環境を知らせる構成でもよい。
(5)第2のPUF回路において、差分から“0”から“7”までの値への変換するルールは予め、固定化したものを与えているが、この変換ルールを誤り訂正情報生成装置が決定して第2のPUF回路に埋め込む、もしくは誤り訂正部分情報格納部に格納してもよい。また、第2のPUF回路の誤り訂正情報を誤り訂正部分情報格納部に格納してもよい。この場合、第2のPUF回路の誤り訂正情報を用いて、誤り訂正用PUF情報を知り、誤り訂正部分情報から第1のPUF回路の誤り訂正情報を攻撃者が知ることが可能になる。しかし、攻撃者の解析に要する処理量が大きくなるため、安全性の向上としては有効である。さらに、PUF回路をさらに第3、第4、・・・と追加して、誤り訂正情報を攻撃者がより求めにくくしてもよい。
(6)実施の形態では、2個のリングオシレータの発振周波数の大小関係から1ビットまたは3ビットの出力ビットを決定していたが、これは2個とは限らず、3個以上のリングオシレータであってもよい。このとき、例えば、3個のリングオシレータの周波数が、A、B、Cのとき、A、B、Cの大小関係の全パタンと出力ビットの対応関係が予めルールとして決定されていれば良い。また、このとき入力値再設定判定部における判定方法としては、A、B、Cを周波数の大きい順に並べた上で、(1番目の周波数)と(2番目の周波数)の差分と(2番目の周波数)と(3番目の周波数)の差分をそれぞれ計算し、各差分値が所定の閾値以上であるかどうかをチェックすることで、判定すればよい。
(7)実施の形態では、「入力値データの設定」処理および「入力値データの再設定」処理において、入力値設定用閾値以上の差分を有する入力値ペア(N1,N2)が見つかった時点で、その値を、入力値保管部に設定あるいは再設定していたが、これは、まず全ての入力値ペア(N1,N2)について、周波数の差分値を求めた上で、差分値の一番大きくなる(N1,N2)を選び、そのときの差分値が入力値設定用閾値以上であれば、選んだ値を入力値保管部に設定あるいは再設定し、上記閾値未満であれば、入力値設定失敗信号あるいは入力値再設定失敗信号を送付するようにしてもよい。
(8)閾値保管部に保管する入力設定用閾値及び入力値再設定判定用閾値は、必ずしもPUF回路の製造時に設定する必要はなく、製造後に、設定するようにしても良い。また、一度設定した後でも、再設定ができるようにしても良い。つまり、入力設定用閾値及び入力値再設定判定用閾値の少なくとも一方を更新してもよい。例えば、PUF回路が出力ビット算出処理を所定回数行うたびに、閾値を変更したり、入力値データの再設定処理の際に、現在設定されている入力設定用閾値を満たすリングオシレータペアが存在しない場合には、今の閾値よりも小さくするようにその閾値を変更したり、してもよい。
(9)入力値再設定判定部による入力値再設定判定は、出力ビット算出処理を行うごとに毎回行う必要はなく、所定回数出力ビット算出処理を行うごとに行うようにしてもよいし、外部からの指示信号を受け付けたときに行うようにしてもよい。
(10)本実施の形態では、発振回路としてリングオシレータを用いた場合の構成を示しているが、これは固体振動子発振回路、CR発振回路、LC反結合発振回路、など発振回路であれば何でもよい。
(11)実施の形態では、1つのPUF回路から出力されるデータは1ビットまたは3ビットであったが、これは1ビットまたは3ビットに限定されず、発振周波数の大小関係から出力ビットを決定する決定ルールを予め決めておけば、2ビットや4ビット以上であってもよい。
(12)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(13)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
(14)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なIC(Integrated Circuit)カードまたは単体のモジュールから構成されているとしてもよい。例えば、図4に示す情報セキュリティ装置1100の全体をICカードとして構成したり、その情報セキュリティ装置1100のうち情報生成用PUF部1104と、誤り訂正部1105と、誤り訂正情報生成部1108と、誤り訂正用PUF部1106と、誤り訂正部分情報格納部1107とをICカードとして構成してもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(15)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
(16)また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記ディジタル信号であるとしてもよい。
(17)また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
(18)また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
(19)また、前記プログラムまたは前記ディジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(20)上記実施の形態1〜3及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明に係る情報セキュリティ装置は、メモリに格納された情報を用いても、PUFにより秘匿された鍵値などの秘密データを攻撃者が知ることができなくなり、PUFの安全性が低下しないようにすることができるという効果を奏し、例えば、ICカードなどに適用することができる。また、本発明にかかる情報セキュリティ装置は、鍵データやIDデータなどの秘密データをセキュアかつ安価に保持しつつ、従来技術よりも、経年変化に対する秘密データの安定性を向上させるという特徴を有するので、高セキュリティ、低コスト、かつ高安定性での実現が求められる情報セキュリティ装置の実現に有用である。
図1は、従来のPUF回路の構成を示す図である。
図2は、従来のPUFの誤り訂正を用いた情報セキュリティ装置の構成を示す図である。
図3は、本発明の実施の形態1における情報セキュリティシステムの構成を示すブロック図である。
図4は、同上の情報セキュリティ装置の構成を示す図である。
図5は、同上の情報生成用PUF部の構成を示す図である。
図6は、同上の第1のPUF回路の構成を示す図である。
図7は、同上の誤り訂正用PUF部の構成を示す図である。
図8は、同上の第2のPUF回路の構成を示す図である。
図9は、同上の第2のPUF回路の差分と出力値のマッピングを示す図である。
図10は、同上の誤り訂正情報生成装置の構成を示す図である。
図11は、同上の環境変化解析部で解析した出力値の分布を示す図である。
図12Aは、同上の誤り訂正情報生成装置が誤り訂正部分情報を設定するときの動作を示すフローチャートである。
図12Bは、同上の情報セキュリティ装置が鍵付ハッシュ値を計算するときの動作を示すフローチャートである。
図13は、本発明の実施の形態2におけるPUF回路の構成を示すブロック図である。
図14は、同上のリングオシレータの構成を示すブロック図である。
図15は、同上のPUF回路が入力値データを設定するときの動作を示すフローチャートである。
図16は、同上のPUF回路が出力ビットを算出するときの動作を示すフローチャートである。
図17は、同上のPUF回路が入力値データを再設定するときの動作を示すフローチャートである。
図18は、本発明の実施の形態3に係るPUF回路の構成を示すブロック図である。
図19は、同上の情報生成用PUF部にハッシュ鍵を設定する方法を説明するための図である。
図20は、同上の情報セキュリティ装置の構成を示す図である。
図21は、同上の誤り訂正処理部の構成を示す図である。
図22は、同上のPUF回路の他の動作を示す図である。
1 PUF回路
13 出力ビット決定部
14 入力値保管部
15 入力値設定部
16 入力値再設定判定部
17 閾値保管部
18 出力ビット制御部
19 出力ビット保管部
101〜108 第1〜第8リングオシレータ
111,112 第1、第2リングオシレータ選択部
121,122 第1、第2周波数カウント部
1000 情報セキュリティシステム
1100,3000 情報セキュリティ装置
1101,3001 入力部
1102,3002 出力部
1103,3003 ハッシュ生成部
1104 情報生成用PUF部
11041A〜11041I 第1のPUF回路
11042 ハッシュ鍵生成部
1105,3005 誤り訂正部
1106 誤り訂正用PUF部
11061A〜11061I 第2のPUF回路
11062 誤り訂正用PUF情報生成部
1107 誤り訂正部分情報格納部
1108 誤り訂正情報生成部
1200 誤り訂正情報生成装置
1201 PUF回路計測部
1202 環境変化部
1203 環境変化解析部
1204 誤り訂正部分情報生成部
1205 誤り訂正部分情報設定部
2000 PUF回路
2001 第1リングオシレータ
2002 第2リングオシレータ
2003 第3リングオシレータ
2004 第4リングオシレータ
2005 第5リングオシレータ
2006 第6リングオシレータ
2007 第7リングオシレータ
2008 第8リングオシレータ
2011 第1リングオシレータ選択部
2012 第2リングオシレータ選択部
2021 第1周波数カウント部
2022 第2周波数カウント部
2030 出力ビット決定部
3004 PUF部
3006 誤り訂正情報格納部