JP5710460B2 - 暗号化鍵生成装置およびプログラム - Google Patents

暗号化鍵生成装置およびプログラム Download PDF

Info

Publication number
JP5710460B2
JP5710460B2 JP2011275637A JP2011275637A JP5710460B2 JP 5710460 B2 JP5710460 B2 JP 5710460B2 JP 2011275637 A JP2011275637 A JP 2011275637A JP 2011275637 A JP2011275637 A JP 2011275637A JP 5710460 B2 JP5710460 B2 JP 5710460B2
Authority
JP
Japan
Prior art keywords
information
encryption key
puf
output
unit
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
JP2011275637A
Other languages
English (en)
Other versions
JP2013126221A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011275637A priority Critical patent/JP5710460B2/ja
Priority to US13/710,694 priority patent/US9537653B2/en
Publication of JP2013126221A publication Critical patent/JP2013126221A/ja
Application granted granted Critical
Publication of JP5710460B2 publication Critical patent/JP5710460B2/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/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
    • 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

Landscapes

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

Description

本発明の実施の形態は、暗号化鍵生成装置およびプログラムに関する。
暗号プロトコルは、暗号化鍵や認証鍵(以下では、これらを暗号化鍵と総称する。)を利用して、守秘や認証などの機能を実現する。暗号プロトコルは、秘密裏に生成された暗号化鍵を利用する必要がある。暗号化鍵の秘匿性を高める方法として、物理的複製困難関数(PUF:Physically Unclonable Function)を利用して暗号化鍵を生成する方法が知られている。
物理的複製困難関数は、同一の入力からデバイス固有の値を出力する関数である。物理的困難関数を利用して生成された暗号化鍵は、外部のデバイスで複製することが困難になるため、鍵生成や認証における要素技術として注目を集めている。物理的複製困難関数を用いて暗号化鍵を生成する場合でも、効率良く暗号化鍵を生成できるようにすることが求められる。
Zdenek (Sid) Paral and Srinivas Devadas, "Reliable and Efficient PUF-Based Key Generation Using Pattern Matching", 2011 IEEE International Symposium on Hardware-Oriented Security and Trust (HOST 2011)
本発明が解決しようとする課題は、物理的複製困難関数を用いて効率良く暗号化鍵を生成することができる暗号化鍵生成装置およびプログラムを提供することである。
実施形態の暗号化鍵生成装置は、変換部と、記憶制御部と、生成部と、比較部と、マスク処理部と、を備える。前記変換部は、物理的複製困難関数により入力情報を変換して出力情報を出力する。前記記憶制御部は、前記出力情報の中で複数のインデックス情報がそれぞれ指し示す位置の複数の情報を複数のパターン情報として記憶部に記憶させる。前記生成部は、複数の前記インデックス情報に基づいて暗号化鍵を生成する。前記比較部は、前記出力情報と複数の前記パターン情報とをそれぞれ比較して、前記出力情報の中で複数の前記パターン情報と類似する情報が出現する複数の位置を検出する。前記マスク処理部は、複数の前記パターン情報をマスク処理する。また、前記記憶制御部は、マスク処理された複数の前記パターン情報を前記記憶部に記憶させ、前記比較部は、マスク処理された複数の前記パターン情報をマスク処理された前記出力情報と比較する、または、マスク処理された複数の前記パターン情報をマスク処理前の複数の前記パターン情報に復元して前記出力情報と比較することで、前記出力情報の中で複数の前記パターン情報と類似する複数の情報が出現する複数の位置を検出し、前記生成部は、前記比較部が検出した複数の位置を複数の前記インデックス情報として再現し、再現した複数の前記インデックス情報に基づいて前記暗号化鍵を再現する。
第1実施形態の暗号化鍵生成装置の機能ブロック図。 第1実施形態の暗号化鍵設定の処理の流れを示すフローチャート。 第1実施形態の暗号化鍵再現の処理の流れを示すフローチャート。 第1実施例の暗号化鍵生成装置のブロック図。 第1実施例の暗号化鍵設定の処理の流れを示すフローチャート。 第1実施例の暗号化鍵再現の処理の流れを示すフローチャート。 第2実施形態の暗号化鍵生成装置の機能ブロック図。 第2実施形態の暗号化鍵設定の処理の流れを示すフローチャート。 第2実施形態の暗号化鍵再現の処理の流れを示すフローチャート。 第2実施例の暗号化鍵生成装置のブロック図。 第2実施例の暗号化鍵設定の処理の流れを示すフローチャート。 第2実施例の暗号化鍵再現の処理の流れを示すフローチャート。
実施形態の暗号化鍵生成装置は、暗号化鍵設定と、暗号化鍵再現の2つの処理を実行する機能を持つ。暗号化鍵設定は、暗号化鍵を最初に生成する処理であり、暗号化鍵再現は、暗号化鍵が必要となるときに、暗号化鍵設定において生成した暗号化鍵を再現する処理である。つまり、オリジナルの暗号化鍵を生成することが暗号化鍵設定であり、オリジナルの暗号化鍵と同じ暗号化鍵を生成することが暗号化鍵再現である。暗号化鍵生成は、暗号化鍵設定と暗号化鍵再現の双方を含む概念である。
(第1実施形態)
<概要>
まず、第1実施形態の暗号化鍵生成装置の概要を説明する。第1実施形態の暗号化鍵生成装置は、暗号化鍵設定において、情報の位置を示すインデックス情報を用いて暗号化鍵を生成し、暗号化鍵に用いたインデックス情報が示す位置のPUFの出力をパターン情報として記憶する。また、第1実施形態の暗号化鍵生成装置は、暗号化鍵再現において、記憶したパターン情報と類似するPUFの出力の位置を探索(パターン照合)することで、暗号化鍵設定で暗号化鍵の生成に用いたインデックス情報を再現し、暗号化鍵を再現する。
暗号化鍵の生成に用いるインデックス情報は情報量が小さいため、多くのインデックス情報を組み合わせて一つの暗号化鍵を生成する必要がある。そこで、第1実施形態の暗号化鍵生成装置は、ラウンド処理の繰り返しにより一つの暗号化鍵を生成する。このとき、第1実施形態の暗号化鍵生成装置は、PUFの出力を効率よく利用してラウンド処理の回数を少なくできるようにするために、一つのラウンドで複数のインデックス情報を扱う。
また、一つのラウンドにおけるPUFの出力の中で複数のインデックス情報が示す位置の複数のパターン情報をそのまま記憶すると、情報に重なりが生じてインデックス情報の相互関係が推測される虞がある。そこで、第1実施形態の暗号化鍵生成装置では、マスク生成関数(MGF:Mask Generation Function)を利用して、記憶するパターン情報ごとに異なるデータ(マスク情報)を加算することで、暗号化鍵の生成に用いたインデックス情報の秘匿性を高める。
<構成>
次に、図1を参照して、第1実施形態の暗号化鍵生成装置の概略構成を説明する。図1は、第1実施形態の暗号化鍵生成装置100の機能的な構成を示す機能ブロック図である。
図1に示すように、本実施形態の暗号化鍵生成装置100は、通信部101、記憶部102、PUF入力生成部103、PUF104、PUF出力一時記憶部105、インデックス情報生成部106、MGF107、マスク処理部108、比較部109、および鍵生成部110を備える。
通信部101は、暗号化鍵生成装置100と外部システムとの間の通信を行うインターフェースである。
記憶部102は、暗号化鍵設定において、マスク処理部108が生成する後述の変形パターン情報を記憶するメモリである。記憶部102は、例えば、RAM、EEPROM(登録商標)などで構成される。なお、記憶部102は、暗号化鍵生成装置100の外部にあってもよい。記憶部102が暗号化鍵生成装置100の外部にある場合、暗号化鍵生成装置100の各部は、記憶部102に対するデータの書き込みや読み出しを、通信部101を介して行う。
PUF入力生成部103は、予め定められた初期値I_{0,1}あるいはインデックス情報生成部106が出力するインデックス情報I_{r,j}に基づき、PUF104へ入力するPUF入力情報を生成する。例えば、PUF入力生成部103は、PUF入力情報が所定の長さとなるように、初期値I_{0,1}あるいはインデックス情報I_{r,j}に対して予め定められたデータを連結して、PUF入力情報を生成する。また、PUF入力生成部103は、初期値I_{0,1}あるいはインデックス情報I_{r,j}をハッシュ関数などに入力して、PUF入力情報を生成するようにしてもよい。また、PUF入力生成部103に入力される情報が複数ある場合には、PUF入力生成部103は、それら入力情報を連結したり、ビット演算あるいは算術演算することで、PUF入力情報を生成するようにしてもよい。PUF入力生成部103は、初期値I_{0,1}あるいはインデックス情報I_{r,j}に加えて、後述するラウンド番号r、PUF104が出力するビットの番号cn、あるいは回路動作時のクロックサイクル番号(記載は省略する。)などを入力してもよい。
PUF104は、物理的複製困難関数である。物理的複製困難関数は、あるデバイスに搭載されると、同一の入力からそのデバイス固有の値を出力する関数である。非特許文献1において開示される暗号化鍵生成装置は、複数のPUFの出力を排他的論理和演算して得られる値を利用する。以降の説明では、PUF104は、このような複数のPUFとそれらの出力を排他的論理和演算して値を出力する回路や、複数のPUFとそれら出力をビット演算あるいは算術演算して値を出力する回路を用いてもよい。PUF104は、各ラウンドにおいて、PUF入力生成部103が生成したPUF入力情報を入力し、L+W−1ビットのPUF出力情報を出力する。
PUF出力一時記憶部105は、各ラウンドにおいてPUF104が出力するPUF出力情報を一時的に記憶する。本実施形態の暗号化鍵生成装置100は、各ラウンドにおいて、L+W−1ビットのPUF出力情報のうちWビットのデータをパターン情報として利用する。本実施形態においては、PUF出力一時記憶部105は、例えば、L+W−1ビットのレジスタで構成される。このとき、PUF出力一時記憶部105は、当該ラウンドでPUF104が出力するL+W−1ビットのPUF出力情報を保持し、後述するマスク処理部108は、PUF出力一時記憶部105が記憶するL+W−1ビットのPUF出力情報のうち、Wビットのデータを利用する。あるいは、後述する第1実施例のように、PUF出力一時記憶部105は、Wビットのシフトレジスタで構成され、PUF104が1ビット出力するごとに、記憶する中で最も古い1ビットを破棄する構成であってもよい。
インデックス情報生成部106は、各ラウンドにおいて、1からLの間で、N_r個(1≦N_r、rはラウンド番号)のインデックス情報I_{r,1},...,I_{r,N_r}を生成する。各インデックス情報I_{r,j}(1≦j≦N_r)は、1からLの間でランダムに選ばれてもよいし、任意のjとkについて、インデックス情報I_{r,j}とインデックス情報I_{r,k}とがW以上離れるように選ばれてもよい。また、各インデックス情報I_{r,j}は、通信部101により暗号化鍵生成装置100の外部から受け付けるなどして、予め定められた値を用いてもよい。各インデックス情報I_{r,j}を外部から受け付ける場合には、暗号化鍵生成装置100はインデックス情報生成部106を備えていなくてもよい。インデックス情報I_{r,j}は、PUF出力情報の中のパターン情報の位置を指し示す情報である。本実施形態では、インデックス情報I_{r,j}がPUF出力情報の中のパターン情報の先頭位置を指し示すものとして説明するが、パターン情報の先頭位置に限らず、予め定めた所定の位置を指し示すものであってもよい。
MGF107は、予め定められた初期値I_{0,1}あるいはインデックス情報生成部106が出力するインデックス情報I_{r,j}に基づき、パターン情報に対して加算するマスク情報を生成するマスク生成関数(Mask Generation Function)である。本実施形態にかかる暗号化鍵生成装置100は、各ラウンドにおいて、N_r個のマスク情報M_{r,1},...,M_{r,N_r}を利用する。ハードウェア実装において複数のマスク情報を並行して生成するためには、暗号化鍵生成装置100の中に複数のMGF107が存在してもよい(図1では一つのMFG107のみを図示している。)。あるいは、一つのMGF107をN_r回利用して、N_r個のマスク情報M_{r,1},...,M_{r,N_r}を生成してもよい。また、MGF107は、PUF入力生成部103と一部あるいはすべて同一の処理を行うものであってもよい。MGF107がPUF入力生成部103と同一の処理を行う場合、PUF入力生成部103とMGF107は、同一の処理を行う部分について、単一の装置を用いた構成であってもよい(すべて同一の処理である場合には、PUF入力生成部103とMGF107を単一の装置で構成できる。)。MGF107は、初期値I_{0,1}あるいはインデックス情報I_{r,j}に加えて、ラウンド番号rや1からN_rの間の番号などを入力してもよい。
マスク処理部108は、PUF出力一時記憶部105が記憶するL+W−1ビットのPUF出力情報の出力のうち、インデックス情報I_{r,j}で示される位置からWビットのデータであるパターン情報Y_{r,j}に対して、MGF107が生成するマスク情報M_{r,j}を加算して、変形パターン情報Z_{r,j}を生成する。例えば、マスク情報M_{r,j}がWビットの場合には、マスク処理部108は、パターン情報Y_{r,j}とマスク情報M_{r,j}との排他的論理和により、変形パターン情報Z_{r,j}を生成することができる。また、マスク処理部108は、パターン情報Y_{r,j}とマスク情報M_{r,j}とから、予め定められた規則に従って変形パターン情報Z_{r,j}を生成するようにしてもよい。ハードウェア実装において複数のマスク処理を並行して実行するためには、暗号化鍵生成装置100の中に複数のマスク処理部108が存在してもよい(図1では一つのマスク処理部108のみを図示している。)。あるいは、一つのマスク処理部108をN_r回利用して、N_r個の変形パターン情報Z_{r,1},...,Z_{r,N_r}を生成してもよい。
比較部109は、暗号化鍵再現において、PUF出力一時記憶部105が記憶するPUF出力情報のうちのWビットのデータに対してMGF107が生成するマスク情報M_{r,j}を加算したデータ(以下、参照情報という。)と、記憶部102が記憶する変形パターン情報Z_{r,j}とが、類似のデータであるか否かを判定する。類似のデータであるか否かの判定は、例えば、比較対象となる二つのデータのハミング距離(異なるビットの数)が予め定められた閾値T以下であるか否かで判定する。あるいは、二つのデータが所定の長さの同一の部分系列を含むか否かで判定するなど、別の方法で判定してもよい。ハードウェア実装において複数の判定処理を並行して実行するためには、暗号化鍵生成装置100の中に複数の比較部109が存在してもよい(図1では一つの比較部109のみを図示している。)。あるいは、一つの比較部109をN_r回利用して、それぞれの判定処理を行ってもよい。
鍵生成部110は、N_1+...+N_R個のインデックス情報の集合{I_{r,j}}_{r,j}を用いて、暗号化鍵を生成する。例えば、鍵生成部110は、集合{I_{r,j}}_{r,j}に含まれるインデックス情報I_{r,j}をすべて連結して暗号化鍵を生成するようにしてもよいし、集合{I_{r,j}}_{r,j}に含まれるインデックス情報I_{r,j}をビット演算あるいは算術演算して暗号化鍵を生成するようにしてもよい。
ここで、本実施形態で用いる定数を表す記号について説明する。Lは、インデックス情報生成部106が生成するインデックス情報I_{r,j}の最大値を表す。Wは、PUF104が出力するPUF出力情報のうち、パターン情報Y_{r,j}として利用するデータのビット長を表す。N_rは、第rラウンドにおいて、インデックス情報生成部106が生成するインデックス情報I_{r,j}の個数を表す。N_rはラウンドごとに異なっていてもよいし、同一でもよい。Rは、暗号化鍵生成および暗号化鍵再現において実行されるラウンドの総数を表す。I_{0,1}は、PUF入力生成部103に入力するデータの初期値を表す。
本実施形態の暗号化鍵生成装置100は、例えば、CPUなどの演算装置、ROMやRAMなどの記憶装置、HDD、CDドライブ装置などの外部記憶装置、通信装置などを備えた、通常のコンピュータを利用したハードウェア構成を採用することができる。そして、コンピュータによって実行されるプログラムにより、上記のハードウェア資源を利用して、通信部101、記憶部102、PUF入力生成部103、PUF104、PUF出力一時記憶部105、インデックス情報生成部106、MGF107、マスク処理部108、比較部109、および鍵生成部110の各機能構成を実現することができる。
<暗号化鍵設定>
次に、図2を参照して、第1実施形態の暗号化鍵生成装置100が実行する暗号化鍵設定の処理について説明する。図2は、暗号化鍵生成装置100による暗号化鍵設定の一連の処理の流れを示すフローチャートである。
図2のフローチャートで示す暗号化鍵設定の処理は、暗号化鍵生成装置100が暗号化鍵設定開始の命令を受け付けることで開始される。暗号化鍵生成装置100は、暗号化鍵設定開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。
インデックス情報生成部106は、N_r個のインデックス情報I_{r,1},...,I_{r,N_r}を生成する(ステップS101)。ステップS101の処理は、後述するステップS104において、PUF出力一時記憶部105が、PUF104が出力する第rラウンドにおけるPUF出力情報のW−1ビット目を記憶するまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
PUF入力生成部103は、予め定められた初期値あるいはステップS101でインデックス情報生成部106が生成したインデックス情報{I_{i,j}}_{0≦i<r,1≦j≦N_r}を入力として、PUF104が第rラウンドのcnビット目を出力するためのPUF入力情報X_{r,cn}を生成する(ステップS102)。ステップS102の処理は、後述するステップS104において、PUF入力情報X_{r,cn}がPUF104に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
MGF107は、j=1,...,N_rについて、予め定められた初期値あるいはステップS101でインデックス情報生成部106が生成したインデックス情報{I_{i,j}}_{0≦i≦r,1≦j≦N_r}とrとjを入力として、マスク情報M_{r,j}を生成する(ステップS103)。ステップS103の処理は、後述するステップS105において、マスク処理部108が変形パターン情報を生成するまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
PUF出力一時記憶部105は、ステップS102でPUF入力生成部103が生成したPUF入力情報X_{r,cn}を入力としてPUF104が出力するL+W−1ビットのPUF出力情報を記憶する(ステップS104)。
PUF出力一時記憶部105がPUF出力情報を記憶すると、暗号化鍵生成装置100は、j=1,...,N_rについて、PUF出力一時記憶部105が記憶する第rラウンドにおけるPUF出力情報の第I_{r,j}ビット目から第I_{r,j}+W−1ビット目に対して、以下のステップS105〜ステップS107の処理を繰り返し実行する。
PUF出力一時記憶部105が第rラウンドにおけるPUF出力情報の第I_{r,j}ビット目から第I_{r,j}+W−1ビット目を記憶していると仮定する(jとは異なるj’でI_{r,j}=I_{r,j’}となることがあってもよい)。マスク処理部108は、例えば、ステップS104でPUF出力一時記憶部105が記憶したPUF出力情報のうちのWビットのデータと、ステップS103でMGF107が生成したマスク情報M_{r,j}との排他的論理和により、変形パターン情報Z_{r,j}を生成する(ステップS105)。
記憶部102は、ステップS105でマスク処理部108が生成した変形パターン情報Z_{r,j}を記憶する(ステップS106)。
記憶部102に変形パターン情報Z_{r,j}が記憶されると、暗号化鍵生成装置100は、j<N_rであるか否かを判定する(ステップS107)。ここで、j<N_rであるならば(ステップS107:Yes)、暗号化鍵生成装置100は、jをj+1に置き換えて、ステップS105に戻って以降の処理を繰り返す。一方、j=N_rであるならば(ステップS107:No)、暗号化鍵生成装置100は、r<Rであるか否かを判定する(ステップS108)。ここで、r<Rであるならば(ステップS108:Yes)、暗号化鍵生成装置100は、rをr+1に置き換えて、ステップS101に戻って以降の処理を繰り返す。一方、r=Rであるならば(ステップS108:No)、ステップS109に進む。
鍵生成部110は、例えば、各ラウンドにおいてインデックス情報生成部106が生成したN_1+...+N_R個のインデックス情報からなる集合{I_{i,j}}_{0≦i≦R,1≦j≦N_i}に含まれる各インデックス情報I_{i,j}を連結して、暗号化鍵を生成する(ステップS109)。
<暗号化鍵再現>
次に、図3を参照して、第1実施形態の暗号化鍵生成装置100が実行する暗号化鍵再現の処理について説明する。暗号化鍵再現の処理は、上述の暗号化鍵設定の処理が終わった後、暗号プロトコルが暗号化鍵を必要とするときに実行される。図3は、暗号化鍵生成装置100による暗号化鍵再現の一連の処理の流れを示すフローチャートである。
図3のフローチャートで示す暗号化鍵再現の処理は、暗号化鍵生成装置100が暗号化鍵再現開始の命令を受け付けることで開始される。暗号化鍵生成装置100は、暗号化鍵再現開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。
PUF入力生成部103は、予め定められた初期値あるいは前回のラウンド処理で再現されたインデックス情報{I_{i,j}}_{0≦i<r,1≦j≦N_r}を入力として、PUF104が第rラウンドのcnビット目を出力するためのPUF入力情報X_{r,cn}を生成する(ステップS201)。ステップS201の処理は、後述するステップS203において、PUF入力情報X_{r,cn}がPUF104に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
MGF107は、j=1,...,N_rについて、予め定められた初期値あるいは前回のラウンド処理で再現されたインデックス情報{I_{i,j}}_{0≦i≦r,1≦j≦N_r}とrとjを入力として、マスク情報M_{r,j}を生成する(ステップS202)。ステップS202の処理は、後述するステップS204において、マスク処理部108がパターン照合の対象となる参照情報を生成するまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
PUF出力一時記憶部105は、ステップS201でPUF入力生成部103が生成したPUF入力情報X_{r,cn}を入力としてPUF104が出力するPUF出力情報を記憶する(ステップS203)。
PUF出力一時記憶部105がPUF出力情報を記憶すると、暗号化鍵生成装置100は、k=1,...,Lについて、PUF出力一時記憶部105が記憶する第kビット目から第k+W−1ビット目に対して、以下のステップS204〜ステップS208の処理を繰り返し実行する。また、暗号化鍵生成装置100は、j=1,...,N_rについて、以下のステップS204〜ステップS207の処理を繰り返し実行する。
マスク処理部108は、例えば、PUF出力一時記憶部105が記憶する第rラウンドにおけるPUF出力情報の第kビット目から第k+W−1ビット目までのWビットのデータと、ステップS202でMGF107が生成したマスク情報M_{r,j}との排他的論理和により、参照情報を生成する(ステップS204)。
比較部109は、ステップS204でマスク処理部108が生成した参照情報と、記憶部102が記憶する変形パターン情報Z_{r,j}とが類似データであるか否かを判定する(ステップS205)。なお、ここでは、PUF出力情報のWビットのデータにマスク情報を加算した参照情報と、記憶部102が記憶する変形パターン情報とを比較して、これら二つのデータが類似データであるか否かを判定しているが、記憶部102が記憶する変形パターン情報にマスク情報を加算してパターン情報を再現し、マスク情報を加算しないPUF出力情報のWビットのデータと、再現したパターン情報とを比較して、これら二つのデータが類似のデータであるか否かを判定するようにしてもよい。
比較部109が二つのデータを類似データであると判定した場合(ステップS205:Yes)、暗号化鍵生成装置100は、I_{r,j}=kとしてインデックス情報I_{r,j}を再現する(ステップS206)。つまり、記憶部102が記憶する変形パターン情報Z_{r,j}に類似すると判定された参照情報のPUF出力情報における開始位置kを、インデックス情報I_{r,j}として再現する。なお、同一のkにおいて、複数のj,j’について、I_{r,j}=I_{r,j’}=kとして、複数のインデックス情報が再現されるようにしてもよい。比較部109が二つのデータを類似データではない判定した場合には(ステップS205:No)、ステップS206の処理はスキップする。
その後、暗号化鍵生成装置100は、j<N_rであるか否かを判定する(ステップS207)。ここで、j<N_rであるならば(ステップS207:Yes)、暗号化鍵生成装置100は、jをj+1に置き換えて、ステップS204に戻って以降の処理を繰り返す。一方、j=N_rであるならば(ステップS207:No)、暗号化鍵生成装置100は、k<Lであるか否かを判定する(ステップS208)。ここで、k<Lであるならば(ステップS208:Yes)、kをk+1に置き換えて、ステップS204に戻って以降の処理を繰り返す。なお、k=1,...,Lについて、ステップS204〜ステップS208の処理を繰り返しても再現できないインデックス情報I_{r,j}が存在する場合には、暗号化鍵生成装置100は、処理を停止するようにしてもよいし、再現できないインデックス情報I_{r,j}に予め定められた値あるいはランダムな値を設定してもよい。
ステップS208の判定の結果がk=Lであるならば(ステップS208:No)、暗号化鍵生成装置100は、r<Rであるか否かを判定する(ステップS209)。ここで、r<Rであるならば(ステップS209:Yes)、暗号化鍵生成装置100は、rをr+1に置き換えて、ステップS201に戻って以降の処理を繰り返す。一方、r=Rであるならば(ステップS209:No)、ステップS210に進む。
鍵生成部110は、例えば、各ラウンドにおいて再現したN_1+...+N_R個のインデックス情報{I_{i,j}}_{0≦i≦R,1≦j≦N_i}を連結して、暗号化鍵を生成する(ステップS210)。なお、鍵生成部110は、インデックス情報{I_{i,j}}_{0≦i≦R,1≦j≦N_i}の代わりに、PUF入力情報{X_{r,cn}}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。あるいは、鍵生成部110は、インデックス情報{I_{i,j}}_{0≦i≦R,1≦j≦N_i}に加えて、PUF入力情報{X_{r,cn}}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。また、鍵生成部110は、連結した値を暗号化鍵として用いてもよいし、連結した値をハッシュ関数などに入力し、得られた値を暗号化鍵として用いてもよい。
なお、本実施形態の暗号化鍵生成装置100は、暗号化鍵の生成に用いたインデックス情報の秘匿性を高めるために、PUF出力情報のうちのインデックス情報が指し示す位置からW−1ビットのデータであるパターン情報に対してマスク情報を加算して変形パターン情報を生成し、この変形パターン情報を記憶部102に記憶するようにしている。しかし、処理の高速化を優先する場合には、暗号化鍵生成装置100は、パターン情報そのものを記憶部102に記憶するようにしてもよい。この場合、暗号化鍵生成装置100は、MGF107およびマスク処理部108を備えない構成となる。また、暗号化鍵設定の処理では、図2に示したフローチャートのステップS103およびステップS105の処理を実施せず、ステップS106において、PUF出力一時記憶部105が記憶している第rラウンドにおけるPUF出力情報の第I_{r,j}ビット目から第I_{r,j}+W−1ビット目までのWビットのデータを、パターン情報として記憶部102に記憶する。そして、暗号化鍵再現の処理では、図3に示したフローチャートのステップS202およびステップS204の処理を実施せず、ステップS205において、比較部109が、PUF出力一時記憶部105が記憶している第rラウンドにおけるPUF出力情報の第kビット目から第k+W−1ビット目までのWビットのデータと、記憶部102が記憶するパターン情報とが類似データであるか否かを判定する。
また、本実施形態の暗号化鍵生成装置100では、PUF入力生成部103が、インデックス情報I_{r,j}に基づいて、PUF104に入力するPUF入力情報X_{r,cn}を生成するようにしている。しかし、PUF入力生成部103は、例えばPUF104への起動信号など、インデックス情報I_{r,j}に依存しない固定値を、PUF入力情報として生成するようにしてもよい。
また、本実施形態の暗号化鍵生成装置100では、PUF104が、各ラウンドにおいてL+W−1ビットのPUF出力情報を出力するようにしている。しかし、PUF104がL+W−1ビットを超えるPUF出力情報を出力し、各ラウンドでそのPUF出力情報の一部を利用する構成であってもよい。例えば、PUF104に対して固定値のPUF入力情報が入力され、PUF104がR×(L+W−1)ビットのPUF出力情報を出力するようにしてもよい。この場合には、第iラウンドでは、PUF出力一時記憶部105がPUF出力情報のうち(i−1)×(L+W)ビット目からL+W−1ビットのデータを記憶し、以降の処理を実施する構成とすることができる。
<実施形態の効果>
第1実施形態の効果を説明するにあたり、まず、非特許文献1が開示する暗号化鍵の生成方法を概説する。非特許文献1が開示する暗号化鍵の生成方法では、一つのラウンドにおいて一つのインデックス情報のみを扱う。すなわち、非特許文献1が開示する暗号化鍵の生成方法では、暗号化鍵設定において、第iラウンドで一つのインデックス情報I_iを選び、第iラウンドにおけるPUF出力情報のうち、第I_iビットからWビットのデータを記憶部に記憶する。また、非特許文献1が開示する暗号化鍵の生成方法では、暗号化鍵再現において、第iラウンドにおけるPUF出力情報のうち、記憶部が記憶するWビットのデータと類似の箇所を探索して、インデックス情報I_iを再現する。
このように、非特許文献1が開示する暗号化鍵の生成方法では、一つのラウンドにおいて一つのインデックス情報のみを扱うため、所定の長さの暗号化鍵を生成するために必要なインデックス情報I_iの数と同じ回数だけラウンド処理を繰り返す必要があり、暗号化鍵に十分な情報量を持たせるために必要となるラウンド処理の回数が多くなるという問題があった。例えば、非特許文献1が開示する暗号化鍵の生成方法では、128ビットの暗号化鍵を生成するために、各ラウンドで10ビットのインデックス情報I_iを利用し、ラウンド処理を16回繰り返す必要があった。
これに対して、第1実施形態の暗号化鍵生成装置100によれば、一つのラウンドで複数のインデックス情報I_{i,j}を生成あるいは再現できるため、所定の長さの暗号化鍵を生成するために必要なラウンド処理の回数が、非特許文献1が開示する暗号化鍵の生成方法よりも少なくなる。例えば、本実施形態の暗号化鍵生成装置100では、128ビットの暗号化鍵を生成するにあたり、各ラウンドで10ビットのインデックス情報I_{i,j}を4つずつ利用すれば、4回のラウンド処理の繰り返しのみで、非特許文献1が開示する暗号化鍵の生成方法と同じ情報量をもつ暗号化鍵を生成することができる。このように、本実施形態の暗号化鍵生成装置100は、非特許文献1が開示する暗号化鍵の生成方法と比べてラウンド処理の繰り返し回数を削減することができ、効率的に暗号化鍵を生成できる。
<第1実施例の構成>
次に、第1実施形態の暗号化鍵生成装置100をより具体化した第1実施例について説明する。図4は、第1実施例の暗号化鍵生成装置1000のブロック図である。
図4に示すように、第1実施例の暗号化鍵生成装置1000は、4種類のレジスタ1001,1002,1003,1015、外部メモリ1004、カウンタ1005、PUF演算回路1006、PUF入力生成回路1007、マスク生成回路1008、排他的論理和演算回路1009、インデックス情報生成回路1010、インデックス情報再現回路1011、比較回路1012、選択回路1013、および鍵生成回路1014を備える。
レジスタI1001は、複数のインデックス情報を保持するレジスタである。レジスタI1001は、各ラウンドrごとに複数のインデックス情報を保持してもよく、複数のラウンドi=1,...,rに関するインデックス情報をまとめて保持してもよい。
レジスタP1002は、PUF演算回路1006に入力するPUF入力情報を保持するレジスタである。なお、後述するPUF入力生成回路1007の出力が、そのままPUF演算回路1006に入力される場合には、暗号化鍵生成装置1000はレジスタP1002を備えなくともよい。
レジスタS1003は、PUF演算回路1006が出力するPUF出力情報を保持するシフトレジスタである。レジスタS1003は、PUF演算回路1006が出力するPUF出力情報のうちのWビットのデータを保持する。レジスタS1003は、上述した第1実施形態の暗号化鍵生成装置100におけるPUF出力一時記憶部105に相当する。
外部メモリ1004は、排他的論理和演算回路1009が出力する変形パターン情報を記憶するメモリである。外部メモリ1004は、上述した第1実施形態の暗号化鍵生成装置100における記憶部102に相当する。
カウンタ1005は、各ラウンドにおいて、PUF演算回路1006の出力ビット数をカウントし、カウンタ値cnを記憶する。
PUF演算回路1006は、上述した第1実施形態の暗号化鍵生成装置100におけるPUF104を実装した演算回路であり、PUF入力情報を入力としてPUF出力情報を出力する。
PUF入力生成回路1007は、レジスタI1001が保持するインデックス情報に基づいて、PUF演算回路1006に入力するPUF入力情報を生成する。PUF入力生成回路1007は、上述した第1実施形態の暗号化鍵生成装置100におけるPUF入力生成部103に相当する。
マスク生成回路1008は、上述した第1実施形態の暗号化鍵生成装置100におけるMGF107を実装した演算回路であり、レジスタI1001が保持するインデックス情報に基づき、マスク情報を生成して出力する。
排他的論理和演算回路1009は、レジスタS1003が保持するPUF出力情報とマスク生成回路1008が出力するマスク情報とを排他的論理和演算する回路である。排他的論理和演算回路1009は、上述した第1実施形態の暗号化鍵生成装置100におけるマスク処理部108に相当する。
インデックス情報生成回路1010は、暗号化鍵設定の各ラウンドrにおいて、1からLまでのN_r個のインデックス情報を発生させる回路である。インデックス情報再現回路1011は、暗号化鍵再現において、後述する比較回路1012の出力に基づき、カウンタ1005の値をインデックス情報として再現する。インデックス情報生成回路1010およびインデックス情報再現回路1011は、上述した第1実施形態の暗号化鍵生成装置100におけるインデックス情報生成部106に相当する。
比較回路1012は、暗号化鍵再現において、外部メモリ1004が記憶する変形パターン情報と排他的論理和演算回路1009の出力とを比較する回路であり、比較する変形パターン情報と排他的論理和演算回路1009の出力とが類似のデータであると判断する場合には1を出力し、そうでない場合には0を出力する。
選択回路1013は、暗号化鍵設定の処理を実行しているときにはインデックス情報生成回路1010の出力を選択してレジスタI1001に出力し、暗号化鍵再現の処理を実行しているときにはインデックス情報再現回路1011の出力を選択してレジスタI1001に出力する。
鍵生成回路1014は、レジスタI1001が保持するインデックス情報に基づき、暗号化鍵を生成する回路である。鍵生成回路1014は、上述した第1実施形態の暗号化鍵生成装置100における鍵生成部110に相当する。
レジスタK1015は、鍵生成回路1014が出力する暗号化鍵を保持するレジスタである。
なお、図4では、第1実施例の暗号化鍵生成装置1000を構成する各回路と回路間を結ぶ線を一つのみ図示しているが、各ラウンドで複数のインデックス情報を生成あるいは再現させるために、複数のマスク生成回路1008や排他的論理和演算回路1009、インデックス情報生成回路1010、インデックス情報再現回路1011、比較回路1012、選択回路1013を並列に実装することが望ましい。ただし、第1実施例の暗号化鍵再現装置1000は、これらの回路を一つずつ実装し、時分割で利用して複数のインデックス情報を生成あるいは再現してもよい。
<第1実施例の暗号化鍵設定>
次に、図5を参照して、第1実施例の暗号化鍵生成装置1000が実行する暗号化鍵設定の処理について説明する。図5は、第1実施例の暗号化鍵生成装置1000による暗号化鍵設定の一連の処理の流れを示すフローチャートである。
図5のフローチャートで示す暗号化鍵設定の処理は、第1実施例の暗号化鍵生成装置1000が暗号化鍵設定開始の命令を受け付けることで開始される。第1実施例の暗号化鍵生成装置1000は、暗号化鍵設定開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。
カウンタ1005は、カウンタ値cnを1に初期化する(ステップS301)。
インデックス情報生成回路1011は、N_r個のインデックス情報I_{r,1},...,I_{r,N_r}を生成し、レジスタI1001に格納する(ステップS302)。ステップS302の処理は、後述するステップS306において、レジスタS1003が、PUF演算回路1006が出力する第rラウンドにおけるPUF出力情報のW−1ビット目を記憶するまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
レジスタI1001にインデックス情報が格納されると、第1実施例の暗号化鍵再現装置1000は、cn=1,2,...,L+W−1について、以下の処理を繰り返す。
PUF入力生成回路1007は、予め定められた初期値あるいはステップS302でインデックス情報生成回路1011が生成したインデックス情報{I_{i,j}}_{0≦i<r,1≦j≦N_r}を入力として、PUF演算回路1006が第rラウンドのcnビット目を出力するためのPUF入力情報X_{r,cn}を生成する(ステップS303)。
レジスタP1002は、PUF入力生成回路1007が生成したPUF入力情報X_{r,cn}を格納する(ステップS304)。ステップS304の処理は、後述するステップS306において、PUF入力情報X_{r,cn}がPUF演算回路1006に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
マスク生成回路1008は、j=1,...,N_rについて、予め定められた初期値あるいはインデックス情報生成回路1010により生成され、レジスタI1001に格納されたインデックス情報{I_{i,j}}_{0≦i≦r,1≦j≦N_r}とrとjを入力として、マスク情報M_{r,j}を生成する(ステップS305)。ステップS305の処理は、後述するステップS308において、排他的論理和演算回路1009が排他的論理和の演算を行うまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
レジスタS1003は、ステップS304でレジスタP1002に格納されたPUF入力情報X_{r,cn}を入力としてPUF演算回路1006が出力するPUF出力情報を記憶する(ステップS306)。ここで、第1実施例の暗号化鍵生成装置1000では、各cnについて、PUF演算回路1006が1ビットのデータを出力することとし、レジスタS1003は、それまでに記憶していたデータを1ビットだけシフトして記憶するとともに、新たにPUF演算回路1006が出力する1ビットのデータを記憶する。
排他的論理和演算回路1009は、レジスタS1003が記憶するWビットのデータと、マスク生成回路1008が出力するマスク情報M_{r,j}との排他的論理和Z_{r,j}を計算する(ステップS307)。
第1実施例の暗号化鍵生成装置1000は、カウンタ1005のカウンタ値cnがI_{r,j}+W−1と一致するか否かを判定し(ステップS308)、カウンタ値cnがI_{r,j}+W−1と一致するときに(ステップS308:Yes)、排他的論理和演算回路1009の出力Z_{r,j}を変形パターン情報として外部メモリ1004に記憶する(ステップS309)。ただし、jは1からN_rの間の数である。なお、カウンタ値cnがI_{r,j}+W−1と一致しないときは(ステップS308:No)、ステップS309の処理はスキップする。
その後、第1実施例の暗号化鍵生成装置1000は、カウンタ1005のカウンタ値cn<L+W−1か否かを判定する(ステップS310)。ここで、cn<L+W−1であるならば(ステップS310:Yes)、暗号化鍵生成装置1000は、cnをcn+1に置き換えて、ステップS303に戻って以降の処理を繰り返す。一方、cn=L+W−1であるならば(ステップS310:No)、暗号化鍵生成装置1000は、r<Rであるか否かを判定する(ステップS311)。ここで、r<Rであるならば(ステップS311:Yes)、暗号化鍵生成装置1000は、rをr+1に置き換えて、ステップS301に戻って以降の処理を繰り返す。一方、r=Rであるならば(ステップS311:No)、ステップS312に進む。
鍵生成回路1014は、例えば、各ラウンドにおいてレジスタI1001に格納されたインデックス情報の集合{I_{i,j}}_{0≦i≦R,1≦j≦N_i}に含まれる各インデックス情報I_{i,j}を連結して暗号化鍵を生成し、レジスタK1015に格納する(ステップS312)。
<第1実施例の暗号化鍵再現>
次に、図6を参照して、第1実施例の暗号化鍵生成装置1000が実行する暗号化鍵再現の処理について説明する。図6は、第1実施例の暗号化鍵生成装置1000による暗号化鍵再現の一連の処理の流れを説明するフローチャートである。
図6のフローチャートで示す暗号化鍵再現の処理は、第1実施例の暗号化鍵生成装置1000が暗号化鍵再現開始の命令を受け付けることで開始される。第1実施例の暗号化鍵生成装置1000は、暗号化鍵再現開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。
カウンタ1005は、カウンタ値cnを1に初期化する(ステップS401)。
第1実施例の暗号化鍵再現装置1000は、cn=1,2,...,L+W−1について、以下の処理を繰り返す。
PUF入力生成回路1007は、予め定められた初期値あるいは前回のラウンド処理でインデックス情報再現回路1011が再現したインデックス情報{I_{i,j}}_{0≦i≦r,1≦j≦N_r}を入力として、PUF演算回路1006が第rラウンドのcnビット目を出力するためのPUF入力情報X_{r,cn}を生成する(ステップS402)。
レジスタP1002は、PUF入力生成回路1007が生成したPUF入力情報X_{r,cn}を格納する(ステップS403)。ステップS403の処理は、後述するステップS405において、PUF入力情報X_{r,cn}がPUF演算回路1006に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
マスク生成回路1008は、j=1,...,N_rについて、予め定められた初期値あるいは前回のラウンド処理で再現されたインデックス情報{I_{i,j}}_{0≦i≦r,1≦j≦N_r}とrとjを入力として、マスク情報M_{r,j}を生成する(ステップS404)。ステップS404の処理は、後述するステップS406において、排他的論理和演算回路1009が比較回路1012の入力となる排他的論理和を計算するまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
レジスタS1003は、ステップS403でレジスタP1002に格納されたPUF入力情報X_{r,cn}を入力としてPUF演算回路1006が出力するPUF出力情報を記憶する(ステップS405)。ここで、第1実施例の暗号化鍵生成装置1000では、各cnについて、PUF演算回路1006が1ビットのデータを出力することとし、レジスタS1003は、それまでに記憶していたデータを1ビットだけシフトして記憶するとともに、新たにPUF演算回路1006が出力する1ビットのデータを記憶する。
排他的論理和演算回路1009は、レジスタS1003が記憶するWビットのデータと、マスク生成回路1008が出力するマスク情報M_{r,j}との排他的論理和により、変形パターン情報Z_{r,j}との比較対象となる参照情報を生成する(ステップS406)。
比較回路1012は、ステップS406で生成された参照情報と、外部メモリ1004が記憶する変形パターン情報Z_{r,j}とを比較して、これらが類似データであるか否かを判定する(ステップS407)。
比較回路1012が二つのデータを類似データであると判定した場合(ステップS407:Yes)、インデックス情報再現回路1011は、カウンタ1005が記憶するカウンタ値cnについて、I_{r,j}=cn−W+1としてインデックス情報I_{r,j}を再現する(ステップS408)。つまり、変形パターン情報Z_{r,j}に類似すると判定された参照情報は、カウンタ1005のカウンタ値cnからWビット分遡った位置を開始位置とするWビットのPUF出力情報とマスク情報M_{r,j}との排他的論理和であるので、カウンタ1005のカウンタ値cnからWビット分遡った位置を、インデックス情報I_{r,j}として再現する。比較回路1012が二つのデータを類似データではないと判定した場合には(ステップS407:No)、ステップS408の処理はスキップする。
その後、第1実施例の暗号化鍵生成装置1000は、カウンタ1005のカウンタ値cn<L+W−1か否かを判定する(ステップS409)。ここで、cn<L+W−1であるならば(ステップS409:Yes)、暗号化鍵生成装置1000は、cnをcn+1に置き換えて、ステップS402に戻って以降の処理を繰り返す。一方、cn=L+W−1であるならば(ステップS409:No)、暗号化鍵生成装置1000は、r<Rであるか否かを判定する(ステップS410)。ここで、r<Rであるならば(ステップS410:Yes)、暗号化鍵生成装置1000は、rをr+1に置き換えて、ステップS401に戻って以降の処理を繰り返す。一方、r=Rであるならば(ステップS410:No)、ステップS411に進む。
鍵生成回路1014は、例えば、各ラウンドにおいてインデックス情報再現回路1011により再現され、レジスタI1001に格納されたインデックス情報の集合{I_{i,j}}_{0≦i≦R,1≦j≦N_i}に含まれる各インデックス情報I_{i,j}を連結して暗号化鍵を生成し、レジスタK1015に格納する(ステップS411)。なお、鍵生成回路1014は、インデックス情報{I_{i,j}}_{0≦i≦R,1≦j≦N_i}の代わりに、PUF入力情報{X_{r,cn}}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。あるいは、鍵生成回路1014は、インデックス情報{I_{i,j}}_{0≦i≦R,1≦j≦N_i}に加えて、PUF入力情報{X_{r,cn}}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。また、鍵生成回路1014は、連結した値を暗号化鍵として用いてもよいし、連結した値をハッシュ関数などに入力し、得られた値を暗号化鍵として用いてもよい。
(第2実施形態)
<概要>
まず、第2実施形態の暗号化鍵生成装置の概要を説明する。第2実施形態の暗号化鍵生成装置は、暗号化鍵設定において、秘密情報を用いて暗号化鍵を生成し、PUFの出力を秘密情報が示すシフト量だけ巡回シフトした情報をパターン情報として記憶する。また、第2実施形態の暗号化鍵生成装置は、暗号化鍵再現において、PUFの出力を1ビットずつ巡回シフトしながら記憶したパターン情報と比較し(パターン照合)、PUFの出力がパターン情報と類似するときのPUFの出力の巡回シフト量を検出することで、暗号化鍵設定で暗号化鍵の生成に用いた秘密情報を再現し、暗号化鍵を再現する。
<構成>
次に、図7を参照して、第2実施形態の暗号化鍵生成装置の概略構成を説明する。図7は、第2実施形態の暗号化鍵生成装置200の機能的な構成を示す機能ブロック図である。
図7に示すように、本実施形態の暗号化鍵生成装置200は、通信部201、記憶部202、PUF入力生成部203、PUF204、PUF出力一時記憶部205、秘密情報生成部206、出力シフト部207、比較部208、および鍵生成部209を備える。
通信部201は、暗号化鍵生成装置200と外部システムとの間の通信を行うインターフェースである。
記憶部202は、暗号化鍵設定において、PUF204が出力するPUF出力情報を出力シフト部207で巡回シフトすることで得られるパターン情報Z_rを記憶するメモリである。記憶部202は、例えば、RAM、EEPROM(登録商標)などで構成される。なお、記憶部202は、暗号化鍵生成装置200の外部にあってもよい。記憶部202が暗号化鍵生成装置200の外部にある場合、暗号化鍵生成装置200の各部は、記憶部202に対するデータの書き込みや読み出しを、通信部201を介して行う。
PUF入力生成部203は、予め定められた初期値I_0あるいは秘密情報生成部206が出力する秘密情報I_rに基づき、PUF204へ入力するPUF入力情報を生成する。例えば、PUF入力生成部203は、PUF入力情報が所定の長さとなるように、初期値I_0あるいは秘密情報I_rに対して予め定められたデータを連結して、PUF入力情報を生成する。また、PUF入力生成部203は、初期値I_0あるいは秘密情報I_rをハッシュ関数などに入力して、PUF入力情報を生成するようにしてもよい。また、PUF入力生成部203に入力される情報が複数ある場合には、PUF入力生成部203は、それら入力情報を連結したり、ビット演算あるいは算術演算することで、PUF入力情報を生成するようにしてもよい。
PUF204は、物理的複製困難関数である。物理的複製困難関数は、あるデバイスに搭載されると、同一の入力からそのデバイス固有の値を出力する関数である。非特許文献1において開示される暗号化鍵生成装置は、複数のPUFの出力を排他的論理和演算して得られる値を利用する。以降の説明では、PUF204は、このような複数のPUFとそれらの出力を排他的論理和演算して値を出力する回路や、複数のPUFとそれら出力をビット演算あるいは算術演算して値を出力する回路を用いてもよい。PUF204は、各ラウンドにおいて、PUF入力生成部203が生成したPUF入力情報を入力し、WビットのPUF出力情報を出力する。
PUF出力一時記憶部205は、各ラウンドにおいてPUF204が出力するPUF出力情報を一時的に記憶する。本実施形態のPUF出力一時記憶部205は、例えば、Wビットのレジスタで構成される。
秘密情報生成部206は、各ラウンドにおいて1つの秘密情報I_rを生成する。各ラウンドにおいて秘密情報生成部206が生成する秘密情報I_rは、後述の出力シフト部207においてPUF出力情報を巡回シフトさせる量を示す情報である。なお、秘密情報I_rは、通信部201により暗号化鍵生成装置200の外部から受け付けるなどして、予め定められた値を用いてもよい。この場合には、暗号化鍵生成装置200は秘密情報生成部206を備えていなくてもよい。
出力シフト部207は、第rラウンドにおけるPUF出力情報Y_rを、秘密情報I_rに基づき巡回シフトする。例えば、出力シフト部207は、PUF出力情報Y_rをI_rビット左巡回シフトしてもよいし、予め定められた規則に基づき、秘密情報I_rに応じたシフト量だけ巡回シフトしてもよい。
比較部208は、暗号化鍵再現において、PUF出力一時記憶部205が記憶するPUF出力情報を巡回シフトしながら記憶部202が記憶するパターン情報Z_rと比較して、PUF出力情報がパターン情報Z_rと類似するときの巡回シフト量を検出する。例えば、比較部208は、PUF出力一時記憶部205が記憶するPUF出力情報を1ビットずつ巡回シフトすることで順次得られる参照情報Z’_rと、記憶部202が記憶するパターン情報Z_rとが類似のデータであるか否かを判定する。類似のデータであるか否かの判定は第1実施形態と同様であるため、ここでは説明を省略する。
鍵生成部209は、ラウンドごとに生成されるR個の秘密情報の集合を用いて、暗号化鍵を生成する。例えば、鍵生成部209は、R個の秘密情報I_rをすべて連結して暗号化鍵を生成するようにしてもよいし、R個の秘密情報I_rをビット演算あるいは算術演算して暗号化鍵を生成するようにしてもよい。
ここで、本実施形態で用いる定数を表す記号について説明する。Wは、PUF204が出力するPUF出力情報のビット長を表し、各ラウンドにおいて、秘密情報生成部206が生成する秘密情報I_rの最大値を表す。Rは、暗号化鍵生成および暗号化鍵再現において実行されるラウンドの総数を表す。I_0は、PUF入力生成部203に入力するデータの初期値を表す。
本実施形態の暗号化鍵生成装置200は、例えば、CPUなどの演算装置、ROMやRAMなどの記憶装置、HDD、CDドライブ装置などの外部記憶装置、通信装置などを備えた、通常のコンピュータを利用したハードウェア構成を採用することができる。そして、コンピュータによって実行されるプログラムにより、上記のハードウェア資源を利用して、通信部201、記憶部202、PUF入力生成部203、PUF204、PUF出力一時記憶部205、秘密情報生成部206、出力シフト部207、比較部208、および鍵生成部209の各機能構成を実現することができる。
<暗号化鍵設定>
次に、図8を参照して、第2実施形態の暗号化鍵生成装置200が実行する暗号化鍵設定の処理について説明する。図8は、暗号化鍵生成装置200による暗号化鍵設定の一連の処理の流れを示すフローチャートである。
図8のフローチャートで示す暗号化鍵設定の処理は、暗号化鍵生成装置200が暗号化鍵設定開始の命令を受け付けることで開始される。暗号化鍵生成装置200は、暗号化鍵設定開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。
秘密情報生成部206は、秘密情報I_rを生成する(ステップS501)。ステップS501の処理は、第rラウンドの処理が開始される前に行われていてもよい。
PUF入力生成部203は、予め定められた初期値あるいはステップS501で秘密情報生成部206が生成した秘密情報{I_i}_{0≦i<r}を入力として、PUF204が第rラウンドのPUF出力情報を出力するためのPUF入力情報X_rを生成する(ステップS502)。ステップS502の処理は、後述するステップS503において、PUF入力情報X_rがPUF204に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
PUF出力一時記憶部205は、ステップS502でPUF入力生成部203が生成したPUF入力情報X_rを入力としてPUF204が出力するWビットのPUF出力情報を記憶する(ステップS503)。
出力シフト部207は、例えば、ステップS503でPUF出力一時記憶部205が記憶したPUF出力情報を、ステップS501で秘密情報生成部206が生成した秘密情報I_rで示されるシフト量だけ左巡回シフトして、パターン情報Z_rを生成する(ステップS504)。
記憶部202は、ステップS504で出力シフト部207が生成したパターン情報Z_rを記憶する(ステップS505)。
記憶部202にパターン情報Z_rが記憶されると、暗号化鍵生成装置200は、r<Rであるか否かを判定する(ステップS506)。ここで、r<Rであるならば(ステップS506:Yes)、暗号化鍵生成装置200は、rをr+1に置き換えて、ステップS501に戻って以降の処理を繰り返す。一方、r=Rであるならば(ステップS506:No)、ステップS507に進む。
鍵生成部209は、例えば、各ラウンドにおいて秘密情報生成部206が生成したR個の秘密情報I_rを連結して、暗号化鍵を生成する(ステップS509)。
<暗号化鍵再現>
次に、図9を参照して、第2実施形態の暗号化鍵生成処理200が実行する暗号化鍵再現の処理について説明する。暗号化鍵再現の処理は、上述の暗号化鍵設定の処理が終わった後、暗号プロトコルが暗号化鍵を必要とするときに実行される。図9は、暗号化鍵生成装置200による暗号化鍵再現の一連の処理の流れを示すフローチャートである。
図9のフローチャートで示す暗号化鍵再現の処理は、暗号化鍵生成装置200が暗号化鍵再現開始の命令を受け付けることで開始される。暗号化鍵生成装置200は、暗号化鍵再現開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。
PUF入力生成部203は、予め定められた初期値あるいは前回のラウンド処理で再現された秘密情報{I_i}_{0≦i<r}を入力として、PUF204が第rラウンドのPUF出力情報を出力するためのPUF入力情報X_rを生成する(ステップS601)。ステップS601の処理は、後述するステップS603において、PUF入力情報X_rがPUF204に入力されるまでに行われていればよく、例えば、第rラウンドの処理が開始される前に行われていてもよい。
PUF出力一時記憶部205は、ステップS601でPUF入力生成部203が生成したPUF入力情報X_rを入力としてPUF204が出力するWビットのPUF出力情報を記憶する(ステップS602)。
PUF出力一時記憶部205がPUF出力情報を記憶すると、暗号化鍵生成装置200は、k=1,...,Wについて、PUF出力一時記憶部205が記憶するPUF出力情報に対して、以下のステップS603〜ステップS606の処理を繰り返し実行する。
出力シフト部207は、例えば、PUF出力一時記憶部205がPUF出力情報をkビット左巡回シフトさせて、参照情報Z’_rを生成する(ステップS603)。
比較部208は、ステップS603で出力シフト部207が生成した参照情報Z’_rと、記憶部202が記憶するパターン情報Z_rとが類似データであるか否かを判定する(ステップS604)。なお、比較部208は、記憶部202が記憶するパターン情報Z_rに対して、出力シフト部207が参照情報Z’_rを生成する際に行うシフトの方向とは逆方向のシフトを行って得られるデータと、PUF出力一時記憶部205がPUF出力情報とを比較して、これらが類似データであるか否かを判定するようにしてもよい。
比較部208が二つのデータを類似データであると判定した場合(ステップS604:Yes)、暗号化鍵生成装置200は、I_r=kとして秘密情報I_rを再現する(ステップS605)。つまり、記憶部202が記憶するパターン情報Z_rに類似すると判定された参照情報Z’_rが出現するまでのPUF出力情報の巡回シフト量kを、秘密情報I_rとして再現する。比較部208が二つのデータを類似データではないと判定した場合には(ステップS604:No)、ステップS605の処理はスキップする。
その後、暗号化鍵生成装置200は、k<Wであるか否かを判定する(ステップS606)。ここで、k<Wであるならば(ステップS606:Yes)、kをk+1に置き換えて、ステップS603に戻って以降の処理を繰り返す。なお、k=1,...,Wについて、ステップS603〜ステップS606の処理を繰り返しても再現できない秘密情報I_rが存在する場合には、暗号化鍵生成装置200は、処理を停止するようにしてもよいし、再現できない秘密情報I_rに予め定められた値あるいはランダムな値を設定してもよい。
ステップS606の判定の結果がk=Wであるならば(ステップS606:No)、暗号化鍵生成装置200は、r<Rであるか否かを判定する(ステップS607)。ここで、r<Rであるならば(ステップS607:Yes)、暗号化鍵生成装置200は、rをr+1に置き換えて、ステップS601に戻って以降の処理を繰り返す。一方、r=Rであるならば(ステップS607:No)、ステップS608に進む。
鍵生成部209は、例えば、各ラウンドにおいて再現したR個の秘密情報I_rを連結して、暗号化鍵を生成する(ステップS608)。なお、鍵生成部209は、秘密情報I_rの代わりに、PUF入力情報{X_r}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。あるいは、鍵生成部209は、秘密情報I_rに加えて、PUF入力情報{X_r}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。また、鍵生成部209は、連結した値を暗号化鍵として用いてもよいし、連結した値をハッシュ関数などに入力し、得られた値を暗号化鍵として用いてもよい。
なお、本実施形態の暗号化鍵生成装置200では、PUF入力生成部203が、秘密情報I_rに基づいて、PUF204に入力するPUF入力情報X_rを生成するようにしている。しかし、PUF入力生成部203は、例えばPUF204への起動信号など、秘密情報I_rに依存しない固定値を、PUF入力情報X_rとして生成するようにしてもよい。
また、本実施形態の暗号化鍵生成装置200では、PUF204が、各ラウンドにおいてWビットのPUF出力情報を出力するようにしている。しかし、PUF204がWビットを超えるPUF出力情報を出力し、各ラウンドでそのPUF出力情報の一部を利用する構成であってもよい。例えば、図8のステップS505において、PUF出力情報を巡回シフトして得られるデータの前半Vビット(V<W)をパターン情報Z_rとして利用してもよい。あるいは、PUF204がWビットを超えるPUF出力情報を出力するとき、PUF出力一時記憶部205が、PUF出力情報のうちの前半Vビット(V<W)と後半W−Vビットを連結して記憶し、以降の処理を実施する構成とすることができる。また、例えば、PUF204に対して固定値のPUF入力情報X_rが入力され、PUF204がR×WビットのPUF出力情報を出力する場合には、第iラウンドでは、PUF出力一時記憶部205がPUF出力情報のうち(i−1)×Wビット目からWビットのデータを記憶し、以降の処理を実施する構成とすることができる。
なお、本実施形態の暗号化鍵生成装置200では、PUF入力生成部203がPUF204への起動信号などの秘密情報I_rに依存しない固定値をPUF入力情報X_rとして生成する場合に、以下に示すように、各ラウンドにおける暗号化鍵の更新が可能になる。すなわち、暗号化鍵設定の処理では、出力シフト部207がPUF出力情報を巡回シフトしてパターン情報Z_rを生成するため、記憶部202には、パターン情報Z_1,・・・,Z_Rが記憶される。ここで、暗号化鍵を更新する場合は、記憶部202が記憶するパターン情報Z_rを、Z_rをΔ_rだけ巡回シフトして得られるZ_r’に置き換える。Z_r’は、PUF出力情報をI_r+Δ_rだけ巡回シフトして得られる値であるため、暗号化鍵再現の処理では、{I_r+Δ_r}_{1≦r≦R}に基づいて暗号化鍵が生成される。つまり、{I_r}_{1≦r≦R}に基づく暗号化鍵を、{I_r+Δ_r}_{1≦r≦R}に基づく暗号化鍵に更新することができる。
<実施形態の効果>
非特許文献1が開示する暗号化鍵の生成方法では、PUFの出力の長さを十分に長く設定し、その一部のみを記憶部に記憶して暗号化鍵の生成および再現に利用している。例えば、非特許文献1が開示する暗号化鍵の生成方法では、Lは1024ビット、Wは256ビットとされ、各ラウンドでPUFは1379ビット出力しなければならなかった。
このように、非特許文献1が開示する暗号化鍵の生成方法では、各ラウンドごとに256ビットの情報を記憶部に記憶させるために、PUFは1379ビット出力しなければならず、PUFの利用効率が悪いという問題があった。
これに対して、第2実施形態の暗号化鍵生成装置200によれば、一つのラウンドでPUF204が出力するPUF出力情報はWビットであり、このWビットのPUF出力情報を巡回シフトして得られるパターン情報を記憶部202に記憶する構成であるため、非特許文献1が開示する暗号化鍵の生成方法と比べて、各ラウンドで生成するPUF出力情報は短くてよい。例えば、W=256とする場合に、非特許文献1が開示する暗号化鍵の生成方法では1379ビットのPUF出力情報が必要であったのに対して、第2実施形態の暗号化鍵生成装置200では256ビットでよく、各ラウンドにおけるPUF204の出力ビット数は1/5程度になる。このように、本実施形態の暗号化鍵生成装置200は、非特許文献1が開示する暗号化鍵の生成方法と比べてPUFの出力を少なくし、効率的に暗号化鍵を生成できる。
<第2実施例の構成>
次に、第2実施形態の暗号化鍵生成装置200をより具体化した第2実施例について説明する。図10は、第2実施例の暗号化鍵生成装置2000のブロック図である。
図10に示すように、第2実施例の暗号化鍵生成装置2000は、4種類のレジスタ2001,2002,2003,2014、外部メモリ2004、カウンタ2005、PUF演算回路2006、PUF入力生成回路2007、巡回シフト回路2008、秘密情報生成回路2009、秘密情報再現回路2010、比較回路2011、選択回路2012、および鍵生成回路2013を備える。
レジスタI2001は、秘密情報を保持するレジスタである。レジスタI2001は、各ラウンドrごとに1つの秘密情報を保持してもよく、複数のラウンドi=1,...,rに関する秘密情報をまとめて保持してもよい。
レジスタP2002は、PUF演算回路2006に入力するPUF入力情報を保持するレジスタである。なお、後述するPUF入力生成回路2007の出力が、そのままPUF演算回路2006に入力される場合には、鍵生成装置2000はレジスタP2002を備えなくともよい。
レジスタR2003は、PUF演算回路2006が出力するPUF出力情報を保持するレジスタである。レジスタR2003は、PUF演算回路2006が出力するWビットのPUF出力情報を保持する。レジスタR2003は、上述した第2実施形態の暗号化鍵生成装置200におけるPUF出力一時記憶部205に相当する。
外部メモリ2004は、巡回シフト回路2008が出力するパターン情報を記憶するメモリである。外部メモリ2004は、上述した第2実施形態の暗号化鍵生成装置200における記憶部202に相当する。
カウンタ2005は、各ラウンドにおいて、巡回シフト回路2008によるPUF出力情報の巡回シフト量をカウントし、カウンタ値cnを記憶する。
PUF演算回路2006は、上述した第2実施形態の暗号化鍵生成装置200におけるPUF204を実装した演算回路であり、PUF入力情報を入力としてPUF出力情報を生成し出力する。
PUF入力生成回路2007は、レジスタI2001が保持する秘密情報に基づいて、PUF演算回路2006に入力するPUF入力情報を生成する。PUF入力生成回路2007は、上述した第2実施形態の暗号化鍵生成装置200におけるPUF入力生成部203に相当する。
巡回シフト回路2008は、レジスタR2003が記憶するWビットのPUF出力情報を、レジスタI2001に格納されている秘密情報で示される値だけ巡回シフトして、外部メモリ2004に記憶するパターン情報を生成する。巡回シフト回路2008は、上述した第2実施形態の暗号化鍵生成装置200における出力シフト部207に相当する。なお、レジスタR2003と巡回シフト回路2008とを併せて実装し、レジスタR2003内でPUF出力情報の巡回シフトを行うようにしてもよい。あるいは、PUF演算装置2006が1ビット出力するごとに、レジスタR2003内で、レジスタI2001に格納されている秘密情報で示される値の番地にPUF出力情報を巡回シフトしながら書き込んでもよい。
秘密情報生成回路2009は、暗号化鍵設定の各ラウンドrにおいて、一つの秘密情報を発生させる回路である。秘密情報再現回路2010は、暗号化鍵再現において、後述する比較回路2011の出力に基づき、カウンタ2005の値を秘密情報として再現する。秘密情報生成回路2009および秘密情報再現回路2010は、上述した第2実施形態の暗号化鍵生成装置200における秘密情報生成部206に相当する。
比較回路2011は、暗号化鍵再現において、外部メモリ2004が記憶するパターン情報と巡回シフト回路2008が出力する参照情報とを比較する回路であり、比較するパターン情報と参照情報とが類似のデータであると判断する場合には1を出力し、そうでない場合には0を出力する。
選択回路2012は、暗号化鍵設定の処理を実行しているときには秘密情報生成回路2009の出力を選択してレジスタI2001に出力し、暗号化鍵再現の処理を実行しているときには秘密情報再現回路2010の出力を選択してレジスタI2001に出力する。
鍵生成回路2013は、レジスタI2001が保持する秘密情報に基づき、暗号化鍵を生成する回路である。鍵生成回路2013は、上述した第2実施形態の暗号化鍵生成装置200における鍵生成部209に相当する。
レジスタK2014は、鍵生成回路2013が出力する暗号化鍵を保持するレジスタである。
<第2実施例の暗号化鍵設定>
次に、図11を参照して、第2実施例の暗号化鍵生成装置2000が実行する暗号化鍵設定の処理について説明する。図11は、第2実施例の暗号化鍵生成装置2000による暗号化鍵設定の一連の処理の流れを示すフローチャートである。
図11のフローチャートで示す暗号化鍵設定の処理は、第2実施例の暗号化鍵生成装置2000が暗号化鍵設定開始の命令を受け付けることで開始される。第2実施例の暗号化鍵生成装置2000は、暗号化鍵設定開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。
カウンタ2005は、カウンタ値cnを1に初期化する(ステップS701)。
秘密情報生成回路2009は、秘密情報I_rを生成し、レジスタI2001に格納する(ステップS702)。ステップS702の処理は、例えば、第rラウンドの処理が開始される前に行われていてもよい。
PUF入力生成回路2007は、予め定められた初期値あるいはステップS701で秘密情報生成回路2009が生成した秘密情報I_rを入力としてPUF入力情報X_rを生成し、レジスタP2002に格納する(ステップS703)。ステップS703の処理は、例えば、第rラウンドの処理が開始される前に行われていてもよい。
レジスタR2003は、ステップS703でレジスタP2002に格納されたPUF入力情報X_rを入力としてPUF演算回路2006が出力するWビットのPUF出力情報を記憶する(ステップS704)。
WビットのPUF出力情報がレジスタR2003に記憶されると、第2実施例の暗号化鍵再現装置2000は、cn=1,2,...,Wについて、以下のステップS705〜ステップS708の処理を繰り返す。
巡回シフト回路2008は、レジスタR2003が記憶するPUF出力情報を1ビットずつ左巡回シフトする(ステップS705)。このステップS705の処理によりPUF出力情報が1ビット左巡回シフトされるたびに、カウンタ2005のカウンタ値cnがインクリメントされる。
第2実施例の暗号化鍵生成装置2000は、カウンタ2005のカウンタ値cnがI_rと一致するか否か、つまり、秘密情報I_rが示すシフト量だけPUF出力情報が巡回シフトされたか否かを判定し(ステップS706)、カウンタ値cnがI_rと一致するときに(ステップS706:Yes)、巡回シフト回路2008の出力をパターン情報として外部メモリ2004に記憶する(ステップS707)。なお、カウンタ値cnがI_rと一致しないときは(ステップS706:No)、ステップS707の処理はスキップする。
その後、第2実施例の暗号化鍵生成装置2000は、カウンタ2005のカウンタ値cn<Wか否かを判定する(ステップS708)。ここで、cn<Wであるならば(ステップS708:Yes)、暗号化鍵生成装置2000は、ステップS705に戻って以降の処理を繰り返す。一方、cn=Wであるならば(ステップS708:No)、暗号化鍵生成装置2000は、r<Rであるか否かを判定する(ステップS709)。ここで、r<Rであるならば(ステップS709:Yes)、暗号化鍵生成装置2000は、rをr+1に置き換えて、ステップS701に戻って以降の処理を繰り返す。一方、r=Rであるならば(ステップS709:No)、ステップS710に進む。
鍵生成回路2013は、例えば、各ラウンドにおいてレジスタI2001に格納された秘密情報の集合{I_i}_{0≦i≦R}に含まれる各秘密情報I_rを連結して暗号化鍵を生成し、レジスタK2014に格納する(ステップS710)。
<第2実施例の暗号化鍵再現>
次に、図12を参照して、第2実施例の暗号化鍵生成装置2000が実行する暗号化鍵再現の処理について説明する。図12は、第2実施例の暗号化鍵生成装置2000による暗号化鍵再現の一連の処理の流れを説明するフローチャートである。
図12のフローチャートで示す暗号化鍵再現の処理は、第2実施例の暗号化鍵生成装置2000が暗号化鍵再現開始の命令を受け付けることで開始される。第2実施例の暗号化鍵生成装置2000は、暗号化鍵再現開始の命令を受け付けると、ラウンド番号rを1で初期化し、r=1,...,Rに対して、以下の処理をそれぞれ実行する。
カウンタ2005は、カウンタ値cnを1に初期化する(ステップS801)。
PUF入力生成回路2007は、予め定められた初期値あるいは前回のラウンド処理で秘密情報再現回路2010が再現した秘密情報{I_i}_{0≦i<r}を入力としてPUF入力情報X_rを生成し、レジスタP2002に格納する(ステップS802)。ステップS802の処理は、例えば、第rラウンドの処理が開始される前に行われていてもよい。
レジスタR2003は、ステップS802でレジスタP2002に格納されたPUF入力情報X_rを入力としてPUF演算回路2006が出力するWビットのPUF出力情報を記憶する(ステップS803)。
WビットのPUF出力情報がレジスタR2003に記憶されると、第2実施例の暗号化鍵再現装置2000は、cn=1,2,...,Wについて、以下のステップS804〜ステップS807の処理を繰り返す。
巡回シフト回路2008は、レジスタR2003が記憶するPUF出力情報を1ビットずつ左巡回シフトして、パターン情報の比較対象となる参照情報Z_rを生成する(ステップS804)。このステップS804の処理によりPUF出力情報が1ビットずつ左巡回シフトされて新たな参照情報が生成されるたびに、カウンタ2005のカウンタ値cnがインクリメントされる。
比較回路2011は、ステップS804で生成された参照情報Z’_rと、外部メモリ2004が記憶するパターン情報Z_rとを比較して、これらが類似データであるか否かを判定する(ステップS805)。
比較回路2011が二つのデータを類似データであると判定した場合(ステップS805:Yes)、秘密情報再現回路2010は、カウンタ2005が記憶するカウンタ値cnを秘密情報I_rとして再現する(ステップS806)。つまり、パターン情報Z_rに類似すると判定された参照情報Z’_rは、カウンタ2005のカウンタ値cnで示される巡回シフト量だけPUF出力情報を左巡回シフトした情報であるので、カウンタ2005のカウンタ値cnが示す巡回シフト量を、秘密情報I_rとして再現する。比較回路2011が二つのデータを類似データではない判定した場合には(ステップS805:No)、ステップS806の処理はスキップする。
その後、第2実施例の暗号化鍵生成装置2000は、カウンタ2005のカウンタ値cn<Wか否かを判定する(ステップS807)。ここで、cn<Wであるならば(ステップS807:Yes)、暗号化鍵生成装置2000は、ステップS804に戻って以降の処理を繰り返す。一方、cn=Wであるならば(ステップS807:No)、暗号化鍵生成装置2000は、r<Rであるか否かを判定する(ステップS808)。ここで、r<Rであるならば(ステップS808:Yes)、暗号化鍵生成装置2000は、rをr+1に置き換えて、ステップS801に戻って以降の処理を繰り返す。一方、r=Rであるならば(ステップS808:No)、ステップS809に進む。
鍵生成回路2013は、例えば、各ラウンドにおいて秘密情報再現回路2010により再現され、レジスタI2001に格納された秘密情報の集合{I_i}_{0≦i≦R}に含まれる各秘密情報I_rを連結して暗号化鍵を生成し、レジスタK2014に格納する(ステップS809)。なお、鍵生成回路2013は、秘密情報{I_i}_{0≦i≦R}の代わりに、PUF入力情報{X_r}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。あるいは、鍵生成回路2013は、秘密情報{I_i}_{0≦i≦R}に加えて、PUF入力情報{X_r}_{1≦r≦R}を連結して暗号化鍵を生成してもよい。また、鍵生成回路2013は、連結した値を暗号化鍵として用いてもよいし、連結した値をハッシュ関数などに入力し、得られた値を暗号化鍵として用いてもよい。
以上、第1実施形態および第2実施形態とそれらの具体的な実施例について説明したが、これら実施形態の暗号化鍵生成装置は、通常のコンピュータを利用したハードウェア構成を採用し、コンピュータによって実行されるプログラムにより、上述した各機能構成を実現する構成とすることができる。
上述した暗号化鍵生成装置の各機能構成を実現するプログラムは、例えば、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)などのコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、上述した暗号化鍵生成装置の各機能構成を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上述した暗号化鍵生成装置の各機能構成を実現するプログラムを、インターネットなどのネットワーク経由で提供または配布するように構成してもよい。さらに、上述した暗号化鍵生成装置の各機能構成を実現するプログラムを、ROMなどに予め組み込んで提供するように構成してもよい。
上述した暗号化鍵生成装置の各機能構成を実現するプログラムは、各機能構成に対応するコンポーネントを含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)が上記記憶媒体からプログラムを読み出して実行することにより上記各コンポーネントが主記憶装置上にロードされ、暗号化鍵生成装置の各機能構成が主記憶装置上に生成されるようになっている。
以上、具体的な例を挙げながら詳細に説明したように、実施形態の暗号化鍵生成装置によれば、物理的複製困難関数を用いて効率良く暗号化鍵を生成することができる。
なお、第1実施形態および第2実施形態とそれらの具体的な実施例は、その構成要素を適宜組み合わせることで、種々の発明を形成することができる。例えば、第2実施形態の暗号化鍵生成装置200がMGF107およびマスク処理部108を備え、巡回シフトしたPUF出力情報をマスク処理して記憶部102に記憶する構成とすることもできる。また、第2実施形態の暗号化鍵生成装置200が、各ラウンドにおいて、複数の秘密情報を生成あるいは再現するようにしてもよい。
また、以上説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。上記の新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。上記の実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
100 暗号化鍵生成装置
102 記憶部
104 PUF
107 MGF
108 マスク処理部
109 比較部
110 鍵生成部
200 暗号化鍵生成装置
202 記憶部
204 PUF
207 出力シフト部
208 比較部
209 鍵生成部
1000 暗号化鍵生成装置
1004 外部メモリ
1006 PUF演算回路
1008 マスク生成回路
1009 排他的論理和演算回路
1012 比較回路
1014 鍵生成回路
2000 暗号化鍵生成装置
2004 外部メモリ
2006 PUF演算回路
2008 巡回シフト回路
2011 比較回路
2013 鍵生成回路

