(57)【要約】  ハッシュ鍵の安定性と秘匿性を高めた情報セキュリティ装置（１１００）を提供する。情報セキュリティ装置（１１００）は、予め定められたハッシュ鍵を出力するように物理特性を利用して設定された耐タンパー性を有する情報生成用ＰＵＦ部（１１０４）と、誤り訂正部分情報を記憶している誤り訂正部分情報格納部（１１０７）と、誤り訂正用ＰＵＦ情報を出力するように物理特性を利用して設定された耐タンパー性を有する誤り訂正用ＰＵＦ部（１１０６）と、訂正部分情報と誤り訂正用ＰＵＦ情報とを用いて誤り訂正情報を生成する誤り訂正情報生成部（１１０８）と、誤り訂正情報を用いて、情報生成用ＰＵＦ部（１１０４）から出力されるハッシュ鍵に対して誤り訂正を行い、誤り訂正された訂正後ハッシュ鍵を出力する誤り訂正部（１１０５）とを備える。
2008056612.tif 000002
【特許請求の範囲】
【請求項１】
予め設定された秘密データを出力する情報セキュリティ装置であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路と、
第１の訂正用データを記憶している訂正用データ記憶手段と、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路と、
前記訂正用データ記憶手段に記憶されている第１の訂正用データと、前記第２の耐タンパー回路から出力される第２の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成手段と、
前記訂正情報生成手段により生成された誤り訂正情報を用いて、前記第１の耐タンパー回路から出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正手段と
を備えることを特徴とする情報セキュリティ装置。
【請求項２】
前記情報セキュリティ装置は、さらに、
入力データを取得する取得手段と、
前記誤り訂正手段から出力される秘密データを鍵として用い、前記鍵により前記入力データを暗号化する暗号化手段とを備える
ことを特徴とする請求項１記載の情報セキュリティ装置。
【請求項３】
前記第１の耐タンパー回路に設定される秘密データと、前記第２の耐タンパー回路に設定される第２の訂正用データとは、ＰＵＦ（Physically Unclonable Function）により設定されている
ことを特徴とする請求項１記載の情報セキュリティ装置。
【請求項４】
前記第１の耐タンパー回路は、１ビットの値を前記秘密データの少なくとも一部として出力する１つ以上の第１のＰＵＦ回路を備え、
前記第２の耐タンパー回路は、２ビット以上の値を前記第２の訂正用データの少なくとも一部として出力する１つ以上の第２のＰＵＦ回路を備える
ことを特徴とする請求項３記載の情報セキュリティ装置。
【請求項５】
前記第１の耐タンパー回路は、１つ以上の第１のＰＵＦ回路を備え、
前記第１のＰＵＦ回路は、
発振信号を出力するＮ（Ｎ≧２）個の発振部と、
前記Ｎ個の発振部からＭ（Ｍ≦Ｎ）個の発振部を選択する選択部と、
前記選択部により選択されたＭ個の発振部から出力される発振信号の周波数の大小関係に基づいて出力値を決定して出力する決定部とを備え、
前記選択部は、前記決定部によって決定される出力値が前記予め定められた秘密データの少なくとも一部を示すようにＭ個の発振部を選択する
ことを特徴とする請求項３記載の情報セキュリティ装置。
【請求項６】
前記選択部は、前記Ｍ個の発振部から出力される発振信号の周波数の差分が第１の閾値以上となるように前記Ｍ個の発振部を選択する
ことを特徴とする請求項５記載の情報セキュリティ装置。
【請求項７】
前記情報セキュリティ装置は、さらに、
前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第１の耐タンパー回路から出力される秘密データとを比較することにより、前記第１の耐タンパー回路から出力される秘密データに誤りが生じたか否かを判別する誤り判別手段と、
前記誤り判別手段により誤りが生じたと判別されたときには、前記第１の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、
前記第１のＰＵＦ回路は、さらに、
前記再設定要求手段から再設定の要求を受け付けたときには、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部を備える
ことを特徴とする請求項６記載の情報セキュリティ装置。
【請求項８】
前記第１のＰＵＦ回路は、さらに、
前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、
前記選択部がＭ個の発振部を選択する際に、前記発振周波数の差分が前記第１の閾値以上となるようなＭ個の発振部を選択することができないときに、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、
前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備える
ことを特徴とする請求項７記載の情報セキュリティ装置。
【請求項９】
前記第１の耐タンパー回路は、
複数の前記第１のＰＵＦ回路と、
前記複数の第１のＰＵＦ回路から出力される出力値を結合することにより秘密データを生成する結合部とを備え、
前記誤り判別手段は、前記第１の耐タンパー回路から出力される秘密データに誤りが生じたと判別するときには、さらに、前記複数の第１のＰＵＦ回路のうち、誤った出力値を出力する第１のＰＵＦ回路を特定し、
前記再設定要求手段は、誤った出力値を出力していると特定された第１のＰＵＦ回路に対して、出力値が前記予め定められた秘密データの一部を示すように、出力値の再設定を要求する
ことを特徴とする請求項７記載の情報セキュリティ装置。
【請求項１０】
前記情報セキュリティ装置は、さらに、
前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第１の耐タンパー回路から出力される誤り訂正前の秘密データとを比較することにより、前記誤り訂正前の秘密データに誤りが生じたか否かを判別する誤り判別手段と、
前記誤り判別手段により誤りが生じたと判別されたときには、前記第１の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、
前記第１のＰＵＦ回路は、さらに、
前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、
前記再設定要求手段から再設定の要求を受け付けたときには、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、
前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備える
ことを特徴とする請求項６記載の情報セキュリティ装置。
【請求項１１】
前記第１のＰＵＦ回路は、さらに、
前記Ｍ個の発振部から出力される発振信号の周波数の差分が第２の閾値未満であるか否かを判別する差分判別部と、
前記差分判別部によって前記第２の閾値未満であると判別されると、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部とを備える
ことを特徴とする請求項６記載の情報セキュリティ装置。
【請求項１２】
前記第１のＰＵＦ回路は、さらに、
前記第１および第２の閾値のうちの少なくとも一方を格納している閾値格納部と、
前記閾値格納部に格納されている、前記第１および第２の閾値のうちの少なくとも一方を更新する更新部とを備える
ことを特徴とする請求項１１記載の情報セキュリティ装置。
【請求項１３】
前記選択部は、
前記Ｍ個の発振部から出力される発振信号の周波数の差分が第１の閾値以上となるような前記Ｍ個の発振部を検索する検索部と、
前記検索部によって検索されたＭ個の発振部を示す選択パラメータを保持するパラメータ保持部と、
前記パラメータ保持部に保持されている選択パラメータの示すＭ個の発振部を選択すべきＭ個の発振部と決定して選択する選択決定部とを備える
ことを特徴とする請求項６記載の情報セキュリティ装置。
【請求項１４】
秘密データの誤りを訂正するための第１の訂正用データを生成するデータ生成装置であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から出力される出力値を計測する第１の計測手段と、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から出力される出力値を計測する第２の計測手段と、
前記第１および第２の計測手段によって計測された出力値に基づいて、前記第１の訂正用データを生成するデータ生成手段と、
前記データ生成手段によって生成された前記第１の訂正用データを記憶媒体に格納する格納処理手段と
を備えることを特徴とするデータ生成装置。
【請求項１５】
前記データ生成手段は、
前記第１の計測手段によって計測された出力値と、前記秘密データの示す値との差分を算出することにより、誤り訂正情報を生成する第１の生成手段と、
前記第２の計測手段によって計測された出力値と、前記誤り訂正情報の示す値との差分を算出することにより、前記第１の訂正用データを生成する第２の生成手段とを備える
ことを特徴とする請求項１４記載のデータ生成装置。
【請求項１６】
前記第１および第２の計測手段は、出力値の計測を繰り返し行い、
前記第１の生成手段は、繰り返し計測された出力値の分布に基づいて特定される出力値を用いて前記誤り訂正情報を生成し、
前記第２の生成手段は、繰り返し計測された出力値の分布に基づいて特定される出力値を用いて前記第１の訂正用データを生成する
ことを特徴とする請求項１５記載のデータ生成装置。
【請求項１７】
前記データ生成装置は、さらに、
前記第１および第２の耐タンパー回路から出力される出力値の計測が行われるごとに、前記第１および第２の耐タンパー回路の周辺環境を変化させる環境変化手段を備える
ことを特徴とする請求項１６記載のデータ生成装置。
【請求項１８】
前記環境変化手段は、前記第１および第２の耐タンパー回路の周辺温度を変化させる
ことを特徴とする請求項１７記載のデータ生成装置。
【請求項１９】
予め設定された秘密データを出力する情報セキュリティ方法であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から秘密データを出力させる第１の出力ステップと、
第１の訂正用データを記憶している訂正用データ記憶手段から前記第１の訂正用データを出力させる第２の出力ステップと、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から第２の訂正用データを出力させる第３の出力ステップと、
前記第２の出力ステップで出力される第１の訂正用データと、前記第３の出力ステップで出力される第２の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成ステップと、
前記訂正情報生成ステップで生成された誤り訂正情報を用いて、前記第１の出力ステップで出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正ステップと
を含むことを特徴とする情報セキュリティ方法。
【請求項２０】
秘密データの誤りを訂正するための第１の訂正用データを生成するデータ生成方法であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から出力される出力値を計測する第１の計測ステップと、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から出力される出力値を計測する第２の計測ステップと、
前記第１および第２の計測ステップで計測された出力値に基づいて、前記第１の訂正用データを生成するデータ生成ステップと、
前記データ生成ステップで生成された前記第１の訂正用データを記憶媒体に格納する格納ステップと
を含むことを特徴とするデータ生成方法。
【請求項２１】
予め設定された秘密データを出力するためのプログラムであって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から秘密データを出力させる第１の出力ステップと、
第１の訂正用データを記憶している訂正用データ記憶手段から前記第１の訂正用データを出力させる第２の出力ステップと、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から第２の訂正用データを出力させる第３の出力ステップと、
前記第２の出力ステップで出力される第１の訂正用データと、前記第３の出力ステップで出力される第２の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成ステップと、
前記訂正情報生成ステップで生成された誤り訂正情報を用いて、前記第１の出力ステップで出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正ステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項２２】
秘密データの誤りを訂正するための第１の訂正用データを生成するためのプログラムであって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から出力される出力値を計測する第１の計測ステップと、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から出力される出力値を計測する第２の計測ステップと、
前記第１および第２の計測ステップで計測された出力値に基づいて、前記第１の訂正用データを生成するデータ生成ステップと、
前記データ生成ステップで生成された前記第１の訂正用データを記憶媒体に格納する格納ステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項２３】
予め設定された秘密データを出力する集積回路であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路と、
第１の訂正用データを記憶している訂正用データ記憶手段と、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路と、
前記訂正用データ記憶手段に記憶されている第１の訂正用データと、前記第２の耐タンパー回路から出力される第２の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成手段と、
前記訂正情報生成手段により生成された誤り訂正情報を用いて、前記第１の耐タンパー回路から出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正手段と
を備えることを特徴とする集積回路。
【請求項２４】
秘密データの誤りを訂正するための第１の訂正用データを生成する集積回路であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から出力される出力値を計測する第１の計測手段と、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から出力される出力値を計測する第２の計測手段と、
前記第１および第２の計測手段によって計測された出力値に基づいて、前記第１の訂正用データを生成するデータ生成手段と、
前記データ生成手段によって生成された前記第１の訂正用データを記憶媒体に格納する格納処理手段と
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証や暗号を実現するシステムに関するものであり、暗号処理で用いる鍵などの秘密データや、機器固有のＩＤデータを解析から保護された形でセキュアに実装する情報セキュリティ装置に関する。
【背景技術】
【０００２】
近年、デジタルコンテンツの著作権保護やネット上の通信データの秘匿を目的として、各種民生機器などで暗号処理を行うケースが多くなってきた。暗号処理においては、その処理に用いる鍵やＩＤデータを機器内に蓄積する必要があり、著作権保護システムや秘話通信システムの安全性は、前記鍵やＩＤデータの秘匿性に大きく依存する。従って、そういった秘密データを、機器外部からの解析から保護された形でセキュアに蓄積する必要がある。【０００３】
秘密データをセキュアに蓄積する典型的な従来方法としては、耐タンパー性の高いハードウェアチップ（耐タンパーチップ）内に蓄積する方法や、耐タンパーが施されたソフトウェアプログラム内に埋め込むような方法があった。しかし、前者の方法では、秘密データの高い秘匿性は実現できるものの特殊な専用チップが必要となるためコストが高くなるという問題があり、後者の方法では、一般的には余り高い秘匿性は実現できず、時間をかけて解析を行うことで秘密データが露呈してしまう可能性があった。【０００４】
耐タンパーチップのような特殊なハードウェアを必要とせず、秘密データの高い秘匿性を実現可能な方法として、ＰＵＦ（Ｐｈｙｓｉｃａｌｌｙ  Ｕｎｃｌｏａｎａｂｌｅ  Ｆｕｎｃｔｉｏｎ）と呼ばれる技術がある。ＰＵＦとは、デバイスの物理的な特性を利用して、物理的な解析に対しても耐性があるような秘密データの蓄積方法である。ＰＵＦの具体的な方法は、各種があるが、中でも特許文献１に開示のＳｉｌｉｃｏｎ  ＰＵＦと呼ばれる方法は、製造に特殊な環境や設備を必要としないことから、安価な製造コストで高い耐タンパー性を実現でき、低コスト性が要求される民生機器などに特に適した方法といえる。【０００５】
（Ｓｉｌｉｃｏｎ  ＰＵＦの概要）
図１は、従来のＳｉｌｉｃｏｎ  ＰＵＦを実現する回路の構成を示した図である。図１において、ＰＵＦ回路２０００は、トリガ信号を入力すると、１ビットの秘密データを出力する回路である。【０００６】
ＰＵＦ回路２０００は、８個のリングオシレータ（第１リングオシレータ２００１〜第８リングオシレータ２００８）と、入力データに基づいて前記８個のリングオシレータのうちから１個を選択するリングオシレータ選択部（第１リングオシレータ選択部２０１１及び第２リングオシレータ選択部２０１２）と、前記リングオシレータ選択部が選択したリングオシレータの発振周波数をカウントする周波数カウント部（第１周波数カウント部２０２１及び第２周波数カウント部２０２２）と、カウントした周波数を元にＰＵＦ回路２０００の出力ビットを決定する出力ビット決定部２０３０とからなる。以下、ＰＵＦ回路２０００の動作を説明する。【０００７】
まず、リングオシレータ選択部２０１１、２０１２はそれぞれ、８個のリングオシレータ２００１〜２００８の中から予め決定した１個をそれぞれ選択する。次に、前記リングオシレータ２００１〜２００８にトリガ信号が入力され、リングオシレータは発振動作を開始する。周波数カウント部２０２１、２０２２は、前記リングオシレータ選択部２０１１、２０１２が選択したリングオシレータからの出力信号をそれぞれ計測して、リングオシレータの発振周波数を計測する。そして、出力ビット決定部２０３０は、前記計測した２つの発振周波数を比較し、その大小関係によって、ＰＵＦ回路２０００の出力ビットを決定する。【０００８】
上記一連の動作により、ＰＵＦ回路２０００にトリガ信号を入力すると、ＰＵＦ回路２０００の内部で出力ビットが１ビットだけ決定され出力される。８個のリングオシレータ２００１〜２００８は、リングオシレータの段数などの回路構成は同一であるが、製造プロセスにおいて遅延時間など物理的な特性に若干であるがバラつきが生じる。それにより、各リングオシレータの発振周波数は、少しずつ異なった値となる。その異なり方は、ＰＵＦ回路を製造する際に予測不可能な形で決まり、かつ、ＰＵＦ回路ごとに違ってくる。このような発振周波数により出力ビットが異なる。また、入力データに対する出力ビットの対応関係は、ＰＵＦ回路内の各リングオシレータの発振周波数を計測することで解析することができる。しかし、ＰＵＦ回路に対して、例えばブロービングなどで、外部から発振周波数による解析操作を行うと、リングオシレータの物理特性が変化して、出力ビット計算時と同じ発振周波数を計測することができないので、外部からの解析により、入力データに対する出力ビットの対応関係を調べることは困難である。また、ＰＵＦ回路は、リングオシレータ、周波数カウンタ、比較器などの組み合わせ回路によって実現できるため、特殊な製造環境や設備を必要とせず、通常のＬＳＩ製造環境・設備を用いて安価に製造することが可能である。【０００９】
（Ｓｉｌｉｃｏｎ  ＰＵＦの課題）
上記のとおり、Ｓｉｌｉｃｏｎ  ＰＵＦの技術により、安価なコストによって、解析困難な形でチップごとに異なった入出力関係を有する関数を実装することが可能となったが、以下のような課題もある。ＰＵＦ回路の出力ビットは、入力データに基づいて選択されたリングオシレータの発振周波数の大小関係で決定される。先ほど説明したとおり、回路製造時の遅延時間などの物理特性のバラつきによって、リングオシレータの発信周波数にバラつきが生じるが、周波数の差がわずかしかない二つのリングオシレータ間の大小関係は、温度変化など外部の環境によって逆転してしまう恐れがある。例えば、ある入力データによって、二つのリングオシレータＡ及びＢが選択され、発振周波数がそれぞれ１２５６Ｈｚ、１２４５Ｈｚと計測されたとする。このとき、出力ビット値は、［Ａの発振周波数］＞［Ｂの発振周波数］から“１”と判定される。また、別のタイミングで同じ入力データを、このＰＵＦ回路に入力すると、同じリングオシレータＡ及びＢが選択されるが、このとき、先ほどよりも外部の温度が上昇したとする。その場合、リングオシレータの遅延時間が上昇するので、発振周波数も、それぞれ低下することになるが、その低下の度合いにも、リングオシレータによって若干であるがバラつきがあるので、リングオシレータの元もとの周波数差が僅かしかない場合には、大小関係が反転してしまう恐れがある。上記の例では、リングオシレータＡとＢとの周波数差は、９Ｈｚしかないので、温度変化によって、［Ａの発振周波数］＞［Ｂの発振周波数］という大小関係は反転してしまう恐れがある。即ち、同じ入力データに対して、場合によっては、違う出力ビット値を出力してしまう恐れがあり、出力ビット値の安定性に課題がある。【００１０】
（Ｓｌｉｌｉｃｏｎ  ＰＵＦの改良）
上記課題に対し、従来方法では誤り訂正符号を導入し、出力値（出力ビットの値）の誤りを訂正することで安定性を向上させている。【００１１】
図２は、従来方法における情報セキュリティ装置３０００の構成を示している。情報セキュリティ装置３０００は、外部から入力された入力データに対し、ＰＵＦを使用して生成した鍵を用いた鍵付ハッシュ値を出力している。鍵付ハッシュ値は、鍵付ハッシュ関数を用いて生成される。鍵付ハッシュ関数については、非特許文献１の１８９〜１９５ページに記載されている。【００１２】
情報セキュリティ装置３０００は、外部から入力データを受け付ける入力部３００１と、鍵付ハッシュ値を出力する出力部３００２と、鍵付ハッシュ値を生成するハッシュ生成部３００３と、ＰＵＦを用いて鍵を生成するＰＵＦ部３００４と、誤り訂正情報に基づき、鍵を誤り訂正し訂正後ハッシュ鍵を生成する誤り訂正部３００５と、誤り訂正情報を格納する誤り訂正情報格納部３００６とを備える。【００１３】
ＰＵＦ部３００４は先のＰＵＦ回路２０００を複数、例えば、６個備え、それぞれのＰＵＦ回路の出力ビットを連結した６ビットを鍵とする。【００１４】
情報セキュリティ装置３０００の動作を以下に示す。入力部３００１は外部のデータの入力を受け付け、これによりＰＵＦ部３００４内のＰＵＦ回路２０００にトリガ信号を入力する。ＰＵＦ回路２０００では、出力ビットを生成し、ＰＵＦ部３００４は６つのＰＵＦ回路２０００の出力ビットを連結したものを鍵とする。その後、誤り訂正部３００５は鍵を誤り訂正情報を用いて訂正し訂正後ハッシュ鍵を生成する。さらにハッシュ生成部３００３は訂正後ハッシュ鍵を用いて、入力データの鍵付ハッシュ値を生成し、出力部３００２がこれを出力する。【００１５】
誤り訂正情報は、情報セキュリティ装置３０００の製造時に、ＰＵＦ部３００４内のＰＵＦ回路２０００の値を計測して決定する。具体的には、ＰＵＦ部３００４の鍵を複数回計測し、その中で最も高確率に発生する鍵の値を求め、これに対して誤り訂正情報を確定し、誤り訂正情報格納部３００６に格納する。
【特許文献１】米国特許出願公開第２００３／０２０４７４３号明細書
【非特許文献１】岡本龍明、山本博資、”現代暗号”、産業図書（１９９７年）
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、上記従来技術では、メモリ（誤り訂正情報格納部３００６）に格納された誤り訂正情報を解析することで、誤り訂正部３００５からハッシュ生成部３００３に入力される訂正後ハッシュ鍵の鍵値が求めやすくなってしまうという問題がある。【００１７】
例えば、３ビットごとの繰り返し符号を用いて誤り訂正する方法を考える。繰り返し符号では、３ビットのハミング重みを計算し、それが１以下であれば“０”、２以上であれば“１”と復号化する。例えば、“０１１”であれば、“１”と復号化する。上記のＰＵＦ部３００４の出力は６ビットであるが、これを２ビットごとの３組に分割し、誤り訂正情報を、３ビットの繰り返し符号の１ビット分を３組合わせた合計３ビットとする。情報セキュリティ装置３０００の製造時に、ＰＵＦ部３００４の出力値を計測し、最も高確率に発生する出力値を“１１  ００  ０１”であるとする。誤り訂正情報を“Ｘ  Ｙ  Ｚ”（Ｘ、Ｙ、Ｚは０または１）とする。このとき、一つ目の符号は“１１Ｘ”となるが、これを復号化すると“１”となる。ここで誤りが起こっても正しく復号化できるように“Ｘ”を１に設定する。同様に、“Ｙ”を０に設定する。“Ｚ”は０、１のどちらに設定してもよいが、ここでは“１”とする。そうすると、誤り訂正情報は“１  ０  １”であり、復号化後の値、すなわち、訂正後ハッシュ鍵は“１  ０  １”である。したがって、誤り訂正情報と訂正後ハッシュ鍵が等しくなり、攻撃者が誤り訂正情報を解析することで訂正後ハッシュ鍵を知ることができる。【００１８】
上記例は、極端なケースで説明しているが、このような誤り訂正方法や誤り訂正情報の設定をしない場合も、攻撃者が誤り訂正情報を用いて訂正後ハッシュ鍵の鍵値を求めやすくなる可能性がある。鍵値が求められると、それをメモリに格納して鍵付ハッシュ関数に使用するＰＵＦのシミュレータを攻撃者が作成し、それを用いた偽造が可能になるため秘匿性が保たれなくなる。【００１９】
このように、従来技術では、ＰＵＦの安全性が低いという課題がある。【００２０】
そこで本発明は、上記課題を解決するものであって、メモリに格納された情報を攻撃者により解析されても、ＰＵＦの安全性が低下しない情報セキュリティ装置を提供することを目的とする。つまり、秘密データの安定性と秘匿性を高めた情報セキュリティ装置を提供することを目的とする。
【課題を解決するための手段】
【００２１】
上記目的を達成するために、本発明に係る情報セキュリティ装置は、予め設定された秘密データを出力する情報セキュリティ装置であって、予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路と、第１の訂正用データを記憶している訂正用データ記憶手段と、第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路と、前記訂正用データ記憶手段に記憶されている第１の訂正用データと、前記第２の耐タンパー回路から出力される第２の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成手段と、前記訂正情報生成手段により生成された誤り訂正情報を用いて、前記第１の耐タンパー回路から出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正手段とを備えることを特徴とする。例えば、前記第１の耐タンパー回路に設定される秘密データと、前記第２の耐タンパー回路に設定される第２の訂正用データとは、ＰＵＦ（Physically Unclonable Function）により設定されている。【００２２】
これにより、秘密データの誤り訂正に直接的に用いられる誤り訂正情報は、従来のようにメモリに格納されておらず、第２の耐タンパー回路を用いて生成されるため、攻撃者に対して誤り訂正情報を見つけ難くすることができ、その結果、第１の耐タンパー回路に設定された秘密データの安全性および秘匿性を高めることができる。さらに、本発明では、周辺温度などの環境変化や経年的な要因によって第１の耐タンパー回路から出力される秘密データに誤りが生じても、誤り訂正情報によってその誤りが訂正されるため、秘密データの安定性を高めることができる。【００２３】
また、前記情報セキュリティ装置は、さらに、入力データを取得する取得手段と、前記誤り訂正手段から出力される秘密データを鍵として用い、前記鍵により前記入力データを暗号化する暗号化手段とを備えることを特徴としてもよい。【００２４】
例えば、入力データは鍵付ハッシュ値や暗号文に変換される。これにより、鍵付ハッシュ値や暗号文などの安全性を高めることができる。【００２５】
また、前記第１の耐タンパー回路は、１ビットの値を前記秘密データの少なくとも一部として出力する１つ以上の第１のＰＵＦ回路を備え、前記第２の耐タンパー回路は、２ビット以上の値を前記第２の訂正用データの少なくとも一部として出力する１つ以上の第２のＰＵＦ回路を備えることを特徴としてもよい。【００２６】
例えば、第２のＰＵＦ回路から１ビットの値しか出力されないような場合には、ノイズなどによってその値に誤りが生じることがある。しかし、本発明では、第２のＰＵＦ回路は２ビット以上の値を出力するため、そのうちの１ビットに誤りが生じても、その誤りを容易に訂正することができ、第２の耐タンパー回路から出力される第２の訂正用データの耐ノイズ性を向上することができる。【００２７】
また、前記第１の耐タンパー回路は、１つ以上の第１のＰＵＦ回路を備え、前記第１のＰＵＦ回路は、発振信号を出力するＮ（Ｎ≧２）個の発振部と、前記Ｎ個の発振部からＭ（Ｍ≦Ｎ）個の発振部を選択する選択部と、前記選択部により選択されたＭ個の発振部から出力される発振信号の周波数の大小関係に基づいて出力値を決定して出力する決定部とを備え、前記選択部は、前記決定部によって決定される出力値が前記予め定められた秘密データの少なくとも一部を示すようにＭ個の発振部を選択することを特徴としてもよい。具体的には、前記選択部は、前記Ｍ個の発振部から出力される発振信号の周波数の差分が第１の閾値以上となるように前記Ｍ個の発振部を選択する。【００２８】
例えば、選択された２つの発振部から出力される発振信号の周波数の差分が極めて小さい場合には、それらの発振部の物理特性が経年的に変化することによって、それらの周波数の大小関係が反転してしまうことがある。しかし、本発明では、周波数の差分が第１の閾値以上になるようにＭ個の発振部が選択されるため、それらの発振部の物理特性が経年変化しても、それらの発振部から出力される発振信号の周波数の大小関係が変化してしまうのを抑えることができる。その結果、第１の耐タンパー回路から出力される秘密データに発生する誤りを抑えることができる。【００２９】
また、前記情報セキュリティ装置は、さらに、前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第１の耐タンパー回路から出力される秘密データとを比較することにより、前記第１の耐タンパー回路から出力される秘密データに誤りが生じたか否かを判別する誤り判別手段と、前記誤り判別手段により誤りが生じたと判別されたときには、前記第１の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、前記第１のＰＵＦ回路は、さらに、前記再設定要求手段から再設定の要求を受け付けたときには、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部を備えることを特徴としてもよい。【００３０】
これにより、第１の耐タンパー回路が出力した秘密データに誤りが生じたときには、予め定められた秘密データが第１の耐タンパー回路に設定し直されるため、誤り訂正の精度を高めることができ、秘密データの安定性をさらに向上することができる。【００３１】
また、前記第１のＰＵＦ回路は、さらに、前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、前記選択部がＭ個の発振部を選択する際に、前記発振周波数の差分が前記第１の閾値以上となるようなＭ個の発振部を選択することができないときに、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備えることを特徴としてもよい。【００３２】
Ｎ個の発振部の何れを選択しても、選択されたＭ個の発振部から出力される発振信号の周波数の差分が第１の閾値未満となってしまう場合には、その第１のＰＵＦ回路からの出力値に誤りが生じ易くその信頼性が低くなる。したがって、本発明では、このような場合には、第１のＰＵＦ回路が出力すべき、予め定められた秘密データの少なくとも一部が秘密データ用記憶部に格納され、その秘密データの少なくとも一部が出力されるため、第１の耐タンパー回路から出力される秘密データに誤りが生じるのを防ぎ、信頼性を高めることができる。【００３３】
また、前記第１の耐タンパー回路は、複数の前記第１のＰＵＦ回路と、前記複数の第１のＰＵＦ回路から出力される出力値を結合することにより秘密データを生成する結合部とを備え、前記誤り判別手段は、前記第１の耐タンパー回路から出力される秘密データに誤りが生じたと判別するときには、さらに、前記複数の第１のＰＵＦ回路のうち、誤った出力値を出力する第１のＰＵＦ回路を特定し、前記再設定要求手段は、誤った出力値を出力していると特定された第１のＰＵＦ回路に対して、出力値が前記予め定められた秘密データの一部を示すように、出力値の再設定を要求することを特徴としてもよい。【００３４】
これにより、誤った出力値を出力する第１のＰＵＦ回路が特定されて、その特定された第１のＰＵＦ回路の出力値が再設定されるため、予め定められた秘密データを第１の耐タンパー回路に適切に設定し直すことができる。【００３５】
また、前記情報セキュリティ装置は、さらに、前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第１の耐タンパー回路から出力される誤り訂正前の秘密データとを比較することにより、前記誤り訂正前の秘密データに誤りが生じたか否かを判別する誤り判別手段と、前記誤り判別手段により誤りが生じたと判別されたときには、前記第１の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、前記第１のＰＵＦ回路は、さらに、前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、前記再設定要求手段から再設定の要求を受け付けたときには、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備えることを特徴としてもよい。【００３６】
第１のＰＵＦ回路が一度でも誤った出力値を出力した場合には、その第１のＰＵＦ回路の信頼性は疑わしい。したがって、本発明では、このような場合には、その第１のＰＵＦ回路が出力すべき出力値である、予め定められた秘密データの少なくとも一部が秘密データ用記憶部に格納され、その秘密データの少なくとも一部が出力されるため、第１の耐タンパー回路から出力される秘密データに誤りが生じるのを防ぎ、信頼性を高めることができる。【００３７】
また、前記第１のＰＵＦ回路は、さらに、前記Ｍ個の発振部から出力される発振信号の周波数の差分が第２の閾値未満であるか否かを判別する差分判別部と、前記差分判別部によって前記第２の閾値未満であると判別されると、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部とを備えることを特徴としてもよい。【００３８】
これにより、第１のＰＵＦ回路から出力される出力値の誤りを未然に防ぐことができる。【００３９】
また、前記第１のＰＵＦ回路は、さらに、前記第１および第２の閾値のうちの少なくとも一方を格納している閾値格納部と、前記閾値格納部に格納されている、前記第１および第２の閾値のうちの少なくとも一方を更新する更新部とを備えることを特徴としてもよい。【００４０】
これにより、予め定められた秘密データを適切なタイミングで設定し直すことができる。【００４１】
また、上記目的を達成するために、本発明に係るデータ生成装置は、秘密データの誤りを訂正するための第１の訂正用データを生成するデータ生成装置であって、予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から出力される出力値を計測する第１の計測手段と、第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から出力される出力値を計測する第２の計測手段と、前記第１および第２の計測手段によって計測された出力値に基づいて、前記第１の訂正用データを生成するデータ生成手段と、前記データ生成手段によって生成された前記第１の訂正用データを記憶媒体に格納する格納処理手段とを備えることを特徴とする。例えば、前記データ生成手段は、前記第１の計測手段によって計測された出力値と、前記秘密データの示す値との差分を算出することにより、誤り訂正情報を生成する第１の生成手段と、前記第２の計測手段によって計測された出力値と、前記誤り訂正情報の示す値との差分を算出することにより、前記第１の訂正用データを生成する第２の生成手段とを備える。【００４２】
これにより、第２の訂正用データを用いて誤り訂正情報を生成するために必要な第１の訂正用データを適切に生成することができる。【００４３】
なお、本発明は、このような情報セキュリティ装置およびデータ生成装置として実現することができるだけでなく、その装置によって行われる処理方法や、その処理方法をコンピュータに実行させるプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
【発明の効果】
【００４４】
本発明の情報セキュリティ装置は、メモリに格納された情報を用いても、ＰＵＦにより秘匿された秘密データを攻撃者が知ることができなくなり、ＰＵＦの安全性が低下しないようにすることができ、その価値は大きい。さらに、本発明の情報セキュリティ装置によれば、従来技術のＰＵＦ回路と同様に製造コストが安価でセキュアにデータを保管可能という特徴を保持しつつ、かつ、経年変化に対する出力ビット値の安定性を向上できるような情報セキュリティ装置を提供することが可能になるという効果がある。
【図面の簡単な説明】
【００４５】
【図１】図１は、従来のＰＵＦ回路の構成を示す図である。
【図２】図２は、従来のＰＵＦの誤り訂正を用いた情報セキュリティ装置の構成を示す図である。
【図３】図３は、本発明の実施の形態１における情報セキュリティシステムの構成を示すブロック図である。
【図４】図４は、同上の情報セキュリティ装置の構成を示す図である。
【図５】図５は、同上の情報生成用ＰＵＦ部の構成を示す図である。
【図６】図６は、同上の第１のＰＵＦ回路の構成を示す図である。
【図７】図７は、同上の誤り訂正用ＰＵＦ部の構成を示す図である。
【図８】図８は、同上の第２のＰＵＦ回路の構成を示す図である。
【図９】図９は、同上の第２のＰＵＦ回路の差分と出力値のマッピングを示す図である。
【図１０】図１０は、同上の誤り訂正情報生成装置の構成を示す図である。
【図１１】図１１は、同上の環境変化解析部で解析した出力値の分布を示す図である。
【図１２Ａ】図１２Ａは、同上の誤り訂正情報生成装置が誤り訂正部分情報を設定するときの動作を示すフローチャートである。
【図１２Ｂ】図１２Ｂは、同上の情報セキュリティ装置が鍵付ハッシュ値を計算するときの動作を示すフローチャートである。
【図１３】図１３は、本発明の実施の形態２におけるＰＵＦ回路の構成を示すブロック図である。
【図１４】図１４は、同上のリングオシレータの構成を示すブロック図である。
【図１５】図１５は、同上のＰＵＦ回路が入力値データを設定するときの動作を示すフローチャートである。
【図１６】図１６は、同上のＰＵＦ回路が出力ビットを算出するときの動作を示すフローチャートである。
【図１７】図１７は、同上のＰＵＦ回路が入力値データを再設定するときの動作を示すフローチャートである。
【図１８】図１８は、本発明の実施の形態３に係るＰＵＦ回路の構成を示すブロック図である。
【図１９】図１９は、同上の情報生成用ＰＵＦ部にハッシュ鍵を設定する方法を説明するための図である。
【図２０】図２０は、同上の情報セキュリティ装置の構成を示す図である。
【図２１】図２１は、同上の誤り訂正処理部の構成を示す図である。
【図２２】図２２は、同上のＰＵＦ回路の他の動作を示す図である。
【符号の説明】
【００４６】
１    ＰＵＦ回路
１３    出力ビット決定部
１４    入力値保管部
１５    入力値設定部
１６    入力値再設定判定部
１７    閾値保管部
１８    出力ビット制御部
１９    出力ビット保管部
１０１〜１０８    第１〜第８リングオシレータ
１１１，１１２    第１、第２リングオシレータ選択部
１２１，１２２    第１、第２周波数カウント部
１０００    情報セキュリティシステム
１１００，３０００    情報セキュリティ装置
１１０１，３００１    入力部
１１０２，３００２    出力部
１１０３，３００３    ハッシュ生成部
１１０４    情報生成用ＰＵＦ部
１１０４１Ａ〜１１０４１I    第１のＰＵＦ回路
１１０４２    ハッシュ鍵生成部
１１０５，３００５    誤り訂正部
１１０６    誤り訂正用ＰＵＦ部
１１０６１Ａ〜１１０６１I    第２のＰＵＦ回路
１１０６２    誤り訂正用ＰＵＦ情報生成部
１１０７    誤り訂正部分情報格納部
１１０８    誤り訂正情報生成部
１２００    誤り訂正情報生成装置
１２０１    ＰＵＦ回路計測部
１２０２    環境変化部
１２０３    環境変化解析部
１２０４    誤り訂正部分情報生成部
１２０５    誤り訂正部分情報設定部
２０００    ＰＵＦ回路
２００１    第１リングオシレータ
２００２    第２リングオシレータ
２００３    第３リングオシレータ
２００４    第４リングオシレータ
２００５    第５リングオシレータ
２００６    第６リングオシレータ
２００７    第７リングオシレータ
２００８    第８リングオシレータ
２０１１    第１リングオシレータ選択部
２０１２    第２リングオシレータ選択部
２０２１    第１周波数カウント部
２０２２    第２周波数カウント部
２０３０    出力ビット決定部
３００４    ＰＵＦ部
３００６    誤り訂正情報格納部
【発明を実施するための最良の形態】
【００４７】
以下、本発明の実施の形態について、図面を参照しながら説明する。【００４８】
（実施の形態１）
本発明に係る第１の実施の形態としての情報セキュリティシステム１０００について、説明する。【００４９】
図３は、実施の形態１における情報セキュリティシステム１０００の構成を示す図である。【００５０】
本情報セキュリティシステム１０００は、秘密データの安定性と秘匿性を高めた情報セキュリティ装置１１００と、誤り訂正部分情報を生成して情報セキュリティ装置１１００に設定する誤り訂正情報生成装置１２００とを備える。なお、本実施の形態では、誤り訂正情報生成装置１２００がデータ生成装置として構成されている。【００５１】
＜情報セキュリティ装置１１００の構成＞
図４は、情報セキュリティ装置１１００の構成を示す図である。情報セキュリティ装置１１００は、データ（入力データ）の入力を受け付ける入力部１１０１と、データを出力する出力部１１０２と、鍵付ハッシュ値を計算するハッシュ生成部１１０３と、鍵付ハッシュ関数の鍵であるハッシュ鍵を生成する情報生成用ＰＵＦ部１１０４と、ハッシュ鍵の誤りを訂正し訂正後ハッシュ鍵を生成する誤り訂正部１１０５と、誤り訂正用ＰＵＦ情報を生成する誤り訂正用ＰＵＦ部１１０６と、誤り訂正部分情報を格納する誤り訂正部分情報格納部１１０７と、誤り訂正情報を生成する誤り訂正情報生成部１１０８とを備える。【００５２】
なお、本実施の形態では、情報生成用ＰＵＦ部１１０４が、予め設定された秘密データたるハッシュ鍵を出力するように設定された第１の耐タンパー回路として構成され、誤り訂正部分情報格納部１１０７が、第１の訂正用データたる誤り訂正部分情報を記憶している訂正用データ記憶手段として構成されている。また、誤り訂正用ＰＵＦ部１１０６が、第２の訂正用データたる誤り訂正用ＰＵＦ情報を出力するように設定された第２の耐タンパー回路として構成され、誤り訂正情報生成部１１０８が、誤り訂正情報を生成する訂正情報生成手段として構成されている。さらに、入力部１１０１が、入力データを取得する取得手段として構成され、ハッシュ生成部１１０３が、入力データを暗号化する暗号化手段として構成されている。【００５３】
入力部１１０１は、外部より入力された入力データを受け付け、ハッシュ生成部１１０３に入力する。入力部１１０１は、さらに入力データを受け付けたときに、ＰＵＦ回路へのトリガを情報生成用ＰＵＦ部１１０４と誤り訂正用ＰＵＦ部１１０６に入力する。【００５４】
出力部１１０２は、鍵付ハッシュ値を出力する。【００５５】
ハッシュ生成部１１０３は、誤り訂正部１１０５で出力された訂正後ハッシュ鍵と入力部１１０１で受け付けた入力データを用いて、鍵付ハッシュ値を計算し、出力部１１０２に入力する。【００５６】
情報生成用ＰＵＦ部１１０４は、鍵付ハッシュ関数のハッシュ鍵を生成する。【００５７】
図５は、情報生成用ＰＵＦ部１１０４の構成を示す図である。【００５８】
情報生成用ＰＵＦ部１１０４は、図５に示すように、９つの第１のＰＵＦ回路１１０４１Ａ、１１０４１Ｂ、１１０４１Ｃ、１１０４１Ｄ、１１０４１Ｅ、１１０４１Ｆ、１１０４１Ｇ、１１０４１Ｈ、１１０４１Ｉと、第１のＰＵＦ回路のビットを連結してハッシュ鍵を生成するハッシュ鍵生成部１１０４２とからなる。後述する第１のＰＵＦ回路は１ビットの情報を出力し、情報生成用ＰＵＦ部１１０４は９つの第１のＰＵＦ回路の各１ビットの情報を連結して、誤り訂正部１１０５に入力する。なお、ここでは第１のＰＵＦ回路の数は９としていたが、９に限らず、２以上であれば何でもよい。【００５９】
（第１のＰＵＦ回路１１０４１Ａ、・・・、１１０４１Ｇ、１１０４１Ｈ、１１０４１Ｉの構成について）
第１のＰＵＦ回路１１０４１Ａ、・・・、１１０４１Ｉはそれぞれ、同じ構成であるため、以下では代表して第１のＰＵＦ回路１１０４１Ａの構成を説明する。【００６０】
図６は、第１のＰＵＦ回路１１０４１Ａの構成を示す図である。【００６１】
第１のＰＵＦ回路１１０４１Ａは、図６に示すように、第１リングオシレータ１１０４１Ａ０１、第２リングオシレータ１１０４１Ａ０２、・・・、及び第８リングオシレータ１１０４１Ａ０８と、第１リングオシレータ選択部１１０４１Ａ１１と、第２リングオシレータ選択部１１０４１Ａ１２と、第１周波数カウント部１１０４１Ａ２１と、第２周波数カウント部１１０４１Ａ２２と、出力ビット決定部１１０４１Ａ３０とから構成される。なお、本実施の形態では、第１リングオシレータ１１０４１Ａ０１〜第８リングオシレータ１１０４１Ａ０８がそれぞれ、発振信号を出力する発振部として構成され、第１リングオシレータ選択部１１０４１Ａ１１と第２リングオシレータ選択部１１０４１Ａ１２とがそれぞれ、発振部を選択する選択部として構成され、出力ビット決定部１１０４１Ａ３０が、第１のＰＵＦ回路１１０４１Ａの出力値を決定して出力する決定部として構成されている。【００６２】
第１リングオシレータ１１０４１Ａ０１〜第８リングオシレータ１１０４１Ａ０８は、同じ構成であり、それぞれトリガ信号に対して出力信号（発振信号）を出力する。【００６３】
第１リングオシレータ選択部１１０４１Ａ１１は、第１リングオシレータ１１０４１Ａ０１〜１１０４１Ａ０８の中から予め与えられたリングオシレータを選択する。【００６４】
第２リングオシレータ選択部１１０４１Ａ１２は、第１リングオシレータ１１０４１Ａ０１〜１１０４１Ａ０８の中から、第１リングオシレータ選択部１１０４１Ａ１１と異なり、予め与えられたリングオシレータを選択する。なお、リングオシレータの数を８としていたが、これに限らない。リングオシレータの数は２以上であればよい。【００６５】
第１周波数カウント部１１０４１Ａ２１は、第１リングオシレータ選択部１１０４１Ａ１１で選択したリングオシレータの周波数を計測する。【００６６】
第２周波数カウント部１１０４１Ａ２２は、第２リングオシレータ選択部１１０４１Ａ１２で選択したリングオシレータの周波数を計測する。【００６７】
出力ビット決定部１１０４１Ａ３０は、第１周波数カウント部１１０４１Ａ２１で計測した周波数Ｆ１と第２周波数カウント部１１０４１Ａ２２で計測した周波数Ｆ２を比較し、Ｆ１≧Ｆ２であれば“０”、Ｆ１＜Ｆ２であれば“１”を出力する。なお、ここでは周波数を計測するとしたが、周波数そのものではなく、周波数に近いもの、例えば、予め与えられた一定時間内のリングオシレータの出力信号が予め与えられた振幅と等しくなる回数を計測するとしてもよい。この場合、周波数の代わりにこの回数を比較して、“０”、“１”の出力ビットを決定してもよい。また、上記ではＦ１≧Ｆ２の場合“０”、Ｆ１＜Ｆ２の場合“１”を出力するとしたが、Ｆ１＜Ｆ２の場合“１”、Ｆ１≧Ｆ２の場合“０”を出力するとしてもよい。【００６８】
（第１のＰＵＦ回路１１０４１Ａ、・・・、１１０４１Ｉの動作について）
以下、構成について説明したときと同様に、代表して第１のＰＵＦ回路１１０４１Ａの動作を説明する。【００６９】
第１リングオシレータ選択部１１０４１Ａ１１は、予め与えられたリングオシレータを選択する。第２リングオシレータ選択部１１０４１Ａ１２も、予め与えられたリングオシレータを選択する。第１周波数カウント部１１０４１Ａ２１は、第１リングオシレータ選択部１１０４１Ａ１１で選択したリングオシレータの周波数を計測する。第２周波数カウント部１１０４１Ａ２２は、第２リングオシレータ選択部１１０４１Ａ１２で選択したリングオシレータの周波数を計測する。出力ビット決定部１１０４１Ａ３０は、第１周波数カウント部１１０４１Ａ２１及び第２周波数カウント部１１０４１Ａ２２で計測した周波数を用いて、出力ビットを決定する。【００７０】
（ハッシュ鍵生成部１１０４２について）
ハッシュ鍵生成部１１０４２は、第１のＰＵＦ回路１１０４１Ａ〜１１０４１Ｇのビットを連結し、連結したものをハッシュ鍵とする。【００７１】
誤り訂正部１１０５は、誤り訂正情報生成部１１０８で生成した誤り訂正情報を用いて、情報生成用ＰＵＦ部１１０４で生成したハッシュ鍵を誤り訂正し、訂正後ハッシュ鍵を生成する。誤り訂正の方法は、何でもよいが、簡単のため、例を示す。【００７２】
（誤り訂正の方法例）
この例では、３ビットの繰り返し符号を３つ連結したものを使用している。繰り返し符号とは、“０”を“０００”、“１”を“１１１”と符号化し、復号時には３ビットの多数決を取る符号である。例えば、“１０１”であれば１の数が２で多数決を取ると“１”と復号化される。すなわち、符号のハミング重み（１の数）が１以下であれば“０”、２以上であれば“１”と復号化する。【００７３】
誤り訂正情報を“０１０  ０１０  ００１”とする。情報生成用ＰＵＦ部１１０４で生成したハッシュ鍵を“１０１  ０００  １１１”とする。誤り訂正部１１０５では、誤り訂正情報とハッシュ鍵の排他的論理和（ＸＯＲ）を取る。【００７４】
“０１０  ０１０  ００１”  ＸＯＲ  “１０１  ０００  １１１”
＝“１１１  ０１０  １１０”
これに対し復号化すると、一つ目の繰り返し符号は“１１１”であるため“１”、二つ目は“０１０”であるため“０”、三つ目は“１１０”であるため“１”と復号化する。【００７５】
したがって、この例では訂正後ハッシュ鍵は“１０１”となる。【００７６】
誤り訂正用ＰＵＦ部１１０６は、誤り訂正用ＰＵＦ情報を生成する。【００７７】
図７は、誤り訂正用ＰＵＦ部１１０６の構成を示す図である。【００７８】
誤り訂正用ＰＵＦ部１１０６は、図７に示すように、９つの第２のＰＵＦ回路１１０６１Ａ、１１０６１Ｂ、１１０６１Ｃ、１１０６１Ｄ、１１０６１Ｅ、１１０６１Ｆ、１１０６１Ｇ、１１０６１Ｈ、１１０６１Ｉと、第２のＰＵＦ回路のビットを連結して誤り訂正用ＰＵＦ情報を生成する誤り訂正用ＰＵＦ情報生成部１１０６２とからなる。後述する第２のＰＵＦ回路は３ビットの情報を出力し、誤り訂正用ＰＵＦ部１１０６は９つの第２のＰＵＦ回路の各３ビットの情報を連結して、誤り訂正情報生成部１１０８に入力する。なお、ここでは第２のＰＵＦ回路の数は９としていたが、９に限らず、２以上であれば何でもよい。【００７９】
（第２のＰＵＦ回路１１０６１Ａ、・・・、１１０６１Ｉの構成について）
第２のＰＵＦ回路１１０６１Ａ、・・・、１１０６１Ｉはそれぞれ、同じ構成であるため、以下では代表して第２のＰＵＦ回路１１０６１Ａの構成を示す。【００８０】
図８は、第２のＰＵＦ回路１１０６１Ａの構成を示す図である。【００８１】
第２のＰＵＦ回路１１０６１Ａは、図８に示すように、第１リングオシレータ１１０６１Ａ０１、第２リングオシレータ１１０６１Ａ０２、・・・、及び第８リングオシレータ１１０６１Ａ０８と、第１リングオシレータ選択部１１０６１Ａ１１と、第２リングオシレータ選択部１１０６１Ａ１２と、第１周波数カウント部１１０６１Ａ２１と、第２周波数カウント部１１０６１Ａ２２と、出力ビット決定部１１０６１Ａ３０とから構成される。【００８２】
第１リングオシレータ１１０６１Ａ０１〜第８リングオシレータ１１０６１Ａ０８は、同じ構成であり、それぞれトリガ信号に対して出力信号を出力する。【００８３】
第１リングオシレータ選択部１１０６１Ａ１１は、第１リングオシレータ１１０６１Ａ０１〜１１０６１Ａ０８の中から予め与えられたリングオシレータを選択する。【００８４】
第２リングオシレータ選択部１１０６１Ａ１２は、第１リングオシレータ１１０６１Ａ０１〜１１０６１Ａ０８の中から、第１リングオシレータ選択部１１０６１Ａ１１と異なり、予め与えられたリングオシレータを選択する。なお、リングオシレータの数を８としていたが、これに限らない。リングオシレータの数は２以上であればよい。【００８５】
第１周波数カウント部１１０６１Ａ２１は、第１リングオシレータ選択部１１０６１Ａ１１で選択したリングオシレータの周波数を計測する。【００８６】
第２周波数カウント部１１０６１Ａ２２は、第２リングオシレータ選択部１１０６１Ａ１２で選択したリングオシレータの周波数を計測する。【００８７】
出力ビット決定部１１０６１Ａ３０は、第１周波数カウント部１１０６１Ａ２１で計測した周波数Ｆ１と第２周波数カウント部１１０６１Ａ２２で計測した周波数Ｆ２とを比較し、Ｆ１とＦ２の差分によって、“０”から“７”までの値を示す３ビットを１要素として出力する。【００８８】
図９は、周波数の差分（Ｆ２−Ｆ１）に対する値（３ビット）のマッピングを示す図である。図９では、差分の−３００から３００までを８等分してそれぞれを“０”から“７”までマッピングしている。なお、マッピング方法はこれだけに限らない。範囲をこれ以外、例えば−５００から５００までとしてもよいし、等分ではなく、値ごとに不等分にマッピングしてもよい。【００８９】
（第２のＰＵＦ回路１１０６１Ａ、・・・、１１０６１Ｉの動作について）
以下、構成について説明したときと同様に、代表して第２のＰＵＦ回路１１０６１Ａの動作を説明する。【００９０】
第１リングオシレータ選択部１１０６１Ａ１１は、予め与えられたリングオシレータを選択する。第２リングオシレータ選択部１１０６１Ａ１２も、予め与えられたリングオシレータを選択する。第１周波数カウント部１１０６１Ａ２１は、第１リングオシレータ選択部１１０６１Ａ１１で選択したリングオシレータの周波数を計測する。第２周波数カウント部１１０６１Ａ２２は、第２リングオシレータ選択部１１０６１Ａ１２で選択したリングオシレータの周波数を計測する。出力ビット決定部１１０６１Ａ３０は、第１周波数カウント部１１０６１Ａ２１及び第２周波数カウント部１１０６１Ａ２２で計測した周波数を用いて、出力である３ビットを決定する。つまり、出力ビット決定部１１０６１Ａ３０は、第１周波数カウント部１１０６１Ａ２１と、第２周波数カウント部１１０６１Ａ２２で計測した周波数との差分に応じた３ビットの値を、図９に示すマッピングを用いて決定する。例えば、出力ビット決定部１１０６１Ａ３０は、差分が０以上７５未満であれば“４”を決定し、差分が７５以上１５０未満であれば“５”を決定する。【００９１】
（誤り訂正用ＰＵＦ情報生成部１１０６２について）
誤り訂正用ＰＵＦ情報生成部１１０６２は、第２のＰＵＦ回路１１０６１Ａ〜１１０６１Ｉから出力される各要素を連結し、連結したものを誤り訂正用ＰＵＦ情報とする。例えば、第２のＰＵＦ回路１１０６１Ａ〜１１０６１Ｉから出力される各要素が、“２”、“６”、“５”、“１”、“５”、“７”、“２”、“３”、“７”であれば、誤り訂正用ＰＵＦ情報は“２６５  １５７  ２３７”である。【００９２】
誤り訂正部分情報格納部１１０７は、誤り訂正情報の部分情報である誤り訂正部分情報を格納する。誤り訂正部分情報は誤り訂正情報生成装置１２００が生成して格納する。【００９３】
誤り訂正情報生成部１１０８は、誤り訂正用ＰＵＦ部１１０６が生成する誤り訂正用ＰＵＦ情報と、誤り訂正部分情報格納部１１０７が格納している誤り訂正部分情報とを用いて、誤り訂正情報を生成する。誤り訂正情報の生成方法の例を以下に示す。この例では、誤り訂正用ＰＵＦ情報を、予め与えられた方法により符号化し、その結果生成された符号化後誤り訂正用ＰＵＦ情報と誤り訂正部分情報の排他的論理和を取っているが、誤り訂正情報の生成方法は、この例に限らない。排他的論理和の部分をガロア体における乗算に変えてもよい。また、排他的論理和の代わりに、符号化後誤り訂正用ＰＵＦ情報と誤り訂正部分情報を整数値と見立てて、加算するとしてもよい。【００９４】
（誤り訂正情報生成の例）
誤り訂正用ＰＵＦ部１１０６が出力した誤り訂正用ＰＵＦ情報が上記のように、“２６５  １５７  ２３７”であるとする。これに対し、この要素の値が３以下の場合“０”、４以上の場合“１”と１ビットの値に符号化する。符号化した結果、“０１１  ０１１  ００１”となり、これを符号化後誤り訂正用ＰＵＦ情報とする。これと誤り訂正部分情報格納部１１０７に格納されている誤り訂正部分情報との差分を取る。誤り訂正部分情報を“００１  ００１  ０００”とするとき、誤り訂正情報は、
“０１１  ０１１  ００１”  ＸＯＲ  “００１  ００１  ０００”
＝“０１０  ０１０  ００１”
である。【００９５】
なお、この符号化はこれだけに限らず、例えば、４以上を“０”、３以下を“１”と符号化してもよい。【００９６】
＜誤り訂正情報生成装置１２００の構成＞
図１０は、誤り訂正情報生成装置１２００の構成を示す図である。誤り訂正情報生成装置１２００は、情報セキュリティ装置１１００内の第１のＰＵＦ回路及び第２のＰＵＦ回路の出力値を計測するＰＵＦ回路計測部１２０１と、第１のＰＵＦ回路及び第２のＰＵＦ回路の周囲の環境を変化させる環境変化部１２０２と、環境変化によるＰＵＦ回路計測部１２０１で計測した出力値の分布を解析する環境変化解析部１２０３と、環境変化解析部１２０３の解析結果により誤り訂正部分情報を生成する誤り訂正部分情報生成部１２０４と、誤り訂正部分情報を情報セキュリティ装置１１００内の誤り訂正部分情報格納部１１０７に格納する誤り訂正部分情報設定部１２０５とを備える。なお、本実施の形態では、ＰＵＦ回路計測部１２０１が第１の計測手段および第２の計測手段として構成され、誤り訂正部分情報生成部１２０４がデータ生成手段として構成され、誤り訂正部分情報設定部１２０５が格納処理手段として構成されている。また、本実施の形態における誤り訂正部分情報生成部１２０４は、誤り訂正情報を生成する第１の生成手段と、その誤り訂正情報を用いて第１の訂正用データたる誤り訂正部分情報を生成する第２の生成手段とを備えている。【００９７】
ＰＵＦ回路計測部１２０１は、第１のＰＵＦ回路１１０４１Ａ〜１１０４１Ｉと、第２のＰＵＦ回路１１０６１Ａ〜１１０６１Ｉの出力値を計測する。【００９８】
環境変化部１２０２は、第１のＰＵＦ回路及び第２のＰＵＦ回路の周囲の環境を変化させる。具体的には、例えば、周囲の温度を変化させる。【００９９】
環境変化解析部１２０３は、環境変化によるＰＵＦ回路計測部１２０１で計測した出力値の分布を解析する。すなわち、温度ごとの第１のＰＵＦ回路及び第２のＰＵＦ回路の出力値の分布を求める。【０１００】
誤り訂正部分情報生成部１２０４は、誤り訂正部分情報を生成する。【０１０１】
（誤り訂正部分情報生成部１２０４の処理）
誤り訂正部分情報生成部１２０４はまず、環境変化解析部１２０３で解析した第１のＰＵＦ回路の出力値の分布に基づいて、誤り訂正情報を求める。【０１０２】
図１１は、第１のＰＵＦ回路及び第２のＰＵＦ回路の出力値の分布例を示す図である。具体的な例としては、第１のＰＵＦ回路の出力値の分布で最も高確率で出現した出力値に対し、誤り訂正符号を用いて符号化をしたものとその出力値との差分を誤り訂正情報とする。上記誤り訂正の方法例や誤り訂正情報生成の例と合わせると、最も高確率で出現した出力値は、９つの第１のＰＵＦ回路１１０４１Ａ〜１１０４１Ｉの出力値を並べると“１０１  ０００  １１０”である。ここで、例として、３ビットの繰り返し符号を用いるため、最も高確率で出現する出力値も、３ビットごとに区切って判断する。図１１では、一つ目の３ビットは０℃のとき“１００”、１０℃のとき“１０１”、２０℃のとき“１０１”であるため、最も高確率で出現した出力値は“１０１”である。同様に、二つ目は“０００”、三つ目は“１１０”となる。３ビットの繰り返し符号を３つ並べたものを使用してこの出力値を符号化すると、“１１１  ０００  １１１”になる。したがって、出力値と符号化したものの差分は、
“１０１  ０００  １１０”  ＸＯＲ  “１１１  ０００  １１１”
＝“０１０  ０００  ００１”
であり、これを誤り訂正情報とする。【０１０３】
次に、誤り訂正部分情報生成部１２０４は、環境変化解析部１２０３で解析した第２のＰＵＦ回路の出力値の分布に基づいて、誤り訂正用ＰＵＦ情報を求める。図１１は、出力値の分布例を示している。一つの第２のＰＵＦ回路の出力値は３ビットの要素であるが、図１１では、第２のＰＵＦ回路１１０６１Ａ〜１１０６１Ｉの出力値を左から順番に並べている。誤り訂正部分情報の生成方法の具体的な例としては、第２のＰＵＦ回路の出力値の分布で各要素で最も高確率で出現した出力値に対し、予め定めた方法で符号化した符号化後誤り訂正用ＰＵＦ情報と誤り訂正情報との差分を誤り訂正部分情報とする。図１１の例では、一つ目の要素は０℃のとき“３”、１０℃のとき“２”、２０℃のとき“２”であるため、最も高確率で出現した出力値は“２”である。これに対し、誤り訂正情報生成の例と同じ符号化方法を使用すると、この要素の値が４以下の場合“０”、５以上の場合“１”と１ビットの値に符号化する。図１１の例では、一つ目の要素は“２”であるため、符号化後の値は“０”となる。同様に二つ目以降も符号化すると、符号化後誤り訂正用ＰＵＦ情報は“０１１  ０１１  ００１”となる。符号化後誤り訂正用ＰＵＦ情報と、誤り訂正情報との差分を取ると、
“０１０  ０００  ００１”  ＸＯＲ  “０１１  ０１１  ００１”
＝“００１  ０１１  ０００”
となり、“００１  ０１１  ０００”を誤り訂正部分情報とする。【０１０４】
誤り訂正部分情報設定部１２０５は、誤り訂正部分情報生成部１２０４で生成した誤り訂正部分情報を、情報セキュリティ装置１１００内の誤り訂正部分情報格納部１１０７に格納する。【０１０５】
＜情報セキュリティシステム１０００の動作＞
図１２Ａは、情報セキュリティシステム１０００の誤り訂正情報生成装置１２００が誤り訂正部分情報を設定するときの動作を示すフローチャートである。【０１０６】
誤り訂正情報生成装置１２００は、誤り訂正部分情報を設定する時には、以下のように動作する。なお、誤り訂正部分情報を生成して情報セキュリティ装置１１００内の誤り訂正部分情報格納部１１０７に設定する処理は、情報セキュリティ装置１１００の製造時に実施される。【０１０７】
ステップＳ１０１：環境変化部１２０２は、第１のＰＵＦ回路及び第２のＰＵＦ回路の周囲の環境を変化させる。さらに環境変化部１２０２は、変化させた環境の情報を、環境変化解析部１２０３に入力する。【０１０８】
ステップＳ１０２：ＰＵＦ回路計測部１２０１は、第１のＰＵＦ回路及び第２のＰＵＦ回路の出力値を計測し、環境変化解析部１２０３に入力する。【０１０９】
ステップＳ１０３：環境変化解析部１２０３は、環境の情報と第１のＰＵＦ回路及び第２のＰＵＦ回路の出力値から分布を得る。【０１１０】
ステップＳ１０４：誤り訂正部分情報生成部１２０４は、出力値の分布より、誤り訂正部分情報を生成する。【０１１１】
ステップＳ１０５：誤り訂正部分情報設定部１２０５は、誤り訂正部分情報を、情報セキュリティ装置１１００内の誤り訂正部分情報格納部１１０７に格納する。【０１１２】
図１２Ｂは、情報セキュリティシステム１０００の情報セキュリティ装置１１００が鍵付ハッシュ値を計算するときの動作を示すフローチャートである。【０１１３】
情報セキュリティ装置１１００は、鍵付ハッシュ値を計算する時には、以下のように動作する。なお、情報セキュリティ装置１１００が、入力された入力データに対し、鍵付ハッシュ値を生成し出力する処理は、ユーザからの入力やアプリケーションプログラムからのトリガにより行われる。【０１１４】
ステップＳ２０１：入力部１１０１は、外部より入力された入力データを受け付け、ハッシュ生成部１１０３に入力する。さらに、入力部１１０１は、ＰＵＦ回路へのトリガ信号を情報生成用ＰＵＦ部１１０４と誤り訂正用ＰＵＦ部１１０６に入力する。【０１１５】
ステップＳ２０２：情報生成用ＰＵＦ部１１０４は、ハッシュ鍵を生成し、誤り訂正部１１０５に入力する。【０１１６】
ステップＳ２０３：誤り訂正用ＰＵＦ部１１０６は、誤り訂正用ＰＵＦ情報を生成し、誤り訂正情報生成部１１０８に入力する。【０１１７】
ステップＳ２０４：誤り訂正情報生成部１１０８は、誤り訂正用ＰＵＦ情報と誤り訂正部分情報格納部１１０７に格納されている誤り訂正部分情報とを用いて、誤り訂正情報を生成し、誤り訂正部１１０５に入力する。【０１１８】
ステップＳ２０５：誤り訂正部１１０５は、誤り訂正情報を用いて、ハッシュ鍵を誤り訂正し、訂正後ハッシュ鍵を生成し、ハッシュ生成部１１０３に入力する。【０１１９】
ステップＳ２０６：ハッシュ生成部１１０３は、訂正後ハッシュ鍵を鍵として使用して、入力データの鍵付ハッシュ値を生成し、出力部１１０２に入力する。【０１２０】
ステップＳ２０７：出力部１１０２は、鍵付ハッシュ値を外部へ出力する。【０１２１】
このように本実施の形態では、情報セキュリティ装置１１００は、誤り訂正情報を直接メモリに格納せず、誤り訂正部分情報を格納している。そのため、誤り訂正情報に攻撃者が直接アクセスできないため、ＰＵＦの秘密、すなわち、ハッシュ鍵を攻撃者が得ることが困難であり、安全である。また、誤り訂正用ＰＵＦ部１１０６と誤り訂正情報生成部１１０８を設けることで、誤り訂正部分情報から誤り訂正情報を復元でき、誤り訂正が正しく働く。【０１２２】
（実施の形態２）
実施の形態１における情報生成用ＰＵＦ部１１０４のハッシュ鍵の誤りは、環境変化によって生じることがあるが、ＰＵＦ回路の周波数特性の経年変化によっても生じることがある。本実施の形態では、実施の形態１における情報セキュリティシステム１０００の構成に対して、さらに、ＰＵＦ回路の経年的な出力変動を抑えることにより、情報生成用ＰＵＦ部１１０４から出力されるハッシュ鍵の誤りを軽減することを特徴とする。【０１２３】
以下、本発明の実施の形態２について、図面を参照しながら説明する。【０１２４】
（ＰＵＦ回路１の構成）
図１３は、本発明の実施の形態２におけるＰＵＦ回路１の構成の一例を示したブロック図である。ＰＵＦ回路１は、実施の形態１における第１のＰＵＦ回路１１０４１Ａ〜１１０４１Ｉのそれぞれに相当し、第１〜第８リングオシレータ１０１〜１０８と、第１〜第２リングオシレータ選択部１１１〜１１２と、第１〜第２周波数カウント部１２１〜１２２と、出力ビット決定部１３と、入力値保管部１４と、入力値設定部１５と、入力値再設定判定部１６と、閾値保管部１７と、出力ビット制御部１８と、出力ビット保管部１９とからなる。【０１２５】
なお、本実施の形態では、出力ビット保管部１９が、秘密データたるハッシュ鍵の一部を記憶するための秘密データ用記憶部として構成され、出力ビット制御部１８が、ハッシュ鍵の一部を出力ビット保管部１９に格納する格納処理部として構成されているとともに、出力ビット保管部１９に格納されているハッシュ鍵の一部を出力する出力制御部として構成されている。以下、各部の詳細について説明する。【０１２６】
（１）第１〜第８リングオシレータ１０１〜１０８
第１〜第８リングオシレータ１０１〜１０８はそれぞれ、奇数個の否定回路をリング状に接続した構成を基本とする発振回路であり、トリガ信号の入力により所定の発振周波数を有する発振信号（出力信号）を出力する。これら８個のリングオシレータの構成及び動作は全て同じであるので、以下では、それらをリングオシレータ１００として、その構成及び動作を説明する。【０１２７】
図１４は、リングオシレータ１００の構成の一例を示すブロック図である。リングオシレータ１００は、７段のリングオシレータであり、ＮＡＮＤ回路２１と、７個の否定回路２２〜２８からなる。なお、本実施の形態では、７段のリングオシレータとしているが、これは奇数段であれば何段のリングオシレータであってもよい。【０１２８】
リングオシレータ１００にトリガ信号が入力されていない場合、即ち、トリガ信号として「０」が入力されている場合、ＮＡＮＤ回路２１の出力は「１」となる。よって、否定回路２２の出力は「０」となり、否定回路２３の出力は「１」となり、・・・、否定回路２７の出力（即ちＮＡＮＤ回路２１の１つの入力）は「１」となるが、ＮＡＮＤ回路２１のもう１つの入力は「０」であるから、ＮＡＮＤ回路２１の出力は「１」のままである。即ち、リングオシレータ１００は、上記の定常状態で安定する。このとき、否定回路２８の出力、即ちリングオシレータ１００の出力信号は「０」で安定する。まとめると、リングオシレータ１００へのトリガ信号が「０」の場合にはリングオシレータ１００は発振せず、その出力信号は「０」で安定する。【０１２９】
一方、リングオシレータ１００にトリガ信号が入力された場合、即ち、トリガ信号として「１」が入力された場合、ＮＡＮＤ回路２１の出力は「１」となる。よって、否定回路２２の出力は「０」となり、否定回路２３の出力は「１」となり、・・・、否定回路２７の出力は「１」となる。このとき、ＮＡＮＤ回路２１の２つの入力はどちらも「１」になるため、ＮＡＮＤ回路２１の出力は、「１」から「０」に遷移する。この遷移に伴い、否定回路２２の出力は「１」となり、否定回路２３の出力は「０」となり、・・・、否定回路２７の出力は「０」となる。このとき、ＮＡＮＤ回路２１の一方の入力が「０」になるため、ＮＡＮＤ回路２１の出力は、再び「０」から「１」に遷移する。上記のように、トリガ信号「１」が入力されると、リングオシレータ１００の内部状態は安定せずに、ＮＡＮＤ回路２１の出力は「１」と「０」の間で遷移を繰り返し、発振する。このとき、リングオシレータ１００は、所定の発振周波数を有する発振信号を出力する。前記発振周波数は、リングオシレータの段数で決まり、理論的には段数と回路構成が同じリングオシレータであれば、同じになることになる。しかし、実際には、同一の構成を持つリングオシレータであっても、リングオシレータを構成する回路素子の周波数特性のバラつきが生じるので、発振周波数にも若干のバラつきがある。なお、上記発振状態において、トリガ信号が「０」に変化すると、ＮＡＮＤ回路２１の出力は「１」で安定するので、発振動作は停止し、出力信号は「０」になる。【０１３０】
（２）第１〜第２リングオシレータ選択部１１１〜１１２
第１〜第２リングオシレータ選択部１１１〜１１２は、それぞれ、入力値保管部１４から入力される３ビットの入力値データに基づいて、前記第１〜第８リングオシレータ１０１〜１０８から１個を選択し、選択したリングオシレータから出力される発振信号を取得して第１周波数カウント部１２１または第２周波数カウント部１２２に入力する。つまり、第１リングオシレータ選択部１１１は、選択したリングオシレータから出力される発振信号を取得して第１周波数カウント部１２１に入力し、第２リングオシレータ選択部１１２は、選択したリングオシレータから出力される発振信号を取得して第２周波数カウント部１２２に入力する。【０１３１】
３ビットの入力値データと、選択するリングオシレータとの対応関係は、任意の入力値データが、ある１つのリングオシレータに対応していれば、どのようなものであっても良いが、本実施の形態では、以下の通りとする。第１〜第２リングオシレータ選択部１１１〜１１２は、それぞれ、入力値データ「０００」（２進数）に対しては、第１リングオシレータ１０１を選択する。入力値データ「００１」（２進数）に対しては、第２リングオシレータ１０２を選択する。入力値データ「０１０」（２進数）に対しては、第３リングオシレータ１０３を選択する。・・・。入力データ「１１１」（２進数）に対しては、第８リングオシレータ１０８を選択する。なお、第１リングオシレータ選択部１１１および第２リングオシレータ選択部１１２は、それぞれ、互いに異なる入力値データを取得して、互いに異なるリングオシレータを選択する。【０１３２】
（３）第１〜第２周波数カウント部１２１〜１２２
第１〜第２周波数カウント部１２１〜１２２は、それぞれ、第１リングオシレータ選択部１１１または第２リングオシレータ選択部１１２から入力される発振信号の発振周波数を計測して、計測結果を出力ビット決定部１３に入力する。つまり、第１周波数カウント部１２１は、第１リングオシレータ選択部１１１から入力される発振信号の発振周波数を計測し、第２周波数カウント部１２２は、第２リングオシレータ選択部１１２から入力される発振信号の発振周波数を計測する。【０１３３】
（４）出力ビット決定部１３
出力ビット決定部１３は、第１周波数カウント部１２１および第２周波数カウント部１２２からそれぞれ入力される発振周波数の大小関係を比較し、その比較結果に基づいて１ビットの出力ビットの値を決定して、その決定された値を示す出力ビットを出力ビット制御部１８に入力する。【０１３４】
比較結果と出力ビットの値との対応関係はどのようなものでもよいか、本実施の形態では、（第１周波数カウント部１２１の計測周波数）＜（第２周波数カウント部１２２の計測周波数）であれば、「１」と決定し、そうでなければ「０」と決定するものとする。【０１３５】
（５）出力ビット制御部１８
出力ビット制御部１８は、ＰＵＦ回路１に対して外部からトリガ信号が入力されて出力ビットの出力要求があった場合には、まず、出力ビット保管部１９に出力ビットが保管されているか否かを確認する。出力ビットが保管されている場合には、保管されている出力ビットをＰＵＦ回路１から出力して処理を終了する。出力ビット保管部１９に出力ビットが保管されていない場合には、出力ビット決定部１３から、出力ビットが入力された後に、以下の処理を行う。【０１３６】
出力ビット制御部１８は、まず、出力ビット決定部１３から入力される出力ビットを一時保管し、入力値設定部１５から、出力ビットの退避要求信号が入力された場合には、一時保管している出力ビットを、ＰＵＦ回路１の出力ビットとして出力するとともに、出力ビット保管部１９に出力する。一方、入力値設定部１５から、出力ビットの退避要求信号が入力されない場合には、一時保管している出力ビットを、ＰＵＦ回路１の出力ビットとして出力する。【０１３７】
（６）入力値保管部１４
入力値保管部１４は、第１リングオシレータ選択部１１１及び第２リングオシレータ選択部１１２に入力する３ビットの入力値データを２個保管する。以降では、第１リングオシレータ選択部１１１に入力する３ビットの入力値データを第１入力値データとし、第２リングオシレータ選択部１１２に入力する３ビットの入力値データを第２入力値データとする。【０１３８】
（７）入力値設定部１５
入力値設定部１５は、初期化時、または入力値再設定判定部１６より入力値再設定要求信号が入力されたときに動作し、閾値保管部１７に保管されている入力設定用閾値以上の周波数差を有する２個のリングオシレータが選択されるように、第１リングオシレータ選択部１１１及び第２リングオシレータ選択部１１２への入力値データ（それぞれ３ビット）を設定する。【０１３９】
具体的に、入力値設定部１５は、初期化時には、ＰＵＦ回路１の外部から出力設定値を取得し、その出力設定値を示す出力ビットがＰＵＦ回路１から出力されるように、第１リングオシレータ選択部１１１及び第２リングオシレータ選択部１１２への入力値データを設定する。このとき、出力設定値が「１」であれば、入力値設定部１５は、（第１周波数カウント部１２１の計測周波数）＜（第２周波数カウント部１２２の計測周波数）であって且つ、それらの周波数の差の絶対値が入力設定用閾値以上となるような２つのリングオシレータが選択されるように、２つの入力値データを設定する。また、出力設定値が「０」であれば、入力値設定部１５は、（第１周波数カウント部１２１の計測周波数）≧（第２周波数カウント部１２２の計測周波数）であって且つ、それらの周波数の差の絶対値が入力設定用閾値以上となるような２つのリングオシレータが選択されるように、２つの入力値データを設定する。【０１４０】
また、入力値設定部１５は、入力値再設定要求信号を取得したときには、既に設定されている、第１周波数カウント部１２１の計測周波数と、第２周波数カウント部１２２の計測周波数との大小関係を維持し、それらの周波数の差の絶対値が入力設定用閾値以上となるような２つのリングオシレータが改めて選択されるように、２つの入力値データを再設定する。【０１４１】
また、前記入力設定用閾値以上の周波数差を有する２個のリングオシレータを選択するような入力値データの決定に失敗した場合（即ち、周波数差が前記閾値以上になるリングオシレータのペアが見つからなかった場合）には、入力値設定部１５は、出力ビットの退避要求信号を出力ビット制御部１８に入力する。【０１４２】
なお、本実施の形態では、第１リングオシレータ選択部１１１、第２リングオシレータ選択部１１２、入力値保管部１４および入力値設定部１５が、８個のリングオシレータから２個のリングオシレータを選択する選択部として構成されている。また、入力値設定部１５が、周波数差が第１の閾値たる入力設定用閾値以上となる２個のリングオシレータを検索する検索部として構成され、入力値保管部１４が、検索部によって検索された２個のリングオシレータを示す選択パラメータたる入力値データを保持するパラメータ保持部として構成されている。さらに、第１リングオシレータ選択部１１１および第２リングオシレータ選択部１１２がそれぞれ、入力値データの示すリングオシレータを選択すべきリングオシレータとして決定して選択する選択決定部として構成されている。【０１４３】
（８）入力値再設定判定部１６
入力値再設定判定部１６は、第１周波数カウント部１２１および第２周波数カウント部１２２から出力される発振周波数を観測し、その周波数差の絶対値が、閾値保管部１７に保管されている入力値再設定判定用閾値よりも小さくなった場合には、入力値設定部１５に入力値再設定要求信号を入力する。【０１４４】
なお、本実施の形態では、入力値再設定判定部１６が、周波数差が第２の閾値たる入力値再設定判定用閾値未満であるか否かを判別する差分判別部と、上述の選択部による選択を再度実行させる再設定部として構成されている。【０１４５】
（９）閾値保管部１７
閾値保管部１７は、入力設定用閾値及び入力値再設定判定用閾値を保管する。これらの値は正の値である。本実施の形態では、これらの値は、ＰＵＦ回路１の製造時に書き込むものとするが、回路製造後に外部から書き込むようにしても良いし、書き込んだ後でも、外部から書き換えることができるようにしても良い。また、何らかの認証を行った上で、外部からの書き込みを許可するようにしても良い。なお、本実施の形態では、閾値保管部１７が、第１の閾値たる入力設定用閾値と、第２の閾値たる入力値再設定判定用閾値とを格納している閾値格納部として構成されている。【０１４６】
以下、ＰＵＦ回路１の動作を説明する。ＰＵＦ回路１の動作は、「入力値データの設定」、「出力ビットの算出」および「入力値データの再設定」の３種類に大別され、以下、それぞれについて説明する。【０１４７】
（入力値データの設定）
図１５は、ＰＵＦ回路１が入力値データを設定するときの動作を示すフローチャートである。【０１４８】
「入力値データの設定」は、ＰＵＦ回路１が製造された後の初期化処理として実行する処理である。「入力値データの設定」処理は、以下のようにして行う。【０１４９】
ステップＳ３０１：入力値設定部１５は、ＰＵＦ回路１の外部から入力される１ビットの値を出力設定値として受け付ける。また、閾値保管部１７に保管されている入力設定用閾値を読み込む。【０１５０】
ステップＳ３０２：入力値設定部１５は、入力値データの候補を選択して、その候補における第１周波数カウント部１２１および第２周波数カウント部１２２による発振周波数の計測を実行させる。即ち、入力値設定部１５は、第１入力値データの候補としてＮ１＝０００（２進数）〜１１１（２進数）の中から何れか１つを選択し、第２入力値データの候補としてＮ２＝０００（２進数）〜１１１（２進数）の中から何れか１つを選択する。そして、入力値設定部１５は、（第１入力値データの候補，第２入力値データの候補）＝（Ｎ１，Ｎ２）の組み合わせによって選択されるリングオシレータを用い、第１周波数カウント部１２１および第２周波数カウント部１２２による発振周波数の計測を実行させる。具体的には、ＰＵＦ回路１は以下の動作を実行する。【０１５１】
ステップＳ３０２ａ：入力値設定部１５は、第１入力値データ及び第２入力値データの候補として（Ｎ１，Ｎ２）を生成し、第１リングオシレータ選択部１１１にＮ１を、第２リングオシレータ選択部１１２にＮ２を、それぞれ入力する。【０１５２】
ステップＳ３０２ｂ：第１リングオシレータ選択部１１１は、前記Ｎ１に基づいて、前に述べた規則に従い、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つのリングオシレータを選択する。第２リングオシレータ選択部１１２は、前記Ｎ２に基づいて、前に述べた規則に従い、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つのリングオシレータを選択する。【０１５３】
ステップＳ３０２ｃ：ここで、ステップＳ３０２ｂで選択された２個のリングオシレータにトリガ信号が入力されると、選択された２つのリングオシレータは発振して、発振信号を出力する。このとき、第１リングオシレータ選択部１１１により選択されたリングオシレータは、同第１リングオシレータ選択部１１１を介して第１周波数カウント部１２１に発振信号を入力する。第２リングオシレータ選択部１１２により選択されたリングオシレータは、同第２リングオシレータ選択部１１２を介して第２周波数カウント部１２２に発振信号を入力する。【０１５４】
ステップＳ３０２ｄ：第１周波数カウント部１２１及び第２周波数カウント部１２２は、それぞれ入力された発振信号から発振周波数を計測する。ここで、第１周波数カウント部１２１は、発振周波数Ｆ１を計測し、第２周波数カウント部１２２は、発振周波数Ｆ２を計測する。そして、計測したＦ１及びＦ２を、入力値設定部１５に入力する。【０１５５】
ステップＳ３０３：入力値設定部１５は、上述のように計測された発振周波数Ｆ１，Ｆ２に基づいて選択された入力値データの候補が、設定されるべき入力値データとして相応しいか否か、つまり選択された候補が失敗であったか否かを判別する。具体的には、入力値設定部１５は、入力されたＦ１及びＦ２から、周波数の差分Ｄ＝Ｆ２−Ｆ１を計算し、差分ＤとステップＳ３０１で受け付けた出力設定値との間に矛盾がなく、かつ、差分Ｄの絶対値が入力設定用閾値以上であれば、選択された候補が失敗でないと判別する。この場合、後述するステップＳ３０４で説明するように、入力値設定部１５は、そのときの（Ｎ１，Ｎ２）について、Ｎ１を第１入力値データ、Ｎ２を第２入力値データとして、入力値保管部１４に入力し、出力設定値を消去する。ここで、「差分Ｄと出力設定値との間に矛盾がない」とは、出力設定値が０の場合には差分Ｄが負の値または０であることを意味し、出力設定値が１の場合には差分Ｄが正の値であることを意味する。上記の条件を満たさない場合には、入力値設定部１５は、選択された候補が失敗と判別する。この場合、後述するステップＳ３０５で説明するように、別の候補（Ｎ１，Ｎ２）を生成して、ステップＳ３０２ａ〜Ｓ３０２ｄを繰り返し実行する。なお、全ての（Ｎ１，Ｎ２）の組み合わせについて、上記の条件を満たすような（Ｎ１，Ｎ２）が見つからなかった場合には、後述するステップＳ３０６で説明するように、入力値設定部１５は、出力設定値と、上述の退避要求信号に相当する入力値設定失敗信号とを出力ビット制御部１８に入力した後、出力設定値を消去する。【０１５６】
ステップＳ３０４：入力値保管部１４は、入力値設定部１５から入力されるＮ１、Ｎ２、すなわち失敗でないと判別された第１入力値データの候補Ｎ１と第２入力値データの候補Ｎ２とを、それぞれ設定されるべき第１入力値データおよび第２入力値データとして保管し、「入力値データの設定」処理を終了する。【０１５７】
ステップＳ３０５：入力値設定部１５は、選択された第１入力値データの候補Ｎ１および第２入力値データの候補Ｎ２がステップＳ３０３で失敗と判別されると、その候補Ｎ１，Ｎ２以外の他の候補があるか否かを判別する。ここで、入力値設定部１５は、他の候補があると判別すると、ステップＳ３０２からの処理を繰り返し、他の候補がないと判別すると、ステップＳ３０６の処理を実行する。【０１５８】
ステップＳ３０６：入力値設定部１５は、上述のように他の候補がないと判別すると、出力ビット制御部１８に対して、出力設定値と入力値設定失敗信号とを出力する。出力ビット制御部１８は、入力値設定失敗信号と出力設定値を受け付けて、出力設定値（出力設定値を示す出力ビット）を、出力ビット保管部１９に入力する。出力ビット保管部１９は、出力設定値を保管し、「入力値データの設定」処理を終了する。【０１５９】
（出力ビットの算出）
図１６は、ＰＵＦ回路１が出力ビットを算出するときの動作を示すフローチャートである。【０１６０】
「出力ビットの算出」処理は、ＰＵＦ回路１の外部からトリガ信号が入力されたときに実行される。この処理により、ＰＵＦ回路１は、内部にセキュアに保持する１ビットの出力ビットをＰＵＦ回路１の外部に出力する。具体的には、ＰＵＦ回路１へのトリガ信号が入力されると、以下の一連の動作を行う。【０１６１】
ステップＳ４０１：出力ビット制御部１８は、出力ビット保管部１９に出力設定値（出力設定値を示す出力ビット）が保管されているかどうかを確認して、保管されている場合には、その出力設定値（１ビット）をＰＵＦ回路１からの出力ビットとして出力して、「出力ビットの算出」処理を終了する。出力設定値が保管されていない場合には、ステップＳ４０２に進む。【０１６２】
ステップＳ４０２：入力値保管部１４は、内部に保管する第１入力値データを第１リングオシレータ選択部１１１に、第２入力値データを第２リングオシレータ選択部１１２にそれぞれ入力する。【０１６３】
ステップＳ４０３：第１リングオシレータ選択部１１１は、第１入力値データに基づいて、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つを選択する。また、第２リングオシレータ選択部１１２は、第２入力値データに基づいて、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つを選択する。【０１６４】
ステップＳ４０４：ステップＳ４０３において選択された２個のリングオシレータにそれぞれトリガ信号が入力され、発振動作が行われて、発振信号が出力される。このとき、出力された発振信号は、それぞれ、第１リングオシレータ選択部１１１及び第２リングオシレータ選択部１１２を介して、第１周波数カウント部１２１及び第２周波数カウント部１２２に入力される。【０１６５】
ステップＳ４０５：第１周波数カウント部１２１および第２周波数カウント部１２２は、それぞれ入力される発振信号の発振周波数Ｆ１、Ｆ２を計測し、出力ビット決定部１３及び入力値再設定判定部１６に入力する。【０１６６】
ステップＳ４０６：出力ビット決定部１３は、入力される発振周波数Ｆ１、Ｆ２の大小関係を比較して、比較結果に基づいて、既に述べた判定規則に従い、１ビットの出力ビットを決定して、出力ビット制御部１８に入力する。出力ビット制御部１８は、入力された出力ビットを一時保管する。【０１６７】
ステップＳ４０７：入力値再設定判定部１６は、閾値保管部１７に保管されている入力値再設定判定用閾値を読み出す。次に、入力値再設定判定部１６は、入力される発振周波数Ｆ１、Ｆ２から、周波数差分Ｄ＝Ｆ２−Ｆ１を計算し、差分Ｄの絶対値が、前記入力値再設定判定用閾値以上であるか確認する。もしも、前記閾値未満であれば、入力値再設定判定部１６は、入力値設定部１５に、入力値再設定要求信号を入力する。一方、前記閾値以上であれば、入力値再設定判定部１６は何も行わない。【０１６８】
ステップＳ４０８：入力値設定部１５は、入力値再設定要求信号を受け付けると、後で説明する入力値データの再設定処理を実行する。この処理の結果、「入力値保管部１４に保管する第１入力値データＮ１、第２入力値データＮ２を更新する」か、「入力値再設定失敗信号を出力ビット制御部１８に送信する」か、のいずれかが行われる。【０１６９】
ステップＳ４０９：出力ビット制御部１８は、出力ビット決定部１３から入力されて一時保管されている１ビットの出力ビットをＰＵＦ回路１の出力ビットとして出力する。入力値設定部１５から、入力値再設定失敗信号を受け取っていない場合には、出力ビット制御部１８は、そのまま出力ビットの算出を終了する。入力値再設定失敗信号を受け取った場合には、出力ビット制御部１８は、更に前記１ビットの出力ビットを、出力設定値として出力ビット保管部１９に入力する。そして、出力ビット保管部１９は、前記出力設定値を内部に保管して、「出力ビットの算出」処理を終了する。【０１７０】
（入力値データの再設定）
図１７は、ＰＵＦ回路１が入力値データを再設定するときの動作を示すフローチャートである。【０１７１】
「入力値データの再設定」処理は、上述の「出力ビットの算出」処理において、入力値設定部１５が入力値再設定要求信号を受け付けた場合に実行するサブルーチン処理である。「入力値データの再設定」処理は、以下のようにして行う。【０１７２】
ステップＳ５０１：入力値設定部１５は、入力設定用閾値と出力設定値を特定する。つまり、入力値設定部１５は、閾値保管部１７に保管する入力設定用閾値を読み込む。さらに、入力値設定部１５は、「出力ビットの算出」のステップＳ４０５において、第１周波数カウント部１２１から入力された発振周波数Ｆ１と、第２周波数カウント部１２２から入力された発振周波数Ｆ２との大小関係を比較し、Ｆ２＞Ｆ１であれば、出力設定値を「１」とし、そうでなければ、出力設定値を「０」とする。【０１７３】
ステップＳ５０２：入力値設定部１５は、入力値データの候補を選択して、その候補における第１周波数カウント部１２１および第２周波数カウント部１２２による発振周波数の計測を実行させる。即ち、入力値設定部１５は、第１入力値データの候補としてＮ１＝０００（２進数）〜１１１（２進数）の中から何れか１つを選択し、第２入力値データの候補としてＮ２＝０００（２進数）〜１１１（２進数）の中から何れか１つを選択する。そして、入力値設定部１５は、（第１入力値データの候補，第２入力値データの候補）＝（Ｎ１，Ｎ２）の組み合わせによって選択されるリングオシレータを用い、第１周波数カウント部１２１および第２周波数カウント部１２２による発振周波数の計測を実行させる。具体的には、ＰＵＦ回路１は以下の動作を実行する。【０１７４】
ステップＳ５０２ａ：入力値設定部１５は、第１入力値データ及び第２入力値データの候補として（Ｎ１，Ｎ２）を生成し、第１リングオシレータ選択部１１１にＮ１を、第２リングオシレータ選択部１１２にＮ２を、それぞれ入力する。【０１７５】
ステップＳ５０２ｂ：第１リングオシレータ選択部１１１は、前記Ｎ１に基づいて、前に述べた規則に従い、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つのリングオシレータを選択する。第２リングオシレータ選択部１１２は、前記Ｎ２に基づいて、前に述べた規則に従い、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つのリングオシレータを選択する。【０１７６】
ステップＳ５０２ｃ：ここで、ステップＳ５０２ｂで選択された２個のリングオシレータにトリガ信号が入力されると、選択された２つのリングオシレータは発振して、発振信号を出力する。このとき、第１リングオシレータ選択部１１１により選択されたリングオシレータは、同第１リングオシレータ選択部１１１を介して第１周波数カウント部１２１に発振信号を入力する。第２リングオシレータ選択部１１２により選択されたリングオシレータは、同第２リングオシレータ選択部１１２を介して第２周波数カウント部１２２に発振信号を入力する。【０１７７】
ステップＳ５０２ｄ：第１周波数カウント部１２１及び第２周波数カウント部１２２は、それぞれ入力された発振信号から発振周波数を計測する。ここで、第１周波数カウント部１２１は、発振周波数Ｆ１を計測し、第２周波数カウント部１２２は、発振周波数Ｆ２を計測する。そして、計測したＦ１及びＦ２を、入力値設定部１５に入力する。【０１７８】
ステップＳ５０３：入力値設定部１５は、上述のように計測された発振周波数Ｆ１，Ｆ２に基づいて選択された入力値データの候補が、設定されるべき入力値データとして相応しいか否か、つまり選択された候補が失敗であったか否かを判別する。具体的には、入力値設定部１５は、入力されたＦ１及びＦ２から、周波数の差分Ｄ＝Ｆ２−Ｆ１を計算し、差分ＤとステップＳ５０１で特定した出力設定値との間に矛盾がなく、かつ、差分Ｄの絶対値が入力設定用閾値以上であれば、選択された候補が失敗でないと判別する。この場合、後述するステップＳ５０４で説明するように、入力値設定部１５は、そのときの（Ｎ１，Ｎ２）について、Ｎ１を第１入力値データ、Ｎ２を第２入力値データとして、入力値保管部１４に入力し、出力設定値を消去する。ここで、「差分Ｄと出力設定値との間に矛盾がない」とは、出力設定値が０の場合には差分Ｄが負の値または０であることを意味し、出力設定値が１の場合には差分Ｄが正の値であることを意味する。上記の条件を満たさない場合には、入力値設定部１５は、選択された候補が失敗と判別する。この場合、後述するステップＳ５０５で説明するように、別の候補（Ｎ１，Ｎ２）を生成して、ステップＳ５０２ａ〜Ｓ５０２ｄを繰り返し実行する。なお、全ての（Ｎ１，Ｎ２）の組み合わせについて、入力設定用閾値に基づく上記の条件を満たすようなものがなかった場合には、後述するステップＳ５０６で説明するように、入力値設定部１５は、出力設定値と、上述の退避要求信号に相当する入力値再設定失敗信号とを出力ビット制御部１８に入力する。そして、出力設定値を消去する。【０１７９】
ステップＳ５０４：入力値保管部１４は、入力値設定部１５から入力されるＮ１、Ｎ２、すなわち失敗でないと判別された第１入力値データの候補Ｎ１と第２入力値データの候補Ｎ２とを、それぞれ設定されるべき第１入力データおよび第２入力データとして保管し、「入力値データの再設定」処理を終了する。【０１８０】
ステップＳ５０５：入力値設定部１５は、選択された第１入力値データの候補Ｎ１および第２入力値データの候補Ｎ２がステップＳ５０３で失敗と判別されると、その候補Ｎ１，Ｎ２以外の他の候補があるか否かを判別する。ここで、入力値設定部１５は、他の候補があると判別すると、ステップＳ５０２からの処理を繰り返し、他の候補がないと判別すると、ステップＳ５０６の処理を実行する。【０１８１】
ステップＳ５０６：入力値設定部１５は、上述のように他の候補がないと判別すると、出力ビット制御部１８に対して、出力設定値と入力値再設定失敗信号とを出力する。出力ビット制御部１８は、入力値再設定失敗信号と出力設定値を受け付けて、出力設定値を、出力ビット保管部１９に入力する。出力ビット保管部１９は、出力設定値を保管し、「入力値データの再設定」処理を終了する。【０１８２】
（ＰＵＦ回路１の動作概要）
以上の動作を元に、本実施の形態におけるＰＵＦ回路１の動作は、以下の通りである。【０１８３】
ＰＵＦ回路１が製造された後に、ＰＵＦ回路１は「入力値データの設定」処理を行い、１または０の出力ビットを設定する。その後、ＰＵＦ回路１は「出力ビットの算出」処理を行い、「入力値データの設定」処理により設定された１ビットの出力ビットを出力する。その際、ＰＵＦ回路１は、入力値保管部１４に設定している入力値データ（Ｎ１，Ｎ２）によって選択される２つのリングオシレータの周波数差が、経年変化などにより、所定の閾値未満になったと検知した場合には、「入力値データの再設定」処理を行い、前記入力値データの再設定を行う。【０１８４】
本実施の形態においては、リングオシレータを構成する回路の周波数特性の経年変化により、設定された入力値データによって選択される２つのリングオシレータの周波数差が所定の閾値未満になったことを検知して、周波数差が所定の閾値以上になるように、入力値データを再設定する。一方、従来では、上記のような経年変化により、リングオシレータの周波数差が小さくなり、外部環境の変化によって周波数の大小関係が逆転する恐れが高くなったとしても、入力値データを再設定するような仕組みは備えていない。従って、経年変化による周波数特性の変化に対して、ＰＵＦ回路１は、従来の構成よりも、出力ビットの安定性という点で向上しているといえる。【０１８５】
また、本実施の形態では、入力設定用閾値及び入力値再設定判定用閾値という２つの値を導入して、閾値保管部１７に保管している。従来では、これらの値をＰＵＦ回路内部に保管することはない。しかし、これらの値は、リングオシレータの周波数差分の絶対値に関する閾値なので、この値から、出力ビットの算出処理において選択されるリングオシレータの発振周波数の大小関係を推測することはできない。即ち、これらの値から、１ビットの出力ビットを推測することはできず、本実施の形態におけるＰＵＦ回路１においても、従来のＰＵＦ回路と同様に安全に秘密データを保持することが可能である。【０１８６】
また、本実施の形態では、経年変化によるリングオシレータの周波数特性の変化が進んで、入力値データの再設定処理において、所定の閾値以上の周波数差となるリングオシレータペアが見つからなかった場合には、出力ビットを出力ビット保管部１９に保管し、以降は、この出力ビット保管部１９に保管されている出力ビットを出力する。これは、入力値データの再設定によって、これ以上安定した出力ビットをＰＵＦの構成により保持することが困難と判断した場合には、出力ビットをそのまま保持することで、出力ビットの安定性を保持し続けようとするものである。これにより、出力ビットの安全性は、ＰＵＦで記憶している場合と比べて低下する。しかし、鍵データのような数十ビット〜数百ビットの秘密データのうち、仮に１ビットだけが解析され露呈したとしても、致命的な安全性低下に繋がることは稀であるので、実質的に安全性上に著しい問題を生じることはない。なお、上記の仕組みは、高い安全性を有するＰＵＦ回路を実現する場合には、削除してもよい。【０１８７】
以上にて述べたように、本実施の形態では、ＰＵＦ回路において、リングオシレータの周波数差分が所定の閾値未満になったことを検知すると、周波数差が閾値以上となるようなリングオシレータを選択するように入力値データを再設定する。これによって、リングオシレータの周波数特性が経年変化しても、ＰＵＦ回路の出力ビットの安定性を向上することができる。即ち、経年変化が起こっても、出力ビットが反転してしまわないようなＰＵＦ回路を用いた情報セキュリティ装置を提供することが可能である。【０１８８】
（実施の形態３）
次に、本発明の実施の形態３について、図面を参照しながら説明する。実施の形態３では、実施の形態２に加えて、更に、ＰＵＦ回路の外部で行う誤り訂正符号を用いた誤り訂正、もしくは、誤り検出の結果を元に、入力値データの再設定処理を実行する構成を追加することで、周波数の経年変化に対するＰＵＦ回路の出力ビットの安定性をより向上させた構成となっている。【０１８９】
（ＰＵＦ回路４の構成）
図１８は、実施の形態３に係るＰＵＦ回路４の内部構成の一例を示したブロック図である。ＰＵＦ回路４は、実施の形態１およびその変形例における第１のＰＵＦ１１０４１Ａ〜１１０４１Ｉのそれぞれに相当し、図１３の実施の形態２におけるＰＵＦ回路１とほぼ同じ構成である。すなわち、ＰＵＦ回路４は、第１〜第８リングオシレータ１０１〜１０８と、第１〜第２リングオシレータ選択部１１１〜１１２と、第１〜第２周波数カウント部１２１〜１２２と、出力ビット決定部１３と、入力値保管部１４と、入力値設定部４５と、入力値再設定判定部１６と、閾値保管部１７と、出力ビット制御部１８と、出力ビット保管部１９とからなる。【０１９０】
ＰＵＦ回路１と唯一異なる点は、ＰＵＦ回路４は、外部から入力値再設定要求信号が入力され、入力値設定部４５は前記入力値再設定要求信号を受け付ける点である。つまり、本実施の形態における入力値設定部４５は、実施の形態２の入力設定部１５と同様の機能を有するとともに、ＰＵＦ回路４の外部から入力値再設定要求信号を取得したときには、入力値再設定判定部１６から入力値再設定要求信号を取得したときと同様、実施の形態２における「入力値データの再設定」処理を実行する。【０１９１】
本実施の形態における情報生成用ＰＵＦ部は、このようなＰＵＦ回路４を９個備え、３ビットの秘密データであるハッシュ鍵をセキュアに保持することができる。【０１９２】
図１９は、本実施の形態における情報生成用ＰＵＦ部にハッシュ鍵を設定する方法を説明するための図である。【０１９３】
情報生成用ＰＵＦ部１１０４ａは、９つのＰＵＦ回路４と、９つのＰＵＦ回路４から出力される出力ビットを連結するビット連結部３０２とを備える。ビット連結部３０２は、実施の形態１のハッシュ鍵生成部１１０４２と同様の機能を有する。このような情報生成用ＰＵＦ部１１０４ａに３ビットのハッシュ鍵を設定するときには、誤り訂正符号生成部３００と、ビット分割部３０１とを用いる。ハッシュ鍵の設定処理は、情報生成用ＰＵＦ部１１０４ａが製造された後で、ハッシュ鍵が設定されていない状態において行われる処理である。【０１９４】
誤り訂正符号生成部３００は、３ビットのハッシュ鍵に対して誤り訂正符号化を行って、ハッシュ鍵に対する誤り訂正符号を生成する。ビット分割部３０１は、誤り訂正符号生成部３００が生成した誤り訂正符号をビット単位に分割して、各ビットをそれぞれ各ＰＵＦ回路４に出力設定値として入力する。以下、具体的な例を挙げてハッシュ鍵の設定処理について説明する。【０１９５】
まず、ハッシュ鍵Ｍを誤り訂正符号生成部３００に入力する。誤り訂正符号生成部３００は、ハッシュ鍵Ｍに対する誤り訂正符号（誤り訂正符号語Ｃ）を、以下のように生成する。まず、ハッシュ鍵ＭをＭ＝（ｍ１、ｍ２、ｍ３）とする。ここで、ｍ１、ｍ２、ｍ３は、それぞれ１ビットの値であり、ｍ１はＭの最上位ビット、ｍ２はＭの上位から２ビット目のビット、ｍ３は、Ｍの最下位ビットとする。このとき、誤り訂正符号生成部３００は、Ｍに対する誤り訂正符号語Ｃを９ビットの値Ｃ＝（ｍ１、ｍ１、ｍ１、ｍ２、ｍ２、ｍ２、ｍ３、ｍ３、ｍ３）として決定する。例えば、Ｍ＝１０１（２進数）の場合、Ｃ＝１１１０００１１１（２進数）であり、Ｍ＝０１１（２進数）の場合、Ｃ＝０００１１１１１１（２進数）である。誤り訂正符号生成部３００は、こうして得られた９ビットの誤り訂正符号語Ｃをビット分割部３０１に入力する。ビット分割部３０１は、入力された９ビットのＣを上位から１ビットずつ分割して、各ビットをそれぞれ９つのＰＵＦ回路４に入力する。９つのＰＵＦ回路４は、それぞれ入力された１ビットデータを出力設定値として、実施の形態２におけるＰＵＦ回路１の「入力値データの設定」処理と全く同じ処理を行う。【０１９６】
図２０は、本実施の形態における情報セキュリティ装置１１００ａの構成を示す図である。【０１９７】
本実施の形態における情報セキュリティ装置１１００ａは、情報生成用ＰＵＦ部１１０４ａと、誤り訂正処理部３０３と、排他的論理和部３０５と、ビット分割部３０６と、復号化部３０４と、入力部１１０１と、ハッシュ生成部１１０３と、出力部１１０２とからなる。なお、本実施の形態における入力部１１０１、ハッシュ生成部１１０３および出力部１１０２は、実施の形態１の情報セキュリティ装置１１００における入力部１１０１、ハッシュ生成部１１０３および出力部１１０２と同じである。【０１９８】
トリガ信号が情報生成用ＰＵＦ部１１０４ａの９つのＰＵＦ回路４に入力されると、各ＰＵＦ回路４は、実施の形態２における「出力ビットの算出」処理と同じ処理を行って、それぞれ１ビットの出力ビットを出力する。ビット連結部３０２は、９つのＰＵＦ回路４の順列に従って、１番目のＰＵＦ回路４の出力ビットが最上位ビットとなり、９番目のＰＵＦ回路４の出力ビットが最下位ビットとなるように、ビット連結を行うことにより、誤り訂正前のハッシュ鍵を９ビットデータとして生成し、誤り訂正処理部３０３と排他的論理和部３０５とに入力する。なお、本実施の形態では、ビット連結部３０２が、複数のＰＵＦ回路４から出力される出力値を結合する結合部として構成されている。【０１９９】
誤り訂正処理部３０３は、入力された９ビットデータに対して誤り訂正を行い、その結果の９ビットデータを出力する。【０２００】
図２１は、誤り訂正処理部３０３の構成を示す図である。【０２０１】
誤り訂正処理部３０３は、誤り訂正部１１０５ａと、誤り訂正情報生成部１１０８と、誤り訂正用ＰＵＦ部１１０６と、誤り訂正部分情報格納部１１０７とを備えている。本実施の形態における誤り訂正情報生成部１１０８、誤り訂正用ＰＵＦ部１１０６、および誤り訂正部分情報格納部１１０７は、実施の形態１における誤り訂正情報生成部１１０８、誤り訂正用ＰＵＦ部１１０６、および誤り訂正部分情報格納部１１０７と同じである。【０２０２】
また、本実施の形態における誤り訂正部１１０５ａは、実施の形態１における誤り訂正部１１０５と同様に排他的論理和の演算を実行するが、３ビットの繰り返し符号を１ビットにするような復号化は実行しない。つまり、誤り訂正部１１０５ａは、誤り訂正前のハッシュ鍵である９ビットデータと誤り訂正情報との排他的論理和を取って、その結果である９ビットデータを復号化部３０４と排他的論理和部３０５とに入力する。【０２０３】
復号化部３０４は、誤り訂正処理部３０３から入力された９ビットデータを、３ビットの繰り返し符号に分割し、各３ビットの繰り返し符号を１ビットに復号化する。つまり、本実施の形態における誤り訂正部１１０５ａと復号化部３０４とにより、実施の形態１の誤り訂正部１１０５が実現される。【０２０４】
具体的に、復号化部３０４は、入力された誤り訂正結果の９ビットデータから誤り訂正符号化のために付加した冗長性を除去して、３ビットの訂正後ハッシュ鍵を出力する。つまり、復号化部３０４は、上述の９ビットデータを上位から３ビットずつ分割し、各３ビットデータについて、０００（２進数）の場合は０（２進数）に、１１１（２進数）の場合は１（２進数）に変換した後、再び連結して３ビットデータとする。これにより、「入力値データの設定」処理において各ＰＵＦ回路４に設定したハッシュ鍵である３ビットと同じデータが得られる。ここで、上記に用いた誤り訂正符号は、情報ビットに対して情報ビットと同じ値２ビットを冗長ビットとして付加する繰り返し符号であり、３ビット（情報ビット１ビットと冗長ビット２ビット）のうち１ビットに誤りが生じてデータが反転しても、誤りを検知して訂正することが可能である。【０２０５】
なお、誤り訂正処理部３０３は、以下のようにして誤り訂正処理を行ってもよい。すなわち、誤り訂正処理部３０３は、入力された９ビットデータを、上位から３ビットずつに分割して、ｃ１、ｃ２、ｃ３とする。次に、ｃ１、ｃ２、ｃ３のそれぞれについて、ハミング重み（１の立っているビットの数）を計算する。そして、ハミング重みが２以上であれば、１１１（２進数）とし、ハミング重みが１以下であれば、０００（２進数）とする。例えば、０１０（２進数）であれば、０００（２進数）とし、１１０（２進数）であれば、１１１（２進数）とする。そうして得られた３ビット×３個のデータを、上位から、ｃ１の誤り訂正処理結果、ｃ２の誤り訂正処理結果、ｃ３の誤り訂正処理結果の順に連結したものを、最終的な誤り訂正結果の９ビットデータとして、復号化部３０４及び排他的論理和部３０５に入力する。【０２０６】
排他的論理和部３０５は、ビット連結部３０２から入力された誤り訂正前の９ビットデータと、誤り訂正処理部３０３から入力された誤り訂正後の９ビットデータとの排他的論理和演算を行い、その演算結果である９ビットデータをビット分割部３０６に入力する。これは、誤り訂正前と訂正後のデータを比較して、誤り訂正が行われたビット位置に１を立てる処理を行っていることと同じである。つまり、本実施の形態では、排他的論理和部３０５が、情報生成用ＰＵＦ部１１０４ａから出力されるハッシュ鍵に誤りが生じたか否かを判別する誤り判別手段として構成されている。【０２０７】
ビット分割部３０６は、入力された９ビットデータを上位から１ビットずつ分割して、各ビットをそれぞれ各ＰＵＦ回路４に入力する。これにより、誤り訂正が行われたビットを出力したＰＵＦ回路４には、１ビットデータ「１」が入力値再設定要求信号として入力され、誤り訂正が行われなかったビットを出力したＰＵＦ回路４には、１ビットデータ「０」が入力されることになる。 つまり、本実施の形態では、ビット分割部３０６が、情報生成用ＰＵＦ部１１０４ａに対して、ハッシュ鍵の再設定を要求する再設定要求手段として構成されている。【０２０８】
入力値再設定要求信号が入力されたＰＵＦ回路４は、上記実施の形態２と同様の「入力値データの再設定」処理を実行する。つまり、ＰＵＦ回路４は、図１７を用いて上述のように説明した処理を実行する。但し、ＰＵＦ回路４の入力値設定部４５は、ステップＳ５０１において出力設定値を特定するときには、既に出力ビットに誤りが生じているため、上述とは逆の規則に基づいて出力設定値を特定する。例えば、入力値設定部４５は、第１周波数カウント部１２１から入力された発振周波数Ｆ１と、第２周波数カウント部１２２から入力された発振周波数Ｆ２との大小関係を比較し、Ｆ２≦Ｆ１であれば、出力設定値を「１」とし、そうでなければ、出力設定値を「０」とする。【０２０９】
なお、本実施の形態では、ＰＵＦ回路４の入力値設定部４５が、ハッシュ鍵の再設定を行う再設定部として構成されている。【０２１０】
本実施の形態では、誤りが発生していると検知されたビット（誤り訂正が行われたビット）については、そのビット値を生成したＰＵＦ回路に対して入力値データの再設定処理を指示することが特徴である。この構成により、実施の形態２では得られなかった以下のような効果がある。例えば、実施の形態２の場合は、入力値再設定判定用閾値をＲとしたとき、リングオシレータの周波数特性が急激に変化し、発振周波数の差分（Ｆ２−Ｆ１）が、元々はＦ２−Ｆ１＞Ｒであったものが、Ｆ２−Ｆ１＜−Ｒとなるように変化した場合、ＰＵＦ回路の出力ビット値は反転してしまい、更に、Ｆ２−Ｆ１の絶対値は、Ｒ以上になるために、入力値の再設定処理は行われない。しかし、本実施の形態においては、上記の出力ビットの反転が検知され、入力値の再設定処理が行われるために、適切に入力値データが再設定される。このように、本実施の形態においては、リングオシレータの急激な周波数特性変化についても、適切に入力値データの再設定が行われ、出力ビットの安定性が保たれる。【０２１１】
なお、本実施の形態では、出力ビットに誤りが生じたときには、その出力ビットを出力したＰＵＦ回路４、つまり入力値再設定要求信号を取得したＰＵＦ回路４は、入力値データの再設定を行ったが、入力値データの再設定を行うことなく、出力すべき出力ビットの値、すなわち出力設定値を出力ビット保管部１９に格納してもよい。【０２１２】
図２２は、入力値再設定要求信号を取得したＰＵＦ回路４の他の動作を示すフローチャートである。【０２１３】
まず、入力値再設定要求信号を取得した入力値設定部４５は出力設定値を特定する（ステップＳ６０１）。このとき、入力値設定部４５は、上述と同様、既に出力ビットに誤りが生じているため、第１周波数カウント部１２１から入力された発振周波数Ｆ１と、第２周波数カウント部１２２から入力された発振周波数Ｆ２との大小関係を比較し、Ｆ２≦Ｆ１であれば、出力設定値を「１」とし、そうでなければ、出力設定値を「０」とする。【０２１４】
そして、入力値設定部４５は、特定した出力設定値と退避要求信号とを出力ビット制御部１８に出力することにより、その出力ビット制御部１８にその出力設定値（出力設定値を示す出力ビット）を出力ビット保管部１９に格納させる（ステップＳ６０２）。【０２１５】
このように、入力値再設定要求信号を取得したＰＵＦ回路４が入力値データの再設定を行わず出力設定値を出力ビット保管部１９に格納する場合には、ＰＵＦ回路４における今後の処理負担を軽減し、出力ビットを安定させることができる。【０２１６】
（変形例）
上記に説明した実施の形態１〜３は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。【０２１７】
（１）情報セキュリティ装置及び誤り訂正情報生成装置で使用する誤り訂正符号は、繰り返し符号であるが、これに限らない。誤り訂正符号であれば何でもよい。例えば、リード・ソロモン符号などの代数的符号や畳み込み符号であってもよい。また、符号長（ビットや要素の数）を９とし、情報記号数を３としていたが、これに限らない。安全性の面では、訂正後ハッシュ鍵は８０ビット以上である方がよい。【０２１８】
（２）情報セキュリティ装置では、鍵付ハッシュ値を出力するとしているが、これに限らない。秘密の鍵を用いて入力データを変換した変換データを出力すればよい。変換データは、鍵付ハッシュ値の他に、暗号文、復号文、署名データなどがある。【０２１９】
（３）情報セキュリティ装置では、ＰＵＦ回路を使用しているが、これだけに限らない。ＰＵＦ回路の代わりに、秘密の情報を出力可能な耐タンパー回路であればよい。また、環境や経年劣化により出力が変化する耐タンパー回路であってもよい。耐タンパー回路として、特許文献２（特開２００６−０６０１０９号公報）に記載されている、識別情報生成回路を使用してもよい。識別情報生成回路は、電源をオンした際のフリップフロップやＲＡＭ、ＳｔａｔｉｃＲＡＭの各メモリセルから最初に出力される論理信号から、固有の識別コードを生成する。なお、ＰＵＦには、スペックルパタンを利用したＯｐｔｉｃａｌ  ＰＵＦ、ゲート遅延を利用したＳｉｌｉｃｏｎ  ＰＵＦ、誘電率を利用したＣｏａｔｉｎｇ  ＰＵＦ、およびノイズ音を利用したＡｃｏｕｓｔｉｃ  ＰＵＦなどがある。【０２２０】
（４）誤り訂正情報生成装置の環境変化部では、ＰＵＦ回路の周囲の温度を変化させるとしていたが、他の環境変化、例えば、電圧変化であってもよい。また、環境変化ではなく、現在の環境を取得して、環境変化解析部へ現在の環境を知らせる構成でもよい。【０２２１】
（５）第２のＰＵＦ回路において、差分から“０”から“７”までの値への変換するルールは予め、固定化したものを与えているが、この変換ルールを誤り訂正情報生成装置が決定して第２のＰＵＦ回路に埋め込む、もしくは誤り訂正部分情報格納部に格納してもよい。また、第２のＰＵＦ回路の誤り訂正情報を誤り訂正部分情報格納部に格納してもよい。この場合、第２のＰＵＦ回路の誤り訂正情報を用いて、誤り訂正用ＰＵＦ情報を知り、誤り訂正部分情報から第１のＰＵＦ回路の誤り訂正情報を攻撃者が知ることが可能になる。しかし、攻撃者の解析に要する処理量が大きくなるため、安全性の向上としては有効である。さらに、ＰＵＦ回路をさらに第３、第４、・・・と追加して、誤り訂正情報を攻撃者がより求めにくくしてもよい。【０２２２】
（６）実施の形態では、２個のリングオシレータの発振周波数の大小関係から１ビットまたは３ビットの出力ビットを決定していたが、これは２個とは限らず、３個以上のリングオシレータであってもよい。このとき、例えば、３個のリングオシレータの周波数が、Ａ、Ｂ、Ｃのとき、Ａ、Ｂ、Ｃの大小関係の全パタンと出力ビットの対応関係が予めルールとして決定されていれば良い。また、このとき入力値再設定判定部における判定方法としては、Ａ、Ｂ、Ｃを周波数の大きい順に並べた上で、（１番目の周波数）と（２番目の周波数）の差分と（２番目の周波数）と（３番目の周波数）の差分をそれぞれ計算し、各差分値が所定の閾値以上であるかどうかをチェックすることで、判定すればよい。【０２２３】
（７）実施の形態では、「入力値データの設定」処理および「入力値データの再設定」処理において、入力値設定用閾値以上の差分を有する入力値ペア（Ｎ１，Ｎ２）が見つかった時点で、その値を、入力値保管部に設定あるいは再設定していたが、これは、まず全ての入力値ペア（Ｎ１，Ｎ２）について、周波数の差分値を求めた上で、差分値の一番大きくなる（Ｎ１，Ｎ２）を選び、そのときの差分値が入力値設定用閾値以上であれば、選んだ値を入力値保管部に設定あるいは再設定し、上記閾値未満であれば、入力値設定失敗信号あるいは入力値再設定失敗信号を送付するようにしてもよい。【０２２４】
（８）閾値保管部に保管する入力設定用閾値及び入力値再設定判定用閾値は、必ずしもＰＵＦ回路の製造時に設定する必要はなく、製造後に、設定するようにしても良い。また、一度設定した後でも、再設定ができるようにしても良い。つまり、入力設定用閾値及び入力値再設定判定用閾値の少なくとも一方を更新してもよい。例えば、ＰＵＦ回路が出力ビット算出処理を所定回数行うたびに、閾値を変更したり、入力値データの再設定処理の際に、現在設定されている入力設定用閾値を満たすリングオシレータペアが存在しない場合には、今の閾値よりも小さくするようにその閾値を変更したり、してもよい。【０２２５】
（９）入力値再設定判定部による入力値再設定判定は、出力ビット算出処理を行うごとに毎回行う必要はなく、所定回数出力ビット算出処理を行うごとに行うようにしてもよいし、外部からの指示信号を受け付けたときに行うようにしてもよい。【０２２６】
（１０）本実施の形態では、発振回路としてリングオシレータを用いた場合の構成を示しているが、これは固体振動子発振回路、ＣＲ発振回路、ＬＣ反結合発振回路、など発振回路であれば何でもよい。【０２２７】
（１１）実施の形態では、１つのＰＵＦ回路から出力されるデータは１ビットまたは３ビットであったが、これは１ビットまたは３ビットに限定されず、発振周波数の大小関係から出力ビットを決定する決定ルールを予め決めておけば、２ビットや４ビット以上であってもよい。【０２２８】
（１２）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。【０２２９】
（１３）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。【０２３０】
（１４）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣ（Integrated Circuit）カードまたは単体のモジュールから構成されているとしてもよい。例えば、図４に示す情報セキュリティ装置１１００の全体をＩＣカードとして構成したり、その情報セキュリティ装置１１００のうち情報生成用ＰＵＦ部１１０４と、誤り訂正部１１０５と、誤り訂正情報生成部１１０８と、誤り訂正用ＰＵＦ部１１０６と、誤り訂正部分情報格納部１１０７とをＩＣカードとして構成してもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。【０２３１】
（１５）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。【０２３２】
（１６）また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記ディジタル信号であるとしてもよい。【０２３３】
（１７）また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。【０２３４】
（１８）また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。【０２３５】
（１９）また、前記プログラムまたは前記ディジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。【０２３６】
（２０）上記実施の形態１〜３及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０２３７】
本発明に係る情報セキュリティ装置は、メモリに格納された情報を用いても、ＰＵＦにより秘匿された鍵値などの秘密データを攻撃者が知ることができなくなり、ＰＵＦの安全性が低下しないようにすることができるという効果を奏し、例えば、ＩＣカードなどに適用することができる。また、本発明にかかる情報セキュリティ装置は、鍵データやＩＤデータなどの秘密データをセキュアかつ安価に保持しつつ、従来技術よりも、経年変化に対する秘密データの安定性を向上させるという特徴を有するので、高セキュリティ、低コスト、かつ高安定性での実現が求められる情報セキュリティ装置の実現に有用である。
【図１】
2008056612.tif 000003
【図２】
2008056612.tif 000004
【図３】
2008056612.tif 000005
【図４】
2008056612.tif 000006
【図５】
2008056612.tif 000007
【図６】
2008056612.tif 000008
【図７】
2008056612.tif 000009
【図８】
2008056612.tif 000010
【図９】
2008056612.tif 000011
【図１０】
2008056612.tif 000012
【図１１】
2008056612.tif 000013
【図１２Ａ】
2008056612.tif 000014
【図１２Ｂ】
2008056612.tif 000015
【図１３】
2008056612.tif 000016
【図１４】
2008056612.tif 000017
【図１５】
2008056612.tif 000018
【図１６】
2008056612.tif 000019
【図１７】
2008056612.tif 000020
【図１８】
2008056612.tif 000021
【図１９】
2008056612.tif 000022
【図２０】
2008056612.tif 000023
【図２１】
2008056612.tif 000024
【図２２】
2008056612.tif 000025
【手続補正書】
【提出日】平成21年1月14日(2009.1.14)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証や暗号を実現するシステムに関するものであり、暗号処理で用いる鍵などの秘密データや、機器固有のＩＤデータを解析から保護された形でセキュアに実装する情報セキュリティ装置に関する。
【背景技術】
【０００２】
近年、デジタルコンテンツの著作権保護やネット上の通信データの秘匿を目的として、各種民生機器などで暗号処理を行うケースが多くなってきた。暗号処理においては、その処理に用いる鍵やＩＤデータを機器内に蓄積する必要があり、著作権保護システムや秘話通信システムの安全性は、前記鍵やＩＤデータの秘匿性に大きく依存する。従って、そういった秘密データを、機器外部からの解析から保護された形でセキュアに蓄積する必要がある。
【０００３】
秘密データをセキュアに蓄積する典型的な従来方法としては、耐タンパー性の高いハードウェアチップ（耐タンパーチップ）内に蓄積する方法や、耐タンパーが施されたソフトウェアプログラム内に埋め込むような方法があった。しかし、前者の方法では、秘密データの高い秘匿性は実現できるものの特殊な専用チップが必要となるためコストが高くなるという問題があり、後者の方法では、一般的には余り高い秘匿性は実現できず、時間をかけて解析を行うことで秘密データが露呈してしまう可能性があった。
【０００４】
耐タンパーチップのような特殊なハードウェアを必要とせず、秘密データの高い秘匿性を実現可能な方法として、ＰＵＦ（Ｐｈｙｓｉｃａｌｌｙ  Ｕｎｃｌｏａｎａｂｌｅ  Ｆｕｎｃｔｉｏｎ）と呼ばれる技術がある。ＰＵＦとは、デバイスの物理的な特性を利用して、物理的な解析に対しても耐性があるような秘密データの蓄積方法である。ＰＵＦの具体的な方法は、各種があるが、中でも特許文献１に開示のＳｉｌｉｃｏｎ  ＰＵＦと呼ばれる方法は、製造に特殊な環境や設備を必要としないことから、安価な製造コストで高い耐タンパー性を実現でき、低コスト性が要求される民生機器などに特に適した方法といえる。
【０００５】
（Ｓｉｌｉｃｏｎ  ＰＵＦの概要）
図１は、従来のＳｉｌｉｃｏｎ  ＰＵＦを実現する回路の構成を示した図である。図１において、ＰＵＦ回路２０００は、トリガ信号を入力すると、１ビットの秘密データを出力する回路である。
【０００６】
ＰＵＦ回路２０００は、８個のリングオシレータ（第１リングオシレータ２００１〜第８リングオシレータ２００８）と、入力データに基づいて前記８個のリングオシレータのうちから１個を選択するリングオシレータ選択部（第１リングオシレータ選択部２０１１及び第２リングオシレータ選択部２０１２）と、前記リングオシレータ選択部が選択したリングオシレータの発振周波数をカウントする周波数カウント部（第１周波数カウント部２０２１及び第２周波数カウント部２０２２）と、カウントした周波数を元にＰＵＦ回路２０００の出力ビットを決定する出力ビット決定部２０３０とからなる。以下、ＰＵＦ回路２０００の動作を説明する。
【０００７】
まず、リングオシレータ選択部２０１１、２０１２はそれぞれ、８個のリングオシレータ２００１〜２００８の中から予め決定した１個をそれぞれ選択する。次に、前記リングオシレータ２００１〜２００８にトリガ信号が入力され、リングオシレータは発振動作を開始する。周波数カウント部２０２１、２０２２は、前記リングオシレータ選択部２０１１、２０１２が選択したリングオシレータからの出力信号をそれぞれ計測して、リングオシレータの発振周波数を計測する。そして、出力ビット決定部２０３０は、前記計測した２つの発振周波数を比較し、その大小関係によって、ＰＵＦ回路２０００の出力ビットを決定する。
【０００８】
上記一連の動作により、ＰＵＦ回路２０００にトリガ信号を入力すると、ＰＵＦ回路２０００の内部で出力ビットが１ビットだけ決定され出力される。８個のリングオシレータ２００１〜２００８は、リングオシレータの段数などの回路構成は同一であるが、製造プロセスにおいて遅延時間など物理的な特性に若干であるがバラつきが生じる。それにより、各リングオシレータの発振周波数は、少しずつ異なった値となる。その異なり方は、ＰＵＦ回路を製造する際に予測不可能な形で決まり、かつ、ＰＵＦ回路ごとに違ってくる。このような発振周波数により出力ビットが異なる。また、入力データに対する出力ビットの対応関係は、ＰＵＦ回路内の各リングオシレータの発振周波数を計測することで解析することができる。しかし、ＰＵＦ回路に対して、例えばブロービングなどで、外部から発振周波数による解析操作を行うと、リングオシレータの物理特性が変化して、出力ビット計算時と同じ発振周波数を計測することができないので、外部からの解析により、入力データに対する出力ビットの対応関係を調べることは困難である。また、ＰＵＦ回路は、リングオシレータ、周波数カウンタ、比較器などの組み合わせ回路によって実現できるため、特殊な製造環境や設備を必要とせず、通常のＬＳＩ製造環境・設備を用いて安価に製造することが可能である。
【０００９】
（Ｓｉｌｉｃｏｎ  ＰＵＦの課題）
上記のとおり、Ｓｉｌｉｃｏｎ  ＰＵＦの技術により、安価なコストによって、解析困難な形でチップごとに異なった入出力関係を有する関数を実装することが可能となったが、以下のような課題もある。ＰＵＦ回路の出力ビットは、入力データに基づいて選択されたリングオシレータの発振周波数の大小関係で決定される。先ほど説明したとおり、回路製造時の遅延時間などの物理特性のバラつきによって、リングオシレータの発信周波数にバラつきが生じるが、周波数の差がわずかしかない二つのリングオシレータ間の大小関係は、温度変化など外部の環境によって逆転してしまう恐れがある。例えば、ある入力データによって、二つのリングオシレータＡ及びＢが選択され、発振周波数がそれぞれ１２５６Ｈｚ、１２４５Ｈｚと計測されたとする。このとき、出力ビット値は、［Ａの発振周波数］＞［Ｂの発振周波数］から“１”と判定される。また、別のタイミングで同じ入力データを、このＰＵＦ回路に入力すると、同じリングオシレータＡ及びＢが選択されるが、このとき、先ほどよりも外部の温度が上昇したとする。その場合、リングオシレータの遅延時間が上昇するので、発振周波数も、それぞれ低下することになるが、その低下の度合いにも、リングオシレータによって若干であるがバラつきがあるので、リングオシレータの元もとの周波数差が僅かしかない場合には、大小関係が反転してしまう恐れがある。上記の例では、リングオシレータＡとＢとの周波数差は、９Ｈｚしかないので、温度変化によって、［Ａの発振周波数］＞［Ｂの発振周波数］という大小関係は反転してしまう恐れがある。即ち、同じ入力データに対して、場合によっては、違う出力ビット値を出力してしまう恐れがあり、出力ビット値の安定性に課題がある。
【００１０】
（Ｓｌｉｌｉｃｏｎ  ＰＵＦの改良）
上記課題に対し、従来方法では誤り訂正符号を導入し、出力値（出力ビットの値）の誤りを訂正することで安定性を向上させている。
【００１１】
図２は、従来方法における情報セキュリティ装置３０００の構成を示している。情報セキュリティ装置３０００は、外部から入力された入力データに対し、ＰＵＦを使用して生成した鍵を用いた鍵付ハッシュ値を出力している。鍵付ハッシュ値は、鍵付ハッシュ関数を用いて生成される。鍵付ハッシュ関数については、非特許文献１の１８９〜１９５ページに記載されている。
【００１２】
情報セキュリティ装置３０００は、外部から入力データを受け付ける入力部３００１と、鍵付ハッシュ値を出力する出力部３００２と、鍵付ハッシュ値を生成するハッシュ生成部３００３と、ＰＵＦを用いて鍵を生成するＰＵＦ部３００４と、誤り訂正情報に基づき、鍵を誤り訂正し訂正後ハッシュ鍵を生成する誤り訂正部３００５と、誤り訂正情報を格納する誤り訂正情報格納部３００６とを備える。
【００１３】
ＰＵＦ部３００４は先のＰＵＦ回路２０００を複数、例えば、６個備え、それぞれのＰＵＦ回路の出力ビットを連結した６ビットを鍵とする。
【００１４】
情報セキュリティ装置３０００の動作を以下に示す。入力部３００１は外部のデータの入力を受け付け、これによりＰＵＦ部３００４内のＰＵＦ回路２０００にトリガ信号を入力する。ＰＵＦ回路２０００では、出力ビットを生成し、ＰＵＦ部３００４は６つのＰＵＦ回路２０００の出力ビットを連結したものを鍵とする。その後、誤り訂正部３００５は鍵を誤り訂正情報を用いて訂正し訂正後ハッシュ鍵を生成する。さらにハッシュ生成部３００３は訂正後ハッシュ鍵を用いて、入力データの鍵付ハッシュ値を生成し、出力部３００２がこれを出力する。
【００１５】
誤り訂正情報は、情報セキュリティ装置３０００の製造時に、ＰＵＦ部３００４内のＰＵＦ回路２０００の値を計測して決定する。具体的には、ＰＵＦ部３００４の鍵を複数回計測し、その中で最も高確率に発生する鍵の値を求め、これに対して誤り訂正情報を確定し、誤り訂正情報格納部３００６に格納する。
【特許文献１】米国特許出願公開第２００３／０２０４７４３号明細書
【非特許文献１】岡本龍明、山本博資、”現代暗号”、産業図書（１９９７年）
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、上記従来技術では、メモリ（誤り訂正情報格納部３００６）に格納された誤り訂正情報を解析することで、誤り訂正部３００５からハッシュ生成部３００３に入力される訂正後ハッシュ鍵の鍵値が求めやすくなってしまうという問題がある。
【００１７】
例えば、３ビットごとの繰り返し符号を用いて誤り訂正する方法を考える。繰り返し符号では、３ビットのハミング重みを計算し、それが１以下であれば“０”、２以上であれば“１”と復号化する。例えば、“０１１”であれば、“１”と復号化する。上記のＰＵＦ部３００４の出力は６ビットであるが、これを２ビットごとの３組に分割し、誤り訂正情報を、３ビットの繰り返し符号の１ビット分を３組合わせた合計３ビットとする。情報セキュリティ装置３０００の製造時に、ＰＵＦ部３００４の出力値を計測し、最も高確率に発生する出力値を“１１  ００  ０１”であるとする。誤り訂正情報を“Ｘ  Ｙ  Ｚ”（Ｘ、Ｙ、Ｚは０または１）とする。このとき、一つ目の符号は“１１Ｘ”となるが、これを復号化すると“１”となる。ここで誤りが起こっても正しく復号化できるように“Ｘ”を１に設定する。同様に、“Ｙ”を０に設定する。“Ｚ”は０、１のどちらに設定してもよいが、ここでは“１”とする。そうすると、誤り訂正情報は“１  ０  １”であり、復号化後の値、すなわち、訂正後ハッシュ鍵は“１  ０  １”である。したがって、誤り訂正情報と訂正後ハッシュ鍵が等しくなり、攻撃者が誤り訂正情報を解析することで訂正後ハッシュ鍵を知ることができる。
【００１８】
上記例は、極端なケースで説明しているが、このような誤り訂正方法や誤り訂正情報の設定をしない場合も、攻撃者が誤り訂正情報を用いて訂正後ハッシュ鍵の鍵値を求めやすくなる可能性がある。鍵値が求められると、それをメモリに格納して鍵付ハッシュ関数に使用するＰＵＦのシミュレータを攻撃者が作成し、それを用いた偽造が可能になるため秘匿性が保たれなくなる。
【００１９】
このように、従来技術では、ＰＵＦの安全性が低いという課題がある。
【００２０】
そこで本発明は、上記課題を解決するものであって、メモリに格納された情報を攻撃者により解析されても、ＰＵＦの安全性が低下しない情報セキュリティ装置を提供することを目的とする。つまり、秘密データの安定性と秘匿性を高めた情報セキュリティ装置を提供することを目的とする。
【課題を解決するための手段】
【００２１】
上記目的を達成するために、本発明に係る情報セキュリティ装置は、予め設定された秘密データを出力する情報セキュリティ装置であって、予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路と、第１の訂正用データを記憶している訂正用データ記憶手段と、第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路と、前記訂正用データ記憶手段に記憶されている第１の訂正用データと、前記第２の耐タンパー回路から出力される第２の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成手段と、前記訂正情報生成手段により生成された誤り訂正情報を用いて、前記第１の耐タンパー回路から出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正手段とを備えることを特徴とする。例えば、前記第１の耐タンパー回路に設定される秘密データと、前記第２の耐タンパー回路に設定される第２の訂正用データとは、ＰＵＦ（Physically Unclonable Function）により設定されている。
【００２２】
これにより、秘密データの誤り訂正に直接的に用いられる誤り訂正情報は、従来のようにメモリに格納されておらず、第２の耐タンパー回路を用いて生成されるため、攻撃者に対して誤り訂正情報を見つけ難くすることができ、その結果、第１の耐タンパー回路に設定された秘密データの安全性および秘匿性を高めることができる。さらに、本発明では、周辺温度などの環境変化や経年的な要因によって第１の耐タンパー回路から出力される秘密データに誤りが生じても、誤り訂正情報によってその誤りが訂正されるため、秘密データの安定性を高めることができる。
【００２３】
また、前記情報セキュリティ装置は、さらに、入力データを取得する取得手段と、前記誤り訂正手段から出力される秘密データを鍵として用い、前記鍵により前記入力データを暗号化する暗号化手段とを備えることを特徴としてもよい。
【００２４】
例えば、入力データは鍵付ハッシュ値や暗号文に変換される。これにより、鍵付ハッシュ値や暗号文などの安全性を高めることができる。
【００２５】
また、前記第１の耐タンパー回路は、１ビットの値を前記秘密データの少なくとも一部として出力する１つ以上の第１のＰＵＦ回路を備え、前記第２の耐タンパー回路は、２ビット以上の値を前記第２の訂正用データの少なくとも一部として出力する１つ以上の第２のＰＵＦ回路を備えることを特徴としてもよい。
【００２６】
例えば、第２のＰＵＦ回路から１ビットの値しか出力されないような場合には、ノイズなどによってその値に誤りが生じることがある。しかし、本発明では、第２のＰＵＦ回路は２ビット以上の値を出力するため、そのうちの１ビットに誤りが生じても、その誤りを容易に訂正することができ、第２の耐タンパー回路から出力される第２の訂正用データの耐ノイズ性を向上することができる。
【００２７】
また、前記第１の耐タンパー回路は、１つ以上の第１のＰＵＦ回路を備え、前記第１のＰＵＦ回路は、発振信号を出力するＮ（Ｎ≧２）個の発振部と、前記Ｎ個の発振部からＭ（Ｍ≦Ｎ）個の発振部を選択する選択部と、前記選択部により選択されたＭ個の発振部から出力される発振信号の周波数の大小関係に基づいて出力値を決定して出力する決定部とを備え、前記選択部は、前記決定部によって決定される出力値が前記予め定められた秘密データの少なくとも一部を示すようにＭ個の発振部を選択することを特徴としてもよい。具体的には、前記選択部は、前記Ｍ個の発振部から出力される発振信号の周波数の差分が第１の閾値以上となるように前記Ｍ個の発振部を選択する。
【００２８】
例えば、選択された２つの発振部から出力される発振信号の周波数の差分が極めて小さい場合には、それらの発振部の物理特性が経年的に変化することによって、それらの周波数の大小関係が反転してしまうことがある。しかし、本発明では、周波数の差分が第１の閾値以上になるようにＭ個の発振部が選択されるため、それらの発振部の物理特性が経年変化しても、それらの発振部から出力される発振信号の周波数の大小関係が変化してしまうのを抑えることができる。その結果、第１の耐タンパー回路から出力される秘密データに発生する誤りを抑えることができる。
【００２９】
また、前記情報セキュリティ装置は、さらに、前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第１の耐タンパー回路から出力される秘密データとを比較することにより、前記第１の耐タンパー回路から出力される秘密データに誤りが生じたか否かを判別する誤り判別手段と、前記誤り判別手段により誤りが生じたと判別されたときには、前記第１の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、前記第１のＰＵＦ回路は、さらに、前記再設定要求手段から再設定の要求を受け付けたときには、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部を備えることを特徴としてもよい。
【００３０】
これにより、第１の耐タンパー回路が出力した秘密データに誤りが生じたときには、予め定められた秘密データが第１の耐タンパー回路に設定し直されるため、誤り訂正の精度を高めることができ、秘密データの安定性をさらに向上することができる。
【００３１】
また、前記第１のＰＵＦ回路は、さらに、前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、前記選択部がＭ個の発振部を選択する際に、前記発振周波数の差分が前記第１の閾値以上となるようなＭ個の発振部を選択することができないときに、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備えることを特徴としてもよい。
【００３２】
Ｎ個の発振部の何れを選択しても、選択されたＭ個の発振部から出力される発振信号の周波数の差分が第１の閾値未満となってしまう場合には、その第１のＰＵＦ回路からの出力値に誤りが生じ易くその信頼性が低くなる。したがって、本発明では、このような場合には、第１のＰＵＦ回路が出力すべき、予め定められた秘密データの少なくとも一部が秘密データ用記憶部に格納され、その秘密データの少なくとも一部が出力されるため、第１の耐タンパー回路から出力される秘密データに誤りが生じるのを防ぎ、信頼性を高めることができる。
【００３３】
また、前記第１の耐タンパー回路は、複数の前記第１のＰＵＦ回路と、前記複数の第１のＰＵＦ回路から出力される出力値を結合することにより秘密データを生成する結合部とを備え、前記誤り判別手段は、前記第１の耐タンパー回路から出力される秘密データに誤りが生じたと判別するときには、さらに、前記複数の第１のＰＵＦ回路のうち、誤った出力値を出力する第１のＰＵＦ回路を特定し、前記再設定要求手段は、誤った出力値を出力していると特定された第１のＰＵＦ回路に対して、出力値が前記予め定められた秘密データの一部を示すように、出力値の再設定を要求することを特徴としてもよい。
【００３４】
これにより、誤った出力値を出力する第１のＰＵＦ回路が特定されて、その特定された第１のＰＵＦ回路の出力値が再設定されるため、予め定められた秘密データを第１の耐タンパー回路に適切に設定し直すことができる。
【００３５】
また、前記情報セキュリティ装置は、さらに、前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第１の耐タンパー回路から出力される誤り訂正前の秘密データとを比較することにより、前記誤り訂正前の秘密データに誤りが生じたか否かを判別する誤り判別手段と、前記誤り判別手段により誤りが生じたと判別されたときには、前記第１の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、前記第１のＰＵＦ回路は、さらに、前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、前記再設定要求手段から再設定の要求を受け付けたときには、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備えることを特徴としてもよい。
【００３６】
第１のＰＵＦ回路が一度でも誤った出力値を出力した場合には、その第１のＰＵＦ回路の信頼性は疑わしい。したがって、本発明では、このような場合には、その第１のＰＵＦ回路が出力すべき出力値である、予め定められた秘密データの少なくとも一部が秘密データ用記憶部に格納され、その秘密データの少なくとも一部が出力されるため、第１の耐タンパー回路から出力される秘密データに誤りが生じるのを防ぎ、信頼性を高めることができる。
【００３７】
また、前記第１のＰＵＦ回路は、さらに、前記Ｍ個の発振部から出力される発振信号の周波数の差分が第２の閾値未満であるか否かを判別する差分判別部と、前記差分判別部によって前記第２の閾値未満であると判別されると、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部とを備えることを特徴としてもよい。
【００３８】
これにより、第１のＰＵＦ回路から出力される出力値の誤りを未然に防ぐことができる。
【００３９】
また、前記第１のＰＵＦ回路は、さらに、前記第１および第２の閾値のうちの少なくとも一方を格納している閾値格納部と、前記閾値格納部に格納されている、前記第１および第２の閾値のうちの少なくとも一方を更新する更新部とを備えることを特徴としてもよい。
【００４０】
これにより、予め定められた秘密データを適切なタイミングで設定し直すことができる。
【００４１】
また、上記目的を達成するために、本発明に係るデータ生成装置は、秘密データの誤りを訂正するための第１の訂正用データを生成するデータ生成装置であって、予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から出力される出力値を計測する第１の計測手段と、第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から出力される出力値を計測する第２の計測手段と、前記第１および第２の計測手段によって計測された出力値に基づいて、前記第１の訂正用データを生成するデータ生成手段と、前記データ生成手段によって生成された前記第１の訂正用データを記憶媒体に格納する格納処理手段とを備えることを特徴とする。例えば、前記データ生成手段は、前記第１の計測手段によって計測された出力値と、前記秘密データの示す値との差分を算出することにより、誤り訂正情報を生成する第１の生成手段と、前記第２の計測手段によって計測された出力値と、前記誤り訂正情報の示す値との差分を算出することにより、前記第１の訂正用データを生成する第２の生成手段とを備える。
【００４２】
これにより、第２の訂正用データを用いて誤り訂正情報を生成するために必要な第１の訂正用データを適切に生成することができる。
【００４３】
なお、本発明は、このような情報セキュリティ装置およびデータ生成装置として実現することができるだけでなく、その装置によって行われる処理方法や、その処理方法をコンピュータに実行させるプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
【発明の効果】
【００４４】
本発明の情報セキュリティ装置は、メモリに格納された情報を用いても、ＰＵＦにより秘匿された秘密データを攻撃者が知ることができなくなり、ＰＵＦの安全性が低下しないようにすることができ、その価値は大きい。さらに、本発明の情報セキュリティ装置によれば、従来技術のＰＵＦ回路と同様に製造コストが安価でセキュアにデータを保管可能という特徴を保持しつつ、かつ、経年変化に対する出力ビット値の安定性を向上できるような情報セキュリティ装置を提供することが可能になるという効果がある。
【発明を実施するための最良の形態】
【００４５】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００４６】
（実施の形態１）
本発明に係る第１の実施の形態としての情報セキュリティシステム１０００について、説明する。
【００４７】
図３は、実施の形態１における情報セキュリティシステム１０００の構成を示す図である。
【００４８】
本情報セキュリティシステム１０００は、秘密データの安定性と秘匿性を高めた情報セキュリティ装置１１００と、誤り訂正部分情報を生成して情報セキュリティ装置１１００に設定する誤り訂正情報生成装置１２００とを備える。なお、本実施の形態では、誤り訂正情報生成装置１２００がデータ生成装置として構成されている。
【００４９】
＜情報セキュリティ装置１１００の構成＞
図４は、情報セキュリティ装置１１００の構成を示す図である。情報セキュリティ装置１１００は、データ（入力データ）の入力を受け付ける入力部１１０１と、データを出力する出力部１１０２と、鍵付ハッシュ値を計算するハッシュ生成部１１０３と、鍵付ハッシュ関数の鍵であるハッシュ鍵を生成する情報生成用ＰＵＦ部１１０４と、ハッシュ鍵の誤りを訂正し訂正後ハッシュ鍵を生成する誤り訂正部１１０５と、誤り訂正用ＰＵＦ情報を生成する誤り訂正用ＰＵＦ部１１０６と、誤り訂正部分情報を格納する誤り訂正部分情報格納部１１０７と、誤り訂正情報を生成する誤り訂正情報生成部１１０８とを備える。
【００５０】
なお、本実施の形態では、情報生成用ＰＵＦ部１１０４が、予め設定された秘密データたるハッシュ鍵を出力するように設定された第１の耐タンパー回路として構成され、誤り訂正部分情報格納部１１０７が、第１の訂正用データたる誤り訂正部分情報を記憶している訂正用データ記憶手段として構成されている。また、誤り訂正用ＰＵＦ部１１０６が、第２の訂正用データたる誤り訂正用ＰＵＦ情報を出力するように設定された第２の耐タンパー回路として構成され、誤り訂正情報生成部１１０８が、誤り訂正情報を生成する訂正情報生成手段として構成されている。さらに、入力部１１０１が、入力データを取得する取得手段として構成され、ハッシュ生成部１１０３が、入力データを暗号化する暗号化手段として構成されている。
【００５１】
入力部１１０１は、外部より入力された入力データを受け付け、ハッシュ生成部１１０３に入力する。入力部１１０１は、さらに入力データを受け付けたときに、ＰＵＦ回路へのトリガを情報生成用ＰＵＦ部１１０４と誤り訂正用ＰＵＦ部１１０６に入力する。
【００５２】
出力部１１０２は、鍵付ハッシュ値を出力する。
【００５３】
ハッシュ生成部１１０３は、誤り訂正部１１０５で出力された訂正後ハッシュ鍵と入力部１１０１で受け付けた入力データを用いて、鍵付ハッシュ値を計算し、出力部１１０２に入力する。
【００５４】
情報生成用ＰＵＦ部１１０４は、鍵付ハッシュ関数のハッシュ鍵を生成する。
【００５５】
図５は、情報生成用ＰＵＦ部１１０４の構成を示す図である。
【００５６】
情報生成用ＰＵＦ部１１０４は、図５に示すように、９つの第１のＰＵＦ回路１１０４１Ａ、１１０４１Ｂ、１１０４１Ｃ、１１０４１Ｄ、１１０４１Ｅ、１１０４１Ｆ、１１０４１Ｇ、１１０４１Ｈ、１１０４１Ｉと、第１のＰＵＦ回路のビットを連結してハッシュ鍵を生成するハッシュ鍵生成部１１０４２とからなる。後述する第１のＰＵＦ回路は１ビットの情報を出力し、情報生成用ＰＵＦ部１１０４は９つの第１のＰＵＦ回路の各１ビットの情報を連結して、誤り訂正部１１０５に入力する。なお、ここでは第１のＰＵＦ回路の数は９としていたが、９に限らず、２以上であれば何でもよい。
【００５７】
（第１のＰＵＦ回路１１０４１Ａ、・・・、１１０４１Ｇ、１１０４１Ｈ、１１０４１Ｉの構成について）
第１のＰＵＦ回路１１０４１Ａ、・・・、１１０４１Ｉはそれぞれ、同じ構成であるため、以下では代表して第１のＰＵＦ回路１１０４１Ａの構成を説明する。
【００５８】
図６は、第１のＰＵＦ回路１１０４１Ａの構成を示す図である。
【００５９】
第１のＰＵＦ回路１１０４１Ａは、図６に示すように、第１リングオシレータ１１０４１Ａ０１、第２リングオシレータ１１０４１Ａ０２、・・・、及び第８リングオシレータ１１０４１Ａ０８と、第１リングオシレータ選択部１１０４１Ａ１１と、第２リングオシレータ選択部１１０４１Ａ１２と、第１周波数カウント部１１０４１Ａ２１と、第２周波数カウント部１１０４１Ａ２２と、出力ビット決定部１１０４１Ａ３０とから構成される。なお、本実施の形態では、第１リングオシレータ１１０４１Ａ０１〜第８リングオシレータ１１０４１Ａ０８がそれぞれ、発振信号を出力する発振部として構成され、第１リングオシレータ選択部１１０４１Ａ１１と第２リングオシレータ選択部１１０４１Ａ１２とがそれぞれ、発振部を選択する選択部として構成され、出力ビット決定部１１０４１Ａ３０が、第１のＰＵＦ回路１１０４１Ａの出力値を決定して出力する決定部として構成されている。
【００６０】
第１リングオシレータ１１０４１Ａ０１〜第８リングオシレータ１１０４１Ａ０８は、同じ構成であり、それぞれトリガ信号に対して出力信号（発振信号）を出力する。
【００６１】
第１リングオシレータ選択部１１０４１Ａ１１は、第１リングオシレータ１１０４１Ａ０１〜１１０４１Ａ０８の中から予め与えられたリングオシレータを選択する。
【００６２】
第２リングオシレータ選択部１１０４１Ａ１２は、第１リングオシレータ１１０４１Ａ０１〜１１０４１Ａ０８の中から、第１リングオシレータ選択部１１０４１Ａ１１と異なり、予め与えられたリングオシレータを選択する。なお、リングオシレータの数を８としていたが、これに限らない。リングオシレータの数は２以上であればよい。
【００６３】
第１周波数カウント部１１０４１Ａ２１は、第１リングオシレータ選択部１１０４１Ａ１１で選択したリングオシレータの周波数を計測する。
【００６４】
第２周波数カウント部１１０４１Ａ２２は、第２リングオシレータ選択部１１０４１Ａ１２で選択したリングオシレータの周波数を計測する。
【００６５】
出力ビット決定部１１０４１Ａ３０は、第１周波数カウント部１１０４１Ａ２１で計測した周波数Ｆ１と第２周波数カウント部１１０４１Ａ２２で計測した周波数Ｆ２を比較し、Ｆ１≧Ｆ２であれば“０”、Ｆ１＜Ｆ２であれば“１”を出力する。なお、ここでは周波数を計測するとしたが、周波数そのものではなく、周波数に近いもの、例えば、予め与えられた一定時間内のリングオシレータの出力信号が予め与えられた振幅と等しくなる回数を計測するとしてもよい。この場合、周波数の代わりにこの回数を比較して、“０”、“１”の出力ビットを決定してもよい。また、上記ではＦ１≧Ｆ２の場合“０”、Ｆ１＜Ｆ２の場合“１”を出力するとしたが、Ｆ１＜Ｆ２の場合“１”、Ｆ１≧Ｆ２の場合“０”を出力するとしてもよい。
【００６６】
（第１のＰＵＦ回路１１０４１Ａ、・・・、１１０４１Ｉの動作について）
以下、構成について説明したときと同様に、代表して第１のＰＵＦ回路１１０４１Ａの動作を説明する。
【００６７】
第１リングオシレータ選択部１１０４１Ａ１１は、予め与えられたリングオシレータを選択する。第２リングオシレータ選択部１１０４１Ａ１２も、予め与えられたリングオシレータを選択する。第１周波数カウント部１１０４１Ａ２１は、第１リングオシレータ選択部１１０４１Ａ１１で選択したリングオシレータの周波数を計測する。第２周波数カウント部１１０４１Ａ２２は、第２リングオシレータ選択部１１０４１Ａ１２で選択したリングオシレータの周波数を計測する。出力ビット決定部１１０４１Ａ３０は、第１周波数カウント部１１０４１Ａ２１及び第２周波数カウント部１１０４１Ａ２２で計測した周波数を用いて、出力ビットを決定する。
【００６８】
（ハッシュ鍵生成部１１０４２について）
ハッシュ鍵生成部１１０４２は、第１のＰＵＦ回路１１０４１Ａ〜１１０４１Ｇのビットを連結し、連結したものをハッシュ鍵とする。
【００６９】
誤り訂正部１１０５は、誤り訂正情報生成部１１０８で生成した誤り訂正情報を用いて、情報生成用ＰＵＦ部１１０４で生成したハッシュ鍵を誤り訂正し、訂正後ハッシュ鍵を生成する。誤り訂正の方法は、何でもよいが、簡単のため、例を示す。
【００７０】
（誤り訂正の方法例）
この例では、３ビットの繰り返し符号を３つ連結したものを使用している。繰り返し符号とは、“０”を“０００”、“１”を“１１１”と符号化し、復号時には３ビットの多数決を取る符号である。例えば、“１０１”であれば１の数が２で多数決を取ると“１”と復号化される。すなわち、符号のハミング重み（１の数）が１以下であれば“０”、２以上であれば“１”と復号化する。
【００７１】
誤り訂正情報を“０１０  ０１０  ００１”とする。情報生成用ＰＵＦ部１１０４で生成したハッシュ鍵を“１０１  ０００  １１１”とする。誤り訂正部１１０５では、誤り訂正情報とハッシュ鍵の排他的論理和（ＸＯＲ）を取る。
【００７２】
“０１０  ０１０  ００１”  ＸＯＲ  “１０１  ０００  １１１”
＝“１１１  ０１０  １１０”
これに対し復号化すると、一つ目の繰り返し符号は“１１１”であるため“１”、二つ目は“０１０”であるため“０”、三つ目は“１１０”であるため“１”と復号化する。
【００７３】
したがって、この例では訂正後ハッシュ鍵は“１０１”となる。
【００７４】
誤り訂正用ＰＵＦ部１１０６は、誤り訂正用ＰＵＦ情報を生成する。
【００７５】
図７は、誤り訂正用ＰＵＦ部１１０６の構成を示す図である。
【００７６】
誤り訂正用ＰＵＦ部１１０６は、図７に示すように、９つの第２のＰＵＦ回路１１０６１Ａ、１１０６１Ｂ、１１０６１Ｃ、１１０６１Ｄ、１１０６１Ｅ、１１０６１Ｆ、１１０６１Ｇ、１１０６１Ｈ、１１０６１Ｉと、第２のＰＵＦ回路のビットを連結して誤り訂正用ＰＵＦ情報を生成する誤り訂正用ＰＵＦ情報生成部１１０６２とからなる。後述する第２のＰＵＦ回路は３ビットの情報を出力し、誤り訂正用ＰＵＦ部１１０６は９つの第２のＰＵＦ回路の各３ビットの情報を連結して、誤り訂正情報生成部１１０８に入力する。なお、ここでは第２のＰＵＦ回路の数は９としていたが、９に限らず、２以上であれば何でもよい。
【００７７】
（第２のＰＵＦ回路１１０６１Ａ、・・・、１１０６１Ｉの構成について）
第２のＰＵＦ回路１１０６１Ａ、・・・、１１０６１Ｉはそれぞれ、同じ構成であるため、以下では代表して第２のＰＵＦ回路１１０６１Ａの構成を示す。
【００７８】
図８は、第２のＰＵＦ回路１１０６１Ａの構成を示す図である。
【００７９】
第２のＰＵＦ回路１１０６１Ａは、図８に示すように、第１リングオシレータ１１０６１Ａ０１、第２リングオシレータ１１０６１Ａ０２、・・・、及び第８リングオシレータ１１０６１Ａ０８と、第１リングオシレータ選択部１１０６１Ａ１１と、第２リングオシレータ選択部１１０６１Ａ１２と、第１周波数カウント部１１０６１Ａ２１と、第２周波数カウント部１１０６１Ａ２２と、出力ビット決定部１１０６１Ａ３０とから構成される。
【００８０】
第１リングオシレータ１１０６１Ａ０１〜第８リングオシレータ１１０６１Ａ０８は、同じ構成であり、それぞれトリガ信号に対して出力信号を出力する。
【００８１】
第１リングオシレータ選択部１１０６１Ａ１１は、第１リングオシレータ１１０６１Ａ０１〜１１０６１Ａ０８の中から予め与えられたリングオシレータを選択する。
【００８２】
第２リングオシレータ選択部１１０６１Ａ１２は、第１リングオシレータ１１０６１Ａ０１〜１１０６１Ａ０８の中から、第１リングオシレータ選択部１１０６１Ａ１１と異なり、予め与えられたリングオシレータを選択する。なお、リングオシレータの数を８としていたが、これに限らない。リングオシレータの数は２以上であればよい。
【００８３】
第１周波数カウント部１１０６１Ａ２１は、第１リングオシレータ選択部１１０６１Ａ１１で選択したリングオシレータの周波数を計測する。
【００８４】
第２周波数カウント部１１０６１Ａ２２は、第２リングオシレータ選択部１１０６１Ａ１２で選択したリングオシレータの周波数を計測する。
【００８５】
出力ビット決定部１１０６１Ａ３０は、第１周波数カウント部１１０６１Ａ２１で計測した周波数Ｆ１と第２周波数カウント部１１０６１Ａ２２で計測した周波数Ｆ２とを比較し、Ｆ１とＦ２の差分によって、“０”から“７”までの値を示す３ビットを１要素として出力する。
【００８６】
図９は、周波数の差分（Ｆ２−Ｆ１）に対する値（３ビット）のマッピングを示す図である。図９では、差分の−３００から３００までを８等分してそれぞれを“０”から“７”までマッピングしている。なお、マッピング方法はこれだけに限らない。範囲をこれ以外、例えば−５００から５００までとしてもよいし、等分ではなく、値ごとに不等分にマッピングしてもよい。
【００８７】
（第２のＰＵＦ回路１１０６１Ａ、・・・、１１０６１Ｉの動作について）
以下、構成について説明したときと同様に、代表して第２のＰＵＦ回路１１０６１Ａの動作を説明する。
【００８８】
第１リングオシレータ選択部１１０６１Ａ１１は、予め与えられたリングオシレータを選択する。第２リングオシレータ選択部１１０６１Ａ１２も、予め与えられたリングオシレータを選択する。第１周波数カウント部１１０６１Ａ２１は、第１リングオシレータ選択部１１０６１Ａ１１で選択したリングオシレータの周波数を計測する。第２周波数カウント部１１０６１Ａ２２は、第２リングオシレータ選択部１１０６１Ａ１２で選択したリングオシレータの周波数を計測する。出力ビット決定部１１０６１Ａ３０は、第１周波数カウント部１１０６１Ａ２１及び第２周波数カウント部１１０６１Ａ２２で計測した周波数を用いて、出力である３ビットを決定する。つまり、出力ビット決定部１１０６１Ａ３０は、第１周波数カウント部１１０６１Ａ２１と、第２周波数カウント部１１０６１Ａ２２で計測した周波数との差分に応じた３ビットの値を、図９に示すマッピングを用いて決定する。例えば、出力ビット決定部１１０６１Ａ３０は、差分が０以上７５未満であれば“４”を決定し、差分が７５以上１５０未満であれば“５”を決定する。
【００８９】
（誤り訂正用ＰＵＦ情報生成部１１０６２について）
誤り訂正用ＰＵＦ情報生成部１１０６２は、第２のＰＵＦ回路１１０６１Ａ〜１１０６１Ｉから出力される各要素を連結し、連結したものを誤り訂正用ＰＵＦ情報とする。例えば、第２のＰＵＦ回路１１０６１Ａ〜１１０６１Ｉから出力される各要素が、“２”、“６”、“５”、“１”、“５”、“７”、“２”、“３”、“７”であれば、誤り訂正用ＰＵＦ情報は“２６５  １５７  ２３７”である。
【００９０】
誤り訂正部分情報格納部１１０７は、誤り訂正情報の部分情報である誤り訂正部分情報を格納する。誤り訂正部分情報は誤り訂正情報生成装置１２００が生成して格納する。
【００９１】
誤り訂正情報生成部１１０８は、誤り訂正用ＰＵＦ部１１０６が生成する誤り訂正用ＰＵＦ情報と、誤り訂正部分情報格納部１１０７が格納している誤り訂正部分情報とを用いて、誤り訂正情報を生成する。誤り訂正情報の生成方法の例を以下に示す。この例では、誤り訂正用ＰＵＦ情報を、予め与えられた方法により符号化し、その結果生成された符号化後誤り訂正用ＰＵＦ情報と誤り訂正部分情報の排他的論理和を取っているが、誤り訂正情報の生成方法は、この例に限らない。排他的論理和の部分をガロア体における乗算に変えてもよい。また、排他的論理和の代わりに、符号化後誤り訂正用ＰＵＦ情報と誤り訂正部分情報を整数値と見立てて、加算するとしてもよい。
【００９２】
（誤り訂正情報生成の例）
誤り訂正用ＰＵＦ部１１０６が出力した誤り訂正用ＰＵＦ情報が上記のように、“２６５  １５７  ２３７”であるとする。これに対し、この要素の値が３以下の場合“０”、４以上の場合“１”と１ビットの値に符号化する。符号化した結果、“０１１  ０１１  ００１”となり、これを符号化後誤り訂正用ＰＵＦ情報とする。これと誤り訂正部分情報格納部１１０７に格納されている誤り訂正部分情報との差分を取る。誤り訂正部分情報を“００１  ００１  ０００”とするとき、誤り訂正情報は、
“０１１  ０１１  ００１”  ＸＯＲ  “００１  ００１  ０００”
＝“０１０  ０１０  ００１”
である。
【００９３】
なお、この符号化はこれだけに限らず、例えば、４以上を“０”、３以下を“１”と符号化してもよい。
【００９４】
＜誤り訂正情報生成装置１２００の構成＞
図１０は、誤り訂正情報生成装置１２００の構成を示す図である。誤り訂正情報生成装置１２００は、情報セキュリティ装置１１００内の第１のＰＵＦ回路及び第２のＰＵＦ回路の出力値を計測するＰＵＦ回路計測部１２０１と、第１のＰＵＦ回路及び第２のＰＵＦ回路の周囲の環境を変化させる環境変化部１２０２と、環境変化によるＰＵＦ回路計測部１２０１で計測した出力値の分布を解析する環境変化解析部１２０３と、環境変化解析部１２０３の解析結果により誤り訂正部分情報を生成する誤り訂正部分情報生成部１２０４と、誤り訂正部分情報を情報セキュリティ装置１１００内の誤り訂正部分情報格納部１１０７に格納する誤り訂正部分情報設定部１２０５とを備える。なお、本実施の形態では、ＰＵＦ回路計測部１２０１が第１の計測手段および第２の計測手段として構成され、誤り訂正部分情報生成部１２０４がデータ生成手段として構成され、誤り訂正部分情報設定部１２０５が格納処理手段として構成されている。また、本実施の形態における誤り訂正部分情報生成部１２０４は、誤り訂正情報を生成する第１の生成手段と、その誤り訂正情報を用いて第１の訂正用データたる誤り訂正部分情報を生成する第２の生成手段とを備えている。
【００９５】
ＰＵＦ回路計測部１２０１は、第１のＰＵＦ回路１１０４１Ａ〜１１０４１Ｉと、第２のＰＵＦ回路１１０６１Ａ〜１１０６１Ｉの出力値を計測する。
【００９６】
環境変化部１２０２は、第１のＰＵＦ回路及び第２のＰＵＦ回路の周囲の環境を変化させる。具体的には、例えば、周囲の温度を変化させる。
【００９７】
環境変化解析部１２０３は、環境変化によるＰＵＦ回路計測部１２０１で計測した出力値の分布を解析する。すなわち、温度ごとの第１のＰＵＦ回路及び第２のＰＵＦ回路の出力値の分布を求める。
【００９８】
誤り訂正部分情報生成部１２０４は、誤り訂正部分情報を生成する。
【００９９】
（誤り訂正部分情報生成部１２０４の処理）
誤り訂正部分情報生成部１２０４はまず、環境変化解析部１２０３で解析した第１のＰＵＦ回路の出力値の分布に基づいて、誤り訂正情報を求める。
【０１００】
図１１は、第１のＰＵＦ回路及び第２のＰＵＦ回路の出力値の分布例を示す図である。具体的な例としては、第１のＰＵＦ回路の出力値の分布で最も高確率で出現した出力値に対し、誤り訂正符号を用いて符号化をしたものとその出力値との差分を誤り訂正情報とする。上記誤り訂正の方法例や誤り訂正情報生成の例と合わせると、最も高確率で出現した出力値は、９つの第１のＰＵＦ回路１１０４１Ａ〜１１０４１Ｉの出力値を並べると“１０１  ０００  １１０”である。ここで、例として、３ビットの繰り返し符号を用いるため、最も高確率で出現する出力値も、３ビットごとに区切って判断する。図１１では、一つ目の３ビットは０℃のとき“１００”、１０℃のとき“１０１”、２０℃のとき“１０１”であるため、最も高確率で出現した出力値は“１０１”である。同様に、二つ目は“０００”、三つ目は“１１０”となる。３ビットの繰り返し符号を３つ並べたものを使用してこの出力値を符号化すると、“１１１  ０００  １１１”になる。したがって、出力値と符号化したものの差分は、
“１０１  ０００  １１０”  ＸＯＲ  “１１１  ０００  １１１”
＝“０１０  ０００  ００１”
であり、これを誤り訂正情報とする。
【０１０１】
次に、誤り訂正部分情報生成部１２０４は、環境変化解析部１２０３で解析した第２のＰＵＦ回路の出力値の分布に基づいて、誤り訂正用ＰＵＦ情報を求める。図１１は、出力値の分布例を示している。一つの第２のＰＵＦ回路の出力値は３ビットの要素であるが、図１１では、第２のＰＵＦ回路１１０６１Ａ〜１１０６１Ｉの出力値を左から順番に並べている。誤り訂正部分情報の生成方法の具体的な例としては、第２のＰＵＦ回路の出力値の分布で各要素で最も高確率で出現した出力値に対し、予め定めた方法で符号化した符号化後誤り訂正用ＰＵＦ情報と誤り訂正情報との差分を誤り訂正部分情報とする。図１１の例では、一つ目の要素は０℃のとき“３”、１０℃のとき“２”、２０℃のとき“２”であるため、最も高確率で出現した出力値は“２”である。これに対し、誤り訂正情報生成の例と同じ符号化方法を使用すると、この要素の値が４以下の場合“０”、５以上の場合“１”と１ビットの値に符号化する。図１１の例では、一つ目の要素は“２”であるため、符号化後の値は“０”となる。同様に二つ目以降も符号化すると、符号化後誤り訂正用ＰＵＦ情報は“０１１  ０１１  ００１”となる。符号化後誤り訂正用ＰＵＦ情報と、誤り訂正情報との差分を取ると、
“０１０  ０００  ００１”  ＸＯＲ  “０１１  ０１１  ００１”
＝“００１  ０１１  ０００”
となり、“００１  ０１１  ０００”を誤り訂正部分情報とする。
【０１０２】
誤り訂正部分情報設定部１２０５は、誤り訂正部分情報生成部１２０４で生成した誤り訂正部分情報を、情報セキュリティ装置１１００内の誤り訂正部分情報格納部１１０７に格納する。
【０１０３】
＜情報セキュリティシステム１０００の動作＞
図１２Ａは、情報セキュリティシステム１０００の誤り訂正情報生成装置１２００が誤り訂正部分情報を設定するときの動作を示すフローチャートである。
【０１０４】
誤り訂正情報生成装置１２００は、誤り訂正部分情報を設定する時には、以下のように動作する。なお、誤り訂正部分情報を生成して情報セキュリティ装置１１００内の誤り訂正部分情報格納部１１０７に設定する処理は、情報セキュリティ装置１１００の製造時に実施される。
【０１０５】
ステップＳ１０１：環境変化部１２０２は、第１のＰＵＦ回路及び第２のＰＵＦ回路の周囲の環境を変化させる。さらに環境変化部１２０２は、変化させた環境の情報を、環境変化解析部１２０３に入力する。
【０１０６】
ステップＳ１０２：ＰＵＦ回路計測部１２０１は、第１のＰＵＦ回路及び第２のＰＵＦ回路の出力値を計測し、環境変化解析部１２０３に入力する。
【０１０７】
ステップＳ１０３：環境変化解析部１２０３は、環境の情報と第１のＰＵＦ回路及び第２のＰＵＦ回路の出力値から分布を得る。
【０１０８】
ステップＳ１０４：誤り訂正部分情報生成部１２０４は、出力値の分布より、誤り訂正部分情報を生成する。
【０１０９】
ステップＳ１０５：誤り訂正部分情報設定部１２０５は、誤り訂正部分情報を、情報セキュリティ装置１１００内の誤り訂正部分情報格納部１１０７に格納する。
【０１１０】
図１２Ｂは、情報セキュリティシステム１０００の情報セキュリティ装置１１００が鍵付ハッシュ値を計算するときの動作を示すフローチャートである。
【０１１１】
情報セキュリティ装置１１００は、鍵付ハッシュ値を計算する時には、以下のように動作する。なお、情報セキュリティ装置１１００が、入力された入力データに対し、鍵付ハッシュ値を生成し出力する処理は、ユーザからの入力やアプリケーションプログラムからのトリガにより行われる。
【０１１２】
ステップＳ２０１：入力部１１０１は、外部より入力された入力データを受け付け、ハッシュ生成部１１０３に入力する。さらに、入力部１１０１は、ＰＵＦ回路へのトリガ信号を情報生成用ＰＵＦ部１１０４と誤り訂正用ＰＵＦ部１１０６に入力する。
【０１１３】
ステップＳ２０２：情報生成用ＰＵＦ部１１０４は、ハッシュ鍵を生成し、誤り訂正部１１０５に入力する。
【０１１４】
ステップＳ２０３：誤り訂正用ＰＵＦ部１１０６は、誤り訂正用ＰＵＦ情報を生成し、誤り訂正情報生成部１１０８に入力する。
【０１１５】
ステップＳ２０４：誤り訂正情報生成部１１０８は、誤り訂正用ＰＵＦ情報と誤り訂正部分情報格納部１１０７に格納されている誤り訂正部分情報とを用いて、誤り訂正情報を生成し、誤り訂正部１１０５に入力する。
【０１１６】
ステップＳ２０５：誤り訂正部１１０５は、誤り訂正情報を用いて、ハッシュ鍵を誤り訂正し、訂正後ハッシュ鍵を生成し、ハッシュ生成部１１０３に入力する。
【０１１７】
ステップＳ２０６：ハッシュ生成部１１０３は、訂正後ハッシュ鍵を鍵として使用して、入力データの鍵付ハッシュ値を生成し、出力部１１０２に入力する。
【０１１８】
ステップＳ２０７：出力部１１０２は、鍵付ハッシュ値を外部へ出力する。
【０１１９】
このように本実施の形態では、情報セキュリティ装置１１００は、誤り訂正情報を直接メモリに格納せず、誤り訂正部分情報を格納している。そのため、誤り訂正情報に攻撃者が直接アクセスできないため、ＰＵＦの秘密、すなわち、ハッシュ鍵を攻撃者が得ることが困難であり、安全である。また、誤り訂正用ＰＵＦ部１１０６と誤り訂正情報生成部１１０８を設けることで、誤り訂正部分情報から誤り訂正情報を復元でき、誤り訂正が正しく働く。
【０１２０】
（実施の形態２）
実施の形態１における情報生成用ＰＵＦ部１１０４のハッシュ鍵の誤りは、環境変化によって生じることがあるが、ＰＵＦ回路の周波数特性の経年変化によっても生じることがある。本実施の形態では、実施の形態１における情報セキュリティシステム１０００の構成に対して、さらに、ＰＵＦ回路の経年的な出力変動を抑えることにより、情報生成用ＰＵＦ部１１０４から出力されるハッシュ鍵の誤りを軽減することを特徴とする。
【０１２１】
以下、本発明の実施の形態２について、図面を参照しながら説明する。
【０１２２】
（ＰＵＦ回路１の構成）
図１３は、本発明の実施の形態２におけるＰＵＦ回路１の構成の一例を示したブロック図である。ＰＵＦ回路１は、実施の形態１における第１のＰＵＦ回路１１０４１Ａ〜１１０４１Ｉのそれぞれに相当し、第１〜第８リングオシレータ１０１〜１０８と、第１〜第２リングオシレータ選択部１１１〜１１２と、第１〜第２周波数カウント部１２１〜１２２と、出力ビット決定部１３と、入力値保管部１４と、入力値設定部１５と、入力値再設定判定部１６と、閾値保管部１７と、出力ビット制御部１８と、出力ビット保管部１９とからなる。
【０１２３】
なお、本実施の形態では、出力ビット保管部１９が、秘密データたるハッシュ鍵の一部を記憶するための秘密データ用記憶部として構成され、出力ビット制御部１８が、ハッシュ鍵の一部を出力ビット保管部１９に格納する格納処理部として構成されているとともに、出力ビット保管部１９に格納されているハッシュ鍵の一部を出力する出力制御部として構成されている。以下、各部の詳細について説明する。
【０１２４】
（１）第１〜第８リングオシレータ１０１〜１０８
第１〜第８リングオシレータ１０１〜１０８はそれぞれ、奇数個の否定回路をリング状に接続した構成を基本とする発振回路であり、トリガ信号の入力により所定の発振周波数を有する発振信号（出力信号）を出力する。これら８個のリングオシレータの構成及び動作は全て同じであるので、以下では、それらをリングオシレータ１００として、その構成及び動作を説明する。
【０１２５】
図１４は、リングオシレータ１００の構成の一例を示すブロック図である。リングオシレータ１００は、７段のリングオシレータであり、ＮＡＮＤ回路２１と、７個の否定回路２２〜２８からなる。なお、本実施の形態では、７段のリングオシレータとしているが、これは奇数段であれば何段のリングオシレータであってもよい。
【０１２６】
リングオシレータ１００にトリガ信号が入力されていない場合、即ち、トリガ信号として「０」が入力されている場合、ＮＡＮＤ回路２１の出力は「１」となる。よって、否定回路２２の出力は「０」となり、否定回路２３の出力は「１」となり、・・・、否定回路２７の出力（即ちＮＡＮＤ回路２１の１つの入力）は「１」となるが、ＮＡＮＤ回路２１のもう１つの入力は「０」であるから、ＮＡＮＤ回路２１の出力は「１」のままである。即ち、リングオシレータ１００は、上記の定常状態で安定する。このとき、否定回路２８の出力、即ちリングオシレータ１００の出力信号は「０」で安定する。まとめると、リングオシレータ１００へのトリガ信号が「０」の場合にはリングオシレータ１００は発振せず、その出力信号は「０」で安定する。
【０１２７】
一方、リングオシレータ１００にトリガ信号が入力された場合、即ち、トリガ信号として「１」が入力された場合、ＮＡＮＤ回路２１の出力は「１」となる。よって、否定回路２２の出力は「０」となり、否定回路２３の出力は「１」となり、・・・、否定回路２７の出力は「１」となる。このとき、ＮＡＮＤ回路２１の２つの入力はどちらも「１」になるため、ＮＡＮＤ回路２１の出力は、「１」から「０」に遷移する。この遷移に伴い、否定回路２２の出力は「１」となり、否定回路２３の出力は「０」となり、・・・、否定回路２７の出力は「０」となる。このとき、ＮＡＮＤ回路２１の一方の入力が「０」になるため、ＮＡＮＤ回路２１の出力は、再び「０」から「１」に遷移する。上記のように、トリガ信号「１」が入力されると、リングオシレータ１００の内部状態は安定せずに、ＮＡＮＤ回路２１の出力は「１」と「０」の間で遷移を繰り返し、発振する。このとき、リングオシレータ１００は、所定の発振周波数を有する発振信号を出力する。前記発振周波数は、リングオシレータの段数で決まり、理論的には段数と回路構成が同じリングオシレータであれば、同じになることになる。しかし、実際には、同一の構成を持つリングオシレータであっても、リングオシレータを構成する回路素子の周波数特性のバラつきが生じるので、発振周波数にも若干のバラつきがある。なお、上記発振状態において、トリガ信号が「０」に変化すると、ＮＡＮＤ回路２１の出力は「１」で安定するので、発振動作は停止し、出力信号は「０」になる。
【０１２８】
（２）第１〜第２リングオシレータ選択部１１１〜１１２
第１〜第２リングオシレータ選択部１１１〜１１２は、それぞれ、入力値保管部１４から入力される３ビットの入力値データに基づいて、前記第１〜第８リングオシレータ１０１〜１０８から１個を選択し、選択したリングオシレータから出力される発振信号を取得して第１周波数カウント部１２１または第２周波数カウント部１２２に入力する。つまり、第１リングオシレータ選択部１１１は、選択したリングオシレータから出力される発振信号を取得して第１周波数カウント部１２１に入力し、第２リングオシレータ選択部１１２は、選択したリングオシレータから出力される発振信号を取得して第２周波数カウント部１２２に入力する。
【０１２９】
３ビットの入力値データと、選択するリングオシレータとの対応関係は、任意の入力値データが、ある１つのリングオシレータに対応していれば、どのようなものであっても良いが、本実施の形態では、以下の通りとする。第１〜第２リングオシレータ選択部１１１〜１１２は、それぞれ、入力値データ「０００」（２進数）に対しては、第１リングオシレータ１０１を選択する。入力値データ「００１」（２進数）に対しては、第２リングオシレータ１０２を選択する。入力値データ「０１０」（２進数）に対しては、第３リングオシレータ１０３を選択する。・・・。入力データ「１１１」（２進数）に対しては、第８リングオシレータ１０８を選択する。なお、第１リングオシレータ選択部１１１および第２リングオシレータ選択部１１２は、それぞれ、互いに異なる入力値データを取得して、互いに異なるリングオシレータを選択する。
【０１３０】
（３）第１〜第２周波数カウント部１２１〜１２２
第１〜第２周波数カウント部１２１〜１２２は、それぞれ、第１リングオシレータ選択部１１１または第２リングオシレータ選択部１１２から入力される発振信号の発振周波数を計測して、計測結果を出力ビット決定部１３に入力する。つまり、第１周波数カウント部１２１は、第１リングオシレータ選択部１１１から入力される発振信号の発振周波数を計測し、第２周波数カウント部１２２は、第２リングオシレータ選択部１１２から入力される発振信号の発振周波数を計測する。
【０１３１】
（４）出力ビット決定部１３
出力ビット決定部１３は、第１周波数カウント部１２１および第２周波数カウント部１２２からそれぞれ入力される発振周波数の大小関係を比較し、その比較結果に基づいて１ビットの出力ビットの値を決定して、その決定された値を示す出力ビットを出力ビット制御部１８に入力する。
【０１３２】
比較結果と出力ビットの値との対応関係はどのようなものでもよいか、本実施の形態では、（第１周波数カウント部１２１の計測周波数）＜（第２周波数カウント部１２２の計測周波数）であれば、「１」と決定し、そうでなければ「０」と決定するものとする。
【０１３３】
（５）出力ビット制御部１８
出力ビット制御部１８は、ＰＵＦ回路１に対して外部からトリガ信号が入力されて出力ビットの出力要求があった場合には、まず、出力ビット保管部１９に出力ビットが保管されているか否かを確認する。出力ビットが保管されている場合には、保管されている出力ビットをＰＵＦ回路１から出力して処理を終了する。出力ビット保管部１９に出力ビットが保管されていない場合には、出力ビット決定部１３から、出力ビットが入力された後に、以下の処理を行う。
【０１３４】
出力ビット制御部１８は、まず、出力ビット決定部１３から入力される出力ビットを一時保管し、入力値設定部１５から、出力ビットの退避要求信号が入力された場合には、一時保管している出力ビットを、ＰＵＦ回路１の出力ビットとして出力するとともに、出力ビット保管部１９に出力する。一方、入力値設定部１５から、出力ビットの退避要求信号が入力されない場合には、一時保管している出力ビットを、ＰＵＦ回路１の出力ビットとして出力する。
【０１３５】
（６）入力値保管部１４
入力値保管部１４は、第１リングオシレータ選択部１１１及び第２リングオシレータ選択部１１２に入力する３ビットの入力値データを２個保管する。以降では、第１リングオシレータ選択部１１１に入力する３ビットの入力値データを第１入力値データとし、第２リングオシレータ選択部１１２に入力する３ビットの入力値データを第２入力値データとする。
【０１３６】
（７）入力値設定部１５
入力値設定部１５は、初期化時、または入力値再設定判定部１６より入力値再設定要求信号が入力されたときに動作し、閾値保管部１７に保管されている入力設定用閾値以上の周波数差を有する２個のリングオシレータが選択されるように、第１リングオシレータ選択部１１１及び第２リングオシレータ選択部１１２への入力値データ（それぞれ３ビット）を設定する。
【０１３７】
具体的に、入力値設定部１５は、初期化時には、ＰＵＦ回路１の外部から出力設定値を取得し、その出力設定値を示す出力ビットがＰＵＦ回路１から出力されるように、第１リングオシレータ選択部１１１及び第２リングオシレータ選択部１１２への入力値データを設定する。このとき、出力設定値が「１」であれば、入力値設定部１５は、（第１周波数カウント部１２１の計測周波数）＜（第２周波数カウント部１２２の計測周波数）であって且つ、それらの周波数の差の絶対値が入力設定用閾値以上となるような２つのリングオシレータが選択されるように、２つの入力値データを設定する。また、出力設定値が「０」であれば、入力値設定部１５は、（第１周波数カウント部１２１の計測周波数）≧（第２周波数カウント部１２２の計測周波数）であって且つ、それらの周波数の差の絶対値が入力設定用閾値以上となるような２つのリングオシレータが選択されるように、２つの入力値データを設定する。
【０１３８】
また、入力値設定部１５は、入力値再設定要求信号を取得したときには、既に設定されている、第１周波数カウント部１２１の計測周波数と、第２周波数カウント部１２２の計測周波数との大小関係を維持し、それらの周波数の差の絶対値が入力設定用閾値以上となるような２つのリングオシレータが改めて選択されるように、２つの入力値データを再設定する。
【０１３９】
また、前記入力設定用閾値以上の周波数差を有する２個のリングオシレータを選択するような入力値データの決定に失敗した場合（即ち、周波数差が前記閾値以上になるリングオシレータのペアが見つからなかった場合）には、入力値設定部１５は、出力ビットの退避要求信号を出力ビット制御部１８に入力する。
【０１４０】
なお、本実施の形態では、第１リングオシレータ選択部１１１、第２リングオシレータ選択部１１２、入力値保管部１４および入力値設定部１５が、８個のリングオシレータから２個のリングオシレータを選択する選択部として構成されている。また、入力値設定部１５が、周波数差が第１の閾値たる入力設定用閾値以上となる２個のリングオシレータを検索する検索部として構成され、入力値保管部１４が、検索部によって検索された２個のリングオシレータを示す選択パラメータたる入力値データを保持するパラメータ保持部として構成されている。さらに、第１リングオシレータ選択部１１１および第２リングオシレータ選択部１１２がそれぞれ、入力値データの示すリングオシレータを選択すべきリングオシレータとして決定して選択する選択決定部として構成されている。
【０１４１】
（８）入力値再設定判定部１６
入力値再設定判定部１６は、第１周波数カウント部１２１および第２周波数カウント部１２２から出力される発振周波数を観測し、その周波数差の絶対値が、閾値保管部１７に保管されている入力値再設定判定用閾値よりも小さくなった場合には、入力値設定部１５に入力値再設定要求信号を入力する。
【０１４２】
なお、本実施の形態では、入力値再設定判定部１６が、周波数差が第２の閾値たる入力値再設定判定用閾値未満であるか否かを判別する差分判別部と、上述の選択部による選択を再度実行させる再設定部として構成されている。
【０１４３】
（９）閾値保管部１７
閾値保管部１７は、入力設定用閾値及び入力値再設定判定用閾値を保管する。これらの値は正の値である。本実施の形態では、これらの値は、ＰＵＦ回路１の製造時に書き込むものとするが、回路製造後に外部から書き込むようにしても良いし、書き込んだ後でも、外部から書き換えることができるようにしても良い。また、何らかの認証を行った上で、外部からの書き込みを許可するようにしても良い。なお、本実施の形態では、閾値保管部１７が、第１の閾値たる入力設定用閾値と、第２の閾値たる入力値再設定判定用閾値とを格納している閾値格納部として構成されている。
【０１４４】
以下、ＰＵＦ回路１の動作を説明する。ＰＵＦ回路１の動作は、「入力値データの設定」、「出力ビットの算出」および「入力値データの再設定」の３種類に大別され、以下、それぞれについて説明する。
【０１４５】
（入力値データの設定）
図１５は、ＰＵＦ回路１が入力値データを設定するときの動作を示すフローチャートである。
【０１４６】
「入力値データの設定」は、ＰＵＦ回路１が製造された後の初期化処理として実行する処理である。「入力値データの設定」処理は、以下のようにして行う。
【０１４７】
ステップＳ３０１：入力値設定部１５は、ＰＵＦ回路１の外部から入力される１ビットの値を出力設定値として受け付ける。また、閾値保管部１７に保管されている入力設定用閾値を読み込む。
【０１４８】
ステップＳ３０２：入力値設定部１５は、入力値データの候補を選択して、その候補における第１周波数カウント部１２１および第２周波数カウント部１２２による発振周波数の計測を実行させる。即ち、入力値設定部１５は、第１入力値データの候補としてＮ１＝０００（２進数）〜１１１（２進数）の中から何れか１つを選択し、第２入力値データの候補としてＮ２＝０００（２進数）〜１１１（２進数）の中から何れか１つを選択する。そして、入力値設定部１５は、（第１入力値データの候補，第２入力値データの候補）＝（Ｎ１，Ｎ２）の組み合わせによって選択されるリングオシレータを用い、第１周波数カウント部１２１および第２周波数カウント部１２２による発振周波数の計測を実行させる。具体的には、ＰＵＦ回路１は以下の動作を実行する。
【０１４９】
ステップＳ３０２ａ：入力値設定部１５は、第１入力値データ及び第２入力値データの候補として（Ｎ１，Ｎ２）を生成し、第１リングオシレータ選択部１１１にＮ１を、第２リングオシレータ選択部１１２にＮ２を、それぞれ入力する。
【０１５０】
ステップＳ３０２ｂ：第１リングオシレータ選択部１１１は、前記Ｎ１に基づいて、前に述べた規則に従い、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つのリングオシレータを選択する。第２リングオシレータ選択部１１２は、前記Ｎ２に基づいて、前に述べた規則に従い、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つのリングオシレータを選択する。
【０１５１】
ステップＳ３０２ｃ：ここで、ステップＳ３０２ｂで選択された２個のリングオシレータにトリガ信号が入力されると、選択された２つのリングオシレータは発振して、発振信号を出力する。このとき、第１リングオシレータ選択部１１１により選択されたリングオシレータは、同第１リングオシレータ選択部１１１を介して第１周波数カウント部１２１に発振信号を入力する。第２リングオシレータ選択部１１２により選択されたリングオシレータは、同第２リングオシレータ選択部１１２を介して第２周波数カウント部１２２に発振信号を入力する。
【０１５２】
ステップＳ３０２ｄ：第１周波数カウント部１２１及び第２周波数カウント部１２２は、それぞれ入力された発振信号から発振周波数を計測する。ここで、第１周波数カウント部１２１は、発振周波数Ｆ１を計測し、第２周波数カウント部１２２は、発振周波数Ｆ２を計測する。そして、計測したＦ１及びＦ２を、入力値設定部１５に入力する。
【０１５３】
ステップＳ３０３：入力値設定部１５は、上述のように計測された発振周波数Ｆ１，Ｆ２に基づいて選択された入力値データの候補が、設定されるべき入力値データとして相応しいか否か、つまり選択された候補が失敗であったか否かを判別する。具体的には、入力値設定部１５は、入力されたＦ１及びＦ２から、周波数の差分Ｄ＝Ｆ２−Ｆ１を計算し、差分ＤとステップＳ３０１で受け付けた出力設定値との間に矛盾がなく、かつ、差分Ｄの絶対値が入力設定用閾値以上であれば、選択された候補が失敗でないと判別する。この場合、後述するステップＳ３０４で説明するように、入力値設定部１５は、そのときの（Ｎ１，Ｎ２）について、Ｎ１を第１入力値データ、Ｎ２を第２入力値データとして、入力値保管部１４に入力し、出力設定値を消去する。ここで、「差分Ｄと出力設定値との間に矛盾がない」とは、出力設定値が０の場合には差分Ｄが負の値または０であることを意味し、出力設定値が１の場合には差分Ｄが正の値であることを意味する。上記の条件を満たさない場合には、入力値設定部１５は、選択された候補が失敗と判別する。この場合、後述するステップＳ３０５で説明するように、別の候補（Ｎ１，Ｎ２）を生成して、ステップＳ３０２ａ〜Ｓ３０２ｄを繰り返し実行する。なお、全ての（Ｎ１，Ｎ２）の組み合わせについて、上記の条件を満たすような（Ｎ１，Ｎ２）が見つからなかった場合には、後述するステップＳ３０６で説明するように、入力値設定部１５は、出力設定値と、上述の退避要求信号に相当する入力値設定失敗信号とを出力ビット制御部１８に入力した後、出力設定値を消去する。
【０１５４】
ステップＳ３０４：入力値保管部１４は、入力値設定部１５から入力されるＮ１、Ｎ２、すなわち失敗でないと判別された第１入力値データの候補Ｎ１と第２入力値データの候補Ｎ２とを、それぞれ設定されるべき第１入力値データおよび第２入力値データとして保管し、「入力値データの設定」処理を終了する。
【０１５５】
ステップＳ３０５：入力値設定部１５は、選択された第１入力値データの候補Ｎ１および第２入力値データの候補Ｎ２がステップＳ３０３で失敗と判別されると、その候補Ｎ１，Ｎ２以外の他の候補があるか否かを判別する。ここで、入力値設定部１５は、他の候補があると判別すると、ステップＳ３０２からの処理を繰り返し、他の候補がないと判別すると、ステップＳ３０６の処理を実行する。
【０１５６】
ステップＳ３０６：入力値設定部１５は、上述のように他の候補がないと判別すると、出力ビット制御部１８に対して、出力設定値と入力値設定失敗信号とを出力する。出力ビット制御部１８は、入力値設定失敗信号と出力設定値を受け付けて、出力設定値（出力設定値を示す出力ビット）を、出力ビット保管部１９に入力する。出力ビット保管部１９は、出力設定値を保管し、「入力値データの設定」処理を終了する。
【０１５７】
（出力ビットの算出）
図１６は、ＰＵＦ回路１が出力ビットを算出するときの動作を示すフローチャートである。
【０１５８】
「出力ビットの算出」処理は、ＰＵＦ回路１の外部からトリガ信号が入力されたときに実行される。この処理により、ＰＵＦ回路１は、内部にセキュアに保持する１ビットの出力ビットをＰＵＦ回路１の外部に出力する。具体的には、ＰＵＦ回路１へのトリガ信号が入力されると、以下の一連の動作を行う。
【０１５９】
ステップＳ４０１：出力ビット制御部１８は、出力ビット保管部１９に出力設定値（出力設定値を示す出力ビット）が保管されているかどうかを確認して、保管されている場合には、その出力設定値（１ビット）をＰＵＦ回路１からの出力ビットとして出力して、「出力ビットの算出」処理を終了する。出力設定値が保管されていない場合には、ステップＳ４０２に進む。
【０１６０】
ステップＳ４０２：入力値保管部１４は、内部に保管する第１入力値データを第１リングオシレータ選択部１１１に、第２入力値データを第２リングオシレータ選択部１１２にそれぞれ入力する。
【０１６１】
ステップＳ４０３：第１リングオシレータ選択部１１１は、第１入力値データに基づいて、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つを選択する。また、第２リングオシレータ選択部１１２は、第２入力値データに基づいて、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つを選択する。
【０１６２】
ステップＳ４０４：ステップＳ４０３において選択された２個のリングオシレータにそれぞれトリガ信号が入力され、発振動作が行われて、発振信号が出力される。このとき、出力された発振信号は、それぞれ、第１リングオシレータ選択部１１１及び第２リングオシレータ選択部１１２を介して、第１周波数カウント部１２１及び第２周波数カウント部１２２に入力される。
【０１６３】
ステップＳ４０５：第１周波数カウント部１２１および第２周波数カウント部１２２は、それぞれ入力される発振信号の発振周波数Ｆ１、Ｆ２を計測し、出力ビット決定部１３及び入力値再設定判定部１６に入力する。
【０１６４】
ステップＳ４０６：出力ビット決定部１３は、入力される発振周波数Ｆ１、Ｆ２の大小関係を比較して、比較結果に基づいて、既に述べた判定規則に従い、１ビットの出力ビットを決定して、出力ビット制御部１８に入力する。出力ビット制御部１８は、入力された出力ビットを一時保管する。
【０１６５】
ステップＳ４０７：入力値再設定判定部１６は、閾値保管部１７に保管されている入力値再設定判定用閾値を読み出す。次に、入力値再設定判定部１６は、入力される発振周波数Ｆ１、Ｆ２から、周波数差分Ｄ＝Ｆ２−Ｆ１を計算し、差分Ｄの絶対値が、前記入力値再設定判定用閾値以上であるか確認する。もしも、前記閾値未満であれば、入力値再設定判定部１６は、入力値設定部１５に、入力値再設定要求信号を入力する。一方、前記閾値以上であれば、入力値再設定判定部１６は何も行わない。
【０１６６】
ステップＳ４０８：入力値設定部１５は、入力値再設定要求信号を受け付けると、後で説明する入力値データの再設定処理を実行する。この処理の結果、「入力値保管部１４に保管する第１入力値データＮ１、第２入力値データＮ２を更新する」か、「入力値再設定失敗信号を出力ビット制御部１８に送信する」か、のいずれかが行われる。
【０１６７】
ステップＳ４０９：出力ビット制御部１８は、出力ビット決定部１３から入力されて一時保管されている１ビットの出力ビットをＰＵＦ回路１の出力ビットとして出力する。入力値設定部１５から、入力値再設定失敗信号を受け取っていない場合には、出力ビット制御部１８は、そのまま出力ビットの算出を終了する。入力値再設定失敗信号を受け取った場合には、出力ビット制御部１８は、更に前記１ビットの出力ビットを、出力設定値として出力ビット保管部１９に入力する。そして、出力ビット保管部１９は、前記出力設定値を内部に保管して、「出力ビットの算出」処理を終了する。
【０１６８】
（入力値データの再設定）
図１７は、ＰＵＦ回路１が入力値データを再設定するときの動作を示すフローチャートである。
【０１６９】
「入力値データの再設定」処理は、上述の「出力ビットの算出」処理において、入力値設定部１５が入力値再設定要求信号を受け付けた場合に実行するサブルーチン処理である。「入力値データの再設定」処理は、以下のようにして行う。
【０１７０】
ステップＳ５０１：入力値設定部１５は、入力設定用閾値と出力設定値を特定する。つまり、入力値設定部１５は、閾値保管部１７に保管する入力設定用閾値を読み込む。さらに、入力値設定部１５は、「出力ビットの算出」のステップＳ４０５において、第１周波数カウント部１２１から入力された発振周波数Ｆ１と、第２周波数カウント部１２２から入力された発振周波数Ｆ２との大小関係を比較し、Ｆ２＞Ｆ１であれば、出力設定値を「１」とし、そうでなければ、出力設定値を「０」とする。
【０１７１】
ステップＳ５０２：入力値設定部１５は、入力値データの候補を選択して、その候補における第１周波数カウント部１２１および第２周波数カウント部１２２による発振周波数の計測を実行させる。即ち、入力値設定部１５は、第１入力値データの候補としてＮ１＝０００（２進数）〜１１１（２進数）の中から何れか１つを選択し、第２入力値データの候補としてＮ２＝０００（２進数）〜１１１（２進数）の中から何れか１つを選択する。そして、入力値設定部１５は、（第１入力値データの候補，第２入力値データの候補）＝（Ｎ１，Ｎ２）の組み合わせによって選択されるリングオシレータを用い、第１周波数カウント部１２１および第２周波数カウント部１２２による発振周波数の計測を実行させる。具体的には、ＰＵＦ回路１は以下の動作を実行する。
【０１７２】
ステップＳ５０２ａ：入力値設定部１５は、第１入力値データ及び第２入力値データの候補として（Ｎ１，Ｎ２）を生成し、第１リングオシレータ選択部１１１にＮ１を、第２リングオシレータ選択部１１２にＮ２を、それぞれ入力する。
【０１７３】
ステップＳ５０２ｂ：第１リングオシレータ選択部１１１は、前記Ｎ１に基づいて、前に述べた規則に従い、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つのリングオシレータを選択する。第２リングオシレータ選択部１１２は、前記Ｎ２に基づいて、前に述べた規則に従い、第１リングオシレータ１０１〜第８リングオシレータ１０８の中から１つのリングオシレータを選択する。
【０１７４】
ステップＳ５０２ｃ：ここで、ステップＳ５０２ｂで選択された２個のリングオシレータにトリガ信号が入力されると、選択された２つのリングオシレータは発振して、発振信号を出力する。このとき、第１リングオシレータ選択部１１１により選択されたリングオシレータは、同第１リングオシレータ選択部１１１を介して第１周波数カウント部１２１に発振信号を入力する。第２リングオシレータ選択部１１２により選択されたリングオシレータは、同第２リングオシレータ選択部１１２を介して第２周波数カウント部１２２に発振信号を入力する。
【０１７５】
ステップＳ５０２ｄ：第１周波数カウント部１２１及び第２周波数カウント部１２２は、それぞれ入力された発振信号から発振周波数を計測する。ここで、第１周波数カウント部１２１は、発振周波数Ｆ１を計測し、第２周波数カウント部１２２は、発振周波数Ｆ２を計測する。そして、計測したＦ１及びＦ２を、入力値設定部１５に入力する。
【０１７６】
ステップＳ５０３：入力値設定部１５は、上述のように計測された発振周波数Ｆ１，Ｆ２に基づいて選択された入力値データの候補が、設定されるべき入力値データとして相応しいか否か、つまり選択された候補が失敗であったか否かを判別する。具体的には、入力値設定部１５は、入力されたＦ１及びＦ２から、周波数の差分Ｄ＝Ｆ２−Ｆ１を計算し、差分ＤとステップＳ５０１で特定した出力設定値との間に矛盾がなく、かつ、差分Ｄの絶対値が入力設定用閾値以上であれば、選択された候補が失敗でないと判別する。この場合、後述するステップＳ５０４で説明するように、入力値設定部１５は、そのときの（Ｎ１，Ｎ２）について、Ｎ１を第１入力値データ、Ｎ２を第２入力値データとして、入力値保管部１４に入力し、出力設定値を消去する。ここで、「差分Ｄと出力設定値との間に矛盾がない」とは、出力設定値が０の場合には差分Ｄが負の値または０であることを意味し、出力設定値が１の場合には差分Ｄが正の値であることを意味する。上記の条件を満たさない場合には、入力値設定部１５は、選択された候補が失敗と判別する。この場合、後述するステップＳ５０５で説明するように、別の候補（Ｎ１，Ｎ２）を生成して、ステップＳ５０２ａ〜Ｓ５０２ｄを繰り返し実行する。なお、全ての（Ｎ１，Ｎ２）の組み合わせについて、入力設定用閾値に基づく上記の条件を満たすようなものがなかった場合には、後述するステップＳ５０６で説明するように、入力値設定部１５は、出力設定値と、上述の退避要求信号に相当する入力値再設定失敗信号とを出力ビット制御部１８に入力する。そして、出力設定値を消去する。
【０１７７】
ステップＳ５０４：入力値保管部１４は、入力値設定部１５から入力されるＮ１、Ｎ２、すなわち失敗でないと判別された第１入力値データの候補Ｎ１と第２入力値データの候補Ｎ２とを、それぞれ設定されるべき第１入力データおよび第２入力データとして保管し、「入力値データの再設定」処理を終了する。
【０１７８】
ステップＳ５０５：入力値設定部１５は、選択された第１入力値データの候補Ｎ１および第２入力値データの候補Ｎ２がステップＳ５０３で失敗と判別されると、その候補Ｎ１，Ｎ２以外の他の候補があるか否かを判別する。ここで、入力値設定部１５は、他の候補があると判別すると、ステップＳ５０２からの処理を繰り返し、他の候補がないと判別すると、ステップＳ５０６の処理を実行する。
【０１７９】
ステップＳ５０６：入力値設定部１５は、上述のように他の候補がないと判別すると、出力ビット制御部１８に対して、出力設定値と入力値再設定失敗信号とを出力する。出力ビット制御部１８は、入力値再設定失敗信号と出力設定値を受け付けて、出力設定値を、出力ビット保管部１９に入力する。出力ビット保管部１９は、出力設定値を保管し、「入力値データの再設定」処理を終了する。
【０１８０】
（ＰＵＦ回路１の動作概要）
以上の動作を元に、本実施の形態におけるＰＵＦ回路１の動作は、以下の通りである。
【０１８１】
ＰＵＦ回路１が製造された後に、ＰＵＦ回路１は「入力値データの設定」処理を行い、１または０の出力ビットを設定する。その後、ＰＵＦ回路１は「出力ビットの算出」処理を行い、「入力値データの設定」処理により設定された１ビットの出力ビットを出力する。その際、ＰＵＦ回路１は、入力値保管部１４に設定している入力値データ（Ｎ１，Ｎ２）によって選択される２つのリングオシレータの周波数差が、経年変化などにより、所定の閾値未満になったと検知した場合には、「入力値データの再設定」処理を行い、前記入力値データの再設定を行う。
【０１８２】
本実施の形態においては、リングオシレータを構成する回路の周波数特性の経年変化により、設定された入力値データによって選択される２つのリングオシレータの周波数差が所定の閾値未満になったことを検知して、周波数差が所定の閾値以上になるように、入力値データを再設定する。一方、従来では、上記のような経年変化により、リングオシレータの周波数差が小さくなり、外部環境の変化によって周波数の大小関係が逆転する恐れが高くなったとしても、入力値データを再設定するような仕組みは備えていない。従って、経年変化による周波数特性の変化に対して、ＰＵＦ回路１は、従来の構成よりも、出力ビットの安定性という点で向上しているといえる。
【０１８３】
また、本実施の形態では、入力設定用閾値及び入力値再設定判定用閾値という２つの値を導入して、閾値保管部１７に保管している。従来では、これらの値をＰＵＦ回路内部に保管することはない。しかし、これらの値は、リングオシレータの周波数差分の絶対値に関する閾値なので、この値から、出力ビットの算出処理において選択されるリングオシレータの発振周波数の大小関係を推測することはできない。即ち、これらの値から、１ビットの出力ビットを推測することはできず、本実施の形態におけるＰＵＦ回路１においても、従来のＰＵＦ回路と同様に安全に秘密データを保持することが可能である。
【０１８４】
また、本実施の形態では、経年変化によるリングオシレータの周波数特性の変化が進んで、入力値データの再設定処理において、所定の閾値以上の周波数差となるリングオシレータペアが見つからなかった場合には、出力ビットを出力ビット保管部１９に保管し、以降は、この出力ビット保管部１９に保管されている出力ビットを出力する。これは、入力値データの再設定によって、これ以上安定した出力ビットをＰＵＦの構成により保持することが困難と判断した場合には、出力ビットをそのまま保持することで、出力ビットの安定性を保持し続けようとするものである。これにより、出力ビットの安全性は、ＰＵＦで記憶している場合と比べて低下する。しかし、鍵データのような数十ビット〜数百ビットの秘密データのうち、仮に１ビットだけが解析され露呈したとしても、致命的な安全性低下に繋がることは稀であるので、実質的に安全性上に著しい問題を生じることはない。なお、上記の仕組みは、高い安全性を有するＰＵＦ回路を実現する場合には、削除してもよい。
【０１８５】
以上にて述べたように、本実施の形態では、ＰＵＦ回路において、リングオシレータの周波数差分が所定の閾値未満になったことを検知すると、周波数差が閾値以上となるようなリングオシレータを選択するように入力値データを再設定する。これによって、リングオシレータの周波数特性が経年変化しても、ＰＵＦ回路の出力ビットの安定性を向上することができる。即ち、経年変化が起こっても、出力ビットが反転してしまわないようなＰＵＦ回路を用いた情報セキュリティ装置を提供することが可能である。
【０１８６】
（実施の形態３）
次に、本発明の実施の形態３について、図面を参照しながら説明する。実施の形態３では、実施の形態２に加えて、更に、ＰＵＦ回路の外部で行う誤り訂正符号を用いた誤り訂正、もしくは、誤り検出の結果を元に、入力値データの再設定処理を実行する構成を追加することで、周波数の経年変化に対するＰＵＦ回路の出力ビットの安定性をより向上させた構成となっている。
【０１８７】
（ＰＵＦ回路４の構成）
図１８は、実施の形態３に係るＰＵＦ回路４の内部構成の一例を示したブロック図である。ＰＵＦ回路４は、実施の形態１およびその変形例における第１のＰＵＦ１１０４１Ａ〜１１０４１Ｉのそれぞれに相当し、図１３の実施の形態２におけるＰＵＦ回路１とほぼ同じ構成である。すなわち、ＰＵＦ回路４は、第１〜第８リングオシレータ１０１〜１０８と、第１〜第２リングオシレータ選択部１１１〜１１２と、第１〜第２周波数カウント部１２１〜１２２と、出力ビット決定部１３と、入力値保管部１４と、入力値設定部４５と、入力値再設定判定部１６と、閾値保管部１７と、出力ビット制御部１８と、出力ビット保管部１９とからなる。
【０１８８】
ＰＵＦ回路１と唯一異なる点は、ＰＵＦ回路４は、外部から入力値再設定要求信号が入力され、入力値設定部４５は前記入力値再設定要求信号を受け付ける点である。つまり、本実施の形態における入力値設定部４５は、実施の形態２の入力設定部１５と同様の機能を有するとともに、ＰＵＦ回路４の外部から入力値再設定要求信号を取得したときには、入力値再設定判定部１６から入力値再設定要求信号を取得したときと同様、実施の形態２における「入力値データの再設定」処理を実行する。
【０１８９】
本実施の形態における情報生成用ＰＵＦ部は、このようなＰＵＦ回路４を９個備え、３ビットの秘密データであるハッシュ鍵をセキュアに保持することができる。
【０１９０】
図１９は、本実施の形態における情報生成用ＰＵＦ部にハッシュ鍵を設定する方法を説明するための図である。
【０１９１】
情報生成用ＰＵＦ部１１０４ａは、９つのＰＵＦ回路４と、９つのＰＵＦ回路４から出力される出力ビットを連結するビット連結部３０２とを備える。ビット連結部３０２は、実施の形態１のハッシュ鍵生成部１１０４２と同様の機能を有する。このような情報生成用ＰＵＦ部１１０４ａに３ビットのハッシュ鍵を設定するときには、誤り訂正符号生成部３００と、ビット分割部３０１とを用いる。ハッシュ鍵の設定処理は、情報生成用ＰＵＦ部１１０４ａが製造された後で、ハッシュ鍵が設定されていない状態において行われる処理である。
【０１９２】
誤り訂正符号生成部３００は、３ビットのハッシュ鍵に対して誤り訂正符号化を行って、ハッシュ鍵に対する誤り訂正符号を生成する。ビット分割部３０１は、誤り訂正符号生成部３００が生成した誤り訂正符号をビット単位に分割して、各ビットをそれぞれ各ＰＵＦ回路４に出力設定値として入力する。以下、具体的な例を挙げてハッシュ鍵の設定処理について説明する。
【０１９３】
まず、ハッシュ鍵Ｍを誤り訂正符号生成部３００に入力する。誤り訂正符号生成部３００は、ハッシュ鍵Ｍに対する誤り訂正符号（誤り訂正符号語Ｃ）を、以下のように生成する。まず、ハッシュ鍵ＭをＭ＝（ｍ１、ｍ２、ｍ３）とする。ここで、ｍ１、ｍ２、ｍ３は、それぞれ１ビットの値であり、ｍ１はＭの最上位ビット、ｍ２はＭの上位から２ビット目のビット、ｍ３は、Ｍの最下位ビットとする。このとき、誤り訂正符号生成部３００は、Ｍに対する誤り訂正符号語Ｃを９ビットの値Ｃ＝（ｍ１、ｍ１、ｍ１、ｍ２、ｍ２、ｍ２、ｍ３、ｍ３、ｍ３）として決定する。例えば、Ｍ＝１０１（２進数）の場合、Ｃ＝１１１０００１１１（２進数）であり、Ｍ＝０１１（２進数）の場合、Ｃ＝０００１１１１１１（２進数）である。誤り訂正符号生成部３００は、こうして得られた９ビットの誤り訂正符号語Ｃをビット分割部３０１に入力する。ビット分割部３０１は、入力された９ビットのＣを上位から１ビットずつ分割して、各ビットをそれぞれ９つのＰＵＦ回路４に入力する。９つのＰＵＦ回路４は、それぞれ入力された１ビットデータを出力設定値として、実施の形態２におけるＰＵＦ回路１の「入力値データの設定」処理と全く同じ処理を行う。
【０１９４】
図２０は、本実施の形態における情報セキュリティ装置１１００ａの構成を示す図である。
【０１９５】
本実施の形態における情報セキュリティ装置１１００ａは、情報生成用ＰＵＦ部１１０４ａと、誤り訂正処理部３０３と、排他的論理和部３０５と、ビット分割部３０６と、復号化部３０４と、入力部１１０１と、ハッシュ生成部１１０３と、出力部１１０２とからなる。なお、本実施の形態における入力部１１０１、ハッシュ生成部１１０３および出力部１１０２は、実施の形態１の情報セキュリティ装置１１００における入力部１１０１、ハッシュ生成部１１０３および出力部１１０２と同じである。
【０１９６】
トリガ信号が情報生成用ＰＵＦ部１１０４ａの９つのＰＵＦ回路４に入力されると、各ＰＵＦ回路４は、実施の形態２における「出力ビットの算出」処理と同じ処理を行って、それぞれ１ビットの出力ビットを出力する。ビット連結部３０２は、９つのＰＵＦ回路４の順列に従って、１番目のＰＵＦ回路４の出力ビットが最上位ビットとなり、９番目のＰＵＦ回路４の出力ビットが最下位ビットとなるように、ビット連結を行うことにより、誤り訂正前のハッシュ鍵を９ビットデータとして生成し、誤り訂正処理部３０３と排他的論理和部３０５とに入力する。なお、本実施の形態では、ビット連結部３０２が、複数のＰＵＦ回路４から出力される出力値を結合する結合部として構成されている。
【０１９７】
誤り訂正処理部３０３は、入力された９ビットデータに対して誤り訂正を行い、その結果の９ビットデータを出力する。
【０１９８】
図２１は、誤り訂正処理部３０３の構成を示す図である。
【０１９９】
誤り訂正処理部３０３は、誤り訂正部１１０５ａと、誤り訂正情報生成部１１０８と、誤り訂正用ＰＵＦ部１１０６と、誤り訂正部分情報格納部１１０７とを備えている。本実施の形態における誤り訂正情報生成部１１０８、誤り訂正用ＰＵＦ部１１０６、および誤り訂正部分情報格納部１１０７は、実施の形態１における誤り訂正情報生成部１１０８、誤り訂正用ＰＵＦ部１１０６、および誤り訂正部分情報格納部１１０７と同じである。
【０２００】
また、本実施の形態における誤り訂正部１１０５ａは、実施の形態１における誤り訂正部１１０５と同様に排他的論理和の演算を実行するが、３ビットの繰り返し符号を１ビットにするような復号化は実行しない。つまり、誤り訂正部１１０５ａは、誤り訂正前のハッシュ鍵である９ビットデータと誤り訂正情報との排他的論理和を取って、その結果である９ビットデータを復号化部３０４と排他的論理和部３０５とに入力する。
【０２０１】
復号化部３０４は、誤り訂正処理部３０３から入力された９ビットデータを、３ビットの繰り返し符号に分割し、各３ビットの繰り返し符号を１ビットに復号化する。つまり、本実施の形態における誤り訂正部１１０５ａと復号化部３０４とにより、実施の形態１の誤り訂正部１１０５が実現される。
【０２０２】
具体的に、復号化部３０４は、入力された誤り訂正結果の９ビットデータから誤り訂正符号化のために付加した冗長性を除去して、３ビットの訂正後ハッシュ鍵を出力する。つまり、復号化部３０４は、上述の９ビットデータを上位から３ビットずつ分割し、各３ビットデータについて、０００（２進数）の場合は０（２進数）に、１１１（２進数）の場合は１（２進数）に変換した後、再び連結して３ビットデータとする。これにより、「入力値データの設定」処理において各ＰＵＦ回路４に設定したハッシュ鍵である３ビットと同じデータが得られる。ここで、上記に用いた誤り訂正符号は、情報ビットに対して情報ビットと同じ値２ビットを冗長ビットとして付加する繰り返し符号であり、３ビット（情報ビット１ビットと冗長ビット２ビット）のうち１ビットに誤りが生じてデータが反転しても、誤りを検知して訂正することが可能である。
【０２０３】
なお、誤り訂正処理部３０３は、以下のようにして誤り訂正処理を行ってもよい。すなわち、誤り訂正処理部３０３は、入力された９ビットデータを、上位から３ビットずつに分割して、ｃ１、ｃ２、ｃ３とする。次に、ｃ１、ｃ２、ｃ３のそれぞれについて、ハミング重み（１の立っているビットの数）を計算する。そして、ハミング重みが２以上であれば、１１１（２進数）とし、ハミング重みが１以下であれば、０００（２進数）とする。例えば、０１０（２進数）であれば、０００（２進数）とし、１１０（２進数）であれば、１１１（２進数）とする。そうして得られた３ビット×３個のデータを、上位から、ｃ１の誤り訂正処理結果、ｃ２の誤り訂正処理結果、ｃ３の誤り訂正処理結果の順に連結したものを、最終的な誤り訂正結果の９ビットデータとして、復号化部３０４及び排他的論理和部３０５に入力する。
【０２０４】
排他的論理和部３０５は、ビット連結部３０２から入力された誤り訂正前の９ビットデータと、誤り訂正処理部３０３から入力された誤り訂正後の９ビットデータとの排他的論理和演算を行い、その演算結果である９ビットデータをビット分割部３０６に入力する。これは、誤り訂正前と訂正後のデータを比較して、誤り訂正が行われたビット位置に１を立てる処理を行っていることと同じである。つまり、本実施の形態では、排他的論理和部３０５が、情報生成用ＰＵＦ部１１０４ａから出力されるハッシュ鍵に誤りが生じたか否かを判別する誤り判別手段として構成されている。
【０２０５】
ビット分割部３０６は、入力された９ビットデータを上位から１ビットずつ分割して、各ビットをそれぞれ各ＰＵＦ回路４に入力する。これにより、誤り訂正が行われたビットを出力したＰＵＦ回路４には、１ビットデータ「１」が入力値再設定要求信号として入力され、誤り訂正が行われなかったビットを出力したＰＵＦ回路４には、１ビットデータ「０」が入力されることになる。 つまり、本実施の形態では、ビット分割部３０６が、情報生成用ＰＵＦ部１１０４ａに対して、ハッシュ鍵の再設定を要求する再設定要求手段として構成されている。
【０２０６】
入力値再設定要求信号が入力されたＰＵＦ回路４は、上記実施の形態２と同様の「入力値データの再設定」処理を実行する。つまり、ＰＵＦ回路４は、図１７を用いて上述のように説明した処理を実行する。但し、ＰＵＦ回路４の入力値設定部４５は、ステップＳ５０１において出力設定値を特定するときには、既に出力ビットに誤りが生じているため、上述とは逆の規則に基づいて出力設定値を特定する。例えば、入力値設定部４５は、第１周波数カウント部１２１から入力された発振周波数Ｆ１と、第２周波数カウント部１２２から入力された発振周波数Ｆ２との大小関係を比較し、Ｆ２≦Ｆ１であれば、出力設定値を「１」とし、そうでなければ、出力設定値を「０」とする。
【０２０７】
なお、本実施の形態では、ＰＵＦ回路４の入力値設定部４５が、ハッシュ鍵の再設定を行う再設定部として構成されている。
【０２０８】
本実施の形態では、誤りが発生していると検知されたビット（誤り訂正が行われたビット）については、そのビット値を生成したＰＵＦ回路に対して入力値データの再設定処理を指示することが特徴である。この構成により、実施の形態２では得られなかった以下のような効果がある。例えば、実施の形態２の場合は、入力値再設定判定用閾値をＲとしたとき、リングオシレータの周波数特性が急激に変化し、発振周波数の差分（Ｆ２−Ｆ１）が、元々はＦ２−Ｆ１＞Ｒであったものが、Ｆ２−Ｆ１＜−Ｒとなるように変化した場合、ＰＵＦ回路の出力ビット値は反転してしまい、更に、Ｆ２−Ｆ１の絶対値は、Ｒ以上になるために、入力値の再設定処理は行われない。しかし、本実施の形態においては、上記の出力ビットの反転が検知され、入力値の再設定処理が行われるために、適切に入力値データが再設定される。このように、本実施の形態においては、リングオシレータの急激な周波数特性変化についても、適切に入力値データの再設定が行われ、出力ビットの安定性が保たれる。
【０２０９】
なお、本実施の形態では、出力ビットに誤りが生じたときには、その出力ビットを出力したＰＵＦ回路４、つまり入力値再設定要求信号を取得したＰＵＦ回路４は、入力値データの再設定を行ったが、入力値データの再設定を行うことなく、出力すべき出力ビットの値、すなわち出力設定値を出力ビット保管部１９に格納してもよい。
【０２１０】
図２２は、入力値再設定要求信号を取得したＰＵＦ回路４の他の動作を示すフローチャートである。
【０２１１】
まず、入力値再設定要求信号を取得した入力値設定部４５は出力設定値を特定する（ステップＳ６０１）。このとき、入力値設定部４５は、上述と同様、既に出力ビットに誤りが生じているため、第１周波数カウント部１２１から入力された発振周波数Ｆ１と、第２周波数カウント部１２２から入力された発振周波数Ｆ２との大小関係を比較し、Ｆ２≦Ｆ１であれば、出力設定値を「１」とし、そうでなければ、出力設定値を「０」とする。
【０２１２】
そして、入力値設定部４５は、特定した出力設定値と退避要求信号とを出力ビット制御部１８に出力することにより、その出力ビット制御部１８にその出力設定値（出力設定値を示す出力ビット）を出力ビット保管部１９に格納させる（ステップＳ６０２）。
【０２１３】
このように、入力値再設定要求信号を取得したＰＵＦ回路４が入力値データの再設定を行わず出力設定値を出力ビット保管部１９に格納する場合には、ＰＵＦ回路４における今後の処理負担を軽減し、出力ビットを安定させることができる。
【０２１４】
（変形例）
上記に説明した実施の形態１〜３は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
【０２１５】
（１）情報セキュリティ装置及び誤り訂正情報生成装置で使用する誤り訂正符号は、繰り返し符号であるが、これに限らない。誤り訂正符号であれば何でもよい。例えば、リード・ソロモン符号などの代数的符号や畳み込み符号であってもよい。また、符号長（ビットや要素の数）を９とし、情報記号数を３としていたが、これに限らない。安全性の面では、訂正後ハッシュ鍵は８０ビット以上である方がよい。
【０２１６】
（２）情報セキュリティ装置では、鍵付ハッシュ値を出力するとしているが、これに限らない。秘密の鍵を用いて入力データを変換した変換データを出力すればよい。変換データは、鍵付ハッシュ値の他に、暗号文、復号文、署名データなどがある。
【０２１７】
（３）情報セキュリティ装置では、ＰＵＦ回路を使用しているが、これだけに限らない。ＰＵＦ回路の代わりに、秘密の情報を出力可能な耐タンパー回路であればよい。また、環境や経年劣化により出力が変化する耐タンパー回路であってもよい。耐タンパー回路として、特許文献２（特開２００６−０６０１０９号公報）に記載されている、識別情報生成回路を使用してもよい。識別情報生成回路は、電源をオンした際のフリップフロップやＲＡＭ、ＳｔａｔｉｃＲＡＭの各メモリセルから最初に出力される論理信号から、固有の識別コードを生成する。なお、ＰＵＦには、スペックルパタンを利用したＯｐｔｉｃａｌ  ＰＵＦ、ゲート遅延を利用したＳｉｌｉｃｏｎ  ＰＵＦ、誘電率を利用したＣｏａｔｉｎｇ  ＰＵＦ、およびノイズ音を利用したＡｃｏｕｓｔｉｃ  ＰＵＦなどがある。
【０２１８】
（４）誤り訂正情報生成装置の環境変化部では、ＰＵＦ回路の周囲の温度を変化させるとしていたが、他の環境変化、例えば、電圧変化であってもよい。また、環境変化ではなく、現在の環境を取得して、環境変化解析部へ現在の環境を知らせる構成でもよい。
【０２１９】
（５）第２のＰＵＦ回路において、差分から“０”から“７”までの値への変換するルールは予め、固定化したものを与えているが、この変換ルールを誤り訂正情報生成装置が決定して第２のＰＵＦ回路に埋め込む、もしくは誤り訂正部分情報格納部に格納してもよい。また、第２のＰＵＦ回路の誤り訂正情報を誤り訂正部分情報格納部に格納してもよい。この場合、第２のＰＵＦ回路の誤り訂正情報を用いて、誤り訂正用ＰＵＦ情報を知り、誤り訂正部分情報から第１のＰＵＦ回路の誤り訂正情報を攻撃者が知ることが可能になる。しかし、攻撃者の解析に要する処理量が大きくなるため、安全性の向上としては有効である。さらに、ＰＵＦ回路をさらに第３、第４、・・・と追加して、誤り訂正情報を攻撃者がより求めにくくしてもよい。
【０２２０】
（６）実施の形態では、２個のリングオシレータの発振周波数の大小関係から１ビットまたは３ビットの出力ビットを決定していたが、これは２個とは限らず、３個以上のリングオシレータであってもよい。このとき、例えば、３個のリングオシレータの周波数が、Ａ、Ｂ、Ｃのとき、Ａ、Ｂ、Ｃの大小関係の全パタンと出力ビットの対応関係が予めルールとして決定されていれば良い。また、このとき入力値再設定判定部における判定方法としては、Ａ、Ｂ、Ｃを周波数の大きい順に並べた上で、（１番目の周波数）と（２番目の周波数）の差分と（２番目の周波数）と（３番目の周波数）の差分をそれぞれ計算し、各差分値が所定の閾値以上であるかどうかをチェックすることで、判定すればよい。
【０２２１】
（７）実施の形態では、「入力値データの設定」処理および「入力値データの再設定」処理において、入力値設定用閾値以上の差分を有する入力値ペア（Ｎ１，Ｎ２）が見つかった時点で、その値を、入力値保管部に設定あるいは再設定していたが、これは、まず全ての入力値ペア（Ｎ１，Ｎ２）について、周波数の差分値を求めた上で、差分値の一番大きくなる（Ｎ１，Ｎ２）を選び、そのときの差分値が入力値設定用閾値以上であれば、選んだ値を入力値保管部に設定あるいは再設定し、上記閾値未満であれば、入力値設定失敗信号あるいは入力値再設定失敗信号を送付するようにしてもよい。
【０２２２】
（８）閾値保管部に保管する入力設定用閾値及び入力値再設定判定用閾値は、必ずしもＰＵＦ回路の製造時に設定する必要はなく、製造後に、設定するようにしても良い。また、一度設定した後でも、再設定ができるようにしても良い。つまり、入力設定用閾値及び入力値再設定判定用閾値の少なくとも一方を更新してもよい。例えば、ＰＵＦ回路が出力ビット算出処理を所定回数行うたびに、閾値を変更したり、入力値データの再設定処理の際に、現在設定されている入力設定用閾値を満たすリングオシレータペアが存在しない場合には、今の閾値よりも小さくするようにその閾値を変更したり、してもよい。
【０２２３】
（９）入力値再設定判定部による入力値再設定判定は、出力ビット算出処理を行うごとに毎回行う必要はなく、所定回数出力ビット算出処理を行うごとに行うようにしてもよいし、外部からの指示信号を受け付けたときに行うようにしてもよい。
【０２２４】
（１０）本実施の形態では、発振回路としてリングオシレータを用いた場合の構成を示しているが、これは固体振動子発振回路、ＣＲ発振回路、ＬＣ反結合発振回路、など発振回路であれば何でもよい。
【０２２５】
（１１）実施の形態では、１つのＰＵＦ回路から出力されるデータは１ビットまたは３ビットであったが、これは１ビットまたは３ビットに限定されず、発振周波数の大小関係から出力ビットを決定する決定ルールを予め決めておけば、２ビットや４ビット以上であってもよい。
【０２２６】
（１２）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０２２７】
（１３）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０２２８】
（１４）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣ（Integrated Circuit）カードまたは単体のモジュールから構成されているとしてもよい。例えば、図４に示す情報セキュリティ装置１１００の全体をＩＣカードとして構成したり、その情報セキュリティ装置１１００のうち情報生成用ＰＵＦ部１１０４と、誤り訂正部１１０５と、誤り訂正情報生成部１１０８と、誤り訂正用ＰＵＦ部１１０６と、誤り訂正部分情報格納部１１０７とをＩＣカードとして構成してもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０２２９】
（１５）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
【０２３０】
（１６）また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記ディジタル信号であるとしてもよい。
【０２３１】
（１７）また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０２３２】
（１８）また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０２３３】
（１９）また、前記プログラムまたは前記ディジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０２３４】
（２０）上記実施の形態１〜３及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０２３５】
本発明に係る情報セキュリティ装置は、メモリに格納された情報を用いても、ＰＵＦにより秘匿された鍵値などの秘密データを攻撃者が知ることができなくなり、ＰＵＦの安全性が低下しないようにすることができるという効果を奏し、例えば、ＩＣカードなどに適用することができる。また、本発明にかかる情報セキュリティ装置は、鍵データやＩＤデータなどの秘密データをセキュアかつ安価に保持しつつ、従来技術よりも、経年変化に対する秘密データの安定性を向上させるという特徴を有するので、高セキュリティ、低コスト、かつ高安定性での実現が求められる情報セキュリティ装置の実現に有用である。
【図面の簡単な説明】
【０２３６】
【図１】図１は、従来のＰＵＦ回路の構成を示す図である。
【図２】図２は、従来のＰＵＦの誤り訂正を用いた情報セキュリティ装置の構成を示す図である。
【図３】図３は、本発明の実施の形態１における情報セキュリティシステムの構成を示すブロック図である。
【図４】図４は、同上の情報セキュリティ装置の構成を示す図である。
【図５】図５は、同上の情報生成用ＰＵＦ部の構成を示す図である。
【図６】図６は、同上の第１のＰＵＦ回路の構成を示す図である。
【図７】図７は、同上の誤り訂正用ＰＵＦ部の構成を示す図である。
【図８】図８は、同上の第２のＰＵＦ回路の構成を示す図である。
【図９】図９は、同上の第２のＰＵＦ回路の差分と出力値のマッピングを示す図である。
【図１０】図１０は、同上の誤り訂正情報生成装置の構成を示す図である。
【図１１】図１１は、同上の環境変化解析部で解析した出力値の分布を示す図である。
【図１２Ａ】図１２Ａは、同上の誤り訂正情報生成装置が誤り訂正部分情報を設定するときの動作を示すフローチャートである。
【図１２Ｂ】図１２Ｂは、同上の情報セキュリティ装置が鍵付ハッシュ値を計算するときの動作を示すフローチャートである。
【図１３】図１３は、本発明の実施の形態２におけるＰＵＦ回路の構成を示すブロック図である。
【図１４】図１４は、同上のリングオシレータの構成を示すブロック図である。
【図１５】図１５は、同上のＰＵＦ回路が入力値データを設定するときの動作を示すフローチャートである。
【図１６】図１６は、同上のＰＵＦ回路が出力ビットを算出するときの動作を示すフローチャートである。
【図１７】図１７は、同上のＰＵＦ回路が入力値データを再設定するときの動作を示すフローチャートである。
【図１８】図１８は、本発明の実施の形態３に係るＰＵＦ回路の構成を示すブロック図である。
【図１９】図１９は、同上の情報生成用ＰＵＦ部にハッシュ鍵を設定する方法を説明するための図である。
【図２０】図２０は、同上の情報セキュリティ装置の構成を示す図である。
【図２１】図２１は、同上の誤り訂正処理部の構成を示す図である。
【図２２】図２２は、同上のＰＵＦ回路の他の動作を示す図である。
【符号の説明】
【０２３７】
１    ＰＵＦ回路
１３    出力ビット決定部
１４    入力値保管部
１５    入力値設定部
１６    入力値再設定判定部
１７    閾値保管部
１８    出力ビット制御部
１９    出力ビット保管部
１０１〜１０８    第１〜第８リングオシレータ
１１１，１１２    第１、第２リングオシレータ選択部
１２１，１２２    第１、第２周波数カウント部
１０００    情報セキュリティシステム
１１００，３０００    情報セキュリティ装置
１１０１，３００１    入力部
１１０２，３００２    出力部
１１０３，３００３    ハッシュ生成部
１１０４    情報生成用ＰＵＦ部
１１０４１Ａ〜１１０４１I    第１のＰＵＦ回路
１１０４２    ハッシュ鍵生成部
１１０５，３００５    誤り訂正部
１１０６    誤り訂正用ＰＵＦ部
１１０６１Ａ〜１１０６１I    第２のＰＵＦ回路
１１０６２    誤り訂正用ＰＵＦ情報生成部
１１０７    誤り訂正部分情報格納部
１１０８    誤り訂正情報生成部
１２００    誤り訂正情報生成装置
１２０１    ＰＵＦ回路計測部
１２０２    環境変化部
１２０３    環境変化解析部
１２０４    誤り訂正部分情報生成部
１２０５    誤り訂正部分情報設定部
２０００    ＰＵＦ回路
２００１    第１リングオシレータ
２００２    第２リングオシレータ
２００３    第３リングオシレータ
２００４    第４リングオシレータ
２００５    第５リングオシレータ
２００６    第６リングオシレータ
２００７    第７リングオシレータ
２００８    第８リングオシレータ
２０１１    第１リングオシレータ選択部
２０１２    第２リングオシレータ選択部
２０２１    第１周波数カウント部
２０２２    第２周波数カウント部
２０３０    出力ビット決定部
３００４    ＰＵＦ部
３００６    誤り訂正情報格納部
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
予め設定された秘密データを出力する情報セキュリティ装置であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路と、
第１の訂正用データを記憶している訂正用データ記憶手段と、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路と、
前記訂正用データ記憶手段に記憶されている第１の訂正用データと、前記第２の耐タンパー回路から出力される第２の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成手段と、
前記訂正情報生成手段により生成された誤り訂正情報を用いて、前記第１の耐タンパー回路から出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正手段と
を備えることを特徴とする情報セキュリティ装置。
【請求項２】
前記情報セキュリティ装置は、さらに、
入力データを取得する取得手段と、
前記誤り訂正手段から出力される秘密データを鍵として用い、前記鍵により前記入力データを暗号化する暗号化手段とを備える
ことを特徴とする請求項１記載の情報セキュリティ装置。
【請求項３】
前記第１の耐タンパー回路に設定される秘密データと、前記第２の耐タンパー回路に設定される第２の訂正用データとは、ＰＵＦ（Physically Unclonable Function）により設定されている
ことを特徴とする請求項１記載の情報セキュリティ装置。
【請求項４】
前記第１の耐タンパー回路は、１ビットの値を前記秘密データの少なくとも一部として出力する１つ以上の第１のＰＵＦ回路を備え、
前記第２の耐タンパー回路は、２ビット以上の値を前記第２の訂正用データの少なくとも一部として出力する１つ以上の第２のＰＵＦ回路を備える
ことを特徴とする請求項３記載の情報セキュリティ装置。
【請求項５】
前記第１の耐タンパー回路は、１つ以上の第１のＰＵＦ回路を備え、
前記第１のＰＵＦ回路は、
発振信号を出力するＮ（Ｎ≧２）個の発振部と、
前記Ｎ個の発振部からＭ（Ｍ≦Ｎ）個の発振部を選択する選択部と、
前記選択部により選択されたＭ個の発振部から出力される発振信号の周波数の大小関係に基づいて出力値を決定して出力する決定部とを備え、
前記選択部は、前記決定部によって決定される出力値が前記予め定められた秘密データの少なくとも一部を示すようにＭ個の発振部を選択する
ことを特徴とする請求項３記載の情報セキュリティ装置。
【請求項６】
前記選択部は、前記Ｍ個の発振部から出力される発振信号の周波数の差分が第１の閾値以上となるように前記Ｍ個の発振部を選択する
ことを特徴とする請求項５記載の情報セキュリティ装置。
【請求項７】
前記情報セキュリティ装置は、さらに、
前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第１の耐タンパー回路から出力される秘密データとを比較することにより、前記第１の耐タンパー回路から出力される秘密データに誤りが生じたか否かを判別する誤り判別手段と、
前記誤り判別手段により誤りが生じたと判別されたときには、前記第１の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、
前記第１のＰＵＦ回路は、さらに、
前記再設定要求手段から再設定の要求を受け付けたときには、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部を備える
ことを特徴とする請求項６記載の情報セキュリティ装置。
【請求項８】
前記第１のＰＵＦ回路は、さらに、
前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、
前記選択部がＭ個の発振部を選択する際に、前記発振周波数の差分が前記第１の閾値以上となるようなＭ個の発振部を選択することができないときに、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、
前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備える
ことを特徴とする請求項７記載の情報セキュリティ装置。
【請求項９】
前記第１の耐タンパー回路は、
複数の前記第１のＰＵＦ回路と、
前記複数の第１のＰＵＦ回路から出力される出力値を結合することにより秘密データを生成する結合部とを備え、
前記誤り判別手段は、前記第１の耐タンパー回路から出力される秘密データに誤りが生じたと判別するときには、さらに、前記複数の第１のＰＵＦ回路のうち、誤った出力値を出力する第１のＰＵＦ回路を特定し、
前記再設定要求手段は、誤った出力値を出力していると特定された第１のＰＵＦ回路に対して、出力値が前記予め定められた秘密データの一部を示すように、出力値の再設定を要求する
ことを特徴とする請求項７記載の情報セキュリティ装置。
【請求項１０】
前記情報セキュリティ装置は、さらに、
前記誤り訂正手段から出力される誤り訂正後の秘密データと、前記第１の耐タンパー回路から出力される誤り訂正前の秘密データとを比較することにより、前記誤り訂正前の秘密データに誤りが生じたか否かを判別する誤り判別手段と、
前記誤り判別手段により誤りが生じたと判別されたときには、前記第１の耐タンパー回路に対して、前記予め定められた秘密データの再設定を要求する再設定要求手段とを備え、
前記第１のＰＵＦ回路は、さらに、
前記予め定められた秘密データの少なくとも一部を記憶するための秘密データ用記憶部と、
前記再設定要求手段から再設定の要求を受け付けたときには、前記秘密データの少なくとも一部を前記秘密データ用記憶部に格納する格納処理部と、
前記秘密データ用記憶部に前記秘密データの少なくとも一部が格納されているときには、前記決定部による出力値の決定を禁止し、前記秘密データ用記憶部に格納されている前記秘密データの少なくとも一部を出力する出力制御部とを備える
ことを特徴とする請求項６記載の情報セキュリティ装置。
【請求項１１】
前記第１のＰＵＦ回路は、さらに、
前記Ｍ個の発振部から出力される発振信号の周波数の差分が第２の閾値未満であるか否かを判別する差分判別部と、
前記差分判別部によって前記第２の閾値未満であると判別されると、前記選択部による選択を再度実行させることにより、前記予め定められた秘密データの再設定を行う再設定部とを備える
ことを特徴とする請求項６記載の情報セキュリティ装置。
【請求項１２】
前記第１のＰＵＦ回路は、さらに、
前記第１および第２の閾値のうちの少なくとも一方を格納している閾値格納部と、
前記閾値格納部に格納されている、前記第１および第２の閾値のうちの少なくとも一方を更新する更新部とを備える
ことを特徴とする請求項１１記載の情報セキュリティ装置。
【請求項１３】
前記選択部は、
前記Ｍ個の発振部から出力される発振信号の周波数の差分が第１の閾値以上となるような前記Ｍ個の発振部を検索する検索部と、
前記検索部によって検索されたＭ個の発振部を示す選択パラメータを保持するパラメータ保持部と、
前記パラメータ保持部に保持されている選択パラメータの示すＭ個の発振部を選択すべきＭ個の発振部と決定して選択する選択決定部とを備える
ことを特徴とする請求項６記載の情報セキュリティ装置。
【請求項１４】
秘密データの誤りを訂正するための第１の訂正用データを生成するデータ生成装置であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から出力される出力値を計測する第１の計測手段と、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から出力される出力値を計測する第２の計測手段と、
前記第１および第２の計測手段によって計測された出力値に基づいて、前記第１の訂正用データを生成するデータ生成手段と、
前記データ生成手段によって生成された前記第１の訂正用データを記憶媒体に格納する格納処理手段と
を備えることを特徴とするデータ生成装置。
【請求項１５】
前記データ生成手段は、
前記第１の計測手段によって計測された出力値と、前記秘密データの示す値との差分を算出することにより、誤り訂正情報を生成する第１の生成手段と、
前記第２の計測手段によって計測された出力値と、前記誤り訂正情報の示す値との差分を算出することにより、前記第１の訂正用データを生成する第２の生成手段とを備える
ことを特徴とする請求項１４記載のデータ生成装置。
【請求項１６】
前記第１および第２の計測手段は、出力値の計測を繰り返し行い、
前記第１の生成手段は、繰り返し計測された出力値の分布に基づいて特定される出力値を用いて前記誤り訂正情報を生成し、
前記第２の生成手段は、繰り返し計測された出力値の分布に基づいて特定される出力値を用いて前記第１の訂正用データを生成する
ことを特徴とする請求項１５記載のデータ生成装置。
【請求項１７】
前記データ生成装置は、さらに、
前記第１および第２の耐タンパー回路から出力される出力値の計測が行われるごとに、前記第１および第２の耐タンパー回路の周辺環境を変化させる環境変化手段を備える
ことを特徴とする請求項１６記載のデータ生成装置。
【請求項１８】
前記環境変化手段は、前記第１および第２の耐タンパー回路の周辺温度を変化させる
ことを特徴とする請求項１７記載のデータ生成装置。
【請求項１９】
予め設定された秘密データを出力する情報セキュリティ方法であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から秘密データを出力させる第１の出力ステップと、
第１の訂正用データを記憶している訂正用データ記憶手段から前記第１の訂正用データを出力させる第２の出力ステップと、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から第２の訂正用データを出力させる第３の出力ステップと、
前記第２の出力ステップで出力される第１の訂正用データと、前記第３の出力ステップで出力される第２の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成ステップと、
前記訂正情報生成ステップで生成された誤り訂正情報を用いて、前記第１の出力ステップで出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正ステップと
を含むことを特徴とする情報セキュリティ方法。
【請求項２０】
秘密データの誤りを訂正するための第１の訂正用データを生成するデータ生成方法であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から出力される出力値を計測する第１の計測ステップと、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から出力される出力値を計測する第２の計測ステップと、
前記第１および第２の計測ステップで計測された出力値に基づいて、前記第１の訂正用データを生成するデータ生成ステップと、
前記データ生成ステップで生成された前記第１の訂正用データを記憶媒体に格納する格納ステップと
を含むことを特徴とするデータ生成方法。
【請求項２１】
予め設定された秘密データを出力するためのプログラムであって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から秘密データを出力させる第１の出力ステップと、
第１の訂正用データを記憶している訂正用データ記憶手段から前記第１の訂正用データを出力させる第２の出力ステップと、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から第２の訂正用データを出力させる第３の出力ステップと、
前記第２の出力ステップで出力される第１の訂正用データと、前記第３の出力ステップで出力される第２の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成ステップと、
前記訂正情報生成ステップで生成された誤り訂正情報を用いて、前記第１の出力ステップで出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正ステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項２２】
秘密データの誤りを訂正するための第１の訂正用データを生成するためのプログラムであって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から出力される出力値を計測する第１の計測ステップと、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から出力される出力値を計測する第２の計測ステップと、
前記第１および第２の計測ステップで計測された出力値に基づいて、前記第１の訂正用データを生成するデータ生成ステップと、
前記データ生成ステップで生成された前記第１の訂正用データを記憶媒体に格納する格納ステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項２３】
予め設定された秘密データを出力する集積回路であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路と、
第１の訂正用データを記憶している訂正用データ記憶手段と、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路と、
前記訂正用データ記憶手段に記憶されている第１の訂正用データと、前記第２の耐タンパー回路から出力される第２の訂正用データとを用いて、誤り訂正情報を生成する訂正情報生成手段と、
前記訂正情報生成手段により生成された誤り訂正情報を用いて、前記第１の耐タンパー回路から出力される秘密データに対して誤り訂正を行い、誤り訂正された前記秘密データを出力する誤り訂正手段と
を備えることを特徴とする集積回路。
【請求項２４】
秘密データの誤りを訂正するための第１の訂正用データを生成する集積回路であって、
予め定められた秘密データを出力するように物理特性を利用して設定された耐タンパー性を有する第１の耐タンパー回路から出力される出力値を計測する第１の計測手段と、
第２の訂正用データを出力するように物理特性を利用して設定された耐タンパー性を有する第２の耐タンパー回路から出力される出力値を計測する第２の計測手段と、
前記第１および第２の計測手段によって計測された出力値に基づいて、前記第１の訂正用データを生成するデータ生成手段と、
前記データ生成手段によって生成された前記第１の訂正用データを記憶媒体に格納する格納処理手段と
を備えることを特徴とする集積回路。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2008056612.tif 000026
【図２】
2008056612.tif 000027
【図３】
2008056612.tif 000028
【図４】
2008056612.tif 000029
【図５】
2008056612.tif 000030
【図６】
2008056612.tif 000031
【図７】
2008056612.tif 000032
【図８】
2008056612.tif 000033
【図９】
2008056612.tif 000034
【図１０】
2008056612.tif 000035
【図１１】
2008056612.tif 000036
【図１２Ａ】
2008056612.tif 000037
【図１２Ｂ】
2008056612.tif 000038
【図１３】
2008056612.tif 000039
【図１４】
2008056612.tif 000040
【図１５】
2008056612.tif 000041
【図１６】
2008056612.tif 000042
【図１７】
2008056612.tif 000043
【図１８】
2008056612.tif 000044
【図１９】
2008056612.tif 000045
【図２０】
2008056612.tif 000046
【図２１】
2008056612.tif 000047
【図２２】
2008056612.tif 000048
【国際調査報告】
2008056612.tif 000049
2008056612.tif 000050
2008056612.tif 000051
2008056612.tif 000052