JP2018042136A - 回路情報作成システム、回路情報作成方法、及び回路情報作成プログラム - Google Patents
回路情報作成システム、回路情報作成方法、及び回路情報作成プログラム Download PDFInfo
- Publication number
- JP2018042136A JP2018042136A JP2016175666A JP2016175666A JP2018042136A JP 2018042136 A JP2018042136 A JP 2018042136A JP 2016175666 A JP2016175666 A JP 2016175666A JP 2016175666 A JP2016175666 A JP 2016175666A JP 2018042136 A JP2018042136 A JP 2018042136A
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- information
- fpga
- circuits
- area
- 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.)
- Pending
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】FPGAのビットストリームが体現する回路の模倣を防止する手法を提供する。【解決手段】回路情報作成システムは、制御対象とするFPGAの回路情報を記憶する第1のメモリ領域と、FPGAにおける、回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値とを対応づけて記憶した第2のメモリ領域と、第1のメモリ領域に記憶された回路情報に含まれる、物理的クローン作製不能機能を有する複数の回路を、FPGA上にダウンロードするダウンロード実行部と、FPGA上にダウンロードされた複数の回路それぞれの出力値を取得する取得部と、第2のメモリ領域に記憶された情報及び複数の回路の出力値に基づいて、複数の回路の中で未定義領域に挿入すべき回路を特定し、特定した回路の情報と未定義領域との接続関係を示す情報を、第1のメモリ領域に追加する更新部とを含む。【選択図】図10
Description
本願開示は、回路情報作成システム、回路情報作成方法、及び回路情報作成プログラムに関する。
FPGA(Field-Programmable Gate Array)では、チップ製造後に所望の回路をプログラマブルに設計できる。例えばXilinx社製のFPGAの場合、ルックアップテーブルにより入出力関係を規定できるCLB(Configurable Logic Block)と呼ばれる論理ブロックを基本構成要素とし、複数個のCLBが格子状に配置されている。それぞれのCLBの入出力関係及び複数のCLB間の接続関係を回路情報により規定することにより、所望の動作をする回路を構成することができる。
CLBのルックアップテーブルは、基本的にアドレス値を入力としてメモリ値を出力とするSRAM(Static Random Access Memory)で構成されているため、揮発性である。またCLB間の接続関係も、SRAMのデータで制御されるトランジスタのオン・オフにより規定されているため、揮発性である。そこで、不揮発であるPROM(Programmable Read Only Memory)に回路情報(ビットストリーム)を格納しておき、電源オン時にPROMから読み出したビットストリームをFPGAにダウンロードすることにより、所望の回路を構築する。
FPGAの機能部分の回路を設計する者(正規メーカー)にとって、回路構成を体現したビットストリームは最重要資産といえる。仮に、攻撃者がFPGAチップ(正確にはPROM)内部を解析し、ビットストリームを盗むことができたとする。その場合、攻撃者は、盗んだビットストリームをコピーして再販売したり、盗んだビットストリームを自身のFPGAシステムに格納し、自身のデバイスとして販売したりすることができる。これにより、開発に費用と時間をかけて設計した回路の模造品を不正に使用されることになり、正規メーカーにとって大きな損失となる。上記を鑑み,ビットストリームを攻撃者に盗まれない手法の確立がチップの正規メーカーによって望まれている。
攻撃者によるビットストリームの解析及び盗難を防止する一手段として、ビットストリームを暗号化するというアプローチが一般に知られている(例えば非特許文献1参照)。例えば、不揮発メモリに格納されたビットストリームは、HSM(Hardware Security Module)内のAES(Advanced Encryption Standard)秘密鍵で暗号化されている。デバイスの電源がオンになると、HSMからのビットストリームの読み出しと復号化が行われ、復号されたビットストリームがFPGAにダウンロードされる。HSMは耐タンパ性を有しており、HSM内部のAES秘密鍵を物理的な解析により不正に読みだすことは困難とされている。
しかし、サイドチャネル攻撃とよばれる手法により、FPGAを含むデバイス内部の秘密鍵を特定可能であることが報告されている(例えば非特許文献2参照)。サイドチャネル攻撃とは、暗号処理モジュールから漏洩する電力や電磁波を観測して特殊な処理を行うことにより、暗号化に用いられている秘密鍵を特定する攻撃である。非特許文献2では、Xilinx社製のVirtex−IIFPGA上の暗号鍵をサイドチャネル攻撃により解読し、ビットストリームの暗号化を解除できることが報告されている。
以上のように、秘密鍵が特定される可能性がある以上は、暗号化によってFPGAのビットストリームを完全に保護することはできない。即ち、ビットストリームを暗号化することによっては、ビットストリームが体現する回路の模倣を完全に防止することはできない。
Pawel Swierczynski, Marc Fyrbiak, Philipp Koppe, Amir Moradi, and Christof Paar, Interdiction in Practice - Hardware Trojan Against a High-Security USB Flash Drive, eprint 2015/768
Amir Moradi, Alessandro Barenghi, Timo Kasper, Christof Paar:On the vulnerability of FPGA bitstream encryption against power analysis attacks: extracting keys from xilinx Virtex-II FPGAs. ACM Conference on Computer and Communications Security 2011: 111-124
以上を鑑みると、FPGAのビットストリームが体現する回路の模倣を防止する手法が望まれる。
回路情報作成システムは、制御対象とするFPGAの回路情報を記憶する第1のメモリ領域と、前記FPGAにおける、前記回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値とを対応づけて記憶した第2のメモリ領域と、前記第1のメモリ領域に記憶された前記回路情報に含まれる、物理的クローン作製不能機能を有する複数の回路を、前記FPGA上にダウンロードするダウンロード実行部と、前記FPGA上にダウンロードされた前記複数の回路それぞれの出力値を取得する取得部と、前記第2のメモリ領域に記憶された情報及び前記複数の回路の前記出力値に基づいて、前記複数の回路の中で前記未定義領域に挿入すべき回路を特定し、特定した前記回路の情報と前記未定義領域との接続関係を示す情報を、前記第1のメモリ領域に追加する更新部とを有する。
少なくとも1つの実施例によれば、FPGAのビットストリームが体現する回路の模倣を防止することができる。
最初に、本発明において用いる技術について添付の図面を用いて説明する。各図において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
回路模倣を防止するためのクローン対策技術の1つに、PUF(Physically Unclonable Function:物理的クローン作製不能機能)がある。PUFから生成される秘密情報は、顕微鏡などの解析を行った場合でも、値を特定することは困難である。
PUF回路は、物理的クローン作製不能機能を有する回路であり、同一の回路構成のPUF回路を異なるデバイスに実装した場合、デバイス毎に固有の出力値(以下「個体別情報」と呼ぶ)を生成する回路である。入力無しで特定の出力を生成するPUFと、入力有りで当該入力に応じた出力を生成する関数として機能するPUFとがある。理想的なPUF回路は以下の特性を有する。まず第1の特性として、あるデバイス上に実装されたPUFは、常に同一の個体別情報を出力する(再現性)。この場合、入力有りのPUFであれば、同一の入力に対して、常に同一の個体別情報を出力する。次に第2の特性として、異なるデバイス上に実装されたPUF間では、全く異なる個体別情報を出力する(ユニーク性)。この場合、入力有りのPUFであれば、同一の入力に対して、デバイス間で異なる個体別情報を出力する。
PUFは、デバイス毎のバラツキに起因するデバイス内の信号遅延や素子特性のわずかな違いを利用して出力を定める構成となっている。デバイスを偽造しようとする攻撃者が、デバイスを分解して内部構造を解析したところで、観察されるPUFの回路構造はデバイス間で同一である。攻撃者が観察することの出来ないデバイス毎のバラツキに起因してPUFの出力値が決定されるので、顕微鏡で観測しても攻撃者がPUFの出力値を特定することは困難である。
以下に、PUFの回路構成の一例として、RSラッチを利用したPUF(ラッチPUF)について説明する。
図1は、RSラッチの構成の一例を示す図である。図1に示すRSラッチは、NAND回路10−1及び10−2を含む。図1に示すRSラッチにおいて、S=1且つR=1のとき、出力値はそのまま保持される。即ち、Q=1且つ/Q=0であればそのままの状態が保持され、Q=0且つ/Q=1であればそのままの状態が保持される。S=0且つR=1のとき、出力値はセットされ、Q=1且つ/Q=0となる。S=1且つR=0のとき、出力値はリセットされ、Q=0且つ/Q=1となる。S=0且つR=0のとき、本来は互いには反対の論理であるべき出力値がQ=/Q=1となってしまうため、S=0且つR=0は禁止入力とされている。
図2は、2入力に同一の値を印加したRSラッチの構成の一例を示す図である。入力A=0のとき、出力B=1且つC=1となる。入力をA=0からA=1に変化させると、出力はB=1且つC=0の状態になるか、或いはB=0且つC=1の状態になる。どちらの状態に確定するかは、NAND回路10−1しNAND回路10−2との素子特性の僅かな差異及び各配線間の遅延特性の差異等の回路特性のバラツキにより決定される。そこで、この回路特性のバラツキにより決定される出力状態をPUFに利用することができる。
図2に示すようなRSラッチをN個チップ上に実装したラッチPUFにおいては、N個のRSラッチのそれぞれが固有の素子特性に基づいて0又は1の値を出力する。したがって、N個のRSラッチを有するラッチPUFは,Nビットのレスポンスを1通り出力することができる。
図3は、PUFにより模造を防止したチップの一例を示す図である。図3において、正規チップ12は、認証用のPUF12−1と機能回路12−2を含む。正規チップ12においては、認証用のPUF12−1の出力に基づいて当該チップが正規品かどうかを確認する認証動作が実行され、認証が成功すると、機能回路12−2による一般機能動作を実行することができる。機能回路12−2は、正規チップ12の想定される用途を実現するための機能を提供する部分であり、通信回路や映像・音声処理回路といった各種アプリケーション回路であってよい。
正規チップ12に対して顕微鏡等を用いたリバースエンジニアリングにより回路レイアウトの解析を行い、正規チップ12と完全に同一の回路構成を有する模造チップ12Aを製造したとする。この場合、模造チップ12Aは正規チップ12と同一の回路構成を有していながらも、模造チップ12AのPUF12−1Aは、正規チップ12のPUF12−1とは充分に高い確率で異なる値を出力することになる。ラッチPUFのラッチの個数Nを充分に大きくすれば、偶然に値が一致する確率を無視できるくらいに小さくすることができる。従って、模造チップ12Aにおいては、認証動作に失敗し、機能回路12−2Aを動作させることはできない。
図3に示す構成では模造チップ12Aの正常動作を防止することができるが、機能回路12−2の模造はできてしまう。従って、認証部分の回路と機能回路12−2との分離ができてしまうと、機能回路12−2のみを模造することにより、正常に動作する模造チップ12Aを製造できてしまう可能性がある。
機能回路自体の模造を防止する技術として、機能回路にPUFを組み込む技術がある(特許文献1参照)。この技術では、所定の機能を実現するための入出力関係を有する機能回路において、少なくとも1つのPUF回路を機能回路内に組み込みながら当該入出力関係を実現する。より具体的には、機能回路の中の少なくとも1つのノードの信号値がPUF回路の出力に応じて変化するように、PUF回路が機能回路に組み込まれている。そして、機能回路が前記所定の機能を実現するように、PUF回路の出力が設定されている。
この構成において用いられるPUF回路は、その出力値を所望の値に設定可能なPUFである。そのようなPUFの一例として、HCI−SA−PUFがある。HCI−SA−PUFは、SA(センスアンプ)−PUFを改良したものである。センスアンプは、主にメモリセルからの電圧を増幅するために用いられる回路であり、2つの入力A及びBの大小を比較する回路である。例えばAよりもBの方が小さければ0を出力し、AよりもBの方が大きければ1を出力する。殆ど値が等しいAとBをセンスアンプの入力とすると、各トランジスタ素子の閾値の僅かな違い等に応じて、センスアンプ出力が0又は1の何れかに定まる。
HCI−SA−PUFでは、センスアンプをLSIチップに実装する際にホットキャリア注入(Hot Carrier Injection:HCI)を利用してトランジスタ素子の閾値電圧を上昇させることで、センスアンプの出力値を制御することが可能となる。即ち、センスアンプの出力が0又は1のどちらかになるように、回路の物理特性をHCIにより設定することが可能となる。またHCIを利用することにより、トランジスタ素子間に十分な閾値差を設定することができるので、100%の再現性を実現することが可能となる。
このようなHCI−SA−PUFを機能回路に組み込んで所望の機能を実現するためには、機能回路中に存在する論理がHCI−SA−PUFの出力値により実現されるような回路構成とすればよい。
図4は、PUF回路とXOR回路とを組み合わせた回路の第1の機能を説明するための図である。図4において、HCI−SA−PUF回路15Aの出力がXOR回路16の一方の入力に印可されている。また入力端子からの入力信号inがXOR回路16のもう一方の入力に印可されている。この回路構成により、入力信号inを反転して出力信号outとして出力する回路を実現することができる。この図4に示される回路を、機能回路中に本来存在するインバータの代わりに用いることができる。顕微鏡等により解析してもHCI−SA−PUF回路の出力値を特定することはできないので、図4に示すPUF回路15A及びXOR回路16の回路部分が、インバータであるか否かを外部から特定することはできない。
図5は、PUF回路とXOR回路とを組み合わせた回路の第2の機能を説明するための図である。図5において、HCI−SA−PUF回路15Bの出力がXOR回路16の一方の入力に印可されている。また入力端子からの入力信号inがXOR回路16のもう一方の入力に印可されている。この回路構成により、入力信号inをそのまま出力信号outとして出力する回路を実現することができる。この図5に示される回路を、機能回路中の本来は単純な接続配線部分に挿入することができる。顕微鏡等により解析してもHCI−SA−PUF回路の出力値を特定することはできないので、図5に示すPUF回路15B及び16の回路部分が、入出力が同一の配線と等価であるか否かを外部から特定することはできない。
またAND回路やOR回路等の任意の論理ゲートを複数のHCI−SA−PUF回路により実現することもできる。例えば、4個のHCI−SA−PUF回路の4個の出力をセレクタ回路へ選択対象入力として印加し、論理演算対象の入力信号をセレクタ回路へ選択制御信号として印加する。この構成において、4個のHCI−SA−PUF回路の4個の出力を適宜所望の値に設定することにより、AND論理、OR論理、NAND論理、NOR論理等の所望の論理を実現することができる。
前述のように、機能回路にPUF回路を組み込むことにより、偽造耐性を高めることができる。即ち、機能回路の中の少なくとも1つのノードの信号値がPUF回路の出力に応じて変化するように、PUF回路が機能回路に組み込まれてよい。そして、機能回路が所定の機能を実現するように、PUF回路の出力が設定されてよい。以下にそのようにPUF回路が組み込まれた機能回路の構成の一例を説明する。
図6は、半導体集積回路の構成の一部である機能回路の一例を示す図である。図6に示す回路は、KASUMI暗号における非線形変換関数S7の2ビット目を出力する機能を有する回路である。半導体集積回路がKASUMIの暗号関数を演算する回路である場合、図6に示す回路は半導体集積回路の一部分に相当する。
図6に示す非線形変換関数S7は7ビットX0乃至X6を入力として1ビットy2を出力する関数である。この関数を実現する非線形変換回路は、図6に示すように、インバータ20及び21、AND回路22乃至29、OR回路30乃至34、及び定数入力回路35を含む。以下に説明するように、この非線形変換回路の中の少なくとも1つのノードの信号値がPUF回路の出力に応じて変化するように、PUF回路を非線形変換回路に組み込む。その際、非線形変換回路が所定の機能(即ち変換関数S7の入出力関係を実現する機能)を実現するようにPUF回路の出力を設定する。
図7は、図6の回路にPUF回路を組み込むことにより得られる回路の一例を示す図である。図7において、図6と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
図7の回路においては、図6のインバータ20がPUF回路20A及びXOR回路20Bで置き換えられ、インバータ21がPUF回路21A及びXOR回路21Bで置き換えられている。また更に、AND回路26がPUF回路26A−1乃至26A−4及びセレクタ回路26Bで置き換えられている。また配線途中にPUF回路36A乃至38A及びXOR回路36B乃至38Bが挿入されている。また更に、定数入力回路35がPUF回路35Aで置き換えられている。図7の回路例において、各PUF回路はHCI−SA−PUF回路である。
図7に示されるPUF回路38A及びXOR回路38Bは、機能回路の出力部分においてXOR回路による変換を加えるものである。PUF回路38Aの定数出力は1であるので、図3の回路の出力y2の反転信号である/y2が図4の回路の出力となり、この/y2が意図される目標の機能を実現する出力ということになる。/y2ではなくy2が意図される目標の機能を実現する出力である場合には、PUF回路38Aの定数出力は1ではなく0に設定される。
上述のように図7には、機能回路の構成の一例として、KASUMI暗号における非線形変換関数S7を用い、関数S7にPUF回路を組み込む例を示した。このように機能回路中にPUF回路を組み込む構成により、偽造を防止することが可能となる。
このように機能回路中にPUF回路を組み込んで偽造防止を実現することはASIC(Application Specific Integrated Circuit)であれば可能である。ASICでは、回路中のトランジスタに対して所定の高電圧を印加することにより、ゲート絶縁膜にホットキャリアを意図的に注入して閾値電圧を操作することが可能である。しかしながらCLB等の所定の論理ブロックに基づいて論理を構築するFPGAの場合には、そのように閾値電圧を操作することは一般的にはできない。即ち、FPGA上にPUF回路を構築した場合には、当該PUF回路の構築に用いられた論理ブロックの回路特性に応じて、PUF回路の出力値がFPGAチップ毎に異なってしまう。従って偽造防止のために機能回路中にPUF回路を組み込む際には、この点について対処することが必要となる。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。各図において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
図8は、回路情報作成システムのハードウェア構成の一例を示す図である。図8に示す回路情報作成システムは、FPGA40、CPU41、PROM42、不揮発メモリ43、揮発メモリ44、及びバス45を含む。不揮発メモリ43は、例えばフラッシュメモリやEEPROM(Electrically Erasable Programmable Read-Only Memory)等の不揮発性のメモリであってよい。揮発メモリ44は、例えばDRAM(Dynamic Random Access Memory)等であってよく、CPU41が処理を実行する際の作業領域(ワークエリア)を提供してよい。
FPGA40、CPU41、PROM42、不揮発メモリ43、及び揮発メモリ44は、それぞれのチップが一枚のプリント基板上に実装され、FPGA40とCPU41とが一体となったシステムとして提供されてよい。このシステムは、回路情報作成システムとして用いられると共に、FPGAを利用する際にユーザ側でFPGAシステムとして用いられてよい。図8の構成例では、共通なバス45により各チップが接続されているが、個別な接続経路により各チップを接続してもよい。
但し、回路情報作成システムは基板上に一体的に実装した形態に限定されるものではない。回路情報作成システムは、FPGA40に回路を構築するためのFPGA40に固有の回路情報であるビットストリームを作成することができればよく、例えばCPU41は、FPGA40に接続されるホストコンピュータのCPUであってよい。この場合、不揮発メモリ43や揮発メモリ44もホストコンピュータ側のデバイスであってよいし、不揮発メモリ43は例えばホストコンピュータ側のハードディスクドライブ等の記憶装置であってもよい。また回路情報作成後には、FPGA40と当該FPGA40に固有の回路情報であるビットストリームとをユーザに提供することができればよく、FPGA40とPROM42とが一体的に基板上に実装されていてよいが、必ずしも一体的実装が必要なわけではない。
図9は、回路情報作成システムの機能構成の一例を示す図である。回路情報作成システム100は、図8のCPU41が揮発メモリ44又は不揮発メモリ43に格納されたプログラムを実行することにより実現されてよい。回路情報作成システム100は、プログラム次実行により実現される機能ユニットして、ダウンロード実行部101、取得部102、及び更新部103を含んでよい。
図9において、各ボックスで示される各機能ブロック又は回路ブロックと他の機能ブロック又は回路ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。回路情報作成システム100の各機能ブロックは、上述のようにソフトウェアとして実現されてよい。これらの各機能ブロックは、他のブロックと論理的にある程度分離された1つのソフトウェアモジュールであってもよいし、或いは他のブロックと論理的に一体となったソフトモジュール中の1つの機能を示したものであってもよい。
第1のメモリ領域42Aは、制御対象となるFPGA40の回路情報であるビットストリームを格納する領域であり、図8のPROM42の記憶領域に相当する。第2のメモリ領域43Aは上記回路情報中において定義されていない未定義領域に関する情報を格納する領域であり、図8の不揮発メモリ43の記憶領域に相当する。回路情報作成システム100では、FPGA40に構築する回路中にPUF回路を組み込むことにより、FPGA40の回路情報に基づく回路の模倣や偽造を防止する。上記の未定義領域とは、FPGA40に構築する回路中においてPUF回路が組み込まれることになる回路領域のことである。
FPGA40に構築する回路に所望の機能を実現させるためには、未定義領域の位置にあるノードに所望の論理値を印加する必要があり、この所望の論理値をPUF回路の出力により提供する。第2のメモリ領域43Aは、FPGA40における、回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値(即ち上記ノードに印加されるべき論理値)とを対応づけて記憶する。
図7の機能回路の例で説明すると、例えばPUF回路36Aが組み込まれる回路領域(回路位置)には回路要素が定義されてなく、未定義領域となっており、XOR回路36Bの一方の入力のノードが何処にも接続されていない状態となっていてよい。第2のメモリ領域43Aには、PUF回路36Aが組み込まれるべき未定義領域を示す情報(例えばXOR回路36Bの一方の入力のノードを特定する情報)と、当該未定義領域から出力される信号値(当該ノードに印加されるべき論理値)とが記憶されている。これら未定義領域と信号値とは互いに対応付けて記憶されている。図7の例の場合、PUF回路20A、21A、26A−1乃至26A−4、35A、36A、37A、及び38Aに対応する10個の未定義領域のそれぞれに対して、未定義領域の位置を特定する情報と所望の信号値とが互いに対応付けて記憶されることになる。
ダウンロード実行部101は、第1のメモリ領域42Aに記憶された回路情報に含まれる複数のPUF回路を、FPGA40上にダウンロードする。取得部102は、FPGA40上にダウンロードされた複数のPUF回路それぞれの出力値を取得する。これにより、第1のメモリ領域42Aに記憶された回路情報が示す回路をFPGA40に構築したときに、当該回路中に組み込まれることになる複数のPUF回路が出力する論理値を事前に確認することが可能となる。
このダウンロード動作は、FPGA40上に構築されたPUF回路の出力値を確認するための作業であり、第1のメモリ領域42Aに記憶された回路情報が示す機能回路をFPGA40上に構築して使用するためのユーザ実行動作時のダウンロード動作ではない。従って、第1のメモリ領域42Aに記憶された回路情報に含まれる複数のPUF回路をFPGA40上にダウンロードするが、PUF回路が組み込まれる先となる機能回路部分をFPGA40上にダウンロードすることは必ずしも必要ではない。但し、PUF回路が構築されるFPGA40上の領域(即ちPUF回路が実装される特定の論理ブロック)が、機能回路部分を含む回路情報の全体をFPGA40上に構築したときと同一の領域(即ち同一の論理ブロック)であることが必要である。何故ならば、PUF回路を構築するFPGA40上の領域が確認動作時とユーザ実行動作時とで異なってしまうと、PUF回路の出力値も確認動作時とユーザ実行動作時とで異なってしまうからである。
なおFPGA40上に構築するPUF回路の個数は、前述の未定義領域の数とは一対一に対応しなくてよい。1つのPUF回路の出力を複数の未定義領域の出力として共用してよいし、1つのPUF回路の出力を1つの未定義領域の出力にのみ使用してよい。また更には、複数のPUF回路の出力を1つの未定義領域の出力として共用してよい。PUF回路の出力と未定義領域の出力とを一対一に対応付ける場合、FPGA40上に構築するPUF回路の個数は未定義領域の数よりも多いことが一般に必要である。FPGA40上に構築したPUF回路の出力値は、制御できない回路特性に応じて定まるので、未定義領域の数と等しい数のPUF回路を構築しても、未定義領域の出力の論理値として必要な数の0や1が生成されない可能性がある。従って、PUF回路の出力と未定義領域の出力とを一対一に対応付ける場合、PUF回路の数は未定義領域の数よりも充分に大きいことが好ましい。
更新部103は、第2のメモリ領域43Aに記憶された情報(未定義領域に関する情報)と、複数のPUF回路の確認された出力値とに基づいて、複数のPUF回路の中で未定義領域に挿入すべきPUF回路を特定する。第2のメモリ領域43Aに記憶された情報に基づいて、FPGA40における回路中のある未定義領域と当該未定義領域から出力されるべき信号値とが分かるので、値が確認されたPUF回路の出力値を、当該信号値として用いるべきものとして特定できる。図7の機能回路の例の場合、例えばPUF回路36Aに対応する未定義領域の出力信号値は0であるので、出力値が確認された複数のPUF回路のうちで出力値が0である1つのPUF回路を当該未定義領域に挿入すべきものとして特定する。また例えばPUF回路35Aに対応する未定義領域の出力信号値は1であるので、出力値が確認された複数のPUF回路のうちで出力値が1である1つのPUF回路を当該未定義領域に挿入すべきものとして特定する。
更新部103は更に、上記のようにして特定したPUF回路の情報と未定義領域との接続関係を示す情報を、第1のメモリ領域42Aに追加することにより、回路情報を示すビットストリームを修正(更新)する。なお複数のPUF回路は、FPGA40上において、PUF回路が組み込まれる対象となる機能回路部中の未定義領域の位置とは別の位置の領域に構築されることになる。更新部103は、特定されたPUF回路の出力と未定義領域の接続ノードとの間を配線により接続するような回路情報(ストリームデータ)を生成し、当該回路情報を追加するように元の回路情報を更新する。
以下に、FPGAデバイスが製造されて最終的にエンドユーザーの手に渡るまでを3つのフェーズに分けて説明する。第1のフェーズは製造フェーズであり、デバイスは、工場において製造した直後の状態にある。第2のフェーズは工場出荷前フェーズであり、デバイス製造後に信頼できる環境においてデバイスの調整を行う状態である。ここで信頼できる環境とは,攻撃者によるアクセスがないセキュアな環境であることを意味している。第3のフェーズはユーザ利用フェーズであり、デバイスが工場から出荷された後の状態であり、攻撃者がデバイスを入手すれば、デバイスに対して物理的な解析を自由に試みることができる状態である。
まず製造フェーズでの処理としては、FPGAデバイス製造時に、PROM42に回路の設計情報(回路情報)をビットストリームとして格納する。格納される回路情報は、PUF回路、接続回路、及び機能回路をFPGA40に構築するための構成データである。また不揮発メモリ43には、未定義領域に関する情報を格納する。この未定義領域に関する情報は、機能回路の構成データ中にて定義されていない未定義領域と、該未定義領域から出力されるべき信号値とに関する情報である。
工場出荷フェーズでは、前述の図9において説明した回路情報作成システム100の各機能ユニットの動作が実行される。具体的には、CPU41が不揮発メモリ43に格納されたプログラムを読み出して実行することにより、ダウンロード実行部101、取得部102、及び更新部103の動作を実行する。
図10は、回路情報作成システムの動作手順の一例を示すフローチャートである。なお図10において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
図11乃至図17は、回路情報作成システムの動作手順を説明するための図である。例えば図11において、PROM42を示すブロックの内部には、ビットストリームとして格納されている回路情報(回路構成情報)が表現する回路の構成を模式的に示してある。PROM42に格納されるビットストリームが規定する回路は、前述のように、PUF回路50、接続回路51、及び機能回路52を含む。ビットストリームは更に、I/F回路53を含む。
PUF回路50は、ラッチPUF回路PUF1乃至PUF5を含む。この例では5個のラッチPUF回路が設けられているが、このラッチPUF回路の個数は一例に過ぎず、機能回路52中の未定義小域の数を考慮した充分な数であってよい。各ラッチPUF回路の出力値には記号「?」が示してあり、FPGA40上に構築して実際に動作させない限りは出力値が不定であることを示している。なおPUF回路の形式はラッチPUF回路である必要はなく、PUF1乃至PUF5は物理的クローン作製不能機能を有する回路であればよい。
機能回路52は、所望の機能を実現するための回路であり、例えば図7に示したKASUMI暗号における非線形変換関数S7を実現する回路を含んでよい。図11では、図示の便宜のために簡略化された構成の機能回路を示してあり、この機能回路52は一例として未定義領域52−1乃至52−5を含む。
機能回路52は、所望の機能を実現するための回路であり、例えば図7に示したKASUMI暗号における非線形変換関数S7を実現する回路を含んでよい。図11では、図示の便宜のために簡略化された構成の機能回路を示してあり、この機能回路52は一例として未定義領域52−1乃至52−5を含む。
接続回路51は、機能回路52中の未定義領域52−1乃至52−5とPUF回路50のラッチPUF回路PUF1乃至PUF5の出力とを接続する接続経路を提供する回路である。製造フェーズにおいてPROM42に書き込まれるデータストリームにおいては、この接続経路は未だ規定されていない。
I/F回路53は、FPGA40上に構築されたラッチPUF回路PUF1乃至PUF5の出力値を読み出すためのインターフェース回路である。I/F回路53は、FPGA40上で機能回路52が動作するために必要な回路ではなく、ユーザ利用フェーズにおいては用いられることはない。
以下に、図11乃至図17を参照しながら、図10に示される回路情報作成システムの動作手順について説明する。
ステップS1において、CPU41がPUF回路50及びI/F回路53のビットストリームをPROM42から読み出す(図11のSQ1−1)。ステップS2において、CPU41が、ステップS1において読み出したビットストリームをFPGA40にダウンロードする(図11のSQ1−2)。
図11において、FPGA40を示すブロックの内部には、ビットストリームとしてダウンロードされた回路情報が表現する回路の構成を模式的に示してある。図11においては、機能回路52も便宜上示してあるが、ステップS1及びS2における読み出し及びダウンロードは、PUF回路50の出力値を確認することが目的であるので、機能回路52の回路情報のダウンロードは必ずしも必要はない。但し、ユーザ利用フェーズ時となるべく同じ条件でPUF回路50の出力値を確認するためには、機能回路52の回路情報も読み出してダウンロードしてよい。接続回路51については、PUF回路50とI/F回路53との間の接続経路を提供するために接続回路51を用いるのであれば、ステップS1及びS2において、接続回路51の回路情報もPROM42から読み出してFPGA40にダウンロードしてよい。
ステップS3において、CPU41は、FPGA40上に構築されたラッチPUF回路PUF1乃至PUF5の出力値をI/F回路53を介して読み出し、ラッチPUF回路PUF1乃至PUF5の出力値に関するテーブルを作成する(図12のSQ2−1)。ステップS4において、CPU41は、作成したテーブル60を揮発メモリ44に格納する(図12のSQ2−2)。図12において、揮発メモリ44を示すブロックの内部には、格納されたテーブル60が模式的に示されている。テーブル60には、各ラッチPUF回路PUF1乃至PUF5を特定する情報とそれぞれの出力値とが対応付けて格納されている。
なおラッチPUF回路PUF1乃至PUF5の出力値をI/F回路53を介して読み出す際には、CPU41は、FPGA40上に構築された回路に初期状態を設定し、当該初期状態から回路の動作を開始させる。初期状態から回路の動作が開始されると、その後ラッチPUF回路PUF1乃至PUF5の出力値が確定されるので、CPU41は、確定された出力値をI/F回路53を介して読み出す。
ステップS5において、CPU41は、不揮発メモリ43に格納されたマッピング情報70と揮発メモリ44に格納されたテーブル60とを読み出す(図13のSQ3−1及びSQ3−2)。図13において、不揮発メモリ43を示すブロックの内部には、製造フェーズで書き込まれたマッピング情報70が模式的に示されている。マッピング情報70は例えば、機能回路52中の未定義領域52−1乃至52−5に対応するエントリ70−1乃至70−5を含むテーブルであってよい。エントリ70−1乃至70−5には、機能回路52中の未定義領域52−1乃至52−5を特定する情報(回路中の位置を示す情報)と、該未定義領域から出力されるべき信号値を示す情報(論理値0又は1の何れかを示す情報)とが対応付けて格納されていてよい。図13においては、位置情報と信号値情報とを分かりやすく2次元的に配置して模式的に示してある。
ステップS6において、CPU41は、テーブル60とマッピング情報70とに基づき、機能回路52の未定義領域52−1乃至52−5にラッチPUF回路PUF1乃至PUF5の何れを割り当てるのかを決定する。図13において、CPU41を示すブロックの内部には、未定義領域52−1乃至52−5とラッチPUF回路PUF1乃至PUF5との間を接続回路51により結線する様子が模式的に示されている。接続回路51は、ラッチPUF回路PUF1乃至PUF5の出力値を入力するポートI1乃至I5と、未定義領域52−1乃至52−5への信号値を出力するポートO1乃至O5とを含む。機能回路52の未定義領域52−1乃至52−5にラッチPUF回路PUF1乃至PUF5の何れを割り当てるのかを決定することは、ポートI1乃至I5とポートO1乃至O5との間を接続する接続配線C1乃至C5を決定することに相当する。
ステップS7において、CPU41は、PROM42からビットストリームを読み出す(図14のSQ4−1)。ステップS8において、CPU41は、接続配線C1乃至C5に関する回路情報(結線ロジック情報)を含めるように、読み出したビットストリームを更新する。またCPU41は、接続配線C1乃至C5に関する回路情報を含めるように読み出したビットストリームを更新するとともに、読み出したビットストリームからI/F回路53に関する回路情報を削除する。ステップS9において、CPU41は、更新後のビットストリームをPROM42に書き込む(図14のSQ4−2)。
ステップS10において、CPU41は、不揮発メモリ43に格納されているマッピング情報70及びプログラムコードを削除するとともに(図15のSQ5−1)、揮発メモリ44に格納されているテーブル60を削除する(図15のSQ5−2)。なお揮発メモリ44は、揮発性であるので電源オフすれば記憶内容は消去される。従ってテーブル60を削除する動作を明示的に行わなくともよい。PUF回路の出力をリバースエンジニアリングにより特定することは不可能なので、マッピング情報70を削除してしまえば、未定義領域から出力されるべき信号値の情報を特定することは不可能となる。
上記ステップS1乃至S9の動作は、前記第2のメモリ領域に格納されたプログラムコードにより実現されるダウンロード実行部101、取得部102、及び更新部103により実行される。具体的には、CPU41が上記プログラムコードを実行することにより、ダウンロード実行部101、取得部102、及び更新部103の機能を実現する。このプログラムコードは、PROM42に格納されるビットストリームの作成に関する情報を含んでいるので、更新部103が更新したビットストリームをPROM42に書き込んだ後、不揮発メモリ43から削除されることが好ましい。削除するためには、例えば、上記プログラムコードは、削除用のプログラムコードを実行するプロセスを開始する命令を含み、当該命令を実行した後に自身の実行を終了するようにプログラムされていてよい。CPU41が削除プロセスを実行することにより、ダウンロード実行部101、取得部102、及び更新部103に相当するプログラムコードを削除してよい。或いは、外部からのコマンド入力により、削除プログラムを実行して上記プログラムコードを削除してよい。或いは外部からの削除コマンド入力により、上記プログラムコードを削除してよい。プログラムコードの削除の方法については特に限定されない。
図16は、工場出荷フェーズの完了時におけるFPGAシステムの構成の一例を示す図である。図16においては、マッピング情報70、プログラムコード、及びI/F回路53の回路情報が回路情報作成システムから削除されることにより、ユーザに提供するに適したFPGAシステムが完成されている。このFPGAシステムでは、PROM42に格納される回路情報において、接続回路51の接続配線C1乃至C5が確定されており、PUF回路50から適切な論理値が機能回路52中の未定義領域52−1乃至52−5に供給されるようになっている。
図17は、ユーザ利用フェーズにおけるFPGAシステムの動作の一例を示す図である。FPGA40利用時において、CPU41はPROM42からデータストリームを読み出し(USQ1)、読み出したデータストリームをFPGA40にダウンロードする(USQ2)。これにより、FPGA40上にPUF回路50、接続回路51、及び機能回路52を構築し、所望の機能を実現する回路を実行することが可能となる。
ユーザ利用フェーズにおけるFPGAシステムを入手した場合、攻撃者は、PROM42を解析することにより、ビットストリームをコピーすることが可能である。しかしこのビットストリームを他のFPGAにダウンロードしたとしても、他のFPGA上に構築されたPUF回路50の出力値は、図16のFPGA40上に構築されたPUF回路50の出力値とは異なってしまう。従って、機能回路52は設計通りに動作することができない。即ち、FPGA上で動作する機能回路52の模倣には失敗することになる。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
40 FPGA
41 CPU
42 PROM
42A 第1のメモリ領域
43 不揮発メモリ
43A 第2のメモリ領域
44 揮発メモリ
45 バス
50 PUF回路
51 接続回路
52 機能回路
53 I/F回路
100 回路情報作成システム
101 ダウンロード実行部
102 取得部
103 更新部
41 CPU
42 PROM
42A 第1のメモリ領域
43 不揮発メモリ
43A 第2のメモリ領域
44 揮発メモリ
45 バス
50 PUF回路
51 接続回路
52 機能回路
53 I/F回路
100 回路情報作成システム
101 ダウンロード実行部
102 取得部
103 更新部
Claims (6)
- 制御対象とするFPGAの回路情報を記憶する第1のメモリ領域と、
前記FPGAにおける、前記回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値とを対応づけて記憶した第2のメモリ領域と、
前記第1のメモリ領域に記憶された前記回路情報に含まれる、物理的クローン作製不能機能を有する複数の回路を、前記FPGA上にダウンロードするダウンロード実行部と、
前記FPGA上にダウンロードされた前記複数の回路それぞれの出力値を取得する取得部と、
前記第2のメモリ領域に記憶された情報及び前記複数の回路の前記出力値に基づいて、前記複数の回路の中で前記未定義領域に挿入すべき回路を特定し、特定した前記回路の情報と前記未定義領域との接続関係を示す情報を、前記第1のメモリ領域に追加する更新部と、
を有する回路情報作成システム。 - 前記第1のメモリ領域に記憶される前記回路情報は前記複数の回路それぞれの出力値を取得するための入出力回路の情報を含み、前記更新部は、前記接続関係を示す情報を前記第1のメモリ領域に追加する際に、前記回路情報から前記入出力回路の情報を削除する請求項1記載の回路情報作成システム。
- 前記更新部が前記接続関係を示す情報を前記第1のメモリ領域に追加した後に、前記第2のメモリ領域に記憶された前記情報が前記第2のメモリ領域から削除される請求項1又は2記載の回路情報作成システム。
- 前記ダウンロード実行部、前記取得部、及び前記更新部は前記第2のメモリ領域に格納されたプログラムコードにより実現され、前記更新部が前記接続関係を示す情報を前記第1のメモリ領域に追加した後に、前記プログラムコードは前記第2のメモリ領域から削除される請求項1乃至3いずれか一項記載の回路情報作成システム。
- 制御対象とするFPGAの回路情報に含まれる、物理的クローン作製不能機能を有する複数の回路をメモリ領域から読み出して前記FPGA上にダウンロードし、
前記FPGA上にダウンロードされた前記複数の回路それぞれの出力値を取得し、
前記回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値とを対応づけた情報、及び前記複数の回路の前記出力値に基づいて、前記複数の回路の中で前記未定義領域に挿入すべき回路を特定し、
特定した前記回路の情報と前記未定義領域との接続関係を示す情報を前記メモリ領域に追加する
処理をプロセッサに実行させる回路情報作成方法。 - 制御対象とするFPGAの回路情報に含まれる、物理的クローン作製不能機能を有する複数の回路をメモリ領域から読み出して前記FPGA上にダウンロードし、
前記FPGA上にダウンロードされた前記複数の回路それぞれの出力値を取得し、
前記回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値とを対応づけた情報、及び前記複数の回路の前記出力値に基づいて、前記複数の回路の中で前記未定義領域に挿入すべき回路を特定し、
特定した前記回路の情報と前記未定義領域との接続関係を示す情報を前記メモリ領域に追加する
処理をプロセッサに実行させる回路情報作成プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016175666A JP2018042136A (ja) | 2016-09-08 | 2016-09-08 | 回路情報作成システム、回路情報作成方法、及び回路情報作成プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016175666A JP2018042136A (ja) | 2016-09-08 | 2016-09-08 | 回路情報作成システム、回路情報作成方法、及び回路情報作成プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018042136A true JP2018042136A (ja) | 2018-03-15 |
Family
ID=61626425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016175666A Pending JP2018042136A (ja) | 2016-09-08 | 2016-09-08 | 回路情報作成システム、回路情報作成方法、及び回路情報作成プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018042136A (ja) |
-
2016
- 2016-09-08 JP JP2016175666A patent/JP2018042136A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Swierczynski et al. | Interdiction in practice—Hardware Trojan against a high-security USB flash drive | |
EP2506488B1 (en) | Secure dynamic on-chip key programming | |
CN104252881B (zh) | 半导体集成电路及系统 | |
JP6621894B2 (ja) | 偽造防止通信システム | |
US20150180654A1 (en) | Secure Provision of a Key | |
Eisenbarth et al. | Reconfigurable trusted computing in hardware | |
US20090046862A1 (en) | Method and device for speeding up key use in key management software with tree structure | |
US9870488B1 (en) | Method and apparatus for securing programming data of a programmable device | |
CN102117387A (zh) | 安全密钥访问设备及方法 | |
CN108063664B (zh) | 基于配置的密码密钥生成系统 | |
JP6073320B2 (ja) | デジタル署名するオーソリティ依存のプラットフォームシークレット | |
US9830479B2 (en) | Key storage and revocation in a secure memory system | |
JP4758904B2 (ja) | 機密情報処理方法 | |
JP2017504267A (ja) | セキュアブート中のキー抽出 | |
CN111914309A (zh) | 密码保护的数据储存装置以及非挥发式存储器控制方法 | |
US8983073B1 (en) | Method and apparatus for restricting the use of integrated circuits | |
US20180123789A1 (en) | Apparatus and method for generating a key in a programmable hardware module | |
Ender et al. | A cautionary note on protecting xilinx’ultrascale (+) bitstream encryption and authentication engine | |
US11874928B2 (en) | Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain | |
KR102583995B1 (ko) | 암호화 프로그램 다양화 | |
KR20180059217A (ko) | 메모리 데이터 보안 처리 장치 및 방법 | |
TWI827912B (zh) | 電子裝置及操作電子裝置的方法 | |
Unterstein et al. | SCA secure and updatable crypto engines for FPGA soc bitstream decryption | |
JP2018042136A (ja) | 回路情報作成システム、回路情報作成方法、及び回路情報作成プログラム | |
US20220043900A1 (en) | Method and device for authenticating an fpga configuration |