JP2001051832A - 乗算剰余演算方法および乗算剰余回路 - Google Patents

乗算剰余演算方法および乗算剰余回路

Info

Publication number
JP2001051832A
JP2001051832A JP22277299A JP22277299A JP2001051832A JP 2001051832 A JP2001051832 A JP 2001051832A JP 22277299 A JP22277299 A JP 22277299A JP 22277299 A JP22277299 A JP 22277299A JP 2001051832 A JP2001051832 A JP 2001051832A
Authority
JP
Japan
Prior art keywords
variable
multiplication
register
product
mod
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP22277299A
Other languages
English (en)
Other versions
JP4177526B2 (ja
Inventor
Masahiko Takenaka
正彦 武仲
Soichi Okada
壮一 岡田
Naoya Torii
直哉 鳥居
Takayuki Hasebe
高行 長谷部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP22277299A priority Critical patent/JP4177526B2/ja
Publication of JP2001051832A publication Critical patent/JP2001051832A/ja
Application granted granted Critical
Publication of JP4177526B2 publication Critical patent/JP4177526B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 既約多項式の次数を固定することなく汎用性
があり、大きな次数の変数についても高速な演算を可能
とする乗算剰余演算方法および乗算剰余回路を提供す
る。 【解決手段】 多項式基底で表される2の拡大体GF(2m)
上の2つの元a(x),b(x)と既約多項式f(x)の乗算剰余演
算を行う際に、a(x)×b(x)の上位ビットとパラメータf'
(x)との積の上位ビットをf(x)に乗算して、a(x)×b(x)
のm次以上の部分がキャンセルされるようなf(x)の倍数
をa(x)×b(x)に加算する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、多項式基底で表さ
れる2の拡大体GF(2m)上の2つの元a(x),b(x)と既約多
項式fに対して、a(x)×b(x) mod f(x)の乗算剰余演算
を行う乗算剰余方法および乗算剰余演算回路に関する。
【0002】
【従来の技術】近年のコンピュータネットワークの発達
により、データベースの検索や電子メール、電子ニュー
スなどの電子化された情報をネットワークを経由して送
受信する機会が急速の増加してきている。さらに、これ
らを利用して、オンラインショッピングなどのサービス
も提供されつつある。しかし、それに伴って、ネットワ
ーク上の電子化されたデータを盗聴したり、改竄した
り、または他人になりすましてサービスを受けるなどの
違法行為についての問題が浮上してきている。特に、無
線を利用したネットワークにおいては、傍受が容易なた
めこれらを防止する対策が望まれている。
【0003】これらの問題に対して暗号技術(encrypti
on technology)を応用した暗号化電子メールや利用者
認証システムが提案され、種々のネットワークにも導入
されつつあり、コンピュータネットワークにおいて暗号
化は必須の技術となりつつある。この意味でコンピュー
タネットワークにおいては暗号化は必須の技術であると
いえる。
【0004】暗号化方式は、大別すると秘密鍵暗号系と
公開鍵暗号系の2つの分類することができる。秘密鍵暗
号系は、送信者と受信者が同じ鍵を持つことにより暗号
通信を行う方式である。すなわち、秘密鍵暗号系では、
あるメッセージを秘密の暗号鍵に基づいて暗号化し相手
に送り、受け手はこの暗号鍵を用いて暗号分を複合化し
もとのメッセージに戻して情報を入手する。
【0005】公開鍵暗号系は、送信者は公開されている
受信者の公開鍵でメッセージを暗号化して送信し、受信
者は自分の秘密鍵でその暗号化メッセージを復号するこ
とで通信を行う方式である。すなわち、公開鍵暗号系で
は、公開鍵は暗号化のための鍵、秘密鍵は公開鍵により
暗号化された暗号を復号するための鍵であり、公開鍵で
暗号化した暗号が秘密鍵でのみ復号することができる。
【0006】秘密鍵暗号系では、個人が秘密に保管しな
ければならない鍵の数が通信相手の数だけ必要であり、
必要な総鍵数はn人のネットワークの場合、n(n-1)/2
個である。また、はじめて通信をする相手に対しては、
何らかの方法で秘密鍵の配送を行う必要があるという点
で欠点がある。この問題を避けるために、大規模なネッ
トワークでは、鍵管理センタを設置し、センタとの間の
秘密鍵のみを保管し、暗号通信を行う場合はセンタから
送信相手との秘密鍵を得る方法が用いられる。この場合
秘密鍵の総数はnとなる。
【0007】一方公開鍵暗号系では、個人が秘密に保管
する鍵は自分の秘密鍵のみであり、必要な総秘密鍵数も
n人のネットワークの場合、n個である。また、はじめ
て通信する相手に対しては、公開鍵の配送を行えばよ
く、鍵管理センタを設置して、ユーザの公開鍵をn個公
開簿に登録し、センタから送信相手の公開鍵を得る方法
が用いられる。この場合、センタは公開鍵の改竄を防ぐ
だけで、秘密に保管する必要がない。ただし、公開鍵方
式は秘密鍵方式に比べて鍵のビット数が大きいため保管
に要するファイルサイズが大きくなるという問題を内包
している。
【0008】また、認証の場合、秘密鍵暗号系では、例
えば、送信するメッセージを秘密鍵で圧縮変換し、送信
文に付加して送り、受信側では同様に圧縮変換して比較
する方式がとられている。しかし、送受信が同じ鍵であ
るため受信者は認証データを偽造することができる。こ
れに対して、公開鍵暗号系では、秘密鍵で暗号化するこ
とができるのは本人だけであるという特徴を利用する。
送信者はメッセージを圧縮変換して秘密鍵で暗号化し、
送信文に付加して送り、受信者は送信者の公開鍵で付加
されたデータを復号化し、同様に圧縮変換したものと比
較する方式がとられている。この場合は受信者が不正で
きない。
【0009】このように、認証系では公開鍵暗号系の技
術は必要不可欠であるといえる。しかし、公開鍵暗号系
には、暗号化/復号化に大量の処理が必要であるという
大きな欠点があるため、一般には処理の速い秘密鍵暗号
系をメッセージの暗号化に、公開鍵暗号系は認証用にと
いうように組み合わせて用いられる場合が多い。公開鍵
暗号系の中で、現在IEEE P1363, ANSI X 9.62などで標
準化が進んでいるものに、楕円曲線暗号(Elliptic Cur
ve Cryptography)がある。これは、楕円曲線の離散対
数問題に基づくもので、N. Koblitz("A course in num
ber theory and cryptography", Spring-Verlag, 199
7)と、V. Miller("Use of elliptic curves in crypt
ography", Advances in Cryptology-Proceedings of Cr
ypto'85, Lecture Notes in Computer Science, 218(19
86), Spring-Verlag, pp 417-426)により提案された。 〔楕円曲線暗号に用いる楕円曲線〕楕円曲線暗号に用い
る主な楕円曲線は、素体上の楕円曲線(標準形:y2
3+ax+b(mod p),p:素数,a,b:GF
(p)の元)と、2の拡大体上の楕円曲線(標準形:y
2+xy=x3+ax2+b(mod f),f:n次既
約多項式,a,b:GF(2n)の元)である。この楕
円曲線上の点P(x,y)および単位元となる無限遠点
Οの集合は、加算に関して群をなす。楕円曲線は、この
点の演算による離散対数問題に基づく暗号である。 〔楕円曲線の点の演算と離散対数問題〕楕円曲線上の点
の演算は以下のものが定義されている。 加算:R=P+Q=Q+P 2倍算:R=2P=P+P 減算:R=P−Q 零点:Ο(無限遠点)=P−P スカラー倍算:kP=P+P+・・・+P(k個のPの
和) ここで、kPとPからkを計算することは困難である。
このことは、楕円曲線の離散対数問題と呼ばれており、
この離散対数問題に関連する計算の困難性に基づいて公
開鍵系の暗号とすることができる。
【0010】たとえば、公開鍵暗号系と知られる(有限
体上の)ディフィ−ヘルマン(Diffie-Hellman)鍵交換
と同様の鍵交換方式を実現することができる。楕円曲線
上のベースポイントをGとし、Aの秘密鍵をsaとしP
a=saGを演算して公開鍵とする。また、Bの秘密鍵
をsbとし、Pb=sbGを演算してこれを公開鍵とす
る。AはBの公開鍵Pbと自分の秘密鍵saから、KAB
=saPb=sabGを演算することによって共通鍵を
得ることができる。また、同様にして、BはAの公開鍵
Paと自分の秘密鍵sbから、KBA=sbPa=sba
を演算することによって共通鍵を得ることができる。こ
の方式は、ECDH(Elliptic Curve Diffie-Hellma
n)方式と呼ばれ、秘密鍵sa,sbをスカラー量として
楕円曲線上の点G、Pa、Pbに乗算する必要があり、
暗号化/復号化の際に大量の演算処理を必要とする。こ
の他にECDSA方式やECES方式なども提案されて
いるが、演算処理が大きくなる点については同様であ
る。
【0011】素体上の楕円曲線では、その各要素(x,
y,a,bなど)は整数である。加算、減算、乗算はそ
れぞれa+b(mod p)、a−b(mod p)、a×b
(modp)と定義することができ、要素同士の整数の加
算、減算、乗算を行って法pによる剰余をとることで演
算することができる。これに対し、2の拡大体上の楕円
曲線では、各要素は係数がGF(2)上(0または1)
の多項式である。加減算は、同じ次数の係数同士の加減
算となるが、各係数はGF(2)上であるため、加減算
ともに同次数の係数同士の排他的論理和(以下、XOR
と称す)で演算することができ、これをたとえばa+b
と表現する。乗算は、多項式の乗算を行って既約多項式
fで剰余をとったものと定義することができ、これをa
×b(mod f)と表現する。 〔2の拡大体の種類〕2の拡大体には、大きく分けて、
多項式基底(Polynomial Base)と正規基底(Normal Bas
e)に分類できる。m次の2の拡大体GF(2m)上の要
素は、多項式基底では、a0+a1x+a22+a33
・・・+am-1m-1と表現され、正規基底では、a0
2^0+a12^2+a32^3+・・・+am-12^(m-1)
表現される。 〔多項式基底での表現形式〕2の拡大体GF(2m)上の多項
式基底による表現形式では、各要素は数値ではなくすべ
て多項式として表現され、例えば要素a(x)はm-1次以下
の多項式として次のように表される。
【0012】
【数1】 次に、2の拡大体GF(2m)上の多項式を、ビット長がwで
あるn個のブロック(n=m/w)に分割した場合、要
素a(x)に含まれる各ブロックの要素をAi(x)とする
と次のように表すことができる。
【0013】
【数2】
【0014】
【数3】 ここで、ai∈GF(2)である。多項式基底で表される2の
拡大体GF(2m)上の要素a(x)、b(x)の加算および乗算(乗
算剰余)は、以下のように表現できる。
【0015】 c(x)=a(x)+b(x) c(x)=a(x)×b(x) mod f(x) ここで加算は係数同士の2の拡大体GF(2m)上での加算で
あり、同じ次数の係数をXORで演算することができ
る。また、2の拡大体GF(2m)上での多項式a(x)をb(x)で
除算した商(quotient)を以下のように定義することと
する。
【0016】c(x)=quot(a(x),b(x))=(a(x)-(a(x)
mod (b(x)))/b(x) 〔従来技術1〕例えば、〈"Information Theory And Re
liable Communication", R.G.Gallager〉にあるような
線形フィードバックレジスタ(LSFR)を利用した基本的
な方式により、多項式基底で表される2の拡大体GF(2m)
上の要素の乗算剰余演算を行う場合、汎用的ではあるも
のの、mビット×1ビットの乗算をm回行う必要があ
り、高速化が困難であるという問題を包含している。 〔従来技術2〕Mastrovitoにより提案された〈"VLSI de
signs for multiplication over finite fields GF
(2m)" In T.Mora, editor, Applied Algebraic Algorit
hms, and Error-Correcting Codes, 6th International
Conference, AAECC-6, Lecture Notes in Computer Sc
ience, No.357, 1988〉にあるような乗算剰余演算方法
を用いることもできる。この場合には、既約多項式の次
数が固定されているため、処理が高速に行うことが可能
であるが、既約多項式の次数が異なる場合に適用できな
いため、汎用的ではない。 〔従来技術3〕Koc等により提案された〈"Montgomery M
ultiplication in GF(2m)", Design,Codes and Cryptog
raphy, 14(1), 57-69 (April 1998)〉にあるような乗算
剰余演算方法を適用することもできる。この場合、Mont
gomery乗算剰余の方式を2の拡大体GF(2m)上に拡張した
ものである。
【0017】
【発明が解決しようとする課題】前述の従来技術3、す
なわち、2の拡大体GF(2m)上のMontgomery乗算剰余方式
について説明する。2の拡大体GF(2m)上の要素a(x)、b
(x)に対して、Montgomery乗算剰余を行う際のアルゴリ
ズムをMONT#MUL(a(x),b(x))とし、これをAlgorithm1
として示す。
【0018】 Algorithm1:MONT#MUL(a(x),b(x)) Pre-Computation:f-1(x)=(f(x))-1 mod xm INPUT:a(x), b(x) OUTPUT:c(x)=a(x)b(x)x-m mod f(x) 1.t(x)=a(x)b(x) 2.u(x)=t(x)f-1(x) mod xm 3.c(x)=(t(x)+u(x)f(x))/xm ここでは、事前計算として、f-1(x)=(f(x))-1 mod
mを予め求めておくものとする。このAlgorithm1で
は、a(x)b(x) mod f(x)を求める代わりに、a(x)b(x)x-m
mod f(x)を計算している。したがって、このアルゴリ
ズムを用いる場合には、最初に入力値を変換し、最終的
に得られる出力値を逆変換する必要がある。入力値の変
換方法は、次の通りである。
【0019】 a'(x)=a(x)xm mod f(x) , b'(x)=b(x)xm mod f(x) このように入力値を変換しておくことで、Algorithm1
の計算は、 となり、この出力値を次の入力値として利用することが
可能となる。この変換は、x2m mod f(x)の値を事前に計
算しておけば、Algorithm1を利用して、MONT#MUL(a
(x), x2m mod f(x))を実行することにより得ることが可
能である。
【0020】出力値を逆変換する場合には、同様にAlgo
rithm1を利用して次のように計算することができる。 このようにしたMontgomery乗算剰余方式の場合、各要素
の次数に関わらず演算を行うことが可能であり汎用性が
高いものの、常に入力値の変換と最終的な出力値の逆変
換を必要とするものであり、さらに高速化を図る余地が
ある。
【0021】また、2の拡大体GF(2m)上の乗算剰余演算
を行うための乗算器あるいは乗算回路として、前述の従
来技術2の項に挙げた文献に紹介されたものの他に次の
ような論文にも紹介されている。 〈C.K.Koc and B.Sunnar. "Mastrovito multiplier f
or all trinomials", IEEE Transactions on Computer
s, to appear, 1999〉 〈C.K.Koc and B.Sunnar. "Low-complexity bit-para
llel canonical and normal basis multipliers for a
class of finite fields" IEEE Transactions onComput
ers, 47(3):353-356, March 1998〉 このような文献で紹介されている演算回路では、a(x)×
b(x) mod f(x)の乗算剰余演算を行う際に、既約多項式f
(x)を次数3の3項式(trinomial)や全項に1が立って
いるAOP(all-one-polynomial)などに固定し、各ビッ
ト毎の論理演算および結線によって回路を設計してい
る。したがって、a(x)×b(x) mod f(x)の乗算剰余演算
を1サイクルで行うことが可能となるが、回路規模が大
きくなり、暗号装置に用いる場合には、ゲート数が10
0Kを超えることとなる。また、最大遅延パスが大きく
なるため、動作クロックを高速にすることがでず、処理
の高速化を図ることが困難である。
【0022】本発明の目的は、所定の次数の既約多項式
を用いる場合などの頻繁に使用する条件下で高速に動作
させることが可能であるとともに、既約多項式の次数に
関わらず汎用性を有し、かつ高速な演算処理が可能な乗
算剰余演算方法を提供することにある。また、本発明の
他の目的は、既約多項式の次数を固定することなく汎用
性があり、大きな次数の変数についても回路に変更や追
加をすることなく高速な演算を可能とする乗算剰余演算
回路を提供することにある。
【0023】
【課題を解決するための手段】本発明は、多項式基底で
表される2の拡大体GF(2m)上の2つの元a(x),b(x)と既
約多項式f(x)に対して、a(x)×b(x) mod f(x)の乗算剰
余演算を行う方法であって、既約多項式f(x)からパラメ
ータf'(x)を算出する(A-1)工程と、a(x)とb(x)とを乗
算してその積を変数t(x)に代入する(A-2)工程と、変
数t(x)のm次以上の部分とパラメータf'(x)とを乗算し
その積を変数u(x)に代入する(A-3)工程と、変数u(x)
のm次以上の部分と既約多項式f(x)とを乗算しその積を
変数t(x)と加算して変数c(x)に代入する(A-4)工程と
を備える。
【0024】また、多項式基底で表される2の拡大体GF
(2m)上の2つの元a(x),b(x)と既約多項式f(x)に対し
て、a(x)×b(x) mod f(x)の乗算剰余演算を行う方法で
あって、既約多項式f(x)からパラメータf'(x)を算出す
る(A-1)工程と、a(x)とb(x)とを乗算してその積を変
数t(x)に代入する(A-2)工程と、変数t(x)のm次以上
の部分とパラメータf'(x)とを乗算しその積を変数u(x)
に代入する(A-3)工程と、変数u(x)のm次以上の部分
と既約多項式f(x)とを乗算し、その積のm次未満の部分
と変数t(x)のm次未満の部分とを加算して変数c(x)に代
入する(A-4')工程とを備える構成とすることができ
る。
【0025】ここで、パラメータf'(x)は、2の拡大体G
F(2m)上でx2mをf(x)で割った商とすることができ、こ
のパラメータf'(x)を予め算出しておき、(A-1)工程を
省略することも可能である。また、本発明では、多項式
基底で表される2の拡大体GF(2m)上の2つの元a(x),b
(x)と既約多項式f(x)のうち、a(x)に含まれるa0〜am
をwビット毎に分割してn個のブロックA0〜An-1
し、a(x)×b(x) mod f(x)の乗算剰余演算を行う方法で
あって、既約多項式f(x)からw次のパラメータf"(x)を
算出する(B-1)工程と、前回の計算結果である変数c
(x)とxwとを乗算してその積を変数t(x)に代入する(B-
2)工程と、Aiとb(x)とを乗算しその積と変数t(x)とを
加算し変数t(x)に代入する(B-3)工程と、変数t(x)の
m次以上の部分を求めて変数th(x)に代入する(B-4)工
程と、変数th(x)とパラメータf"(x)とを乗算しその積の
w次以上の部分を求めて変数u(x)に代入する(B-5)工
程と、変数u(x)と既約多項式f(x)とを乗算しその積と変
数t(x)とを加算して変数c(x)に代入する(B-6)工程と
を備え、(B-2)工程〜(B-6)工程をi=0〜n−1に
ついてn回繰り返すことを特徴とする乗算剰余演算方法
を提供する。
【0026】また、多項式基底で表される2の拡大体GF
(2m)上の2つの元a(x),b(x)と既約多項式f(x)のうち、a
(x)に含まれるa0〜amをwビット毎に分割してn個の
ブロックA0〜An-1とし、a(x)×b(x) mod f(x)の乗算
剰余演算を行う方法であって、既約多項式f(x)からw次
のパラメータf"(x)を算出する(B-1)工程と、前回の計
算結果である変数c(x)とxwとを乗算してその積を変数t
(x)に代入する(B-2)工程と、Aiとb(x)とを乗算しそ
の積と変数t(x)とを加算し変数t(x)に代入する(B-3)
工程と、変数t(x)のm次以上の部分を求めて変数th(x)
に代入する(B-4)工程と、変数th(x)とパラメータf"
(x)とを乗算しその積のw次以上の部分を求めて変数u
(x)に代入する(B-5)工程と、変数u(x)と既約多項式f
(x)とを乗算しその積のm次未満の部分と変数t(x)のm
次未満の部分とを加算して変数c(x)に代入する(B-6')
工程とを備え、(B-2)工程〜(B-6')工程をi=0〜
n−1についてn回繰り返すことを特徴とする乗算剰余
演算方法を提供する。
【0027】ここで、パラメータf"(x)は、2の拡大体G
F(2m)上でxm+wをf(x)で割った商とすることができ、こ
のパラメータf"(x)を予め算出しておき、(B-1)工程を
省略するように構成できる。また、各工程の前段階とし
て、a(x)およびb(x)と(x-s mod f(x))とを乗算しそ
の積とxsとを乗算してそれぞれ変数a(x)およびb(x)に
代入する変換工程と、最終的な演算結果であるc(x)に対
して(c(x) mod f(x))を求めてこれを変数c(x)に代入
する逆変換工程とをさらに含む構成とすることができ
る。
【0028】さらに、各工程の前段階として、a(x)およ
びb(x)と(x-s mod f(x))とを乗算しその積とxsとを
乗算してそれぞれ変数a(x)およびb(x)に代入する変換工
程と、最終的な演算結果であるc(x)に対して(c(x) mod
s)を求めこれを変数c(x)に代入する逆変換工程とを
さらに含む構成とすることができる。本発明に係る乗算
剰余回路は、多項式基底で表される2の拡大体GF(2m)上
の2つの元a(x),b(x)と既約多項式f(x)に対して、乗数b
(x)のビット単位の演算処理を行ってa(x)×b(x) mod f
(x)の乗算剰余演算を行う乗算剰余回路であって、前回
の演算結果r(x)と既約多項式f(x)との排他的論理和を演
算する第1のXORゲートと、第1のXORゲートの演算結果
とa(x)×b(x)の演算結果との排他的論理和を演算する第
2のXORゲートとを備える所定のビット長を有する線形
フィードバックレジスタにより構成する。
【0029】ここで、線形フィードバックレジスタは、
1ビット長のものがn2段に設けられ、乗数b(x)のブロ
ック単位での演算処理を行うように構成できる。また、
線形フィードバックレジスタのビット長n1よりも大き
いビット長の被乗数a(x)に対して乗算剰余を行うため
に、前回の演算結果の上位n2ビットの値を保持するレ
ジスタを設けることもできる。
【0030】さらに、n2段分のa(x)×b(x)の部分積を
演算する第1演算部と、n2段分のf(x)に関する演算を
行う第2演算部とを備える構成とすることができる。
【0031】
【発明の実施の形態】〔第1の実施形態〕従来技術3の
Algorithm1では、a(x)b(x)にf(x)の倍数であるu(x)f
(x)を加算してxmで必ず割り切れる形にするとともに、c
(x)∈GF(2m)となるようにしている。言い替えれば、u
(x)f(x)をa(x)b(x)に加算することによって、a(x)b(x)
のm次未満の項をキャンセルしていることとなる。この
ことから、xmで割るという簡単な処理を行うことで乗算
剰余演算を可能としているが、出力値にx-mという値が
入ることとなり、事前計算による変換と最終的な結果に
対する逆変換の処理が必要となる。
【0032】本発明は、前述のAlgorithm1と同様にa
(x)b(x)にf(x)の倍数を加算するものの、m次未満の項
ではなくm次以上の上位の項をキャンセルできれば、xm
で割るという処理が不要になると考えて成された発明で
ある。このように、上位の項をキャンセルするようにし
たアルゴリズムをNEW#MULとしてAlgorithm2に示す。 Algorithm2:NEW#MUL(a(x), b(x)) Pre-Computation:f'(x)=quot(x2m, f(x)) INPUT:a(x), b(x) OUTPUT:c(x)=a(x)b(x) mod f(x) 1.t(x)=a(x)b(x) 2.u(x)=quot(quot(t(x), xm)・f'(x), xm) 3.c(x)=t(x)+u(x)・f(x) このAlgorithm2によって得られる出力値c(x)がa(x),b
(x)の乗算剰余となっていることを次の証明1によって
示す。
【0033】証明1:出力値c(x)の次数の最大値がm-1
となっていれば、乗算剰余となっているものと見なされ
る。このことは、c(x)がa(x)b(x)にu(x)f(x)を加算した
ものであり、この演算結果の次数がm-1次以下になって
いれば、c(x)=a(x)b(x) modf(x)と同値であることから
明らかである。まず、t(x)=a(x)b(x)の演算を行ったあ
とのt(x)に対して、quot(t(x), xm)を演算すれば、こ
れはt(x)のm次以上の部分th(x)となっている。したが
って、th(x)はm-1次以下となっていることが明らかで
あり、これに伴ってu(x)もm-1次以下となっていること
が明らかである。
【0034】次に、多項式tl(x),α(x),β(x)を以下
のように定義する。 tl(x)=t(x) mod xm →t(x)=th(x)xm+tl(x), deg(tl(x))≦m-1 α(x)=x2m mod f(x) →f(x)f'(x)=x2m+α(x), deg(α(x))≦m-1 β(x)=th(x)f'(x) mod xm →th(x)f'(x)=u(x)xm+β(x),deg(β(x)) ≦m-1 これから、出力値c(x)は、以下のように展開することが
できる。
【0035】 c(x)=t(x)+u(x)・f(x) =t(x)+f(x)・(th(x)f'(x)+β(x))/xm =t(x)+(th(x)(x2m+α(x))+f(x)β(x))/xm =th(x)xm+tl(x)+th(x)xm+(th(x)α(x)+f(x)β(x))/xm =tl(x)+(th(x)α(x)+f(x)β(x))/xm ここで、tl(x)+(th(x)α(x)+f(x)β(x))/xmは、
t(x)+u(x)・f(x)を単純に展開したものであり、(t
h(x)α(x)+f(x)β(x))/xmの演算は必ず割り切れる。
【0036】c(x)の次数をこの展開式から求めると次の
ようになる。 deg(c(x))=deg(tl(x)+(th(x)α(x)+f(x)β(x))/xm) ≦Max(deg(tl(x)),deg(th(x)α(x)+f(x)β(x))/xm)) ≦Max(m-1,Max(m+(m-1),m+(m-1))-m) ≦m-1 このことから、c(x)の次数がm-1以下となっており、c
(x)=a(x)b(x) mod f(x)であることが明らかである。
【0037】このAlgorithm2の構成を図1に示す。a
(x)およびb(x)は乗算部11において乗算される。乗算
部11では、mビット×mビットの乗算が行われる。a
(x)×b(x)の積のうちm次以上の項は乗算部12に送ら
れる。乗算部12では、予め計算で求められているf'
(x)と、a(x)×b(x)の積のうちm次以上の項との乗算が
行われる(quot(t(x), xm)・f'(x))。乗算部13で
は、f(x)と、乗算部12の乗算結果のうちm次以上の項
(u(x)=quot(quot(t(x), xm)・f'(x), xm))との乗
算が行われる。加算部14では、乗算部13の乗算結果
(u(x)・f(x))と乗算部11の乗算結果(t(x)=a(x)b
(x))との加算が行われる。
【0038】ここで、加算部14の加算の結果、m次以
上の項についてキャンセルされることとなり、加算部1
4からの出力c(x)は、a(x),b(x)の乗算剰余となってい
る。Algorithm2において、t(x)+u(x)・f(x)の演算結
果は、必ずm次以上の項がキャンセルされることとな
る。したがって、t(x)のm次未満の項と、u(x)・f(x)の
m次未満の項とを加算するように構成しても同じ結果を
得ることができる。したがって、Algorithm2の3の代
わりに、 3’.c(x)=(t(x) mod xm)+(u(x)・f(x) mod xm) とすることができる。
【0039】この場合のアルゴリズムの構成を図2に示
す。a(x)およびb(x)は乗算部21で乗算される。乗算部
22では、乗算部21の乗算結果のうちm次以上の項
と、予め計算で求められているf'(x)との乗算を行う。
乗算部23では、乗算部22の乗算結果のm次以上の項
と、f'(x)との乗算を行う。加算部24では、乗算部2
3の乗算結果のm次未満の項(u(x)・f(x) modxm)と、
乗算部21の乗算結果のm次未満の項(t(x) mod xm
との加算が行われる。
【0040】上述したように、t(x)+u(x)・f(x)の演算
結果は、必ずm次以上の項がキャンセルされるので、加
算部24において、t(x)のm次未満の項と、u(x)・f(x)
のm次未満の項とを加算するように構成した場合も同じ
結果を得ることができる。 〔第2の実施形態〕2の拡大体GF(2m)の上のa(x),
b(x)のうち、いずれか一方を次数wのブロックに分割し
て演算する場合を考える。ここでは、a(x)をn個のブロ
ック(n=m/w)に分割して乗算剰余を行うものとす
る。このときのアルゴリズムをBLOCK#MUL(a(x),b(x))
としてAlgorithm3に示す。
【0041】 Algorithm3:BLOCK#MUL(a(x), b(x)) Pre-Computation:f"(x)=quot(xm+w, f(x)) INPUT:a(x), b(x), c(x) OUTPUT:c(x)=a(x)b(x) mod f(x) 1.for i=n-1 to 0 2. t(x)=c(x)xw 3. t(x)=t(x)+Ai(x)b(x) 4. th(x)=quot(t(x), xm) 5. u(x)=quot(th(x)・f"(x), xw) 6. c(x)=t(x)+u(x)・f(x) このAlgorithm3によって得られる出力値c(x)がa(x),b
(x)の乗算剰余となっていることを次の証明2によって
示す。
【0042】証明2:3行目の部分乗算結果t(x)が4〜
6行目で剰余処理されていることからこのアルゴリズム
が乗算剰余処理を行っていることを示すことができる。
剰余処理については、証明1と同様に出力値c(x)の次数
の最大値がm-1であることを示すことで証明する。部分
乗算剰余においても、証明1と同様で、部分乗算剰余結
果t(x)にf(x)の倍数式を加算することで出力値c(x)の次
数がm-1以下になれば、c(x)=t(x) mod f(x)と同じこと
となる。
【0043】まず、th(x)はt(x)をxmで割った商である
ためその次数はm-1次以下であり、またu(x)はth(x)・f"
(x)をxmで割った商であるためその次数はw-1以下である
ことは明らかである。次に、多項式tl(x),α(x),β
(x)を以下のように定義する。 tl(x)=t(x) mod xm →t(x)=th(x)xm+tl(x), deg(tl(x))≦m-1 α(x)=xm+w mod f(x) →f(x)f"(x)=xm+w+α(x), deg(α(x))≦m -1 β(x)=th(x)f"(x) mod xw →th(x)f"(x)=u(x)xm+β(x),deg(β(x))≦ w-1 この場合の出力値c(x)は以下のように展開できる。
【0044】 c(x)=t(x)+u(x)・f(x) =t(x)+f(x)・(th(x)f"(x)+β(x))/xw =t(x)+(th(x)(xm+w+α(x))+f(x)β(x))/xw =th(x)xm+tl(x)+th(x)xm+(th(x)α(x)+f(x)β(x))/xw =tl(x)+(th(x)α(x)+f(x)β(x))/xw ここで、tl(x)+(th(x)α(x)+f(x)β(x))/xmは、t
(x)+u(x)・f(x)を単純に展開したものであり、(th(x)
α(x)+f(x)β(x))/xmの演算は必ず割り切れる。
【0045】c(x)の次数をこの展開式から求めると次の
ようになる。 deg(c(x))=deg(tl(x)+(th(x)α(x)+f(x)β(x))/xw) ≦Max(deg(tl(x)),deg(th(x)α(x)+f(x)β(x))/xw)) ≦Max(m-1,Max(w+(m-1),m+(w-1))-w) ≦m-1 したがって、出力値c(x)の次数がm-1以下となっている
ことから、c(x)=t(x)mod f(x)であり、乗算剰余演算と
なっていることがわかる。
【0046】このAlgorithm3の構成を図3に示す。乗
算部31では、前回の演算結果c(x)とxmとの乗算を行
う。乗算部32では、a(x)のi番目のブロックAi(x)とb
(x)との乗算を行う。加算部33では、乗算部31の乗
算結果と乗算部32の乗算結果との加算を行う。乗算部
34では、加算部33の加算結果の上位wビットと、予
め計算してあるパラメータf"(x)との乗算を行う。乗算
部35では、乗算部34の乗算結果の上位wビット(u
(x)=quot(th(x)・f"(x), xw))と、f(x)との乗算を行
う。加算部36では、加算部33の加算結果と乗算部3
5の乗算結果との加算を行う。iの値がn-1から0に至
るまでこの演算を繰り返し行う。このとき、加算部36
の演算結果c(x)は、次の演算における入力値として用い
られる。
【0047】Algorithm2の場合と同様にして、Algorit
hm3の場合も6行目のt(x)とu(x)・f(x)との加算の際
に、必ずm次以上の項がキャンセルされることがわかっ
ている。したがって、t(x)のm次未満の項と、u(x)・f
(x)のm次未満の項との加算を行うようにしても同じ結
果を得ることができる。したがって、Algorithm3の6
を次のように置き換えることが可能である。
【0048】 6’.c(x)=(t(x) mod xm)+(u(x)・f(x) mod xm) この場合のアルゴリズムの構成を図4に示す。乗算部4
1では、前回の演算結果c(x)とxwとの乗算を行う。乗算
部42では、a(x)のi番目のブロックAi(x)とb(x)との
乗算を行う。加算部43では、乗算部41の乗算結果と
乗算部42の乗算結果との加算を行う。乗算部44で
は、加算部43の加算結果の上位wビットと、予め計算
してあるパラメータf"(x)との乗算を行う。乗算部45
では、乗算部44の乗算結果の上位wビット(u(x)=quo
t(th(x)・f"(x), xw))と、f(x)との乗算を行う。加算
部46では、加算部43の加算結果と乗算部45の乗算
結果との加算を行う。iの値がn-1から0に至るまでこ
の演算を繰り返し行う。このとき、加算部46の演算結
果c(x)は、次の演算における入力値として用いられる。
【0049】また、前回の演算結果c(x)とxwとの乗算
は、c(x)の各次数の項ciをci+wにシフトすることで行う
ことができる。したがって、図3および図4に示すアル
ゴリズムの構成において、乗算部31、41をそれぞれ
c(x)のシフト演算部に置き換えることができる。たとえ
ば、図4の構成における乗算部41をシフト演算部47
に置き換えた構成を図5に示す。 〔任意次数への拡張〕前述のようにしたAlgorithm3で
は、要素a(x)の次数が分割される各ブロックの次数wで
割り切れることを前提としている。任意の次数のものに
対応させるためには、要素a(x)の次数mがブロックの次
数wで割り切れない場合に、最上位ブロックにおいてw
に足りない分の次数sだけシフトさせるような変換、逆
変換を行って処理することができる。
【0050】この場合の変換は、頭詰め処理とx-sとの
乗算剰余処理とからなる。図6に示すように、GF(2m)上
の要素を下位から次数wのブロックを構成していくと、
次数s分が満たされていないようなブロックが最上位に
できる。この最上位ブロックの項のないs次分を埋める
ために、要素にxsを乗算することにより、要素の各次数
に対応する項をシフトさせることができる。この処理を
頭詰め処理と呼ぶ。
【0051】このような頭詰め処理と乗算剰余処理とか
らなる変換処理により、入力値a(x),b(x)を次のように
変換する。 a'(x)=(a(x)x-s mod f(x))xs,b'(x)=(b(x)x-s
mod f(x))xs このような変換を行った要素の加算および乗算剰余につ
いては、次のように定義することができる。
【0052】 加算: a'(x)+b'(x)=(a(x)x-s mod f(x))xs+(b(x)x-s mod f(x))xs =(a(x)x-s+b(x)x-s)xs mod f(x))xs =((a(x)+b(x))x-s mod f(x))xs 乗算剰余: a'(x)・b'(x) mod (f(x)xs) =(a(x)x-s mod f(x))xs・(b(x)x-s mod f(x))xs mod (f(x)xs ) =(a(x)・b(x)x-s-s)mod f(x))xss mod (f(x)xs) =(a(x)・b(x)x-s-s)xs mod f(x))xs mod (f(x)xs) =(a(x)・b(x) x-s mod f(x))xs mod (f(x)xs) =(a(x)・b(x) x-smod f(x))xs 入力値となる要素a(x),b(x)に対して上述のような変換
を行い、a'(x),b'(x)を用いてAlgorithm3による乗算剰
余演算が可能となる。
【0053】最終的に得られた出力値c'(x)は、最初に
変換処理を行ったa'(x),b'(x)に基づくものであり、最
後に逆変換を行う必要がある。この逆変換処理は、c(x)
=c'(x) mod f(x)である。この方法によれば、要素の次
数mがブロックの次数wで割り切れない場合であっても
Algorithm3を用いて乗算剰余演算を行うことができ、
任意の次数の要素について演算することを可能とする。
【0054】(x-2s mod f(x))xsの値を事前に計算し
ておくことにより、変換処理および逆変換処理をAlgori
thm3によって演算することが可能となる。この場合、
変換処理および逆変換処理は、次のようになる。 変換:a'(x)=BLOCK#MUL(a(x)xs,(x-2s mod f(x))
s) 逆変換:a(x)=BLOCK#MUL(a'(x),xs)/xs Algorithm3を利用して任意の次数の要素についての乗
算剰余演算を行う場合には、図7に示すフローチャート
に基づいて実行する。
【0055】ステップS1では、次数mが処理ブロック
の次数wで割り切れるか否かを判別する。ここで、要素
の次数mが処理ブロックの次数wで割り切れる場合に
は、ステップS2に移行する。ステップS2では、変換
処理を行わずに各要素についてAlgorithm3を用いた乗
算剰余演算処理を実行する。ステップS1において、要
素の次数mは処理ブロックの次数wで割り切れないと判
断した場合には、ステップS3に移行する。ステップS
3では、各要素に対して前述したような変換処理を行
う。この場合、頭詰めと乗算剰余演算処理による変換処
理とすることもでき、Algorithm3を用いた変換処理と
することも可能である。ステップS4では、変換処理さ
れた要素によりAlgorithm3を用いた乗算剰余演算処理
を実行する。ステップS5では、ステップS4での演算
結果を逆変換処理する。この逆変換処理では、演算結果
に対してf(x)による剰余演算を行うように構成すること
もでき、また、Algorithm3を用いた演算とすることも
可能である。 〔具体例〕各要素の次数m=160とした場合に、Algo
rithm2を用いた構成を図8に示す。この構成は図2と
同様の構成であり、各演算部における処理ビット数を示
している。
【0056】また、各要素の次数m=160、ブロック
の次数w=32、ブロック数n=5とした場合に、Algo
rithm3を用いた構成を図9に示す。この構成は図4と
同様の構成であり、各演算部における処理ビット数を示
している。ソフトウェアにより構成した場合の具体例を
示す。ここでは、Montgomery乗算剰余方式についてKoc
等が評価しているのと同様の表現を用いる。1ブロック
をwビットとした場合に、2の拡大体GF(2m)上のブロッ
ク乗算剰余MULGF2(H,L,A,B)を以下に示すAlgorithm4
で構成することにより、2w回のShiftとw回のXORの3
w回の演算としている。
【0057】 Algorithm4:MULGF2(H,L,A,B) H=0;L=0; for j=w-1 to 0 L=SHL(L,1); H=RCL(H,1); if BIT(B,j)=1 then L=L XOR A ここで、SHL(a,b)はaをbビット左シフトする演算子で
あり、RCL(a,b)は前の演算子のキャリを考慮して、aを
bビット左ローテーションシフトする演算子である。ま
た、XORの回数は最悪値で評価を行っている。
【0058】これを用いてAlgorithm3を実装し、演算
回数を計数したものを表1に示す。
【0059】
【表1】 この表1から、この実施例による計算量は、((6w+4)n2+
(6w-1)n)回となる。Koc等の評価によるMontgomery乗算
剰余演算方式の計算量は、((6w+4)n2+6wn)であることか
ら、本発明による乗算剰余演算方法による場合、Montgo
mery乗算剰余演算方法による場合に比して、XOR処理が
n回少ないこととなる。
【0060】また、Montgomery乗算剰余演算方式では、
常に変換処理および逆変換処理が必要であるが、本発明
による乗算剰余演算方法によれば、要素の次数mが処理
ブロックの次数wで割り切れる場合には、変換処理およ
び逆変換処理が必要ではなく、その分高速化を図ること
ができる。また、要素の次数mが処理ブロックの次数w
で割り切れない場合であっても、変換処理および逆変換
処理がMontgomery乗算剰余演算方式の場合のそれと同程
度であり、処理速度が劣ることはない。したがって、本
発明の乗算剰余演算方法を用いることにより、任意の次
数の演算を可能とするとともに、全体としての演算速度
を高速にすることが可能となる。
【0061】このような乗算剰余演算方法は、2の拡大
体GF(2m)上楕円曲線上の点の演算だけでなく、誤り訂正
符号の処理などに使用することも可能である。 〔LFSRでの実装への拡張〕Algorithm3において、w=
1とすると、4行目のth(x)は0か1の値となる。ま
た、この場合、 f"(x)はx+1またはxであることか
ら、5行目はu(x)=th(x)となる。このことから、Algor
ithm3をw=1の場合に簡略化したものを次のAlgorith
m5に示す。
【0062】 Algorithm5:1#BIT#BLOCK#MUL(a(x), b(x)) INPUT:a(x), b(x), c(x) OUTPUT:c(x)=a(x)b(x) mod f(x) 1.for i=m-1 to 0 2. t(x)=c(x)x 3. t(x)=t(x)+ai・b(x) 4. th=quot(t(x), xm) 5. c(x)=t(x)+ th・f(x) このAlgorithm5は次のように解釈することができる。
【0063】・2行目:前回の結果を1ビットシフトす
る。 ・3行目: aiの値が"1"なら2行目の結果にb(x)を加算
し、"0"ならb(x)を加算しない。 ・4行目:3行目の値の最上位ビット(第mビット)の
値thを取り出す。 ・5行目:thの値が"1"なら3行目の値にf(x)を加算
し、"0"ならf(x)を加算しない。
【0064】・以上をm−1から0まで繰り返す。 この動作は、LFSRを使用した乗算剰余回路の動作と同じ
ことであり、LFSRを使用した回路を用いてAlgorithm5
を実現することが可能であると言える。また、wを任意
の値にした場合、Algorithm4を実現するLFSRをw段に
多段化することで、LFSRを使用した回路でのAlgorithm
3の実現も可能となる。 〔乗算剰余回路−1段構成〕図10にn1ビット長の線
形フィードバックシフトレジスタ(以下、LFSRと称す)
を1段構成とした乗算剰余回路を示す。図中、□は要素
の各ビットの値を保持するためのフリップフロップ、×
は論理積をとるためのANDゲート、+は排他的論理和を
とるためのXORゲートである。また、細線は1ビットの
信号ライン、太線はn1ビット幅のデータバスを表し、
各ラインに付された数字は下位ビットからの桁数を表
す。なお、図示したものは、n1=8ビットの構成であ
るが、これに限定されるものではない。
【0065】このLFSR100は、被乗数a(x)の各項を格
納するAレジスタ101と、乗数b(x)の1つのビットを
格納するBレジスタ102と、既約多項式の各項を格納
するFレジスタ103と、演算結果を格納するRレジス
タ104とを備えている。また、Aレジスタ101の内
容とBレジスタ102の内容とを乗算するための第1AN
Dゲート105、Rレジスタ104の最上位ビットとF
レジスタ103の内容を乗算するための第2ANDゲート
106、第2ANDゲート106からの出力のうち最下位
ビットを除くビットとRレジスタ104の最上位ビット
を除くビットとの排他的論理和を演算する第1XORゲー
ト107、第1XORゲート107の出力と第1ANDゲート
105の出力との排他的論理和を演算する第2XORゲー
ト108を備えている。
【0066】このLFSR100で、a(x)×b(x) mod f(x)
の乗算剰余演算を行うためには、図11に示すようなア
ルゴリズムで実行する。ステップS21では、Rレジス
タ104に0をセットし初期化を行う。ステップS22
では、変数iをm−1にセットする。ここでは、mは演
算を行う要素の次数である。
【0067】ステップS23では、A×bi+F×rm-1
+R<<1の演算を行う。ここで、R<<1は、Rレジスタ
の内容を左に1ビットシフトすることである。ステップ
S24では変数iの値をデクリメントする。ステップS
25では、変数iの値が0以上であるか否かを判別し、
0以上であればステップS23に移行する。この場合に
は、まず、b(x)の最上位ビットとa(x)の積を第1ANDゲ
ート105で演算し、これをRレジスタ104にセット
する。次に、Rレジスタ104の最上位ビットとFレジ
スタ103との積を第2ANDゲート106で演算し(F
×rm -1)、これとRレジスタ104の1ビット左シフ
ト(R<<1)との排他的的論理和を第1XORゲート10
7で演算し、さらにBレジスタ102にセットされたb
(x)の次のビットとAレジスタ101との積を第1ANDゲ
ート105で演算して(A×bi)、さらに第2XORゲー
ト108で排他的論理和を演算する。これを次数mに応
じて繰り返す。 〔乗算剰余回路−多段構成〕図12に、n1ビット長のL
FSRをn2段の多段構成とした乗算剰余回路を示す。第1
段目の構成については、図10の構成とほぼ同一の構成
となっている。また、図示したものは、n1=8ビッ
ト、n2=2ビットの構成となっているが、これに限定
されるものではない。
【0068】このLFSR200の1段目は、被乗数a(x)の
各項を格納するAレジスタ201と、乗数b(x)の1つの
ビットを格納するB1レジスタ202と、既約多項式の
各項を格納するFレジスタ203と、演算結果を格納す
るRレジスタ204とを備えている。また、Aレジスタ
201の内容とB1レジスタ202の内容とを乗算する
ための第1ANDゲート205、Rレジスタ204の最上
位ビットとFレジスタ203の内容を乗算するための第
2ANDゲート206、第2ANDゲート206からの出力の
うち最下位ビットを除くビットとRレジスタ204の最
上位ビットを除くビットとの排他的論理和を演算する第
1XORゲート207、第1XORゲート207の出力と第1
ANDゲート205の出力との排他的論理和を演算する第
2XORゲート208を備えている。
【0069】また、2段目は、乗数b(x)の次のビットを
格納するB0レジスタ209、Aレジスタ201の内容
とB0レジスタ209の内容とを乗算するための第3AN
Dゲート210、第2XORゲート208の最上位ビットと
Fレジスタ203の内容を乗算するための第4ANDゲー
ト211、第4ANDゲート211からの出力のうち最下
位ビットを除くビットと第2XORゲート208の最上位
ビットを除くビットとの排他的論理和を演算する第3XO
Rゲート212、第3XORゲート212の出力と第3AND
ゲート210の出力との排他的論理和を演算する第4XO
Rゲート213を備えている。第4XORゲート213から
の出力は、Rレジスタ204に格納されるように結線さ
れている。
【0070】このように構成することによって、乗数b
(x)のn2ビットずつの演算が可能となる。 〔乗算剰余回路の第1実施例〕LFSRのビット長n1より
も大きいビット長の被乗数a(x)に対して乗算剰余演算を
行う乗算剰余回路を図13に示す。ここでは、図12に
示したLFSR200と同様に、n1=8ビット、n2=2ビ
ットの構成のものを示すが、これに限定されるものでは
ない。
【0071】このLFSR300には、被乗数a(x)の各項を
格納するAレジスタ301と、乗数b(x)の1つのビット
を格納するB1レジスタ302と、既約多項式の各項を
格納するFレジスタ303と、演算結果を格納するRレ
ジスタ304とを備えている。また、演算結果のうち下
位n2ビットを格納するCレジスタ306、Cレジスタ
306の最上位ビットとRレジスタ304の最上位ビッ
トとの排他的論理和の演算結果を格納するR9レジスタ
307およびE1レジスタ308を備えている。
【0072】LFSR300の1段目には、Aレジスタ30
1の内容とB1レジスタ302の内容とを乗算するため
の第1ANDゲート305、Rレジスタ304の上位n2
ットとCレジスタ306の内容との排他的論理和を演算
するための上位ブロックXORゲート309、上位ブロッ
クXORゲート309の最上位ビット出力をR9レジスタ
307とE1レジスタ308に入力するデマルチプレク
サ310、上位ブロックXORゲート309の最上位ビッ
ト出力もしくはE1レジスタ308の内容を選択的に出
力する第1セレクタ311、第1セレクタ311からの
出力とFレジスタ303の内容とを乗算する第2ANDゲ
ート312、第2ANDゲート312からの出力のうち最
下位ビットを除くビットとRレジスタ304の上位n2
ビットを除くビット、上位ブロックXORゲート309の
最上位ビットを除く出力との排他的論理和を演算する第
1XORゲート313、第1XORゲート313の出力と第1
ANDゲート305の出力との排他的論理和を演算する第
2XORゲート314を備えている。
【0073】さらにLFSR300には、乗数b(x)の次のビ
ットを格納するB0レジスタ315、第2XORゲート3
14の最上位ビットを格納するR8レジスタ316およ
びE0レジスタ317を備えている。また、Aレジスタ
301の内容とB0レジスタ315の内容とを乗算する
ための第3ANDゲート318、第2XORゲート314の最
上位ビットをR8レジスタ316とE0レジスタ317
に入力するためのデマルチプレクサ319、第2XORゲ
ート314の最上位ビットとE0レジスタ317のいず
れかを選択的に出力する第2セレクタ320、第2セレ
クタ320の出力とFレジスタ303の内容を乗算する
ための第4ANDゲート321、第4ANDゲート321から
の出力のうち最下位ビットを除くビットと第2XORゲー
ト314の最上位ビットを除くビットとの排他的論理和
を演算する第3XORゲート322、第3XORゲート322
の出力と第3ANDゲート318の出力との排他的論理和
を演算する第4XORゲート323を備えている。第4XOR
ゲート323からの出力は、上位(n1−n2)ビットに
ついてはRレジスタ304に格納され、下位n2ビット
についてはCレジスタ306に格納されるように結線さ
れている。
【0074】このようにした乗算剰余回路では、被乗数
a(x)をn1ビット、乗数b(x)をn2のブロックに分割して
演算を行う。このとき、既約多項式f(x)はn1ビットの
ブロックに分割される。被乗数a(x)のブロック数をi、
各ブロックをAi-1,Ai-2・・・A0とし、乗数b(x)の
ブロック数をj、各ブロックをBj-1,Bj-2・・・B0
とするとき、既約多項式f(x)もFi-1,Fi-2・・・F0
のi個のブロックに分割される。
【0075】まず、b(x)の最上位のブロックBj-1に着
目し、Bj-1とa(x)の各ブロックとの演算をa(x)の最上
位ブロックAi-1から順に行う。a(x)の最下位ブロック
0まで演算が終了したら、b(x)の次のブロックBj-2
a(x)の各ブロックとの演算を行う。これを繰り返してb
(x)の最下位ブロックB0まで演算が終了した時点でこの
演算を終了する。ここで、a(x)の最上位ブロック、中間
ブロック群、最下位ブロックについて処理が異なる。こ
れを次に説明する。
【0076】〈a(x)の最上位ブロックを処理する場合〉
a(x)の最上位ブロックの処理を行う場合には、図13の
回路におけるデマルチプレクサ310,319およびセ
レクタ311,320を切換制御して、図14に示すよ
うな回路とする。このとき、Aレジスタ301、Bレジ
スタ302,315、Fレジスタ303には、各要素の
最上位ブロックがセットされている。
【0077】演算が開始されると、各要素の最上位ブロ
ックによる演算が行われ、1サイクル後に、Eレジスタ
308,317、Rレジスタ304の上位(n1−n2
ビット、Cレジスタ306に演算結果の値が格納され
る。Rレジスタ304の値は、別のレジスタあるいはメ
モリに一時退避させておき、Cレジスタ306の内容は
次のブロックAi-2を処理するためにフィードバックす
る。
【0078】〈a(x)の中間ブロック群を処理する場合〉
a(x)の中間ブロック群の処理を行う場合には、図13の
回路におけるデマルチプレクサ310,319およびセ
レクタ311,320を切換制御して、図15に示すよ
うな回路とする。Aレジスタ301にa(x)の中間ブロッ
クAi-2がセットされるとき、同時にFレジスタ303
にも中間ブロックFi-2がセットされる。この状態で演
算を開始すると、1サイクル後に、R9レジスタ30
7、R8レジスタ316、Rレジスタ304の上位(n
1−n2)ビット、Cレジスタ306に演算結果の値が格
納される。R9レジスタ307とR8レジスタ316と
Rレジスタ304の値は、別のレジスタあるいはメモリ
に一時退避させておき、Cレジスタ306の内容は次の
a(x)のブロックを処理するためにフィードバックする。
【0079】このようにして、a(x)の中間ブロック群A
i-2〜A1について処理を行う。各ブロックの演算におけ
るR9レジスタ307とR8レジスタ316とRレジス
タ304の値は一時退避させておき、Cレジスタ306
の内容は次のブロックの処理に用いるためにフィードバ
ックする。 〈a(x)の最下位ブロックを処理する場合〉a(x)の最下位
ブロックの処理を行う場合には、図13の回路における
デマルチプレクサ310,319およびセレクタ31
1,320を切換制御して、図16に示すような回路と
する。Aレジスタ301にa(x)の最下位ブロックA0
セットし、同時にFレジスタ303にも最下位ブロック
0をセットする。この状態で演算を開始すると、1サ
イクル後に、R9レジスタ307、R8レジスタ31
6、Rレジスタ304に演算結果の値が格納される。R
9レジスタ307,R8レジスタ316のn2ビットと
Rレジスタ304のn1ビットの内容は、別のレジスタ
あるいはメモリに一時退避させる。
【0080】上述のようにして、乗数b(x)のブロックB
j-1に対して、a(x)の各ブロックAi -1〜A0の処理を順
に行っていくと、Rレジスタの内容を一時退避しておい
た値は、被乗数a(x)と同じビット長(既約多項式f(x)の
次数m)の値となる。このmビット長の値をn1ビット
単位のブロックに分割し、乗数b(x)の次のブロックBj
-2の処理を行う際に、処理を行うa(x)のブロックに対応
するブロックをRレジスタ304にセットして演算を行
う。この後、b(x)の各ブロックBj-3以降の演算につい
て同様の処理を行う。
【0081】前述したAlgorithm3は、その処理ブロッ
クの次数wをn1として、この乗算剰余回路で演算させる
ことが可能となり、高速でかつ汎用性のある乗算剰余回
路を実現することができる。 〔乗算剰余回路の第2実施例〕a(x)×b(x)の部分積を演
算する第1演算部と、f(x)による演算を行う第2演算部
とを備え、それぞれの演算結果を排他的論理和ゲートで
演算する構成とした例を図17,図18に示す。
【0082】図17に示すように、第1演算部400
は、被乗数a(x)の各項を格納するAレジスタ401と、
乗数b(x)の各項を格納するBレジスタ402と、既約多
項式の各項を格納するFレジスタ404と、演算結果を
格納するRレジスタ405とを備えている。また、演算
結果のうち下位n2ビットを格納するCレジスタ40
6、Cレジスタ406の最上位ビットとRレジスタ40
5の最上位ビットとの排他的論理和の演算結果を格納す
るR11レジスタ407およびE3レジスタ408を備
えている。
【0083】第1演算部400の1段目には、Aレジス
タ401の内容とBレジスタ402最上位ビットの内容
とを乗算するためのANDゲート415、Rレジスタ40
5の上位n2ビットとCレジスタ406の内容との排他
的論理和を演算するためのXORゲート416、XORゲート
416の最上位ビット出力をR11レジスタ407とE
3レジスタ408に入力するデマルチプレクサ417、
XORゲート416の最上位ビット出力もしくはE3レジ
スタ408の内容を選択的に出力するセレクタ418、
セレクタ418からの出力とFレジスタ404の上位n
2−1ビットの内容とを乗算するANDゲート419、XOR
ゲート416の最上位ビットを除くビット、Rレジスタ
405の下位(n1−n2)ビットとANDゲート415の
出力との排他的論理和を演算するXORゲート420、AND
ゲート419の出力とXORゲート420の上位n2−1ビ
ットの排他的論理和を演算するXORゲート421を備え
ている。
【0084】第1演算部400の2段目には、Aレジス
タ401の内容とBレジスタ402次のビットの内容と
を乗算するためのANDゲート422、XORゲート421の
最上位ビット出力をR10レジスタ409とE2レジス
タ410に入力するデマルチプレクサ423、XORゲー
ト421の最上位ビット出力もしくはE2レジスタ41
0の内容を選択的に出力するセレクタ424、セレクタ
424からの出力とFレジスタ404の上位n2−2ビ
ットの内容とを乗算するANDゲート425、XORゲート4
21の最上位ビットを除くビット、XORゲート420の
下位(n1−n2+1)ビットとANDゲート422の出力
との排他的論理和を演算するXORゲート426、ANDゲー
ト425の出力とXORゲート426の上位n2−2ビット
の排他的論理和を演算するXORゲート427を備えてい
る。
【0085】第1演算部400の3段目には、Aレジス
タ401の内容とBレジスタ402次のビットの内容と
を乗算するためのANDゲート430、XORゲート427の
最上位ビット出力をR9レジスタ411とE1レジスタ
412に入力するデマルチプレクサ428、XORゲート
427の最上位ビット出力もしくはE1レジスタ412
の内容を選択的に出力するセレクタ429、セレクタ4
29からの出力とFレジスタ404の上位n2−3ビッ
トの内容とを乗算するANDゲート432、XORゲート42
7の最上位ビットを除くビット、XORゲート426の下
位(n1−n2+2)ビットとANDゲート430の出力と
の排他的論理和を演算するXORゲート431、ANDゲート
432の出力とXORゲート431の上位n2−3ビットの
排他的論理和を演算するXORゲート433を備えてい
る。
【0086】第1演算部400の4段目には、Aレジス
タ401の内容とBレジスタ402次のビットの内容と
を乗算するためのANDゲート436、XORゲート433の
最上位ビット出力をR8レジスタ413とE0レジスタ
414に入力するデマルチプレクサ435、XORゲート
433の最上位ビット出力もしくはE0レジスタ414
の内容を選択的に出力するセレクタ434、XORゲート
431の最上位ビットを除くビットとANDゲート436
の出力との排他的論理和を演算するXORゲート437を
備えている。
【0087】第2演算部500には、Fレジスタ404
の内容とセレクタ418からの出力@e3とを乗算するAND
ゲート502、Fレジスタ404の内容とセレクタ42
4からの出力@e2とを乗算するANDゲート503、Fレジ
スタ404の内容とセレクタ429からの出力@e1とを
乗算するANDゲート504、Fレジスタ404の内容と
セレクタ434からの出力@e0とを乗算するANDゲート5
05を備えている。また、ANDゲート502、503の
排他的論理和を演算するXORゲート506、ANDゲート5
04の出力とXORゲート506の出力との排他的論理和
を演算するXORゲート507、ANDゲート505の出力と
XORゲート507の出力との排他的論理和を演算するXOR
ゲート508を備えている。
【0088】また、XORゲート508の出力@g7〜@g0とX
ORゲート437の出力@d7〜@d0との排他的論理和を演算
するXORゲート501を備えている。このXORゲート50
1の出力のうち上位(n1−n2)ビットはRレジスタ4
05に格納され、下位n2ビットはCレジスタに格納さ
れる。このように構成した場合、回路規模は前述の実施
例と同等であるが、遅延パスが短くなり、クロック周波
数を高くすることができ、高速処理が可能となる。
【0089】同様にしてAlgorithm3の構成をこの乗算
剰余回路により実装させることが可能であり、高速処理
が可能となる。
【0090】
【発明の効果】本発明によれば、2の拡大体GF(2m)上の
多項式基底で表された要素a(x),b(x)と既約多項式f(x)
に対して、a(x)×b(x) mod f(x)を演算する場合に、任
意の次数の演算が可能となるので汎用性があり、かつ高
速演算を可能とする。
【図面の簡単な説明】
【図1】本発明の第1実施形態のアルゴリズムの構成を
示す説明図。
【図2】その変形例の説明図。
【図3】第2実施形態のアルゴリズムの構成を示す説明
図。
【図4】その変形例の説明図。
【図5】その変形例の説明図。
【図6】ブロック処理の説明図。
【図7】本発明の1実施形態のフローチャート。
【図8】具体例のアルゴリズムの構成を示す説明図。
【図9】他の具体例のアルゴリズムの構成を示す説明
図。
【図10】本発明の乗算剰余回路の構成を示す回路図。
【図11】それに用いられるアルゴリズムの一例を示す
フローチャート。
【図12】本発明の乗算剰余回路の他の構成を示す回路
図。
【図13】本発明の第1実施例の回路図。
【図14】その最上位ブロック処理時の回路図。
【図15】その中間ブロック群処理時の回路図。
【図16】その最下位ブロック処理時の回路図。
【図17】本発明の第2実施例の回路図。
【図18】本発明の第2実施例の回路図。
【符号の説明】
11,12,13 乗算部 14 加算部 21,22,23 乗算部 24 加算部 31,32,34,35 乗算部 33,36 加算部 41,42,44,45 乗算部 43,46 加算部 47 シフト演算部 100 LFSR 101 Aレジスタ 102 Bレジスタ 103 Fレジスタ 104 Rレジスタ 105 第1ANDゲート 106 第2ANDゲート 107 第1XORゲート 108 第2XORゲート 200 LFSR 201 Aレジスタ 202 B1レジスタ 203 Fレジスタ 204 Rレジスタ 205 第1ANDゲート 206 第2ANDゲート 207 第1XORゲート 208 第2XORゲート 209 B0レジスタ 210 第2ANDゲート
───────────────────────────────────────────────────── フロントページの続き (72)発明者 鳥居 直哉 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 (72)発明者 長谷部 高行 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 5J104 AA22 NA18 9A001 BB02 CZ03 DD10 EE02 FF01 GG01 JJ12 KK56 LL03

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】多項式基底で表される2の拡大体GF(2m)上
    の2つの元a(x),b(x)と既約多項式f(x)に対して、a(x)
    ×b(x) mod f(x)の乗算剰余演算を行う方法であって、 前記既約多項式f(x)からパラメータf'(x)を算出する(A
    -1)工程と、 前記a(x)とb(x)とを乗算してその積を変数t(x)に代入す
    る(A-2)工程と、 前記変数t(x)のm次以上の部分と前記パラメータf'(x)
    とを乗算しその積を変数u(x)に代入する(A-3)工程
    と、 前記変数u(x)のm次以上の部分と前記既約多項式f(x)と
    を乗算しその積を前記変数t(x)と加算して変数c(x)に代
    入する(A-4)工程と、を備える乗算剰余演算方法。
  2. 【請求項2】多項式基底で表される2の拡大体GF(2m)上
    の2つの元a(x),b(x)と既約多項式f(x)に対して、a(x)
    ×b(x) mod f(x)の乗算剰余演算を行う方法であって、 前記既約多項式f(x)からパラメータf'(x)を算出する(A
    -1)工程と、 前記a(x)とb(x)とを乗算してその積を変数t(x)に代入す
    る(A-2)工程と、 前記変数t(x)のm次以上の部分と前記パラメータf'(x)
    とを乗算しその積を変数u(x)に代入する(A-3)工程
    と、 前記変数u(x)のm次以上の部分と前記既約多項式f(x)と
    を乗算し、その積のm次未満の部分と前記変数t(x)のm
    次未満の部分とを加算して変数c(x)に代入する(A-4')
    工程と、を備える乗算剰余演算方法。
  3. 【請求項3】前記パラメータf'(x)は、2の拡大体GF
    (2m)上でx2mをf(x)で割った商である、請求項1または
    2に記載の乗算剰余演算方法。
  4. 【請求項4】前記パラメータf'(x)を予め算出してお
    き、前記(A-1)工程を省略することを特徴とする、請
    求項1〜3のいずれかに記載の乗算剰余演算方法。
  5. 【請求項5】多項式基底で表される2の拡大体GF(2m)上
    の2つの元a(x),b(x)と既約多項式f(x)のうち、前記a
    (x)に含まれるa0〜amをwビット毎に分割してn個の
    ブロックA0〜An-1とし、a(x)×b(x) mod f(x)の乗算
    剰余演算を行う方法であって、 前記既約多項式f(x)からw次のパラメータf"(x)を算出
    する(B-1)工程と、 前回の計算結果である変数c(x)とxwとを乗算してその
    積を変数t(x)に代入する(B-2)工程と、 前記Aiとb(x)とを乗算しその積と前記変数t(x)とを加
    算し変数t(x)に代入する(B-3)工程と、 前記変数t(x)のm次以上の部分を求めて変数th(x)に代
    入する(B-4)工程と、 前記変数th(x)と前記パラメータf"(x)とを乗算しその積
    のw次以上の部分を求めて変数u(x)に代入する(B-5)
    工程と、 前記変数u(x)と前記既約多項式f(x)とを乗算しその積と
    前記変数t(x)とを加算して変数c(x)に代入する(B-6)
    工程と、を備え、前記(B-2)工程〜(B-6)工程をi=
    0〜n−1についてn回繰り返すことを特徴とする乗算
    剰余演算方法。
  6. 【請求項6】多項式基底で表される2の拡大体GF(2m)上
    の2つの元a(x),b(x)と既約多項式f(x)のうち、前記a
    (x)に含まれるa0〜amをwビット毎に分割してn個の
    ブロックA0〜An-1とし、a(x)×b(x) mod f(x)の乗算
    剰余演算を行う方法であって、 前記既約多項式f(x)からw次のパラメータf"(x)を算出
    する(B-1)工程と、 前回の計算結果である変数c(x)とxwとを乗算してその
    積を変数t(x)に代入する(B-2)工程と、 前記Aiとb(x)とを乗算しその積と前記変数t(x)とを加
    算し変数t(x)に代入する(B-3)工程と、 前記変数t(x)のm次以上の部分を求めて変数th(x)に代
    入する(B-4)工程と、 前記変数th(x)と前記パラメータf"(x)とを乗算しその積
    のw次以上の部分を求めて変数u(x)に代入する(B-5)
    工程と、 前記変数u(x)と前記既約多項式f(x)とを乗算しその積の
    m次未満の部分と前記変数t(x)のm次未満の部分とを加
    算して変数c(x)に代入する(B-6')工程と、を備え、前
    記(B-2)工程〜(B-6')工程をi=0〜n−1につい
    てn回繰り返すことを特徴とする乗算剰余演算方法。
  7. 【請求項7】前記パラメータf"(x)は、2の拡大体GF
    (2m)上でxm+wをf(x)で割った商である、請求項5また
    は6に記載の乗算剰余演算方法。
  8. 【請求項8】前記パラメータf"(x)を予め算出してお
    き、前記(B-1)工程を省略することを特徴とする、請
    求項5〜7のいずれかに記載の乗算剰余演算方法。
  9. 【請求項9】前記各工程の前段階として、前記a(x)およ
    びb(x)と(x-s mod f(x))とを乗算しその積とxsとを
    乗算してそれぞれ変数a(x)およびb(x)に代入する変換工
    程と、 最終的な演算結果であるc(x)に対して(c(x) mod f
    (x))を求めてこれを変数c(x)に代入する逆変換工程と
    をさらに含む、請求項1〜8のいずれかに記載の乗算剰
    余演算方法。
  10. 【請求項10】前記各工程の前段階として、前記a(x)お
    よびb(x)と(x-s mod f(x))とを乗算しその積とxs
    を乗算してそれぞれ変数a(x)およびb(x)に代入する変換
    工程と、 最終的な演算結果であるc(x)に対して(c(x) mod xs
    /xsを求めこれを変数c(x)に代入する逆変換工程とを
    さらに含む、請求項1〜8のいずれかに記載の乗算剰余
    演算方法。
  11. 【請求項11】多項式基底で表される2の拡大体GF(2m)
    上の2つの元a(x),b(x)と既約多項式f(x)に対して、乗
    数b(x)のビット単位の演算処理を行ってa(x)×b(x) mod
    f(x)の乗算剰余演算を行う乗算剰余回路であって、 前回の演算結果r(x)と既約多項式f(x)との排他的論理和
    を演算する第1のXORゲートと、前記第1のXORゲートの
    演算結果と前記a(x)×b(x)の演算結果との排他的論理和
    を演算する第2のXORゲートとを備える所定のビット長
    を有する線形フィードバックレジスタにより構成される
    乗算剰余回路。
  12. 【請求項12】前記線形フィードバックレジスタは、n
    1ビット長のものがn2段に設けられ、前記乗数b(x)のブ
    ロック単位での演算処理を行うことを特徴とする、請求
    項11に記載の乗算剰余回路。
  13. 【請求項13】請求項1または請求項2に記載の乗算剰
    余演算方法に適用されることを特徴とする、請求項12
    に記載の乗算剰余回路。
  14. 【請求項14】前記線形フィードバックレジスタのビッ
    ト長n1よりも大きいビット長の被乗数a(x)に対して乗
    算剰余を行うために、前回の演算結果の上位n2ビット
    の値を保持するレジスタを設けた、請求項12または1
    3に記載の乗算剰余回路。
  15. 【請求項15】n2段分のa(x)×b(x)の部分積を演算す
    る第1演算部と、n2段分のf(x)に関する演算を行う第
    2演算部とを備える、請求項12〜14のいずれかに記
    載の乗算剰余回路。
JP22277299A 1999-08-05 1999-08-05 乗算剰余演算方法および乗算剰余回路 Expired - Fee Related JP4177526B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22277299A JP4177526B2 (ja) 1999-08-05 1999-08-05 乗算剰余演算方法および乗算剰余回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22277299A JP4177526B2 (ja) 1999-08-05 1999-08-05 乗算剰余演算方法および乗算剰余回路

Publications (2)

Publication Number Publication Date
JP2001051832A true JP2001051832A (ja) 2001-02-23
JP4177526B2 JP4177526B2 (ja) 2008-11-05

Family

ID=16787657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22277299A Expired - Fee Related JP4177526B2 (ja) 1999-08-05 1999-08-05 乗算剰余演算方法および乗算剰余回路

Country Status (1)

Country Link
JP (1) JP4177526B2 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001056640A (ja) * 1999-08-19 2001-02-27 Toyo Commun Equip Co Ltd 積和演算装置及びこれを用いた暗号・復号装置
JP2001109376A (ja) * 1999-10-04 2001-04-20 Toyo Commun Equip Co Ltd 演算回路および演算プロセッサ
US7080110B2 (en) 2000-12-19 2006-07-18 International Business Machines Corporation Hardware implementation for modular multiplication using a plurality of almost entirely identical processor elements
US7206799B2 (en) 2002-04-19 2007-04-17 Oki Electric Industry Co., Ltd. Modular multiplication method and calculating device
JP2008521144A (ja) * 2004-11-22 2008-06-19 アナログ デバイシーズ インク 圧縮ガロア域計算システム
US7870395B2 (en) 2006-10-20 2011-01-11 International Business Machines Corporation Load balancing for a system of cryptographic processors
US7890559B2 (en) 2006-12-22 2011-02-15 International Business Machines Corporation Forward shifting of processor element processing for load balancing
JP4836208B2 (ja) * 2006-07-24 2011-12-14 国立大学法人 岡山大学 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置
US8532288B2 (en) 2006-12-01 2013-09-10 International Business Machines Corporation Selectively isolating processor elements into subsets of processor elements
JP2014175834A (ja) * 2013-03-08 2014-09-22 Mega Chips Corp 線形フィードバックシフトレジスタおよびデータ処理装置
JP2014174291A (ja) * 2013-03-08 2014-09-22 Mega Chips Corp 暗号処理装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001056640A (ja) * 1999-08-19 2001-02-27 Toyo Commun Equip Co Ltd 積和演算装置及びこれを用いた暗号・復号装置
JP2001109376A (ja) * 1999-10-04 2001-04-20 Toyo Commun Equip Co Ltd 演算回路および演算プロセッサ
US7080110B2 (en) 2000-12-19 2006-07-18 International Business Machines Corporation Hardware implementation for modular multiplication using a plurality of almost entirely identical processor elements
US7206799B2 (en) 2002-04-19 2007-04-17 Oki Electric Industry Co., Ltd. Modular multiplication method and calculating device
JP4733143B2 (ja) * 2004-11-22 2011-07-27 アナログ デバイシーズ インク 圧縮ガロア域計算システム
JP2008521144A (ja) * 2004-11-22 2008-06-19 アナログ デバイシーズ インク 圧縮ガロア域計算システム
US8090099B2 (en) 2006-07-24 2012-01-03 National University Corporation Okayama University Computer-readable recording medium recording program and apparatus for encryption/decryption, apparatus for multiplication in extension field
JP4836208B2 (ja) * 2006-07-24 2011-12-14 国立大学法人 岡山大学 暗号化/復号化プログラム、暗号化/復号化装置及び拡大体の乗算装置
US7870395B2 (en) 2006-10-20 2011-01-11 International Business Machines Corporation Load balancing for a system of cryptographic processors
US8532288B2 (en) 2006-12-01 2013-09-10 International Business Machines Corporation Selectively isolating processor elements into subsets of processor elements
US7890559B2 (en) 2006-12-22 2011-02-15 International Business Machines Corporation Forward shifting of processor element processing for load balancing
JP2014175834A (ja) * 2013-03-08 2014-09-22 Mega Chips Corp 線形フィードバックシフトレジスタおよびデータ処理装置
JP2014174291A (ja) * 2013-03-08 2014-09-22 Mega Chips Corp 暗号処理装置

Also Published As

Publication number Publication date
JP4177526B2 (ja) 2008-11-05

Similar Documents

Publication Publication Date Title
JP3784156B2 (ja) モジュラ掛け算方法
US7904498B2 (en) Modular multiplication processing apparatus
JPH0720778A (ja) 剰余計算装置、テーブル作成装置および乗算剰余計算装置
JP4662802B2 (ja) 計算方法、計算装置及びコンピュータプログラム
JP4783382B2 (ja) モンゴメリ法用乗算剰余計算装置
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
US6480606B1 (en) Elliptic curve encryption method and system
JP4177526B2 (ja) 乗算剰余演算方法および乗算剰余回路
JP2000132376A (ja) 剰余演算方法,乗算剰余演算方法,剰余演算装置,乗算剰余演算装置及び記録媒体
US7050579B1 (en) Cryptographic methods and apparatus using word-wise montgomery multiplication
JP3302043B2 (ja) 暗号通信方法及びそのシステム
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
JP3616897B2 (ja) モンゴメリ法による乗算剰余計算装置
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
JP3797808B2 (ja) スカラー倍算方法およびその装置
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
JP3615405B2 (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP2000137436A (ja) 素体上楕円曲線上の点の演算方法およびその装置
JP2004038020A (ja) 暗号学的擬似乱数発生装置及びプログラム
JP3591857B2 (ja) 擬似乱数生成方法及び装置、通信方法及び装置
Siddavaatam et al. An adaptive security framework with extensible computational complexity for cipher systems
JP7406108B2 (ja) 暗号復号システム、暗号復号方法、及び暗号復号用プログラム
JP4243179B2 (ja) 演算装置
JP3435473B2 (ja) 暗号化・復号化方法及び装置
JP3999554B2 (ja) 乗算剰余演算方法及び演算装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050308

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080304

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080603

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080730

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080819

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080822

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110829

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120829

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120829

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130829

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees