(57)【要約】【課題】暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる暗号回路設計装置を提供する。【解決手段】選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベース格納のデータベース部１０１と、選択可能なアーキテクチャに関して、アーキテクチャのゲート数等が、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベース格納のデータベース部１０２と、ユーザー入力部１０３と、動作周波数でスループット動作を可能としかつ最小ゲート数となる暗号回路を実現するための探索アルゴリズムに基づいて必要なアーキテクチャを探索し、必要な部分回路を探索するデータ探索部１０６と、データ探索部による探索結果から暗号回路を生成する回路生成部１０８とを有する。【選択図】  図１
2004178507.tif 000002
【特許請求の範囲】
【請求項１】
ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設計装置であって、
選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースを格納する第１のデータベース部と、
選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを格納する第２のデータベース部と、
スループットと動作周波数とを入力するユーザー入力部と、
前記動作周波数において前記スループットによる動作を可能とし、かつ最小ゲート数となる前記暗号回路を実現することを目的とする探索アルゴリズムに基づいて、必要な部分回路を前記第１のデータベース部から探索し、必要なアーキテクチャを前記第２のデータベース部から探索するデータ探索部と、
前記データ探索部による探索結果から前記暗号回路を生成する回路生成部とを有することを特徴とする暗号回路設計装置。
【請求項２】
前記ユーザー入力部における入力として暗号モードを加え、
前記第１のデータベース部に格納されている部分回路データベースは、暗号化のみを処理するための部分回路と暗号化・復号化の双方を処理するための部分回路を有し、
前記第２のデータベース部に格納されているアーキテクチャデータベースは、暗号化のみを処理するためのアーキテクチャと暗号化・復号化の双方を処理するためのアーキテクチャを有し、
前記データ探索部は、前記暗号回路が、前記共通鍵ブロック暗号を前記暗号モードで実行し、かつ前記動作周波数において前記スループットにより動作可能とし、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、前記第１のデータベース部と前記第２のデータベース部を探索することを特徴とする請求項１に記載の暗号回路設計装置。
【請求項３】
一回の通信に使用されるデータ長が前記共通鍵ブロック暗号のブロック長より短い場合、
前記ユーザー入力部における入力として通信で使用するデータ長を加え、
前記データ探索部は、前記暗号回路が、前記共通鍵ブロック暗号を前記暗号モードで実行し、かつ前記動作周波数において前記データ長による通信で前記スループットによる動作が可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、前記第１のデータベース部と前記第２のデータベース部を探索することを特徴とする請求項２に記載の暗号回路設計装置。
【請求項４】
前記共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、
前記ユーザー入力部における入力として共通鍵の長さを加え、
前記データ探索部は、前記暗号回路が、前記共通鍵の長さにおける前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、前記第１のデータベース部と前記第２のデータベース部を探索することを特徴とする請求項１に記載の暗号回路設計装置。
【請求項５】
前記部分回路データベースに、選択可能な部分回路に関して、消費電力の情報を加え、
前記アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、
前記データ探索部は、前記暗号回路が、前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能で、かつ最小消費電力とすることを目的とする探索アルゴリズムに基づいて、前記第１のデータベース部と前記第２のデータベース部を探索することを特徴とする請求項１に記載の暗号回路設計装置。
【請求項６】
前記アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、
前記データ探索部は、前記暗号回路が、前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能で、かつ最小消費エネルギーとすることを目的とする探索アルゴリズムに基づいて、前記第１のデータベース部と前記第２のデータベース部を探索することを特徴とする請求項５に記載の暗号回路設計装置。
【請求項７】
複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、第１のデータベース部に前記部分回路データベースが、第２のデータベース部に前記アーキテクチャデータベースがそれぞれ格納され、
前記ユーザー入力部における入力として、回路で実現する共通鍵ブロック暗号名を加え、
前記データ探索部は、前記暗号回路が、前記ユーザー入力部において入力された名称の共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能で、かつ最小ゲート数とすることを目的とする探索アルゴリズムに基づいて、前記第１のデータベース部と前記第２のデータベース部を探索することを特徴とする請求項１に記載の暗号回路設計装置。
【請求項８】
ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設方法であって、
暗号回路のスループットと動作周波数とを入力すると、
選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースと、
選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを使用し、
前記動作周波数において前記スループットによる実行を可能とし、かつ最小ゲート数となる前記暗号回路を実現することを目標とする、アルゴリズムとして記述された探索方法に基づいて、必要なアーキテクチャを前記アーキテクチャデータベースから探索し、必要な部分回路を前記部分回路データベースから探索し、
前記探索結果から前記暗号回路を生成することを特徴とする暗号回路設計方法。
【請求項９】
入力として暗号モードを加え、
前記部分回路データベースは暗号化のみを処理する部分回路と暗号化・復号化の双方を処理する部分回路を有し、
前記アーキテクチャデータベースは、暗号化のみを処理するアーキテクチャと暗号化・復号化の双方を処理するアーキテクチャを有し、
前記暗号回路が、前記共通鍵ブロック暗号を前記暗号モードで実行し、かつ前記動作周波数において前記スループットにより実行可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項８に記載の暗号回路設計方法。
【請求項１０】
一回の通信に使用されるデータ長が、前記共通鍵ブロック暗号のブロック長より短い場合、
入力として、通信で使用するデータ長を加え、
前記暗号回路が、前記共通鍵ブロック暗号を前記暗号モードで実行し、かつ前記動作周波数において前記データ長による通信で前記スループットにより実行可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項９に記載の暗号回路設計方法。
【請求項１１】
前記共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、
入力として、共通鍵の長さを加え、
前記暗号回路が、前記共通鍵の長さにおける前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項８に記載の暗号回路設計方法。
【請求項１２】
前記部分回路データベースに、選択可能な部分回路に関して、消費電力に関する情報を加え、
前記アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表される情報を加え、
前記暗号回路が、前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能であり、かつ最小消費電力となることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項８に記載の暗号回路設計方法。
【請求項１３】
前記アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、
前記暗号回路が、前記共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能であり、かつ最小消費エネルギーとなることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項１２に記載の暗号回路設計方法。
【請求項１４】
複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、前記部分回路データベースと前記アーキテクチャデータベースを有し、
入力として、回路で実現する共通鍵ブロック暗号名を加え、
前記暗号回路が、入力された前記共通鍵ブロック暗号名の共通鍵ブロック暗号を、前記動作周波数において前記スループットにより実行可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、前記アーキテクチャデータベースと前記部分回路データベースを探索することを特徴とする請求項８に記載の暗号回路設計方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、本発明は、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を生成する暗号回路設装置、およびラウンド関数を繰り返し適用する共通鍵ブロック暗号を生成するための暗号回路設計方法に関するものである。
【０００２】
【従来の技術】
ＩＰｖ６によるＩＰアドレス空間の拡大や、ネットワーク回線のブロードバンド化による常時ネットワーク接続環境の充実などの背景から、コンピュータ、携帯機器のみならず、従来ネットワーク接続が考慮されてこなかった家電、ＡＶ機器などの機器のネットワーク接続も可能となりつつある。しかし、インターネットに代表されるネットワーク上での通信は、一般的に通信の当事者以外の第三者による傍受や通信の当事者へのなりすましなどの危険に曝されている。今後、ネットワークを介した電子商取引の市場規模は急激に拡大すると予想されており、ネットワーク上での通信の安全性を確保することは必要不可欠となっている。また、会社内、家庭内においては無線によりネットワークが構築される場合が多くなっているが、無線通信では漏洩電波による通信の傍受が容易であるため、機密情報あるいはプライバシ保護のための対策を講ずる必要がある。ネットワーク上の通信の安全性を確保するための方法としては暗号技術の応用が一般的であり、様々なアプリケーションの機器開発においては暗号アルゴリズムの実装が不可欠である。暗号アルゴリズムの実装形態としては、ソフトウェアによるものとハードウェアによるものとに大別される（例えば、特許文献１参照。）。このうち、処理の高速化あるいは低消費電力化を図るためにはハードウェアによる実装が必要とされる。暗号を使用した通信では、通信処理全体の中で暗号処理が占める割合が大きいことが知られており、ハードウェアによる暗号アルゴリズム実装が重要になっている。
【０００３】
しかし、同じ暗号アルゴリズムをハードウェア実装する場合でも、サーバ・ゲートウェイといった高速処理が必要な機器と、携帯機器、ＩＣカードなど小面積、低消費電力化が必要とされる機器とではアーキテクチャが異なるため、個々の機器に対応した暗号回路設計が必要となる。機器に搭載される機能は増加しているにも関らず、開発期間は短縮の一途にあるため、設計期間短縮のための手法が求められている。従来から、設計期間短縮化の手法として、以前の機器開発で設計した暗号回路を半導体ＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）として再利用する方法が取られてきた。しかし暗号回路の場合、上記のように機器により要求性能が異なるため、半導体ＩＰでは性能が不足したり、過剰であったりすることがある。
【０００４】
【特許文献１】
特開平９−４４３５３号公報
【０００５】
【発明が解決しようとする課題】
このような従来の暗号回路設計方法では、以前の機器開発で設計した暗号回路を半導体ＩＰとして再利用しているが、機器により要求性能が異なることから、半導体ＩＰでは性能が不足したり、過剰であったりするという問題点を有していた。
【０００６】
この暗号回路設計装置および暗号回路設計方法では、暗号アルゴリズムの中でも重要な種類である共通鍵ブロック暗号アルゴリズム（以下、「ブロック暗号」または「暗号」と記載する）のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することが要求されている。
【０００７】
本発明は、この要求を満たすため、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる暗号回路設計装置、および、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計するための暗号回路設計方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記課題を解決するために本発明の暗号回路設計装置は、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設計装置であって、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースを格納する第１のデータベース部と、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを格納する第２のデータベース部と、スループットと動作周波数とを入力するユーザー入力部と、動作周波数においてスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目標とする探索アルゴリズムに基づいて、必要なアーキテクチャをアーキテクチャデータベースから探索し、必要な部分回路を部分回路データベースから探索するデータ探索部と、データ探索部による探索結果から暗号回路を生成する回路生成部とを有する構成を備えている。
【０００９】
これにより、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる暗号回路設計装置が得られる。
【００１０】
上記課題を解決するために本発明の暗号回路設計方法は、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設方法であって、暗号回路のスループットと動作周波数とを入力すると、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースと、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを使用し、動作周波数においてスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目標とする、アルゴリズムとして記述された探索方法に基づいて、必要なアーキテクチャをアーキテクチャデータベースから探索し、必要な部分回路を部分回路データベースから探索し、探索結果から暗号回路を生成する構成を備えている。
【００１１】
これにより、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計するための暗号回路設計方法が得られる。
【００１２】
【発明の実施の形態】
本発明の請求項１に記載の暗号回路設計装置は、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設計装置であって、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースを格納する第１のデータベース部と、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを格納する第２のデータベース部と、スループットと動作周波数とを入力するユーザー入力部と、入力した動作周波数において入力したスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目的とする探索アルゴリズムに基づいて、必要な部分回路を第１のデータベース部から探索し、必要なアーキテクチャを第２のデータベース部から探索するデータ探索部と、データ探索部による探索結果から暗号回路を生成する回路生成部とを有することとしたものである。
【００１３】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【００１４】
請求項２に記載の暗号回路設計装置は、請求項１に記載の暗号回路設計装置において、ユーザー入力部における入力として暗号モードを加え、第１のデータベース部に格納されている部分回路データベースは、暗号化のみを処理するための部分回路と暗号化・復号化の双方を処理するための部分回路を有し、第２のデータベース部に格納されているアーキテクチャデータベースは、暗号化のみを処理するためのアーキテクチャと暗号化・復号化の双方を処理するためのアーキテクチャを有し、データ探索部は、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したスループットにより動作可能とし、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することとしたものである。
【００１５】
この構成により、所定の暗号モードで暗号を実行する暗号回路が、満たすべきスループットと動作周波数を満足し、かつ必要最小限のゲート数となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【００１６】
請求項３に記載の暗号回路設計装置は、請求項２に記載の暗号回路設計装置において、一回の通信に使用されるデータ長が共通鍵ブロック暗号のブロック長より短い場合、ユーザー入力部における入力として通信で使用するデータ長を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したデータ長による通信で入力したスループットによる動作が可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することとしたものである。
【００１７】
この構成により、実際に通信で使用するビット数を考慮に入れ、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【００１８】
請求項４に記載の暗号回路設計装置は、請求項１に記載の暗号回路設計装置において、共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、ユーザー入力部における入力として共通鍵の長さを加え、データ探索部は、暗号回路が、入力した共通鍵の長さにおける共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより実行可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することとしたものである。
【００１９】
この構成より、使用する共通鍵の長さである共通鍵ブロック暗号の処理に必要最小限のゲート数による暗号回路の生成を可能にするので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【００２０】
請求項５に記載の暗号回路設計装置は、請求項１に記載の暗号回路設計装置において、部分回路データベースに、選択可能な部分回路に関して、消費電力の情報を加え、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を、動作周波数においてスループットにより実行可能で、かつ最小消費電力とすることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することとしたものである。
【００２１】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費電力が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【００２２】
請求項６に記載の暗号回路設計装置は、請求項５に記載の暗号回路設計装置において、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより実行可能で、かつ最小消費エネルギーとすることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することとしたものである。
【００２３】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費エネルギーが最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【００２４】
請求項７に記載の暗号回路設計装置は、請求項１に記載の暗号回路設計装置において、複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、第１のデータベース部に部分回路データベースが、第２のデータベース部にアーキテクチャデータベースがそれぞれ格納され、ユーザー入力部における入力として、回路で実現する共通鍵ブロック暗号名を加え、データ探索部は、暗号回路が、入力された名称の共通鍵ブロック暗号を、入力された動作周波数において入力されたスループットにより実行可能で、かつ最小ゲート数とすることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することとしたものである。
【００２５】
この構成により、複数の暗号に対して請求項１の作用と同様の作用を呈することができるという作用を有する。
【００２６】
請求項８に記載の暗号回路設方法は、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設方法であって、暗号回路のスループットと動作周波数とを入力すると、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースと、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを使用し、入力した動作周波数において入力したスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目標とする、アルゴリズムとして記述された探索方法に基づいて、必要なアーキテクチャをアーキテクチャデータベースから探索し、必要な部分回路を部分回路データベースから探索し、探索結果から暗号回路を生成することとしたものである。
【００２７】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【００２８】
請求項９に記載の暗号回路設計方法は、請求項８に記載の暗号回路設計方法において、入力として暗号モードを加え、部分回路データベースは暗号化のみを処理する部分回路と暗号化・復号化の双方を処理する部分回路を有し、アーキテクチャデータベースは、暗号化のみを処理するアーキテクチャと暗号化・復号化の双方を処理するアーキテクチャを有し、暗号回路が、共通鍵ブロック暗号を暗号モードで実行し、かつ動作周波数においてスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【００２９】
この構成により、所定の暗号モードで暗号を実行する暗号回路が、満たすべきスループットと動作周波数を満足し、かつ必要最小限のゲート数となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【００３０】
請求項１０に記載の暗号回路設計方法は、請求項９に記載の暗号回路設計方法において、一回の通信に使用されるデータ長が、共通鍵ブロック暗号のブロック長より短い場合、入力として通信で使用するデータ長を加え、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したデータ長による通信で入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【００３１】
この構成により、実際に通信で使用するビット数を考慮に入れ、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという作用を有する。
【００３２】
請求項１１に記載の暗号回路設計方法は、請求項８に記載の暗号回路設計方法において、共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、入力として共通鍵の長さを加え、暗号回路が、共通鍵の長さにおける共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【００３３】
この構成より、使用する共通鍵の長さである共通鍵ブロック暗号の処理に必要最小限のゲート数による暗号回路の生成を可能にするので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【００３４】
請求項１２に記載の暗号回路設計方法は、請求項８に記載の暗号回路設計方法において、部分回路データベースに、選択可能な部分回路に関して、消費電力に関する情報を加え、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表される情報を加え、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小消費電力となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【００３５】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費電力が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【００３６】
請求項１３に記載の暗号回路設計方法は、請求項１２に記載の暗号回路設計方法において、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小消費エネルギーとなることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【００３７】
この構成により、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費エネルギーが最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる作用を有する。
【００３８】
請求項１４に記載の暗号回路設計方法は、請求項８に記載の暗号回路設計方法において、複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、部分回路データベースとアーキテクチャデータベースを有し、入力として回路で実現する共通鍵ブロック暗号名を加え、暗号回路が、入力した共通鍵ブロック暗号名の共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたものである。
【００３９】
この構成により、複数の暗号に対して請求項８の作用と同様の作用を呈することができるという作用を有する。
【００４０】
以下、本発明の実施の形態について、図１〜図２２を用いて説明する。
【００４１】
（実施の形態１）
本発明の実施の形態１による暗号回路設計装置について、まず、その概要を説明する。
【００４２】
ブロック暗号はラウンド関数と呼ばれる関数を繰り返し実行することにより暗号処理あるいは復号処理を実現する。そのため、実際に適用可能なアーキテクチャの選択肢は制限され、アーキテクチャ毎に必要とされる部分回路数、各部分回路が決まったときの回路全体の最長遅延時間計算方法、１ブロック処理完了までのクロック・サイクル数などが決定される。ブロック暗号回路を構成する部分回路のゲート数と最長遅延時間が決定されると、回路全体のゲート数と最長遅延時間を概算することができる。ゲート数は回路面積に比例し、最長遅延時間の逆数が最高動作周波数となる。また、最高動作周波数と１ブロック処理完了までのクロック数が決まると、１秒あたりに処理されるビット数を表すスループットが決定される。
【００４３】
回路の性能指標として、スループットと最高動作周波数、ゲート数があるが、スループットと動作周波数は機器の制約として決まっており、ゲート数は少なければ少ないほど回路面積を小さくすることができるので、製造コストが安く済む。
【００４４】
そこで、暗号回路を構成する各部分回路に対して、実装しうる回路のゲート数、最長遅延時間をデータベース化し、全ての選択し得るアーキテクチャに対して、回路全体のゲート数、最高動作周波数、スループットを計算するための方法をデータベース化する。そして、制約条件としてスループットと動作周波数が与えられたとき、上記の２つのデータベースから最小ゲート数となるアーキテクチャと部分回路を選択する方法をアルゴリズム化することにより、制約条件を満たし最小ゲート数となるブロック暗号回路を自動設計することを可能にする。
【００４５】
本実施の形態によれば、ブロック暗号回路の設計自動化を図ることができ、短期間に機器の要求性能に沿ったブロック暗号回路を設計するための手法を提供することを可能にする。
【００４６】
図１は、本発明の実施の形態１による暗号回路設計装置を示すブロック図である。
【００４７】
図１において、１０１は部分回路データベースが格納されている第１のデータベース部である。部分回路データベースは、暗号回路の実装可能な全ての部分回路に対して、回路属性を後述する部分回路データとして保持する。１０２はアーキテクチャデータベースが格納されている第２のデータベース部である。アーキテクチャデータベースは、暗号回路の選択しうる全てのアーキテクチャに対して、回路属性を後述するアーキテクチャデータとして保持する。１０３はユーザー入力部である。ユーザー入力部１０３は、暗号回路の要求性能に基づき、暗号回路に対する制約条件を与える。１０４はスループットである。スループット１０４は、暗号回路の処理性能の下限に関する制約条件を１秒あたりに処理可能なビット数として与える。１０５は動作周波数である。動作周波数１０５は、暗号回路の動作周波数の下限に関する制約条件を周波数単位で与える。１０６はデータ探索部である。データ探索部１０６は、ユーザー入力部１０３からのデータを入力し、部分回路データベースとアーキテクチャデータベースから、ユーザー入力部１０３で与えられる制約条件を満足し、かつゲート数最小となる暗号回路となるデータを探索する。１０７は暗号回路である。暗号回路１０７は、ハードウェア記述言語（以下、「ＨＤＬ」と記載する）等で記述されており、暗号アルゴリズム全体を処理し、かつ、ユーザー入力部１０３で与えられる制約条件を満足し、かつゲート数最小となる回路である。１０８は回路生成部である。回路生成部１０８は、データ探索部１０６で探索した部分回路データとアーキテクチャデータとに基づいて暗号回路１０７を生成する。
【００４８】
以下では、図１の暗号回路設計装置の動作を、ブロック暗号の一つであるＤＡＴＡ  ＥＮＣＲＹＰＴＩＯＮ  ＳＴＡＮＤＡＲＤ（以下、「ＤＥＳ」と記載する）を例に述べる。ＤＥＳは６４ビット単位でデータの暗号化／復号化処理を実行する。秘密鍵は６４ビットである。
【００４９】
図２は、データベース部１０１格納の部分回路データベースを構成する部分回路データの構造を示すデータ構造図である。
【００５０】
図２において、２０１は部分回路データである。部分回路データベースは複数の異なる部分回路データから構成される。２０２は部分回路の回路種別番号である。ＤＥＳにおける部分回路は、Ｓ１からＳ８でのＳ−ｂｏｘと呼ばれる非線形回路、拡大鍵とデータの排他的論理和を取るための４８ビットＥＸＯＲ回路、暗号化／復号化切換またはラウンド数依存による処理切換のためのセレクタなどがある。回路種別番号２０２は、実装可能な全ての部分回路の種類に対し一意的に番号がつけられる。２０３はシリアル・ナンバである。シリアル・ナンバ２０３は、一つの部分回路について一つ以上の実装形態がある場合、複数の実装形態を区別するため、回路種別番号２０２毎につけられる通し番号である。例えば、Ｓ１からＳ８までのＳ−ｂｏｘは回路構成方法が複数ある。この場合、回路構成方法毎に部分回路データを作成し、該部分回路データの回路種別番号２０２は同一番号として、シリアル・ナンバ２０３を異なる番号で区別する。２０４は回路記述である。回路記述２０４は、該部分回路の動作を、例えば、レジスタ・トランスファ・レベル（以下、「ＲＴＬ」と記載する）の抽象度のＨＤＬで記述されたものである。２０５はゲート数である。ゲート数２０５は、該部分回路を実装した場合のゲート数を保持する。ゲート数２０５は、実装プロセスにおける実測値あるいは過去の実装実績からの見積もりなどにより得られたデータである。２０６は最長遅延時間である。最長遅延時間２０６は、該部分回路において、該部分回路への入力値が定まってから出力値が定まるまでに要する最も長い時間を保持する。最長遅延時間２０６は、実装プロセスにおける実測値あるいは過去の実装実績からの見積もりなどにより得られた時間である。部分回路データベースに登録される各部分回路において、同一回路構成であっても、ゲート数、最長遅延時間は一意に定まらない。ゲート数と最長遅延時間はトレードオフ関係にあり、最長遅延時間が小さくなるほどゲート数は増大する傾向にある。そこで離散的に最長遅延時間を選び、各最長遅延時間毎に部分回路データを作成する。この場合、該部分回路データの回路種別番号２０２は同一番号として、シリアル・ナンバ２０３を異なる番号で区別する。
【００５１】
図３は、データベース部１０２格納のアーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【００５２】
図３において、３０１はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータ３０１から構成される。３０２はアーキテクチャ種別番号である。ＤＥＳにおいて実装可能なアーキテクチャとしては、１つのラウンドを繰り返し実行するアーキテクチャ（以下、「ループアーキテクチャ」と記載する）、すべてのラウンドを実装して１ブロックの処理を１クロックサイクルで実行するアーキテクチャ（以下、「ループアンローリングアーキテクチャ」と記載する）、すべてのラウンドを実装して各ラウンド関数をパイプライン処理するアーキテクチャ（以下、「パイプラインアーキテクチャ」と記載する）が存在する。アーキテクチャ種別番号３０２は実装可能全てのアーキテクチャの種類に対し一意的に番号がつけられる。３０３は実行サイクルである。実行サイクル３０３は、１ブロックの暗号化／復号化処理に要するクロックサイクルを保持する。１ブロックの暗号化／復号化処理に要するクロックサイクルはアーキテクチャの構造から決定することができる。例えば、ループアーキテクチャではラウンド数に加え、初期転置、最終転置の数のクロックサイクルを要するのに対し、ループアンローリングアーキテクチャは１クロックサイクル、パイプラインアーキテクチャも１クロックサイクル毎に出力を得ることができるので、１クロックサイクルとみなすことができる。３０４はアーキテクチャ記述である。アーキテクチャ記述３０４は、該アーキテクチャの動作を、例えばＲＴＬの抽象度でＨＤＬ記述されたものである。ただし、アーキテクチャ記述３０４中で、部分回路データベースに登録されている部分回路に関しては、入出力の定義のみがなされているものとする。３０５はゲート数評価関数である。ゲート数評価関数３０５はアーキテクチャ全体のゲート数を評価するための関数である。アーキテクチャの構造が決まれば、アーキテクチャで使用する部分回路の種類と数は一意に求めることができ、アーキテクチャ全体のゲート数は構成する全部分回路のゲート数の総和により見積もることができる。ゲート数評価関数３０５は、アーキテクチャを構成する全部分回路についての、部分回路データベース中の部分回路データにおけるゲート数２０５を変数とする加算として定義することができる。部分回路データベースにある特定の部分回路データ２０１のゲート数２０５をゲート数評価関数３０５に代入して評価されたアーキテクチャ全体のゲート数を以下では評価ゲート総数と呼ぶ。３０６は動作周波数評価関数である。動作周波数評価関数３０６は該アーキテクチャの最高動作周波数を評価するための関数である。最高動作周波数は、後述するクリティカルパスの最長遅延時間の逆数として求めることができる。クリティカルパスは、アーキテクチャ中の回路入力―レジスタ間、回路入力―回路出力間、レジスタ―回路出力間、レジスタ―レジスタ間のいずれかのパスのうち、最も遅延時間が大きくなるパスを指す。パスの遅延時間はパスを通過する各部分回路の最長遅延時間の和により見積もることができる。アーキテクチャの構造が決まれば、クリティカルパスの候補となるパスはアーキテクチャの構造や既存の実装から予測することができる。例えば、Ｓ−ｂｏｘは他の部分回路と比較して最長遅延時間が大きいため、Ｓ−ｂｏｘを含むパスはクリティカルパスとなる可能性が高い。動作周波数評価関数３０６は、該アーキテクチャに依存したクリティカルパスの候補となるパスについて部分回路データベース中の部分回路データにおける最長遅延時間２０６を変数とする加算を求め、該パスの最長遅延時間の最大値を求め、該最大値の逆数を取る関数として定義することができる。部分回路データベースにある特定の部分回路データ２０１の最高遅延時間２０６を動作周波数評価関数３０６に代入して評価されたアーキテクチャの最高動作周波数を以下では評価最高動作周波数と呼ぶ。３０７はスループット評価関数である。スループット評価関数３０７は該アーキテクチャのスループットを評価するための関数である。スループットは、１ブロックを構成するビット数（ＤＥＳの場合は６４）を、クリティカルパスの最長遅延時間と１ブロック処理に要するクロックサイクルとの積で割ることにより見積もることができる。スループット評価関数３０７は、１ブロックを構成するビット数と動作周波数評価関数３０６との積を実行サイクル３０３で割る関数として定義することができる。部分回路データベースにある特定の部分回路データ２０１の最高遅延時間２０６をスループット評価関数３０７に代入して評価されたアーキテクチャのスループットを以下では評価スループットと呼ぶ。
【００５３】
図４は、データ探索部１０６の動作を示すフローチャートである。
【００５４】
図４において、まず、アーキテクチャデータベースに登録されている全てのアーキテクチャに対して、アーキテクチャデータベースに登録されている該アーキテクチャに関するアーキテクチャデータ３０１の実行サイクル３０３と動作周波数１０５の逆数との積に、ＤＥＳにおける１ブロックを構成するビット数６４を乗じた値を計算する。該計算値がスループット１０４以上である場合は、該アーキテクチャを候補アーキテクチャ集合に追加する（Ｓ１）。ステップＳ１を実行後、候補アーキテクチャ集合が空集合である場合は実装不可能であるためエラーを返して終了し、それ以外の場合はアルゴリズムを続行する（Ｓ２）。候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号３０２のアーキテクチャデータベースを使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号２０２を有する部分回路データ２０１の中からゲート数２０５の値が最も大きい部分回路データを検索し、該部分回路データを使用して評価ゲート総数と評価最高動作周波数と評価スループットとを計算する（Ｓ３）。候補アーキテクチャ集合のうち、ステップＳ３で求めた評価最高動作周波数が動作周波数１０５より小さい場合、または、ステップＳ３で求めた評価スループットがスループット１０４より小さい場合は、該アーキテクチャでは制約条件を満足しないため、候補アーキテクチャ集合から除外する。候補アーキテクチャ集合が空集合となった場合は、エラーを返して終了し、それ以外の場合はアルゴリズムを続行する（Ｓ４）。
【００５５】
候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号３０２のアーキテクチャデータベースを使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号２０２を有す部分回路データ２０１の中からゲート数２０５の値が最も小さい部分回路データを検索し、該部分回路データを使用して評価ゲート総数と評価最高動作周波数と評価スループットとを計算する（Ｓ５）。
【００５６】
候補アーキテクチャ集合のうち、ステップＳ３で求めた評価動作周波数が動作周波数１０５より大きく、かつ、ステップＳ３で求めた評価スループットがスループット１０４より大きい場合は、該アーキテクチャのアーキテクチャデータ３０１のアーキテクチャ識別番号３０１と、該アーキテクチャを構成する全ての部分回路についての部分回路データ２０１の回路種別番号２０２とシリアルナンバ２０３を返す。前記の条件を満たすアーキテクチャが複数ある場合は、評価ゲート総数が最小となるアーキテクチャについて前記と同様のものを返す。前記の条件を満たすアーキテクチャがない場合は、次のステップに進む（Ｓ６）。候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの中から、ゲート総数が現在の値より大きくなり、かつ増大幅が最も小さくなる部分回路データ２０１を検索し、該部分回路データを使用して評価ゲート総数、評価最高動作周波数、評価スループットを計算して、ステップＳ６に戻る（Ｓ７）。回路生成部１０８では、データ探索部１０６より得られたアーキテクチャ識別番号３０１のアーキテクチャデータ３０１からアーキテクチャ記述３０４を取得し、データ探索部１０６より得られた回路種別番号２０２とシリアルナンバ２０３の回路データ２０１から回路記述２０４を取得して、マージすることにより、暗号回路１０７を合成する。
【００５７】
以上のように本実施の形態によれば、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースを格納する第１のデータベース部１０１と、選択しうるアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを格納する第２のデータベース部１０２と、スループットと動作周波数とを入力するユーザー入力部１０３と、ユーザー入力部１０３においてスループットと動作周波数とを入力したとき、部分回路データベースとアーキテクチャデータベースとから、暗号アルゴリズムを用いて、最小ゲート数となる部分回路とアーキテクチャとを探索するデータ探索部１０６と、選択アルゴリズムにおける探索結果から暗号回路を生成する回路生成部１０８とを有することにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつゲート数が最小となる暗号回路を生成することができるので、暗号アルゴリズムのハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる。
【００５８】
（実施の形態２）
一般的に暗号アルゴリズムは暗号モードと呼ばれる使用方法で利用される。暗号モードによっては、暗号処理のみを実装し、復号処理が不要である。例えば、米国国立標準技術研究所（以下、「ＮＩＳＴ」と記載する）が推奨している暗号モードのうち、ＥＣＢモード、ＣＢＣモードは復号処理を必要とするが、ＣＦＢモード、ＯＦＢモードは復号処理を必要としない。復号処理を必要としない暗号モードを利用する場合、暗号回路実装の際、復号処理を実装しないことにより、回路性能の向上することができる。
【００５９】
図５は、本発明の実施の形態２による暗号回路設計装置を示すブロック図である。
【００６０】
図５において、５０２はアーキテクチャデータベースを格納するデータベース部である。データベース５０２格納のアーキテクチャデータベースは、暗号回路の選択しうる全てのアーキテクチャに対して、回路属性および復号処理の有無を、後述するアーキテクチャデータとして保持する。５０６はデータ探索部である。データ探索部５０６は、ユーザー入力部１０３からデータを入力し、データベース部１０１格納の部分回路データベースとデータベース部５０２格納のアーキテクチャデータベースとから、ユーザー入力部１０３で与えられる制約条件を満足し、かつゲート数最小となる暗号回路となるデータを探索する。５１０は暗号アルゴリズムで使用する暗号モードである。
【００６１】
図６は、データベース部５０２格納のアーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【００６２】
図６において、６０１はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータから構成される。６０２は復号有無情報である。復号有無情報６０２は、アーキテクチャデータ６０１に該当するアーキテクチャ内に復号処理があるか否かを示す情報である。
【００６３】
図７は、データ探索部５０６の動作を示すフローチャートである。
【００６４】
図７において、まず、暗号モード５１０を参照し、復号処理が必要か否かを判定する。アーキテクチャデータベースに登録されている全てのアーキテクチャに対して、アーキテクチャデータ６０１の復号有無情報６０２を検索し、復号処理が必要な暗号モードの場合は復号処理が有るアーキテクチャを、復号処理が不要な暗号モードの場合は復号処理が無いアーキテクチャを、それぞれ候補アーキテクチャ集合に登録する。次に、候補アーキテクチャ集合に登録されている全てのアーキテクチャに対して、アーキテクチャデータベースに登録されている該アーキテクチャに関するアーキテクチャデータ６０１の実行サイクル３０３と動作周波数１０５の逆数との積に、ＤＥＳにおける１ブロックを構成するビット数６４を乗じた値を計算する。該計算値がスループット１０４以上でない場合は、該アーキテクチャを候補アーキテクチャ集合から除外する（Ｓ１１）。ステップＳ１２〜Ｓ１７における処理動作は、図４のステップＳ２〜Ｓ７における処理動作と同様である。
【００６５】
以上のように本実施の形態によれば、ユーザー入力部１０３における入力として暗号モードを加え、部分回路データベースとアーキテクチャデータベースとは、暗号のみを処理する回路と暗号・復号の双方を処理する回路とを有し、データ探索部５０６は、入力された暗号モードにより、暗号アルゴリズムを用いて暗号モード処理を実現することにより、暗号モードを用いて、暗号回路が満たすべきスループットと動作周波数を満足し、かつ必要最小限のゲート数となる暗号回路を生成することができるので、暗号アルゴリズムのハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる。
【００６６】
（実施の形態３）
使用する暗号モードによっては、実際の通信で使用するビット数が暗号のブロック長より小さいものがある。例えばＣＦＢモードでは、通信に使用するビット数は暗号のブロック長より小さくかつ可変である。前記の場合、処理性能は通信に使用するビット数に依存するため、通信に使用するビット数により、適当な暗号回路は異なる。そこで、通信に使用するビット数をユーザー入力部から入力データとして与えることにより、最適な暗号回路を探索することができる。
【００６７】
図８は、本発明の実施の形態３による暗号回路設計装置を示すブロック図である。
【００６８】
図８において、８０２はアーキテクチャデータベースを格納するデータベース部である。データベース部８０２格納のアーキテクチャデータベースは、暗号回路の選択しうる全てのアーキテクチャに対して、回路属性および復号処理の有無を、後述するアーキテクチャデータとして保持する。８０６はデータ探索部である。データ探索部８０６は、ユーザー入力部１０３からのデータを入力し、データベース部１０１格納の部分回路データベースとデータベース部８０２格納のアーキテクチャデータベースとから、ユーザー入力部１０３で与えられる制約条件を満足し、かつゲート数最小となる暗号回路となるデータを探索する。８１０は通信で使用するビット数である。
【００６９】
図９は、アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【００７０】
図９において、９０１はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータから構成される。９０２はスループット評価関数である。スループット評価関数９０２は該アーキテクチャのスループットを評価するための関数である。スループットは、通信で使用するビット数を、クリティカルパスの最長遅延時間と１ブロック処理に要するクロックサイクルとの積で割ることにより見積もることができる。スループット評価関数３０７は、通信で使用するビット数と動作周波数評価関数３０６との積を実行サイクル３０３で割る関数として定義することができる。部分回路データベースにある特定の部分回路データ２０１の最高遅延時間２０６と通信で使用するビット数とをスループット評価関数９０２に代入して評価されたアーキテクチャのスループットを以下では評価スループットと呼ぶ。
【００７１】
図１０は、データ探索部８０６の動作を示すフローチャートである。
【００７２】
図１０において、まず、暗号モード５１０を参照し、通信に使用するビット数を決定する。例えば、ＥＣＢモード、ＣＢＣモードでは６４ビット、ＣＦＢモードでは通信ビット数８１０の値、ＯＦＢモードでは１ビットなどである。アーキテクチャデータ９０１中のスループット評価関数９０２では、ここで決まった値を通信で使用するビット数として使用する。そして、復号処理が必要か否かを判定する。アーキテクチャデータベースに登録されている全てのアーキテクチャに対して、アーキテクチャデータ６０１の復号有無情報６０２を検索し、復号処理が必要な暗号モードの場合は復号処理が有るアーキテクチャを、復号処理が不要な暗号モードの場合は復号処理が無いアーキテクチャを、それぞれ候補アーキテクチャ集合に登録する。次に、候補アーキテクチャ集合に登録されている全てのアーキテクチャに対して、評価スループットを計算する。評価スループットがスループット１０４以上でない場合は、該アーキテクチャを候補アーキテクチャ集合から除外する（Ｓ２１）。ステップＳ２２における処理動作は図７のステップＳ１１と同様であり、ステップＳ２３〜Ｓ２８における処理動作は図４のステップＳ２〜Ｓ７と同様である。
【００７３】
以上のように本実施の形態によれば、通信に使用されるデータ長がブロック暗号のブロック長より短い場合、ユーザー入力部１０３における入力として通信に使用されるデータ長を加えることにより、実際に通信で使用するビット数を考慮に入れ、かつゲート数が最小となる暗号回路を生成することができるので、暗号アルゴリズムのハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる。
【００７４】
（実施の形態４）
暗号アルゴリズムによっては、共通鍵の鍵長が可変であるものもある。例えばＤＥＳは６４ビットで固定であるが、ＡＤＶＡＮＣＥＤ  ＥＮＣＲＹＰＴＩＯＮＳＴＡＮＤＡＲＤ（以下、「ＡＥＳ」と記載する）では１２８ビット、１９２ビット、２５６ビットの中から一つを選択することができる。ＡＥＳでは鍵長によってラウンド関数の実行回数が異なるなど、アルゴリズムに若干の変化が生じする。そのため、複数の鍵長に対応するための回路実装のオーバーヘッドは非常に大きなものになる。そこで、アプリケーションに必要な鍵長のみを実装することにより、暗号回路の回路性能を向上させることができる。
【００７５】
図１１は、本発明の実施の形態４による暗号回路設計装置を示すブロック図である。
【００７６】
図１１において、１１０２はアーキテクチャデータベースを格納するデータベース部である。データベース部１１０２格納のアーキテクチャデータベースは、暗号回路の選択しうる全てのアーキテクチャに対して、回路属性および対応鍵長を、後述するアーキテクチャデータとして保持する。１１０６はデータ探索部である。データ探索部１１０６は、ユーザー入力部１０３からのデータを入力し、データベース部１０１格納の部分回路データベースとデータベース部１１０２格納のアーキテクチャデータベースとから、ユーザー入力部１０３で与えられる制約条件を満足し、かつゲート数最小となる暗号回路となるデータを探索する。１１１０は使用する鍵長である。
【００７７】
図１２は、アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【００７８】
図１２において、１２０１はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータから構成される。１２０２は鍵長情報である。鍵長情報１２０２は、アーキテクチャデータ１２０１に該当するアーキテクチャが実行可能な鍵長を示す情報である。
【００７９】
図１３はデータ探索部１１０６の動作を示すフローチャートである。
【００８０】
図１３において、まず、アーキテクチャデータベースに登録されている全てのアーキテクチャに対して、アーキテクチャデータ１１０１の鍵長情報１２０２を検索し、鍵長１１１０に合致したアーキテクチャを候補アーキテクチャ集合に登録する。次に、候補アーキテクチャ集合に登録されている全てのアーキテクチャに対して、アーキテクチャデータベース５０２に登録されている該アーキテクチャに関するアーキテクチャデータ６０１の実行サイクル３０３と動作周波数１０５の逆数との積に、１ブロックを構成するビット数を乗じた値を計算する。該計算値がスループット１０４以上でない場合は、該アーキテクチャを候補アーキテクチャ集合から除外する（Ｓ３１）。ステップＳ３２〜Ｓ３７における処理動作は図４のステップＳ２〜Ｓ７における処理動作と同様である。
【００８１】
以上のように本実施の形態によれば、共通鍵のデータ長を複数有し、ユーザー入力部１０３において共通鍵のデータ長を入力として加えることにより、使用する鍵長の処理に必要最小限のゲート数による暗号回路の生成を可能にするので、暗号アルゴリズムのハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる。
【００８２】
（実施の形態５）
回路を実装する場合、回路の性能を測る指標として、面積、最高動作周波数、処理性能とともに、消費電力も非常に重要になっている。消費電力を抑えることは、機器の発熱防止、携帯機器などバッテリー駆動の機器においてバッテリー持続時間を長くすることにつながる。そのため、回路を実装する上で、低消費電力化を図ることは今後動作ますます重要となる。
【００８３】
図１４は、本発明の実施の形態５による暗号回路設計装置を示すブロック図である。
【００８４】
図１４において、１４０１は部分回路データベースを格納するデータベース部である。データベース部１４０１格納の部分回路データベースは、暗号回路の実装可能な全ての部分回路に対して、回路属性を後述する部分回路データとして保持する。１４０２はアーキテクチャデータベースを格納するデータベース部である。データベース部１４０２格納のアーキテクチャデータベース１４０２は、暗号回路の選択しうる全てのアーキテクチャに対して回路属性を、後述するアーキテクチャデータとして保持する。１４０６はデータ探索部である。データ探索部１４０６は、ユーザー入力部１０３からのデータを入力し、データベース部１４０１格納の部分回路データベースとデータベース部１４０２格納のアーキテクチャデータベースとから、ユーザー入力部１０３で与えられる制約条件を満足し、かつゲート数最小または消費電力最小となる暗号回路となるデータを探索する。１４１０はゲート数である。ゲート数１４１０は暗号回路のゲート数の上限に関する制約条件を与える。１４１１は消費電力である。消費電力１４１１は暗号回路の平均消費電力の上限に関する制約条件を与える。１４１２は最適化項目である。最適化項目１４１２は本設計手法で最適化を図るべき指標を与える。通常アプリケーションにおいては、動作周波数とスループットは必ず満たさなければならない制約である。ゲート数と消費電力は一般にトレードオフ関係にあるため、ゲート数削減と消費電力削減を同時に図ることは困難である。アプリケーションに応じて、ゲート数削減を行うべきか消費電力削減を行うべきかを選択する必要がある。
【００８５】
図１５は、部分回路データベースを構成する部分回路データの構造を示すデータ構造図である。
【００８６】
図１５において、１５０１は部分回路データである。部分回路データベースは複数の異なる部分回路データから構成される。１５０２は消費電力である。消費電力１５０２は該部分回路を実装した場合に該部分回路が消費する電力を保持する。消費電力１５０２の値は、実装プロセスにおける実測値あるいは過去の実装実績からの見積もりなどにより得られたデータであり、周波数あたりの消費電力として与えられる。
【００８７】
図１６は、アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【００８８】
図１６において、１６０１はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータから構成される。１６０２は消費電力評価関数である。消費電力評価関数１６０２はアーキテクチャ全体の消費電力を評価するための関数である。アーキテクチャ全体の消費電力は、構成する全部分回路の消費電力の総和と動作周波数との積より見積もることができる。消費電力評価関数１６０２は、アーキテクチャを構成する全部分回路についての、部分回路データベース中の部分回路データにおける消費電力２０５を変数とする加算の和と、動作周波数１０５との乗算として定義することができる。部分回路データベースにある特定の部分回路データ１６０１の消費電力１５０２と動作周波数１０５とを消費電力評価関数１６０２に代入して評価されたアーキテクチャ全体の消費電力を以下では評価消費電力と呼ぶ。
【００８９】
図１７はデータ探索部１４０６の動作を示すフローチャートである。
【００９０】
図１７において、まず、最適化項目１４１２を参照し、ゲート数削減の最適化か消費電力削減の最適化かを決定する。ゲート数削減の最適化の場合、制約条件として消費電力１４１１を加える。消費電力削減の場合、制約条件としてゲート数１４１０を加える（Ｓ４１）。ステップＳ４２、ステップＳ４３を実行後（ステップＳ４２、ステップＳ４３における処理動作は図４のステップＳ１、Ｓ２における処理動作と同様である）、候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号３０２のアーキテクチャデータ１６０２を使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号２０２を有す部分回路データ１５０１の中からゲート数１４１０または消費電力１４１１の値が最も大きい部分回路データを検索し、該部分回路データを使用して評価ゲート総数または評価消費電力と評価最高動作周波数と評価スループットとを計算する（Ｓ４４）。ゲート数削減の最適化の場合、候補アーキテクチャ集合のうち、ステップＳ４４で求めた評価最高動作周波数が動作周波数１０５より小さい場合、または、ステップＳ４４で求めた評価スループットがスループット１０４より小さい場合は、該アーキテクチャでは制約条件を満足しないため候補アーキテクチャ集合から除外する。候補アーキテクチャ集合が空集合となった場合は、エラーを返し終了し、それ以外の場合はアルゴリズムを続行する（Ｓ４５）。候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号３０２のアーキテクチャデータベースを使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号２０２を有す部分回路データ２０１の中からゲート数２０５または消費電力１５０２の値が最も小さい部分回路データを検索し、該部分回路データを使用して評価ゲート総数または評価消費電力と評価最高動作周波数と評価スループットとを計算する（Ｓ４６）。候補アーキテクチャ集合のうち、ステップＳ４４で求めた評価動作周波数が動作周波数１０５より大きく、かつ、ステップＳ４４で求めた評価スループットがスループット１０４より大きくて、ステップＳ４４で求めた評価ゲート数がゲート数１４１０より小さい、あるいは、ステップＳ４４で求めた評価消費電力が消費電力１４１１より小さい場合は、該アーキテクチャのアーキテクチャデータ１６０１のアーキテクチャ識別番号３０１と、該アーキテクチャを構成する全ての部分回路についての部分回路データ１５０１の回路種別番号２０２とシリアルナンバ２０３を返す。前記の条件を満たすアーキテクチャが複数ある場合は、評価ゲート総数または評価消費電力が最小となるアーキテクチャについて前記と同様のものを返す。前記の条件を満たすアーキテクチャがない場合は、次のステップに進む（Ｓ４７）。候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの中から、評価ゲート総数または評価消費電力が現在の値より大きくなり、かつ増大幅が最も小さくなる部分回路データ１５０１を検索し、該部分回路データ１５０１を使用して評価ゲート総数、評価消費電力、評価最高動作周波数、評価スループットを計算して、ステップＳ４７に戻る（Ｓ４８）。
【００９１】
以上のように本実施の形態によれば、部分回路データベースとアーキテクチャデータベースとに消費電力に関する情報を付加することにより、暗号回路の消費電力を最小消費電力とすることができる。
【００９２】
（実施の形態６）
バッテリー駆動の機器において、バッテリー持続時間を長くするためには、消費電力と実行サイクル数との積であるエネルギーを削減しなければならない。消費電力削減は、実行サイクル数の増大につながるため、エネルギー削減に効果があるとは必ずしも言えない。そのため、バッテリー駆動の機器搭載の回路を実装する上で、省エネルギー化を図ることは今後動作ますます重要となる。
【００９３】
図１８は、本発明の実施の形態６による暗号回路設計装置を示すブロック図である。
【００９４】
図１８において、１８０２はアーキテクチャデータベースを格納するデータベース部である。データベース部１８０２格納のアーキテクチャデータベースは、暗号回路の選択しうる全てのアーキテクチャに対して回路属性を、後述するアーキテクチャデータとして保持する。１８０６はデータ探索部である。データ探索部１８０６は、ユーザー入力部１０３からのデータを入力し、データベース部１４０１格納の部分回路データベースとデータベース部１８０２格納のアーキテクチャデータベースとから、ユーザー入力部１０３で与えられる制約条件を満足し、かつゲート数最小または消費電力最小またはエネルギー最小となる暗号回路となるデータを探索する。１８１１はエネルギーである。エネルギー１８１１は、暗号回路の１ブロック実行あたりに消費するエネルギーの上限に関する制約条件を与える。１８１２は最適化項目である。最適化項目１８１２は本設計手法で最適化を図るべき指標を与える。通常アプリケーションにおいては、動作周波数とスループットは必ず満たさなければならない制約である。ゲート数と消費電力とエネルギーとは一般にトレードオフ関係にあるため、ゲート数削減と消費電力削減とエネルギー削減とを同時に図ることは困難である。アプリケーションに応じて、ゲート数削減を行うべきか消費電力削減を行うべきかエネルギー削減を行うべきかを選択する必要がある。
【００９５】
図１９は、アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図である。
【００９６】
図１９において、１９０１はアーキテクチャデータである。アーキテクチャデータベースは複数の異なるアーキテクチャデータから構成される。１９０２はエネルギー評価関数である。エネルギー評価関数１９０２はアーキテクチャにおける１ブロック処理あたりのエネルギーを評価するための関数である。１ブロック処理あたりのエネルギーは平均消費電力と実行クロックサイクルとの積として見積もることができる。エネルギー評価関数１９０２は、アーキテクチャを構成する全部分回路についての、部分回路データベース中の部分回路データ１５０１における消費電力１５０２を変数とする加算の和と、動作周波数１０５と該アーキテクチャのアーキテクチャデータ１９０１中の実行サイクル３０３との積との乗算として定義することができる。部分回路データベースにある特定の部分回路データ１５０１の消費電力１５０２、動作周波数１０５、アーキテクチャデータ１９０１中の実行サイクル３０３をエネルギー評価関数１９０２に代入して評価された値を以下では評価エネルギーと呼ぶ。
【００９７】
図２０はデータ探索部１８０６の動作を示すフローチャートである。
【００９８】
図２０において、最適化項目１８１２を参照し、ゲート数削減の最適化か消費電力削減かエネルギー削減の最適化を決定する。ゲート数削減の最適化の場合、制約条件として消費電力１４１１、エネルギー１８１１を加える。消費電力削減の場合、制約条件としてゲート数１４１０、エネルギー１８１１を加える。エネルギー削減の場合、制約条件としてゲート数１４１０、消費電力１４１１を加える（Ｓ５１）。ステップＳ５２、ステップＳ５３を実行後（ステップＳ５２、ステップＳ５３における処理動作は図４のステップＳ１、Ｓ２における処理動作と同様である）、候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号３０２のアーキテクチャデータベースを使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号２０２を有す部分回路データ２０１の中からゲート数１４１０または消費電力１４１１またはエネルギー１８１１の値が最も大きい部分回路データを検索し、該部分回路データを使用して評価ゲート総数、評価消費電力、評価エネルギー、評価最高動作周波数、評価スループットを計算する（Ｓ５４）。ステップＳ５５実行後（ステップＳ５５における処理動作は図４のステップＳ４における処理動作と同様である）、候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、アーキテクチャデータベース中の該アーキテクチャに相当するアーキテクチャ種別番号３０２のアーキテクチャデータベースを使用して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの該部分回路に相当する部分回路種別番号２０２を有する部分回路データ２０１の中からゲート数２０５または消費電力１５０２の値が最も小さい部分回路データを検索し、該部分回路データを使用して評価ゲート総数または評価消費電力または評価エネルギー、評価最高動作周波数、評価スループットを計算する（Ｓ５６）。候補アーキテクチャ集合のうち、ステップＳ５６で求めた評価動作周波数が動作周波数１０５より大きく、かつ、ステップＳ５６で求めた評価スループットがスループット１０４より大きくて、ステップＳ５６で求めた評価ゲート数がゲート数１４１０より小さい、あるいは、ステップＳ５６で求めた評価消費電力が消費電力１４１１より小さい場合、あるいは、ステップＳ５６で求めた評価エネルギーがエネルギー１８１１より小さい場合は、該アーキテクチャのアーキテクチャデータ１９０１のアーキテクチャ識別番号３０１と、該アーキテクチャを構成する全ての部分回路についての部分回路データ１５０１の回路種別番号２０２とシリアルナンバ２０３を返す。前記の条件を満たすアーキテクチャが複数ある場合は、評価ゲート総数または評価消費電力または評価エネルギーが最小となるアーキテクチャについて前記と同様のものを返す。前記の条件を満たすアーキテクチャがない場合は、次のステップに進む（Ｓ５７）。候補アーキテクチャ集合に存在する全てのアーキテクチャに対して、該アーキテクチャ中の全ての部分回路について、部分回路データベースの中から、評価ゲート総数または評価消費電力または評価エネルギーが現在の値より大きくなり、かつ増大幅が最も小さくなる部分回路データ１５０１を検索し、該部分回路データを使用して評価ゲート総数、評価消費電力、評価エネルギー、評価最高動作周波数、評価スループットを計算して、ステップＳ５７に戻る（Ｓ５８）。
【００９９】
以上のように本実施の形態によれば、アーキテクチャベースに消費エネルギーに関する情報を付加することにより、暗号回路の消費エネルギーを最小消費エネルギーとすることができる。
【０１００】
（実施の形態７）
ブロック暗号方法には上記のようにＤＥＳ、ＡＥＳ等複数の方法が存在し、アプリケーションによっては複数の暗号方法へ対応がなされているものもある。ブロック暗号は基本的にラウンド関数を繰り返し実行する形態になっているため、回路性能最適化を図るための探索アルゴリズムは同じで、部分回路、アーキテクチャに関する情報を変更すれば、複数の暗号方法に対応することができる。
【０１０１】
図２１は、本発明の実施の形態７による暗号回路設計装置を示すブロック図である。なお、以下では例として、２つの暗号アルゴリズムについて述べるが、それは本発明の範囲を制限するものではない。
【０１０２】
図２１において、２１０６はデータ探索部である。データ探索部２１０６は、ユーザー入力部１０３からのデータを入力し、後述するデータベース部２１２１格納の部分回路データベースと、データベース部２１２２格納のアーキテクチャデータベースと、データベース部２１３１格納の部分回路データベースと、データベース部２１３２格納のアーキテクチャデータベースとから、ユーザー入力部１０３で与えられる制約条件を満足し、かつゲート数最小となる暗号回路となるデータを探索する。２１２１は第１の部分回路データベースを格納するデータベース部である。第１の部分回路データベースは、ある暗号アルゴリズムを実現する回路の実装可能な全ての部分回路に対する複数の異なる部分回路データ２０１から構成される。２１２２は第１のアーキテクチャデータベースを格納するデータベース部である。第１のアーキテクチャデータベースは、ある暗号を実現する回路の選択しうる全てのアーキテクチャに対する複数の異なるアーキテクチャデータ３０１から構成される。２１３１は第２の部分回路データベースを格納するデータベース部である。第２の部分回路データベースは、別の暗号を実現する回路の実装可能な全ての部分回路に対する複数の異なる部分回路データ２０１から構成される。２１３２は第２のアーキテクチャデータベースを格納するデータベース部である。第２のアーキテクチャデータベースは、別の暗号を実現する回路の選択しうる全てのアーキテクチャに対する複数の異なるアーキテクチャデータ３０１から構成される。
【０１０３】
図２２はデータ探索部２１０６の動作を示すフローチャートである。
【０１０４】
図２２において、暗号アルゴリズム２１１０を参照し、対象とする暗号を決定する。２つの部分回路データベース、アーキテクチャデータベースから、該暗号に対するデータベースを選択して、以下のアルゴリズムで使用する（Ｓ６１）。ステップＳ６２〜Ｓ６８における処理動作は、図４のステップＳ１〜Ｓ７における処理動作と同様である。
【０１０５】
以上のように本実施の形態によれば、複数の暗号のそれぞれに対するデータベースを有し、暗号回路設計のための暗号をユーザー入力部で指定することにより、複数の暗号に対して実施の形態１の作用効果と同様の作用効果を呈することができる。
【０１０６】
【発明の効果】
以上説明したように本発明の請求項１に記載の暗号回路設計装置によれば、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設計装置であって、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースを格納する第１のデータベース部と、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを格納する第２のデータベース部と、スループットと動作周波数とを入力するユーザー入力部と、入力した動作周波数において入力したスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目的とする探索アルゴリズムに基づいて、必要な部分回路を第１のデータベース部から探索し、必要なアーキテクチャを第２のデータベース部から探索するデータ探索部と、データ探索部による探索結果から暗号回路を生成する回路生成部とを有することにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１０７】
請求項２に記載の暗号回路設計装置によれば、請求項１に記載の暗号回路設計装置において、ユーザー入力部における入力として暗号モードを加え、第１のデータベース部に格納されている部分回路データベースは、暗号化のみを処理するための部分回路と暗号化・復号化の双方を処理するための部分回路を有し、第２のデータベース部に格納されているアーキテクチャデータベースは、暗号化のみを処理するためのアーキテクチャと暗号化・復号化の双方を処理するためのアーキテクチャを有し、データ探索部は、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したスループットにより動作可能とし、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索するにより、所定の暗号モードで暗号を実行する暗号回路が、満たすべきスループットと動作周波数を満足し、かつ必要最小限のゲート数となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１０８】
請求項３に記載の暗号回路設計装置によれば、請求項２に記載の暗号回路設計装置において、一回の通信に使用されるデータ長が共通鍵ブロック暗号のブロック長より短い場合、ユーザー入力部における入力として通信で使用するデータ長を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したデータ長による通信で入力したスループットによる動作が可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することにより、実際に通信で使用するビット数を考慮に入れ、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１０９】
請求項４に記載の暗号回路設計装置によれば、請求項１に記載の暗号回路設計装置において、共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、ユーザー入力部における入力として共通鍵の長さを加え、データ探索部は、暗号回路が、入力した共通鍵の長さにおける共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより実行可能で、かつ最小ゲート数となることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することにより、使用する共通鍵の長さである共通鍵ブロック暗号の処理に必要最小限のゲート数による暗号回路の生成を可能にするので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１１０】
請求項５に記載の暗号回路設計装置によれば、請求項１に記載の暗号回路設計装置において、部分回路データベースに、選択可能な部分回路に関して、消費電力の情報を加え、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を、動作周波数においてスループットにより実行可能で、かつ最小消費電力とすることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費電力が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１１１】
請求項６に記載の暗号回路設計装置によれば、請求項５に記載の暗号回路設計装置において、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、データ探索部は、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより実行可能で、かつ最小消費エネルギーとすることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費エネルギーが最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１１２】
請求項７に記載の暗号回路設計装置によれば、請求項１に記載の暗号回路設計装置において、複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、第１のデータベース部に部分回路データベースが、第２のデータベース部にアーキテクチャデータベースがそれぞれ格納され、ユーザー入力部における入力として、回路で実現する共通鍵ブロック暗号名を加え、データ探索部は、暗号回路が、入力された名称の共通鍵ブロック暗号を、入力された動作周波数において入力されたスループットにより実行可能で、かつ最小ゲート数とすることを目的とする探索アルゴリズムに基づいて、第１のデータベース部と第２のデータベース部を探索することとしたことにより、複数の暗号に対して請求項１の作用と同様の作用を呈することができるという有利な効果が得られる。
【０１１３】
請求項８に記載の暗号回路設方法によれば、ラウンド関数を繰り返し適用する共通鍵ブロック暗号を実現する暗号回路を設計する暗号回路設方法であって、暗号回路のスループットと動作周波数とを入力すると、選択可能な部分回路に関して、ゲート数と最高遅延時間が記述されている部分回路データベースと、選択可能なアーキテクチャに関して、アーキテクチャのゲート数、動作周波数、スループットが、アーキテクチャを構成する部分回路のゲート数と最高遅延時間の関数として記述されているアーキテクチャデータベースを使用し、入力した動作周波数において入力したスループットによる動作を可能とし、かつ最小ゲート数となる暗号回路を実現することを目標とする、アルゴリズムとして記述された探索方法に基づいて、必要なアーキテクチャをアーキテクチャデータベースから探索し、必要な部分回路を部分回路データベースから探索し、探索結果から暗号回路を生成することとしたことにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１１４】
請求項９に記載の暗号回路設計方法によれば、請求項８に記載の暗号回路設計方法において、入力として暗号モードを加え、部分回路データベースは暗号化のみを処理する部分回路と暗号化・復号化の双方を処理する部分回路を有し、アーキテクチャデータベースは、暗号化のみを処理するアーキテクチャと暗号化・復号化の双方を処理するアーキテクチャを有し、暗号回路が、共通鍵ブロック暗号を暗号モードで実行し、かつ動作周波数においてスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することにより、所定の暗号モードで暗号を実行する暗号回路が、満たすべきスループットと動作周波数を満足し、かつ必要最小限のゲート数となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１１５】
請求項１０に記載の暗号回路設計方法によれば、請求項９に記載の暗号回路設計方法において、一回の通信に使用されるデータ長が、共通鍵ブロック暗号のブロック長より短い場合、入力として通信で使用するデータ長を加え、暗号回路が、共通鍵ブロック暗号を入力した暗号モードで実行し、かつ入力した動作周波数において入力したデータ長による通信で入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたことにより、実際に通信で使用するビット数を考慮に入れ、かつゲート数が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１１６】
請求項１１に記載の暗号回路設計方法によれば、請求項８に記載の暗号回路設計方法において、共通鍵ブロック暗号が共通鍵の長さを複数取ることができる場合、入力として共通鍵の長さを加え、暗号回路が、共通鍵の長さにおける共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたことにより、使用する共通鍵の長さである共通鍵ブロック暗号の処理に必要最小限のゲート数による暗号回路の生成を可能にするので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができる有利な効果が得られる。
【０１１７】
請求項１２に記載の暗号回路設計方法によれば、請求項８に記載の暗号回路設計方法において、部分回路データベースに、選択可能な部分回路に関して、消費電力に関する情報を加え、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費電力を、アーキテクチャを構成する部分回路の消費電力の関数として表される情報を加え、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小消費電力となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費電力が最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１１８】
請求項１３に記載の暗号回路設計方法によれば、請求項１２に記載の暗号回路設計方法において、アーキテクチャデータベースに、選択可能なアーキテクチャに関して、アーキテクチャ全体の消費エネルギーを、アーキテクチャを構成する部分回路の消費電力の関数として表す情報を加え、暗号回路が、共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小消費エネルギーとなることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたことにより、暗号回路が満たすべきスループットと動作周波数を満足し、かつ消費エネルギーが最小となる暗号回路を生成することができるので、暗号のハードウェア実装において機器の要求性能に沿った暗号回路を短期間に設計することができるという有利な効果が得られる。
【０１１９】
請求項１４に記載の暗号回路設計方法によれば、請求項８に記載の暗号回路設計方法において、複数の共通鍵ブロック暗号の各共通鍵ブロック暗号に対して、部分回路データベースとアーキテクチャデータベースを有し、入力として回路で実現する共通鍵ブロック暗号名を加え、暗号回路が、入力した共通鍵ブロック暗号名の共通鍵ブロック暗号を、入力した動作周波数において入力したスループットにより動作可能であり、かつ最小ゲート数となることを目標とする探索方法に基づいて、アーキテクチャデータベースと部分回路データベースを探索することとしたことにより、複数の暗号に対して請求項８の作用と同様の作用を呈することができるという有利な効果が得られる。
【図面の簡単な説明】
【図１】本発明の実施の形態１による暗号回路設計装置を示すブロック図
【図２】部分回路データベースを構成する部分回路データの構造を示すデータ構造図
【図３】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図４】データ探索部の動作を示すフローチャート
【図５】本発明の実施の形態２による暗号回路設計装置を示すブロック図
【図６】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図７】データ探索部の動作を示すフローチャート
【図８】本発明の実施の形態３による暗号回路設計装置を示すブロック図
【図９】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図１０】データ探索部の動作を示すフローチャート
【図１１】本発明の実施の形態４による暗号回路設計装置を示すブロック図
【図１２】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図１３】データ探索部の動作を示すフローチャート
【図１４】本発明の実施の形態５による暗号回路設計装置を示すブロック図
【図１５】部分回路データベースを構成する部分回路データの構造を示すデータ構造図
【図１６】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図１７】データ探索部の動作を示すフローチャート
【図１８】本発明の実施の形態６による暗号回路設計装置を示すブロック図
【図１９】アーキテクチャデータベースを構成するアーキテクチャデータの構造を示すデータ構造図
【図２０】データ探索部の動作を示すフローチャート
【図２１】本発明の実施の形態７による暗号回路設計装置を示すブロック図
【図２２】データ探索部の動作を示すフローチャート
【符号の説明】
１０１、１０２、５０２、８０２、１１０２、１４０１、１４０２、１５０１、１８０２、２１２１、２１２２、２１３１、２１３２  データベース部
１０３  ユーザー入力部
１０４  スループット
１０５  動作周波数
１０６、５０６、８０６、１１０６、１４０６、１８０６、２１０６  データ探索部
１０７  暗号回路
１０８  回路生成部
２０１  部分回路データ
２０２  回路種別番号
２０３  シリアル・ナンバ
２０４  回路記述
２０５  ゲート数
２０６  最長遅延時間
３０１、６０１、９０１、１２０１、１６０１、１９０１  アーキテクチャデータ
３０２  アーキテクチャ種別番号
３０３  実行サイクル
３０４  アーキテクチャ記述
３０５  ゲート数評価関数
３０６  動作周波数評価関数
３０７、９０２  スループット評価関数
５１０  暗号モード
６０２  復号有無情報
８１０  通信ビット数
１１１０  鍵長
１２０２  鍵長情報
１４１０  ゲート数
１４１１、１５０２  消費電力
１４１２、１８１２  最適化項目
１６０２  消費電力評価関数
１８１１  エネルギー
１９０２  エネルギー評価関数
２１１０  暗号アルゴリズム
【図１】
2004178507.tif 000003
【図２】
2004178507.tif 000004
【図３】
2004178507.tif 000005
【図４】
2004178507.tif 000006
【図５】
2004178507.tif 000007
【図６】
2004178507.tif 000008
【図７】
2004178507.tif 000009
【図８】
2004178507.tif 000010
【図９】
2004178507.tif 000011
【図１０】
2004178507.tif 000012
【図１１】
2004178507.tif 000013
【図１２】
2004178507.tif 000014
【図１３】
2004178507.tif 000015
【図１４】
2004178507.tif 000016
【図１５】
2004178507.tif 000017
【図１６】
2004178507.tif 000018
【図１７】
2004178507.tif 000019
【図１８】
2004178507.tif 000020
【図１９】
2004178507.tif 000021
【図２０】
2004178507.tif 000022
【図２１】
2004178507.tif 000023
【図２２】
2004178507.tif 000024