"物理的複製困難関数により入力情報を変換して出力情報を出力する変換部と、前記出力情報の中で複数のインデックス情報がそれぞれ指し示す位置の複数の情報を複数のパターン情報として記憶する記憶部と、複数の前記インデックス情報に基づいて暗号化鍵を生成する生成部と、前記出力情報と複数の前記パターン情報とをそれぞれ比較して、前記出力情報の中で複数の前記パターン情報と類似する情報が出現する複数の位置を検出する比較部と、を備え、前記生成部は、前記比較部が検出した複数の位置を複数の前記インデックス情報として再現し、再現した複数の前記インデックス情報に基づいて前記暗号化鍵を再現することを特徴とする暗号化鍵生成装置。複数の前記パターン情報をマスク処理するマスク処理部をさらに備え、前記記憶部は、マスク処理された複数の前記パターン情報を記憶し、前記比較部は、マスク処理された複数の前記パターン情報をマスク処理された前記出力情報と比較する、または、マスク処理された複数の前記パターン情報をマスク処理前の複数の前記パターン情報に復元して前記出力情報と比較することで、前記出力情報の中で複数の前記パターン情報と類似する複数の情報が出現する複数の位置を検出することを特徴とする請求項1に記載の暗号化鍵生成装置。物理的複製困難関数により入力情報を変換して出力情報を出力する変換部と、前記出力情報を、秘密情報が示す量だけ巡回シフトした情報をパターン情報として記憶する記憶部と、前記秘密情報に基づいて暗号化鍵を生成する生成部と、前記出力情報を巡回シフトしながら前記パターン情報と比較して、前記出力情報が前記パターン情報と類似するときの巡回シフト量を検出する比較部と、を備え、前記生成部は、前記比較部が検出した巡回シフト量を前記秘密情報として再現し、再現した前記秘密情報に基づいて前記暗号化鍵を再現することを特徴とする暗号化鍵生成装置。コンピュータに、物理的複製困難関数により入力情報を変換して出力情報を出力する機能と、前記出力情報の中で複数のインデックス情報がそれぞれ指し示す位置の複数の情報を複数のパターン情報として記憶部に記憶する機能と、複数の前記インデックス情報に基づいて暗号化鍵を生成する機能と、前記出力情報と複数の前記パターン情報とをそれぞれ比較して、前記出力情報の中で複数の前記パターン情報と類似する情報が出現する複数の位置を検出する機能と、検出した複数の位置を複数の前記インデックス情報として再現し、再現した複数の前記インデックス情報に基づいて前記暗号化鍵を再現する機能と、を実現させることを特徴とするプログラム。コンピュータに、物理的複製困難関数により入力情報を変換して出力情報を出力する機能と、前記出力情報を、秘密情報が示す量だけ巡回シフトした情報をパターン情報として記憶部に記憶する機能と、前記秘密情報に基づいて暗号化鍵を生成する機能と、前記出力情報を巡回シフトしながら前記パターン情報と比較して、前記出力情報が前記パターン情報と類似するときの巡回シフト量を検出する機能と、検出した巡回シフト量を前記秘密情報として再現し、再現した前記秘密情報に基づいて前記暗号化鍵を再現する機能と、を実現させることを特徴とするプログラム。本発明が解決しようとする課題は、物理的複製困難関数を用いて効率良く暗号化鍵を生成することができる暗号化鍵生成装置およびプログラムを提供することである。実施形態の暗号化鍵生成装置は、変換部と、記憶部と、生成部と、比較部と、を備える。前記変換部は、物理的複製困難関数により入力情報を変換して出力情報を出力する。前記記憶部は、前記出力情報の中で複数のインデックス情報がそれぞれ指し示す位置の複数の情報を複数のパターン情報として記憶する。前記生成部は、複数の前記インデックス情報に基づいて暗号化鍵を生成する。前記比較部は、前記出力情報と複数の前記パターン情報とをそれぞれ比較して、前記出力情報の中で複数の前記パターン情報と類似する情報が出現する複数の位置を検出する。また、前記生成部は、前記比較部が検出した複数の位置を複数の前記インデックス情報として再現し、再現した複数の前記インデックス情報に基づいて前記暗号化鍵を再現する。実施形態の暗号化鍵生成装置は、暗号化鍵設定と、暗号化鍵再現の2つの処理を実行する機能を持つ。暗号化鍵設定は、暗号化鍵を最初に生成する処理であり、暗号化鍵再現は、暗号化鍵が必要となるときに、暗号化鍵設定において生成した暗号化鍵を再現する処理である。つまり、オリジナルの暗号化鍵を生成することが暗号化鍵設定であり、オリジナルの暗号化鍵と同じ暗号化鍵を生成することが暗号化鍵再現である。暗号化鍵生成は、暗号化鍵設定と暗号化鍵再現の双方を含む概念である。第1実施形態<概要>まず、第1実施形態の暗号化鍵生成装置の概要を説明する。第1実施形態の暗号化鍵生成装置は、暗号化鍵設定において、情報の位置を示すインデックス情報を用いて暗号化鍵を生成し、暗号化鍵に用いたインデックス情報が示す位置のPUFの出力をパターン情報として記憶する。また、第1実施形態の暗号化鍵生成装置は、暗号化鍵再現において、記憶したパターン情報と類似するPUFの出力の位置を探索パターン照合することで、暗号化鍵設定で暗号化鍵の生成に用いたインデックス情報を再現し、暗号化鍵を再現する。暗号化鍵の生成に用いるインデックス情報は情報量が小さいため、多くのインデックス情報を組み合わせて一つの暗号化鍵を生成する必要がある。そこで、第1実施形態の暗号化鍵生成装置は、ラウンド処理の繰り返しにより一つの暗号化鍵を生成する。このとき、第1実施形態の暗号化鍵生成装置は、PUFの出力を効率よく利用してラウンド処理の回数を少なくできるようにするために、一つのラウンドで複数のインデックス情報を扱う。また、一つのラウンドにおけるPUFの出力の中で複数のインデックス情報が示す位置の複数のパターン情報をそのまま記憶すると、情報に重なりが生じてインデックス情報の相互関係が推測される虞がある。そこで、第1実施形態の暗号化鍵生成装置では、マスク生成関数MGF:MaskGenerationFunctionを利用して、記憶するパターン情報ごとに異なるデータマスク情報を加算することで、暗号化鍵の生成に用いたインデックス情報の秘匿性を高める。<構成>次に、図1を参照して、第1実施形態の暗号化鍵生成装置の概略構成を説明する。図1は、第1実施形態の暗号化鍵生成装置100の機能的な構成を示す機能ブロック図である。図1に示すように、本実施形態の暗号化鍵生成装置100は、通信部101、記憶部102、PUF入力生成部103、PUF104、PUF出力一時記憶部105、インデックス情報生成部106、MGF107、マスク処理部108、比較部109、および鍵生成部110を備える。通信部101は、暗号化鍵生成装置100と外部システムとの間の通信を行うインターフェースである。記憶部102は、暗号化鍵設定において、マスク処理部108が生成する後述の変形パターン情報を記憶するメモリである。記憶部102は、例えば、RAM、EEPROM登録商標などで構成される。なお、記憶部102は、暗号化鍵生成装置100の外部にあってもよい。記憶部102が暗号化鍵生成装置100の外部にある場合、暗号化鍵生成装置100の各部は、記憶部102に対するデータの書き込みや読み出しを、通信部101を介して行う。PUF入力生成部103は、予め定められた初期値I_{0,1}あるいはインデックス情報生成部106が出力するインデックス情報I_{r,j}に基づき、PUF104へ入力するPUF入力情報を生成する。例えば、PUF入力生成部103は、PUF入力情報が所定の長さとなるように、初期値I_{0,1}あるいはインデックス情報I_{r,j}に対して予め定められたデータを連結して、PUF入力情報を生成する。また、PUF入力生成部103は、初期値I_{0,1}あるいはインデックス情報I_{r,j}をハッシュ関数などに入力して、PUF入力情報を生成するようにしてもよい。また、PUF入力生成部103に入力される情報が複数ある場合には、PUF入力生成部103は、それら入力情報を連結したり、ビット演算あるいは算術演算することで、PUF入力情報を生成するようにしてもよい。PUF入力生成部103は、初期値I_{0,1}あるいはインデックス情報I_{r,j}に加えて、後述するラウンド番号r、PUF104が出力するビットの番号cn、あるいは回路動作時のクロックサイクル番号記載は省略する。などを入力してもよい。PUF104は、物理的複製困難関数である。物理的複製困難関数は、あるデバイスに搭載されると、同一の入力からそのデバイス固有の値を出力する関数である。非特許文献1において開示される暗号化鍵生成装置は、複数のPUFの出力を排他的論理和演算して得られる値を利用する。以降の説明では、PUF104は、このような複数のPUFとそれらの出力を排他的論理和演算して値を出力する回路や、複数のPUFとそれら出力をビット演算あるいは算術演算して値を出力する回路を用いてもよい。PUF104は、各ラウンドにおいて、PUF入力生成部103が生成したPUF入力情報を入力し、LW-1ビットのPUF出力情報を出力する。PUF出力一時記憶部105は、各ラウンドにおいてPUF104が出力するPUF出力情報を一時的に記憶する。本実施形態の暗号化鍵生成装置100は、各ラウンドにおいて、LW-1ビットのPUF出力情報のうちWビットのデータをパターン情報として利用する。本実施形態においては、PUF出力一時記憶部105は、例えば、LW-1ビットのレジスタで構成される。このとき、PUF出力一時記憶部105は、当該ラウンドでPUF104が出力するLW-1ビットのPUF出力情報を保持し、後述するマスク処理部108は、PUF出力一時記憶部105が記憶するLW-1ビットのPUF出力情報のうち、Wビットのデータを利用する。あるいは、後述する第1実施例のように、PUF出力一時記憶部105は、Wビットのシフトレジスタで構成され、PUF104が1ビット出力するごとに、記憶する中で最も古い1ビットを破棄する構成であってもよい。インデックス情報生成部106は、各ラウンドにおいて、1からLの間で、N_r個1≦N_r、rはラウンド番号のインデックス情報I_{r,1},...,I_{r,N_r}を生成する。各インデックス情報I_{r,j}1≦j≦N_rは、1からLの間でランダムに選ばれてもよいし、任意のjとkについて、インデックス情報I_{r,j}とインデックス情報I_{r,k}とがW以上離れるように選ばれてもよい。また、各インデックス情報I_{r,j}は、通信部101により暗号化鍵生成装置100の外部から受け付けるなどして、予め定められた値を用いてもよい。各インデックス情報I_{r,j}を外部から受け付ける場合には、暗号化鍵生成装置100はインデックス情報生成部106を備えていなくてもよい。インデックス情報I_{r,j}は、PUF出力情報の中のパターン情報の位置を指し示す情報である。本実施形態では、インデックス情報I_{r,j}がPUF出力情報の中のパターン情報の先頭位置を指し示すものとして説明するが、パターン情報の先頭位置に限らず、予め定めた所定の位置を指し示すものであってもよい。MGF107は、予め定められた初期値I_{0,1}あるいはインデックス情報生成部106が出力するインデックス情報I_{r,j}に基づき、パターン情報に対して加算するマスク情報を生成するマスク生成関数MaskGenerationFunctionである。本実施形態にかかる暗号化鍵生成装置100は、各ラウンドにおいて、N_r個のマスク情報M_{r,1},...,M_{r,N_r}を利用する。ハードウェア実装において複数のマスク情報を並行して生成するためには、暗号化鍵生成装置100の中に複数のMGF107が存在してもよい図1では一つのMFG107のみを図示している。。あるいは、一つのMGF107をN_r回利用して、N_r個のマスク情報M_{r,1},...,M_{r,N_r}を生成してもよい。また、MGF107は、PUF入力生成部103と一部あるいはすべて同一の処理を行うものであってもよい。MGF107がPUF入力生成部103と同一の処理を行う場合、PUF入力生成部103とMGF107は、同一の処理を行う部分について、単一の装置を用いた構成であってもよいすべて同一の処理である場合には、PUF入力生成部103とMGF107を単一の装置で構成できる。。MGF107は、初期値I_{0,1}あるいはインデックス情報I_{r,j}に加えて、ラウンド番号rや1からN_rの間の番号などを入力してもよい。マスク処理部108は、PUF出力一時記憶部105が記憶するLW-1ビットのPUF出力情報の出力のうち、インデックス情報I_{r,j}で示される位置からWビットのデータであるパターン情報Y_{r,j}に対して、MGF107が生成するマスク情報M_{r,j}を加算して、変形パターン情報Z_{r,j}を生成する。例えば、マスク情報M_{r,j}がWビットの場合には、マスク処理部108は、パターン情報Y_{r,j}とマスク情報M_{r,j}との排他的論理和により、変形パターン情報Z_{r,j}を生成することができる。また、マスク処理部108は、パターン情報Y_{r,j}とマスク情報M_{r,j}とから、予め定められた規則に従って変形パターン情報Z_{r,j}を生成するようにしてもよい。ハードウェア実装において複数のマスク処理を並行して実行するためには、暗号化鍵生成装置100の中に複数のマスク処理部108が存在してもよい図1では一つのマスク処理部108のみを図示している。。あるいは、一つのマスク処理部108をN_r回利用して、N_r個の変形パターン情報Z_{r,1},...,Z_{r,N_r}を生成してもよい。比較部109は、暗号化鍵再現において、PUF出力一時記憶部105が記憶するPUF出力情報のうちのWビットのデータに対してMGF107が生成するマスク情報M_{r,j}を加算したデータ以下、参照情報という。と、記憶部102が記憶する変形パターン情報Z_{r,j}とが、類似のデータであるか否かを判定する。類似のデータであるか否かの判定は、例えば、比較対象となる二つのデータのハミング距離異なるビットの数が予め定められた閾値T以下であるか否かで判定する。あるいは、二つのデータが所定の長さの同一の部分系列を含むか否かで判定するなど、別の方法で判定してもよい。ハードウェア実装において複数の判定処理を並行して実行するためには、暗号化鍵生成装置100の中に複数の比較部109が存在してもよい図1では一つの比較部109のみを図示している。。あるいは、一つの比較部109をN_r回利用して、それぞれの判定処理を行ってもよい。鍵生成部110は、N_1...N_R個のインデックス情報の集合{I_{r,j}}_{r,j}を用いて、暗号化鍵を生成する。例えば、鍵生成部110は、集合{I_{r,j}}_{r,j}に含まれるインデックス情報I_{r,j}をすべて連結して暗号化鍵を生成するようにしてもよいし、集合{I_{r,j}}_{r,j}に含まれるインデックス情報I_{r,j}をビット演算あるいは算術演算して暗号化鍵を生成するようにしてもよい。ここで、本実施形態で用いる定数を表す記号について説明する。Lは、インデックス情報生成部106が生成するインデックス情報I_{r,j}の最大値を表す。Wは、PUF104が出力するPUF出力情報のうち、パターン情報Y_{r,j}として利用するデータのビット長を表す。N_rは、第rラウンドにおいて、インデックス情報生成部106が生成するインデックス情報I_{r,j}の個数を表す。N_rはラウンドごとに異なっていてもよいし、同一でもよい。Rは、暗号化鍵生成および暗号化鍵再現において実行されるラウンドの総数を表す。I_{0,1}は、PUF入力生成部103に入力するデータの初期値を表す。本実施形態の暗号化鍵生成装置100は、例えば、CPUなどの演算装置、ROMやRAMなどの記憶装置、HDD、CDドライブ装置などの外部記憶装置、通信装置などを備えた、通常のコンピュータを利用したハードウェア構成を採用することができる。そして、コンピュータによって実行されるプログラムにより、上記のハードウェア資源を利用して、通信部101、記憶部102、PUF入力生成部103、PUF104、PUF出力一時記憶部105、インデックス情報生成部106、MGF107、マスク処理部108、比較部109、および鍵生成部110の各機能構成を実現することができる。<暗号化鍵設定>次に、図2を参照して、第1実施形態の暗号化鍵生成装置100が実行する暗号化鍵設定の処理について説明する。図2は、暗号化鍵生成装置100による暗号化鍵設定の一連の処理の流れを示すフローチャートである。図2のフローチャートで示す暗号化鍵設定の処理は、暗号化鍵生成装置100が暗号化鍵設定開始の命令を受け付けることで開始される。暗号化鍵生成装置100は、暗号化鍵設定開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。インデックス情報生成部106は、N_r個のインデックス情報I_{r,1},...,I_{r,N_r}を生成するステップS101。ステップS101の処理は、後述するステップS104において、PUF出力一時記憶部105が、PUF104が出力する第rラウンドにおけるPUF出力情報のW-1ビット目を記憶するまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。PUF入力生成部103は、予め定められた初期値あるいはステップS101でインデックス情報生成部106が生成したインデックス情報{I_{i,j}}_{0≦i<r,1≦j≦N_r}を入力として、PUF104が第rラウンドのcnビット目を出力するためのPUF入力情報X_{r,cn}を生成するステップS102。ステップS102の処理は、後述するステップS104において、PUF入力情報X_{r,cn}がPUF104に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。MGF107は、j=1,...,N_rについて、予め定められた初期値あるいはステップS101でインデックス情報生成部106が生成したインデックス情報{I_{i,j}}_{0≦i≦r,1≦j≦N_r}とrとjを入力として、マスク情報M_{r,j}を生成するステップS103。ステップS103の処理は、後述するステップS105において、マスク処理部108が変形パターン情報を生成するまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。PUF出力一時記憶部105は、ステップS102でPUF入力生成部103が生成したPUF入力情報X_{r,cn}を入力としてPUF104が出力するLW-1ビットのPUF出力情報を記憶するステップS104。PUF出力一時記憶部105がPUF出力情報を記憶すると、暗号化鍵生成装置100は、j=1,...,N_rについて、PUF出力一時記憶部105が記憶する第rラウンドにおけるPUF出力情報の第I_{r,j}ビット目から第I_{r,j}W-1ビット目に対して、以下のステップS105~ステップS107の処理を繰り返し実行する。PUF出力一時記憶部105が第rラウンドにおけるPUF出力情報の第I_{r,j}ビット目から第I_{r,j}W-1ビット目を記憶していると仮定するjとは異なるj’でI_{r,j}=I_{r,j’}となることがあってもよい。マスク処理部108は、例えば、ステップS104でPUF出力一時記憶部105が記憶したPUF出力情報のうちのWビットのデータと、ステップS103でMGF107が生成したマスク情報M_{r,j}との排他的論理和により、変形パターン情報Z_{r,j}を生成するステップS105。記憶部102は、ステップS105でマスク処理部108が生成した変形パターン情報Z_{r,j}を記憶するステップS106。記憶部102に変形パターン情報Z_{r,j}が記憶されると、暗号化鍵生成装置100は、j<N_rであるか否かを判定するステップS107。ここで、j<N_rであるならばステップS107:Yes、暗号化鍵生成装置100は、jをj1に置き換えて、ステップS105に戻って以降の処理を繰り返す。一方、j=N_rであるならばステップS107:No、暗号化鍵生成装置100は、r<Rであるか否かを判定するステップS108。ここで、r<RであるならばステップS108:Yes、暗号化鍵生成装置100は、rをr1に置き換えて、ステップS101に戻って以降の処理を繰り返す。一方、r=RであるならばステップS108:No、ステップS109に進む。鍵生成部110は、例えば、各ラウンドにおいてインデックス情報生成部106が生成したN_1...N_R個のインデックス情報からなる集合{I_{i,j}}_{0≦i≦R,1≦j≦N_i}に含まれる各インデックス情報I_{i,j}を連結して、暗号化鍵を生成するステップS109。<暗号化鍵再現>次に、図3を参照して、第1実施形態の暗号化鍵生成装置100が実行する暗号化鍵再現の処理について説明する。暗号化鍵再現の処理は、上述の暗号化鍵設定の処理が終わった後、暗号プロトコルが暗号化鍵を必要とするときに実行される。図3は、暗号化鍵生成装置100による暗号化鍵再現の一連の処理の流れを示すフローチャートである。図3のフローチャートで示す暗号化鍵再現の処理は、暗号化鍵生成装置100が暗号化鍵再現開始の命令を受け付けることで開始される。暗号化鍵生成装置100は、暗号化鍵再現開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。PUF入力生成部103は、予め定められた初期値あるいは前回のラウンド処理で再現されたインデックス情報{I_{i,j}}_{0≦i<r,1≦j≦N_r}を入力として、PUF104が第rラウンドのcnビット目を出力するためのPUF入力情報X_{r,cn}を生成するステップS201。ステップS201の処理は、後述するステップS203において、PUF入力情報X_{r,cn}がPUF104に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。MGF107は、j=1,...,N_rについて、予め定められた初期値あるいは前回のラウンド処理で再現されたインデックス情報{I_{i,j}}_{0≦i≦r,1≦j≦N_r}とrとjを入力として、マスク情報M_{r,j}を生成するステップS202。ステップS202の処理は、後述するステップS204において、マスク処理部108がパターン照合の対象となる参照情報を生成するまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。PUF出力一時記憶部105は、ステップS201でPUF入力生成部103が生成したPUF入力情報X_{r,cn}を入力としてPUF104が出力するPUF出力情報を記憶するステップS203。PUF出力一時記憶部105がPUF出力情報を記憶すると、暗号化鍵生成装置100は、k=1,...,Lについて、PUF出力一時記憶部105が記憶する第kビット目から第kW-1ビット目に対して、以下のステップS204~ステップS208の処理を繰り返し実行する。また、暗号化鍵生成装置100は、j=1,...,N_rについて、以下のステップS204~ステップS207の処理を繰り返し実行する。マスク処理部108は、例えば、PUF出力一時記憶部105が記憶する第rラウンドにおけるPUF出力情報の第kビット目から第kW-1ビット目までのWビットのデータと、ステップS202でMGF107が生成したマスク情報M_{r,j}との排他的論理和により、参照情報を生成するステップS204。比較部109は、ステップS204でマスク処理部108が生成した参照情報と、記憶部102が記憶する変形パターン情報Z_{r,j}とが類似データであるか否かを判定するステップS205。なお、ここでは、PUF出力情報のWビットのデータにマスク情報を加算した参照情報と、記憶部102が記憶する変形パターン情報とを比較して、これら二つのデータが類似データであるか否かを判定しているが、記憶部102が記憶する変形パターン情報にマスク情報を加算してパターン情報を再現し、マスク情報を加算しないPUF出力情報のWビットのデータと、再現したパターン情報とを比較して、これら二つのデータが類似のデータであるか否かを判定するようにしてもよい。比較部109が二つのデータを類似データであると判定した場合ステップS205:Yes、暗号化鍵生成装置100は、I_{r,j}=kとしてインデックス情報I_{r,j}を再現するステップS206。つまり、記憶部102が記憶する変形パターン情報Z_{r,j}に類似すると判定された参照情報のPUF出力情報における開始位置kを、インデックス情報I_{r,j}として再現する。なお、同一のkにおいて、複数のj,j’について、I_{r,j}=I_{r,j’}=kとして、複数のインデックス情報が再現されるようにしてもよい。比較部109が二つのデータを類似データではない判定した場合にはステップS205:No、ステップS206の処理はスキップする。その後、暗号化鍵生成装置100は、j<N_rであるか否かを判定するステップS207。ここで、j<N_rであるならばステップS207:Yes、暗号化鍵生成装置100は、jをj1に置き換えて、ステップS204に戻って以降の処理を繰り返す。一方、j=N_rであるならばステップS207:No、暗号化鍵生成装置100は、k<Lであるか否かを判定するステップS208。ここで、k<LであるならばステップS208:Yes、kをk1に置き換えて、ステップS204に戻って以降の処理を繰り返す。なお、k=1,...,Lについて、ステップS204~ステップS208の処理を繰り返しても再現できないインデックス情報I_{r,j}が存在する場合には、暗号化鍵生成装置100は、処理を停止するようにしてもよいし、再現できないインデックス情報I_{r,j}に予め定められた値あるいはランダムな値を設定してもよい。ステップS208の判定の結果がk=LであるならばステップS208:No、暗号化鍵生成装置100は、r<Rであるか否かを判定するステップS209。ここで、r<RであるならばステップS209:Yes、暗号化鍵生成装置100は、rをr1に置き換えて、ステップS201に戻って以降の処理を繰り返す。一方、r=RであるならばステップS209:No、ステップS210に進む。鍵生成部110は、例えば、各ラウンドにおいて再現したN_1...N_R個のインデックス情報{I_{i,j}}_{0≦i≦R,1≦j≦N_i}を連結して、暗号化鍵を生成するステップS210。なお、鍵生成部110は、インデックス情報{I_{i,j}}_{0≦i≦R,1≦j≦N_i}の代わりに、PUF入力情報{X_{r,cn}}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。あるいは、鍵生成部110は、インデックス情報{I_{i,j}}_{0≦i≦R,1≦j≦N_i}に加えて、PUF入力情報{X_{r,cn}}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。また、鍵生成部110は、連結した値を暗号化鍵として用いてもよいし、連結した値をハッシュ関数などに入力し、得られた値を暗号化鍵として用いてもよい。なお、本実施形態の暗号化鍵生成装置100は、暗号化鍵の生成に用いたインデックス情報の秘匿性を高めるために、PUF出力情報のうちのインデックス情報が指し示す位置からW-1ビットのデータであるパターン情報に対してマスク情報を加算して変形パターン情報を生成し、この変形パターン情報を記憶部102に記憶するようにしている。しかし、処理の高速化を優先する場合には、暗号化鍵生成装置100は、パターン情報そのものを記憶部102に記憶するようにしてもよい。この場合、暗号化鍵生成装置100は、MGF107およびマスク処理部108を備えない構成となる。また、暗号化鍵設定の処理では、図2に示したフローチャートのステップS103およびステップS105の処理を実施せず、ステップS106において、PUF出力一時記憶部105が記憶している第rラウンドにおけるPUF出力情報の第I_{r,j}ビット目から第I_{r,j}W-1ビット目までのWビットのデータを、パターン情報として記憶部102に記憶する。そして、暗号化鍵再現の処理では、図3に示したフローチャートのステップS202およびステップS204の処理を実施せず、ステップS205において、比較部109が、PUF出力一時記憶部105が記憶している第rラウンドにおけるPUF出力情報の第kビット目から第kW-1ビット目までのWビットのデータと、記憶部102が記憶するパターン情報とが類似データであるか否かを判定する。また、本実施形態の暗号化鍵生成装置100では、PUF入力生成部103が、インデックス情報I_{r,j}に基づいて、PUF104に入力するPUF入力情報X_{r,cn}を生成するようにしている。しかし、PUF入力生成部103は、例えばPUF104への起動信号など、インデックス情報I_{r,j}に依存しない固定値を、PUF入力情報として生成するようにしてもよい。また、本実施形態の暗号化鍵生成装置100では、PUF104が、各ラウンドにおいてLW-1ビットのPUF出力情報を出力するようにしている。しかし、PUF104がLW-1ビットを超えるPUF出力情報を出力し、各ラウンドでそのPUF出力情報の一部を利用する構成であってもよい。例えば、PUF104に対して固定値のPUF入力情報が入力され、PUF104がR×LW-1ビットのPUF出力情報を出力するようにしてもよい。この場合には、第iラウンドでは、PUF出力一時記憶部105がPUF出力情報のうちi-1×LWビット目からLW-1ビットのデータを記憶し、以降の処理を実施する構成とすることができる。<実施形態の効果>第1実施形態の効果を説明するにあたり、まず、非特許文献1が開示する暗号化鍵の生成方法を概説する。非特許文献1が開示する暗号化鍵の生成方法では、一つのラウンドにおいて一つのインデックス情報のみを扱う。すなわち、非特許文献1が開示する暗号化鍵の生成方法では、暗号化鍵設定において、第iラウンドで一つのインデックス情報I_iを選び、第iラウンドにおけるPUF出力情報のうち、第I_iビットからWビットのデータを記憶部に記憶する。また、非特許文献1が開示する暗号化鍵の生成方法では、暗号化鍵再現において、第iラウンドにおけるPUF出力情報のうち、記憶部が記憶するWビットのデータと類似の箇所を探索して、インデックス情報I_iを再現する。このように、非特許文献1が開示する暗号化鍵の生成方法では、一つのラウンドにおいて一つのインデックス情報のみを扱うため、所定の長さの暗号化鍵を生成するために必要なインデックス情報I_iの数と同じ回数だけラウンド処理を繰り返す必要があり、暗号化鍵に十分な情報量を持たせるために必要となるラウンド処理の回数が多くなるという問題があった。例えば、非特許文献1が開示する暗号化鍵の生成方法では、128ビットの暗号化鍵を生成するために、各ラウンドで10ビットのインデックス情報I_iを利用し、ラウンド処理を16回繰り返す必要があった。これに対して、第1実施形態の暗号化鍵生成装置100によれば、一つのラウンドで複数のインデックス情報I_{i,j}を生成あるいは再現できるため、所定の長さの暗号化鍵を生成するために必要なラウンド処理の回数が、非特許文献1が開示する暗号化鍵の生成方法よりも少なくなる。例えば、本実施形態の暗号化鍵生成装置100では、128ビットの暗号化鍵を生成するにあたり、各ラウンドで10ビットのインデックス情報I_{i,j}を4つずつ利用すれば、4回のラウンド処理の繰り返しのみで、非特許文献1が開示する暗号化鍵の生成方法と同じ情報量をもつ暗号化鍵を生成することができる。このように、本実施形態の暗号化鍵生成装置100は、非特許文献1が開示する暗号化鍵の生成方法と比べてラウンド処理の繰り返し回数を削減することができ、効率的に暗号化鍵を生成できる。<第1実施例の構成>次に、第1実施形態の暗号化鍵生成装置100をより具体化した第1実施例について説明する。図4は、第1実施例の暗号化鍵生成装置1000のブロック図である。図4に示すように、第1実施例の暗号化鍵生成装置1000は、4種類のレジスタ1001,1002,1003,1015、外部メモリ1004、カウンタ1005、PUF演算回路1006、PUF入力生成回路1007、マスク生成回路1008、排他的論理和演算回路1009、インデックス情報生成回路1010、インデックス情報再現回路1011、比較回路1012、選択回路1013、および鍵生成回路1014を備える。レジスタI1001は、複数のインデックス情報を保持するレジスタである。レジスタI1001は、各ラウンドrごとに複数のインデックス情報を保持してもよく、複数のラウンドi=1,...,rに関するインデックス情報をまとめて保持してもよい。レジスタP1002は、PUF演算回路1006に入力するPUF入力情報を保持するレジスタである。なお、後述するPUF入力生成回路1007の出力が、そのままPUF演算回路1006に入力される場合には、暗号化鍵生成装置1000はレジスタP1002を備えなくともよい。レジスタS1003は、PUF演算回路1006が出力するPUF出力情報を保持するシフトレジスタである。レジスタS1003は、PUF演算回路1006が出力するPUF出力情報のうちのWビットのデータを保持する。レジスタS1003は、上述した第1実施形態の暗号化鍵生成装置100におけるPUF出力一時記憶部105に相当する。外部メモリ1004は、排他的論理和演算回路1009が出力する変形パターン情報を記憶するメモリである。外部メモリ1004は、上述した第1実施形態の暗号化鍵生成装置100における記憶部102に相当する。カウンタ1005は、各ラウンドにおいて、PUF演算回路1006の出力ビット数をカウントし、カウンタ値cnを記憶する。PUF演算回路1006は、上述した第1実施形態の暗号化鍵生成装置100におけるPUF104を実装した演算回路であり、PUF入力情報を入力としてPUF出力情報を出力する。PUF入力生成回路1007は、レジスタI1001が保持するインデックス情報に基づいて、PUF演算回路1006に入力するPUF入力情報を生成する。PUF入力生成回路1007は、上述した第1実施形態の暗号化鍵生成装置100におけるPUF入力生成部103に相当する。マスク生成回路1008は、上述した第1実施形態の暗号化鍵生成装置100におけるMGF107を実装した演算回路であり、レジスタI1001が保持するインデックス情報に基づき、マスク情報を生成して出力する。排他的論理和演算回路1009は、レジスタS1003が保持するPUF出力情報とマスク生成回路1008が出力するマスク情報とを排他的論理和演算する回路である。排他的論理和演算回路1009は、上述した第1実施形態の暗号化鍵生成装置100におけるマスク処理部108に相当する。インデックス情報生成回路1010は、暗号化鍵設定の各ラウンドrにおいて、1からLまでのN_r個のインデックス情報を発生させる回路である。インデックス情報再現回路1011は、暗号化鍵再現において、後述する比較回路1012の出力に基づき、カウンタ1005の値をインデックス情報として再現する。インデックス情報生成回路1010およびインデックス情報再現回路1011は、上述した第1実施形態の暗号化鍵生成装置100におけるインデックス情報生成部106に相当する。比較回路1012は、暗号化鍵再現において、外部メモリ1004が記憶する変形パターン情報と排他的論理和演算回路1009の出力とを比較する回路であり、比較する変形パターン情報と排他的論理和演算回路1009の出力とが類似のデータであると判断する場合には1を出力し、そうでない場合には0を出力する。選択回路1013は、暗号化鍵設定の処理を実行しているときにはインデックス情報生成回路1010の出力を選択してレジスタI1001に出力し、暗号化鍵再現の処理を実行しているときにはインデックス情報再現回路1011の出力を選択してレジスタI1001に出力する。鍵生成回路1014は、レジスタI1001が保持するインデックス情報に基づき、暗号化鍵を生成する回路である。鍵生成回路1014は、上述した第1実施形態の暗号化鍵生成装置100における鍵生成部110に相当する。レジスタK1015は、鍵生成回路1014が出力する暗号化鍵を保持するレジスタである。なお、図4では、第1実施例の暗号化鍵生成装置1000を構成する各回路と回路間を結ぶ線を一つのみ図示しているが、各ラウンドで複数のインデックス情報を生成あるいは再現させるために、複数のマスク生成回路1008や排他的論理和演算回路1009、インデックス情報生成回路1010、インデックス情報再現回路1011、比較回路1012、選択回路1013を並列に実装することが望ましい。ただし、第1実施例の暗号化鍵再現装置1000は、これらの回路を一つずつ実装し、時分割で利用して複数のインデックス情報を生成あるいは再現してもよい。<第1実施例の暗号化鍵設定>次に、図5を参照して、第1実施例の暗号化鍵生成装置1000が実行する暗号化鍵設定の処理について説明する。図5は、第1実施例の暗号化鍵生成装置1000による暗号化鍵設定の一連の処理の流れを示すフローチャートである。図5のフローチャートで示す暗号化鍵設定の処理は、第1実施例の暗号化鍵生成装置1000が暗号化鍵設定開始の命令を受け付けることで開始される。第1実施例の暗号化鍵生成装置1000は、暗号化鍵設定開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。カウンタ1005は、カウンタ値cnを1に初期化するステップS301。インデックス情報生成回路1011は、N_r個のインデックス情報I_{r,1},...,I_{r,N_r}を生成し、レジスタI1001に格納するステップS302。ステップS302の処理は、後述するステップS306において、レジスタS1003が、PUF演算回路1006が出力する第rラウンドにおけるPUF出力情報のW-1ビット目を記憶するまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。レジスタI1001にインデックス情報が格納されると、第1実施例の暗号化鍵再現装置1000は、cn=1,2,...,LW-1について、以下の処理を繰り返す。PUF入力生成回路1007は、予め定められた初期値あるいはステップS302でインデックス情報生成回路1011が生成したインデックス情報{I_{i,j}}_{0≦i<r,1≦j≦N_r}を入力として、PUF演算回路1006が第rラウンドのcnビット目を出力するためのPUF入力情報X_{r,cn}を生成するステップS303。レジスタP1002は、PUF入力生成回路1007が生成したPUF入力情報X_{r,cn}を格納するステップS304。ステップS304の処理は、後述するステップS306において、PUF入力情報X_{r,cn}がPUF演算回路1006に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。マスク生成回路1008は、j=1,...,N_rについて、予め定められた初期値あるいはインデックス情報生成回路1010により生成され、レジスタI1001に格納されたインデックス情報{I_{i,j}}_{0≦i≦r,1≦j≦N_r}とrとjを入力として、マスク情報M_{r,j}を生成するステップS305。ステップS305の処理は、後述するステップS308において、排他的論理和演算回路1009が排他的論理和の演算を行うまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。レジスタS1003は、ステップS304でレジスタP1002に格納されたPUF入力情報X_{r,cn}を入力としてPUF演算回路1006が出力するPUF出力情報を記憶するステップS306。ここで、第1実施例の暗号化鍵生成装置1000では、各cnについて、PUF演算回路1006が1ビットのデータを出力することとし、レジスタS1003は、それまでに記憶していたデータを1ビットだけシフトして記憶するとともに、新たにPUF演算回路1006が出力する1ビットのデータを記憶する。排他的論理和演算回路1009は、レジスタS1003が記憶するWビットのデータと、マスク生成回路1008が出力するマスク情報M_{r,j}との排他的論理和Z_{r,j}を計算するステップS307。第1実施例の暗号化鍵生成装置1000は、カウンタ1005のカウンタ値cnがI_{r,j}W-1と一致するか否かを判定しステップS308、カウンタ値cnがI_{r,j}W-1と一致するときにステップS308:Yes、排他的論理和演算回路1009の出力Z_{r,j}を変形パターン情報として外部メモリ1004に記憶するステップS309。ただし、jは1からN_rの間の数である。なお、カウンタ値cnがI_{r,j}W-1と一致しないときはステップS308:No、ステップS309の処理はスキップする。その後、第1実施例の暗号化鍵生成装置1000は、カウンタ1005のカウンタ値cn<LW-1か否かを判定するステップS310。ここで、cn<LW-1であるならばステップS310:Yes、暗号化鍵生成装置1000は、cnをcn1に置き換えて、ステップS303に戻って以降の処理を繰り返す。一方、cn=LW-1であるならばステップS310:No、暗号化鍵生成装置1000は、r<Rであるか否かを判定するステップS311。ここで、r<RであるならばステップS311:Yes、暗号化鍵生成装置1000は、rをr1に置き換えて、ステップS301に戻って以降の処理を繰り返す。一方、r=RであるならばステップS311:No、ステップS312に進む。鍵生成回路1014は、例えば、各ラウンドにおいてレジスタI1001に格納されたインデックス情報の集合{I_{i,j}}_{0≦i≦R,1≦j≦N_i}に含まれる各インデックス情報I_{i,j}を連結して暗号化鍵を生成し、レジスタK1015に格納するステップS312。<第1実施例の暗号化鍵再現>次に、図6を参照して、第1実施例の暗号化鍵生成装置1000が実行する暗号化鍵再現の処理について説明する。図6は、第1実施例の暗号化鍵生成装置1000による暗号化鍵再現の一連の処理の流れを説明するフローチャートである。図6のフローチャートで示す暗号化鍵再現の処理は、第1実施例の暗号化鍵生成装置1000が暗号化鍵再現開始の命令を受け付けることで開始される。第1実施例の暗号化鍵生成装置1000は、暗号化鍵再現開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。カウンタ1005は、カウンタ値cnを1に初期化するステップS401。第1実施例の暗号化鍵再現装置1000は、cn=1,2,...,LW-1について、以下の処理を繰り返す。PUF入力生成回路1007は、予め定められた初期値あるいは前回のラウンド処理でインデックス情報再現回路1011が再現したインデックス情報{I_{i,j}}_{0≦i≦r,1≦j≦N_r}を入力として、PUF演算回路1006が第rラウンドのcnビット目を出力するためのPUF入力情報X_{r,cn}を生成するステップS402。レジスタP1002は、PUF入力生成回路1007が生成したPUF入力情報X_{r,cn}を格納するステップS403。ステップS403の処理は、後述するステップS405において、PUF入力情報X_{r,cn}がPUF演算回路1006に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。マスク生成回路1008は、j=1,...,N_rについて、予め定められた初期値あるいは前回のラウンド処理で再現されたインデックス情報{I_{i,j}}_{0≦i≦r,1≦j≦N_r}とrとjを入力として、マスク情報M_{r,j}を生成するステップS404。ステップS404の処理は、後述するステップS406において、排他的論理和演算回路1009が比較回路1012の入力となる排他的論理和を計算するまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。レジスタS1003は、ステップS403でレジスタP1002に格納されたPUF入力情報X_{r,cn}を入力としてPUF演算回路1006が出力するPUF出力情報を記憶するステップS405。ここで、第1実施例の暗号化鍵生成装置1000では、各cnについて、PUF演算回路1006が1ビットのデータを出力することとし、レジスタS1003は、それまでに記憶していたデータを1ビットだけシフトして記憶するとともに、新たにPUF演算回路1006が出力する1ビットのデータを記憶する。排他的論理和演算回路1009は、レジスタS1003が記憶するWビットのデータと、マスク生成回路1008が出力するマスク情報M_{r,j}との排他的論理和により、変形パターン情報Z_{r,j}との比較対象となる参照情報を生成するステップS406。比較回路1012は、ステップS406で生成された参照情報と、外部メモリ1004が記憶する変形パターン情報Z_{r,j}とを比較して、これらが類似データであるか否かを判定するステップS407。比較回路1012が二つのデータを類似データであると判定した場合ステップS407:Yes、インデックス情報再現回路1011は、カウンタ1005が記憶するカウンタ値cnについて、I_{r,j}=cn-W1としてインデックス情報I_{r,j}を再現するステップS408。つまり、変形パターン情報Z_{r,j}に類似すると判定された参照情報は、カウンタ1005のカウンタ値cnからWビット分遡った位置を開始位置とするWビットのPUF出力情報とマスク情報M_{r,j}との排他的論理和であるので、カウンタ1005のカウンタ値cnからWビット分遡った位置を、インデックス情報I_{r,j}として再現する。比較回路1012が二つのデータを類似データではないと判定した場合にはステップS407:No、ステップS408の処理はスキップする。その後、第1実施例の暗号化鍵生成装置1000は、カウンタ1005のカウンタ値cn<LW-1か否かを判定するステップS409。ここで、cn<LW-1であるならばステップS409:Yes、暗号化鍵生成装置1000は、cnをcn1に置き換えて、ステップS402に戻って以降の処理を繰り返す。一方、cn=LW-1であるならばステップS409:No、暗号化鍵生成装置1000は、r<Rであるか否かを判定するステップS410。ここで、r<RであるならばステップS410:Yes、暗号化鍵生成装置1000は、rをr1に置き換えて、ステップS401に戻って以降の処理を繰り返す。一方、r=RであるならばステップS410:No、ステップS411に進む。鍵生成回路1014は、例えば、各ラウンドにおいてインデックス情報再現回路1011により再現され、レジスタI1001に格納されたインデックス情報の集合{I_{i,j}}_{0≦i≦R,1≦j≦N_i}に含まれる各インデックス情報I_{i,j}を連結して暗号化鍵を生成し、レジスタK1015に格納するステップS411。なお、鍵生成回路1014は、インデックス情報{I_{i,j}}_{0≦i≦R,1≦j≦N_i}の代わりに、PUF入力情報{X_{r,cn}}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。あるいは、鍵生成回路1014は、インデックス情報{I_{i,j}}_{0≦i≦R,1≦j≦N_i}に加えて、PUF入力情報{X_{r,cn}}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。また、鍵生成回路1014は、連結した値を暗号化鍵として用いてもよいし、連結した値をハッシュ関数などに入力し、得られた値を暗号化鍵として用いてもよい。第2実施形態<概要>まず、第2実施形態の暗号化鍵生成装置の概要を説明する。第2実施形態の暗号化鍵生成装置は、暗号化鍵設定において、秘密情報を用いて暗号化鍵を生成し、PUFの出力を秘密情報が示すシフト量だけ巡回シフトした情報をパターン情報として記憶する。また、第2実施形態の暗号化鍵生成装置は、暗号化鍵再現において、PUFの出力を1ビットずつ巡回シフトしながら記憶したパターン情報と比較しパターン照合、PUFの出力がパターン情報と類似するときのPUFの出力の巡回シフト量を検出することで、暗号化鍵設定で暗号化鍵の生成に用いた秘密情報を再現し、暗号化鍵を再現する。<構成>次に、図7を参照して、第2実施形態の暗号化鍵生成装置の概略構成を説明する。図7は、第2実施形態の暗号化鍵生成装置200の機能的な構成を示す機能ブロック図である。図7に示すように、本実施形態の暗号化鍵生成装置200は、通信部201、記憶部202、PUF入力生成部203、PUF204、PUF出力一時記憶部205、秘密情報生成部206、出力シフト部207、比較部208、および鍵生成部209を備える。通信部201は、暗号化鍵生成装置200と外部システムとの間の通信を行うインターフェースである。記憶部202は、暗号化鍵設定において、PUF204が出力するPUF出力情報を出力シフト部207で巡回シフトすることで得られるパターン情報Z_rを記憶するメモリである。記憶部202は、例えば、RAM、EEPROM登録商標などで構成される。なお、記憶部202は、暗号化鍵生成装置200の外部にあってもよい。記憶部202が暗号化鍵生成装置200の外部にある場合、暗号化鍵生成装置200の各部は、記憶部202に対するデータの書き込みや読み出しを、通信部201を介して行う。PUF入力生成部203は、予め定められた初期値I_0あるいは秘密情報生成部206が出力する秘密情報I_rに基づき、PUF204へ入力するPUF入力情報を生成する。例えば、PUF入力生成部203は、PUF入力情報が所定の長さとなるように、初期値I_0あるいは秘密情報I_rに対して予め定められたデータを連結して、PUF入力情報を生成する。また、PUF入力生成部203は、初期値I_0あるいは秘密情報I_rをハッシュ関数などに入力して、PUF入力情報を生成するようにしてもよい。また、PUF入力生成部203に入力される情報が複数ある場合には、PUF入力生成部203は、それら入力情報を連結したり、ビット演算あるいは算術演算することで、PUF入力情報を生成するようにしてもよい。PUF204は、物理的複製困難関数である。物理的複製困難関数は、あるデバイスに搭載されると、同一の入力からそのデバイス固有の値を出力する関数である。非特許文献1において開示される暗号化鍵生成装置は、複数のPUFの出力を排他的論理和演算して得られる値を利用する。以降の説明では、PUF204は、このような複数のPUFとそれらの出力を排他的論理和演算して値を出力する回路や、複数のPUFとそれら出力をビット演算あるいは算術演算して値を出力する回路を用いてもよい。PUF204は、各ラウンドにおいて、PUF入力生成部203が生成したPUF入力情報を入力し、WビットのPUF出力情報を出力する。PUF出力一時記憶部205は、各ラウンドにおいてPUF204が出力するPUF出力情報を一時的に記憶する。本実施形態のPUF出力一時記憶部205は、例えば、Wビットのレジスタで構成される。秘密情報生成部206は、各ラウンドにおいて1つの秘密情報I_rを生成する。各ラウンドにおいて秘密情報生成部206が生成する秘密情報I_rは、後述の出力シフト部207においてPUF出力情報を巡回シフトさせる量を示す情報である。なお、秘密情報I_rは、通信部201により暗号化鍵生成装置200の外部から受け付けるなどして、予め定められた値を用いてもよい。この場合には、暗号化鍵生成装置200は秘密情報生成部206を備えていなくてもよい。出力シフト部207は、第rラウンドにおけるPUF出力情報Y_rを、秘密情報I_rに基づき巡回シフトする。例えば、出力シフト部207は、PUF出力情報Y_rをI_rビット左巡回シフトしてもよいし、予め定められた規則に基づき、秘密情報I_rに応じたシフト量だけ巡回シフトしてもよい。比較部208は、暗号化鍵再現において、PUF出力一時記憶部205が記憶するPUF出力情報を巡回シフトしながら記憶部202が記憶するパターン情報Z_rと比較して、PUF出力情報がパターン情報Z_rと類似するときの巡回シフト量を検出する。例えば、比較部208は、PUF出力一時記憶部205が記憶するPUF出力情報を1ビットずつ巡回シフトすることで順次得られる参照情報Z’_rと、記憶部202が記憶するパターン情報Z_rとが類似のデータであるか否かを判定する。類似のデータであるか否かの判定は第1実施形態と同様であるため、ここでは説明を省略する。鍵生成部209は、ラウンドごとに生成されるR個の秘密情報の集合を用いて、暗号化鍵を生成する。例えば、鍵生成部209は、R個の秘密情報I_rをすべて連結して暗号化鍵を生成するようにしてもよいし、R個の秘密情報I_rをビット演算あるいは算術演算して暗号化鍵を生成するようにしてもよい。ここで、本実施形態で用いる定数を表す記号について説明する。Wは、PUF204が出力するPUF出力情報のビット長を表し、各ラウンドにおいて、秘密情報生成部206が生成する秘密情報I_rの最大値を表す。Rは、暗号化鍵生成および暗号化鍵再現において実行されるラウンドの総数を表す。I_0は、PUF入力生成部203に入力するデータの初期値を表す。本実施形態の暗号化鍵生成装置200は、例えば、CPUなどの演算装置、ROMやRAMなどの記憶装置、HDD、CDドライブ装置などの外部記憶装置、通信装置などを備えた、通常のコンピュータを利用したハードウェア構成を採用することができる。そして、コンピュータによって実行されるプログラムにより、上記のハードウェア資源を利用して、通信部201、記憶部202、PUF入力生成部203、PUF204、PUF出力一時記憶部205、秘密情報生成部206、出力シフト部207、比較部208、および鍵生成部209の各機能構成を実現することができる。<暗号化鍵設定>次に、図8を参照して、第2実施形態の暗号化鍵生成装置200が実行する暗号化鍵設定の処理について説明する。図8は、暗号化鍵生成装置200による暗号化鍵設定の一連の処理の流れを示すフローチャートである。図8のフローチャートで示す暗号化鍵設定の処理は、暗号化鍵生成装置200が暗号化鍵設定開始の命令を受け付けることで開始される。暗号化鍵生成装置200は、暗号化鍵設定開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。秘密情報生成部206は、秘密情報I_rを生成するステップS501。ステップS501の処理は、第rラウンドの処理が開始される前に行われていてもよい。PUF入力生成部203は、予め定められた初期値あるいはステップS501で秘密情報生成部206が生成した秘密情報{I_i}_{0≦i<r}を入力として、PUF204が第rラウンドのPUF出力情報を出力するためのPUF入力情報X_rを生成するステップS502。ステップS502の処理は、後述するステップS503において、PUF入力情報X_rがPUF204に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。PUF出力一時記憶部205は、ステップS502でPUF入力生成部203が生成したPUF入力情報X_rを入力としてPUF204が出力するWビットのPUF出力情報を記憶するステップS503。出力シフト部207は、例えば、ステップS503でPUF出力一時記憶部205が記憶したPUF出力情報を、ステップS501で秘密情報生成部206が生成した秘密情報I_rで示されるシフト量だけ左巡回シフトして、パターン情報Z_rを生成するステップS504。記憶部202は、ステップS504で出力シフト部207が生成したパターン情報Z_rを記憶するステップS505。記憶部202にパターン情報Z_rが記憶されると、暗号化鍵生成装置200は、r<Rであるか否かを判定するステップS506。ここで、r<RであるならばステップS506:Yes、暗号化鍵生成装置200は、rをr1に置き換えて、ステップS501に戻って以降の処理を繰り返す。一方、r=RであるならばステップS506:No、ステップS507に進む。鍵生成部209は、例えば、各ラウンドにおいて秘密情報生成部206が生成したR個の秘密情報I_rを連結して、暗号化鍵を生成するステップS509。<暗号化鍵再現>次に、図9を参照して、第2実施形態の暗号化鍵生成処理200が実行する暗号化鍵再現の処理について説明する。暗号化鍵再現の処理は、上述の暗号化鍵設定の処理が終わった後、暗号プロトコルが暗号化鍵を必要とするときに実行される。図9は、暗号化鍵生成装置200による暗号化鍵再現の一連の処理の流れを示すフローチャートである。図9のフローチャートで示す暗号化鍵再現の処理は、暗号化鍵生成装置200が暗号化鍵再現開始の命令を受け付けることで開始される。暗号化鍵生成装置200は、暗号化鍵再現開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。PUF入力生成部203は、予め定められた初期値あるいは前回のラウンド処理で再現された秘密情報{I_i}_{0≦i<r}を入力として、PUF204が第rラウンドのPUF出力情報を出力するためのPUF入力情報X_rを生成するステップS601。ステップS601の処理は、後述するステップS603において、PUF入力情報X_rがPUF204に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。PUF出力一時記憶部205は、ステップS601でPUF入力生成部203が生成したPUF入力情報X_rを入力としてPUF204が出力するWビットのPUF出力情報を記憶するステップS602。PUF出力一時記憶部205がPUF出力情報を記憶すると、暗号化鍵生成装置200は、k=1,...,Wについて、PUF出力一時記憶部205が記憶するPUF出力情報に対して、以下のステップS603~ステップS606の処理を繰り返し実行する。出力シフト部207は、例えば、PUF出力一時記憶部205がPUF出力情報をkビット左巡回シフトさせて、参照情報Z’_rを生成するステップS603。比較部208は、ステップS603で出力シフト部207が生成した参照情報Z’_rと、記憶部202が記憶するパターン情報Z_rとが類似データであるか否かを判定するステップS604。なお、比較部208は、記憶部202が記憶するパターン情報Z_rに対して、出力シフト部207が参照情報Z’_rを生成する際に行うシフトの方向とは逆方向のシフトを行って得られるデータと、PUF出力一時記憶部205がPUF出力情報とを比較して、これらが類似データであるか否かを判定するようにしてもよい。比較部208が二つのデータを類似データであると判定した場合ステップS604:Yes、暗号化鍵生成装置200は、I_r=kとして秘密情報I_rを再現するステップS605。つまり、記憶部202が記憶するパターン情報Z_rに類似すると判定された参照情報Z’_rが出現するまでのPUF出力情報の巡回シフト量kを、秘密情報I_rとして再現する。比較部208が二つのデータを類似データではないと判定した場合にはステップS604:No、ステップS605の処理はスキップする。その後、暗号化鍵生成装置200は、k<Wであるか否かを判定するステップS606。ここで、k<WであるならばステップS606:Yes、kをk1に置き換えて、ステップS603に戻って以降の処理を繰り返す。なお、k=1,...,Wについて、ステップS603~ステップS606の処理を繰り返しても再現できない秘密情報I_rが存在する場合には、暗号化鍵生成装置200は、処理を停止するようにしてもよいし、再現できない秘密情報I_rに予め定められた値あるいはランダムな値を設定してもよい。ステップS606の判定の結果がk=WであるならばステップS606:No、暗号化鍵生成装置200は、r<Rであるか否かを判定するステップS607。ここで、r<RであるならばステップS607:Yes、暗号化鍵生成装置200は、rをr1に置き換えて、ステップS601に戻って以降の処理を繰り返す。一方、r=RであるならばステップS607:No、ステップS608に進む。鍵生成部209は、例えば、各ラウンドにおいて再現したR個の秘密情報I_rを連結して、暗号化鍵を生成するステップS608。なお、鍵生成部209は、秘密情報I_rの代わりに、PUF入力情報{X_r}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。あるいは、鍵生成部209は、秘密情報I_rに加えて、PUF入力情報{X_r}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。また、鍵生成部209は、連結した値を暗号化鍵として用いてもよいし、連結した値をハッシュ関数などに入力し、得られた値を暗号化鍵として用いてもよい。なお、本実施形態の暗号化鍵生成装置200では、PUF入力生成部203が、秘密情報I_rに基づいて、PUF204に入力するPUF入力情報X_rを生成するようにしている。しかし、PUF入力生成部203は、例えばPUF204への起動信号など、秘密情報I_rに依存しない固定値を、PUF入力情報X_rとして生成するようにしてもよい。また、本実施形態の暗号化鍵生成装置200では、PUF204が、各ラウンドにおいてWビットのPUF出力情報を出力するようにしている。しかし、PUF204がWビットを超えるPUF出力情報を出力し、各ラウンドでそのPUF出力情報の一部を利用する構成であってもよい。例えば、図8のステップS505において、PUF出力情報を巡回シフトして得られるデータの前半VビットV<Wをパターン情報Z_rとして利用してもよい。あるいは、PUF204がWビットを超えるPUF出力情報を出力するとき、PUF出力一時記憶部205が、PUF出力情報のうちの前半VビットV<Wと後半W-Vビットを連結して記憶し、以降の処理を実施する構成とすることができる。また、例えば、PUF204に対して固定値のPUF入力情報X_rが入力され、PUF204がR×WビットのPUF出力情報を出力する場合には、第iラウンドでは、PUF出力一時記憶部205がPUF出力情報のうちi-1×Wビット目からWビットのデータを記憶し、以降の処理を実施する構成とすることができる。なお、本実施形態の暗号化鍵生成装置200では、PUF入力生成部203がPUF204への起動信号などの秘密情報I_rに依存しない固定値をPUF入力情報X_rとして生成する場合に、以下に示すように、各ラウンドにおける暗号化鍵の更新が可能になる。すなわち、暗号化鍵設定の処理では、出力シフト部207がPUF出力情報を巡回シフトしてパターン情報Z_rを生成するため、記憶部202には、パターン情報Z_1,,Z_Rが記憶される。ここで、暗号化鍵を更新する場合は、記憶部202が記憶するパターン情報Z_rを、Z_rをΔ_rだけ巡回シフトして得られるZ_r’に置き換える。Z_r’は、PUF出力情報をI_rΔ_rだけ巡回シフトして得られる値であるため、暗号化鍵再現の処理では、{I_rΔ_r}_{1≦r≦R}に基づいて暗号化鍵が生成される。つまり、{I_r}_{1≦r≦R}に基づく暗号化鍵を、{I_rΔ_r}_{1≦r≦R}に基づく暗号化鍵に更新することができる。<実施形態の効果>非特許文献1が開示する暗号化鍵の生成方法では、PUFの出力の長さを十分に長く設定し、その一部のみを記憶部に記憶して暗号化鍵の生成および再現に利用している。例えば、非特許文献1が開示する暗号化鍵の生成方法では、Lは1024ビット、Wは256ビットとされ、各ラウンドでPUFは1379ビット出力しなければならなかった。このように、非特許文献1が開示する暗号化鍵の生成方法では、各ラウンドごとに256ビットの情報を記憶部に記憶させるために、PUFは1379ビット出力しなければならず、PUFの利用効率が悪いという問題があった。これに対して、第2実施形態の暗号化鍵生成装置200によれば、一つのラウンドでPUF204が出力するPUF出力情報はWビットであり、このWビットのPUF出力情報を巡回シフトして得られるパターン情報を記憶部202に記憶する構成であるため、非特許文献1が開示する暗号化鍵の生成方法と比べて、各ラウンドで生成するPUF出力情報は短くてよい。例えば、W=256とする場合に、非特許文献1が開示する暗号化鍵の生成方法では1379ビットのPUF出力情報が必要であったのに対して、第2実施形態の暗号化鍵生成装置200では256ビットでよく、各ラウンドにおけるPUF204の出力ビット数は1/5程度になる。このように、本実施形態の暗号化鍵生成装置200は、非特許文献1が開示する暗号化鍵の生成方法と比べてPUFの出力を少なくし、効率的に暗号化鍵を生成できる。<第2実施例の構成>次に、第2実施形態の暗号化鍵生成装置200をより具体化した第2実施例について説明する。図10は、第2実施例の暗号化鍵生成装置2000のブロック図である。図10に示すように、第2実施例の暗号化鍵生成装置2000は、4種類のレジスタ2001,2002,2003,2014、外部メモリ2004、カウンタ2005、PUF演算回路2006、PUF入力生成回路2007、巡回シフト回路2008、秘密情報生成回路2009、秘密情報再現回路2010、比較回路2011、選択回路2012、および鍵生成回路2013を備える。レジスタI2001は、秘密情報を保持するレジスタである。レジスタI2001は、各ラウンドrごとに1つの秘密情報を保持してもよく、複数のラウンドi=1,...,rに関する秘密情報をまとめて保持してもよい。レジスタP2002は、PUF演算回路2006に入力するPUF入力情報を保持するレジスタである。なお、後述するPUF入力生成回路2007の出力が、そのままPUF演算回路2006に入力される場合には、鍵生成装置2000はレジスタP2002を備えなくともよい。レジスタR2003は、PUF演算回路2006が出力するPUF出力情報を保持するレジスタである。レジスタR2003は、PUF演算回路2006が出力するWビットのPUF出力情報を保持する。レジスタR2003は、上述した第2実施形態の暗号化鍵生成装置200におけるPUF出力一時記憶部205に相当する。外部メモリ2004は、巡回シフト回路2008が出力するパターン情報を記憶するメモリである。外部メモリ2004は、上述した第2実施形態の暗号化鍵生成装置200における記憶部202に相当する。カウンタ2005は、各ラウンドにおいて、巡回シフト回路2008によるPUF出力情報の巡回シフト量をカウントし、カウンタ値cnを記憶する。PUF演算回路2006は、上述した第2実施形態の暗号化鍵生成装置200におけるPUF204を実装した演算回路であり、PUF入力情報を入力としてPUF出力情報を生成し出力する。PUF入力生成回路2007は、レジスタI2001が保持する秘密情報に基づいて、PUF演算回路2006に入力するPUF入力情報を生成する。PUF入力生成回路2007は、上述した第2実施形態の暗号化鍵生成装置200におけるPUF入力生成部203に相当する。巡回シフト回路2008は、レジスタR2003が記憶するWビットのPUF出力情報を、レジスタI2001に格納されている秘密情報で示される値だけ巡回シフトして、外部メモリ2004に記憶するパターン情報を生成する。巡回シフト回路2008は、上述した第2実施形態の暗号化鍵生成装置200における出力シフト部207に相当する。なお、レジスタR2003と巡回シフト回路2008とを併せて実装し、レジスタR2003内でPUF出力情報の巡回シフトを行うようにしてもよい。あるいは、PUF演算装置2006が1ビット出力するごとに、レジスタR2003内で、レジスタI2001に格納されている秘密情報で示される値の番地にPUF出力情報を巡回シフトしながら書き込んでもよい。秘密情報生成回路2009は、暗号化鍵設定の各ラウンドrにおいて、一つの秘密情報を発生させる回路である。秘密情報再現回路2010は、暗号化鍵再現において、後述する比較回路2011の出力に基づき、カウンタ2005の値を秘密情報として再現する。秘密情報生成回路2009および秘密情報再現回路2010は、上述した第2実施形態の暗号化鍵生成装置200における秘密情報生成部206に相当する。比較回路2011は、暗号化鍵再現において、外部メモリ2004が記憶するパターン情報と巡回シフト回路2008が出力する参照情報とを比較する回路であり、比較するパターン情報と参照情報とが類似のデータであると判断する場合には1を出力し、そうでない場合には0を出力する。選択回路2012は、暗号化鍵設定の処理を実行しているときには秘密情報生成回路2009の出力を選択してレジスタI2001に出力し、暗号化鍵再現の処理を実行しているときには秘密情報再現回路2010の出力を選択してレジスタI2001に出力する。鍵生成回路2013は、レジスタI2001が保持する秘密情報に基づき、暗号化鍵を生成する回路である。鍵生成回路2013は、上述した第2実施形態の暗号化鍵生成装置200における鍵生成部209に相当する。レジスタK2014は、鍵生成回路2013が出力する暗号化鍵を保持するレジスタである。<第2実施例の暗号化鍵設定>次に、図11を参照して、第2実施例の暗号化鍵生成装置2000が実行する暗号化鍵設定の処理について説明する。図11は、第2実施例の暗号化鍵生成装置2000による暗号化鍵設定の一連の処理の流れを示すフローチャートである。図11のフローチャートで示す暗号化鍵設定の処理は、第2実施例の暗号化鍵生成装置2000が暗号化鍵設定開始の命令を受け付けることで開始される。第2実施例の暗号化鍵生成装置2000は、暗号化鍵設定開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。カウンタ2005は、カウンタ値cnを1に初期化するステップS701。秘密情報生成回路2009は、秘密情報I_rを生成し、レジスタI2001に格納するステップS702。ステップS702の処理は、例えば、第rラウンドの処理が開始される前に行われていてもよい。PUF入力生成回路2007は、予め定められた初期値あるいはステップS701で秘密情報生成回路2009が生成した秘密情報I_rを入力としてPUF入力情報X_rを生成し、レジスタP2002に格納するステップS703。ステップS703の処理は、例えば、第rラウンドの処理が開始される前に行われていてもよい。レジスタR2003は、ステップS703でレジスタP2002に格納されたPUF入力情報X_rを入力としてPUF演算回路2006が出力するWビットのPUF出力情報を記憶するステップS704。WビットのPUF出力情報がレジスタR2003に記憶されると、第2実施例の暗号化鍵再現装置2000は、cn=1,2,...,Wについて、以下のステップS705~ステップS708の処理を繰り返す。巡回シフト回路2008は、レジスタR2003が記憶するPUF出力情報を1ビットずつ左巡回シフトするステップS705。このステップS705の処理によりPUF出力情報が1ビット左巡回シフトされるたびに、カウンタ2005のカウンタ値cnがインクリメントされる。第2実施例の暗号化鍵生成装置2000は、カウンタ2005のカウンタ値cnがI_rと一致するか否か、つまり、秘密情報I_rが示すシフト量だけPUF出力情報が巡回シフトされたか否かを判定しステップS706、カウンタ値cnがI_rと一致するときにステップS706:Yes、巡回シフト回路2008の出力をパターン情報として外部メモリ2004に記憶するステップS707。なお、カウンタ値cnがI_rと一致しないときはステップS706:No、ステップS707の処理はスキップする。その後、第2実施例の暗号化鍵生成装置2000は、カウンタ2005のカウンタ値cn<Wか否かを判定するステップS708。ここで、cn<WであるならばステップS708:Yes、暗号化鍵生成装置2000は、ステップS705に戻って以降の処理を繰り返す。一方、cn=WであるならばステップS708:No、暗号化鍵生成装置2000は、r<Rであるか否かを判定するステップS709。ここで、r<RであるならばステップS709:Yes、暗号化鍵生成装置2000は、rをr1に置き換えて、ステップS701に戻って以降の処理を繰り返す。一方、r=RであるならばステップS709:No、ステップS710に進む。鍵生成回路2013は、例えば、各ラウンドにおいてレジスタI2001に格納された秘密情報の集合{I_i}_{0≦i≦R}に含まれる各秘密情報I_rを連結して暗号化鍵を生成し、レジスタK2014に格納するステップS710。<第2実施例の暗号化鍵再現>次に、図12を参照して、第2実施例の暗号化鍵生成装置2000が実行する暗号化鍵再現の処理について説明する。図12は、第2実施例の暗号化鍵生成装置2000による暗号化鍵再現の一連の処理の流れを説明するフローチャートである。図12のフローチャートで示す暗号化鍵再現の処理は、第2実施例の暗号化鍵生成装置2000が暗号化鍵再現開始の命令を受け付けることで開始される。第2実施例の暗号化鍵生成装置2000は、暗号化鍵再現開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。カウンタ2005は、カウンタ値cnを1に初期化するステップS801。PUF入力生成回路2007は、予め定められた初期値あるいは前回のラウンド処理で秘密情報再現回路2010が再現した秘密情報{I_i}_{0≦i<r}を入力としてPUF入力情報X_rを生成し、レジスタP2002に格納するステップS802。ステップS802の処理は、例えば、第rラウンドの処理が開始される前に行われていてもよい。レジスタR2003は、ステップS802でレジスタP2002に格納されたPUF入力情報X_rを入力としてPUF演算回路2006が出力するWビットのPUF出力情報を記憶するステップS803。WビットのPUF出力情報がレジスタR2003に記憶されると、第2実施例の暗号化鍵再現装置2000は、cn=1,2,...,Wについて、以下のステップS804~ステップS807の処理を繰り返す。巡回シフト回路2008は、レジスタR2003が記憶するPUF出力情報を1ビットずつ左巡回シフトして、パターン情報の比較対象となる参照情報Z_rを生成するステップS804。このステップS804の処理によりPUF出力情報が1ビットずつ左巡回シフトされて新たな参照情報が生成されるたびに、カウンタ2005のカウンタ値cnがインクリメントされる。比較回路2011は、ステップS804で生成された参照情報Z’_rと、外部メモリ2004が記憶するパターン情報Z_rとを比較して、これらが類似データであるか否かを判定するステップS805。比較回路2011が二つのデータを類似データであると判定した場合ステップS805:Yes、秘密情報再現回路2010は、カウンタ2005が記憶するカウンタ値cnを秘密情報I_rとして再現するステップS806。つまり、パターン情報Z_rに類似すると判定された参照情報Z’_rは、カウンタ2005のカウンタ値cnで示される巡回シフト量だけPUF出力情報を左巡回シフトした情報であるので、カウンタ2005のカウンタ値cnが示す巡回シフト量を、秘密情報I_rとして再現する。比較回路2011が二つのデータを類似データではない判定した場合にはステップS805:No、ステップS806の処理はスキップする。その後、第2実施例の暗号化鍵生成装置2000は、カウンタ2005のカウンタ値cn<Wか否かを判定するステップS807。ここで、cn<WであるならばステップS807:Yes、暗号化鍵生成装置2000は、ステップS804に戻って以降の処理を繰り返す。一方、cn=WであるならばステップS807:No、暗号化鍵生成装置2000は、r<Rであるか否かを判定するステップS808。ここで、r<RであるならばステップS808:Yes、暗号化鍵生成装置2000は、rをr1に置き換えて、ステップS801に戻って以降の処理を繰り返す。一方、r=RであるならばステップS808:No、ステップS809に進む。鍵生成回路2013は、例えば、各ラウンドにおいて秘密情報再現回路2010により再現され、レジスタI2001に格納された秘密情報の集合{I_i}_{0≦i≦R}に含まれる各秘密情報I_rを連結して暗号化鍵を生成し、レジスタK2014に格納するステップS809。なお、鍵生成回路2013は、秘密情報{I_i}_{0≦i≦R}の代わりに、PUF入力情報{X_r}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。あるいは、鍵生成回路2013は、秘密情報{I_i}_{0≦i≦R}に加えて、PUF入力情報{X_r}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。また、鍵生成回路2013は、連結した値を暗号化鍵として用いてもよいし、連結した値をハッシュ関数などに入力し、得られた値を暗号化鍵として用いてもよい。以上、第1実施形態および第2実施形態とそれらの具体的な実施例について説明したが、これら実施形態の暗号化鍵生成装置は、通常のコンピュータを利用したハードウェア構成を採用し、コンピュータによって実行されるプログラムにより、上述した各機能構成を実現する構成とすることができる。上述した暗号化鍵生成装置の各機能構成を実現するプログラムは、例えば、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、フレキシブルディスクFD、CD-R、DVDDigitalVersatileDiskなどのコンピュータで読み取り可能な記録媒体に記録されて提供される。また、上述した暗号化鍵生成装置の各機能構成を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述した暗号化鍵生成装置の各機能構成を実現するプログラムを、インターネットなどのネットワーク経由で提供または配布するように構成してもよい。さらに、上述した暗号化鍵生成装置の各機能構成を実現するプログラムを、ROMなどに予め組み込んで提供するように構成してもよい。上述した暗号化鍵生成装置の各機能構成を実現するプログラムは、各機能構成に対応するコンポーネントを含むモジュール構成となっており、実際のハードウェアとしてはCPUプロセッサが上記記憶媒体からプログラムを読み出して実行することにより上記各コンポーネントが主記憶装置上にロードされ、暗号化鍵生成装置の各機能構成が主記憶装置上に生成されるようになっている。以上、具体的な例を挙げながら詳細に説明したように、実施形態の暗号化鍵生成装置によれば、物理的複製困難関数を用いて効率良く暗号化鍵を生成することができる。なお、第1実施形態および第2実施形態とそれらの具体的な実施例は、その構成要素を適宜組み合わせることで、種々の発明を形成することができる。例えば、第2実施形態の暗号化鍵生成装置200がMGF107およびマスク処理部108を備え、巡回シフトしたPUF出力情報をマスク処理して記憶部102に記憶する構成とすることもできる。また、第2実施形態の暗号化鍵生成装置200が、各ラウンドにおいて、複数の秘密情報を生成あるいは再現するようにしてもよい。また、以上説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。上記の新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。上記の実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。"