JP6992357B2 - 設計支援装置、設計支援方法およびコンピュータプログラム - Google Patents

設計支援装置、設計支援方法およびコンピュータプログラム Download PDF

Info

Publication number
JP6992357B2
JP6992357B2 JP2017181867A JP2017181867A JP6992357B2 JP 6992357 B2 JP6992357 B2 JP 6992357B2 JP 2017181867 A JP2017181867 A JP 2017181867A JP 2017181867 A JP2017181867 A JP 2017181867A JP 6992357 B2 JP6992357 B2 JP 6992357B2
Authority
JP
Japan
Prior art keywords
logic gate
communication
gate
logic
secret
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
JP2017181867A
Other languages
English (en)
Other versions
JP2019057181A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2017181867A priority Critical patent/JP6992357B2/ja
Publication of JP2019057181A publication Critical patent/JP2019057181A/ja
Application granted granted Critical
Publication of JP6992357B2 publication Critical patent/JP6992357B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、半導体集積回路であるFPGA(Field-Programmable Gate Array)の設計に用いる技術に関する。
個人情報保護の重要性が高まりつつある中、個人情報に該当する情報を扱う顔認証等のコンピュータ処理において個人情報の保護を図りながら個人情報を処理する技術として、秘密計算の技術が注目されている。秘密計算とは、暗号化されたデータを復号処理せずに暗号化したまま処理(計算)する技術である。
秘密計算を実現する技術として、非特許文献1に開示されている秘密分散を用いた技術が知られている。また、秘密計算は当該計算に特有な計算手続きに従って計算する。この特有な計算手続きが記載されたファイルは秘匿回路と呼ばれる。非特許文献2には秘匿回路を生成する手法が開示されている。
さらに、非特許文献3と非特許文献4には、秘密分散を用いた秘密計算の技術が開示されている。これら非特許文献3,4に開示されている秘密計算では、複数のサーバにデータを分散し各サーバで計算が行われる。また、非特許文献3,4における秘密計算では、論理積を計算する場合にサーバ間でデータの通信が行われる。
David Chaum, Claude Crepeau, Ivan Damgard, "Multiparty Unconditionally Secure Protocols", Proceedings of the Twentieth Annual ACM Symposium on Theory of Computing (STOC), pp. 11-19, 1988 Ebrahim M. Songhori, Siam U. Hussain, Ahmad-Reza Sadeghi, Thomas Schneider, and Farinaz Koushanfar, "Tinygarble: Highly compressed and scalable sequential garbled circuits", IEEE Symposium on Security and Privacy, SP 2015, San Jose, CA, USA, May 17-21, 2015, pages 411-428, 2015 Dan Bogdanov, Sven Laur, and Jan Willemson, "Sharemind: A Framewoek for Fast Privacy-Preserving Computations", ESORICS 2008, LNCS 5283, pp.192-206, 2008 Toshinori Araki and et al., "High-Throughput Semi-Honest Secure Three-Party Computation with an Honest Majority", Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, pp.805-817, 2016
ところで、秘密計算には、計算の高速化(計算時間の短縮化)が要求されている。秘密計算を高速化する手法として、FPGA(Field-Programmable Gate Array)を利用することが考えられる。FPGAは、製造後に、回路構成を設定できる集積回路である。
本発明は、上記のような秘密計算の高速化という課題を解決するために考え出された。すなわち、本発明の主な目的は、秘密計算の高速化を図ることができるFPGAを設計する技術を提供することにある。
上記目的を達成するために、本発明の設計支援装置は、
半導体集積回路の設計に利用される情報であり、かつ、秘密計算を実行する複数の論理ゲートの入力と出力の接続先を表す接続情報における前記論理ゲートのそれぞれの処理順を、当該論理ゲートの前段における前記論理ゲートの演算種別が関連する通信の要否に応じて、前記通信の実行タイミングに基づいて区分される処理順位区分の早い順位の区分から割り当てていくことにより、前記論理ゲートの処理順を決定する処理順決定部と、
決定された前記論理ゲートの処理順の情報を含む秘匿回路を、前記通信の経路に応じた形式のコンピュータプログラムに変換する変換部と
を備える。
また、本発明の設計支援方法は、
半導体集積回路の設計に利用される情報であり、かつ、秘密計算を実行する複数の論理ゲートの入力と出力の接続先を表す接続情報における前記論理ゲートのそれぞれの処理順を、当該論理ゲートの前段における前記論理ゲートの演算種別が関連する通信の要否に応じて、前記通信の実行タイミングに基づいて区分される処理順位区分の早い順位の区分から割り当てていくことにより、前記論理ゲートの処理順を決定し、
決定された前記論理ゲートの処理順の情報を含む秘匿回路を、前記通信の経路に応じた形式のコンピュータプログラムに変換し、
前記コンピュータプログラムに基づいて設計対象の前記半導体集積回路における配線の配置を決定する。
さらに、本発明のコンピュータプログラムは、
半導体集積回路の設計に利用される情報であり、かつ、秘密計算を実行する複数の論理ゲートの入力と出力の接続先を表す接続情報における前記論理ゲートのそれぞれの処理順を、当該論理ゲートの前段における前記論理ゲートの演算種別が関連する通信の要否に応じて、前記通信の実行タイミングに基づいて区分される処理順位区分の早い順位の区分から割り当てていくことにより、前記論理ゲートの処理順を決定する処理と、
決定された前記論理ゲートの処理順の情報を含む秘匿回路を、前記通信の経路に応じた形式のコンピュータプログラムに変換する処理と、
前記コンピュータプログラムに基づいて設計対象の前記半導体集積回路における配線の配置を決定する処理と
をコンピュータに実行させる。
本発明によれば、秘密計算の高速化を図るFPGAを設計できる。
本発明に係る第1実施形態の設計支援装置の機能構成を簡略化して表すブロック図である。 第1実施形態の設計支援装置のハードウェア構成の一例を簡略化して表すブロック図である。 第1実施形態の設計支援装置の動作例を説明するフローチャートである。 ゲートレベルネットリストの一例を表す図である。 図4におけるゲートレベルネットリストを回路図により表す図である。 第1実施形態の設計支援装置の動作例を図3と共に説明する図である。 さらに、第1実施形態の設計支援装置の動作例を図3と共に説明する図である。 さらに、第1実施形態の設計支援装置の動作例を図3と共に説明する図である。 さらにまた、第1実施形態の設計支援装置の動作例を図3と共に説明する図である。 第1実施形態の設計支援装置により生成される秘匿回路の一例を表す図である。 さらに、第1実施形態の設計支援装置の動作例を説明するフローチャートである。 秘匿回路の別の例を表す図である。 秘匿回路から変換されたインスタンスモジュールの一例を表す図である。 論理否定ゲートに対応するインスタンスモジュールの一例を表す図である。 論理積ゲートに対応するインスタンスモジュールの一例を表す図である。 排他的論理和ゲートに対応するインスタンスモジュールの一例を表す図である。 第1実施形態の設計支援装置により生成されるハードウェア記述言語プログラムの一例を表す図である。 本発明に係るその他の実施形態を説明する図である。
以下に、本発明に係る実施形態を図面を参照しつつ説明する。
<第1実施形態>
図1は、本発明に係る第1実施形態の設計支援装置の機能構成を表すブロック図である。この設計支援装置10は、秘密計算を分散して処理する秘密分散により行うFPGAを設計する装置である。当該設計支援装置10は、機能部として、高位合成部100と、論理合成部110と、秘匿回路生成部120と、ハードウェア記述言語変換部(変換部)130と、論理合成部140と、配線部150と、ビットストリーム生成部160とを備えている。
なお、図2は、設計支援装置10のハードウェア構成の一例を簡略化して表すブロック図である。設計支援装置10は、例えば、CPU(Central Processing Unit)30と、通信ユニット40と、メモリ50と、入出力IF(Interface)60とを有する。通信ユニット40は、他の装置と情報通信網を介した通信を実現する機能を備えている。入出力IF60は、例えば、表示(ディスプレイ)装置(図示せず)や、装置の操作者(ユーザ)が情報を入力するキーボード等の入力装置(図示せず)等に接続し、これら装置との情報(信号)の通信を実現する機能を備えている。
メモリ50は、データやコンピュータプログラム(以下、プログラムとも記す)を格納する非一時的(non-transitory)な記憶装置(記憶媒体)である。記憶装置には様々な種類が有り、1つの装置に複数種の記憶装置が搭載されることがあるが、ここでは、包括的に1つのメモリとして表している。メモリ50に格納されるデータやプログラムは、例えば、そのデータやプログラムを記憶した可搬型の非一時的(non-transitory)な記憶媒体からメモリ50に書き込まれる場合や、情報通信網を通して設計支援装置10が受け取って書き込まれる場合などが有る。可搬型の記憶媒体としては、例えば、DVD(Digital Versatile Disc),CD-ROM(Compact Disc- Read Only Memory),USB(Universal Serial Bus)メモリなどが有る。
CPU30は、演算回路であり、メモリ50に格納されているプログラムを読み出し当該プログラムを実行することにより、設計支援装置10の動作を制御する機能を備える。つまり、図1に表される各機能部100~160は、CPU30により実現される。
高位合成部100は、設計対象の回路の動作(アルゴリズム)を表すプログラミング言語で書かれたプログラムから、ハードウェア記述言語で記述されたプログラムを高位合成により生成する機能を備える。なお、高位合成の手法には、高位合成ツールである例えば日本電気株式会社のCyberWorkBench(登録商標)に採用されている手法やXilinx(登録商標)社のVivado(登録商標)に採用されている手法を始め様々な手法が提案されている。ここでは、高位合成の手法として、何れの手法が採用されてもよく、その説明は省略する。
論理合成部110は、ハードウェア記述言語で記述されたプログラムから、ゲートレベルネットリストを生成する論理合成の機能を備える。ゲートレベルネットリストとは、基本論理回路(ゲート)間の接続状態を表しているリスト(つまり、接続情報)である。なお、論理合成の手法には、論理合成ツールである例えばSynopsys(登録商標)社のDesign Compiler(登録商標)に採用されている手法やIntel(登録商標)社のQuartus(登録商標)に採用されている手法を始め様々な手法が提案されている。ここでは、論理合成の手法として、何れの手法が採用されてもよく、その説明は省略する。
秘匿回路生成部120は、秘密計算に係るゲートレベルネットリストから、通信に着目した秘匿回路(秘密計算に特有な計算手続きを表すファイル)を生成する機能を備える。
すなわち、第1実施形態では、秘密分散を利用して秘密計算を行うFPGAを設計することが想定されている。秘密分散では、論理積の値を算出するためには通信が必要であることが知られている。ここでの通信とは、複数のサーバ間での通信あるいは複数のFPGA間での通信あるいはFPGA内での通信である。以下の説明では、単に“通信”と述べる。
発明者は、秘密計算の実行時間の短縮化(計算の高速化)を図るためには、通信時間を削減すればよいことに着目し、通信時間を削減すべく通信回数を減少することを考えた。そこで、発明者は、通信に着目した秘匿回路を次のように生成する秘匿回路生成部120を考えた。
すなわち、論理積の演算には通信が必要であることから、ゲートレベルネットリストに論理積(論理積ゲート)が存在する場合には、論理積ゲートのアウトプットがインプットに接続される論理ゲート(基本論理回路)は通信後でないと計算できない。このため、そのような論理積ゲートの計算値(出力値)を利用する後段の論理ゲートも計算できない。これに対し、ゲートレベルネットリストに論理積ゲートが無い場合は、1回も通信することなく、ゲートレベルネットリストに関連する計算を処理することができる。発明者は、そのような論理ゲートと通信との関係を考慮して通信回数を最小化するために次のような処理により秘匿回路を生成することを考え出した。
まず、秘匿回路生成部120は、ゲートレベルネットリストを参照し、論理積ゲートの後段に配置されていない(つまり、通信せずに値が得られる)全ての論理ゲート(基本論理回路)を検知する。次に、秘匿回路生成部120は、1回の通信後に計算できる全ての論理ゲートを検知する。さらに、秘匿回路生成部120は、2回の通信後に計算できる全ての論理ゲートを検知する。このように、秘匿回路生成部120は、上記のような処理を繰り返すことにより、ゲートレベルネットリストにおける全ての論理ゲートに関し、通信との関係を検知する。
秘匿回路生成部120が、通信せずに演算可能な全ての論理ゲートを検知し、当該検知した論理ゲートの処理順が他の論理ゲートの処理順よりも早い秘匿回路を生成することにより、通信回数の最小化を図ることができる。例えば、ゲートレベルネットリストには8個の排他的論理和ゲートと2個の論理積ゲートが含まれているとする。さらに、このゲートレベルネットリストによれば、通信せずに8個の排他的論理和ゲートが計算でき、1回の通信で2個の論理積ゲートが計算可能だとする。しかしながら、通信せずに演算可能な論理ゲートを検知せず、論理ゲートと通信との関係を気にせずに秘匿回路が生成される場合には、次のような秘匿回路が生成されることも考えられる。その秘匿回路では、例えば、4個の排他的論理和ゲートの後段に1個の論理積ゲートの処理順が配置され、その後段に残りの4個の排他的論理和ゲートの処理順が配置され、さらにまた、その後段に1個の論理積ゲートの処理順が配置される。このような回路構成では、2回の通信が必要となってしまう。これに対し、前述したように、通信せずに計算可能な全ての論理ゲートを検知し、論理ゲートと通信との関係を考慮して秘匿回路を生成することによって、2個の論理積ゲートの計算を並行させることが可能となり、通信回数を削減することが可能となる。
秘匿回路生成部120は、上記のように、通信せずに計算できる全ての論理ゲートを検知し、当該検知結果と通信を考慮して複数の論理積の計算を並行させるような秘匿回路を生成することにより、通信回数を最小化する秘匿回路を生成可能である。この秘匿回路生成部120は、接続情報に含まれる論理ゲートの処理順を決定する処理順決定部として機能する。
ハードウェア記述言語変換部130は、秘匿回路生成部120により生成された秘匿回路から、ハードウェア記述言語で記述されたプログラムを生成(変換)する機能を備える。ここでは、ハードウェア記述言語変換部130は、通信を考慮して、秘密計算用の論理積と、秘密計算用の排他的論理和と、秘密計算用の論理否定とのそれぞれに対応するモジュールを生成する。
論理合成部140は、ハードウェア記述言語で記述されたプログラムから、論理合成部110と同様に、ゲートレベルネットリストを生成する論理合成の機能を備える。
配線部150は、ゲートレベルネットリストから、FPGA向けの配置配線情報を生成する機能を備える。FPGA向けの配置配線情報を生成する手法には、Intel(登録商標)社のQuartus(登録商標)に採用されている手法を始め様々な手法が提案されている。ここでは、FPGA向けの配置配線情報を生成する手法として、何れの手法が採用されてもよく、その説明は省略する。
ビットストリーム生成部160は、FPGA向けの配置配線情報から、ビットストリームを生成する機能を備える。ビットストリームを生成する手法には、Intel(登録商標)社のQuartus(登録商標)に採用されている手法を始め様々な手法が提案されている。ここでは、ビットストリームを生成する手法として、何れの手法が採用されてもよく、その説明は省略する。
以下に、秘匿回路生成部120の動作例を図3のフローチャートを参照しつつ説明する。なお、図3のフローチャートはコンピュータの処理手順を表している。
ここでは、図4に表されているようなゲートレベルネットリストが論理合成部110から秘匿回路生成部120に入力されたとする。図5は、図4のゲートレベルネットリストを回路図に変換した図である。図5に表されている回路122は、論理積(AND)ゲートg1,g3,g6と、排他的論理和(XOR)ゲートg2,g4,g5とを有する。この回路122では、1段目に論理積ゲートg1,g3と排他的論理和ゲートg2が配置され、各論理ゲートg1~g3の2つの入力部にはネットn1~n6を通して外部からインプット(プライマリインプット)が加えられる。2段目には排他的論理和ゲートg4,g5が配置される。排他的論理和ゲートg4,g5のそれぞれの2つの入力部には、ネットn7,n8,n9を通して、1段目の論理積ゲートg1,g3と排他的論理和ゲートg2から出力されたアウトプットが加えられる。3段目には論理積ゲートg6が配置される。論理積ゲートg6の2つの入力部には、ネットn10,n11を通して2段目の排他的論理和ゲートg4,g5から出力されたアウトプットが加えられる。また、論理積ゲートg6のアウトプットはネットn12を通して外部に出力される。
図6~図9は、秘匿回路生成部120が下記のような処理に使用するパラメータG,N,r,gの変化を図3におけるフローチャートの各ステップに対応させて表す図である。また、何回目の通信でどの論理ゲートが計算されるのかを表すのが、“0回目の通信後に計算”、“1回目の通信後に計算”、“2回目の通信後に計算”の欄である。つまり、“0回目の通信後に計算”の欄は、通信を必要とせず値が入力する論理ゲートを表す。“1回目の通信後に計算”の欄は、1回目の通信後に入力する値が決定して計算できる論理ゲートを表す。この例では、“2回目の通信後に計算”の欄に表されている論理ゲートが無い。これは、2回目の通信で全ての論理ゲートが計算され、2回目の通信後に未処理の論理ゲートが存在しないことを示す。すなわち、通信回数が2回で全ての論理ゲートを計算できることとなる。
まず、秘匿回路生成部120は、図4のようなゲートレベルネットリストが入力されると、ゲートレベルネットリストに含まれる全ての論理ゲートを要素として持つ集合G={g1,g2,g3,g4,g5,g6}を生成する(図3、図6のステップS1201)。なお、集合Gの要素である論理ゲートは、論理ゲートに付された符号により表されている。
次に、秘匿回路生成部120は、割り当て可能なネットの集合Nを生成する(ステップS1202)。割り当て可能なネットとは、ゲートレベルネットリストに含まれているネット(input, output, wire)であって、かつ、値が決定されたネットを意味する。プライマリインプット(input)は、回路122に入力する値であり、計算せずに値が定まっていることから、プライマリインプットに対応するネットは、割り当て可能なネットである。これにより、ここでは、割り当て可能なネットの集合Nとして、集合N={n1、n2、n3、n4、n5、n6}が生成される。
また、秘匿回路生成部120は、通信回数を表す“r”を零に初期化する(ステップS1203)。つまり、プライマリインプットのみをインプットに持つ論理ゲートは通信を必要としないで計算できるため、まず、通信回数rは零に設定される。通信回数rが零の時に割り当てられた論理ゲートは、論理ゲートの値を決定するために通信が不要な論理ゲートであることを意味する。
また、秘匿回路生成部120は、集合Gにおける論理ゲート(g1,g2,g3,g4,g5,g6)のうち、集合Nにおけるネットのみが接続される論理ゲートgを抽出する(ステップS1204)。つまり、ここでは、秘匿回路生成部120は、プライマリインプットが与えられることにより計算可能な論理ゲートg(g1,g2,g3)を抽出する(図6における“g”の欄を参照)。なお、計算可能な論理ゲートを論理ゲートgとも記す。
然る後に、秘匿回路生成部120は、抽出された論理ゲートgが有るか否かを判断する(ステップS1205)。ここでは、論理ゲートg(g1,g2,g3)が抽出されているので、秘匿回路生成部120は、論理ゲートgが有ると判断する。そして、秘匿回路生成部120は、論理ゲートgの一つ(ここでは、論理ゲートg1とする)を注目の論理ゲートとして選択し、論理ゲートg1が論理積か否かを判断する(ステップS1206)。論理ゲートg1は論理積であるから、秘匿回路生成部120は、ステップS1208の処理に進み、論理ゲートg1を集合Gから削除する(ステップS1208)。また、秘匿回路生成部120は、抽出された論理ゲートgから論理ゲートg1を外す。
さらに、論理ゲートg1はプライマリインプットのみに接続され通信せずに値を算出することができる。このことにより、秘匿回路生成部120は、論理ゲートg1を“r回目(0回目)の通信後に計算”に割り当てる(ステップS1209)。
然る後に、秘匿回路生成部120は、ステップS1205以降の処理を繰り返す。つまり、秘匿回路生成部120は、抽出された論理ゲートg(g2,g3)が有るか否かを判断する(ステップS1205)。そして、秘匿回路生成部120は、論理ゲートgがあるから、論理ゲートgの一つ(ここでは、論理ゲートg2とする)を注目の論理ゲートとして選択し、注目の論理ゲートg2が論理積か否かを判断する(ステップS1206)。論理ゲートg2は排他的論理和ゲートであって論理積ゲートではないから、秘匿回路生成部120は、ステップS1207の処理に進む。排他的論理和ゲートは通信を必要とせずに値を算出できる。このことにより、秘匿回路生成部120は、論理積ではない論理ゲートg2のアウトプットに対応するネットn8を割り当て可能なネットであるとして集合Nに追加する(ステップS1207)。そして、秘匿回路生成部120は、論理ゲートg2を集合Gから削除し(ステップS1208)、また、論理ゲートgから論理ゲートg2を外す。さらに、論理ゲートg2はプライマリインプットのみに接続され通信せずに値を算出することができることにより、秘匿回路生成部120は、論理ゲートg2を“r回目(0回目)の通信後に計算”に割り当てる(ステップS1209)。
然る後に、秘匿回路生成部120は、ステップS1205以降の処理をさらに繰り返す。すなわち、秘匿回路生成部120は、抽出された論理ゲートg(g3)が有るか否かを判断する(ステップS1205)。そして、秘匿回路生成部120は、論理ゲートgがあるから、論理ゲートgの一つ(ここでは、論理ゲートg3)を注目の論理ゲートとして選択し、注目の論理ゲートg3が論理積か否かを判断する(ステップS1206)。さらに、注目の論理ゲートg3は論理積であるから、秘匿回路生成部120は、ステップS1208の処理に進み、論理ゲートg3を集合Gから削除する(ステップS1208)。また、秘匿回路生成部120は、論理ゲートgから論理ゲートg3を外す。さらに、論理ゲートg3はプライマリインプットのみに接続され通信せずに値を算出することができる。このことにより、秘匿回路生成部120は、論理ゲートg3を“r回目(0回目)の通信後に計算”に割り当てる(ステップS1209)。
然る後に、秘匿回路生成部120は、ステップS1205以降の処理をさらに繰り返す。すなわち、秘匿回路生成部120は、抽出された論理ゲートgが有るか否かを判断する(ステップS1205)。抽出された論理ゲートgは無いから、秘匿回路生成部120は、ステップS1210の処理に進む。そして、秘匿回路生成部120は、抽出した論理ゲートg(g1,g2,g3)に論理積があったか否かを判断する(ステップS1210)。換言すれば、ここでは、抽出した論理ゲートg(g1,g2,g3)の計算に通信が必要であるか否かが判断される。
この例では、論理ゲートg1,g3が論理積である。このことにより、秘匿回路生成部120は、論理ゲートg(g1,g3)の計算に通信が必要であるとして、ステップS1211の処理に進む。
そして、秘匿回路生成部120は、その論理積の論理ゲートg1,g3のアウトプットが算出されたとして、論理ゲートg1,g3のアウトプットに対応するネットn7,n9を割り当て可能なネットとして集合Nに追加する(ステップS1211)。また、秘匿回路生成部120は、通信回数rに“1”を加算する(ステップS1212)。
然る後に、秘匿回路生成部120は、集合Gが空集合か否かを判断する(ステップS1213)。換言すれば、秘匿回路生成部120は、スケジューリングされていない論理ゲートがあるか否かを判断する。ここでは、集合Gには論理ゲートg4,g5,g6が残っているため、秘匿回路生成部120は、論理ゲートg4,g5,g6のスケジューリングを行うべく、ステップS1204以降の処理を繰り返す。
すなわち、秘匿回路生成部120は、集合Nの要素であるネットのみを通してインプットが加えられる論理ゲートを論理ゲートgとして集合Gから抽出する(ステップS1204)。ここでは、論理ゲートg4,g5が論理ゲートgとして抽出される。然る後に、秘匿回路生成部120は、抽出された論理ゲートg(g4,g5)が有るか否かを判断する(ステップS1205)。論理ゲートg4,g5が有るから、秘匿回路生成部120は、論理ゲートgの一つ(ここでは、論理ゲートg4とする)を注目の論理ゲートとして選択し、注目の論理ゲートg4が論理積か否かを判断する(ステップS1206)。論理ゲートg4は論理積ゲートではないから、秘匿回路生成部120は、ステップS1207の処理に進む。そして、秘匿回路生成部120は、論理積ではない論理ゲートg4のアウトプットに対応するネットn10を割り当て可能なネットであるとして集合Nに追加する(ステップS1207)。さらに、秘匿回路生成部120は、論理ゲートg4を集合Gから削除し(ステップS1208)、また、論理ゲートgから論理ゲートg4を外す。さらにまた、論理ゲートg4は通信せずに値を算出できることにより、秘匿回路生成部120は、論理ゲートg4を“r回目(1回目)の通信後に計算”に割り当てる(ステップS1209)。
然る後に、秘匿回路生成部120は、ステップS1205以降の処理を繰り返す。すなわち、上記同様に、秘匿回路生成部120は、抽出された論理ゲートg(g5)が有るか否かを判断する(ステップS1205)。論理ゲートg5が有るから、秘匿回路生成部120は、論理ゲートgの一つ(ここでは、論理ゲートg5)を注目の論理ゲートとして選択し、注目の論理ゲートg5が論理積か否かを判断する(ステップS1206)。論理ゲートg5は論理積ゲートではないから、秘匿回路生成部120は、ステップS1207の処理に進む。そして、秘匿回路生成部120は、論理積ではない論理ゲートg5のアウトプットに対応するネットn11を割り当て可能なネットであるとして集合Nに追加する(ステップS1207)。さらに、秘匿回路生成部120は、論理ゲートg5を集合Gから削除し(ステップS1208)、また、論理ゲートgから論理ゲートg5を外す。さらにまた、論理ゲートg5は通信せずに値を算出できることにより、秘匿回路生成部120は、論理ゲートg5を“r回目(1回目)の通信後に計算”に割り当てる(ステップS1209)。
然る後に、秘匿回路生成部120は、ステップS1205以降の処理をさらに繰り返す。すなわち、秘匿回路生成部120は、論理ゲートgが有るか否かを判断する(ステップS1205)。論理ゲートgは無いから、秘匿回路生成部120は、ステップS1210の処理に進む。そして、秘匿回路生成部120は、抽出した論理ゲートg(g4,g5)に論理積があったか否かを判断する(ステップS1210)。換言すれば、論理ゲートg(g4,g5)の計算に通信が必要であるか否かが判断される。この例では、論理ゲートg4,g5は論理積ではない。このことにより、秘匿回路生成部120は、ステップS1204以降の処理を再び繰り返す。
つまり、秘匿回路生成部120は、集合Nの要素であるネットのみを通してインプットが加えられる論理ゲートgを集合Gから抽出する(ステップS1204)。ここでは、論理ゲートg6が論理ゲートgとして抽出される。然る後に、秘匿回路生成部120は、抽出された論理ゲートg(g6)が有るか否かを判断する(ステップS1205)。論理ゲートg6が有るから、秘匿回路生成部120は、論理ゲートgの一つ(ここでは、論理ゲートg6)を注目の論理ゲートとして選択し、注目の論理ゲートg6が論理積か否かを判断する(ステップS1206)。さらに、注目の論理ゲートg6は論理積であるから、秘匿回路生成部120は、ステップS1208の処理に進み、論理ゲートg6を集合Gから削除する(ステップS1208)。また、秘匿回路生成部120は、論理ゲートgから論理ゲートg6を外す。さらに、論理ゲートg6は通信せずに値を算出することができる。このことにより、秘匿回路生成部120は、論理ゲートg6を“r回目(1回目)の通信後に計算”に割り当てる(ステップS1209)。
然る後に、秘匿回路生成部120は、ステップS1205以降の処理をさらに繰り返す。秘匿回路生成部120は、論理ゲートgが有るか否かを判断し(ステップS1205)、抽出された論理ゲートgは無いから、ステップS1210の処理に進む。そして、秘匿回路生成部120は、抽出した論理ゲートg(g6)が論理積であったか否かを判断する(ステップS1210)。論理ゲートg(g6)は論理積であることから、秘匿回路生成部120は、通信を伴う計算により論理ゲートg6のアウトプットが算出されたとして、論理ゲートg6のアウトプットに対応するネットn12を集合Nに追加する(ステップS1211)。また、秘匿回路生成部120は、通信回数rに“1”を加算する(ステップS1212)。
然る後に、秘匿回路生成部120は、集合Gが空集合か否かを判断し(ステップS1213)、これにより、スケジューリングされていない論理ゲートがあるか否かを判断する。ここでは、集合Gは、空集合であり、スケジューリングされていない論理ゲートはないことから、ゲートレベルネットリストに含まれる全ての論理ゲートは、どの通信のタイミングで計算するかが割り当てられた。これにより、秘匿回路生成部120は、図10に示されるような秘匿回路124を出力する(ステップS1214)。
以下に、ハードウェア記述言語変換部130の動作を図11のフローチャートを参照しつつ説明する。ここでは、図10に示されるような秘匿回路124がハードウェア記述言語変換部130に入力されるとする。なお、ここでの通信は、FPGA内での通信とする。
まず、ハードウェア記述言語変換部130は、秘匿回路124が入力されると、秘匿回路124を通信種別に応じたインスタンスモジュールに変換する(図11におけるステップS1301)。つまり、ハードウェア記述言語変換部130から出力されるモジュールの数やモジュールのインプットとアウトプットは、通信種別に応じたものとなる。ここでの通信種別はFPGA内での通信であり、当該通信種別では、秘匿回路内の全ての論理ゲートがインスタンスモジュールに変換される。これにより、秘匿回路124におけるANDの行は、“SMPC_AND INST_AND ・・・”というインスタンスモジュールに変換される。また、XORの行は、“SMPC_XOR INST_XOR ・・・”というインスタンスモジュールに変換される。
ハードウェア記述言語変換部130は、上記のようなインスタンスモジュールへの変換動作により、秘匿回路124に基づいた図13に表されるような1つのモジュール131を生成する。
然る後に、ハードウェア記述言語変換部130は、秘密分散を利用した秘密計算用の論理否定モジュールを生成する(ステップS1302)。ハードウェア記述言語変換部130は、論理否定ゲートに対応するモジュールとして、例えば図14に表されるようなモジュール132を生成する。
その後、ハードウェア記述言語変換部130は、秘密分散を利用した秘密計算用の論理積モジュールを生成する(ステップS1303)。具体的には、ハードウェア記述言語変換部130は、例えば図13における“SMPC_AND”に対応するモジュールとして、図15に表されるようなモジュール133を生成する。
さらに、ハードウェア記述言語変換部130は、秘密分散を利用した秘密計算用の排他的論理和モジュールを生成する(ステップS1304)。具体的には、ハードウェア記述言語変換部130は、例えば図13における“SMPC_XOR”に対応するモジュールとして、図16に表されるようなモジュール134を生成する。
然る後に、ハードウェア記述言語変換部130は、上記のように生成した秘密計算用のモジュールを1つのファイルにまとめることにより、秘匿回路に対応するハードウェア記述言語プログラムを生成し、当該プログラムを出力する(ステップS1305)。具体的には、ハードウェア記述言語変換部130は、秘匿回路124に対応するハードウェア記述言語プログラムとして、図17に表されるようなプログラム135を生成し出力する。
第1実施形態の設計支援装置10は、秘匿回路生成部120を備え、当該秘匿回路生成部120によって、ゲートレベルネットリストから、通信せずに計算ができる全ての論理ゲートを検知している。これにより、秘匿回路生成部120は、通信回数を最小とする秘匿回路を生成することができる。また、設計支援装置10は、ハードウェア記述言語変換部130を備え、ハードウェア記述言語変換部130によって、秘密計算の通信を考慮したハードウェア記述言語のプログラムを生成できる。
すなわち、設計支援装置10は、秘密分散を用いる秘密計算を行うFPGAの設計を行うことが可能である上に、秘密計算中の通信時間を抑制でき秘密計算の高速化を図るFPGAの設計を可能にする。
<その他の実施形態>
なお、本発明は第1実施形態に限定されず、様々な実施の態様を採り得る。例えば、ハードウェア記述言語変換部130の図11に表されるようなステップS1302~ステップS1304の処理は、その順番を変更してもよい。また、それら処理は時系列に順番に行われるのではなく、並列的に行われてもよい。
また、本発明に係る設計支援装置は、図18に表されるような構成を含んでいればよく、図1に表される構成に限定されない。図18における設計支援装置70は、処理順決定部71と変換部72を備える。処理順決定部71は、半導体集積回路の設計に利用される情報であり、かつ、秘密計算を実行する複数の論理ゲートの入力と出力の接続先を表す接続情報を受け取る。また、処理順決定部71は、接続情報における論理ゲートのそれぞれの処理順を、当該論理ゲートの前段における論理ゲートの演算種別が関連する通信の要否に応じて、通信の実行タイミングに基づいて区分される処理順位区分の早い順位の区分から割り当てていくことにより、論理ゲートの処理順を決定する機能を備える。変換部72は、決定された論理ゲートの処理順の情報を含む秘匿回路を、通信の経路に応じた形式のコンピュータプログラムに変換する機能を備える。
10 設計支援装置
100 高位合成部
110,140 論理合成部
120 秘匿回路生成部
130 ハードウェア記述言語変換部

