(57)【要約】  【課題】  行列演算を含む複数の演算処理の一部を共通化し、且つ、一部行列演算を並列に実行し高速化を実現した演算装置、および、暗号・復号演算装置の提供。  【解決手段】  第１の行列演算を含む第１の演算処理と、第２の行列演算を含む第２の演算処理との何れも演算処理可能な演算装置は、  前記第２の行列演算を行う第１の演算部４１と、前記第１の行列演算を行うために、前記第１の演算部と並列に行列演算を行う、少なくとも１以上の他の演算部４２と、前記第１の演算部と、前記他の演算部との各演算結果を論理演算する論理回路４６とを備える。そして、演算装置は、前記第１の行列演算の演算結果を要求されたとき、前記論理回路４６から得る。【選択図】  図５ 
2005100085.tif 000002
【特許請求の範囲】
【請求項１】
第１の行列演算を含む第１の演算処理と、第２の行列演算を含む第２の演算処理との何れも演算処理可能な演算装置において、
前記第２の行列演算を行う第１の演算部と、
前記第１の行列演算を行うために、前記第１の演算部と並列に行列演算を行う、少なくとも１以上の他の演算部と、
前記第１の演算部と、前記他の演算部との各演算結果を論理演算する論理回路とを備え、
前記第１の行列演算の演算結果を、前記論理回路から得るようにしたことを特徴とする演算装置。
【請求項２】
更に、前記第１の演算部の演算結果と、前記論理回路からの出力とを選択的に出力する出力手段を備えたことを特徴とする請求項１記載の演算装置。
【請求項３】
前記他の演算部で演算する行列の少なくとも一つに同値な列を2つ以上備え、これら列の行列演算を行う共通で演算する第２の演算部を前記他の演算部に含むことを特徴とする請求項１または２記載の演算装置。
【請求項４】
第１の行列演算を含む第１の演算処理と、第２の行列演算を含む第２の演算処理との何れも演算処理可能な演算装置において、
各行列演算結果を排他的論理和することにより前記第１の行列演算と同じ演算結果が得られる前記第２の行列演算と第３の行列演算とのうち、前記第２の行列演算を行う第１の演算部と、
前記第３の行列演算を行う第２の演算部と、
前記第１の演算部で演算された演算結果と前記第２の演算部で演算された演算結果とを論理演算する論理回路と、
を備え、前記第１の行列演算の演算結果を、前記論理回路から得るようにしたことを特徴とする演算装置。
【請求項５】
更に、前記第１の演算部の演算結果と、前記論理回路からの出力とを選択的に出力する出力手段を備えたことを特徴とする請求項５記載の演算装置。
【請求項６】
前記第３の行列演算は同値な列を2つ以上備えたものであり、前記第２の演算部は、前記列の行列演算を行う第３の演算部を含むようにしたことを特徴とす  る請求項５または６記載の演算装置。
【請求項７】
第１の行列演算を含む復号処理と、第２の行列演算を含む暗号処理との何れも実行可能な暗号・復号演算装置において、
各演算結果を排他的論理和することにより前記第１の行列演算と同じ演算結果が得られる前記第２の行列演算と第３の行列演算とのうち、前記第２の行列演算を行う第１の演算部と、
前記第３の行列演算を行う第２の演算部と、
前記第１の演算部で演算された演算結果と前記第２の演算部で演算された演算結果とを論理演算する論理回路と、
を備え、前記第１の行列演算の演算結果を、前記論理回路から得るようにしたことを特徴とする暗号・復号演算装置。
【請求項８】
更に、暗号処理時には前記第１の演算部の演算結果を選択し、復号処理時は前記論理回路からの出力を選択して出力する出力手段を備えたことを特徴とする請求項７記載の暗号・復号演算装置。
【請求項９】
前記第３の行列演算は同値な列を2つ以上備えたものであり、前記第２の演算部は、前記列の行列演算を行う第３の演算部を含むようにしたことを特徴とする請求項８または９記載の暗号・復号演算装置。
【請求項１０】
前記第２の行列演算の行列は、
【数１】
2005100085.tif 000010
であり、前記列の行列演算の行列は、（ｃ  ８  ｃ  ８）および（８  ｃ  ８  ｃ）であることを特徴とする請求項９記載の暗号・復号演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算処理を実行するものであって、これら演算処理の少なくとも一部にそれぞれ行列演算を用いている演算装置、および、暗号・復号演算装置に関する。
【背景技術】
【０００２】
米国標準の共通鍵暗号方式ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）は、従来の暗号方式ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）に代わり、世界標準として使われる共通暗号方式である。ＡＥＳの仕様は、ＦＩＰＳ１９０−２により定められている。
【０００３】
このＡＥＳの演算の中に、行列演算をおこなうMixColumnsとInvMixColumｓという演算がある。このInvMixColumsとMixColumnsの行列演算は、一部回路を共有する事ができる事が示されている（例えば、非特許文献1参照）。
【０００４】
このようにAESでは、MixColumnsとInvMixColumnsは一部回路を共有することができる。このように、回路を共有化することにより、MixColumnsとInvMixColumnsをそれぞれ独立に設計するよりも、回路規模は小さくすることができる。
【非特許文献１】"AESにおける多項式乗算回路の効率的実装法"  情報処理学会第63回（平成13年後期）全国大会
【発明の開示】
【発明が解決しようとする課題】
【０００５】
LSIを実装する場合は、回路規模を小さくしてコストを抑えることと、および高い動作周波数で動作することの両方が求められる。コストを抑えるには、LSIとして実装する場合において、可能な限り実装に必要な回路規模を小さくすることで対応することができる。LSIの製造コストは、1枚のウェハから取れるLSIの数により決まる。このため、1枚のウェハから取れるLSIの数が少なくなると製造コストが上昇してゆく。そのため、回路規模が大きくなることで、LSIの面積も比例して大きくなり、1枚のウェハから取れるLSIの数が少なくなる。この結果、LSI一つあたりの製造コストが高くなる。このように製造時のコストを抑えるには回路規模は小さくすればよく、回路構成の設計段階において、演算回路を共有できるように回路を構成する必要がある。
【０００６】
また、同期信号を用いたLSIにおいて高い動作周波数を出すためには、動作周波数の決定要因である最大遅延パスを短くする必要がある。この最大遅延パスは、クリティカルパスと呼ばれ、同期信号1周期内で演算回路内の一番長い演算をおこなう信号線である。このクリティカルパスを短くすることで、動作周波数を上げることできるようになる。クティカルパスを短くするためには、並列に演算できる部分を見つけ、並列に演算できるような回路構成とする必要がある。
【０００７】
しかし、上記論文で示されているInvMixColumsとMixColumnsとの行列演算の一部共有化方法においては、回路規模を小さくすることは示されているが、演算を並列に行ない、演算を高速化することについては何ら示されていない。
【０００８】
そこで、本発明は、行列演算を含む複数の演算処理の一部を共通化し、且つ、一部行列演算を並列に実行し高速化を実現した演算装置、および、暗号・復号演算装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、第１の行列演算を含む第１の演算処理と、第２の行列演算を含む第２の演算処理との何れも演算処理可能な演算装置において、前記第２の行列演算を行う第１の演算部と、前記第１の行列演算を行うために、前記第１の演算部と並列に行列演算を行う、少なくとも１以上の他の演算部と、前記第１の演算部と、前記他の演算部との各演算結果を論理演算する論理回路とを備え、前記第１の行列演算の演算結果を、前記論理回路から得るようにした。
【００１０】
また、本発明は、第１の行列演算を含む第１の演算処理と、第２の行列演算を含む第２の演算処理との何れも演算処理可能な演算装置において、各行列演算結果を排他的論理和することにより前記第１の行列演算と同じ演算結果が得られる前記第２の行列演算と第３の行列演算とのうち、前記第２の行列演算を行う第１の演算部と、前記第３の行列演算を行う第２の演算部と、前記第１の演算部で演算された演算結果と前記第２の演算部で演算された演算結果とを論理演算する論理回路と、備え、前記第１の行列演算の演算結果を、前記論理回路から得るようにした。
【００１１】
また、本発明の暗号・復号演算装置は、第１の行列演算を含む復号処理と、第２の行列演算を含む暗号処理との何れも実行可能な暗号・復号演算装置において、各演算結果を排他的論理和することにより前記第１の行列演算と同じ演算結果が得られる前記第２の行列演算と第３の行列演算とのうち、前記第２の行列演算を行う第１の演算部と、前記第３の行列演算を行う第２の演算部と、前記第１の演算部で演算された演算結果と前記第２の演算部で演算された演算結果とを論理演算する論理回路とを備え、前記第１の行列演算の演算結果を、前記論理回路から得るようにした。
【発明の効果】
【００１２】
本発明によれば、特に、演算する行列を分割し、分割した行列を並列化実行するようにしたから、行列演算の実行を高速化できるようになった。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
【００１４】
行列Mとある規約多項式上で定義された拡大体とのかけ算は、行列Mを二つの以上の行列(M1，M2，…，Mn(n2))の加算で表現すると、式１のように展開できる。
【００１５】
【数１】
2005100085.tif 000003
【００１６】
このように、行列Mを式１に示すように、二対以上の行列の加算で等価に表現しなおすことで、上式の右辺の各演算(M1×D，M2×D，…，Mn×D)を並列に演算することができるようになる。但し、単純には、並列化した分だけ回路規模は大きくなってしまう。
【００１７】
ところで、対象となる行列Mの各要素M(c，r)(c2，r2)を、加算演算により二つ以上の要素で表現する場合に、表現する各要素は対象となる（元の）行列Mの要素よりも小さい数字の加算で表すことができれば、その要素だけに着目すると、演算量が小さくなり、その結果、クリティカルパスの削減および回路規模の削減ができる。
【００１８】
この点について、以下に理由を説明する。まず、規約多項式を式２とする。
【００１９】
【数２】
2005100085.tif 000004
【００２０】
また、この規約多項式上の値を値Sとする(Sはnビット幅(n2))。このとき２倍算は、式３のようにして演算することができる。
【００２１】
【数３】
2005100085.tif 000005
【００２２】
式３において、S<<１は、Sを一ビット左へシフトしたものを意味し、n[S[n]]は入力Sの最上位ビットをn個並べたものを意味する。また、&は論理積であり、(an，an-1，…，a2，a1，a0)は、上記規約多項式の係数を並べたものである。
【００２３】
２倍算を行なう場合には、まず入力データの最上位ビットの０/１を判断してから、桁上がりがある場合と桁上がりがない場合という条件文で実装する、桁上がりを考慮した回路実装も可能であるが、このような実装の場合には、条件分岐のための回路が必要となってしまい、条件判断回路の遅延が増えてしまう。
【００２４】
これに対し、２倍算を行なう場合に式３のような実装すれば、条件分岐の判断が不必要となるため、回路を高速に動作させることができるとともに、条件判断回路を削減することができるようになるため、回路規模を小さくすることができる。
【００２５】
また、３倍算は、式４のように表すことができる。
【００２６】
【数４】
2005100085.tif 000006
【００２７】
同様に、４倍算は、F2(F2(S))を演算し、５倍算はF5(S)=F4(S)∧Sという演算を行なうことになる（以下、排他的論理和を文章上で示す場合にのみ「∧」で示す。）。このように、掛ける数が大きくなるほど、演算量が増えることになり、これら演算を行なうための演算回路の回路規模も大きくなる。逆に、掛ける数が小さくなれば、演算量が減り、これら演算を行なうための演算回路の回路規模も小さくなるといえる。
【００２８】
以上のことから、行列を、元の行列の要素よりも小さな数字を用いた要素からなる行列加算表現とすることにより、演算を並列化しつつ、各演算は、元の行列の演算よりも小さな数の演算を行なうこととなり、演算量が小さくなり、且つ、演算時間が短縮され、その結果、演算全体においても、並列化に伴う回路規模の増大を抑制しつつ、クリティカルパスを削減できる。従って、分割に際しては、元の行列の要素よりも小さな数に分解することが重要である。
【００２９】
図１は、あらかじめ定められた行列Mと、入力として与えられるある規約多項式上で定義された拡大体Dとの掛け算を行うための本実施の形態に係る暗号・復号装置の機能ブロックを示している。なお、行列M＝(M1∧M2∧…∧Mn)で、行列M1〜Mnの各要素は、元の行列Mの対応する各要素より小さな数である。
【００３０】
M1×D演算部１１は、行列M1を予め備え、入力されたDと演算し、演算結果を出力するものであり、M2×D演算部１２は、行列M2を予め備え、入力されたDと演算し、演算結果を出力するものであり、…、Mn×D演算部１ｎ（ｎ≧２）は、行列Mnを予め備え、入力されたDと演算し、演算結果を出力するものである。排他的論理和回路１０は、これら各演算部１１、１２、…、１ｎから出力される演算結果を排他的論理和するものであり、これにより、M×Dの演算結果が出力される。
【００３１】
このように、演算部１１〜１ｎは、行列Mを二つ以上に分割した行列M1〜Mnを備え、入力Dに対し互いに独立して演算動作するから、行列Mの演算を並列に実行できるようになった。更に、行列M1〜Mnの各要素は、元の行列Mより小さな数であるから、M×Dの演算よりクリティカルパスを削減する事が可能となり、並列化に伴う回路規模の増大も抑制できる。
【００３２】
更に、上記で説明したように、１つの行列を複数の行列に分解した際に、分割後の行列Ml（ｌ≧２）においてすくなくとも二つ以上の列(第Cy(0≦y≦p，p≧２)と第Cz(0≦z≦q，q≧２))の要素が同じとなるように、行列を分割することができれば、それらの列の演算は、どれか（どちらか）の演算を１回行うことにより、他の演算の結果にも利用できるから、その部分の演算回路としては共有化できるから、回路規模を削減できる。
【００３３】
図２は、分割した行列の一つの行列Miが、p列とｕ列との要素が全て共通する場合の、Mi×D演算部１ｉ内の機能ブロックを示した図である。
【００３４】
Mi-p×D演算部２１は、予め列Mi-pを備え、Mi-pとDとを掛け算し、結果をレジスタ２０の該当部分へ出力するものであり、・・・、Mi-t×D演算部２１は、予め列Mi-tを備え、Mi-tとＤとを掛け算し、結果をレジスタ２０の該当部分へ出力するものであり、Mi-v×D演算部２１は、予め列Mi-vを備え、Mi-vとＤとを掛け算し、結果をレジスタ２０の該当部分へ出力するものである。ここで、行列Mi（ｉ≧２）内の各要素が同じであるｐ列とｕ列との演算は、何れかの列を一度だけ演算を行なって、他の各要素が同じ列への演算結果としても利用でき、そのため、Mi-p×D演算部２１の演算結果は、Mi-u×Dの演算結果としてレジスタ２０の該当部分へも供給している。そのため本回路においては、Mi-u×D演算部は備えていない。
【００３５】
このように、複数の列の演算を一つの列の演算回路で行なうことができるように行列Ｍが分解できれば、その分の共有により回路規模を削減することができる。
【００３６】
以上説明した本実施の形態によれば、演算する行列を、元の行列の要素よりも小さい行列の要素からなる複数の行列に分解し、その分解にあわせて各行列を演算する演算部を複数並列に備える構成にすることにより、クリティカルパスが削減でき高速演算が可能になった。また、分割した行列に同じ要素同士の列が複数あるような行列においては、更にそれら列の演算に対し、共通に演算部を一つ設けるのみで、回路規模を削減した回路が提供できるようになった。なお、行列の分割により、元の行列の要素よりも小さい行列の要素からなる複数の行列に分解できるのは、全ての行列に備わった特徴であるが、一方、分割した行列に同じ要素同士の列が複数あるような行列は、全ての行列に備える特徴ではないことを、断っておく。
【００３７】
次に、本実施の形態を、ＡＥＳ暗号方式を一具体例として詳細に示す。図３は、ＡＥＳ暗号方式の暗号演算及び復号演算を示したものである。
【００３８】
暗号演算は、平文を入力し、排他的論理和し、その後、SubBytes、ShiftRows、MixClum
ns、排他的論理和の一連の処理を所定回数（ｎ−２回。ｎは鍵長によって異なる）繰り返し、最後に、SubBytes、ShiftRows、鍵と排他的論理和を行った結果を暗号文として出力する。一方、復号演算は、暗号文を、排他的論理和し、その後、InvShiftRows、InvSubBytes、排他論理和、InvMixColumnsの一連の処理を所定回数（ｎ−２回）繰り返し、最後に、InvShiftRows、InvSubBytes、排他論理和を行った結果を平文として出力する。なお、ここで示した排他的論理和の他方の入力は、所定のアルゴリズムによる鍵生成手段から生成される鍵ｉ（１≦ｉ≦ｎ）であり、暗号演算と復号演算とでは、生成される順序が逆である。
【００３９】
SubBytesは、８bitの入力に対し、GF（２8）上において入力値の逆数をb0, b1, b2, b3, b4, b5, b6, b7,と示し、さらに式５の演算（アフィン変換）を行う。
【００４０】
【数５】
2005100085.tif 000007
【００４１】
この逆数を求める演算は複雑であるため、ＡＥＳ暗号方式の仕様書には、SubBytesで行われる逆数を求め、アフィン変換した後の値を簡単に求められるように、変換用のテーブルが記載されている。一方、InvSubBytesは、SubBytes演算と逆の順番で演算を行う。すなわち、アフィン変換した後、その値の逆数を求める演算を行う。
【００４２】
ShiftRowsは、データを所定の方法で並びを変える演算を行う処理を示す。一方、InvShiftRowsは、ShiftRowsの逆の順番にデータを並び替える演算を行う処理である。
【００４３】
MixColumnsは、３２ｂｉｔの入力データ（S1,S2,S3）に対して数式６の行列演算を行うものであり、InvMixColumnsは、数式７の行列演算を行うものである。なお、ＡＥＳのより詳細な処理に関しては、ＡＥＳの仕様書に記載される。
【００４４】
ＡＥＳの演算アルゴリズムにおいて定義されている、MixColumnsは式６の演算を行い、InvMixColumnsは式７の演算を行う。
【００４５】
【数６】
2005100085.tif 000008
【００４６】
ここで、InvMixColumnsで使われている行列の演算の分割を行う。InvMixColumnsで使われている行列演算をMixColumnsで使われている行列とそれ以外の行列とにわけ、加算演算を用いて等価になるように分割すると式８のようになる。
【００４７】
【数７】
2005100085.tif 000009
【００４８】
そして、式８の第一項の演算は、MixColumnsの演算と共用できる。
なお、共通暗号演算においては、復号演算に用いる行列演算を、暗号演算に用いる行列とそれ以外の演算の二つに分ける事ができるのが望ましいが、それ以外の分割でもよい。
更に、第二項の行列においては、第一列と第三列との（ｃ  ８  ｃ  ８）、第二列と第四列との（８  ｃ  ８  ｃ）が同じ要素なっている。このため、第一列の演算と第二列の演算を行なう回路のみ実装するだけで、行列演算の演算を行なう回路を実装することができる。
図４は、MixColumnsとInvMixColumnsの演算を共有した場合のＡＥＳ暗号・復号装置の機能ブロック図を示している。
【００４９】
SubBytes処理回路３１、InvSubBytes 処理回路３２、ShiftRows処理回路３３、InvShiftRows 処理回路３４は、上記で説明したそれぞれSubBytes演算、InvSubBytes演算、ShiftRows演算、InvShiftRows演算を行う回路である。また、図上３箇所ある排他的論理和は、鍵が入力されるが、それら入力線については、省略している。入力される鍵は、鍵生成回路３６から適切な排他的論理和へ、適切なタイミングで、適切な鍵が供給される。「◇」は、切替え回路を示し、２入力の何れから入力を受けるか、または２出力の何れへ出力するかを切替えるものであり、この切替えは、制御回路３６により行われているが、図上は切替え指示を行う信号線は省略している。制御回路３６は、適切な切替え回路へ適切なタイミングで切り替え指示信号を供給される。これら制御回路３６、鍵生成回路３７は、ＡＥＳ暗号・復号装置が暗号を行うのか復号を行うのかを示すモード信号を外部より受ける。
【００５０】
MixClumns・InvMixColumns処理回路３５は、制御回路３６によってMixClumns演算、InvMixColumns演算の何れかを行うように制御される。なお、制御回路３６による制御に代え、外部より直接、前記モード信号を入力することにより切替えるようになっていても良い。
【００５１】
MixClumns・InvMixColumns処理回路３５の内部構成を図５に示す。４１は、式８で示されるMixColumnsにある行列演算を行なう回路であり、４２は分割した行列の演算を行なう回路であり、これらは並列化されている。暗号演算の時には回路４１の出力を演算に用い、復号演算の時には回路４１と回路４２との出力を排他的論理和４６で、論理演算し値を用いる。さらに、回路４２は、演算回路としては、（ｃ  ８  ｃ  ８）を演算する回路４３と、（８  ｃ  ８  ｃ）を演算する回路４４とを備え、回路４３の出力は一列及び三列へ回路４４の出力は、レジスタ４５の第二列及び第四列へ出力されるように構成している。従って、演算回路４２は、回路規模が削減されている。
【００５２】
以上詳細に説明した本実施の形態の具体例によれば、ＡＥＳの演算にあるInvMixColumns の行列を、上記のようなMixColumnsを用いた二つの行列を分割することにより、InvMixColumnsの演算とMixColumnsの演算に必要とされる回路規模を削減することができる。
【００５３】
さらに、分割により式５の第一項と第二項は互いに独立して演算を行なうことができる。このように並列に行う演算は、どちらもInvMixColumnsを単独で演算する演算回路を構成するよりも、計算量が少ない行列演算の演算であるため、遅延時間は短くなり回路の高速化(同期信号の高周波数化)を図ることができる。
【図面の簡単な説明】
【００５４】
【図１】本実施の形態に係る暗号・復号装置の機能ブロックを示す図。AESの基本処理を示す図。
【図２】Mi×D演算部１ｉ内の機能ブロックを示した図。
【図３】ＡＥＳ暗号方式の暗号演算及び復号演算の手順を示した図。
【図４】MixColumnsとInvMixColumnsの演算を共有した場合のＡＥＳ暗号・復号装置の機能ブロックを示す図。
【図５】MixClumns・InvMixColumns処理回路３５の内部構成を示す図。
【符号の説明】
【００５５】
１０、４６・・・排他的論理和
１１・・・M1×D演算部、１２・・・M2×D演算部、・・・、１ｎ・・・Mn×D演算部
２０・・・レジスタ
２１・・・Mi-p×D演算部、２m・・・Mi-v×D演算部
３０・・・ＡＥＳ暗号・復号装置
３１・・・ＳｕｂＢｙｔｅｓ処理回路
３２・・・ＩｎｖＳｕｂＢｙｔｅｓ処理回路
３３・・・ＳｈｉｆｔＲｏｗｓ処理回路
３４・・・ＩｎｖＳｈｉｆｔｒＲｏｗｓ処理回路
３５・・・MixColumns＆InvMixColumns処理回路
３６・・・制御回路
３７・・・鍵生成回路
４１、４２、４３、４４・・・演算部
【図１】
2005100085.tif 000011
【図２】
2005100085.tif 000012
【図３】
2005100085.tif 000013
【図４】
2005100085.tif 000014
【図５】
2005100085.tif 000015