(57)【要約】【課題】小規模な回路構成で、高速動作が可能なブロック暗号処理回路を提供する。を実現する。【解決手段】複数のバイトデータで構成される平文ブロックデータあるいは暗号文ブロックデータに対して、換字処理と転置処理を含む処理を行うランダマイズ部処理回路（１０１）、又は複数のバイトデータで構成される鍵ブロックデータに対して、転置処理を含む処理を行う拡大鍵生成部処理回路（１０２）において、換字処理及び転置処理を行う回路にパイプラインレジスタを含み、バイトデータ単位のパイプライン処理を行って、同一のブロックデータに含まれる複数のバイトデータに対して並列処理を行う。【選択図】図１
2008046466.tif 000002
【特許請求の範囲】
【請求項１】
複数のサブブロックデータで構成されるブロックデータに対して複数の内部工程を実施して換字処理を行う換字処理部と複数の内部工程を実施して転置処理を行う転置処理部とが含まれる暗号処理装置であって、
前記換字処理部及び前記転置処理部のうちの少なくともいずれかが、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一のブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことを特徴とする暗号処理装置。
【請求項２】
前記暗号処理装置は、
平文ブロックデータ又は暗号文ブロックデータに対して複数の内部工程を実施して換字処理を行う換字処理部と複数の内部工程を実施して転置処理を行う転置処理部とが含まれるランダマイズ処理部を有し、
前記ランダマイズ処理部内において、前記換字処理部及び前記転置処理部のうちの少なくともいずれかが、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一の平文ブロックデータ又は暗号文ブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記換字処理部は、
１２８ビットの平文ブロックデータ又は暗号文ブロックデータに対して、８ビットのサブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、
前記転置処理部は、
１２８ビットの平文ブロックデータ又は暗号文ブロックデータに対して、３２ビットのサブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施することを特徴とする請求項２に記載の暗号処理装置。
【請求項４】
前記暗号処理装置は、
鍵ブロックデータに対して複数の内部工程を実施して転置処理を行う転置処理部が含まれる拡大鍵生成処理部を有し、
前記拡大鍵生成処理部内において、前記転置処理部が、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一の鍵ブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことを特徴とする請求項１に記載の暗号処理装置。
【請求項５】
前記転置処理部は、
１２８ビットの鍵ブロックデータに対して、３２ビットのサブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施することを特徴とする請求項４に記載の暗号処理装置。
【請求項６】
複数のサブブロックデータで構成されるブロックデータに対して複数の内部工程を実施して換字処理を行う換字処理部と複数の内部工程を実施して転置処理を行う転置処理部とが含まれる復号処理装置であって、
前記換字処理部及び前記転置処理部のうちの少なくともいずれかが、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一のブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことを特徴とする復号処理装置。
【請求項７】
前記復号処理装置は、
暗号文ブロックデータに対して複数の内部工程を実施して換字処理を行う換字処理部と複数の内部工程を実施して転置処理を行う転置処理部とが含まれるランダマイズ処理部を有し、
前記ランダマイズ処理部内において、前記換字処理部及び前記転置処理部のうちの少なくともいずれかが、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一の暗号文ブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことを特徴とする請求項６に記載の復号処理装置。
【請求項８】
前記復号処理装置は、
鍵ブロックデータに対して複数の内部工程を実施して転置処理を行う転置処理部が含まれる拡大鍵生成処理部を有し、
前記拡大鍵生成処理部内において、前記転置処理部が、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一の鍵ブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことを特徴とする請求項６に記載の復号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号アルゴリズムを処理する回路に係り、小規模の回路面積で、高速な処理を実現する暗号処理装置及び復号処理装置を提供するための回路構成および処理方式に関するものである。
【背景技術】
【０００２】
一般に、電子商取引やネットワーク通信等では安全性を確保するために暗号化通信が行われる。
例えば、携帯電話システムでは携帯端末と基地局間で認証処理及び暗号化通信が行われている。
また、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）のようなネットワーク間で安全性を確保するためのシステムにおいても、システムを構成するルータ等の装置内において、暗号化処理が行われる。
前記で例として挙げた装置では、通常暗号処理専用の演算回路を装置内に組み込むことにより、処理性能とコストの問題を解決する。
例えば、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号（ＦＩＰＳ−１９７）の処理回路として、特開２００４−２３３４２７号公報では、１個のＳ−ｂｏｘテーブル（換字テーブル）で演算を行うアーキテクチャが開示されている。
また、特開２００３−２８８００９号公報や特開平５−２４９８９１号公報ではＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号（ＦＩＰＳ４６−３）の段関数毎にラッチを挿入しパイプライン動作をさせることにより高速処理を行うアーキテクチャが開示されている。
【特許文献１】特開２００４−２３３４２７号公報
【特許文献２】特開２００３−２８８００９号公報
【特許文献３】特開平５−２４９８９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
以下、従来技術における課題について説明する。
例えば、特開２００４−２３３４２７号公報では、１サイクルで処理可能な換字処理が、特開２００４−１８４５６７号公報に開示されている暗号アルゴリズムにおける段関数を実装する一般的なアーキテクチャと比較すると、処理可能なバイト数が少なく、暗号アルゴリズム全体を処理するために必要なサイクル数が増加する。
また、特開２００４−２３３４２７号公報及び特開２００４−１８４５６７号公報のアーキテクチャはすくなくとも、換字処理分の回路遅延を必要とする。このため、動作周波数はどちらのアーキテクチャでも差異は小さく、所要サイクル数の少ない特開２００４−１８４５６７号公報がより高速に動作するといえる。
一方で、段関数をすべて実装する特開２００４−１８４５６７号公報は特開２００４−２３３４２７号公報より多くの回路面積を必要とする。
また、特開２００３−２８８００９号公報や特開平５−２４９８９１号公報等の段関数毎にラッチを挿入しパイプライン動作をさせるアーキテクチャは、高速動作が可能であるが、非常に多くの回路面積を必要とする。
さらに、高速動作を行う条件として、複数ブロックの入力データを並列処理することを前提としており、複数ブロックのデータが連続して入力されないようなシステムでは、並列処理が行えず高速化の効果が得られない。
【０００４】
本発明は以上のような技術的課題を鑑みてなされたものであり、その主な目的は、小規模な回路構成で、複数ブロックのデータが連続して入力されないようなシステムにおいても高速動作が可能な暗号処理回路及び復号処理回路を提供することにある。
【課題を解決するための手段】
【０００５】
本発明に係る暗号処理装置は、
複数のサブブロックデータで構成されるブロックデータに対して複数の内部工程を実施して換字処理を行う換字処理部と複数の内部工程を実施して転置処理を行う転置処理部とが含まれる暗号処理装置であって、
前記換字処理部及び前記転置処理部のうちの少なくともいずれかが、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一のブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことを特徴とする。
【０００６】
本発明に係る復号処理装置は、
複数のサブブロックデータで構成されるブロックデータに対して複数の内部工程を実施して換字処理を行う換字処理部と複数の内部工程を実施して転置処理を行う転置処理部とが含まれる復号処理装置であって、
前記換字処理部及び前記転置処理部のうちの少なくともいずれかが、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一のブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことを特徴とする。
【発明の効果】
【０００７】
本発明によれば、換字処理及び転置処理の少なくともいずれかにおいて、サブブロックデータ単位のパイプライン処理を行い、同一のブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことができるため、小規模な回路構成で、複数のブロックデータが連続して入力されないようなシステムにおいても高速動作が可能である。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
以下、本実施の形態を図面を参照しながら説明する。
図１は、ＡＥＳ暗号の処理を例とした暗号処理回路（暗号処理装置）の基本構成図である。
なお、図１では、暗号処理回路を示すが、同様の構成にて復号処理回路も実現可能である。また、図２及び図３についても、暗号処理回路の内部構成として説明しているが、復号処理回路の内部構成としても適用可能である。
図１において、暗号処理回路（１００）は外部入力として入力データと鍵データのポートを持ち、外部出力として出力データのポートを持つ。
【０００９】
また、暗号処理回路（１００）は、ランダマイズ部処理回路（１０１）と拡大鍵生成部処理回路（１０２）で構成される。
拡大鍵生成部処理回路（１０２）は、ランダマイズ部処理回路（１０１）に対して換字処理入力と拡大鍵を入力し、ランダマイズ部処理回路（１０１）の出力である換字処理結果を受け取る。
なお、ランダマイズ部処理回路（１０１）は、ランダマイズ処理部の例であり、拡大鍵生成部処理回路（１０２）は、拡大鍵生成処理部の例である。
【００１０】
図２に、ランダマイズ部処理回路（１０１）の内部構成を示す。
セレクタ１（２０１）は、入力データと鍵加算回路（２１２）の出力を選択する。
データレジスタ（２０２）は、セレクタ１（２０１）からの出力である３２ビットごとのワードデータを格納し、１２８ビットのブロックデータを出力する。
セレクタ２（２０３）は、データレジスタ（２０２）の出力をワードデータ毎に選択する。
セレクタ３（２０４）は、セレクタ２（２０３）の出力であるワードデータをバイトデータ毎に選択する。
セレクタ４（２０５）は、セレクタ３（２０４）の出力と拡大鍵生成部処理回路（１０２）から入力される換字処理入力を選択する。
換字処理回路（２０６）は、ＡＥＳ暗号のＳｕｂＢｙｔｅ処理を行う。換字処理回路（２０６）は、換字処理部の例である。換字処理回路（２０６）には、内部工程を時分割処理するためのパイプラインレジスタ（２０７）が含まれている。図２の例では、４段のパイプラインレジスタが含まれている。
中間レジスタ（２０８）は、換字処理回路（２０６）の出力であるバイトデータをワードデータ毎に格納する。
転置処理回路（２０９）は、換字処理回路（２０６）及びＡＥＳ暗号におけるＭｉｘＣｏｌｕｍｎｓ及びＩｎｖＭｉｘＣｏｌｕｍｎｓ処理を行う。転置処理回路（２０９）は、転置処理部の例である。転置処理回路（２０９）には、内部工程を時分割処理するためのパイプラインレジスタ（２０７）が含まれている。図２の例では、２段のパイプラインレジスタ（２０７）が含まれている。
セレクタ５（２１０）は、中間レジスタ（２０８）の出力及びセレクタ２（２０３）の出力を選択する。
セレクタ６（２１１）は、転置処理回路（２０９）及びセレクタ５（２１０）の出力を選択する。
鍵加算回路（２１２）は、セレクタ６（２１１）の出力と拡大鍵にＡＥＳ暗号におけるＡｄｄＲｏｕｎｄＫｅｙ処理を行う。
【００１１】
図３に、拡大鍵生成部処理回路（１０２）の内部構成を示す。
セレクタ１（３０１）は、鍵データとセレクタ２（３０５）の出力を選択する。
鍵レジスタ（３０２）は、セレクタ１（３０１）からの出力である３２ビットごとのワードデータを格納し、１２８ビットの鍵データを出力する。
拡大鍵生成回路（３０３）は、鍵レジスタ（３０２）の出力とランダマイズ部処理回路（１０１）からの換字処理出力および拡大鍵レジスタ（３０４）の出力により所定の拡大鍵生成処理を行う。
拡大鍵レジスタ（３０４）は、拡大鍵生成回路（３０３）により生成された１２８ビットの拡大鍵ブロックデータを格納する。
セレクタ２（３０５）は、拡大鍵レジスタ（３０４）の出力から必要なワードデータを選択する。
転置処理回路（３０６）は、ＡＥＳ暗号におけるＩｎｖＭｉｘＣｏｌｕｍｎｓ処理を行う。転置処理回路（３０６）は、転置処理部の例である。転置処理回路（３０６）には、内部工程を時分割処理するためのパイプラインレジスタ（２０７）が含まれている。図３の例では、２段のパイプラインレジスタ（２０７）が含まれている。
セレクタ３（３０７）は、転置処理回路の出力とセレクタ２の出力を選択する。
【００１２】
本実施の形態では、ＡＥＳ暗号を処理する暗号処理回路（１００）を例としている。
図７に、ＡＥＳ暗号アルゴリズムの概要を示す。
ＡＥＳ暗号アルゴリズムでは、ランダマイズ部処理回路（１０１）において、拡大鍵生成部処理回路（１０２）で生成された拡大鍵を用いて、１２８ビットのブロックデータに対する暗号化処理が行われる。
まず、平文ブロックデータをサブブロックデータ単位に区切りながら入力し、サブブロックデータと拡大鍵とのＥＸＯＲ演算により初期化処理を行う。サブブロックデータとは、ワードデータ又はバイトデータである。対象となる処理により、ワードデータに区切られる場合とバイトデータに区切られる場合がある。
その後、ランダマイズ部処理回路（１０１）では、初期化処理後のブロックデータをサブブロックデータ単位に区切るとともに、サブブロックデータに対してＳｕｂＢｙｔｅ処理（換字処理）、ＳｈｉｆｔＲｏｗｓ処理、ＭｉｘＣｏｌｕｍｎｓ処理（転置処理）及び拡大鍵生成部処理回路（１０２）からの拡大鍵を用いるＡｄｄＲｏｕｎｄＫｅｙ処理を行い、これを暗号化処理の１ラウンドとし、これをｎラウンド繰り返し、最終的に１２８ビットの暗号文が作成され、出力される。
そして、これらの処理のうち、ＳｕｂＢｙｔｅ処理（換字処理）及びＭｉｘＣｏｌｕｍｎｓ処理（転置処理）における計算量が他の処理に比べて多大であり、これらＳｕｂＢｙｔｅ処理（換字処理）及びＭｉｘＣｏｌｕｍｎｓ処理（転置処理）に対する回路遅延が問題となる。
本実施の形態では、換字処理と転置処理を含む処理を行うランダマイズ部処理回路（１０１）において、換字処理及び転置処理を行う回路にパイプラインレジスタを含み、サブブロックデータ単位のパイプライン処理により換字処理及び転置処理内の複数の内部工程を実施し、同一のブロックデータに含まれる複数のサブブロックデータに対する並列処理を行って高速化を図る。
また、複数のバイトデータで構成される１２８ビットの拡大鍵ブロックデータに対して転置処理を含む処理を行う拡大鍵生成部処理回路（１０２）において、転置処理を行う回路にパイプラインレジスタを含み、サブブロックデータ単位のパイプライン処理により転置処理内の複数の内部工程を実施し、同一のブロックデータに含まれる複数のサブブロックデータに対する並列処理を行って高速化を図る。
【００１３】
次に動作について説明する。
図４及び図５は暗号処理装置（１００）の処理フローを示す図である。
図４及び図５では、換字処理回路（２０６）に４段のパイプラインレジスタ（２０７）、転置処理回路（２０９）に２段のパイプラインレジスタ（２０７）を実装した場合の例で説明する。
図４では、暗号処理回路（１００）における０サイクルから３２サイクル目までを説明し、図５では、暗号処理回路（１００）における１８４サイクルから２１２サイクル目までを説明している。
【００１４】
まず、０サイクル目から３サイクル目は、暗号処理回路（１００）の入力ポートからの入力データ（平文データ）をワードデータ毎にランダマイズ部処理回路（１０１）のセレクタ１（２０１）経由でデータレジスタ（２０２）に格納する。
次に、ＡＥＳ暗号における初期化処理として、４サイクル目から７サイクル目において、データレジスタ（２０２）に格納された１２８ビットの平文ブロックデータがワードデータに分割されて、セレクタ２（２０３）、セレクタ５（２１０）及びセレクタ６（２１１）を経由して、鍵加算回路（２１２）でワードデータ毎にＡｄｄＲｏｕｎｄＫｅｙ処理が行われる。また、ＡｄｄＲｏｕｎｄＫｅｙ処理されたデータはセレクタ１（２０１）経由でデータレジスタ（２０２）に暗号文ブロックデータとして格納される。
同時に、４サイクル目から７サイクル目において、拡大鍵生成部処理回路（１０２）からの換字処理入力に対して、セレクタ４（２０５）経由で換字処理回路（２０６）にて（拡大鍵の生成用の）換字処理を４バイト分行う。
【００１５】
続けて、８サイクル目から２３サイクル目までデータレジスタ（２０２）に格納された１２８ビットの暗号文ブロックデータが、セレクタ２（２０３）、セレクタ３（２０４）及びセレクタ４（２０５）を経由し、換字処理回路（２０６）において、バイトデータ単位で換字処理（ＳｕｂＢｙｔｅ処理）が行われる。前述したように、この換字処理回路（２０６）では、パイプラインレジスタ（２０７）を用いてパイプライン処理がなされる。
また、８サイクル目から１１サイクル目では、４サイクル目から７サイクル目に行われた換字処理に対する処理結果を換字処理回路（２０６）から拡大鍵生成部処理回路（１０２）に対して出力し、拡大鍵生成部処理回路（１０２）の拡大鍵生成回路（３０３）においてバイトデータごとにＫｅｙＥｘｐａｎｓｉｏｎ処理を行う。
続けて１２サイクル目から１４サイクル目で残りの３ワード分のＫｅｙＥｘｐａｎｓｉｏｎ処理を拡大鍵生成部処理回路（１０２）の拡大鍵生成回路（３０３）で行う。１ワード目から３ワード目に対するＫｅｙＥｘｐａｎｓｉｏｎ処理がそれぞれ１サイクルで完了するのは、０ワード目のＫｅｙＥｘｐａｎｓｉｏｎ処理の出力に対してＥＸＯＲ演算をするだけで済むからである。
なお、図４及び図５には示していないが、拡大鍵生成回路（３０３）におけるＫｅｙＥｘｐａｎｓｉｏｎ処理の後、１２８ビットの拡大鍵ブロックデータは、拡大鍵レジスタ（３０４）及びセレクタ２（３０５）を経由して、転置処理回路（３０６）において、ワードデータごとにＭｉｘＣｏｌｕｍｎｓ処理（転置処理）が行われ、セレクタ３（３０７）を経由して、３２ビットの拡大鍵がランダマイズ部処理回路（１０１）の鍵加算回路（２１２）に供給される。転置処理回路（３０６）では、パイプラインレジスタ（２０７）を用いてパイプライン処理がなされる。
【００１６】
また、１６サイクル目、２０サイクル目、２４サイクル目、２８サイクル目では換字処理回路（２０６）の出力を格納した中間レジスタ（２０８）のデータに対して転置処理回路（２０９）でＭｉｘＣｏｌｕｍｎｓ処理を行う。
前述したように、この転置処理回路（２０９）では、パイプラインレジスタ（２０７）を用いてパイプライン処理がなされる。
そして、ＭｉｘＣｏｌｕｍｎｓ処理の２サイクル後にそれぞれの結果に対して鍵加算回路（２１２）においてＡｄｄＲｏｕｎｄＫｅｙ処理を行う。
以降、２４サイクル目以降は１ラウンドと同様に２ラウンド目以降の処理を行う。
【００１７】
次に前記の動作に関する説明におけるデータレジスタの更新方法について説明する。
入力データｄ０＿０、ｄ０＿１、ｄ０＿２、・・・・・、ｄ０＿ｆ（各１バイト、計１２８ビット（１６バイト））につき、０サイクル目から３サイクル目で４バイト毎（｛ｄ０＿０、ｄ０＿１、ｄ０＿２、ｄ０＿３｝、｛ｄ０＿４、ｄ０＿５、ｄ０＿６、ｄ０＿７｝、｛ｄ０＿８、ｄ０＿９、ｄ０＿ａ、ｄ０＿ｂ｝、｛ｄ０＿ｃ、ｄ０＿ｄ、ｄ０＿ｅ、ｄ０＿ｆ｝）にデータレジスタ（２０２）に対するデータ格納処理が行われる。
以降、ＡＥＳアルゴリズムにおけるＮラウンド後の処理結果を、
ｄＮ＿０、ｄＮ＿１、ｄＮ＿２、・・・・・、ｄＮ＿ｆ
と表記する。
このとき、出力データは、
ｄ１１＿０、ｄ１１＿１、ｄ１１＿２、・・・・・、ｄ１１＿ｆ（各１バイト、計１２８ビット（１６バイト））
となる。
【００１８】
４サイクル目から７サイクル目にセレクタ２（２０３）でデータレジスタ（２０２）から｛ｄ０＿０、ｄ０＿１、ｄ０＿２、ｄ０＿３｝の計４バイトを取り出し、セレクタ５（２１０）、セレクタ６（２１１）を経由して鍵加算回路（２１２）で拡大鍵と排他的論理和処理をし｛ｄ１＿０、ｄ１＿１、ｄ１＿２、ｄ１＿３｝を算出する。
同様に、｛ｄ０＿４、ｄ０＿５、ｄ０＿６、ｄ０＿７｝・・・・に対しても処理を行う（計４サイクル）。
１ラウンド目のＳｕｂＢｙｔｅ処理はセレクタ２（２０３）、セレクタ３（２０４）経由でｄ１＿０をデータレジスタ（２０２）から換字処理回路（２０６）へ入力する。続けて次サイクルで連続してｄ１＿５、ｄ１＿ａ、ｄ１＿ｆを換字処理回路（２０６）へ毎サイクル入力する。
さらに以降続けて、ｄ１＿４、ｄ１＿９、ｄ１＿ｅ、ｄ１＿３
ｄ１＿８、ｄ１＿ｄ、ｄ１＿２、ｄ１＿７
ｄ１＿ｃ、ｄ１＿１、ｄ１＿６、ｄ１＿ｂ
の順に換字処理回路へ入力する。
このように、ＳｕｂＢｙｔｅ処理に対する入力順序を入れ替えることで、ＳｈｉｆｔＲｏｗｓ処理が行われる。
ここで、換字処理回路のパイプラインレジスタを４段とすると、４サイクル後に換字処理回路はＳｕｂＢｙｔｅ処理結果を出力する。
以降この処理結果をＳ（ｄ１＿０）のように記述する。
１ラウンド目のＭｉｘＣｏｌｕｍｎｓ処理に対して、Ｓ（ｄ１＿０）は中間レジスタの最上位バイトに格納する。以降、Ｓ（ｄ１＿５）、Ｓ（ｄ１＿ａ）、Ｓ（ｄ１＿ｆ）は順次下位バイトへ格納する。つまりＳ（ｄ１＿０）の格納から３サイクル後の中間レジスタの値は、Ｓ（ｄ１＿０）｜Ｓ（ｄ１＿５）｜Ｓ（ｄ１＿ａ）｜Ｓ（ｄ１＿ｆ）の計４バイトとなる。
この４バイト値に対して転置処理回路（２０９）でＭｉｘＣｏｌｕｍｓ処理を行い、続けて２サイクル後に鍵加算回路（２１２）でＡｄｄＲｏｕｎｄＫｅｙ処理（鍵加算処理）を行う。
この結果はｄ２＿０、ｄ２＿１、ｄ２＿２、ｄ２＿３とし、ｄ１＿０、ｄ１＿５、ｄ１＿ａ、ｄ１＿ｆが格納されていたレジスタ位置にｄ２＿０、ｄ２＿１、ｄ２＿２、ｄ２＿３を再格納する。
以降、Ｓ（ｄ１＿４）、Ｓ（ｄ１＿９）、Ｓ（ｄ１＿ｅ）、Ｓ（ｄ１＿３）
Ｓ（ｄ１＿８）、Ｓ（ｄ１＿ｄ）、Ｓ（ｄ１＿２）、Ｓ（ｄ１＿７）
Ｓ（ｄ１＿ｃ）、Ｓ（ｄ１＿１）、Ｓ（ｄ１＿６）、Ｓ（ｄ１＿ｂ）
に対しても同様の処理を行う。
【００１９】
２〜９ラウンド以降のＳｕｂＢｙｔｅ処理およびＭｉｘＣｏｌｕｍｎｓ処理も１ラウンド目と同様に行う。
１０ラウンド目のＳｕｂＢｙｔｅ処理も１ラウンド目と同様に行う。
１０ラウンド目の中間レジスタＳ（ｄ１０＿０）｜Ｓ（ｄ１０＿５）｜Ｓ（ｄ１０＿ａ）｜Ｓ（ｄ１０＿ｆ）はセレクタ５（２１０）、セレクタ６（２１１）経由でＭｉｘＣｏｌｕｍｎｓ処理をパスし、ＡｄｄＲｏｕｎｄＫｅｙ処理（鍵加算処理）を行ってデータレジスタ（２０２）に再格納する。
そして、最終的に、２０９サイクル目から２１２サイクル目にかけて、データレジスタ（２０２）に格納された暗号文ブロックデータが、セレクタ２（２０３）を経由して、ワードデータごとに出力される。
【００２０】
本実施の形態は、従来技術と異なり、アルゴリズムで規定される段関数の回路パスを複数のパイプラインレジスタで分割している。このためレジスタ間の回路遅延が従来技術よりも小さくなるので、より高速な動作周波数で処理することができる。
図２の場合、最も回路遅延が大きいと予想されるデータレジスタ（２０２）と中間レジスタ（２０８）間の回路がパイプラインレジスタ（２０７）により５分割されるため、特開２００４−２３３４２７号公報に記載の従来技術より５倍程度の動作周波数の向上が見込める。
なお、上記の５分割とは、（１）データレジスタ（２０２）から１段目のパイプラインレジスタ、（２）１段目のパイプラインレジスタから２段目のパイプラインレジスタ、（３）２段目のパイプラインレジスタから３段目のパイプラインレジスタ、（４）３段目のパイプラインレジスタから４段目のパイプラインレジスタ、（５）４段目のパイプラインレジスタから中間レジスタ（２０８）の５分割を意味する。
【００２１】
また、換字処理回路（２０６）や転置処理回路（２０９）にパイプラインレジスタ（２０７）を用いない場合と比較して、増加するサイクル数は換字処理回路（２０６）のレイテンシ分の４サイクルのみであり、全体のサイクル数の割合から考えると２％程度である。以上から、暗号処理全体の処理性能は向上する。
回路規模については、従来技術の特開２００４−２３３４２７号公報に比べて、パイプラインレジスタ分の増加程度であり、段関数をすべて実装する特開２００３−２８８００９号公報や特開平５−２４９８９１号公報に開示されている実装と比較して小規模に実装することができる。
【００２２】
また、本実施の形態における処理はすべて１つのブロックデータ内における時分割処理であり、複数のブロックデータの入力に対して並列処理を行うものではない。よって、連続してデータが入力されないようなシステムであっても、処理性能は向上する。
つまり、特開２００３−２８８００９号公報及び特開平５−２４９８９１号公報の技術では、複数のブロックデータを対象としたパイプライン処理を行っているため、複数のブロックデータが連続して入力されなければ、パイプラインによる並列処理の実効性がない。本実施の形態では、換字処理及び転置処理において、一つのブロックデータに対して複数のサブブロックデータ単位でパイプラインによる並列処理を行っているため、複数のブロックデータが連続して入力されない場合でも、処理性能が向上する。
【００２３】
最後に、前述の暗号処理回路（１００）を用いたデバイスとしてセキュリティチップ５００の構成例を図６に示す。
セキュリティチップは携帯電話、ＩＣカード、ＩＣカードリーダライタ等の小型端末やネットワークルータなどの通信機器において組み込まれることが想定される。
図６のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）（５０１）は暗号処理回路（１００）に対する入出力の制御やメモリ、外部インターフェースとの制御を行うプログラムを実行するプロセッサである。
メモリ（５０２）はＣＰＵの作業領域として利用されるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）や各種プログラムは設定パラメータ等を格納するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）からなる。
外部インターフェース（５０３）はシリアル通信やＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の各種インターフェースであり、セキュリティチップに対して、暗号処理回路（１００）で処理するデータの入出力を行う。
【００２４】
本実施の形態では、複数のバイトデータで構成される平文ブロックあるいは暗号文ブロックに対して、換字処理と転置処理を含む暗号方式を処理する回路において、換字処理と転置処理を行う回路にパイプラインレジスタを含み、同一ブロックの前記平文及び暗号文を時分割で並列処理することを特徴とする暗号処理回路について説明した。
【００２５】
また、前記暗号処理回路において、前記パイプラインレジスタを含む換字処理回路及び転置処理回路は、同一ブロックの複数のバイトデータに対して時分割処理を行うことを説明した。
【００２６】
また、前記暗号処理回路において、前記パイプラインレジスタを含む換字処理回路は、同一ブロックの処理で用いる鍵情報あるいは鍵情報を元に作られた情報に対して時分割処理を行うことを説明した。
【００２７】
なお、本実施の形態では、暗号処理回路について説明したが、図１〜図３に示す構成及び、図４及び図５に示す動作は復号処理回路（復号処理装置）に適応可能である。
すなわち、複数のサブブロックデータで構成されるブロックデータに対して複数の内部工程を実施して換字処理を行う換字処理部と複数の内部工程を実施して転置処理を行う転置処理部とが含まれる復号処理装置であって、前記換字処理部及び前記転置処理部のうちの少なくともいずれかが、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一のブロックデータに含まれる複数のサブブロックデータに対して並列処理を行う復号処理装置を実現可能である。
そして、前記復号処理装置は、暗号文ブロックデータに対して複数の内部工程を実施して換字処理を行う換字処理部と複数の内部工程を実施して転置処理を行う転置処理部とが含まれるランダマイズ処理部を有し、前記ランダマイズ処理部内において、前記換字処理部及び前記転置処理部のうちの少なくともいずれかが、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一の暗号文ブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことが可能である。
また、前記復号処理装置は、鍵ブロックデータに対して複数の内部工程を実施して転置処理を行う転置処理部が含まれる拡大鍵生成処理部を有し、前記拡大鍵生成処理部内において、前記転置処理部が、サブブロックデータ単位のパイプライン処理を行って複数の内部工程を実施し、同一の鍵ブロックデータに含まれる複数のサブブロックデータに対して並列処理を行うことが可能である。
【００２８】
また、図６のセキュリティチップ５００に、暗号処理回路（１００）の代わりに復号処理回路を搭載することも可能である。
また、図６のセキュリティチップ５００に、暗号処理回路、復号処理回路の両者を搭載することも可能である。
【００２９】
また、以上の説明では、ランダマイズ部処理回路（１０１）の換字処理回路（２０６）及び転置処理回路（２０９）の双方にパイプラインレジスタ（２０７）を含むこととしたが、換字処理回路（２０６）及び転置処理回路（２０９）のどちらか一方のみがパイプラインレジスタ（２０７）を含む構成としてもよい。
【００３０】
また、以上の説明では、ランダマイズ部処理回路（１０１）及び拡大鍵生成部処理回路（１０２）の双方でパイプラインレジスタ（２０７）によるパイプライン処理を行うこととしたが、ランダマイズ部処理回路（１０１）及び拡大鍵生成部処理回路（１０２）のどちらか一方のみがパイプラインレジスタ（２０７）を含む構成としてもよい。
【００３１】
また、以上の説明では、ＡＥＳ暗号を例として説明したが、これに限らず、複数のサブブロックデータから構成されるブロックデータを対象とし、サブブロックデータ単位の並列処理が可能な暗号アルゴリズムであれば、本実施の形態に係る暗号処理回路及び復号処理回路は適用可能である。
【００３２】
本実施の形態では、暗号処理又は復号処理は、ランダマイズ部処理回路、拡大鍵生成部処理回路というハードウェアにより実現することとしたが、ソフトウェア処理により実現するようにしてもよい。
【図面の簡単な説明】
【００３３】
【図１】実施の形態１に係る暗号処理回路の構成例を示す図。
【図２】実施の形態１に係るランダマイズ部処理回路の構成例を示す図。
【図３】実施の形態１に係る拡大鍵生成部処理回路の構成例を示す図。
【図４】実施の形態１に係る暗号処理の各サイクルにおける動作例を示す図。
【図５】実施の形態１に係る暗号処理の各サイクルにおける動作例を示す図。
【図６】実施の形態１に係る暗号処理回路を用いたセキュリティチップの例を示す図。
【図７】ＡＥＳ暗号アルゴリズムの概要を示す図。
【符号の説明】
【００３４】
１００  暗号処理回路、１０１  ランダマイズ部処理回路、１０２  拡大鍵生成部処理回路、２０１  セレクタ１、２０２  データレジスタ、２０３  セレクタ２、２０４  セレクタ３、２０５  セレクタ４、２０６  換字処理回路、２０７  パイプラインレジスタ、２０８  中間レジスタ、２０９  転置処理回路、２１０  セレクタ５、２１１  セレクタ６、２１２  鍵加算回路、３０１  セレクタ１、３０２  鍵レジスタ、３０３  拡大鍵生成回路、３０４  拡大鍵レジスタ、３０５  セレクタ２、３０６  転置処理回路、３０７  セレクタ３、５００  セキュリティチップ、５０１  ＣＰＵ、５０２  メモリ、５０３  外部インターフェース。
【図１】
2008046466.tif 000003
【図２】
2008046466.tif 000004
【図３】
2008046466.tif 000005
【図４】
2008046466.tif 000006
【図５】
2008046466.tif 000007
【図６】
2008046466.tif 000008
【図７】
2008046466.tif 000009