(57)【特許請求の範囲】
【請求項１】
物理情報の発生回路を複数個持つデバイス物理情報発生部と、
デバイス固有情報生成のための初期設定動作として前記複数の発生回路のグループ化を行うグループ設定部と、
前記グループ毎に、前記デバイス物理情報発生部で発生した物理情報に基づき該グループに属する発生回路のペアを比較し、その比較結果である物理情報の大小に応じて決まるビットを連接することで前記グループに対するデバイス固有情報としての出力ビット列を生成して順序情報のマッピングを行う順序情報マッピング部と、
を備え、
前記グループ設定部は、
前記デバイス物理情報発生部の発生回路を選択する制御部と、
前記制御部で選択された発生回路から得られた物理情報に基づいて該発生回路を生成中のグループのメンバーとするかを決定する際、該グループ内の発生回路の物理情報の差分に対する閾値を設定し、前記差分が前記閾値を超えるようにグループを生成する物理情報判定部と、
前記生成中のグループを構成する発生回路のインデックスを保持する保持メモリと、
を有することを特徴とするデバイス固有情報生成装置。
【請求項２】
請求項１記載のデバイス固有情報生成装置において、
前記閾値により前記物理情報の差分の下限を設定するとともに、前記物理情報の差分の上限となる閾値を設定する、ことを特徴とするデバイス固有情報生成装置。
【請求項３】
請求項１又は２記載のデバイス固有情報生成装置において、
前記閾値を動的に設定することを特徴とするデバイス固有情報生成装置。
【請求項４】
請求項１から３のいずれか１項に記載のデバイス固有情報生成装置において、
前記順序情報マッピング部は、
前記グループ設定部で生成されたグループの情報を格納するメモリと、
前記メモリから発生回路のインデックスを読み出す処理を行うインデックス読み出し部と、
前記インデックスのペアに対応する物理情報の大小比較を行いビットを出力する、物理情報比較部と、
前記物理情報比較部から出力されたビットを格納するバッファと、
を有することを特徴とするデバイス固有情報生成装置。
【請求項５】
請求項１から４のいずれか１項に記載のデバイス固有情報生成装置を用いたデバイス固有情報生成方式において、
前記デバイス固有情報生成装置の順序情報マッピング部は、
デバイス毎に定数値を保持し、生成した出力ビット列に対して該定数値を加算して出力する、ことを特徴とするデバイス固有情報生成方式。
【請求項６】
請求項４記載のデバイス固有情報生成装置において、
前記順序情報マッピング部の出力を処理するエラー訂正部を備え、
前記エラー訂正部は、デバイス固有情報生成時に訂正処理を行ったビットの位置とカウンタ値のペアを保持し、デバイス固有情報生成時にエラー訂正処理で前記メモリ上に保持された位置のビットが訂正された場合には前記カウンタ値を更新し、前記カウンタ値が所定値よりも大きい場合は該ビット位置の値を反転してからエラー訂正処理を実行するエラー情報管理部を有することを特徴とするデバイス固有情報生成装置。
【請求項７】
複数個の物理情報発生回路を持つデバイス物理情報発生部を備えるデバイス固有情報生成装置のデバイス固有情報生成方法において、
デバイス固有情報生成のための初期設定動作として前記複数個の物理情報発生回路のグループ化を行うステップと、
前記グループ毎に、前記デバイス物理情報発生部で発生した物理情報に基づき該グループに属する物理情報発生回路のペアを比較するステップと、
前記比較結果である物理情報の大小に応じて決まるビットを連接することで前記グループに対するデバイス固有情報としての出力ビット列を生成して順序情報のマッピングを行うステップと、
を備え、
前記グループ化を行うステップでは、選択された物理情報発生回路から得られた物理情報に基づいて該物理情報発生回路を生成中のグループのメンバーとするかを決定する際、該グループ内の物理情報発生回路の物理情報の差分に対する閾値を設定し、前記差分が前記閾値を超えるようにグループを生成することを特徴とする、デバイス固有情報生成装置のデバイス固有情報生成方法。
【請求項８】
ホスト装置とアプリケーション装置の認証システムにおいて、
前記アプリケーション装置は請求項１記載のデバイス固有情報生成装置を備え、
初期設定時には前記アプリケーション装置は前記デバイス固有情報生成装置で生成したデバイス固有情報で前記ホスト装置から送付された秘密鍵をマスクしてメモリに保持し、前記アプリケーション装置はアプリケーション実行時に前記デバイス固有情報生成装置で生成したデバイス固有情報と前記メモリに保持した情報を用いて前記秘密鍵を生成する、ことを特徴とする認証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデバイス固有情報生成装置、デバイス固有情報生成方法および認証装置に関し、特にデバイス内部の物理状態を利用して固有情報を生成する、デバイス固有情報生成装置、デバイス固有情報生成方法および認証装置に関する。
【背景技術】
【０００２】
不正なネットワーク・情報機器の使用を防止するシステムにおいて暗号化や認証などのセキュリティ機能を実現するためには、各機器は秘密鍵や機器固有の秘密のIDなどの秘密情報を保持することが求められる。このとき、装置に対するハッキングに際しても秘密情報が外部に漏洩しないようにすることがシステムの安全性として重要であり、これを実現する技術は耐タンパー技術と呼ばれている。近年、このような耐タンパー技術として、機器を構成するデバイスに製造過程などで不可避的に発生する物理的なばらつきを利用してデバイス個体の固有情報を生成する方式の研究が進んでおり、Physically Unclonable Function (PUF)と呼ばれている。
【０００３】
図１はPUFに基づく固有情報生成装置の構成図を示している。固有情報生成装置110は、デバイス物理情報発生部120と物理情報マッピング部130とで構成される。また、図１に示したように固有情報生成装置110は認証装置100の構成要素として機能し、認証装置100は固有情報生成装置110が生成する情報を利用して認証や暗号化といったセキュリティ機能を実行する。
デバイス物理情報発生部120はプロセッサ上の回路やメモリ(SRAM)など、同一の複数の発生回路で構成される。同一ロットで生産されたプロセッサであってもデバイス個体が異なれば同一の配線でも信号伝播の遅延のばらつきが発生する。遅延を利用するPUFではこの遅延のランダムネスに基づき固有情報を生成する。SRAMを利用するPUFでは立ち上げ時の素子の値がランダムであることを利用する。外部からの入力情報はデバイス物理情報部120において複数の発生回路の中で物理情報を取得するものを指定する。
物理情報マッピング部130はデバイス物理情報発生部120から得られた発生回路の物理情報をビット列の固有情報に変換する処理を実行する。生成されたデバイス固有情報はIDや秘密鍵として使用する場合は認証装置内の暗号化処理やハッシュ関数で使用され、チャレンジ−レスポンス認証におけるレスポンスとする場合には直接外部にアウトプットされる。
配線遅延のランダムネスを利用したデバイス固有情報生成方式については、特許文献１、非特許文献１に開示されている。
【０００４】
図２は物理情報の発生回路としてリングオッシレータを用いたデバイス物理情報生成部120および物理情報マッピング部130の構成例を示している。
デバイス物理情報生成部120は複数の同一のリングオッシレータ回路200、リングオッシレータ回路200を選択するセレクタ210および周波数を計測するカウンタ220で構成される。このとき図１の入力情報はセレクタ210でリングオッシレータを2個指定する。
物理情報マッピング部130はコンパレータ230で２つのカウンタ220のカウンタ値を比較し、大小に応じて’0’もしくは’1’を出力する。
PUFに基づく固有情報生成では出力ビットが他の出力ビットから推測されないように固有情報を生成する。リングオッシレータを利用したPUFでは例えばA, B, Cの3個の回路の周波数fA, fB, fCでfA < fB, fB < fCが成り立てばAとCを選択したときの出力ビット(fA < fC)を導くことができてしまう。このような事象の発生を避けることは各リングオッシレータを1回だけ使用する制約をつけることで実現可能となる。しかし、この方法ではN個のリングオッシレータに対して単純には高々N/2ビットの出力しか得ることができない。
各リングオッシレータは高々1回だけ使用するという制約下で出力ビット数を大きくする方法は2個ではなく、より多くのリングオッシレータについてその周波数の順位そのもの（“順序情報”と呼ぶことにする）を出力とする方法である。このような方法は非特許文献１および非特許文献２に述べられている。
n個のグループにおける順序情報の総数はn!であるため、周波数の大小はデバイス毎にランダムになるという仮定の下では順序情報を出力とすることによって固有情報として、以下の式１で得られるＢビットを得ることができる。ここでn!はnの階乗である。
B = log(n!)/log(2)            ・・・[式１]  
このとき、順序情報のビット列への表現としては、[式1]を超えても問題はなく、このとき出力ビット列全体に関してハッシュ関数を適用して[式１]に合わせるような処理を行って最終的な固有情報とする。
このような物理情報を利用したデバイス固有情報生成においてはノイズの影響によって利用時には初期設定時とは異なるビットが生成される可能性があるため、この固有情報を秘密鍵やIDとして使用する場合には多少のエラーが発生しても初期設定時と同一の出力が得られるようにすることが望まれる。これに対処する一般的な方法として、図３に示すようにエラー訂正部300を適用する手法が知られている。エラー訂正部300は物理情報マッピング装置130の出力ビット列に対して誤り訂正符号化を初期設定時に適用し、このビット列に対して生成されるシンドローム（もしくはパリティ）を不揮発性メモリに保持する。デバイス固有情報利用時にはこのシンドロームを利用してエラービットを訂正する。エラー訂正部300でシンドロームは不揮発性メモリ上に保持することになるので攻撃者に取得される可能性がある。このとき、このサイズに応じた情報が漏れることになるため、ハッシュ関数部310によってビット数を縮小する処理が適用され、秘密鍵やIDとして利用される。
【０００５】
本発明に関連する技術としては、特許文献２には、第１のゲート回路と第２のゲート回路の論理閾値のばらつきを用いて、論理閾値の差によって固有の識別情報を求める半導体識別回路の開示がある（段落００１４−００１６）。また、特許文献３には、連続した入力信号に対する出力信号の特性が製造時に自然発生的にばらつく被認証素子を備え、その特性を個体固有の情報とする被認証装置の開示がある（段落０００８−００１３）。また、特許文献４には、認証ソケット装置がハードウェアデバイスにおいて計算される固有の認証情報を通信データに付加して送信する認証システムの開示がある（段落００２１）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表2009-524998号公報
【特許文献２】特開2003-332452号公報
【特許文献３】特開2006-221361号公報
【特許文献４】特開2008-299457号公報
【非特許文献】
【０００７】
【非特許文献１】G. E. Shu and S. Devadas, “Physically Unclonable Functions for Device Generation and Secret Key Generation,” Proc. 44th Design Automation Conference, pp.9-14
【非特許文献２】”LISA: Maximizing RO PUF’s Key Extraction”, Proc. IEEE International Symposium on Hardware-Oriented Security and Trust (HOST), 2010
【発明の概要】
【発明が解決しようとする課題】
【０００８】
物理情報を利用したデバイス固有情報生成においては、固有情報として有効なビット数をなるべく大きくすることが重要となる。この際、物理情報生成におけるノイズの影響がビット列に現れることを抑制することが望まれる。
【０００９】
［発明の目的］
本発明の目的はデバイス物理情報発生部で測定される物理情報からデバイス固有情報を生成する装置および方法において、デバイス固有情報として有効なビット数を大きくし、なおかつノイズの影響に対しても高い信頼度で生成可能な装置および方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係わるデバイス固有情報生成装置は、物理情報の発生回路を複数個持つデバイス物理情報発生部と、デバイス固有情報生成のための初期設定動作として前記複数の発生回路のグループ化を行うグループ設定部と、前記グループ毎に、前記デバイス物理情報発生部で発生した物理情報に基づき該グループに属する発生回路のペアを比較し、その比較結果である物理情報の大小に応じて決まるビットを連接することで前記グループに対するデバイス固有情報としての出力ビット列を生成して順序情報のマッピングを行う順序情報マッピング部と、を備え、前記グループ設定部は、前記デバイス物理情報発生部の発生回路を選択する制御部と、前記制御部で選択された発生回路から得られた物理情報に基づいて該発生回路を生成中のグループのメンバーとするかを決定する際、該グループ内の発生回路の物理情報の差分に対する閾値を設定し、前記差分が前記閾値を超えるようにグループを生成する物理情報判定部と、前記生成中のグループを構成する発生回路のインデックスを保持する保持メモリと、を有することを特徴とする。
【００１１】
本発明に係わるデバイス固有情報生成方法は、複数個の物理情報発生回路を持つデバイス物理情報発生部を備えるデバイス固有情報生成装置のデバイス固有情報生成方法において、デバイス固有情報生成のための初期設定動作として前記複数個の物理情報発生回路のグループ化を行うステップと、前記グループ毎に、前記デバイス物理情報発生部で発生した物理情報に基づき該グループに属する物理情報発生回路のペアを比較するステップと、前記比較結果である物理情報の大小に応じて決まるビットを連接することで前記グループに対するデバイス固有情報としての出力ビット列を生成して順序情報のマッピングを行うステップと、を備え、前記グループ化を行うステップでは、選択された物理情報発生回路から得られた物理情報に基づいて該物理情報発生回路を生成中のグループのメンバーとするかを決定する際、該グループ内の物理情報発生回路の物理情報の差分に対する閾値を設定し、前記差分が前記閾値を超えるようにグループを生成することを特徴とする。
本発明に係わる認証システムは、ホスト装置とアプリケーション装置の認証システムにおいて、前記アプリケーション装置は上記のデバイス固有情報生成装置を備え、初期設定時には前記アプリケーション装置は前記デバイス固有情報生成装置で生成したデバイス固有情報で前記ホスト装置から送付された秘密鍵をマスクしてメモリに保持し、前記アプリケーション装置はアプリケーション実行時に前記デバイス固有情報生成装置で生成したデバイス固有情報と前記メモリに保持した情報を用いて前記秘密鍵を生成する、ことを特徴とする。
【発明の効果】
【００１２】
本発明においては初期設定における発生回路の適切なグループ化によってノイズの影響が出力ビット列に現れる確率を小さくすることが可能となり、グループ内の発生回路の順序情報のマッピングに基づく出力生成を併せることでデバイス固有情報として有効なビット数を大きくすることができる。
【図面の簡単な説明】
【００１３】
【図１】固有情報生成装置の構成を表すブロック図である。
【図２】リングオッシレータを用いた固有情報生成装置の構成図である。
【図３】固有情報生成装置で秘密鍵やＩＤを生成する手段を表すブロック図である。
【図４】本発明に係わるデバイス固有情報生成装置の一実施形態の構成を表すブロック図である。
【図５】本実施形態におけるグループ設定部の構成を表すブロック図である。
【図６】本実施形態におけるグループ設定部の処理を表すフローである。
【図７】本実施形態における順序情報マッピング部の構成を表すブロック図である。
【図８】本実施形態における順序情報マッピング部の処理を表すフローである。
【図９】本実施形態におけるエラー訂正部の構成を表すブロック図である。
【図１０】本実施形態のデバイス固有情報生成装置を用いた認証システムの構成を表すブロック図である。
【発明を実施するための形態】
【００１４】
図４は本発明に係わるデバイス固有情報生成装置の一実施の形態を示すブロック図である。デバイス固有情報生成装置となる固有情報生成装置400はデバイス物理情報発生部120、エラー訂正部300、グループ設定部410および順序情報マッピング部420で構成される。エラー訂正部300はハッシュ関数部310に接続される。
グループ設定部410はデバイス固有情報生成のための初期設定処理を行う。この初期設定処理はデバイス物理情報発生部120を構成する発生回路から物理情報を取得し、固有情報生成に使用する発生回路のグループ生成を行う。
順序情報マッピング部420はグループ設定部410で設定したグループ毎に発生回路の物理情報に基づく順位の情報をビット列へマッピングして出力する。この順序情報のマッピングは順序情報間で順位の反転の回数と出力ビット列間のハミング距離が対応するように行う。
【００１５】
図５はグループ設定部410の構成を示すブロック図である。グループ設定部410は、制御部500、物理情報判定部510およびテンポラリグループメモリ520で構成されている。
制御部500は物理情報を取得するための発生回路のインデックスを決定する。物理情報判定部510はデバイス物理情報発生部120から得られた物理情報に基づいてこの発生回路をグループのメンバーとするかを決定する。
テンポラリグループメモリ520は作成中のグループを構成する発生回路インデックスを保持する。制御部500はテンポラリグループメモリ520も参照して発生回路のインデックスを決定する。
【００１６】
図６はグループ設定部410による初期設定処理を表すフローである。
まず、グループ設定初期化を行う（ステップS610）。制御部500においてグループ数を0に設定し、生成するグループのインデックスgを初期値(0)とする。また、必要であれば制御部500および物理情報判定部510にパラメータ設定を行う。
次に、グループ gの生成を開始するための初期化を行う（ステップS620）。具体的には物理情報判定部510に保存される物理情報値を初期化するとともに、テンポラリグループメモリ520を空にする。
制御部500は現在のグループのメンバーの候補となる発生回路のインデックスiを決定する（ステップS630）。
デバイス物理情報生成部120にインデックスiを指定し、測定した物理情報D[i]を取得する（ステップS640）。
物理情報判定部510はD[i]に基づいて発生回路iが現在のグループgのメンバーとして追加可能であるかを判定する（ステップS650）。物理情報判定部510においてこの判定はテンポラリグループメモリ520に格納されているインデックスに対応する発生回路の物理情報とD[i]を比較することによって行われる。
ステップS650で追加可能と判定した場合にはiを現在のグループgに追加する（ステップS660）。
グループgの生成を終了するかを判定する（ステップS670）。これは例えばグループgのサイズが予め決められた上限に達するかどうかによって判定される。
グループgの生成が終了した場合にはグループgを構成する発生回路のインデックス情報を出力する（ステップS680）。
制御部500はすべての発生回路についてのグループ構成の試行が完了したかを判定する（ステップS685）。
ステップS685で完了と判定した場合は初期設定処理を終了し、そうでない場合にはgをインクリメントして次のグループgの生成を開始する（ステップS690, S620）。
ステップS650において、異なる発生回路間の物理情報が近接している場合にはノイズによって大小関係が逆転しやすいため、グループへの追加の判断はグループ内の発生回路の物理情報の差分がある程度大きくなるように行うことが基本となる。この差分の下限を決める閾値を設定することでこの処理を実行することができる。
一方、物理情報が非常に大きく離れた場合にはデバイス間で同一の傾向を示す場合もあり、このような発生回路間で生成されるビットは固有情報として有効ではない。そこでこのような場合、上記の閾値は併せて上限値を設定することでデバイス固有情報として有効なビット数を大きくするようなグループ生成を図ることができる。
グループ生成の条件となる、物理情報のこれらの閾値の設定に関しては、予め与える方法といくつかの発生回路の物理情報を測定してその標準値を計算し、設定する方法が考えられる。また、本実施形態では出力ビット数がグループ構成により変化するため、グループ生成を行った後に出力されるビット列を計算して閾値設定を変更してグループ生成をやり直す方法も考えられる。ビット数が小さい場合には閾値を緩く設定し直す。一方、ビット数が大きすぎる場合には閾値を厳しく設定して十分な出力ビット数を確保しながら出力ビット列の信頼度を向上する方法が考えられる。
グループ生成の条件としてはこれらの閾値の他にデバイス物理情報発生部120において比較的近傍となる発生回路のみからグループを構成する方法も考えられる。これは物理情報に局所性があるような場合に効果があり、このような制約を加えることでデバイス固有情報として有効なビット数を大きくするようなグループ生成を図ることができる。発生回路のインデックスと位置関係が対応している場合には、この制約は制御部500において一定の範囲内のインデックスの発生回路でグループを生成することで実現することができる。
【００１７】
図７は順序情報マッピング部420の構成を示すブロック図である。
グループメモリ700はグループ設定部410で生成された物理情報の発生回路のグループの情報を格納する。グループは発生回路のインデックスの組で表現することができる。グループメモリ700は外部の記憶手段で実現する方法も考えられる。
インデックス読み出し部710はグループメモリ700からインデックスを読み出す処理を行う。
物理情報比較部720は読み出したインデックス読み出し部710で指定された発生回路に対して測定された物理情報を取得し、インデックスのペアに対応する物理情報の大小比較を行い0 or 1のビットを出力する。
バッファ730は物理情報比較部720から出力されたビットを連接してデバイス固有情報となるビット列を形成する。
【００１８】
図８は図７の順序情報マッピング部420の処理を表すフローである。グループメモリ700においてグループの個数をG, グループg(0 ≦g < G)の大きさをL[g], i番目の発生回路のインデックスをN_g[i]で表す（0 ≦ i < L[g]）。以下、詳細に説明する。
初期化処理を行う（ステップS800）。インデックス読み出し部710はグループのインデックスgを0,グループ内でのインデックスi, jをそれぞれ0, 1に設定する。バッファ730の出力系列は空とする。
インデックス読み出し部710はN_g[i], N_g[j]に対応する発生回路をデバイス物理情報発生部120に指定し、測定した物理情報D[j], D[i]を生成させる（ステップS805）。
物理情報比較部720はD[j]とD[i]の大小を比較して出力ビット0 or 1を決定する（ステップS810）。
ステップS810の出力ビットをバッファの出力系列Sに連接する（ステップS815, S820）。
ステップS825において、iがj-1より小さいかを判断し、iがj-1より小さければ、ステップS830でiに１を加えて、ステップS805-S820を実行する。こうして、jより小さいiに対してステップS805-S820を繰り返す（ステップS825, S830）。
i = jとなった場合にはiを初期化する（i ← 0）（ステップS835）。ステップS840において、jがL[g]-1より小さいかを判断し、jがL[g]-1より小さければ、ステップS845でjに１を加えて、ステップS805-S835を実行する。こうして、L[g]より小さいjに対してステップS805-S835を繰り返す（ステップS835, S840, S845）。
j = L[g]となった場合にはjを初期化し（j ← 1）、次のグループの出力生成を行う（ステップS850, S855, S860）。
すべてのグループに対して出力生成の終了を確認し、Sを出力してデバイス固有情報生成処理を終了する（ステップS855, S865）。
このフローでは発生回路のインデックスj, iについて昇順に処理を行っているが、これらは降順に行うこともできる。また、ステップS815,S820の’0’と’1’を反転しても問題ない。
ステップS800においてSを空系列に初期化しているが、デバイス毎に異なる定数を設定する方法も考えられる。また、Sの生成後にデバイス毎に異なる定数を加算する方法も考えられる。デバイス毎にランダムな定数を設定することで攻撃者が解析に必要となる手順を増やす効果を見込むことができる。
Sのビット数Mはグループgの出力ビット数がL[g](L[g]-1)/2となるため、
M = L[0](L[0]-1)/2 +  … + L[G-1](L[G-1] -1)/2    ・・・[式２]  
となる。このMビットに対して[式１]を考慮してのデバイス固有情報としての有効なビット数Nは
N = log(L[0]!)/log(2) +  … + log(L[G-1]!)/log(2)    ・・・[式３]  
となる。出力ビットがデバイス間で独立とならない場合にはそのことも考慮した、Nより小さい値が有効なビット数となる。
【００１９】
図９に示すエラー訂正部300は、初期設定時には順序情報マッピング部420からデバイス固有情報となるビット列Sを受け取り、符号化部900で符号化を行ってパリティもしくはシンドロームを生成してパリティメモリ910に保持する。固有情報生成時にはこのパリティを利用して復号部920で復号を行う。
デバイスの素子の使用時間や環境に伴う劣化により物理情報が変化することは想定され、固有情報を秘密鍵やIDとして使用する場合にはこのような経年劣化が発生しても同一の出力が得られるようにすることが望まれる。図８に示したビット列への変換では隣接する順序情報の反転がビット列における反転に一致するようになるため、順序情報の経年劣化による変化はエラー訂正部で効率よく対処することが可能となる。この対処方法を以下に述べる。
【００２０】
図９に示すようにエラー訂正部300は、符号化部900, パリティメモリ910、復号部920、及びエラー情報管理部930を用意する。エラー情報管理部930は固有情報生成時に訂正処理が実行されたビットの位置と対応するカウンタからなるエラー情報を保持する。エラー情報を格納するメモリはパリティメモリ910と共通化できる場合もある。
エラー情報管理部930は固有情報生成時にエラー情報の中でカウンタ値が決められた閾値よりも大きいビット位置に対しては順序情報マッピング部出力ビット列の対応するビットを反転させる。復号部920はその後復号を実行する。
エラー情報管理部930は固有情報生成時のエラー訂正処理の結果（訂正されたビット位置）に応じてエラー情報を更新する。この更新処理はエラー情報管理部930に登録されているビット位置が訂正された場合はカウンタ値をアップし、訂正されなかった場合にはカウンタ値をダウンする。訂正されたビット位置が登録されていない場合は新たに登録を実行する。
【００２１】
本実施形態においては、初期設定における発生回路の適切なグループ化によってノイズの影響が出力ビット列に現れる確率を小さくすることが可能となり、グループ内の発生回路の順序情報のマッピングに基づく出力生成を併せることでデバイス固有情報として有効なビット数を大きくすることができる。
この有効なビット数の拡大には、グループ内の物理情報に基づく順位情報をすべて含む出力を生成することと、順位の反転の小さい異なる順序情報、つまりはエラーとして発生しやすい順序情報はハミング距離の小さいビット列に変換されるためにエラー訂正におけるシンドロームやパリティの量を抑えることが可能なことが貢献する。本実施形態で生成される出力ビット列の大きさは有効なビット数に比して大きくなるが、ハッシュ関数によって適切な長さに圧縮して暗号化の秘密鍵などに利用することができる。
【実施例】
【００２２】
本実施例のデバイス固有情報生成装置は図４に示した構成と同様である。
デバイス物理情報発生部120のデバイス物理情報の発生回路をリングオッシレータで構成する場合には物理情報はその周波数となり、リングオッシレータの出力で0, 1が一定時間内で反転する回数をカウントして計測してその値を物理情報とすることができる。他の発振回路の場合にも同様に物理情報を計測することができる。
最初に本実施例におけるグループ生成処理S600の実施例を示す。
物理情報の発生回路の個数が8であり、発生回路0,…,7の物理情報（リングオッシレータであれば0,1反転のカウント値）が次のようになるとする。
D[0] = 100, D[1] = 115, D[2] = 95, D[3] = 83, D[4] = 105, D[5] = 108, D[6] = 120, D[7] =  92 
このようなデバイス物理情報発生部に対してグループサイズの上限を3, 閾値Delta = 10以上Dが離れるようにグループを構成する場合、グループ生成は次のように実行される。
（１）  グループ0の生成：
・ 発生回路0はグループ0のメンバーとする。
【００２３】
・ 発生回路1をグループ0に追加するかを判断する。D[0]とD[1]の差分は15で閾値Delta = 10以上であるため、発生回路1はグループ0のメンバーとなる。
【００２４】
・ 発生回路2をグループ0に追加するかを判断する。D[2]とD[0], D[1]の差分はそれぞれ5, 20となり、D[0]との差分が閾値Delta = 10未満となるため、発生回路2はグループ0のメンバーとはならない。
【００２５】
・ 発生回路3をグループ0に追加するかを判断する。D[3]とD[0], D[1]の差分はそれぞれ17, 32となり、いずれも閾値Delta = 10以上となるため、発生回路2はグループ0のメンバーとはなる。・グループ0はグループサイズの上限3に達したため、グループ0は発生回路0, 1, 3で確定する。
グループ1の生成においては既にグループ0のメンバーである発生回路0,1,3を除いてグループ構成を行うため、グループ1の構成はまだグループのメンバーとなってはいない発生回路2から開始する。
グループ1の生成は以下の手順になる。
（２）グループ1の生成：
・ 発生回路2はグループ1のメンバーとする。
【００２６】
・ グループ0のメンバーである発生回路3はスキップして発生回路4をグループ1に追加するかを判断する。D[2]とD[4]の差分は10で閾値Delta = 10以上であるため、発生回路4はグループ1のメンバーとなる。
【００２７】
・ 発生回路5をグループ1に追加するかを判断する。D[5]とD[2], D[4]の差分はそれぞれ10, 3となり、D[4]との差分が閾値Delta = 10未満となるため、発生回路5はグループ1のメンバーとはならない。
【００２８】
・ 発生回路6をグループ1に追加するかを判断する。D[6]とD[2], D[4]の差分はそれぞれ25, 15となり、いずれも閾値Delta = 10以上となるため、発生回路6はグループ0のメンバーとはなる。
・ グループ1はグループサイズの上限3に達したため、グループ1は発生回路2, 4, 6で確定する。
【００２９】
（３）グループ２の生成：
グループ2はグループ0, 1のメンバーでない発生回路5から開始してグループ0, 1と同様に構成して発生回路5, 7で確定される。
以上ですべての発生回路についてのグループ構成検討を完了し、グループメモリ700には次のようなグループリストが登録される。
グループ番号        構成メンバー
0                 0, 1, 3
1                 2, 4, 6
2                 5, 7
次に図７に示した順序情報マッピング部420の各グループに対する出力ビットの実行例を示す。グループgのサイズL[g]=6とする。グループを構成する発生回路1,2,3,4,5の物理情報を
D[1] = 100, D[2] = 120, D[3] = 90, D[4] = 110, D[5] = 80 
とする。図２のリングオッシレータを用いた場合であればこの数値はカウンタで計測したリングオッシレータの周波数を相対的に表す値になる。このとき、図８に従ってこのグループに対する出力ビット列Sを生成すると次のようになる：
初期状態 S = 空系列
j = 2, i= 1 (D[1] < D[2]):  S ← S||0 = 0
j = 3, i= 1 (D[1] > D[3]):  S ← S||1 = 01
i= 2 (D[2] > D[3]):  S ← S||1 = 011
j = 4, i= 1 (D[1] < D[4]):  S ← S||0 = 0110
i= 2 (D[2] > D[4]):  S ← S||1 = 01101
i= 3 (D[3] < D[4]):  S ← S||0 = 011010
j = 5, i= 1 (D[1] > D[5]):  S ← S||1 = 0110101
i= 2 (D[2] > D[5]):  S ← S||1 = 01101011
i= 3 (D[3] > D[5]):  S ← S||1 = 011010111
i= 4 (D[4] > D[5]):  S ← S||1 = 0110101111
つまり、
(A)    D[5]<D[3]<D[1]<D[4]<D[2]
の関係が成り立つ場合にはS = 0110101111が出力ビット列となる。
このマッピングは順序情報間で隣り合う順位の反転を行って他方の順序情報に一致させるための最小の反転回数と出力ビット列間のハミング距離が一致するという性質を実現している。例えば(A)と異なる(B),(C)の順序情報を考えると、その出力ビット列は次のように成る：
(B) D[5]<D[3]<D[4]<D[1]<D[2] : S = 0111101111
(C) D[3]<D[2]<D[4]<D[1]<D[5] : S = 1111000000
(A)と(B)の出力ビット列のハミング距離は1であるが、(A)と(C)では7となる。初期設定で(A)となった場合には(B)はD[1]とD[4]が反転するだけなので発生しやすいが、(C)のような順序が発生する確率は非常に小さいと考えられる。このように図８に示した順序集合からビット列へのマッピングを考えることによって、エラーとして発生のしやすい順序集合にはハミング距離が小さいビット列がアサインされるようになり、エラー訂正において訂正可能なビット数を大きくすることなくPUF出力の信頼性を向上させることができる。
デバイスの経年劣化に対応するエラー訂正部300においてはエラー情報管理部930に格納する、訂正ビット位置とカウンタ値の組から成るエラー情報のレコード個数の最大値と訂正処理の前に反転を行うかどうかを判定するためのカウンタ値の閾値が実装上のパラメータとなる。レコード個数の最大値は訂正可能なエラー数に対してその2倍程度が一つの目安になると考えられる。また、カウンタ値を訂正あり/なしに応じてアップ/ダウンする制御の場合には順序情報のエラー発生確率が変化しなければカウンタ値は指数分布になるため、閾値は比較的小さい値で十分となる。例えばカウンタ値を1〜16として、閾値を8とする設定が考えられる。
【００３０】
図１０は本実施形態のデバイス固有情報生成装置を用いた認証システムの実施例を示している。ホスト装置1010は、アプリケーション装置1000に接続時に認証処理を実施し、認証をパスしたアプリケーション装置とのみアプリケーションデータを受け渡す。例えばホスト装置1010はＰＣ本体で、アプリケーション装置1000はコンテンツ処理を行うＰＣ内部のハードウェアとソフトウェアで構成される。初期設定時と認証処理実施時のホスト装置は異なることもある。
アプリケーション装置1000は本実施形態のデバイス固有情報生成装置400を備えた認証装置1020を備えている。図１０はホスト装置1010から設定されるシステム鍵を用いて認証を行う場合の構成を示しており、初期設定時には固有情報生成装置400とハッシュ関数部310が生成したデバイス固有情報によってホスト装置1010から送られたシステム鍵をマスクして不揮発性メモリ1030に保持する。マスク処理は典型的には加算（排他的論理和）によって実現することができる。アプリケーション実行時の認証処理において認証装置1020は固有情報生成装置400,ハッシュ関数部310で生成したデバイス固有情報とメモリ1030に初期設定時に保持した情報から一時的にシステム鍵を生成する。ホスト装置1010はアプリケーション装置1000にチャレンジデータを送付し、アプリケーション装置1000は生成した秘密鍵を用いて暗号化関数部（もしくは鍵付きのハッシュ関数処理）1040で計算したチャレンジデータに対するレスポンスを返すことでホスト装置1010はアプリケーション装置1000の認証を実行する。
なお、本実施形態のデバイス固有情報生成装置は、デバイス物理情報発生部のデバイス物理情報の発生回路を除く、全部又は一部をコンピュータを用いてソフトウェアで実現することができる。例えば、図４に示す、グループ設定部410、順序情報マッピング部420の動作フローを示す図６，図８の動作をプログラムで記述し、このプログラムをＲＯＭ、ハードディスク等の記憶部に記憶し、演算に必要な情報をＲＡＭ等のメモリに記憶し、ＣＰＵで当該プログラムを動作させることで、本実施形態のデバイス固有情報生成装置の機能をプログラムで実現することができる。
【００３１】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下の構成には限られない。
（付記１）
物理情報の生成回路を複数個持つデバイス物理情報発生部と、
初期設定動作として前記複数の生成回路のグループ化を行うグループ設定部と、
各グループについて、前記デバイス物理情報生成部で生成した物理情報に基づきグループに属する発生回路のペアを比較し、比較結果である大小に応じて決まるビットを連接することで前記グループに対する出力ビット列を生成する順序情報マッピング部と、
を備えたことを特徴とするデバイス固有情報生成装置。
（付記２）
付記１記載のデバイス固有情報生成装置において、
前記グループ設定部は、
前記デバイス物理情報生成部の発生回路を選択する制御部と、
前記制御部で指定された発生回路から得られた物理情報に基づいて該発生回路を生成中のグループのメンバーとするかを決定する物理情報判定部と、
生成中のグループを構成する発生回路のインデックスを保持するメモリと、
を有することを特徴とするデバイス固有情報生成装置。
（付記３）
付記２記載のデバイス固有情報生成装置において、
前記物理情報判定部は、グループ内の発生回路の物理情報の差分に対する閾値を設定し、
グループ内の発生回路の物理情報の差分が前記閾値を超えるようにグループを生成する、ことを特徴とするデバイス固有情報生成装置。
（付記４）
付記３記載のデバイス固有情報生成装置において、
前記閾値により前記物理情報の差分の下限を設定するとともに、前記物理情報の差分の上限となる閾値を設定する、ことを特徴とするデバイス固有情報生成装置。
（付記５）
付記３又は４記載のデバイス固有情報生成装置において、
前記閾値を動的に設定することを特徴とするデバイス固有情報生成装置。
（付記６）
付記１から５のいずれか１に記載のデバイス固有情報生成装置において、
前記順序情報マッピング部は、
前記グループ設定部で生成されたグループの情報を格納するメモリと、
前記メモリから発生回路のインデックスを読み出す処理を行うインデックス読み出し部と、
インデックスのペアに対応する物理情報の大小比較を行いビットを出力する、物理情報比較部と、
前記物理情報比較部から出力されたビットを格納するバッファと、
を有することを特徴とするデバイス固有情報生成装置。
（付記７）
付記１から５のいずれか１に記載のデバイス固有情報生成装置において、
前記順序情報マッピング部は、
デバイス毎に定数値を保持し、生成したビット列に対して定数値を加算して出力する、ことを特徴とするデバイス固有情報生成方式。
（付記８）
付記６記載のデバイス固有情報生成装置において、
前記順序情報マッピング部の出力を処理するエラー訂正部を備え、
前記エラー訂正部は、固有情報生成時に訂正処理を行ったビットの位置とカウンタのペアを保持し、固有情報生成時にエラー訂正処理で前記メモリ上に保持された位置のビットが訂正された場合には前記カウンタを更新し、前記カウンタ値が十分に大きい場合は該ビット位置の値を反転してからエラー訂正処理を実行するエラー情報管理部を有することを特徴とするデバイス固有情報生成装置。
（付記９）
初期設定動作として複数個の物理情報生成回路のグループ化を行い、
各グループについて、生成した物理情報に基づきグループに属する物理情報発生回路のペアを比較し、
比較結果である大小に応じて決まるビットを連接することで前記グループに対する出力ビット列を生成することを特徴とする、デバイス固有情報生成装置のデバイス固有情報生成方法。
（付記１０）
ホスト装置とアプリケーション装置の認証システムにおいて、
前記アプリケーション装置は付記１記載のデバイス固有情報生成装置を備え、
初期設定時には前記アプリケーション装置は前記デバイス固有情報生成装置に基づいて生成したデバイス固有情報で前記ホスト装置から送付された秘密鍵をマスクしてメモリに保持し、前記アプリケーション装置はアプリケーション実行時に前記デバイス固有情報生成装置で生成したデバイス固有情報と前記メモリの保持した値を用いて前記秘密鍵を生成する、ことを特徴とする認証システム。
【産業上の利用可能性】
【００３２】
本発明は暗号化や認証などで使用する秘密鍵や機器IDなどの漏洩を強固に防ぐことが要求されるネットワーク装置や端末などに適用することができる。
【符号の説明】
【００３３】
100, 1020 認証装置
110, 400 固有情報生成装置
120 デバイス物理情報生成部
130 物理情報マッピング部
200 リングオッシレータ
210 マルチプレクサ
220 カウンタ
230、720 比較部
300 エラー訂正部
310 ハッシュ関数部
410 グループ設定部
420 順序情報マッピング部
500 制御部
510 物理情報判定部
520、700、910、1030 メモリ
600-690 グループ設定処理フロー
710 インデックス読み出し部
730 バッファ
800-860 順序情報マッピング処理フロー
600-650, 700-720 グループ設定処理フロー
900 符号化部
920 復号部
930 エラー情報管理部
1000 アプリケーション装置
1010 ホスト装置
1040 暗号化関数部
【図１】
0005724305.tif 000002
【図２】
0005724305.tif 000003
【図３】
0005724305.tif 000004
【図４】
0005724305.tif 000005
【図５】
0005724305.tif 000006
【図６】
0005724305.tif 000007
【図７】
0005724305.tif 000008
【図８】
0005724305.tif 000009
【図９】
0005724305.tif 000010
【図１０】
0005724305.tif 000011