(57)【特許請求の範囲】
【請求項１】
メタスタビリティ型ＰＵＦ回路、
前記メタスタビリティ型ＰＵＦ回路が所定値を出力する頻度を検出する頻度検出部、
周囲温度を示す値と前記メタスタビリティ型ＰＵＦ回路が前記所定値を出力する頻度との関係を表したデータが予め記憶されている記憶部、及び
前記頻度検出部により検出された頻度と前記記憶部に記憶されているデータとに基づいて、周囲温度を示す値を得る温度判定部、
を備える温度センサ。
【請求項２】
メタスタビリティ型ＰＵＦ回路と、
前記メタスタビリティ型ＰＵＦ回路が所定値を出力する頻度を検出する頻度検出部と、
周囲温度を示す値と前記メタスタビリティ型ＰＵＦ回路が前記所定値を出力する頻度との関係を表したデータが予め記憶されている記憶部と、
前記頻度検出部により検出された頻度と前記記憶部に記憶されているデータとに基づいて、周囲温度を示す値を得る温度判定部と、
を備える温度センサ、
入力値に対して生成される出力値が一義的には定まらずに一定の値若しくは不定の値を出力する出力値生成回路、
前記出力値生成回路の出力値に基づいて暗号鍵を生成する暗号鍵生成部、
前記暗号鍵生成部により生成された暗号鍵を用いて情報の暗号化処理を行う暗号化処理部、及び
前記温度判定部により得られた値が所定範囲外である場合に、前記暗号化処理部を制御して前記暗号化処理の実行を禁止する暗号化処理制御部、
を備える暗号化装置。
【請求項３】
前記メタスタビリティ型ＰＵＦ回路が、前記出力値生成回路として共用されている請求項２に記載の暗号化装置。
【請求項４】
前記暗号鍵生成部は、前記温度判定部により得られた値が所定範囲外である場合には、前記暗号鍵の出力を禁止する請求項２又は３に記載の暗号化装置。
【請求項５】
通信ネットワークを介してサーバ装置とデータの授受を行う通信部を更に備え、
前記記憶部が、前記サーバ装置に配置されている、
請求項２又は３に記載の暗号化装置。
【請求項６】
前記出力値生成回路は、前記記憶部に記憶されているデータを前記通信部が受け取らない場合には、前記出力値の生成動作を停止する請求項５に記載の暗号化装置。
【請求項７】
メタスタビリティ型ＰＵＦ回路が所定値を出力する頻度を検出し、
周囲温度を示す値と前記メタスタビリティ型ＰＵＦ回路が前記所定値を出力する頻度との関係を表したデータが予め記憶されている記憶部に記憶されている該データと、前記検出された頻度とに基づいて、周囲温度を示す値を獲得し、
入力値に対しての出力値が一義的には定まらずに一定の値若しくは不定の値を出力するデジタル回路の出力値に基づいて暗号鍵を生成し、
前記暗号鍵を用いて情報の暗号化処理を行い、
前記周囲温度を示す値の獲得により獲得された値が所定範囲内である場合には、前記暗号鍵を用いて情報の暗号化処理を行い、該値が該所定範囲外である場合には、該暗号化処理の実行を禁止する、
暗号化方法。
【請求項８】
前記デジタル回路が、前記頻度の検出がされるメタスタビリティ型ＰＵＦ回路である請求項７に記載の暗号化方法。
【請求項９】
請求項１に記載の温度センサ、
入力値に対して生成される出力値が一義的には定まらずに一定の値若しくは不定の値を出力する出力値生成回路、
前記出力値生成回路の出力値に基づいて個体別情報を生成する個体別情報生成部、及び
前記温度判定部により得られた値が所定範囲外である場合に、前記個体別情報生成部により生成される個体別情報の出力を禁止する個体別情報出力制御部、
を備える個体別情報生成装置。
【請求項１０】
前記メタスタビリティ型ＰＵＦ回路が、前記出力値生成回路として共用されている請求項９に記載の個体別情報生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で議論される実施態様は、温度の検出技術に関する。
【背景技術】
【０００２】
近年、プリンタカートリッジや、電池等のバッテリー、ゲーム機のカートリッジといった製品に関して、正規品の製造メーカとは異なる製造メーカによるクローン品が多く見られるようになっている。クローン品とは、正規品の内部構造の分析や正規品の内部に存在するＩＣ（集積回路）チップの解析等の結果を用いて製造された、正規品と同等の機能を有する製品である。これらのクローン品の中には、正規品を製造する正規メーカの知的財産等の権利を侵害するケースも多く、クローン対策技術が強く求められている。
【０００３】
このようなクローン品を防止する手法として、正規品へ認証機能を付与することが行われている。この認証機能を実現する有効な手段のひとつがＰＵＦ（Physically Unclonable Function：物理的クローン作製不能機能）である。詳細は後述するが、ＰＵＦから生成される秘密情報は、顕微鏡での観察による解析では特定できない。従って、上記に挙げたようなクローン品への対策が必要な製品に対してＰＵＦを組み込んで、ＰＵＦで秘密情報を生成することで認証機能を実現することは、クローン品への対策としての有効性が高い。
【０００４】
ＰＵＦは、ある同一の入力に対して、ＰＵＦが実装された電子デバイス毎に異なる出力を返す関数である。但し、デバイス毎に異なる値を出力するような関数を個別に設定する必要はなく、同一の回路（顕微鏡での解析を行っても、見た目は同一であって、その出力値が特定できない）がこの関数を実現する。つまり、ＰＵＦは、デバイス内の信号遅延や素子特性などの物理特性のわずかな違いを利用することで、その出力をデバイス毎に全く異なる値とする。従って、この出力はデバイス固有の値（「個体別情報」と称することとする）となる。
【０００５】
理想的なＰＵＦは、デバイス上に実装するとそのデバイスでは常に同一の個体別情報を出力する（再現性）一方、異なるデバイス上に実装されたＰＵＦ間では全く異なる個体別情報を出力する（ユニーク性）。このようなデバイスにおけるＰＵＦの出力情報は、人における、「指紋」のような生体情報に喩えることができる。指紋は、同一人であれば年をとっても不変である（再現性）一方、別人の間では全く異なる（ユニーク性）という、理想的なＰＵＦの出力情報と同様の性質を有している。
【０００６】
また、同一の回路構成のＰＵＦが、このような理想的な再現性とユニーク性と兼ね備えていれば、攻撃者が回路を分解し、内部を解析したところで、クローンチップを生成することはできない。
【０００７】
このＰＵＦは、識別情報（ＩＤ）の生成や暗号鍵の生成にも用いられる。従って、ＰＵＦを用いて認証機能を実現することが可能である。
多くの電子デバイス製品では、個々に固有のＩＤを必要とする。従来は、多くの場合において、それぞれのデバイス毎に異なる値をＩＤとして不揮発性メモリに書き込む作業が製造段階で行われていた。このＩＤの生成にＰＵＦを用いると、セキュアにＩＤをＩＣチップ内に格納しておけるだけでなく、この書き込み作業のコストを低減させることもできる。
【０００８】
また、暗号機能を含む製品はＰＵＦを用いると安全性が向上する。具体例として、情報記録用の集積回路をカードに組み組んだスマートカードがある。また、通信の秘匿を保証するために、携帯電話に使用されるＳＩＭ（Subscriber Identification Module）カードや無線インターネット接続の端末などにも暗号機能が必須である。これらの機器での暗号化に使用する暗号鍵の生成にＰＵＦを使用するようにすれば、暗号鍵が攻撃者に解析される危険性が大幅に低下し、安全性が向上する。
【０００９】
次に、ＰＵＦの基本的な回路構成例を幾つか説明する。
なお、本明細書における以下の説明では、電位の異なる２値の論理レベルにおけるハイ・レベルを値「１」と表現し、ロー・レベルを値「０」と表現することとする。
【００１０】
広く知られているＰＵＦは、大きく分けて、遅延型ＰＵＦとメタスタビリティ（metastability ）型ＰＵＦとの２つに分類することができる。ここでは、メタスタビリティ型ＰＵＦについて説明する。
【００１１】
メタスタビリティ型ＰＵＦは、デジタル回路の不定状態を利用するＰＵＦである。メタスタビリティ型ＰＵＦに分類されるＰＵＦの例として、バタフライ型ＰＵＦ及びＳＲＡＭ−ＰＵＦが知られている。
【００１２】
まずＳＲＡＭ−ＰＵＦについて説明する。
ＳＲＡＭ（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）に採用されているハッシュ関数であるＳＨＡ−２５６によるハッシュ関数値を得る回路を用いる。このエントロピ圧縮部４２３を用いることで、レスポンスからチャレンジを推測することが極めて困難なものとなり、安全性が向上する。
【００９５】
図７の個体別情報生成装置１２０では、以上のようにして個体別情報が生成される。
次に温度検出部４３０について説明する。温度検出部４３０は、温度判定シーケンサ４３１と、不揮発性メモリ４３２と、レジスタ４３３とを備えている。
【００９６】
温度判定シーケンサ４３１は、レジスタ４３３に格納されているラッチ４１１の出力と、不揮発性メモリ４３２に記憶されているデータとに基づいて、この個体別情報生成装置１２０が実装されているチップ２００の周囲温度を判定する。ここで、この周囲温度の判定結果が所定の温度範囲外である場合には、暗号化処理停止信号を出力する。この暗号化処理停止信号がＣＰＵ２１０により受信されると、ＣＰＵ２１０は、暗号演算器２２０を制御して、暗号演算器２２０による暗号化処理の実行を禁止する。また、この暗号化処理停止信号はエントロピ圧縮部４２３にも送られ、エントロピ圧縮部４２３は、暗号化処理停止信号を受信した場合には、個体別情報の出力を中止する。
【００９７】
不揮発性メモリ４３２は、後述するテンプレート情報を記憶しておくものである。なお、テンプレート情報の漏出によって個体別情報生成装置１２０が生成する個体別情報が推定されることの防止のために、不揮発性メモリ４３２は耐タンパ性を有しているものを用いることが好ましい。
レジスタ４３３は、ラッチ４１１から出力されるビット列のうち、温度判定シーケンサ４３１からの選択信号に基づきセレクタ４０２によって選択されたものを格納する。
【００９８】
ここで、温度検出部４３０による周囲温度の判定の手法について、図９Ａ及び図９Ｂを用いて説明する。
図２のバタフライ型ＰＵＦ１０では、入力Ａが０から１へと変化させる立ち上がりのタイミングにおいて、出力Ｂ及びＣの値を変化させて０若しくは１とする。従って、入力Ａとしてクロック信号をバタフライ型ＰＵＦ１０に印加すると、出力Ｂ及びＣとしてビット列が出力される。従って、クロック信号をバタフライ型ＰＵＦ１０に例えば２００万サイクル入力すれば、２００万ビットのビット列がバタフライ型ＰＵＦ１０から出力される。
【００９９】
ここで、この２００万ビットのビット列を、図９Ａに図解するように、１０２４ビットを１区間とする計２０４８区間（kukan1，kukan2,…,kukan2048）のビット列に分割する。そして、この区間毎の１０２４ビットのビット列において、値が１であるビットの個数を計数し、値が１であるビットがビット列に含まれている頻度を各区間について算出する。図９Ｂは、バタフライ型ＰＵＦ１０が形成されている半導体チップの周囲温度を２５℃（室温）とした場合と８５℃とした場合とにおける、この算出結果をプロットしたグラフの一例である。
【０１００】
発明者は、十数個の半導体チップ（ＦＰＧＡ：Field-Programmable Gate Array ）を使用して上述の実験を行った。この実験の結果、複数個のバタフライ型ＰＵＦ１０を単一の半導体チップに形成した場合であっても、その半導体チップの周囲温度によって、上記の算出結果から得られるグラフの傾向が異なることが判明した。
【０１０１】
すなわち、図９Ｂのグラフを得たバタフライ型ＰＵＦ１０では、周囲温度が上昇すると、出力ビット列中に含まれる１の割合が増加することが分かった。また、その一方で、バタフライ型ＰＵＦ１０には、周囲温度が上昇すると、出力ビット列中に含まれる１の割合が減少するものや、周囲温度の変化に対して出力ビット列中に含まれる１の割合がほとんど変化しないものが存在することも分かった。
【０１０２】
そこで、図７の温度判定シーケンサ４３１は、バタフライ型ＰＵＦ部４１０のラッチ４１１が出力するビット列における所定値「１」の頻度が周囲温度に応じて変化することを利用し、この頻度から周囲温度の推定を行う。より具体的には、温度判定シーケンサ４３１は、以下に説明するようにして、チップ２００の周囲温度を推定する。
【０１０３】
まず、チップ２００に形成されているバタフライ型ＰＵＦ部４１０の各ラッチ４１１について、チップ２００の周囲温度と、値が１であるビットが出力ビット列に含まれている頻度についての前述した区間の平均値（平均頻度）との関係をチップ２００毎について求める。次に、求められた関係から、各チップ２００について、周囲温度に対する平均頻度の変化が単調増加若しくは単調減少しているラッチ４１１を選択する。そして、選択されたラッチ４１１についての上述した関係を表しているテンプレート情報を生成して不揮発性メモリ４３２に記憶させておく。図１０のテーブルは、このテンプレート情報の例であり、異なるチップ２００（「チップＡ」及び「チップＢ」）についてのものであり、それぞれ選択された２つのラッチ４１１についての周囲温度と頻度との関係がテーブル形式で示されている。
【０１０４】
周囲温度の検出時には、温度判定シーケンサ４３１は、まず、セレクタ４０２に選択信号を出力して、不揮発性メモリ４３２に記憶されている上述のテンプレート情報で上述の関係が表されているラッチ４１１の出力を選択させる。すると、選択されたラッチ４１１の出力であるビット列が、セレクタ４０２を介してレジスタ４３３に送られる。レジスタ４３３は、オシレータ４０１で生成されたクロック信号に同期しているこのビット列を格納する。
なお、本実施例では、レジスタ４３３に格納するビット列のビット数を、前述した１区間のビット列に相当する１０２４ビットとするが、このビット数でなくてもよい。
【０１０５】
次に、温度判定シーケンサ４３１は、レジスタ４３３に格納されているビット列を読み出して、そのビット列において値が１であるビットの個数を計数する。そして、そのビット列のビット数に対する当該個数の割合を、値が１であるビットがビット列に含まれている頻度として算出する。ここで、温度判定シーケンサ４３１は、不揮発性メモリ４３２に記憶されている上述のテンプレート情報を参照してこの頻度に対応付けられている周囲温度を読み出し、読み出された周囲温度を、チップ２００の周囲温度の判定結果とする。
【０１０６】
なお、温度判定シーケンサ４３１は、頻度の算出を、ラッチ４１１が出力するビット列の他の区間でも行い、各区間について算出された頻度の平均値に基づいて周囲温度の判定を行うようにしてもよい。また、この場合に、算出された頻度に対応付けられている周囲温度をテンプレート情報から区間毎に求め、得られた周囲温度の下限値から上限値までの範囲を、チップ２００の周囲温度の検出結果としてもよい。
【０１０７】
次に図１１について説明する。図１１は、個体別情報生成装置１２０の構成の第二の例を図解したものであり、前述したメタスタビリティ型ＰＵＦの一例であるバタフライ型ＰＵＦを用いて個体別情報の生成を行うものである。
【０１０８】
図１１に図解した第二の例は、図７に示した第一の例とは、不揮発性メモリ４３２を備えていない点が相違している。ここでは、この相違点に関して説明する。
図１１の個体別情報生成装置１２０では、前述のテンプレート情報が、サーバ装置３００の有している不図示の記憶装置に記憶されている。温度判定シーケンサ４３１は、テンプレート情報を参照する場合には、通信インタフェース部２５０及び通信ネットワーク３１０を介してサーバ装置３００に問い合わせを行って、テンプレート情報を取得する。
【０１０９】
個体別情報生成装置１２０を図１１のように構成することで、テンプレート情報の個体別情報生成装置１２０からの漏出が防止され、また、不揮発性メモリ４３２が不要となるので、個体別情報生成装置１２０の小型化が可能になる。
【０１１０】
なお、温度判定シーケンサ４３１は、サーバ装置３００からテンプレート情報を取得することができなかった場合には、例えばオシレータ４０１の動作を停止させて、バタフライ型ＰＵＦ部４１０の各ラッチ４１１の動作を停止させるようにしてもよい。
【０１１１】
次に図１２について説明する。図１２は、個体別情報生成装置１２０の構成の第三の例を図解したものであり、前述したメタスタビリティ型ＰＵＦの一例であるＳＲＡＭ−ＰＵＦを用いて個体別情報の生成を行うものである。
【０１１２】
図１２の個体別情報生成装置１２０は、ＳＲＡＭ−ＰＵＦ部４４０、セレクタ４０２、ＰＵＦ出力部４２０、及び温度検出部４３０を備えている。つまり、この第三の例は、図１３に示した第一の例とは、バタフライ型ＰＵＦ部４１０と、バタフライ型ＰＵＦ部４１０のラッチ４１１に与えるクロック信号を生成するオシレータ４０１との代わりに、ＳＲＡＭ−ＰＵＦ部４４０を備えている点が相違している。
【０１１３】
ＳＲＡＭ−ＰＵＦ部４４０は、前述したように、メタスタビリティ型ＰＵＦの一例であり、ＳＲＡＭへの電力供給を開始した直後のメモリセルの初期値のばらつきを利用したＰＵＦである。ここでは、個体別情報生成装置１２０に与えられたチャレンジによって、ＳＲＡＭ−ＰＵＦ部４４０が備えている多数のＳＲＡＭメモリセル４４１のうちから１２８個が選択されたものとする。
【０１１４】
セレクタ４０２は、チャレンジによって選択された１２８個のＳＲＡＭメモリセル４４１の出力からサイクリックに１つずつ出力を選択してＰＵＦ出力部４２０へ入力する。また、セレクタ４０２は、温度判定シーケンサ４３１からの選択信号に基づいて、ＳＲＡＭメモリセル４４１のうちの１つを選択し、その格納内容を読み出させてレジスタ４３３に格納させる。
ＰＵＦ出力部４２０及び温度検出部４３０は、図７の第一の例が備えているものと同様のものである。
【０１１５】
図１２の個体別情報生成装置１２０では、ＳＲＡＭ−ＰＵＦ部４４０への電力の供給及び停止が繰り返されることで、電力供給時の初期値がＳＲＡＭメモリセル４４１から順次得られる。ＩＤ判定回路４２１は、セレクタ４０２によって選択されたＳＲＡＭメモリセル４４１からの連続する１０２３ビット分の初期値が全て「０」である場合には「００」を出力し、当該連続する１０２３ビット分の初期値が全て「１」である場合には「１１」を出力する。また、このＩＤ判定回路４２１は、当該１０２３ビット分の初期値のうち、値が「０」である個数が５１２個以上である場合（すなわち、出力値の５０パーセント以上が「０」の場合）には、「０１」を出力する。更に、このＩＤ判定回路４２１は、当該１０２３ビット分の初期値のうち、値が「１」である個数が５１２個以上である場合（すなわち、出力値の５０パーセント以上が「１」の場合）には、「１０」を出力する。
【０１１６】
シフトレジスタ４２２には、ＳＲＡＭ−ＰＵＦ部４４０の１２８個のＳＲＡＭメモリセル４４１の出力のうちの１つが順にセレクタ４０２により選択されてＩＤ判定回路４２１に入力されたときにＩＤ判定回路４２１から出力される２ビットの数値が順次格納される。
【０１１７】
エントロピ圧縮部４２３は、シフトレジスタ４２２に並べられた２５６（１２８×２）ビットのビット列に対してエントロピ圧縮を行い、得られた値を、個体別情報（レスポンス）の生成結果として出力する。
【０１１８】
温度判定シーケンサ４３１は、レジスタ４３３に格納されているラッチ４１１の出力と、不揮発性メモリ４３２に記憶されているデータとに基づいて、この個体別情報生成装置１２０が実装されているチップ２００の周囲温度を判定する。ここで、この周囲温度の判定結果が所定の温度範囲外である場合には、暗号化処理停止信号を出力する。この暗号化処理停止信号がＣＰＵ２１０により受信されると、ＣＰＵ２１０は、暗号演算器２２０を制御して、暗号演算器２２０による暗号化処理の実行を禁止する。また、この暗号化処理停止信号はエントロピ圧縮部４２３にも送られ、エントロピ圧縮部４２３は、暗号化処理停止信号を受信した場合には、個体別情報の出力を中止する。
【０１１９】
この温度判定シーケンサ４３１による周囲温度の判定の手法も、図７の第一の例のものと同様である。
すなわち、ＳＲＡＭメモリセル４４１の各々について、チップ２００の周囲温度と、値が１であるビットが出力ビット列に含まれている頻度についての前述した区間の平均値（平均頻度）との関係をチップ２００毎について求める。次に、求められた関係から、各チップ２００について、周囲温度に対する平均頻度の変化が単調増加若しくは単調減少しているＳＲＡＭメモリセル４４１を選択する。そして、選択されたラッチ４１１についての上述した関係を表しているテンプレート情報を生成して不揮発性メモリ４３２に記憶させておく。
【０１２０】
温度判定シーケンサ４３１は、周囲温度の検出時には、まず、セレクタ４０２に選択信号を出力して、不揮発性メモリ４３２に記憶されている上述のテンプレート情報で上述の関係が表されているＳＲＡＭメモリセル４４１を選択させる。すると、選択されたＳＲＡＭメモリセル４４１の内容が、セレクタ４０２を介してレジスタ４３３に送られる。レジスタ４３３は、ＳＲＡＭ−ＰＵＦ部４４０への電力の供給及び停止の繰り返しに同期しているこのビット列を格納する。温度判定シーケンサ４３１は、レジスタ４３３に格納されているビット列を読み出して、そのビット列において値が１であるビットの個数を計数する。そして、そのビット列のビット数に対する当該個数の割合を、値が１であるビットがビット列に含まれている頻度として算出する。ここで、温度判定シーケンサ４３１は、不揮発性メモリ４３２に記憶されている上述のテンプレート情報を参照してこの頻度に対応付けられている周囲温度を読み出し、読み出された周囲温度を、チップ２００の周囲温度の判定結果とする。
【０１２１】
なお、図１２に図解した個体別情報生成装置１２０の構成を変形して、図１１に図解した第二の例のように構成してもよい。すなわち、前述したテンプレート情報を、サーバ装置３００の有している記憶装置に記憶させておくようにしてもよい。このように構成する場合には、温度判定シーケンサ４３１は、テンプレート情報を参照するときは、第二の例の場合と同様に、通信インタフェース部２５０及び通信ネットワーク３１０を介してサーバ装置３００に問い合わせを行えばよい。
【０１２２】
なお、今までに説明した個体別情報生成装置１２０の構成の第一の例から第三の例は、いずれも、同じＰＵＦを個体別情報の生成と温度検出とに共用するように構成されている。すなわち、チップ２００の周囲温度が所定の温度範囲外であることがＰＵＦを用いて検出された場合には、個体別情報生成装置１２０は、個体別情報の出力を中止すると共に、暗号化処理の実行停止を指示する信号を出力するようにしていた。ここで、チップ２００の周囲温度が所定の温度範囲外であることが検出された場合には、更に、ＰＵＦそのものの動作を停止させるようにしてもよい。また、上述の信号を受信したＣＰＵ２１０は、暗号演算器２２０による暗号化処理の実行を禁止させる制御を行うと共に、以降の個体別情報生成装置１２０からの出力を全て無効として使用しないようにして、安全性の更なる向上を目指してもよい。
【０１２３】
また、上述したように同じＰＵＦを個体別情報の生成と温度検出とに共用する代わりに、個体別情報の生成と温度検出とに別々のＰＵＦを実装するようにしてもよい。すなわち、図１３に図解した暗号化処理システム６００の構成のように、温度検出装置６１０と個体別情報生成装置６２０との各々に専用のＰＵＦを実装するようにしてもよい。
【０１２４】
図１３の構成では、温度検出装置６１０が、自らが有しているＰＵＦを用いて周囲温度の検出を行い、周囲温度が所定の温度範囲外であることが検出された場合には、個体別情報生成装置６２０及び暗号化装置６３０に停止信号を出力する。個体別情報生成装置６２０は、自らが有しているＰＵＦを用いて個体別情報の生成を行うが、上述した停止信号を受け取った場合には、個体別情報の生成を中止する。また、暗号化装置６３０は、個体別情報生成装置６２０により生成される個体別情報を用いて情報の暗号化処理を行うが、上述した停止信号を受け取った場合には、この暗号化処理の実行を中止する。
【０１２５】
このように、個体別情報の生成と温度検出とに別々のＰＵＦを実装することで、各々の機能に適した特性を有しているＰＵＦを使用できるようになるので、各機能の性能が向上する。ＰＵＦを用いて行う温度測定では、温度変化に対して敏感なＰＵＦを使用することが好ましい。一方、個体別情報の生成では、周囲温度の変化によらず安定した個体別情報を生成する必要があるため、この生成に使用するＰＵＦは、温度変化に対して影響が少ない方が好ましい。従って、個体別情報の生成用のＰＵＦと、温度測定用のＰＵＦとを兼用せずに専用のものとすることで、２つの機能の各々について性能の向上が期待できる。
【０１２６】
なお、以上までに説明した、ＰＵＦを用いた温度検出を、電圧の検出に応用することができる。すなわち、周囲温度が一定の環境において、動作させるために印加する電圧と所定値（例えば１）を出力する頻度とが単調に変化する関係を有しているＰＵＦを用いることで、周囲温度が一定の環境での電圧の検出を行うことも可能である。
【符号の説明】
【０１２７】
１  デバイス
１０  バタフライ型ＰＵＦ
１１、１２  ＮＡＮＤ回路
２０、１２０、６２０  個体別情報生成装置
２１、２１−１、２１−２、２１−３、２１−４、２１−５、２１−６  ＰＵＦ
１００  温度センサ
１０１  メタスタビリティ型ＰＵＦ回路
１０２  頻度検出部
１０３  記憶部
１０４  温度判定部
１１０、６３０  暗号化装置
１１１、１２１  出力値生成回路
１１２  暗号鍵生成部
１１３  暗号化処理部
１１４  暗号化処理制御部
１１５  通信部
１２２  個体別情報生成部
１２３  個体別情報生成制御部
２００  チップ
２１０  ＣＰＵ
２２０  暗号演算器
２２１  公開鍵コプロセッサ
２２２  共通鍵コプロセッサ
２３０  ＲＯＭ
２４０  ＲＡＭ
２５０  通信インタフェース部
２６０  バスライン
３００  サーバ装置
３１０  通信ネットワーク
４０１  オシレータ
４０２  セレクタ
４１０  バタフライ型ＰＵＦ部
４１１  ラッチ
４２０  ＰＵＦ出力部
４２１  ＩＤ判定回路
４２２  シフトレジスタ
４２３  エントロピ圧縮部
４３０  温度検出部
４３１  温度判定シーケンサ
４３２  不揮発性メモリ
４３３  レジスタ
４４０  ＳＲＡＭ−ＰＵＦ部
４４１  ＳＲＡＭメモリセル
５０１  ビット数変換器
５０２  加算器
５０３  レジスタ
５０４、５０６  リダクション演算回路
５０５、５０８  ＡＮＤ回路
５０７  ＮＯＴ回路
５０９  ＯＲ回路
６００  暗号化処理システム
６１０  温度検出装置
【図１Ａ】
0005857726.tif 000002
【図１Ｂ】
0005857726.tif 000003
【図２】
0005857726.tif 000004
【図３】
0005857726.tif 000005
【図４】
0005857726.tif 000006
【図５】
0005857726.tif 000007
【図６】
0005857726.tif 000008
【図７】
0005857726.tif 000009
【図８】
0005857726.tif 000010
【図９Ａ】
0005857726.tif 000011
【図９Ｂ】
0005857726.tif 000012
【図１０】
0005857726.tif 000013
【図１１】
0005857726.tif 000014
【図１２】
0005857726.tif 000015
【図１３】
0005857726.tif 000016