JP2004178507A - 暗号回路設計装置および暗号回路設計方法 - Google Patents

暗号回路設計装置および暗号回路設計方法 Download PDF

Info

Publication number
JP2004178507A
JP2004178507A JP2002347170A JP2002347170A JP2004178507A JP 2004178507 A JP2004178507 A JP 2004178507A JP 2002347170 A JP2002347170 A JP 2002347170A JP 2002347170 A JP2002347170 A JP 2002347170A JP 2004178507 A JP2004178507 A JP 2004178507A
Authority
JP
Japan
Prior art keywords
architecture
database
circuit
common key
cryptographic
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
Application number
JP2002347170A
Other languages
English (en)
Inventor
Kanejiro Ike
兼次郎 池
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2002347170A priority Critical patent/JP2004178507A/ja
Publication of JP2004178507A publication Critical patent/JP2004178507A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる暗号回路設計装置を提供する。
【解決手段】選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベース格納のデータベース部101と、選択可能なアーキテクチャに関して、アーキテクチャのゲート数等が、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベース格納のデータベース部102と、ユーザー入力部103と、動作周波数でスループット動作を可能としかつ最小ゲート数となる暗号回路を実現するための探索アルゴリズムに基づいて必要なアーキテクチャを探索し、必要な部分回路を探索するデータ探索部106と、データ探索部による探索結果から暗号回路を生成する回路生成部108とを有する。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は、本発明は、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を生成する暗号回路設装置、およびラウンド関数を繰り返し適用する共通鍵ブロック暗号を生成するための暗号回路設計方法に関するものである。
【0002】
【従来の技術】
IPv6によるIPアドレス空間の拡大や、ネットワーク回線のブロードバンド化による常時ネットワーク接続環境の充実などの背景から、コンピュータ、携帯機器のみならず、従来ネットワーク接続が考慮されてこなかった家電、AV機器などの機器のネットワーク接続も可能となりつつある。しかし、インターネットに代表されるネットワーク上での通信は、一般的に通信の当事者以外の第三者による傍受や通信の当事者へのなりすましなどの危険に曝されている。今後、ネットワークを介した電子商取引の市場規模は急激に拡大すると予想されており、ネットワーク上での通信の安全性を確保することは必要不可欠となっている。また、会社内、家庭内においては無線によりネットワークが構築される場合が多くなっているが、無線通信では漏洩電波による通信の傍受が容易であるため、機密情報あるいはプライバシ保護のための対策を講ずる必要がある。ネットワーク上の通信の安全性を確保するための方法としては暗号技術の応用が一般的であり、様々なアプリケーションの機器開発においては暗号アルゴリズムの実装が不可欠である。暗号アルゴリズムの実装形態としては、ソフトウェアによるものとハードウェアによるものとに大別される(例えば、特許文献1参照。)。このうち、処理の高速化あるいは低消費電力化を図るためにはハードウェアによる実装が必要とされる。暗号を使用した通信では、通信処理全体の中で暗号処理が占める割合が大きいことが知られており、ハードウェアによる暗号アルゴリズム実装が重要になっている。
【0003】
しかし、同じ暗号アルゴリズムをハードウェア実装する場合でも、サーバ・ゲートウェイといった高速処理が必要な機器と、携帯機器、ICカードなど小面積、低消費電力化が必要とされる機器とではアーキテクチャが異なるため、個々の機器に対応した暗号回路設計が必要となる。機器に搭載される機能は増加しているにも関らず、開発期間は短縮の一途にあるため、設計期間短縮のための手法が求められている。従来から、設計期間短縮化の手法として、以前の機器開発で設計した暗号回路を半導体IP(Intellectual Property)として再利用する方法が取られてきた。しかし暗号回路の場合、上記のように機器により要求性能が異なるため、半導体IPでは性能が不足したり、過剰であったりすることがある。
【0004】
【特許文献1】
特開平9−44353号公報
【0005】
【発明が解決しようとする課題】
このような従来の暗号回路設計方法では、以前の機器開発で設計した暗号回路を半導体IPとして再利用しているが、機器により要求性能が異なることから、半導体IPでは性能が不足したり、過剰であったりするという問題点を有していた。
【0006】
この暗号回路設計装置および暗号回路設計方法では、暗号アルゴリズムの中でも重要な種類である共通鍵ブロック暗号アルゴリズム(以下、「ブロック暗号」または「暗号」と記載する)のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することが要求されている。
【0007】
本発明は、この要求を満たすため、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる暗号回路設計装置、および、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計するための暗号回路設計方法を提供することを目的とする。
【0008】
【課題を解決するための手段】
上記課題を解決するために本発明の暗号回路設計装置は、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設計装置であって、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースを格納する第1のデータベース部と、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを格納する第2のデータベース部と、スループットと動作周波数とを入力するユーザー入力部と、動作周波数においてスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目標とする探索アルゴリズムに基づいて、必要なアーキテクチャをアーキテクチャデータベースから探索し、必要な部分回路を部分回路データベースから探索するデータ探索部と、データ探索部による探索結果から暗号回路を生成する回路生成部とを有する構成を備えている。
【0009】
これにより、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる暗号回路設計装置が得られる。
【0010】
上記課題を解決するために本発明の暗号回路設計方法は、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設方法であって、暗号回路のスループットと動作周波数とを入力すると、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースと、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを使用し、動作周波数においてスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目標とする、アルゴリズムとして記述された探索方法に基づいて、必要なアーキテクチャをアーキテクチャデータベースから探索し、必要な部分回路を部分回路データベースから探索し、探索結果から暗号回路を生成する構成を備えている。
【0011】
これにより、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計するための暗号回路設計方法が得られる。
【0012】
【発明の実施の形態】
本発明の請求項1に記載の暗号回路設計装置は、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設計装置であって、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースを格納する第1のデータベース部と、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを格納する第2のデータベース部と、スループットと動作周波数とを入力するユーザー入力部と、入力した動作周波数において入力したスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目的とする探索アルゴリズムに基づいて、必要な部分回路を第1のデータベース部から探索し、必要なアーキテクチャを第2のデータベース部から探索するデータ探索部と、データ探索部による探索結果から暗号回路を生成する回路生成部とを有することとしたものである。
【0013】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【0014】
請求項2に記載の暗号回路設計装置は、請求項1に記載の暗号回路設計装置において、ユーザー入力部における入力として暗号モードを加え、第1のデータベース部に格納されている部分回路データベースは、暗号化のみを処理するための部分回路と暗号化・復号化の双方を処理するための部分回路を有し、第2のデータベース部に格納されているアーキテクチャデータベースは、暗号化のみを処理するためのアーキテクチャと暗号化・復号化の双方を処理するためのアーキテクチャを有し、データ探索部は、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したスループットにより動作可能とし、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することとしたものである。
【0015】
この構成により、所定の暗号モードで暗号を実行する暗号回路が、満たすべきスループットと動作周波数を満足し、かつ必要最小限のゲート数となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【0016】
請求項3に記載の暗号回路設計装置は、請求項2に記載の暗号回路設計装置において、一回の通信に使用されるデータ長が共通鍵ブロック暗号のブロック長より短い場合、ユーザー入力部における入力として通信で使用するデータ長を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したデータ長による通信で入力したスループットによる動作が可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することとしたものである。
【0017】
この構成により、実際に通信で使用するビット数を考慮に入れ、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【0018】
請求項4に記載の暗号回路設計装置は、請求項1に記載の暗号回路設計装置において、共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、ユーザー入力部における入力として共通鍵の長さを加え、データ探索部は、暗号回路が、入力した共通鍵の長さにおける共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより実行可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することとしたものである。
【0019】
この構成より、使用する共通鍵の長さである共通鍵ブロック暗号の処理に必要最小限のゲート数による暗号回路の生成を可能にするので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【0020】
請求項5に記載の暗号回路設計装置は、請求項1に記載の暗号回路設計装置において、部分回路データベースに、選択可能な部分回路に関して、消費電力の情報を加え、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を、動作周波数においてスループットにより実行可能で、かつ最小消費電力とすることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することとしたものである。
【0021】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費電力が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【0022】
請求項6に記載の暗号回路設計装置は、請求項5に記載の暗号回路設計装置において、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより実行可能で、かつ最小消費エネルギーとすることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することとしたものである。
【0023】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費エネルギーが最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【0024】
請求項7に記載の暗号回路設計装置は、請求項1に記載の暗号回路設計装置において、複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、第1のデータベース部に部分回路データベースが、第2のデータベース部にアーキテクチャデータベースがそれぞれ格納され、ユーザー入力部における入力として、回路で実現する共通鍵ブロック暗号名を加え、データ探索部は、暗号回路が、入力された名称の共通鍵ブロック暗号を、入力された動作周波数において入力されたスループットにより実行可能で、かつ最小ゲート数とすることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することとしたものである。
【0025】
この構成により、複数の暗号に対して請求項1の作用と同様の作用を呈することができるという作用を有する。
【0026】
請求項8に記載の暗号回路設方法は、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設方法であって、暗号回路のスループットと動作周波数とを入力すると、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースと、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを使用し、入力した動作周波数において入力したスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目標とする、アルゴリズムとして記述された探索方法に基づいて、必要なアーキテクチャをアーキテクチャデータベースから探索し、必要な部分回路を部分回路データベースから探索し、探索結果から暗号回路を生成することとしたものである。
【0027】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【0028】
請求項9に記載の暗号回路設計方法は、請求項8に記載の暗号回路設計方法において、入力として暗号モードを加え、部分回路データベースは暗号化のみを処理する部分回路と暗号化・復号化の双方を処理する部分回路を有し、アーキテクチャデータベースは、暗号化のみを処理するアーキテクチャと暗号化・復号化の双方を処理するアーキテクチャを有し、暗号回路が、共通鍵ブロック暗号を暗号モードで実行し、かつ動作周波数においてスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【0029】
この構成により、所定の暗号モードで暗号を実行する暗号回路が、満たすべきスループットと動作周波数を満足し、かつ必要最小限のゲート数となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【0030】
請求項10に記載の暗号回路設計方法は、請求項9に記載の暗号回路設計方法において、一回の通信に使用されるデータ長が、共通鍵ブロック暗号のブロック長より短い場合、入力として通信で使用するデータ長を加え、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したデータ長による通信で入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【0031】
この構成により、実際に通信で使用するビット数を考慮に入れ、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【0032】
請求項11に記載の暗号回路設計方法は、請求項8に記載の暗号回路設計方法において、共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、入力として共通鍵の長さを加え、暗号回路が、共通鍵の長さにおける共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【0033】
この構成より、使用する共通鍵の長さである共通鍵ブロック暗号の処理に必要最小限のゲート数による暗号回路の生成を可能にするので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【0034】
請求項12に記載の暗号回路設計方法は、請求項8に記載の暗号回路設計方法において、部分回路データベースに、選択可能な部分回路に関して、消費電力に関する情報を加え、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表される情報を加え、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小消費電力となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【0035】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費電力が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【0036】
請求項13に記載の暗号回路設計方法は、請求項12に記載の暗号回路設計方法において、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小消費エネルギーとなることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【0037】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費エネルギーが最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【0038】
請求項14に記載の暗号回路設計方法は、請求項8に記載の暗号回路設計方法において、複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、部分回路データベースとアーキテクチャデータベースを有し、入力として回路で実現する共通鍵ブロック暗号名を加え、暗号回路が、入力した共通鍵ブロック暗号名の共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【0039】
この構成により、複数の暗号に対して請求項8の作用と同様の作用を呈することができるという作用を有する。
【0040】
以下、本発明の実施の形態について、図1〜図22を用いて説明する。
【0041】
(実施の形態1)
本発明の実施の形態1による暗号回路設計装置について、まず、その概要を説明する。
【0042】
ブロック暗号はラウンド関数と呼ばれる関数を繰り返し実行することにより暗号処理あるいは復号処理を実現する。そのため、実際に適用可能なアーキテクチャの選択肢は制限され、アーキテクチャ毎に必要とされる部分回路数、各部分回路が決まったときの回路全体の最長遅延時間計算方法、1ブロック処理完了までのクロック・サイクル数などが決定される。ブロック暗号回路を構成する部分回路のゲート数と最長遅延時間が決定されると、回路全体のゲート数と最長遅延時間を概算することができる。ゲート数は回路面積に比例し、最長遅延時間の逆数が最高動作周波数となる。また、最高動作周波数と1ブロック処理完了までのクロック数が決まると、1秒あたりに処理されるビット数を表すスループットが決定される。
【0043】
回路の性能指標として、スループットと最高動作周波数、ゲート数があるが、スループットと動作周波数は機器の制約として決まっており、ゲート数は少なければ少ないほど回路面積を小さくすることができるので、製造コストが安く済む。
【0044】
そこで、暗号回路を構成する各部分回路に対して、実装しうる回路のゲート数、最長遅延時間をデータベース化し、全ての選択し得るアーキテクチャに対して、回路全体のゲート数、最高動作周波数、スループットを計算するための方法をデータベース化する。そして、制約条件としてスループットと動作周波数が与えられたとき、上記の2つのデータベースから最小ゲート数となるアーキテクチャと部分回路を選択する方法をアルゴリズム化することにより、制約条件を満たし最小ゲート数となるブロック暗号回路を自動設計することを可能にする。
【0045】
本実施の形態によれば、ブロック暗号回路の設計自動化を図ることができ、短期間に機器の要求性能に沿ったブロック暗号回路を設計するための手法を提供することを可能にする。
【0046】
図1は、本発明の実施の形態1による暗号回路設計装置を示すブロック図である。
【0047】
図1において、101は部分回路データベースが格納されている第1のデータベース部である。部分回路データベースは、暗号回路の実装可能な全ての部分回路に対して、回路属性を後述する部分回路データとして保持する。102はアーキテクチャデータベースが格納されている第2のデータベース部である。アーキテクチャデータベースは、暗号回路の選択しうる全てのアーキテクチャに対して、回路属性を後述するアーキテクチャデータとして保持する。103はユーザー入力部である。ユーザー入力部103は、暗号回路の要求性能に基づき、暗号回路に対する制約条件を与える。104はスループットである。スループット104は、暗号回路の処理性能の下限に関する制約条件を1秒あたりに処理可能なビット数として与える。105は動作周波数である。動作周波数105は、暗号回路の動作周波数の下限に関する制約条件を周波数単位で与える。106はデータ探索部である。データ探索部106は、ユーザー入力部103からのデータを入力し、部分回路データベースとアーキテクチャデータベースから、ユーザー入力部103で与えられる制約条件を満足し、かつゲート数最小となる暗号回路となるデータを探索する。107は暗号回路である。暗号回路107は、ハードウェア記述言語(以下、「HDL」と記載する)等で記述されており、暗号アルゴリズム全体を処理し、かつ、ユーザー入力部103で与えられる制約条件を満足し、かつゲート数最小となる回路である。108は回路生成部である。回路生成部108は、データ探索部106で探索した部分回路データとアーキテクチャデータとに基づいて暗号回路107を生成する。
【0048】
以下では、図1の暗号回路設計装置の動作を、ブロック暗号の一つであるDATA ENCRYPTION STANDARD(以下、「DES」と記載する)を例に述べる。DESは64ビット単位でデータの暗号化/復号化処理を実行する。秘密鍵は64ビットである。
【0049】
図2は、データベース部101格納の部分回路データベースを構成する部分回路データの構造を示すデータ構造図である。
【0050】
図2において、201は部分回路データである。部分回路データベースは複数の異なる部分回路データから構成される。202は部分回路の回路種別番号である。DESにおける部分回路は、S1からS8でのS−boxと呼ばれる非線形回路、拡大鍵とデータの排他的論理和を取るための48ビットEXOR回路、暗号化/復号化切換またはラウンド数依存による処理切換のためのセレクタなどがある。回路種別番号202は、実装可能な全ての部分回路の種類に対し一意的に番号がつけられる。203はシリアル・ナンバである。シリアル・ナンバ203は、一つの部分回路について一つ以上の実装形態がある場合、複数の実装形態を区別するため、回路種別番号202毎につけられる通し番号である。例えば、S1からS8までのS−boxは回路構成方法が複数ある。この場合、回路構成方法毎に部分回路データを作成し、該部分回路データの回路種別番号202は同一番号として、シリアル・ナンバ203を異なる番号で区別する。204は回路記述である。回路記述204は、該部分回路の動作を、例えば、レジスタ・トランスファ・レベル(以下、「RTL」と記載する)の抽象度のHDLで記述されたものである。205はゲート数である。ゲート数205は、該部分回路を実装した場合のゲート数を保持する。ゲート数205は、実装プロセスにおける実測値あるいは過去の実装実績からの見積もりなどにより得られたデータである。206は最長遅延時間である。最長遅延時間206は、該部分回路において、該部分回路への入力値が定まってから出力値が定まるまでに要する最も長い時間を保持する。最長遅延時間206は、実装プロセスにおける実測値あるいは過去の実装実績からの見積もりなどにより得られた時間である。部分回路データベースに登録される各部分回路において、同一回路構成であっても、ゲート数、最長遅延時間は一意に定まらない。ゲート数と最長遅延時間はトレードオフ関係にあり、最長遅延時間が小さくなるほどゲート数は増大する傾向にある。そこで離散的に最長遅延時間を選び、各最長遅延時間毎に部分回路データを作成する。この場合、該部分回路データの回路種別番号202は同一番号として、シリアル・ナンバ203を異なる番号で区別する。
【0051】
図3は、データベース部102格納のアーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【0052】
図3において、301はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータ301から構成される。302はアーキテクチャ種別番号である。DESにおいて実装可能なアーキテクチャとしては、1つのラウンドを繰り返し実行するアーキテクチャ(以下、「ループアーキテクチャ」と記載する)、すべてのラウンドを実装して1ブロックの処理を1クロックサイクルで実行するアーキテクチャ(以下、「ループアンローリングアーキテクチャ」と記載する)、すべてのラウンドを実装して各ラウンド関数をパイプライン処理するアーキテクチャ(以下、「パイプラインアーキテクチャ」と記載する)が存在する。アーキテクチャ種別番号302は実装可能全てのアーキテクチャの種類に対し一意的に番号がつけられる。303は実行サイクルである。実行サイクル303は、1ブロックの暗号化/復号化処理に要するクロックサイクルを保持する。1ブロックの暗号化/復号化処理に要するクロックサイクルはアーキテクチャの構造から決定することができる。例えば、ループアーキテクチャではラウンド数に加え、初期転置、最終転置の数のクロックサイクルを要するのに対し、ループアンローリングアーキテクチャは1クロックサイクル、パイプラインアーキテクチャも1クロックサイクル毎に出力を得ることができるので、1クロックサイクルとみなすことができる。304はアーキテクチャ記述である。アーキテクチャ記述304は、該アーキテクチャの動作を、例えばRTLの抽象度でHDL記述されたものである。ただし、アーキテクチャ記述304中で、部分回路データベースに登録されている部分回路に関しては、入出力の定義のみがなされているものとする。305はゲート数評価関数である。ゲート数評価関数305はアーキテクチャ全体のゲート数を評価するための関数である。アーキテクチャの構造が決まれば、アーキテクチャで使用する部分回路の種類と数は一意に求めることができ、アーキテクチャ全体のゲート数は構成する全部分回路のゲート数の総和により見積もることができる。ゲート数評価関数305は、アーキテクチャを構成する全部分回路についての、部分回路データベース中の部分回路データにおけるゲート数205を変数とする加算として定義することができる。部分回路データベースにある特定の部分回路データ201のゲート数205をゲート数評価関数305に代入して評価されたアーキテクチャ全体のゲート数を以下では評価ゲート総数と呼ぶ。306は動作周波数評価関数である。動作周波数評価関数306は該アーキテクチャの最高動作周波数を評価するための関数である。最高動作周波数は、後述するクリティカルパスの最長遅延時間の逆数として求めることができる。クリティカルパスは、アーキテクチャ中の回路入力―レジスタ間、回路入力―回路出力間、レジスタ―回路出力間、レジスタ―レジスタ間のいずれかのパスのうち、最も遅延時間が大きくなるパスを指す。パスの遅延時間はパスを通過する各部分回路の最長遅延時間の和により見積もることができる。アーキテクチャの構造が決まれば、クリティカルパスの候補となるパスはアーキテクチャの構造や既存の実装から予測することができる。例えば、S−boxは他の部分回路と比較して最長遅延時間が大きいため、S−boxを含むパスはクリティカルパスとなる可能性が高い。動作周波数評価関数306は、該アーキテクチャに依存したクリティカルパスの候補となるパスについて部分回路データベース中の部分回路データにおける最長遅延時間206を変数とする加算を求め、該パスの最長遅延時間の最大値を求め、該最大値の逆数を取る関数として定義することができる。部分回路データベースにある特定の部分回路データ201の最高遅延時間206を動作周波数評価関数306に代入して評価されたアーキテクチャの最高動作周波数を以下では評価最高動作周波数と呼ぶ。307はスループット評価関数である。スループット評価関数307は該アーキテクチャのスループットを評価するための関数である。スループットは、1ブロックを構成するビット数(DESの場合は64)を、クリティカルパスの最長遅延時間と1ブロック処理に要するクロックサイクルとの積で割ることにより見積もることができる。スループット評価関数307は、1ブロックを構成するビット数と動作周波数評価関数306との積を実行サイクル303で割る関数として定義することができる。部分回路データベースにある特定の部分回路データ201の最高遅延時間206をスループット評価関数307に代入して評価されたアーキテクチャのスループットを以下では評価スループットと呼ぶ。
【0053】
図4は、データ探索部106の動作を示すフローチャートである。
【0054】
図4において、まず、アーキテクチャデータベースに登録されている全てのアーキテクチャに対して、アーキテクチャデータベースに登録されている該アーキテクチャに関するアーキテクチャデータ301の実行サイクル303と動作周波数105の逆数との積に、DESにおける1ブロックを構成するビット数64を乗じた値を計算する。該計算値がスループット104以上である場合は、該アーキテクチャを候補アーキテクチャ集合に追加する(S1)。ステップS1を実行後、候補アーキテクチャ集合が空集合である場合は実装不可能であるためエラーを返して終了し、それ以外の場合はアルゴリズムを続行する(S2)。候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号302のアーキテクチャデータベースを使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号202を有する部分回路データ201の中からゲート数205の値が最も大きい部分回路データを検索し、該部分回路データを使用して評価ゲート総数と評価最高動作周波数と評価スループットとを計算する(S3)。候補アーキテクチャ集合のうち、ステップS3で求めた評価最高動作周波数が動作周波数105より小さい場合、または、ステップS3で求めた評価スループットがスループット104より小さい場合は、該アーキテクチャでは制約条件を満足しないため、候補アーキテクチャ集合から除外する。候補アーキテクチャ集合が空集合となった場合は、エラーを返して終了し、それ以外の場合はアルゴリズムを続行する(S4)。
【0055】
候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号302のアーキテクチャデータベースを使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号202を有す部分回路データ201の中からゲート数205の値が最も小さい部分回路データを検索し、該部分回路データを使用して評価ゲート総数と評価最高動作周波数と評価スループットとを計算する(S5)。
【0056】
候補アーキテクチャ集合のうち、ステップS3で求めた評価動作周波数が動作周波数105より大きく、かつ、ステップS3で求めた評価スループットがスループット104より大きい場合は、該アーキテクチャのアーキテクチャデータ301のアーキテクチャ識別番号301と、該アーキテクチャを構成する全ての部分回路についての部分回路データ201の回路種別番号202とシリアルナンバ203を返す。前記の条件を満たすアーキテクチャが複数ある場合は、評価ゲート総数が最小となるアーキテクチャについて前記と同様のものを返す。前記の条件を満たすアーキテクチャがない場合は、次のステップに進む(S6)。候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの中から、ゲート総数が現在の値より大きくなり、かつ増大幅が最も小さくなる部分回路データ201を検索し、該部分回路データを使用して評価ゲート総数、評価最高動作周波数、評価スループットを計算して、ステップS6に戻る(S7)。回路生成部108では、データ探索部106より得られたアーキテクチャ識別番号301のアーキテクチャデータ301からアーキテクチャ記述304を取得し、データ探索部106より得られた回路種別番号202とシリアルナンバ203の回路データ201から回路記述204を取得して、マージすることにより、暗号回路107を合成する。
【0057】
以上のように本実施の形態によれば、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースを格納する第1のデータベース部101と、選択しうるアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを格納する第2のデータベース部102と、スループットと動作周波数とを入力するユーザー入力部103と、ユーザー入力部103においてスループットと動作周波数とを入力したとき、部分回路データベースとアーキテクチャデータベースとから、暗号アルゴリズムを用いて、最小ゲート数となる部分回路とアーキテクチャとを探索するデータ探索部106と、選択アルゴリズムにおける探索結果から暗号回路を生成する回路生成部108とを有することにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつゲート数が最小となる暗号回路を生成することができるので、暗号アルゴリズムのハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる。
【0058】
(実施の形態2)
一般的に暗号アルゴリズムは暗号モードと呼ばれる使用方法で利用される。暗号モードによっては、暗号処理のみを実装し、復号処理が不要である。例えば、米国国立標準技術研究所(以下、「NIST」と記載する)が推奨している暗号モードのうち、ECBモード、CBCモードは復号処理を必要とするが、CFBモード、OFBモードは復号処理を必要としない。復号処理を必要としない暗号モードを利用する場合、暗号回路実装の際、復号処理を実装しないことにより、回路性能の向上することができる。
【0059】
図5は、本発明の実施の形態2による暗号回路設計装置を示すブロック図である。
【0060】
図5において、502はアーキテクチャデータベースを格納するデータベース部である。データベース502格納のアーキテクチャデータベースは、暗号回路の選択しうる全てのアーキテクチャに対して、回路属性および復号処理の有無を、後述するアーキテクチャデータとして保持する。506はデータ探索部である。データ探索部506は、ユーザー入力部103からデータを入力し、データベース部101格納の部分回路データベースとデータベース部502格納のアーキテクチャデータベースとから、ユーザー入力部103で与えられる制約条件を満足し、かつゲート数最小となる暗号回路となるデータを探索する。510は暗号アルゴリズムで使用する暗号モードである。
【0061】
図6は、データベース部502格納のアーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【0062】
図6において、601はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータから構成される。602は復号有無情報である。復号有無情報602は、アーキテクチャデータ601に該当するアーキテクチャ内に復号処理があるか否かを示す情報である。
【0063】
図7は、データ探索部506の動作を示すフローチャートである。
【0064】
図7において、まず、暗号モード510を参照し、復号処理が必要か否かを判定する。アーキテクチャデータベースに登録されている全てのアーキテクチャに対して、アーキテクチャデータ601の復号有無情報602を検索し、復号処理が必要な暗号モードの場合は復号処理が有るアーキテクチャを、復号処理が不要な暗号モードの場合は復号処理が無いアーキテクチャを、それぞれ候補アーキテクチャ集合に登録する。次に、候補アーキテクチャ集合に登録されている全てのアーキテクチャに対して、アーキテクチャデータベースに登録されている該アーキテクチャに関するアーキテクチャデータ601の実行サイクル303と動作周波数105の逆数との積に、DESにおける1ブロックを構成するビット数64を乗じた値を計算する。該計算値がスループット104以上でない場合は、該アーキテクチャを候補アーキテクチャ集合から除外する(S11)。ステップS12〜S17における処理動作は、図4のステップS2〜S7における処理動作と同様である。
【0065】
以上のように本実施の形態によれば、ユーザー入力部103における入力として暗号モードを加え、部分回路データベースとアーキテクチャデータベースとは、暗号のみを処理する回路と暗号・復号の双方を処理する回路とを有し、データ探索部506は、入力された暗号モードにより、暗号アルゴリズムを用いて暗号モード処理を実現することにより、暗号モードを用いて、暗号回路が満たすべきスループットと動作周波数を満足し、かつ必要最小限のゲート数となる暗号回路を生成することができるので、暗号アルゴリズムのハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる。
【0066】
(実施の形態3)
使用する暗号モードによっては、実際の通信で使用するビット数が暗号のブロック長より小さいものがある。例えばCFBモードでは、通信に使用するビット数は暗号のブロック長より小さくかつ可変である。前記の場合、処理性能は通信に使用するビット数に依存するため、通信に使用するビット数により、適当な暗号回路は異なる。そこで、通信に使用するビット数をユーザー入力部から入力データとして与えることにより、最適な暗号回路を探索することができる。
【0067】
図8は、本発明の実施の形態3による暗号回路設計装置を示すブロック図である。
【0068】
図8において、802はアーキテクチャデータベースを格納するデータベース部である。データベース部802格納のアーキテクチャデータベースは、暗号回路の選択しうる全てのアーキテクチャに対して、回路属性および復号処理の有無を、後述するアーキテクチャデータとして保持する。806はデータ探索部である。データ探索部806は、ユーザー入力部103からのデータを入力し、データベース部101格納の部分回路データベースとデータベース部802格納のアーキテクチャデータベースとから、ユーザー入力部103で与えられる制約条件を満足し、かつゲート数最小となる暗号回路となるデータを探索する。810は通信で使用するビット数である。
【0069】
図9は、アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【0070】
図9において、901はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータから構成される。902はスループット評価関数である。スループット評価関数902は該アーキテクチャのスループットを評価するための関数である。スループットは、通信で使用するビット数を、クリティカルパスの最長遅延時間と1ブロック処理に要するクロックサイクルとの積で割ることにより見積もることができる。スループット評価関数307は、通信で使用するビット数と動作周波数評価関数306との積を実行サイクル303で割る関数として定義することができる。部分回路データベースにある特定の部分回路データ201の最高遅延時間206と通信で使用するビット数とをスループット評価関数902に代入して評価されたアーキテクチャのスループットを以下では評価スループットと呼ぶ。
【0071】
図10は、データ探索部806の動作を示すフローチャートである。
【0072】
図10において、まず、暗号モード510を参照し、通信に使用するビット数を決定する。例えば、ECBモード、CBCモードでは64ビット、CFBモードでは通信ビット数810の値、OFBモードでは1ビットなどである。アーキテクチャデータ901中のスループット評価関数902では、ここで決まった値を通信で使用するビット数として使用する。そして、復号処理が必要か否かを判定する。アーキテクチャデータベースに登録されている全てのアーキテクチャに対して、アーキテクチャデータ601の復号有無情報602を検索し、復号処理が必要な暗号モードの場合は復号処理が有るアーキテクチャを、復号処理が不要な暗号モードの場合は復号処理が無いアーキテクチャを、それぞれ候補アーキテクチャ集合に登録する。次に、候補アーキテクチャ集合に登録されている全てのアーキテクチャに対して、評価スループットを計算する。評価スループットがスループット104以上でない場合は、該アーキテクチャを候補アーキテクチャ集合から除外する(S21)。ステップS22における処理動作は図7のステップS11と同様であり、ステップS23〜S28における処理動作は図4のステップS2〜S7と同様である。
【0073】
以上のように本実施の形態によれば、通信に使用されるデータ長がブロック暗号のブロック長より短い場合、ユーザー入力部103における入力として通信に使用されるデータ長を加えることにより、実際に通信で使用するビット数を考慮に入れ、かつゲート数が最小となる暗号回路を生成することができるので、暗号アルゴリズムのハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる。
【0074】
(実施の形態4)
暗号アルゴリズムによっては、共通鍵の鍵長が可変であるものもある。例えばDESは64ビットで固定であるが、ADVANCED ENCRYPTIONSTANDARD(以下、「AES」と記載する)では128ビット、192ビット、256ビットの中から一つを選択することができる。AESでは鍵長によってラウンド関数の実行回数が異なるなど、アルゴリズムに若干の変化が生じする。そのため、複数の鍵長に対応するための回路実装のオーバーヘッドは非常に大きなものになる。そこで、アプリケーションに必要な鍵長のみを実装することにより、暗号回路の回路性能を向上させることができる。
【0075】
図11は、本発明の実施の形態4による暗号回路設計装置を示すブロック図である。
【0076】
図11において、1102はアーキテクチャデータベースを格納するデータベース部である。データベース部1102格納のアーキテクチャデータベースは、暗号回路の選択しうる全てのアーキテクチャに対して、回路属性および対応鍵長を、後述するアーキテクチャデータとして保持する。1106はデータ探索部である。データ探索部1106は、ユーザー入力部103からのデータを入力し、データベース部101格納の部分回路データベースとデータベース部1102格納のアーキテクチャデータベースとから、ユーザー入力部103で与えられる制約条件を満足し、かつゲート数最小となる暗号回路となるデータを探索する。1110は使用する鍵長である。
【0077】
図12は、アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【0078】
図12において、1201はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータから構成される。1202は鍵長情報である。鍵長情報1202は、アーキテクチャデータ1201に該当するアーキテクチャが実行可能な鍵長を示す情報である。
【0079】
図13はデータ探索部1106の動作を示すフローチャートである。
【0080】
図13において、まず、アーキテクチャデータベースに登録されている全てのアーキテクチャに対して、アーキテクチャデータ1101の鍵長情報1202を検索し、鍵長1110に合致したアーキテクチャを候補アーキテクチャ集合に登録する。次に、候補アーキテクチャ集合に登録されている全てのアーキテクチャに対して、アーキテクチャデータベース502に登録されている該アーキテクチャに関するアーキテクチャデータ601の実行サイクル303と動作周波数105の逆数との積に、1ブロックを構成するビット数を乗じた値を計算する。該計算値がスループット104以上でない場合は、該アーキテクチャを候補アーキテクチャ集合から除外する(S31)。ステップS32〜S37における処理動作は図4のステップS2〜S7における処理動作と同様である。
【0081】
以上のように本実施の形態によれば、共通鍵のデータ長を複数有し、ユーザー入力部103において共通鍵のデータ長を入力として加えることにより、使用する鍵長の処理に必要最小限のゲート数による暗号回路の生成を可能にするので、暗号アルゴリズムのハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる。
【0082】
(実施の形態5)
回路を実装する場合、回路の性能を測る指標として、面積、最高動作周波数、処理性能とともに、消費電力も非常に重要になっている。消費電力を抑えることは、機器の発熱防止、携帯機器などバッテリー駆動の機器においてバッテリー持続時間を長くすることにつながる。そのため、回路を実装する上で、低消費電力化を図ることは今後動作ますます重要となる。
【0083】
図14は、本発明の実施の形態5による暗号回路設計装置を示すブロック図である。
【0084】
図14において、1401は部分回路データベースを格納するデータベース部である。データベース部1401格納の部分回路データベースは、暗号回路の実装可能な全ての部分回路に対して、回路属性を後述する部分回路データとして保持する。1402はアーキテクチャデータベースを格納するデータベース部である。データベース部1402格納のアーキテクチャデータベース1402は、暗号回路の選択しうる全てのアーキテクチャに対して回路属性を、後述するアーキテクチャデータとして保持する。1406はデータ探索部である。データ探索部1406は、ユーザー入力部103からのデータを入力し、データベース部1401格納の部分回路データベースとデータベース部1402格納のアーキテクチャデータベースとから、ユーザー入力部103で与えられる制約条件を満足し、かつゲート数最小または消費電力最小となる暗号回路となるデータを探索する。1410はゲート数である。ゲート数1410は暗号回路のゲート数の上限に関する制約条件を与える。1411は消費電力である。消費電力1411は暗号回路の平均消費電力の上限に関する制約条件を与える。1412は最適化項目である。最適化項目1412は本設計手法で最適化を図るべき指標を与える。通常アプリケーションにおいては、動作周波数とスループットは必ず満たさなければならない制約である。ゲート数と消費電力は一般にトレードオフ関係にあるため、ゲート数削減と消費電力削減を同時に図ることは困難である。アプリケーションに応じて、ゲート数削減を行うべきか消費電力削減を行うべきかを選択する必要がある。
【0085】
図15は、部分回路データベースを構成する部分回路データの構造を示すデータ構造図である。
【0086】
図15において、1501は部分回路データである。部分回路データベースは複数の異なる部分回路データから構成される。1502は消費電力である。消費電力1502は該部分回路を実装した場合に該部分回路が消費する電力を保持する。消費電力1502の値は、実装プロセスにおける実測値あるいは過去の実装実績からの見積もりなどにより得られたデータであり、周波数あたりの消費電力として与えられる。
【0087】
図16は、アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【0088】
図16において、1601はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータから構成される。1602は消費電力評価関数である。消費電力評価関数1602はアーキテクチャ全体の消費電力を評価するための関数である。アーキテクチャ全体の消費電力は、構成する全部分回路の消費電力の総和と動作周波数との積より見積もることができる。消費電力評価関数1602は、アーキテクチャを構成する全部分回路についての、部分回路データベース中の部分回路データにおける消費電力205を変数とする加算の和と、動作周波数105との乗算として定義することができる。部分回路データベースにある特定の部分回路データ1601の消費電力1502と動作周波数105とを消費電力評価関数1602に代入して評価されたアーキテクチャ全体の消費電力を以下では評価消費電力と呼ぶ。
【0089】
図17はデータ探索部1406の動作を示すフローチャートである。
【0090】
図17において、まず、最適化項目1412を参照し、ゲート数削減の最適化か消費電力削減の最適化かを決定する。ゲート数削減の最適化の場合、制約条件として消費電力1411を加える。消費電力削減の場合、制約条件としてゲート数1410を加える(S41)。ステップS42、ステップS43を実行後(ステップS42、ステップS43における処理動作は図4のステップS1、S2における処理動作と同様である)、候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号302のアーキテクチャデータ1602を使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号202を有す部分回路データ1501の中からゲート数1410または消費電力1411の値が最も大きい部分回路データを検索し、該部分回路データを使用して評価ゲート総数または評価消費電力と評価最高動作周波数と評価スループットとを計算する(S44)。ゲート数削減の最適化の場合、候補アーキテクチャ集合のうち、ステップS44で求めた評価最高動作周波数が動作周波数105より小さい場合、または、ステップS44で求めた評価スループットがスループット104より小さい場合は、該アーキテクチャでは制約条件を満足しないため候補アーキテクチャ集合から除外する。候補アーキテクチャ集合が空集合となった場合は、エラーを返し終了し、それ以外の場合はアルゴリズムを続行する(S45)。候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号302のアーキテクチャデータベースを使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号202を有す部分回路データ201の中からゲート数205または消費電力1502の値が最も小さい部分回路データを検索し、該部分回路データを使用して評価ゲート総数または評価消費電力と評価最高動作周波数と評価スループットとを計算する(S46)。候補アーキテクチャ集合のうち、ステップS44で求めた評価動作周波数が動作周波数105より大きく、かつ、ステップS44で求めた評価スループットがスループット104より大きくて、ステップS44で求めた評価ゲート数がゲート数1410より小さい、あるいは、ステップS44で求めた評価消費電力が消費電力1411より小さい場合は、該アーキテクチャのアーキテクチャデータ1601のアーキテクチャ識別番号301と、該アーキテクチャを構成する全ての部分回路についての部分回路データ1501の回路種別番号202とシリアルナンバ203を返す。前記の条件を満たすアーキテクチャが複数ある場合は、評価ゲート総数または評価消費電力が最小となるアーキテクチャについて前記と同様のものを返す。前記の条件を満たすアーキテクチャがない場合は、次のステップに進む(S47)。候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの中から、評価ゲート総数または評価消費電力が現在の値より大きくなり、かつ増大幅が最も小さくなる部分回路データ1501を検索し、該部分回路データ1501を使用して評価ゲート総数、評価消費電力、評価最高動作周波数、評価スループットを計算して、ステップS47に戻る(S48)。
【0091】
以上のように本実施の形態によれば、部分回路データベースとアーキテクチャデータベースとに消費電力に関する情報を付加することにより、暗号回路の消費電力を最小消費電力とすることができる。
【0092】
(実施の形態6)
バッテリー駆動の機器において、バッテリー持続時間を長くするためには、消費電力と実行サイクル数との積であるエネルギーを削減しなければならない。消費電力削減は、実行サイクル数の増大につながるため、エネルギー削減に効果があるとは必ずしも言えない。そのため、バッテリー駆動の機器搭載の回路を実装する上で、省エネルギー化を図ることは今後動作ますます重要となる。
【0093】
図18は、本発明の実施の形態6による暗号回路設計装置を示すブロック図である。
【0094】
図18において、1802はアーキテクチャデータベースを格納するデータベース部である。データベース部1802格納のアーキテクチャデータベースは、暗号回路の選択しうる全てのアーキテクチャに対して回路属性を、後述するアーキテクチャデータとして保持する。1806はデータ探索部である。データ探索部1806は、ユーザー入力部103からのデータを入力し、データベース部1401格納の部分回路データベースとデータベース部1802格納のアーキテクチャデータベースとから、ユーザー入力部103で与えられる制約条件を満足し、かつゲート数最小または消費電力最小またはエネルギー最小となる暗号回路となるデータを探索する。1811はエネルギーである。エネルギー1811は、暗号回路の1ブロック実行あたりに消費するエネルギーの上限に関する制約条件を与える。1812は最適化項目である。最適化項目1812は本設計手法で最適化を図るべき指標を与える。通常アプリケーションにおいては、動作周波数とスループットは必ず満たさなければならない制約である。ゲート数と消費電力とエネルギーとは一般にトレードオフ関係にあるため、ゲート数削減と消費電力削減とエネルギー削減とを同時に図ることは困難である。アプリケーションに応じて、ゲート数削減を行うべきか消費電力削減を行うべきかエネルギー削減を行うべきかを選択する必要がある。
【0095】
図19は、アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【0096】
図19において、1901はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータから構成される。1902はエネルギー評価関数である。エネルギー評価関数1902はアーキテクチャにおける1ブロック処理あたりのエネルギーを評価するための関数である。1ブロック処理あたりのエネルギーは平均消費電力と実行クロックサイクルとの積として見積もることができる。エネルギー評価関数1902は、アーキテクチャを構成する全部分回路についての、部分回路データベース中の部分回路データ1501における消費電力1502を変数とする加算の和と、動作周波数105と該アーキテクチャのアーキテクチャデータ1901中の実行サイクル303との積との乗算として定義することができる。部分回路データベースにある特定の部分回路データ1501の消費電力1502、動作周波数105、アーキテクチャデータ1901中の実行サイクル303をエネルギー評価関数1902に代入して評価された値を以下では評価エネルギーと呼ぶ。
【0097】
図20はデータ探索部1806の動作を示すフローチャートである。
【0098】
図20において、最適化項目1812を参照し、ゲート数削減の最適化か消費電力削減かエネルギー削減の最適化を決定する。ゲート数削減の最適化の場合、制約条件として消費電力1411、エネルギー1811を加える。消費電力削減の場合、制約条件としてゲート数1410、エネルギー1811を加える。エネルギー削減の場合、制約条件としてゲート数1410、消費電力1411を加える(S51)。ステップS52、ステップS53を実行後(ステップS52、ステップS53における処理動作は図4のステップS1、S2における処理動作と同様である)、候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号302のアーキテクチャデータベースを使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号202を有す部分回路データ201の中からゲート数1410または消費電力1411またはエネルギー1811の値が最も大きい部分回路データを検索し、該部分回路データを使用して評価ゲート総数、評価消費電力、評価エネルギー、評価最高動作周波数、評価スループットを計算する(S54)。ステップS55実行後(ステップS55における処理動作は図4のステップS4における処理動作と同様である)、候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号302のアーキテクチャデータベースを使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号202を有する部分回路データ201の中からゲート数205または消費電力1502の値が最も小さい部分回路データを検索し、該部分回路データを使用して評価ゲート総数または評価消費電力または評価エネルギー、評価最高動作周波数、評価スループットを計算する(S56)。候補アーキテクチャ集合のうち、ステップS56で求めた評価動作周波数が動作周波数105より大きく、かつ、ステップS56で求めた評価スループットがスループット104より大きくて、ステップS56で求めた評価ゲート数がゲート数1410より小さい、あるいは、ステップS56で求めた評価消費電力が消費電力1411より小さい場合、あるいは、ステップS56で求めた評価エネルギーがエネルギー1811より小さい場合は、該アーキテクチャのアーキテクチャデータ1901のアーキテクチャ識別番号301と、該アーキテクチャを構成する全ての部分回路についての部分回路データ1501の回路種別番号202とシリアルナンバ203を返す。前記の条件を満たすアーキテクチャが複数ある場合は、評価ゲート総数または評価消費電力または評価エネルギーが最小となるアーキテクチャについて前記と同様のものを返す。前記の条件を満たすアーキテクチャがない場合は、次のステップに進む(S57)。候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの中から、評価ゲート総数または評価消費電力または評価エネルギーが現在の値より大きくなり、かつ増大幅が最も小さくなる部分回路データ1501を検索し、該部分回路データを使用して評価ゲート総数、評価消費電力、評価エネルギー、評価最高動作周波数、評価スループットを計算して、ステップS57に戻る(S58)。
【0099】
以上のように本実施の形態によれば、アーキテクチャベースに消費エネルギーに関する情報を付加することにより、暗号回路の消費エネルギーを最小消費エネルギーとすることができる。
【0100】
(実施の形態7)
ブロック暗号方法には上記のようにDES、AES等複数の方法が存在し、アプリケーションによっては複数の暗号方法へ対応がなされているものもある。ブロック暗号は基本的にラウンド関数を繰り返し実行する形態になっているため、回路性能最適化を図るための探索アルゴリズムは同じで、部分回路、アーキテクチャに関する情報を変更すれば、複数の暗号方法に対応することができる。
【0101】
図21は、本発明の実施の形態7による暗号回路設計装置を示すブロック図である。なお、以下では例として、2つの暗号アルゴリズムについて述べるが、それは本発明の範囲を制限するものではない。
【0102】
図21において、2106はデータ探索部である。データ探索部2106は、ユーザー入力部103からのデータを入力し、後述するデータベース部2121格納の部分回路データベースと、データベース部2122格納のアーキテクチャデータベースと、データベース部2131格納の部分回路データベースと、データベース部2132格納のアーキテクチャデータベースとから、ユーザー入力部103で与えられる制約条件を満足し、かつゲート数最小となる暗号回路となるデータを探索する。2121は第1の部分回路データベースを格納するデータベース部である。第1の部分回路データベースは、ある暗号アルゴリズムを実現する回路の実装可能な全ての部分回路に対する複数の異なる部分回路データ201から構成される。2122は第1のアーキテクチャデータベースを格納するデータベース部である。第1のアーキテクチャデータベースは、ある暗号を実現する回路の選択しうる全てのアーキテクチャに対する複数の異なるアーキテクチャデータ301から構成される。2131は第2の部分回路データベースを格納するデータベース部である。第2の部分回路データベースは、別の暗号を実現する回路の実装可能な全ての部分回路に対する複数の異なる部分回路データ201から構成される。2132は第2のアーキテクチャデータベースを格納するデータベース部である。第2のアーキテクチャデータベースは、別の暗号を実現する回路の選択しうる全てのアーキテクチャに対する複数の異なるアーキテクチャデータ301から構成される。
【0103】
図22はデータ探索部2106の動作を示すフローチャートである。
【0104】
図22において、暗号アルゴリズム2110を参照し、対象とする暗号を決定する。2つの部分回路データベース、アーキテクチャデータベースから、該暗号に対するデータベースを選択して、以下のアルゴリズムで使用する(S61)。ステップS62〜S68における処理動作は、図4のステップS1〜S7における処理動作と同様である。
【0105】
以上のように本実施の形態によれば、複数の暗号のそれぞれに対するデータベースを有し、暗号回路設計のための暗号をユーザー入力部で指定することにより、複数の暗号に対して実施の形態1の作用効果と同様の作用効果を呈することができる。
【0106】
【発明の効果】
以上説明したように本発明の請求項1に記載の暗号回路設計装置によれば、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設計装置であって、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースを格納する第1のデータベース部と、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを格納する第2のデータベース部と、スループットと動作周波数とを入力するユーザー入力部と、入力した動作周波数において入力したスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目的とする探索アルゴリズムに基づいて、必要な部分回路を第1のデータベース部から探索し、必要なアーキテクチャを第2のデータベース部から探索するデータ探索部と、データ探索部による探索結果から暗号回路を生成する回路生成部とを有することにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0107】
請求項2に記載の暗号回路設計装置によれば、請求項1に記載の暗号回路設計装置において、ユーザー入力部における入力として暗号モードを加え、第1のデータベース部に格納されている部分回路データベースは、暗号化のみを処理するための部分回路と暗号化・復号化の双方を処理するための部分回路を有し、第2のデータベース部に格納されているアーキテクチャデータベースは、暗号化のみを処理するためのアーキテクチャと暗号化・復号化の双方を処理するためのアーキテクチャを有し、データ探索部は、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したスループットにより動作可能とし、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索するにより、所定の暗号モードで暗号を実行する暗号回路が、満たすべきスループットと動作周波数を満足し、かつ必要最小限のゲート数となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0108】
請求項3に記載の暗号回路設計装置によれば、請求項2に記載の暗号回路設計装置において、一回の通信に使用されるデータ長が共通鍵ブロック暗号のブロック長より短い場合、ユーザー入力部における入力として通信で使用するデータ長を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したデータ長による通信で入力したスループットによる動作が可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することにより、実際に通信で使用するビット数を考慮に入れ、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0109】
請求項4に記載の暗号回路設計装置によれば、請求項1に記載の暗号回路設計装置において、共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、ユーザー入力部における入力として共通鍵の長さを加え、データ探索部は、暗号回路が、入力した共通鍵の長さにおける共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより実行可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することにより、使用する共通鍵の長さである共通鍵ブロック暗号の処理に必要最小限のゲート数による暗号回路の生成を可能にするので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0110】
請求項5に記載の暗号回路設計装置によれば、請求項1に記載の暗号回路設計装置において、部分回路データベースに、選択可能な部分回路に関して、消費電力の情報を加え、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を、動作周波数においてスループットにより実行可能で、かつ最小消費電力とすることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費電力が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0111】
請求項6に記載の暗号回路設計装置によれば、請求項5に記載の暗号回路設計装置において、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより実行可能で、かつ最小消費エネルギーとすることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費エネルギーが最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0112】
請求項7に記載の暗号回路設計装置によれば、請求項1に記載の暗号回路設計装置において、複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、第1のデータベース部に部分回路データベースが、第2のデータベース部にアーキテクチャデータベースがそれぞれ格納され、ユーザー入力部における入力として、回路で実現する共通鍵ブロック暗号名を加え、データ探索部は、暗号回路が、入力された名称の共通鍵ブロック暗号を、入力された動作周波数において入力されたスループットにより実行可能で、かつ最小ゲート数とすることを目的とする探索アルゴリズムに基づいて、第1のデータベース部と第2のデータベース部を探索することとしたことにより、複数の暗号に対して請求項1の作用と同様の作用を呈することができるという有利な効果が得られる。
【0113】
請求項8に記載の暗号回路設方法によれば、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設方法であって、暗号回路のスループットと動作周波数とを入力すると、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースと、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを使用し、入力した動作周波数において入力したスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目標とする、アルゴリズムとして記述された探索方法に基づいて、必要なアーキテクチャをアーキテクチャデータベースから探索し、必要な部分回路を部分回路データベースから探索し、探索結果から暗号回路を生成することとしたことにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0114】
請求項9に記載の暗号回路設計方法によれば、請求項8に記載の暗号回路設計方法において、入力として暗号モードを加え、部分回路データベースは暗号化のみを処理する部分回路と暗号化・復号化の双方を処理する部分回路を有し、アーキテクチャデータベースは、暗号化のみを処理するアーキテクチャと暗号化・復号化の双方を処理するアーキテクチャを有し、暗号回路が、共通鍵ブロック暗号を暗号モードで実行し、かつ動作周波数においてスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することにより、所定の暗号モードで暗号を実行する暗号回路が、満たすべきスループットと動作周波数を満足し、かつ必要最小限のゲート数となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0115】
請求項10に記載の暗号回路設計方法によれば、請求項9に記載の暗号回路設計方法において、一回の通信に使用されるデータ長が、共通鍵ブロック暗号のブロック長より短い場合、入力として通信で使用するデータ長を加え、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したデータ長による通信で入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたことにより、実際に通信で使用するビット数を考慮に入れ、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0116】
請求項11に記載の暗号回路設計方法によれば、請求項8に記載の暗号回路設計方法において、共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、入力として共通鍵の長さを加え、暗号回路が、共通鍵の長さにおける共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたことにより、使用する共通鍵の長さである共通鍵ブロック暗号の処理に必要最小限のゲート数による暗号回路の生成を可能にするので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる有利な効果が得られる。
【0117】
請求項12に記載の暗号回路設計方法によれば、請求項8に記載の暗号回路設計方法において、部分回路データベースに、選択可能な部分回路に関して、消費電力に関する情報を加え、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表される情報を加え、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小消費電力となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費電力が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0118】
請求項13に記載の暗号回路設計方法によれば、請求項12に記載の暗号回路設計方法において、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小消費エネルギーとなることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたことにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費エネルギーが最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【0119】
請求項14に記載の暗号回路設計方法によれば、請求項8に記載の暗号回路設計方法において、複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、部分回路データベースとアーキテクチャデータベースを有し、入力として回路で実現する共通鍵ブロック暗号名を加え、暗号回路が、入力した共通鍵ブロック暗号名の共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたことにより、複数の暗号に対して請求項8の作用と同様の作用を呈することができるという有利な効果が得られる。
【図面の簡単な説明】
【図1】本発明の実施の形態1による暗号回路設計装置を示すブロック図
【図2】部分回路データベースを構成する部分回路データの構造を示すデータ構造図
【図3】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図4】データ探索部の動作を示すフローチャート
【図5】本発明の実施の形態2による暗号回路設計装置を示すブロック図
【図6】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図7】データ探索部の動作を示すフローチャート
【図8】本発明の実施の形態3による暗号回路設計装置を示すブロック図
【図9】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図10】データ探索部の動作を示すフローチャート
【図11】本発明の実施の形態4による暗号回路設計装置を示すブロック図
【図12】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図13】データ探索部の動作を示すフローチャート
【図14】本発明の実施の形態5による暗号回路設計装置を示すブロック図
【図15】部分回路データベースを構成する部分回路データの構造を示すデータ構造図
【図16】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図17】データ探索部の動作を示すフローチャート
【図18】本発明の実施の形態6による暗号回路設計装置を示すブロック図
【図19】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図20】データ探索部の動作を示すフローチャート
【図21】本発明の実施の形態7による暗号回路設計装置を示すブロック図
【図22】データ探索部の動作を示すフローチャート
【符号の説明】
101、102、502、802、1102、1401、1402、1501、1802、2121、2122、2131、2132 データベース部
103 ユーザー入力部
104 スループット
105 動作周波数
106、506、806、1106、1406、1806、2106 データ探索部
107 暗号回路
108 回路生成部
201 部分回路データ
202 回路種別番号
203 シリアル・ナンバ
204 回路記述
205 ゲート数
206 最長遅延時間
301、601、901、1201、1601、1901 アーキテクチャデータ
302 アーキテクチャ種別番号
303 実行サイクル
304 アーキテクチャ記述
305 ゲート数評価関数
306 動作周波数評価関数
307、902 スループット評価関数
510 暗号モード
602 復号有無情報
810 通信ビット数
1110 鍵長
1202 鍵長情報
1410 ゲート数
1411、1502 消費電力
1412、1812 最適化項目
1602 消費電力評価関数
1811 エネルギー
1902 エネルギー評価関数
2110 暗号アルゴリズム

Claims (14)

  1. ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設計装置であって、
    選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースを格納する第1のデータベース部と、
    選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを格納する第2のデータベース部と、
    スループットと動作周波数とを入力するユーザー入力部と、
    前記動作周波数において前記スループットによる動作を可能とし、かつ最小ゲート数となる前記暗号回路を実現することを目的とする探索アルゴリズムに基づいて、必要な部分回路を前記第1のデータベース部から探索し、必要なアーキテクチャを前記第2のデータベース部から探索するデータ探索部と、
    前記データ探索部による探索結果から前記暗号回路を生成する回路生成部とを有することを特徴とする暗号回路設計装置。
  2. 前記ユーザー入力部における入力として暗号モードを加え、
    前記第1のデータベース部に格納されている部分回路データベースは、暗号化のみを処理するための部分回路と暗号化・復号化の双方を処理するための部分回路を有し、
    前記第2のデータベース部に格納されているアーキテクチャデータベースは、暗号化のみを処理するためのアーキテクチャと暗号化・復号化の双方を処理するためのアーキテクチャを有し、
    前記データ探索部は、前記暗号回路が、前記共通鍵ブロック暗号を前記暗号モードで実行し、かつ前記動作周波数において前記スループットにより動作可能とし、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、前記第1のデータベース部と前記第2のデータベース部を探索することを特徴とする請求項1に記載の暗号回路設計装置。
  3. 一回の通信に使用されるデータ長が前記共通鍵ブロック暗号のブロック長より短い場合、
    前記ユーザー入力部における入力として通信で使用するデータ長を加え、
    前記データ探索部は、前記暗号回路が、前記共通鍵ブロック暗号を前記暗号モードで実行し、かつ前記動作周波数において前記データ長による通信で前記スループットによる動作が可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、前記第1のデータベース部と前記第2のデータベース部を探索することを特徴とする請求項2に記載の暗号回路設計装置。
  4. 前記共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、
    前記ユーザー入力部における入力として共通鍵の長さを加え、
    前記データ探索部は、前記暗号回路が、前記共通鍵の長さにおける前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、前記第1のデータベース部と前記第2のデータベース部を探索することを特徴とする請求項1に記載の暗号回路設計装置。
  5. 前記部分回路データベースに、選択可能な部分回路に関して、消費電力の情報を加え、
    前記アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、
    前記データ探索部は、前記暗号回路が、前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能で、かつ最小消費電力とすることを目的とする探索アルゴリズムに基づいて、前記第1のデータベース部と前記第2のデータベース部を探索することを特徴とする請求項1に記載の暗号回路設計装置。
  6. 前記アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、
    前記データ探索部は、前記暗号回路が、前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能で、かつ最小消費エネルギーとすることを目的とする探索アルゴリズムに基づいて、前記第1のデータベース部と前記第2のデータベース部を探索することを特徴とする請求項5に記載の暗号回路設計装置。
  7. 複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、第1のデータベース部に前記部分回路データベースが、第2のデータベース部に前記アーキテクチャデータベースがそれぞれ格納され、
    前記ユーザー入力部における入力として、回路で実現する共通鍵ブロック暗号名を加え、
    前記データ探索部は、前記暗号回路が、前記ユーザー入力部において入力された名称の共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能で、かつ最小ゲート数とすることを目的とする探索アルゴリズムに基づいて、前記第1のデータベース部と前記第2のデータベース部を探索することを特徴とする請求項1に記載の暗号回路設計装置。
  8. ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設方法であって、
    暗号回路のスループットと動作周波数とを入力すると、
    選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースと、
    選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを使用し、
    前記動作周波数において前記スループットによる実行を可能とし、かつ最小ゲート数となる前記暗号回路を実現することを目標とする、アルゴリズムとして記述された探索方法に基づいて、必要なアーキテクチャを前記アーキテクチャデータベースから探索し、必要な部分回路を前記部分回路データベースから探索し、
    前記探索結果から前記暗号回路を生成することを特徴とする暗号回路設計方法。
  9. 入力として暗号モードを加え、
    前記部分回路データベースは暗号化のみを処理する部分回路と暗号化・復号化の双方を処理する部分回路を有し、
    前記アーキテクチャデータベースは、暗号化のみを処理するアーキテクチャと暗号化・復号化の双方を処理するアーキテクチャを有し、
    前記暗号回路が、前記共通鍵ブロック暗号を前記暗号モードで実行し、かつ前記動作周波数において前記スループットにより実行可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項8に記載の暗号回路設計方法。
  10. 一回の通信に使用されるデータ長が、前記共通鍵ブロック暗号のブロック長より短い場合、
    入力として、通信で使用するデータ長を加え、
    前記暗号回路が、前記共通鍵ブロック暗号を前記暗号モードで実行し、かつ前記動作周波数において前記データ長による通信で前記スループットにより実行可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項9に記載の暗号回路設計方法。
  11. 前記共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、
    入力として、共通鍵の長さを加え、
    前記暗号回路が、前記共通鍵の長さにおける前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項8に記載の暗号回路設計方法。
  12. 前記部分回路データベースに、選択可能な部分回路に関して、消費電力に関する情報を加え、
    前記アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表される情報を加え、
    前記暗号回路が、前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能であり、かつ最小消費電力となることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項8に記載の暗号回路設計方法。
  13. 前記アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、
    前記暗号回路が、前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能であり、かつ最小消費エネルギーとなることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項12に記載の暗号回路設計方法。
  14. 複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、前記部分回路データベースと前記アーキテクチャデータベースを有し、
    入力として、回路で実現する共通鍵ブロック暗号名を加え、
    前記暗号回路が、入力された前記共通鍵ブロック暗号名の共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項8に記載の暗号回路設計方法。
