JP6882678B2 - 衝突検出システムおよび衝突検出方法 - Google Patents

衝突検出システムおよび衝突検出方法 Download PDF

Info

Publication number
JP6882678B2
JP6882678B2 JP2017128334A JP2017128334A JP6882678B2 JP 6882678 B2 JP6882678 B2 JP 6882678B2 JP 2017128334 A JP2017128334 A JP 2017128334A JP 2017128334 A JP2017128334 A JP 2017128334A JP 6882678 B2 JP6882678 B2 JP 6882678B2
Authority
JP
Japan
Prior art keywords
puf
result data
value
unit
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017128334A
Other languages
English (en)
Other versions
JP2019012919A (ja
Inventor
泰生 野口
泰生 野口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017128334A priority Critical patent/JP6882678B2/ja
Priority to US15/990,865 priority patent/US10848326B2/en
Publication of JP2019012919A publication Critical patent/JP2019012919A/ja
Application granted granted Critical
Publication of JP6882678B2 publication Critical patent/JP6882678B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • H04L9/3278Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response using physically unclonable functions [PUF]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/26Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Description

本発明は衝突検出システムおよび衝突検出方法に関する。
暗号処理技術を用いてデータ保護やユーザ認証を実現し、情報セキュリティを向上させることが行われている。現在提案されている暗号処理技術の中には、PUF(Physical Unclonable Function)を利用するものがある。PUFは、不純物濃度などの物理的特徴に依存する識別子(PUF値)を出力する関数である。PUF値の違いは、PUF値を生成するPUF回路を製造する上で不可避的に生じる個体差に基づいており、同じPUF値を生成する複数のPUF回路を意図的に製造することは困難である。よって、PUFは複製困難性を有しており、PUF値は識別力の高い識別子となる。
ただし、同じPUF回路から異なるタイミングで生成される複数のPUF値は、互いに大きく異なることはないものの、完全に一致するとは限らない。例えば、周囲温度などの使用状況に応じて、同じPUF回路から生成されるPUF値に揺らぎが生じることがある。そこで、誤り訂正技術を利用してPUF値の揺らぎを吸収することが提案されている。
例えば、PUFを用いて秘密情報を保護するセキュリティ装置が提案されている。提案のセキュリティ装置は、PUF回路を用いてPUF値xを生成し、PUF値xから鍵情報kを生成し、鍵情報kを用いて秘密情報を暗号化して暗号化秘密情報を生成する。セキュリティ装置は、PUF値xに対応する補助データaと鍵情報kのハッシュ値hとを生成し、暗号化秘密情報と補助データaとハッシュ値hを不揮発性メモリに保存する。
秘密情報を使用するとき、セキュリティ装置は、上記と同じPUF回路を用いてPUF値x’を生成し、保存された補助データaを用いてPUF値x’を誤り訂正処理してPUF値x’’を生成し、PUF値x’’から鍵情報k’’を生成する。セキュリティ装置は、鍵情報k’’のハッシュ値h’’を生成し、保存されたハッシュ値hとハッシュ値h’’とを比較する。h’’=hである場合、セキュリティ装置は、その鍵情報k’’を用いて暗号化秘密情報を復号する。h’’=hでない場合、セキュリティ装置は、上記と同じPUF回路を用いてPUF値x’を再生成し、鍵情報k’’を再生成する。
また、例えば、PUFを用いて暗号鍵を保護する暗号鍵供給方法が提案されている。提案の暗号鍵供給方法では、クライアントはPUF値を生成してサーバに送信する。サーバは、PUF値に基づいてクライアントに対応するデバイス固有IDとPUF値の揺らぎを訂正するためのヘルパーデータとを生成し、デバイス固有IDと暗号鍵からハッシュ関数を生成する。サーバはヘルパーデータとハッシュ関数をクライアントに送信し、クライアントはヘルパーデータとハッシュ関数と新たに生成したPUF値から暗号鍵を復元する。
国際公開第2012/164721号 特開2015−65495号公報
PUFが有する複製困難性という特徴から、異なるPUF回路が同一または近似するPUF値を生成する確率は小さい。ただし、その確率がゼロであることは保証されておらず、異なるPUF回路の間で偶然にPUF値の衝突が生じてしまうリスクが残る。PUF値の衝突が生じると、情報セキュリティが低下するおそれがある。
そこで、PUFを利用する複数のセキュリティデバイスの間でPUF値の衝突が生じていないことを確認したい場合がある。しかし、PUF値を保護する観点から、製造後にセキュリティデバイスの外部からPUF値を直接読み出すことが困難である場合があり、どのようにしてPUF値の衝突を検出すればよいかが問題となる。
1つの側面では、本発明は、PUF値の衝突を検出することができる衝突検出システムおよび衝突検出方法を提供することを目的とする。
1つの態様では、被検査装置と検査装置とを有する衝突検査システムが提供される。被検査装置は、生成回路と第1の処理部とを有する。生成回路は、ハードウェアに依存する値を生成する。第1の処理部は、第1の要求に応じて、生成回路が生成した値と誤り訂正符号化方法とを用いて、符号化結果データを生成して出力し、符号化結果データの指定を含む第2の要求に応じて、指定された符号化結果データと生成回路が生成した値と誤り訂正復号方法とを用いて、復号結果データを生成して出力する。検査装置は、記憶部と第2の処理部とを有する。記憶部は、他の被検査装置が生成した第1の符号化結果データと照合用データとを記憶する。第2の処理部は、第1の符号化結果データを被検査装置に対して指定して、第1の符号化結果データに応じた第1の復号結果データを被検査装置から受信し、第1の復号結果データと照合用データとを比較して一致するか否かを判断する。
また、1つの態様では、衝突検出方法が提供される。第1の被検査装置により、第1の被検査装置が有する第1の生成回路のハードウェアに依存した値と誤り訂正符号化方法とを用いて、符号化結果データを生成し、符号化結果データを検査装置に送信する。検査装置により、符号化結果データを第2の被検査装置に送信する。第2の被検査装置により、符号化結果データと第2の被検査装置が有する第2の生成回路のハードウェアに依存した値と誤り訂正復号方法とを用いて、復号結果データを生成し、復号結果データを検査装置に送信する。検査装置により、検査装置が記憶する照合用データと復号結果データとを比較して一致するか否かを判断する。
1つの側面では、PUF値の衝突を検出することができる。
第1の実施の形態の衝突検出システムの例を説明する図である。 第2の実施の形態の情報処理システムの例を示す図である。 第2の実施の形態のPUF装置の例を示すブロック図である。 第2の実施の形態のPUF回路の例を示す図である。 第2の実施の形態の検査装置のハードウェア例を示すブロック図である。 第2の実施の形態の検査装置の機能例を示すブロック図である。 第2の実施の形態の既出データテーブルの例を示す図である。 第2の実施の形態のPUF処理の手順例を示すフローチャートである。 第2の実施の形態の検査処理の手順例を示すフローチャートである。 第3の実施の形態のPUF装置の例を示すブロック図である。 第3の実施の形態のテーブル例を示す図である。 第3の実施の形態のPUF処理の手順例を示すフローチャートである。 第3の実施の形態の検査処理の手順例を示すフローチャートである。 第4の実施の形態のPUF装置の例を示すブロック図である。 第4の実施の形態のテーブル例を示す図である。 第4の実施の形態のPUF処理の手順例を示すフローチャートである。 第4の実施の形態の検査処理の手順例を示すフローチャートである。 第5の実施の形態の情報処理システムの例を示す図である。 第5の実施の形態のPUF装置の例を示すブロック図である。 第5の実施の形態の装置の機能例を示すブロック図である。 第5の実施の形態の検査処理の手順例を示すフローチャートである。 第6の実施の形態のPUF装置の例を示すブロック図である。 第6の実施の形態の検査処理の手順例を示すフローチャートである。 第7の実施の形態の情報処理システムの例を示す図である。 第7の実施の形態のPUF装置の例を示すブロック図である。 第7の実施の形態の装置の機能例を示すブロック図である。 第7の実施の形態の公開テーブルの例を示す図である。 第7の実施の形態の再検査処理の手順例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の衝突検出システムの例を説明する図である。
第1の実施の形態の衝突検出システムは、被検査装置10および検査装置20を有する。被検査装置10は、データ保護やユーザ認証などの暗号処理に用いられるハードウェアセキュリティデバイスである。検査装置20は、被検査装置10が使用される前などに、被検査装置10のセキュリティを検査するコンピュータである。検査装置20は、クライアントコンピュータでもよいしサーバコンピュータでもよい。被検査装置10は検査装置20に接続される。被検査装置10が検査装置20に内蔵されてもよい。
被検査装置10は、生成回路11および処理部12を有する。生成回路11と処理部12の一方または両方が、FPGA(Field Programmable Gate Array)など、製造後に論理回路を変更可能なプログラマブルデバイスを用いて実装されてもよい。また、生成回路11と処理部12の一方または両方が、ASIC(Application Specific Integrated Circuit)など、特定用途の専用回路を用いて実装されてもよい。
生成回路11は、生成回路11のハードウェアに依存する値を生成する。生成回路11が生成する値をPUF値と言うことがある。生成される値は、不純物密度など製造上不可避的に発生する物理的特徴の個体差に依存する。例えば、生成される値の違いは、入力信号の変化に対して出力信号が変わるタイミングの微差や、電源投入直後にメモリ上に現れる初期値の違いなどに基づいて発生する。生成回路11が異なるタイミングで生成する複数の値は、互いに近似するものの同一になるとは限らず、一定の範囲で揺らぐことがある。また、生成回路11が、同種の他の生成回路と同一または近似する値を生成してしまう確率は小さい。ただし、製造上の偶然性からその確率はゼロではない。
処理部12は、被検査装置10の外部から受け付ける第1の要求に応じて、以下に説明する符号化処理を実行する。また、処理部12は、被検査装置10の外部から受け付ける第2の要求に応じて、以下に説明する復号処理を実行する。
符号化処理では、処理部12は、生成回路11が生成した値を生成回路11から読み出す。処理部12は、読み出した値と所定の誤り訂正符号化方法とを用いて、符号化結果データを生成し、符号化結果データを被検査装置10の外部に出力する。このとき、処理部12は、生成回路11から読み出した値そのものは外部に出力しなくてよい。
例えば、処理部12は、生成回路11から読み出した値に近似する他の値を当該読み出した値に訂正するための訂正符号を生成し、符号化結果データとして出力する。また、例えば、処理部12は、第1の要求で指定された平文を暗号化し、暗号文を符号化結果データとして出力する。また、例えば、処理部12は、第1の要求で指定された暗号鍵を暗号化し、暗号化された秘匿化暗号鍵を符号化結果データとして出力する。
復号処理では、処理部12は、生成回路11が生成した値を生成回路11から改めて読み出す。処理部12は、読み出した値と上記の誤り訂正符号化方法に対応する所定の誤り訂正復号方法と第2の要求で指定された符号化結果データとを用いて、復号結果データを生成し、復号結果データを被検査装置10の外部に出力する。このとき、処理部12は、生成回路11から読み出した値そのものは外部に出力しなくてよい。
例えば、処理部12は、生成回路11から読み出した値を誤り訂正して訂正値を算出し、訂正値のハッシュ値を復号結果データとして出力する。また、例えば、処理部12は、第2の要求で指定された暗号文を復号し、復号された平文を復号結果データとして出力する。また、例えば、処理部12は、第2の要求で指定された秘匿化暗号鍵を復号して暗号鍵を抽出し、第2の要求で指定された暗号文を当該抽出した暗号鍵で復号し、復号された平文を復号結果データとして出力する。
検査装置20は、記憶部21および処理部22を有する。記憶部21は、RAM(Random Access Memory)などの揮発性の半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性のストレージでもよい。処理部22は、例えば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。ただし、処理部22は、ASICやFPGAなどの特定用途の専用回路を含んでもよい。プロセッサは、RAMなどのメモリ(記憶部21でもよい)に記憶されたプログラムを実行する。プログラムには衝突検出プログラムが含まれる。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うこともある。
記憶部21は、被検査装置10とは異なる被検査装置10aが生成した符号化結果データ23を記憶する。例えば、符号化結果データ23は、被検査装置10aが上記の処理部12と同様の符号化処理によって生成し、被検査装置10aから検査装置20に送信されたものである。符号化結果データ23の生成では、例えば、被検査装置10aが有する生成回路によって生成された値が使用される。被検査装置10の生成回路11が生成する値と被検査装置10aの生成回路が生成する値との間の差異は、上記の誤り訂正復号方法にとって小さな差異である(訂正可能ノイズに相当する)場合もあるし、大きな差異である(訂正不能ノイズに相当する)場合もある。
また、記憶部21は、照合用データ24を記憶する。照合用データ24は、被検査装置10の検査に使用されるデータである。照合用データ24は、例えば、被検査装置10aが上記の処理部12と同様の復号処理によって生成したハッシュ値である。また、照合用データ24は、例えば、被検査装置10aが符号化結果データ23として暗号文を生成したときに使用された元の平文である。また、照合用データ24は、例えば、被検査装置10に入力することになる暗号文に対応する元の平文である。
処理部22は、符号化結果データ23と照合用データ24を用いて被検査装置10を検査する。処理部22は、符号化結果データ23を指定した第2の要求を被検査装置10に送信し、第2の要求に対する応答として復号結果データ25を被検査装置10から受信する。処理部22は、照合用データ24と復号結果データ25とを比較して一致するか否かを判断する。
照合用データ24と復号結果データ25とが一致する場合、例えば、処理部22は、被検査装置10の生成回路11と被検査装置10aの生成回路の間で、生成される値の衝突が発生すると判定する。その場合、被検査装置10を使用しないか、または、被検査装置10の設定を変更して衝突を回避することが好ましい。一方、照合用データ24と復号結果データ25とが一致しない場合、例えば、処理部22は、被検査装置10の生成回路11と被検査装置10aの生成回路の間で、生成される値の衝突は発生しないと判定する。
例えば、処理部22は、符号化結果データ23として被検査装置10aが生成した訂正符号を被検査装置10に送信し、復号結果データ25として被検査装置10が生成したハッシュ値を受信する。処理部22は、受信したハッシュ値と照合用データ24として被検査装置10aが生成したハッシュ値と比較する。また、例えば、処理部22は、符号化結果データ23として被検査装置10aが生成した暗号文を被検査装置10に送信し、復号結果データ25として被検査装置10が復号した平文を受信する。処理部22は、受信した平文と照合用データ24としての平文とを比較する。また、例えば、処理部22は、符号化結果データ23として被検査装置10aが生成した秘匿化暗号鍵と暗号文とを被検査装置10に送信し、復号結果データ25として被検査装置10が復号した平文を受信する。処理部22は、受信した平文と照合用データ24としての平文とを比較する。
第1の実施の形態の衝突検出システムによれば、複数の被検査装置の外部から、それら複数の被検査装置の内部で使用されている生成回路の値の衝突を検出することができる。これにより、衝突が生じている被検査装置の使用を避けるなどの対策をとることができ、情報セキュリティを向上させることができる。また、被検査装置から生成回路の値そのものを取得しなくても衝突検出が可能となり、生成回路の値を出力するインタフェースを被検査装置に搭載しなくてよく、被検査装置の安全性を向上させることができる。また、誤り訂正技術を利用することで、異なる被検査装置の生成回路が近似する値を生成することも検出でき、生成される値の揺らぎを吸収することができる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、複数のPUF装置を検査する。この情報処理システムは、PUF装置100,100−1,100−2を含む複数のPUF装置と検査装置200とを有する。複数のPUF装置それぞれは、データ保護やユーザ認証などの暗号処理を安全に実行するハードウェアセキュリティデバイスである。検査装置200は、複数のPUF装置をそれぞれ接続して検査するコンピュータである。検査装置200は、クライアントコンピュータでもよいしサーバコンピュータでもよい。
PUF装置の検査は、例えば、PUF装置を製造する製造者によってPUF装置の出荷前に行われる。ただし、PUF装置の検査は、PUF装置を調達してPUF装置を組み込んだ電子機器を提供するベンダーによって行われてもよい。また、PUF装置の検査は、PUF装置またはPUF装置を組み込んだ電子機器を使用するユーザによって行われてもよく、その他の第三者によって行われてもよい。なお、PUF装置を組み込んだ電子機器(例えば、PUF装置を有するサーバ装置)が出荷される場合、PUF装置を電子機器に組み込んだ後にPUF装置の検査を行ってもよい。その場合、ネットワークを介してその電子機器と検査装置200とを接続してもよい。また、後述する検査装置200の検査機能がその電子機器に搭載されるようにしてもよい。
図3は、第2の実施の形態のPUF装置の例を示すブロック図である。
PUF装置100は、入出力インタフェース101、制御部102、PUF回路103、補助データ生成部104、誤り訂正部105およびハッシュ関数部106を有する。PUF装置100の一部分または全体が、FPGAなどのプログラマブルデバイスを用いて実装されてもよい。また、PUF装置100の一部分または全体が、専用回路であるASICを用いて実装されてもよい。PUF装置100−1,100−2などの他のPUF装置も、PUF装置100と同様のハードウェアを用いて実装できる。
入出力インタフェース101は、検査装置200からコマンドを受信し、コマンドの実行結果を検査装置200に出力するインタフェースである。第2の実施の形態ではコマンドの種類として、補助データ取得コマンドとハッシュ値取得コマンドが挙げられる。補助データ取得コマンドに対しては、PUF装置100で生成された補助データが出力される。ハッシュ値取得コマンドには、事前に生成された補助データが付加されている。ハッシュ値取得コマンドに対しては、PUF装置100で生成されたハッシュ値が出力される。補助データの生成やハッシュ値の生成には、PUF装置100内部で生成されるPUF値が使用されるものの、PUF値自体はPUF装置100の外部に出力されない。
制御部102は、入出力インタフェース101からコマンドを取得し、PUF回路103、補助データ生成部104、誤り訂正部105およびハッシュ関数部106を利用して暗号処理を実行し、暗号処理結果を入出力インタフェース101に出力する。
補助データ取得コマンドに対しては、制御部102は、PUF回路103からPUF値を読み出し、読み出したPUF値を補助データ生成部104に入力して補助データを補助データ生成部104から取得する。ハッシュ値取得コマンドに対しては、制御部102は、PUF回路103からPUF値を読み出し、読み出したPUF値とハッシュ値取得コマンドに付加された補助データとを誤り訂正部105に入力して訂正PUF値を誤り訂正部105から取得する。そして、制御部102は、訂正PUF値をハッシュ関数部106に入力してハッシュ値をハッシュ関数部106から取得する。
PUF回路103は、PUFを利用してハードウェア固有の値であるPUF値を生成する電子回路である。PUF値は、不純物密度など製造上不可避的に発生するハードウェアの個体差に依存する。PUF値は、PUF装置100の外部から直接読み出すことは困難となっており、漏洩リスクが小さく物理的に保護されている。PUF値の複製の困難性から、データ保護やユーザ認証などの暗号処理を強化することができる。
PUF値は次のような性質をもつ。PUF回路103が異なるタイミングで生成するPUF値は、大きく異なることはないものの常に同一の値になるとは限らず、PUF装置100の使用環境などに応じて一定の範囲で揺らぐことがある。PUF値の変化は、PUF値の長さ(全ビット数)と比べて十分少ないビットについて発生する。また、PUF回路103が他のPUF回路と同一または十分に近似するPUF値を生成してしまう確率(PUF値が衝突する確率)は十分に小さい。ただし、製造上の偶然性から、複数のPUF回路の間でPUF値の衝突が発生する確率はゼロではない。第2の実施の形態のPUF装置の検査では、PUF値の衝突の検査が行われる。
補助データ生成部104は、制御部102からPUF値を取得し、取得したPUF値に対応する補助データを生成して制御部102に補助データを出力する。補助データは、誤り訂正技術を用いてPUF値に対して生成される付随的ビット列であり、PUF値の揺らぎの訂正に用いられる。第2の実施の形態ではPUF値の揺らぎは、基準となるPUF値に対して付加されたノイズとみなされる。補助データの生成時に補助データ生成部104に入力されたPUF値が基準のPUF値となる。この基準のPUF値から誤り訂正能力の範囲内にある他のPUF値、すなわち、基準のPUF値とのハミング距離が訂正可能ビット数以下である他のPUF値は、補助データを用いて基準のPUF値に変換可能である。
誤り訂正部105は、制御部102からPUF値と補助データを取得し、取得した補助データを用いてPUF値に対して誤り訂正処理を行って訂正PUF値を生成し、訂正PUF値を制御部102に出力する。誤り訂正部105に入力されたPUF値と補助データ生成時の基準のPUF値とが十分に近似している場合、すなわち、両者のハミング距離が訂正可能ビット数以下である場合、誤り訂正が成功するため訂正PUF値は基準のPUF値と一致する。一方、両者のハミング距離が訂正可能ビット数を超える場合、誤り訂正が失敗するため訂正PUF値は基準のPUF値と一致しない。
補助データの生成手順および使用手順は、採用する誤り訂正技術に依存する。補助データの生成手順および使用手順は、特許文献1(国際公開第2012/164721号)にも記載されている。ここでは、補助データの生成手順と使用手順の一例を説明する。
PUF回路103がPUF値x=(x1,x2,x3,x4,x5)=10110を生成し、このPUF値xが補助データ生成部104に入力されたとする。補助データ生成部104は、PUF値xに対して補助データax=(x1+x2,x1+x3,x1+x4,x1+x5)=1001を生成する。ここでは加算記号「+」はビット毎の排他的論理和を示している。その後、PUF回路103がPUF値y=(y1,y2,y3,y4,y5)=10000を生成し、このPUF値yと上記の補助データaxが誤り訂正部105に入力されたとする。誤り訂正部105は、PUF値yに対して補助データay=(y1+y2,y1+y3,y1+y4,y1+y5)=1111を生成する。誤り訂正部105は、補助データaxと補助データayを比較して、エラー値e=ax+ay=(e1,e2,e3,e4)=0110を生成する。
誤り訂正部105は、エラー値eに基づいてPUF値yの中の誤りビットを検出する。ここで、SUM(e)をエラー値eの中の「1」であるビットの数とし、SL(e)=(e1+e2,e1+e3,e1+e4,e1)とする。誤り訂正部105は、SUM(e)と閾値Th=3とを比較し、SUM(e)=2が閾値Th未満であるためy1に誤りはないと判定する。次に、誤り訂正部105は、エラー値e=SL(e)=1100と更新し、SUM(e)=2が閾値Th未満であるためy2に誤りはないと判定する。次に、誤り訂正部105は、エラー値e=SL(e)=0111と更新し、SUM(e)=3が閾値Th以上であるためy3に誤りがあると判定する。
次に、誤り訂正部105は、エラー値e=SL(e)=1110と更新し、SUM(e)=3が閾値Th以上であるためy4に誤りがあると判定する。次に、誤り訂正部105は、エラー値e=SL(e)=0011と更新し、SUM(e)=2が閾値Th未満であるためy5に誤りはないと判定する。SUM(e)と閾値Thの比較をPUF値yのビット数だけ繰り返したため、誤り訂正部105は判定処理を終了する。これにより、PUF値yの中のy3,y4に誤りがあると判定される。誤り訂正部105は、PUF値y=10000を訂正PUF値y’=10110=PUF値xに変換する。
ハッシュ関数部106は、制御部102から訂正PUF値を取得し、所定のハッシュ関数を用いて訂正PUF値のハッシュ値を算出し、ハッシュ値を制御部102に出力する。ハッシュ値から元の訂正PUF値を推測することは困難である。ハッシュ関数部106は、例えば、SHA(Secure Hash Algorithm)256などのハッシュ関数を使用する。
図4は、第2の実施の形態のPUF回路の例を示す図である。
PUF回路103の実装方法としてラッチ回路を利用する方法が考えられる。一例として、PUF回路103は、n個(nはPUF値のビット数を示す自然数)のラッチ回路であるラッチ回路107−1,107−2,…,107−nを含む。n個のラッチ回路はPUF値を構成するnビットに対応する。ラッチ回路107−1はPUF値の最下位ビットの値を出力する。ラッチ回路107−2はPUF値の下から2番目のビットの値を出力する。ラッチ回路107−nはPUF値の最上位ビットの値を出力する。
ラッチ回路107−1,107−2,…,107−nは同じ構造を有する。各ラッチ回路は2つのNAND回路(第1のNAND回路と第2のNAND回路)を含む。第1のNAND回路は、ラッチ回路外部からの入力信号が入力される第1の入力端と、第2のNAND回路の出力信号がフィードバックされる第2の入力端とを有する。また、第1のNAND回路は、出力信号が出力される出力端を有する。第1のNAND回路の出力信号は、ラッチ回路外部への出力信号となる。第2のNAND回路は、第1のNAND回路と同じラッチ回路外部からの入力信号が入力される第1の入力端と、第1のNAND回路の出力信号がフィードバックされる第2の入力端とを有する。また、第2のNAND回路は、出力信号が出力される出力端を有する。
このようなラッチ回路107−1,107−2,…,107−nに対して所定の入力値(例えば、「1」)を入力すると、論理的には、各ラッチ回路の出力値は不定になる。しかし、不純物の密度など各ラッチ回路の物理的特徴から、特定の出力値が出力されやすいという傾向(「1」の出力されやすさと「0」の出力されやすさ)がラッチ回路毎に決まる。よって、ラッチ回路107−1,107−2,…,107−nを用いて生成されるnビットのPUF値は、概ねPUF回路103固有の値をとる。ただし、論理的には各ラッチ回路の出力値は不定であり、常に同じ値が出力されることは保証されない。よって、PUF値は大きく変化しないものの一定範囲で揺らぐことがある。
図5は、第2の実施の形態の検査装置のハードウェア例を示すブロック図である。
検査装置200は、CPU201、RAM202、HDD203、画像信号処理部204、入力信号処理部205、媒体リーダ206、通信インタフェース207および接続インタフェース208を有する。上記のユニットはバス209に接続されている。
CPU201は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU201は、HDD203に記憶されたプログラムやデータの少なくとも一部をRAM202にロードし、プログラムを実行する。なお、CPU201は複数のプロセッサコアを備えてもよく、検査装置200は複数のプロセッサを備えてもよく、以下の処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM202は、CPU201が実行するプログラムやCPU201が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、検査装置200は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD203は、OS(Operating System)やアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、検査装置200は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部204は、CPU201からの命令に従って、検査装置200に接続されたディスプレイ211に画像を出力する。ディスプレイ211としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力信号処理部205は、検査装置200に接続された入力デバイス212から入力信号を取得し、CPU201に通知する。入力デバイス212としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、検査装置200に複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ206は、記録媒体213に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体213として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ206は、例えば、記録媒体213から読み取ったプログラムやデータを、RAM202やHDD203などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU201によって実行される。なお、記録媒体213は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体213やHDD203を、コンピュータ読み取り可能な記録媒体と言うことがある。
通信インタフェース207は、ネットワーク61に接続され、ネットワーク61を介して他の装置と通信を行うインタフェースである。通信インタフェース207は、例えば、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースである。ただし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
接続インタフェース208は、一度に1以上のPUF装置を接続するインタフェースである。PUF装置100,100−1,100−2,…は接続インタフェース208に対して着脱可能である。例えば、接続インタフェース208にPUF装置100を接続し、その後にPUF装置100を取り外してPUF装置100−1を接続するというように、複数のPUF装置を切り替えながら接続することができる。接続インタフェース208は、CPU201からの指示に応じて、接続中のPUF装置に対してコマンドを送信する。接続インタフェース208は、接続中のPUF装置からコマンドの実行結果としてのデータを取得し、取得したデータをCPU201に通知する。
図6は、第2の実施の形態の検査装置の機能例を示すブロック図である。
検査装置200は、検査用データベース221、衝突検出部222および検査結果表示部223を有する。検査用データベース221は、例えば、RAM202またはHDD203に確保した記憶領域を用いて実装される。衝突検出部222および検査結果表示部223は、例えば、CPU201が実行するプログラムを用いて実装される。
検査用データベース221は、これまでに検査したPUF装置についてのデータを蓄積するデータベースである。検査用データベース221に蓄積されるデータは、検査対象とする複数のPUF装置のインタフェースに依存する。第2の実施の形態では検査用データベース221には、各PUF装置から取得された補助データとハッシュ値が蓄積される。
衝突検出部222は、検査装置200に新たなPUF装置が接続されると、検査用データベース221に蓄積されたデータを利用して当該接続されたPUF装置の検査を行う。PUF装置の検査では、衝突検出部222は、接続されたPUF装置のPUF値がこれまでに検査した何れかのPUF装置のPUF値と衝突しているか否か判定する。衝突検出部222の検査方法は、検査対象とする複数のPUF装置のインタフェースに依存する。第2の実施の形態では衝突検出部222は、検査済みのPUF装置の補助データ(既存補助データ)を当該接続されたPUF装置に入力し、当該接続されたPUF装置からハッシュ値を取得する。衝突検出部222は、取得したハッシュ値が検査済みのPUF装置のハッシュ値(既存ハッシュ値)と同一である場合はPUF値の衝突が生じていると判定し、同一でない場合はPUF値の衝突が生じていないと判定する。
第2の実施の形態のPUF装置は誤り訂正技術を用いてPUF値の揺らぎを訂正している。このため、2つのPUF装置の間でPUF値が衝突するとは、原始的なPUF値が完全に一致する場合に限られない。2つのPUF装置の間でPUF値が衝突するとは、2つのPUF装置のPUF値が一方から他方に訂正可能であるほど近似している場合、すなわち、PUF値の揺らぎの範囲が2つのPUF装置の間で重なっている場合を含む。
検査結果表示部223は、衝突検出部222の検査結果をディスプレイ211に表示する。例えば、検査結果表示部223は、接続中のPUF装置について「衝突あり」または「衝突なし」のメッセージをディスプレイ211に表示する。ただし、検査結果表示部223は、衝突ありの場合のみ警告メッセージをディスプレイ211に表示してもよい。また、検査装置200は、衝突検出部222の検査結果を他の出力デバイスに出力することも可能である。例えば、検査装置200は、検査結果をファイルに記録する、検査結果を他の装置に転送する、検査結果をプリンタに印刷させるなどが考えられる。
図7は、第2の実施の形態の既出データテーブルの例を示す図である。
第2の実施の形態では、検査用データベース221は既出データテーブル224を記憶する。既出データテーブル224は、既出補助データおよび既出ハッシュ値の項目を有する。既出補助データの項目には、検査済みのPUF装置から取得された補助データが登録される。既出ハッシュ値の項目には、検査済みのPUF装置から取得されたハッシュ値が登録される。既出データテーブル224では、同一のPUF装置についての既出補助データと既出ハッシュ値とが対応付けられている。
例えば、PUF装置100−1から補助データa#1とハッシュ値hash#1とが取得され、PUF装置100−2から補助データa#2とハッシュ値hash#2とが取得されたとする。この場合、既出データテーブル224には、補助データa#1とハッシュ値hash#1とが対応付けて登録され、また、補助データa#2とハッシュ値hash#2とが対応付けて登録される。
図8は、第2の実施の形態のPUF処理の手順例を示すフローチャートである。
(S110)入出力インタフェース101は、検査装置200からコマンドを受信する。入出力インタフェース101は、受信したコマンドを制御部102に出力する。
(S111)制御部102は、取得したコマンドが補助データ取得コマンドであるか判断する。取得したコマンドが補助データ取得コマンドである場合、ステップS112に処理が進む。取得したコマンドが補助データ取得コマンドでない場合、すなわち、ハッシュ値取得コマンドである場合、ステップS115に処理が進む。
(S112)制御部102は、PUF回路103にPUF値を生成させ、PUF回路103からPUF値を読み出す。PUF値はPUF回路103にデータとして静的に記録されているわけではなく、読み出し毎にPUF回路103がPUF値を生成する。生成されるPUF値は常に同じであるとは限らず、若干変化することがある。
(S113)制御部102は、ステップS112で読み出したPUF値を補助データ生成部104に入力する。補助データ生成部104は、前述のような誤り訂正技術を用いて、ステップS112のPUF値に対応する補助データを生成する。この補助データは、ステップS112のPUF値と近似するPUF値(ハミング距離が訂正可能ビット数以下であるPUF値)を、ステップS112のPUF値に訂正するためのデータである。補助データ生成部104は、生成した補助データを制御部102に出力する。
(S114)制御部102は、ステップS113で取得した補助データを入出力インタフェース101に出力する。入出力インタフェース101は、補助データ取得コマンドに対する応答として補助データを返信する。
(S115)制御部102は、ハッシュ値取得コマンドに付加されて入力された補助データを受け付ける。受け付ける補助データは、PUF装置100が生成した補助データである場合もあるし、他のPUF装置が生成した補助データである場合もある。
(S116)制御部102は、ステップS112と同様にPUF回路103にPUF値を生成させ、PUF回路103からPUF値を読み出す。ここで読み出されるPUF値は、ステップS112のPUF値と同一であるとは限らない。
(S117)制御部102は、ステップS116で読み出したPUF値とステップS115で受け付けた補助データとを誤り訂正部105に入力する。誤り訂正部105は、前述のような誤り訂正技術を用いて、ステップS115の補助データを用いてステップS116のPUF値の誤り訂正を試み、訂正PUF値を生成する。ステップS116のPUF値が、ステップS115の補助データの生成に使用されたPUF値と近似している場合(ハミング距離が訂正可能ビット数以下である場合)、訂正PUF値は補助データ生成時のPUF値と一致する。それ以外の場合、訂正PUF値は補助データ生成時のPUF値と一致しない。誤り訂正部105は、生成した訂正PUF値を制御部102に出力する。
(S118)制御部102は、ステップS117で取得した訂正PUF値をハッシュ関数部106に入力する。ハッシュ関数部106は、所定のハッシュ関数を用いて訂正PUF値のハッシュ値を算出し、ハッシュ値を制御部102に出力する。
(S119)制御部102は、ステップS118で取得したハッシュ値を入出力インタフェース101に出力する。入出力インタフェース101は、ハッシュ値取得コマンドに対する応答としてハッシュ値を返信する。
図9は、第2の実施の形態の検査処理の手順例を示すフローチャートである。
(S210)衝突検出部222は、既出データテーブル224に未選択のレコードが残っているか判断する。未選択のレコードがある場合はステップS211に処理が進み、全てのレコードを選択した場合はステップS215に処理が進む。
(S211)衝突検出部222は、既出データテーブル224から、検査装置200に接続中のPUF装置とは異なる過去に検査したPUF装置についてのレコードを1つ選択する。選択するレコードは、既出補助データと既出ハッシュ値とを含む。
(S212)衝突検出部222は、ステップS211で取得した既出補助データを指定して、接続中のPUF装置にハッシュ値取得コマンドを送信する。衝突検出部222は、ハッシュ値取得コマンドに対する応答としてハッシュ値を取得する。
(S213)衝突検出部222は、ステップS212で取得したハッシュ値がステップS211の既出ハッシュ値と一致するか判断する。取得したハッシュ値が既出ハッシュ値と一致する場合はステップS214に処理が進み、取得したハッシュ値が既出ハッシュ値と一致しない場合はステップS210に処理が進む。
(S214)衝突検出部222は、接続中のPUF装置と過去に検査したPUF装置との間でPUF値の衝突が生じていると判定する。検査結果表示部223は、「衝突あり」のメッセージをディスプレイ211に表示する。
(S215)衝突検出部222は、接続中のPUF装置に補助データ取得コマンドを送信し、補助データ取得コマンドに対する応答として補助データを取得する。
(S216)衝突検出部222は、ステップS215で取得した補助データを指定して、接続中のPUF装置にハッシュ値取得コマンドを送信する。衝突検出部222は、ハッシュ値取得コマンドに対する応答としてハッシュ値を取得する。
(S217)衝突検出部222は、ステップS215で取得した補助データを既出補助データとし、ステップS216で取得したハッシュ値を既出ハッシュ値として、既出補助データと既出ハッシュ値とを対応付けて既出データテーブル224に記録する。
(S218)衝突検出部222は、接続中のPUF装置と過去に検査したPUF装置との間でPUF値の衝突が生じていないと判定する。検査結果表示部223は、「衝突なし」のメッセージをディスプレイ211に表示する。
第2の実施の形態の情報処理システムによれば、それぞれがPUF回路を有する複数のPUF装置の製造後に、それら複数のPUF装置の外部からPUF値の衝突を検出することができる。よって、PUF値が衝突するPUF装置の出荷や使用を避けるなどの対策をとることができ、情報セキュリティを向上させることができる。また、検査装置200はPUF値そのものを取得しなくてもPUF値の衝突を検出できるため、PUF値を外部出力するインタフェースを各PUF装置に搭載しなくてもよく、PUF装置の安全性を向上させることができる。また、誤り訂正技術を利用することで、異なるPUF装置のPUF回路が同一のPUF値を生成した場合に限らず近似するPUF値を生成した場合も、PUF値の衝突として検出でき、PUF値の揺らぎを吸収することができる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。第2の実施の形態と異なる事項を中心に説明し、第2の実施の形態と同様の事項については説明を省略することがある。
第3の実施の形態の情報処理システムは、PUF装置の機能および検査手順が第2の実施の形態と異なる。第3の実施の形態の情報処理システムは、図2に示した第2の実施の形態の情報処理システムと同様の構成によって実現できる。また、第3の実施の形態の検査装置は、図5,6に示した第2の実施の形態の検査装置と同様の構成によって実現できる。検査装置については、第2の実施の形態と同じ符号を用いて説明する。
図10は、第3の実施の形態のPUF装置の例を示すブロック図である。
第2の実施の形態のPUF装置100に代えてPUF装置100aが使用される。PUF装置100aは、入出力インタフェース111、制御部112、PUF回路113、暗号化部114および復号部115を有する。PUF装置100aの一部分または全体が、FPGAなどのプログラマブルデバイスを用いて実装されてもよい。また、PUF装置100aの一部分または全体がASICを用いて実装されてもよい。
入出力インタフェース111は、検査装置200からコマンドを受信し、コマンドの実行結果を検査装置200に出力するインタフェースである。第3の実施の形態ではコマンドの種類として、暗号化コマンドと復号コマンドが挙げられる。暗号化コマンドには平文が付加されている。暗号化コマンドに対しては、平文を暗号化して生成された暗号文が出力される。復号コマンドには暗号文が付加されている。復号コマンドに対しては、暗号文を復号して生成された平文が出力される。暗号化や復号にはPUF値が使用されるものの、PUF値自体はPUF装置100aの外部に出力されない。
制御部112は、入出力インタフェース111からコマンドを取得し、PUF回路113、暗号化部114および復号部115を利用して暗号処理を実行し、暗号処理結果を入出力インタフェース111に出力する。暗号化コマンドに対しては、制御部112は、PUF回路113からPUF値を読み出し、読み出したPUF値と平文とを暗号化部114に入力して暗号文を暗号化部114から取得する。復号コマンドに対しては、制御部112は、PUF回路113からPUF値を読み出し、読み出したPUF値と暗号文とを復号部115に入力して平文を復号部115から取得する。
PUF回路113は、PUFを利用してハードウェア固有の値であるPUF値を生成する電子回路であり、第2の実施の形態のPUF回路103に対応する。
暗号化部114は、制御部112からPUF値と平文を取得し、PUF値を用いて平文を暗号化して暗号文を生成し、暗号文を制御部112に出力する。PUF値は暗号鍵として使用される。PUF値をPUF装置100aの外部から読み出すことは困難であるため、PUF装置100aによって暗号鍵が保護され、PUF装置100aが生成した暗号文を他のPUF装置で復号することは困難となる。ただし、PUF値には揺らぎが生じるため、暗号化部114は、揺らぎを吸収できるように誤り訂正技術を使用する。
一例として、暗号化部114は、誤り訂正符号化関数E2を用いて平文Pを符号化してE2(P)を算出する。暗号化部114は、乱数sを生成し、乱数sを用いてE2(P)をマスク処理してE2(P)+sを算出する。暗号化部114は、誤り訂正符号化関数E1を用いてE2(P)+sを更に符号化してE1(E2(P)+s)を算出する。そして、暗号化部114は、暗号化時におけるPUF値xを用いてE1(E2(P)+s)をマスク処理して、暗号文C=x+E1(E2(P)+s)を生成する。
上記において、加算記号「+」はビット毎の排他的論理和を示す。乱数sのハミング重み(「1」であるビットの数)は、誤り訂正符号化関数E2の訂正可能ビット数以下(E2の誤り訂正能力の範囲内)になるようにする。PUF値xのハミング重みは、誤り訂正符号化関数E1の訂正可能ビット数を超えるようにする。誤り訂正符号化関数E1,E2は、同じ種類の符号方式を用いてもよいし異なる種類の符号方式を用いてもよい。誤り訂正符号化関数E1が用いる符号方式は、好ましくは線形符号方式である。
例えば、誤り訂正符号化関数E1は(n,k1,2d1+1)の線形符号方式を用いる。「n」は符号化後のビット長、「k1」は符号化前のビット長、「d1」は訂正可能ビット数を表す。誤り訂正符号化関数E2は(k2,p,2d2+1)の線形符号方式または非線形符号方式を用いる。「k2」は符号化後のビット長、「p」は符号化前のビット長、「d2」は訂正可能ビット数を示す。k2はk1と同じかk1より小さい。
線形符号の例として、ハミング符号、BCH(Bose Chaudhuri Hocquenghem)符号、リードソロモン符号、ターボ符号、LDPC(Low Density Parity Check)符号、畳み込み符号などを挙げることができる。非線形符号の例として、NR符号、ナドラ符号、グリーン符号などを挙げることができる。誤り訂正符号化関数E1,E2が共にリードソロモン符号を用いる場合、n=2047,k1=1023,k2=511,p=351の実装例が考えられる。また、誤り訂正符号化関数E1,E2が共にBCH符号を用いる場合、n=8191,k1=1535,k2=1023,p=223の実装例が考えられる。
他の例として、暗号化部114は、誤り訂正符号化関数E1を用いて平文Pを符号化してE1(P)を算出する。暗号化部114は、PUF回路113が生成したPUF値xを用いてE1(P)をマスク処理して、暗号文C=x+E1(P)を生成する。ただし、平文Pや暗号文Cを長期保存する場合や公開する場合、PUF値xが推測されて漏洩するリスクを低減するため、上記の暗号文C=x+E1(E2(P)+s)を用いた方が好ましい。乱数sを使用することでPUF値xが推測されるリスクを低減できる。
復号部115は、制御部112からPUF値と暗号文を取得し、PUF値を用いて暗号文を復号して平文を生成し、平文を制御部112に出力する。PUF値は暗号鍵として使用される。暗号化時のPUF値と復号時のPUF値が一致するとは限らないため、復号部115は、揺らぎを吸収できるように誤り訂正技術を使用する。
一例として、復号部115は、復号時におけるPUF値yを用いて暗号文Cをマスク処理してy+Cを算出する。復号部115は、誤り訂正符号化関数E1に対応する誤り訂正復号関数D1を用いて、y+Cを復号してD1(y+C)を算出する。そして、復号部115は、誤り訂正符号化関数E2に対応する誤り訂正復号関数D2を用いて、D1(y+C)を更に復号して平文P=D2(D1(y+C))を生成する。
暗号文C=x+E1(E2(P)+s)が入力された場合、y+C=x+y+E1(E2(P)+s)となる。PUF値x,yの間のハミング距離が誤り訂正復号関数D1の訂正可能ビット数以下である場合、x+yは除去可能ノイズとなり、D1(y+C)=E2(P)+sとなる。誤り訂正復号関数D1の訂正可能ビット数は、同一のPUF回路が生成するPUF値の間のハミング距離が訂正可能ビット数以下になるように設定される。そして、乱数sのハミング重みは誤り訂正復号関数D2の訂正可能ビット数以下であるため、D2(E2(P)+s)=Pとなり、平文Pが正しく抽出される。
他の例として、復号部115は、復号時におけるPUF値yを用いて暗号文Cをマスク処理してy+Cを算出する。復号部115は、誤り訂正復号関数D1を用いて、y+Cを復号して平文P=D1(y+C)を算出する。暗号文C=x+E1(P)が入力された場合、y+C=x+y+E1(P)となる。PUF値x,yの間のハミング距離が誤り訂正復号関数D1の訂正可能ビット数以下である場合、D1(y+C)=D1(x+y+E1(P))=Pとなり、平文Pが正しく抽出される。
図11は、第3の実施の形態のテーブル例を示す図である。
第3の実施の形態では、検査用データベース221は既出データテーブル225および元データテーブル226を記憶する。既出データテーブル225は、既出暗号文の項目を有する。既出暗号文の項目には、検査済みのPUF装置から取得された暗号文が登録される。元データテーブル226は、照合用平文の項目を有する。照合用平文の項目には、複数のPUF装置の検査に共通に用いる平文が予め登録されている。
例えば、元データテーブル226に登録された平文plainが1つのPUF装置に入力される。平文plainに対応する暗号文cipher#1が当該1つのPUF装置から取得されると、暗号文cipher#1が既出データテーブル225に登録される。また、元データテーブル226に登録された平文plainが別のPUF装置に入力される。平文plainに対応する暗号文cipher#2が当該別のPUF装置から取得されると、暗号文cipher#2が既出データテーブル225に登録される。
図12は、第3の実施の形態のPUF処理の手順例を示すフローチャートである。
(S120)入出力インタフェース111は、検査装置200からコマンドを受信する。入出力インタフェース111は、受信したコマンドを制御部112に出力する。
(S121)制御部112は、取得したコマンドが暗号化コマンドであるか判断する。暗号化コマンドである場合、ステップS122に処理が進む。暗号化コマンドでない場合、すなわち、復号コマンドである場合、ステップS127に処理が進む。
(S122)制御部112は、暗号化コマンドに付加されて入力された平文Pを受け付ける。平文Pとしては元データテーブル226の照合用平文が想定される。
(S123)制御部112は、PUF回路113からPUF値xを読み出す。
(S124)制御部112は、ステップS122で受け付けた平文PとステップS123で読み出したPUF値xを暗号化部114に入力する。暗号化部114は、ハミング重みについて所定の条件を満たす乱数sを生成する。
(S125)暗号化部114は、所定の誤り訂正符号化関数E1,E2と、入力された平文PおよびPUF値xと、ステップS124で生成した乱数sを用いて、所定の暗号化手順に従って暗号文Cを生成する。例えば、暗号化部114はC=x+E1(E2(P)+s)を生成する。ただし、他の方法で暗号文Cを生成することも可能である。暗号化部114は、生成した暗号文Cを制御部112に出力する。
(S126)制御部112は、暗号文Cを入出力インタフェース111に出力する。入出力インタフェース111は、暗号化コマンドに対する応答として暗号文Cを返信する。
(S127)制御部112は、復号コマンドに付加されて入力された暗号文Cを受け付ける。暗号文Cとしては既出データテーブル225の中の既出暗号文が想定される。
(S128)制御部112は、PUF回路113からPUF値yを読み出す。ここで読み出されるPUF値yは、ステップS123のPUF値xと同一であるとは限らない。
(S129)制御部112は、ステップS127で受け付けた暗号文CとステップS128で読み出したPUF値yを復号部115に入力する。復号部115は、所定の誤り訂正復号関数D1,D2と、入力された暗号文CおよびPUF値yを用いて、所定の復号手順に従って平文Pを生成する。例えば、復号部115はP=D2(D1(y+C))を生成する。ただし、他の方法で平文Pを生成することも可能である。暗号化時に使用されたPUF値xと復号時に使用するPUF値yとが近似している場合のみ、暗号文Cから元の平文が正しく抽出される。復号部115は、生成した平文Pを制御部112に出力する。
(S130)制御部112は、平文Pを入出力インタフェース111に出力する。入出力インタフェース111は、復号コマンドに対する応答として平文Pを返信する。
図13は、第3の実施の形態の検査処理の手順例を示すフローチャートである。
(S220)衝突検出部222は、既出データテーブル225に未選択のレコードが残っているか判断する。未選択のレコードがある場合はステップS221に処理が進み、全てのレコードを選択した場合はステップS225に処理が進む。
(S221)衝突検出部222は、既出データテーブル225から、検査装置200に接続中のPUF装置とは異なる過去に検査したPUF装置についてのレコードを1つ選択する。選択するレコードは、既出暗号文を含む。
(S222)衝突検出部222は、ステップS221で取得した既出暗号文を指定して、接続中のPUF装置に復号コマンドを送信する。衝突検出部222は、復号コマンドに対する応答として復号結果である平文を取得する。
(S223)衝突検出部222は、ステップS222で取得した平文が、元データテーブル226に登録された照合用平文と一致するか判断する。照合用平文と一致する場合はステップS224に処理が進み、一致しない場合はステップS220に処理が進む。
(S224)衝突検出部222は、接続中のPUF装置と過去に検査したPUF装置との間でPUF値の衝突が生じていると判定する。検査結果表示部223は、「衝突あり」のメッセージをディスプレイ211に表示する。
(S225)衝突検出部222は、元データテーブル226に登録された照合用平文を指定して、接続中のPUF装置に暗号化コマンドを送信する。衝突検出部222は、暗号化コマンドに対する応答として暗号文を取得する。
(S226)衝突検出部222は、ステップS225で取得した暗号文を既出暗号文として既出データテーブル225に記録する。
(S227)衝突検出部222は、接続中のPUF装置と過去に検査したPUF装置との間でPUF値の衝突が生じていないと判定する。検査結果表示部223は、「衝突なし」のメッセージをディスプレイ211に表示する。
第3の実施の形態の情報処理システムによれば、第2の実施の形態と同様の効果が得られる。また、第3の実施の形態の情報処理システムでは、PUF装置の外部から読み出し困難なPUF値を暗号鍵として用いて、PUF装置の内部で暗号化および復号が行われる。このため、暗号鍵が保護されると共に、あるPUF装置で暗号化したデータを他のPUF装置で復号することが困難となり、情報セキュリティが向上する。
[第4の実施の形態]
次に、第4の実施の形態を説明する。第2および第3の実施の形態と異なる事項を中心に説明し、これらの実施の形態と同様の事項については説明を省略することがある。
第4の実施の形態の情報処理システムは、PUF装置の機能および検査手順が、第2および第3の実施の形態と異なる。第4の実施の形態の情報処理システムは、図2に示した第2の実施の形態の情報処理システムと同様の構成によって実現できる。また、第4の実施の形態の検査装置は、図5,6に示した第2の実施の形態の検査装置と同様の構成によって実現できる。検査装置については、第2の実施の形態と同じ符号を用いて説明する。
図14は、第4の実施の形態のPUF装置の例を示すブロック図である。
第2の実施の形態のPUF装置100に代えてPUF装置100bが使用される。PUF装置100bは、入出力インタフェース121、制御部122、PUF回路123、鍵秘匿化部124、鍵復元部125、暗号化部126および復号部127を有する。PUF装置100bの一部分または全体が、FPGAなどのプログラマブルデバイスを用いて実装されてもよいしASICを用いて実装されてもよい。
入出力インタフェース121は、検査装置200からコマンドを受信し、コマンドの実行結果を検査装置200に出力するインタフェースである。第4の実施の形態ではコマンドの種類として、鍵秘匿化コマンド、暗号化コマンドおよび復号コマンドが挙げられる。鍵秘匿化コマンドには暗号鍵が付加されている。鍵秘匿化コマンドに対しては、暗号鍵を暗号化して生成された秘匿化暗号鍵が出力される。暗号化コマンドには平文と秘匿化暗号鍵が付加されている。暗号化コマンドに対しては、平文を暗号化して生成された暗号文が出力される。復号コマンドには暗号文と秘匿化暗号鍵が付加されている。復号コマンドに対しては、暗号文を復号して生成された平文が出力される。暗号鍵の秘匿化や復元にはPUF値が使用されるものの、PUF値自体はPUF装置100bの外部に出力されない。
制御部122は、入出力インタフェース121からコマンドを取得し、PUF回路123、鍵秘匿化部124、鍵復元部125、暗号化部126および復号部127を利用して暗号処理を実行し、暗号処理結果を入出力インタフェース121に出力する。
鍵秘匿化コマンドに対しては、制御部122は、PUF回路123からPUF値を読み出し、読み出したPUF値と暗号鍵とを鍵秘匿化部124に入力して秘匿化暗号鍵を鍵秘匿化部124から取得する。暗号化コマンドに対しては、制御部122は、PUF回路123からPUF値を読み出し、読み出したPUF値と秘匿化暗号鍵とを鍵復元部125に入力して暗号鍵を鍵復元部125から取得する。そして、制御部122は、復元された暗号鍵と平文とを暗号化部126に入力して暗号文を暗号化部126から取得する。復号コマンドに対しては、制御部122は、暗号化時と同様にPUF回路123からPUF値を読み出し、読み出したPUF値と秘匿化暗号鍵とを鍵復元部125に入力して暗号鍵を鍵復元部125から取得する。そして、制御部122は、復元された暗号鍵と暗号文とを復号部127に入力して平文を復号部127から取得する。
PUF回路123は、PUFを利用してハードウェア固有の値であるPUF値を生成する電子回路であり、第2の実施の形態のPUF回路103に対応する。
鍵秘匿化部124は、制御部122からPUF値と暗号鍵を取得し、PUF値を用いて暗号鍵を暗号化(秘匿化)して秘匿化暗号鍵を生成し、秘匿化暗号鍵を制御部122に出力する。PUF装置100bの外部では暗号鍵そのものを保存する代わりに秘匿化暗号鍵を保存することで、暗号鍵を保護することができる。PUF値をPUF装置100bの外部から読み出すことは困難であるため、PUF装置100bが生成した秘匿化暗号鍵から元の暗号鍵を復元することは、PUF装置100bを用いなければ困難となる。ただし、PUF値には揺らぎが生じるため、鍵秘匿化部124は第3の実施の形態の暗号化部114と同様に、揺らぎを吸収できるように誤り訂正技術を使用する。
一例として、鍵秘匿化部124は、誤り訂正符号化関数E2を用いて暗号鍵keyを符号化してE2(key)を算出する。鍵秘匿化部124は、乱数sを生成し、乱数sを用いてE2(key)をマスク処理してE2(key)+sを算出する。鍵秘匿化部124は、誤り訂正符号化関数E1を用いてE2(key)+sを更に符号化してE1(E2(key)+s)を算出する。そして、鍵秘匿化部124は、鍵秘匿化時のPUF値xを用いてE1(E2(key)+s)をマスク処理して、秘匿化暗号鍵skey=x+E1(E2(key)+s)を生成する。誤り訂正符号化関数E1,E2、乱数sおよびPUF値xがもつ性質は、第3の実施の形態と同様である。
他の例として、鍵秘匿化部124は、誤り訂正符号化関数E1を用いて暗号鍵keyを符号化してE1(key)を算出する。鍵秘匿化部124は、PUF値xを用いてE1(key)をマスク処理して、秘匿化暗号鍵skey=x+E1(key)を生成する。ただし、暗号鍵keyや秘匿化暗号鍵skeyを長期保存する場合や公開する場合、PUF値xが推測されて漏洩するリスクを低減するため、上記の秘匿化暗号鍵skey=x+E1(E2(key)+s)を用いた方が好ましい。
鍵復元部125は、制御部122からPUF値と秘匿化暗号鍵を取得し、PUF値を用いて秘匿化暗号鍵から暗号鍵を復元し、暗号鍵を制御部122に出力する。秘匿化時のPUF値と復元時のPUF値とが一致するとは限らないため、鍵復元部125は、PUF値の揺らぎを吸収できるように誤り訂正技術を使用する。
一例として、鍵復元部125は、復元時のPUF値yを用いて秘匿化暗号鍵skeyをマスク処理してy+skeyを算出する。鍵復元部125は、誤り訂正復号関数D1を用いて、y+skeyを復号してD1(y+skey)を算出する。そして、鍵復元部125は、誤り訂正復号関数D2を用いて、D1(y+skey)を更に復号して暗号鍵key=D2(D1(y+skey))を生成する。
秘匿化暗号鍵skey=x+E1(E2(key)+s)が入力された場合、y+skey=x+y+E1(E2(key)+s)となる。PUF値x,yの間のハミング距離が誤り訂正復号関数D1の訂正可能ビット数以下であれば、D2(D1(x+y+E1(E2(key)+s)))=D2(E2(key)+s)=keyとなる。誤り訂正復号関数D1,D2およびPUF値yがもつ性質は、第3の実施の形態と同様である。
他の例として、鍵復元部125は、復元時のPUF値yを用いて秘匿化暗号鍵skeyをマスク処理してy+skeyを算出する。鍵復元部125は、誤り訂正復号関数D1を用いて、y+skeyを復号して暗号鍵key=D1(y+skey)を算出する。秘匿化暗号鍵skey=x+E1(key)が入力された場合、y+skey=x+y+E1(key)となる。PUF値x,yの間のハミング距離が誤り訂正復号関数D1の訂正可能ビット数以下であれば、D1(x+y+E1(key))=keyとなる。
暗号化部126は、制御部122から暗号鍵と平文を取得し、暗号鍵を用いて平文を暗号化して暗号文を生成し、暗号文を制御部122に出力する。暗号化部126は、AES(Advanced Encryption Standard)などの所定の共通鍵暗号方式を使用する。暗号化部126は、入力された暗号鍵を当該共通鍵暗号方式の共通鍵として使用する。暗号化の際にはPUF装置100bの外部から秘匿化暗号鍵が入力され、PUF装置100bの内部で一時的に暗号鍵が復元され、暗号化が終了すると暗号鍵は破棄される。復元された暗号鍵はPUF装置100bの外部には出力されず、暗号鍵が保護されることになる。
復号部127は、制御部122から暗号鍵と暗号文を取得し、暗号鍵を用いて暗号文を復号して平文を生成し、平文を制御部122に出力する。復号部127は、暗号化部126の暗号処理方法に対応して、AESなどの所定の共通鍵暗号方式を使用する。復号部127は、入力された暗号鍵を当該共通鍵暗号方式の共通鍵として使用する。復号の際にはPUF装置100bの外部から秘匿化暗号鍵が入力され、PUF装置100bの内部で一時的に暗号鍵が復元され、復号が終了すると暗号鍵は破棄される。復元された暗号鍵はPUF装置100bの外部には出力されず、暗号鍵が保護されることになる。
図15は、第4の実施の形態のテーブル例を示す図である。
第4の実施の形態では、検査用データベース221は既出データテーブル227および元データテーブル228を記憶する。既出データテーブル227は、既出秘匿化暗号鍵および既出暗号文の項目を有する。既出秘匿化暗号鍵の項目には、検査済みのPUF装置から取得された秘匿化暗号鍵が登録される。既出暗号文の項目には、検査済みのPUF装置から取得された暗号文が登録される。既出データテーブル227では、同一のPUF装置についての既出秘匿化暗号鍵と既出暗号文とが対応付けられている。元データテーブル228は、照合用平文および暗号鍵の項目を有する。照合用平文の項目には、複数のPUF装置の検査に共通に用いる平文が予め登録されている。暗号鍵の項目には、複数のPUF装置の検査に共通に用いる暗号鍵が予め登録されている。
例えば、元データテーブル228に登録された暗号鍵keyが1つのPUF装置に入力され、暗号鍵keyから生成された秘匿化暗号鍵skey#1が当該1つのPUF装置から取得される。そして、元データテーブル228に登録された平文plainと秘匿化暗号鍵skey#1とが当該1つのPUF装置に入力され、平文plainに対応する暗号文cipher#1が当該1つのPUF装置から取得される。秘匿化暗号鍵skey#1と暗号文cipher#1が対応付けられて既出データテーブル227に登録される。
また、暗号鍵keyが別のPUF装置に入力され、暗号鍵keyから生成された秘匿化暗号鍵skey#2が当該別のPUF装置から取得される。そして、平文plainと秘匿化暗号鍵skey#2とが当該別のPUF装置に入力され、平文plainに対応する暗号文cipher#2が当該別のPUF装置から取得される。秘匿化暗号鍵skey#2と暗号文cipher#2が対応付けられて既出データテーブル227に登録される。
図16は、第4の実施の形態のPUF処理の手順例を示すフローチャートである。
(S140)入出力インタフェース121は、検査装置200からコマンドを受信する。入出力インタフェース121は、受信したコマンドを制御部122に出力する。
(S141)制御部122は、取得したコマンドが鍵秘匿化コマンドであるか判断する。取得したコマンドが鍵秘匿化コマンドである場合、ステップS142に処理が進む。鍵秘匿化コマンドでない場合、ステップS147に処理が進む。
(S142)制御部122は、鍵秘匿化コマンドに付加されて入力された暗号鍵keyを受け付ける。暗号鍵keyとしては元データテーブル228の暗号鍵が想定される。
(S143)制御部122は、PUF回路123からPUF値xを読み出す。
(S144)制御部122は、ステップS142で受け付けた暗号鍵keyとステップS143で読み出したPUF値xを鍵秘匿化部124に入力する。鍵秘匿化部124は、ハミング重みについて所定の条件を満たす乱数sを生成する。
(S145)鍵秘匿化部124は、所定の誤り訂正符号化関数E1,E2と、入力された暗号鍵keyおよびPUF値xと、ステップS144で生成した乱数sを用いて、所定の暗号化手順に従って秘匿化暗号鍵skeyを生成する。例えば、鍵秘匿化部124はskey=x+E1(E2(key)+s)を生成する。ただし、他の方法で秘匿化暗号鍵skeyを生成することも可能である。鍵秘匿化部124は、生成した秘匿化暗号鍵skeyを制御部122に出力する。
(S146)制御部122は、秘匿化暗号鍵skeyを入出力インタフェース121に出力する。入出力インタフェース121は、鍵秘匿化コマンドに対する応答として秘匿化暗号鍵skeyを返信する。
(S147)制御部122は、取得したコマンドが暗号化コマンドであるか判断する。暗号化コマンドである場合、ステップS148に処理が進む。暗号化コマンドでない場合、すなわち、復号コマンドである場合、ステップS153に処理が進む。
(S148)制御部122は、暗号化コマンドに付加されて入力された秘匿化暗号鍵skeyと平文Pを受け付ける。秘匿化暗号鍵skeyとしてはPUF装置100bが生成した秘匿化暗号鍵、平文Pとしては元データテーブル228の照合用平文が想定される。
(S149)制御部122は、PUF回路123からPUF値yを読み出す。ここで読み出されるPUF値yは、ステップS143のPUF値xと同一であるとは限らない。
(S150)制御部122は、ステップS148で受け付けた秘匿化暗号鍵skeyとステップS149で読み出したPUF値yを鍵復元部125に入力する。鍵復元部125は、所定の誤り訂正復号関数D1,D2と、入力された秘匿化暗号鍵skeyおよびPUF値yを用いて、所定の復号手順に従って暗号鍵keyを復元する。例えば、鍵復元部125はkey=D2(D1(y+skey))を生成する。ただし、他の方法で暗号鍵keyを生成することも可能である。秘匿化時に使用されたPUF値xと復元時に使用するPUF値yとが近似している場合のみ、秘匿化暗号鍵skeyから元の暗号鍵keyが正しく抽出される。鍵復元部125は、暗号鍵keyを制御部122に出力する。
(S151)制御部122は、ステップS148で受け付けた平文PとステップS150で取得した暗号鍵keyを暗号化部126に入力する。暗号化部126は、暗号鍵keyを用いて平文Pを暗号化し、暗号文Cを制御部122に出力する。
(S152)制御部122は、暗号文Cを入出力インタフェース121に出力する。入出力インタフェース121は、暗号化コマンドに対する応答として暗号文Cを返信する。
(S153)制御部122は、復号コマンドに付加されて入力された秘匿化暗号鍵skeyと暗号文Cを受け付ける。秘匿化暗号鍵skeyとしては既出データテーブル227に登録された何れかの既出秘匿化暗号鍵が想定され、暗号文Cとしてはその既出秘匿化暗号鍵に対応する既出暗号文が想定される。
(S154)制御部122は、PUF回路123からPUF値yを読み出す。
(S155)制御部122は、ステップS153で受け付けた秘匿化暗号鍵skeyとステップS154で読み出したPUF値yを鍵復元部125に入力する。鍵復元部125は、ステップS150と同様の方法で暗号鍵keyを復元する。鍵復元部125は、暗号鍵keyを制御部122に出力する。
(S156)制御部122は、ステップS153で受け付けた暗号文CとステップS155で取得した暗号鍵keyを復号部127に入力する。復号部127は、暗号鍵keyを用いて暗号文Cを復号し、平文Pを制御部122に出力する。
(S157)制御部122は、平文Pを入出力インタフェース121に出力する。入出力インタフェース121は、復号コマンドに対する応答として平文Pを返信する。
図17は、第4の実施の形態の検査処理の手順例を示すフローチャートである。
(S240)衝突検出部222は、既出データテーブル227に未選択のレコードが残っているか判断する。未選択のレコードがある場合はステップS241に処理が進み、全てのレコードを選択した場合はステップS245に処理が進む。
(S241)衝突検出部222は、既出データテーブル227から、検査装置200に接続中のPUF装置とは異なる過去に検査したPUF装置についてのレコードを1つ選択する。選択するレコードは、既出秘匿化暗号鍵と既出暗号文を含む。
(S242)衝突検出部222は、ステップS241で取得した既出秘匿化暗号鍵と既出暗号文を指定して、接続中のPUF装置に復号コマンドを送信する。衝突検出部222は、復号コマンドに対する応答として復号結果である平文を取得する。
(S243)衝突検出部222は、ステップS242で取得した平文が、元データテーブル228に登録された照合用平文と一致するか判断する。照合用平文と一致する場合はステップS244に処理が進み、一致しない場合はステップS240に処理が進む。
(S244)衝突検出部222は、接続中のPUF装置と過去に検査したPUF装置との間でPUF値の衝突が生じていると判定する。検査結果表示部223は、「衝突あり」のメッセージをディスプレイ211に表示する。
(S245)衝突検出部222は、元データテーブル228に登録された暗号鍵を指定して、接続中のPUF装置に鍵秘匿化コマンドを送信する。衝突検出部222は、鍵秘匿化コマンドに対する応答として秘匿化暗号鍵を取得する。
(S246)衝突検出部222は、ステップS245で取得した秘匿化暗号鍵と元データテーブル228の照合用平文を指定して、接続中のPUF装置に暗号化コマンドを送信する。衝突検出部222は、暗号化コマンドに対する応答として暗号文を取得する。
(S247)衝突検出部222は、ステップS245で取得した秘匿化暗号鍵を既出秘匿化暗号鍵とし、ステップS246で取得した暗号文を既出暗号文として、既出秘匿化暗号鍵と既出暗号文とを対応付けて既出データテーブル227に記録する。
(S248)衝突検出部222は、接続中のPUF装置と過去に検査したPUF装置との間でPUF値の衝突が生じていないと判定する。検査結果表示部223は、「衝突なし」のメッセージをディスプレイ211に表示する。
第4の実施の形態の情報処理システムによれば、第2の実施の形態と同様の効果が得られる。また、第4の実施の形態の情報処理システムでは、データ保護に使用する暗号鍵を変更することが可能となる。また、PUF装置の外部から読み出し困難なPUF値を用いて暗号鍵が秘匿化され、暗号鍵の使用時のみPUF装置の内部で一時的に暗号鍵が復元される。このため、PUF装置の外部で暗号鍵そのものを保存しておかなくてよく、暗号鍵の使用時にもPUF装置の外部に暗号鍵は出力されない。よって、暗号鍵の漏洩リスクが低減する。また、あるPUF装置で秘匿化された暗号鍵を他のPUF装置で使用することが困難となり、情報セキュリティが向上する。
[第5の実施の形態]
次に、第5の実施の形態を説明する。第2〜第4の実施の形態と異なる事項を中心に説明し、これらの実施の形態と同様の事項については説明を省略することがある。
第5の実施の形態の情報処理システムは、PUF値の衝突が検出された場合に、PUF装置の設定を変更することでPUF値の衝突を回避することを試みる。
図18は、第5の実施の形態の情報処理システムの例を示す図である。
第5の実施の形態の情報処理システムは、PUF装置100c,100c−1,100c−2を含む複数のPUF装置、検査装置200aおよび開発装置300を有する。
第5の実施の形態のPUF装置のPUF回路は、FPGAを用いて実装されている。検査装置200aは、第2の実施の形態の検査装置200に代えて使用される。検査装置200aは、PUF回路の回路配置を示すFPGAデータを開発装置300から取得し、接続中のPUF装置にFPGAデータを書き込む。接続中のPUF装置のPUF値が過去に検査したPUF装置と衝突していることを検出すると、検査装置200aは、FPGAデータを書き換えてPUF回路を変更することで衝突回避を試みる。開発装置300は、検査装置200aからの要求に応じてFPGAデータを提供するコンピュータである。開発装置300は、ネットワーク61を介して検査装置200aと接続されている。開発装置300は、クライアントコンピュータでもよいしサーバコンピュータでもよい。
図19は、第5の実施の形態のPUF装置の例を示すブロック図である。
PUF装置100cは、入出力インタフェース131、FPGAデータ記憶部132、制御部133、FPGA134、補助データ生成部135、誤り訂正部136およびハッシュ関数部137を有する。FPGA134を含むPUF装置100c全体をFPGAとして実装してもよいし、FPGA134以外をASICとして実装してもよい。
入出力インタフェース131は、検査装置200aからコマンドを受信し、コマンドの実行結果を検査装置200aに出力する。第5の実施の形態ではコマンドの種類として、書き込みコマンド、補助データ取得コマンドおよびハッシュ値取得コマンドが挙げられる。書き込みコマンドにはFPGAデータが付加されている。書き込みコマンドに対しては、入力されたFPGAデータがFPGAデータ記憶部132に書き込まれる。補助データ取得コマンドおよびハッシュ値取得コマンドは、第2の実施の形態と同様である。
FPGAデータ記憶部132は、FPGAデータを記憶する不揮発性の記憶装置である。FPGAデータ記憶部132として、例えば、フラッシュメモリなどの不揮発性の半導体メモリが使用される。FPGAデータ記憶部132には、書き込みコマンドに応じて入出力インタフェース131からFPGAデータが書き込まれる。
制御部133は、第2の実施の形態の制御部102に対応する。
FPGA134は、PUF装置100cの起動時にFPGAデータ記憶部132からFPGAデータをロードし、FPGAデータに従って論理回路を実現する。これにより、FPGA134には、第2の実施の形態のPUF回路103に相当するPUF回路が実現される。FPGA134は、制御部133からの要求に応じてPUF値を生成してPUF値を提供する。生成されるPUF値はFPGA134にロードされるFPGAデータに依存し、FPGAデータを変更することでPUF値が大きく変化することがある。
補助データ生成部135、誤り訂正部136およびハッシュ関数部137は、第2の実施の形態の補助データ生成部104、誤り訂正部105およびハッシュ関数部106に対応する。なお、図19ではPUF装置100cは第2の実施の形態のPUF装置100と同様の暗号処理機能を有しているが、第3の実施の形態のPUF装置100aや第4の実施の形態のPUF装置100bと同様の暗号処理機能を有してもよい。その場合、PUF装置100cは暗号化部、復号部、鍵秘匿化部、鍵復元部などを有することがある。
検査装置200aおよび開発装置300は、第2の実施の形態の検査装置200と同様のハードウェアを用いて実装することができる。
図20は、第5の実施の形態の装置の機能例を示すブロック図である。
検査装置200aは、検査用データベース231、衝突検出部232、衝突回避部233および検査結果表示部234を有する。検査用データベース231、衝突検出部232および検査結果表示部234は、第2の実施の形態の検査用データベース221、衝突検出部222および検査結果表示部223に対応する。衝突回避部233は、例えば、検査装置200aが有するCPUが実行するプログラムを用いて実装される。
衝突回避部233は、FPGAデータを変更することでPUF値の衝突回避を試みる。衝突回避部233は、衝突検出部232でPUF値の衝突が検出されると、開発装置300に新たなFPGAデータを要求する。衝突回避部233は、開発装置300から取得した新たなFPGAデータを指定して、接続中のPUF装置に書き込みコマンドを送信することで、接続中のPUF装置のFPGAデータを書き換える。衝突回避部233は、接続中のPUF装置を再起動させ、衝突検出部232に再検査を行わせる。
開発装置300は、FPGAデータ記憶部321、回路データ記憶部322およびFPGAデータ合成部323を有する。FPGAデータ記憶部321および回路データ記憶部322は、例えば、開発装置300が有するRAMまたはHDDに確保した記憶領域を用いて実装される。FPGAデータ合成部323は、例えば、開発装置300が有するCPUが実行するプログラムを用いて実装される。
FPGAデータ記憶部321は、FPGA上にPUF回路を形成するためのFPGAデータを記憶する。FPGAデータ記憶部321には、PUF回路を構成する素子の配置が異なるような複数パターンのFPGAデータが用意されている。回路データ記憶部322は、FPGAデータを合成する元となる回路データを記憶する。回路データはPUF回路として機能する論理回路を示す設計データであり、開発装置300のユーザによって予め作成される。同一の回路データから、PUF回路を構成する素子の配置が異なる複数パターンのFPGAデータを合成することが可能である。
FPGAデータ合成部323は、回路データ記憶部322に記憶された回路データから、回路配置の異なる複数パターンのFPGAデータを予め合成しておく。FPGAデータの合成では「シード」と呼ばれる乱数が使用される。例えば、FPGAデータ合成部323は、最初にシードをランダムに選択し、選択したシードを用いて回路配置の最適解の探索を制御する。シードを変えることで、最終的に決定される回路配置が変化する。FPGAデータ合成部323は、異なる複数のシードに対応する複数パターンのFPGAデータを予め合成しておき、FPGAデータ記憶部321に格納する。
FPGAデータ合成部323は、検査装置200aからの要求に応じて、未使用のFPGAデータをFPGAデータ記憶部321の中から選択し、選択したFPGAデータを検査装置200aに提供する。未使用のFPGAデータがFPGAデータ記憶部321の中に無い場合、FPGAデータ合成部323は、回路データ記憶部322に記憶された回路データを用いて追加のFPGAデータを合成する。
図21は、第5の実施の形態の検査処理の手順例を示すフローチャートである。
(S250)衝突検出部232は、以下のステップS251〜S255の試行回数が所定の閾値以上であるか判断する。試行回数が閾値以上である場合はステップS257に処理が進み、試行回数が閾値未満である場合はステップS251に処理が進む。
(S251)衝突回避部233は、開発装置300からFPGAデータを取得する。
(S252)衝突回避部233は、ステップS251で取得したFPGAデータを指定して、接続中のPUF装置に書き込みコマンドを送信する。これにより、接続中のPUF装置に当該FPGAデータが書き込まれる。
(S253)衝突回避部233は、接続中のPUF装置を再起動させる。これにより、ステップS252で書き込まれたFPGAデータが、接続中のPUF装置のFPGAに読み込まれ、そのFPGAデータに従ってPUF回路が形成される。
(S254)衝突検出部232は、検査用データベース231を参照してPUF値の衝突の有無を判定する。例えば、衝突検出部232は、第2の実施の形態のステップS210〜S218に従って衝突検査を行う。ただし、衝突検出部232は、第3の実施の形態のステップS220〜S227や第4の実施の形態のステップS240〜S248に従って衝突検査を行うことも可能である。衝突検出部232は、接続中のPUF装置が有する暗号処理機能に応じて検査方法を変えるようにしてもよい。
(S255)衝突検出部232は、ステップS254でPUF値の衝突が検出されたか判断する。PUF値の衝突が検出された場合はステップS250に処理が進み、PUF値の衝突が検出されなかった場合はステップS256に処理が進む。
(S256)衝突検出部232は、PUF値の衝突が存在しないか解消されたと判定する。検査結果表示部234は、「衝突なし」のメッセージをディスプレイに表示する。
(S257)衝突検出部232は、PUF値の衝突が解消されなかったと判定する。検査結果表示部234は、「衝突回避不可」のメッセージをディスプレイに表示する。
第5の実施の形態の情報処理システムによれば、第2の実施の形態と同様の効果が得られる。また、第5の実施の形態の情報処理システムでは、PUF値の衝突が検出された場合に、PUF装置の設定を変更することでPUF値の衝突が自動的に解消される。よって、PUF装置を破棄せずにそのPUF装置を安全に使用することができる。
[第6の実施の形態]
次に、第6の実施の形態を説明する。第2〜第5の実施の形態と異なる事項を中心に説明し、これらの実施の形態と同様の事項については説明を省略することがある。
第6の実施の形態の情報処理システムは、PUF装置の設定変更の方法が第5の実施の形態と異なる。第6の実施の形態の情報処理システムは、図18に示した第5の実施の形態の情報処理システムと同様の構成によって実現できる。ただし、第6の実施の形態では開発装置300は使用しなくてよい。第6の実施の形態の検査装置は、図20に示した第5の実施の形態の検査装置と同様の構成によって実現できる。検査装置については、第5の実施の形態と同じ符号を用いて説明する。
図22は、第6の実施の形態のPUF装置の例を示すブロック図である。
第5の実施の形態のPUF装置100cに代えてPUF装置100dが使用される。PUF装置100dは、入出力インタフェース141、制御データ記憶部142、制御部143、PUF選択部144、m個のPUF回路(PUF回路145−1,145−2,…,145−m)、補助データ生成部146、誤り訂正部147およびハッシュ関数部148を有する。PUF装置100dの一部分または全体が、FPGAなどのプログラマブルデバイスを用いて実装されてもよいしASICを用いて実装されてもよい。
入出力インタフェース141は、検査装置200aからコマンドを受信し、コマンドの実行結果を検査装置200aに出力する。第6の実施の形態ではコマンドの種類として、読み出しコマンド、書き込みコマンド、補助データ取得コマンドおよびハッシュ値取得コマンドが挙げられる。読み出しコマンドに対しては、制御データ記憶部142から制御データが読み出される。書き込みコマンドには制御データが付加されている。書き込みコマンドに対しては、入力された制御データが制御データ記憶部142に書き込まれる。補助データ取得コマンドおよびハッシュ値取得コマンドは、第5の実施の形態と同様である。
制御データ記憶部142は、制御データを記憶する不揮発性の記憶装置である。制御データ記憶部142として、例えば、フラッシュメモリなどの不揮発性の半導体メモリが使用される。制御データは、PUF回路145−1,145−2,…,145−mの中から1つのPUF回路を選択するためのデータであり、PUF選択部144から参照される。例えば、制御データは、何番目のPUF回路を使用するかを示す非負整数を含む。書き込みコマンドに応じて、入出力インタフェース141から制御データ記憶部142に制御データが書き込まれる。また、読み出しコマンドに応じて、制御データ記憶部142から入出力インタフェース141に制御データが読み出される。
制御部143は、第5の実施の形態の制御部133に対応する。
PUF選択部144は、PUF装置100dの起動時に制御データ記憶部142から制御データをロードし、制御データに従ってPUF回路145−1,145−2,…,145−mの中から1つのPUF回路を選択する。PUF選択部144は、制御部143からPUF値が要求されると、選択したPUF回路からPUF値を読み出し、読み出したPUF値を制御部143に出力する。出力されるPUF値は選択されたPUF回路に依存し、制御データを変更することで出力されるPUF値が大きく変化することがある。
PUF回路145−1,145−2,…,145−mはそれぞれ、PUFを利用してハードウェア固有の値であるPUF値を生成する電子回路である。異なるPUF回路は近似しないPUF値を生成する可能性が高く、1つのPUF回路のPUF値と別のPUF回路のPUF値との間のハミング距離は訂正可能ビット数を超える可能性が高い。制御データを書き換えてPUF装置100dを再起動しない限り、同じPUF回路が使用される。
補助データ生成部146、誤り訂正部147およびハッシュ関数部148は、第5の実施の形態の補助データ生成部135、誤り訂正部136およびハッシュ関数部137に対応する。なお、図22ではPUF装置100dは第2の実施の形態のPUF装置100と同様の暗号処理機能を有しているが、第3の実施の形態のPUF装置100aや第4の実施の形態のPUF装置100bと同様の暗号処理機能を有してもよい。その場合、PUF装置100dは暗号化部、復号部、鍵秘匿化部、鍵復元部などを有することがある。
図23は、第6の実施の形態の検査処理の手順例を示すフローチャートである。
(S260)衝突検出部232は、以下のステップS261〜S266の試行回数が所定の閾値以上であるか判断する。試行回数が閾値以上である場合はステップS268に処理が進み、試行回数が閾値未満である場合はステップS261に処理が進む。
(S261)衝突回避部233は、接続中のPUF装置に読み出しコマンドを送信し、接続中のPUF装置に現在記憶されている制御データを取得する。
(S262)衝突回避部233は、ステップS261で取得した現在の制御データに基づいて次のPUF回路を選択し、選択した次のPUF回路を示す新たな制御データを生成する。例えば、衝突回避部233は、現在の制御データが示すPUF回路よりも番号が1つ大きいPUF回路を、次のPUF回路として選択する。ただし、衝突回避部233は、初回の検査では1番目のPUF回路を選択する。
(S263)衝突回避部233は、ステップS262で生成した新たな制御データを指定して、接続中のPUF装置に書き込みコマンドを送信する。これにより、接続中のPUF装置に新たな制御データが書き込まれる。
(S264)衝突回避部233は、接続中のPUF装置を再起動させる。これにより、ステップS263で書き込まれた制御データが、接続中のPUF装置のPUF選択部に読み込まれ、その制御データに従ってPUF回路が選択される。
(S265)衝突検出部232は、検査用データベース231を参照してPUF値の衝突の有無を判定する。例えば、衝突検出部232は、第2の実施の形態のステップS210〜S218に従って衝突検査を行う。ただし、衝突検出部232は、第3の実施の形態のステップS220〜S227や第4の実施の形態のステップS240〜S248に従って衝突検査を行うことも可能である。衝突検出部232は、接続中のPUF装置が有する暗号処理機能に応じて検査方法を変えるようにしてもよい。
(S266)衝突検出部232は、ステップS265でPUF値の衝突が検出されたか判断する。PUF値の衝突が検出された場合はステップS260に処理が進み、PUF値の衝突が検出されなかった場合はステップS267に処理が進む。
(S267)衝突検出部232は、PUF値の衝突が存在しないか解消されたと判定する。検査結果表示部234は、「衝突なし」のメッセージをディスプレイに表示する。
(S268)衝突検出部232は、PUF値の衝突が解消されなかったと判定する。検査結果表示部234は、「衝突回避不可」のメッセージをディスプレイに表示する。
第6の実施の形態の情報処理システムによれば、第5の実施の形態と同様の効果が得られる。また、第6の実施の形態の情報処理システムでは、プログラマブルデバイスを用いてPUF回路が実装されていなくても、PUF値の衝突回避が可能となる。
[第7の実施の形態]
次に、第7の実施の形態を説明する。第2〜第6の実施の形態と異なる事項を中心に説明し、これらの実施の形態と同様の事項については説明を省略することがある。
第7の実施の形態では、PUF装置を製造する製造者が出荷前にPUF装置を検査し、そのPUF装置を入手したユーザやベンダーなどが確認のため追加的にPUF装置を検査する。追加的な検査を支援するため、第7の実施の形態の情報処理システムは、製造者が検査の過程で生成した検査用データを公開する。
図24は、第7の実施の形態の情報処理システムの例を示す図である。
第7の実施の形態の情報処理システムは、PUF装置100e,100e−1,100e−2を含む複数のPUF装置、検査装置200b,500および公開サーバ400を有する。公開サーバ400および検査装置500は、ネットワーク62に接続されている。ネットワーク62は、インターネットなどの広域ネットワークである。
公開サーバ400は、検査装置200bが検査の過程で生成した検査用データを確認データとして公開するサーバコンピュータである。ネットワーク61,62を介して検査装置200bから公開サーバ400に確認データがアップロードされる。検査装置500は、PUF装置を入手したユーザやベンダーなどが使用するコンピュータである。検査装置500にはPUF装置が接続される。検査装置500は、ネットワーク62を介して公開サーバ400から確認データを取得し、確認データを用いて、入手したPUF装置と入手していない他のPUF装置との間でPUF値の衝突が生じていないことを確認する。
図25は、第7の実施の形態のPUF装置の例を示すブロック図である。
PUF装置100eは、入出力インタフェース151、制御部152、PUF回路153、補助データ生成部154、誤り訂正部155、ハッシュ関数部156およびID記憶部157を有する。PUF装置100e−1,100e−2などの他のPUF装置も、PUF装置100eと同様のハードウェアを用いて実装できる。
入出力インタフェース151は、検査装置200bからコマンドを受信し、コマンドの実行結果を検査装置200bに出力するインタフェースである。第7の実施の形態ではコマンドの種類として、補助データ取得コマンド、ハッシュ値取得コマンドおよびID読み出しコマンドが挙げられる。補助データ取得コマンドおよびハッシュ値取得コマンドは、第2の実施の形態と同様である。ID読み出しコマンドに対しては、PUF装置100eを識別する識別子であるPUF装置IDが出力される。
制御部152は、入出力インタフェース151から補助データ取得コマンドまたはハッシュ値取得コマンドを取得すると、PUF回路153、補助データ生成部154、誤り訂正部155およびハッシュ関数部156を利用して暗号処理を実行する。また、制御部152は、入出力インタフェース151からID読み出し取得コマンドを取得すると、ID記憶部157からPUF装置IDを読み出して入出力インタフェース151に出力する。
PUF回路153、補助データ生成部154、誤り訂正部155およびハッシュ関数部156は、第2の実施の形態のPUF回路103、補助データ生成部104、誤り訂正部105およびハッシュ関数部106に対応する。
なお、図25ではPUF装置100eは第2の実施の形態のPUF装置100と同様の暗号処理機能を有しているが、第3の実施の形態のPUF装置100aや第4の実施の形態のPUF装置100bと同様の暗号処理機能を有してもよい。その場合、PUF装置100eは暗号化部、復号部、鍵秘匿化部、鍵復元部などを有することがある。
ID記憶部157は、PUF装置100eを識別するPUF装置IDを記憶する不揮発性の記憶装置である。ID記憶部157として、例えば、ROM(Read Only Memory)やフラッシュメモリなどの不揮発性の半導体メモリが使用される。ID記憶部157には、他のPUF装置と重複しないように予めPUF装置IDが保存されている。
検査装置200b,500および公開サーバ400は、第2の実施の形態の検査装置200と同様のハードウェアを用いて実装することができる。
図26は、第7の実施の形態の装置の機能例を示すブロック図である。
検査装置200bは、検査用データベース241、衝突検出部242、検査結果表示部243および確認データ送信部244を有する。検査用データベース241、衝突検出部242および検査結果表示部243は、第2の実施の形態の検査用データベース221、衝突検出部222および検査結果表示部223に対応する。確認データ送信部244は、例えば、CPUが実行するプログラムを用いて実装される。
検査用データベース241は、第2の実施の形態の既出データテーブル224と同様の既出データテーブルを記憶する。ただし、第7の実施の形態では既出データテーブルの各レコードにPUF装置IDが更に含まれる。なお、検査用データベース241は、第3の実施の形態の既出データテーブル225や第4の実施の形態の既出データテーブル227と同様の既出データテーブルを記憶してもよい。その場合も、既出データテーブルの各レコードにはPUF装置IDが更に含まれる。また、検査用データベース241は、第3の実施の形態の元データテーブル226や第4の実施の形態の元データテーブル228と同様の元データテーブルを記憶してもよい。
衝突検出部242は、第2の実施の形態の衝突検出部222と同様の方法で衝突検査を行う。ただし、衝突検出部242は、接続中のPUF装置について衝突なしと判定したとき、既出補助データと既出ハッシュ値に加えてPUF装置IDを接続中のPUF装置から取得し、検査用データベース241に記憶された既出データテーブルに登録する。なお、衝突検出部242は、第3の実施の形態や第4の実施の形態と同様の方法で衝突検査を行ってもよい。その場合も、衝突検出部242は、接続中のPUF装置からPUF装置IDを取得して既出データテーブルに登録するようにする。
検査結果表示部243は、衝突検出部242の検査結果をディスプレイに表示する。
確認データ送信部244は、検査が終了したPUF装置について、検査用データベース241に記憶された既出データテーブルを確認データとして公開サーバ400に送信する。検査用データベース241に元データテーブルが記憶されている場合、元データテーブルも確認データに含めて公開サーバ400に送信する。
公開サーバ400は、公開データベース421、確認データ保存部422および確認データ提供部423を有する。公開データベース421は、例えば、RAMまたはHDDに確保した記憶領域を用いて実装される。確認データ保存部422および確認データ提供部423は、例えば、プログラムを用いて実装される。
公開データベース421は、検査装置200bからアップロードされた確認データを記憶する。確認データには既出データテーブルが含まれる。衝突検査に元データテーブルが使用される場合、確認データに更に元データテーブルが含まれる。確認データ保存部422は、検査装置200bから確認データを受信し、公開データベース421に確認データを格納する。確認データ提供部423は、検査装置500からの要求に応じて、公開データベース421から確認データを読み出して検査装置500に送信する。
検査装置500は、確認データ取得部521、ID取得部522、衝突検出部523および検査結果表示部524を有する。確認データ取得部521、ID取得部522、衝突検出部523および検査結果表示部524は、例えば、プログラムを用いて実装される。
確認データ取得部521は、検査装置500にPUF装置が接続されると、公開サーバ400から確認データを取得する。ID取得部522は、接続中のPUF装置にID読み出しコマンドを送信し、接続中のPUF装置のPUF装置IDを取得する。
衝突検出部523は、確認データ取得部521が取得した確認データを用いて、検査装置200bの衝突検出部242と同様の方法で接続中のPUF装置を検査する。衝突検出部523の検査では、接続中のPUF装置のPUF値が、製造者によって出荷された他のPUF装置のPUF値と衝突していないことを確認する。そのとき、確認データには接続中のPUF装置に対応するレコードも含まれているため、衝突検出部523は、ID取得部522が取得したPUF装置IDを含むレコードを無視して検査を行う。検査結果表示部524は、衝突検出部523の検査結果をディスプレイに表示する。
図27は、第7の実施の形態の公開テーブルの例を示す図である。
公開データベース421は、既出データテーブル424を記憶する。既出データテーブル424は、PUF装置ID、既出補助データおよび既出ハッシュ値の項目を有する。PUF装置IDの項目には、検査済みのPUF装置のPUF装置IDが登録される。既出補助データの項目には、検査済みのPUF装置が生成した補助データが登録される。既出ハッシュ値の項目には、検査済みのPUF装置が生成したハッシュ値が登録される。
なお、第3の実施の形態と同様の検査方法を採用する場合、公開データベース421は、PUF装置IDおよび既出暗号文の項目を有する既出データテーブルと、照合用平文の項目を有する元データテーブルとを記憶してもよい。また、第4の実施の形態と同様の検査方法を採用する場合、公開データベース421は、PUF装置ID、既出秘匿化暗号鍵および既出暗号文の項目を有する既出データテーブルと、照合用平文および暗号鍵の項目を有する元データテーブルとを記憶してもよい。
図28は、第7の実施の形態の再検査処理の手順例を示すフローチャートである。
(S310)ID取得部522は、接続中のPUF装置にID読み出しコマンドを送信し、接続中のPUF装置からPUF装置IDを取得する。
(S311)衝突検出部523は、既出データテーブル424に未選択のレコードが残っているか判断する。未選択のレコードがある場合はステップS312に処理が進み、全てのレコードを選択した場合はステップS317に処理が進む。
(S312)衝突検出部523は、既出データテーブル424からレコードを1つ選択する。選択するレコードは、PUF装置IDと既出補助データと既出ハッシュ値を含む。
(S313)衝突検出部523は、ステップS312で取得した既出補助データを指定して、接続中のPUF装置にハッシュ値取得コマンドを送信する。衝突検出部523は、ハッシュ値取得コマンドに対する応答としてハッシュ値を取得する。
(S314)衝突検出部523は、ステップS313で取得したハッシュ値がステップS312の既出ハッシュ値と一致するか判断する。取得したハッシュ値が既出ハッシュ値と一致する場合はステップS315に処理が進み、取得したハッシュ値が既出ハッシュ値と一致しない場合はステップS311に処理が進む。
(S315)衝突検出部523は、ステップS312のPUF装置IDがステップS310で読み出したPUF装置IDと同一であるか判断する。PUF装置IDが同一の場合はステップS311に処理が進み、同一でない場合はステップS316に処理が進む。
(S316)衝突検出部523は、接続中のPUF装置と他の出荷されたPUF装置との間でPUF値の衝突が生じていると判定する。検査結果表示部524は、「衝突あり」のメッセージを検査装置500のディスプレイに表示する。
(S317)衝突検出部523は、接続中のPUF装置と他の出荷されたPUF装置との間でPUF値の衝突が生じていないと判定する。検査結果表示部524は、「衝突なし」のメッセージを検査装置500のディスプレイに表示する。
なお、衝突検出部523は、上記のステップS311〜S314に代えて、第3の実施の形態のステップS220〜S223と同様の処理を実行してもよい。また、衝突検出部523は、上記のステップS311〜S314に代えて、第4の実施の形態のステップS240〜S243と同様の処理を実行してもよい。また、第7の実施の形態と前述の第5の実施の形態または第6の実施の形態とを組み合わせることも可能である。
第7の実施の形態の情報処理システムによれば、第2の実施の形態と同様の効果が得られる。また、第7の実施の形態の情報処理システムでは、PUF装置の製造者以外の者がPUF値の衝突がないことを確認でき、PUF装置を安心して使用することができる。
10,10a 被検査装置
11 生成回路
12,22 処理部
20 検査装置
21 記憶部
23 符号化結果データ
24 照合用データ
25 復号結果データ

Claims (9)

  1. ハードウェアに依存する値を生成する生成回路と、
    第1の要求に応じて、前記生成回路が生成した値と誤り訂正符号化方法とを用いて、符号化結果データを生成して出力し、符号化結果データの指定を含む第2の要求に応じて、前記指定された符号化結果データと前記生成回路が生成した値と誤り訂正復号方法とを用いて、復号結果データを生成して出力する第1の処理部と、
    を有する被検査装置と、
    他の被検査装置が生成した第1の符号化結果データと照合用データとを記憶する記憶部と、
    前記第1の符号化結果データを前記被検査装置に対して指定して、前記第1の符号化結果データに応じた第1の復号結果データを前記被検査装置から受信し、前記第1の復号結果データと前記照合用データとを比較して一致するか否かを判断する第2の処理部と、
    を有する検査装置と、
    を有する衝突検出システム。
  2. 前記第2の処理部は更に、前記第1の復号結果データと前記照合用データとが一致する場合、前記被検査装置に前記生成回路の設定を変更させ、前記第1の符号化結果データに応じた変更後の第1の復号結果データを前記被検査装置から受信し、前記変更後の第1の復号結果データと前記照合用データとを比較する、
    請求項1記載の衝突検出システム。
  3. 前記生成回路はプログラマブルデバイスを含み、
    前記設定の変更では、前記プログラマブルデバイスにロードする回路情報を変更する、
    請求項2記載の衝突検出システム。
  4. 前記被検査装置は複数の生成回路を有し、
    前記設定の変更では、前記複数の生成回路の中から使用する生成回路を選択する、
    請求項2記載の衝突検出システム。
  5. 前記復号結果データの出力では、前記第1の処理部は、前記指定された符号化結果データと前記誤り訂正復号方法とを用いて、前記生成回路が生成した値を訂正した訂正値を算出し、前記訂正値のハッシュ値を含む復号結果データを出力し、
    前記照合用データは前記他の被検査装置が生成した第2のハッシュ値を含み、
    前記比較では、前記第2の処理部は、前記第1の復号結果データに含まれる第1のハッシュ値と前記第2のハッシュ値とを比較する、
    請求項1記載の衝突検出システム。
  6. 前記第1の要求は平文の指定を含み、
    前記符号化結果データの出力では、前記第1の処理部は、前記生成回路が生成した値と前記誤り訂正符号化方法とを用いて、前記指定された平文に対応する暗号文を生成し、前記生成した暗号文を含む符号化結果データを出力し、
    前記復号結果データの出力では、前記第1の処理部は、前記生成回路が生成した値と前記誤り訂正復号方法とを用いて、前記指定された符号化結果データに含まれる暗号文に対応する平文を生成し、前記生成した平文を含む復号結果データを出力し、
    前記第1の符号化結果データは前記他の被検査装置が生成した第1の暗号文を含み、前記照合用データは第2の平文を含み、
    前記比較では、前記第2の処理部は、前記第1の暗号文に対応して前記第1の復号結果データに含まれる第1の平文と前記第2の平文とを比較する、
    請求項1記載の衝突検出システム。
  7. 前記第1の要求は暗号鍵の指定を含み、
    前記符号化結果データの出力では、前記第1の処理部は、前記生成回路が生成した値と前記誤り訂正符号化方法とを用いて、前記指定された暗号鍵に対応する秘匿化暗号鍵を生成し、前記生成した秘匿化暗号鍵を含む符号化結果データを出力し、
    前記第1の処理部は、符号化結果データと平文との指定を含む第3の要求に応じて、前記生成回路が生成した値と前記誤り訂正復号方法とを用いて、前記指定された符号化結果データに含まれる秘匿化暗号鍵に対応する暗号鍵を生成し、前記生成した暗号鍵を用いて、前記指定された平文を暗号化して暗号文を生成し、前記生成した暗号文を出力し、
    前記第2の要求は暗号文の指定を更に含み、
    前記復号結果データの出力では、前記第1の処理部は、前記生成回路が生成した値と前記誤り訂正復号方法とを用いて、前記指定された符号化結果データに含まれる秘匿化暗号鍵に対応する暗号鍵を生成し、前記生成した暗号鍵を用いて、前記指定された暗号文を復号して平文を生成し、前記生成した平文を含む復号結果データを出力し、
    前記第1の符号化結果データは前記他の被検査装置が生成した第1の秘匿化暗号鍵を含み、前記照合用データは第の平文を含み、前記記憶部は更に、前記第1の符号化結果データと前記第1の平文とから前記他の被検査装置が生成した第1の暗号文を記憶し、
    前記比較では、前記第2の処理部は、前記第1の符号化結果データと前記第1の暗号文とから前記被検査装置が生成した前記第1の復号結果データと、前記第1の平文とを比較する、
    請求項1記載の衝突検出システム。
  8. 前記第2の処理部は更に、前記第1の復号結果データと前記照合用データとが一致しない場合、前記被検査装置が生成した第2の符号化結果データを前記被検査装置から受信し、前記第2の符号化結果データを前記記憶部に保存する、
    請求項1記載の衝突検出システム。
  9. 第1の被検査装置、前記第1の被検査装置が有する第1の生成回路のハードウェアに依存した値と誤り訂正符号化方法とを用いて、符号化結果データを生成し、前記符号化結果データを検査装置に送信し、
    前記検査装置、前記符号化結果データを第2の被検査装置に送信し、
    前記第2の被検査装置、前記符号化結果データと前記第2の被検査装置が有する第2の生成回路のハードウェアに依存した値と誤り訂正復号方法とを用いて、復号結果データを生成し、前記復号結果データを前記検査装置に送信し、
    前記検査装置、前記検査装置が記憶する照合用データと前記復号結果データとを比較して一致するか否かを判断する、
    衝突検出方法。
JP2017128334A 2017-06-30 2017-06-30 衝突検出システムおよび衝突検出方法 Active JP6882678B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017128334A JP6882678B2 (ja) 2017-06-30 2017-06-30 衝突検出システムおよび衝突検出方法
US15/990,865 US10848326B2 (en) 2017-06-30 2018-05-29 System and method for collision detection

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017128334A JP6882678B2 (ja) 2017-06-30 2017-06-30 衝突検出システムおよび衝突検出方法

Publications (2)

Publication Number Publication Date
JP2019012919A JP2019012919A (ja) 2019-01-24
JP6882678B2 true JP6882678B2 (ja) 2021-06-02

Family

ID=64739182

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017128334A Active JP6882678B2 (ja) 2017-06-30 2017-06-30 衝突検出システムおよび衝突検出方法

Country Status (2)

Country Link
US (1) US10848326B2 (ja)
JP (1) JP6882678B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10262164B2 (en) 2016-01-15 2019-04-16 Blockchain Asics Llc Cryptographic ASIC including circuitry-encoded transformation function
US11050574B2 (en) * 2017-11-29 2021-06-29 Taiwan Semiconductor Manufacturing Company, Ltd. Authentication based on physically unclonable functions
US11068589B2 (en) * 2017-12-22 2021-07-20 The Boeing Company Interference detecting ring oscillators
US10915635B2 (en) * 2017-12-22 2021-02-09 The Boeing Company Countermeasures to frequency alteration attacks on ring oscillator based physical unclonable functions
US10372943B1 (en) 2018-03-20 2019-08-06 Blockchain Asics Llc Cryptographic ASIC with combined transformation and one-way functions
US10256974B1 (en) 2018-04-25 2019-04-09 Blockchain Asics Llc Cryptographic ASIC for key hierarchy enforcement
WO2020006178A1 (en) * 2018-06-27 2020-01-02 Stc. Unm Correlation-based robust authentication technique using helper data only
CN109858287B (zh) * 2019-01-28 2021-04-16 北京航空航天大学 一种基于互连线的物理不可克隆结构及自加扰电路结构
EP3534288A3 (en) 2019-02-13 2020-08-12 Merck Patent GmbH Methods and systems for token-based anchoring of a physical object in a distributed ledger environment
US11343109B2 (en) * 2019-06-12 2022-05-24 Arizona Board Of Regents On Behalf Of Northern Arizona University Secure enrollment for physical unclonable function devices
TWI721842B (zh) * 2020-03-27 2021-03-11 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5113074B2 (ja) * 2006-11-06 2013-01-09 パナソニック株式会社 情報セキュリティ装置
US8848905B1 (en) * 2010-07-28 2014-09-30 Sandia Corporation Deterrence of device counterfeiting, cloning, and subversion by substitution using hardware fingerprinting
US8868923B1 (en) * 2010-07-28 2014-10-21 Sandia Corporation Multi-factor authentication
CN103583013B (zh) * 2011-06-02 2016-04-13 三菱电机株式会社 密钥信息生成装置以及密钥信息生成方法
JP2015065495A (ja) * 2013-09-24 2015-04-09 ルネサスエレクトロニクス株式会社 暗号鍵供給方法、半導体集積回路および暗号鍵管理装置
DE102013227184A1 (de) * 2013-12-27 2015-07-02 Robert Bosch Gmbh Verfahren zur Absicherung eines Systems-on-a-Chip
DE102014206943A1 (de) * 2014-04-10 2015-10-15 Siemens Aktiengesellschaft Schlüsselerzeugungsvorrichtung und Verfahren zum Erzeugen eines Schlüssels
DE102014117311B4 (de) * 2014-11-26 2017-04-06 Infineon Technologies Ag Kommunikationsanordnung und Verfahren zum Generieren eines Kryptografieschlüssels
DE102016102590B4 (de) * 2016-02-15 2018-10-04 Infineon Technologies Ag Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
US10095889B2 (en) * 2016-03-04 2018-10-09 Altera Corporation Techniques for protecting security features of integrated circuits
US10438190B2 (en) * 2017-07-18 2019-10-08 Square, Inc. Devices with on-board physically unclonable functions
US10819528B2 (en) * 2017-07-18 2020-10-27 Square, Inc. Device security with physically unclonable functions
US10263793B2 (en) * 2017-07-18 2019-04-16 Square, Inc. Devices with modifiable physically unclonable functions
US11552810B2 (en) * 2017-08-03 2023-01-10 Arizona Board Of Regents On Behalf Of Northern Arizona University PUF with dissolvable conductive paths
US10749694B2 (en) * 2018-05-01 2020-08-18 Analog Devices, Inc. Device authentication based on analog characteristics without error correction
US10742406B2 (en) * 2018-05-03 2020-08-11 Micron Technology, Inc. Key generation and secure storage in a noisy environment

Also Published As

Publication number Publication date
US10848326B2 (en) 2020-11-24
JP2019012919A (ja) 2019-01-24
US20190007222A1 (en) 2019-01-03

Similar Documents

Publication Publication Date Title
JP6882678B2 (ja) 衝突検出システムおよび衝突検出方法
US10802910B2 (en) System for identifying and correcting data errors
US10985914B2 (en) Key generation device and key generation method
US10678636B2 (en) Techniques for detecting and correcting errors in data
JP6810348B2 (ja) 暗号データ処理方法、暗号データ処理装置および暗号データ処理プログラム
JP5420114B2 (ja) 鍵情報生成装置及び鍵情報生成方法
TWI557589B (zh) 用於產品驗證和啟動的安全軟體產品識別器
RU2696425C1 (ru) Способ двумерного контроля и обеспечения целостности данных
RU2680350C2 (ru) Способ и система распределенного хранения восстанавливаемых данных с обеспечением целостности и конфиденциальности информации
JP2006121689A (ja) Drmシステムにおけるシステムキーを共有及び生成する方法、並びにその装置
WO2015087426A1 (ja) ストレージ装置及びストレージ装置の制御方法
US10050645B2 (en) Joint encryption and error correction encoding
JP2013005314A (ja) 半導体装置
JP5854443B2 (ja) 誤り訂正符号方式を用いて計算環境における資産集合についての識別子を生成する変化許容力を有する方法
CN104756120A (zh) 存储和访问数据
EP3697021B1 (en) Secure and encrypted logging systems and methods with data recovery
JP6488954B2 (ja) 暗号データ処理方法、暗号データ処理システム、暗号データ処理装置および暗号データ処理プログラム
US20150249467A1 (en) Storage device, controller, and data writing method
US11829231B2 (en) Methods and systems for generating core dump in a user equipment
US11531785B2 (en) PUF-based data integrity
JP5986279B2 (ja) 半導体装置
JP2011123229A (ja) プログラムコード暗号化装置及びプログラム
US11757624B2 (en) Data transfer control device, data transfer control system, and data transfer control method
WO2023162151A1 (ja) データ保管装置、データ保管方法及び、プログラム
KR102425916B1 (ko) 가변 길이 퍼지 데이터를 지원하는 격자 기반 퍼지 추출 장치 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200310

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200316

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200316

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210318

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210406

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210419

R150 Certificate of patent or registration of utility model

Ref document number: 6882678

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150