(57)【要約】【課題】ＰＵＦ値の衝突を検出する。【解決手段】被検査装置１０は、生成回路１１と処理部１２とを有する。生成回路１１は、ハードウェアに依存する値を生成する。処理部１２は、第１の要求に応じて、生成回路１１が生成した値と誤り訂正符号化方法とを用いて、符号化結果データを生成して出力する。処理部１２は、第２の要求に応じて、指定された符号化結果データと生成回路１１が生成した値と誤り訂正復号方法とを用いて、復号結果データを生成して出力する。検査装置２０は、記憶部２１と処理部２２とを有する。記憶部２１は、被検査装置１０ａが生成した符号化結果データ２３と照合用データ２４とを記憶する。処理部２２は、符号化結果データ２３を指定して復号結果データ２５を被検査装置１０から受信する。処理部２２は、復号結果データ２５と照合用データ２４とを比較して一致するか否かを判断する。【選択図】図１
2019012919.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアに依存する値を生成する生成回路と、
第１の要求に応じて、前記生成回路が生成した値と誤り訂正符号化方法とを用いて、符号化結果データを生成して出力し、符号化結果データの指定を含む第２の要求に応じて、前記指定された符号化結果データと前記生成回路が生成した値と誤り訂正復号方法とを用いて、復号結果データを生成して出力する第１の処理部と、
を有する被検査装置と、
他の被検査装置が生成した第１の符号化結果データと照合用データとを記憶する記憶部と、
前記第１の符号化結果データを前記被検査装置に対して指定して、前記第１の符号化結果データに応じた第１の復号結果データを前記被検査装置から受信し、前記第１の復号結果データと前記照合用データとを比較して一致するか否かを判断する第２の処理部と、
を有する検査装置と、
を有する衝突検出システム。
【請求項２】
前記第２の処理部は更に、前記第１の復号結果データと前記照合用データとが一致する場合、前記被検査装置に前記生成回路の設定を変更させ、前記第１の符号化結果データに応じた変更後の第１の復号結果データを前記被検査装置から受信し、前記変更後の第１の復号結果データと前記照合用データとを比較する、
請求項１記載の衝突検出システム。
【請求項３】
前記生成回路はプログラマブルデバイスを含み、
前記設定の変更では、前記プログラマブルデバイスにロードする回路情報を変更する、
請求項２記載の衝突検出システム。
【請求項４】
前記被検査装置は複数の生成回路を有し、
前記設定の変更では、前記複数の生成回路の中から使用する生成回路を選択する、
請求項２記載の衝突検出システム。
【請求項５】
前記復号結果データの出力では、前記第１の処理部は、前記指定された符号化結果データと前記誤り訂正復号方法とを用いて、前記生成回路が生成した値を訂正した訂正値を算出し、前記訂正値のハッシュ値を含む復号結果データを出力し、
前記照合用データは前記他の被検査装置が生成した第２のハッシュ値を含み、
前記比較では、前記第２の処理部は、前記第１の復号結果データに含まれる第１のハッシュ値と前記第２のハッシュ値とを比較する、
請求項１記載の衝突検出システム。
【請求項６】
前記第１の要求は平文の指定を含み、
前記符号化結果データの出力では、前記第１の処理部は、前記生成回路が生成した値と前記誤り訂正符号化方法とを用いて、前記指定された平文に対応する暗号文を生成し、前記生成した暗号文を含む符号化結果データを出力し、
前記復号結果データの出力では、前記第１の処理部は、前記生成回路が生成した値と前記誤り訂正復号方法とを用いて、前記指定された符号化結果データに含まれる暗号文に対応する平文を生成し、前記生成した平文を含む復号結果データを出力し、
前記第１の符号化結果データは前記他の被検査装置が生成した第１の暗号文を含み、前記照合用データは第２の平文を含み、
前記比較では、前記第２の処理部は、前記第１の暗号文に対応して前記第１の復号結果データに含まれる第１の平文と前記第２の平文とを比較する、
請求項１記載の衝突検出システム。
【請求項７】
前記第１の要求は暗号鍵の指定を含み、
前記符号化結果データの出力では、前記第１の処理部は、前記生成回路が生成した値と前記誤り訂正符号化方法とを用いて、前記指定された暗号鍵に対応する秘匿化暗号鍵を生成し、前記生成した秘匿化暗号鍵を含む符号化結果データを出力し、
前記第２の要求は暗号文の指定を更に含み、
前記復号結果データの出力では、前記第１の処理部は、前記生成回路が生成した値と前記誤り訂正復号方法とを用いて、前記指定された符号化結果データに含まれる秘匿化暗号鍵に対応する暗号鍵を生成し、前記生成した暗号鍵を用いて、前記指定された暗号文を復号して平文を生成し、前記生成した平文を含む復号結果データを出力し、
前記第１の符号化結果データは前記他の被検査装置が生成した第１の秘匿化暗号鍵を含み、前記照合用データは第２の平文を含み、前記記憶部は更に第１の暗号文を記憶し、
前記比較では、前記第２の処理部は、前記第１の秘匿化暗号鍵および前記第１の暗号文に対応して前記第１の復号結果データに含まれる第１の平文と前記第２の平文とを比較する、
請求項１記載の衝突検出システム。
【請求項８】
前記第２の処理部は更に、前記第１の復号結果データと前記照合用データとが一致しない場合、前記被検査装置が生成した第２の符号化結果データを前記被検査装置から受信し、前記第２の符号化結果データを前記記憶部に保存する、
請求項１記載の衝突検出システム。
【請求項９】
第１の被検査装置により、前記第１の被検査装置が有する第１の生成回路のハードウェアに依存した値と誤り訂正符号化方法とを用いて、符号化結果データを生成し、前記符号化結果データを検査装置に送信し、
前記検査装置により、前記符号化結果データを第２の被検査装置に送信し、
前記第２の被検査装置により、前記符号化結果データと前記第２の被検査装置が有する第２の生成回路のハードウェアに依存した値と誤り訂正復号方法とを用いて、復号結果データを生成し、前記復号結果データを前記検査装置に送信し、
前記検査装置により、前記検査装置が記憶する照合用データと前記復号結果データとを比較して一致するか否かを判断する、
衝突検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は衝突検出システムおよび衝突検出方法に関する。
【背景技術】
【０００２】
暗号処理技術を用いてデータ保護やユーザ認証を実現し、情報セキュリティを向上させることが行われている。現在提案されている暗号処理技術の中には、ＰＵＦ（Physical Unclonable Function）を利用するものがある。ＰＵＦは、不純物濃度などの物理的特徴に依存する識別子（ＰＵＦ値）を出力する関数である。ＰＵＦ値の違いは、ＰＵＦ値を生成するＰＵＦ回路を製造する上で不可避的に生じる個体差に基づいており、同じＰＵＦ値を生成する複数のＰＵＦ回路を意図的に製造することは困難である。よって、ＰＵＦは複製困難性を有しており、ＰＵＦ値は識別力の高い識別子となる。
【０００３】
ただし、同じＰＵＦ回路から異なるタイミングで生成される複数のＰＵＦ値は、互いに大きく異なることはないものの、完全に一致するとは限らない。例えば、周囲温度などの使用状況に応じて、同じＰＵＦ回路から生成されるＰＵＦ値に揺らぎが生じることがある。そこで、誤り訂正技術を利用してＰＵＦ値の揺らぎを吸収することが提案されている。
【０００４】
例えば、ＰＵＦを用いて秘密情報を保護するセキュリティ装置が提案されている。提案のセキュリティ装置は、ＰＵＦ回路を用いてＰＵＦ値ｘを生成し、ＰＵＦ値ｘから鍵情報ｋを生成し、鍵情報ｋを用いて秘密情報を暗号化して暗号化秘密情報を生成する。セキュリティ装置は、ＰＵＦ値ｘに対応する補助データａと鍵情報ｋのハッシュ値ｈとを生成し、暗号化秘密情報と補助データａとハッシュ値ｈを不揮発性メモリに保存する。
【０００５】
秘密情報を使用するとき、セキュリティ装置は、上記と同じＰＵＦ回路を用いてＰＵＦ値ｘ’を生成し、保存された補助データａを用いてＰＵＦ値ｘ’を誤り訂正処理してＰＵＦ値ｘ’’を生成し、ＰＵＦ値ｘ’’から鍵情報ｋ’’を生成する。セキュリティ装置は、鍵情報ｋ’’のハッシュ値ｈ’’を生成し、保存されたハッシュ値ｈとハッシュ値ｈ’’とを比較する。ｈ’’＝ｈである場合、セキュリティ装置は、その鍵情報ｋ’’を用いて暗号化秘密情報を復号する。ｈ’’＝ｈでない場合、セキュリティ装置は、上記と同じＰＵＦ回路を用いてＰＵＦ値ｘ’を再生成し、鍵情報ｋ’’を再生成する。
【０００６】
また、例えば、ＰＵＦを用いて暗号鍵を保護する暗号鍵供給方法が提案されている。提案の暗号鍵供給方法では、クライアントはＰＵＦ値を生成してサーバに送信する。サーバは、ＰＵＦ値に基づいてクライアントに対応するデバイス固有ＩＤとＰＵＦ値の揺らぎを訂正するためのヘルパーデータとを生成し、デバイス固有ＩＤと暗号鍵からハッシュ関数を生成する。サーバはヘルパーデータとハッシュ関数をクライアントに送信し、クライアントはヘルパーデータとハッシュ関数と新たに生成したＰＵＦ値から暗号鍵を復元する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１２／１６４７２１号
【特許文献２】特開２０１５−６５４９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＰＵＦが有する複製困難性という特徴から、異なるＰＵＦ回路が同一または近似するＰＵＦ値を生成する確率は小さい。ただし、その確率がゼロであることは保証されておらず、異なるＰＵＦ回路の間で偶然にＰＵＦ値の衝突が生じてしまうリスクが残る。ＰＵＦ値の衝突が生じると、情報セキュリティが低下するおそれがある。
【０００９】
そこで、ＰＵＦを利用する複数のセキュリティデバイスの間でＰＵＦ値の衝突が生じていないことを確認したい場合がある。しかし、ＰＵＦ値を保護する観点から、製造後にセキュリティデバイスの外部からＰＵＦ値を直接読み出すことが困難である場合があり、どのようにしてＰＵＦ値の衝突を検出すればよいかが問題となる。
【００１０】
１つの側面では、本発明は、ＰＵＦ値の衝突を検出することができる衝突検出システムおよび衝突検出方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、被検査装置と検査装置とを有する衝突検査システムが提供される。被検査装置は、生成回路と第１の処理部とを有する。生成回路は、ハードウェアに依存する値を生成する。第１の処理部は、第１の要求に応じて、生成回路が生成した値と誤り訂正符号化方法とを用いて、符号化結果データを生成して出力し、符号化結果データの指定を含む第２の要求に応じて、指定された符号化結果データと生成回路が生成した値と誤り訂正復号方法とを用いて、復号結果データを生成して出力する。検査装置は、記憶部と第２の処理部とを有する。記憶部は、他の被検査装置が生成した第１の符号化結果データと照合用データとを記憶する。第２の処理部は、第１の符号化結果データを被検査装置に対して指定して、第１の符号化結果データに応じた第１の復号結果データを被検査装置から受信し、第１の復号結果データと照合用データとを比較して一致するか否かを判断する。
【００１２】
また、１つの態様では、衝突検出方法が提供される。第１の被検査装置により、第１の被検査装置が有する第１の生成回路のハードウェアに依存した値と誤り訂正符号化方法とを用いて、符号化結果データを生成し、符号化結果データを検査装置に送信する。検査装置により、符号化結果データを第２の被検査装置に送信する。第２の被検査装置により、符号化結果データと第２の被検査装置が有する第２の生成回路のハードウェアに依存した値と誤り訂正復号方法とを用いて、復号結果データを生成し、復号結果データを検査装置に送信する。検査装置により、検査装置が記憶する照合用データと復号結果データとを比較して一致するか否かを判断する。
【発明の効果】
【００１３】
１つの側面では、ＰＵＦ値の衝突を検出することができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の衝突検出システムの例を説明する図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】第２の実施の形態のＰＵＦ装置の例を示すブロック図である。
【図４】第２の実施の形態のＰＵＦ回路の例を示す図である。
【図５】第２の実施の形態の検査装置のハードウェア例を示すブロック図である。
【図６】第２の実施の形態の検査装置の機能例を示すブロック図である。
【図７】第２の実施の形態の既出データテーブルの例を示す図である。
【図８】第２の実施の形態のＰＵＦ処理の手順例を示すフローチャートである。
【図９】第２の実施の形態の検査処理の手順例を示すフローチャートである。
【図１０】第３の実施の形態のＰＵＦ装置の例を示すブロック図である。
【図１１】第３の実施の形態のテーブル例を示す図である。
【図１２】第３の実施の形態のＰＵＦ処理の手順例を示すフローチャートである。
【図１３】第３の実施の形態の検査処理の手順例を示すフローチャートである。
【図１４】第４の実施の形態のＰＵＦ装置の例を示すブロック図である。
【図１５】第４の実施の形態のテーブル例を示す図である。
【図１６】第４の実施の形態のＰＵＦ処理の手順例を示すフローチャートである。
【図１７】第４の実施の形態の検査処理の手順例を示すフローチャートである。
【図１８】第５の実施の形態の情報処理システムの例を示す図である。
【図１９】第５の実施の形態のＰＵＦ装置の例を示すブロック図である。
【図２０】第５の実施の形態の装置の機能例を示すブロック図である。
【図２１】第５の実施の形態の検査処理の手順例を示すフローチャートである。
【図２２】第６の実施の形態のＰＵＦ装置の例を示すブロック図である。
【図２３】第６の実施の形態の検査処理の手順例を示すフローチャートである。
【図２４】第７の実施の形態の情報処理システムの例を示す図である。
【図２５】第７の実施の形態のＰＵＦ装置の例を示すブロック図である。
【図２６】第７の実施の形態の装置の機能例を示すブロック図である。
【図２７】第７の実施の形態の公開テーブルの例を示す図である。
【図２８】第７の実施の形態の再検査処理の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１６】
図１は、第１の実施の形態の衝突検出システムの例を説明する図である。
第１の実施の形態の衝突検出システムは、被検査装置１０および検査装置２０を有する。被検査装置１０は、データ保護やユーザ認証などの暗号処理に用いられるハードウェアセキュリティデバイスである。検査装置２０は、被検査装置１０が使用される前などに、被検査装置１０のセキュリティを検査するコンピュータである。検査装置２０は、クライアントコンピュータでもよいしサーバコンピュータでもよい。被検査装置１０は検査装置２０に接続される。被検査装置１０が検査装置２０に内蔵されてもよい。
【００１７】
被検査装置１０は、生成回路１１および処理部１２を有する。生成回路１１と処理部１２の一方または両方が、ＦＰＧＡ（Field Programmable Gate Array）など、製造後に論理回路を変更可能なプログラマブルデバイスを用いて実装されてもよい。また、生成回路１１と処理部１２の一方または両方が、ＡＳＩＣ（Application Specific Integrated Circuit）など、特定用途の専用回路を用いて実装されてもよい。
【００１８】
生成回路１１は、生成回路１１のハードウェアに依存する値を生成する。生成回路１１が生成する値をＰＵＦ値と言うことがある。生成される値は、不純物密度など製造上不可避的に発生する物理的特徴の個体差に依存する。例えば、生成される値の違いは、入力信号の変化に対して出力信号が変わるタイミングの微差や、電源投入直後にメモリ上に現れる初期値の違いなどに基づいて発生する。生成回路１１が異なるタイミングで生成する複数の値は、互いに近似するものの同一になるとは限らず、一定の範囲で揺らぐことがある。また、生成回路１１が、同種の他の生成回路と同一または近似する値を生成してしまう確率は小さい。ただし、製造上の偶然性からその確率はゼロではない。
【００１９】
処理部１２は、被検査装置１０の外部から受け付ける第１の要求に応じて、以下に説明する符号化処理を実行する。また、処理部１２は、被検査装置１０の外部から受け付ける第２の要求に応じて、以下に説明する復号処理を実行する。
【００２０】
符号化処理では、処理部１２は、生成回路１１が生成した値を生成回路１１から読み出す。処理部１２は、読み出した値と所定の誤り訂正符号化方法とを用いて、符号化結果データを生成し、符号化結果データを被検査装置１０の外部に出力する。このとき、処理部１２は、生成回路１１から読み出した値そのものは外部に出力しなくてよい。
【００２１】
例えば、処理部１２は、生成回路１１から読み出した値に近似する他の値を当該読み出した値に訂正するための訂正符号を生成し、符号化結果データとして出力する。また、例えば、処理部１２は、第１の要求で指定された平文を暗号化し、暗号文を符号化結果データとして出力する。また、例えば、処理部１２は、第１の要求で指定された暗号鍵を暗号化し、暗号化された秘匿化暗号鍵を符号化結果データとして出力する。
【００２２】
復号処理では、処理部１２は、生成回路１１が生成した値を生成回路１１から改めて読み出す。処理部１２は、読み出した値と上記の誤り訂正符号化方法に対応する所定の誤り訂正復号方法と第２の要求で指定された符号化結果データとを用いて、復号結果データを生成し、復号結果データを被検査装置１０の外部に出力する。このとき、処理部１２は、生成回路１１から読み出した値そのものは外部に出力しなくてよい。
【００２３】
例えば、処理部１２は、生成回路１１から読み出した値を誤り訂正して訂正値を算出し、訂正値のハッシュ値を復号結果データとして出力する。また、例えば、処理部１２は、第２の要求で指定された暗号文を復号し、復号された平文を復号結果データとして出力する。また、例えば、処理部１２は、第２の要求で指定された秘匿化暗号鍵を復号して暗号鍵を抽出し、第２の要求で指定された暗号文を当該抽出した暗号鍵で復号し、復号された平文を復号結果データとして出力する。
【００２４】
検査装置２０は、記憶部２１および処理部２２を有する。記憶部２１は、ＲＡＭ（Random Access Memory）などの揮発性の半導体メモリでもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性のストレージでもよい。処理部２２は、例えば、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサである。ただし、処理部２２は、ＡＳＩＣやＦＰＧＡなどの特定用途の専用回路を含んでもよい。プロセッサは、ＲＡＭなどのメモリ（記憶部２１でもよい）に記憶されたプログラムを実行する。プログラムには衝突検出プログラムが含まれる。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うこともある。
【００２５】
記憶部２１は、被検査装置１０とは異なる被検査装置１０ａが生成した符号化結果データ２３を記憶する。例えば、符号化結果データ２３は、被検査装置１０ａが上記の処理部１２と同様の符号化処理によって生成し、被検査装置１０ａから検査装置２０に送信されたものである。符号化結果データ２３の生成では、例えば、被検査装置１０ａが有する生成回路によって生成された値が使用される。被検査装置１０の生成回路１１が生成する値と被検査装置１０ａの生成回路が生成する値との間の差異は、上記の誤り訂正復号方法にとって小さな差異である（訂正可能ノイズに相当する）場合もあるし、大きな差異である（訂正不能ノイズに相当する）場合もある。
【００２６】
また、記憶部２１は、照合用データ２４を記憶する。照合用データ２４は、被検査装置１０の検査に使用されるデータである。照合用データ２４は、例えば、被検査装置１０ａが上記の処理部１２と同様の復号処理によって生成したハッシュ値である。また、照合用データ２４は、例えば、被検査装置１０ａが符号化結果データ２３として暗号文を生成したときに使用された元の平文である。また、照合用データ２４は、例えば、被検査装置１０に入力することになる暗号文に対応する元の平文である。
【００２７】
処理部２２は、符号化結果データ２３と照合用データ２４を用いて被検査装置１０を検査する。処理部２２は、符号化結果データ２３を指定した第２の要求を被検査装置１０に送信し、第２の要求に対する応答として復号結果データ２５を被検査装置１０から受信する。処理部２２は、照合用データ２４と復号結果データ２５とを比較して一致するか否かを判断する。
【００２８】
照合用データ２４と復号結果データ２５とが一致する場合、例えば、処理部２２は、被検査装置１０の生成回路１１と被検査装置１０ａの生成回路の間で、生成される値の衝突が発生すると判定する。その場合、被検査装置１０を使用しないか、または、被検査装置１０の設定を変更して衝突を回避することが好ましい。一方、照合用データ２４と復号結果データ２５とが一致しない場合、例えば、処理部２２は、被検査装置１０の生成回路１１と被検査装置１０ａの生成回路の間で、生成される値の衝突は発生しないと判定する。
【００２９】
例えば、処理部２２は、符号化結果データ２３として被検査装置１０ａが生成した訂正符号を被検査装置１０に送信し、復号結果データ２５として被検査装置１０が生成したハッシュ値を受信する。処理部２２は、受信したハッシュ値と照合用データ２４として被検査装置１０ａが生成したハッシュ値と比較する。また、例えば、処理部２２は、符号化結果データ２３として被検査装置１０ａが生成した暗号文を被検査装置１０に送信し、復号結果データ２５として被検査装置１０が復号した平文を受信する。処理部２２は、受信した平文と照合用データ２４としての平文とを比較する。また、例えば、処理部２２は、符号化結果データ２３として被検査装置１０ａが生成した秘匿化暗号鍵と暗号文とを被検査装置１０に送信し、復号結果データ２５として被検査装置１０が復号した平文を受信する。処理部２２は、受信した平文と照合用データ２４としての平文とを比較する。
【００３０】
第１の実施の形態の衝突検査システムによれば、複数の被検査装置の外部から、それら複数の被検査装置の内部で使用されている生成回路の値の衝突を検出することができる。これにより、衝突が生じている被検査装置の使用を避けるなどの対策をとることができ、情報セキュリティを向上させることができる。また、被検査装置から生成回路の値そのものを取得しなくても衝突検出が可能となり、生成回路の値を出力するインタフェースを被検査装置に搭載しなくてよく、被検査装置の安全性を向上させることができる。また、誤り訂正技術を利用することで、異なる被検査装置の生成回路が近似する値を生成することも検出でき、生成される値の揺らぎを吸収することができる。
【００３１】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の情報処理システムの例を示す図である。
【００３２】
第２の実施の形態の情報処理システムは、複数のＰＵＦ装置を検査する。この情報処理システムは、ＰＵＦ装置１００，１００−１，１００−２を含む複数のＰＵＦ装置と検査装置２００とを有する。複数のＰＵＦ装置それぞれは、データ保護やユーザ認証などの暗号処理を安全に実行するハードウェアセキュリティデバイスである。検査装置２００は、複数のＰＵＦ装置をそれぞれ接続して検査するコンピュータである。検査装置２００は、クライアントコンピュータでもよいしサーバコンピュータでもよい。
【００３３】
ＰＵＦ装置の検査は、例えば、ＰＵＦ装置を製造する製造者によってＰＵＦ装置の出荷前に行われる。ただし、ＰＵＦ装置の検査は、ＰＵＦ装置を調達してＰＵＦ装置を組み込んだ電子機器を提供するベンダーによって行われてもよい。また、ＰＵＦ装置の検査は、ＰＵＦ装置またはＰＵＦ装置を組み込んだ電子機器を使用するユーザによって行われてもよく、その他の第三者によって行われてもよい。なお、ＰＵＦ装置を組み込んだ電子機器（例えば、ＰＵＦ装置を有するサーバ装置）が出荷される場合、ＰＵＦ装置を電子機器に組み込んだ後にＰＵＦ装置の検査を行ってもよい。その場合、ネットワークを介してその電子機器と検査装置２００とを接続してもよい。また、後述する検査装置２００の検査機能がその電子機器に搭載されるようにしてもよい。
【００３４】
図３は、第２の実施の形態のＰＵＦ装置の例を示すブロック図である。
ＰＵＦ装置１００は、入出力インタフェース１０１、制御部１０２、ＰＵＦ回路１０３、補助データ生成部１０４、誤り訂正部１０５およびハッシュ関数部１０６を有する。ＰＵＦ装置１００の一部分または全体が、ＦＰＧＡなどのプログラマブルデバイスを用いて実装されてもよい。また、ＰＵＦ装置１００の一部分または全体が、専用回路であるＡＳＩＣを用いて実装されてもよい。ＰＵＦ装置１００−１，１００−２などの他のＰＵＦ装置も、ＰＵＦ装置１００と同様のハードウェアを用いて実装できる。
【００３５】
入出力インタフェース１０１は、検査装置２００からコマンドを受信し、コマンドの実行結果を検査装置２００に出力するインタフェースである。第２の実施の形態ではコマンドの種類として、補助データ取得コマンドとハッシュ値取得コマンドが挙げられる。補助データ取得コマンドに対しては、ＰＵＦ装置１００で生成された補助データが出力される。ハッシュ値取得コマンドには、事前に生成された補助データが付加されている。ハッシュ値取得コマンドに対しては、ＰＵＦ装置１００で生成されたハッシュ値が出力される。補助データの生成やハッシュ値の生成には、ＰＵＦ装置１００内部で生成されるＰＵＦ値が使用されるものの、ＰＵＦ値自体はＰＵＦ装置１００の外部に出力されない。
【００３６】
制御部１０２は、入出力インタフェース１０１からコマンドを取得し、ＰＵＦ回路１０３、補助データ生成部１０４、誤り訂正部１０５およびハッシュ関数部１０６を利用して暗号処理を実行し、暗号処理結果を入出力インタフェース１０１に出力する。
【００３７】
補助データ取得コマンドに対しては、制御部１０２は、ＰＵＦ回路１０３からＰＵＦ値を読み出し、読み出したＰＵＦ値を補助データ生成部１０４に入力して補助データを補助データ生成部１０４から取得する。ハッシュ値取得コマンドに対しては、制御部１０２は、ＰＵＦ回路１０３からＰＵＦ値を読み出し、読み出したＰＵＦ値とハッシュ値取得コマンドに付加された補助データとを誤り訂正部１０５に入力して訂正ＰＵＦ値を誤り訂正部１０５から取得する。そして、制御部１０２は、訂正ＰＵＦ値をハッシュ関数部１０６に入力してハッシュ値をハッシュ関数部１０６から取得する。
【００３８】
ＰＵＦ回路１０３は、ＰＵＦを利用してハードウェア固有の値であるＰＵＦ値を生成する電子回路である。ＰＵＦ値は、不純物密度など製造上不可避的に発生するハードウェアの個体差に依存する。ＰＵＦ値は、ＰＵＦ装置１００の外部から直接読み出すことは困難となっており、漏洩リスクが小さく物理的に保護されている。ＰＵＦ値の複製の困難性から、データ保護やユーザ認証などの暗号処理を強化することができる。
【００３９】
ＰＵＦ値は次のような性質をもつ。ＰＵＦ回路１０３が異なるタイミングで生成するＰＵＦ値は、大きく異なることはないものの常に同一の値になるとは限らず、ＰＵＦ装置１００の使用環境などに応じて一定の範囲で揺らぐことがある。ＰＵＦ値の変化は、ＰＵＦ値の長さ（全ビット数）と比べて十分少ないビットについて発生する。また、ＰＵＦ回路１０３が他のＰＵＦ回路と同一または十分に近似するＰＵＦ値を生成してしまう確率（ＰＵＦ値が衝突する確率）は十分に小さい。ただし、製造上の偶然性から、複数のＰＵＦ回路の間でＰＵＦ値の衝突が発生する確率はゼロではない。第２の実施の形態のＰＵＦ装置の検査では、ＰＵＦ値の衝突の検査が行われる。
【００４０】
補助データ生成部１０４は、制御部１０２からＰＵＦ値を取得し、取得したＰＵＦ値に対応する補助データを生成して制御部１０２に補助データを出力する。補助データは、誤り訂正技術を用いてＰＵＦ値に対して生成される付随的ビット列であり、ＰＵＦ値の揺らぎの訂正に用いられる。第２の実施の形態ではＰＵＦ値の揺らぎは、基準となるＰＵＦ値に対して付加されたノイズとみなされる。補助データの生成時に補助データ生成部１０４に入力されたＰＵＦ値が基準のＰＵＦ値となる。この基準のＰＵＦ値から誤り訂正能力の範囲内にある他のＰＵＦ値、すなわち、基準のＰＵＦ値とのハミング距離が訂正可能ビット数以下である他のＰＵＦ値は、補助データを用いて基準のＰＵＦ値に変換可能である。
【００４１】
誤り訂正部１０５は、制御部１０２からＰＵＦ値と補助データを取得し、取得した補助データを用いてＰＵＦ値に対して誤り訂正処理を行って訂正ＰＵＦ値を生成し、訂正ＰＵＦ値を制御部１０２に出力する。誤り訂正部１０５に入力されたＰＵＦ値と補助データ生成時の基準のＰＵＦ値とが十分に近似している場合、すなわち、両者のハミング距離が訂正可能ビット数以下である場合、誤り訂正が成功するため訂正ＰＵＦ値は基準のＰＵＦ値と一致する。一方、両者のハミング距離が訂正可能ビット数を超える場合、誤り訂正が失敗するため訂正ＰＵＦ値は基準のＰＵＦ値と一致しない。
【００４２】
補助データの生成手順および使用手順は、採用する誤り訂正技術に依存する。補助データの生成手順および使用手順は、特許文献１（国際公開第２０１２／１６４７２１号）にも記載されている。ここでは、補助データの生成手順と使用手順の一例を説明する。
【００４３】
ＰＵＦ回路１０３がＰＵＦ値ｘ＝（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５）＝１０１１０を生成し、このＰＵＦ値ｘが補助データ生成部１０４に入力されたとする。補助データ生成部１０４は、ＰＵＦ値ｘに対して補助データａｘ＝（ｘ１＋ｘ２，ｘ１＋ｘ３，ｘ１＋ｘ４，ｘ１＋ｘ５）＝１００１を生成する。ここでは加算記号「＋」はビット毎の排他的論理和を示している。その後、ＰＵＦ回路１０３がＰＵＦ値ｙ＝（ｙ１，ｙ２，ｙ３，ｙ４，ｙ５）＝１００００を生成し、このＰＵＦ値ｙと上記の補助データａｘが誤り訂正部１０５に入力されたとする。誤り訂正部１０５は、ＰＵＦ値ｙに対して補助データａｙ＝（ｙ１＋ｙ２，ｙ１＋ｙ３，ｙ１＋ｙ４，ｙ１＋ｙ５）＝１１１１を生成する。誤り訂正部１０５は、補助データａｘと補助データａｙを比較して、エラー値ｅ＝ａｘ＋ａｙ＝（ｅ１，ｅ２，ｅ３，ｅ４）＝０１１０を生成する。
【００４４】
誤り訂正部１０５は、エラー値ｅに基づいてＰＵＦ値ｙの中の誤りビットを検出する。ここで、ＳＵＭ（ｅ）をエラー値ｅの中の「１」であるビットの数とし、ＳＬ（ｅ）＝（ｅ１＋ｅ２，ｅ１＋ｅ３，ｅ１＋ｅ４，ｅ１）とする。誤り訂正部１０５は、ＳＵＭ（ｅ）と閾値Ｔｈ＝３とを比較し、ＳＵＭ（ｅ）＝２が閾値Ｔｈ未満であるためｙ１に誤りはないと判定する。次に、誤り訂正部１０５は、エラー値ｅ＝ＳＬ（ｅ）＝１１００と更新し、ＳＵＭ（ｅ）＝２が閾値Ｔｈ未満であるためｙ２に誤りはないと判定する。次に、誤り訂正部１０５は、エラー値ｅ＝ＳＬ（ｅ）＝０１１１と更新し、ＳＵＭ（ｅ）＝３が閾値Ｔｈ以上であるためｙ３に誤りがあると判定する。
【００４５】
次に、誤り訂正部１０５は、エラー値ｅ＝ＳＬ（ｅ）＝１１１０と更新し、ＳＵＭ（ｅ）＝３が閾値Ｔｈ以上であるためｙ４に誤りがあると判定する。次に、誤り訂正部１０５は、エラー値ｅ＝ＳＬ（ｅ）＝００１１と更新し、ＳＵＭ（ｅ）＝２が閾値Ｔｈ未満であるためｙ５に誤りはないと判定する。ＳＵＭ（ｅ）と閾値Ｔｈの比較をＰＵＦ値ｙのビット数だけ繰り返したため、誤り訂正部１０５は判定処理を終了する。これにより、ＰＵＦ値ｙの中のｙ３，ｙ４に誤りがあると判定される。誤り訂正部１０５は、ＰＵＦ値ｙ＝１００００を訂正ＰＵＦ値ｙ’＝１０１１０＝ＰＵＦ値ｘに変換する。
【００４６】
ハッシュ関数部１０６は、制御部１０２から訂正ＰＵＦ値を取得し、所定のハッシュ関数を用いて訂正ＰＵＦ値のハッシュ値を算出し、ハッシュ値を制御部１０２に出力する。ハッシュ値から元の訂正ＰＵＦ値を推測することは困難である。ハッシュ関数部１０６は、例えば、ＳＨＡ（Secure Hash Algorithm）２５６などのハッシュ関数を使用する。
【００４７】
図４は、第２の実施の形態のＰＵＦ回路の例を示す図である。
ＰＵＦ回路１０３の実装方法としてラッチ回路を利用する方法が考えられる。一例として、ＰＵＦ回路１０３は、ｎ個（ｎはＰＵＦ値のビット数を示す自然数）のラッチ回路であるラッチ回路１０７−１，１０７−２，…，１０７−ｎを含む。ｎ個のラッチ回路はＰＵＦ値を構成するｎビットに対応する。ラッチ回路１０７−１はＰＵＦ値の最下位ビットの値を出力する。ラッチ回路１０７−２はＰＵＦ値の下から２番目のビットの値を出力する。ラッチ回路１０７−ｎはＰＵＦ値の最上位ビットの値を出力する。
【００４８】
ラッチ回路１０７−１，１０７−２，…，１０７−ｎは同じ構造を有する。各ラッチ回路は２つのＮＡＮＤ回路（第１のＮＡＮＤ回路と第２のＮＡＮＤ回路）を含む。第１のＮＡＮＤ回路は、ラッチ回路外部からの入力信号が入力される第１の入力端と、第２のＮＡＮＤ回路の出力信号がフィードバックされる第２の入力端とを有する。また、第１のＮＡＮＤ回路は、出力信号が出力される出力端を有する。第１のＮＡＮＤ回路の出力信号は、ラッチ回路外部への出力信号となる。第２のＮＡＮＤ回路は、第１のＮＡＮＤ回路と同じラッチ回路外部からの入力信号が入力される第１の入力端と、第１のＮＡＮＤ回路の出力信号がフィードバックされる第２の入力端とを有する。また、第２のＮＡＮＤ回路は、出力信号が出力される出力端を有する。
【００４９】
このようなラッチ回路１０７−１，１０７−２，…，１０７−ｎに対して所定の入力値（例えば、「１」）を入力すると、論理的には、各ラッチ回路の出力値は不定になる。しかし、不純物の密度など各ラッチ回路の物理的特徴から、特定の出力値が出力されやすいという傾向（「１」の出力されやすさと「０」の出力されやすさ）がラッチ回路毎に決まる。よって、ラッチ回路１０７−１，１０７−２，…，１０７−ｎを用いて生成されるｎビットのＰＵＦ値は、概ねＰＵＦ回路１０３固有の値をとる。ただし、論理的には各ラッチ回路の出力値は不定であり、常に同じ値が出力されることは保証されない。よって、ＰＵＦ値は大きく変化しないものの一定範囲で揺らぐことがある。
【００５０】
図５は、第２の実施の形態の検査装置のハードウェア例を示すブロック図である。
検査装置２００は、ＣＰＵ２０１、ＲＡＭ２０２、ＨＤＤ２０３、画像信号処理部２０４、入力信号処理部２０５、媒体リーダ２０６、通信インタフェース２０７および接続インタフェース２０８を有する。上記のユニットはバス２０９に接続されている。
【００５１】
ＣＰＵ２０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ２０１は、ＨＤＤ２０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ２０２にロードし、プログラムを実行する。なお、ＣＰＵ２０１は複数のプロセッサコアを備えてもよく、検査装置２００は複数のプロセッサを備えてもよく、以下の処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００５２】
ＲＡＭ２０２は、ＣＰＵ２０１が実行するプログラムやＣＰＵ２０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、検査装置２００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００５３】
ＨＤＤ２０３は、ＯＳ（Operating System）やアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、検査装置２００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００５４】
画像信号処理部２０４は、ＣＰＵ２０１からの命令に従って、検査装置２００に接続されたディスプレイ２１１に画像を出力する。ディスプレイ２１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを用いることができる。
【００５５】
入力信号処理部２０５は、検査装置２００に接続された入力デバイス２１２から入力信号を取得し、ＣＰＵ２０１に通知する。入力デバイス２１２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、検査装置２００に複数の種類の入力デバイスが接続されていてもよい。
【００５６】
媒体リーダ２０６は、記録媒体２１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体２１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００５７】
媒体リーダ２０６は、例えば、記録媒体２１３から読み取ったプログラムやデータを、ＲＡＭ２０２やＨＤＤ２０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ２０１によって実行される。なお、記録媒体２１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体２１３やＨＤＤ２０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００５８】
通信インタフェース２０７は、ネットワーク６１に接続され、ネットワーク６１を介して他の装置と通信を行うインタフェースである。通信インタフェース２０７は、例えば、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースである。ただし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【００５９】
接続インタフェース２０８は、一度に１以上のＰＵＦ装置を接続するインタフェースである。ＰＵＦ装置１００，１００−１，１００−２，…は接続インタフェース２０８に対して着脱可能である。例えば、接続インタフェース２０８にＰＵＦ装置１００を接続し、その後にＰＵＦ装置１００を取り外してＰＵＦ装置１００−１を接続するというように、複数のＰＵＦ装置を切り替えながら接続することができる。接続インタフェース２０８は、ＣＰＵ２０１からの指示に応じて、接続中のＰＵＦ装置に対してコマンドを送信する。接続インタフェース２０８は、接続中のＰＵＦ装置からコマンドの実行結果としてのデータを取得し、取得したデータをＣＰＵ２０１に通知する。
【００６０】
図６は、第２の実施の形態の検査装置の機能例を示すブロック図である。
検査装置２００は、検査用データベース２２１、衝突検出部２２２および検査結果表示部２２３を有する。検査用データベース２２１は、例えば、ＲＡＭ２０２またはＨＤＤ２０３に確保した記憶領域を用いて実装される。衝突検出部２２２および検査結果表示部２２３は、例えば、ＣＰＵ２０１が実行するプログラムを用いて実装される。
【００６１】
検査用データベース２２１は、これまでに検査したＰＵＦ装置についてのデータを蓄積するデータベースである。検査用データベース２２１に蓄積されるデータは、検査対象とする複数のＰＵＦ装置のインタフェースに依存する。第２の実施の形態では検査用データベース２２１には、各ＰＵＦ装置から取得された補助データとハッシュ値が蓄積される。
【００６２】
衝突検出部２２２は、検査装置２００に新たなＰＵＦ装置が接続されると、検査用データベース２２１に蓄積されたデータを利用して当該接続されたＰＵＦ装置の検査を行う。ＰＵＦ装置の検査では、衝突検出部２２２は、接続されたＰＵＦ装置のＰＵＦ値がこれまでに検査した何れかのＰＵＦ装置のＰＵＦ値と衝突しているか否か判定する。衝突検出部２２２の検査方法は、検査対象とする複数のＰＵＦ装置のインタフェースに依存する。第２の実施の形態では衝突検出部２２２は、検査済みのＰＵＦ装置の補助データ（既存補助データ）を当該接続されたＰＵＦ装置に入力し、当該接続されたＰＵＦ装置からハッシュ値を取得する。衝突検出部２２２は、取得したハッシュ値が検査済みのＰＵＦ装置のハッシュ値（既存ハッシュ値）と同一である場合はＰＵＦ値の衝突が生じていると判定し、同一でない場合はＰＵＦ値の衝突が生じていないと判定する。
【００６３】
第２の実施の形態のＰＵＦ装置は誤り訂正技術を用いてＰＵＦ値の揺らぎを訂正している。このため、２つのＰＵＦ装置の間でＰＵＦ値が衝突するとは、原始的なＰＵＦ値が完全に一致する場合に限られない。２つのＰＵＦ装置の間でＰＵＦ値が衝突するとは、２つのＰＵＦ装置のＰＵＦ値が一方から他方に訂正可能であるほど近似している場合、すなわち、ＰＵＦ値の揺らぎの範囲が２つのＰＵＦ装置の間で重なっている場合を含む。
【００６４】
検査結果表示部２２３は、衝突検出部２２２の検査結果をディスプレイ２１１に表示する。例えば、検査結果表示部２２３は、接続中のＰＵＦ装置について「衝突あり」または「衝突なし」のメッセージをディスプレイ２１１に表示する。ただし、検査結果表示部２２３は、衝突ありの場合のみ警告メッセージをディスプレイ２１１に表示してもよい。また、検査装置２００は、衝突検出部２２２の検査結果を他の出力デバイスに出力することも可能である。例えば、検査装置２００は、検査結果をファイルに記録する、検査結果を他の装置に転送する、検査結果をプリンタに印刷させるなどが考えられる。
【００６５】
図７は、第２の実施の形態の既出データテーブルの例を示す図である。
第２の実施の形態では、検査用データベース２２１は既出データテーブル２２４を記憶する。既出データテーブル２２４は、既出補助データおよび既出ハッシュ値の項目を有する。既出補助データの項目には、検査済みのＰＵＦ装置から取得された補助データが登録される。既出ハッシュ値の項目には、検査済みのＰＵＦ装置から取得されたハッシュ値が登録される。既出データテーブル２２４では、同一のＰＵＦ装置についての既出補助データと既出ハッシュ値とが対応付けられている。
【００６６】
例えば、ＰＵＦ装置１００−１から補助データａ＃１とハッシュ値ｈａｓｈ＃１とが取得され、ＰＵＦ装置１００−２から補助データａ＃２とハッシュ値ｈａｓｈ＃２とが取得されたとする。この場合、既出データテーブル２２４には、補助データａ＃１とハッシュ値ｈａｓｈ＃１とが対応付けて登録され、また、補助データａ＃２とハッシュ値ｈａｓｈ＃２とが対応付けて登録される。
【００６７】
図８は、第２の実施の形態のＰＵＦ処理の手順例を示すフローチャートである。
（Ｓ１１０）入出力インタフェース１０１は、検査装置２００からコマンドを受信する。入出力インタフェース１０１は、受信したコマンドを制御部１０２に出力する。
【００６８】
（Ｓ１１１）制御部１０２は、取得したコマンドが補助データ取得コマンドであるか判断する。取得したコマンドが補助データ取得コマンドである場合、ステップＳ１１２に処理が進む。取得したコマンドが補助データ取得コマンドでない場合、すなわち、ハッシュ値取得コマンドである場合、ステップＳ１１５に処理が進む。
【００６９】
（Ｓ１１２）制御部１０２は、ＰＵＦ回路１０３にＰＵＦ値を生成させ、ＰＵＦ回路１０３からＰＵＦ値を読み出す。ＰＵＦ値はＰＵＦ回路１０３にデータとして静的に記録されているわけではなく、読み出し毎にＰＵＦ回路１０３がＰＵＦ値を生成する。生成されるＰＵＦ値は常に同じであるとは限らず、若干変化することがある。
【００７０】
（Ｓ１１３）制御部１０２は、ステップＳ１１２で読み出したＰＵＦ値を補助データ生成部１０４に入力する。補助データ生成部１０４は、前述のような誤り訂正技術を用いて、ステップＳ１１２のＰＵＦ値に対応する補助データを生成する。この補助データは、ステップＳ１１２のＰＵＦ値と近似するＰＵＦ値（ハミング距離が訂正可能ビット数以下であるＰＵＦ値）を、ステップＳ１１２のＰＵＦ値に訂正するためのデータである。補助データ生成部１０４は、生成した補助データを制御部１０２に出力する。
【００７１】
（Ｓ１１４）制御部１０２は、ステップＳ１１３で取得した補助データを入出力インタフェース１０１に出力する。入出力インタフェース１０１は、補助データ取得コマンドに対する応答として補助データを返信する。
【００７２】
（Ｓ１１５）制御部１０２は、ハッシュ値取得コマンドに付加されて入力された補助データを受け付ける。受け付ける補助データは、ＰＵＦ装置１００が生成した補助データである場合もあるし、他のＰＵＦ装置が生成した補助データである場合もある。
【００７３】
（Ｓ１１６）制御部１０２は、ステップＳ１１２と同様にＰＵＦ回路１０３にＰＵＦ値を生成させ、ＰＵＦ回路１０３からＰＵＦ値を読み出す。ここで読み出されるＰＵＦ値は、ステップＳ１１２のＰＵＦ値と同一であるとは限らない。
【００７４】
（Ｓ１１７）制御部１０２は、ステップＳ１１６で読み出したＰＵＦ値とステップＳ１１５で受け付けた補助データとを誤り訂正部１０５に入力する。誤り訂正部１０５は、前述のような誤り訂正技術を用いて、ステップＳ１１５の補助データを用いてステップＳ１１６のＰＵＦ値の誤り訂正を試み、訂正ＰＵＦ値を生成する。ステップＳ１１６のＰＵＦ値が、ステップＳ１１５の補助データの生成に使用されたＰＵＦ値と近似している場合（ハミング距離が訂正可能ビット数以下である場合）、訂正ＰＵＦ値は補助データ生成時のＰＵＦ値と一致する。それ以外の場合、訂正ＰＵＦ値は補助データ生成時のＰＵＦ値と一致しない。誤り訂正部１０５は、生成した訂正ＰＵＦ値を制御部１０２に出力する。
【００７５】
（Ｓ１１８）制御部１０２は、ステップＳ１１７で取得した訂正ＰＵＦ値をハッシュ関数部１０６に入力する。ハッシュ関数部１０６は、所定のハッシュ関数を用いて訂正ＰＵＦ値のハッシュ値を算出し、ハッシュ値を制御部１０２に出力する。
【００７６】
（Ｓ１１９）制御部１０２は、ステップＳ１１８で取得したハッシュ値を入出力インタフェース１０１に出力する。入出力インタフェース１０１は、ハッシュ値取得コマンドに対する応答としてハッシュ値を返信する。
【００７７】
図９は、第２の実施の形態の検査処理の手順例を示すフローチャートである。
（Ｓ２１０）衝突検出部２２２は、既出データテーブル２２４に未選択のレコードが残っているか判断する。未選択のレコードがある場合はステップＳ２１１に処理が進み、全てのレコードを選択した場合はステップＳ２１５に処理が進む。
【００７８】
（Ｓ２１１）衝突検出部２２２は、既出データテーブル２２４から、検査装置２００に接続中のＰＵＦ装置とは異なる過去に検査したＰＵＦ装置についてのレコードを１つ選択する。選択するレコードは、既出補助データと既出ハッシュ値とを含む。
【００７９】
（Ｓ２１２）衝突検出部２２２は、ステップＳ２１１で取得した既出補助データを指定して、接続中のＰＵＦ装置にハッシュ値取得コマンドを送信する。衝突検出部２２２は、ハッシュ値取得コマンドに対する応答としてハッシュ値を取得する。
【００８０】
（Ｓ２１３）衝突検出部２２２は、ステップＳ２１２で取得したハッシュ値がステップＳ２１１の既出ハッシュ値と一致するか判断する。取得したハッシュ値が既出ハッシュ値と一致する場合はステップＳ２１４に処理が進み、取得したハッシュ値が既出ハッシュ値と一致しない場合はステップＳ２１０に処理が進む。
【００８１】
（Ｓ２１４）衝突検出部２２２は、接続中のＰＵＦ装置と過去に検査したＰＵＦ装置との間でＰＵＦ値の衝突が生じていると判定する。検査結果表示部２２３は、「衝突あり」のメッセージをディスプレイ２１１に表示する。
【００８２】
（Ｓ２１５）衝突検出部２２２は、接続中のＰＵＦ装置に補助データ取得コマンドを送信し、補助データ取得コマンドに対する応答として補助データを取得する。
（Ｓ２１６）衝突検出部２２２は、ステップＳ２１５で取得した補助データを指定して、接続中のＰＵＦ装置にハッシュ値取得コマンドを送信する。衝突検出部２２２は、ハッシュ値取得コマンドに対する応答としてハッシュ値を取得する。
【００８３】
（Ｓ２１７）衝突検出部２２２は、ステップＳ２１５で取得した補助データを既出補助データとし、ステップＳ２１６で取得したハッシュ値を既出ハッシュ値として、既出補助データと既出ハッシュ値とを対応付けて既出データテーブル２２４に記録する。
【００８４】
（Ｓ２１８）衝突検出部２２２は、接続中のＰＵＦ装置と過去に検査したＰＵＦ装置との間でＰＵＦ値の衝突が生じていないと判定する。検査結果表示部２２３は、「衝突なし」のメッセージをディスプレイ２１１に表示する。
【００８５】
第２の実施の形態の情報処理システムによれば、それぞれがＰＵＦ回路を有する複数のＰＵＦ装置の製造後に、それら複数のＰＵＦ装置の外部からＰＵＦ値の衝突を検出することができる。よって、ＰＵＦ値が衝突するＰＵＦ装置の出荷や使用を避けるなどの対策をとることができ、情報セキュリティを向上させることができる。また、検査装置２００はＰＵＦ値そのものを取得しなくてもＰＵＦ値の衝突を検出できるため、ＰＵＦ値を外部出力するインタフェースを各ＰＵＦ装置に搭載しなくてもよく、ＰＵＦ装置の安全性を向上させることができる。また、誤り訂正技術を利用することで、異なるＰＵＦ装置のＰＵＦ回路が同一のＰＵＦ値を生成した場合に限らず近似するＰＵＦ値を生成した場合も、ＰＵＦ値の衝突として検出でき、ＰＵＦ値の揺らぎを吸収することができる。
【００８６】
［第３の実施の形態］
次に、第３の実施の形態を説明する。第２の実施の形態と異なる事項を中心に説明し、第２の実施の形態と同様の事項については説明を省略することがある。
【００８７】
第３の実施の形態の情報処理システムは、ＰＵＦ装置の機能および検査手順が第２の実施の形態と異なる。第３の実施の形態の情報処理システムは、図２に示した第２の実施の形態の情報処理システムと同様の構成によって実現できる。また、第３の実施の形態の検査装置は、図４，５に示した第２の実施の形態の検査装置と同様の構成によって実現できる。検査装置については、第２の実施の形態と同じ符号を用いて説明する。
【００８８】
図１０は、第３の実施の形態のＰＵＦ装置の例を示すブロック図である。
第２の実施の形態のＰＵＦ装置１００に代えてＰＵＦ装置１００ａが使用される。ＰＵＦ装置１００ａは、入出力インタフェース１１１、制御部１１２、ＰＵＦ回路１１３、暗号化部１１４および復号部１１５を有する。ＰＵＦ装置１００ａの一部分または全体が、ＦＰＧＡなどのプログラマブルデバイスを用いて実装されてもよい。また、ＰＵＦ装置１００ａの一部分または全体がＡＳＩＣを用いて実装されてもよい。
【００８９】
入出力インタフェース１１１は、検査装置２００からコマンドを受信し、コマンドの実行結果を検査装置２００に出力するインタフェースである。第３の実施の形態ではコマンドの種類として、暗号化コマンドと復号コマンドが挙げられる。暗号化コマンドには平文が付加されている。暗号化コマンドに対しては、平文を暗号化して生成された暗号文が出力される。復号コマンドには暗号文が付加されている。復号コマンドに対しては、暗号文を復号して生成された平文が出力される。暗号化や復号にはＰＵＦ値が使用されるものの、ＰＵＦ値自体はＰＵＦ装置１００ａの外部に出力されない。
【００９０】
制御部１１２は、入出力インタフェース１１１からコマンドを取得し、ＰＵＦ回路１１３、暗号化部１１４および復号部１１５を利用して暗号処理を実行し、暗号処理結果を入出力インタフェース１１１に出力する。暗号化コマンドに対しては、制御部１１２は、ＰＵＦ回路１１３からＰＵＦ値を読み出し、読み出したＰＵＦ値と平文とを暗号化部１１４に入力して暗号文を暗号化部１１４から取得する。復号コマンドに対しては、制御部１１２は、ＰＵＦ回路１１３からＰＵＦ値を読み出し、読み出したＰＵＦ値と暗号文とを復号部１１５に入力して平文を復号部１１５から取得する。
【００９１】
ＰＵＦ回路１１３は、ＰＵＦを利用してハードウェア固有の値であるＰＵＦ値を生成する電子回路であり、第２の実施の形態のＰＵＦ回路１０３に対応する。
暗号化部１１４は、制御部１１２からＰＵＦ値と平文を取得し、ＰＵＦ値を用いて平文を暗号化して暗号文を生成し、暗号文を制御部１１２に出力する。ＰＵＦ値は暗号鍵として使用される。ＰＵＦ値をＰＵＦ装置１００ａの外部から読み出すことは困難であるため、ＰＵＦ装置１００ａによって暗号鍵が保護され、ＰＵＦ装置１００ａが生成した暗号文を他のＰＵＦ装置で復号することは困難となる。ただし、ＰＵＦ値には揺らぎが生じるため、暗号化部１１４は、揺らぎを吸収できるように誤り訂正技術を使用する。
【００９２】
一例として、暗号化部１１４は、誤り訂正符号化関数Ｅ２を用いて平文Ｐを符号化してＥ２（Ｐ）を算出する。暗号化部１１４は、乱数ｓを生成し、乱数ｓを用いてＥ２（Ｐ）をマスク処理してＥ２（Ｐ）＋ｓを算出する。暗号化部１１４は、誤り訂正符号化関数Ｅ１を用いてＥ２（Ｐ）＋ｓを更に符号化してＥ１（Ｅ２（Ｐ）＋ｓ）を算出する。そして、暗号化部１１４は、暗号化時におけるＰＵＦ値ｘを用いてＥ１（Ｅ２（Ｐ）＋ｓ）をマスク処理して、暗号文Ｃ＝ｘ＋Ｅ１（Ｅ２（Ｐ）＋ｓ）を生成する。
【００９３】
上記において、加算記号「＋」はビット毎の排他的論理和を示す。乱数ｓのハミング重み（「１」であるビットの数）は、誤り訂正符号化関数Ｅ２の訂正可能ビット数以下（Ｅ２の誤り訂正能力の範囲内）になるようにする。ＰＵＦ値ｘのハミング重みは、誤り訂正符号化関数Ｅ１の訂正可能ビット数を超えるようにする。誤り訂正符号化関数Ｅ１，Ｅ２は、同じ種類の符号方式を用いてもよいし異なる種類の符号方式を用いてもよい。誤り訂正符号化関数Ｅ１が用いる符号方式は、好ましくは線形符号方式である。
【００９４】
例えば、誤り訂正符号化関数Ｅ１は（ｎ，ｋ1，２ｄ1＋１）の線形符号方式を用いる。「ｎ」は符号化後のビット長、「ｋ1」は符号化前のビット長、「ｄ1」は訂正可能ビット数を表す。誤り訂正符号化関数Ｅ２は（ｋ2，ｐ，２ｄ2＋１）の線形符号方式または非線形符号方式を用いる。「ｋ2」は符号化後のビット長、「ｐ」は符号化前のビット長、「ｄ2」は訂正可能ビット数を示す。ｋ2はｋ1と同じかｋ1より小さい。
【００９５】
線形符号の例として、ハミング符号、ＢＣＨ（Bose Chaudhuri Hocquenghem）符号、リードソロモン符号、ターボ符号、ＬＤＰＣ（Low Density Parity Check）符号、畳み込み符号などを挙げることができる。非線形符号の例として、ＮＲ符号、ナドラ符号、グリーン符号などを挙げることができる。誤り訂正符号化関数Ｅ１，Ｅ２が共にリードソロモン符号を用いる場合、ｎ＝２０４７，ｋ1＝１０２３，ｋ2＝５１１，ｐ＝３５１の実装例が考えられる。また、誤り訂正符号化関数Ｅ１，Ｅ２が共にＢＣＨ符号を用いる場合、ｎ＝８１９１，ｋ1＝１５３５，ｋ2＝１０２３，ｐ＝２２３の実装例が考えられる。
【００９６】
他の例として、暗号化部１１４は、誤り訂正符号化関数Ｅ１を用いて平文Ｐを符号化してＥ１（Ｐ）を算出する。暗号化部１１４は、ＰＵＦ回路１１３が生成したＰＵＦ値ｘを用いてＥ１（Ｐ）をマスク処理して、暗号文Ｃ＝ｘ＋Ｅ１（Ｐ）を生成する。ただし、平文Ｐや暗号文Ｃを長期保存する場合や公開する場合、ＰＵＦ値ｘが推測されて漏洩するリスクを低減するため、上記の暗号文Ｃ＝ｘ＋Ｅ１（Ｅ２（Ｐ）＋ｓ）を用いた方が好ましい。乱数ｓを使用することでＰＵＦ値ｘが推測されるリスクを低減できる。
【００９７】
復号部１１５は、制御部１１２からＰＵＦ値と暗号文を取得し、ＰＵＦ値を用いて暗号文を復号して平文を生成し、平文を制御部１１２に出力する。ＰＵＦ値は暗号鍵として使用される。暗号化時のＰＵＦ値と復号時のＰＵＦ値が一致するとは限らないため、復号部１１５は、揺らぎを吸収できるように誤り訂正技術を使用する。
【００９８】
一例として、復号部１１５は、復号時におけるＰＵＦ値ｙを用いて暗号文Ｃをマスク処理してｙ＋Ｃを算出する。復号部１１５は、誤り訂正符号化関数Ｅ１に対応する誤り訂正復号関数Ｄ１を用いて、ｙ＋Ｃを復号してＤ１（ｙ＋Ｃ）を算出する。そして、復号部１１５は、誤り訂正符号化関数Ｅ２に対応する誤り訂正復号関数Ｄ２を用いて、Ｄ１（ｙ＋Ｃ）を更に復号して平文Ｐ＝Ｄ２（Ｄ１（ｙ＋Ｃ））を生成する。
【００９９】
暗号文Ｃ＝ｘ＋Ｅ１（Ｅ２（Ｐ）＋ｓ）が入力された場合、ｙ＋Ｃ＝ｘ＋ｙ＋Ｅ１（Ｅ２（Ｐ）＋ｓ）となる。ＰＵＦ値ｘ，ｙの間のハミング距離が誤り訂正復号関数Ｄ１の訂正可能ビット数以下である場合、ｘ＋ｙは除去可能ノイズとなり、Ｄ１（ｙ＋Ｃ）＝Ｅ２（Ｐ）＋ｓとなる。誤り訂正復号関数Ｄ１の訂正可能ビット数は、同一のＰＵＦ回路が生成するＰＵＦ値の間のハミング距離が訂正可能ビット数以下になるように設定される。そして、乱数ｓのハミング重みは誤り訂正復号関数Ｄ２の訂正可能ビット数以下であるため、Ｄ２（Ｅ２（Ｐ）＋ｓ）＝Ｐとなり、平文Ｐが正しく抽出される。
【０１００】
他の例として、復号部１１５は、復号時におけるＰＵＦ値ｙを用いて暗号文Ｃをマスク処理してｙ＋Ｃを算出する。復号部１１５は、誤り訂正復号関数Ｄ１を用いて、ｙ＋Ｃを復号して平文Ｐ＝Ｄ１（ｙ＋Ｃ）を算出する。暗号文Ｃ＝ｘ＋Ｅ１（Ｐ）が入力された場合、ｙ＋Ｃ＝ｘ＋ｙ＋Ｅ１（Ｐ）となる。ＰＵＦ値ｘ，ｙの間のハミング距離が誤り訂正復号関数Ｄ１の訂正可能ビット数以下である場合、Ｄ１（ｙ＋Ｃ）＝Ｄ１（ｘ＋ｙ＋Ｅ１（Ｐ））＝Ｐとなり、平文Ｐが正しく抽出される。
【０１０１】
図１１は、第３の実施の形態のテーブル例を示す図である。
第３の実施の形態では、検査用データベース２２１は既出データテーブル２２５および元データテーブル２２６を記憶する。既出データテーブル２２５は、既出暗号文の項目を有する。既出暗号文の項目には、検査済みのＰＵＦ装置から取得された暗号文が登録される。元データテーブル２２６は、照合用平文の項目を有する。照合用平文の項目には、複数のＰＵＦ装置の検査に共通に用いる平文が予め登録されている。
【０１０２】
例えば、元データテーブル２２６に登録された平文ｐｌａｉｎが１つのＰＵＦ装置に入力される。平文ｐｌａｉｎに対応する暗号文ｃｉｐｈｅｒ＃１が当該１つのＰＵＦ装置から取得されると、暗号文ｃｉｐｈｅｒ＃１が既出データテーブル２２５に登録される。また、元データテーブル２２６に登録された平文ｐｌａｉｎが別のＰＵＦ装置に入力される。平文ｐｌａｉｎに対応する暗号文ｃｉｐｈｅｒ＃２が当該別のＰＵＦ装置から取得されると、暗号文ｃｉｐｈｅｒ＃２が既出データテーブル２２５に登録される。
【０１０３】
図１２は、第３の実施の形態のＰＵＦ処理の手順例を示すフローチャートである。
（Ｓ１２０）入出力インタフェース１１１は、検査装置２００からコマンドを受信する。入出力インタフェース１１１は、受信したコマンドを制御部１１２に出力する。
【０１０４】
（Ｓ１２１）制御部１１２は、取得したコマンドが暗号化コマンドであるか判断する。暗号化コマンドである場合、ステップＳ１２２に処理が進む。暗号化コマンドでない場合、すなわち、復号コマンドである場合、ステップＳ１２７に処理が進む。
【０１０５】
（Ｓ１２２）制御部１１２は、暗号化コマンドに付加されて入力された平文Ｐを受け付ける。平文Ｐとしては元データテーブル２２６の照合用平文が想定される。
（Ｓ１２３）制御部１１２は、ＰＵＦ回路１１３からＰＵＦ値ｘを読み出す。
【０１０６】
（Ｓ１２４）制御部１１２は、ステップＳ１２２で受け付けた平文ＰとステップＳ１２３で読み出したＰＵＦ値ｘを暗号化部１１４に入力する。暗号化部１１４は、ハミング重みについて所定の条件を満たす乱数ｓを生成する。
【０１０７】
（Ｓ１２５）暗号化部１１４は、所定の誤り訂正符号化関数Ｅ１，Ｅ２と、入力された平文ＰおよびＰＵＦ値ｘと、ステップＳ１２４で生成した乱数ｓを用いて、所定の暗号化手順に従って暗号文Ｃを生成する。例えば、暗号化部１１４はＣ＝ｘ＋Ｅ１（Ｅ２（Ｐ）＋ｓ）を生成する。ただし、他の方法で暗号文Ｃを生成することも可能である。暗号化部１１４は、生成した暗号文Ｃを制御部１１２に出力する。
【０１０８】
（Ｓ１２６）制御部１１２は、暗号文Ｃを入出力インタフェース１１１に出力する。入出力インタフェース１１１は、暗号化コマンドに対する応答として暗号文Ｃを返信する。
（Ｓ１２７）制御部１１２は、復号コマンドに付加されて入力された暗号文Ｃを受け付ける。暗号文Ｃとしては既出データテーブル２２５の中の既出暗号文が想定される。
【０１０９】
（Ｓ１２８）制御部１１２は、ＰＵＦ回路１１３からＰＵＦ値ｙを読み出す。ここで読み出されるＰＵＦ値ｙは、ステップＳ１２３のＰＵＦ値ｘと同一であるとは限らない。
（Ｓ１２９）制御部１１２は、ステップＳ１２７で受け付けた暗号文ＣとステップＳ１２８で読み出したＰＵＦ値ｙを復号部１１５に入力する。復号部１１５は、所定の誤り訂正復号関数Ｄ１，Ｄ２と、入力された暗号文ＣおよびＰＵＦ値ｙを用いて、所定の復号手順に従って平文Ｐを生成する。例えば、復号部１１５はＰ＝Ｄ２（Ｄ１（ｙ＋Ｃ））を生成する。ただし、他の方法で平文Ｐを生成することも可能である。暗号化時に使用されたＰＵＦ値ｘと復号時に使用するＰＵＦ値ｙとが近似している場合のみ、暗号文Ｃから元の平文が正しく抽出される。復号部１１５は、生成した平文Ｐを制御部１１２に出力する。
【０１１０】
（Ｓ１３０）制御部１１２は、平文Ｐを入出力インタフェース１１１に出力する。入出力インタフェース１１１は、復号コマンドに対する応答として平文Ｐを返信する。
図１３は、第３の実施の形態の検査処理の手順例を示すフローチャートである。
【０１１１】
（Ｓ２２０）衝突検出部２２２は、既出データテーブル２２５に未選択のレコードが残っているか判断する。未選択のレコードがある場合はステップＳ２２１に処理が進み、全てのレコードを選択した場合はステップＳ２２５に処理が進む。
【０１１２】
（Ｓ２２１）衝突検出部２２２は、既出データテーブル２２５から、検査装置２００に接続中のＰＵＦ装置とは異なる過去に検査したＰＵＦ装置についてのレコードを１つ選択する。選択するレコードは、既出暗号文を含む。
【０１１３】
（Ｓ２２２）衝突検出部２２２は、ステップＳ２２１で取得した既出暗号文を指定して、接続中のＰＵＦ装置に復号コマンドを送信する。衝突検出部２２２は、復号コマンドに対する応答として復号結果である平文を取得する。
【０１１４】
（Ｓ２２３）衝突検出部２２２は、ステップＳ２２２で取得した平文が、元データテーブル２２６に登録された照合用平文と一致するか判断する。照合用平文と一致する場合はステップＳ２２４に処理が進み、一致しない場合はステップＳ２２０に処理が進む。
【０１１５】
（Ｓ２２４）衝突検出部２２２は、接続中のＰＵＦ装置と過去に検査したＰＵＦ装置との間でＰＵＦ値の衝突が生じていると判定する。検査結果表示部２２３は、「衝突あり」のメッセージをディスプレイ２１１に表示する。
【０１１６】
（Ｓ２２５）衝突検出部２２２は、元データテーブル２２６に登録された照合用平文を指定して、接続中のＰＵＦ装置に暗号化コマンドを送信する。衝突検出部２２２は、暗号化コマンドに対する応答として暗号文を取得する。
【０１１７】
（Ｓ２２６）衝突検出部２２２は、ステップＳ２２５で取得した暗号文を既出暗号文として既出データテーブル２２５に記録する。
（Ｓ２２７）衝突検出部２２２は、接続中のＰＵＦ装置と過去に検査したＰＵＦ装置との間でＰＵＦ値の衝突が生じていないと判定する。検査結果表示部２２３は、「衝突なし」のメッセージをディスプレイ２１１に表示する。
【０１１８】
第３の実施の形態の情報処理システムによれば、第２の実施の形態と同様の効果が得られる。また、第３の実施の形態の情報処理システムでは、ＰＵＦ装置の外部から読み出し困難なＰＵＦ値を暗号鍵として用いて、ＰＵＦ装置の内部で暗号化および復号が行われる。このため、暗号鍵が保護されると共に、あるＰＵＦ装置で暗号化したデータを他のＰＵＦ装置で復号することが困難となり、情報セキュリティが向上する。
【０１１９】
［第４の実施の形態］
次に、第４の実施の形態を説明する。第２および第３の実施の形態と異なる事項を中心に説明し、これらの実施の形態と同様の事項については説明を省略することがある。
【０１２０】
第４の実施の形態の情報処理システムは、ＰＵＦ装置の機能および検査手順が、第２および第３の実施の形態と異なる。第４の実施の形態の情報処理システムは、図２に示した第２の実施の形態の情報処理システムと同様の構成によって実現できる。また、第４の実施の形態の検査装置は、図４，５に示した第２の実施の形態の検査装置と同様の構成によって実現できる。検査装置については、第２の実施の形態と同じ符号を用いて説明する。
【０１２１】
図１４は、第４の実施の形態のＰＵＦ装置の例を示すブロック図である。
第２の実施の形態のＰＵＦ装置１００に代えてＰＵＦ装置１００ｂが使用される。ＰＵＦ装置１００ｂは、入出力インタフェース１２１、制御部１２２、ＰＵＦ回路１２３、鍵秘匿化部１２４、鍵復元部１２５、暗号化部１２６および復号部１２７を有する。ＰＵＦ装置１００ｂの一部分または全体が、ＦＰＧＡなどのプログラマブルデバイスを用いて実装されてもよいしＡＳＩＣを用いて実装されてもよい。
【０１２２】
入出力インタフェース１２１は、検査装置２００からコマンドを受信し、コマンドの実行結果を検査装置２００に出力するインタフェースである。第４の実施の形態ではコマンドの種類として、鍵秘匿化コマンド、暗号化コマンドおよび復号コマンドが挙げられる。鍵秘匿化コマンドには暗号鍵が付加されている。鍵秘匿化コマンドに対しては、暗号鍵を暗号化して生成された秘匿化暗号鍵が出力される。暗号化コマンドには平文と秘匿化暗号鍵が付加されている。暗号化コマンドに対しては、平文を暗号化して生成された暗号文が出力される。復号コマンドには暗号文と秘匿化暗号鍵が付加されている。復号コマンドに対しては、暗号文を復号して生成された平文が出力される。暗号鍵の秘匿化や復元にはＰＵＦ値が使用されるものの、ＰＵＦ値自体はＰＵＦ装置１００ｂの外部に出力されない。
【０１２３】
制御部１２２は、入出力インタフェース１２１からコマンドを取得し、ＰＵＦ回路１２３、鍵秘匿化部１２４、鍵復元部１２５、暗号化部１２６および復号部１２７を利用して暗号処理を実行し、暗号処理結果を入出力インタフェース１２１に出力する。
【０１２４】
鍵秘匿化コマンドに対しては、制御部１２２は、ＰＵＦ回路１２３からＰＵＦ値を読み出し、読み出したＰＵＦ値と暗号鍵とを鍵秘匿化部１２４に入力して秘匿化暗号鍵を鍵秘匿化部１２４から取得する。暗号化コマンドに対しては、制御部１２２は、ＰＵＦ回路１２３からＰＵＦ値を読み出し、読み出したＰＵＦ値と秘匿化暗号鍵とを鍵復元部１２５に入力して暗号鍵を鍵復元部１２５から取得する。そして、制御部１２２は、復元された暗号鍵と平文とを暗号化部１２６に入力して暗号文を暗号化部１２６から取得する。復号コマンドに対しては、制御部１２２は、暗号化時と同様にＰＵＦ回路１２３からＰＵＦ値を読み出し、読み出したＰＵＦ値と秘匿化暗号鍵とを鍵復元部１２５に入力して暗号鍵を鍵復元部１２５から取得する。そして、制御部１２２は、復元された暗号鍵と暗号文とを復号部１２７に入力して平文を復号部１２７から取得する。
【０１２５】
ＰＵＦ回路１２３は、ＰＵＦを利用してハードウェア固有の値であるＰＵＦ値を生成する電子回路であり、第２の実施の形態のＰＵＦ回路１０３に対応する。
鍵秘匿化部１２４は、制御部１２２からＰＵＦ値と暗号鍵を取得し、ＰＵＦ値を用いて暗号鍵を暗号化（秘匿化）して秘匿化暗号鍵を生成し、秘匿化暗号鍵を制御部１２２に出力する。ＰＵＦ装置１００ｂの外部では暗号鍵そのものを保存する代わりに秘匿化暗号鍵を保存することで、暗号鍵を保護することができる。ＰＵＦ値をＰＵＦ装置１００ｂの外部から読み出すことは困難であるため、ＰＵＦ装置１００ｂが生成した秘匿化暗号鍵から元の暗号鍵を復元することは、ＰＵＦ装置１００ｂを用いなければ困難となる。ただし、ＰＵＦ値には揺らぎが生じるため、鍵秘匿化部１２４は第３の実施の形態の暗号化部１１４と同様に、揺らぎを吸収できるように誤り訂正技術を使用する。
【０１２６】
一例として、鍵秘匿化部１２４は、誤り訂正符号化関数Ｅ２を用いて暗号鍵ｋｅｙを符号化してＥ２（ｋｅｙ）を算出する。鍵秘匿化部１２４は、乱数ｓを生成し、乱数ｓを用いてＥ２（ｋｅｙ）をマスク処理してＥ２（ｋｅｙ）＋ｓを算出する。鍵秘匿化部１２４は、誤り訂正符号化関数Ｅ１を用いてＥ２（ｋｅｙ）＋ｓを更に符号化してＥ１（Ｅ２（ｋｅｙ）＋ｓ）を算出する。そして、鍵秘匿化部１２４は、鍵秘匿化時のＰＵＦ値ｘを用いてＥ１（Ｅ２（ｋｅｙ）＋ｓ）をマスク処理して、秘匿化暗号鍵ｓｋｅｙ＝ｘ＋Ｅ１（Ｅ２（ｋｅｙ）＋ｓ）を生成する。誤り訂正符号化関数Ｅ１，Ｅ２、乱数ｓおよびＰＵＦ値ｘがもつ性質は、第３の実施の形態と同様である。
【０１２７】
他の例として、鍵秘匿化部１２４は、誤り訂正符号化関数Ｅ１を用いて暗号鍵ｋｅｙを符号化してＥ１（ｋｅｙ）を算出する。鍵秘匿化部１２４は、ＰＵＦ値ｘを用いてＥ１（ｋｅｙ）をマスク処理して、秘匿化暗号鍵ｓｋｅｙ＝ｘ＋Ｅ１（ｋｅｙ）を生成する。ただし、暗号鍵ｋｅｙや秘匿化暗号鍵ｓｋｅｙを長期保存する場合や公開する場合、ＰＵＦ値ｘが推測されて漏洩するリスクを低減するため、上記の秘匿化暗号鍵ｓｋｅｙ＝ｘ＋Ｅ１（Ｅ２（ｋｅｙ）＋ｓ）を用いた方が好ましい。
【０１２８】
鍵復元部１２５は、制御部１２２からＰＵＦ値と秘匿化暗号鍵を取得し、ＰＵＦ値を用いて秘匿化暗号鍵から暗号鍵を復元し、暗号鍵を制御部１２２に出力する。秘匿化時のＰＵＦ値と復元時のＰＵＦ値とが一致するとは限らないため、鍵復元部１２５は、ＰＵＦ値の揺らぎを吸収できるように誤り訂正技術を使用する。
【０１２９】
一例として、鍵復元部１２５は、復元時のＰＵＦ値ｙを用いて秘匿化暗号鍵ｓｋｅｙをマスク処理してｙ＋ｓｋｅｙを算出する。鍵復元部１２５は、誤り訂正復号関数Ｄ１を用いて、ｙ＋ｓｋｅｙを復号してＤ１（ｙ＋ｓｋｅｙ）を算出する。そして、鍵復元部１２５は、誤り訂正復号関数Ｄ２を用いて、Ｄ１（ｙ＋ｓｋｅｙ）を更に復号して暗号鍵ｋｅｙ＝Ｄ２（Ｄ１（ｙ＋ｓｋｅｙ））を生成する。
【０１３０】
秘匿化暗号鍵ｓｋｅｙ＝ｘ＋Ｅ１（Ｅ２（ｋｅｙ）＋ｓ）が入力された場合、ｙ＋ｓｋｅｙ＝ｘ＋ｙ＋Ｅ１（Ｅ２（ｋｅｙ）＋ｓ）となる。ＰＵＦ値ｘ，ｙの間のハミング距離が誤り訂正復号関数Ｄ１の訂正可能ビット数以下であれば、Ｄ２（Ｄ１（ｘ＋ｙ＋Ｅ１（Ｅ２（ｋｅｙ）＋ｓ）））＝Ｄ２（Ｅ２（ｋｅｙ）＋ｓ）＝ｋｅｙとなる。誤り訂正復号関数Ｄ１，Ｄ２およびＰＵＦ値ｙがもつ性質は、第３の実施の形態と同様である。
【０１３１】
他の例として、鍵復元部１２５は、復元時のＰＵＦ値ｙを用いて秘匿化暗号鍵ｓｋｅｙをマスク処理してｙ＋ｓｋｅｙを算出する。鍵復元部１２５は、誤り訂正復号関数Ｄ１を用いて、ｙ＋ｓｋｅｙを復号して暗号鍵ｋｅｙ＝Ｄ１（ｙ＋ｓｋｅｙ）を算出する。秘匿化暗号鍵ｓｋｅｙ＝ｘ＋Ｅ１（ｋｅｙ）が入力された場合、ｙ＋ｓｋｅｙ＝ｘ＋ｙ＋Ｅ１（ｋｅｙ）となる。ＰＵＦ値ｘ，ｙの間のハミング距離が誤り訂正復号関数Ｄ１の訂正可能ビット数以下であれば、Ｄ１（ｘ＋ｙ＋Ｅ１（ｋｅｙ））＝ｋｅｙとなる。
【０１３２】
暗号化部１２６は、制御部１２２から暗号鍵と平文を取得し、暗号鍵を用いて平文を暗号化して暗号文を生成し、暗号文を制御部１２２に出力する。暗号化部１２６は、ＡＥＳ（Advanced Encryption Standard）などの所定の共通鍵暗号方式を使用する。暗号化部１２６は、入力された暗号鍵を当該共通鍵暗号方式の共通鍵として使用する。暗号化の際にはＰＵＦ装置１００ｂの外部から秘匿化暗号鍵が入力され、ＰＵＦ装置１００ｂの内部で一時的に暗号鍵が復元され、暗号化が終了すると暗号鍵は破棄される。復元された暗号鍵はＰＵＦ装置１００ｂの外部には出力されず、暗号鍵が保護されることになる。
【０１３３】
復号部１２７は、制御部１２２から暗号鍵と暗号文を取得し、暗号鍵を用いて暗号文を復号して平文を生成し、平文を制御部１２２に出力する。復号部１２７は、暗号化部１２６の暗号処理方法に対応して、ＡＥＳなどの所定の共通鍵暗号方式を使用する。復号部１２７は、入力された暗号鍵を当該共通鍵暗号方式の共通鍵として使用する。復号の際にはＰＵＦ装置１００ｂの外部から秘匿化暗号鍵が入力され、ＰＵＦ装置１００ｂの内部で一時的に暗号鍵が復元され、復号が終了すると暗号鍵は破棄される。復元された暗号鍵はＰＵＦ装置１００ｂの外部には出力されず、暗号鍵が保護されることになる。
【０１３４】
図１５は、第４の実施の形態のテーブル例を示す図である。
第４の実施の形態では、検査用データベース２２１は既出データテーブル２２７および元データテーブル２２８を記憶する。既出データテーブル２２７は、既出秘匿化暗号鍵および既出暗号文の項目を有する。既出秘匿化暗号鍵の項目には、検査済みのＰＵＦ装置から取得された秘匿化暗号鍵が登録される。既出暗号文の項目には、検査済みのＰＵＦ装置から取得された暗号文が登録される。既出データテーブル２２７では、同一のＰＵＦ装置についての既出秘匿化暗号鍵と既出暗号文とが対応付けられている。元データテーブル２２８は、照合用平文および暗号鍵の項目を有する。照合用平文の項目には、複数のＰＵＦ装置の検査に共通に用いる平文が予め登録されている。暗号鍵の項目には、複数のＰＵＦ装置の検査に共通に用いる暗号鍵が予め登録されている。
【０１３５】
例えば、元データテーブル２２８に登録された暗号鍵ｋｅｙが１つのＰＵＦ装置に入力され、暗号鍵ｋｅｙから生成された秘匿化暗号鍵ｓｋｅｙ＃１が当該１つのＰＵＦ装置から取得される。そして、元データテーブル２２８に登録された平文ｐｌａｉｎと秘匿化暗号鍵ｓｋｅｙ＃１とが当該１つのＰＵＦ装置に入力され、平文ｐｌａｉｎに対応する暗号文ｃｉｐｈｅｒ＃１が当該１つのＰＵＦ装置から取得される。秘匿化暗号鍵ｓｋｅｙ＃１と暗号文ｃｉｐｈｅｒ＃１が対応付けられて既出データテーブル２２７に登録される。
【０１３６】
また、暗号鍵ｋｅｙが別のＰＵＦ装置に入力され、暗号鍵ｋｅｙから生成された秘匿化暗号鍵ｓｋｅｙ＃２が当該別のＰＵＦ装置から取得される。そして、平文ｐｌａｉｎと秘匿化暗号鍵ｓｋｅｙ＃２とが当該別のＰＵＦ装置に入力され、平文ｐｌａｉｎに対応する暗号文ｃｉｐｈｅｒ＃２が当該別のＰＵＦ装置から取得される。秘匿化暗号鍵ｓｋｅｙ＃２と暗号文ｃｉｐｈｅｒ＃２が対応付けられて既出データテーブル２２７に登録される。
【０１３７】
図１６は、第４の実施の形態のＰＵＦ処理の手順例を示すフローチャートである。
（Ｓ１４０）入出力インタフェース１２１は、検査装置２００からコマンドを受信する。入出力インタフェース１２１は、受信したコマンドを制御部１２２に出力する。
【０１３８】
（Ｓ１４１）制御部１２２は、取得したコマンドが鍵秘匿化コマンドであるか判断する。取得したコマンドが鍵秘匿化コマンドである場合、ステップＳ１４２に処理が進む。鍵秘匿化コマンドでない場合、ステップＳ１４７に処理が進む。
【０１３９】
（Ｓ１４２）制御部１２２は、鍵秘匿化コマンドに付加されて入力された暗号鍵ｋｅｙを受け付ける。暗号鍵ｋｅｙとしては元データテーブル２２８の暗号鍵が想定される。
（Ｓ１４３）制御部１２２は、ＰＵＦ回路１２３からＰＵＦ値ｘを読み出す。
【０１４０】
（Ｓ１４４）制御部１２２は、ステップＳ１４２で受け付けた暗号鍵ｋｅｙとステップＳ１４３で読み出したＰＵＦ値ｘを鍵秘匿化部１２４に入力する。鍵秘匿化部１２４は、ハミング重みについて所定の条件を満たす乱数ｓを生成する。
【０１４１】
（Ｓ１４５）鍵秘匿化部１２４は、所定の誤り訂正符号化関数Ｅ１，Ｅ２と、入力された暗号鍵ｋｅｙおよびＰＵＦ値ｘと、ステップＳ１４４で生成した乱数ｓを用いて、所定の暗号化手順に従って秘匿化暗号鍵ｓｋｅｙを生成する。例えば、鍵秘匿化部１２４はｓｋｅｙ＝ｘ＋Ｅ１（Ｅ２（ｋｅｙ）＋ｓ）を生成する。ただし、他の方法で秘匿化暗号鍵ｓｋｅｙを生成することも可能である。鍵秘匿化部１２４は、生成した秘匿化暗号鍵ｓｋｅｙを制御部１２２に出力する。
【０１４２】
（Ｓ１４６）制御部１２２は、秘匿化暗号鍵ｓｋｅｙを入出力インタフェース１２１に出力する。入出力インタフェース１２１は、鍵秘匿化コマンドに対する応答として秘匿化暗号鍵ｓｋｅｙを返信する。
【０１４３】
（Ｓ１４７）制御部１２２は、取得したコマンドが暗号化コマンドであるか判断する。暗号化コマンドである場合、ステップＳ１４８に処理が進む。暗号化コマンドでない場合、すなわち、復号コマンドである場合、ステップＳ１５３に処理が進む。
【０１４４】
（Ｓ１４８）制御部１２２は、暗号化コマンドに付加されて入力された秘匿化暗号鍵ｓｋｅｙと平文Ｐを受け付ける。秘匿化暗号鍵ｓｋｅｙとしてはＰＵＦ装置１００ｂが生成した秘匿化暗号鍵、平文Ｐとしては元データテーブル２２８の照合用平文が想定される。
【０１４５】
（Ｓ１４９）制御部１２２は、ＰＵＦ回路１２３からＰＵＦ値ｙを読み出す。ここで読み出されるＰＵＦ値ｙは、ステップＳ１４３のＰＵＦ値ｘと同一であるとは限らない。
（Ｓ１５０）制御部１２２は、ステップＳ１４８で受け付けた秘匿化暗号鍵ｓｋｅｙとステップＳ１４９で読み出したＰＵＦ値ｙを鍵復元部１２５に入力する。鍵復元部１２５は、所定の誤り訂正復号関数Ｄ１，Ｄ２と、入力された秘匿化暗号鍵ｓｋｅｙおよびＰＵＦ値ｙを用いて、所定の復号手順に従って暗号鍵ｋｅｙを復元する。例えば、鍵復元部１２５はｋｅｙ＝Ｄ２（Ｄ１（ｙ＋ｓｋｅｙ））を生成する。ただし、他の方法で暗号鍵ｋｅｙを生成することも可能である。秘匿化時に使用されたＰＵＦ値ｘと復元時に使用するＰＵＦ値ｙとが近似している場合のみ、秘匿化暗号鍵ｓｋｅｙから元の暗号鍵ｋｅｙが正しく抽出される。鍵復元部１２５は、暗号鍵ｋｅｙを制御部１２２に出力する。
【０１４６】
（Ｓ１５１）制御部１２２は、ステップＳ１４８で受け付けた平文ＰとステップＳ１５０で取得した暗号鍵ｋｅｙを暗号化部１２６に入力する。暗号化部１２６は、暗号鍵ｋｅｙを用いて平文Ｐを暗号化し、暗号文Ｃを制御部１２２に出力する。
【０１４７】
（Ｓ１５２）制御部１２２は、暗号文Ｃを入出力インタフェース１２１に出力する。入出力インタフェース１２１は、暗号化コマンドに対する応答として暗号文Ｃを返信する。
（Ｓ１５３）制御部１２２は、復号コマンドに付加されて入力された秘匿化暗号鍵ｓｋｅｙと暗号文Ｃを受け付ける。秘匿化暗号鍵ｓｋｅｙとしては既出データテーブル２２７に登録された何れかの既出秘匿化暗号鍵が想定され、暗号文Ｃとしてはその既出秘匿化暗号鍵に対応する既出暗号文が想定される。
【０１４８】
（Ｓ１５４）制御部１２２は、ＰＵＦ回路１２３からＰＵＦ値ｙを読み出す。
（Ｓ１５５）制御部１２２は、ステップＳ１５３で受け付けた秘匿化暗号鍵ｓｋｅｙとステップＳ１５４で読み出したＰＵＦ値ｙを鍵復元部１２５に入力する。鍵復元部１２５は、ステップＳ１５０と同様の方法で暗号鍵ｋｅｙを復元する。鍵復元部１２５は、暗号鍵ｋｅｙを制御部１２２に出力する。
【０１４９】
（Ｓ１５６）制御部１２２は、ステップＳ１５３で受け付けた暗号文ＣとステップＳ１５５で取得した暗号鍵ｋｅｙを復号部１２７に入力する。復号部１２７は、暗号鍵ｋｅｙを用いて暗号文Ｃを復号し、平文Ｐを制御部１２２に出力する。
【０１５０】
（Ｓ１５７）制御部１２２は、平文Ｐを入出力インタフェース１２１に出力する。入出力インタフェース１２１は、復号コマンドに対する応答として平文Ｐを返信する。
図１７は、第４の実施の形態の検査処理の手順例を示すフローチャートである。
【０１５１】
（Ｓ２４０）衝突検出部２２２は、既出データテーブル２２７に未選択のレコードが残っているか判断する。未選択のレコードがある場合はステップＳ２４１に処理が進み、全てのレコードを選択した場合はステップＳ２４５に処理が進む。
【０１５２】
（Ｓ２４１）衝突検出部２２２は、既出データテーブル２２７から、検査装置２００に接続中のＰＵＦ装置とは異なる過去に検査したＰＵＦ装置についてのレコードを１つ選択する。選択するレコードは、既出秘匿化暗号鍵と既出暗号文を含む。
【０１５３】
（Ｓ２４２）衝突検出部２２２は、ステップＳ２４１で取得した既出秘匿化暗号鍵と既出暗号文を指定して、接続中のＰＵＦ装置に復号コマンドを送信する。衝突検出部２２２は、復号コマンドに対する応答として復号結果である平文を取得する。
【０１５４】
（Ｓ２４３）衝突検出部２２２は、ステップＳ２４２で取得した平文が、元データテーブル２２８に登録された照合用平文と一致するか判断する。照合用平文と一致する場合はステップＳ２４４に処理が進み、一致しない場合はステップＳ２４０に処理が進む。
【０１５５】
（Ｓ２４４）衝突検出部２２２は、接続中のＰＵＦ装置と過去に検査したＰＵＦ装置との間でＰＵＦ値の衝突が生じていると判定する。検査結果表示部２２３は、「衝突あり」のメッセージをディスプレイ２１１に表示する。
【０１５６】
（Ｓ２４５）衝突検出部２２２は、元データテーブル２２８に登録された暗号鍵を指定して、接続中のＰＵＦ装置に鍵秘匿化コマンドを送信する。衝突検出部２２２は、鍵秘匿化コマンドに対する応答として秘匿化暗号鍵を取得する。
【０１５７】
（Ｓ２４６）衝突検出部２２２は、ステップＳ２４５で取得した秘匿化暗号鍵と元データテーブル２２８の照合用平文を指定して、接続中のＰＵＦ装置に暗号化コマンドを送信する。衝突検出部２２２は、暗号化コマンドに対する応答として暗号文を取得する。
【０１５８】
（Ｓ２４７）衝突検出部２２２は、ステップＳ２４５で取得した秘匿化暗号鍵を既出秘匿化暗号鍵とし、ステップＳ２４６で取得した暗号文を既出暗号文として、既出秘匿化暗号鍵と既出暗号文とを対応付けて既出データテーブル２２７に記録する。
【０１５９】
（Ｓ２４８）衝突検出部２２２は、接続中のＰＵＦ装置と過去に検査したＰＵＦ装置との間でＰＵＦ値の衝突が生じていないと判定する。検査結果表示部２２３は、「衝突なし」のメッセージをディスプレイ２１１に表示する。
【０１６０】
第４の実施の形態の情報処理システムによれば、第２の実施の形態と同様の効果が得られる。また、第４の実施の形態の情報処理システムでは、データ保護に使用する暗号鍵を変更することが可能となる。また、ＰＵＦ装置の外部から読み出し困難なＰＵＦ値を用いて暗号鍵が秘匿化され、暗号鍵の使用時のみＰＵＦ装置の内部で一時的に暗号鍵が復元される。このため、ＰＵＦ装置の外部で暗号鍵そのものを保存しておかなくてよく、暗号鍵の使用時にもＰＵＦ装置の外部に暗号鍵は出力されない。よって、暗号鍵の漏洩リスクが低減する。また、あるＰＵＦ装置で秘匿化された暗号鍵を他のＰＵＦ装置で使用することが困難となり、情報セキュリティが向上する。
【０１６１】
［第５の実施の形態］
次に、第５の実施の形態を説明する。第２〜第４の実施の形態と異なる事項を中心に説明し、これらの実施の形態と同様の事項については説明を省略することがある。
【０１６２】
第５の実施の形態の情報処理システムは、ＰＵＦ値の衝突が検出された場合に、ＰＵＦ装置の設定を変更することでＰＵＦ値の衝突を回避することを試みる。
図１８は、第５の実施の形態の情報処理システムの例を示す図である。
【０１６３】
第５の実施の形態の情報処理システムは、ＰＵＦ装置１００ｃ，１００ｃ−１，１００ｃ−２を含む複数のＰＵＦ装置、検査装置２００ａおよび開発装置３００を有する。
第５の実施の形態のＰＵＦ装置のＰＵＦ回路は、ＦＰＧＡを用いて実装されている。検査装置２００ａは、第２の実施の形態の検査装置２００に代えて使用される。検査装置２００ａは、ＰＵＦ回路の回路配置を示すＦＰＧＡデータを開発装置３００から取得し、接続中のＰＵＦ装置にＦＰＧＡデータを書き込む。接続中のＰＵＦ装置のＰＵＦ値が過去に検査したＰＵＦ装置と衝突していることを検出すると、検査装置２００ａは、ＦＰＧＡデータを書き換えてＰＵＦ回路を変更することで衝突回避を試みる。開発装置３００は、検査装置２００ａからの要求に応じてＦＰＧＡデータを提供するコンピュータである。開発装置３００は、ネットワーク６１を介して検査装置２００ａと接続されている。開発装置３００は、クライアントコンピュータでもよいしサーバコンピュータでもよい。
【０１６４】
図１９は、第５の実施の形態のＰＵＦ装置の例を示すブロック図である。
ＰＵＦ装置１００ｃは、入出力インタフェース１３１、ＦＰＧＡデータ記憶部１３２、制御部１３３、ＦＰＧＡ１３４、補助データ生成部１３５、誤り訂正部１３６およびハッシュ関数部１３７を有する。ＦＰＧＡ１３４を含むＰＵＦ装置１００ｃ全体をＦＰＧＡとして実装してもよいし、ＦＰＧＡ１３４以外をＡＳＩＣとして実装してもよい。
【０１６５】
入出力インタフェース１３１は、検査装置２００ａからコマンドを受信し、コマンドの実行結果を検査装置２００ａに出力する。第５の実施の形態ではコマンドの種類として、書き込みコマンド、補助データ取得コマンドおよびハッシュ値取得コマンドが挙げられる。書き込みコマンドにはＦＰＧＡデータが付加されている。書き込みコマンドに対しては、入力されたＦＰＧＡデータがＦＰＧＡデータ記憶部１３２に書き込まれる。補助データ取得コマンドおよびハッシュ値取得コマンドは、第２の実施の形態と同様である。
【０１６６】
ＦＰＧＡデータ記憶部１３２は、ＦＰＧＡデータを記憶する不揮発性の記憶装置である。ＦＰＧＡデータ記憶部１３２として、例えば、フラッシュメモリなどの不揮発性の半導体メモリが使用される。ＦＰＧＡデータ記憶部１３２には、書き込みコマンドに応じて入出力インタフェース１３１からＦＰＧＡデータが書き込まれる。
【０１６７】
制御部１３３は、第２の実施の形態の制御部１０２に対応する。
ＦＰＧＡ１３４は、ＰＵＦ装置１００ｃの起動時にＦＰＧＡデータ記憶部１３２からＦＰＧＡデータをロードし、ＦＰＧＡデータに従って論理回路を実現する。これにより、ＦＰＧＡ１３４には、第２の実施の形態のＰＵＦ回路１０３に相当するＰＵＦ回路が実現される。ＦＰＧＡ１３４は、制御部１３３からの要求に応じてＰＵＦ値を生成してＰＵＦ値を提供する。生成されるＰＵＦ値はＦＰＧＡ１３４にロードされるＦＰＧＡデータに依存し、ＦＰＧＡデータを変更することでＰＵＦ値が大きく変化することがある。
【０１６８】
補助データ生成部１３５、誤り訂正部１３６およびハッシュ関数部１３７は、第２の実施の形態の補助データ生成部１０４、誤り訂正部１０５およびハッシュ関数部１０６に対応する。なお、図１９ではＰＵＦ装置１００ｃは第２の実施の形態のＰＵＦ装置１００と同様の暗号処理機能を有しているが、第３の実施の形態のＰＵＦ装置１００ａや第４の実施の形態のＰＵＦ装置１００ｂと同様の暗号処理機能を有してもよい。その場合、ＰＵＦ装置１００ｃは暗号化部、復号部、鍵秘匿化部、鍵復元部などを有することがある。
【０１６９】
検査装置２００ａおよび開発装置３００は、第２の実施の形態の検査装置２００と同様のハードウェアを用いて実装することができる。
図２０は、第５の実施の形態の装置の機能例を示すブロック図である。
【０１７０】
検査装置２００ａは、検査用データベース２３１、衝突検出部２３２、衝突回避部２３３および検査結果表示部２３４を有する。検査用データベース２３１、衝突検出部２３２および検査結果表示部２３４は、第２の実施の形態の検査用データベース２２１、衝突検出部２２２および検査結果表示部２２３に対応する。衝突回避部２３３は、例えば、検査装置２００ａが有するＣＰＵが実行するプログラムを用いて実装される。
【０１７１】
衝突回避部２３３は、ＦＰＧＡデータを変更することでＰＵＦ値の衝突回避を試みる。衝突回避部２３３は、衝突検出部２３２でＰＵＦ値の衝突が検出されると、開発装置３００に新たなＦＰＧＡデータを要求する。衝突回避部２３３は、開発装置３００から取得した新たなＦＰＧＡデータを指定して、接続中のＰＵＦ装置に書き込みコマンドを送信することで、接続中のＰＵＦ装置のＦＰＧＡデータを書き換える。衝突回避部２３３は、接続中のＰＵＦ装置を再起動させ、衝突検出部２３２に再検査を行わせる。
【０１７２】
開発装置３００は、ＦＰＧＡデータ記憶部３２１、回路データ記憶部３２２およびＦＰＧＡデータ合成部３２３を有する。ＦＰＧＡデータ記憶部３２１および回路データ記憶部３２２は、例えば、開発装置３００が有するＲＡＭまたはＨＤＤに確保した記憶領域を用いて実装される。ＦＰＧＡデータ合成部３２３は、例えば、開発装置３００が有するＣＰＵが実行するプログラムを用いて実装される。
【０１７３】
ＦＰＧＡデータ記憶部３２１は、ＦＰＧＡ上にＰＵＦ回路を形成するためのＦＰＧＡデータを記憶する。ＦＰＧＡデータ記憶部３２１には、ＰＵＦ回路を構成する素子の配置が異なるような複数パターンのＦＰＧＡデータが用意されている。回路データ記憶部３２２は、ＦＰＧＡデータを合成する元となる回路データを記憶する。回路データはＰＵＦ回路として機能する論理回路を示す設計データであり、開発装置３００のユーザによって予め作成される。同一の回路データから、ＰＵＦ回路を構成する素子の配置が異なる複数パターンのＦＰＧＡデータを合成することが可能である。
【０１７４】
ＦＰＧＡデータ合成部３２３は、回路データ記憶部３２２に記憶された回路データから、回路配置の異なる複数パターンのＦＰＧＡデータを予め合成しておく。ＦＰＧＡデータの合成では「シード」と呼ばれる乱数が使用される。例えば、ＦＰＧＡデータ合成部３２３は、最初にシードをランダムに選択し、選択したシードを用いて回路配置の最適解の探索を制御する。シードを変えることで、最終的に決定される回路配置が変化する。ＦＰＧＡデータ合成部３２３は、異なる複数のシードに対応する複数パターンのＦＰＧＡデータを予め合成しておき、ＦＰＧＡデータ記憶部３２１に格納する。
【０１７５】
ＦＰＧＡデータ合成部３２３は、検査装置２００ａからの要求に応じて、未使用のＦＰＧＡデータをＦＰＧＡデータ記憶部３２１の中から選択し、選択したＦＰＧＡデータを検査装置２００ａに提供する。未使用のＦＰＧＡデータがＦＰＧＡデータ記憶部３２１の中に無い場合、ＦＰＧＡデータ合成部３２３は、回路データ記憶部３２２に記憶された回路データを用いて追加のＦＰＧＡデータを合成する。
【０１７６】
図２１は、第５の実施の形態の検査処理の手順例を示すフローチャートである。
（Ｓ２５０）衝突検出部２３２は、以下のステップＳ２５１〜Ｓ２５５の試行回数が所定の閾値以上であるか判断する。試行回数が閾値以上である場合はステップＳ２５７に処理が進み、試行回数が閾値未満である場合はステップＳ２５１に処理が進む。
【０１７７】
（Ｓ２５１）衝突回避部２３３は、開発装置３００からＦＰＧＡデータを取得する。
（Ｓ２５２）衝突回避部２３３は、ステップＳ２５１で取得したＦＰＧＡデータを指定して、接続中のＰＵＦ装置に書き込みコマンドを送信する。これにより、接続中のＰＵＦ装置に当該ＦＰＧＡデータが書き込まれる。
【０１７８】
（Ｓ２５３）衝突回避部２３３は、接続中のＰＵＦ装置を再起動させる。これにより、ステップＳ２５２で書き込まれたＦＰＧＡデータが、接続中のＰＵＦ装置のＦＰＧＡに読み込まれ、そのＦＰＧＡデータに従ってＰＵＦ回路が形成される。
【０１７９】
（Ｓ２５４）衝突検出部２３２は、検査用データベース２３１を参照してＰＵＦ値の衝突の有無を判定する。例えば、衝突検出部２３２は、第２の実施の形態のステップＳ２１０〜Ｓ２１８に従って衝突検査を行う。ただし、衝突検出部２３２は、第３の実施の形態のステップＳ２２０〜Ｓ２２７や第４の実施の形態のステップＳ２４０〜Ｓ２４８に従って衝突検査を行うことも可能である。衝突検出部２３２は、接続中のＰＵＦ装置が有する暗号処理機能に応じて検査方法を変えるようにしてもよい。
【０１８０】
（Ｓ２５５）衝突検出部２３２は、ステップＳ２５４でＰＵＦ値の衝突が検出されたか判断する。ＰＵＦ値の衝突が検出された場合はステップＳ２５０に処理が進み、ＰＵＦ値の衝突が検出されなかった場合はステップＳ２５６に処理が進む。
【０１８１】
（Ｓ２５６）衝突検出部２３２は、ＰＵＦ値の衝突が存在しないか解消されたと判定する。検査結果表示部２３４は、「衝突なし」のメッセージをディスプレイに表示する。
（Ｓ２５７）衝突検出部２３２は、ＰＵＦ値の衝突が解消されなかったと判定する。検査結果表示部２３４は、「衝突回避不可」のメッセージをディスプレイに表示する。
【０１８２】
第５の実施の形態の情報処理システムによれば、第２の実施の形態と同様の効果が得られる。また、第５の実施の形態の情報処理システムでは、ＰＵＦ値の衝突が検出された場合に、ＰＵＦ装置の設定を変更することでＰＵＦ値の衝突が自動的に解消される。よって、ＰＵＦ装置を破棄せずにそのＰＵＦ装置を安全に使用することができる。
【０１８３】
［第６の実施の形態］
次に、第６の実施の形態を説明する。第２〜第５の実施の形態と異なる事項を中心に説明し、これらの実施の形態と同様の事項については説明を省略することがある。
【０１８４】
第６の実施の形態の情報処理システムは、ＰＵＦ装置の設定変更の方法が第５の実施の形態と異なる。第６の実施の形態の情報処理システムは、図１８に示した第５の実施の形態の情報処理システムと同様の構成によって実現できる。ただし、第６の実施の形態では開発装置３００は使用しなくてよい。第６の実施の形態の検査装置は、図２０に示した第５の実施の形態の検査装置と同様の構成によって実現できる。検査装置については、第５の実施の形態と同じ符号を用いて説明する。
【０１８５】
図２２は、第６の実施の形態のＰＵＦ装置の例を示すブロック図である。
第５の実施の形態のＰＵＦ装置１００ｃに代えてＰＵＦ装置１００ｄが使用される。ＰＵＦ装置１００ｄは、入出力インタフェース１４１、制御データ記憶部１４２、制御部１４３、ＰＵＦ選択部１４４、ｍ個のＰＵＦ回路（ＰＵＦ回路１４５−１，１４５−２，…，１４５−ｍ）、補助データ生成部１４６、誤り訂正部１４７およびハッシュ関数部１４８を有する。ＰＵＦ装置１００ｄの一部分または全体が、ＦＰＧＡなどのプログラマブルデバイスを用いて実装されてもよいしＡＳＩＣを用いて実装されてもよい。
【０１８６】
入出力インタフェース１４１は、検査装置２００ａからコマンドを受信し、コマンドの実行結果を検査装置２００ａに出力する。第６の実施の形態ではコマンドの種類として、読み出しコマンド、書き込みコマンド、補助データ取得コマンドおよびハッシュ値取得コマンドが挙げられる。読み出しコマンドに対しては、制御データ記憶部１４２から制御データが読み出される。書き込みコマンドには制御データが付加されている。書き込みコマンドに対しては、入力された制御データが制御データ記憶部１４２に書き込まれる。補助データ取得コマンドおよびハッシュ値取得コマンドは、第５の実施の形態と同様である。
【０１８７】
制御データ記憶部１４２は、制御データを記憶する不揮発性の記憶装置である。制御データ記憶部１４２として、例えば、フラッシュメモリなどの不揮発性の半導体メモリが使用される。制御データは、ＰＵＦ回路１４５−１，１４５−２，…，１４５−ｍの中から１つのＰＵＦ回路を選択するためのデータであり、ＰＵＦ選択部１４４から参照される。例えば、制御データは、何番目のＰＵＦ回路を使用するかを示す非負整数を含む。書き込みコマンドに応じて、入出力インタフェース１４１から制御データ記憶部１４２に制御データが書き込まれる。また、読み出しコマンドに応じて、制御データ記憶部１４２から入出力インタフェース１４１に制御データが読み出される。
【０１８８】
制御部１４３は、第５の実施の形態の制御部１３３に対応する。
ＰＵＦ選択部１４４は、ＰＵＦ装置１００ｄの起動時に制御データ記憶部１４２から制御データをロードし、制御データに従ってＰＵＦ回路１４５−１，１４５−２，…，１４５−ｍの中から１つのＰＵＦ回路を選択する。ＰＵＦ選択部１４４は、制御部１４３からＰＵＦ値が要求されると、選択したＰＵＦ回路からＰＵＦ値を読み出し、読み出したＰＵＦ値を制御部１４３に出力する。出力されるＰＵＦ値は選択されたＰＵＦ回路に依存し、制御データを変更することで出力されるＰＵＦ値が大きく変化することがある。
【０１８９】
ＰＵＦ回路１４５−１，１４５−２，…，１４５−ｍはそれぞれ、ＰＵＦを利用してハードウェア固有の値であるＰＵＦ値を生成する電子回路である。異なるＰＵＦ回路は近似しないＰＵＦ値を生成する可能性が高く、１つのＰＵＦ回路のＰＵＦ値と別のＰＵＦ回路のＰＵＦ値との間のハミング距離は訂正可能ビット数を超える可能性が高い。制御データを書き換えてＰＵＦ装置１００ｄを再起動しない限り、同じＰＵＦ回路が使用される。
【０１９０】
補助データ生成部１４６、誤り訂正部１４７およびハッシュ関数部１４８は、第５の実施の形態の補助データ生成部１３５、誤り訂正部１３６およびハッシュ関数部１３７に対応する。なお、図２２ではＰＵＦ装置１００ｄは第２の実施の形態のＰＵＦ装置１００と同様の暗号処理機能を有しているが、第３の実施の形態のＰＵＦ装置１００ａや第４の実施の形態のＰＵＦ装置１００ｂと同様の暗号処理機能を有してもよい。その場合、ＰＵＦ装置１００ｄは暗号化部、復号部、鍵秘匿化部、鍵復元部などを有することがある。
【０１９１】
図２３は、第６の実施の形態の検査処理の手順例を示すフローチャートである。
（Ｓ２６０）衝突検出部２３２は、以下のステップＳ２６１〜Ｓ２６６の試行回数が所定の閾値以上であるか判断する。試行回数が閾値以上である場合はステップＳ２６８に処理が進み、試行回数が閾値未満である場合はステップＳ２６１に処理が進む。
【０１９２】
（Ｓ２６１）衝突回避部２３３は、接続中のＰＵＦ装置に読み出しコマンドを送信し、接続中のＰＵＦ装置に現在記憶されている制御データを取得する。
（Ｓ２６２）衝突回避部２３３は、ステップＳ２６１で取得した現在の制御データに基づいて次のＰＵＦ回路を選択し、選択した次のＰＵＦ回路を示す新たな制御データを生成する。例えば、衝突回避部２３３は、現在の制御データが示すＰＵＦ回路よりも番号が１つ大きいＰＵＦ回路を、次のＰＵＦ回路として選択する。ただし、衝突回避部２３３は、初回の検査では１番目のＰＵＦ回路を選択する。
【０１９３】
（Ｓ２６３）衝突回避部２３３は、ステップＳ２６２で生成した新たな制御データを指定して、接続中のＰＵＦ装置に書き込みコマンドを送信する。これにより、接続中のＰＵＦ装置に新たな制御データが書き込まれる。
【０１９４】
（Ｓ２６４）衝突回避部２３３は、接続中のＰＵＦ装置を再起動させる。これにより、ステップＳ２６３で書き込まれた制御データが、接続中のＰＵＦ装置のＰＵＦ選択部に読み込まれ、その制御データに従ってＰＵＦ回路が選択される。
【０１９５】
（Ｓ２６５）衝突検出部２３２は、検査用データベース２３１を参照してＰＵＦ値の衝突の有無を判定する。例えば、衝突検出部２３２は、第２の実施の形態のステップＳ２１０〜Ｓ２１８に従って衝突検査を行う。ただし、衝突検出部２３２は、第３の実施の形態のステップＳ２２０〜Ｓ２２７や第４の実施の形態のステップＳ２４０〜Ｓ２４８に従って衝突検査を行うことも可能である。衝突検出部２３２は、接続中のＰＵＦ装置が有する暗号処理機能に応じて検査方法を変えるようにしてもよい。
【０１９６】
（Ｓ２６６）衝突検出部２３２は、ステップＳ２６５でＰＵＦ値の衝突が検出されたか判断する。ＰＵＦ値の衝突が検出された場合はステップＳ２６０に処理が進み、ＰＵＦ値の衝突が検出されなかった場合はステップＳ２６７に処理が進む。
【０１９７】
（Ｓ２６７）衝突検出部２３２は、ＰＵＦ値の衝突が存在しないか解消されたと判定する。検査結果表示部２３４は、「衝突なし」のメッセージをディスプレイに表示する。
（Ｓ２６８）衝突検出部２３２は、ＰＵＦ値の衝突が解消されなかったと判定する。検査結果表示部２３４は、「衝突回避不可」のメッセージをディスプレイに表示する。
【０１９８】
第６の実施の形態の情報処理システムによれば、第５の実施の形態と同様の効果が得られる。また、第６の実施の形態の情報処理システムでは、プログラマブルデバイスを用いてＰＵＦ回路が実装されていなくても、ＰＵＦ値の衝突回避が可能となる。
【０１９９】
［第７の実施の形態］
次に、第７の実施の形態を説明する。第２〜第６の実施の形態と異なる事項を中心に説明し、これらの実施の形態と同様の事項については説明を省略することがある。
【０２００】
第７の実施の形態では、ＰＵＦ装置を製造する製造者が出荷前にＰＵＦ装置を検査し、そのＰＵＦ装置を入手したユーザやベンダーなどが確認のため追加的にＰＵＦ装置を検査する。追加的な検査を支援するため、第７の実施の形態の情報処理システムは、製造者が検査の過程で生成した検査用データを公開する。
【０２０１】
図２４は、第７の実施の形態の情報処理システムの例を示す図である。
第７の実施の形態の情報処理システムは、ＰＵＦ装置１００ｅ，１００ｅ−１，１００ｅ−２を含む複数のＰＵＦ装置、検査装置２００ｂ，５００および公開サーバ４００を有する。公開サーバ４００および検査装置５００は、ネットワーク６２に接続されている。ネットワーク６２は、インターネットなどの広域ネットワークである。
【０２０２】
公開サーバ４００は、検査装置２００ｂが検査の過程で生成した検査用データを確認データとして公開するサーバコンピュータである。ネットワーク６１，６２を介して検査装置２００ｂから公開サーバ４００に確認データがアップロードされる。検査装置５００は、ＰＵＦ装置を入手したユーザやベンダーなどが使用するコンピュータである。検査装置５００にはＰＵＦ装置が接続される。検査装置５００は、ネットワーク６２を介して公開サーバ４００から確認データを取得し、確認データを用いて、入手したＰＵＦ装置と入手していない他のＰＵＦ装置との間でＰＵＦ値の衝突が生じていないことを確認する。
【０２０３】
図２５は、第７の実施の形態のＰＵＦ装置の例を示すブロック図である。
ＰＵＦ装置１００ｅは、入出力インタフェース１５１、制御部１５２、ＰＵＦ回路１５３、補助データ生成部１５４、誤り訂正部１５５、ハッシュ関数部１５６およびＩＤ記憶部１５７を有する。ＰＵＦ装置１００ｅ−１，１００ｅ−２などの他のＰＵＦ装置も、ＰＵＦ装置１００ｅと同様のハードウェアを用いて実装できる。
【０２０４】
入出力インタフェース１５１は、検査装置２００ｂからコマンドを受信し、コマンドの実行結果を検査装置２００ｂに出力するインタフェースである。第７の実施の形態ではコマンドの種類として、補助データ取得コマンド、ハッシュ値取得コマンドおよびＩＤ読み出しコマンドが挙げられる。補助データ取得コマンドおよびハッシュ値取得コマンドは、第２の実施の形態と同様である。ＩＤ読み出しコマンドに対しては、ＰＵＦ装置１００ｅを識別する識別子であるＰＵＦ装置ＩＤが出力される。
【０２０５】
制御部１５２は、入出力インタフェース１５１から補助データ取得コマンドまたはハッシュ値取得コマンドを取得すると、ＰＵＦ回路１５３、補助データ生成部１５４、誤り訂正部１５５およびハッシュ関数部１５６を利用して暗号処理を実行する。また、制御部１５２は、入出力インタフェース１５１からＩＤ読み出し取得コマンドを取得すると、ＩＤ記憶部１５７からＰＵＦ装置ＩＤを読み出して入出力インタフェース１５１に出力する。
【０２０６】
ＰＵＦ回路１５３、補助データ生成部１５４、誤り訂正部１５５およびハッシュ関数部１５６は、第２の実施の形態のＰＵＦ回路１０３、補助データ生成部１０４、誤り訂正部１０５およびハッシュ関数部１０６に対応する。
【０２０７】
なお、図２５ではＰＵＦ装置１００ｅは第２の実施の形態のＰＵＦ装置１００と同様の暗号処理機能を有しているが、第３の実施の形態のＰＵＦ装置１００ａや第４の実施の形態のＰＵＦ装置１００ｂと同様の暗号処理機能を有してもよい。その場合、ＰＵＦ装置１００ｅは暗号化部、復号部、鍵秘匿化部、鍵復元部などを有することがある。
【０２０８】
ＩＤ記憶部１５７は、ＰＵＦ装置１００ｅを識別するＰＵＦ装置ＩＤを記憶する不揮発性の記憶装置である。ＩＤ記憶部１５７として、例えば、ＲＯＭ（Read Only Memory）やフラッシュメモリなどの不揮発性の半導体メモリが使用される。ＩＤ記憶部１５７には、他のＰＵＦ装置と重複しないように予めＰＵＦ装置ＩＤが保存されている。
【０２０９】
検査装置２００ｂ，５００および公開サーバ４００は、第２の実施の形態の検査装置２００と同様のハードウェアを用いて実装することができる。
図２６は、第７の実施の形態の装置の機能例を示すブロック図である。
【０２１０】
検査装置２００ｂは、検査用データベース２４１、衝突検出部２４２、検査結果表示部２４３および確認データ送信部２４４を有する。検査用データベース２４１、衝突検出部２４２および検査結果表示部２４３は、第２の実施の形態の検査用データベース２２１、衝突検出部２２２および検査結果表示部２２３に対応する。確認データ送信部２４４は、例えば、ＣＰＵが実行するプログラムを用いて実装される。
【０２１１】
検査用データベース２４１は、第２の実施の形態の既出データテーブル２２４と同様の既出データテーブルを記憶する。ただし、第７の実施の形態では既出データテーブルの各レコードにＰＵＦ装置ＩＤが更に含まれる。なお、検査用データベース２４１は、第３の実施の形態の既出データテーブル２２５や第４の実施の形態の既出データテーブル２２７と同様の既出データテーブルを記憶してもよい。その場合も、既出データテーブルの各レコードにはＰＵＦ装置ＩＤが更に含まれる。また、検査用データベース２４１は、第３の実施の形態の元データテーブル２２６や第４の実施の形態の元データテーブル２２８と同様の元データテーブルを記憶してもよい。
【０２１２】
衝突検出部２４２は、第２の実施の形態の衝突検出部２２２と同様の方法で衝突検査を行う。ただし、衝突検出部２４２は、接続中のＰＵＦ装置について衝突なしと判定したとき、既出補助データと既出ハッシュ値に加えてＰＵＦ装置ＩＤを接続中のＰＵＦ装置から取得し、検査用データベース２４１に記憶された既出データテーブルに登録する。なお、衝突検出部２４２は、第３の実施の形態や第４の実施の形態と同様の方法で衝突検査を行ってもよい。その場合も、衝突検出部２４２は、接続中のＰＵＦ装置からＰＵＦ装置ＩＤを取得して既出データテーブルに登録するようにする。
【０２１３】
検査結果表示部２４３は、衝突検出部２４２の検査結果をディスプレイに表示する。
確認データ送信部２４４は、検査が終了したＰＵＦ装置について、検査用データベース２４１に記憶された既出データテーブルを確認データとして公開サーバ４００に送信する。検査用データベース２４１に元データテーブルが記憶されている場合、元データテーブルも確認データに含めて公開サーバ４００に送信する。
【０２１４】
公開サーバ４００は、公開データベース４２１、確認データ保存部４２２および確認データ提供部４２３を有する。公開データベース４２１は、例えば、ＲＡＭまたはＨＤＤに確保した記憶領域を用いて実装される。確認データ保存部４２２および確認データ提供部４２３は、例えば、プログラムを用いて実装される。
【０２１５】
公開データベース４２１は、検査装置２００ｂからアップロードされた確認データを記憶する。確認データには既出データテーブルが含まれる。衝突検査に元データテーブルが使用される場合、確認データに更に元データテーブルが含まれる。確認データ保存部４２２は、検査装置２００ｂから確認データを受信し、公開データベース４２１に確認データを格納する。確認データ提供部４２３は、検査装置５００からの要求に応じて、公開データベース４２１から確認データを読み出して検査装置５００に送信する。
【０２１６】
検査装置５００は、確認データ取得部５２１、ＩＤ取得部５２２、衝突検出部５２３および検査結果表示部５２４を有する。確認データ取得部５２１、ＩＤ取得部５２２、衝突検出部５２３および検査結果表示部５２４は、例えば、プログラムを用いて実装される。
【０２１７】
確認データ取得部５２１は、検査装置５００にＰＵＦ装置が接続されると、公開サーバ４００から確認データを取得する。ＩＤ取得部５２２は、接続中のＰＵＦ装置にＩＤ読み出しコマンドを送信し、接続中のＰＵＦ装置のＰＵＦ装置ＩＤを取得する。
【０２１８】
衝突検出部５２３は、確認データ取得部５２１が取得した確認データを用いて、検査装置２００ｂの衝突検出部２４２と同様の方法で接続中のＰＵＦ装置を検査する。衝突検出部５２３の検査では、接続中のＰＵＦ装置のＰＵＦ値が、製造者によって出荷された他のＰＵＦ装置のＰＵＦ値と衝突していないことを確認する。そのとき、確認データには接続中のＰＵＦ装置に対応するレコードも含まれているため、衝突検出部５２３は、ＩＤ取得部５２２が取得したＰＵＦ装置ＩＤを含むレコードを無視して検査を行う。検査結果表示部５２４は、衝突検出部５２３の検査結果をディスプレイに表示する。
【０２１９】
図２７は、第７の実施の形態の公開テーブルの例を示す図である。
公開データベース４２１は、既出データテーブル４２４を記憶する。既出データテーブル４２４は、ＰＵＦ装置ＩＤ、既出補助データおよび既出ハッシュ値の項目を有する。ＰＵＦ装置ＩＤの項目には、検査済みのＰＵＦ装置のＰＵＦ装置ＩＤが登録される。既出補助データの項目には、検査済みのＰＵＦ装置が生成した補助データが登録される。既出ハッシュ値の項目には、検査済みのＰＵＦ装置が生成したハッシュ値が登録される。
【０２２０】
なお、第３の実施の形態と同様の検査方法を採用する場合、公開データベース４２１は、ＰＵＦ装置ＩＤおよび既出暗号文の項目を有する既出データテーブルと、照合用平文の項目を有する元データテーブルとを記憶してもよい。また、第４の実施の形態と同様の検査方法を採用する場合、公開データベース４２１は、ＰＵＦ装置ＩＤ、既出秘匿化暗号鍵および既出暗号文の項目を有する既出データテーブルと、照合用平文および暗号鍵の項目を有する元データテーブルとを記憶してもよい。
【０２２１】
図２８は、第７の実施の形態の再検査処理の手順例を示すフローチャートである。
（Ｓ３１０）ＩＤ取得部５２２は、接続中のＰＵＦ装置にＩＤ読み出しコマンドを送信し、接続中のＰＵＦ装置からＰＵＦ装置ＩＤを取得する。
【０２２２】
（Ｓ３１１）衝突検出部５２３は、既出データテーブル４２４に未選択のレコードが残っているか判断する。未選択のレコードがある場合はステップＳ３１２に処理が進み、全てのレコードを選択した場合はステップＳ３１７に処理が進む。
【０２２３】
（Ｓ３１２）衝突検出部５２３は、既出データテーブル４２４からレコードを１つ選択する。選択するレコードは、ＰＵＦ装置ＩＤと既出補助データと既出ハッシュ値を含む。
（Ｓ３１３）衝突検出部５２３は、ステップＳ３１２で取得した既出補助データを指定して、接続中のＰＵＦ装置にハッシュ値取得コマンドを送信する。衝突検出部５２３は、ハッシュ値取得コマンドに対する応答としてハッシュ値を取得する。
【０２２４】
（Ｓ３１４）衝突検出部５２３は、ステップＳ３１３で取得したハッシュ値がステップＳ３１２の既出ハッシュ値と一致するか判断する。取得したハッシュ値が既出ハッシュ値と一致する場合はステップＳ３１５に処理が進み、取得したハッシュ値が既出ハッシュ値と一致しない場合はステップＳ３１１に処理が進む。
【０２２５】
（Ｓ３１５）衝突検出部５２３は、ステップＳ３１２のＰＵＦ装置ＩＤがステップＳ３１０で読み出したＰＵＦ装置ＩＤと同一であるか判断する。ＰＵＦ装置ＩＤが同一の場合はステップＳ３１１に処理が進み、同一でない場合はステップＳ３１６に処理が進む。
【０２２６】
（Ｓ３１６）衝突検出部５２３は、接続中のＰＵＦ装置と他の出荷されたＰＵＦ装置との間でＰＵＦ値の衝突が生じていると判定する。検査結果表示部５２４は、「衝突あり」のメッセージを検査装置５００のディスプレイに表示する。
【０２２７】
（Ｓ３１７）衝突検出部５２３は、接続中のＰＵＦ装置と他の出荷されたＰＵＦ装置との間でＰＵＦ値の衝突が生じていないと判定する。検査結果表示部５２４は、「衝突なし」のメッセージを検査装置５００のディスプレイに表示する。
【０２２８】
なお、衝突検出部５２３は、上記のステップＳ３１１〜Ｓ３１４に代えて、第３の実施の形態のステップＳ２２０〜Ｓ２２３と同様の処理を実行してもよい。また、衝突検出部５２３は、上記のステップＳ３１１〜Ｓ３１４に代えて、第４の実施の形態のステップＳ２４０〜Ｓ２４３と同様の処理を実行してもよい。また、第７の実施の形態と前述の第５の実施の形態または第６の実施の形態とを組み合わせることも可能である。
【０２２９】
第７の実施の形態の情報処理システムによれば、第２の実施の形態と同様の効果が得られる。また、第７の実施の形態の情報処理システムでは、ＰＵＦ装置の製造者以外の者がＰＵＦ値の衝突がないことを確認でき、ＰＵＦ装置を安心して使用することができる。
【符号の説明】
【０２３０】
１０，１０ａ  被検査装置
１１  生成回路
１２，２２  処理部
２０  検査装置
２１  記憶部
２３  符号化結果データ
２４  照合用データ
２５  復号結果データ
【図１】
2019012919.tif 000003
【図２】
2019012919.tif 000004
【図３】
2019012919.tif 000005
【図４】
2019012919.tif 000006
【図５】
2019012919.tif 000007
【図６】
2019012919.tif 000008
【図７】
2019012919.tif 000009
【図８】
2019012919.tif 000010
【図９】
2019012919.tif 000011
【図１０】
2019012919.tif 000012
【図１１】
2019012919.tif 000013
【図１２】
2019012919.tif 000014
【図１３】
2019012919.tif 000015
【図１４】
2019012919.tif 000016
【図１５】
2019012919.tif 000017
【図１６】
2019012919.tif 000018
【図１７】
2019012919.tif 000019
【図１８】
2019012919.tif 000020
【図１９】
2019012919.tif 000021
【図２０】
2019012919.tif 000022
【図２１】
2019012919.tif 000023
【図２２】
2019012919.tif 000024
【図２３】
2019012919.tif 000025
【図２４】
2019012919.tif 000026
【図２５】
2019012919.tif 000027
【図２６】
2019012919.tif 000028
【図２７】
2019012919.tif 000029
【図２８】
2019012919.tif 000030