(57)【要約】【課題】ＰＵＦに基づくデバイス固有データのエラー訂正を行うために必要な情報量を低減する。【解決手段】制御基板は、電源が供給されている間、個体固有のＰＵＦ情報を出力するＰＵＦ回路と、前記ＰＵＦ回路が出力するＰＵＦ情報に対しエラー訂正処理を施した訂正後ＰＵＦ情報を出力する訂正部と、暗号化された被暗号化情報を入力し、当該被暗号化情報を前記訂正部が出力する訂正後ＰＵＦ情報に基づく暗号鍵で復号する復号部と、を備える。前記訂正部は、前記ＰＵＦ回路から複数回入力したＰＵＦ情報の演算結果に基づいて、当該ＰＵＦ情報のうち０、１のいずれとなるかが不定である不定ビットを特定するとともに、当該不定ビットを０又は１の値で上書きして前記訂正後ＰＵＦ情報を生成する。【選択図】図２Ａ
2020188345.tif 000002
【特許請求の範囲】
【請求項１】
電源が供給されている間、個体固有のＰＵＦ情報を出力するＰＵＦ回路と、
前記ＰＵＦ回路が出力するＰＵＦ情報に対しエラー訂正処理を施した訂正後ＰＵＦ情報を出力する訂正部と、
暗号化された被暗号化情報を入力し、当該被暗号化情報を前記訂正部が出力する訂正後ＰＵＦ情報に基づく暗号鍵で復号する復号部と、
を備え、
前記訂正部は、
前記ＰＵＦ回路から複数回入力したＰＵＦ情報の演算結果に基づいて、当該ＰＵＦ情報のうち０、１のいずれとなるかが不定である不定ビットを特定するとともに、当該不定ビットを０又は１の値で上書きして前記訂正後ＰＵＦ情報を生成する
制御基板。
【請求項２】
前記ＰＵＦ情報の演算結果とは、ＰＵＦ情報のビットごとの積算結果である
請求項１に記載の制御基板。
【請求項３】
前記ＰＵＦ情報の演算結果とは、１回目に取得されたＰＵＦ情報と２回目以降に取得されたＰＵＦ情報との排他的論理和に基づく結果である
請求項１に記載の制御基板。
【請求項４】
前記訂正部は、
予め定められた同一の値で、全ての前記不定ビットを上書きする
請求項１から請求項３のいずれか一項に記載の制御基板。
【請求項５】
前記訂正部は、
当該ＰＵＦ情報のうち０、１が特定できたビットの値から演算した結果で、前記不定ビットの値を決める
請求項１に記載の制御基板。
【請求項６】
前記訂正部は、
事前に外部記憶装置に記録された所定のデータ列に示される０又は１の情報を、前記不定ビットのそれぞれに上書きする
請求項１に記載の制御基板。
【請求項７】
前記データ列のビット数と、前記不定ビットの数とが一致していない場合に、前記ＰＵＦ回路の動作条件を変更する変更部をさらに備える
請求項６に記載の制御基板。
【請求項８】
前記被暗号化情報が正しく復号されたか否かを判定し、当該被暗号化情報が正しく復号されていなかった場合に、前記ＰＵＦ回路の動作条件を変更する変更部をさらに備える
請求項１から請求項７のいずれか一項に記載の制御基板。
【請求項９】
前記変更部は、前記動作条件として、前記ＰＵＦ回路に供給される電源電圧を変更する
請求項８に記載の制御基板。
【請求項１０】
前記変更部は、前記動作条件として、前記ＰＵＦ回路の雰囲気温度を変更する
請求項８または請求項９に記載の制御基板。
【請求項１１】
前記被暗号化情報は、制御プログラムを復号するための共通暗号鍵である
請求項１から請求項１０のいずれか一項に記載の制御基板。
【請求項１２】
請求項１から請求項１１の何れか一項に記載の制御基板を備える制御装置。
【請求項１３】
請求項１から請求項１１の何れか一項に記載の制御基板と、
情報配信装置と、を備え、
前記情報配信装置は、
前記制御基板に実装された前記ＰＵＦ回路から、事前に前記暗号鍵を取得して記録し、
記録した前記暗号鍵を用いて前記被暗号化情報を生成するとともに、前記制御基板に対し当該被暗号化情報を配信する
情報配信システム。
【請求項１４】
電源が供給されている間、制御基板のＰＵＦ回路から個体固有のＰＵＦ情報を出力するステップと、
前記制御基板の訂正部から、前記ＰＵＦ回路が出力するＰＵＦ情報に対しエラー訂正処理を施した訂正後ＰＵＦ情報を出力するステップと、
暗号化された被暗号化情報を入力し、当該被暗号化情報を前記訂正部が出力する訂正後ＰＵＦ情報に基づく暗号鍵で復号するステップと、
を有し、
前記訂正後ＰＵＦ情報を出力するステップでは、
前記ＰＵＦ回路から複数回入力したＰＵＦ情報の演算結果に基づいて、当該ＰＵＦ情報のうち０、１のいずれとなるかが不定である不定ビットを特定するとともに、当該不定ビットを０又は１の値で上書きして前記訂正後ＰＵＦ情報を生成する
復号方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御基板、制御装置、情報配信システム及び復号方法に関する。
【背景技術】
【０００２】
組込みシステムのソフトウェアを保護する手法として、ＴＰＭ（Trusted Platform Module）を使った暗号化による保護や、環境変化を検知してソフトウェアを消去する手法が提案されている。また、物理的複製困難関数（Physically Unclonable Function；ＰＵＦ）と呼ばれる、半導体チップの製造ばらつき、物理特性の違いなどの物理量を当該半導体チップの固有値として出力し、その真贋判定に用いることが提案されている。さらには当該半導体チップの固有値を暗号鍵に利用することが提案されている。
【０００３】
上記に関連する技術として、特許文献１には、ヘルパーデータを用いて、ＰＵＦに基づくデバイス固有データの誤りを訂正する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−０６５４９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
デバイス固有データに生じる誤りを訂正するためには、ヘルパーデータとして事前に記録しておくべき情報量（データサイズ）が大きくなる。さらには、ＦＰＧＡに大規模なエラー訂正回路を実装すると、ＦＰＧＡリソースを消費してしまう場合がある。
【０００６】
本発明の少なくとも一実施形態は、ＰＵＦに基づくデバイス固有データのエラー訂正を行うために必要な情報量を低減可能な制御基板、制御装置、情報配信システム及び復号方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の態様によれば、制御基板は、電源が供給されている間、個体固有のＰＵＦ情報を出力するＰＵＦ回路と、前記ＰＵＦ回路が出力するＰＵＦ情報に対しエラー訂正処理を施した訂正後ＰＵＦ情報を出力する訂正部と、暗号化された被暗号化情報を入力し、当該被暗号化情報を前記訂正部が出力する訂正後ＰＵＦ情報に基づく暗号鍵で復号する復号部と、を備える。前記訂正部は、前記ＰＵＦ回路から複数回入力したＰＵＦ情報の演算結果に基づいて、当該ＰＵＦ情報のうち０、１のいずれとなるかが不定である不定ビットを特定するとともに、当該不定ビットを０又は１の値で上書きして前記訂正後ＰＵＦ情報を生成する。
【０００８】
また、本発明の第２の態様によれば、前記ＰＵＦ情報の演算結果とは、ＰＵＦ情報のビットごとの積算結果である。
【０００９】
また、本発明の第３の態様によれば、前記ＰＵＦ情報の演算結果とは、１回目に取得されたＰＵＦ情報と２回目以降に取得されたＰＵＦ情報との排他的論理和に基づく結果である。
【００１０】
また、本発明の第４の態様によれば、前記訂正部は、予め定められた同一の値で、全ての前記不定ビットを上書きする。
【００１１】
また、本発明の第５の態様によれば、前記訂正部は、当該ＰＵＦ情報のうち０、１が特定できたビットの値から演算した結果で、前記不定ビットの値を決める。
【００１２】
また、本発明の第６の態様によれば、前記訂正部は、事前に外部記憶装置に記録された所定のデータ列に示される０又は１の情報を、前記不定ビットのそれぞれに上書きする。
【００１３】
また、本発明の第７の態様によれば、上述の制御基板は、前記データ列のビット数と、前記不定ビットの数とが一致していない場合に、前記ＰＵＦ回路の動作条件を変更する変更部をさらに備える。
【００１４】
また、本発明の第８の態様によれば、上述の制御基板は、前記被暗号化情報が正しく復号されたか否かを判定し、当該被暗号化情報が正しく復号されていなかった場合に、前記ＰＵＦ回路の動作条件を変更する変更部をさらに備える。
【００１５】
また、本発明の第９の態様によれば、前記変更部は、前記動作条件として、前記ＰＵＦ回路に供給される電源電圧を変更する。
【００１６】
また、本発明の第１０の態様によれば、前記変更部は、前記動作条件として、前記ＰＵＦ回路の雰囲気温度を変更する。
【００１７】
また、本発明の第１１の態様によれば、前記被暗号化情報は、制御プログラムを復号するための共通暗号鍵である。
【００１８】
また、本発明の第１２の態様によれば、制御装置は、上述の制御基板を備える。
【００１９】
また、本発明の第１３の態様によれば、情報配信システムは、上述の制御基板と、情報配信装置と、を備え、前記情報配信装置は、前記制御基板に実装された前記ＰＵＦ回路から、事前に前記暗号鍵を取得して記録し、記録した前記暗号鍵を用いて前記被暗号化情報を生成するとともに、前記制御基板に対し当該被暗号化情報を配信する。
【００２０】
また、本発明の第１４の態様によれば、復号方法は、電源が供給されている間、制御基板のＰＵＦ回路から個体固有のＰＵＦ情報を出力するステップと、前記制御基板の訂正部から、前記ＰＵＦ回路が出力するＰＵＦ情報に対しエラー訂正処理を施した訂正後ＰＵＦ情報を出力するステップと、暗号化された被暗号化情報を入力し、当該被暗号化情報を前記訂正部が出力する訂正後ＰＵＦ情報に基づく暗号鍵で復号するステップと、を有する。前記訂正後ＰＵＦ情報を出力するステップでは、前記ＰＵＦ回路から複数回入力したＰＵＦ情報の演算結果に基づいて、当該ＰＵＦ情報のうち０、１のいずれとなるかが不定である不定ビットを特定するとともに、当該不定ビットを０又は１の値で上書きして前記訂正後ＰＵＦ情報を生成する。
【発明の効果】
【００２１】
上述の発明の各態様によれば、ＰＵＦに基づくデバイス固有データのエラー訂正を行うために必要な情報量を低減できる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態に係る制御装置の製造工程の概要を示す図である。
【図２Ａ】本発明の一実施形態に係るＰＵＦ回路等の構成を示す図である。
【図２Ｂ】本発明の一実施形態に係る制御基板の機能構成を示す図である。
【図３】本発明の一実施形態に係るＰＵＦ回路の模式図を示す図である。
【図４】本発明の一実施形態に係るＰＵＦ回路の特性を説明するための図である。
【図５】本発明の一実施形態に係るレスポンス値取得冶具及び情報配信装置が実行する処理フローを示す図である。
【図６】本発明の一実施形態に係る情報配信装置が実行するエラー訂正処理の処理フローを示す図である。
【図７】本発明の一実施形態に係る情報配信装置のエラー訂正処理を説明するための図である。
【図８】本発明の一実施形態に係る情報配信装置のエラー訂正処理を説明するための図である。
【図９】本発明の一実施形態に係る制御基板及び情報配信装置が実行する処理フローを示す図である。
【図１０】本発明の一実施形態に係る制御基板が実行する処理フローを示す図である。
【図１１】本発明の一実施形態に係る情報配信装置が実行するエラー訂正処理の処理フローを示す図である。
【図１２】本発明の一実施形態に係る情報配信装置のエラー訂正処理を説明するための図である。
【図１３】本発明の一実施形態に係る訂正部が実行するエラー訂正処理の処理フローを示す図である。
【図１４】本発明の一実施形態に係る訂正部のエラー訂正処理を説明するための図である。
【図１５】本発明の一実施形態に係る制御基板の機能構成を示す図である。
【図１６】本発明の一実施形態に係る制御基板が実行する処理フローを示す図である。
【図１７】本発明の一実施形態に係る情報配信装置及び訂正部のエラー訂正処理を説明するための図である。
【図１８】本発明の一実施形態に係る情報配信装置及び訂正部のエラー訂正処理を説明するための図である。
【発明を実施するための形態】
【００２３】
＜第１の実施形態＞
以下、第１の実施形態に係る制御基板について、図１〜図６を参照しながら説明する。
【００２４】
（制御装置の製造工程の概要）
図１は、第１の実施形態に係る制御装置の製造工程の概要を示す図である。
第１の実施形態において、メーカーＭは、ガスタービン、ボイラー等を制御するための制御装置を生産する。当該制御装置は、ある制御プログラムＰｄａｔａで動作する制御基板１を具備する。
図１に示す情報配信システム９は、以下に説明する制御基板１と情報配信装置２とを有してなる。
【００２５】
図１に示すように、制御基板１に実装されるＦＰＧＡ１１は、メーカーＭが国内に保有する開発工場（以下、「国内開発拠点Ｌ１」とも記載する。）で製造される。また、制御基板１を動作させるための制御プログラムＰｄａｔａも国内開発拠点Ｌ１で開発される。本実施形態において、制御プログラムＰｄａｔａにはメーカーＭのノウハウが多く含まれている。そのため、国内開発拠点Ｌ１は、開発した制御プログラムＰｄａｔａ等の情報が外部に流出しないよう、十分なセキュリティが担保されている。
【００２６】
また、図１に示すように、制御装置に具備される制御基板１は、例えば、メーカーＭが海外に保有する生産工場（以下、「海外生産拠点Ｌ２」とも記載する。）で生産される。ここで、メーカーＭは、国内開発拠点Ｌ１で製造したＦＧＰＡ１１を海外生産拠点Ｌ２へ出荷する。海外生産拠点Ｌ２では、国内開発拠点Ｌ１から出荷されたＦＰＧＡ１１の、制御基板１への実装が行われる。
【００２７】
図１に示すように、国内開発拠点Ｌ１には、情報配信装置２が設置されている。情報配信装置２は、広域通信網（例えば、インターネット回線等）を通じて、海外生産拠点Ｌ２で製造された制御装置（制御基板１）に対し、制御プログラムＰｄａｔａを配信する。ここで、第三者によって広域通信網を盗聴される可能性があるため、制御プログラムＰｄａｔａは所定の暗号鍵（後述する「レスポンス値」）で暗号化された状態で送信される。なお、以下の説明において、暗号鍵で暗号化された制御プログラムＰｄａｔａを「被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａ」とも表記する。また、制御プログラムＰｄａｔａは、暗号鍵で暗号化される、被暗号化情報の一態様である。
制御基板１は、国内開発拠点Ｌ１に設置された情報配信装置２から被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを受信し、制御基板１に実装された不揮発性メモリ（後述するフラッシュＲＯＭ１８）に記録する。
【００２８】
実際に制御装置として動作する場合、制御基板１に実装されたＣＰＵ（後述するＣＰＵ１０）は、ＦＰＧＡ１１を用いて、フラッシュＲＯＭ１８に記録された暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを復号し、制御基板１に実装された揮発性メモリ（後述するＲＡＭ１７）に展開する。制御基板１に実装されたＣＰＵは、復号された制御プログラムＰｄａｔａに従って動作する。
【００２９】
なお、国内開発拠点Ｌ１では、ＦＰＧＡ１１の出荷前に、当該ＦＰＧＡ１１の個体識別情報（製造番号等）と当該ＦＰＧＡ１１（ＰＵＦ回路１１０）から固有に出力される暗号鍵（レスポンス値）とを関連付けて情報配信装置２に記録しておく。
【００３０】
（出荷前におけるＰＵＦ回路等の構成）
図２Ａは、第１の実施形態のＰＵＦ回路等の構成を示す図である。
国内開発拠点Ｌ１では、出荷される前のＦＰＧＡ１１（ＰＵＦ回路１１０）から暗号鍵（レスポンス値）を取得して、情報配信装置２に記録する工程が行われる。図２Ａは、この工程に用いられる構成を示している。
【００３１】
図２Ａに示すように、レスポンス値取得冶具１Ａは、ＰＵＦ回路１１０が形成されたＦＰＧＡ１１と、通信回路１１２とを備えている。このＦＰＧＡ１１は、情報配信装置２によってレスポンス値が取得された後、レスポンス値取得冶具１Ａから取り外されて、海外生産拠点Ｌ２に出荷される。
【００３２】
ＦＰＧＡ１１は、論理構成を自由に書き換え可能な論理回路である。レスポンス値取得冶具１Ａに取り付けられている段階においては、ＦＰＧＡ１１にはＰＵＦ回路１１０のみが形成されている。
ＰＵＦ回路１１０は、ＦＰＧＡ１１に電源が供給されている間、所定のチャレンジ値を入力した場合に、個体固有のＰＵＦ（Physically Unclonable Function）情報（レスポンス値）を出力する。ここで、ＰＵＦ情報とは、ＦＰＧＡ１１の製造工程で生じる物理的、電気的特性のばらつきに応じて固有に生成される情報であって、ＦＰＧＡ１１の個体ごとに異なるデバイス固有データである。
本実施形態に係るＰＵＦ回路１１０は、既知のＰＵＦ技術として、アービターＰＵＦが適用される。また、本実施形態に係るＰＵＦ回路１１０は、１２８種類の１２８ビットデータ列からなるチャレンジ値を入力し、１つの１２８ビットデータ列からなるレスポンス値を、ＰＵＦ情報として出力する。ただし、他の実施形態においてはこの態様に限定されず、ＰＵＦ情報は、１２８ビットよりも長い、又は、短いデータ列であってもよい。
【００３３】
レスポンス値取得冶具１Ａに備えられた通信回路１１２は、情報配信装置２から出力されたチャレンジ値（１２８ビット×１２８種類）を受信してＦＰＧＡ１１のＰＵＦ回路１１０に入力する。そして、通信回路１１２は、このチャレンジ値に対応してＰＵＦ回路１１０から出力されたレスポンス値を情報配信装置２に向けて送信する。
【００３４】
情報配信装置２は、チャレンジ値をレスポンス値取得冶具１Ａに向けて送信する。このとき、本実施形態に係る情報配信装置２は、後述するように、複数回（Ｎ回）繰り返し、同一のチャレンジ値を送信する。また、情報配信装置２は、複数回のチャレンジ値のそれぞれに対応して出力されたレスポンス値を取得する。情報配信装置２は、複数回に渡って取得されたレスポンス値について所定のエラー訂正処理を施すとともに、エラー訂正処理後のレスポンス値（訂正後ＰＵＦ情報）を、ＦＰＧＡ１１の個体識別情報と関連付けて記録する。
【００３５】
なお、本実施形態においては、ＦＰＧＡ１１（ＰＵＦ回路１１０）から外部に送信される暗号鍵は、エラー訂正処理後のレスポンス値（訂正後ＰＵＦ情報）そのものであるものとして説明するが、他の実施形態においてはこの態様に限定されない。例えば、他の実施形態に係るＦＰＧＡ１１は、エラー訂正処理後のレスポンス値に所定の変換アルゴリズムを施して得られるデータ列を暗号鍵として出力してもよい。この場合、エラー訂正処理後のレスポンス値と、暗号鍵であるデータ列とは、上記変換アルゴリズムを介して１対１に対応して相互に変換可能であるものとする。
【００３６】
（制御基板の機能構成）
図２Ｂは、第１の実施形態に係る制御基板の機能構成を示す図である。
図２Ｂは、図２Ａに示したＦＰＧＡ１１がレスポンス値取得冶具１Ａから取り外された後、海外生産拠点Ｌ２に出荷され、制御基板１に実装された後の構成を示している。
【００３７】
図２Ｂに示すように、制御基板１は、ＣＰＵ１０と、ＦＰＧＡ１１と、外部通信回路１２と、ＲＡＭ１３と、フラッシュＲＯＭ１４と、ＲＯＭ１５とを備えている。
【００３８】
ＣＰＵ１０は、制御基板１の動作全体を司るプロセッサである。ＣＰＵ１０は、後述する揮発性メモリ（ＲＡＭ１７）に展開されたプログラムに従って動作する。
【００３９】
制御基板１に実装された後のＦＰＧＡ１１は、図２Ａに示したＰＵＦ回路１１０の他、訂正部１１１及び復号部１１３としての機能を有する回路が新たに形成されている。ＦＰＧＡ１１の各回路の機能については後述する。
【００４０】
外部通信回路１２は、制御基板１の外部（特に、情報配信装置２）と通信するための通信インタフェースである。外部通信回路１２を介しての外部への情報送信処理は、ＣＰＵ１０によって制御される。したがって、外部通信回路１２を介して、外部から直接的に、ＲＡＭ１７に展開されている情報や、ＦＰＧＡ１１内部で生成される情報（ＰＵＦ情報など）にはアクセスすることはできない。
【００４１】
ＲＡＭ１３は、情報を書き換え可能な揮発性メモリである。ＲＡＭ１３は、いわゆる主記憶装置であって、ＣＰＵ１０を動作させるためのプログラムが展開される。特に、ＲＡＭ１７には、ＣＰＵ１０が制御装置として動作するための制御プログラムＰｄａｔａが展開される。
【００４２】
フラッシュＲＯＭ１４は、情報を書き換え可能な不揮発性メモリである。本実施形態に係るフラッシュＲＯＭ１４には、情報配信装置２から受信した被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａが格納される。また、フラッシュＲＯＭ１４には、ＰＵＦ回路１１０に入力するチャレンジ値等が記録される。ここで、フラッシュＲＯＭ１４に記録されるチャレンジ値は、ＦＰＧＡ１１の出荷前の段階（図２Ａ参照）において、情報配信装置２から受信したチャレンジ値と同一のものとされる。
【００４３】
ＲＯＭ１５は、情報を書き換え不能な不揮発性メモリである。ＲＯＭ１４には、電源が投入された際に自動的にＲＡＭ１３に展開され、ＣＰＵ１０によって実行されるブートプログラムが格納されている。このブートプログラムは、制御装置の製造過程において、情報配信装置２が制御基板１に向けて制御プログラムＰｄａｔａを安全に送信するための処理フロー（後述）を実行するためのプログラムである。
【００４４】
ＦＰＧＡ１１に構成された各回路（ＰＵＦ回路１１０、訂正部１１１、及び復号部１１３）について詳しく説明する。
【００４５】
制御基板１に実装された後の段階において、ＰＵＦ回路１１０は、ＦＰＧＡ１１に電源が供給されている間、フラッシュＲＯＭ１４に記録されているチャレンジ値を入力し、当該チャレンジ値に応じたレスポンス値（ＰＵＦ情報）を出力する。
【００４６】
訂正部１１１は、ＦＰＧＡ１１に電源が供給されている間、ＰＵＦ回路１１０から出力されるレスポンス値（ＰＵＦ情報）に対し、所定のエラー訂正処理を施した後のレスポンス値（訂正後ＰＵＦ情報）を出力する。訂正部１１１のエラー訂正処理については後述する。
【００４７】
復号部１１３は、制御装置の組み立て後の段階で、外部（情報配信装置２）から受信した被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを、訂正部１１１から出力されている訂正後ＰＵＦ情報で復号する。復号部１１３は、復号した制御プログラムＰｄａｔａをＲＡＭ１３に展開する。
【００４８】
（ＰＵＦ回路の模式図）
図３は、第１の実施形態に係るＰＵＦ回路の模式図を示す図である。
第１の実施形態に係るＰＵＦ回路１１０は、アービターＰＵＦが適用されている。具体的には、図３に示すように、ＰＵＦ回路１１０は、１２８個の遅延回路１１０ａで構成される（図３には、１つの遅延回路１１０ａのみを図示している）。
遅延回路１１０ａは、１２８個のセレクタＳＬａ、ＳＬｂの対と、Ｄ型フリップフロップＦＦと、を有する。
遅延回路１１０ａの各セレクタＳＬａ、ＳＬｂの対には、チャレンジ値に含まれる１２８種類の１２８ビットデータ列のうちの１つ（チャレンジビット列）が入力される。１対のセレクタＳＬａ及びセレクタＳＬｂには同じ値が入力される。
セレクタＳＬａ、ＳＬｂは、２つに分岐した配線のうち、入力された値（０、１）に応じた配線に信号を伝送する。
Ｄ型フリップフロップＦＦは、１２８個のセレクタＳＬａ、ＳＬｂのそれぞれを伝送して到達した２つの信号Ａ、Ｂの入力を受け付ける。信号Ａ、Ｂはいずれもパルス信号であるが、セレクタＳＬａ、ＳＬｂの各々を構成する半導体素子固有の特性に応じた遅延時間（Ｄ型フリップフロップＦＦに到達する時刻）が発生する。Ｄ型フリップフロップＦＦは、信号Ａに対する信号Ｂの到達時間差Δｔに応じて、０又は１の値を出力する。１２８個の遅延回路１１０ａのそれぞれから出力される値の組み合わせ（１２８ビットデータ列）が、ＰＵＦ回路１１０から出力されるレスポンス値となる。
【００４９】
（ＰＵＦ回路の特性）
図４は、第１の実施形態に係るＰＵＦ回路の特性を説明するための図である。
ＰＵＦ回路１１０は、理想的には、同一のチャレンジ値（１２８ビット×１２８種類）の入力に対しては、常に同一のレスポンス値（１２８ビット）を出力する。しかし、個々の遅延回路１１０ａにおいて生じる到達時間差Δｔ（図３）は、所定の分布関数（例えば、平均、分散によって規定されるガウス分布。図４の分布関数Ｄ０、Ｄ１、Ｄ２参照）に従ってばらつく。
【００５０】
図４に示す分布関数Ｄ０は、Ｄ型フリップフロップＦＦが０を出力する範囲内に含まれている。したがって、遅延時間差Δｔが分布関数Ｄ０に従ってばらつく遅延回路１１０ａは、パルス信号を何回入力しても、常に０を出力する。
同様に、図４に示す分布関数Ｄ１は、Ｄ型フリップフロップＦＦが１を出力する範囲内に含まれている。したがって、遅延時間差Δｔが分布関数Ｄ１に従ってばらつく遅延回路１１０ａは、パルス信号を何回入力しても、常に１を出力する。
しかしながら、図４に示す分布関数Ｄ２は、Ｄ型フリップフロップＦＦが０を出力する範囲と、Ｄ型フリップフロップＦＦが１を出力する範囲との両方を含んでいる。遅延時間差Δｔがこのような分布関数Ｄ２に従ってばらつく場合、遅延回路１１０ａは、パルス信号を入力する度に０が出力されたり１が出力されたりして、一意に定まらなくなる。つまり、ＰＵＦ回路１１０の中に分布関数Ｄ２の特性を有する遅延回路１１０ａが含まれていると、ＰＵＦ回路１１０に同一のチャレンジ値を入力したとしても、常に同一のレスポンス値を得られるとは言えなくなる。
【００５１】
（出荷前における処理フロー）
図５は、第１の実施形態に係るレスポンス値取得冶具及び情報配信装置が実行する処理フローを示す図である。
以下、図５を参照しながら、ＦＰＧＡ１１の出荷前の段階で、当該レスポンス値取得冶具及び情報配信装置２が実行する処理フローについて詳しく説明する。
【００５２】
図５に示す処理フローは、国内開発拠点Ｌ１において、ＦＰＧＡ１１の出荷前の段階であって、ＦＰＧＡ１１がレスポンス値取得冶具１Ａ（図２Ａ）に取り付けられている段階で実行される。
【００５３】
国内開発拠点Ｌ１にて、情報配信装置２は、１２８種類の１２８ビットデータ列からなるチャレンジ値を、レスポンス値取得冶具１Ａに向けて送信する（ステップＳ０１ａ）。このステップＳ０１ａにおいて、情報配信装置２は、Ｎ回（例えば１０２４回）、同一のチャレンジ値を送信する。同一のチャレンジ値をＮ回送信することの意味については後述する。
【００５４】
以下に説明するステップＳ０１〜Ｓ０２の処理は、レスポンス値取得冶具１Ａによって実行される。
【００５５】
レスポンス値取得冶具１Ａの通信回路１１２は、情報配信装置２からチャレンジ値を受信する（ステップＳ０１）。なお、制御基板１のフラッシュＲＯＭ１４には、ここで受信したチャレンジ値と同様の値が記録される。
通信回路１１２は、ステップＳ０１で受信したチャレンジ値をＦＰＧＡ１１のＰＵＦ回路１１０に入力する。ＰＵＦ回路１１０は、チャレンジ値に対応するレスポンス値を出力する。ここで、ＰＵＦ回路１１０は、Ｎ回のチャレンジ値の入力に応じて、Ｎ回レスポンス値を出力する。
【００５６】
続いて、レスポンス値取得冶具１Ａの通信回路１１２は、ＰＵＦ回路１１０から出力された、個体固有のレスポンス値（ＰＵＦ情報）を送信する（ステップＳ０２）。
【００５７】
情報配信装置２は、レスポンス値取得冶具１Ａの通信回路１１２からレスポンス値を受信する（ステップＳ０２ａ）。このステップＳ０２ａにおいて、情報配信装置２は、Ｎ回のチャレンジ値のそれぞれに対応する、Ｎ個のレスポンス値を受信する。
情報配信装置２は、ステップＳ０２ａで受信したＮ個のレスポンス値に対し、所定のエラー訂正処理を施す（ステップＳ０３ａ）。そして、情報配信装置２は、エラー訂正処理後のレスポンス値（訂正後ＰＵＦ情報）を、ＦＰＧＡ１１の製造番号等と紐づけて記録する（ステップＳ０４ａ）。このエラー訂正処理後のレスポンス値は、制御基板１についての暗号鍵として扱われる。
エラー訂正処理後のレスポンス値が記録された後、ＦＰＧＡ１１は、レスポンス値取得冶具１Ａから取り外されて、訂正部１１１及び復号部１１３が形成される。その後、ＦＰＧＡ１１は、海外生産拠点Ｌ２に出荷され、制御基板１に実装される（図２Ｂ参照）。
【００５８】
（エラー訂正処理の処理フロー）
図６は、第１の実施形態に係る情報配信装置が実行するエラー訂正処理の処理フローを示す図である。
図７、図８は、第１の実施形態に係る情報配信装置のエラー訂正処理を説明するための図である。
以下、図６〜図８を参照しながら、情報配信装置２がステップＳ０３ａにおいて実行するエラー訂正処理について詳しく説明する。
【００５９】
上述したように、図５のステップＳ０１において、ＦＰＧＡ１１のＰＵＦ回路１１０には、同一のチャレンジ値がＮ回入力される（Ｎは整数）。そして、ＰＵＦ回路１１０は、チャレンジ値が入力される度にレスポンス値を出力する。情報配信装置２は、Ｎ回に渡ってＰＵＦ回路１１０から出力されるレスポンス値をビットごとに積算する（ステップＳ０３１）。
【００６０】
次に、情報配信装置２は、レスポンス値に含まれる不定ビットを特定する（ステップＳ０３２）。不定ビットの特定の仕方は、図７に示す判定条件に従って行われる。
【００６１】
即ち、図７に示すように、Ｎ回に渡る積算の結果、積算値が０となったビットは、Ｎ回に渡って０が出力されたビットである。したがって、情報配信装置２は、レスポンス値における当該ビットの値を０として扱う。
同様に、Ｎ回に渡る積算の結果、積算値がＮとなったビットは、Ｎ回に渡って１が出力されたビットである。したがって、情報配信装置２は、レスポンス値における当該ビットの値を１として扱う。
更に、Ｎ回に渡る積算の結果、積算値が１〜Ｎ−１のいずれかとなったビットは、Ｎ回に渡るレスポンス値の出力において０と１の両方が出力されたビットである。したがって、情報配信装置２は、レスポンス値における当該ビットを、０、１のいずれとなるかが不定である「不定ビット」として特定する。
【００６２】
次に、情報配信装置２は、ステップＳ０３２で特定した不定ビットを、所定の値に上書きする上書処理を行う（ステップＳ０３３）。ここで、本実施形態においては、情報配信装置２は、不定ビットを０で上書きする（図７参照）。この上書処理により、レスポンス値の不定ビットは、一律に０で固定される（図８参照）。図８に示すように、不定ビットが０に上書き（固定）されたレスポンス値（訂正後ＰＵＦ情報）が暗号鍵として記録される。
【００６３】
（出荷後における処理フロー）
図９は、第１の実施形態に係る制御基板及び情報配信装置が実行する処理フローを示す図である。
図１０は、第１の実施形態に係る制御基板が実行する処理フローを示す図である。
以下、図９、図１０を参照しながら、ＦＰＧＡ１１の出荷後（制御装置組み立て後）の段階で、制御基板１及び情報配信装置２が実行する処理フローについて詳しく説明する。
【００６４】
図９に示す処理フローは、海外生産拠点Ｌ２にて制御基板１を具備する制御装置の組み立てが完成した後に実施される。
まず、情報配信装置２は、制御プログラムＰｄａｔａを暗号鍵で暗号化する（ステップＳ１１ａ）。ここで用いられる暗号鍵は、出荷前（図５のステップＳ０４ａ）の段階で記録した、エラー訂正処理後のレスポンス値である。これにより、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａが生成される。
【００６５】
情報配信装置２は、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを、広域通信網を介して、制御基板１に配信する（ステップＳ１２ａ）。
【００６６】
以下に説明するステップＳ１１〜Ｓ１２の処理は、制御基板１に実装されたＣＰＵ１０が、電源投入時に自動的に読み出されるブートプログラムに従って動作することにより実行される。
【００６７】
制御基板１のＣＰＵ１０は、外部通信回路１２を介して、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを受信する（ステップＳ１１）。
次に、ＣＰＵ１０は、受信した被暗号化制御プログラムｅｎｃ＿ＰｄａｔａをフラッシュＲＯＭ１４に記録する（ステップＳ１２）。これにより、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａが制御基板１に記録される。
【００６８】
なお、図９に示す処理フローは、海外生産拠点Ｌ２において制御装置の組み立て完了時に実行されるものとして説明したが、これに限られない。図９に示す処理フローは、例えば、現地での実運用中において、制御プログラムＰｄａｔａの更新（バージョンアップ）を行う際にも実行されてよい。
【００６９】
図１０は、制御装置の起動時において、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａが記録された制御基板１の処理フローを示している。被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａが記録された制御基板１は、制御装置の起動時において、目的の制御を実行するための以下の処理フローを実行する。
【００７０】
以下に説明するステップＳ２１〜Ｓ２３の処理は、制御基板１のＣＰＵ１０が、電源投入時に自動的に読み出されるブートプログラムに従って動作することにより実行される。
【００７１】
制御基板１のＣＰＵ１０は、フラッシュＲＯＭ１４に記録されているチャレンジ値（図５のステップＳ０１ａで情報配信装置２が送信したものと同一のチャレンジ値）を読み出し、これをＦＰＧＡ１１のＰＵＦ回路１１０に入力する。
このステップＳ２１において、ＣＰＵ１０は、Ｎ回、同一のチャレンジ値をＰＵＦ回路１１０に入力する。
【００７２】
ステップＳ２１にて、チャレンジ値がＮ回に渡ってＰＵＦ回路１１０に入力されると、訂正部１１１は、図６のステップＳ０３１〜Ｓ０３３で情報配信装置２が実行したエラー訂正処理と同等の処理を行う。訂正部１１１による処理の結果、出荷前と同じ手順（図６のステップＳ０３１〜Ｓ０３３）で不定ビットが特定され、当該不定ビットが０に上書きされる。訂正部１１１は、このようにして得られた、エラー訂正処理後のレスポンス値を復号部１１３に出力する。
【００７３】
次に、ＣＰＵ１０は、フラッシュＲＯＭ１４から被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを読み出して、ＦＰＧＡ１１の復号部１１３に入力する。復号部１１３は、ステップＳ２１の結果得られたレスポンス値を暗号鍵として、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを復号する。ＣＰＵ１０は、復号部１１３による復号処理により得られた制御プログラムＰｄａｔａをＲＡＭ１３に展開する（ステップＳ２２）。
ここで、ＦＰＧＡ１１の出荷前に得られた暗号鍵、及び、出荷後に（ステップＳ２１で）得られた暗号鍵は、いずれも、情報配信装置２、又は、訂正部１１１による同一のエラー訂正処理を経て得られたものである。即ち、どちらの暗号鍵も、エラー訂正処理によりレスポンス値の不定ビットが０に上書きされているため、出荷の前後において不定ビットによる暗号鍵の相違は生じない。したがって、復号部１１３は、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを正しく復号することができる。
【００７４】
制御プログラムＰｄａｔａがＲＡＭ１３に展開されると、ＣＰＵ１０は、ブートプログラムによる動作から制御プログラムＰｄａｔａによる動作に切り替える（ステップＳ２３）。これにより、制御基板１において目的の制御が実行される。
【００７５】
（作用、効果）
以上、第１の実施形態に係る制御基板１によれば、ＰＵＦ回路１１０が出力するＰＵＦ情報（レスポンス値）に対しエラー訂正処理を施した訂正後ＰＵＦ情報（エラー訂正処理後のレスポンス値）を出力する訂正部１１１を有している。そして、訂正部１１１は、ＰＵＦ回路１１０から複数回入力したＰＵＦ情報（レスポンス値）の積算結果に基づいて、当該ＰＵＦ情報のうち０、１のいずれとなるかが不定である不定ビットを特定するとともに、当該不定ビットを０又は１の値で上書きして訂正後ＰＵＦ情報を生成する。
このようにすることで、ＰＵＦ情報（レスポンス値）の不定ビットが所定の値に固定（エラー訂正）されるので、出荷前に生成された暗号鍵と出荷後に生成された暗号鍵とが異なってしまうことを抑制することができる。
以上より、ＰＵＦに基づくデバイス固有データのエラー訂正を行うために必要な情報量を低減できる。
【００７６】
また、第１の実施形態に係る訂正部１１１は、予め定められた同一の値（０）で、全ての不定ビットを上書きする。
このようにすることで、不定ビットを一律に、予め定められた値に上書きするので、エラー訂正のために必要な情報を事前に記録しておく必要がない。したがって、訂正部１１１の構成の簡素化を図ることができる。
なお、第１の実施形態では、訂正部１１１は、不定ビットを０で上書きするものとして説明したが、他の実施形態においてはこの態様に限定されない。即ち、他の実施形態に係る訂正部１１１は、不定ビットを１で上書きしてもよい。
【００７７】
＜第２の実施形態＞
以下、第２の実施形態に係る制御基板について、図１１〜図１４を参照しながら説明する。
【００７８】
（出荷前における情報配信装置の処理フロー）
図１１は、第２の実施形態に係る情報配信装置が実行するエラー訂正処理の処理フローを示す図である。
図１２は、第２の実施形態に係る情報配信装置のエラー訂正処理を説明するための図である。
第２の実施形態に係る情報配信装置２は、エラー訂正処理（図５のステップＳ０３ａ）の内容が第１の実施形態と異なる。
以下、図１１及び図１２を参照しながら、第２の実施形態に係る情報配信装置２が図５のステップＳ０３ａで実行するエラー訂正処理について詳しく説明する。なお、ステップＳ０３１〜Ｓ０３２の処理は、第１の実施形態（図６）と同様であるため、説明を省略する。
【００７９】
情報配信装置２は、ステップＳ０３２で特定した不定ビットを、所定の値に上書きする上書処理を行う（ステップＳ０３３）。ここで、本実施形態においては、情報配信装置２は、各不定ビットのそれぞれを０又は１のいずれか一方で上書きする。図１２に示す例では、レスポンス値に２つの不定ビットが特定されている。情報配信装置２は、１つ目の不定ビットに対しては０で上書きし、２つ目の不定ビットに対しては１で上書きする。
このとき、情報配信装置２は、各不定ビットに対し０、１のいずれで上書きするかを、不定ビットごとにランダムに決定してもよいし、所定のルールに従って決定してもよい。「所定のルール」の一例として、情報配信装置２は、積算値が１〜Ｎ／２の範囲であった場合には０で上書きし、積算値がＮ／２〜Ｎ−１の範囲であった場合には１で上書きするものとしてもよい。
図１２に示すように、不定ビットのそれぞれに対し０又は１のいずれか一方で上書き（固定）されたレスポンス値（訂正後ＰＵＦ情報）が暗号鍵として記録される。
【００８０】
次に、情報配信装置２は、各不定ビットに上書きした情報を示すヘルパーデータを作成する。情報配信装置２は、作成したヘルパーデータを、情報配信装置２に別途用意された不揮発性メモリに記録する（ステップＳ０３３ａ）。
図１２に示す例では、情報配信装置２は、１つ目の不定ビットを０で上書きし、２つ目の不定ビットを１で上書きした。そこで、情報配信装置２は、１つ目の不定ビットを０で上書きし、２つ目の不定ビットを１で上書きしたことを示す、“０１”なる２ビットデータ列である上書データを作成する。
次に、情報配信装置２は、“０１”なる２ビットデータ列である上書データを、所定の変換アルゴリズムを介して、他の２ビットデータ列（以下、「ヘルパーデータ」と表記する。）に変換する。上書データと、上記変換アルゴリズムを介して得られたヘルパーデータとは１対１に対応するものとし、逆変換できるものとする。
【００８１】
（訂正部の処理フロー）
図１３は、第２の実施形態に係る訂正部が実行するエラー訂正処理の処理フローを示す図である。
図１４は、第２の実施形態に係る訂正部のエラー訂正処理を説明するための図である。
図１３に示す処理フローは、図１０のステップＳ２１でＰＵＦ回路１１０にチャレンジ値が入力されてから、図１０のステップＳ２２で復号部１１３にレスポンス値が入力されるまでの過程において、訂正部１１１が実行する処理フローである。なお、図１３のステップＳ２１１〜Ｓ２１２の処理は、図６又は図１１に示すステップＳ０３１〜Ｓ０３２の処理と同様であるため、説明を省略する。
【００８２】
訂正部１１１は、ステップＳ２１１〜ステップＳ２１２の処理で不定ビットを特定すると、次に、情報配信装置２にアクセスし、出荷前の段階で事前に情報配信装置２の不揮発性メモリに記録していたヘルパーデータを読み出す（ステップＳ２１３）。
訂正部１１１は、ステップＳ２１３で読み出したヘルパーデータを用いて、不定ビットに対する上書処理を行う（ステップＳ２１４）。
【００８３】
ステップＳ２１３〜Ｓ２１４の処理については、図１４を参照しながら説明する。
図１４に示す例では、訂正部１１１は、ステップＳ２１３において、２ビットデータ列からなるヘルパーデータを情報配信装置２の不揮発性メモリから読み出す。そして、訂正部１１１は、ヘルパーデータを所定の変換アルゴリズムに基づいて逆変換し、“０１”なる２ビットデータ列である上書データを取得する。
【００８４】
更に、訂正部１１１は、ＰＵＦ回路１１０から読み出したレスポンス値に含まれる不定ビットそれぞれに対し、上書データで示される情報で上書きする。
具体的には、図１４に示すように、訂正部１１１は、ステップＳ２１１〜Ｓ２１２で特定した１つ目の不定ビットに対しては、上書データの１ビット目に示される値（０）で上書きし、２つ目の不定ビットに対しては、上書データの２ビット目に示される値（１）で上書きする。
訂正部１１１は、上述の上書き処理によって得られたレスポンス値を暗号鍵として、復号部１１３に出力する。
【００８５】
（作用、効果）
以上の通り、第２の実施形態に係る訂正部１１１は、複数の不定ビットのそれぞれに上書きした０又は１の情報を示すデータ列（ヘルパーデータ）を情報配信装置２（外部記憶装置）に記録する。
このようにすることで、不定ビットと特定されたビットに対してのみ、エラー訂正に必要な情報（ヘルパーデータ）が記録されるので、エラー訂正に必要な情報量が削減される。したがって、訂正部１１１の構成の簡素化を図ることができる。
また、複数の不定ビットのそれぞれについて、０又は１のいずれで上書きされるかが決定されるので、第１の実施形態のように不定ビットが一律に０又は１に上書きされる場合よりも安全性を高めることができる。
【００８６】
なお、第２の実施形態においては、安全性を高める目的で、上書データを他のデータ列（ヘルパーデータ）に変換して記録するものとして説明したが、他の実施形態においてはこの態様に限定されない。即ち、他の実施形態においては、上書データそのものをヘルパーデータとして扱ってもよい。
【００８７】
＜第３の実施形態＞
以下、第３の実施形態に係る制御基板について、図１５〜図１６を参照しながら説明する。
【００８８】
（制御基板の機能構成）
図１５は、第３の実施形態に係る制御基板の機能構成を示す図である。
図１５に示すように、第３の実施形態に係る制御基板１は、ＣＰＵ１０が変更部１００としての機能を有する点で、第１、第２の実施形態と相違する。
【００８９】
変更部１００は、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａが正しく復号されたか否かを判定し、当該被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａが正しく復号されていなかった場合に、ＦＰＧＡ１１（ＰＵＦ回路１１０）の動作条件を変更する。
【００９０】
（出荷後における処理フロー）
図１６は、第３の実施形態に係る制御基板が実行する処理フローを示す図である。
以下、図１６を参照しながら、ＦＰＧＡ１１の出荷後（制御装置組み立て後）の段階で、制御装置起動時に、当該制御基板１が実行する処理フローについて詳しく説明する。
【００９１】
図１６に示すステップＳ２１、Ｓ２２、Ｓ２３の処理は、第１の実施形態（図１０）と同様であるため説明を省略する。
【００９２】
ＣＰＵ１０は、ステップＳ２２で復号されて、ＲＡＭ１３に展開された制御プログラムに対し、正しく復号されたか否かを判定する（ステップＳ２２ａ）。ステップＳ２２ａでは、ＣＰＵ１０は、例えば、制御プログラムに不正な命令やデータが含まれていないか否かをチェックする。
【００９３】
ＲＡＭ１３に展開された制御プログラムが正しく復号されたものであった場合（ステップＳ２２ｂ；ＹＥＳ）、ＣＰＵ１０は、ブートプログラムによる動作から制御プログラムＰｄａｔａによる動作に切り替える（ステップＳ２３）。これにより、制御基板１において目的の制御が実行される。
【００９４】
他方、ＲＡＭ１３に展開された制御プログラムが正しく復号されたものではなかった場合（ステップＳ２２ｂ；ＮＯ）、出荷前に取得した暗号鍵とステップＳ２２の復号処理で用いた暗号鍵とが異なっていることが想定される。例えば、出荷後におけるＦＰＧＡ１１の動作環境（室温等）が、出荷前に暗号鍵を取得した際の動作環境と異なる場合、図４に示したＰＵＦ回路１１０の特性（分布関数Ｄ０〜Ｄ２）が変化し得る。そうすると、例えば、出荷前にはＮ回に渡って常に０又は１が出力されていたビットが、出荷後の動作環境では不定ビットとして振る舞うことが起こり得る。また、出荷前には不定ビットと判断されていたビットが、出荷後の動作環境では、常に０又は１が出力される正常なビットとして振る舞うことも起こり得る。このようなことが起きた場合、第１、第２の実施形態においては、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを正しく復号することができなくなる。
【００９５】
そこで、ステップＳ２２ｂ；ＮＯの判定がなされた場合、ＣＰＵ１０の変更部１００は、ＦＰＧＡ１１の動作条件を変更する（ステップＳ２２ｃ）。具体的には、変更部１００は、ＦＰＧＡ１１に供給される電源電圧を変更する。このとき、変更部１００は、例えば、ＦＰＧＡ１１に供給される電源電圧Ｖｄｃを、予め規定された微小電圧ΔＶだけ増加、又は、減少させる。
【００９６】
ステップＳ２２ｃを行った後、ＣＰＵ１０は、ステップＳ２１に戻り、同様の処理を繰り返す。
【００９７】
（作用、効果）
以上の通り、第３の実施形態に係るＣＰＵ１０（変更部１００）は、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａが正しく復号されたか否かを判定し、当該被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａが正しく復号されていなかった場合に、ＦＰＧＡ１１（ＰＵＦ回路１１０）の動作条件を変更する。
このようにすることで、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを正しく復号できなかった場合には、変更部１００によってＰＵＦ回路１１０の動作条件が変更されるので、これに応じてＰＵＦ回路１１０の特性（分布関数）も変化する。したがって、出荷前後における動作環境の変化に起因してＰＵＦ回路１１０の特性が変化した場合であっても、出荷後において正しく復号することができる。
【００９８】
なお、動作条件の変更の例としては、ＦＰＧＡ１１に印加する電源電圧の他、エージング処理などを用いてＦＰＧＡ１１の雰囲気温度を変化させるものであってもよい。
【００９９】
（第３の実施形態の変形例）
第３の実施形態に係るＣＰＵ１０は、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを正しく復号できたか否かの判定結果に基づいて、ＰＵＦ回路１１０の動作条件を変更するものとして説明したが、他の実施形態においてはこの態様に限定されない。
例えば、第２の実施形態では、ＦＰＧＡ１１の内蔵メモリに記録されるヘルパーデータ（上書データ）のビット数は、ビットごとの積算値に基づいて特定された不定ビットの数と一致すべきである。即ち、ＦＰＧＡ１１の内蔵メモリに記録されるヘルパーデータ（上書データ）のビット数と、レスポンス値に含まれる不定ビットの数とが一致していないのであれば、出荷前と同一の不定ビットが特定されていないことが想定されるため、正しい暗号鍵を得ることが困難である。
そこで、第３の実施形態の変形例に係るＣＰＵ１０（変更部１００）は、ヘルパーデータのビット数と、レスポンス値に含まれる不定ビットの数とが一致していない場合に、ＰＵＦ回路１１０の動作条件を変更するものとしてもよい。
このようにすることで、被暗号化制御プログラムｅｎｃ＿Ｐｄａｔａを実際に復号する前の段階で、ＰＵＦ回路１１０の動作条件を変更するか否かの判断を行うことができる。
【０１００】
（その他の変形例）
以上、第１〜第３の実施形態に係る制御基板１について詳細に説明したが、制御基板１の具体的な態様は、上述のものに限定されることはなく、要旨を逸脱しない範囲内において種々の設計変更等を加えることは可能である。
【０１０１】
第１〜第３の実施形態に係る情報配信システム９においては、暗号鍵（レスポンス値）によって暗号化される被暗号化情報は、制御プログラムＰｄａｔａであるものとして説明したが、他の実施形態においてはこの態様に限定されない。
例えば、被暗号化情報は、制御プログラムＰｄａｔａの暗号化に用いた共通暗号鍵であってもよい。この場合、制御プログラムＰｄａｔａは、この共通暗号鍵によって暗号化された状態で、情報配信装置２から制御基板１に向けて配信される。更に、情報配信装置２は、この共通暗号鍵をレスポンス値（第１〜第３の実施形態における暗号鍵）で暗号化して制御基板１に配信する。制御基板１は、レスポンス値で暗号化された共通暗号鍵を復号部１１３で復号し、更に、この共通暗号鍵を用いて、共通暗号鍵で暗号化された制御プログラムＰｄａｔａを復号してもよい。
【０１０２】
第１〜第３の本実施形態においては、情報配信装置２及びＦＰＧＡ１１（訂正部１１１）は、Ｎ個のレスポンス値を演算する方法の一態様として、ビットごとに積算する方法を採用するものとして説明した。しかし、他の実施形態においてはこの態様に限定されない。
即ち、他の実施形態に係る情報配信装置２及びＦＰＧＡ１１（訂正部１１１）は、Ｎ個のレスポンス値をビットごとに演算する方法の一態様として、１回目に取得されたビットの値と２回目以降に取得されたビットの値との排他的論理和を計算した結果の論理和を取得してもよい。
具体的には、図１７に示すように、他の実施形態に係る情報配信装置２及び訂正部１１１は、チャレンジ値をＰＵＦ回路１１０に入力する（ステップＳ４１）。
次に、情報配信装置２及び訂正部１１１は、１回目のレスポンス値と２回目以降のレスポンス値との排他的論理和を演算する（ステップＳ４２）。
次に、情報配信装置２及び訂正部１１１は、排他的論理和によって得られたビット値の論理和を取得する（ステップＳ４３）。
次に、情報配信装置２及び訂正部１１１は、２回目以降のレスポンス値について繰り返し実行される排他的論理和（ステップＳ４２）及び論理和（ステップＳ４３）の結果に基づいて不定ビットを特定する（ステップＳ４４）。
【０１０３】
以上のようにすることで、不定ビットを特定する回路規模を小さくし、ＦＰＧＡリソースの消費量を低減することが可能となる。
【０１０４】
第１の実施形態に係る情報配信装置２及び訂正部１１１は、予め定められた同一の値（０）で、全ての不定ビットを上書きするものとして説明した。また、第２の実施形態に係る情報配信装置２及び訂正部１１１は、不定ビットのそれぞれを０又は１で上書きするとともに、０又は１のいずれで上書きしたかを示すヘルパーデータを別途記録するものとして説明した。他の実施形態においては、上記の態様に限定されない。
即ち、他の実施形態に係る情報配信装置２及び訂正部１１１は、レスポンス値（ＰＵＦ情報）のうち０、１が特定できたビットの値から演算した結果で、不定ビットの値を決めてもよい。
例えば、図１８に示すように、情報配信装置２及び訂正部１１１は、１つ目の不定ビットまでに特定できたビット部分（１つ目の正常ビット列）で１の個数を数え、１が偶数個あれば１つ目の不定ビットの値を０に決定し、１が奇数個あれば１つ目の不定ビットの値を１に決定する。同様に、情報配信装置２及び訂正部１１１は、１つ目の不定ビットから２つ目の不定ビットまでに特定できたビット部分（２つ目の正常ビット列）で１の個数を数え、１が偶数個あれば２つ目の不定ビットの値を０に決定し、１が奇数個あれば２つ目の不定ビットの値を１に決定する。
【０１０５】
以上のようにすることで、暗号鍵の暗号強度低下を防止することが可能となる。
【０１０６】
以上のとおり、本発明に係るいくつかの実施形態を説明したが、これら全ての実施形態は、例として提示したものであり、発明の範囲を限定することを意図していない。これらの実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これらの実施形態及びその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０７】
１  制御基板
１Ａ  レスポンス値取得冶具
１０  ＣＰＵ
１００  変更部
１１  ＦＰＧＡ
１１０  ＰＵＦ回路
１１１  訂正部
１１２  通信回路
１１３  復号部
１２  外部通信回路
１３  ＲＡＭ（揮発性メモリ）
１４  フラッシュＲＯＭ（不揮発性メモリ）
１５  ＲＯＭ（不揮発性メモリ）
２  情報配信装置
９  情報配信システム
Ｌ１  国内開発拠点
Ｌ２  海外生産拠点
Ｐｄａｔａ  制御プログラム
ｅｎｃ＿Ｐｄａｔａ  被暗号化制御プログラム（被暗号化情報）
【図１】
2020188345.tif 000003
【図２Ａ】
2020188345.tif 000004
【図２Ｂ】
2020188345.tif 000005
【図３】
2020188345.tif 000006
【図４】
2020188345.tif 000007
【図５】
2020188345.tif 000008
【図６】
2020188345.tif 000009
【図７】
2020188345.tif 000010
【図８】
2020188345.tif 000011
【図９】
2020188345.tif 000012
【図１０】
2020188345.tif 000013
【図１１】
2020188345.tif 000014
【図１２】
2020188345.tif 000015
【図１３】
2020188345.tif 000016
【図１４】
2020188345.tif 000017
【図１５】
2020188345.tif 000018
【図１６】
2020188345.tif 000019
【図１７】
2020188345.tif 000020
【図１８】
2020188345.tif 000021