(57)【特許請求の範囲】
【請求項１】
半導体デバイス内で前記半導体デバイスの固有情報を生成するデバイス固有情報生成装置であって、
論理回路を直列に接続して多段構成され、各段の出力信号に発生する複数の異なるグリッチを出力するグリッチ発生回路と、
外部から選択信号を受信し、前記グリッチ発生回路から出力される前記複数の異なるグリッチの中から１つのグリッチを選択して出力するセレクタと、
前記セレクタにより選択された前記グリッチの形状をビット情報に変換するビット変換回路と、
前記複数の異なるグリッチを１つずつ選択するように前記選択信号を出力することで、前記複数の異なるグリッチのそれぞれに対応して前記ビット変換回路で変換されたそれぞれのビット情報を取得し、取得した前記ビット情報の性能を評価して選択するグリッチを特定し、特定したグリッチを前記半導体デバイスの前記固有情報として出力するように、前記選択信号を特定する性能評価制御部と
を備えるデバイス固有情報生成装置。
【請求項２】
回路構成が異なる複数のグリッチ発生回路を備え、前記複数のグリッチ発生回路のそれぞれの出力信号を前記複数の異なるグリッチとして出力する
請求項１記載のデバイス固有情報生成装置。
【請求項３】
前記性能評価制御部は、前記複数の異なるグリッチの中から１つずつ選択するように前記選択信号を出力することで、前記複数の異なるグリッチのそれぞれに対応して前記ビット変換回路で変換されたそれぞれのビット情報を取得する操作を繰り返し実行し、繰り返し回数に対する前記ビット情報の一致度から、前記複数の異なるグリッチのそれぞれのエラーレート評価を行い、ビット列の性能評価を行うエラーレート評価回路を含む
請求項１または請求項２記載のデバイス固有情報生成装置。
【請求項４】
回路構成が異なる複数のグリッチ発生回路を備えたグリッチ発生回路群が、１つの前記半導体デバイス上に複数個搭載して構成され、
外部から第２の選択信号を受信することで、複数のグリッチ発生回路群のそれぞれの出力の中から１つを選択して前記ビット変換回路に対して出力する第２のセレクタを備え、
前記性能評価制御部は、前記複数のグリッチ発生回路群のそれぞれの出力の中から１つずつ選択するように前記第２の選択信号を出力するとともに、それぞれのグリッチ発生回路群に対するｎビット（ｎは２以上の整数）の入力信号を変化させることで、前記複数のグリッチ発生回路群のそれぞれに対応して前記ビット変換回路で変換されたそれぞれのビット情報を２ｎ−１ビットのビット列として取得する操作を実行し、ビット列に含まれるビット値が１のビット数をカウントすることで前記複数のグリッチ発生回路群のそれぞれの情報量評価を行い、ビット列の性能評価を行う情報量評価回路を含む
請求項１から請求項３のいずれかに記載のデバイス固有情報生成装置。
【請求項５】
前記性能評価制御部は、
前記ビット変換回路を介して取り込んだビット列に含まれる誤りを訂正するための誤り訂正回路と、
前記誤り訂正回路による誤り訂正後のビット列のハッシュ値を生成するＯＷＨＦ回路と、
前記ＯＷＨＦ回路で生成された前記ハッシュ値を、それ以前に生成したハッシュ値と比較する比較・判定回路と、
前記ビット列の性能評価を行う性能評価回路と、
前記比較・判定回路による判定結果、および性能評価回路による評価結果に基づいて、前記ビット変換回路で変換された前記ビット情報が、所望の性能を満たしているグリッチから生成されるように制御する制御回路と
を備えた請求項３または請求項４記載のデバイス固有情報生成装置。
【請求項６】
前記性能評価制御部は、
前記誤り訂正回路による誤り訂正後のビット列をランダム化してハッシュ値を求めることで、暗号鍵を生成するＨＦ回路
を備えた請求項５記載のデバイス固有情報生成装置。
【請求項７】
半導体デバイス内で前記半導体デバイスの固有情報を生成するためのデバイス固有情報生成方法であって、
論理回路を直列に接続して多段構成された回路を用いて、各段の出力信号に発生する複数の異なるグリッチを出力するグリッチ発生ステップと、
外部から選択信号を受信し、前記グリッチ発生ステップから出力される前記複数の異なるグリッチの中から１つのグリッチを選択して出力するグリッチ選択ステップと、
前記グリッチ選択ステップにより選択された前記グリッチの形状をビット情報に変換するビット変換ステップと、
前記複数の異なるグリッチを１つずつ選択するように前記選択信号を出力することで、前記複数の異なるグリッチのそれぞれに対応して前記ビット変換ステップで変換されたそれぞれのビット情報を取得し、取得した前記ビット情報の性能を評価して選択するグリッチを特定し、特定したグリッチを前記半導体デバイスの前記固有情報として出力するように、前記選択信号を特定する性能評価制御ステップと
を備えるデバイス固有情報生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証や暗号化などのセキュリティに関するものであり、より具体的には、認証で必要となるデバイス固有の識別子や、暗号化で必要となる秘密鍵などを生成することを目的としたデバイス固有情報生成装置およびデバイス固有情報生成方法に関するものである。
【背景技術】
【０００２】
ＡＳＩＣやＦＰＧＡ等の半導体デバイスにおいて、同一種類のデバイス上に同一の回路を実装した場合でも、ゲート遅延等のデバイス特性がデバイス個体毎に異なることによって、デバイス個体毎に異なる出力が得られる現象が存在する。このような現象を生む回路もしくはその技術は、Ｐｈｙｓｉｃａｌ  Ｕｎｃｌｏｎａｂｌｅ  ＦｕｎｃｔｉｏｎやＰｈｙｓｉｃａｌ  Ｕｎｃｌｏｎｉｎｇ技術などと呼ばれ（以下の説明では、この技術をＰＵＦと称する）、認証や暗号化といった用途への応用が期待されている。【０００３】
ＰＵＦの例として、組み合わせ回路の出力信号に発生するグリッチを利用した従来技術がある（例えば、特許文献１参照）。図１３は、特許文献１に示されているＰＵＦ（以下、グリッチＰＵＦと称する）の基本構成図、および具体的な信号処理の説明図である。図１３（ａ）に示したグリッチＰＵＦ１３０１は、データレジスタ群１３２０、グリッチ発生回路１３３０、およびビット変換回路１３４０を備えて構成されている。【０００４】
ここで、グリッチとは、信号の値が変化する際の過渡状態に見られる、値が０と１とで激しく変化を繰り返す現象のことである。そのとき、信号波形に発生する山のことも、ここでは、グリッチと呼ぶ。【０００５】
図１３（ａ）では、組み合わせ回路で構成されたグリッチ発生回路１３３０への入力信号１３１１の値を変化させると、それに応じて出力信号１３１２の値が変化する。その変化が完了するまでの過渡状態において、グリッチが発生する。以後、グリッチを含む信号を、グリッチ信号と呼ぶ。【０００６】
グリッチは、グリッチ発生回路１３３０が実装されたデバイス個体の特性によって変化する。つまり、同じグリッチ発生回路１３３０であっても、各デバイス毎に異なるグリッチが発生する。そこで、グリッチの形状に従って、０または１の値を決定することにより、各デバイス毎に異なるビットを生成することが可能となる。値の決定の仕方として、例えば、グリッチに含まれる山の数が偶数であれば０、奇数であれば１とする方法がある。【０００７】
以上の、グリッチＰＵＦ１３０１によるビット生成処理の流れが、図１３（ｂ）に示されている。また、グリッチ形状をビットに変換するビット変換回路１３４０での処理の実装例が、図１３（ｃ）に示されている。図１３（ｃ）では、トグルフリップフロップ（以下、トグルＦＦと称す）を利用したビット変換回路１３４０、およびその動作のタイミングチャートが示されている。【０００８】
トグルＦＦは、１回の立ち上がり信号の入力につき、出力の値が反転（０であれば１に、１であれば０に変化）する回路である。この原理により、グリッチに含まれる山の数が偶数、奇数のいずれであるかが、出力の反転回数の偶数、奇数に１対１対応し、結果、０、１のビット値に１対１対応する。【０００９】
図１３に示したような一連の処理で、入力信号１３１１に対応して１ビットが生成されることとなる。この処理を、入力信号１３１１の変化のさせ方を変えて複数回行うことで、複数のビットからなるビット列を生成することができる。つまり、グリッチ発生回路１３３０への入力信号をｎビットとすると、例えば、０→１、０→２、…、０→２n−１という２n−１個の変化のさせ方を行うことで、２n−１ビットのビット列を生成することができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】国際公開第１１／０８６６８８号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１に示されるグリッチＰＵＦ１３０１の構成には、次に述べる課題があった。グリッチＰＵＦ１３０１をＦＰＧＡやＡＳＩＣ等のデバイスに実装した際の性能は、実際にデバイスを製造するまで不明である。このため、実際にデバイスを製造した際に所望の性能を満たしていない可能性がある。ここで、性能とは、例えば、情報量やエラーレートである。【００１２】
また、デバイスの製造当初は、所望の性能を満たしていても、デバイスの経年劣化によって所望の性能を満たさなくなる可能性がある。そこで、デバイスの経年劣化によって情報量が減る理由を次に説明する。グリッチは、グリッチ発生回路１３３０を構成するゲートの遅延特性に基づいて発生する。この遅延特性は、デバイスの経年劣化によって変化するので、グリッチの出方もデバイスの経年劣化によって変化することとなる。【００１３】
図１４は、従来のグリッチＰＥＦにおけるグリッチ発生回路の経年変化の状態を示す説明図である。図１４に示すように、グリッチ発生回路１４３０が経年変化すると、グリッチが出にくくなる、あるいはグリッチが出なくなるといった状況が発生する。その結果、生成される情報量が減ることとなる。なぜなら、例えば、上述のようにグリッチの山の数が偶数か奇数かによってビットを決定する方法においては、グリッチがそもそも出ない（山の個数が０）と、ビットが必ず０になってしまうためである。【００１４】
所望の情報量やエラーレートを満たさない結果として、所望のビット長の識別子や暗号鍵の生成が行えず、製品機器が機能しない不具合が発生することとなる。【００１５】
本発明は、前記のような課題を解決するためになされたものであり、デバイス製造時の影響、あるいはデバイスの経年劣化の影響を受けずに、所望の性能を満たすグリッチを出力することのできるデバイス固有情報生成装置およびデバイス固有情報生成方法を得ることを目的とする。
【課題を解決するための手段】
【００１６】
本発明に係るデバイス固有情報生成装置は、半導体デバイス内で半導体デバイスの固有情報を生成するデバイス固有情報生成装置であって、論理回路を直列に接続して多段構成され、各段の出力信号に発生する複数の異なるグリッチを出力するグリッチ発生回路と、外部から選択信号を受信し、グリッチ発生回路から出力される複数の異なるグリッチの中から１つのグリッチを選択して出力するセレクタと、セレクタにより選択されたグリッチの形状をビット情報に変換するビット変換回路と、複数の異なるグリッチを１つずつ選択するように選択信号を出力することで、複数の異なるグリッチのそれぞれに対応してビット変換回路で変換されたそれぞれのビット情報を取得し、取得したビット情報の性能を評価して選択するグリッチを特定し、特定したグリッチを半導体デバイスの固有情報として出力するように、選択信号を特定する性能評価制御部とを備えるものである。
【００１７】
また、本発明に係るデバイス固有情報生成方法は、半導体デバイス内で半導体デバイスの固有情報を生成するためのデバイス固有情報生成方法であって、論理回路を直列に接続して多段構成された回路を用いて、各段の出力信号に発生する複数の異なるグリッチを出力するグリッチ発生ステップと、外部から選択信号を受信し、グリッチ発生ステップから出力される複数の異なるグリッチの中から１つのグリッチを選択して出力するグリッチ選択ステップと、グリッチ選択ステップにより選択されたグリッチの形状をビット情報に変換するビット変換ステップと、複数の異なるグリッチを１つずつ選択するように選択信号を出力することで、複数の異なるグリッチのそれぞれに対応してビット変換ステップで変換されたそれぞれのビット情報を取得し、取得したビット情報の性能を評価して選択するグリッチを特定し、特定したグリッチを半導体デバイスの固有情報として出力するように、選択信号を特定する性能評価制御ステップとを備えるものである。
【発明の効果】
【００１８】
本発明に係るデバイス固有情報生成装置およびデバイス固有情報生成方法によれば、グリッチ発生回路を複数搭載し、その中から所望の性能に近いグリッチ発生回路を選択可能とすることにより、デバイス製造時の影響、あるいはデバイスの経年劣化の影響を受けずに、所望の性能を満たすグリッチを出力することのできるデバイス固有情報生成装置およびデバイス固有情報生成方法を得ることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１におけるデバイス固有情報生成装置内のグリッチ発生回路の基本アイデアを説明するための図である。
【図２】本発明の実施の形態１におけるグリッチの安定性に関する説明図である。
【図３】本発明の実施の形態１におけるデバイス固有情報生成装置の第１の構成例を示す図である。
【図４】本発明の実施の形態１におけるデバイス固有情報生成装置の第２の構成例を示す図である。
【図５】本発明の実施の形態１における性能評価・制御部に含まれるエラーレート評価回路の構成例を示す図である。
【図６】本発明の実施の形態１における情報量を評価するためのデバイス固有情報生成装置の構成例、および性能評価・制御部に含まれる情報量評価回路の構成例を示す図である。
【図７】本発明の実施の形態１におけるデバイス固有情報生成装置を含むシステム構成例を示す図である。
【図８】本発明の実施の形態１における図７に示すグリッチＰＵＦの初期設定のフローチャートである。
【図９】本発明の実施の形態１における図７に示すグリッチＰＵＦの再設定のフローチャートである。
【図１０】本発明の実施の形態２における鍵生成を行う場合の性能評価・制御部の構成図である。
【図１１】本発明の実施の形態２における図１０に示すグリッチＰＵＦの初期設定のフローチャートである。
【図１２】本発明の実施の形態２における図１０に示すグリッチＰＵＦの再設定のフローチャートである。
【図１３】特許文献１に示されているＰＵＦの基本構成図、および具体的な信号処理の説明図である。
【図１４】従来のグリッチＰＥＦにおけるグリッチ発生回路の経年変化の状態を示す説明図である。
【発明を実施するための形態】
【００２０】
以下、本発明のデバイス固有情報生成装置およびデバイス固有情報生成方法の好適な実施の形態につき図面を用いて説明する。
【００２１】
実施の形態１．
本発明の基本アイデアは、グリッチ発生回路として、特性の異なるものを複数個搭載することである。特性として、グリッチの発生個数に着目し、あまりグリッチが発生しないグリッチ発生回路から、グリッチが大量に発生するグリッチ発生回路までを、多数搭載する。その目的から、特に、単純で小さな論理回路を直列に接続していくことで、段階的に論理の複雑さを増し、グリッチの発生を増加させていく構成を基本とする。
【００２２】
図１は、本発明の実施の形態１におけるデバイス固有情報生成装置内のグリッチ発生回路の基本アイデアを説明するための図である。図１に示したグリッチ発生回路１３０は、同一の論理回路Ａを４個（論理回路１３１（１）〜１３１（４）に相当）、直列に接続して構成されている。ここで、論理回路Ａは、線形回路であってもよいし、非線形回路であってもよい。
【００２３】
グリッチ発生回路１３０への入力信号を変化させると、各論理回路１３１（１）〜１３１（４）の出力にグリッチが発生する。これらの出力は、同じ論理回路Ａを直列に接続した１段目・２段目・３段目・４段目の出力であり、段数が進むに従って、グリッチがより多く発生することとなる。
【００２４】
これにより、たとえば、図１の例では、１段目の論理回路１３１（１）の出力は、グリッチが少なく情報量が少ない。一方、３段目の論理回路１３１（３）および４段目の論理回路１３１（４）の出力は、グリッチが多く不安定である。これに対して、２段目の論理回路１３１（２）の出力は、グリッチと安定性のバランスがよい、といった状況が起こる。
【００２５】
ここで、安定性について、図２を用いて説明する。図２は、本発明の実施の形態１におけるグリッチの安定性に関する説明図であり、具体的には、同じ入力信号に対して、動作毎に異なるパターンのグリッチが発生し、毎回生成されるビットが異なる状況を表している。このような状態を不安定と呼ぶ。不安定な状態では、動作毎のビットの再現性がないため、生成されたビットを情報として使うことができない。つまり、ＰＵＦとして使用可能な情報量が減ることを意味する。
【００２６】
先の図１において、グリッチが多く発生（３段目の論理回路１３１（３）の出力、あるいは４段目の論理回路１３１（４）の出力に相当）した方が、情報量は高くなるが、同時に、グリッチが多く発生する状態は、不安定である。従って、論理回路Ａの段数を増やしてグリッチを増やすと、初めはＰＵＦとして使用可能な情報量が増加するが、どこかの時点で減少に転じる。それが２段目と３段目の境界である。このことから、グリッチの数と安定性の両立を考慮すると、図１に示した例では、２段目の論理回路１３１（２）の出力が、ＰＵＦとしての利用に最適と言える。
【００２７】
また、３段目の論理回路１３１（３）の出力は、経年劣化後にＰＵＦとして最適となる可能性がある。つまり、現時点ではグリッチが多くて不安定であるが、経年劣化によってグリッチが出にくくなった際には、この３段目の論理回路１３１（３）の出力が、ＰＵＦとして最適になり得る。
【００２８】
さらに、４段目の論理回路１３１（４）の出力は、ＰＵＦとしてではなく、乱数発生器としての利用が可能である。すなわち、４段目の論理回路１３１（４）の出力は、グリッチが非常に多くて不安定であるため、図２に示したように、毎回の出力が安定しない。従って、この４段目の論理回路１３１（４）の出力は、ＰＵＦとしては使えないが、逆に、乱数として使えるようになるのである。
【００２９】
以上の原理を踏まえ、本実施の形態１におけるデバイス固有情報生成装置の内部構成について、いくつかの具体例を図示しながら、次に説明する。図３は、本発明の実施の形態１におけるデバイス固有情報生成装置の第１の構成例を示す図である。図３に示したデバイス固有情報生成装置に相当するグリッチＰＵＦ３０１は、ビット生成部３１０と性能評価・制御部３５０とを備えて構成されている。
【００３０】
ここで、ビット生成部３１０は、ビット生成を行う機能を有し、データレジスタ群３２０，グリッチ発生回路トップ３３０、およびビット変換回路３４０を備えている。一方、性能評価・制御部３５０は、ビット生成部３１０で生成されるビットの性能評価を行うとともに、所望の性能に近いグリッチが発生するように、ビット制御部３１０を制御する機能を有している。
【００３１】
次に、ビット生成部３１０の内部構成について、詳細に説明する。ビット生成部３１０内のデータレジスタ群３２０は、グリッチ発生回路トップ３３０に入力されるデータを保持するレジスタ群である。
【００３２】
そして、グリッチ発生回路トップ３３０は、同じ論理回路ＡをＮ段直列に接続してなる論理回路３３１（１）〜３３１（Ｎ）、およびセレクタ３３２を備えている。ここで、論理回路３３１（１）〜３３１（Ｎ）の動作は、先の図１における４段の論理回路を有するグリッチ発生回路１３０と同様である。
【００３３】
また、セレクタ３２０は、性能評価・制御部３５０から出力される選択信号に基づいて、論理回路３３１（１）〜３３１（Ｎ）のいずれの段の出力を選択してビット変換回路３４０に与えるかを選択切換する。このような構成を備えることで、グリッチ発生回路トップ３３０は、グリッチの発生数を段階的に増加させる構成を備えるとともに、性能評価・制御部３５０から出力される選択信号により、Ｎ個のグリッチ信号の中から、いずれか１つを選択することを可能としている。
【００３４】
なお、論理回路Ａに関しては、先の図１で説明したように、線形回路であっても、非線形回路であってもよい。設計方針の一例としては、実装サイズを抑える目的のために、単独では単純で小さな論理回路を用い、その段数Ｎを増やすことで、論理の複雑度を増していく構成が挙げられる。
【００３５】
次に、図４は、本発明の実施の形態１におけるデバイス固有情報生成装置の第２の構成例を示す図である。図４に示したデバイス固有情報生成装置に相当するグリッチＰＵＦ４０１は、ビット生成部４１０と性能評価・制御部４５０とを備えて構成されている。また、ビット生成部４１０は、データレジスタ群４２０，グリッチ発生回路トップ４３０、およびビット変換回路４４０を備えている。
【００３６】
図４に示した第２の構成例と、先の図３で示した第１の構成例とを比較すると、基本的な構成は同じであるが、グリッチ発生回路トップの内部構成が異なっている。そこで、この相違点を中心に、以下に説明する。先の図３で示した第１の構成例におけるグリッチ発生回路トップ３３０は、論理回路ＡをＮ段接続し、その各段からの出力を選択することで、合計Ｎ個のグリッチ信号を生成していた。
【００３７】
一方、図４に示した第２の構成例におけるグリッチ発生回路トップ４３０は、全く別々のＮ個のグリッチ発生回路４３１（１）〜４３１（Ｎ）、およびセレクタ４３２を備えている。すなわち、グリッチ発生回路トップ４３０は、全く別々のグリッチ発生回路をＮ個実装することで、Ｎ個のグリッチ信号を生成している。
【００３８】
この図４の構成におけるグリッチ発生回路４３１（１）〜４３１（Ｎ）の例としては、暗号アルゴリズムのＳ−ｂｏｘが挙げられる。ＤＥＳ、ＡＥＳ、ＭＩＳＴＹ、Ｃａｍｅｌｌｉａといった、様々な暗号アルゴリズムのＳ−ｂｏｘを利用することで、異なるグリッチ発生回路を実装することが可能である。
【００３９】
次に、図３における性能評価・制御部３５０、および図４における性能評価・制御部４５０について、説明する。両者の機能は同一であり、ここでは、図３を用いて、性能評価・制御部３５０の機能について、具体的に説明する。
【００４０】
性能評価・制御部３５０は、セレクタ３３２を制御し、Ｎ個のグリッチ信号を１個ずつ選択する。これにより、ビット変換回路３４０は、各段に対応するグリッチ信号をビットに変換することで、各段に対応するビットを生成できる。ここで、性能評価・制御部３５０は、ある段に対するビット生成を繰り返し（例えば１００回）行わせるようにセレクタ３３２を制御し、その際に、ビット変換回路３４０の出力として、初回に得られた値と、２回目以降に得られた値とを比較することで、エラーレートの評価を行うことができる。
【００４１】
図５は、本発明の実施の形態１における性能評価・制御部に含まれるエラーレート評価回路の構成例を示す図である。エラーレート評価回路５６０は、初回のビット値を保持するレジスタ５６１、初回のビット値と２回目以降のビット値とを比較する比較器５６２、およびその比較結果が不一致だった回数を数えて保持するレジスタ５６３を備えている。
【００４２】
比較器５６２は、比較結果が不一致であった場合には、レジスタ５６３のイネーブル信号を生成する。そして、レジスタ５６３は、イネーブル信号に応じてレジスタの値を１増やすことで、不一致回数を数えることができる。例えば、１００回の比較を行った後のレジスタ５６３の値が１０であれば、エラーレート評価回路５６０は、エラーレートが１０％であると判定する。
【００４３】
このように、エラーレートは、同一のデバイス内でのビット生成を、例えば１００回繰り返し、その１００個のビット値を用いて評価することができる。一方、情報量を評価するためには、複数の、例えば１００個の異なるデバイスに対して生成された１００個のビット値が必要である。したがって、同一のデバイス内に、疑似的に複数デバイスが存在する状況を作る必要がある。
【００４４】
図６は、本発明の実施の形態１における情報量を評価するためのデバイス固有情報生成装置の構成例、および性能評価・制御部に含まれる情報量評価回路の構成例を示す図である。図６（ａ）に示したデバイス固有情報生成装置に相当するグリッチＰＵＦ６０１は、データレジスタ群６２０、Ｍ個のグリッチ発生回路トップ６３０（１）〜６３０（Ｍ）、セレクタ６３２、ビット変換回路６４０、および性能評価・制御部６５０を備えて構成されている。
【００４５】
ここで、データレジスタ群６２０、セレクタ６３２、ビット変換回路６４０、および性能評価・制御部６５０のそれぞれは、先の図３におけるデータレジスタ群３２０、セレクタ３３２、ビット変換回路３４０、および性能評価・制御部３５０と同一の機能を有するものである。
【００４６】
また、Ｍ個のグリッチ発生回路トップ６３０（１）〜６３０（Ｍ）は、先の図３におけるグリッチ発生回路トップ３３０、あるいは先の図４におけるグリッチ発生回路トップ４３０に相当するグリッチ発生回路トップ（すなわち、Ｎ個のグリッチ信号を生成するために、グリッチ発生回路をＮ個有するもの）を、同一のレイアウトでＭ個、デバイス上に実装したものである。
【００４７】
そして、性能評価・制御部６５０は、セレクタ６３２を制御することで、Ｍ個のグリッチ発生回路トップ６３０（１）〜６３０（Ｍ）の中のいずれか１つの出力を選択可能としている。これにより、グリッチＰＵＦ６０１は、疑似的にＭ個のデバイスに対するグリッチＰＵＦを構成し、疑似的にＭ個のデバイスに対するビットを生成している。さらに、グリッチＰＵＦ６０１は、擬似的に生成したＭ個のビット値に対する統計処理を性能評価・制御部６５０で行うことにより、情報量を評価することが可能となる。
【００４８】
あるビットが持つ情報量は、例えば、シャノンのエントロピーによって測られる。シャノンのエントロピーは、ビットが０となる確率がｐ（１となる確率が１−ｐ）のとき、
−ｐ×ｌｏｇ２（ｐ）−（１−ｐ）×ｌｏｇ２（１−ｐ）                  （１）
と定義される。なお、ｌｏｇ２は、２を底とする対数関数である。
【００４９】
対数関数を回路として実現すると、実装サイズが大きくなるため、ｐの値のみから情報量に関する評価を行うことが望ましい。ここで、上式（１）は、ｐ＝０．５で最大値を取る左右対称の凸関数であるため、情報量のおおよその大小は、ｐの値から判定できる。そこで、図６（ｂ）を用いて、性能評価・制御部６５０に含まれる情報量評価回路６７０の機能について説明する。
【００５０】
図６（ｂ）に示した情報量評価回路６７０は、比較器６７１、および２つのレジスタ６７２、６７３を備えて構成されている。比較器６７１は、ビット変換回路６４０で生成されたビット値が０であるか否かを判定し、その結果からレジスタ６７２およびレジスタ６７３のイネーブル信号を生成する。
【００５１】
２つのレジスタ６７２、６７３のイネーブル信号は、互いの反転となっており、レジスタ６７２は、ビット値が０であるときに値が増加するカウンタとして機能し、レジスタ６７３は、ビット値が１であるときに値が増加するカウンタとして機能する。上述した、グリッチＰＵＦ６０１で生成されるＭ個のビット値に対し、性能評価・制御部６５０として、この情報量評価回路６７０を用いることで、Ｍ個中の０と１の個数を数えることが可能となり、その結果、情報量の評価が可能となる。
【００５２】
この回路は、また、米国のＮＩＳＴ  ＳＰ８００−２２が定める乱数検定の、ビットの０／１等頻度性評価の目的にも使用可能である。
【００５３】
次に、ここまでで説明したビット生成部、および、性能評価・制御部を、ＣＰＵやメモリも含むシステムとして構成する例について説明する。図７は、本発明の実施の形態１におけるデバイス固有情報生成装置を含むシステム構成例を示す図である。図７に示したデバイス固有情報生成装置に相当するグリッチＰＵＦ７０１は、ビット生成部７１０と性能評価・制御部７５０とを備えて構成されている。
【００５４】
ビット生成部７１０は、データレジスタ群７２０、Ｍ個のグリッチ発生回路トップ７３０（１）〜７３０（Ｍ）、セレクタ７３２、およびビット変換回路７４０を備えており、先の図６（ａ）と同様に、同一のレイアウトでＭ個、デバイス上に実装されたグリッチ発生回路トップ７３０（１）〜７３０（Ｍ）を有している。そして、ビット生成部７１０で生成されたビット列は、性能評価・制御部７５０に入力される。
【００５５】
性能評価・制御部７５０は、誤り訂正回路７５１、ＯＷＨＦ回路７５２、比較・判定回路７５３、性能評価回路７５４、および制御回路７５５を備えている。誤り訂正回路７５１は、性能評価・制御部７５０に入力されたビット列が含む誤りを訂正するための回路である。ＯＷＨＦ回路７５２は、誤り訂正後のビット列のハッシュ値を取る回路である。
【００５６】
比較・判定回路７５３は、生成したハッシュ値を以前生成したハッシュ値と比較する回路である。性能評価回路７５４は、性能評価・制御部７５０に入力されたビット列の性能を評価する回路である。さらに、制御回路７５５は、比較・判定回路７５３による判定結果、および性能評価回路７５４による評価結果に基づいて、ビット生成部７１０を制御する回路である。
【００５７】
さらに、図７に示すグリッチＰＵＦ７０１は、システムバス７８０を介して、ＣＰＵ７８１、メモリ７８２、Ｉ／Ｏ７８３と接続されている。
【００５８】
次に、フローチャートを用いて、図７に示した構成を備えるグリッチＰＵＦ７０１の動作について、詳細に説明する。図８は、本発明の実施の形態１における図７に示すグリッチＰＵＦ７０１の初期設定のフローチャートである。また、図９は、本発明の実施の形態１における図７に示すグリッチＰＵＦ７０１の再設定のフローチャートである。
【００５９】
まず始めに、図８を用いて、初期設定の一連処理について、それぞれのステップ毎に説明する。
【００６０】
ステップＳ８０１：制御回路７５５が、ビットｂ（１、１、１）〜ビットｂ（Ｎ、Ｍ、２n−１）を得るステップである。ここで、ｂ（ｉ、ｊ、ｋ）の１つ目の添え字ｉは、グリッチ発生回路の番号である（ｉ＝１、…、Ｎ）。すなわち、先の図３においては、論理回路３３１（１）〜３３１（Ｎ）のいずれかを選択する番号に相当し、先の図４においては、グリッチ発生回路４３１（１）〜４３１（Ｎ）のいずれかを選択する番号に相当する。
【００６１】
また、２つ目の添え字ｊは、同一レイアウトでＭ個実装したグリッチ発生回路トップ７３０（１）〜７３０（Ｍ）のいずれかを選択する番号に相当する（ｊ＝１、…、Ｍ）。さらに、３つ目の添え字ｋは、グリッチ発生回路への入力変化パターンを表す番号であり、入力信号をｎビットとすると、２n−１ビットのビット列に相当する。
【００６２】
ステップＳ８０２：性能評価回路７５４が、ビットｂ（１、１、１）、…、ｂ（Ｎ、Ｍ、２n−１）の性能を評価するステップである。性能評価回路７５４は、その評価結果から、所望の性能を満たす添え字ｉ（ｉ＝１、…、Ｎ）を選び、添え字ｉをメモリ７８２に保持する。
【００６３】
なお、添え字ｊに関しては、情報量を評価するためにＭ個のデバイスを疑似的に実装したものを表す添え字であるので、評価後、実際に使用するのは、この中の１つでよい。以降、ｊ＝１を使用するとして説明する。
【００６４】
ステップＳ８０３：誤り訂正回路７５１が、ｊ＝１とした場合の、所望の性能を満たす添え字ｉに対応するビット列ｗ（ｉ）＝（ｂ（ｉ、１、１）、…、ｂ（ｉ、１、２n−１））に対し、誤り訂正に必要なシンドロームｓを生成し、メモリ７８２に保持するステップである。
【００６５】
ステップＳ８０４：ＯＷＨＦ回路７５２が、ビット列ｗ（ｉ）のハッシュ値ｈを計算し、メモリ７８２に保持するステップである。
【００６６】
以上が、初期設定のフローチャートである。このような一連処理により、性能評価・制御部７５０は、所望の性能を満たす添え字ｉ、ビット列ｗ（ｉ）の誤り訂正に必要なシンドロームｓ、およびビット列ｗ（ｉ）のハッシュ値ｈを、初期設定することができる。
【００６７】
次に、図９を用いて、再設定の一連処理について、それぞれのステップ毎に説明する。
【００６８】
ステップＳ９０１：制御回路７５５が、カウンタｃｎｔの値を０で初期化するステップである。このカウンタｃｎｔは、ステップＳ９０３の誤り訂正が失敗した回数を表している。
【００６９】
ステップＳ９０２：制御回路７５５が、ビット生成部７１０を制御することで、先の初期設定で決定した添え字ｉに対応するビット列ｗ（ｉ）’を生成するステップである。制御回路７５５は、添え字ｉをメモリ７８２から読み出す。そして、制御回路７５５は、グリッチ発生回路ｉを選択するための選択信号を生成し、この選択信号は、１台目（ｊ＝１に相当）のグリッチ発生回路トップ７３０（１）内のセレクタに入力される。これにより、ビット列ｗ（ｉ）’の生成が可能となる。なお、ビット列ｗ（ｉ）’は、通常、誤りを含むため、初期設定で生成したｗ（ｉ）とは異なる値となり、「’」を付している。
【００７０】
ステップＳ９０３：誤り訂正回路７５１が、ビット列ｗ（ｉ）’に対して誤り訂正処理を行い、ビット列ｗ（ｉ）’’を得るステップである。誤り訂正回路７５１は、初期設定で生成した誤り訂正用のシンドロームｓをメモリ７８２から読み出し、ビット列ｗ（ｉ）’に対して誤り訂正処理を行う。誤り訂正後のビット列ｗ（ｉ）’’は、初期設定で生成したビット列ｗ（ｉ）と一致することが期待される。
【００７１】
ステップＳ９０４：ＯＷＨＦ回路７５２が、ビット列ｗ（ｉ）’’のハッシュ値ｈ’’を計算するステップである。
【００７２】
ステップＳ９０５：比較・判定回路７５３が、ハッシュ値ｈ’’を、初期設定で生成したハッシュ値ｈと比較し、比較結果により処理を分岐させるステップである。ｈ＝ｈ’’となった場合は、ステップＳ９０３における誤り訂正が成功し、初期設定で生成したビット列ｗ（ｉ）を再生成できたことを意味する。逆に、ｈ≠ｈ’’となった場合は、ステップＳ９０３における誤り訂正に失敗し、初期設定で生成したビット列ｗ（ｉ）の再生成ができなかったことを意味する。
【００７３】
ステップＳ９０６：制御回路７５５が、ステップＳ９０５でｈ≠ｈ’’となった場合に、誤り訂正の失敗回数を表すカウンタｃｎｔの値を１増やし、次のステップＳ９０７に進むステップである。
【００７４】
ステップＳ９０７：カウンタｃｎｔの値が、ある所定のしきい値Ｕを超えているか否かを、制御回路７５５が判定するステップである。カウンタｃｎｔがＵを超えていない場合、ステップＳ９０２に戻り、制御回路７５５は、再びビット列生成と誤り訂正を行う。
【００７５】
ステップＳ９０８：ステップＳ９０７において、ｃｎｔ＞Ｕとなった場合、制御回路７５５が、失敗通知を行うステップである。これは、制御回路７５５が、これ以上ビット列生成と誤り訂正を続けても、ビット列ｗ（ｉ）を再生成できないと判定したことを意味する。
【００７６】
ステップＳ９０９：ステップＳ９０５において、ハッシュ値がｈ＝ｈ’’となり、ビット列ｗ（ｉ）の再生成に成功したとき、カウンタｃｎｔの値が、あるしきい値Ｖを超えているか否かを制御回路７５５が判定するステップである。制御回路７５５は、ｃｎｔがＶを超えていない場合には、再設定処理を終了する。なお、ＵとＶの関係は、Ｕ＞Ｖである。
【００７７】
ステップＳ９１０：ステップＳ９０９において、ｃｎｔ＞Ｖとなった場合、性能評価・制御部７５０が、初期設定の処理を行って新たな添え字ｉ’を選択するステップである。これは、ビット列ｗ（ｉ）の再生成に何度も失敗したため、性能評価・制御部７５０が、回路特性が大幅に変わったと判断し、ビット列ｗ（ｉ）の再生成ができなくなる前に、初期設定をやり直すことで、新たなｉ’を選び直したことを意味する。
【００７８】
以上が、再設定のフローチャートである。このような一連処理により、性能評価・制御部７５０は、デバイス製造の影響、あるいはデバイスの経年劣化の影響を受けずに、所望の性能（情報量やエラーレート）を満たすグリッチを出力することを保証でき、必要に応じて初期設定をやり直すことができる。
【００７９】
以上のように、実施の形態１によれば、グリッチ発生回路を複数搭載し、それらの情報量評価が可能である。従って、複数のグリッチ発生回路の中から使用するグリッチ発生回路を選択可能とすることで、所望の性能を満たす可能性を高めることができる。さらに、性能評価・制御部を備えることで、実際に、所望の性能を満たしているグリッチ発生回路の選択が可能となる。
【００８０】
さらに、これらの特徴を持つことにより、デバイス製造時やデバイスの経年劣化後に、グリッチＰＵＦが所望の情報量を満たすことを保証できる。この結果、グリッチＰＵＦを利用した製品機器の機能が正常に動作することを保証する、あるいは機能の保証期間をより長くすることなどが可能となる。
【００８１】
さらに、複数のグリッチ発生回路を搭載し、特に、グリッチが発生しやすく毎回のビット生成の再現性が低いグリッチ発生回路を搭載し、生成したビットの０／１等頻度性評価を行えることから、グリッチＰＵＦの乱数発生器としての使用も可能となる。
【００８２】
実施の形態２．
先の実施の形態１では、最適なグリッチ発生回路の選択を行う初期設定、およびグリッチ発生回路の特性が変化したときの再設定に関して説明した。これに対して、本実施の形態２では、グリッチ発生回路を用いた具体的な応用例について説明する。
【００８３】
グリッチＰＵＦによるビット列生成を用いて、暗号アルゴリズムで使用するための鍵生成を行うことができる。図１０は、本発明の実施の形態２における鍵生成を行う場合の性能評価・制御部の構成図である。本実施の形態２における性能評価・制御部１０５０は、誤り訂正回路１０５１、ＯＷＨＦ回路１０５２、比較・判定回路１０５３、性能評価回路１０５４、制御回路１０５５、およびＨＦ回路１０５６を備えている。また、本実施の形態２における図１０の構成では、暗号回路１０９０が含まれている。
【００８４】
先の実施の形態１における図７の構成と比較すると、本実施の形態２における図１０の性能評価・制御部１０５０は、ビット列をランダム化することを目的としたハッシュ関数（ＨＦ回路１０５６）をさらに備えている点が異なっている。このＨＦ回路１０５６の働きにより、グリッチＰＵＦ１００１で生成したビット列を、暗号アルゴリズムの鍵として使用することが可能となる。
【００８５】
次に、フローチャートを用いて、図１０に示した構成を備えるグリッチＰＵＦ１００１の動作について、詳細に説明する。図１１は、本発明の実施の形態２における図１０に示すグリッチＰＵＦ１００１の初期設定のフローチャートである。また、図１２は、本発明の実施の形態２における図１０に示すグリッチＰＵＦ１００１の再設定のフローチャートである。
【００８６】
まず始めに、図１１を用いて、初期設定の一連処理について、それぞれのステップ毎に説明する。なお、この図１１のフローチャートは、先の実施の形態１における図８のフローチャートに、鍵生成に関する処理を追加したものとなっている。具体的には、ステップＳ１１０２〜Ｓ１１０５は、ステップＳ８０１〜Ｓ８０４と同一であり、ステップＳ１１０１、Ｓ１１０５〜Ｓ１１０８が、鍵生成に関する処理として新たに追加されたステップに相当する。
【００８７】
ステップＳ１１０１：暗号回路１０９０が、Ｉ／Ｏ１０８２からマスター鍵ｍｋを入力し、内部のレジスタに保持するステップである。
【００８８】
ステップＳ１１０２：制御回路１０５５が、ビットｂ（１、１、１）〜ビットｂ（Ｎ、Ｍ、２n−１）を得るステップである。
【００８９】
ステップＳ１１０３：性能評価回路１０５４が、ビットｂ（１、１、１）、…、ｂ（Ｎ、Ｍ、２n−１）の性能を評価するステップである。性能評価回路１０５４は、その評価結果から、所望の性能を満たす添え字ｉ（ｉ＝１、…、Ｎ）を選び、添え字ｉをメモリ１０８２に保持する。
【００９０】
ステップＳ１１０４：誤り訂正回路１０５１が、ｊ＝１とした場合の、所望の性能を満たす添え字ｉに対応するビット列ｗ（ｉ）＝（ｂ（ｉ、１、１）、…、ｂ（ｉ、１、２n−１））に対し、誤り訂正に必要なシンドロームｓを生成し、メモリに保持するステップである。
【００９１】
ステップＳ１１０５：ＯＷＨＦ回路１０５２が、ビット列ｗ（ｉ）のハッシュ値ｈを計算し、メモリ１０８２に保持するステップである。
【００９２】
ステップＳ１１０６：ＨＦ回路１０５６が、ビット列ｗ（ｉ）のハッシュ値ｋを計算し、暗号回路１０９０の内部レジスタに保持するステップである。このｋが、グリッチＰＵＦ１００１を用いて生成した暗号鍵に相当する。
【００９３】
ステップＳ１１０７：暗号回路１０９０が、ステップＳ１１０６で生成した暗号鍵ｋを用いてマスター鍵ｍｋを暗号化し、暗号化データｘを得るステップである。暗号回路１０９０は、暗号化データｘをメモリ１０８２に保持する。
【００９４】
ステップＳ１１０８：暗号回路１０９０が、内部のレジスタに保持していたマスター鍵ｍｋと暗号鍵ｋを消去するステップである。
【００９５】
上述した図１１におけるフローチャートには、２つの暗号鍵ｍｋとｋが存在するが、マスター鍵ｍｋが実際にデータを暗号化するための鍵であり、グリッチＰＵＦで生成した暗号鍵ｋは、マスター鍵ｍｋを暗号化するための鍵である。ここで、暗号鍵ｋをデータの暗号化に使わない理由は、グリッチＰＵＦ１００１の出力は、デバイスの経年劣化によって変化し、初期設定と同じ暗号鍵ｋを再生成することが、いずれ不可能になるためである。
【００９６】
以上が、初期設定のフローチャートである。このような一連処理により、性能評価・制御部１０５０は、所望の性能を満たす添え字ｉ、ビット列ｗ（ｉ）の誤り訂正に必要なシンドロームｓ、およびビット列ｗ（ｉ）のハッシュ値ｈを、初期設定することができる。さらに、性能評価・制御部１０５０は、マスター鍵ｍｋの入手、暗号鍵ｋの生成、および暗号化データｘの生成を行うことができる。
【００９７】
次に、図１２を用いて、再設定の一連処理について、それぞれのステップ毎に説明する。なお、この図１２のフローチャートは、先の実施の形態１における図９のフローチャートに、鍵管理に関する処理を追加したものとなっている。具体的には、ステップＳ１２０１〜Ｓ１２０８は、ステップＳ９０１〜Ｓ９０８と同一であり、ステップＳ１２１１は、ステップＳ９０９と同一であり、ステップＳ１２０９、Ｓ１２１０、Ｓ１２１２が、鍵管理に関する処理として新たに追加されたステップに相当する。
【００９８】
ステップＳ１２０１：制御回路１０５５が、カウンタｃｎｔの値を０で初期化するステップである。
【００９９】
ステップＳ１２０２：制御回路１０５５が、ビット生成部１０１０を制御することで、先の初期設定で決定した添え字ｉに対応するビット列ｗ（ｉ）’を生成するステップである。
【０１００】
ステップＳ１２０３：誤り訂正回路１０５１が、ビット列ｗ（ｉ）’に対して誤り訂正処理を行い、ビット列ｗ（ｉ）’’を得るステップである。
【０１０１】
ステップＳ１２０４：ＯＷＨＦ回路１０５２が、ビット列ｗ（ｉ）’’のハッシュ値ｈ’’を計算するステップである。
【０１０２】
ステップＳ１２０５：比較・判定回路１０５３が、ハッシュ値ｈ’’を、初期設定で生成したハッシュ値ｈと比較し、比較結果により処理を分岐させるステップである。
【０１０３】
ステップＳ１２０６：制御回路１０５５が、ステップＳ１２０５でｈ≠ｈ’’となった場合に、誤り訂正の失敗回数を表すカウンタｃｎｔの値を１増やし、次のステップＳ１２０７に進むステップである。
【０１０４】
ステップＳ１２０７：カウンタｃｎｔの値が、ある所定のしきい値Ｕを超えているか否かを、制御回路１０５５が判定するステップである。カウンタｃｎｔがＵを超えていない場合、ステップＳ１２０２に戻り、制御回路１０５５は、再びビット列生成と誤り訂正を行う。
【０１０５】
ステップＳ１２０８：ステップＳ１２０７において、ｃｎｔ＞Ｕとなった場合、制御回路１０５５が、失敗通知を行うステップである。
【０１０６】
ステップＳ１２０９：ＨＦ回路１０５６が、ビット列ｗ（ｉ）’’のハッシュ値ｋを計算するステップである。Ｓ１２０５において、ｈ＝ｈ’’であったことから、ｗ（ｉ）’’＝ｗ（ｉ）であるので、ここで求めたハッシュ値ｋは、ｗ（ｉ）のハッシュ値ｋと一致する。これは、初期設定で生成した鍵の再生成に成功したことを意味する。ＯＷＨＦ回路１０５２は、計算したハッシュ値ｋを、再生成した鍵ｋとして、暗号回路１０９０の内部のレジスタに保持する。
【０１０７】
ステップＳ１２１０：暗号回路１０９０が、再生成した鍵ｋを用いてデータｘを復号し、マスター鍵ｍｋを得るステップである。暗号回路１０９０は、マスター鍵ｍｋを内部のレジスタに保持する。
【０１０８】
ステップＳ１２１１：カウンタｃｎｔの値が、あるしきい値Ｖを超えているか否かを、制御回路１０５５が判定するステップである。制御回路１０５５は、ｃｎｔがＶを超えていない場合には、Ｓ１２１２に進む。
【０１０９】
ステップＳ１２１２：暗号回路１０９０が、マスター鍵ｍｋを用いて暗号処理を行うステップである。
【０１１０】
ステップＳ１２１３：ステップＳ１２１１において、ｃｎｔ＞Ｖとなった場合、性能評価・制御部１０５０が、初期設定の処理を行って新たな添え字ｉ’の選択、および、それに対応する新たな鍵ｋ’によるｍｋの暗号化を行うステップである。これは、ビット列ｗ（ｉ）の再生成に何度も失敗したため、性能評価・制御部１０５０が、回路特性が大幅に変わったと判断し、ビット列ｗ（ｉ）の再生成ができなくなる（従って、ｋが再生成できなくなる）前に、初期設定をやり直すことで、新たなｉ’を選び直したことを意味する。
【０１１１】
以上が、再設定のフローチャートである。このような一連処理により、性能評価・制御部１０５０は、デバイス製造の影響、あるいはデバイスの経年劣化の影響を受けずに、所望の性能（情報量やエラーレート）を満たすグリッチを出力することを保証でき、必要に応じて初期設定をやり直すことができる。さらに、鍵管理に関する処理に応用することができる。
【０１１２】
以上のように、実施の形態２によれば、先の実施の形態１の効果を有するグリッチＰＵＦによるビット列生成を用いて、暗号アルゴリズムで使用するための鍵生成を行うことができ、暗号処理への応用が可能となる。
【図１】
0005646091.tif 000002
【図２】
0005646091.tif 000003
【図３】
0005646091.tif 000004
【図４】
0005646091.tif 000005
【図５】
0005646091.tif 000006
【図６】
0005646091.tif 000007
【図７】
0005646091.tif 000008
【図８】
0005646091.tif 000009
【図９】
0005646091.tif 000010
【図１０】
0005646091.tif 000011
【図１１】
0005646091.tif 000012
【図１２】
0005646091.tif 000013
【図１３】
0005646091.tif 000014
【図１４】
0005646091.tif 000015