Claims (4)

  1. 物理的複製困難関数により入力情報を変換して出力情報を出力する変換部と、
    前記出力情報の中で複数のインデックス情報がそれぞれ指し示す位置の複数の情報を複数のパターン情報として記憶部に記憶させる記憶制御部と、
    複数の前記インデックス情報に基づいて暗号化鍵を生成する生成部と、
    前記出力情報と複数の前記パターン情報とをそれぞれ比較して、前記出力情報の中で複数の前記パターン情報と類似する情報が出現する複数の位置を検出する比較部と、
    複数の前記パターン情報をマスク処理するマスク処理部と、を備え、
    前記記憶制御部は、マスク処理された複数の前記パターン情報を前記記憶部に記憶させ、
    前記比較部は、マスク処理された複数の前記パターン情報をマスク処理された前記出力情報と比較する、または、マスク処理された複数の前記パターン情報をマスク処理前の複数の前記パターン情報に復元して前記出力情報と比較することで、前記出力情報の中で複数の前記パターン情報と類似する複数の情報が出現する複数の位置を検出し、
    前記生成部は、前記比較部が検出した複数の位置を複数の前記インデックス情報として再現し、再現した複数の前記インデックス情報に基づいて前記暗号化鍵を再現することを特徴とする暗号化鍵生成装置。
  2. 物理的複製困難関数により入力情報を変換して出力情報を出力する変換部と、
    前記出力情報を、秘密情報が示す量だけ巡回シフトした情報をパターン情報として記憶部に記憶させる記憶制御部と、
    前記秘密情報に基づいて暗号化鍵を生成する生成部と、
    前記出力情報を巡回シフトしながら前記パターン情報と比較して、前記出力情報が前記パターン情報と類似するときの巡回シフト量を検出する比較部と、を備え、
    前記生成部は、前記比較部が検出した巡回シフト量を前記秘密情報として再現し、再現した前記秘密情報に基づいて前記暗号化鍵を再現することを特徴とする暗号化鍵生成装置。
  3. コンピュータに、
    物理的複製困難関数により入力情報を変換して出力情報を出力する機能と、
    前記出力情報の中で複数のインデックス情報がそれぞれ指し示す位置の複数の情報を複数のパターン情報として、各パターン情報をマスク処理する機能と、
    マスク処理された複数の前記パターン情報記憶部に記憶させる機能と、
    複数の前記インデックス情報に基づいて暗号化鍵を生成する機能と、
    マスク処理された複数の前記パターン情報をマスク処理された前記出力情報と比較する、または、マスク処理された複数の前記パターン情報をマスク処理前の複数の前記パターン情報に復元して前記出力情報と比較することで、前記出力情報の中で複数の前記パターン情報と類似する複数の情報が出現する複数の位置を検出する機能と、
    検出した複数の位置を複数の前記インデックス情報として再現し、再現した複数の前記インデックス情報に基づいて前記暗号化鍵を再現する機能と、を実現させることを特徴とするプログラム。
  4. コンピュータに、
    物理的複製困難関数により入力情報を変換して出力情報を出力する機能と、
    前記出力情報を、秘密情報が示す量だけ巡回シフトした情報をパターン情報として記憶部に記憶させる機能と、
    前記秘密情報に基づいて暗号化鍵を生成する機能と、
    前記出力情報を巡回シフトしながら前記パターン情報と比較して、前記出力情報が前記パターン情報と類似するときの巡回シフト量を検出する機能と、
    検出した巡回シフト量を前記秘密情報として再現し、再現した前記秘密情報に基づいて前記暗号化鍵を再現する機能と、を実現させることを特徴とするプログラム。
JP2011275637A 2011-12-16 2011-12-16 暗号化鍵生成装置およびプログラム Active JP5710460B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011275637A JP5710460B2 (ja) 2011-12-16 2011-12-16 暗号化鍵生成装置およびプログラム
US13/710,694 US9537653B2 (en) 2011-12-16 2012-12-11 Encryption key generating apparatus and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011275637A JP5710460B2 (ja) 2011-12-16 2011-12-16 暗号化鍵生成装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2013126221A JP2013126221A (ja) 2013-06-24
JP5710460B2 true JP5710460B2 (ja) 2015-04-30

Family

ID=48610143

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011275637A Active JP5710460B2 (ja) 2011-12-16 2011-12-16 暗号化鍵生成装置およびプログラム

Country Status (2)

Country Link
US (1) US9537653B2 (ja)
JP (1) JP5710460B2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014112999A1 (en) 2013-01-16 2014-07-24 Intel Corporation Grouping of physically unclonable functions
EP2779067B1 (en) * 2013-03-15 2019-05-08 Maxim Integrated Products, Inc. Secure authentication based on physically unclonable functions
JP6182371B2 (ja) * 2013-06-28 2017-08-16 ルネサスエレクトロニクス株式会社 半導体集積回路を含むシステム
DE102013227166B4 (de) * 2013-12-27 2016-01-14 Siemens Aktiengesellschaft Schaltkreiseinheit zur Bereitstellung eines kryptographischen Schlüssels
US9755831B2 (en) * 2014-01-22 2017-09-05 Qualcomm Incorporated Key extraction during secure boot
JP6265783B2 (ja) * 2014-03-06 2018-01-24 キヤノン株式会社 暗号化/復号化システム及びその制御方法、並びにプログラム
TWI730941B (zh) 2014-04-09 2021-06-21 南韓商Ictk控股有限公司 驗證裝置及方法
US9485094B1 (en) * 2014-04-21 2016-11-01 Maxim Integrated Products, Inc. Systems and methods for stable physically unclonable functions
KR102304927B1 (ko) 2014-06-13 2021-09-24 삼성전자 주식회사 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법
US9438421B1 (en) 2014-06-27 2016-09-06 Amazon Technologies, Inc. Supporting a fixed transaction rate with a variably-backed logical cryptographic key
US9483664B2 (en) * 2014-09-15 2016-11-01 Arm Limited Address dependent data encryption
KR101575810B1 (ko) * 2014-09-30 2015-12-08 고려대학교 산학협력단 물리적 복제 방지 기능을 갖는 플래시 메모리 장치 및 그 구현 방법
US9569601B2 (en) * 2015-05-19 2017-02-14 Anvaya Solutions, Inc. System and method for authenticating and enabling functioning of a manufactured electronic device
US9760737B2 (en) * 2015-06-12 2017-09-12 Qualcomm Incorporated Techniques for integrated circuit data path confidentiality and extensions thereof
KR101590351B1 (ko) * 2015-06-16 2016-02-01 동국대학교 산학협력단 분산 네트워크 프로토콜 기반의 데이터 전송 장치 및 그의 데이터 암호화 방법
US11797994B2 (en) * 2016-07-15 2023-10-24 Maxim Integrated Products, Inc. Systems and methods for a secure payment terminal without batteries
WO2018183915A1 (en) * 2017-03-30 2018-10-04 Arizona Board Of Regents On Behalf Of Northern Arizona University Encryption schemes with addressable elements
US10949546B2 (en) 2017-08-02 2021-03-16 Samsung Electronics Co., Ltd. Security devices, electronic devices and methods of operating electronic devices
CN110018810B (zh) * 2018-01-10 2021-05-18 力旺电子股份有限公司 随机码产生器
US10742406B2 (en) * 2018-05-03 2020-08-11 Micron Technology, Inc. Key generation and secure storage in a noisy environment
KR102600349B1 (ko) * 2018-11-16 2023-11-09 한국전자통신연구원 링 발진기 구조 기반의 비밀 정보 생성 장치 및 방법
US11218330B2 (en) 2019-03-25 2022-01-04 Micron Technology, Inc. Generating an identity for a computing device using a physical unclonable function
US11323275B2 (en) 2019-03-25 2022-05-03 Micron Technology, Inc. Verification of identity using a secret key
US11343108B2 (en) * 2019-06-12 2022-05-24 Arizona Board Of Regents On Behalf Of Northern Arizona University Generation of composite private keys
KR102720690B1 (ko) 2019-06-12 2024-10-22 삼성전자주식회사 물리적 복제 방지 기능 셀들을 포함하는 보안 장치 및 그것의 동작 방법
WO2021070701A1 (ja) * 2019-10-09 2021-04-15 シャープ株式会社 情報処理装置及び情報処理方法
US20210119812A1 (en) * 2020-12-23 2021-04-22 Intel Corporation Time-based multi-dimensional key recreation mechanism using puf technologies
EP4047587A1 (en) * 2021-02-22 2022-08-24 HENSOLDT Sensors GmbH Chip device and method for a randomized logic encryption
US20230038135A1 (en) * 2021-07-23 2023-02-09 Arizona Board Of Regents On Behalf Of Northern Arizona University Salted hashing method for response-based cryptography

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW396704B (en) * 1997-08-07 2000-07-01 Hitachi Ltd Cipher conversion method, cipher conversion apparatus, decoding method, decoding apparatus, and data communication system
US6427219B1 (en) * 1998-06-24 2002-07-30 Conexant Systems, Inc. Method and apparatus for detecting and correcting errors using cyclic redundancy check
CN101542496B (zh) * 2007-09-19 2012-09-05 美国威诚股份有限公司 利用物理不可克隆功能的身份验证
EP2359520B1 (en) * 2008-11-17 2019-08-14 Intrinsic ID B.V. Distributed puf
JP5548218B2 (ja) * 2009-03-06 2014-07-16 イントリンシツク・イー・デー・ベー・ベー 物理的システムに依存する暗号鍵を確立するためのシステム
US8811615B2 (en) * 2009-08-05 2014-08-19 Verayo, Inc. Index-based coding with a pseudo-random source
CN102656588B (zh) * 2009-08-14 2015-07-15 本质Id有限责任公司 具有防篡改和抗老化系统的物理不可克隆函数
US20120183135A1 (en) * 2011-01-19 2012-07-19 Verayo, Inc. Reliable puf value generation by pattern matching
JP5770026B2 (ja) * 2011-06-20 2015-08-26 ルネサスエレクトロニクス株式会社 半導体装置
US8700916B2 (en) * 2011-12-02 2014-04-15 Cisco Technology, Inc. Utilizing physically unclonable functions to derive device specific keying material for protection of information
US8750502B2 (en) * 2012-03-22 2014-06-10 Purdue Research Foundation System on chip and method for cryptography using a physically unclonable function

