(57)【要約】      （修正有）【課題】ＡＥＳ方式の暗号化及び復号化における処理を、論理回路を中心とするハードウェアと、ソフトウェアに基づいて動作するマイクロプロセッサとに分担させることによって、所望の処理スループットを実現しつつ回路規模又は消費電力を低減した半導体集積回路を提供する。【解決手段】半導体集積回路で、暗号処理において用いられる少なくとも１つの鍵及び複数の制御信号を生成するマイクロプロセッサと、複数の入力データ群と複数の帰還データ群との内の一方を選択する選択回路と、選択回路から出力される複数のデータ群を格納する格納回路と、前処理として複数の帰還データ群を生成して帰還ループに供給すると共に、その後、複数の帰還データ群を順次用いて行った演算結果を変換テーブルを参照して変換することにより複数の入力データ群に対して暗号化又は復号化処理を施す論理回路とを具備する。【選択図】図２
2006235440.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアに基づいて動作し、暗号処理において用いられる少なくとも１つの鍵及び複数の制御信号を生成するマイクロプロセッサと、
入力されるテキストに含まれているデータのビット長を分割して得られる複数の入力データ群と帰還ループを介して供給される複数の帰還データ群との内の一方を制御信号に従って選択する選択回路と、
前記選択回路から出力される複数のデータ群を格納する格納回路と、
制御信号に従って、前処理として、前記格納回路から出力される複数の入力データ群と前記マイクロプロセッサによって生成された少なくとも１つの鍵とを順次用いて演算を行うことにより複数の帰還データ群を生成して前記帰還ループに供給すると共に、その後、前記格納回路から出力される複数の帰還データ群を順次用いて行った演算結果を変換テーブルを参照して変換することにより複数の入力データ群に対して暗号化又は復号化処理を施し、変換されたデータと前記マイクロプロセッサによって生成された少なくとも１つの鍵とを順次用いて演算を行うことにより複数の帰還データ群を生成して前記帰還ループに供給する論理回路と、
を具備する半導体集積回路。
【請求項２】
前記論理回路が、各々の帰還データ群を用いて行った演算結果を前記変換テーブルを参照して変換することと、変換されたデータと前記マイクロプロセッサによって生成された少なくとも１つの鍵とを用いて演算を行うことにより複数の帰還データ群を生成して前記帰還ループに供給することとを、所定の回数繰り返して行う、請求項１記載の半導体集積回路。
【請求項３】
前記論理回路が、複数の入力データ群に対する暗号化又は復号化処理を終了する際に、後処理として、前記格納回路から出力される複数の帰還データ群を順次用いて行った演算結果を変換テーブルを参照して変換することにより、出力すべき複数のデータ群を生成する、請求項１又は２記載の半導体集積回路。
【請求項４】
前記論理回路が、前記変換テーブルを参照して変換されたデータと前記マイクロプロセッサによって生成された少なくとも１つの鍵との排他的論理和を求める排他的論理和回路を含む、請求項１〜３のいずれか１項記載の半導体集積回路。
【請求項５】
暗号化処理において用いられる変換テーブルを格納する第１のメモリ領域と、復号化処理において用いられる変換テーブルを格納する第２のメモリ領域とをさらに具備する、請求項１〜４のいずれか１項記載の半導体集積回路。
【請求項６】
前記帰還ループに供給される少なくとも１つの帰還データ群を格納する第２の格納回路をさらに具備する、請求項１〜５のいずれか１項記載の半導体集積回路。
【請求項７】
パイプライン処理を行うために前記論理回路の演算データパスの途中に挿入された第３の格納回路をさらに具備する、請求項６記載の半導体集積回路。
【請求項８】
前記半導体集積回路が、ＡＥＳ（Advanced Encryption Standard）方式の暗号処理を行い、前記マイクロプロセッサが、ＡＥＳ方式の暗号処理において用いられるラウンド鍵を生成する、請求項１〜７のいずれか１項記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、暗号処理を行う半導体集積回路に関し、特に、次世代標準暗号化方式であるＡＥＳ（Advanced Encryption Standard）方式の暗号処理を行う半導体集積回路に関する。
【背景技術】
【０００２】
近年の電子商取引や電子通信技術の発展により、暗号技術の重要性はますます高まっている。暗号方式には、大きく分類して、共通鍵暗号と公開鍵暗号とがある。共通鍵暗号（秘密鍵暗号とも呼ばれる）とは、暗号化と復号化とに同じ鍵（共通鍵）を用いる暗号方式である。共通鍵暗号においては、データの送信者と受信者との間で、安全な経路を介して共通鍵を予め共有しておく必要がある。一方、公開鍵暗号とは、本人によって管理される秘密鍵と、他人に公開される公開鍵との、対応する２つの鍵によってデータの暗号化及び復号化を行う暗号方式である。公開鍵暗号において、秘密鍵によって暗号化されたデータは、それに対応する公開鍵以外では復号化することができず、また、公開鍵によって暗号化されたデータは、それに対応する秘密鍵以外では復号化することができないので、暗号強度が比較的高く、鍵の管理が容易である。
【０００３】
一般に、共通鍵暗号は、大容量データを暗号化する用途には適しているが、公開鍵暗号及びその他の方式と比較すると、暗号強度の点において信頼性が低い。そこで、近年のコンピュータネットワークの広帯域化・高度化、及び、テレビ放送やラジオ放送のディジタル化に伴い、送受信される大容量データを保護して第三者による不正使用を防止するために、高い暗号強度を有すると共に、実装に必要とされるリソースを低減できる暗号アルゴリズムが望まれている。
【０００４】
従来より、米国及びその他の多くの国においては、標準的な共通鍵暗号アルゴリズムとしてＤＥＳ（Data Encryption Standard：データ暗号化標準）が用いられている。ＤＥＳは、ＩＢＭ社（米国）によって開発され、米国政府標準技術局（National Institute of Standards and Technology：ＮＩＳＴ）によって連邦情報処理基準として採用された。この暗号アルゴリズムは、開発当時においては非常に高性能であり、長い間商用通信や文書の安全性を保障してきた。しかしながら、近年のコンピュータ技術の高性能化、及び、暗号理論の発展に伴い、ＤＥＳの信頼性は低下している。そのため、ＮＩＳＴは、ＤＥＳに替わる暗号方式を公募することにより、ラインダール（Rijndael）方式の共通鍵暗号アルゴリズムをＡＥＳとして選定した。
【０００５】
ラインダール方式の共通鍵暗号アルゴリズムは、データ系列を固定長ブロックに分割して取り扱うブロック暗号方式であり、鍵語長−ブロック語長の組み合わせを、１２８ビット−１２８ビット、１９２ビット−１２８ビット、及び、２５６ビット−１２８ビットの内から独立して指定できることを特徴としている。また、ビット変換においてＳＰＮ（substitution permutation network）構造を採用していることも特徴である。ＳＰＮ構造においては、１ラウンドの処理が、換字処理（substitution）及び転置処理（permutation）によって構成される。また、１ラウンドの処理が換字処理と転置処理と換字処理とによって構成されるものは、２ラウンドＳＰＮ構造と呼ばれている。ＡＥＳの詳細については、ＡＥＳ仕様書を参照されたい（インターネット＜ＵＲＬ：http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf＞、２００５年２月４日検索）。
【０００６】
上記のようなＡＥＳ方式の暗号処理回路は、例えば、企業向けの高性能ネットワーク機器や無線ＬＡＮ機器等に組み込まれて、既に実用化されている。また、下記の特許文献１には、ＡＥＳ暗号回路を実装する際に、回路規模を小型化すると共に、一定水準の高速処理が実現可能な暗号回路が開示されている。
【０００７】
この暗号回路のRound処理部は、Round Keyの値を入力データに加算する第１Round Key加算回路と、第１Round Key加算回路の出力を一時的に格納すると共にShift Row変換を実行する中間レジスタ兼Shift Row変換回路と、中間レジスタ兼Shift Row変換回路の値が入力されてByte Sub変換を実行するByte Sub変換回路と、中間レジスタ兼Shift Row変換回路の値が入力されてRound Keyの値を加算する第２Round Key加算回路と、第２Round Key加算回路の出力に対してMix Column変換を実行するMix Column変換回路と、第１セレクタ、中間レジスタ兼Shift Row変換回路、Byte Sub変換回路、Mix Column変換回路の出力の内のいずれか１つを第２Round Key加算回路に出力する第２セレクタとを備えている（第１頁、図４）。
【０００８】
特許文献１においては、ＡＥＳ暗号をスマートカードに組み込むことが想定されている（第３頁、段落００１４）。また、パーソナルコンピュータ（ＰＣ）向けの汎用プロセッサの中には、ＡＥＳ暗号処理用のハードウェアを内蔵したものも現れている。例えば、ＶＩＡテクノロジー社（台湾）製のＣ３プロセッサは、PadLockと名付けられたＡＥＳ暗号処理エンジンを内蔵している。なお、PadLockについては、ＶＩＡテクノロジー社のホームページを参照されたい（インターネット＜ＵＲＬ：http://www.via.com.tw/en/products/processors/c3/＞、２００５年２月４日検索）
【特許文献１】特開２００３−１５５２２号公報（第１、３頁、図４）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記のようなＡＥＳ方式の暗号処理回路が実装される機器のターゲットは、例えばネットワーク通信機器のように、コストよりも処理スループットが重視される分野と、例えばＩＣカードのように、性能よりも小型化することが重視される分野とに二極化される傾向にある。前者においては、ギガビット／秒のオーダーの処理スループットが求められるケースが少なくない。反対に、後者においては、高々数メガビット／秒程度の処理スループットで足りるケースが多いと考えられる。
【００１０】
一般に、ギガビット／秒のオーダーの処理スループットを得るためには、１２８ビットのデータを１サイクルで処理できるような、大規模な専用のハードウェアロジックの実装が必要とされる。実際には、ラウンド鍵（１ラウンドの処理において使用される鍵であって、ラウンドごとに異なる）の生成を含むほとんどの処理をハードウェアロジック化した、専用のＬＳＩを搭載することによって実現している場合が多い。
【００１１】
一方で高々、数メガビット／秒の処理スループットを得るためには、SubBytes変換やMixColumns変換のように、小型マイクロプロセッサによる演算においては著しくサイクル数を要する処理のみをハードウェアで実装するが、それ以外の演算処理はソフトウェアによって実現しているものが多い。
【００１２】
今後、所謂ディジタル家電分野においてＡＥＳ暗号を積極的に導入していくためには、できるだけコストを抑えつつ、要求される暗号処理スループットを十分に確保できる実装技術が望まれる。例えば、日本のディジタルハイビジョン放送におけるデータストリームは２４Ｍｂｐｓであるので、そのようなデータストリームをＡＥＳ暗号化及び復号化する機能を有する全ての機器は、上記の実効スループットを満足させなければならない。
【００１３】
しかしながら、最近のディジタル家電においては、様々な機能をシステムＬＳＩに集約化することにより性能を落とすことなく低コスト化を実現させているものが多いので、ＡＥＳ暗号のためだけに専用ハードウェアＬＳＩを追加することは困難であるし、暗号鍵や複号したデータを故意に外部から読み取られることを防ぐためにも、それは推奨されない。また、システムＬＳＩに内蔵されるマイクロプロセッサと該マイクロプロセッサを動作させるソフトウェアとによってＡＥＳ暗号処理を実現しようとしても、そのようなマイクロプロセッサは、動作周波数やＡＬＵ（arithmetic and logic unit）の構造上の理由により、暗号処理スループットに関する条件を満たすことは非常に困難である。
【００１４】
そこで、上記の点に鑑み、本発明は、暗号化及び復号化における処理を、論理回路を中心とするハードウェアと、ソフトウェアに基づいて動作するマイクロプロセッサとに分担させることによって、所望の処理スループットを実現しつつ回路規模又は消費電力を低減した半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本発明に係る半導体集積回路は、ソフトウェアに基づいて動作し、暗号処理において用いられる少なくとも１つの鍵及び複数の制御信号を生成するマイクロプロセッサと、入力されるテキストに含まれているデータのビット長を分割して得られる複数の入力データ群と帰還ループを介して供給される複数の帰還データ群との内の一方を制御信号に従って選択する選択回路と、選択回路から出力される複数のデータ群を格納する格納回路と、制御信号に従って、前処理として、格納回路から出力される複数の入力データ群とマイクロプロセッサによって生成された少なくとも１つの鍵とを順次用いて演算を行うことにより複数の帰還データ群を生成して帰還ループに供給すると共に、その後、格納回路から出力される複数の帰還データ群を順次用いて行った演算結果を変換テーブルを参照して変換することにより複数の入力データ群に対して暗号化又は復号化処理を施し、変換されたデータとマイクロプロセッサによって生成された少なくとも１つの鍵とを順次用いて演算を行うことにより複数の帰還データ群を生成して帰還ループに供給する論理回路とを具備する。
【００１６】
ここで、論理回路が、各々の帰還データ群を用いて行った演算結果を変換テーブルを参照して変換することと、変換されたデータとマイクロプロセッサによって生成された少なくとも１つの鍵とを用いて演算を行うことにより複数の帰還データ群を生成して帰還ループに供給することとを、所定の回数繰り返して行うようにしても良い。
【００１７】
また、論理回路が、複数の入力データ群に対する暗号化又は復号化処理を終了する際に、後処理として、格納回路から出力される複数の帰還データ群を順次用いて行った演算結果を変換テーブルを参照して変換することにより、出力すべき複数のデータ群を生成するようにしても良い。
【００１８】
さらに、論理回路が、変換テーブルを参照して変換されたデータとマイクロプロセッサによって生成された少なくとも１つの鍵との排他的論理和を求める排他的論理和回路を含むようにしても良い。
【００１９】
この半導体集積回路は、暗号化処理において用いられる変換テーブルを格納する第１のメモリ領域と、復号化処理において用いられる変換テーブルを格納する第２のメモリ領域とをさらに具備するようにしても良い。
【００２０】
また、この半導体集積回路は、帰還ループに供給される少なくとも１つの帰還データ群を格納する第２の格納回路をさらに具備するようにしても良いし、パイプライン処理を行うために論理回路の演算データパスの途中に挿入された第３の格納回路をさらに具備するようにしても良い。
【００２１】
以上において、この半導体集積回路が、ＡＥＳ（Advanced Encryption Standard）方式の暗号処理を行い、マイクロプロセッサが、ＡＥＳ方式の暗号処理において用いられるラウンド鍵を生成するようにしても良い。
【発明の効果】
【００２２】
以上の様に構成した本発明によれば、暗号処理において用いられる少なくとも１つの鍵及び複数の制御信号を生成するマイクロプロセッサと、変換テーブルを参照することによって暗号化又は復号化処理を行う論理回路とを設けたことにより、所望の処理スループットを実現しつつ回路規模を低減することができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
図１は、本発明の一実施形態に係る半導体集積回路の構成を示すブロック図である。この半導体集積回路（システムＬＳＩ）は、ソフトウェアに基づいて動作するマイクロプロセッサ１と、ハードウェア処理を行う論理回路及びメモリによって構成されたアクセラレータ２とを内蔵している。マイクロプロセッサ１とアクセラレータ２とは、ＡＥＳ方式の暗号化及び復号化の処理を協働して行う。
【００２４】
また、ＡＥＳ方式の暗号化及び復号化の処理においては、ラウンド鍵が格納されているメモリ領域に処理サイクル毎にアクセスする必要があるので、ラウンド鍵を格納するためのバッファメモリ３をマイクロプロセッサ１の外に設けることが望ましい。バッファメモリ３は、読出し及び書込みがそれぞれ１方向のみに行われ、そのアクセスアドレスがシーケンシャルにインクリメント又はデクリメントされるリングバッファメモリであり、ＦＩＦＯの一種である。バッファメモリ３への書込みは、マイクロプロセッサ１が行い、読出しはアクセラレータ２が行う。バッファメモリ３の各メモリラインは、パラレル３２ビットで構成される。
【００２５】
本実施形態において、アクセラレータ２は、マイクロプロセッサ１の近傍に配置されており、マイクロプロセッサ１から見ると、アクセラレータ２は、記憶階層的には主記憶装置よりも上位、かつ、マイクロプロセッサ１の内部のレジスタよりも下位に位置する。即ち、アクセラレータ２とマイクロプロセッサ１との間のアクセスは、マイクロプロセッサ１の内部のレジスタよりも低速になるが、主記憶装置よりも高速になる。
【００２６】
一例として、アクセラレータ２は、ＡＥＳ方式の暗号処理を支援するためのＩＰ（intellectual property：インテレクチュアル・プロパティ）として構成される。ここで、ＩＰとは、所定の機能を実現するための一群の回路ブロックをいう。また、アクセラレータ２は、システムＬＳＩに内蔵されるマイクロプロセッサ１の近傍、例えば、コプロセッサ・インタフェースに配置するのに適している。
【００２７】
即ち、アクセラレータ２が、テキスト入出力、制御、及び、ラウンド鍵入力のための仮想インタフェース４として働くことにより、コプロセッサ・モジュール５が実現され、マイクロプロセッサ１からは、コプロセッサ・モジュール５がレジスタ型インタフェースとして見える。
【００２８】
図１に示すように、アクセラレータ２は、入力されるデータ及び出力すべきデータを一時的に格納するためのレジスタ６と、ＡＥＳ方式の暗号処理に関するハードウェア演算を行う演算データパス回路７と、演算データパス回路７における演算動作を制御したりラウンド鍵の入力を制御する制御回路８とを含んでいる。本発明においては、ＡＥＳ方式の暗号処理に関する全ての演算をハードウェア化するのではなく、最も演算量の割合が大きいテキスト処理については完全にアクセラレータ２により自動的に処理を行うが、鍵拡張（ラウンド鍵生成）処理については付随的なものとみなしてソフトウェア処理を行う。
【００２９】
図２は、本発明の一実施形態において用いられる演算データパス回路を示す詳細なブロック図である。ＡＥＳ暗号の仕様により、テキスト入出力は１２８ビットを基本とするが、演算データパス回路７内においては、３２ビットを基本演算単位としている。従って、１２８ビットの入力テキストは、４サイクルかけて演算データパス回路７に入力される。また、本実施形態において、１ワードは３２ビットのデータで構成される。なお、図２において、太線は１２８ビットのデータを表しており、細線は、３２ビットのデータを表している。
【００３０】
演算データパス回路７において、４つのセレクタ１１〜１４は、制御信号Ｃ１に従って、入力テキスト、又は、一時ベクタレジスタ（Temporary Vector Register）１２１〜１２３等から帰還ループを介して帰還されるデータを選択する。最初に、入力テキストが選択され、１２８ビット（３２ビット×４サイクル）の入力テキスト（svin）が、これらのセレクタ１１〜１４によって順次選択される。
【００３１】
具体的には、制御信号Ｃ１に従って、セレクタ１１がデータ［１２７：９６］を選択し、セレクタ１２がデータ［９５：６４］を選択し、セレクタ１３がデータ［６３：３２］を選択し、セレクタ１４がデータ［３１：００］を選択する。ここで、［ｎ：ｍ］は、ビット番号ｎ〜ｍのデータを意味する。なお、本実施形態においては、一般にならい、最下位ビットのビット番号を「０」とし、上位ビットに向かってビット番号をカウントする。
【００３２】
セレクタ１１〜１４から順次出力されるデータは、３２ビット×４の状態ベクタレジスタ（Status Vector Register）２１〜２４に格納される。状態ベクタレジスタ２１〜２４からは、１２８ビットのデータと共に、制御信号Ｃ２に従って選択された３２ビットのデータが出力される。状態ベクタレジスタ２１〜２４から出力される１２８ビットのデータは、第１のシフト及びセレクト回路（ShiftRows & Word Selector）３１と、ダイレクトワードセレクタ（Direct Word Selector）３２と、第２のシフト及びセレクト回路（InvShiftRows & Word Selector）３３とに入力される。
【００３３】
第１のシフト及びセレクト回路（ShiftRows & Word Selector）３１は、１２８ビットのデータに対し、ＡＥＳ仕様書の２．２章及び５．１．２章に記載されているShiftRows変換を行い、制御信号Ｃ３に従って、変換された１２８ビットのデータを４分割して得られる４つのラインの内から１つのラインを選択して、セレクタ４２に出力する。ここで、ShiftRows変換とは、ＡＥＳ方式の暗号化処理において、状態（State）に対し、その状態の最後の３行を異なるオフセットだけ巡回的にシフトすることにより処理する変換をいう。また、状態（State）とは、複数のバイトの２次元行列（長方形アレイ）として表される中間的な暗号結果であり、この２次元行列は、４行Ｎｂ列を有している（例えば、Ｎｂ＝４）。
【００３４】
ダイレクトワードセレクタ（Direct Word Selector）３２は、制御信号Ｃ６に従って、前処理等において、１２８ビットのデータ（４つのワード）から１つのワードを選択して出力する。また、第２のシフト及びセレクト回路（InvShiftRows & Word Selector）３３は、１２８ビットのデータに対し、ＡＥＳ仕様書の２．２章及び５．３．１章に記載されているInvShiftRows変換を行い、制御信号Ｃ４に従って、変換された１２８ビットのデータを４分割して得られる４つのラインの内から１つのラインを選択して、第１のメインセレクタ６０に出力する。ここで、InvShiftRows変換とは、ＡＥＳ方式の復号化処理において行われる、ShiftRows変換の逆変換をいう。
【００３５】
一方、制御信号Ｃ２に従って状態ベクタレジスタ２１〜２４の内の１つから出力される３２ビットのデータは、セレクタ４２と、転置処理回路（RotWord）４１とに入力される。転置処理回路４１は、この３２ビット、即ち、１ワードのデータに対し、ＡＥＳ仕様書の２．２章及び５．２章に記載されているRotWord処理を行う。ここで、RotWordとは、鍵拡張処理において、４バイト（１ワード）のデータを取り出して、巡回的な転置処理を行う機能をいう。具体的には、３２ビットのデータが、左方向（ＭＳＢ方向）に８ビットだけローテートされる。
【００３６】
セレクタ４２は、制御信号Ｃ５に従って、状態ベクタレジスタ２１〜２４の内の１つから出力される１ワードのデータと、第１のシフト及びセレクト回路３１において選択された１ラインのデータと、転置処理回路４１によって巡回的な転置処理が行われた１ワードのデータとの内から３２ビットのデータを選択して、選択されたデータを第１の変換テーブル（S-box）５１に出力する。
【００３７】
第１の変換テーブル（S-box）５１は、ＡＥＳ方式の暗号化処理における数種類のバイト換字処理変換及び鍵拡張処理において、バイト値の１：１換字処理を行うために用いられる非線形換字処理テーブルである。第１の変換テーブル５１は、例えば、８ビットのアドレス及び８ビットのデータを使用するＲＯＭ４個が入力に対してパラレルに配置されることによって実現され、入力されるデータがアドレスとして用いられ、当該アドレスに対応するデータがＲＯＭから読み出される。第１の変換テーブル５１から出力されるデータは、第１のメインセレクタ６０に入力される。
【００３８】
第２のシフト及びセレクト回路３３において選択された１ラインのデータは、第２の変換テーブル（InvS-box）５２に入力される。第２の変換テーブル（InvS-box）５２は、ＡＥＳ方式の復号化処理において、バイト値の１：１換字処理を行うために用いられる非線形換字処理テーブルである。第２の変換テーブル５２は、例えば、８ビットのアドレス及び８ビットのデータを使用するＲＯＭ４個が入力に対してパラレルに配置されることによって実現され、入力されるデータがアドレスとして用いられ、当該アドレスに対応するデータがＲＯＭから読み出される。第２の変換テーブル５２から出力されるデータは、第１のメインセレクタ６０に入力される。
【００３９】
第１のメインセレクタ６０は、第１の変換テーブル５１から出力される１ワードのデータと、ダイレクトワードセレクタ３２から出力される１ワードのデータと、第２の変換テーブル５２から出力される１ワードのデータとの内から、制御信号Ｃ７に従って１ワードのデータを選択し、選択された１ワードのデータを、エクスクルーシブＯＲ（ＸＯＲ）回路７０及び第２のメインセレクタ８０に出力すると共に、１２８ビット（３２ビット×４サイクル）の出力テキスト（svout）として順次出力する。
【００４０】
図１に示す制御回路８は、制御信号Ｃ１〜Ｓ１０と共に、３２ビットのラウンド鍵（rdkey）を演算データパス回路７に供給する。ＸＯＲ回路７０は、復号化処理及び前処理／後処理において、第１のメインセレクタ６０から出力されるデータとラウンド鍵との排他的論理和を求めて、第２のメインセレクタ８０に出力する。
【００４１】
第２のメインセレクタ８０は、制御信号Ｃ８に従って、第１のメインセレクタ６０から出力されるデータとＸＯＲ回路７０から出力されるデータとの内の一方を選択し、選択されたデータを、列混合回路（MixCol & InvMixCol）９０及び第３のメインセレクタ１１０に出力する。
【００４２】
列混合回路９０は、入力されたデータに対して、ＡＥＳ仕様書の２．２章及び５．１．３章に記載されているMixColumns変換と、ＡＥＳ仕様書の２．２章及び５．３．３章に記載されているInvMixColumns変換との内のいずれか一方を施す。ここで、MixColumns変換とは、ＡＥＳ方式の暗号化処理において、状態の全ての列を取り込んで、それらのデータを混合することにより新たな列を作成する変換をいう。また、InvMixColumns変換とは、ＡＥＳ方式の復号化処理における、MixColumns変換の逆変換をいう。MixColumns変換の演算式は、InvMixColumns変換の演算式の中に含まれるため、列混合回路９０として１つの回路に集約する。列混合回路９０は、入力データに対してMixColumns変換されたデータをＸＯＲ回路１００に出力すると共に、InvMixColumns変換されたデータを第３のメインセレクタ１１０に出力する。
【００４３】
ＸＯＲ回路１００は、暗号化処理において、列混合回路９０から出力されるMixColumns変換データとラウンド鍵との排他的論理和を求めて、第３のメインセレクタ１１０に出力する。第３のメインセレクタ１１０は、制御信号Ｃ９に従って、第２のメインセレクタ８０から出力されるデータと、ＸＯＲ回路１００から出力されるデータと、列混合回路９０から出力されるInvMixColumns変換データとの内の１つを、演算データパスにおける演算結果を表すデータとして選択し、選択されたデータを、９６ビット幅の一時ベクタレジスタ１２１〜１２３、及び、帰還ループに順次出力する。
【００４４】
具体的には、制御信号Ｃ１０に従って、一時ベクタレジスタ１２１にデータ［１２７：９６］が格納され、一時ベクタレジスタ１２２にデータ［９５：６４］が格納され、一時ベクタレジスタ１２３にデータ［６３：３２］が格納され、これらのデータが、帰還ループに直接出力されたデータ［３１：００］と共に、帰還ループに順次供給される。なお、一時ベクタレジスタ１２１及び１２２及び１２３へのデータ格納は、それぞれ、制御信号Ｃ１０により個別に制御される。帰還ループを介してセレクタ１１〜１４に供給されたデータは、状態ベクタレジスタ２１〜２４に順次コピーされる。これにより、１サイクルの処理が終了する。
【００４５】
上記のような暗号化及び複号化処理においては、１２８ビットのデータに対して１単位の処理を施すために、４サイクルの期間を必要とする。この処理においては、９６ビット幅の一時ベクタレジスタ１２１〜１２３が、３ワード分のバッファとして利用される。３２ビット（１ワード）の演算を各サイクルで繰り返して、第１〜第３サイクルの演算結果が、一時ベクタレジスタ１２１〜１２３に格納される。第４サイクルの演算結果が求められると、１２８ビットの演算結果は、帰還ループを介して状態ベクタレジスタ１１〜１４に供給されてコピーされ、これによって１単位の処理が終了する。
【００４６】
このような１単位の処理を、鍵の長さが１２８ビットの基本モードの場合には１１回、鍵の長さが１９２ビットの場合には１３回、鍵の長さが２５６ビットの場合には１５回実行することにより、１テキスト・ブロックの暗号化又は復号化処理が終了する。従って、１テキスト・ブロックの暗号化又は復号化処理のために、鍵の長さが１２８ビットの基本モードの場合には４４サイクル、鍵の長さが１９２ビットの場合には５２サイクル、鍵の長さが２５６ビットの場合には６０サイクルを要することになる。
【００４７】
図２に示す演算データパス回路においては、両端部分のみに順序論理回路（レジスタ）を用い、他の部分は組合せ論理回路及びメモリで構成しているので、ストリームで演算を行うことになり、時間的なロスが生じない。また、回路構成も簡素であり、基板面積を小さくすることができる。
【００４８】
また、図２に示す演算データパス回路において、右端部分から左端部分への帰還ループは存在するが、局所的な帰還ループは存在しないので、回路構成に自由度がある。例えば、２ワード又は４ワードのデータを並列処理できるように組合せ論理回路の規模を拡張することにより、処理速度を２倍又は４倍にすることができる。その場合に、動作時に必要とされる処理スループットと消費電力との観点から、並列処理するワード数を変更するようにしても良い。
【００４９】
図２に示す演算データパス回路における暗号化処理について、図１〜図３を参照しながら説明する。本実施形態においては、基本鍵語長１２８ビットの入力テキストが３２ビット毎に４つのデータ群＃０〜＃３に分けられ、それぞれのステップにおいて、これらのデータ群＃０〜＃３に対応して４サイクルの処理が繰り返される。
【００５０】
図３は、図２に示す演算データパス回路における暗号化処理を示すフローチャートである。まず、ステップＳ１１において、図１に示す制御回路８が制御信号Ｃ１の値を設定することにより、セレクタ１１〜１４が、入力テキスト中の４つのデータ群＃０〜＃３を順次選択して、状態ベクタレジスタ２１〜２４にそれぞれ格納させる。
【００５１】
ステップＳ１２において、制御信号Ｃ６に従ってダイレクトワードセレクタ３２から順次出力される４つのデータ群＃０〜＃３を用いて、前処理が行われる。即ち、第１のメインセレクタ６０において、ダイレクトワードセレクタ３２から出力されるデータが選択され、第２のメインセレクタ８０において、ＸＯＲ７０から出力されるデータが選択され、第３のメインセレクタ１１０において、第２のメインセレクタ８０から出力されるデータが選択される。
【００５２】
第１〜第３のデータ群＃０〜＃２の処理中においては、セレクタ１１〜１４及び状態ベクタレジスタ２１〜２４の現状が維持され、それぞれの演算結果が、一時ベクタレジスタ１２１〜１２３に順次格納される。第４のデータ群＃３の処理中においては、一時ベクタレジスタ１２１〜１２３の現状が維持され、帰還ループを介してセレクタ１１〜１４に供給される４つのデータ群＃０〜＃３が、状態ベクタレジスタ２１〜２４にコピーされる。
【００５３】
ステップＳ１３〜Ｓ１４において、暗号化処理が行われる。
ステップＳ１３において、制御信号Ｃ３に従って第１のシフト及びセレクト回路３１からライン＃０〜＃３のデータが順次出力され、第１の変換テーブル５１を参照することによりデータ変換が施される。即ち、セレクタ４２において、第１のシフト及びセレクト回路３１から出力されるデータが選択され、第１のメインセレクタ６０において、第１の変換テーブル５１から出力されるデータが選択され、第２のメインセレクタ８０において、第１のメインセレクタ６０から出力されるデータが選択され、第３のメインセレクタ１１０において、ＸＯＲ１００から出力されるデータが選択される。ここで、ＸＯＲ１００は、列混合回路９０においてMixcolumns処理が施されたデータと、ラウンド鍵との排他的論理和を求めている。
【００５４】
第１〜第３のデータ群＃０〜＃２の処理中においては、セレクタ１１〜１４及び状態ベクタレジスタ２１〜２４の現状が維持され、それぞれの演算結果が、一時ベクタレジスタ１２１〜１２３に順次格納される。第４のデータ群＃３の処理中においては、一時ベクタレジスタ１２１〜１２３の現状が維持され、帰還ループを介してセレクタ１１〜１４に供給される４つのデータ群＃０〜＃３が、状態ベクタレジスタ２１〜２４にコピーされる。
【００５５】
ステップＳ１４において、４つのデータ群＃０〜＃３のそれぞれについて所定の回数の処理が終了したか否かが判定される。ここで、所定の回数とは、基本鍵語長が１２８ビットの場合には８回であり、基本鍵語長が１９２ビットの場合には１０回であり、基本鍵語長が２５６ビットの場合には１２回である。所定の回数の処理が終了していない場合には、処理がステップＳ１３に戻って暗号化処理が繰り返され、所定の回数の処理が終了した場合には、処理がステップＳ１５に移行する。
【００５６】
ステップＳ１５において、制御信号Ｃ３に従って第１のシフト及びセレクト回路３１から順次出力されるライン＃０〜＃３のデータを用いて、後処理が行われる。即ち、セレクタ４２において、第１のシフト及びセレクト回路３１から出力されるデータが選択され、第１のメインセレクタ６０において、第１の変換テーブル５１から出力されるデータが選択され、第２のメインセレクタ８０において、ＸＯＲ７０から出力されるデータが選択され、第３のメインセレクタ１１０において、第２のメインセレクタ８０から出力されるデータが選択される。
【００５７】
第１〜第３のデータ群＃０〜＃２の処理中においては、セレクタ１１〜１４及び状態ベクタレジスタ２１〜２４の現状が維持され、それぞれの演算結果が、一時ベクタレジスタ１２１〜１２３に順次格納される。第４のデータ群＃３の処理中においては、一時ベクタレジスタ１２１〜１２３の現状が維持され、帰還ループを介してセレクタ１１〜１４に供給される４つのデータ群＃０〜＃３が、状態ベクタレジスタ２１〜２４にコピーされる。
【００５８】
ステップＳ１６において、第１のメインセレクタ６０から、暗号化処理されたテキストが出力される。即ち、セレクタ１１〜１４及び状態ベクタレジスタ２１〜２４の現状が維持され、ダイレクトワードセレクタ３２において、状態ベクタレジスタ２１〜２４から出力される第１〜第４のデータ群＃０〜＃３が順次選択され、第１のメインセレクタ６０において、ダイレクトワードセレクタ３２から出力されるデータが選択される。
【００５９】
図２に示す演算データパス回路における復号化処理について、図１、図２、図４を参照しながら説明する。本実施形態においては、基本鍵語長１２８ビットの入力テキストが３２ビット毎に４つのデータ群＃０〜＃３に分けられ、それぞれのステップにおいて、これらのデータ群＃０〜＃３に対応して４サイクルの処理が繰り返される。
【００６０】
図４は、図２に示す演算データパス回路における復号化処理を示すフローチャートである。まず、ステップＳ２１において、図１に示す制御回路８が制御信号Ｃ１の値を設定することにより、セレクタ１１〜１４が、入力テキスト中の４つのデータ群＃０〜＃３を順次選択して、状態ベクタレジスタ２１〜２４にそれぞれ格納させる。
【００６１】
ステップＳ２２において、制御信号Ｃ６に従ってダイレクトワードセレクタ３２から順次出力される４つのデータ群＃０〜＃３を用いて、前処理が行われる。即ち、第１のメインセレクタ６０において、ダイレクトワードセレクタ３２から出力されるデータが選択され、第２のメインセレクタ８０において、ＸＯＲ７０から出力されるデータが選択され、第３のメインセレクタ１１０において、第２のメインセレクタ８０から出力されるデータが選択される。
【００６２】
第１〜第３のデータ群＃０〜＃２の処理中においては、セレクタ１１〜１４及び状態ベクタレジスタ２１〜２４の現状が維持され、それぞれの演算結果が、一時ベクタレジスタ１２１〜１２３に順次格納される。第４のデータ群＃３の処理中においては、一時ベクタレジスタ１２１〜１２３の現状が維持され、帰還ループを介してセレクタ１１〜１４に供給される４つのデータ群＃０〜＃３が、状態ベクタレジスタ２１〜２４にコピーされる。
【００６３】
ステップＳ２３〜Ｓ２４において、復号化処理が行われる。
ステップＳ２３において、制御信号Ｃ４に従って第２のシフト及びセレクト回路３２からライン＃０〜＃３のデータが順次出力され、第２の変換テーブル５２を参照することによりデータ変換が施される。即ち、セレクタ４２において、第２のシフト及びセレクト回路３２から出力されるデータが選択され、第１のメインセレクタ６０において、第２の変換テーブル５２から出力されるデータが選択され、第２のメインセレクタ８０において、ＸＯＲ７０から出力されるデータが選択され、第３のメインセレクタ１１０において、列混合回路９０においてInvMixcolumns処理が施されたデータが選択される。ここで、ＸＯＲ７０は、第１のセレクタ６０から出力されるデータと、ラウンド鍵との排他的論理和を求めている。
【００６４】
第１〜第３のデータ群＃０〜＃２の処理中においては、セレクタ１１〜１４及び状態ベクタレジスタ２１〜２４の現状が維持され、それぞれの演算結果が、一時ベクタレジスタ１２１〜１２３に順次格納される。第４のデータ群＃３の処理中においては、一時ベクタレジスタ１２１〜１２３の現状が維持され、帰還ループを介してセレクタ１１〜１４に供給される４つのデータ群＃０〜＃３が、状態ベクタレジスタ２１〜２４にコピーされる。
【００６５】
ステップＳ２４において、４つのデータ群＃０〜＃３のそれぞれについて所定の回数の処理が終了したか否かが判定される。ここで、所定の回数とは、基本鍵語長が１２８ビットの場合には８回であり、基本鍵語長が１９２ビットの場合には１０回であり、基本鍵語長が２５６ビットの場合には１２回である。所定の回数の処理が終了していない場合には、処理がステップＳ２３に戻って復号化処理が繰り返され、所定の回数の処理が終了した場合には、処理がステップＳ２５に移行する。
【００６６】
ステップＳ２５において、制御信号Ｃ４に従って第２のシフト及びセレクト回路３３から順次出力されるライン＃０〜＃３のデータを用いて、後処理が行われる。即ち、セレクタ４２において、第２のシフト及びセレクト回路３３から出力されるデータが選択され、第１のメインセレクタ６０において、第２の変換テーブル５２から出力されるデータが選択され、第２のメインセレクタ８０において、ＸＯＲ７０から出力されるデータが選択され、第３のメインセレクタ１１０において、第２のメインセレクタ８０から出力されるデータが選択される。
【００６７】
第１〜第３のデータ群＃０〜＃２の処理中においては、セレクタ１１〜１４及び状態ベクタレジスタ２１〜２４の現状が維持され、それぞれの演算結果が、一時ベクタレジスタ１２１〜１２３に順次格納される。第４のデータ群＃３の処理中においては、一時ベクタレジスタ１２１〜１２３の現状が維持され、帰還ループを介してセレクタ１１〜１４に供給される４つのデータ群＃０〜＃３が、状態ベクタレジスタ２１〜２４にコピーされる。
【００６８】
ステップＳ２６において、第１のメインセレクタ６０から、復号化処理されたテキストが出力される。即ち、セレクタ１１〜１４及び状態ベクタレジスタ２１〜２４の現状が維持され、ダイレクトワードセレクタ３２において、状態ベクタレジスタ２１〜２４から出力される第１〜第４のデータ群＃０〜＃３が順次選択され、第１のメインセレクタ６０において、ダイレクトワードセレクタ３２から出力されるデータが選択される。
【００６９】
次に、本発明の一実施形態において用いられる演算データパス回路の変形例について説明する。
図５は、本発明の一実施形態において用いられる演算データパス回路の変形例を示す詳細なブロック図である。この演算データパス回路は、図２に示す演算データパス回路の中間部分に、パイプラインレジスタ１３０を挿入したものである。
【００７０】
図５に示すように、３２ビット幅のパイプラインレジスタ１３０を第１のメインセレクタ６０の直後に挿入することによって、前処理、暗号化処理、復号化処理、及び、後処理の各フェーズにおいて２段パイプライン処理を実現することができるので、動作速度の向上が見込まれる。このように、本発明によれば、中間レジスタを適宜挿入することによってデータパスをパイプライン化できるので、演算データパス回路における処理速度をマイクロプロセッサの動作周波数に合わせて容易に高めることが可能である。
【図面の簡単な説明】
【００７１】
【図１】本発明の一実施形態に係る半導体集積回路の構成を示すブロック図。
【図２】本発明の一実施形態における演算データパス回路を示すブロック図。
【図３】図２に示す演算データパス回路における暗号化処理を示すフローチャート。
【図４】図２に示す演算データパス回路における復号化処理を示すフローチャート。
【図５】本発明の一実施形態における演算データパス回路の変形例を示すブロック図。
【符号の説明】
【００７２】
１  マイクロプロセッサ、  ２  アクセラレータ、  ３  バッファメモリ、  ４  仮想インタフェース、  ５  コプロセッサ・モジュール、  ６  レジスタ、  ７  演算データパス回路、  ８  制御回路、  １１〜１４、４２  セレクタ、  ２１〜２４  状態ベクタレジスタ、  ３１  第１のシフト及びセレクト回路、  ３２  ダイレクトワードセレクタ、  ３３  第２のシフト及びセレクト回路、  ４１  転置処理回路、  ５１  第１の変換テーブル、  ５２  第２の変換テーブル、  ６０  第１のメインセレクタ、  ７０、１００  ＸＯＲ回路、  ８０  第２のメインセレクタ、  ９０  列混合回路、  １１０  第３のメインセレクタ、  １２１〜１２３  一時ベクタレジスタ、  １３０  パイプラインレジスタ
【図１】
2006235440.tif 000003
【図２】
2006235440.tif 000004
【図３】
2006235440.tif 000005
【図４】
2006235440.tif 000006
【図５】
2006235440.tif 000007