JP5377667B2 - ビット列生成装置及びビット列生成方法 - Google Patents

ビット列生成装置及びビット列生成方法 Download PDF

Info

Publication number
JP5377667B2
JP5377667B2 JP2011549823A JP2011549823A JP5377667B2 JP 5377667 B2 JP5377667 B2 JP 5377667B2 JP 2011549823 A JP2011549823 A JP 2011549823A JP 2011549823 A JP2011549823 A JP 2011549823A JP 5377667 B2 JP5377667 B2 JP 5377667B2
Authority
JP
Japan
Prior art keywords
bit
glitch
signal
input
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
JP2011549823A
Other languages
English (en)
Other versions
JPWO2011086688A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2011086688A1 publication Critical patent/JPWO2011086688A1/ja
Application granted granted Critical
Publication of JP5377667B2 publication Critical patent/JP5377667B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/84Generating pulses having a predetermined statistical distribution of a parameter, e.g. random pulse generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • 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/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/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Manipulation Of Pulses (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Description

本発明は、認証処理や暗号化処理などを実行するセキュリティ装置に関する。例えば、暗号処理で用いる秘密情報や、装置を認証するために必要な装置固有の識別子を、装置に固有な物理量を元に生成する装置に関する。
近年、携帯電話に代表される組み込み機器のネットワーク化に伴い、組み込み機器で扱うデータの秘匿や、データ完全性の保持及び組み込み機器そのものの認証のために、組み込み機器が、情報セキュリティに関わる処理を行う必要性が高まっている。これら情報セキュリティに関わる処理は、暗号化アルゴリズムや認証アルゴリズムによって実現される。
ここで、前記アルゴリズムを実行する上で大前提となるのは、各組み込み機器がユニークな秘密情報や、機器固有の識別子(以下ではこれらの情報を「鍵情報」と呼ぶ)を「安全に」保持していることである。この「安全に」の意味は、その機器を正当に利用可能な者以外にとって、鍵情報の読み取りや改竄が困難であることを指す。
鍵情報を安全に保持するための手段として、各種センサ(光センサ、電圧センサ、周波数検出器)を搭載し、物理的な保護膜(金属ケースや樹脂によるモールド)によって外部からの不正アクセスを防ぐ筐体やセキュリティチップなどの耐タンパ機構を用いた保護方法がある。これらの保護方法は、不揮発的に装置内にデジタルデータとして存在する鍵情報を守ることを前提とした手段である。
一方、前述の手段とは異なるアプローチで鍵情報を安全に保持する方法として、PUF(Physical Unclonable Function)と呼ばれる技術がある。PUFの大きな特徴は、鍵情報を装置内に不揮発的なデジタルデータとして保持しない点にある。PUFの実施形態はいくつか存在するが、以下では特許文献1に開示される汎用性の高い「信号発生器をベースとした装置セキュリティ」を代表例として従来技術を説明する。
図19は、特許文献1におけるPUFの実施形態を示す。ビット生成器100は、N個のリングオシレータ102(R0〜RN)で構成されるリングオシレータ群101と、選択回路104及び周波数比較器107で構成される。
ビット生成器100は、各リングオシレータ102の周波数特性を鍵情報の情報源とする。リングオシレータの出力信号103は各リングオシレータを構成する帰還回路の遅延特性で決定される周波数で発振する。選択回路104はN本のリングオシレータの出力信号103から選択信号105(I,J)の値に応じて2つの信号106(Si,Sj)を対として出力する。次に、Si,Sjの発振周波数は周波数比較器107にて比較され、周波数比較器107は、比較結果108を出力する。ここで、Si及びSjの発振周波数をそれぞれFi、Fjと表記するならば、例としてその差分値Fi−Fjを比較結果108とする方法が挙げられる。最後にビット生成器100は比較結果108と比較結果108の正負を表す応答ビット値109を出力する。
前記特許文献1の実施例において、リングオシレータの発振周波数はデバイスの遅延特性のばらつきに応じて異なるため、ビット生成器100を同一の設計情報に基づき製造しても、個体に応じて異なる応答ビット値を出力する。従って、前記応答ビット値を各デバイスの識別子として利用することが可能であり、前記識別子は不揮発的なデジタルデータとして格納されておらず、ビット生成器を動作されるたびに生成されるため、従来よりも高い耐タンパ性を持つ、と特許文献1では主張されている。
特表2009−524998号公報
Altera,「Design Guidelines for HardCopy Series Devices」,2008 Altera,「Design Recommendations for Altera Devices and the Quartus II Design Assistant」,2009
特許文献1に記載されたリングオシレータによるPUFの実現には、2つの課題がある。
一つは、実装時の配置配線制約と前記応答ビット値の安全性に関するものである。特許文献1ではリングオシレータをすべて同じ設計(5つのインバータを用いたループ回路)によって構成することが記載されている。しかしながら、FPGA()のような配置配線の自由度が低いデバイスでは、同一の設計によるリングオシレータであっても配置配線によって周波数が大きく異なることがある。この場合、デバイスの個体差によって発生する差よりも、配置配線によって異なる差の方が支配的となるケースがある。その結果として、配置配線によって発振周波数に大きな差があるリングオシレータの対を選択した場合、デバイスに依存せず常に同じ応答ビット値を出力することになる。このようなビット値が多く含まれる場合、応答ビット値のランダム性が低くなるため、安全性上問題となる。この問題の解決策として、N個のリングオシレータの発振周波数が大きく変わらないように手動で配置配線を行うアプローチが考えられるが、Nが大きい場合は非常に困難になることが予想される。あるいは、あらかじめ実装するリングオシレータの数を多くし、自動配置配線を行うことで、偶然に発振周波数が近接するリングオシレータの対のみを用いて応答ビットを生成することも考えられるが、この場合Nの大きさを設計保証することが難しく、またリングオシレータと選択回路の回路規模が増大することになる。
2つ目の課題は、リングオシレータのような組み合わせループ回路は、FPGA(Field Programmable Gate Array)などのデバイスにおいてデザインルール上推奨されない構成となっている課題である。例えば、非特許文献1では、設計によってはリングオシレータを構成するインバータの入出力が中間電位状態となり、発振しない可能性があることが指摘されている。一般に、中間電位状態は貫通電流が定常的に流れる可能性があり、デバイスの信頼性を損ねる危険性がある。同様に、非特許文献2においても、組み合わせループ回路を推奨しない旨が記載されている。
本発明は以上のような技術的課題を鑑みてなされたものであり、その目的とするところは、配置配線の自由度が低いデバイスであっても、ランダム性の高い秘密情報を生成可能で、かつデザインルール違反を引き起こさないPUF回路を提供することにある。
この発明のビット列生成装置は、
グリッチを発生するグリッチ発生部と、
前記グリッチ発生部によって発生された前記グリッチの波形を取得するグリッチ波形取得部と、
前記グリッチ波形取得部によって取得された前記グリッチの波形に基づいて、1か0かのいずれかを示す1ビットデータを生成するビットデータ生成部と、
前記ビットデータ生成部によって生成された複数の前記1ビットデータからなるビット列を生成するビット列生成部と
を備えたことを特徴とする。
本発明により、配置配線の自由度が低いデバイスであっても、ランダム性の高い秘密情報を生成可能であり、かつ、デザインルールに違反しないPUF回路を提供できる。
実施の形態1における、ビット列生成装置200のシステムLSIへの搭載例。 実施の形態1における、同一の論理回路が異なる遅延情報を持つときに起こりうる、回路の挙動の例。 実施の形態1における、サンプリング回路220の構成。 実施の形態1における、サンプリング結果の期待値と、発生しうるサンプリング結果とを示す図。 実施の形態1における、ジッタ補正処理を用いてグリッチ捕捉処理を行った場合の捕捉結果。 実施の形態1における、ジッタ補正処理を行わない場合の捕捉結果。 実施の形態1における、補足されたグリッチパターンの例。 実施の形態1における、ビット列生成装置200の回路構成。 実施の形態1における、グリッチ発生回路205の構成例。 実施の形態1における、キャリーパスによる遅延回路とLUTによる遅延回路とを組み合わせた遅延回路の構成例。 実施の形態1における、各パラメータの関係。 実施の形態1における、ビット列生成装置200の実装評価結果。 実施の形態1における、伝令信号用遅延回路206、サンプリング用遅延回路209として使用される遅延回路の内部構成例。 実施の形態1における、可変遅延回路207の内部構成例。 実施の形態1における、ビット列生成装置200の動作を示すフローチャート。 実施の形態1における、ビット列生成装置200によるジッタ補正処理の動作を示すフローチャート。 実施の形態1における、サンプリング回路220による伝令信号(h)のサンプリングの状態。 実施の形態1における、サンプリング用レジスタ群210によってラッチされるデータ。 従来技術を示す図。
実施の形態1.
図1〜図18を参照して、実施の形態1のビット列生成装置200を説明する。実施の形態1のビット列生成装置200は、グリッチ形状を利用してPUFを構成する方法である。
図1は、ビット列生成装置200をシステムLSI(Large Scale Integration)1000に搭載する例を示す図である。CPU(Central Processing Unit)500、内部メモリ600、外部インタフェース700などを備える一般的な構成のシステムLSIに、ビット列生成装置200と、誤り訂正回路300(誤り訂正部)、暗号処理回路400を搭載した例である。以下に説明するが、ビット列生成装置200は、発生させたグリッチからビット列である鍵情報を生成する。この鍵情報は、グリッチPUFである。ビット列生成装置200によって生成されたデータ(ビット列)は、例えば、暗号処理回路400による暗号処理などの、情報セキュリティ処理で必要な鍵情報として利用される。ビット列生成装置200に対する制御は、CPU500から制御可能としてもよい。
以下では、まず「1.1 基本アイデア」〜「3.1 実装評価結果」においてビット列生成装置200(後述のグリッチPUF)の概要を説明した後、さらに詳しく、ビット列生成装置200の構成及び動作を詳しく説明する。
(1.1 基本アイデア)
論理回路の上流設計においてデバイス固有の特徴量を入力し、その特徴に応じたデバイスの挙動をシミュレートすることを考える。このシミュレーションの目的は、実装するPUFがデバイスの個体差によってどの程度の情報量をもつかを評価することであり、製造したLSIを大量に評価せずとも、その情報量(特にその下限を)を評価できる環境を構築することにある。前述のように、上流設計のシミュレーションに最も親和性のある特徴量は遅延情報である。各デバイスが持つ遅延情報の個体差がPUFのレスポンスの違いに直接結びつくような回路構成であれば、現状の論理回路設計フローの範囲でPUFの情報量を評価できる可能性がある。ここで、ある同一の論理回路が異なる遅延情報を持つときに起こりうる、回路の挙動の違いについて考える。
図2は、同一の論理回路が異なる遅延情報を持つときに起こりうる、回路の挙動の例を示す。例えば図2(a)のように、複数の入力に対してANDやXORなどの論理演算を行う回路を考える。このような回路では、ある特殊な条件が成立しない限り、各信号の遅延差によって、「グリッチ」と呼ばれる信号の過渡遷移が発生する。図2の例では、入力信号x1、x2、x3がすべて0から1へと変化する場合、XORゲートの出力は、入力信号x1、x2の信号変化に差があることによって凸状のグリッチが発生する。図2(b)のように、入力信号x3の変化がそのグリッチよりも早くANDゲートに到達していれば、グリッチはANDゲートの出力に伝播する。逆に、図2(c)のように、入力信号x3が遅ければ、グリッチはANDゲート出力に伝播せず、出力は変化しないことになる。さらに、x3の到達時刻が早い場合であっても、グリッチの幅が短い場合は、信号変化が出力に伝播しないケースもある。ここで、十分な幅を持つグリッチ波形に限定すれば、そのグリッチ波形の形状は、各ゲートの遅延の絶対量によって決定するのではなく、信号間の遅延値の相対関係によって確定する。つまり、グリッチ形状は動作環境が変化してもその形状が保存されることが期待できる。
発明者は、論理回路を構成する各ゲートの入力信号間の遅延関係によって様々な形状を取りうるグリッチに着目し、PUFの構成に応用する方法を考案した。以下では、この構成方法を「グリッチPUF」と呼ぶ場合がある。
(1.2 グリッチ形状の補足)
上記で述べたように、発明者は、遅延のばらつきによって様々な形状を取りうるグリッチを用いて、PUFを構成することを試みた。ここで問題となるのは、グリッチのような微小時間に発生するパルス信号の形状を如何にして正確に捕捉するかという点である。この点につき、その捕捉処理は、デジタル回路で実現する必要がある。
(位相シフト方法)
この問題の一般的な解決方法として、位相シフト法によりグリッチ波形をサンプリングする案が考えられる。位相のずれたクロック信号を複数用いし、それらのクロックを用いて微小パルスをサンプリングする。さらに、サンプリング精度を高めるためには、可能な限り多く位相の異なるクロックを用意する必要がある。この場合、クロックラインの数が多くなりすぎるため、この方式は現実的でない。特にFPGAでは、ジッタの少ないグローバルクロックラインの本数は数本から数十本と限られている。グリッチ波形を再生成し、サンプリング処理を時分割処理することでクロックラインの本数を減らす方法も考えられるが、分割数に応じて抽出速度が低下することになる。
そこで発明者は、サンプリング対象のデータを微小時間ずらし、同一のクロックでサンプリングする処理方式を採用した。
図3は、この方式を用いたサンプリング回路220の構成を示す。以下、このサンプリング処理を「グリッチ捕捉処理」(グリッチ形状取得処理ともいう)と呼ぶことにする。このサンプリング方式では、正確な形状捕捉のためにはサンプリング間隔を短くする必要がある。よって、図3における各フリップ・フロップ(レジスタR1〜Rn)に取り込む信号間に挿入するバッファの段数(B1〜Bn)を少なくすること、あるいは、より遅延値の小さい素子を用いることで、フリップ・フロップ(以下、FFと表記する)に取り込む信号間の遅延差をできる限り小さくする必要がある。しかしながら、信号間の遅延差が小さくなればなるほど、FF間のクロックジッタ、配線遅延及びゲート遅延のばらつきなどの影響で、図4のように、FFのサンプリング位置と遅延の順序関係が一致しなくなる。よって、サンプリングしたデータの時刻順序関係に、入れ替わりが発生する。つまり、グリッチの形状を正確に復元できなくなることが予想される。尚この問題は、前述のクロックに対する位相シフトにおいても同様に発生する。
図4は、「実際のグリッチ波形とサンプリング結果の期待値」(図4(a))と「順序補正の誤差によって発生するサンプリング結果」(図4(b))とを示す図である。すなわち、図4(b)のように、サンプリングしたデータの時刻順序関係に入れ替わりが発生し、グリッチの形状を正確に復元できなくなることが予想される。
(ジッタ補正処理)
そこで発明者は、グリッチ捕捉処理を行う前に以下に示す「前処理」を行う。「前処理」を行うことでサンプリング結果の時刻順序関係を決定する。以下では、この「前処理」を「ジッタ補正処理」(後述のS701)と呼ぶ。以下に「ジッタ補正処理」の概要を説明する。
(1)まず、グリッチが発生する信号とは別に、単純な立ち上がり信号が発生する信号線を用意する。以下、この信号を伝令信号(後述の伝令信号(h))と呼ぶことにする。
(2)次に伝令信号を図3のサンプリング回路220へ入力し、サンプリングを行う。この場合、サンプリング回路220の各FF(R1〜Rn)は、クロックの立ち上がりよりも伝令信号の到達が早いものは1、遅いものは0をラッチすることになる。この処理をクロックラインに遅延値を可変とする遅延回路(後述の可変遅延回路207)を入れた状態で遅延値を変えながら複数回行い、FF毎に1をラッチする回数をカウントする。
(3)最後に、この回数の大小によって各FFがサンプリングする時刻の順序関係を算出する。この順序関係を用いて、グリッチ波形のサンプリング結果に対して並び替えを行うことでグリッチ形状を復元する。
「ジッタ補正処理」の結果を用いて、グリッチ捕捉処理の結果に対して並び替えを行う。この並び替え処理を「ソート処理」(後述のS708)と呼ぶことにする。
図5は、ジッタ補正処理を用いてグリッチ捕捉処理を行った場合の捕捉結果を示す。
図6は、ジッタ補正処理を行わない場合の捕捉結果を示す。
(1.3 グリッチ形状のビット値への変換)
前述したサンプリング方法によりデジタルデータとして捕捉されたグリッチ形状は、1ビットの値に変換される。ここでは、グリッチ形状がもつ立ち上がりエッジの偶奇性をビット値に変換する方法について述べる。立ち上がりエッジの偶奇判定は、微分処理と加算処理とをハードウェアあるいはソフトウェアで実装することで検出可能である。この処理を「形状判定処理」(後述のS709)と呼ぶ。
一方で、前述のような前処理(ジッタ補正処理)を行っても、FF間の時間順序関係を完全に補正することは困難である。前処理によって算出されたFF間の順序関係が実際の回路の挙動と異なると、図4(b)に示されるような、見かけ上グリッチ波形のエッジ付近でパルス幅の短いグリッチが連続して発生するように捕捉される。このような現象は、FF間の時間順序関係が近接している場合に発生する不安定な動作であるため、グリッチを捕捉するたびにエッジ検出の結果が異なることになる。また、実際に発生するグリッチのパルス幅が極端に狭い場合も、同様の現象が発生しうる。
(フィルタ処理)
そこで発明者は、エッジの偶奇性を判定する前に図7に示すような捕捉されたグリッチ形状のパルス幅が閾値w以下の場合、そのパルスを無視する処理を行うことにした。以下この処理を「フィルタ処理」と略記する。
図7は補足されたグリッチパターンの例を3つ示している。
(1.4 エラーレートの改善)
形状判定処理の結果のエラーレートを改善するために、繰り返し同じ処理を実行できる特徴を生かして、同じ入力レジスタの状態変化よって発生するグリッチに対して繰り返し形状判定を行い、多数決処理によって最終的な出力を決定する。
特に「初期鍵生成時」には、M回の繰り返し処理に対して出力が全て同じになる入力のみを鍵生成のために利用する。「初期鍵生成時」とは、ビット列生成装置200が搭載されたシステムLSI1000において、ビット列生成装置200によって初めて鍵情報(ビット列)が生成される時である。例えば、工場出荷時において、そのLSIにおいて、鍵情報が初めて生成されるような場合である。この場合、N個の状態変化に対してそれぞれM回の判定処理を行い、Nビットのレスポンスを生成するが、同時にNビットのマスク値を生成することになる。マスク値が1のビットは鍵生成に利用するビットを表し、0のビットは鍵生成に用いないことを表す。マスク値はHelper Dataの一部として外部に出力する。この「エラーレートの改善」については、「図15のi,j」として後述する説明以降で、詳しく説明する。
なお、マスク処理を行う場合は、マスク処理を行わない場合と比較して情報量は低下する。しかしながら、グリッチPUFは高いエラーレートを持つビット位置が個体に依存して定まり、かつそのビット量は少ないという特徴を持つため、誤り訂正符号の訂正能力を軽減する方が鍵生成の実装率が向上する。
(2.1 グリッチPUFの構成)
図8は、グリッチPUFを実行するビット列生成装置200の回路構成を示す。ビット列生成装置200は、主に、制御レジスタ群203、データレジスタ群204、グリッチ発生回路205、サンプリング回路220及び2種類の遅延回路(伝令信号用遅延回路206、可変遅延回路207)によって構成される。
(1)制御レジスタ群203は、以下に示す制御用のパラメータを格納する。
制御信号Sel(1):グリッチ発生回路の選択信号(loguビット)、
制御信号sel(2): サンプリング回路の入力選択信号(1ビット)、
伝令信号(h):(1ビット)、
制御信号(D):可変遅延回路の遅延値指定信号(q+q’ビット)、
制御信号(p):トリガー信号(1ビット)、
(2)データレジスタ群204は、グリッチ発生回路205に入力するデータX(uビット)を格納する。
(3)図9は、グリッチ発生回路205の構成を示す。グリッチ発生回路205は、図9に示すように、入力データXに対して、定められた論理演算Y=f(X)を実行する組み合わせ回路(ランダムロジック部2051)と、vビットのYから1ビットを選択信号Sel(1)により選択して1ビットを出力するv−1セレクタ2052によって構成される。
(4)伝令信号用遅延回路206は、例えばバッファチェーンによって構成され、伝令信号(h)の遅延信号hであるDLY(h)を出力する。バッファチェーンの段数は、設計時にグリッチ発生回路205で生成されるグリッチ信号の発生タイミングをシミュレーションで評価して決定する。この詳細は、後述する。
(5)サンプリング回路220は、図3に示したような、バッファチェーン(サンプリング用遅延回路209)とFF(サンプリング用レジスタ群210)とにより構成される。尚、FPGAにグリッチPUFを実装することを想定した場合、サンプリング回路220で用いるバッファチェーンにはLook−up Table(LUT)にバッファを実装するよりも算術加算回路用のキャリーパスを用いた方がサンプリングの分解能を高めることができる。また、可変遅延回路207に関しても変更可能な遅延値の刻みを細かくするためにキャリーパスを用いる。但し、可変遅延回路207の可変範囲はサンプリング範囲よりも広く取る必要があるため、全てをキャリーパスで実装すると回路規模が増大する。そのため、図10に示すように、キャリーパスによる遅延回路とLUTによる遅延回路を組み合わせることで分解能を落とさずに広い稼動範囲を確保することができる。
図10は、キャリーパスによる遅延回路とLUTによる遅延回路を組み合わせた遅延回路の構成を示す。
実施の形態1で扱うグリッチPUFは、生成されるグリッチの挙動を観測するためにサンプリング(サンプリング回路220)までをハードウェアで行い、それ以降の処理をファームウェアで実装している。
(2.2 設計パラメータの調整)
グリッチの形状捕捉を効率よく実現するためには、設計段階で各回路のパラメータを調整する必要がある。調整すべきパラメータは以下の通りである。
n:サンプリング回路220のFF数、
delay:サンプリング回路220の信号間に挿入するバッファの遅延値、
range:サンプリング回路220のサンプリング範囲、
range:グリッチ発生回路205のグリッチ発生範囲、
rangeCLK:可変遅延回路207の可変範囲、
:グリッチ発生範囲の中央値の時刻、
:伝令信号(h)の遅延信号h(DLY(h))の立ち上がり時刻。
図11は、各パラメータの関係を示す図である。「n」及び「delay」は、サンプリング範囲とその分解能に関係するパラメータであり、サンプリング範囲rangeは、おおよそ「n・delay」なる。つまり、range≒n・delayである。
グリッチ形状を捕捉するためには、
range<range<rangeCLK
となる必要がある。以下に、この関係を成立させるための設計手順について述べる。
(1)まず、グリッチ発生回路205の論理を決定した段階で、遅延情報付きの論理シミュレーションを行い、サンプリング回路220の入力においてグリッチが発生する時間範囲rangeと発生タイミングtとを見積もる。
(2)次に、
range<range
を満たす「n」及び「delay」を決める。このとき実装対象のプラットフォームにおいてdelayが可能な限り小さくなるようなセルをバッファとして利用することでサンプリングの分解能を高めることができる。従って、実際に決定するのはnとなる。実施の形態1の実装では、設計マージンとしてrangeの倍以上になるようにrangeを設定している。また、rangeCLKも同様にrangeの倍を目安に可変遅延回路のバッファ段数を設定している。
(3)次に、伝令信号用遅延回路のバッファ段数を決定する。このとき、遅延回路の遅延値は、前述の見積もり結果tを用いてt≒tとなるように設計する。伝令信号に対してタイミング調整を行う理由は、サンプリング結果の時刻順序関係を算出するために利用するのと同時に、グリッチの形状捕捉を行う際に用いる可変遅延回路の遅延値指定信号の値Dgを決定するためである。
以下その方法について説明する。
サンプリング結果の時刻順序関係を算出する際に伝令信号に対してDを最小値から最大値へとインクリメントしながら変化してサンプリングする。このとき、サンプリング結果の中心付近のFFが最初に1をラッチするDの値をDgとする。グリッチ発生範囲は伝令信号の遅延と同程度になるように調整してあるため、グリッチ波形をサンプリング範囲の中央付近でサンプリングすることが可能となる。ただし、正確に信号間の遅延を調整することは一般に困難なため、rangeやrangeCLKは、前述した倍半分のようなマージンをとって設定する必要がある。
(3.1 実装評価結果)
以下、試作したグリッチPUF(ビット列生成装置200)の回路性能を示す。
図12は、実装評価結果を示す。試作は、AVNET社のSpartan−3A評価ボードを用いて行った。ターゲットデバイスは、XC3S400A−4FT256である。また、前述した形状捕捉処理以降に行う処理は同一FPGA上に実装したMicroBlazeを用いてファームウェア処理で実行する。グリッチ発生回路205としては、論理の複雑さと広く暗号ハードウェア設計者に回路構造が知られていることからAESのSubBytes回路を用いた。また、サンプリング回路220のFF数は256個で実装し、可変遅延回路207は256ビットの加算回路と、LUTの段数が4、8、12、16段と異なるバッファチェーンを4−1セレクタで選択する構成とした。
以上ではビット列生成装置200の概要を説明した。次にビット列生成装置200の詳しい構成及び動作を以下に説明する。
図8を参照して、鍵情報として使用するビット列を生成するビット列生成装置200を説明する。
(ビット列生成装置200の構成)
ビット列生成装置200は、データバス202に接続されている。ビット列生成装置200は、制御レジスタ群203、データレジスタ群204、グリッチ発生回路205(グリッチ発生部)、伝令信号用回路206(伝令信号遅延部)、可変遅延回路207(可変遅延部)、セレクタ208、サンプリング用遅延回路209(グリッチ遅延部)、サンプリング用レジスタ群210(サンプリング部)、グリッチ形状判定回路211(ビットデータ生成部、ビット列生成部)、及びビット列出力バス212を備える。サンプリング用遅延回路209とサンプリング用レジスタ群210とは、サンプリング回路220(グリッチ波形取得部)を構成する。
以下、各構成要素を説明する。
(制御レジスタ群203)
制御レジスタ群203は、データバス202からのデータ入力に対して、
グリッチ発生回路205への制御信号sel(1)と、
後述するジッタ補正処理を行う際に用いる伝令信号(h)と、
セレクタ209への制御信号sel(2)と、
可変遅延回路207における遅延値の変更のための制御信号(D)と、
サンプリング用レジスタ群210へのクロック入力のための制御信号(p)と、
を保持する複数のレジスタを備える。
(データレジスタ群204)
データレジスタ群204は、データバス202からのデータ入力に対して、グリッチ発生回路205への入力信号Xを保持する複数のレジスタを備える。
(グリッチ発生回路205)
グリッチ発生回路205は、データレジスタ群204からのデータ信号Xと、制御レジスタ群203からの制御信号sel(1)を入力とし、信号gを出力する回路である。図9を参照して、グリッチ発生回路205の内部構成を説明する。ランダムロジック部2051(組み合わせ回路)は、Xをビット毎に表現した{x1,・・・,xu}のuビットの入力を、任意の関数を組み合わせた組み合わせ回路によって処理し、vビットのデータ{y1,・・・,yv}を出力する。セレクタ2052(グリッチ出力セレクタ)は、制御信号sel(1)に従って、{y1,・・・,yv}のv本の信号線(ビット信号線という場合がある)のなかから1ビットの信号線を1本選択し、出力gとする。ランダムロジック部2051で処理する関数としては、DESで定義されるS−boxが例として挙げられる。この例の場合、「u=6,v=4」となる。なお、S−boxは、あくまでも一例であり、ランダムロジック部2051の構成を限定するものではない。
(伝令信号用遅延回路206,サンプリング用遅延回路209)
伝令信号用遅延回路206及びサンプリング用遅延回路209は、固定の信号遅延を発生させる回路である。
図13は、伝令信号用遅延回路206、あるいはサンプリング用遅延回路209として使用される遅延回路の内部構成を示す。図13に示す遅延回路401、遅延回路402は、伝令信号用遅延回路206あるいはサンプリング用遅延回路209として使用される。 図13(a)に示す遅延回路401は、一般的なバッファ回路(遅延素子の一例)の直列接続によって構成する例であり、ASIC(Application Specific Integrated Circuit)で一般的に用いられる。一方、図13(b)に示す遅延回路402は、加算器(遅延素子の一例)のキャリー伝播遅延を利用して遅延回路を構成する例である。FPGAでは、加算回路は専用のハードマクロで構成されるため、キャリー伝播遅延は通常の論理を構成するLUTよりも高速となる。このため、キャリー伝播遅延を遅延回路として利用することで、遅延の粒度を細かくすることが可能となる。ここで、伝令信号用遅延回路206の論理段数は、グリッチ発生回路205の論理段数と同程度になるように設計される。
(可変遅延回路207)
可変遅延回路207は、制御信号(D)によって入力から出力までの遅延を変更可能とする遅延回路である。
図14は、可変遅延回路207の内部構成を示す。図14に示す可変遅延回路501、可変遅延回路502は、可変遅延回路207として使用される。
図14(a)の可変遅延回路501は、直列に接続されるバッファ回路の段毎に制御信号(D)によってパスをセレクタで切り替える構成である。
図14(b)の可変遅延回路502は、制御信号(D)をエンコードしたデータとall「1」のデータとを加算することで発生するキャリーの伝播遅延を用いた構成である。たとえば、可変遅延回路502において大きい遅延値を必要とする場合は、「00・・・01」とall「1」との加算を行うことで下位から桁上げを伝播させ、最上位で発生するキャリー信号を出力する。可変遅延回路502において小さい遅延値を必要とする場合は、「100…0」とall「1」とを加算することで、上位で発生した桁上げを出力する。可変遅延回路502のような加算回路を遅延回路として用いる理由は、前述のように、FPGAのようなLSIにおいて遅延の粒度を細かくするためである。可変遅延回路207の可変範囲は、サンプリング用遅延回路209の最小パス遅延(s1の遅延)と最大パス遅延(sn)とを含む範囲で変更可能に設計される。
(セレクタ208)
セレクタ208は、グリッチ発生回路205の出力gと伝令信号用遅延回路206の出力DLY(h)とを制御信号sel(2)によって選択する回路であり、セレクタ208の出力s0は、サンプリング用遅延回路209に接続される。
(サンプリング用レジスタ群210)
図3を参照してサンプリング用レジスタ群210の構成を説明する。サンプリング用レジスタ群210は、サンプリング用遅延回路209の出力を、可変遅延回路207の出力CLK(v)をクロック信号としてラッチするレジスタ群である。サンプリング用遅延回路209は、遅延素子の段数が異なる信号s1,・・・,信号snを出力する。
サンプリング用遅延回路209は、サンプリング用レジスタ群210を構成する各レジスタRに接続される。
レジスタRiは、入力信号線から信号siを入力し、クロック信号線からクロック信号CLK(v)を入力し、出力信号線から信号riを出力する。
(グリッチ形状判定回路211)
グリッチ形状判定回路211は、サンプリング用レジスタ群210の出力「r1,r2,…,rn」であるnビットの信号を入力とし、後述するジッタ補正処理を実行すると共に、ジッタ補正処理の後、グリッチに基づき得られたnビットのデータ「rc1,rc2,…,rcn」を、1ビットのデータbに変換する論理を有する。
(動作の説明)
図15は、ビット列生成装置200の動作を示すフローチャートである。図15を参照してビット列生成装置200の動作を説明する。以下に説明する図15及び後述の図16の動作に関しては、CPU500がビット列生成装置200を制御するものとする。
(ジッタ補正処理)
最初に、ビット列生成装置200は、ジッタ補正処理(S701)を行う。
図16は、ビット列生成装置200によるジッタ補正処理の動作を示すフローチャートである。以下、図16を参照して、ジッタ補正処理に関して説明する。
(1)図16の初期設定では、CPU500は、全レジスタを初期化した後、制御信号sel(2)を、DLY(h)を選択する信号値に設定する(S801)。
(2)続けて、CPU500は、可変遅延回路207への制御信号(D)の変更を繰り返しながら、伝令信号(h)を入力する(S802、S804)。
(3)このとき、CPU500は、同一の制御信号(D)に対してN回、伝令信号(h)を入力する(S803)。伝令信号(h)の入力は、図8に示す伝令信号(h)の信号線と制御信号(p)の信号線とを、それぞれ同一タイミング(同じサイクルで)0から1に変更することで行う。これにより、サンプリング用遅延回路209およびサンプリング用レジスタ群210では、図17のタイミングチャートに記載されるような処理が行われる。
図17は、サンプリング回路220による伝令信号(h)のサンプリングの状態を示す図である。
(1)図17を参照して、まず制御信号(D)の値が小さい場合(つまり、可変遅延回路207の遅延が小さい場合)を説明する。制御信号(D)の値が小さい場合、サンプリング用遅延回路209において伝令信号(h)が伝播して立ち上がりが観測される区間(図17の中DLY(h)に対するサンプリング範囲254)よりも前に、サンプリング用レジスタ群210のクロック入力であるCLK(v)の立ち上がりエッジが発生する。よって、サンプリング用レジスタ群210は、すべて0をラッチする。すなわち、サンプリング用レジスタ群210の各レジスタRは、信号s1〜snに関しすべて「0」をラッチする。
(2)逆に、制御信号(D)の値が大きい場合は、伝令信号(h)が伝播して立ち上がりが観測される区間よりも後にCLK(v)の立ち上がりエッジが発生する。よって、この場合、サンプリング用レジスタ群210は、すべて1をラッチする。すなわち、サンプリング用レジスタ群210の各レジスタRは、信号s1〜snに関しすべて「1」をラッチする。
(3)制御信号(D)を最小値から最大値まで変化させ、同様の処理(伝令信号(h)と制御信号l(p)の信号線をそれぞれ同一タイミングで0から1に変更し、サンプリング用レジスタ群210によるラッチ)を行った場合、信号線s1〜snのうち伝令信号(h)の伝播が速い信号線から順に1に変化する。
(信号線skの信号遅延の順序逆転)
伝令信号(h)の伝播に関して、図17では、信号線s1が最も伝令信号(h)の伝播が速い信号線であり、信号線snが最も遅い信号線として表記されている。しかし、サンプリング用遅延回路209の各遅延の粒度を細かくした場合、図17の信号線stと信号線st’との関係のように、「t<t’」であるが、信号遅延値は「st>st’」となる信号線が発生しうる。これは、サンプリング用遅延回路209からサンプリング用レジスタ群210までの配線遅延や、CLK(v)のジッタによって発生する現象である。
信号線s1から信号線snの信号遅延の順序関係を正しく計測するために、図17のタイミングチャートでは、CPU500は制御信号(D)を最小値Dminから最大値Dmaxまで変化させる。そして、グリッチ形状判定回路211はサンプリング用レジスタ群210の各レジスタRが「1」をラッチする回数を記憶し(S805)、各レジスタRの回数の合計値(S806)を比較して(S807)、サンプリング用レジスタ群210の各レジスタRの順序関係をソートし、ソート結果RegOとして記憶する(S808)。ソート結果RegOは,グリッチの形状を正しく復元する際に用いられる(後述のS708)。またグリッチ形状判定回路211は、サンプリング用レジスタ群210の代表値位置に配置されるレジスタRn’の出力rn’が、最初に「1」となる制御信号(D)の値Dgを記憶する(S809)。「n’」の値は、例としてn/2が挙げられる。
(S803の繰り返し処理の理由)
S803で同一の制御信号(D)に対して繰り返し処理を行う理由は、サンプリング用レジスタ群210の各レジスタRにおいて、データの変化とクロックの立ち上がりのタイミングとが近接しているレジスタは、ラッチするデータが不安定になる。したがって、ラッチするデータの精度を上げるために繰り返し処理を行う。
(グリッチ形状取得処理)
図15のグリッチ形状取得処理の説明に戻る。ジッタ補正処理後、CPU500は、グリッチ形状取得処理のための初期設定処理を行う(S702)。この初期設定処理では、CPU500は全レジスタを初期化した後、制御信号sel(2)を、信号gを選択する信号値に設定する。また、CPU500は、可変遅延回路207の遅延値を決定する制御信号(D)を、ジッタ補正処理で記憶された値Dgに設定する。これは、グリッチ発生回路205と同等の論理段数を持つ伝令信号用遅延回路206の信号DLY(h)を補足したCLK(v)の立ち上がりタイミングで、グリッチ発生回路205の信号gを補足するためである。
初期設定後、CPU500は、sel(1)を初期値(i=1)に設定し(S704)、データレジスタ群204にデータを入力し、同時に、制御信号(p)を0から1へアサートする(S707)。これにより、グリッチ発生回路205では、Xの入力変化に伴う信号変化が発生し、すなわち信号gがグリッチ発生回路205によって出力され、信号gが、セレクタ208を経由してサンプリング用遅延回路209に伝達される。伝達された信号gがサンプリング用レジスタ群210の各レジスタでラッチされる。
図18は、サンプリング用レジスタ群210によってラッチされるデータ「r1,・・・,rn」(以下、ラッチデータともいう)を示す図である。図18に示すように、グリッチ発生回路205から出力された信号gの形状に応じて、ラッチされるデータ「r1,・・・rn」の値が決まる。グリッチ形状判定回路211は、サンプリング用レジスタ群210のレジスタR1〜Rnによってラッチされたデータ「r1,・・・rn」を、ジッタ補正処理で記憶されたソート結果RegOに基づきソートすることで、グリッチ形状の補正を行う(S708)。グリッチ形状判定回路211は補正されたデータ、すなわちソートされた「r1,・・・rn」を、形状判定処理によって、1ビットのデータbに変換する(S709)。
図15を参照して、グリッチ形状判定回路211による1ビットのデータbへの変換の例を説明する。図15の説明で述べたように、形状判定処理では、データの信頼性が低い微小時間の信号変化(閾値w以下)を無視する処理を含めることで、データの再現性を高めることが可能である。
(図15のi,j)
図15に示すように、ビット列生成装置200では、前述の処理を、入力データX(変数j)及び制御信号sel(1)(変数i)を変えて繰り返し行う。
図15の変数i,j,kは次の意味である。
変数i:「1〜v」本の信号線のうち、sel(1)の選択する信号線を示す。
変数j:2通り(j=0〜2−1)のうちの、どの入力データXかを示す。
変数k:同一の「X、sel(1)」に対する繰り返し回数を示す。
また、データの信頼性を高めるために、同一の入力データXと制御信号sel(1)とに対しても繰り返し処理を行う。すなわち図15に示すように、変数i,jを固定して、K=1〜Nまでを繰り返す。この処理の一例として、グリッチ形状判定回路211は、「i,j」が同一でKの異なる、b(i,j,1),b(i,j,2),b(i,j,N)に対して多数決処理を行い、その結果をb(i,j)とする例が挙げられる。最終的に、上記の処理で得られた互いに「i,j」の異なる複数の1ビットのデータb(i,j)からなるビット列であるビット列b(i,j)を鍵情報として利用する。
図15は、特定の信号線iに着目して同一の入力データXjをN回繰り返し入力することで、同一の入力データXjに対する特定の信号線iの出力から生成される1ビットデータの信頼性を評価するフローである。
そして、図15では、「i,j」を切り替えることで、各信号線i(i:1〜v)ごとに、各入力データXj(j:0〜2−1)に対する各信号線i(i:1〜v)の出力から生成される1ビットデータの信頼性を評価している。
この図15のフローは、例えば、上記で「1.4 エラーレートの改善」として説明した「初期鍵生成時」と、「初期鍵生成時以降」との双方に適用できる。これを以下に説明する。
(初期鍵生成時)
初期鍵生成時は、例えば以下のような処理によって、生成されるビットの信頼性を向上する。ランダムロジック回路2051(組み合わせ回路)は、同一の入力データXjを繰り返し入力する。グリッチ発生回路205のセレクタ2052は、同一の入力データXjがランダムロジック回路2051へ繰り返し入力されるごとにいずれかのビット信号線から信号g(ビット対応信号)を出力することにより、v本のどのビット信号線からもN回(所定回数)、信号gを出力する。なおセレクタ2052の出力は、制御信号sel(1)による制御に基づく。グリッチ形状判定回路211(ビットデータ生成部)は、N回出力された信号gのそれぞれに対応する1ビットデータ(N個)をv本のビット信号線ごとに生成する。そして、グリッチ形状判定回路211はビット信号線ごとに生成された1ビットデータの総数に占める1と0との比率に応じて、同一の入力データXに対する各ビット信号線の出力の使用可否を決定する。すなわち、各ビット信号線から信号gがN回出力されるので、グリッチ形状判定回路211によって、1と0とのいずれかである1ビットデータが各ビット信号線ごとにN個生成される。グリッチ形状判定回路211は、各ビット信号線ごとに、N個に占める1と0との比率に応じて、同一の入力データXに対する各ビット信号線の出力の使用可否を決定する。この判定は、例えば入力データX(0)についてビット信号線iから出力された信号gを元にする1ビットデータがN個とも全部「1」である場合、あるいはN個とも全部「0」である場合にのみ、ビット信号線iを使用可能と決定する。各ビット信号線の出力の使用可否に関しては、前記「1.4 エラーレートの改善」で述べたように、マスク値を用いることができる。
(ビット信号線の使用可否の決定以降)
マスク値の生成以降は、同一の入力データXに対して使用可能と決定されたビット信号線の出力の信頼性が判定される。ランダムロジック回路2051は、グリッチ形状判定回路211によって同一の入力データXに対するビット信号線の出力が使用可能と決定された後に、再び、同一の入力データXを繰り返し入力する。セレクタ2052は、同一の入力データXがランダムロジック回路2051へ繰り返し入力されるごとにグリッチ形状判定回路211によって出力が使用可能と決定されたビット信号線である特定の決定信号線から、所定回数(例えばN’回)、信号g(ビット対応信号)を出力する。グリッチ形状判定回路211は、特定の決定信号線からN’回出力された信号gごとにこの信号gに対応する1ビットデータをN’個生成し、生成された1ビットデータの総数(N’個)からなるビットグループに含まれる1と0との比率に基づいて、このビットグループを代表する代表ビットを1と0とのいずれかに決定する。この代表ビットの決定は、前記のように多数決処理を用いることができる。ランダムロジック回路2051と、セレクタ2052と、グリッチ形状判定回路211とは、繰り返し入力される同一の入力データXに対して同様の処理を実行することにより、少なくとも他の一本の決定信号線に関して、同一の入力データXに対する代表ビットを決定する。そしてグリッチ形状判定回路211(ビット列生成部)は、決定された複数の代表ビットを使用して、ビット列を生成する。
入力データXと異なる他の入力データX’についても、入力データX’を同一のデータとして繰り返し入力することで、入力データX’について決定信号線ごとに代表ビットを決定することができる。なお図15では、ビット信号線iを固定して、最初に入力データX(0)をN回入力し、次に入力データX(1)をN回入力し、そして最後に入力データX(2−1)をN回入力している。これは一例である。入力データXjを固定して、信号線iの「i」を切り替えても構わない。
このように、まず、グリッチ形状判定回路211によって初期鍵生成時に各ビット信号線の出力の使用可否を決定する。次に、グリッチ形状判定回路211によって、使用可能と決定されたビット信号線の出力に関して代表ビットを生成する。これらにより、生成されるビット列の信頼性を向上できる。また、このようにして生成されたビット列に対して誤り訂正回路300により誤り訂正することで、ビット列の信頼性をさらに向上できる。
以上、グリッチ形状を取得し、グリッチ形状からビット列を生成するビット列生成装置200を説明した。グリッチの形状はグリッチ発生回路205を構成する各論理ゲートの遅延関係によって異なる振る舞いをするので、デバイス毎に、他のデバイスと異なるそのデバイス固有のビット列が生成される。そして、生成されるごとに、同一のデバイスではグリッチから同一のビット列が生成される。グリッチ発生回路205にデータを入力することでグリッチが発生するので、当然に鍵情報を不揮発的に格納する必要はない。
実施の形態1のビット列生成装置200では、配置配線に関する特殊な制約はないので、配置配線の自由度が低いFPGAであっても、デバイス毎に異なるビット列を出力することが可能である。
また、実施の形態1のビット列生成装置200では、組み合わせ回路によるループ回路を必要とする処理部は存在しないので、「課題で述べたデザインルール」に違反しないPUF回路を提供することが可能となる。
以上の実施の形態1ではビット列生成装置200を説明したが、ビット列生成装置200の構成要素の動作をステップと把握することで、ビット列生成装置200をビット列生成方法と把握することができる。
100 ビット生成器、101 リングオシレータ群、102 リングオシレータ、103 出力信号、104 選択回路、105 選択信号、106 信号、107 周波数比較器、108 比較結果、109 応答ビット値、200 ビット列生成装置、202 データバス、203 制御レジスタ群、204 データレジスタ群、205 グリッチ発生回路、206 伝令信号用遅延回路、207 可変遅延回路、208 セレクタ、209 サンプリング用遅延回路、210 サンプリング用レジスタ群、211 グリッチ形状判定回路、220 サンプリング回路、300 誤り訂正回路、400 暗号処理回路、500 CPU、600 内部メモリ、700 外部I/F、1000 システムLSI。

Claims (14)

  1. 複数の論理回路を組み合わせた組み合わせ回路であって、入力された入力データに対して過渡遷移に起因するグリッチを発生して出力する組み合わせ回路を有するグリッチ発生部と、
    前記組み合わせ回路から前記グリッチを入力し、入力された前記グリッチを遅延させるグリッチ遅延部と、前記グリッチ遅延部により遅延された前記グリッチの波形をサンプリングすることで前記グリッチの波形を取得するサンプリング部とを有するグリッチ波形取得部と、
    前記グリッチ波形取得部の前記サンプリング部によって取得された前記グリッチの波形に基づいて、1か0かのいずれかを示す1ビットデータを生成するビットデータ生成部と、
    前記ビットデータ生成部によって生成された複数の前記1ビットデータからなるビット列を生成するビット列生成部と
    を備えたことを特徴とするビット列生成装置。
  2. 前記組み合わせ回路は、
    前記入力データとしてuビット(uは1以上の整数)の入力データXを入力し、入力データXを用いて、vビット(vは1以上の整数)のデータである出力データYを計算するためにY=f(X)の演算を実行すると共に、前記出力データYを各ビットごとに前記グリッチを含んで出力するv本のビット信号線を備え、
    前記グリッチ発生部は、さらに、
    前記複数のビット信号線のいずれかのビット信号線による出力を指示する選択信号を入力し、入力された前記選択信号の指示するビット信号線から前記ビットに対応するビット対応信号を出力するグリッチ出力セレクタを備えた
    ことを特徴とする請求項記載のビット列生成装置。
  3. 前記組み合わせ回路は、
    互いに異なる前記入力データXを入力し、
    前記グリッチ出力セレクタは、
    前記選択信号で制御されることによって、それぞれの前記入力データXについて前記複数のビット信号線の各ビット信号線から前記ビット対応信号を出力することを特徴とする請求項記載のビット列生成装置。
  4. 前記組み合わせ回路は、
    同一の前記入力データXを繰り返し入力し、
    前記グリッチ出力セレクタは、
    同一の前記入力データXが前記組み合わせ回路へ繰り返し入力されるごとにいずれかの前記ビット信号線から前記ビット対応信号を出力することにより、どの前記ビット信号線からも所定回数、前記ビット対応信号を出力し、
    前記ビットデータ生成部は、
    前記所定回数出力された前記ビット対応信号のそれぞれに対応する前記1ビットデータを前記ビット信号線ごとに生成し、前記ビット信号線ごとに生成された前記1ビットデータの総数に占める1と0との比率に応じて、同一の前記入力データXに対する各ビット信号線の出力の使用可否を決定することを特徴とする請求項またはのいずれかに記載のビット列生成装置。
  5. 前記ビットデータ生成部は、
    前記ビット信号線から出力された前記ビット対応信号を元に生成された前記1ビットデータの総数に占める1の比率が100%の場合と、0の比率が100%の場合とのいずれかの場合には、同一の前記入力データXに対する前記ビット信号線の出力を使用可能と決定することを特徴とする請求項記載のビット列生成装置。
  6. 前記組み合わせ回路は、
    前記ビットデータ生成部によって同一の前記入力データXに対する前記ビット信号線の出力が使用可能と決定された後に、再び、同一の前記入力データXを繰り返し入力し、
    前記グリッチ出力セレクタは、
    同一の前記入力データXが前記組み合わせ回路へ繰り返し入力されるごとに前記ビットデータ生成部によって出力が使用可能と決定された前記ビット信号線である特定の決定信号線から、所定回数、前記ビット対応信号を出力し、
    前記ビットデータ生成部は、
    前記特定の決定信号線から前記所定回数出力された前記ビット対応信号ごとに前記ビット対応信号に対応する前記1ビットデータを生成し、生成された前記1ビットデータの総数からなるビットグループに含まれる1と0との比率に基づいて前記ビットグループを代表する代表ビットを1と0とのいずれかに決定し、
    前記組み合わせ回路と、前記グリッチ出力セレクタと、前記ビットデータ生成部とは、
    繰り返し入力される同一の前記入力データXに対して同様の処理を実行することにより、少なくとも他の一本の前記決定信号線に関して、同一の前記入力データXに対する前記代表ビットを決定し、
    前記ビット列生成部は、
    前記ビットデータ生成部によって決定された複数の前記代表ビットを使用して、前記ビット列を生成することを特徴とする請求項またはのいずれかに記載のビット列生成装置。
  7. 前記ビット列生成装置は、さらに、
    前記ビット列生成部によって生成された前記ビット列の誤りを訂正する誤り訂正部を備えたことを特徴とする請求項のいずれかに記載のビット列生成装置。
  8. 前記グリッチ遅延部は、
    信号線で直列に接続され、前記グリッチを遅延させて伝搬させる複数の遅延素子を備え、
    前記サンプリング部は、
    入力信号線と、クロック信号線と、出力信号線とを有する複数のレジスタであって、各レジスタの入力信号線は重複することなくいずれかの前記遅延素子の入力側と出力側とのいずれかの側に接続され、前記クロック信号線から入力されるクロック信号の立ち上がりに連動して、前記入力信号線の接続部における情報をラッチする複数のレジスタを備え、
    前記ビット列生成装置は、さらに、
    ゼロから所定の値に立ち上がる信号である伝令信号を入力し、入力された伝令信号を遅延させ、遅延された伝令信号を前記グリッチ遅延部の直列接続の最初の遅延素子に出力する伝令信号遅延部と、
    前記サンプリング部の各レジスタに入力するためのクロック信号を入力すると共に、入力された前記クロック信号の出力タイミングを制御する制御信号を入力し、入力された前記制御信号に従ったタイミングで、入力された前記クロック信号を前記サンプリング部の各レジスタに出力する可変遅延部と
    を備えたことを特徴とする請求項のいずれかに記載のビット列生成装置。
  9. 前記ビットデータ生成部は、
    前記伝令信号遅延部によって出力された遅延された伝令信号を前記可変遅延部によって出力された前記クロック信号に連動して前記サンプリング部の各レジスタがラッチした前記レジスタごとのラッチデータの値に基づいて前記レジスタごとのラッチデータをソートし、ソート結果を記憶することを特徴とする請求項記載のビット列生成装置。
  10. 前記ビットデータ生成部は、
    前記サンプリング部の各レジスタが前記グリッチ発生部からグリッチ遅延部に出力された信号をラッチした場合には、記憶された前記ソート結果に基づいて、前記グリッチ発生部から出力され各レジスタによってラッチされた信号をソートすることを特徴とする請求項記載のビット列生成装置。
  11. 前記ビットデータ生成部は、
    前記伝令信号遅延部における前記伝令信号と前記可変遅延部における前記クロック信号との同一の設定に対して、前記サンプリング部の各レジスタを用いた前記伝令信号のサンプリングを繰り返し行うことを特徴とする請求項10のいずれかに記載のビット列生成装置。
  12. 前記遅延部は、
    加算器の桁上げ信号を用いることにより信号を遅延させることを特徴とする請求項のいずれかに記載のビット列生成装置。
  13. 前記ビットデータ生成部は、
    前記グリッチ波形取得部によって取得された前記グリッチの波形に含まれる立ち上がりエッジの数が奇数か偶数かによって0と1とのいずれかの1ビットデータを生成すると共に、前記グリッチの波形におけるパルス幅が閾値w以下の場合には、そのパルスを無視することを特徴とする請求項1〜12のいずれかに記載のビット列生成装置。
  14. 入力された入力データに対して過渡遷移に起因するグリッチを発生して出力する工程と、
    出力された前記グリッチを入力し、入力された前記グリッチを遅延させ、遅延された前記グリッチの波形をサンプリングすることで前記グリッチの波形を取得する工程と、
    取得された前記グリッチの波形に基づいて、1か0かのいずれかを示す1ビットデータを生成する工程と、
    生成された複数の前記1ビットデータからなるビット列を生成する工程と
    を備えたことを特徴とするビット列生成方法。
JP2011549823A 2010-01-15 2010-01-15 ビット列生成装置及びビット列生成方法 Active JP5377667B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/050422 WO2011086688A1 (ja) 2010-01-15 2010-01-15 ビット列生成装置及びビット列生成方法

Publications (2)

Publication Number Publication Date
JPWO2011086688A1 JPWO2011086688A1 (ja) 2013-05-16
JP5377667B2 true JP5377667B2 (ja) 2013-12-25

Family

ID=44303992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011549823A Active JP5377667B2 (ja) 2010-01-15 2010-01-15 ビット列生成装置及びビット列生成方法

Country Status (6)

Country Link
US (1) US9031232B2 (ja)
EP (1) EP2525489B1 (ja)
JP (1) JP5377667B2 (ja)
KR (1) KR101370231B1 (ja)
CN (1) CN102783028B (ja)
WO (1) WO2011086688A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5335141B2 (ja) * 2010-06-07 2013-11-06 三菱電機株式会社 信号処理システム
CN103299576B (zh) * 2011-01-13 2016-05-25 三菱电机株式会社 比特生成装置以及比特生成方法
JP2013031151A (ja) 2011-06-20 2013-02-07 Renesas Electronics Corp 暗号通信システムおよび暗号通信方法
JP5857726B2 (ja) * 2011-12-20 2016-02-10 富士通株式会社 温度センサ、暗号化装置、暗号化方法、及び個体別情報生成装置
KR101576408B1 (ko) 2011-12-22 2015-12-09 미쓰비시덴키 가부시키가이샤 디바이스 고유 정보 생성 장치 및 디바이스 고유 정보 생성 방법
US20140041040A1 (en) * 2012-08-01 2014-02-06 The Regents Of The University Of California Creating secure multiparty communication primitives using transistor delay quantization in public physically unclonable functions
US9038133B2 (en) 2012-12-07 2015-05-19 International Business Machines Corporation Self-authenticating of chip based on intrinsic features
CN104838617B (zh) * 2012-12-11 2018-01-02 三菱电机株式会社 整合安全装置及整合安全装置中使用的信号处理方法
EP2799980A3 (de) * 2013-05-03 2014-11-19 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Erzeugen von Zufallsbits
CN103338108B (zh) * 2013-06-13 2016-09-21 北京华大信安科技有限公司 生成密钥的方法、装置及芯片
CA2922701C (en) 2013-08-28 2021-05-04 Stc.Unm Systems and methods for leveraging path delay variations in a circuit and generating error-tolerant bitstrings
US9992031B2 (en) * 2013-09-27 2018-06-05 Intel Corporation Dark bits to reduce physically unclonable function error rates
CN103543980B (zh) * 2013-11-07 2021-10-22 吴胜远 数字数据处理的方法及装置
US9189654B2 (en) * 2013-12-04 2015-11-17 International Business Machines Corporation On-chip structure for security application
KR102198499B1 (ko) * 2013-12-31 2021-01-05 주식회사 아이씨티케이 홀딩스 디지털 값 처리 장치 및 방법
DE102014203648A1 (de) * 2014-02-28 2014-06-05 Siemens Aktiengesellschaft Vorrichtung und Verfahren zum Erzeugen von Zufallsbits
CN103902930B (zh) * 2014-03-10 2016-09-07 杭州晟元数据安全技术股份有限公司 基于环形振荡器的物理不可克隆函数电路结构
WO2015177923A1 (ja) * 2014-05-23 2015-11-26 三菱電機株式会社 通信装置及び通信方法及びプログラム
KR102201642B1 (ko) 2014-11-28 2021-01-13 삼성전자주식회사 Puf 회로 및 그것의 키 등록 방법
EP3238199B1 (en) 2014-12-24 2020-06-17 Intrinsic ID B.V. Secure key generation from biased physical unclonable function
US9934411B2 (en) * 2015-07-13 2018-04-03 Texas Instruments Incorporated Apparatus for physically unclonable function (PUF) for a memory array
DE102016201176A1 (de) * 2016-01-27 2017-07-27 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Erzeugen von Zufallsbits
CN105932998A (zh) * 2016-04-18 2016-09-07 宁波大学 一种采用延迟树结构的毛刺型puf电路
CN106872983B (zh) * 2017-01-18 2021-04-16 上海器魂智能科技有限公司 一种测距方法、装置及系统
DE102017215622A1 (de) * 2017-09-05 2019-03-07 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtungen und verfahren zum erhalten von bitsequenzen
EP3454318B1 (en) * 2017-09-12 2022-05-11 eMemory Technology Inc. Security system with entropy bits generated by a puf
DE102018208118A1 (de) * 2018-05-23 2019-11-28 Robert Bosch Gmbh Verfahren und Vorrichtung zum Authentifizieren einer über einen Bus übertragenen Nachricht
DE112019006051T5 (de) 2019-01-09 2021-09-30 Mitsubishi Electric Corporation Sicheres-rechnen-einrichtung und client-einrichtung
US11201730B2 (en) 2019-03-26 2021-12-14 International Business Machines Corporation Generating a protected key for selective use
US11372983B2 (en) * 2019-03-26 2022-06-28 International Business Machines Corporation Employing a protected key in performing operations
US11271732B2 (en) * 2019-11-12 2022-03-08 Nxp B.V. Robust repeatable entropy extraction from noisy source
CN113922963A (zh) * 2021-09-15 2022-01-11 温州大学 一种利用施密特触发采样的Glitch PUF

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3826868A (en) * 1972-01-11 1974-07-30 J Nugent Telemetering system
US3789377A (en) * 1972-05-26 1974-01-29 Lockheed Electronics Co Pseudo-random sequence synchronization for magnetic recording system
TW381057B (en) 1997-08-07 2000-02-01 Hitachi Ltd Semiconductor device
AU2002212570A1 (en) * 2000-10-24 2002-05-15 Hmi Co., Ltd. Random number generator
US7243117B2 (en) 2001-02-07 2007-07-10 Fdk Corporation Random number generator and probability generator
JP3487299B2 (ja) 2001-06-06 2004-01-13 いわき電子株式会社 乱数発生装置および確率発生装置
JP4148807B2 (ja) 2003-03-17 2008-09-10 株式会社ルネサステクノロジ 乱数生成装置および情報処理装置
JP3732188B2 (ja) * 2003-03-31 2006-01-05 Necマイクロシステム株式会社 擬似乱数発生回路
DE602005023910D1 (de) 2004-10-15 2010-11-11 Nxp Bv Integrierte Schaltung mit einem echten Zufallszahlengenerator
JP4471901B2 (ja) 2005-07-28 2010-06-02 株式会社ルネサステクノロジ 乱数発生装置
WO2007087559A2 (en) 2006-01-24 2007-08-02 Pufco, Inc. Signal generator based device security
CN101421971A (zh) 2006-04-11 2009-04-29 皇家飞利浦电子股份有限公司 利用物理不可复制函数对令牌的询问响应认证
EP2011123B1 (en) 2006-04-13 2015-03-04 Nxp B.V. Semiconductor device identifier generation method and semiconductor device
WO2009076097A1 (en) * 2007-12-06 2009-06-18 Rambus Inc. Edge-based loss-of-signal detection

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6013027566; Patel,H.; Yong Kim; McDonald, J.T.; Starman, L.: 'Increasing stability and distinguishability of the digital fingerprint in FPGAs through input word a' Field Programmable Logic and Applications, 2009. FPL 2009. International Conference on , 20090831, 391-396 *
JPN6013027568; Crouch, J.W.; Patel, J.J.; Kim, Y.C.; Bennington, R.W.: 'Creating unique identifiers on field programmable gate arrays using natural processing variations' Field Programmable Logic and Applications, 2008. FPL 2008. International Conference on , 20080908, 579-582 *

Also Published As

Publication number Publication date
CN102783028A (zh) 2012-11-14
EP2525489A1 (en) 2012-11-21
WO2011086688A1 (ja) 2011-07-21
KR101370231B1 (ko) 2014-03-06
US9031232B2 (en) 2015-05-12
US20120293354A1 (en) 2012-11-22
KR20120112557A (ko) 2012-10-11
JPWO2011086688A1 (ja) 2013-05-16
EP2525489B1 (en) 2018-06-13
CN102783028B (zh) 2016-02-03
EP2525489A4 (en) 2014-03-05

Similar Documents

Publication Publication Date Title
JP5377667B2 (ja) ビット列生成装置及びビット列生成方法
Suzuki et al. The glitch PUF: A new delay-PUF architecture exploiting glitch shapes
KR101518153B1 (ko) 비트 생성 장치 및 비트 생성 방법
Vijay et al. Physically unclonable functions using two-level finite state machine
KR102709350B1 (ko) 물리적 복제방지 기능 비트스트링 생성에 대한 신뢰성 향상 방법
JP5863994B2 (ja) 統合セキュリティ装置および統合セキュリティ装置に用いられる信号処理方法
Shimizu et al. Glitch PUF: extracting information from usually unwanted glitches
Hemavathy et al. Arbiter puf—a review of design, composition, and security aspects
Zalivaka et al. FPGA implementation of modeling attack resistant arbiter PUF with enhanced reliability
Fujieda On the feasibility of TERO-based true random number generator on Xilinx FPGAs
Singh et al. Pa-puf: A novel priority arbiter puf
Pratihar et al. Birds of the same feather flock together: A dual-mode circuit candidate for strong PUF-TRNG functionalities
Shariffuddin et al. Review on arbiter physical unclonable function and its implementation in FPGA for IoT security applications
Fischer et al. True random number generators in FPGAs
Wang et al. An ultra-low overhead LUT-based PUF for FPGA
CN109558111B (zh) 基于d触发器亚稳态特性的真随机数生成装置
Likhithashree et al. Area-efficient physically unclonable functions for FPGA using ring oscillator
Tehranipoor et al. Intrinsic-Transient PUF
Antoniadis et al. An efficient implementation of a delay-based PUF construction
Likhithashree et al. Design of Power-Efficient Ring Oscillator based Physically Unclonable Functions for FPGA
KR100366793B1 (ko) 쉬프트 레지스터를 이용한 펄스열 생성장치
TWI803351B (zh) 具有物理不可仿製功能的金鑰產生單元、金鑰產生器與電路系統
Marimuthu et al. FPGA Implementation of High Speed 64-Bit Data Width True Random Number Generator using Clock Managers With Metastability
Tehranipoor et al. True Random Number Generator (TRNG)
Tejaswini et al. Design and FPGA Implementation of Reliable SHA-3 Algorithm

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130801

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130924

R150 Certificate of patent or registration of utility model

Ref document number: 5377667

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250