JP4202701B2 - 多項式剰余系演算装置、方法及びプログラム - Google Patents

多項式剰余系演算装置、方法及びプログラム Download PDF

Info

Publication number
JP4202701B2
JP4202701B2 JP2002265867A JP2002265867A JP4202701B2 JP 4202701 B2 JP4202701 B2 JP 4202701B2 JP 2002265867 A JP2002265867 A JP 2002265867A JP 2002265867 A JP2002265867 A JP 2002265867A JP 4202701 B2 JP4202701 B2 JP 4202701B2
Authority
JP
Japan
Prior art keywords
polynomial
arithmetic unit
remainder
calculation
arithmetic
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.)
Expired - Lifetime
Application number
JP2002265867A
Other languages
English (en)
Other versions
JP2004102071A (ja
Inventor
正修 小池
勉 松本
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2002265867A priority Critical patent/JP4202701B2/ja
Publication of JP2004102071A publication Critical patent/JP2004102071A/ja
Application granted granted Critical
Publication of JP4202701B2 publication Critical patent/JP4202701B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、多項式剰余演算系に基づきGF(2m)の元を並列処理により高速に計算する多項式剰余系演算装置、方法及びプログラムに関する。
【0002】
【従来の技術】
公開鍵暗号の分野では、攻撃者の用いる計算機の高性能化や攻撃手法の高度化に対し、安全性を確保するために鍵長が増加する傾向にある。例えば現在、公開鍵暗号の事実上の標準(デファクトスタンダード)として利用されるRSA(Rivest-Shamir-Adleman)方式では、1,024ビットの鍵長が推奨されている。また、楕円曲線暗号の一方式である楕円DSA(Digital Signature Standard)方式では、160ビットの鍵長が現在推奨されている。
【0003】
従って、公開鍵暗号の分野では、このように長い鍵長を用いる際に、非常に大きな整数の演算や、非常に次数の高い多項式の演算をいかに高速に処理するかが重要な課題となっている。
【0004】
ここで、整数の演算処理では、高速化の方法の一つとして、剰余演算系(Residue Number System、以下、RNSと略記する)が知られている。このRNSは、互いに素な比較的小さな整数の組{a1,a2,…,an}を予め用意し、演算対象の大きな整数をこれらの整数で割った余りの組で表現する手法である。以下、予め用意する整数の組{a1,a2,…,an}をRNSの基底と呼び、基底を構成する要素の個数nを基底のサイズと呼ぶ。また、基底の集合をa={a1,a2,…,an}で表す。
【0005】
例えば、整数xと基底{a1,a2,…,an}が与えられたとき、xを基底要素ai(i=1,2,…,n)で割った余りxiの組(x1,x2,…,xn)がxのRNS表現である。ここで、xi = x mod ai である。このとき、xは基底の全要素の積A=a12…anを法として一意的に表現できる。すなわち、xがA未満の正整数であれば、xとそのRNS表現(x1,x2,…,xn)とは一対一に対応する。
【0006】
係るRNS表現においては、2つの整数x,yの和を計算する場合、RNS表現したx,yの各基底要素ごとの和を求め、その後に対応する基底で除した余りを求めればよい。減算も同様である。乗算についても、各基底要素ごとの積を求め、さらに、対応する基底で除した余りを求める。
【0007】
このようにRNSでは、加算、減算、乗算は、各基底要素ごとに独立に、基底を法とする演算を行えばよい。このため、例えば基底として計算機のワード長以内の整数を用いることにより、非常に大きな整数の演算を単精度の演算の繰り返しで実現できる。しかしながら、RNS表現での除算は、基数表現に比べて効率良く行う手段があまり知られていない。
【0008】
なお、RNS表現での除算を効率良く行なう手法として、ポッシュ(Posch)ら及び川村らは、剰余演算系を利用し、公開鍵暗号系のRSA暗号方式の演算を高速に行う方法を提案している(例えば、非特許文献1,2及び特許文献1参照)。
【0009】
ポッシュ及び川村の方法は、RNS表現での演算において不利な除算を避けるために、モンゴメリ(Montgomery)が提案した剰余乗算方法(以下、モンゴメリ乗算と呼ぶ)(例えば、非特許文献3参照)を利用していること、あるRNS基底で表現された整数を、基底拡張を用いて別の基底での表現を作り出すこと、などが特徴として挙げられる。
【0010】
ここで、基底拡張とは、基底a={a1,a2,…,an}で表現された(x mod a1, x mod a2,…,x mod an)から、基底a∪{b1} ={a1,a2,…,an,b1}で表現された(x mod a1,x mod a2,…,x mod an,x mod b1)を作り出す操作である。上の操作では基底のサイズを1つ増やしたが、この操作を繰り返して基底のサイズをn’個(n’は整数)増やし、その基底の下でのRNS表現を作り出すことも基底拡張と呼ぶ。
【0011】
一方、楕円曲線暗号では、標数2の体GF(2)の拡大体GF(2m)を基礎体として楕円曲線を構成する手法が知られている。GF(2m)の元は多項式で表現されるため、上述した整数の演算法とは若干異なる演算法が必要となる。
【0012】
以下、GF(2m)を定めるGF(2)上のm次既約多項式をN(x)と書く。GF(2m)の元はGF(2)上の多項式をN(x)で割った余りと見なすことができるため、m−1次以下の多項式で表すことができる。
【0013】
GF(2m)の元を効率良く演算するための手法として、RNSの類似概念の多項式剰余演算系(Polynomial Residue ArithmeticまたはPolynomial Residue System、以下、PRSと略記する)が知られている。このPRSは、互いに素な比較的小さな次数のGF(2)上の多項式の組{f1(x),f2(x),…,fn(x)}を予め用意し、演算対象のGF(2m)の元をこれらの多項式で割った余りの組で表現する手法である。以下、予め用意する多項式の組{f1(x),f2(x),…,fn(x)}をPRSの基底と呼び、基底を構成する要素の個数nを基底のサイズと呼ぶ。また、基底の集合をf={f1(x),f2(x),…,fn(x)}で表す。
【0014】
例えば、GF(2m)の元a(x)と基底{f1(x),f2(x),…,fn(x)}が与えられたとき、a(x)を基底fi(x)(i=1,2,…,n)で割った余りai(x)の組(a1(x),a2(x),…,an(x))がa(x)のPRS表現である。ここで、ai(x)=a(x) mod fi(x) である。このとき、a(x)は基底の全要素の積F(x)=f1(x)f2(x)…fn(x)を法として一意的に表現できる。すなわち、F(x)の次数をdeg(F(x))と表すとき、a(x)がdeg(F(x))未満の多項式であれば、a(x)とそのPRS表現(a1(x),a2(x),…,an(x))は一対一に対応する。
【0015】
係るPRS表現において、2つの多項式a(x),b(x)の和を計算する場合、PRS表現したa(x),b(x)の各基底要素ごとの和を求めればよい。乗算については、まず、各基底要素ごとの積を求め、さらに、対応する基底で除した余りを求める。
【0016】
このようにPRSでは、加算、乗算は、各基底要素ごとに独立に、基底を法とする演算を行えばよい。そのため、例えば基底として計算機のワード長以内の次数の多項式を用いることにより、非常に大きな次数の多項式の演算を単精度の演算の繰り返しで実現できる。しかしながら、PRS表現での除算は、通常の多項式表現に比べて効率良く行う手段があまり知られていない。
【0017】
なお、PRS表現での除算を効率良く行なう手法として、Kocらは、PRS表現での剰余乗算手法を提案している(例えば、非特許文献4参照)。
【0018】
Kocの手法では、PRSでの除算を避けるために、法多項式N(x)の倍数テーブルを予め用意していること、が特徴として挙げられる。これにより、除算をするとき、割られる多項式に近い多項式をこの倍数テーブルから検索して減算可能となっている。
【0019】
【非特許文献1】
ポッシュ(Posch),“モジュロ・リダクション・イン・レジデュー・ナンバー・システム(Modulo Reduction in Residue Number System)”,アイトリプルイー・トランザクション・オン・パラレル・アンド・ディストリビューテッド・システムズ(IEEE Transaction on Parallel and Distributed Systems),1995年5月, Vol. 6, No. 5, pp.449-454
【0020】
【非特許文献2】
ポッシュ(Posch),“アールエヌエス−モジュロ・リダクション・アポン・ア・リストリクテッド・ベース・バリュー・セット・アンド・イッツ・アプリケービリティ・トゥ・アールエスエイ・クリプトグラフィ(RNS-Modulo Reduction Upon a Restricted Base Value Set and its Applicability to RSA Cryptography)”,コンピュータ・アンド・セキュリティ(Computer & Security)誌,1998年,Vol. 17, pp.637-650
【0021】
【特許文献1】
特開2001−194993号公報
【0022】
【非特許文献3】
モンゴメリ(Montgomery),“モジュラー・マルチプリケーション・ウィズアウト・トライアル・ディヴィジョン(Modular Multiplication without Trial Division)”,マセマティクス・オブ・コンピューテイション(Mathematics of Computation),1985年4月, Vol.44, No.170, pp.519-521
【0023】
【非特許文献4】
Kocら,“パラレル・マルチプリケーション・イン・ジーエフザケイスパワーオブツー・ユージング・ポリノミアル・レジデュー・アリスメティク(Parallel multiplication in GF(2k) using polynomial residue arithmetic)”、デザインズ・コーズ・アンド・クリプトグラフィ(Designs, Codes and Cryptography),2000年6月, 20(2),pp.155-173
【0024】
【発明が解決しようとする課題】
しかしながら、以上のようなKocの手法は、以下の3つの点で改良の余地があると考えられる。
1点目は、法多項式の倍数テーブルを用意したことで、扱える法多項式が限定されてしまうことである。すなわち、この倍数テーブルを演算装置の記憶装置に書き込むと、その演算装置はこの法多項式でしか演算できなくなる。
【0025】
2点目は、倍数テーブルが巨大である点である。例えば、基底の多項式を16ビットとし、法多項式N(x)を160ビットとすると、倍数テーブルは約1.25Mバイトのメモリサイズが必要となる。このような倍数テーブルを格納するのは非現実的である。
【0026】
3点目は、この倍数テーブルを検索するために、PRS表現された多項式とともに、対応する通常の多項式の表現でも同時に計算をする点である。このため、二重に処理することで効率を落としていることに加え、通常の多項式の表現の計算も行うことで、PRS表現で計算する意味が薄れていると考えられる。
【0027】
すなわち、Kocの方法では、PRS表現の持つ効率の良い演算特性を十分に生かし切れていないと考えられる。
【0028】
本発明は上記実情を考慮してなされたもので、多項式剰余系の演算に関し、必要なメモリサイズを低減でき、且つ処理効率を向上し得る多項式剰余系演算装置、方法及びプログラムを提供することを目的とする。
【0029】
【課題を解決するための手段】
第1の発明は、予め設定された多項式剰余演算系の基底{f1(x),f2(x),…,fn(x)}及び{g1(x),g2(x),…,gn(x)}の各基底要素fi,gi(i=1,2,…,n)に基づき、GF(2)上の多項式の剰余演算機能を有する複数の演算ユニットを備えた多項式剰余系演算装置であって、前記GF(2)上のm次の既約多項式N(x)と、m未満の次数のGF(2)上の多項式a(x),b(x)とを各演算ユニットに入力するための入力手段と、前記設定された各基底要素fi,gi及び前記入力された入力内容N(x),a(x),b(x)に基づいて、各基底要素fi,giでの剰余演算を各演算ユニットに並列に実行させる剰余演算制御手段と、前記各演算ユニットにG(x)=g1(x)g2(x)…gn(x)で定義されたG(x)を用いてモンゴメリ乗算a(x)b(x)G(x)-1 mod N(x)を計算させるように、前記剰余演算制御手段を制御するモンゴメリ乗算制御手段と、を備えた多項式剰余系演算装置である。
【0030】
このように、従来とは異なり、巨大なメモリサイズを要する倍数テーブルを用いることなく、また、通常の多項式の表現での計算をすることなく、多項式剰余系表現を用いて各演算ユニットに並列に演算を実行させている。また法多項式の倍数テーブルのような、法多項式を限定してしまうパラメータは用いていないため、任意の法多項式に対して演算可能である。さらに、並列演算としては、除算を避けるために、多項式剰余系表現では従来用いられなかったモンゴメリ乗算を用いている。
従って、多項式剰余系の演算に関し、必要なメモリサイズを低減でき、且つ処理効率を向上させることができる。
【0031】
なお、第1の発明は、「装置」として表現したが、「システム」、「方法」、「プログラム」又は「コンピュータ読取り可能な記憶媒体」等として表現してもよいことは言うまでもない。
【0032】
【発明の実施の形態】
以下、本発明の各実施形態について図面を用いて説明するが、その前に本発明の原理について述べる。
【0033】
GF(2)上のモンゴメリ乗算は、入力された多項式a(x),b(x),N(x)に対して、a(x)b(x)R(x)-1 mod N(x)を出力するアルゴリズムであり、次の5ステップST1〜ST5からなる。
【0034】
(ST1) s(x) ← a(x)b(x)
(ST2) t(x) ← s(x)N(x)-1 mod R(x)
(ST3) u(x) ← t(x)N(x)
(ST4) v(x) ← s(x)+u(x)
(ST5) w(x) ← v(x)/R(x)
ここで、s(x),t(x),u(x),v(x),w(x)は中間変数を表す。
R(x)は、次数deg(R(x))が法多項式N(x)の次数deg(N(x))より大きく、N(x)と互いに素な多項式である。
【0035】
以上のモンゴメリ乗算をPRSで実現するには、次の7ステップST11〜ST17を行えばよい。この7ステップST11〜ST17は、ポッシュらが提案したRNS表現におけるモンゴメリ乗算アルゴリズムに類似している。
【0036】
Figure 0004202701
ここで、<s(x)>f などは通常の多項式表現で s(x) である多項式を、基底fによってPRS表現したものを表す。
【0037】
上記7ステップを正しく処理するには、deg(N(x)) <deg(F(x))の条件と、deg(N(x)) <deg(G(x))の条件とを満たす必要がある。
【0038】
この2つの条件から、a(x)を基底fのみ又は基底gのみで表現できるので、<a(x)>f, <a(x)>g のペアで a(x) を表すこと自体は冗長である。
しかしながら、多項式a(x)とb(x)の積s(x)は、その次数deg(s(x))がdeg(F(x))、deg(G(x))より大きいことがありうるので、f∪gを基底として初めて正しく表現できる。なお、一般に、基底fと基底gとはサイズが異なる。但し、特殊な場合として両基底f,gのサイズを等しく取った場合には、基底fの演算ユニットと基底gの演算ユニットとを共用できる利点がある。
【0039】
次に、PRS表現のモンゴメリ乗算アルゴリズムのステップST13,ST17の基底拡張について説明する。
いま、β(x)をdeg(β(x)) <deg(F(x)) なる多項式とし、そのPRS表現を<β(x)>f =(β1(x),β2(x),…,βn(x))とする。
【0040】
このPRS表現された多項式<β(x)>f から基底拡張後の多項式<β(x)>f gを求めるとする。このとき、周知の中国剰余定理から次の式(1)が成立する。
【0041】
【数1】
Figure 0004202701
【0042】
ここで、Fi(x)=F(x)/fi(x)である。Fi(x)-1は、法fi(x)におけるFi(x)の乗法逆元である。
【0043】
上の式(1)は次の式(2)のように書いても良い。
【0044】
【数2】
Figure 0004202701
【0045】
ここで、右辺のmod F(x)を施す前の次数は、以下のように、deg(F(x))より小さい値となる。
【0046】
max{deg(fi(x))+deg(Fi(x))}<max{deg(fi(x))+deg(F(x))-deg(fi(x))}=deg(F(x))
従って、式(2)は、mod F(x)を省略し、次の式(3)として表現される。
【数3】
Figure 0004202701
式(3)によると、乗算と加算でβ(x)を求めることができる。
【0047】
<β(x)>g はこのようにして求めたβ(x)を、各基底要素gi(x) での剰余を計算することで得られる。
【0048】
続いて、以上のようなPRS表現を用いたモンゴメリ乗算アルゴリズムを実現する本発明の各実施形態について図面を用いて説明する。
(第1の実施形態)
図1は本発明の第1の実施形態に係る多項式剰余系演算装置の構成を示す模式図である。この多項式剰余系演算装置は、n個の演算ユニット10〜10が制御装置20に接続されている。
【0049】
ここで、各演算ユニット10〜10は、制御装置20に制御され、単精度の多項式の剰余乗算を行うものであり、それぞれ対応する添字のROM11〜11、RAM12〜12及び積和回路13〜13を備えている。なお、各演算ユニット10〜10は、互いに同一構成を有するため、以下の説明は、任意の演算ユニット10(但し、i=1,2,…,n)を代表例として述べる。また、演算ユニット10の各要素11,12,13も同様である。
【0050】
ROM11は、制御装置20により読出制御される読出専用メモリであり、積和回路13で用いる基底要素f,gi、及びfi(x)を法とした乗法逆元値Fi(x)-1mod fi(x)、gi(x)を法とした乗法逆元値Gi(x)-1mod gi(x)、事前計算された<Fi(x)>g、<Gi(x)>f(i=1,2,…,n)、<G-1(x)>fを保持し、保持内容を制御装置20からの制御により、対応する積和回路13に転送可能となっている。
【0051】
なお、多項式剰余系のn個の基底要素{f,…,f}は、どの2つ同士も互いに素な多項式が使用されている。他方のn個の基底要素{g,…,g}も同様である。また、一般には多項式剰余系の基底要素の個数nと、積和回路13〜13の個数nとは一致しなくてよいが、ここでは簡単のため、共にn個とする。
【0052】
乗法逆元値Fi(x)-1mod fi(x)、Gi(x)-1mod gi(x)及び<Fi(x)>g、<Gi(x)>f(i=1,2,…,n)、<G-1(x)>fは、多項式剰余系の基底が定まれば決まる値なので、事前計算して格納するが、ROM11に限らず、RAM12や図示しない他のメモリ(例えばEEPROM)に格納されていてもよい。
【0053】
RAM(記憶装置)12は、制御装置20により読出/書込制御される随時書込読出メモリであり、積和回路13への入力データや、積和回路13からの演算の中間結果データ、及び演算ユニット10外部への出力データ、といった各データを保持するために用いられる。また、RAM12は、事前計算された<N(x)>、<N(x)-1<N(x)>が保持されている。また、RAM12は、書込可能な記憶装置であればよく、例えばRAMに代えて、EAROM(electrically alterable read only memory)又はEEPROM(electrically erasable programmable read only memory)等、といった任意の書換え可能な記憶装置に変形可能となっている。
【0054】
制御装置20は、図2に示すモンゴメリ乗算アルゴリズムに基づいて、各演算ユニット10や入出力データを制御することにより、所定の演算を実行させる機能をもっている。ここで、図2のモンゴメリ乗算アルゴリズムの各ステップST11〜ST17は、前述したPRSにおける7つのステップST11〜ST17に対応している。また、各演算ユニット10の制御としては、例えば、各積和回路13内にセレクタを設け、このセレクタに制御信号を与えて積和回路13内の加算回路や乗算回路(図示せず)を選択することにより実現可能となっている。
【0055】
また、以上のような各演算ユニット10及び制御装置20はそれぞれハードウェア、又はハードウェアとソフトウェアの組合せにより構成可能となっている。ここで、各演算ユニット10及び制御装置20がハードウェアとソフトウェアにより構成される場合、ソフトウェアとしては、後述する各機能を実現させるためのプログラムが予め多項式剰余系演算装置のコンピュータにインストールされている。なお、ハードウェア、又はハードウェアとソフトウェアの組合せにより各演算ユニット10及び制御装置20を個別に構成可能な旨の説明は、以下の各実施形態にも適用される。
【0056】
次に、以上のように構成された多項式剰余系演算装置による多項式剰余系演算方法について図2を用いて説明する。
始めに、基底fi(x),gi(x)は、予めROM11に保持されている。また、入力a(x),b(x),法N(x)は、制御装置20により、各演算ユニット10に設定される。
【0057】
(ST11) 各演算ユニット10は、2つの基底f,gの下で、それぞれa(x)×b(x)を行う。例えば基底fの下での <a(x)>f × <b(x)>f は次のように行う。
【0058】
すなわち、RAM12内の <a(x)>f,<b(x)>f の第i成分ai(x),bi(x)と、ROM11内の基底要素fi(x)とを用い、積和回路13がai(x)×bi(x) mod fi(x)を計算し、計算結果si(x)をRAM12に格納する。
【0059】
(ST12) 各演算ユニット10は、基底gのみの演算で、ステップ1で求めた<s(x)>gと、RAM12内の<N(x)-1gとを乗算する。なお、<N(x)-1g は事前計算により RAM12に格納されている。
【0060】
(ST13) 各演算ユニット10は、<t(x)>gを基底gから基底fへの表現に変換する基底拡張を行なう。基底拡張は、式(3)に基づいて行なう(β(x)=t(x)とし、fとgの役割を入れ替える)。
【0061】
まず、各演算ユニット10は、RAM12内の <t(x)>g の第j成分t(x)と、ROM11内の G(x)-1 mod g(x),基底要素g(x) を用い、積和回路13によりt(x)×G(x)-1 mod g(x)を計算し、計算結果h(x)をすべてのjについてRAM12、RAM12、…、RAM12すべてに格納する。ここで各演算ユニット間には図示しない結線があり、この結線を通じて異なるユニットのRAM12に格納する。
【0062】
次に、この計算結果h(x)及びROM11内のG1(x) mod fi(x),基底要素 fi(x)を用い、積和回路13によりh(x)×G1(x) mod fi(x)を計算し、この計算結果k1i(x)をRAM12に格納する。
【0063】
次に、RAM12内のh(x)及びROM11内のG2(x) mod fi(x),基底要素fi(x)を用い、積和回路13によりh(x)×G2(x) mod fi(x)を計算し、この計算結果とRAM12内のk1i(x)とを加算したk2i(x)をRAM12に格納する。
【0064】
以下同様に、G3(x) mod fi(x),…,Gn(x) mod fi(x)を順に用いてk3i(x),…,kni(x)を求め、t(x) mod fi(x)= kni(x)とおくことで <t(x)>f を得ることができる。
【0065】
(ST14) 各演算ユニット10は、ステップST13で求めた<t(x)>fと、RAM12内の<N(x)>f とを積和回路13により乗算し、乗算結果<u(x)>f をRAM12に格納する。ここで、<N(x)>f は事前計算によりRAM12に格納されている。
【0066】
(ST15) 各演算ユニット10は、ステップST11で求めた<s(x)>fと、ステップST14で求めた<u(x)>fとを積和回路13により加算し、加算結果<v(x)>f をRAM12に格納する。
【0067】
(ST16) 各演算ユニット10は、ステップST15で求めた<v(x)>f と、ROM11内の<G(x)-1fとを積和回路13により乗算し、乗算結果<w(x)>f をRAM12に格納する。ここで、<G(x)-1fは事前計算してROM11に格納されている。
このステップST16で得られた<w(x)>f に、求めたかったa(x)b(x)G(x)-1 mod N(x)の全ての情報が含まれている。
【0068】
(ST17) このアルゴリズムを繰り返し用いる場合、各演算ユニット10は、次の入力とするために、ステップST16の<w(x)>f を基底fから基底gに変換する。
【0069】
上述したように本実施形態によれば、従来とは異なり、巨大なメモリサイズを要する倍数テーブルを用いることなく、また、通常の多項式の表現での計算をすることなく、多項式剰余系表現を用いて各演算ユニットに並列に演算を実行させている。また法多項式の倍数テーブルのような、法多項式を限定してしまうパラメータは用いていないため、任意の法多項式に対して演算可能である。さらに、並列演算としては、除算を避けるために、多項式剰余系表現では従来用いられなかったモンゴメリ乗算を用いている。
従って、多項式剰余系の演算に関し、必要なメモリサイズを低減でき、且つ処理効率を向上させる、さらに任意の法多項式を扱うことができる。
【0070】
補足すると、従来技術では巨大な倍数テーブルが必要であったり、PRS表現と通常の多項式の表現で二重に処理を行ったりして効率を落としていたが、本実施形態では、倍数テーブルは不要であり、計算もPRS表現で閉じているため、効率よく処理できるようになっている。また、従来技術では倍数テーブルを用意することにより扱える法多項式が限定されていたが、本実施形態では、基底要素と互いに素であれば、任意の法多項式が扱えるようになっている。
【0071】
これに加え、本実施形態では、PRS表現におけるモンゴメリ乗算を行うことができるので、より一層、効率よく処理できるようになっている。
【0072】
(第2の実施形態)
図3は本発明の第2の実施形態に係る多項式剰余系演算装置の構成を示す模式図であり、図1と同一部分には同一符号を付してその詳しい説明を省略し、ここでは異なる部分について主に述べる。
【0073】
本実施形態は、第1の実施形態におけるPRS表現のモンゴメリ乗算を楕円曲線暗号に用いた応用例であり、図1の制御装置20に代えて、楕円曲線暗号のアルゴリズムに基づいた制御を行なう制御装置30を有しており、また、各演算ユニット10に対する共通の入出力部(図中I/O)40を備えている。
【0074】
ここで、制御装置30は、PRS表現においてGF(2m)上の楕円曲線暗号の処理に必要な楕円曲線上の点のスカラー倍算を行うためのものであり、図4及び図5に示すスカラ倍算アルゴリズムに基づいて、各演算ユニット10や入出力データを制御することにより、所定の演算を実行させる機能をもっている。
【0075】
入出力部40は、多項式剰余系演算装置の外部と、各演算ユニット10との間でデータを入出力するためのインターフェイスである。
【0076】
次に、以上のように構成された多項式剰余系演算装置における多項式剰余系演算方法を図4及び図5を用いて説明する。ここで、図4はPRSにおける楕円曲線上の点のスカラー倍算を行うアルゴリズムを示し、図5は図4のアルゴリズムの途中において、射影座標でモンゴメリ演算領域の楕円曲線上の点のスカラー倍算を行うアルゴリズムを示している。
【0077】
始めに、図4を用いて説明する。
(ST21) 図示しない外部CPUは、スカラーkを各演算ユニット10に入力する。また、入出力部40は、楕円曲線上の点(P(x),P(x))、法N(x)を各演算ユニット10に入力する。
【0078】
(ST22) 図示しない通常の多項式の表現での剰余乗算器により、GN(x)2=G(x)2 mod N(x)を計算する。
【0079】
(ST23) 各演算ユニット10は、通常の多項式の表現であるGN(x) 2, N(x),P(x),P(x)をPRS表現に変換する。この変換は、積和回路13のビットサイズをLとしたとき、例えばN(x)をPRS表現にするには、
【数4】
Figure 0004202701
【0080】
(ST24) 各演算ユニット10は、モンゴメリ乗算で必要な <N(x)-1gを計算する。<N(x)-1gは、gi(x)のカーマイケル数λiを事前に計算しておき、Ni(x)λ i mod gi(x)により求める。
【0081】
(ST25) 各演算ユニット10は、アフィン座標表示された(<P(x)>f g, <P(x)>f g)を射影座標かつモンゴメリ演算領域(<Pmx(x)>f g, <Pmy(x)>f g,<GN(x)f g)に変換する。
この変換は、x, y座標に関しては<GN(x) 2f g とのモンゴメリ乗算により計算できる。z座標に関しては <GN(x) 2f g と<1>f g のモンゴメリ乗算により計算できる。
【0082】
(ST26) 各演算ユニット10は、楕円曲線上の点(<Pmx(x)>f g, <Pmy(x)>f g,<GN(x)f g)をk倍して(<Qpmx(x)>f g,<Qpmy(x)>f g,<Qpmz(x)>f g)を得る。なお、本ステップST26は後で図5を用いて詳述する。
【0083】
(ST27) 各演算ユニット10は、(<Qpmx(x)>f g,<Qpmy(x)>f g,<Qpmz(x)>f g)をモンゴメリ演算領域から通常の領域(<QPx(x)>f g,<QPy(x)>f g,<QPz(x)>f g)に変換する。この変換は、各成分と<1>f gとのモンゴメリ乗算で計算できる。
【0084】
(ST28) 各演算ユニット10は、<QPx(x)>f g,<QPy(x)>f g,<QPz(x)>f gを通常の多項式の表現 QPx(x),QPy(x),QPz(x)に変換する。
例えば<QPx(x)>fについては次のように行う。
ξi(x)=QPxi(x)Gi(x)-1 mod gi(x)
とし、
【数5】
Figure 0004202701
【0085】
これにより、QPx(x)の通常の多項式の表現が得られる。QPx(x)は基底fのみで表現できているので、<QPx(x)>gに関する操作は不要である。
【0086】
(ST29) 各演算ユニット10は、射影座標表示された楕円曲線上の点(QPx(x),QPy(x),QPz(x))をアフィン座標表示(Qx(x),Q(x))に変換する。
【0087】
(ST30) 各演算ユニット10は、アフィン座標表示の(Qx(x),QP(x))を出力する。
【0088】
次に、前述したステップST26のスカラー倍算を図5を用いて詳細に説明する。
【0089】
(ST26−1) 各演算ユニット10は、まず入力として、スカラーkと、射影座標かつモンゴメリ演算領域で表現された楕円曲線上の点(PPmx(x),PPmy(x),PPmz(x))が与えられる。
【0090】
(ST26−2) 各演算ユニット10は、初期値として(QPmx(x),QPmy(x),QPmz(x))に(PPmx(x),PPmy(x),PPmz(x))を代入する。以下、スカラーkをビット表現したときの第iビットをkcで表すことにする。スカラーkのMSB(最上位)ビットkm-1からk1まで順に以下のループを行う。
【0091】
(ST26−3) 各演算ユニット10は、(QPmx(x),QPmy(x),QPmz(x))を2倍する。
【0092】
(QPmx(x),QPmy(x),QPmz(x))← DBL((QPmx(x),QPmy(x),QPmz(x)),(QPmx(x),QPmy(x),QPmz(x)))。ここで、DBL( )は、楕円曲線上の点の2倍算を意味する。
【0093】
(ST26−4) 制御装置30は、kc=1か否かを判定し、kc=1の場合にはステップS26−5に進む。kc=0の場合は、この加算を行わず、ループの先頭(ST26−3)に戻る。なお、ループの先頭に戻る毎にcの値を1ずつ減じる。
【0094】
(ST26−5) 各演算ユニット10は、(QPmx(x),QPmy(x),QPmz(x))に(PPmx(x),PPmy(x),PPmz(x))を加算する。
【0095】
(QPmx(x),QPmy(x),QPmz(x))← ADD((QPmx(x),QPmy(x),QPmz(x)),(PPmx(x),PPmy(x),PPmz(x)))。ここで、ADD( )は、楕円曲線上の点の加算を意味する。
【0096】
(ST26−6) 制御装置30は、c=1か否かを判定し、c≠1の場合にはcの値を1だけ減じ、ループの先頭(ST26−3)に戻る。c=1のときにループを終了し、ステップST26−7に進む。
【0097】
(ST26−7) 各演算ユニット10は、(QPmx(x),QPmy(x),QPmz(x))を出力し、ステップST27に進む。
【0098】
以上でステップST26は完了する。ここで、図5は通常の多項式の表現で記述してあるが、各元をPRS表現に置き換えることで容易にPRS表現でのスカラー倍算を実現できる。このとき、ADD( )やDBL( )で必要な剰余乗算を、第1の実施形態で示したPRS表現によるモンゴメリ乗算アルゴリズムを用いて行う。
【0099】
上述したように本実施形態によれば、第1の実施形態の効果に加え、効率よく楕円曲線上の点のスカラー倍算処理を実行することができる。
【0100】
なお、上記各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【0101】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【0102】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が本実施形態を実現するための各処理の一部を実行しても良い。
【0103】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【0104】
また、記憶媒体は1つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【0105】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【0106】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【0107】
なお、本願発明は、上記各実施形態に限定されるものでなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は可能な限り適宜組み合わせて実施してもよく、その場合、組み合わされた効果が得られる。さらに、上記各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば実施形態に示される全構成要件から幾つかの構成要件が省略されることで発明が抽出された場合には、その抽出された発明を実施する場合には省略部分が周知慣用技術で適宜補われるものである。
【0108】
その他、本発明はその要旨を逸脱しない範囲で種々変形して実施できる。
【0109】
【発明の効果】
以上説明したように本発明によれば、多項式剰余系の演算に関し、任意の法多項式を扱え、必要なメモリサイズを低減でき、且つ処理効率を向上できる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係る多項式剰余系演算装置の構成を示す模式図
【図2】同実施形態におけるPRS表現のモンゴメリ乗算のアルゴリズムを示す流れ図
【図3】本発明の第2の実施形態に係る多項式剰余系演算装置の構成を示す模式図
【図4】同実施形態におけるPRS表現を利用した楕円曲線上の点のスカラー倍算アルゴリズムを示す流れ図
【図5】図4の一部を詳細に説明するためのスカラー倍算アルゴリズムを示す流れ図
【符号の説明】
10〜10…演算ユニット
11〜11…ROM
12〜12…RAM
13〜13…積和回路
20,30…制御装置
40…入出力部

Claims (6)

  1. 予め設定された多項式剰余演算系の基底{f1(x),f2(x),…,fn(x)}及び{g1(x),g2(x),…,gn(x)}の各基底要素fi,gi(i=1,2,…,n)に基づき、GF(2)上の多項式の剰余演算機能を有する複数の演算ユニットを備えた多項式剰余系演算装置であって、
    前記GF(2)上のm次の既約多項式N(x)と、m未満の次数のGF(2)上の多項式a(x),b(x)とを各演算ユニットに入力するための入力手段と、
    前記設定された各基底要素fi,gi及び前記入力された入力内容N(x),a(x),b(x)に基づいて、各基底要素fi,giでの剰余演算を各演算ユニットに並列に実行させる剰余演算制御手段と、
    前記各演算ユニットにG(x)=g1(x)g2(x)…gn(x)で定義されたG(x)を用いてモンゴメリ乗算a(x)b(x)G(x)-1 mod N(x)を計算させるように、前記剰余演算制御手段を制御するモンゴメリ乗算制御手段と、
    を備えたことを特徴とする多項式剰余系演算装置。
  2. 請求項1に記載の多項式剰余系演算装置において、
    前記モンゴメリ乗算を用いた所定のアルゴリズムに従ってGF(2m)上定義された楕円曲線上の点のスカラー倍演算を実行するように、前記各演算ユニット及び前記モンゴメリ乗算制御手段を制御する楕円曲線演算制御手段、
    を備えたことを特徴とする多項式剰余系演算装置。
  3. 予め設定された多項式剰余演算系の基底{f1(x),f2(x),…,fn(x)}及び{g1(x),g2(x),…,gn(x)}の各基底要素fi,gi(i=1,2,…,n)に基づき、GF(2)上の多項式の剰余演算機能を有する複数の演算ユニットを用いた多項式剰余系演算方法であって、
    前記GF(2)上のm次の既約多項式N(x)と、m未満の次数のGF(2)上の多項式a(x),b(x)とを各演算ユニットの記憶装置に入力するための入力工程と、
    前記設定された各基底要素fi,gi及び前記入力された入力内容N(x),a(x),b(x)に基づいて、各基底要素fi,giでの剰余演算を各演算ユニットに並列に実行させ、実行結果を各演算ユニットの記憶装置に格納させる剰余演算制御工程と、
    前記各演算ユニットにG(x)=g1(x)g2(x)…gn(x)で定義されたG(x)を用いてモンゴメリ乗算a(x)b(x)G(x)-1 mod N(x)を計算させるように、前記剰余演算制御工程を制御するモンゴメリ乗算制御工程と、
    を備えたことを特徴とする多項式剰余系演算方法。
  4. 請求項3に記載の多項式剰余系演算方法において、
    前記モンゴメリ乗算を用いた所定のアルゴリズムに従ってGF(2m)上定義された楕円曲線上の点のスカラー倍演算を各演算ユニットに実行させるように、各演算ユニット及び前記モンゴメリ乗算制御工程を制御する楕円曲線演算制御工程、
    を備えたことを特徴とする多項式剰余系演算方法。
  5. 予め設定された多項式剰余演算系の基底{f1(x),f2(x),…,fn(x)}及び{g1(x),g2(x),…,gn(x)}の各基底要素fi,gi(i=1,2,…,n)に基づき、GF(2)上の多項式の剰余演算機能を有する複数の演算ユニット及び各演算ユニットを制御するための制御装置を備えた多項式剰余系演算装置に関し、前記制御装置に用いられるプログラムであって、
    前記制御装置のコンピュータを、
    前記GF(2)上のm次の既約多項式N(x)と、m未満の次数のGF(2)上の多項式a(x),b(x)とを各演算ユニットの記憶装置に入力するための入力手段、
    前記設定された各基底要素fi,gi及び前記入力された入力内容N(x),a(x),b(x)に基づいて、各基底要素fi,giでの剰余演算を各演算ユニットに並列に実行させ、実行結果を各演算ユニットの記憶装置に格納させる剰余演算制御手段、
    前記各演算ユニットにG(x)=g1(x)g2(x)…gn(x)で定義されたG(x)を用いてモンゴメリ乗算a(x)b(x)G(x)-1 mod N(x)を計算させるように、前記剰余演算制御手段を制御するモンゴメリ乗算制御手段、
    として機能させるためのプログラム。
  6. 請求項5に記載のプログラムにおいて、
    前記制御装置のコンピュータを、
    前記モンゴメリ乗算を用いた所定のアルゴリズムに従ってGF(2m)上定義された楕円曲線上の点のスカラー倍演算を各演算ユニットに実行させるように、各演算ユニット及び前記モンゴメリ乗算制御手段を制御する楕円曲線演算制御手段、
    として機能させるためのプログラム。
JP2002265867A 2002-09-11 2002-09-11 多項式剰余系演算装置、方法及びプログラム Expired - Lifetime JP4202701B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002265867A JP4202701B2 (ja) 2002-09-11 2002-09-11 多項式剰余系演算装置、方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002265867A JP4202701B2 (ja) 2002-09-11 2002-09-11 多項式剰余系演算装置、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2004102071A JP2004102071A (ja) 2004-04-02
JP4202701B2 true JP4202701B2 (ja) 2008-12-24

Family

ID=32264879

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002265867A Expired - Lifetime JP4202701B2 (ja) 2002-09-11 2002-09-11 多項式剰余系演算装置、方法及びプログラム

Country Status (1)

Country Link
JP (1) JP4202701B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4836608B2 (ja) * 2006-02-27 2011-12-14 株式会社東芝 半導体記憶装置
JP4724200B2 (ja) * 2008-04-17 2011-07-13 株式会社東芝 べき乗計算装置及びプログラム
WO2011036746A1 (ja) * 2009-09-24 2011-03-31 株式会社東芝 演算装置
JP6057725B2 (ja) * 2013-01-15 2017-01-11 三菱電機株式会社 情報処理装置

Also Published As

Publication number Publication date
JP2004102071A (ja) 2004-04-02

Similar Documents

Publication Publication Date Title
US10430162B2 (en) Quantum resource estimates for computing elliptic curve discrete logarithms
Yanık et al. Incomplete reduction in modular arithmetic
US8977668B2 (en) Calculating unit for reducing an input number with respect to a modulus
US20110161390A1 (en) Modular multiplication processing apparatus
US8862651B2 (en) Method and apparatus for modulus reduction
JP2001524698A (ja) マルチプレシジョン整数演算用の装置
Bos et al. Fast Arithmetic Modulo 2^ xp^ y±1
US8417760B2 (en) Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication
JP3532860B2 (ja) 剰余系表現を利用した演算装置及び方法及びプログラム
US6917956B2 (en) Apparatus and method for efficient modular exponentiation
US8364740B2 (en) Device and method for calculating a result of a modular multiplication with a calculating unit smaller than the operands
JP4202701B2 (ja) 多項式剰余系演算装置、方法及びプログラム
US8364737B2 (en) Device and method for calculating a result of a sum with a calculating unit with limited word length
Halbutogullari et al. Parallel multiplication in GF (2 k) using polynomial residue arithmetic
JP4621162B2 (ja) 有限可換群演算方法、装置およびそのプログラム
JP3660075B2 (ja) 除算装置
Arazi et al. On calculating multiplicative inverses modulo $2^{m} $
JP2007526513A (ja) 要素の累乗またはスカラー乗算の方法
JP4724200B2 (ja) べき乗計算装置及びプログラム
JP3136709B2 (ja) べき積演算装置
JP4080754B2 (ja) 剰余演算装置及び方法
JP3390966B2 (ja) 平方数を法とした剰余演算装置及びそのプログラム記録媒体
KR100377185B1 (ko) 암호시스템의 연산속도 개선 방법
Leiva et al. Optimal 2-3 chains for scalar multiplication
JP3515462B2 (ja) 剰余系演算装置及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050901

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: 20081007

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: 20081009

R151 Written notification of patent or utility model registration

Ref document number: 4202701

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20111017

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111017

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121017

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121017

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131017

Year of fee payment: 5

EXPY Cancellation because of completion of term