Claims (6)

  1. 半導体集積回路の設計に利用される情報であり、かつ、秘密計算を実行する複数の論理ゲートの入力と出力の接続先を表す接続情報における前記論理ゲートのそれぞれの処理順を、当該論理ゲートの前段における前記論理ゲートの演算種別が関連する通信の要否に応じて、前記通信の実行タイミングに基づいて区分される処理順位区分の早い順位の区分から割り当てていくことにより、前記論理ゲートの処理順を決定する処理順決定部と、
    決定された前記論理ゲートの処理順の情報を含む秘匿回路を、前記通信の経路に応じた形式のコンピュータプログラムに変換する変換部と
    を備える設計支援装置。
  2. 前記処理順決定部は、演算に前記通信が必要な論理ゲートである論理積ゲートの演算結果を利用せずに入力を得ることができる前記論理ゲートを前記接続情報から検知し、当該検知した前記論理ゲートを最も早い順位の処理順位区分に割り当てることにより、秘密計算において実行される前記通信の回数の最小化を図る請求項1に記載の設計支援装置。
  3. 前記通信は、前記半導体集積回路を搭載する互いに異なるコンピュータ装置間の通信、同じコンピュータ装置内における互いに異なる半導体集積回路間の通信、あるいは、同じ半導体集積回路内での通信である請求項1又は請求項2に記載の設計支援装置。
  4. 前記半導体集積回路は、FPGA(Field-Programmable Gate Array)である請求項1乃至請求項3の何れか一つに記載の設計支援装置。
  5. コンピュータによって、
    半導体集積回路の設計に利用される情報であり、かつ、秘密計算を実行する複数の論理ゲートの入力と出力の接続先を表す接続情報における前記論理ゲートのそれぞれの処理順を、当該論理ゲートの前段における前記論理ゲートの演算種別が関連する通信の要否に応じて、前記通信の実行タイミングに基づいて区分される処理順位区分の早い順位の区分から割り当てていくことにより、前記論理ゲートの処理順を決定し、
    決定された前記論理ゲートの処理順の情報を含む秘匿回路を、前記通信の経路に応じた形式のコンピュータプログラムに変換し、
    前記コンピュータプログラムに基づいて設計対象の前記半導体集積回路における配線の配置を決定する設計支援方法。
  6. 半導体集積回路の設計に利用される情報であり、かつ、秘密計算を実行する複数の論理ゲートの入力と出力の接続先を表す接続情報における前記論理ゲートのそれぞれの処理順を、当該論理ゲートの前段における前記論理ゲートの演算種別が関連する通信の要否に応じて、前記通信の実行タイミングに基づいて区分される処理順位区分の早い順位の区分から割り当てていくことにより、前記論理ゲートの処理順を決定する処理と、
    決定された前記論理ゲートの処理順の情報を含む秘匿回路を、前記通信の経路に応じた形式のコンピュータプログラムに変換する処理と、
    前記コンピュータプログラムに基づいて設計対象の前記半導体集積回路における配線の配置を決定する処理と
    をコンピュータに実行させるコンピュータプログラム。
