(57)【要約】【課題】  処理の高速性、低消費電力、ゲート規模の小ささの要件を満たすことのできる暗号化・復号化処理回路に関する技術を提供する。【解決手段】  本発明によれば、中間データと鍵情報との少なくともいずれかに基づきラウンド鍵情報を生成する第１の回路を第１の制御情報の入力に応じて再構成し、処理対照のデータと中間データとの少なくともいずれかとラウンド鍵情報とに基づいて演算処理を行う第２の回路を第２の制御情報の入力に応じて再構成する、回路再構成プロセッサと、第１のタイミングで第１の制御情報を、第２のタイミングで第２の制御情報を回路再構成プロセッサに出力する制御手段と、を少なくとも備える暗号処理装置が提供される。ただし、中間データは、第１の回路において生成された鍵情報と、前記第２の回路において行われた演算処理の結果のデータとの少なくともいずれかを含む。【選択図】  図１
2007094377.tif 000002
【特許請求の範囲】
【請求項１】
データに対し予め定められた暗号処理を実行する暗号処理装置であって、
処理対象の前記データと、鍵情報を保持する保持手段と、
前記暗号処理の途中で生成される情報を中間データとして保持する中間データ保持手段と、
前記中間データと前記鍵情報との少なくともいずれかに基づきラウンド鍵情報を生成する第１の回路を第１の制御情報の入力に応じて再構成し、前記データと前記中間データとの少なくともいずれかと前記ラウンド鍵情報とに基づいて演算処理を行う第２の回路を第２の制御情報の入力に応じて再構成する、回路再構成プロセッサと、
第１のタイミングで前記第１の制御情報を前記回路再構成プロセッサに出力し、第２のタイミングで前記第２の制御情報を前記回路再構成プロセッサに出力する制御手段と、を備え、
前記中間データは、前記第１の回路において生成された前記ラウンド鍵情報と、前記第２の回路において行われた演算処理の結果のデータとの少なくともいずれかを含み、
前記第２の回路において行われた前記演算処理の結果のデータは暗号処理の結果として出力されることを特徴とする暗号処理装置。
【請求項２】
前記制御手段は、同時に処理する必要の無い２つ以上のｎ個の暗号処理を一定周期以内のｎ分割された各々第ｉのタイミングで第ｉの回路を第ｉの制御情報の入力に応じて再構成することを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記暗号処理は、共通鍵暗号の、暗号化処理又は復号化処理であることを特徴とする請求項１又は２に記載の暗号処理装置。
【請求項４】
前記暗号処理は、共通鍵暗号の、ラウンド鍵生成工程およびデータラウンド処理工程を含む暗号化処理又は復号化処理であることを特徴とする請求項１又は２に記載の暗号処理装置。
【請求項５】
前記第１及び第２のタイミングは、それぞれ一定時間おきに予め定められた回数生起することを特徴とする請求項１又は２に記載の暗号処理装置。
【請求項６】
前記第１及び第２の回路は、前記暗号処理に含まれる各処理に対応する回路の差分に相当する回路であることを特徴とする請求項１乃至５のいずれか１項に記載の暗号処理装置。
【請求項７】
データに対し予め定められた暗号処理を実行する暗号処理装置であって、
処理対象の前記データと、鍵情報と、暗号化と復号化とのいずれかを指定する指定情報と、を保持する保持手段と、
前記暗号処理の途中で生成される情報を中間データとして保持する中間データ保持手段と、
前記中間データと前記鍵情報との少なくともいずれかに基づき第１のラウンド鍵情報を生成する第１の回路を第１の制御情報の入力に応じて再構成し、前記データと前記中間データとの少なくともいずれかと前記第１のラウンド鍵情報とに基づいて暗号化処理を行う第２の回路を第２の制御情報の入力に応じて再構成し、前記中間データと前記鍵情報との少なくともいずれかに基づき第２のラウンド鍵情報を生成する第３の回路を第３の制御情報の入力に応じて再構成し、前記データと前記中間データとの少なくともいずれかと前記第２のラウンド鍵情報とに基づいて復号化処理を行う第４の回路を第４の制御情報の入力に応じて再構成する、回路再構成プロセッサと、
前記指定情報において暗号化が指定されている場合、第１のタイミングで前記第１の制御情報を前記回路再構成プロセッサに出力し、第２のタイミングで前記第２の制御情報を前記回路再構成プロセッサに出力し、前記指定情報において復号化が指定されている場合、第１のタイミングで前記第３の制御情報を前記回路再構成プロセッサに出力し、第２のタイミングで前記第４の制御情報を前記回路再構成プロセッサに出力する制御手段と、を備え、
前記中間データは、前記第１の回路において生成された前記ラウンド鍵情報と、前記第２の回路において行われた演算処理の結果のデータと、前記第３の回路において生成された前記ラウンド鍵情報と、前記第４の回路において行われた演算処理の結果のデータとの少なくともいずれかを含み、
前記第２の回路において行われた演算処理の結果のデータと、前記第４の回路において行われた演算処理の結果のデータは暗号処理の結果として出力されることを特徴とする暗号処理装置。
【請求項８】
前記回路再構成プロセッサは、前記制御情報の入力に応じて前記回路を一定時間内に再構成することを特徴とする請求項１乃至７のいずれか１項に記載の暗号処理装置。
【請求項９】
前記暗号処理はＡＥＳアルゴリズムに基づくことを特徴とする請求項１乃至８のいずれか１項に記載の暗号処理装置。
【請求項１０】
前記制御手段は、予め定義された指標に基づいて、前記第１及び第２のタイミングの少なくともいずれかと、前記回路再構成プロセッサに出力する前記制御情報と、の少なくともいずれかを決定することを特徴とする請求項１乃至９のいずれか１項に記載の暗号処理装置。
【請求項１１】
前記指標は、処理負荷、スループット、暗号強度、動作モード、消費電力、回路規模の少なくともいずれかであることを特徴とする請求項１０に記載の暗号処理装置。
【請求項１２】
前記動作モードは、ＥＣＢ、ＣＢＣ、ＣＦＢ、ＯＦＢ、ＣＴＲのうちの少なくともいずれかを含むことを特徴とする請求項１１に記載の暗号処理装置。
【請求項１３】
ユーザから前記指標に関する指定を受け付ける受付手段を更に備え、
前記制御手段は、前記受付手段が受け付けた前記指定に基づいて、前記決定を行う
ことを特徴とする請求項１０乃至１２のいずれか１項に記載の暗号処理装置。
【請求項１４】
前記指標に関する指定と、回路構成とクロック速度と再構成の制御方法との少なくともいずれかを示す再構成制御情報と、の対応関係を示す情報を記憶する記憶手段を更に備え、
前記制御手段は、前記受付手段が受け付けた前記指定に対応する前記再構成制御情報を参照し、当該再構成制御情報に基づいて前記決定を行う
ことを特徴とする請求項１３に記載の暗号処理装置。
【請求項１５】
前記指標に関する指定には、指標の要求レベルの指定が含まれる
ことを特徴とする請求項１３又は１４に記載の暗号処理装置。
【請求項１６】
予め定められた装置状態を検出する検出手段を更に備え、
前記制御手段は、前記検出手段により検出された前記装置状態に基づいて前記決定を行う
ことを特徴とする請求項１０乃至１５のいずれか１項に記載の暗号処理装置。
【請求項１７】
前記装置状態には、バッテリ残容量と、実行アプリーケーションで使用する暗号強度と、スループットと、の少なくともいずれかが含まれる
ことを特徴とする請求項１６に記載の暗号処理装置。
【請求項１８】
前記制御手段は、
前記受付手段が、高いスループットを示す指定を受け付けた場合は、遅延及びサイクル数が少なく、かつ、高速なクロックで、回路を動的再構成するように、前記決定を行う
ことを特徴とする請求項１０乃至１７のいずれか１項に記載の暗号処理装置。
【請求項１９】
前記制御手段は、
前記受付手段が、低消費電力を示す指定を受け付けた場合は、小規模な回路を低速クロックで動的再構成するように、前記決定を行う
ことを特徴とする請求項１０乃至１８のいずれか１項に記載の暗号処理装置。
【請求項２０】
前記制御手段は、
前記検出手段が、バッテリ残容量が予め定められた量以下であることを検出した場合は、小規模な回路を低速クロックで動的再構成するように、前記決定を行うことを特徴とする請求項１０乃至１８のいずれか１項に記載の暗号処理装置。
【請求項２１】
前記制御手段は、
前記検出手段が、実行アプリケーションで使用する暗号強度を検出した場合は、当該暗号強度に対応する暗号鍵ビット数を処理する回路を動的再構成するように、前記決定を行うことを特徴とする請求項１０乃至１８のいずれか１項に記載の暗号処理装置。
【請求項２２】
前記制御手段は、
前記検出手段が、実行アプリケーションで使用するスループットを検出した場合は、当該スループットに対応するする遅延及びサイクル数、クロック速度で処理する回路を動的再構成するように、前記決定を行うことを特徴とする請求項１０乃至１８のいずれか１項に記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータを暗号化・復号化する技術に関する。
【背景技術】
【０００２】
近年の情報技術・ネットワーク技術の発展に伴い、情報に対するセキュリティ（安全性）確保のニーズが高まっている。情報のセキュリティを確保する為の技術として、所定の暗号化方式に基づきデータを暗号化・復号化する暗号技術が知られている。暗号化方式は共通鍵暗号（秘密鍵暗号）と公開鍵暗号に大別される。
【０００３】
前者（共通鍵暗号）は暗号化に用いる暗号鍵と復号化に用いる復号鍵とが同一（共通）である暗号化方式である。共通鍵暗号を用いた構成においては、データの暗号化を行う側と暗号化されたデータを復号化する側との双方において、事前に同一の鍵を共有しておく必要がある。このため、共通鍵暗号方式を用いたシステムにおいては、鍵の共有と管理を安全に行う仕組みを必要とする。
【０００４】
一方、後者（公開鍵暗号）は暗号化に用いる鍵と復号化に用いる鍵とが異なる暗号化方式である。公開鍵暗号を用いた構成においては、事前にデータの復号側毎に公開鍵と秘密鍵という異なる２つの鍵を用意しておく。公開鍵はデータの暗号化に用いる暗号化鍵としての役割を担う鍵であり、システムにおいて公開される。秘密鍵はデータの復号化に用いる復号鍵としての役割を担う鍵であり、データの復号側によって秘密に管理される。公開鍵暗号方式を用いたシステムにおいて、暗号化の際には公開されている通信相手の公開鍵を用いて暗号化する。復号の際には、復号側は自分の秘密鍵を用いて復号化する。
【０００５】
公開鍵暗号方式においては公開鍵から復号鍵を求めることは数学的に困難である。このため、公開鍵暗号方式を用いたシステムにおいてはデータの復号側が自分の秘密鍵を秘密に管理するのみでシステムの安全性が保たれる。
【０００６】
ただし、暗号化・復号化に要する計算コストは、共通鍵暗号の方が公開鍵暗号よりもずっと小さい。言い換えると、共通鍵暗号による演算は公開鍵暗号による演算よりもずっと高速である。
【０００７】
共通鍵暗号の代表的な方式としては、従来より事実上の標準として広く使われてきたＤＥＳや、２００１年にＮＩＳＴ（米国商務省標準技術局）により米国標準の１２８ビット共通鍵ブロック暗号ＡＥＳとして選定されたＲｉｊｎｄａｅｌが知られている。なお、ＤＥＳはData Encryption Standardの略称である。ＡＥＳはAdvanced Encryption Standardの略称である。
【０００８】
ＤＥＳ、ＡＥＳの基本処理はシンプルであり、ラウンド関数と呼ばれるデータ変換処理を一定回数繰り返し実行する構成となっている。ＡＥＳでは、１２８ビット（１６バイト）の入力データに対して、４つの基本演算（ＳｈｉｆｔＲｏｗｓ、ＳｕｂＢｙｔｅｓ、ＭｉｘＣｏｌｕｍｎｓ、ＡｄｄＲｏｕｎｄＫｅｙ）を複数回繰り返す。ラウンド数は鍵長によって異なり、１２８ビット鍵では１１、１９２ビット鍵では１３、２５６ビット鍵では１５と定められている。
【０００９】
ＡＥＳの基本演算のＳｈｉｆｔＲｏｗｓはデータを４バイト×４バイトの行列と見なした上で、各行を０〜３バイト巡回シフトする。
【００１０】
ＳｕｂＢｙｔｅｓはデータの各バイトを２8のガロア体ＧＦ（２8）の逆元に変換し、更に、アフィン変換と呼ばれる行列変換を行う。ＳｕｂＢｙｔｅｓは或る１バイトから異なる１バイトへの写像であり、真理値表として表現できる。
【００１１】
ＭｉｘＣｏｌｕｍｎｓは上記行列の各列に対し、要素のそれぞれを係数とする３次多項式と見なし、その３次多項式に多項式{03}16X3+{01}16X2+{01}16X+{02}16を乗じる。ただし{k}nはn進表現の値kを表す。そして、乗算によって得られた多項式をX4+1で剰余を取り、結果として得られた多項式の４係数を出力する。
【００１２】
ＡｄｄＲｏｕｎｄＫｅｙはデータと秘密鍵から生成されるラウンド鍵とのＸＯＲを計算する。
【００１３】
このような暗号化・復号化処理は一定の演算負荷を要する。このため従来の構成においては用途や目的に応じて、スループット（処理速度）・低消費電力化を重視してハードウエアで実現する構成と、スループットよりもコスト・柔軟性を重視してソフトウエアで実現する構成が取られていた。
【００１４】
例えば、ＡＥＳの処理構成をｘ８６プロセッサ上でソフトウエアで実現する場合、ラウンド関数における演算をテーブルとしてメモリに保持しておく、ラウンド鍵を事前に計算しておく等、大きなメモリを使用可能という利点を活かした工夫が可能である。この場合、クロック周波数８００ＭＨｚで、３５０サイクル程度で実現でき、スループットは３６０Ｍｂｐｓ程度を実現することができる。但し、ＣＰＵは通常暗号処理以外の処理も行うので実用上はスループットは数十〜数百Ｍｂｐｓとなる。１Ｇｂｐｓ以上の性能が必要な場合はハードウエアで実現せざるを得ない。
【００１５】
ＡＥＳでは１２８ビットのデータを３２ビットの関数を４つ集めた形のラウンド関数で演算する。このためＡＥＳをハードウエアで実現する場合、１ラウンドの処理を３２ビットずつ複数クロックかけて処理する場合、サイクル数は多くなるが、回路規模は小さくなる。一方、１ラウンドの処理を３２ビットずつ１クロックかけて処理する場合、サイクル数は小さくなるが、回路規模は大きくなる。例えば、１ラウンドを１クロックで処理する場合は、サイクル数は１１、回路規模は３万ゲート程度、スループットは２〜３Ｇｂｐｓ程度となる。１ラウンドを４クロックで処理する場合は、サイクル数は４４、回路規模は１万ゲート程度、スループットは５００Ｍｂｐｓ程度となる。
【００１６】
ＡＥＳの暗号化・復号化を実行する従来のハードウエア構成について図７を参照して説明する。図７は、ＡＥＳ暗号化・復号化回路の従来のハードウエア構成を例示的に示した図である。
【００１７】
図７において、８００はＡＥＳ暗号化・復号化回路の範囲を示している。８０１は入力データラウンド処理回路、８０２は鍵ラウンド処理回路である。８０３は２：１セレクタ回路、８０４はＤａｔａ  Ｒｅｇｉｓｔｅｒである。８０５はＳｈｉｆｔＲｏｗｓ／ＩｎｖＳｈｉｆｔＲｏｗｓ回路、８０６はＳｕｂＢｙｔｅｓ／ＩｎｖＳｕｂＢｙｔｅｓ回路である。８０７はＭｉｘＣｏｌｕｍｎｓ／ＩｎｖＭｉｘＣｏｌｕｍｎｓ回路、８０８は３：１セレクタ回路である。８０９はＡｄｄＲｏｕｎｄＫｅｙ回路、８１０はＫｅｙＥｘｐａｎｄｅｒ回路である。
【００１８】
ただし、ＩｎｖＳｈｉｆｔＲｏｗｓはＳｈｉｆｔＲｏｗｓの逆関数、ＩｎｖＳｕｂＢｙｔｅｓはＳｕｂＢｙｔｅｓの逆関数、ＩｎｖＭｉｘＣｏｌｕｍｎｓはＭｉｘＣｏｌｕｍｎｓの逆関数をそれぞれ意味する。８０５、８０６、８０７はそれぞれ正関数と逆関数を切替えて１つの回路で実現するようにしている。このため、以下、８０５、８０６、８０７をそれぞれＳｈｉｆｔＲｏｗｓ、ＳｕｂＢｙｔｅｓ、ＭｉｘＣｏｌｕｍｎｓと称する。
【００１９】
上記の構成要素によって実現されるＡＥＳのラウンド関数の中で処理の負荷が最も大きい箇所は、Ｓ−Ｂｏｘと呼ばれているＳｕｂＢｙｔｅｓ８０６の非線形変換の処理に係る部分である。１２８ビットのデータラウンド処理を１クロックで実現する場合には１バイト用のＳｕｂＢｙｔｅｓが１６個必要となる。このため、ＳｕｂＢｙｔｅｓを実現する構成がスループット、面積、消費電力を左右する。
【００２０】
ＳｕｂＢｙｔｅｓの回路構成としては、ＳｕｂＢｙｔｅｓの真理値表に対応する組み合わせ回路として実現する構成と、逆元演算回路とアファイン変換回路とを直列に接続した回路として実現する構成とに大別される。
【００２１】
真理値表に対応する組み合わせ回路は、積和形の回路や、１段或いは多段のＡＮＤ−ＸＯＲ形の回路として実現可能であり、例えば、論理合成ツールによる自動合成により設計することができる。
【００２２】
逆元演算回路は、ガロア体ＧＦ（２8）上では、任意の値Ｘの逆元Ｘ-1＝Ｘ254という性質を利用して、順序回路により構成できる。即ち、ガロア体ＧＦ（２8）上で２５４乗を計算することによって逆元を求めることができる。しかし、単純に２５４回ループさせて乗算するとクロックサイクルが著しく多くなって出力の遅延が大きくなってしまう。逆元演算回路の構成法としては、３回のループで逆元演算を実現する伊東・辻井のアルゴリズムが知られている。
【００２３】
ＳｕｂＢｙｔｅｓ回路の構成により、その回路規模や出力遅延は大きく異なる。例えば、自動合成した回路では出力遅延は少ないが、回路規模は３０００ゲート弱と大きくなってしまう。一方、逆元演算回路を伊東・辻井のアルゴリズムを実装した構成では出力遅延はやや大きいが、回路規模は２０００ゲート弱と比較的小さくなる。
【００２４】
このように、ＡＥＳをハードウエアで実現する場合、速度、回路規模、消費電力等の各評価項目の値は回路構成に大きく依存する。このため、従来の設計においては、用途や目的に応じて、速度、回路規模、消費電力等の各要求仕様のうちの何れかの優先的な要求仕様が満たされるように、ＳｕｂＢｙｔｅｓの回路構成が選択・設計されていた。
【００２５】
また、他の従来例としては、特許文献１には剰余乗算を小規模な回路で高速に実現する技術が開示されている。これは、小規模の複数の演算素子を縦続に接続してパイプライン処理を行うことにより、小規模な回路により高速に暗号化の剰余乗算を行うものである。なお、剰余乗算は、乱数を用いた一部の共通暗号、及び、ＲＳＡ暗号、エルガマル暗号等の公開鍵暗号において使用されている。
【００２６】
一方、従来より、回路構成を変更可能なデバイスとしてＦＰＧＡ（Field Programmable Gate Array）が知られている。ＦＰＧＡはルックアップテーブル等からなるプリミティブな回路を単位として、様々な機能に再構成可能なＬＳＩである。但し、ＦＰＧＡは回路構成の書き換えに通常１分程度要し、クロック毎に動的に再構成するようなことはできなかった。
【００２７】
これに対して、近年、極めて短時間に内部構成を書き換え可能なダイナミック・リコンフィギュアブル・プロセッサ（動的再構成プロセッサ、回路再構成プロセッサ）が知られている。回路再構成プロセッサは再構成する回路単位を乗算器等ある程度まとまった演算回路とするとともに、その他高速化の工夫を行うことにより、例えば、６ｎｓ周期の１クロック毎に回路構成を書き換え可能にしている。
【特許文献１】特開平７−１９９８０７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２８】
上述のように、ＡＥＳの暗号化・復号化処理をソフトウエアにより実現する場合は、低コストとなる。しかし、ＣＰＵによるソフトウエア処理により、所定の処理速度以下でしか実現できず、要求される暗号化・復号化処理速度によっては所望の要求を満足できない場合もあった。また、ＣＰＵによるソフトウエア処理により、ハードウエアで実現する場合に比して、消費電力が大きかった。
【００２９】
一方、ハードウエアにより実現する場合は、ハードウエア次第で処理速度を高められ、消費電力もＣＰＵによるソフトウエア処理に比して小さくすることができる。しかし、上述のような回路規模削減の工夫を盛り込んでも、要求される暗号化処理速度を満足できない、或いは、暗号化・復号化アルゴリズムによっては、ハードウエアとしてゲートサイズが大規模となり、チップのコストが高くなるという課題があった。
【００３０】
このように従来の構成によっては、処理の高速性、低消費電力、ゲート規模の小ささの要件にトレードオフがあった。
【００３１】
本発明は上記問題に鑑みなされたものであり、処理の高速性、低消費電力、ゲート規模の小ささの要件を満たすことのできる暗号化・復号化処理回路に関する技術を提供することを目的とする。
【課題を解決するための手段】
【００３２】
上記目的を達成するため、本発明による暗号処理装置は以下の構成を備える。即ち、
データに対し所定の暗号処理を実行する暗号処理装置であって、
処理対象の前記データと、鍵情報を保持する保持手段と、
前記暗号処理の途中で生成される情報を中間データとして保持する中間データ保持手段と、
前記中間データと前記鍵情報との少なくともいずれかに基づきラウンド鍵情報を生成する第１の回路を第１の制御情報の入力に応じて再構成し、前記データと前記中間データとの少なくともいずれかと前記ラウンド鍵情報とに基づいて演算処理を行う第２の回路を第２の制御情報の入力に応じて再構成する、回路再構成プロセッサと、
第１のタイミングで前記第１の制御情報を前記回路再構成プロセッサに出力し、第２のタイミングで前記第２の制御情報を前記回路再構成プロセッサに出力する制御手段と、を備え、
前記中間データは、前記第１の回路において生成された前記鍵情報と、前記第２の回路において行われた演算処理の結果のデータとの少なくともいずれかであり、
前記第２の回路において行われた前記演算処理の結果のデータは暗号処理の結果として出力される。
【発明の効果】
【００３３】
本発明によれば、処理の高速性、低消費電力、ゲート規模の小ささの要件を満たすことのできる暗号化・復号化処理回路に関する技術を提供することができる。
【発明を実施するための最良の形態】
【００３４】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００３５】
＜＜第１実施形態＞＞
本実施形態は、複数の処理工程から成る一連の暗号処理を実行する暗号処理装置に関するものである。本実施形態に係る暗号処理装置は、実行期間が異なる２つ以上の暗号処理工程のそれぞれについて、同一の動的再構成手段（回路再構成プロセッサ）を用いて、各々の暗号処理回路を各処理期間に動的に再構成し、各暗号処理工程を実現する。即ち、従来の構成においては各々独立に用意していた個々の暗号処理回路を、本実施形態に係る構成においては１つの回路再構成プロセッサを時分割に用いて実現する。これにより、回路規模を削減し、高パフォーマンス（高速処理）、低消費電力、低コスト（小ゲート規模）を満足することができる。
【００３６】
（基本処理）
まず、本実施形態に係る暗号処理装置としての暗号化回路が実行する基本処理について図１を参照して説明する。図１は、本実施形態に係る暗号処理装置が実行する基本処理の流れを示したフローチャートである。図１は、例として、２つの異なる処理期間（各々処理期間１、処理期間２とする）に、それぞれ所定の処理（処理１、処理２とする）を実行する場合の動作フローを示している。
【００３７】
まず、ステップＳ１００において処理期間１のタイミングを検出したか否かを判定する。検出した場合（ステップＳ１００でＹＥＳ）はステップＳ１０１へ進み、検出しなかった場合（ステップＳ１００でＮＯ）はステップＳ１０３へ進む。
【００３８】
ステップＳ１０１では、後述する制御部２０２の制御により、処理期間１用の再構成情報１を後述する再構成情報記憶部２０３より読み出す。そして読み出された再構成情報１に基づき、処理回路１を後述する動的再構成回路２０１に動的に再構成する。
【００３９】
次に、ステップＳ１０２において、ステップＳ１０１において動的再構成された処理回路１が所定の処理１を実行し、ステップＳ１０３に進む。
【００４０】
ステップＳ１０３では、処理期間２のタイミングを検出したか否かを判定する。検出した場合（ステップＳ１０３でＹＥＳ）はステップＳ１０４へ進み、検出しなかった場合（ステップＳ１０３でＮＯ）はステップＳ１００へ進む。
【００４１】
ステップＳ１０４では、制御部２０２の制御により、処理期間２用の再構成情報２を再構成情報記憶部２０３より読み出す。そして読み出された再構成情報２に基づき、処理回路２を動的再構成回路２０１に動的に再構成する。
【００４２】
次に、ステップＳ１０５において、ステップＳ１０４において動的再構成された処理回路２が所定の処理２を実行し、ステップＳ１００に戻る。
【００４３】
（基本構成）
本実施形態では、ＡＥＳの暗号化回路に動的再構成手段を適用し、ラウンド処理周期の前半と、後半に異なる処理回路を動的再構成して、回路規模削減を図る例を示す。図２は本実施形態に係る暗号処理装置としての暗号化回路の主要構成を示した図である。尚、図面の符号は、図７と共通する部分は同じ符号を使用する。
【００４４】
図２において、２０１は動的再構成回路、２０２は前記動的再構成回路の制御部、２０３は動的再構成する回路の情報を格納する再構成情報記憶部、２０４は制御部の制御プログラムを格納する制御情報記憶部、２０５は再構成タイミング検出部である。
【００４５】
動的再構成回路２０１は動的再構成可能なプロセッサアレイ等から構成され、回路再構成プロセッサとして機能する。制御部２０２は、通常のＣＰＵ等から構成される。動的再構成回路２０１は、再構成可能な演算器２０６と、接続を切り替えるスイッチ（以下、ＳＷと呼ぶ）２０７とから構成される。
【００４６】
再構成情報記憶部２０３、制御情報記憶部２０４は、通常のフラッシュメモリ等の不揮発性メモリから構成される。再構成タイミング検出部２０５は、本実施形態においては、ラウンド処理周期の前半と後半の開始タイミングを検出するものとする。
【００４７】
２０８は中間データ記憶部であり、動的再構成回路２０１の処理結果を格納すると共に、次回の再構成の際に該格納されたデータ（処理結果）を動的再構成回路２０１にロードする。２０９は入力データバッファであり、暗号化或いは復号化すべき入力データを格納する。２１０は鍵データバッファであり、暗号化或いは復号化する際の鍵データを格納する。２１１は出力データバッファであり、入力データを暗号化或いは復号化して生成される出力データを格納する。
【００４８】
中間データ記憶部２０８、入力データバッファ２０９、鍵データバッファ２１０、出力データバッファ２１１は、それぞれ各々ＳＲＡＭ等の揮発性メモリ、或いは、ＤＲＡＭ等の揮発性メモリ等により構成される。
【００４９】
（暗号処理装置の動作）
次に、本実施形態に係る暗号処理装置としての暗号化回路の動作について図３、４を参照して説明する。
【００５０】
図３は、本実施形態に係る暗号処理装置としての暗号化回路の内部構成を示したブロック図である。本実施形態では暗号処理装置としてＡＥＳ暗号化を行う回路について例示的に説明するが、これに限られるわけではない。例えば、本実施形態の構成はＡＥＳ復号化に適用することができる。また、ＤＥＳ等の他の暗号化・復号化回路にも適用することができる。図３に例示した暗号化回路は、動的再構成回路２０１の部分に、ラウンド処理周期の前半に鍵データラウンド処理部を動的再構成し、ラウンド処理周期の後半に入力データラウンド処理部を動的再構成する。
【００５１】
図４は本実施形態に係る構成の動作の流れを示したフローチャートである。
【００５２】
まず、ステップＳ４００において、制御部２０２は再構成タイミング検出部２０５によりラウンド処理周期の前半の開始タイミングが検出されたか否かを判定する。検出された場合（ステップＳ４００でＹＥＳ）はステップＳ４０１へ進み、検出されなかった場合（ステップＳ４００でＮＯ）はステップＳ４０３へ進む。なお、再構成タイミング検出部２０５はラウンド処理周期の前半の開始タイミングを検出すると、検出したことを示す情報を制御部２０２に割り込み等で通知する。制御部２０２はこの情報に基づいてステップＳ４００の判定を行う。
【００５３】
ステップＳ４０１において、制御部２０２は、制御情報記憶部２０４に格納されたプログラムに基づいて、再構成情報記憶部２０３より鍵データラウンド処理部８０２の再構成情報を読み出す。さらに、読み出した再構成情報に基づいて動的再構成回路２０１の演算器２０６、ＳＷ２０７を制御し、動的再構成回路２０１に鍵データラウンド処理部８０２を動的再構成するように制御する。
【００５４】
次に、ステップＳ４０２において、図７の構成における処理と同様に、鍵データラウンド処理部８０２に、鍵データバッファ２１０内の鍵データと、中間データ記憶部２０８内の当該ラウンド以前のデータとの少なくともいずれかを入力するように制御する。さらに、鍵データラウンド処理部８０２が、入力されたデータに基づいて当該ラウンドのラウンド鍵を生成し、生成したラウンド鍵を中間データ記憶部２０８に格納するように制御する。そしてステップＳ４０３へ進む。
【００５５】
ステップＳ４０３においては、制御部２０２は再構成タイミング検出部２０５によりラウンド処理周期の後半の開始タイミングが検出されたか否かを判定する。検出された場合（ステップＳ４０３でＹＥＳ）はステップＳ４０４へ進み、検出されなかった場合（ステップＳ４０３でＮＯ）はステップＳ４００へ戻る。なお、ステップＳ４００における処理と同様に、再構成タイミング検出部２０５はラウンド処理周期の後半の開始タイミングを検出すると、検出したことを示す情報を制御部２０２に割り込み等で通知する。制御部２０２はこの情報に基づいてステップＳ４０３の判定を行う。
【００５６】
ステップＳ４０４において、制御部２０２は、制御情報記憶部２０４に格納されたプログラムに基づいて、再構成情報記憶部２０３より入力データラウンド処理部８０１の再構成情報を読み出す。さらに、読み出した再構成情報に基づいて動的再構成回路２０１の演算器２０６、ＳＷ２０７を制御し、動的再構成回路２０１に入力データラウンド処理部８０１を動的再構成するように制御する。
【００５７】
次に、ステップＳ４０５において、図７の構成における処理と同様に、入力データラウンド処理部８０１に所定のデータを入力するように制御する。即ち、入力データバッファ２０９内の入力データと中間データ記憶部２０８内の当該ラウンド以前のデータとの少なくともいずれかと、ステップＳ４０２で生成された当該ラウンドのラウンド鍵とを入力するように制御する。さらに、入力データラウンド処理部８０１が、入力されたデータに基づいて当該ラウンドのデータラウンド処理を実行し、当該処理結果を中間データ記憶部２０８と出力データバッファ２１１に格納するように制御する。そしてステップＳ４００へ戻る。
【００５８】
以上説明したように、本実施形態に係る構成においては、ＡＥＳ暗号化回路のラウンド処理周期の前半と後半に各々鍵データラウンド処理部と、入力データラウンド処理部を、動的再構成する。これにより、本実施形態に係る構成によれば、従来の構成に比べて大幅にＡＳＩＣゲートの回路規模を削減することができる。
【００５９】
例えば、暗号化のみ、又は、復号化のみを実行する従来の回路においては、鍵データラウンド処理部に対応する回路に約１万ＡＳＩＣゲートの規模、入力データラウンド処理部に対応する回路に約３万ＡＳＩＣゲートの規模を要していた。即ち、従来の構成においては合計約４万（＝１万＋３万）ＡＳＩＣゲート程度の規模を要していた。
【００６０】
これに対して、本実施形態に係る構成においては、動的再構成回路が３万ＡＳＩＣゲート程度の規模を備えていれば、従来の構成における鍵データラウンド処理部と入力データラウンド処理部の双方に対応する回路を実現することができる。このため、本実施形態に係る構成によれば、従来の構成に比べて回路規模が１万（＝４万−３万）ＡＳＩＣゲート程度小さくても従来の構成と同等の機能を実現することができる。
【００６１】
また、例えば、暗号化及び復号化の両方の処理を動作モードに応じて切り替えて実行する従来の回路は約６．５万ＡＳＩＣゲート程度の規模を要していた。これは、鍵データラウンド処理部に対応する回路に約１．５万ＡＳＩＣゲート、入力データラウンド処理部に対応する回路に約５万ＡＳＩＣゲートの規模を要していたため（約１．５万＋約５万＝約６．５万）である。
【００６２】
これに対して、本実施形態に係る構成においては、動的再構成回路が５万ＡＳＩＣゲート程度の規模を備えていれば、従来の構成における鍵データラウンド処理部と入力データラウンド処理部の双方に対応する回路を実現することができる。このため、本実施形態に係る構成によれば、従来の構成に比べて回路規模が１．５万（＝６．５万−５万）ＡＳＩＣゲート程度小さくても従来の構成と同等の機能を実現することができる。
【００６３】
尚、動的再構成回路２０１制御用の制御部２０２の処理負荷は数ＭＩＰＳ程度、制御情報用記憶部２０４、再構成情報記憶部２０３に要する容量は数ｋＢｙｔｅ程度である。このように、ＡＥＳ暗号化回路２００を包含する装置自体の制御部及び制御情報用記憶部、データ用記憶部に容易に実装可能であり、回路規模の増大の要因になることはない。
【００６４】
また、データ暗号化の要求スループットが１Ｇｂｐｓとし、１２８ビットのデータを１ラウンド１クロックで１１サイクルかけて処理する場合を考える。この場合、１ラウンドを処理するクロック周期は最低１２８／（１１×１×１０9）＝１１．６ｎｓ以内に１ラウンドの暗号化処理を実行する必要がある。上記１ラウンドの処理期間の間に、鍵データラウンド処理と入力データラウンド処理を時分割で実行することを考慮すると、各処理は更に半分以下の時間以内に実行する必要がある。近年発表された高速のリコンフィギュアプロセッサは最大１６６ＭＨｚ動作で、１クロック（６ｎｓ）で再構成を実現する。このため、このような高速な動的再構成手段を用いることで、上記した様なラウンド処理周期の前半と、後半で、異なる処理回路を動的再構成することができる。従って、ほぼ１Ｇｂｐｓのスループットを実現することが可能である。
【００６５】
以上のように、本実施形態に係る構成によれば回路規模を大きく削減できると同時に、高速な処理を実行することができる。また、暗号処理をハードウェアで実行することにより、低消費電力を実現している。
【００６６】
尚、本実施形態に係る構成において利用する動的再構成手段は、上記したような高速性を満足するものであれば、図２に示した実施形態に限定されるものではない。即ち、動的再構成回路の内部構成、制御部、再構成情報記憶部の構成等は、他のアーキテクチャーでも構わないことは言うまでもない。
【００６７】
また、本実施形態においては、鍵データラウンド処理部８０２と、入力データラウンド処理部８０１の両処理回路を異なる期間に動的再構成するものとしたが、動的再構成の対象とする回路はこれに限定されるものではない。即ち、暗号化処理において実行する工程のうち、異なる期間に実行される処理工程に対応する処理回路を動的再構成の対象として良いことは言うまでもない。例えば、ＡＥＳ暗号化回路においては、入力データ処理工程内の各工程の中から異なる期間に実行される２つ以上の異なる工程に対応する処理回路を動的再構成の対象にしても良い。なお、入力データ処理工程には、ＳｈｉｆｔＲｏｗｓ工程、ＳｕｂＢｙｔｅｓ工程、ＭｉｘＣｏｌｕｍｎｓ工程、ＡｄｄＲｏｕｎｄＫｅｙ工程等が含まれる。
【００６８】
また、本実施形態においては、入力データを暗号化するという場合の説明をしたが、入力データを復号化する場合、或いは、暗号化・復号化を切り替えて行う場合についても同様に実現できることは言うまでもない。
【００６９】
また、本実施形態においては、動的再構成を切り替える処理期間はラウンド処理周期の前半と後半としたが、動的再構成を切り替える処理期間もこれに限定されるものではない。即ち、暗号化・復号化処理工程のうち、実行する処理期間が異なる２つ以上の異なる暗号化処理工程に対応して、各々の処理期間に、対応する処理回路を動的再構成しても良いことは言うまでもない。
【００７０】
また、本実施形態においては、鍵データラウンド処理部８０２と、入力データラウンド処理部８０１の両処理回路を異なる期間に動的再構成するものとしたが、これは必ずしもそれぞれの回路の全体を動的再構成することを意味しない。即ち、次のように構成してもよい。まず、鍵データラウンド処理部８０２と入力データラウンド処理部８０１は共通部分を共通回路として予め用意しておく。そして、当該共通回路と鍵データラウンド処理部８０２との差分回路、及び、当該共通回路と入力データラウンド処理部８０１との差分回路を各々動的再構成するようにしても良い。
【００７１】
＜＜第２実施形態＞＞
第２実施形態として、ＡＥＳ暗号化回路に動的再構成手段を適用し、ラウンド処理周期の前半と、後半に異なる処理回路を動的再構成して、回路規模削減を図る例を更に示す。
【００７２】
本実施形態に係る構成は、第１実施形態と同様に、ラウンド処理周期の前半と後半で、各々鍵データラウンド処理部と、入力データ暗号化処理部を動的再構成する。ただし、本実施形態に係る構成においては、入力データを暗号化する場合は、ラウンド周期の前半に暗号化用の鍵データラウンド処理部を動的再構成し、ラウンド周期の後半時に入力データ暗号化ラウンド処理部を動的再構成するようにする。更に、入力データを復号化する場合は、ラウンド周期の前半に復号化用の鍵データラウンド処理部を動的再構成し、ラウンド周期の後半時に入力データ復号化ラウンド処理部を動的再構成するようにする。つまり、本実施形態に係る構成は、第１実施形態のように暗号化、又は、復号化の何れか一方について適宜処理回路を動的再構成するのみならず、状況に応じて暗号化と復号化をも切り替えて処理を行うものである。
【００７３】
本実施形態では暗号処理装置として、第１実施形態と同様に、ＡＥＳの暗号処理を行う回路について例示的に説明するが、これに限られるわけではない。例えば、ＤＥＳ等の他の暗号化・復号化回路にも適用することができる。
【００７４】
本実施形態に係る暗号処理装置の構成は、第１実施形態に係る暗号処理装置の構成と基本的には同様である。図５は、本実施形態に係る構成のラウンド処理周期後半の、入力データ暗号化処理時と復号化処理時とにおける動作説明図である。尚、図面の符号は、他の図と共通する部分は同じ符号を使用する。以下、図２及び図７と異なる部分のみ説明する。
【００７５】
図５においては、８１１は入力データ暗号化処理部であり、８１３はＳｈｉｆｔＲｏｗｓ、８１４はＳｕｂＢｙｔｅｓ、８１５はＭｉｘＣｏｌｕｍｎである。８１２は入力データ復号化処理部であり、８１６はＩｎｖＳｈｉｆｔＲｏｗｓ、８１７はＩｎｖＳｕｂＢｙｔｅｓ、８１８はＩｎｖＭｉｘＣｏｌｕｍｎである。
【００７６】
次に、本実施形態に係る構成の動作について図５、６を参照して説明する。図６は本実施形態に係る構成の処理の流れを示したフローチャートである。
【００７７】
まず、ステップＳ７００において、制御部２０２は再構成タイミング検出部２０５によりラウンド処理周期の前半の開始タイミングが検出されたか否かを判定する。検出された場合（ステップＳ７００でＹＥＳ）はステップＳ７０１へ進み、検出されなかった場合（ステップＳ７００でＮＯ）はステップＳ７０６へ進む。なお、第１実施形態と同様に、再構成タイミング検出部２０５はラウンド処理周期の前半の開始タイミングを検出すると、検出したことを示す情報を制御部２０２に割り込み等で通知する。制御部２０２はこの情報に基づいてステップＳ７００の判定を行う。
【００７８】
ステップＳ７０１において、制御部２０２は、暗号化または復号化のいずれかの動作モードを示す不図示の制御情報に基づいて、実行中の動作が暗号化であるか否かを判定する。暗号化である場合（ステップＳ７０１でＹＥＳ）はステップＳ７０２へ進み、暗号化でない即ち復号化である場合（ステップＳ７０１でＮＯ）はステップＳ７０４へ進む。暗号化または復号化のいずれかの動作モードを示す制御情報は、例えば、本実施形態に係る暗号処理装置を利用するユーザや外部装置から動作前に入力される。
【００７９】
ステップＳ７０２において、制御部２０２は、制御情報記憶部２０４に格納されたプログラムに基づいて、再構成情報記憶部２０３より暗号化用の鍵データラウンド処理部８０２の再構成情報を読み出す。さらに、読み出した再構成情報に基づいて動的再構成回路２０１の演算器２０６、ＳＷ２０７を制御し、動的再構成回路２０１に暗号化用の鍵データラウンド処理部８０２を動的再構成するように制御する。
【００８０】
次に、ステップＳ７０３において、図７の構成と同様に、暗号化用の鍵データラウンド処理部８０２に、鍵データバッファ２１０内の鍵データと、中間データ記憶部２０８内の当該ラウンド以前のデータとの少なくともいずれかを入力するように制御する。さらに、鍵データラウンド処理部８０２が、入力されたデータに基づいて当該ラウンドの暗号化用ラウンド鍵を生成し、生成した暗号化用ラウンド鍵を中間データ記憶部２０８に格納するように制御する。そしてステップＳ７０６へ進む。
【００８１】
一方、ステップＳ７０４において、制御部２０２は、制御情報記憶部２０４に格納されたプログラムに基づいて、再構成情報記憶部２０３より復号化用の鍵データラウンド処理部８０２の再構成情報を読み出す。さらに、読み出した再構成情報に基づいて動的再構成回路２０１の演算器２０６、ＳＷ２０７を制御し、動的再構成回路２０１に復号化用の鍵データラウンド処理部８０２を動的再構成するように制御する。
【００８２】
次に、ステップＳ７０５において、図７の構成と同様に、復号化用の鍵データラウンド処理部８０２に、鍵データバッファ２１０内の鍵データと、中間データ記憶部２０８内の当該ラウンド以前のデータとの少なくともいずれかを入力するように制御する。さらに、鍵データラウンド処理部８０２が、入力されたデータに基づいて当該ラウンドの復号化用ラウンド鍵を生成し、生成した復号化用ラウンド鍵を中間データ記憶部２０８に格納するように制御する。そしてステップＳ７０６へ進む。
【００８３】
ステップＳ７０６においては、ステップＳ７００と同様に、制御部２０２は再構成タイミング検出部２０５によりラウンド処理周期の後半の開始タイミングが検出されたか否かを判定する。検出された場合（ステップＳ７０６でＹＥＳ）はステップＳ７０７へ進み、検出されなかった場合（ステップＳ７０６でＮＯ）はステップＳ７００へ戻る。なお、ステップＳ７００と同様に、再構成タイミング検出部２０５はラウンド処理周期の後半の開始タイミングを検出すると、検出したことを示す情報を制御部２０２に割り込み等で通知する。制御部２０２はこの情報に基づいてステップＳ７０６の判定を行う。
【００８４】
ステップＳ７０７において、ステップＳ７０１と同様に、制御部２０２は、暗号化または復号化のいずれかの動作モードを示す不図示の制御情報に基づいて、実行中の動作が暗号化であるか否かを判定する。暗号化である場合（ステップＳ７０７でＹＥＳ）はステップＳ７０８へ進み、暗号化でない即ち復号化である場合（ステップＳ７０７でＮＯ）はステップＳ７１０へ進む。暗号化または復号化のいずれかの動作モードを示す制御情報は、例えば、本実施形態に係る暗号処理装置を利用するユーザや外部装置から動作前に入力される。
【００８５】
ステップＳ７０８において、制御部２０２は、制御情報記憶部２０４に格納されたプログラムに基づいて、再構成情報記憶部２０３より入力データ暗号化ラウンド処理部８１１の再構成情報を読み出す。さらに、読み出した再構成情報に基づいて動的再構成回路２０１の演算器２０６、ＳＷ２０７を制御し、動的再構成回路２０１に入力データ暗号化ラウンド処理部８１１を動的再構成するように制御する。
【００８６】
次に、ステップＳ７０９において、図７の構成における処理と同様に、入力データ暗号化ラウンド処理部８１１に所定のデータを入力するように制御する。即ち、入力データバッファ２０９内の入力データと中間データ記憶部２０８内の当該ラウンド以前のデータとの少なくともいずれかと、ステップＳ７０３で生成された当該ラウンドの暗号化用ラウンド鍵とを入力するように制御する。さらに、入力データ暗号化ラウンド処理部８１１が、入力されたデータに基づいて当該ラウンドのデータ暗号化ラウンド処理を実行し、当該処理結果を中間データ記憶部２０８と出力データバッファ２１１に格納するように制御する。そしてステップＳ７００へ戻る。
【００８７】
一方、ステップＳ７１０において、制御部２０２は、制御情報記憶部２０４に格納されたプログラムに基づいて、再構成情報記憶部２０３より入力データ復号化ラウンド処理部８１２の再構成情報を読み出す。さらに、読み出した再構成情報に基づいて動的再構成回路２０１の演算器２０６、ＳＷ２０７を制御し、動的再構成回路２０１に入力データ復号化ラウンド処理部８１２を動的再構成するように制御する。
【００８８】
次に、ステップＳ７１１において、図７の構成における処理と同様に、入力データ復号化ラウンド処理部８１２に所定のデータを入力するように制御する。即ち、入力データバッファ２０９内の入力データと中間データ記憶部２０８内の当該ラウンド以前のデータとの少なくともいずれかと、ステップＳ７０５で生成された当該ラウンドの復号化用ラウンド鍵とを入力するように制御する。さらに、入力データ復号化ラウンド処理部８１２が、入力されたデータに基づいて当該ラウンドのデータ暗号化ラウンド処理を実行し、当該処理結果を中間データ記憶部２０８と出力データバッファ２１１に格納するように制御する。そしてステップＳ７００へ戻る。
【００８９】
以上説明したように、本実施形態に係る構成においては、ＡＥＳ暗号化回路のラウンド処理周期の前半と後半に、各々鍵データラウンド処理部と、入力データ処理部を動的再構成する。更に、当該鍵データラウンド処理部及び入力データ処理部を暗号化或いは復号化の動作モードに応じて各々対応する動作モード専用の回路を動的再構成する。これにより、本実施形態の構成によれば第１実施形態の構成よりも更に回路規模を削減することができる。
【００９０】
例えば、暗号化及び復号化の両方の処理を動作モードに応じて切り替えて実行する従来の回路においては、第１実施形態で述べたように、約６．５万ＡＳＩＣゲート程度の規模を要していた。これに対して、本実施形態に係る構成においては、動的再構成回路が３万ＡＳＩＣゲート程度の規模を備えていれば、従来の構成と同等の機能を実現することができる。
【００９１】
第１実施形態で述べたように、暗号化又は復号化に必要な回路規模はそれぞれ鍵データラウンド処理部に対応する回路に約１万ＡＳＩＣゲート規模、入力データラウンド処理部に対応する回路に約３万ＡＳＩＣゲート規模である。このため、本実施形態に係る構成においては、動的再構成回路が３万ＡＳＩＣゲート程度の規模を備えていればこれらの回路を切り替えて実現することができる。このように本実施形態に係る構成によれば、従来の構成に比べて回路規模が３．５万（＝６．５万−３万）ＡＳＩＣゲート程度小さくても従来の構成と同等の機能を実現することができる。
【００９２】
尚、動的再構成回路２０１制御用の制御部２０２の処理負荷は数ＭＩＰＳ程度、制御情報用記憶部２０４、再構成情報記憶部２０３に要する容量は数ｋＢｙｔｅ程度である。このように、ＡＥＳ暗号化回路２００を包含する装置自体の制御部及び制御情報用記憶部、データ用記憶部に容易に実装可能であり、回路規模の増大の要因になることはない。
【００９３】
また、データ暗号化の要求スループットが１Ｇｂｐｓとし、１２８ビットのデータを１ラウンド１クロックで１１サイクルかけて処理する場合を考える。この場合、１ラウンドを処理するクロック周期は最低１２８／（１１×１×１０9）＝１１．６ｎｓ以内に１ラウンドの暗号化処理を実行する必要がある。上記１ラウンドの処理期間の間に、鍵データラウンド処理と入力データラウンド処理を時分割で実行することを考慮すると、各処理は更に半分以下の時間以内に実行する必要がある。近年発表された高速のリコンフィギュアプロセッサは最大１６６ＭＨｚ動作で、１クロック（６ｎｓ）で再構成を実現する。このため、このような高速な動的再構成手段を用いることで、上記した様なラウンド処理周期の前半と、後半で、異なる処理回路を動的再構成することができる。従って、ほぼ１Ｇｂｐｓのスループットを実現することが可能である。
【００９４】
以上のように、本実施形態に係る構成によれば第１実施形態の構成よりも回路規模を更に削減できると同時に、高速な処理を実行することができる。また、暗号処理をハードウェアで実行することにより、低消費電力を実現している。
【００９５】
尚、本実施形態に係る構成において利用する動的再構成手段は、上記したような高速性を満足するものであれば、図２に示した実施形態に限定されるものではない。即ち、動的再構成回路の内部構成、制御部、再構成情報記憶部の構成等は、他のアーキテクチャーでも構わないことは言うまでもない。
【００９６】
また、本実施形態においては、鍵データラウンド処理部と、入力データラウンド処理部を暗号化・復号化の動作モードに応じて、両処理回路を異なる期間に動的再構成するものとしたが、動的再構成の対象とする回路はこれに限定されるものではない。即ち、暗号化・復号化処理において実行する工程のうち、異なる期間に実行される処理工程に対応する処理回路を動的再構成の対象として良いことは言うまでもない。例えば、ＡＥＳ暗号化回路においては、入力データ処理工程内の各工程の中から異なる期間に実行される２つ以上の異なる工程に対応する処理回路を動的再構成の対象にしても良い。なお、入力データ処理工程には、ＳｈｉｆｔＲｏｗｓ工程、ＳｕｂＢｙｔｅｓ工程、ＭｉｘＣｏｌｕｍｎｓ工程、ＡｄｄＲｏｕｎｄＫｅｙ工程等が含まれる。
【００９７】
また、本実施形態においては、動的再構成を切り替える処理期間はラウンド処理周期の前半と後半としたが、動的再構成を切り替える処理期間もこれに限定されるものではない。即ち、暗号化・復号化処理工程のうち、実行する処理期間が異なる２つ以上の異なる暗号化処理工程に対応して、各々の処理期間に、対応する処理回路を動的再構成しても良いことは言うまでもない。
【００９８】
また、本実施形態においては、鍵データラウンド処理部８０２と、入力データラウンド処理部８０１の両処理回路を異なる期間に動的再構成するものとしたが、これは必ずしもそれぞれの回路の全体を動的再構成することを意味しない。即ち、次のように構成してもよい。まず、鍵データラウンド処理部８０２と入力データラウンド処理部８０１は共通部分を共通回路として予め用意しておく。そして、当該共通回路と鍵データラウンド処理部８０２との差分回路、及び、当該共通回路と入力データラウンド処理部８０１との差分回路を各々動的再構成するようにしても良い。例えば、ＳｕｂＢｙｔｅｓ或いはＩｎｖＳｕｂＢｙｔｅｓの中の、逆元演算回路を共通回路として固定的に用意し、ＳｕｂＢｙｔｅｓ、ＩｎｖＳｕｂＢｙｔｅｓで異なるアフィン変換回路と逆アフィン変換のみ動的再構成するようにしても良い。
【００９９】
＜＜第３実施形態＞＞
第１、第２実施形態に係る構成においては、所定の処理期間に動的再構成する処理回路が予め決まっていたが、所定の処理期間に動的再構成する処理回路を、所定の指標に基づいて決定するように構成しても良い。このような指標には、例えば、処理負荷、スループット、暗号強度、暗号化或いは復号化の処理目的、暗号化動作モード（例えば、ＥＣＢ、ＣＢＣ、ＣＦＢ、ＯＦＢ、ＣＴＲのうちのいずれか）、消費電力、回路規模等が含まれる。
【０１００】
また、各処理期間に所定の処理回路を動的再構成する制御方法自体も、所定の指標に基づいて決定しても良い。
【０１０１】
このような構成の一例として、ここでは、各指標について要求されるレベルを示すレベル情報に基づいて、どの指標をどのくらい重視するか判断し、対応する回路構成及びクロックの周波数を選択して、再構成する構成について述べる。なお、このような指標には、スループット（即ち、高速処理）暗号強度、消費電力、或いは、回路規模等が含まれる。
【０１０２】
本実施形態に係る暗号処理装置の基本的な構成は第１、第２実施形態に係る構成を示した図２と基本的には同様である。図８は、本実施形態に係る暗号処理装置の主要構成を示した図であり、図２の構成に加え、動的再構成のみならず、暗号処理装置全体に関わる構成も示した。尚、本実施形態において、制御部２０２は、動的再構成回路の制御のみならず、タイミング回路、バッテリ回路、ユーザインタフェース（ＵＩ）部等の暗号回路以外の他の回路部分の制御、暗号処理を含むアプリケーションの制御も司る。以下、図２と異なる部分のみ説明する。
【０１０３】
図８において、２１２は処理状態検出部であり、動的再構成回路２０１の処理状態、例えば、データラウンド処理中、或いは、鍵ラウンド処理中等を検出する。２１３はタイミング生成部であり、制御部２０２の制御によりクロック周波数を高速、低速等に制御可能とする。具体的には、例えば、内部にクロックを分周する分周回路を設け、この分周回路の分周率を制御することによって実現することができる。２１４はＵＩ部であり、キー入力、液晶表示部等で実現され、ユーザとの間で情報を入出力する。２１５はバッテリ容量検出部であり、暗号処理装置が携帯機器の場合等において、電源がバッテリから構成されている場合に、当該バッテリの容量（残量）を検出する。２１６は全体制御情報記憶部であり、暗号処理を含むアプリケーションプログラム、タイミング制御、バッテリ制御、ＵＩ等の各部制御プログラムを格納する。２１７は各種情報記憶部であり、各アプリケーション用データ、ＵＩデータ、バッテリ容量データ、指標−構成／クロック対応情報等の各種データを格納する。
【０１０４】
処理状態検出部２１２の出力、及び、タイミング生成部２１３の出力は、再構成タイミング検出部２０５に入力する。再構成タイミング検出部２０５は、これらの入力に基づいて再構成のタイミングを検出する。従って、例えば、鍵ラウンド処理状態からデータラウンド処理状態への動的再構成回路の状態の変化のタイミング、又は、タイミング生成部からの各処理期間を示すフレーム信号等の所定の切替えタイミングに基づいて、再構成タイミングを制御することができる。ＵＩ部２１４、バッテリ容量検出部２１５、全体制御情報記憶部２１６、各種情報記憶部２１７は、各々、制御部２０２に接続されている。
【０１０５】
尚、前記タイミング生成部２１３を制御して、低速のクロックを動的再構成回路の動作クロックとして用いる場合は、動的再構成の切替えタイミングも当該クロックに基づき、周期が長くなる。逆に、高速のクロックを動作クロックとして用いる場合は、動的再構成の切替えタイミングの周期は短くなる。また、切替えタイミングは、再構成される処理回路の処理サイクルに応じても変化する。例えば、１回のラウンド処理を１クロックサイクルで実行する処理回路を再構成する場合は、１回のラウンド処理を４クロックサイクルで実行する処理回路を再構成する場合に比して、切替えタイミングの周期は１／４になる。
【０１０６】
図９は、本実施形態における記憶部内情報を例示する図である。記憶部は、全体制御記憶部２１６、再構成制御情報記憶部２０４を有するプログラム記憶部と、各種情報記憶部２１７、再構成情報記憶部２０３を有するデータ記憶部とに大別することができる。本実施形態においては、各記憶部（２１６，２０４，２１７，２０３）には、図９に示す情報が格納されているものとする。
【０１０７】
本実施形態においては、動的再構成の回路構成、クロック周波数を決定する為の各指標（例えば、スループット、暗号強度、消費電力、或いは、回路規模等）の要求レベルを、ＵＩ部２１４を介してユーザから指定できるようになっている。また、動的再構成の回路構成及びクロック周波数は、ＵＩ部２１４からの指定からだけではなく、バッテリ容量検出部２１５からの情報に基づくバッテリ容量に応じて消費電力の少ない回路構成・クロックを選択するように構成することができる。或いは、ＵＩ部２１４を介してユーザが選択して実行するアプリケーションに応じて、必要な暗号強度・スループットを有する回路構成・クロック周波数を選択することも可能である。
【０１０８】
また、第１、第２実施形態においては、回路規模低減を考慮して、中間データ記憶部２０８の容量が１ラウンド分のデータのみで済むように、１ラウンド毎に、鍵データラウンド処理と入力データラウンド処理を交互に動的再構成する例を示した。しかし、中間データ記憶部の容量が全ラウンド分のデータを格納できる場合は、まず、鍵データラウンド処理回路を動的再構成して全ラウンド分のラウンド鍵データを作成した後、入力データラウンド処理回路を動的再構成して全ラウンド処理を行うこともできる。この場合、動的再構成の切替え回数が少なくて済み、制御部の処理負荷、消費電力が少ないという効果がある。本実施形態においては、この全ラウンド分の鍵データ処理実行後に、入力データ処理を実行するように、図９の動的再構成部制御プログラム（３０２）においては、制御方法２を選択して実行する。
【０１０９】
例えば、ユーザからＵＩ部２１４が、スループットよりも消費電力の低減を重視する旨の指定情報、即ち、「スループットのレベルがＣ、かつ、消費電力のレベルがＡ」を受け取った場合を考える。また、同様に、ユーザから、暗号鍵のビット数を１２８ビットとする指定がなされたとする。この場合、本実施形態に係る暗号処理装置は、図９の各種情報記憶部２１７に格納された、指標−構成／クロック対応情報３０６に基づいて、ユーザの指定に適合する回路構成、クロックを選択する。即ち、この例では、消費電力の指標のレベルが最も優れた回路構成２．１かつクロック２を選択する。ただし、Ｃ３、Ｃ２、Ｃ１、Ｂ３、Ｂ２、Ｂ１、Ａ３、Ａ２、Ａ１の順に、消費電力の指標のレベルが優れているものとする。回路構成２．１は、４サイクル＆暗号鍵１２８ビットの構成に対応し、クロックは、．．．、クロック２、クロック１の順に周波数が高いものとする。これにより、１２８ビットの１回のラウンド処理を３２ビット処理用の小規模回路により４クロックサイクルかけて実行する入力データラウンド処理回路を動的再構成させて、電力消費を抑止する為に低速なクロックで動作させる。
【０１１０】
また、消費電力よりもスループットを重視する旨の指定情報、即ち、「スループットのレベルがＡ、かつ、消費電力のレベルがＢ」を受け取った場合、そして、暗号鍵のビット数を１２８ビットとする指定がなされた場合を考える。この場合は、本実施形態に係る暗号処理装置は、図９の各種記憶部２１７に格納された、指標−構成／クロック対応情報３０６に基づき、スループットの指標のレベルが最も優れた回路構成１．１（１サイクル＆暗号鍵１２８ビット）かつクロック１を選択する。これにより、１２８ビットの１回のラウンド処理を回路規模は大きいが３２ビット処理回路を４並列有して１クロックサイクルで小さな遅延時間で実行する入力データラウンド処理回路を動的再構成させて、高速なクロックで動作させる。
【０１１１】
また、上記の２つの事例で、暗号強度を強化するように、ユーザから暗号鍵２５６ビットが指定された場合は、各々回路構成２．３、回路構成１．３が選択されることになる。
【０１１２】
このように、本実施形態に係る構成は動的再構成する回路を指定情報に基づいて決定するため、利用時の多様な要件に対して柔軟に適応し、適切な回路を提供することができる。
【０１１３】
尚、上記実施形態においては、図９に示す、各種記憶部２１７に格納された、指標−構成／クロック対応情報３０６に基づき、所定の指標を重視するという指定に基づき、回路構成を選択するようにした。しかし、指標の指定方法はこれらに限られない。例えば、重視すべき指標の識別情報を指定するのでも、重視すべき指標の識別情報と共に所望のレベルの識別情報を指定するのでも、予め指標のレベルと回路構成の対応を既知として回路構成の識別情報を指定するのでも良い。
【０１１４】
また、本実施形態においては、暗号処理装置各部及び全体の制御を、動的再構成を制御する制御部２０１で行う構成としたが、暗号処理装置各部及び全体制御とは別に制御部を設けても良いことは言うまでもない。尚、本実施形態において、動的再構成回路の外のタイミング生成部においてクロック速度を制御する構成としたが、クロックを制御する分周回路は動的再構成回路２０１の内部に設けてもよいし、外部に設けてもよい。
【０１１５】
また、本実施形態において、動的再構成制御方法は指標に基づき変更しなかった。しかし、指標―構成／クロック対応情報３０６の部分を、指標―構成／クロック／制御方法情報として、指標に基づき、回路構成、クロックの組合せだけでなく、回路構成、クロック、制御方法の組合せを選択するようにしても良い。
【０１１６】
尚、本実施形態においては、次の２つの回路構成を例示した。
・１２８ビット分のデータラウンド処理を３２ビット分の処理回路により４クロックサイクルかけて実行する入力データラウンド処理回路。
・３２ビット分の処理回路を４並列有して１クロックサイクルで実行する入力データラウンド処理回路。
しかし、回路構成はこれらの例以外であっても構わないことは言うまでもない。
【図面の簡単な説明】
【０１１７】
【図１】第１乃至第３実施形態に係る暗号処理装置が実行する基本処理の流れを示したフローチャートである。
【図２】第１実施形態に係る暗号処理装置の主要構成を示した図である。
【図３】第１実施形態に係る暗号処理装置の内部構成を示したブロック図である。
【図４】第１実施形態に係る構成の動作の流れを示したフローチャートである。
【図５】第２実施形態に係る暗号処理装置の内部構成を示したブロック図である。
【図６】第２実施形態に係る構成の処理の流れを示したフローチャートである。
【図７】ＡＥＳ暗号化・復号化回路の従来のハードウエア構成を例示的に示した図である。
【図８】第３実施形態に係る暗号処理装置の主要構成を示した図である。
【図９】記憶部内情報を例示する図である。
【図１】
2007094377.tif 000003
【図２】
2007094377.tif 000004
【図３】
2007094377.tif 000005
【図４】
2007094377.tif 000006
【図５】
2007094377.tif 000007
【図６】
2007094377.tif 000008
【図７】
2007094377.tif 000009
【図８】
2007094377.tif 000010
【図９】
2007094377.tif 000011