Also Published As

Publication number Publication date
JP2013126221A (ja) 2013-06-24
US20130156183A1 (en) 2013-06-20
US9537653B2 (en) 2017-01-03

Similar Documents

Publication Publication Date Title
JP5710460B2 (ja) 暗号化鍵生成装置およびプログラム
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5402632B2 (ja) 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及びプログラム
US10326589B2 (en) Message authenticator generating apparatus, message authenticator generating method, and computer readable recording medium
KR102154164B1 (ko) 의사 랜덤 시퀀스 생성 방법 및 데이터 스트림의 코딩 또는 디코딩 방법
CN107534549B (zh) 可读存储介质、用于数据流字块加密的方法及系统
US20190268134A1 (en) Method and circuit for implementing a substitution table
CN116488794A (zh) 基于fpga的高速sm4密码模组实现方法及装置
US20150058639A1 (en) Encryption processing device and storage device
JP6273226B2 (ja) 暗号化システム、認証システム、暗号化装置、復号装置、認証子生成装置、検証装置、暗号化方法、認証方法
JP6818949B2 (ja) 署名装置、検証装置、署名システム、署名方法、署名プログラム、検証方法及び検証プログラム
JP2009169316A (ja) ハッシュ関数演算装置及び署名装置及びプログラム及びハッシュ関数演算方法
JP6337133B2 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
JP6797337B2 (ja) メッセージ認証装置、メッセージ認証方法及びメッセージ認証プログラム
US11177936B2 (en) Message authenticator generation apparatus
US11587467B2 (en) Encryption processing device, encryption processing method, and computer program product
JP6273224B2 (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法
CN110071927B (zh) 一种信息加密方法、系统及相关组件
JP2011119985A (ja) 暗号復号方法
Hell et al. Some attacks on the bit-search generator
EP4156598A1 (en) Challenge-response pair generation apparatus and method based on puf
JP4990843B2 (ja) 暗号演算装置、その方法、及びプログラム
JP2010276629A (ja) ハッシュ値演算装置、ハッシュ値演算方法及びハッシュ値演算プログラム
JP6273223B2 (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム
JP2004347885A (ja) 暗号化装置処理方法、暗号復号装置処理方法、これらの装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140910

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140916

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141107

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: 20150203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150304

R151 Written notification of patent or utility model registration

Ref document number: 5710460

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151