(57)【特許請求の範囲】
【請求項１】
入力値に対して生成される出力値が一義的には定まらずに一定の値若しくは不定の値を出力するデジタル回路である出力値生成回路、
前記出力値生成回路の出力値が一定であるか不定であるかを判定する出力値判定部、
周囲温度と前記出力値生成回路の出力値に関する情報との関係を表したデータが記憶されている記憶部、及び
前記出力値判定部による判定結果と前記記憶部に記憶されているデータとに基づいて、周囲温度を判定する温度判定部、
を備える温度センサ。
【請求項２】
前記出力値生成回路として、メタスタビリティ型ＰＵＦを複数個備えており、
前記記憶部には、周囲温度と前記複数個のメタスタビリティ型ＰＵＦのうちで出力値が不定であるものの個数との関係を表したデータが記憶されており、
前記温度判定部は、前記複数個のメタスタビリティ型ＰＵＦのうちで出力値が不定であると前記出力値判定部が判定したものの個数と、前記記憶部に記憶されているデータとに基づいて、周囲温度を判定する、
請求項１に記載の温度センサ。
【請求項３】
前記出力値生成回路として、遅延型ＰＵＦを備えており、
前記記憶部には、周囲温度と前記遅延型ＰＵＦの出力値が一定の値であるか不定の値であるかを表している情報との関係が、該遅延型ＰＵＦへの入力値毎に記憶されており、
前記温度判定部は、前記遅延型ＰＵＦの出力値が不定であると前記出力値判定部が判定したときに該遅延型ＰＵＦに入力されていた入力値と、前記記憶部に記憶されているデータとに基づいて、周囲温度を判定する、
請求項１に記載の温度センサ。
【請求項４】
前記温度判定部は、前記遅延型ＰＵＦへの入力として定義されている複数個の入力値に対する、該遅延型ＰＵＦの出力値を不定にすると前記出力値判定部により判定された入力値の個数の割合と、前記記憶部に記憶されているデータから周囲温度毎に算出される、該遅延型ＰＵＦへの入力として定義されている複数個の入力値に対する、該遅延型ＰＵＦの出力値を不定とする入力値の個数の割合とに基づいて、周囲温度を判定する請求項３に記載の温度センサ。
【請求項５】
入力値に対して生成される出力値が一義的には定まらずに一定の値若しくは不定の値を出力するデジタル回路である出力値生成回路と、
前記出力値生成回路の出力値が一定であるか不定であるかを判定する出力値判定部と、
周囲温度と前記出力値生成回路の出力値に関する情報との関係を表したデータが記憶されている記憶部と、
前記出力値判定部による判定結果と前記記憶部に記憶されているデータとに基づいて、周囲温度を判定する温度判定部と、
を備える温度センサ、
前記出力値生成回路の出力値に基づいて暗号鍵を生成する暗号鍵生成部、
前記暗号鍵生成部により生成された暗号鍵を用いて情報の暗号化処理を行う暗号化処理部、及び
前記温度判定部により判定された周囲温度が所定範囲外である場合に、前記暗号化処理部を制御して前記暗号化処理の実行を禁止する暗号化処理制御部、
を備える暗号化装置。
【請求項６】
前記暗号鍵生成部は、前記温度判定部により判定された周囲温度が所定範囲外である場合には、前記暗号鍵の出力を禁止する請求項５に記載の暗号化装置。
【請求項７】
通信ネットワークを介してサーバ装置とデータの授受を行う通信部を更に備え、
前記記憶部が、前記サーバ装置に配置されている、
請求項５に記載の暗号化装置。
【請求項８】
前記出力値生成回路は、前記記憶部に記憶されているデータを前記通信部が受け取らない場合には、前記出力値の生成動作を停止する請求項７に記載の暗号化装置。
【請求項９】
入力値に対して生成される出力値が一義的には定まらずに一定の値若しくは不定の値を出力するデジタル回路の出力値が一定であるか不定であるかを判定し、
周囲温度と前記デジタル回路の出力値に関する情報との関係を表したデータが予め記憶されている記憶部に記憶されている該データと、前記デジタル回路の出力値についての前記判定の結果とに基づいて、周囲温度を判定し、
前記デジタル回路の出力値に基づいて暗号鍵を生成し、
前記暗号鍵を用いて情報の暗号化処理を行い、
前記周囲温度の判定により判定された周囲温度が所定範囲内である場合には、前記暗号鍵を用いて情報の暗号化処理を行い、該周囲温度が該所定範囲外である場合には、該暗号化処理の実行を禁止する、
暗号化方法。
【請求項１０】
請求項１から４のうちのいずれか一項に記載の温度センサ、
前記出力値生成回路の出力値に基づいて個体別情報を生成する個体別情報生成部、及び
前記温度判定部により判定された周囲温度が所定範囲外である場合に、前記個体別情報生成部により生成される個体別情報の出力を禁止する個体別情報生成制御部、
を備える個体別情報生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で議論される実施態様は、温度の検出技術に関する。
【背景技術】
【０００２】
近年、プリンタカートリッジや、電池等のバッテリー、ゲーム機のカートリッジといった製品に関して、正規品の製造メーカとは異なる製造メーカによるクローン品が多く見られるようになっている。クローン品とは、正規品の内部構造の分析や正規品の内部に存在するＩＣ（集積回路）チップの解析等の結果を用いて製造された、正規品と同等の機能を有する製品である。これらのクローン品の中には、正規品を製造する正規メーカの知的財産等の権利を侵害するケースも多く、クローン対策技術が強く求められている。
【０００３】
このようなクローン品を防止する手法として、正規品へ認証機能を付与することが行われている。この認証機能を実現する有効な手段のひとつがＰＵＦ（Physically Unclonable Function：物理的クローン作製不能機能）である。詳細は後述するが、ＰＵＦから生成される秘密情報は、顕微鏡での観察による解析では特定できない。従って、上記に挙げたようなクローン品への対策が必要な製品に対してＰＵＦを組み込んで、ＰＵＦで秘密情報を生成することで認証機能を実現することは、クローン品への対策としての有効性が高い。
【０００４】
ＰＵＦは、ある同一の入力に対して、ＰＵＦが実装された電子デバイス毎に異なる出力を返す関数である。但し、デバイス毎に異なる値を出力するような関数を個別に設定する必要はなく、同一の回路（顕微鏡での解析を行っても、見た目は同一であって、その出力値が特定できない）がこの関数を実現する。つまり、ＰＵＦは、デバイス内の信号遅延や素子特性などの物理特性のわずかな違いを利用することで、その出力をデバイス毎に全く異なる値とする。従って、この出力はデバイス固有の値（「個体別情報」と称することとする）となる。
【０００５】
理想的なＰＵＦは、デバイス上に実装するとそのデバイスでは常に同一の個体別情報を出力する（再現性）一方、異なるデバイス上に実装されたＰＵＦ間では全く異なる個体別情報を出力する（ユニーク性）。このようなデバイスにおけるＰＵＦの出力情報は、人における、「指紋」のような生体情報に喩えることができる。指紋は、同一人であれば年をとっても不変である（再現性）一方、別人の間では全く異なる（ユニーク性）という、理想的なＰＵＦの出力情報と同様の性質を有している。
【０００６】
また、同一の回路構成のＰＵＦが、このような理想的な再現性とユニーク性と兼ね備えていれば、攻撃者が回路を分解し、内部を解析したところで、クローンチップを生成することはできない。
【０００７】
このＰＵＦは、識別情報（ＩＤ）の生成や暗号鍵の生成にも用いられる。従って、ＰＵＦを用いて認証機能を実現することが可能である。
多くの電子デバイス製品では、個々に固有のＩＤを必要とする。従来は、多くの場合において、それぞれのデバイス毎に異なる値をＩＤとして不揮発性メモリに書き込む作業が製造段階で行われていた。このＩＤの生成にＰＵＦを用いると、セキュアにＩＤをＩＣチップ内に格納しておけるだけでなく、この書き込み作業のコストを低減させることもできる。
【０００８】
また、暗号機能を含む製品はＰＵＦを用いると安全性が向上する。具体例として、情報記録用の集積回路をカードに組み組んだスマートカードがある。また、通信の秘匿を保証するために、携帯電話に使用されるＳＩＭ（Subscriber Identification Module）カードや無線インターネット接続の端末などにも暗号機能が必須である。これらの機器での暗号化に使用する暗号鍵の生成にＰＵＦを使用するようにすれば、暗号鍵が攻撃者に解析される危険性が大幅に低下し、安全性が向上する。
【０００９】
次に、ＰＵＦの基本的な回路構成例を幾つか説明する。
なお、本明細書における以下の説明では、電位の異なる２値の論理レベルにおけるハイ・レベルを値「１」と表現し、ロー・レベルを値「０」と表現することとする。
【００１０】
広く知られているＰＵＦは、大きく分けて、遅延型ＰＵＦとメタスタビリティ（metastability ）型ＰＵＦとの２つに分類することができる。
図１に図解するように、遅延型ＰＵＦ１は、ｎビットのデータ（ＰＵＦでは「チャレンジ」と称されている）の入力に対して、１ビットのデータの出力（ＰＵＦでは「レスポンス」と称されている）を返すデジタル回路である。従って、遅延型ＰＵＦ１からｍビットのレスポンスを得るためには、例えば、図２に表で表したように、互いに異なるｎビットのチャレンジｍ個を１個の遅延型ＰＵＦ１に入力すればよい。また、ｍ個の遅延型ＰＵＦ１の各々から得られる１ビットのレスポンスを並べてｍビットのレスポンスを得るようにすることも、もちろん可能である。
【００１１】
この遅延型ＰＵＦ１に分類されるＰＵＦの例として、アービタ（Arbiter ）ＰＵＦ、グリッチ（Glitch）ＰＵＦ、及びリングオシレータ（Ring Oscillator ）ＰＵＦが知られている。以下、これらのＰＵＦについて説明する。
【００１２】
まずアービタＰＵＦについて説明する。アービタＰＵＦは回路遅延を利用してＰＵＦを実現するものである。
図３について説明する。図３は、アービタＰＵＦの構成例を図解したものである。
【００１３】
このアービタＰＵＦ１０は、計２ｎ個の２入力１出力のセレクタ１１−０ａ、１１−０ｂ、１１−１ａ、１１−１ｂ、１１−２ａ、１１−２ｂ、…、１１−（ｎ−１）ａ、及び１１−（ｎ−１）ｂと、Ｄ型フリップフロップ回路１２と、を備えて構成されている。
【００１４】
なお、以下の説明では、特に区別する必要がない場合には、セレクタ１１−０ａ、１１−０ｂ、１１−１ａ、１１−１ｂ、１１−２ａ、１１−２ｂ、…、１１−（ｎ−１）ａ、及び１１−（ｎ−１）ｂを総称して「セレクタ１１」とする。
【００１５】
セレクタ１１−１ａ及び１１−１ｂは、その第一入力端子にセレクタ１１−０ａの出力端子が接続されており、その第二入力端子にセレクタ１１−０ｂの出力端子が接続されている。また、セレクタ１１−２ａ及び１１−２ｂは、その第一入力端子にセレクタ１１−１ａの出力端子が接続されており、その第二入力端子にセレクタ１１−１ｂの出力端子が接続されている。残りのセレクタ１１も同様の接続がなされている。
【００１６】
なお、セレクタ１１には値Ｃｈａ［ｎ−１：０］が入力される。この値Ｃｈａ［ｎ−１：０］は、セレクタ１１の２つの入力端子のどちらに入力された信号を出力端子に出力するかの選択指示をセレクタ１１に与えるためのものであり、このアービタＰＵＦ１０に対するｎビットのチャレンジの入力である。
【００１７】
図３の構成において、例えば、セレクタ１１−１ａ及び１１−１ｂには、そのどちらにもｃｈａ［１］が入力されている。セレクタ１１−１ａは、ｃｈａ［１］＝１のときには、第一入力端子に入力された信号を出力端子に出力し、ｃｈａ［１］＝０のときには、第二入力端子に入力された信号を出力端子に出力する動作を行うものとする。その一方、セレクタ１１−１ｂは、ｃｈａ［１］＝１のときには、第二入力端子に入力された信号を出力端子に出力し、ｃｈａ［１］＝０のときには、第一入力端子に入力された信号を出力端子に出力する動作を行うものとする。また、他のセレクタ１１についても同様の動作を行うものとする。
【００１８】
このアービタＰＵＦ１０において、Ｄ型フリップフロップ回路１２は「アービタ」と称される。このＤ型フリップフロップ回路１２は、データ入力端子Ｄにセレクタ１１−（ｎ−１）ａの出力端子が接続されており、クロック入力端子ＣＬＫにセレクタ１１−（ｎ−１）ｂの出力端子が接続されている。このＤ型フリップフロップ回路１２の出力が、このアービタＰＵＦ１０の出力Ｒとなる。なお、Ｄ型フリップフロップ回路１２は、初期化時にはリセットされて出力は０とされる。
【００１９】
以上のように、このアービタＰＵＦ１０は、計２ｎ個のセレクタ１１がｎ個ずつ直列に接続されてＤ型フリップフロップ回路１２に接続される対称的な構成を有している。なお、セレクタ１１相互間の接続、並びにセレクタ１１−（ｎ−１）ａ及び１１−（ｎ−１）ｂとＤ型フリップフロップ回路１２との間の接続における配線長も、可能な限り、この対称性を保つように等しくしておくことが好ましい。
【００２０】
このアービタＰＵＦ１０には、前述したチャレンジの入力の他に、Ｄ型フリップフロップ回路１２のクロック端子に入力するとＤ型フリップフロップ回路１２に状態変化を生じさせるエッジ信号が入力される。なお、本実施形態では、このエッジ信号を、論理レベルが０から１へと変化する立ち上がりエッジ信号とする。
【００２１】
アービタＰＵＦ１０に入力された立ち上がりエッジ信号は、セレクタ１１−０ａ及び１１−０ｂの第一入力端子及び第二入力端子に入力される。すると、この立ち上がりエッジ信号は、チャレンジｃｈａ［ｎ−１：０］の値に応じた経路でセレクタ１１を経由して、アービタであるＤ型フリップフロップ回路１２のデータ入力端子Ｄ及びクロック入力端子ＣＬＫに到着する。
【００２２】
このときのＤ型フリップフロップ回路１２の出力は、データ入力端子Ｄとクロック入力端子ＣＬＫとのどちらに立ち上がりエッジ信号の０から１への変化点が先着したかによって決定し、この出力がアービタＰＵＦ１０の出力Ｒとなる。つまり、この変化点がクロック入力端子ＣＬＫに先着すればアービタＰＵＦ１０の出力Ｒは０となり、この変化点がデータ入力端子ＣＬＫに先着すればアービタＰＵＦ１０の出力Ｒは１となる。
【００２３】
前述したように、このアービタＰＵＦ１０は、計２ｎ個のセレクタ１１がｎ個ずつ直列に接続された対称的な構成を有している。また、前述したように、各素子間の配線長はほぼ等しく構成されている。従って、回路論理上は、Ｄ型フリップフロップ回路１２のデータ入力端子Ｄとクロック入力端子ＣＬＫとへの立ち上がりエッジ信号の到着は同時であり、この両者に到着した立ち上がりエッジ信号は同位相のはずである。ところが、実際には、電子デバイスへの実装条件に起因するゲート遅延や配線遅延により、この両者への立ち上がりエッジ信号の到着が同時とならない場合がある。この到着時刻のずれの程度は、電子デバイス固有のものであるが、デバイス毎では異なるものとなる。つまり、この到着時刻のずれの程度は、前述したＰＵＦの性質である、再現性とユニーク性とを兼ね備えており、アービタＰＵＦ１０を実装した電子デバイスの個体別情報として利用することができる。
【００２４】
以上のように、図３のアービタＰＵＦ１０は、Ｄ型フリップフロップ回路１２に状態変化を生じさせるエッジ信号をそのクロック端子に入力すると共に、このエッジ信号と論理上は同位相としたエッジ信号をそのデータ入力端子に入力するように構成されている。そして、このＤ型フリップフロップ回路１２の出力端子から出力される信号が、アービタＰＵＦ１０の出力となるように構成されている。
【００２５】
また、前述したように、このアービタＰＵＦ１０は、チャレンジＣｈａ［ｎ−１：０］の値によって、立ち上がりエッジ信号についての、セレクタ１１を経由する経路を変更することができる。従って、チャレンジＣｈａ［ｎ−１：０］の値を変更すると、異なる出力Ｒの値が得られる。この出力Ｒが、チャレンジＣｈａ［ｎ−１：０］に対してアービタＰＵＦ１０が返すレスポンスとなる。
【００２６】
そこで、特定のデバイスに実装したアービタＰＵＦ１０におけるチャレンジＣｈａ［ｎ−１：０］とレスポンスＲとの関係を予め調べて記録しておく。このようにすることで、その後に検査対象のデバイスのアービタＰＵＦ１０のチャレンジＣｈａ［ｎ−１：０］とレスポンスＲとの関係を調べて上述の記録内容と照合すれば、検査対象のデバイスが特定のデバイスであるか否かの認証を行うことができる。
【００２７】
なお、アービタＰＵＦ１０への同一のチャレンジに対してレスポンスを複数回生成した場合に、チャレンジの値によっては、Ｄ型フリップフロップ回路１２への立ち上がりエッジ信号の到着の時間差が極めて小さいことがある。この場合には、２つの入力端子のうち先に到着する方が、時によって変化することもあり得るため、レスポンスの値が０若しくは１の両方をとる（乱数となる）こともある。
【００２８】
次にグリッチＰＵＦについて説明する。
グリッチＰＵＦは，論理回路を構成する各ゲートの入出力信号間の遅延関係によって発生する、「グリッチ」と呼ばれる現象を利用したＰＵＦである。まず、このグリッチについて、図４Ａ及び図４Ｂを用いて説明する。
【００２９】
図４Ａに図解されている論理回路は、ＸＯＲ（排他的論理和）回路２１の出力がＡＮＤ（論理積）回路の入力の１つに接続されて構成されている。この論理回路では、ＸＯＲ回路２１の２つの入力と、ＡＮＤ回路２２の２つの入力のうちＸＯＲ回路２１が接続されていない方の入力とに、それぞれ入力信号ｘ１、ｘ２、及びｘ３が入力され、ＸＯＲ回路２１から出力信号ｙが出力される。
【００３０】
この論理回路において、入力信号ｘ１、ｘ２、及びｘ３の論理レベルを０から１に変化させてみる。すると、このときの入力信号ｘ１と入力信号ｘ２との間での信号変化の時間差により、まず、ＸＯＲ回路２１の出力として、矩形状のパルス（グリッチ）が発生する。このグリッチが入力信号ｘ３の信号変化よりも後にＡＮＤ回路２２へ到達した場合には、出力信号ｙとして、グリッチがＡＮＤ回路２２から出力される。一方、ＸＯＲ回路２１から出力されるグリッチが、入力信号ｘ３の信号変化よりも先にＡＮＤ回路２２へ到達した場合には、出力信号ｙとして、グリッチがＡＮＤ回路２２から出力されることはない。
【００３１】
グリッチＰＵＦは、この論理回路の特性を利用したＰＵＦであり、入力信号ｘ１、ｘ２、及びｘ３がチャレンジに相当する。この論理回路は、半導体チップ毎に異なるゲート遅延、ゲートのドライブ能力、配線遅延等の要因により、同一の回路構成であっても、同一の入力に対して、その出力波形（過渡状態）に存在するグリッチの個数は異なってくる。そこで、出力されるグリッチの個数が偶数個の場合には、１ビットのレスポンス値として０を出力し、その個数が奇数個の場合には、１をレスポンスとする．
【００３２】
図５は、グリッチＰＵＦの構成例を図解したものである。
このグリッチＰＵＦ２０は、グリッチ発生回路２３とグリッチ形状判定回路２４とを備えて構成されている。ここで、グリッチ発生回路２３は、例えば、ＡＥＳ暗号で使用されるＳボックス（Substitution Box）回路であり、グリッチ形状判定回路２４は、例えばトグルＦＦ（Flip Flop）回路を用いる。
【００３３】
ＡＥＳ暗号のＳボックス回路は８ビット入力・８ビット出力である．従って、最大で８ビットのレスポンスを同時に生成可能であるが、このうちの１つを選択することで，アービタＰＵＦと同様に、１ビットのレスポンスを生成することができる。
【００３４】
なお、グリッチＰＵＦ２０への同一のチャレンジに対してレスポンスを複数回生成した場合に、チャレンジの値によっては，グリッチ発生回路２３内の信号変化の時間差が極めて小さいことがある。この場合には、２つの信号のうち先に伝搬する方の信号が、時によって変化することもあり得るため、レスポンスの値が０若しくは１の両方をとる（乱数となる）こともある。
【００３５】
次にリングオシレータＰＵＦについて説明する。
リングオシレータＰＵＦとは、インバータ回路を奇数個直列接続した「リングオシレータ」を利用したＰＵＦである。図６は、リングオシレータＰＵＦの構成例である。
【００３６】
リングオシレータＰＵＦ３０は、ｎ個のリングオシレータ３１−１、３１−２、…、３１−ｎ、２個のマルチプレクサ３２−１及び３２−２、２個のカウンタ３３−１及び３３−２、並びに比較器３４を備えて構成されている。
【００３７】
リングオシレータ３１−１、３１−２、…、３１−ｎは、いずれも同一個数のインバータ回路を直列接続して構成されているが、半導体チップ毎に、また同一チップにおいて、ゲート遅延や配線遅延のばらつきが存在するため、各々の発振周波数がわずかに異なる。そこで、リングオシレータ３１−１、３１−２、…、３１−ｎの各々の出力信号（クロック信号）のうちで任意の２つの出力信号をマルチプレクサ３２−１及び３２−２により選択して、それぞれカウンタ３３−１及び３３−２に入力する。このときに、リングオシレータ３１−１、３１−２、…、３１−ｎのうちのいずれの２つを選択するかを特定する入力、つまり、マルチプレクサ３２−１及び３２−２への選択指示を行う信号が、チャレンジに相当する。
【００３８】
カウンタ３３−１及び３３−２の各々に入力されるクロック信号は、周波数がわずかに異なるため、所定時間が経過した後のカウント値の大小関係は、選択された２つのオシレータの周波数の大小関係を表している。そこで、カウンタ３３−１及び３３−２の各々のカウント値の大小関係を比較器３４により求め、この大小関係をビット情報に変換する。このビット情報をレスポンスとしたものがリングオシレータＰＵＦ３０である。
【００３９】
なお、リングオシレータＰＵＦ３０において、同一のチャレンジに対して，レスポンスを複数回生成した場合，チャレンジの値によっては、選択された２つのオシレータの周波数が極めて近い場合もある。そのため、時によって、カウンタ値の大小関係が入れ替わることもあり、結果としてレスポンスの値が０若しくは１の両方をとる（乱数となる）こともある。
【００４０】
次に、メタスタビリティ型ＰＵＦについて説明する。メタスタビリティ型ＰＵＦは、デジタル回路の不定状態を利用するＰＵＦである。メタスタビリティ型ＰＵＦに分類されるＰＵＦの例として、ＳＲＡＭ−ＰＵＦ及びバタフライ型ＰＵＦが知られている。以下、これらのＰＵＦについて説明する。
【００４１】
まずＳＲＡＭ−ＰＵＦについて説明する。
ＳＲＡＭ（Static Random Access Memory ）への電力供給を開始した直後のメモリセルの初期値は、デバイスに依存した複雑な内部状態から決定されるため、ランダムな値となる。ＳＲＡＭ−ＰＵＦは、この初期値のばらつきを利用する。ＳＲＡＭ−ＰＵＦでは、メモリセル・アドレスがチャレンジに相当し、そのメモリセル・アドレスで特定されるメモリセルの初期値がレスポンスに相当し、後述するバタフライ型ＰＵＦのラッチ部分が、ＳＲＡＭ−ＰＵＦのメモリセルに相当する。
【００４２】
次にバタフライ型ＰＵＦについて説明する。バタフライ型ＰＵＦは、ＲＳラッチ回路のメタステーブルを利用してＰＵＦを実現するものである。
まず、メタステーブルについて、図７Ａ及び図７Ｂを用いて説明する。
【００４３】
図７Ａには、ＲＳラッチ回路の構成例が図解されている。このＲＳラッチ回路は、ＮＡＮＤ（否定論理積）回路４１及び４２を用いて構成されている。
このＲＳラッチ回路の入力は負論理である。なお、図面においては、負論理の信号を信号名の上にオーバーバーを付すことで表現しているが、本明細書においては、負論理の信号を“＃”で表記するものとする。従って、例えば、図７ＡのＲＳラッチ回路のセット入力は“＃Ｓ”と表記し、リセット入力は“＃Ｒ”と表記する。
【００４４】
ＮＡＮＤ回路４１の２つの入力には、それぞれ、セット入力“＃Ｓ”と、ＮＡＮＤ回路４２の出力とが入力される。また、ＮＡＮＤ回路４２の２つの入力には、それぞれ、リセット入力“＃Ｒ”と、ＮＡＮＤ回路４１の出力とが入力される。また、ＮＡＮＤ回路４１の出力がＲＳラッチ回路の出力Ｑとなる。なお、ＮＡＮＤ回路４２の出力からは、出力“＃Ｑ”が出力される。
【００４５】
図７Ｂは、この図７ＡのＲＳラッチ回路の真理値表である。なお、この真理値表においては、セット入力Ｓ及びリセット入力Ｒを正論理で表記している。
真理値表からも分かるように、図７ＡのＲＳラッチ回路は、入力Ｓ＝０且つ入力Ｒ＝０のときには、出力値はそのまま保持されるので、Ｑ＝Ｑとなり、“＃Ｑ”＝“＃Ｑ”となる。また、このＲＳラッチ回路は、入力Ｓ＝０且つ入力Ｒ＝１のときには出力値はリセットされて、Ｑ＝０となり、“＃Ｑ”＝１となる。更に、このＲＳラッチ回路は、入力Ｓ＝１且つ入力Ｒ＝０のときには出力値はセットされて、Ｑ＝１、“＃Ｑ”＝０となる。
【００４６】
図７ＡのＲＳラッチ回路は、以上の入力の組み合わせのいずれかであれば、出力の論理は安定している。ところが、このＲＳラッチ回路は、入力Ｓ＝１且つ入力Ｒ＝１のときには、Ｑ＝“＃Ｑ”＝１となってしまう。つまり、この場合には、本来は反対の論理を示すはずであるＱの論理値と“＃Ｑ”の論理値とが、揃って「１」となってしまう。このとき、このＲＳラッチ回路の出力は、どちらも、中間電位の不安定な状態となっている。このような、デジタル回路としては異常である不安定な状態が、メタステーブル（metastable）と呼ばれている。一般的には、このようなメタステーブルの状態を回避するために、ＲＳラッチ回路に対するＳ＝１且つＲ＝１の入力は禁止される。
【００４７】
次に、このようなＲＳラッチ回路のメタステーブルを利用するバタフライ型ＰＵＦについて説明する。図８は、このバタフライ型ＰＵＦの構成例である。
このバタフライ型ＰＵＦ４０は、図７ＡのＲＳラッチ回路のセット入力“＃Ｓ”及びリセット入力“＃Ｒ”の両方に同一の値Ａを入力するように構成したものである。ここで、このバタフライ型ＰＵＦ４０の出力である、ＲＳラッチ回路の出力Ｑ及び出力“＃Ｑ”を、それぞれ、Ｂ及びＣとする。つまり、このバタフライ型ＰＵＦ４０は、ＲＳラッチ回路に対しメタステーブル状態とする入力を与えると共に、このＲＳラッチ回路の出力端子から出力される信号を、このバタフライ型ＰＵＦ４０の出力とするように構成した回路である。
【００４８】
このバタフライ型ＰＵＦ４０は、入力Ａ＝０のときは、出力Ｂ及び出力Ｃはどちらも１となり、この状態で出力の値は安定している。ところが、ここで、値Ａを０から１に変化させると、出力Ｂが１であって出力Ｃが０である状態と、出力Ｂが０であって出力Ｃが１である状態とが生じて、出力が不定となる。これは、ＲＳラッチ回路がメタステーブルの状態に置かれており、その出力が不確定の状態になっているためである。バタフライ型ＰＵＦ４０は、この不確定性を利用したＰＵＦである。
【００４９】
このバタフライ型ＰＵＦ４０の出力は２値（０と１）のどちらかの値をとる。しかしながら、バタフライ型ＰＵＦ４０をデバイスに実装すると、常に０を出力するもの、及び、常に１を出力するものと、出力が０と１とで定まらないもの、すなわち乱数を出力するものとの３つの態様のものが得られ、この出力の態様には再現性がある。そこで、このバタフライ型ＰＵＦ４０をデバイスに複数実装し、その各々から得られる出力を、バタフライ型ＰＵＦ４０を実装したデバイスについての個体別情報として利用することができる。
【００５０】
次に図９について説明する。図９は、背景技術である個体別情報生成装置を図解したものである。
この個体別情報生成装置５０は、電子デバイスであるデバイス６０に、ｎ個のＰＵＦ５１を実装して構成されている。なお、図９では、ＰＵＦ５１−１、５１−２、５１−３、５１−４、５１−５、及び５１−６の各々に、図８に図解したバタフライ型ＰＵＦ４０を描いているが、これに限定されるものではない。ＰＵＦ５１としては、例えば、前述した遅延型ＰＵＦ及びメタスタビリティ型ＰＵＦのいずれでもよい。
【００５１】
この個体別情報生成装置５０では、ｎ個実装されたＰＵＦ５１から、どれを選択するかが、前述したチャレンジに相当する。図９は、このチャレンジによって、ＰＵＦ５１−１、５１−２、５１−３、５１−４、５１−５、及び５１−６が選択された状態を表現している。この６個のＰＵＦ５１の各々の出力ＲＥＳ［５：０］は２値の値（０または１）をとるので、これらの値を並べて６ビットのビット列を形成する。このビット列がレスポンスとなり、デバイス６０の個体別情報として利用することができる。なお、この個体別情報生成装置５０がとり得る個体別情報のパターン数は、計６個のＰＵＦ５１を選択するので、２の６乗パターン、すなわち６４パターンである。
【００５２】
但し、前述したように、ＰＵＦ５１は乱数を出力する場合がある。図９は、計６個のＰＵＦ５１のうち、ＰＵＦ５１−３及び５１−４が乱数を出力している場合を表現している。このような乱数を出力するＰＵＦ５１がチャレンジによる選択に含まれてしまうと、デバイス６０で不変であるはずのレスポンスが異なる値となることがあり、再現性が失われてしまうため、デバイス６０の個体別情報として利用できなくなってしまう。
【００５３】
この点に関し、個体別情報生成装置５０に符号誤り訂正回路を備えるという技術が知られている。この技術では、チャレンジによって選択されたＰＵＦ５１の出力を並べて構成したビット列をこの符号誤り訂正回路に入力し、その出力を個体別情報生成装置５０のレスポンスとするように構成する。つまり、ＰＵＦ５１から上述のようにして生成されるビット列に含まれる乱数を符号誤り訂正回路で補正して、デバイス６０では、同一のチャレンジに対して常に同一のレスポンスが得られるようにする。この技術では、このようにして、個体別情報生成装置５０の出力の再現性を確保している。
【００５４】
この他の背景技術として、電子デバイスの物理特性の違いを利用して乱数を生成する技術が幾つか知られている。そのひとつに、デジタル入力値に対して一義的に決定されないデジタル出力値を得ると共に、このデジタル出力値における「０」と「１」の出現頻度を均等にするという乱数生成の技術がある。
【００５５】
ところで、ＰＵＦの使用例のひとつに、前述したように、情報の暗号化に使用する暗号鍵の生成がある。これは、ＰＵＦの特徴のひとつである、解析の困難性を活用するものである。ところが、近年、暗号機能に対して、「フォールト攻撃」という手法が問題となっている。次に、このフォールト攻撃について説明する。
【００５６】
セキュリティシステムの基盤技術として、様々な方式の暗号化が利用されている。この暗号化の方式は、公開鍵方式と共通鍵方式に大別される。
公開鍵暗号方式とは、暗号化と復号とで異なる鍵を用いる方式であり、暗号化を行うための鍵(公開鍵)を公開する代わりに、暗号文を復号するための鍵(秘密鍵)を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対し、共通鍵暗号方式とは、暗号化と復号とで同一の鍵(共通鍵)を用いる方式であり、この共通鍵を送信者及び受信者を除く第三者には公開しない秘密の情報とすることで安全性を保つ方式である。
【００５７】
フォールト攻撃では、このような方式による暗号化機能が実装された装置に対して過電圧、高温、低温等のストレスを与えて装置内部のデータ値に異常(Fault )を発生させる。そして、その際の異常な出力値を利用して、装置内部に格納されている秘密情報（前述した秘密鍵や共通鍵）を入手し、この秘密情報を用いて、秘匿した情報の解読を行う。
【００５８】
このフォールト攻撃は現実の脅威として知られている。例えば、電子商取引で広く用いられているＯｐｅｎＳＳＬでは、公開鍵暗号方式のひとつであるＲＳＡ暗号が用いられている。このＯｐｅｎＳＳＬをＦＰＧＡ（Field-Programmable Gate Array ）上に実装した環境に対するフォールト攻撃が成功して、ＲＳＡ暗号の秘密情報を解読したという報告がなされている。
【００５９】
なお、この他の背景技術として、電子デバイスの物理特性の違いを利用して乱数を生成する技術が幾つか知られている。そのひとつに、デジタル入力値に対して一義的に決定されないデジタル出力値を得ると共に、このデジタル出力値における「０」と「１」の出現頻度を均等にするという乱数生成の技術がある。
【００６０】
また、この他の背景技術として、アクティブ回路とスタティック回路とにより構成されている出力回路におけるアクティブ回路の動作によって生じる電源変動が及ぼすスタティック回路の出力への影響を防止するという技術が知られている。
【先行技術文献】
【特許文献】
【００６１】
【特許文献１】特許第３６０４６７４号公報
【特許文献２】特開平１０−５１２９５号公報
【非特許文献】
【００６２】
【非特許文献１】ジェ・ダブリュ・リー（Jae W. Lee）、他５名、「ア・テクニック・トウ・ビルド・ア・シークレット・キー・イン・インテグレーテッド・サーキッツ・ウイズ・アイデンティフィケーション・アンド・オーセンティケーション・アプリケーションズ（A technique to build a secret key in integrated circuits with identification and authentication applications）」、アイ・イー・イー・イー・ブイ・エル・エス・アイ・サーキッツ・シンポジウム（IEEE VLSI Circuits Symposium）、２００４年６月
【非特許文献２】サンディープ・エス・クマール（Sandeep S. Kumar）、他４名、「エクステンド・アブストラクト：ザ・バタフライ・ピー・ユー・エフ・プロテクティング・アイ・ピー・オン・エブリイ・エフ・ピー・ジー・エイ（Extend Abstract: The Butterfly PUF: Protecting IP on every FPGA）」、アイ・イー・イー・イー・インターナショナル・ワークショップ・オン・ハードウェアオリエンテッド・セキュリティ・アンド・トラスト（IEEE International Workshop on Hardware-Oriented Security and Trust - HOST）、２００８年
【非特許文献３】ジー・エドワード・ソ（G. Edward. Suh）、他１名、「フィジカル・アンクローナブル・ファンクションズ・フォー・デバイス・オーセンティケーション・アンド・シークレット・キー・ジェネレーション（Physical Unclonable Functions for Device Authentication and Secret Key Generation）」、デザイン・オートメーション・カンファレンス（Design Automation Conference）、２００７年６月
【非特許文献４】ダイスケ・スズキ（Daisuke Suzuki）、他１名、「ザ・グリッチ・ピー・ユー・エフ：ア・ニュー・ディレイ・ピー・ユー・エフ・アーキテクチュア・エクスプロイティング・グリッチ・シェープス（The Glitch PUF: A New Delay-PUF Architecture Exploiting Glitch Shapes）」、クリプトグラフィック・ハードウェア・アンド・エンベデッド・システムズ・２０１０（Cryptographic Hardware and Embedded Systems - CHES 2010）、レクチャー・ノーツ・イン・コンピュータ・サイエンス（Lecture Notes in Computer Science - LNCS）、２０１０年、第６２２５巻（Volume 6225）、p. 366-382
【非特許文献５】アンドレア・ペレグリニ（Andrea Pellegrini）、他２名、「フォールト・ベースド・アタック・オブ・アールエスエイ・オーセンティケーション（Fault-Based Attack of RSA Authentication）」、デザイン・オートメーション・アンド・テスト・イン・ユーロップ・２０１０（Design, Automation and Test in Europe - DATE 2010）、２０１０年
【発明の概要】
【発明が解決しようとする課題】
【００６３】
前述したように、フォールト攻撃は、暗号化処理装置に意図的に異常を発生させることによって、装置内部に格納されている秘密情報を入手する攻撃である。ＰＵＦを用いて生成した秘密情報は、解析困難ではあるが、この秘密情報を用いて処理を行っている暗号機能に対してフォールト攻撃が行われた場合には、秘密情報が攻撃者に入手されてしまう可能性がある。そこで、暗号機能へのフォールト攻撃に対する対策が求められている。その対策のひとつに、装置の環境温度を監視して装置への温度ストレスの有無を検出するというものがある。
【００６４】
また、クローン対策としてＰＵＦが使用される製品例として前述したもののうちのひとつである電池は、発火事故を防止する安全上の観点から、温度の監視を行う場合がある。また、電池のクローン品には正規品に対して性能が劣っているものがあり、異常発熱による発火事故も懸念されており、温度監視が法律によって要求されている場合もある。
【００６５】
このように、ＰＵＦが使用される場面において、併せて温度監視が求められる場合がある。温度監視に使用される温度センサはＰＵＦとは全く異なるデバイスであるため、従来は、ＰＵＦと温度センサとは個別に実装されていた。特に、ＰＵＦは、一般的にはデジタル回路で構成されるのに対し、温度センサは一般的にはアナログ回路で構成されていた。アナログ回路はプロセスの微細化による小型化の恩恵を受けにくいと言われているため、デジタル回路であるＰＵＦがプロセスの微細化に伴って小型化されても温度センサはそれほど小型化されず、全体としての実装コストの低下は抑制されてしまう。
【００６６】
上述した問題に鑑み、本明細書で後述する温度センサは、デジタル回路を用いて周囲温度の検知を行えるようにする。
【課題を解決するための手段】
【００６７】
本明細書で後述する温度センサのひとつに、出力値生成回路と、出力値判定部と、記憶部と、温度判定部とを備えるというものがある。ここで、出力値生成回路は、入力値に対して生成される出力値が一義的には定まらずに一定の値若しくは不定の値を出力するデジタル回路である。出力値判定部は、出力値生成回路の出力値が一定であるか不定であるかを判定する。一方、記憶部には、周囲温度と出力値生成回路の出力値に関する情報との関係を表したデータが記憶されている。そして、温度判定部は、出力値判定部による判定結果と記憶部に記憶されているデータとに基づいて、周囲温度を判定する。
【００６８】
また、本明細書で後述する暗号化装置のひとつに、上述した温度センサと共に、暗号鍵生成部と、暗号化処理部と、暗号化処理制御部とを備えるというものがある。ここで、暗号鍵生成部は、出力値生成回路の出力値に基づいて暗号鍵を生成する。暗号化処理部は、暗号鍵生成部により生成された暗号鍵を用いて情報の暗号化処理を行う。そして、暗号化処理制御部は、温度センサの温度判定部により判定された周囲温度が所定範囲外である場合に、暗号化処理部を制御して暗号化処理の実行を禁止する。
【００６９】
また、本明細書で後述する個体別情報生成装置のひとつに、前述した温度センサと共に、個体別情報生成部と個体別情報生成制御部とを備えるものがある。ここで、個体別情報生成部は、出力値生成回路の出力値に基づいて個体別情報を生成する。そして、個体別情報生成制御部は、温度センサの温度判定部により判定された周囲温度が所定範囲外である場合に、個体別情報生成部により生成される個体別情報の出力を禁止する。
【発明の効果】
【００７０】
本明細書で後述する温度センサは、周囲温度の検知がデジタル回路で行えるという効果を奏する。
【図面の簡単な説明】
【００７１】
【図１】遅延型ＰＵＦを説明する図である。
【図２】１個の遅延型ＰＵＦでｍビットのレスポンスを得る手法を説明する図である。
【図３】アービタＰＵＦの構成例である。
【図４Ａ】グリッチを説明する図（その１）である。
【図４Ｂ】グリッチを説明する図（その２）である。
【図５】グリッチＰＵＦの構成例である。
【図６】リングオシレータＰＵＦの構成例である。
【図７Ａ】ＲＳラッチ回路の構成例である。
【図７Ｂ】図７ＡのＲＳラッチ回路の真理値表である。
【図８】バタフライ型ＰＵＦの構成例である。
【図９】背景技術の個体別情報生成装置である。
【図１０】暗号化装置の一実施例の機能ブロック図である。
【図１１】個体別情報生成装置の一実施例の機能ブロック図である。
【図１２】個体別情報生成装置を備えた暗号化装置の構成例である。
【図１３】個体別情報生成装置の構成の第一の例である。
【図１４】ＩＤ判定回路の具体的構成例である。
【図１５】周囲温度と乱数を出力するＰＵＦの個数との関係を、実験により半導体チップ毎に求めたグラフの例である。
【図１６】テンプレート情報の第一の例である。
【図１７】個体別情報生成装置の構成の第二の例である。
【図１８】個体別情報生成装置の構成の第三の例である。
【図１９】個体別情報生成装置の構成の第四の例である。
【図２０】テンプレート情報の第二の例である。
【図２１】暗号化処理システムの一実施例の構成図である。
【発明を実施するための形態】
【００７２】
まず図１０について説明する。図１０は、暗号化装置の一実施例の機能ブロック図である。
図１０において、暗号化装置１１０は温度センサ１００を備えている。この温度センサ１００は、出力値生成回路１０１、出力値判定部１０２、記憶部１０３、及び温度判定部１０４を備えている。
【００７３】
出力値生成回路１０１は、入力値に対して生成される出力値が一義的には定まらずに一定の値若しくは不定の値を出力するデジタル回路であり、より具体的には、例えば、前述した各種のＰＵＦである。
【００７４】
出力値判定部１０２は、出力値生成回路１０１の出力値が一定であるか不定であるかを判定する。
記憶部１０３には、周囲温度と出力値生成回路１０１の出力値に関する情報との関係を表したデータが記憶されている。
【００７５】
温度判定部１０４は、出力値判定部１０２による判定結果と記憶部に記憶されているデータとに基づいて、周囲温度を判定する。
この温度センサ１００は、出力値生成回路１０１として、例えば前述したメタスタビリティ型ＰＵＦを複数個備えるようにしてもよい。このように構成されている場合には、記憶部１０３には、周囲温度と、この複数個のメタスタビリティ型ＰＵＦのうちで出力値が不定であるものの個数との関係を表したデータが記憶されている。このように構成されている場合には、温度判定部１０４は、この複数個のメタスタビリティ型ＰＵＦのうちで出力値が不定であると出力値判定部１０２が判定したものの個数と、記憶部１０３に記憶されているデータとに基づいて、周囲温度を判定する。
【００７６】
詳細は後述するが、乱数を出力する（すなわち、出力値が不定である）ＰＵＦの個数は、周囲温度に対して単調に変化する。そこで、上述したようにすることで、デジタル回路であるメタスタビリティ型ＰＵＦを用いて周囲温度の検知を行うことができるようになる。
【００７７】
また、この温度センサ１００は、出力値生成回路１０１として、例えば遅延型ＰＵＦを備えるようにしてもよい。このように構成されている場合には、記憶部１０３には、周囲温度とこの遅延型ＰＵＦの出力値が一定の値であるか不定の値であるかを表している情報との関係が、当該遅延型ＰＵＦへの入力値毎に記憶されている。このように構成されている場合には、温度判定部１０４は、この遅延型ＰＵＦの出力値が不定であると出力値判定部１０２が判定したときに当該遅延型ＰＵＦに入力されていた入力値と、記憶部１０３に記憶されているデータとに基づいて、周囲温度を判定する。より具体的には、温度判定部１０４は、例えば次のようにして周囲温度の判定を行う。
【００７８】
すなわち、温度判定部１０４は、遅延型ＰＵＦへの入力として定義されている複数個の入力値に対する、当該遅延型ＰＵＦの出力値を不定にすると出力値判定部１０２により判定された入力値の個数の割合を求める。また、温度判定部１０４は、記憶部１０３に記憶されているデータから、当該遅延型ＰＵＦへの入力として定義されている複数個の入力値に対する、当該遅延型ＰＵＦの出力値を不定とする入力値の個数の割合を、周囲温度毎に算出する。温度判定部１０４は、記憶部１０３の記録データから算出された周囲温度毎の割合から、出力値判定部１０２による判定に基づいて求められた前述の割合に近いものを特定し、特定された割合に対応する周囲温度を、その判定結果とする。このようにすることで、デジタル回路である遅延型ＰＵＦを用いて周囲温度の検知を行うことができる。
【００７９】
このように、上記の構成を有する温度センサ１００によれば、デジタル回路である出力値生成回路１０１を用いて周囲温度を検知することができる。
暗号化装置１１０は、以上のように構成されている温度センサ１００と共に、暗号鍵生成部１１１、暗号化処理部１１２、及び暗号化処理制御部１１３を備えている。
【００８０】
暗号鍵生成部１１１は、出力値生成回路１０１の出力値に基づいて暗号鍵を生成する。
暗号化処理部１１２は、暗号鍵生成部１１１により生成された暗号鍵を用いて情報の暗号化処理を行う。
【００８１】
暗号化処理制御部１１３は、温度判定部１０４により判定された周囲温度が所定範囲外である場合に、暗号化処理部１１２を制御して暗号化処理の実行を禁止する。
このような構成を備えている暗号化装置１１０は、周囲温度を所定範囲外とするような温度ストレスを検知して暗号化処理の実行を禁止することで、温度ストレスによる前述のフォールト攻撃を防護することができる。
【００８２】
なお、暗号鍵生成部１１１は、温度判定部１０４により判定された周囲温度が所定範囲外である場合には、暗号鍵の出力を禁止するようにしてもよい。このようにすることで、フォールト攻撃に対する防護が更に強化される。
【００８３】
また、図１０において破線により表したように、暗号化装置１１０が、更に、通信ネットワークを介して不図示のサーバ装置とデータの授受を行う通信部１１４を備えるように構成してもよい。なお、このように構成する場合には、温度センサ１００の記憶部１０３は、当該サーバ装置に配置するようにする。このようにして、暗号化装置１１０を構成する他の構成要素とは物理的に離れている別の場所に記憶部１０３を配置するように構成することで、顕微鏡等での記憶部１０３の観察による解析に基づいた暗号解読の可能性を低減することができる。
【００８４】
なお、出力値生成回路１０１は、記憶部１０３に記憶されているデータを通信部１１４が受け取らない場合には、出力値の生成動作を停止させるようにしてもよい。このようにすることで、暗号解読のための攻撃に対する防護が更に強化される。
【００８５】
次に図１１について説明する。図１１は、個体別情報生成装置の一実施例の機能ブロック図である。
図１１において、個体別情報生成装置１２０は、電子デバイスであるデバイス６０に実装されて構成されており、デバイス６０についての個体別情報を生成する。
【００８６】
個体別情報生成装置１２０は温度センサ１００を備えている。この温度センサ１００は、図１０の暗号化装置１１０が備えているものと同様に構成されており、出力値生成回路１０１、出力値判定部１０２、記憶部１０３、及び温度判定部１０４を備えている。
【００８７】
また、個体別情報生成装置１２０は、温度センサ１００と共に、個体別情報生成部１２１及び個体別情報生成制御部１２２を備えている。
個体別情報生成部１２１は、出力値生成回路１０１の出力値に基づいて個体別情報を生成する。
【００８８】
個体別情報生成制御部１２２は、温度判定部１０４により判定された周囲温度が所定範囲外である場合に、個体別情報生成部１２１により生成される個体別情報の出力を禁止する。
【００８９】
このような構成を備えている個体別情報生成装置１２０は、周囲温度を所定範囲外とするような温度ストレスを検知して個体別情報の出力を禁止する。従って、この個体別情報を暗号鍵として用いて情報の暗号化処理を行う暗号化装置が個体別情報生成装置１２０に設けられていても、この暗号化装置に対する温度ストレスによる前述のフォールト攻撃を防護することができる。
【００９０】
次に、暗号化装置１１０及び個体別情報生成装置１２０の具体的な構成について説明する。
まず図１２について説明する。図１２は、個体別情報生成装置１２０を備えた暗号化装置１１０の構成例を図解したものである。
【００９１】
暗号化装置１１０は、個体別情報生成装置１２０、ＣＰＵ２１０、暗号演算器２２０、ＲＯＭ２３０、ＲＡＭ２４０、及び通信インタフェース部２５０を備えて構成されている。なお、これらの各構成要素はバスライン２６０にいずれも接続されており、ＣＰＵ２１０による管理の下で各種のデータを相互に授受することができるように構成されている。
【００９２】
個体別情報生成装置１２０は、半導体集積回路であるチップ２００に実装されており、このチップ２００についての個体別情報を生成する。この個体別情報生成装置１２０の具体的な構成については後述する。
【００９３】
ＣＰＵ（Central Processing Unit ）２１０は、暗号化装置１１０の各構成要素の動作を管理する中央演算部であり、図１０における暗号化処理制御部１１３の機能の提供も行う。
【００９４】
暗号演算器２２０は、各種の情報の暗号化処理や、暗号化されているデータの復号処理を行うものであり、図１０における暗号化処理部１１２の一例である。なお、本実施形態では、暗号演算器２２０は、公開鍵コプロセッサ２２１と共通鍵コプロセッサ２２２とを備えている。ここで、公開鍵コプロセッサ２２１は、代表的な公開鍵暗号方式であるＲＳＡ暗号や楕円曲線暗号等を用いて暗号化及び復号の処理を行う。また、共通鍵コプロセッサ２２２は、代表的な共通鍵暗号方式であるＡＥＳ暗号等を用いて暗号化及び復号の処理を行う。なお、暗号演算器２２０を暗号化装置１１０に備える代わりに、暗号演算器２２０により行われる暗号化及び復号の処理を、ＣＰＵ２１０に行わせるように構成してもよい。
【００９５】
ＲＯＭ（Read Only Memory）２３０には、ＣＰＵ２１０により実行される制御プログラムや、暗号演算器２２０が暗号化や復号の処理において使用する固有のパラメータが予め格納されている不揮発性半導体メモリである。ＣＰＵ２１０は、暗号化装置１１０への電力供給が開始されたときに、この制御プログラムをＲＯＭ２３０から読み出してその実行を開始することで、暗号化装置１１０の各構成要素の動作管理を行えるようになる。
【００９６】
ＲＡＭ（Random Access Memory）２４０は、ＣＰＵ２１０や暗号演算器２２０が各種の処理を行う際に、必要に応じて作業用記憶領域として使用する揮発性半導体メモリである。
【００９７】
通信インタフェース部２５０は、サーバ装置３００と通信ネットワーク３１０を介してデータの授受を行うものであり、図１０における通信部１１４の一例である。つまり、通信インタフェース部２５０は、前述した温度センサ１００の記憶部１０３がサーバ装置３００に配置される場合に使用するものである。従って、記憶部１０３がチップ２００上に配置される場合には、通信インタフェース部２５０は不要である。
【００９８】
この暗号化装置１１０において、暗号演算器２２０は、個体別情報生成装置１２０が出力値生成回路１０１の出力値に基づいて生成した個体別情報を暗号鍵として用いて、情報の暗号化処理を行う。なお、この暗号化処理において暗号鍵として用いられた個体別情報は、この暗号化情報に対して行う復号処理にも使用される。
【００９９】
なお、個体別情報生成装置１２０で生成される個体別情報を暗号鍵の生成に用いる際に、生成された個体別情報のエントロピを更に向上させるための後処理（Post Processing ）を行ってもよい。このために行われる後処理の一例として、線形フィードバックシフトレジスタ（ＬＦＳＲ）の使用を挙げることができる。ＬＦＳＲは、排他的論理和回路で帰還をかけたシフトレジスタによって構成されるカウンタであり、個体別情報のエントロピを向上させることができる。従って、ＬＦＳＲから出力されるデータ列を用いて暗号鍵の生成を行うようにすることで、よりランダム性の高い暗号鍵を生成することが可能になる。なお、ＬＦＳＲは、専用のハードウェアを構成して用いるようにしてもよく、また、ＣＰＵ２１０を用いてソフトウェアにより実現するようにしてもよい。
【０１００】
次に図１３について説明する。図１３は、個体別情報生成装置１２０の構成の第一の例を図解したものであり、前述したメタスタビリティ型ＰＵＦの一例であるバタフライ型ＰＵＦを用いて個体別情報の生成を行うものである。
【０１０１】
図１３の個体別情報生成装置１２０は、バタフライ型ＰＵＦ部４１０、オシレータ４０１、セレクタ４０２、ＰＵＦ出力部４２０、及び温度検出部４３０を備えている。
バタフライ型ＰＵＦ部４１０は、図１０及び図１１における出力値生成回路１０１の一例であり、バタフライ型ＰＵＦを含むラッチ４１１を複数個備えている。なお、ここでは、個体別情報生成装置１２０に与えられたチャレンジによって、１２８個のラッチ４１１が選択されたものとする。
【０１０２】
オシレータ４０１は、ラッチ４１１に与えるクロック信号を生成する。生成されたクロック信号は、ラッチ４１１内のバタフライ型ＰＵＦへの入力信号（図８における入力Ａに相当する信号）となる。
【０１０３】
セレクタ４０２は、チャレンジによって選択された１２８個のラッチ４１１の出力からサイクリックに１つずつ出力を選択してＰＵＦ出力部４２０へ入力する。
次にＰＵＦ出力部４２０について説明する。ＰＵＦ出力部４２０は、図１１における個体別情報生成部１２１の一例であり、バタフライ型ＰＵＦ部４１０の出力値に基づいて個体別情報を生成する。なお、前述したように、図１２の暗号化装置１１０においては、ＰＵＦ出力部４２０が生成した個体別情報を暗号鍵として用いるので、このＰＵＦ出力部４２０は、図１０における暗号鍵生成部１１１の一例ともいえる。
【０１０４】
ＰＵＦ出力部４２０は、ＩＤ判定回路４２１、シフトレジスタ４２２、及びエントロピ圧縮部４２３を備えている。
ＩＤ判定回路４２１は、セレクタ４０２によって選択されたラッチ４１１の出力に基づいて所定の数値を出力する回路である。図９の個体別情報生成装置５０では、符号誤り訂正回路を用いて出力の再現性を確保することを説明したが、本実施例では、このＩＤ判定回路４２１を用いることで、ラッチ４１１の出力が乱数であっても、個体別情報生成装置１２０の出力の再現性が確保される。
【０１０５】
本実施例では、ＩＤ判定回路４２１に入力されるラッチ４１１の出力値が一定の値（固定値）「０」である場合には、ＩＤ判定回路４２１は数値「００」を出力するようにする。また、ＩＤ判定回路４２１に入力されるラッチ４１１の出力値が固定値「１」である場合には、ＩＤ判定回路４２１は数値「１１」を出力するようにする。
【０１０６】
更に、ＩＤ判定回路４２１に入力されるラッチ４１１の出力値が「０」と「１」との両方の値をとる不定値である場合（すなわち、ラッチ４１１の出力値が乱数である場合）には、ＩＤ判定回路４２１は数値「１０」若しくは「０１」を出力するようにする。但し、ここで、ラッチ４１１の出力値が「１」である頻度が「０」である頻度よりも高い場合（すなわち、出力値が「１」である頻度が５０パーセントよりも高い場合）には、ＩＤ判定回路４２１は数値「１０」を出力するようにする。また、ラッチ４１１の出力値が「１」である頻度が「０」である頻度よりも低い場合（すなわち、出力値が「０」である頻度が５０パーセントよりも高い場合）には、ＩＤ判定回路４２１は数値「０１」を出力するようにする。
【０１０７】
電源電圧及び周囲温度が一定の条件の下では、ラッチ４１１の出力値が乱数である場合に、そのラッチ４１１が出力する各値の出力頻度は、個々のラッチ４１１においてほぼ一定であり、再現性を有している。従って、このようにして、ラッチ４１１の出力値が「１」である頻度に応じて、ＩＤ判定回路４２１が、数値「１０」若しくは「０１」を出力するようにすることで、前述したような符号誤り訂正回路による個体別情報の再現性の確保が必須のものではなくなる。
【０１０８】
ここで図１４について説明する。図１４は、ＩＤ判定回路４２１の具体的構成例を図解したものである。
図１４のＩＤ判定回路４２１は、セレクタ４０２によって選択されたラッチ４１１からの連続する１０２３ビット分の出力値が全て「０」である場合には「００」を出力し、当該連続する１０２３ビット分の出力値が全て「１」である場合には「１１」を出力する。また、このＩＤ判定回路４２１は、当該１０２３ビット分の出力値のうち、値が「０」である個数が５１２個以上である場合（すなわち、出力値の５０パーセント以上が「０」の場合）には、「０１」を出力する。更に、このＩＤ判定回路４２１は、当該１０２３ビット分の出力値のうち、値が「１」である個数が５１２個以上である場合（すなわち、出力値の５０パーセント以上が「１」の場合）には、「１０」を出力する。
【０１０９】
このＩＤ判定回路４２１は、ビット数変換器５０１、加算器５０２、レジスタ５０３、リダクション演算回路５０４及び５０６、ＡＮＤ（論理積）回路５０５及び５０８、ＮＯＴ（否定）回路５０７、及びＯＲ（論理和）回路５０９を備えて構成されている。
【０１１０】
ビット数変換器５０１は、ラッチ４１１から出力される１ビットの出力値を１０ビットのデータに変換する変換器であり、当該１ビットの出力値を最下位ビットの値とし、当該最下位ビットに上位９ビット分の「０」を付加して得られるデータを出力する。
【０１１１】
加算器５０２は、ビット数変換器５０１から出力される１０ビットのデータを、レジスタ５０３に格納されている１０ビットのデータに加算し、その加算結果を出力する。
レジスタ５０３は、加算器５０２から出力される１０ビットの加算結果が格納される。従って、ビット数変換器５０１、加算器５０２、及びレジスタ５０３により、出力値生成回路１０１から出力される出力値が「１」であった個数を計数するカウンタ回路が構成されている。この個数が５１２個以上１０２３個以下の場合には、レジスタ５０３に格納される１０ビットのデータのうちの最上位のビットの値が「１」となり、この個数が０個以上５１１個以下の場合には、当該最上位のビットの値が「０」となる。この最上位のビットの値が、ＩＤ判定回路４２１からの２ビットの出力のうちの上位ビットの出力（ＩＤ［１］）として導き出されると共に、ＡＮＤ回路５０５及び５０８各々への入力の１つとされる。
【０１１２】
なお、レジスタ５０３は、セレクタ４０２によって選択されたラッチ４１１から１０２３ビット分の値の出力を受け取る度に、格納されている全てのビットの値が「０」にリセットされる。また、このリセットの度に、セレクタ４０２には選択信号が送られて、ラッチ４１１の出力の選択が次のものに切り替えられる。
【０１１３】
リダクション演算回路５０４及び５０６は、どちらも、レジスタ５０３に格納されている１０ビットのデータに対するリダクション演算を行う回路である。但し、リダクション演算回路５０４は、当該１０ビットのデータに対して論理積のリダクション演算を行うのに対し、リダクション演算回路５０６は、当該１０ビットのデータに対して論理和のリダクション演算を行う。従って、リダクション演算回路５０４は、当該１０ビットのデータの全ての値が「１」である場合にのみ値「１」を出力し、当該１０ビットのデータのうちで少なくとも１ビットの値が「０」である場合には値「０」を出力する。一方、リダクション演算回路５０６は、当該１０ビットのデータのうちで少なくとも１ビットの値が「１」である場合には値「１」を出力し、当該１０ビットのデータの全ての値が「０」である場合にのみ値「０」を出力する。
【０１１４】
ＡＮＤ回路５０５には、リダクション演算回路５０４の出力と、レジスタ５０３に格納されている１０ビットのデータのうちの前述した最上位のビットの値とが入力される。従って、ＡＮＤ回路５０５は、選択されたラッチ４１１から出力される出力値が「１」であった個数が１０２３個の場合にのみ（すなわち、当該出力値が全て「１」であった場合にのみ）値「１」を出力し、その他の場合には値「０」を出力する。
【０１１５】
一方、ＡＮＤ回路５０８には、リダクション演算回路５０６の出力と、レジスタ５０３に格納されている１０ビットのデータのうちの前述した最上位のビットの値をＮＯＴ回路５０７によって反転した値とが入力される。従って、ＡＮＤ回路５０８は、選択されたラッチ４１１から出力される出力値が「１」であった個数が１個以上５１１個以下の場合には値「１」を出力する。そして、その他の場合、すなわち、選択されたラッチ４１１から出力される出力値が「１」であった個数が０個、若しくは、５１２個以上１０２３個以下の場合には、ＡＮＤ回路５０８は値「０」を出力する。
【０１１６】
ＯＲ回路５０９には、ＡＮＤ回路５０５及び５０８各々の出力が入力される。従って、ＯＲ回路５０９は、ＡＮＤ回路５０５及び５０８の出力のうちの少なくとも一方の値が「１」のとき、すなわち、選択されたラッチ４１１の出力値が「１」であった個数が１個以上５１１個以下の場合若しくは１０２３個の場合に、値「１」を出力する。一方、この他の場合、すなわち、選択されたラッチ４１１の出力値が「１」であった個数が０個の場合若しくは５１２個以上１０２２個以下の場合に、ＯＲ回路５０９は値「０」を出力する。このＯＲ回路５０９の出力が、ＩＤ判定回路４２１からの２ビットの出力のうちの下位ビットの出力（ＩＤ［０］）として導き出される。
【０１１７】
以上の動作をまとめると、選択されたラッチ４１１からの１０２３ビット分の出力値のうちで値が「１」の個数が０個である場合（すなわち、当該出力値が全て「０」であった場合）には、ＩＤ判定回路４２１の出力は、上位ビット・下位ビット共に「０」となる。また、この１０２３ビット分の出力値のうちで値が「１」の個数が１０２３個である場合（すなわち、当該出力値が全て「１」であった場合）には、ＩＤ判定回路４２１の出力は、上位ビット・下位ビット共に「１」となる。更に、この１０２３ビット分の出力値のうちで値が「１」の個数が１個以上５１１個以下である場合（すなわち、当該出力値の５０パーセント以上が「０」の場合）には、ＩＤ判定回路４２１の出力は、上位ビットが「０」となり、下位ビットが「１」となる。そして、この１０２３ビット分の出力値のうちで値が「１」の個数が５１２個以上１０２２個以下である場合（すなわち、出力値の５０パーセント以上が「１」の場合）には、ＩＤ判定回路４２１の出力は、上位ビットが「１」となり、下位ビットが「０」となる。
【０１１８】
なお、ＩＤ判定回路４２１を図１４の構成例のようなハードウェアのみで構成する代わりに、ＩＤ判定回路４２１の機能を演算処理装置で実現させるプログラム（ソフトウェア）を作成し、当該プログラムを当該演算処理装置で実行させるようにして構成してもよい。
【０１１９】
図１３の説明に戻る。
シフトレジスタ４２２には、バタフライ型ＰＵＦ部４１０の１２８個のラッチ４１１の出力のうちの１つが順にセレクタ４０２により選択されてＩＤ判定回路４２１に入力されたときにＩＤ判定回路４２１から出力される２ビットの数値が順次格納される。
【０１２０】
エントロピ圧縮部４２３は、シフトレジスタ４２２に並べられた２５６（１２８×２）ビットのビット列に対してエントロピ圧縮を行い、得られた値を、個体別情報（レスポンス）の生成結果として出力する。
【０１２１】
シフトレジスタ４２２に格納された値をそのままレスポンスとして使用すると、１２８個のラッチ４１１のセレクタ４０２による選択順序と、シフトレジスタ４２２に格納されているビット列の並び順とが１対１対応してしまう。従って、この対応関係を推測されてしまうと、チャレンジ（ラッチ４１１の選択）に対するレスポンスの値が推測できてしまう可能性がある。エントロピ圧縮部４２３は、この推測を困難なものとするためのものである。
【０１２２】
エントロピ圧縮部４２３としては、例えば一方向性関数回路を使用する。一方向性関数回路は、入力が一意であれば、出力が一意に定まるが、出力から入力を求めることは非常に困難な関数である。なお、本実施例では、エントロピ圧縮部４２３として、入力されたビット列に対するハッシュ関数値を得る回路を用いる。より具体的には、この回路として、米国連邦情報処理基準（Federal Information Processing Standard/FIPS）に採用されているハッシュ関数であるＳＨＡ−２５６によるハッシュ関数値を得る回路を用いる。このエントロピ圧縮部４２３を用いることで、レスポンスからチャレンジを推測することが極めて困難なものとなり、安全性が向上する。
図１３の個体別情報生成装置１２０では、以上のようにして個体別情報が生成される。
【０１２３】
次に温度検出部４３０について説明する。温度検出部４３０は、温度判定シーケンサ４３１と不揮発性メモリ４３２とを備えている。
温度判定シーケンサ４３１は、シフトレジスタ４２２に格納されている値と、不揮発性メモリ４３２に記憶されているデータとに基づいて、この個体別情報生成装置１２０が実装されているチップ２００の周囲温度を判定する。ここで、この周囲温度の判定結果が所定の温度範囲外である場合には、暗号化処理停止信号を出力する。この暗号化処理停止信号がＣＰＵ２１０により受信されると、ＣＰＵ２１０は、暗号演算器２２０を制御して、暗号演算器２２０による暗号化処理の実行を禁止する。また、この暗号化処理停止信号はエントロピ圧縮部４２３にも送られ、エントロピ圧縮部４２３は、暗号化処理停止信号を受信した場合には、個体別情報の出力を中止する。
【０１２４】
不揮発性メモリ４３２は、後述するテンプレート情報を記憶しておくものである。なお、テンプレート情報の漏出によって個体別情報生成装置１２０が生成する個体別情報が推定されることの防止のために、不揮発性メモリ４３２は耐タンパ性を有しているものを用いることが好ましい。
【０１２５】
ここで、温度検出部４３０による周囲温度の判定の手法について説明する。
まず図１５について説明する。図１５は、所定数個のＰＵＦを形成した半導体チップについての、周囲温度と乱数を出力するＰＵＦの個数との関係を、実験によりチップ毎に求めたグラフの一例である。なお、ここでは、ＰＵＦとして、バタフライ型ＰＵＦを使用した。
【０１２６】
この図１５より、電源電圧を一定とした場合には、乱数を出力するＰＵＦの個数は、周囲温度に対してチップ毎にほぼ一定の傾きで単調に増加することが分かった。つまり、周囲温度が高くなると乱数を出力するＰＵＦの個数が増加し、周囲温度が低くなると乱数を出力するＰＵＦの個数が減少する。また、ＰＵＦを実装した半導体チップの個体毎に、グラフの直線の傾き及び切片が異なっていることも図１５から分かった。つまり、チップによっては、周囲温度を低くしても多数のＰＵＦが乱数を出力するものや、周囲温度の変化に対して乱数を出力するＰＵＦの個数の変化の少ないものがある。これらは、十数個の実チップ（ＦＰＧＡ）を用いて行った実験により確かめられたものである。
【０１２７】
温度判定シーケンサ４３１は、乱数を出力するＰＵＦの個数が周囲温度に応じて単調増加するという上述の実験結果を利用して、以下に説明するようにして、チップ２００の周囲温度を推定する。
【０１２８】
まず、図１５で図解したような、チップ２００の周囲温度と乱数を出力するラッチ４１１の個数との関係をチップ２００毎に予め実測し、この関係を表しているテンプレート情報を生成して不揮発性メモリ４３２に記憶させておく。図１６のテーブルは、このテンプレート情報の第一の例であり、図１５のグラフで表した、チップＡ及びチップＢについてのものである。
【０１２９】
周囲温度の検出時には、温度判定シーケンサ４３１は、まず、乱数を出力しているラッチ４１１の個数の計数を行う。そして、不揮発性メモリ４３２に記憶されている上述のテンプレート情報を参照してこの計数値に対応付けられている周囲温度を読み出し、読み出された周囲温度を、チップ２００の周囲温度の判定結果とする。なお、温度判定シーケンサ４３１は、シフトレジスタ４２２に格納されている１２８個×２ビットの数値列に含まれている数値「１０」若しくは「０１」の個数を計数することによって、乱数を出力しているラッチ４１１の個数の計数を行う。
【０１３０】
このようにして、ＰＵＦを用いて温度の検出を行うようにすることで、オンチップ実装が可能となる。この結果、従来のアナログ温度センサを使用した場合のように、物理的に切断されてフォールト攻撃検知が無効化される危険性が低減するので、安全性が向上する。
【０１３１】
次に図１７について説明する。図１７は、個体別情報生成装置１２０の構成の第二の例を図解したものであり、前述したメタスタビリティ型ＰＵＦの一例であるバタフライ型ＰＵＦを用いて個体別情報の生成を行うものである。
【０１３２】
図１７に図解した第二の例は、図１３に示した第一の例とは、不揮発性メモリ４３２を備えていない点が相違している。ここでは、この相違点に関して説明する。
図１７の個体別情報生成装置１２０では、前述のテンプレート情報が、サーバ装置３００の有している不図示の記憶装置に記憶されている。温度判定シーケンサ４３１は、テンプレート情報を参照する場合には、通信インタフェース部２５０及び通信ネットワーク３１０を介してサーバ装置３００に問い合わせを行って、テンプレート情報を取得する。
【０１３３】
個体別情報生成装置１２０を図１７のように構成することで、テンプレート情報の個体別情報生成装置１２０からの漏出が防止され、また、不揮発性メモリ４３２が不要となるので、個体別情報生成装置１２０の小型化が可能になる。
【０１３４】
なお、温度判定シーケンサ４３１は、サーバ装置３００からテンプレート情報を取得することができなかった場合には、例えばオシレータ４０１の動作を停止させて、バタフライ型ＰＵＦ部４１０の各ラッチ４１１の動作を停止させるようにしてもよい。
【０１３５】
次に図１８について説明する。図１８は、個体別情報生成装置１２０の構成の第三の例を図解したものであり、前述したメタスタビリティ型ＰＵＦの一例であるＳＲＡＭ−ＰＵＦを用いて個体別情報の生成を行うものである。
【０１３６】
図１８の個体別情報生成装置１２０は、ＳＲＡＭ−ＰＵＦ部４４０、セレクタ４０２、ＰＵＦ出力部４２０、及び温度検出部４３０を備えている。つまり、この第三の例は、図１３に示した第一の例とは、バタフライ型ＰＵＦ部４１０と、バタフライ型ＰＵＦ部４１０のラッチ４１１に与えるクロック信号を生成するオシレータ４０１との代わりに、ＳＲＡＭ−ＰＵＦ部４４０を備えている点が相違している。
【０１３７】
ＳＲＡＭ−ＰＵＦ部４４０は、前述したように、メタスタビリティ型ＰＵＦの一例であり、ＳＲＡＭへの電力供給を開始した直後のメモリセルの初期値のばらつきを利用したＰＵＦである。ここでは、個体別情報生成装置１２０に与えられたチャレンジによって、ＳＲＡＭ−ＰＵＦ部４４０が備えている多数のＳＲＡＭメモリセル４４１のうちから１２８個が選択されたものとする。
【０１３８】
セレクタ４０２は、チャレンジによって選択された１２８個のＳＲＡＭメモリセル４４１の出力からサイクリックに１つずつ出力を選択してＰＵＦ出力部４２０へ入力する。
ＰＵＦ出力部４２０及び温度検出部４３０は、図１３の第一の例が備えているものと同様のものである。
【０１３９】
図１８の個体別情報生成装置１２０では、ＳＲＡＭ−ＰＵＦ部４４０への電力の供給及び停止が繰り返されることで、電力供給時の初期値がＳＲＡＭメモリセル４４１から順次得られる。ＩＤ判定回路４２１は、セレクタ４０２によって選択されたＳＲＡＭメモリセル４４１からの連続する１０２３ビット分の初期値が全て「０」である場合には「００」を出力し、当該連続する１０２３ビット分の初期値が全て「１」である場合には「１１」を出力する。また、このＩＤ判定回路４２１は、当該１０２３ビット分の初期値のうち、値が「０」である個数が５１２個以上である場合（すなわち、出力値の５０パーセント以上が「０」の場合）には、「０１」を出力する。更に、このＩＤ判定回路４２１は、当該１０２３ビット分の初期値のうち、値が「１」である個数が５１２個以上である場合（すなわち、出力値の５０パーセント以上が「１」の場合）には、「１０」を出力する。
【０１４０】
シフトレジスタ４２２には、ＳＲＡＭ−ＰＵＦ部４４０の１２８個のＳＲＡＭメモリセル４４１の出力のうちの１つが順にセレクタ４０２により選択されてＩＤ判定回路４２１に入力されたときにＩＤ判定回路４２１から出力される２ビットの数値が順次格納される。
【０１４１】
エントロピ圧縮部４２３は、シフトレジスタ４２２に並べられた２５６（１２８×２）ビットのビット列に対してエントロピ圧縮を行い、得られた値を、個体別情報（レスポンス）の生成結果として出力する。
【０１４２】
温度判定シーケンサ４３１は、シフトレジスタ４２２に格納されている値と、不揮発性メモリ４３２に記憶されているデータとに基づいて、この個体別情報生成装置１２０が実装されているチップ２００の周囲温度を判定する。ここで、この周囲温度の判定結果が所定の温度範囲外である場合には、暗号化処理停止信号を出力する。この暗号化処理停止信号がＣＰＵ２１０により受信されると、ＣＰＵ２１０は、暗号演算器２２０を制御して、暗号演算器２２０による暗号化処理の実行を禁止する。また、この暗号化処理停止信号はエントロピ圧縮部４２３にも送られ、エントロピ圧縮部４２３は、暗号化処理停止信号を受信した場合には、個体別情報の出力を中止する。
【０１４３】
この温度判定シーケンサ４３１による周囲温度の判定の手法も、図１３の第一の例のものと同様である。すなわち、チップ２００の周囲温度と乱数を出力するＳＲＡＭメモリセル４４１の個数との関係をチップ２００毎に予め実測し、この関係を表しているテンプレート情報を生成して不揮発性メモリ４３２に記憶させておく。温度判定シーケンサ４３１は、周囲温度の検出時には、まず、乱数を出力しているＳＲＡＭメモリセル４４１の個数の計数を行う。そして、不揮発性メモリ４３２に記憶されている上述のテンプレート情報を参照してこの計数値に対応付けられている周囲温度を読み出し、読み出された周囲温度を、チップ２００の周囲温度の判定結果とする。
【０１４４】
なお、図１８に図解した個体別情報生成装置１２０の構成を変形して、図１７に図解した第二の例のように構成してもよい。すなわち、チップ２００の周囲温度と乱数を出力するＳＲＡＭメモリセル４４１の個数との関係を表しているテンプレート情報を、サーバ装置３００の有している記憶装置に記憶させておくようにしてもよい。このように構成する場合には、温度判定シーケンサ４３１は、テンプレート情報を参照するときは、第二の例の場合と同様に、通信インタフェース部２５０及び通信ネットワーク３１０を介してサーバ装置３００に問い合わせを行えばよい。
【０１４５】
次に図１９について説明する。図１９は、個体別情報生成装置１２０の構成の第四の例を図解したものであり、前述した遅延型ＰＵＦを用いて個体別情報の生成を行うものである。
【０１４６】
図１９の個体別情報生成装置１２０は、遅延型ＰＵＦ部４５０、ＰＵＦ出力部４２０、及び温度検出部４３０を備えている。つまり、この第四の例は、バタフライ型ＰＵＦ部４１０、ラッチ４１１に与えるクロック信号を生成するオシレータ４０１、及びラッチ４１１の出力を選択するセレクタ４０２の代わりに、遅延型ＰＵＦ部４５０を備えている点が、図１３の第一の例と相違している。
【０１４７】
遅延型ＰＵＦ部４５０は遅延型ＰＵＦ４５１を備えている。遅延型ＰＵＦ４５１としては、例えば、前述したアービタＰＵＦ、グリッチＰＵＦ、及びリングオシレータＰＵＦのいずれでもよい。
ＰＵＦ出力部４２０は、図１３の第一の例が備えているものと同様のものである。
【０１４８】
図１９の個体別情報生成装置１２０では、遅延型ＰＵＦ４５１へ与えるチャレンジの内容を予め１２８通り遅延型ＰＵＦ部４５０に用意しておく。遅延型ＰＵＦ部４５０は、ＩＤ判定回路４２１から出力される前述した選択信号を受け取る度に、遅延型ＰＵＦ４５１に与えられるチャレンジの選択がサイクリックに順次切り替えられる。
【０１４９】
また、図１９の個体別情報生成装置１２０では、チャレンジが１つ選択される毎に、そのチャレンジが１０２３回繰り返して遅延型ＰＵＦ４５１に与えられることで、連続する１０２３ビット分の出力値が遅延型ＰＵＦ４５１から出力される。ＩＤ判定回路４２１は、この遅延型ＰＵＦ４５１からの連続する１０２３ビット分の出力値が全て「０」である場合には「００」を出力し、当該連続する１０２３ビット分の出力値が全て「１」である場合には「１１」を出力する。また、このＩＤ判定回路４２１は、当該１０２３ビット分の出力値のうち、値が「０」である個数が５１２個以上である場合（すなわち、出力値の５０パーセント以上が「０」の場合）には、「０１」を出力する。更に、このＩＤ判定回路４２１は、当該１０２３ビット分の出力値のうち、値が「１」である個数が５１２個以上である場合（すなわち、出力値の５０パーセント以上が「１」の場合）には、「１０」を出力する。
【０１５０】
シフトレジスタ４２２には、前述した１２８通りのチャレンジのうちの１つが１０２３回繰り返し遅延型ＰＵＦ４５１に与えられたときにＩＤ判定回路４２１から出力される２ビットの数値が順次格納される。
【０１５１】
エントロピ圧縮部４２３は、シフトレジスタ４２２に並べられた２５６（１２８×２）ビットのビット列に対してエントロピ圧縮を行い、得られた値を、個体別情報（レスポンス）の生成結果として出力する。
【０１５２】
図１９における温度検出部４３０は、温度判定シーケンサ４３１及び不揮発性メモリ４３２を備えている点では、図１３の第一の例におけるものと同様であるが、温度判定シーケンサ４３１の動作及び不揮発性メモリ４３２の記憶内容が異なっている。
【０１５３】
温度判定シーケンサ４３１は、シフトレジスタ４２２に格納されている値と、不揮発性メモリ４３２に記憶されているデータとに基づいて、この個体別情報生成装置１２０が実装されているチップ２００の周囲温度を判定する。ここで、この周囲温度の判定結果が所定の温度範囲外である場合には、暗号化処理停止信号を出力する。この暗号化処理停止信号がＣＰＵ２１０により受信されると、ＣＰＵ２１０は、暗号演算器２２０を制御して、暗号演算器２２０による暗号化処理の実行を禁止する。また、この暗号化処理停止信号はエントロピ圧縮部４２３にも送られ、エントロピ圧縮部４２３は、暗号化処理停止信号を受信した場合には、個体別情報の出力を中止する。
【０１５４】
次に、図１９の温度判定シーケンサ４３１による周囲温度の判定の手法について説明する。
まず図２０について説明する。図２０は、テンプレート情報の第二の例を表したものであり、図１９の温度検出部４３０における不揮発性メモリ４３２に記憶されるものである。
【０１５５】
図２０のテーブルの各列の項目を説明する。
「チャレンジ番号」は、遅延型ＰＵＦ部４５０に用意されている、遅延型ＰＵＦ４５１へ与える１２８通りのチャレンジを識別する番号であり、「入力」は、「チャレンジ番号」で特定されるチャレンジの内容である。
【０１５６】
「出力（１回目）」、「出力（２回目）」、…、「出力（１０２３回目）」は、「チャレンジ番号」で特定されるチャレンジを遅延型ＰＵＦ４５１に繰り返し１０２３回与えたときにおける、遅延型ＰＵＦ４５１の各回の出力値の実測結果である。なお、この図２０の例では、チップ２００の周囲温度を２５℃としたときの結果を表している。
【０１５７】
「ＩＤ（２５℃で生成）」は、チップ２００の周囲温度を２５℃として上述の実測を行ったときのＩＤ判定回路４２１からの２ビットの出力である。
「出力種別（２５℃）」は、チップ２００の周囲温度を２５℃として上述の実測を行ったときにおける遅延型ＰＵＦ４５１の出力が一定の値（固定値）であったか不定の値（乱数）であったかを表している。図２０の例では、遅延型ＰＵＦ４５１の出力が固定値である場合には、この出力種別の値が「０」と記され、遅延型ＰＵＦ４５１の出力が乱数である場合には、この出力種別の値が「１」と記されている。なお、この出力種別の値の決定は、ＩＤ判定回路４２１の出力（前述したＩＤ）に基づいて行うことができる。すなわち、図２０のデータ例では、ＩＤ判定回路４２１の出力が「１１」若しくは「００」である場合には、出力種別の値は「０」とされ、ＩＤ判定回路４２１の出力が「１０」若しくは「０１」である場合には、出力種別の値は「１」とされる。
【０１５８】
「出力種別（３５℃）」、…、「出力種別（８５℃）」も同様であり、周囲温度を３５℃、…、８５℃として上述の実測を各々行ったときにおける遅延型ＰＵＦ４５１の出力が一定の値（固定値）と不定の値（乱数）とのどちらであったかを示す値が記されている。
【０１５９】
この図２０のテーブルにおいて、テンプレート情報は、右端の「出力種別（２５℃）」、「出力種別（３５℃）」、…、「出力種別（８５℃）」の各項目の値である。不揮発性メモリ４３２には、テンプレート情報として、予め行われた実測によって得られたチップ２００の周囲温度とこれらの各値との関係を、チャレンジ番号毎に記憶させておく。
【０１６０】
周囲温度の検出時には、温度判定シーケンサ４３１は、遅延型ＰＵＦ部４５０に用意されている１２８通りの全てのチャレンジが遅延型ＰＵＦ４５１へ与えられたときに、遅延型ＰＵＦ４５１から乱数が出力されるチャレンジが何通りあるかを計数する。そして、この計数値を１２８で除算して、乱数が出力されるチャレンジについての全てのチャレンジに対する割合を算出する。その一方で、温度判定シーケンサ４３１は、不揮発性メモリ４３２に記憶されているテンプレート情報を参照して、チップ２００の各周囲温度において、遅延型ＰＵＦ４５１から乱数が出力されるチャレンジについての全てのチャレンジに対する割合を算出する。そして、この両者の算出結果を比較して、テンプレート情報から算出された割合のうち、周囲温度の検出時における割合に最も近いものを選択し、選択された割合に対応している周囲温度を、チップ２００の周囲温度の判定結果とする。
【０１６１】
なお、温度判定シーケンサ４３１は、シフトレジスタ４２２に格納されている１２８個×２ビットの数値列に含まれている数値「１０」若しくは「０１」の個数を計数することによって、遅延型ＰＵＦ４５１から乱数が出力されるチャレンジの個数の計数を行う。
【０１６２】
なお、図１９に図解した個体別情報生成装置１２０の構成を変形して、図１７に図解した第二の例のように構成してもよい。すなわち、遅延型ＰＵＦ４５１についてのチャレンジと出力種別とについてのチップ２００の周囲温度毎の関係を表しているテンプレート情報を、サーバ装置３００の有している記憶装置に記憶させておくようにしてもよい。このように構成する場合には、温度判定シーケンサ４３１は、テンプレート情報を参照するときは、第二の例の場合と同様に、通信インタフェース部２５０及び通信ネットワーク３１０を介してサーバ装置３００に問い合わせを行えばよい。
【０１６３】
なお、今までに説明した個体別情報生成装置１２０の構成の第一の例から第四の例は、いずれも、同じＰＵＦを個体別情報の生成と温度検出とに兼用するように構成されている。すなわち、チップ２００の周囲温度が所定の温度範囲外であることがＰＵＦを用いて検出された場合には、個体別情報生成装置１２０は、個体別情報の出力を中止すると共に、暗号化処理の実行停止を指示する信号を出力するようにしていた。ここで、チップ２００の周囲温度が所定の温度範囲外であることが検出された場合には、更に、ＰＵＦそのものの動作を停止させるようにしてもよい。また、上述の信号を受信したＣＰＵ２１０は、暗号演算器２２０による暗号化処理の実行を禁止させる制御を行うと共に、以降の個体別情報生成装置１２０からの出力を全て無効として使用しないようにして、安全性の更なる向上を目指してもよい。
【０１６４】
また、上述したように同じＰＵＦを個体別情報の生成と温度検出とに兼用する代わりに、個体別情報の生成と温度検出とに別々のＰＵＦを実装するようにしてもよい。すなわち、図２１に図解した暗号化処理システム６００の構成のように、温度検出装置６１０と個体別情報生成装置６２０との各々に専用のＰＵＦを実装するようにしてもよい。
【０１６５】
図２１の構成では、温度検出装置６１０が、自らが有しているＰＵＦを用いて周囲温度の検出を行い、周囲温度が所定の温度範囲外であることが検出された場合には、個体別情報生成装置６２０及び暗号化装置６３０に停止信号を出力する。個体別情報生成装置６２０は、自らが有しているＰＵＦを用いて個体別情報の生成を行うが、上述した停止信号を受け取った場合には、個体別情報の生成を中止する。また、暗号化装置６３０は、個体別情報生成装置６２０により生成される個体別情報を用いて情報の暗号化処理を行うが、上述した停止信号を受け取った場合には、この暗号化処理の実行を中止する。
【０１６６】
このように、個体別情報の生成と温度検出とに別々のＰＵＦを実装することで、各々の機能に適した特性を有しているＰＵＦを使用できるようになるので、各機能の性能が向上する。ＰＵＦを用いて行う温度測定では、温度変化に対して敏感なＰＵＦを使用することが好ましい。一方、個体別情報の生成では、周囲温度の変化によらず安定した個体別情報を生成する必要があるため、この生成に使用するＰＵＦは、温度変化に対して影響が少ない方が好ましい。従って、個体別情報の生成用のＰＵＦと、温度測定用のＰＵＦとを兼用せずに専用のものとすることで、２つの機能の各々について性能の向上が期待できる。
【０１６７】
なお、以上までに説明した、ＰＵＦを用いた温度検出を、電圧の検出に応用することができる。すなわち、周囲温度が一定の環境では、ＰＵＦを動作させるために印加する電圧と、乱数を出力するメタスタビリティＰＵＦの個数（遅延型ＰＵＦへのチャレンジ数）とは、ほぼ単調に変化する関係を有している。この関係を利用して、周囲温度が一定の環境での電圧の検出を、ＰＵＦを用いて行うことも可能である。
【符号の説明】
【０１６８】
１、１−１、１−Ｎ、４５１  遅延型ＰＵＦ
１０  アービタＰＵＦ
１１、１１−０ａ、１１−０ｂ、１１−１ａ、１１−１ｂ、１１−２ａ、１１−２ｂ、１１−（ｎ−１）ａ、１１−（ｎ−１）ｂ、４０２  セレクタ
１２  Ｄ型フリップフロップ回路
２０  グリッチＰＵＦ
２１  ＸＯＲ回路
２２、５０５、５０８  ＡＮＤ回路
２３  グリッチ発生回路
２４  グリッチ形状判定回路
３０  リングオシレータＰＵＦ
３１−１、３１−２、３１−ｎ  リングオシレータ
３２−１、３２−２  マルチプレクサ
３３−１、３３−２  カウンタ
３４  比較器
４０、４０−１、４０−Ｎ  バタフライ型ＰＵＦ
４１、４２  ＮＡＮＤ回路
５０、１２０、６２０  個体別情報生成装置
５１、５１−１、５１−２、５１−３、５１−４、５１−５、５１−６  ＰＵＦ
６０  デバイス
１００  温度センサ
１０１  出力値生成回路
１０２  出力値判定部
１０３  記憶部
１０４  温度判定部
１１０、６３０  暗号化装置
１１１  暗号鍵生成部
１１２  暗号化処理部
１１３  暗号化処理制御部
１１４  通信部
１２１  個体別情報生成部
１２２  個体別情報生成制御部
２００  チップ
２１０  ＣＰＵ
２２０  暗号演算器
２２１  公開鍵コプロセッサ
２２２  共通鍵コプロセッサ
２３０  ＲＯＭ
２４０  ＲＡＭ
２５０  通信インタフェース部
２６０  バスライン
３００  サーバ装置
３１０  通信ネットワーク
４０１  オシレータ
４１０  バタフライ型ＰＵＦ部
４１１  ラッチ
４２０  ＰＵＦ出力部
４２１  ＩＤ判定回路
４２２  シフトレジスタ
４２３  エントロピ圧縮部
４３０  温度検出部
４３１  温度判定シーケンサ
４３２  不揮発性メモリ
４４０  ＳＲＡＭ−ＰＵＦ部
４４１  ＳＲＡＭメモリセル
４５０  遅延型ＰＵＦ部
５０１  ビット数変換器
５０２  加算器
５０３  レジスタ
５０４、５０６  リダクション演算回路
５０７  ＮＯＴ回路
５０９  ＯＲ回路
６００  暗号化処理システム
６１０  温度検出装置
【図１】
0005870675.tif 000002
【図２】
0005870675.tif 000003
【図３】
0005870675.tif 000004
【図４Ａ】
0005870675.tif 000005
【図４Ｂ】
0005870675.tif 000006
【図５】
0005870675.tif 000007
【図６】
0005870675.tif 000008
【図７Ａ】
0005870675.tif 000009
【図７Ｂ】
0005870675.tif 000010
【図８】
0005870675.tif 000011
【図９】
0005870675.tif 000012
【図１０】
0005870675.tif 000013
【図１１】
0005870675.tif 000014
【図１２】
0005870675.tif 000015
【図１３】
0005870675.tif 000016
【図１４】
0005870675.tif 000017
【図１５】
0005870675.tif 000018
【図１６】
0005870675.tif 000019
【図１７】
0005870675.tif 000020
【図１８】
0005870675.tif 000021
【図１９】
0005870675.tif 000022
【図２０】
0005870675.tif 000023
【図２１】
0005870675.tif 000024