JP2002347170A 2002-11-29 2002-11-29 暗号回路設計装置および暗号回路設計方法 Pending JP2004178507A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002347170A JP2004178507A (ja) 2002-11-29 2002-11-29 暗号回路設計装置および暗号回路設計方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002347170A JP2004178507A (ja) 2002-11-29 2002-11-29 暗号回路設計装置および暗号回路設計方法

Publications (1)

Publication Number Publication Date
JP2004178507A true JP2004178507A (ja) 2004-06-24

Family

ID=32707856

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002347170A Pending JP2004178507A (ja) 2002-11-29 2002-11-29 暗号回路設計装置および暗号回路設計方法

Country Status (1)

Country Link
JP (1) JP2004178507A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006013675A1 (ja) * 2004-08-02 2006-02-09 Matsushita Electric Industrial Co., Ltd. パイプラインadc開発方法、パイプラインadc開発装置、パイプラインadc開発プログラム、及び記録媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006013675A1 (ja) * 2004-08-02 2006-02-09 Matsushita Electric Industrial Co., Ltd. パイプラインadc開発方法、パイプラインadc開発装置、パイプラインadc開発プログラム、及び記録媒体

Similar Documents

Publication Publication Date Title
Lara-Nino et al. Lightweight hardware architectures for the present cipher in FPGA
Good et al. AES on FPGA from the fastest to the smallest
Mohd et al. Modeling and optimization of the lightweight HIGHT block cipher design with FPGA implementation
Mozaffari-Kermani et al. Efficient and high-performance parallel hardware architectures for the AES-GCM
Elbirt et al. An FPGA-based performance evaluation of the AES block cipher candidate algorithm finalists
Hodjat et al. Area-throughput trade-offs for fully pipelined 30 to 70 Gbits/s AES processors
Zhou et al. Efficient and high-throughput implementations of AES-GCM on FPGAs
Martino et al. SHA-2 acceleration meeting the needs of emerging applications: A comparative survey
Yuksel Universal hashing for ultra-low-power cryptographic hardware applications
Kaps et al. Energy scalable universal hashing
Ueno et al. High throughput/gate AES hardware architectures based on datapath compression
Windarta et al. Lightweight cryptographic hash functions: Design trends, comparative study, and future directions
KR20050078271A (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
Gierlichs et al. Susceptibility of eSTREAM candidates towards side channel analysis
Pirzada et al. Implementation of CMAC Authentication Algorithm on FPGA for Satellite Communication
Tillich et al. Area, delay, and power characteristics of standard-cell implementations of the AES S-box
Luo et al. [Retracted] Optimization of AES‐128 Encryption Algorithm for Security Layer in ZigBee Networking of Internet of Things
Sadeghi et al. Proposing an MILP-based method for the experimental verification of difference-based trails: application to SPECK, SIMECK
Singh et al. Compact and secure s-box implementations of aes—a review
KR100922728B1 (ko) Aes 암복호화 장치 및 암복호화 방법
Singh et al. Efficient VLSI architectures of LILLIPUT block cipher for resource-constrained RFID devices
Meurer et al. An Implementation of the AES cipher using HLS
JP2004178507A (ja) 暗号回路設計装置および暗号回路設計方法
Ahmed et al. New algorithm for wireless network communication security
Raja et al. Efficient hardware implementations of lightweight Simeck Cipher for resource-constrained applications