(57)【特許請求の範囲】
【請求項１】
nを自然数としたとき、nビットで表される２つのベクトル
A=(a0,・・・,an-1)、
B=(b0,・・・,bn-1)
及び、2nビットで表されるベクトル
C=(c0,・・・,c2n-1)
を、条件式
【式１】
0004472808.tif 000005
に従って、互いに演算し、2nビットのベクトル
D=(d0,・・・,d2n-1)
を得る積和演算装置であって、
前記条件を満たすai、bjの各組み合せについて、論理積演算を実行する論理積手段と、
前記条件を満たす前記論理積手段の演算結果の各組み合わせについて、排他的論理和演算を実行し、又は前記条件を満たす該排他的論理和演算の結果と前記論理積手段の演算結果の各組み合わせについて、排他的論理和演算を実行する第１の排他的論理和手段と、
前記条件を満たす前記論理積手段又は前記第１の排他的論理和手段の演算結果と前記ベクトルCの各ビットについて、排他的論理和演算を実行し、前記ベクトルDの各ビットを得る第２の排他的論理和手段と、
を備えたことを特徴とする積和演算装置。
【請求項２】
請求項１記載の積和演算装置を備え、伝送する情報ビットをガロア体GF(2m)上の演算を用いて暗号化することを特徴とする暗号装置。
【請求項３】
請求項１記載の積和演算装置を備え、請求項２記載の暗号化装置によって暗号化された情報ビットを、ガロア体GF(2m)上の演算を用いて復号化することを特徴とする復号装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、符号・暗号装置等に用いられるガロア体上の演算を実現するために必要な積和演算装置に関する。
【０００２】
【従来の技術】
従来より、情報の符号・暗号の分野では、ガロア体上の演算が利用されている。ガロア体GF(2m)は、2m個の元からなる集合であり、その表現方法としてベクトル表現がよく用いられる。前記ベクトル表現においては、GF(2m)上の元aはGF(2)の元ai∈{0,1}を用いて、m次元ベクトル
a=(a0，・・・，am-1)
として表現する。ベクトル表現においては、元の表現はベクトル空間の基底によって決定される。特に、多項式基底では、GF(2)上m次既約多項式fを生成多項式とし、fの根である元αを用いて、(1，α，α2，・・・，αm-1)を基底とする。また、このとき、GF(2m)上の元aの多項式表現は、xを変数として、
a=a0＋a1x＋a2x2＋・・・＋am-1xm-1
となる。GF(2m)上の元同士の演算は、前記多項式表現を用いると理解しやすい。
【０００３】
GF(2m)上の２つの元を、
a=(a0,・・・,am-1)
b=(b0,・・・,bm-1)
とする。このとき、２つの元の加算c=a＋bは、多項式表現を用いて、
c=a＋b
=a0＋a1x＋a2x2＋・・・＋am-1xm-1＋b0＋b1x＋b2x2＋・・・＋bm-1xm-1
=(a0＋b0)＋(a1＋b1)x＋(a2＋b2)x2＋・・・＋(am-1＋bm-1)xm-1
となる。すなわち、
c=(c0，・・・，cm-1)=(a0＋b0，・・・，am-1＋bm-1)
である。ここに、＋はGF(2)上の演算であるから、排他的論理和演算となる。
また、２つの元の乗算d=abは、多項式表現を用いて、まず、
【０００４】
【式２】
0004472808.tif 000002
と計算できる。さらに、xに関するm次以上の項を全て、GF(2)上m次既約多項式
f(x)=h0＋h1x＋h2x2＋・・・＋hm-1xm-1＋xm
によってm-1次以下の多項式とし、上式を変形する。すなわち、f(x)を０とおき、
xm=h0＋h1x＋h2x2＋・・・＋hm-1xm-1
をm次以上の項に繰り返し適用し、m-１次以下にする。最終的な結果を、
d=d0＋d1x＋d2x2＋・・・＋dm-1xm-1
とすると、乗算結果のベクトル表現は、
d=(d0,・・・,dm-1)
となる。
【０００５】
図４に示すのは、乗算を実現する方法として、従来からよく知られている、シフトレジスタを用いたGF(2m)乗算回路である。GF(2)上m次既約多項式を、
f(x)=h0＋h1x＋h2x2＋・・・＋hm-1xm-1＋xm
とし、0＜m≦nを満たす任意のmに対して、GF(2m)上の元、
a=(a0,・・・,am-1)
b=(b0,・・・,bm-1)
における乗算を計算するには、まず、
【０００６】
【式３】
0004472808.tif 000003
を設定しておく。端子４０７には、計算を開始するまでは「０」を入カしておく。この状態では、Ｄフリップフロップ４０１〜４０３には、x0〜xn-1の値が設定されている。端子４０７に「１」を入力すると、計算が開始され、mクロック後のＤフリップフロップ４０４〜４０６に結果が格納される。すなわち、乗算結果を
d=(d0,・・・,dm-1)
とすると、
dm-i = Zn-i, (1≦i≦m)
として取り出せる。
【０００７】
【発明が解決しようとする課題】
しかるに、図４に示した乗算回路は、拡大次数mが大きくなると、mに比例して回路規模を大きくしなければならないという問題を有する。また、図４に示した回路は一度、回路を設計してしまうと、n＜mとなる拡大次数の乗算が計算不可能であるため、汎用性に乏しいといった欠点も有する。
【０００８】
従って本発明の目的は、拡大次数mによって回路規模が拡大しない積和演算装置を提供することにある。
【０００９】
また、本発明の別の目的は、拡大次数mによる制限のない汎用的な積和演算装置を提供することにある。
【００１０】
【課題を解決するための手段】
前記目的を達成するため本発明は、nを自然数としたとき、nビットで表される２つのベクトルA=(a0,・・・,an-1)、B=(b0,・・・,bn-1)及び、2nビットで表されるベクトルC=(c0,・・・,c2n-1)を、条件式
【００１１】
【式４】
0004472808.tif 000004
に従って、互いに演算し、2nビットのベクトルD=(d0,・・・,d2n-1)を得る積和演算装置であって、前記条件を満たすai、bjの各組み合せについて、論理積演算を実行する論理積手段と、前記条件を満たす前記論理積手段の演算結果の各組み合わせについて、排他的論理和演算を実行し、又は前記条件を満たす該排他的論理和演算の結果と前記論理積手段の演算結果の各組み合わせについて、排他的論理和演算を実行する第１の排他的論理和手段と、前記条件を満たす前記論理積手段又は前記第１の排他的論理和手段の演算結果と前記ベクトルCの各ビットについて、排他的論理和演算を実行し、前記ベクトルDの各ビットを得る第２の排他的論理和手段とを備えて構成される。
【００１２】
また本発明は、前記積和演算装置を備え、伝送する情報ビットをガロア体GF(2m)上の演算を用いて暗号化する暗号装置として構成することができる。
【００１３】
更に本発明は、前記積和演算装置を備え、前記暗号化装置によって暗号化された情報ビットを、ガロア体GF(2m)上の演算を用いて復号化する復号装置として構成することができる。
【００１４】
前述したように、GF(2m)上の乗算は、多項式表現された２つの元、すなわち、GF(2)上の多項式同士の乗算の後に、結果をGF(2)上のm次既約多項式で除算することで実現できる。本発明は、GF(2)上の多項式同士の乗算を実現するために用いられる。乗算後の結果を、GF(2)上のm次既約多項式で除算する場合、特殊な規約多項式を用いると、単純な論理演算によって、除算が実現できる場合がある。特に、
f(x)=１＋x＋x2＋・・・＋xm
がGF(2)上の規約多項式となる場合は、除算が排他的論理和演算によって計算可能であることが知られている。前記規約多項式によって生成されたGF(2m)を円分体と呼ぶ。
【００１５】
GF(2m)の多項式表現された２つの元同士をGF(2)上の多項式として乗算した結果を、
ｇ(x)=c0＋c1x＋c2x2＋・・・＋c2m-2x2m-2
と表したとする。この時、前記２つの元のGF(2m)上の乗算結果の多項式表現dは、
d=(c0＋cm+1＋cm)＋(c1＋cm+2＋cm)x＋・・・＋(cm-2＋c2m-2＋cm)xm-2＋(cm-1＋cm)xm-1
となる。すなわち、GF(2m)上の乗算結果は、
d=(c0＋cm+1＋cm，c1＋cm+2＋cm，・・・，cm-2＋c2m-2＋cm，cm-1＋cm)
となり、排他的論埋和演算のみでGF(2)上の多項式の除算が計算できたことになる。従って、本発明を用いて、ガロア体GF(2m)上の乗算を実現でき、目的が達成できる。
【００１６】
【発明の実施の形態】
以下、図示した一実施形態に基いて本発明を詳細に説明する。図１は、本発明に係るガロア体GF(2m)上の演算を実現する積和演算装置の回路構成を示す図である。本実施形態では、前記条件式（１）においてn=4とした場合の例を示す。なお、本発明の実施に際し、前記回路構成は、ハードウェアのみによって実現しても良いし、ソフトウェアとの組み合せによって実現しても良い。
【００１７】
積和演算装置１００は、図２に示す論理積素子２０１と排他的論理和素子２０２を複数組合わせて構成される。論理積素子２０１は、２つの入力ビットを論理積した結果を出力する。排他的論理和素子２０２は、２つの入力ビットを排他的論理和した結果を出力する。前記論理積素子２０１と排他的論理和素子２０２の組合わせによって、積和演算装置１００は、前記条件式１に従うガロア体GF(2m)上の積和演算を実現する。すなわち、積和演算装置１００は、１６個の論理積素子１１０〜１２５、第１のグループに属する９個の排他的論理和素子１３０〜１３８及び第２のグループに属する７個の排他的論理和素子１４０〜１４６を含んで構成される。
【００１８】
論理積素子１１０〜１２５は、条件式１を満たすai、bjの各組み合せについて、論理積演算を実行するものである。本実施形態においては、n=4であるから、条件式１中の
0≦k≦2n-2
の条件より、i+jは、０〜６の値を取り、各論理積素子１１０〜１２５では、(a0,a1,a2,a3)と(b0,b1,b2,b3)の各組み合わせについて論理積演算が実行される。
【００１９】
第１のグループに属する排他的論理和素子１３０〜１３８は、条件式１を満たす論理積素子１１０〜１２５の演算結果の各組み合わせについて、排他的論理和演算を実行し、又は他の排他的論理和素子によるこの排他的論理和演算の結果と論理積素子１１０〜１２５の演算結果の各組み合わせについて、排他的論理和演算を実行する。例えば、排他的論理和素子１３０は、論理積素子１１１と１１４の演算結果の組み合せについて、排他的論理和演算を実行し、その結果を出力する。また、排他的論理和素子１３３は、論理積素子１１８と排他的論理和素子１３１（これは、論理積素子１１２と１１５の排他的論理和を出力する）の演算結果の組み合せについて、排他的論理和演算を実行し、その結果を出力する。
【００２０】
第２のグループに属する排他的論理和素子１４０〜１４６は、条件式１を満たす論理積素子１１０〜１２５又は第１のグループに属する排他的論理和素子１３０〜１３８の演算結果とベクトルCの各ビットについて、排他的論理和演算を実行して、ベクトルDの各ビットを得る。
【００２１】
次に、前記積和演算装置１００の動作について説明する。本演算装置の動作を、
D←AB＋C
と表すものとする。また、C=(CR，CL)、すなわち、
CR=(c0，・・・，cn-1)，CL=(cn，・・・，c2n-1)
と定義し、
D=(DR，DL)
すなわち、
DR=(d0，・・・，dn-1)，DL=(dn，・・・，d2n-1)
と定義する。
【００２２】
まず、GF(2m)上の２つの元
u=(u0，・・・，um-1)、
v=(v0，・・・，vm-1)
をnビット単位でブロック分割する。すなわち、
u=(U0，U1，・・・，UM-1)、
v=(V0，V1，・・・，VM-1)
但し、
U0=(u0，・・・，un-1)，U1=(un，・・・，u2n-1)，・・・、
V0=(v0，・・・，vn-1)，V1=(vn，・・・，v2n-1)，・・・
であり、最終ブロックUM-1の要素Um-1以降、及びVM-1の要素vm-1以降の部分は、「０」で埋めておく。
w=(W0，W1，・・・，W2M-1)
但し、
W0=(w0，・・・，wn-1)，W1=(wn，・・・w2n-1)，・・・
とし、wに演算結果を格納するものとする。GF(2)上の多項式同士の乗算w←uvは図３に示す手続きによって実現される。
【００２３】
すなわち、最初のステップ３０１でwが「０」に設定され、ステップ３０２でi、jは「M-1」に設定される。続くステップ３０３及び３０４で、A、B及びCに最初の値が代入され、これらの値に従ってステップ３０５で、積和演算が実行される。続くステップ３０６で、該演算結果としてのDL及びDRが、所定のw、Cにそれぞれ入力され、ステップ３０７でjが１デクリメントされる。そして、jが負になるまで、ステップ３０４〜３０７を繰り返す（ステップ３０８）。ステップ３０８でjが負になると、ステップ３０９で、所定のwにDRの値が代入され、ステップ３１０でiは１デクリメントされると共に、jは初期値に戻される。そして、iの値が負になるまで、ステップ３０３〜３１０が繰り返される（ステップ３１１）。ステップ３１１において、iが負になると、全ての演算は終了し、処理が完了する。
【００２４】
次に、本実施形態において、円分体GF(210)上の２元
u=(1,1,0,0,1,0,1,0,1,1)、
v=(1,0,1,0,1,1,1,0,1,0)
を乗算する例を示す。u、vを４ビット単位でブロック分割すると、
U0=(1,1,0,0)、U1=(1,0,1,0)、U2=(1,1,0,0)、
V0=(1,0,1,0)、V1=(1,1,1,0)、V2=(1,0,0,0)
となる。図３の手続きでは、ステップ３０５演算の手続を９回通過することになる。第１回目では、
C=(0,0,0,0,0,0,0,0)、A=U2、B=V2
であるから、図１において、
(a0,a1,a2,a3)=(1,1,0,0)、
(b0,b1,b2,b3)=(1,0,0,0)、
(c0,c1,c2,c3,c4,c5,c6,c7)=(0,0,0,0,0,0,0,0)
が入力される。したがって、出力は、
(d0,d1,d2,d3,d4,d5,d6,d7)=(1,1,0,0,0,0,0,0)
となる。同様に、２回目から９回目まで、図３の手続きにおけるステップ３０５では、図１における(d0,d1,d2,d3,d4,d5,d6,d7)として、順番に、
２回目：(1,0,0,1,1,1,0,0)、
３回目：(1,1,1,1,1,0,0,1)、
４回目：(0,0,1,1,1,1,0,0)、
５回目：(0,0,1,0,1,0,1,1)、
６回目：(1,0,0,0,1,0,1,0)、
７回目：(0,1,1,0,1,0,1,1)、
８回目：(0,0,0,1,0,1,1,0)、
９回目：(1,1,1,1,0,0,0,1)
が出力され、したがって、
W0=(1,1,1,1)、
W1=(0,0,0,1)、
W2=(0,1,1,0)、
W3=(1,0,1,1)、
W4=(1,1,0,0)、
W5=(0,0,0,0)
となる。すなわち、
w=uv=(1,1,1,1,0,0,0,1,0,1,1,0,1,0,1,1,1,1,0,0)
である。wにおいて１１ビット目は１であるから、乗算結果であるGF(210)上の元は、円分体の性質を利用して、
(1+0+1,1+1+1,1+0+1,1+1+1,0+1+1,0+1+1,0+1+1,1+0+1,0+0+1,1+1)
=(0,1,0,1,0,0,0,0,1,0)
となる。
【００２５】
以上、本発明の一実施形態を図面に沿って説明した。しかしながら本発明は前記実施形態に示した事項に限定されず、特許請求の範囲の記載に基いてその変更、改良等が可能であることは明らかである。本発明では、例として、円分体を用いてその原理を説明したが、本発明は円分体に限らず、一般のGF(2m)上の乗算を実現するために利用することができる。
【００２６】
【発明の効果】
以上説明してきたように、本発明の積和演算装置は、ガロア体GF(2m)上の乗算を実現するために利用でき、拡大次数mによる制限もなく、従って、汎用的な回路を実現することができる。
【００２７】
また、拡大次数mによって回路規模が決定されないので、mが大きくなると回路規模が大きくなるという問題も解決できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る積和演算装置の回路構成図である。
【図２】図１の積和演算装置の回路構成に用いられる論理素子を示した図である。
【図３】図１の積和演算装置における演算の手順を説明するためのフローチャートである。
【図４】従来のガロア体上の乗算装置における回路構成図である。
【符号の説明】
１００  積和演算装置
１１０〜１２５  論理積素子
１３０〜１３８  第１の排他的論理和素子
１４０〜１４６  第２の排他的論理和素子
【図１】
0004472808.tif 000006
【図２】
0004472808.tif 000007
【図３】
0004472808.tif 000008
【図４】
0004472808.tif 000009