JP2017181867A 2017-09-22 2017-09-22 設計支援装置、設計支援方法およびコンピュータプログラム Active JP6992357B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017181867A JP6992357B2 (ja) 2017-09-22 2017-09-22 設計支援装置、設計支援方法およびコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017181867A JP6992357B2 (ja) 2017-09-22 2017-09-22 設計支援装置、設計支援方法およびコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2019057181A JP2019057181A (ja) 2019-04-11
JP6992357B2 true JP6992357B2 (ja) 2022-01-13

Family

ID=66107572

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017181867A Active JP6992357B2 (ja) 2017-09-22 2017-09-22 設計支援装置、設計支援方法およびコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP6992357B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111259616B (zh) * 2020-01-10 2023-06-30 芯峰光电技术(深圳)有限公司 一种集成电路布局数据的处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193529A (ja) 2006-01-18 2007-08-02 Matsushita Electric Ind Co Ltd 半導体集積回路の高位合成方法
JP2009538481A (ja) 2006-05-22 2009-11-05 コーヒレント・ロジックス・インコーポレーテッド 処理システムでのソフトウェアプログラムの実行に基づくasicの設計
US20150334133A1 (en) 2014-05-14 2015-11-19 Sequitur Labs Inc. Hardware implementation methods and system for secure, policy-based access control for computing devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193529A (ja) 2006-01-18 2007-08-02 Matsushita Electric Ind Co Ltd 半導体集積回路の高位合成方法
JP2009538481A (ja) 2006-05-22 2009-11-05 コーヒレント・ロジックス・インコーポレーテッド 処理システムでのソフトウェアプログラムの実行に基づくasicの設計
US20150334133A1 (en) 2014-05-14 2015-11-19 Sequitur Labs Inc. Hardware implementation methods and system for secure, policy-based access control for computing devices

Also Published As

Publication number Publication date
JP2019057181A (ja) 2019-04-11

Similar Documents

Publication Publication Date Title
Wille et al. BDD-based synthesis of reversible logic for large functions
Amarú et al. Majority-inverter graph: A novel data-structure and algorithms for efficient logic optimization
US10089426B2 (en) Logic circuit generation device and method
JP2017515195A (ja) 断熱量子計算を介してデジタル論理制約問題を解く
Fang et al. Secure function evaluation using an fpga overlay architecture
US10394988B2 (en) Majority logic synthesis
Patra et al. SynCirc: efficient synthesis of depth-optimized circuits for secure computation
JP6992357B2 (ja) 設計支援装置、設計支援方法およびコンピュータプログラム
Huss et al. A novel design flow for a security-driven synthesis of side-channel hardened cryptographic modules
Fang et al. SIFO: secure computational infrastructure using FPGA overlays
Disser et al. Breaking the Size Barrier: Universal Circuits meet Lookup Tables
JP6337133B2 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
Zhang et al. Optimization of area and delay for implementation of the composite field advanced encryption standard S-box
Foster et al. Flexible HLS-based implementation of the Karatsuba multiplier targeting homomorphic encryption schemes
Madarshahian et al. Reducing MCMC computational cost with a two layered Bayesian approach
JP6321216B2 (ja) 行列・キー生成装置、行列・キー生成システム、行列結合装置、行列・キー生成方法、プログラム
Lin et al. Cascading deep pipelines to achieve high throughput in numerical reduction operations
Granado et al. IDEA and AES, two cryptographic algorithms implemented using partial and dynamic reconfiguration
Jagannatha et al. FPGA and ASIC implementation of 16-Bit vedic multiplier using Urdhva Triyakbhyam Sutra
Bandyopadhyay et al. Improved cube list based cube pairing approach for synthesis of ESOP based reversible logic
Hihara et al. Sensor signal processing using high-level synthesis with a layered architecture
Zidaric et al. Rapid hardware design for cryptographic modules with filtering structures over small finite fields
JPWO2015194117A1 (ja) 条件生成装置、条件生成方法、条件生成プログラム、データベース検索システム、及び、データベース検索プログラム
Johnson et al. The circular pipeline achieving higher throughput in the search for bent functions
Chakraborty et al. Binary decision diagram assisted modeling of FPGA-based physically unclonable function by genetic programming

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200817

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210831

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211022

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211027

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211122

R150 Certificate of patent or registration of utility model

Ref document number: 6992357

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150