JP2007212768A - 楕円曲線暗号における事前計算テーブル作成装置 - Google Patents

楕円曲線暗号における事前計算テーブル作成装置 Download PDF

Info

Publication number
JP2007212768A
JP2007212768A JP2006032697A JP2006032697A JP2007212768A JP 2007212768 A JP2007212768 A JP 2007212768A JP 2006032697 A JP2006032697 A JP 2006032697A JP 2006032697 A JP2006032697 A JP 2006032697A JP 2007212768 A JP2007212768 A JP 2007212768A
Authority
JP
Japan
Prior art keywords
calculation
unit
elliptic curve
denominator
scalar
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.)
Withdrawn
Application number
JP2006032697A
Other languages
English (en)
Inventor
Katsuyuki Okeya
勝幸 桶屋
Dahmen Erik
ダーメン エリック
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006032697A priority Critical patent/JP2007212768A/ja
Publication of JP2007212768A publication Critical patent/JP2007212768A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】楕円曲線暗号は、楕円曲線上の離散対数問題を利用しており、鍵長を比較的短くでき、計算能力・メモリ容量などのリソースが比較的少ない環境でも暗号処理を行う事ができるが、さらなる効率化が求められている。すなわち、処理で最も計算リソースを必要とする楕円曲線スカラー倍計算を高速かつ効率的に行う楕円曲線スカラー倍計算方法を提供する。
【解決手段】事前計算テーブルを利用した楕円曲線スカラー倍計算において、事前計算テーブル作成時に、逆元計算の分母を変換することにより、逆元計算回数を削減する。これにより、楕円曲線スカラー倍計算を効率的に実行する。
【選択図】図8

Description

本発明はセキュリティ技術に係り、特に楕円曲線演算を用いてメッセージを処理し、暗号通信や電子情報の認証を行う技術に関する。
情報通信ネットワークの進展に伴い、電子情報の秘匿や認証の為に暗号技術は不可欠な要素となってきている。暗号技術には,共通鍵暗号と公開鍵暗号があり、楕円曲線暗号は、N.Koblitz,V.S.Millerにより提案された公開鍵暗号の1種である。公開鍵暗号には、公開鍵(Public Key)と呼ばれる一般に公開してよい情報と、秘密鍵(Private Key)と呼ばれる秘匿しなければならない秘密情報がある。平文メッセージの暗号化や署名の検証には公開鍵を用い、暗号文メッセージの復号化や署名の生成には秘密鍵を用いる。
楕円曲線暗号の安全性は楕円曲線上の離散対数問題の求解が困難であることに由来している。楕円曲線上の離散対数問題とは、楕円曲線上のある点Pとそのスカラー倍の点mPが与えられた時、スカラー値mを求める問題である。楕円曲線暗号における秘密鍵は、このスカラー値mが担っている。
楕円曲線上の点(または楕円点)とは、楕円曲線の定義式を満たす数の組をいい、楕円曲線上の点全体には、無限遠点という仮想的な点を単位元とした演算、すなわち楕円曲線上の加法(または加算)が定義される。そして、ある点に対し、特定の回数だけ加法を行うことをスカラー倍といい、その結果をスカラー倍点、その回数のことをスカラー値という。
なお、同じ点同士による楕円曲線上の加法のことを、特に、楕円曲線上の2倍算という。また、楕円曲線上の加算、2倍算は、それぞれ、楕円加算、楕円2倍算とも呼ばれる。
楕円曲線上の2点の加法(楕円加算)は次のようにして計算される。2点を通る直線を引くとその直線は楕円曲線と他の点において交わる。その交わった点とx軸に関して対称な点を、加法を行った結果の点とする。例えば、素体上の楕円曲線の場合には、点(x,y)と点(x,y)との加算(x,y)=(x,y)+(x,y)は、
λ=(y−y)/(x−x) (式1)
=λ−x−x (式2)
=λ(x−x)−y (式3)
を計算することにより得られる。
なお、素体上の楕円曲線の定義式は、
=x+ax+b mod p (式4)
で与えられる。ここでa,bは定数、pは対応する有限体(素体)の素数である。すなわち、式4のx、yに、各々x、y(i=1,2,3)を代入した場合、式4の等式が成り立つ。
また、楕円曲線上の点の2倍算(楕円2倍算)は次のようにして計算される。楕円曲線上の点における接線を引くと、その接線は楕円曲線上の他の一点において交わる。その交わった点とx軸に関して対象な点を、2倍算を行った結果の点とする。例えば、素体上の楕円曲線の場合には、点(x,y)の2倍算を行った結果(x,y)=2(x,y)=(x,y)+(x,y)は、
λ=(3x +a)/(2y) (式5)
を計算し、このλを用いて式2、式3で与えられるx,yを計算することにより得られる。
このように、楕円加算、楕円2倍算では、式1、式5のλを計算する際に逆元計算が必要となる。
楕円曲線暗号において、与えられたメッセージの暗号化、復号化、署名の作成またはその検証等の各処理において、最もリソースを必要とする計算は、上述の楕円曲線上のスカラー倍計算(以下、楕円曲線スカラー倍計算と呼ぶ。)である。そのため、楕円曲線暗号を効率的に実行するためには、楕円曲線スカラー倍計算を効率的に行う必要がある。
楕円曲線スカラー倍計算を効率的に行うものとして、スカラー値がさほど大きくない楕円曲線スカラー倍計算を予め行い、その結果を格納した事前計算テーブルを用いるものがある(例えば、非特許文献1参照。)。非特許文献1に開示されている手法によれば、楕円曲線スカラー倍計算を高速化できる。
また、楕円曲線スカラー倍計算は、楕円加算、楕円2倍算を組み合わせて行う。楕円加算、楕円2倍算には、上述のように逆元計算が必要であり、この逆元計算は、処理負担が重いことが知られている。このため、楕円曲線スカラー倍計算を効率的に行うものとして、逆元計算の回数を削減する手法が提案されている(例えば、非特許文献2、非特許文献3参照。)。非特許文献2には、ある逆元の出力結果が別の逆元計算の入力の一部として用いられた場合、逆元計算をまとめて行い、計算回数を削減する手法が提案されている。また、非特許文献3には、事前計算テーブル作成時の逆元計算をまとめて行い、計算回数を削減する手法が提案されている。
Okeya, K., Schmidt−Samoa, K., Spahn, C., Takagi, T., "Signed Binary Representations Revisited," Advances in Cryptology − CRYPTO 2004, LNCS 3152, (2004), pp.123−139. Ciet, M., Joye, M., Lauter, K., Montgomery, P.L., "Trading Inversions for Multiplications in Elliptic Curve Cryptography," Cryptology ePrint Archive, Report 2003/257, (2003).[平成18年2月2日検索]インターネット<URL:http://eprint.iacr.org/2003/257.pdf> Cohen, H., Miyaji, A., Ono, T., "Efficient Elliptic Curve Exponentiation Using Mixed Coordinates," Advances in Cryptology − ASIACRYPT ’98, LNCS1514, (1998), pp.51−65.
暗号技術に課せられる要件には、安全性、処理速度、少ないメモリ使用量などがある。しかし、一般的に安全性、処理速度、メモリ使用量の間にはトレードオフの関係があり、全ての要件を満たすことは難しい。
楕円曲線暗号は、楕円曲線上の離散対数問題が非常に困難であることを利用している。このため、素因数分解の困難性を安全性の根拠にしている公開鍵暗号に比べて、楕円曲線暗号は公開鍵、秘密鍵の鍵長を比較的短くすることができ、計算能力、メモリ容量などのリソースが比較的少ない環境であっても暗号処理を行うことが可能である。しかし、昨今用いられているスマートカード(ICカードともいう)等においては、利用可能なリソースが極めて限られているため、暗号処理の更なる効率化、すなわち、処理速度を犠牲にせずにメモリ使用量や計算負担を改善することが求められている。
非特許文献1に開示されている技術は、楕円曲線スカラー倍計算を行う際、事前計算テーブルを用いることにより処理速度を改善しているが、事前計算テーブルの作成時には、依然、処理負担の大きい逆元計算が必要である。
非特許文献2および非特許文献3には、楕円曲線スカラー倍計算を行う際の逆元計算の回数を削減する手法が開示されている。しかし、非特許文献2に開示されている技術は、事前計算テーブル作成への適用については考察されていない。また、非特許文献3に開示されている技術は、各々の逆元計算への入力が独立に与えられた場合にのみ逆元計算の回数を削減することができる。このため、特殊な方法で事前計算テーブルを生成する場合にのみ適用が可能という制約があり、ある逆元計算の出力結果を別の逆元計算の入力の一部として用いるといった一般的な方法での事前計算テーブルを生成する場合には適用できない。
本発明は、上記事情に鑑みてなされたもので、楕円曲線暗号を用いてメッセージ等のデータを暗号化、復号化するにあたり、楕円曲線スカラー倍計算を効率的に実行することが可能な技術、特に、高速かつ低負担の楕円曲線スカラー倍計算を実現する技術を提供する。
本発明は、事前計算テーブルを利用した楕円曲線スカラー倍計算において、事前計算テーブル作成時の逆元計算回数を削減する。
具体的には、楕円曲線演算を用いてデータを変換する変換装置において、スカラー値および楕円曲線上のベースとなる点(ベース点)とからスカラー倍を計算するスカラー倍計算のために、入力された前記ベース点から所定数のスカラー倍計算を行って楕円点として保持する事前計算テーブルを作成する楕円曲線暗号における事前計算テーブル作成装置であって、前記ベース点から前記楕円点を計算する際に必要となる逆元計算の分母を変換し、変換分母として出力する分母変換手段と、前記変換分母を集約して逆元計算を行った後に展開して同時逆元計算結果として出力する同時逆元計算手段と、前記同時逆元計算結果を、前記楕円曲線上の前記ベース点から前記スカラー倍を計算する際に必要な逆元計算結果に復元し復元分母として出力する分母復元手段と、前記復元分母を用いて前記楕円点を計算して出力する楕円点計算手段と、前記計算した楕円点を前記事前計算テーブルに格納する事前計算テーブル生成手段と、を備えることを特徴とする事前計算テーブル作成装置提供する。
本発明によれば、楕円曲線暗号を用いてメッセージなどのデータを暗号化、復号化するにあたり、楕円曲線スカラー倍計算を効率的に実行することができる。従って、高速かつ低負担の楕円曲線暗号処理を用いたシステムを実現することができる。
<<第一の実施形態>>
以下、本発明を適用した実施形態を図面を用いて説明する。本実施形態は、本発明を暗号通信システムに適用したものである。そして、楕円曲線として素体上の楕円曲線を用いる。
図1は、本発明を適用した本実施形態の暗号通信システムのシステム構成図である。本図に示すように、本実施形態の暗号通信システムは、本実施形態の楕円曲線暗号技術をそれぞれ適用したコンピュータA101およびコンピュータB121がネットワーク142により接続されている。コンピュータA101は、入力されたメッセージの暗号化を行い、暗号化されたメッセージ(暗号文)をデータ141として出力する。コンピュータB121は、入力された暗号文141の復号を行う。コンピュータB121からは、例えば、公開鍵、暗号化データの送信要求などがデータ143として出力される。
本実施形態の暗号通信システムにおけるメッセージの暗号化および復号の概略を説明する。
コンピュータA101では、メッセージMの暗号化を、C=P+r(uQ)及びC=rQを計算することにより行う。また、コンピュータB121では、暗号文(C、C)の復号を、秘密鍵uを用いて−uCを計算し、
−uC=(P+r(uQ))−u(rQ)=P (式6)
を計算することにより行う。ここでPはメッセージMに対応する楕円点、rは乱数、uは秘密鍵を示す定数、Qは楕円曲線上の定点、uQは公開鍵を示す点である。
本実施形態の暗号通信システムでは、ネットワーク142上には、暗号文(C、C)のみ送信される。暗号文(C、C)からメッセージMを復元するためには、上述のようにPを計算する。Pを計算するためには、ruQ、すなわち、Cのu倍を計算する必要がある。ところが、秘密鍵uはネットワーク142には送信されないため、秘密鍵uを保持している者だけが、Pを計算でき、すなわち、メッセージMを復元することができる。
次に、本実施形態の暗号通信システムを構成するコンピュータA101およびB121それぞれの構成を説明する。
コンピュータA101は、CPU113、コプロセッサ114などの演算装置、RAM103、ROM106、外部記憶装置107などの記憶装置、コンピュータA101の外部とのデータ入出力を行なう入出力インタフェース110を装備し、外部にはコンピュータA101をユーザが操作するためのディスプレイ108、キーボード109、着脱可能な可搬型記憶媒体の読み書き装置などが接続される。
コンピュータA101は、RAM103、ROM106や外部記憶装置107などの記憶装置によって、記憶部102を実現し、CPU113やコプロセッサ114などの演算装置が、記憶部102に格納されたプログラムを実行することにより、データ処理部112、スカラー倍計算部115およびそれらに含まれる各処理部を実現する。なお、コプロセッサ114は特殊用途用の計算装置であり、スカラー倍計算などの算術演算を行う。
データ処理部112は、本実施形態では暗号化処理部として機能し、入力されたメッセージMの暗号化を行なう。スカラー倍計算部115は、データ処理部(暗号化処理部)112で暗号化を行なうのに必要なパラメタを計算する。
記憶部102は、RAM103に、定数104、秘密情報105(例えば、秘密鍵である)などを記憶する。RAM103が記憶する定数104には、例えば、楕円曲線の定義式、対応する有限体における標数や既約多項式などの定数や、楕円曲線上の定点などがある。また、楕円曲線パラメタと呼ばれる、楕円曲線を定める定数a、b、対応する有限体の素数pなどもRAM103に記憶される。さらに、RAM103にはデータ処理部112の行う計算の中間値、変数などが格納される。もちろん、これらの定数等は、ROM106に記憶するよう構成してもよい。
コンピュータB121は、コンピュータA101と同様のハードウェア構成を備える。すなわち、CPU133、コプロセッサ134などの演算装置、RAM123、ROM126、外部記憶装置127などの記憶装置、コンピュータB121の外部とのデータ入出力を行なう入出力インタフェース130を装備し、外部にはコンピュータB121をユーザが操作するためのディスプレイ128、キーボード129、着脱可能な可搬型記憶媒体の読み書き装置などが接続される。
コンピュータB121は、RAM123、ROM126や外部記憶装置127などの記憶装置によって、記憶部122を実現し、CPU133やコプロセッサ134などの演算装置が、記憶部122に格納されたプログラムを実行することにより、データ処理部132、スカラー倍計算部135とそれらに含まれる各処理部を実現する。なお、コプロセッサ134は特殊用途用の計算装置であり、スカラー倍計算などの算術演算を行う。
データ処理部132は、本実施形態では復号化処理部として機能し、暗号化されたメッセージである暗号文141の復号化を行なう。スカラー倍計算部135は、データ処理部(復号化処理部)132で復号を行なうのに必要なパラメタを計算する。
記憶部122は、RAM123に、定数124(例えば、楕円曲線の定義式、対応する有限体における標数や既約多項式などの定数や、楕円曲線上の定点である)、秘密情報125(例えば、秘密鍵である)などを記憶する。また、RAM123にはデータ処理部132の行う計算の中間データ、変数などが格納される。
なお、上記プログラムは、予め、上記コンピュータA101、B121内の記憶部102、122に格納されていてもよいし、必要なときに、入出力インタフェース110、130と上記コンピュータA101、B121が利用可能な媒体を介して、他の装置から上記記憶媒部102、122に導入されてもよい、媒体とは、例えば、入出力インタフェース110、130に着脱可能な記憶媒体、または通信媒体(すなわちネットワークまたはネットワークを伝搬する搬送波)を指す。
次に、図1の暗号通信システムにおいて、コンピュータA101が入力されたメッセージを暗号化する場合の動作およびコンピュータB121が入力された暗号文を復号する場合の動作について説明する。図2は、メッセージMが入力された際のコンピュータA101および暗号文が入力された際のコンピュータB121それぞれの各処理部間の情報の受け渡しの様子を示すシーケンス図である。なお、メッセージはディジタル化されたデータであればよく、テキスト、画像、映像、音などの種類は問わない。
まず、コンピュータA101が入力されたメッセージを暗号化する場合の動作について説明する。
データ処理部(暗号化処理部)112は、入出力インタフェース110を介して、平文のメッセージMを入力メッセージとして受け取ると(201)、入力されたメッセージMのビット長が予め定めたビット長か否かを判断する。予め定めたビット長よりも長い場合には、予め定めたビット長となるようにメッセージMを区切る。以下、所定のビット長に区切られている部分メッセージ(以下、単にメッセージともいう)に対する暗号化処理時の動作を説明する。
データ処理部(暗号化処理部)112は、メッセージのビット列によって表される数値をx座標(x)に持つ楕円点Pのy座標(y)の値を計算する。
素体上の楕円曲線の場合、a,bを定数とすると、
=x +ax+b (式7)
で表される。上記式を用いてy座標の値を求めることができる。
次に、データ処理部(暗号化処理部)112は、乱数rを生成する。また、データ処理部(暗号化処理部)112は、記憶部102に格納されている定数104から秘密鍵u、公開鍵uQ、楕円曲線パラメタ、楕円曲線上の定点Qであるベース点を読み出す(202)。
データ処理部(暗号化処理部)112は、乱数rを生成してスカラー値とし、また、利用可能なメモリ容量に応じてウィンドウ幅wを設定する。そして、ベース点Q、スカラー値r、ウィンドウ幅wを、スカラー倍計算部115へ送る(203)。
スカラー倍計算部115は、スカラー値r(乱数r)による定点Qのスカラー倍点rQ(=(xrQ,yrQ))と、公開鍵uQのスカラー値r(乱数r)によるスカラー倍点r(uQ)とを、ウィンドウ幅wに応じた事前計算テーブルを利用して計算し、計算されたスカラー倍点rQおよびr(uQ)をデータ処理部(暗号化処理部)112へ送る(204)。
データ処理部(暗号化処理部)112は、送られたスカラー倍点rQおよびr(uQ)を用いて、暗号化処理を行なう。ここでは、C=P+r(uQ)およびC=rQを計算する。この計算は、例えば式1、式2、式3に示す楕円曲線の加算公式を利用することにより計算できる。そして、暗号化されたメッセージC、Cを得る。得られた各部分メッセージの暗号化されたメッセージC、Cは一時的に記憶部102に格納される。
メッセージMの全ての部分メッセージについての暗号化が終了すると、コンピュータA101の処理部111は暗号化された1つ以上の部分メッセージから暗号化された出力メッセージを組み立てる。そして、処理部111は、組み立てた出力メッセージをデータ141として入出力インタフェース110より出力し(205)、ネットワーク142を介してコンピュータB121へ転送する。
なお、記憶部102からの情報読出し(上記202)は、データ処理部(暗号化処理部)112がスカラー倍計算部115へ当該当情報を送る前であれば、入力メッセージを受付ける(上記201)前であってもよい。
次に、コンピュータB121が、暗号化されたメッセージ(暗号文)であるデータ141を復号する場合の動作について、同じく図2を参照しつつ説明する。
データ処理部(復号化処理部)132は、入出力インタフェース110を介して、暗号化されたメッセージ(データ141)を入力メッセージとして受け取ると(201)、データ141のビット長が予め定めたビット長か否かを判断する。予め定めたビット長よりも長い場合は、予め定めたビット長となるようにデータ141を区切る。以下、所定のビット長に区切られている部分データ(単にデータともいう)に対する復号処理時の動作を説明する。
データ処理部(復号化処理部)132は、データ141のビット列によって表される数値に対応する楕円点C、Cを計算する。
データ処理部(復号化処理部)132は、記憶部122に格納されている秘密情報125から秘密鍵uを読み出す(202)。そして、点Cをベース点として、ベース点Cと秘密鍵uと設定したウィンドウ幅wとをスカラー倍計算部135へ送る(203)。
スカラー倍計算部135は、ベース点C、秘密鍵uとからスカラー倍点uCを計算する。スカラー倍計算部135は、計算されたスカラー倍点uCをデータ処理部(復号化処理部)132へ送る(204)。
データ処理部(復号化処理部)132は、送られたスカラー倍点uCを用いて、復号化処理を行う。ここでは、C−uCを計算する。本実施形態では、楕円曲線として素体上の楕円曲線を用いる。従って、この計算は、式1、式2、式3に示す楕円曲線の加算公式を利用して行う。計算結果の点のx座標(x)は、暗号化される前の部分メッセージに相当する。得られた各部分データの復号結果(部分メッセージ)は一時的に記憶部122に格納される。
データ141の全ての部分データについての復号が終了すると、コンピュータB121の処理部131は、復号された1つ以上の部分メッセージから平文メッセージを組み立てる。そして、処理部131は、組み立てた平文メッセージ(出力メッセージ)を、入出力インタフェース130を介してディスプレイ108などから出力する(205)。
次に、コンピュータA101が、暗号化処理を行う場合の、スカラー倍計算部115の処理を詳細に説明する。なお、コンピュータB121がメッセージを復号する場合のスカラー倍計算部135における処理も基本的に同様である。以下においては、スカラー倍計算部115が、スカラー値m及び楕円点Pから、ウィンドウ幅wに応じた事前計算テーブルを用いて楕円曲線におけるスカラー倍点mPを計算するものとする。スカラー値mはnビットとする。
まず、スカラー倍計算部115の機能構成について説明する。図3は、本実施形態のスカラー倍計算部115の機能ブロック図である。本図に示すように、本実施形態のスカラー倍計算部115は、エンコード部301と、前計算部302と、実計算部303と、スカラー倍計算部115の全体を制御する制御部304と、を備える。また、実計算部303は、エンコード値判定部331と、楕円加算部332と、楕円2倍算部333と、繰り返し判定部334とを備える。
以下、各機能部(モジュール)の処理、モジュール間のデータの流れについて説明する。図4は、スカラー倍計算部115の各モジュールの処理および各モジュール間のデータの流れを示すシーケンス図である。
制御部304は、スカラー倍計算部115へ入力されたスカラー値m、ベース点P、ウィンドウ幅wを受け取る(401)。制御部304は、ベース点Pおよびウィンドウ幅wを前計算部302へ送る(402)。
前計算部302は、ベース点Pおよびウィンドウ幅wから事前計算テーブルを作成する。事前計算テーブルには、楕円点P、3P、5P、...、(2k−1)Pが格納される。ここでkは事前計算テーブルに格納する要素数(格納要素数)を示す値であり、ウィンドウ幅wに対して2k−1<=2w−1を満たす最大の整数kとして定まる。なお、計算時間を優先する場合はwを大きな値とし、格納要素数kを大きな値とすればよい。メモリ使用量を小さくする場合は、wを小さな値とし、格納要素数kを小さな値とすればよい。前計算部302は、作成した事前計算テーブルをスカラー倍計算部115に送る(403)。
制御部304は、スカラー値mおよびウィンドウ幅wをエンコード部に送る(404)。
エンコード部301は、スカラー値mおよびウィンドウ幅wを用いて、スカラー値mを数値列mにエンコードするエンコード処理を行う。すなわち、
m=m+mn−1n−1+...+m+...+m (式8)
−2w−1<=m<=2w−1、 m=0 or 奇数 (式9)
を満たすmに、スカラー値mを変換する。そして、エンコード部301は、エンコード列mを実計算部303へ送る(405)。
制御部304は、前計算部302の作成した事前計算テーブルを実計算部に送る(406)。
実計算部303は、エンコード列m、事前計算テーブルを用いてスカラー倍点mPを計算する。実計算部303は、スカラー倍計算結果を制御部304へ送る(407)。制御部304は、スカラー倍計算結果をスカラー倍計算部115からの出力として出力する(408)。
なお、上記のシーケンスでは、格納要素数kを、2k−1<=2w−1を満たす最大の整数kとして定めたが、最大としなくともよい。ただし、その場合は、エンコード処理で出力されるエンコード列の非零の各数値mに対応する楕円点mPが、事前計算テーブルに存在する必要がある。また、エンコード処理で出力されるエンコード列の非零の各数値mに対応する楕円点mPが、事前計算テーブルに存在していれば、式9の条件は他の条件に置き換えてもよい。例えば、mを偶数としてもよいし、格納要素数kに対してm<=2k−1としてもよい。
なお、エンコード部301の行うエンコード処理は、例えば、非特許文献1に記載の手法などを用いて実現できる。また、前計算部302の行う事前計算テーブルの作成処理は、実計算部303の行うスカラー倍計算処理の前であれば、エンコード部301の行うエンコード処理の後であってもよい。さらに、各モジュール間のデータの受け渡しは、上述のようにデータを直接転送する以外に、記憶部102にデータを書き込み、転送先モジュールが記憶部122にアクセスし、データを読み出すよう構成してもよい。 次に、スカラー倍計算部115によるスカラー倍計算処理について説明する。図5は、スカラー倍計算部115におけるスカラー倍計算処理の処理フローである。
スカラー倍計算部115の制御部304は、ベース点P、nビットスカラー値m、前計算部302の作成した事前計算テーブルを入力として受け取る(ステップ501)。
エンコード部301は、式8、式9によりエンコード列m、...、mを計算する(ステップ502)。
実計算部303は、中間値Tに無限遠点Oを、変数jにnを代入し、ステップ511へ行く(ステップ503)。
繰り返し判定部334は、変数jについて条件:j>=0が成立するか否かを判定する。条件が成立する場合、ステップ512へ行く。条件が成立しない場合、ステップ521へ行く(ステップ511)。
ステップ511で条件が成立した場合、楕円2倍算部333は、中間値Tに対して楕円2倍算を行い、その結果を中間値Tに格納する(ステップ512)。
エンコード値判定部331は、エンコード値mについて条件:m=0が成立するか否かを判定する。条件が成立する場合、ステップ515へ行く。条件が成立しない場合、ステップ514へ行く(ステップ513)。
ステップ513で条件が成立しなかった場合、楕円加算部332は、中間値Tと、事前計算テーブルに格納されている事前計算点mPとの楕円加算を行い、その結果を中間値Tに格納し(ステップ514)、ステップ515へ行く。
繰り返し判定部334は、変数jにj−1を代入し、ステップ511へと戻る(ステップ515)。
ステップ511で条件が成立しなかった場合、すなわち、jが0より小さい場合は、実計算部303は、中間値Tをスカラー倍計算結果mPとして出力する(ステップ521)。
次に、本実施形態における、上記スカラー倍計算処理内の前計算部302による事前計算テーブル作成処理について説明する。前計算部302は、制御部304から受け取った、ベース点P、ウィンドウ幅wから、事前計算テーブルを作成する。
まず、本実施形態の前計算部30の機能について説明する。図6は、本実施形態の前計算部302を構成する各モジュールを示す機能ブロック図である。
本図に示すように、本実施形態の前計算部302は、分母変換部610と、同時逆元計算部620と、分母復元部630と、楕円点計算部640と、全体を制御する前計算制御部660とを備える。分母変換部610は、加算部611と、減算部612と、乗算部613と、繰り返し判定部614とを備える。同時逆元計算部620は、乗算部621と、逆元計算部622と、繰り返し判定部623とを備える。分母復元部630は、乗算部631と、繰り返し判定部632とを備える。楕円点計算部640は、加算部641と、減算部642と、乗算部643と、繰り返し判定部644とを備える。
以下、これらの各モジュールにより、本実施形態の前計算部302が実現する事前計算テーブル生成処理の詳細を説明する。図7は、前計算部302の各モジュールの処理および各モジュール間のデータの流れを示すシーケンス図である。各モジュールが行う処理の詳細については後述する。
前計算制御部660は、前計算部302へ入力されたベース点P、ウィンドウ幅wを受け取る(701)。前計算制御部650は、ベース点Pおよびウィンドウ幅wから算出した格納要素数kを、分母変換部610へ送る(702)。
分母変換部610は、分母変換処理を行い、ベース点Pおよび格納要素数kから変換分母dを計算する(801)。分母変換部610は、得られた変換分母dを同時逆元計算部620へ送る(703)。
同時逆元計算部620は、同時逆元計算処理を行い、変換分母dから逆元計算結果fを計算する(802)。同時逆元計算部620は、得られた逆元計算結果fを分母復元部630へ送る(705)。
分母復元部630は、分母復元処理を行い、逆元計算結果fから復元分母Lを計算する(803)。分母復元部630は、得られた復元分母Lを楕円点計算部640へ送る(707)。
前計算制御部660は、ベース点Pを楕円点計算部640へ送る(708)。
楕円点計算部640は、楕円点計算処理を行い、楕円点3P、5P、...、(2k−1)Pを計算する(804)。なお、ここで計算した楕円点を事前計算楕円点と呼ぶ。そして、楕円点計算部640は、得られた事前計算楕円点3P、5P、...、(2k−1)Pを前計算部302へ送る(709)。
前計算制御部660は、得られた事前計算楕円点を格納した事前計算テーブルを生成し、出力する(710)。
なお、各モジュール間のデータの受け渡しは、データを直接転送する以外にも、記憶部102にデータを書き込み、転送先モジュールが記憶部102にアクセスし、データを読み出すよう構成してもよい。
また、各モジュールは必要に応じて楕円曲線パラメタを用いる。これらのデータは、予め記憶部102に書き込んでおき、各モジュールが記憶部102にアクセスし、データを読み出すよう構成してもよい。
楕円点計算部640の受け取る復元分母L、ベース点Pは、楕円点計算部640が楕円点計算処理を行う前であれば、受け取る順番は問わない。例えば、前計算制御部660がベース点Pを楕円点計算部640に送った後で、分母変換部610、同時逆元計算部620、分母復元部630が各々の処理を行い、分母復元部630が復元分母Lを楕円点計算部640に送るよう構成してもよい。
また、各モジュールは、各々の処理の過程で算出した演算結果を再利用データとして出力してもよい。処理過程で同じ演算を必要とする他のモジュールがその再利用データを入力として受け取り利用することにより、演算を削減ることができ、当該モジュール処理を効率化することができる。
図8は、上記シーケンスにおいて事前計算テーブル生成処理時の各モジュールが行う処理の流れを示す処理フローである。
分母変換部610が分母変換処理を行い、前述のλの分母である2yのねじれを取る(ステップ801)。
次に、同時逆元計算部620が、モンゴメリトリックの手法を利用して同時逆元計算処理を行い、逆元を計算する(ステップ802)。
その後、分母復元部630が、分母復元処理を行い、分母を元の表現に復帰させる(ステップ803)。
最後に楕円点計算部640が、楕円点計算処理を行う(ステップ804)。
次に、上記前計算部620の各処理の詳細を説明する。
まず、分母変換部610が前計算制御部660からデータの入力を受け取り処理を開始する分母変換処理について説明する。図9は、本実施形態の分母変換処理の処理フローである。
分母変換部610は、ベース点P=(x,y)、格納要素数k,楕円曲線パラメタa,pを入力として受け取る(ステップ901)。
加算部611は、ベース点Pのy座標yを用いて2y mod pを計算し、その結果を変数dに格納する(ステップ902)。
加算部611、減算部612、乗算部613は、変数d、ベース点Pのx座標x、楕円曲線パラメタaを用いて、以下の処理を行う(ステップ903)。
・d mod pを計算し、その結果を変数Cに格納する。
・3x +a mod pを計算し、その結果を変数Aに格納する。
・C・3x mod pを計算し、その結果を変数Bに格納する。
・A−B mod pを計算し、その結果を変換分母dに格納する。
次に、加算部611、減算部612、乗算部613は、変数d、変数A、変数B、変数Cを用いて、以下の処理を行う(ステップ904)。
・d mod pを計算し、その結果を変数Eに格納する。
・E・B mod pを計算し、その結果を変数Cに格納する。
・C mod pを計算し、その結果を変数Cに格納する。
・E・d mod pを計算し、その結果を変数Dに格納する。
・−d・A−C mod pを計算し、その結果を変数Aに格納する。
・A−2D−B mod pを計算し、その結果を変数dに格納する。
次に、加算部611、減算部612、乗算部613は、変数d、変数A、変数B、変数C、変数Dを用いて、以下の処理を行う(ステップ905)。
・d mod pを計算し、その結果を変数Eに格納する。
・E(B+3D) mod pを計算し、その結果を変数Bに格納する。
・D(2A+C) mod pを計算し、その結果を変数Cに格納する。
・E・d mod pを計算し、その結果を変数Dに格納する。
・−d・A−C mod pを計算し、その結果を変数Aに格納する。
・A−D−B mod pを計算し、その結果を変数dに格納する。
次に、繰り返し判定部614は、変数iに初期値5を代入し、ステップ911へ行く(ステップ906)。
次に、加算部611、減算部612、乗算部613は、変数di−1、変数A、変数B、変数C、変数Dを用いて、以下の処理を行う(ステップ911)。
・di−1 mod pを計算し、その結果を変数Eに格納する。
・E・B mod pを計算し、その結果を変数Bに格納する。
・D・C mod pを計算し、その結果を変数Cに格納する。
・E・di−1 mod pを計算し、その結果を変数Dに格納する。
・−di−1・A−C mod pを計算し、その結果を変数Aに格納する。
・A−D−B mod pを計算し、その結果を変数dに格納する。
次に、繰り返し判定部614は、変数iにi+1を代入する(ステップ912)。
繰り返し判定部614は、変数iについて条件:i<=kが成立するか否かを判定する。条件が成立する場合、ステップ911へ戻る。条件が成立しない場合、ステップ921へ行く(ステップ913)。
ステップ912で条件が成立しなかった場合、分母変換部610は、変数d,...,dを変換分母として出力し(ステップ921)、処理を終了する。
なお、上記分母変換処理において、格納要素数kが4以下の値である場合は、格納要素数kの値(k=1、2、3、4)に応じて、それぞれ、ステップ902、ステップ903、ステップ904、ステップ905で処理を打ち切り、ステップ921へ行き、値を出力するよう構成してもよい。本構成により、それ以降の処理を省くことができ、さらに高速化できる。
次に、同時逆元計算部620が分母変換部610からデータの入力を受け取り処理を開始する同時逆元計算処理について説明する。本実施形態では、同時逆元計算部620が、同時逆元計算処理の処理過程で算出したデータe,...,eを、再利用データとして出力する場合を例にとり説明する。図10は、本実施形態の同時逆元処理の処理フローである。
同時逆元計算部620は、変換分母d,...,dを入力として受け取る(ステップ1001)。
同時逆元計算部620は、変数eに変換分母dを代入する(ステップ1002)。
繰り返し判定部623は、変数iに初期値2を代入し、ステップ1011へ行く(ステップ1003)。
乗算部621は、変換分母d、変数ei−1を用いて、ei−1・d mod pを計算し、その結果を変数eに格納する(ステップ1011)。
繰り返し判定部623は、変数iにi+1を代入する(ステップ1012)。
繰り返し判定部623は、変数iについて条件:i<=kが成立するか否かを判定する。条件が成立する場合、ステップ1011へ行く。条件が成立しない場合、ステップ1021へ行く(ステップ1013)。
ステップ1013で条件が成立しなかった場合、逆元計算部622は、変数eの逆元e −1 mod pを計算し、その結果を変数Tに格納する(ステップ1021)。
繰り返し判定部623は、変数iにkを代入し、ステップ1031へ行く(ステップ1022)。
乗算部621は、変換分母d、変数Tを用いて、以下の処理を行う(ステップ1031)。
・変数Tにdを代入する。
・ei−1・T mod pを計算し、その結果を変数fに格納する。
・T・T mod pを計算し、その結果を変数Tに格納する。
次に、繰り返し判定部623は、変数iにi−1を代入する(ステップ1032)。
繰り返し判定部623は、変数iについて条件:i>=2が成立するか否かを判定する。条件が成立する場合、ステップ1032へ行く。条件が成立しない場合、ステップ1041へ行く(ステップ1033)。
ステップ1033で条件が成立しなかった場合、同時逆元計算部620は、変数fに変数Tを代入する(ステップ1041)。
同時逆元計算部620は、変数f,...,fを逆元計算結果として、出力する。また、本実施形態では、同時逆元計算部620は、ステップ1002、1011で算出した変数e,...,eを再利用データとして出力する(ステップ1042)。以上で同時逆元処理を終了する。
次に、分母復元部630が同時逆元計算部620からデータの入力を受け取り処理を開始する分母復元処理について説明する。図11は、本実施形態の分母復元処理の処理フローである。ここでは、分母復元部630が同時逆元計算部620から逆元計算結果f,...,fとともに変数e,...,eを再利用データとして受け取る場合を例に挙げて説明する。
分母復元部630は、再利用データe,...,eと逆元計算結果f,...,fとを入力として受け取る(ステップ1101)。
分母復元部630は、変数Lに逆元計算結果fを代入する(ステップ1102)。
繰り返し判定部632は、変数iに初期値2を代入し、ステップ1111へ行く。
乗算部631は、再利用データei−1、逆元計算結果fを用いて、ei−1 ・f mod pを計算し、その結果を変数Lに格納する(ステップ1111)。
繰り返し判定部632は、変数iにi+1を代入する(ステップ1112)。
繰り返し判定部632は、変数iについて条件:i<=kが成立するか否かを判定する。条件が成立する場合、ステップ1111へ行く。条件が成立しない場合、ステップ1121へ行く(ステップ1113)。
ステップ1112で条件が成立しなかった場合、分母復元部630は、変数L,...,Lを復元分母として出力し(ステップ1121)、処理を終了する。
次に、楕円点計算部640が分母復元部630および前計算制御部660からデータの入力を受け取り処理を開始する楕円点計算処理について説明する。図12は、本実施形態の楕円点計算処理の処理フローである。
楕円点計算部640は、ベース点P=(x,y)、復元分母L,...,L、楕円曲線パラメタaを入力として受け取る(ステップ1201)。
加算部641、減算部642、乗算部643は、ベース点P=(x,y)、復元分母L、楕円曲線パラメタaを用いて、以下の処理を行う(ステップ1202)。
・(3x +a)L mod pを計算し、その結果を変数Tに格納する。
・T−2x mod pを計算し、その結果を変数xに格納する。
・T(x−x)−y mod pを計算し、その結果を変数yに格納する。
次に、加算部641、減算部642、乗算部643は、ベース点P=(x,y)、復元分母L、変数x、変数yを用いて、以下の処理を行う(ステップ1203)。
・(y−y)L mod pを計算し、その結果を変数Tに格納する。
・T−x−x mod pを計算し、その結果を変数xに格納する。
・T(x−x)−y mod pを計算し、その結果を変数yに格納する。
次に、繰り返し判定部644は、変数iに初期値3を代入し、ステップ1211へ行く(1204)。
次に、加算部641、減算部642、乗算部643は、変数x、変数y、変数x、変数y、復元分母Lを用いて、以下の処理を行う(ステップ1211)。
・(y−y)L mod pを計算し、その結果を変数Tに格納する。
・T−x−x mod pを計算し、その結果を変数xi+1に格納する。
・T(x−xi+1)−y mod pを計算し、その結果をyi+1に格納する。
次に、繰り返し判定部644は、変数iにi+1を代入する(ステップ1212)。
繰り返し判定部644は、変数iについて条件:i<=kが成立するか否かを判定する。条件が成立する場合、ステップ1211へ行く。条件が成立しない場合、ステップ1221へ行く(ステップ1213)。
ステップ1213で条件が成立しなかった場合、楕円点計算部640は、変数x,...,xk+1、変数y,...,yk+1を事前計算楕円点3P=(x,y)、5P=(x,y)、...、(2k−1)P=(xk+1,yk+1)として出力し(ステップ1221)、処理を終了する。
以上、本実施形態の事前計算テーブル作成処理を説明した。本実施形態の事前計算テーブル作成処理によれば、ベース点Pから楕円点2Pを計算し、その後3P(=P+2P)、5P(=3P+2P)、7P(=5P+2P)、...、(2k−1)P(=(2k−3)P+2P)を計算する。楕円点2P、3P、5P、7P、...、(2k−1)Pに対するλの分母を、それぞれ、δ、δ、...、δとすると、以下の数式が成立する。
=2y=δ mod p (式10)
=(d...di−1δ mod p (式11)
=d...d mod p (式12)
=1/d mod p (式13)
=(d...di−1=ei−1 mod p (式14)
=1/δ mod p (式15)
また、上記楕円点計算処理(図12)のステップ1202、ステップ1203、ステップ1211は、それぞれ、楕円2倍算、楕円加算、楕円加算をLを用いて計算したものである。従って、本実施形態の事前計算テーブル作成処理により算出され出力される値は、事前計算楕円点といえる。
また、本実施形態の事前計算テーブル作成処理では、逆元計算は同時逆元処理(図10)のステップ1021でのみ行われる。しかも、上述のように、ステップ1021を実行する回数は1回である。従って、本実施形態の事前計算テーブル作成処理全体における逆元計算回数は1回である。
以上説明した通り、本実施形態によれば、楕円曲線が素体上の楕円曲線である楕円曲線暗号を用いた暗号通信システムにおいて、楕円曲線演算のスカラー倍計算を高速に行うための事前計算テーブルを作成する際に、逆元計算回数を一回に削減することができる。従って、処理速度を犠牲にせず、処理負担、メモリ使用量の少ない楕円曲線演算を実現することができ、これらの特徴を備えた暗号通信システムを実現することができる。
<<第二の実施形態>>
次に、本発明を適用した第二の実施形態を図面を用いて説明する。本実施形態は、楕円曲線としてバイナリ曲線を用いる。
本実施形態の暗号通信システムのシステム構成、各処理部間の情報の受け渡し等は、基本的に第一の実施形態と同様である。以下、本実施形態について、第一の実施形態同様、コンピュータA101が暗号化処理を行う場合の、スカラー倍計算部115の処理を例にあげ、第一の実施形態と異なる構成についてのみ説明する。
本実施形態の第一の実施形態と異なる構成は、事前計算テーブルを作成する前計算部302の各モジュールによる分母変換処理、同時逆元処理、分母復元処理、楕円点計算処理である。
なお、本実施形態では、上述のように楕円曲線としてバイナリ曲線を用いる。事前計算テーブルを作成するにあたり、基本的には、第一の実施形態の前計算部302の機能ブロックをそのまま適用可能である。ただし、バイナリ曲線に対応するバイナリ体では、加算は排他的論理和であり、そのため減算も排他的論理和となり、加算とその処理は一致する。したがって加算部(611、641)と減算部(612、642)とを共通化、ないしは加算部(611、641)または減算部(612、642)のいずれか一方のみを実装してもよい。
バイナリ曲線の場合、点(x,y)と点(x,y)の加算(x,y)=(x,y)+(x,y)は、
λ=(y+y)/(x+x) (式16)
=λ+λ+a+x+x (式17)
=λ(x+x)+x+y (式18)
を計算することにより得られる。
ここで、バイナリ曲線の定義式は
+xy=x+a+a (式19)
で与えられる。ここでa,aは定数である。すなわち、式19のx、yに各々x、y(i=1、2、3)を代入した場合に、式19の等式が成り立つ。本実施形態では、上記,aが楕円曲線パラメタとして定数104、124に格納される。
バイナリ曲線の場合、点(x,y)の2倍算を行った結果(x,y)=2(x,y)=(x,y)+(x,y)は、
λ=(x +y)/(x) (式20)
を計算し、このλを用いて式17、式18で与えられるx、yを計算することにより得られる。バイナリ曲線においても、λを計算する際に逆元計算が必要となる。
次に、本実施形態における前計算部302による事前計算テーブル作成処理について説明する。前計算部302を構成する各モジュールの処理および各モジュール間のデータの流れは第一の実施形態と同じである。すなわち、本実施形態においても、前計算部302は、制御部304から受け取った、ベース点P、ウィンドウ幅wから、事前計算テーブルを作成する。ただし、各モジュールの処理が異なる。以下、それぞれ説明する。
まず、分母変換部610が前計算制御部660からのデータを受け取り処理を開始する、本実施形態の分母変換処理について説明する。図13は、本実施形態の分母変換処理の処理フローである。なお、本実施形態では、分母変換部610が処理過程で算出したデータe,...,eを、再利用データとして出力する場合を例にとり説明する。
分母変換部610は、ベース点P=(x,y)、格納要素数k、楕円曲線パラメタaを入力として受け取る(ステップ1301)。
加算部611は、ベース点Pのx座標xを用いて以下の処理を行う(ステップ1302)。
・ベース点のx座標xを変数dに格納する。
・変数dを変数eに格納する。
次に、加算部611、乗算部613は、変数d、ベース点Pのy座標y、楕円曲線パラメタa、変数eを用いて、以下の処理を行う(ステップ1303)。
・d を計算し、その結果を変数Eに格納する。
・e・dを計算し、その結果を変数Dに格納する。
・E+yを計算し、その結果を変数Aに格納する。
・A(A+d)を計算し、その結果をBに格納する。
・B+aE+Dを計算し、その結果を変数dに格納する。
・e・dを計算し、その結果を変数eに格納する。
次に、加算部611、乗算部613は、変数d、変数e、変数A、変数B、変数Eを用いて、以下の処理を行う(ステップ1304)。
・d を計算し、その結果を変数Fに格納する。
・F・dを計算し、その結果を変数Dに格納する。
・A・dを計算し、その結果を変数Cに格納する。
・B・Fを計算し、その結果を変数Bに格納する。
・C+e+Eを計算し、その結果を変数Aに格納する。
・A(A+e)+B+Dを計算し、その結果を変数dに格納する。
・e・dを計算し、その結果を変数eに格納する。
次に、加算部611、乗算部613は、変数d、変数e、変数A、変数B、変数C、変数Dを用いて、以下の処理を行う(ステップ1305)。
・d を計算し、その結果を変数Fに格納する。
・変数Dを変数Eに代入する。
・F・dを計算し、その結果を変数Dに格納する。
・(C+A)Eを計算し、その結果を変数Cに格納する。
・B・Fを計算し、その結果を変数Bに格納する。
・C+e+Adを計算し、その結果を変数Aに格納する。
・A(A+e)+B+Dを計算し、その結果を変数dに格納する。
・e・dを計算し、その結果を変数eに格納する。
次に、繰り返し判定部614は、変数iに初期値5を代入し、ステップ1311へ行く(ステップ1306)。
加算部611、乗算部613は、変数di−1、変数ei−1、変数A、変数B、変数C、変数Dを用いて、以下の処理を行う(ステップ1311)。
・di−1 を計算し、その結果を変数Fに代入する。
・変数Dを変数Eに代入する。
・F・di−1を計算し、その結果を変数Dに格納する。
・C・Eを計算し、その結果を変数Cに格納する。
・B・Fを計算し、その結果を変数Bに格納する。
・C+ei−1+A・di−1を計算し、その結果を変数Aに格納する。
・A(A+ei−1)+B+Dを計算し、その結果を変数dに格納する。
・ei−1・Dを計算し、その結果を変数eに格納する。
次に、繰り返し判定部614は、変数iにi+1を代入する(ステップ1312)。
繰り返し判定部614は、変数iについて条件:i<=kが成立するか否かを判定する。条件が成立する場合、ステップ1311へ行く。条件が成立しない場合、ステップ1321へ行く(ステップ1313)。
ステップ1313で条件が成立しなった場合、分母変換部610は、変数d,...,dを変換分母として出力する。また、ステップ1302、1303、1304、1305、1311で算出した変数e,...,eを再利用データとして出力する(ステップ1321)。以上で分母変換処理を終了する。
なお、上記分母変換処理において、格納要素数kが4以下の値である場合は、格納要素数kの値(k=1,2,3,4)に応じて、それぞれ、ステップ1302、ステップ1303、ステップ1304、ステップ1305で処理を打ち切り、ステップ1321へ行き、値を出力するよう構成してもよい。本構成により、それ以降の処理を省くことができ、さらに高速化できる。
次に、本実施形態の同時逆元計算部620が分母変換部610からデータの入力を受け取り処理を開始する同時逆元計算処理について説明する。本実施形態においても、同時逆元計算部620が、同時逆元計算処理の処理過程で算出したデータe,...,eを、再利用データとして出力する場合を例にとり説明する。図14は、本実施形態の同時逆元処理の処理フローである。
同時逆元計算部620は、変換分母d,......,dおよび再利用データe,...,eを入力として受け取る(ステップ1401)。
逆元計算部622は、再利用データeの逆元e −1を計算し、その結果を変数Tに格納する(ステップ1402)。
繰り返し判定部623は、変数iに初期値kを代入し、ステップ1411へ行く(ステップ1403)。
乗算部621は、変換分母d、変数T、再利用データei−1を用いて、以下の処理を行う(ステップ1411)。
・変数dを変数Tに代入する。
・ei−1・Tを計算し、その結果を変数fに格納する。
・T・Tを計算し、その結果を変数Tに格納する。
次に、繰り返し判定部623は、変数iにi−1を代入する(ステップ1412)。
繰り返し判定部623は、変数iについて条件:i>=2が成立するか否かを判定する。条件が成立する場合、ステップ1411へ行く。条件が成立しない場合、ステップ1421へ行く(ステップ1413)。
ステップ1413で条件が成立しなかった場合、同時逆元計算部620は、変数Tを変数fに代入する(ステップ1421)。
同時逆元計算部620は、変数f,...,fを逆元計算結果として、出力し(ステップ1422)、処理を終了する。
次に、本実施形態の分母復元部630が同時逆元計算部620からデータの入力を受け取り処理を開始する分母復元処理について説明する。本実施形態では、分母復元部630は、さらに、分母変換部610が再利用データとして出力した変数e,...,eを利用する。図15は、本実施形態の分母復元処理の処理フローである。
分母復元部630は、再利用データe,...,e、逆元計算結果f,...,fを入力として受け取る(ステップ1501)。
分母復元部630は、逆元計算結果fを変数Lに代入する(ステップ1502)。
分母復元部630は、変数iに初期値2を代入し、ステップ1511へ行く(ステップ1503)。
乗算部631は、再利用データei−1、逆元計算結果fを用いて、ei−1 ・fを計算し、その結果を変数Lに格納する(ステップ1511)。
繰り返し判定部632は、変数iにi+1を代入する(ステップ1512)。
繰り返し判定部632は、変数iについて条件:i<=kが成立するか否かを判定する。条件が成立する場合、ステップ1511へ行く。条件が成立しない場合、ステップ1521へ行く(ステップ1513)。
ステップ1513で条件が成立しなかった場合、分母復元部632は、変数L,...,Lを復元分母として出力し(ステップ1521)、処理を終了する。
次に、本実施形態の楕円点計算部640が分母復元部630および前計算制御部660からデータの入力を受け取り処理を開始する楕円点計算処理について説明する。図16は、本実施形態の楕円点計算処理の処理フローである。
楕円点計算部640は、ベース点P=(x,y)、復元分母L,...,L、楕円曲線パラメタaを入力として受け取る(ステップ1601)。
加算部641、乗算部643は、ベース点P=(x,y)、復元分母L、楕円曲線パラメタaを用いて、以下の処理を行う(ステップ1602)。
・(x +y)Lを計算し、その結果を変数Tに格納する。
・T+T+aを計算し、その結果を変数xに格納する。
・T(x+x)+x+yを計算し、その結果を変数yに格納する。
次に、加算部641、乗算部643は、ベース点P=(x,y)、復元分母L、楕円パラメタaを用いて、以下の処理を行う(ステップ1603)。
・(y+y)Lを計算し、その結果を変数Tに格納する。
・T+T+a+x+xを計算し、その結果を変数xに格納する。
・T(x+x)+x+yを計算し、その結果を変数yに格納する。
次に、繰り返し判定部644は、変数iに初期値3を代入し、ステップ1611へ行く(ステップ1604)。
加算部641、乗算部643は、変数x、変数y、変数x、変数y、復元分母L、楕円パラメタaを用いて、以下の処理を行う(ステップ1611)。
・(y+y)Lを計算し、その結果を変数Tに格納する。
・T+T+a+x+xを計算し、その結果を変数xi+1に格納する。
・T(x+xi+1)+xi+1+yを計算し、その結果を変数yi+1に格納する。
次に、繰り返し判定部644は、変数iにi+1を代入する(ステップ1612)。
繰り返し判定部644は、変数iについて条件:i<=kが成立するか否かを判定する。条件が成立する場合、ステップ1611へ行く。条件が成立しない場合、ステップ1621へ行く(ステップ1613)。
ステップ1613で条件が成立しなかった場合、楕円点計算部640は、変数x,...,xk+1、変数y,...,yk+1を事前計算楕円点3P=(x,y)、5P=(x,y)、...、(2k−1)P=(xk+1,yk+1)として出力し(ステップ1621)、処理を終了する。
以上、本実施形態の事前計算テーブル作成処理を説明した。本実施形態の事前計算テーブル作成処理によれば、第一の実施形態と同様に、ベース点Pから楕円点2Pを計算し、その後3P(=P+2P)、5P(=3P+2P)、7P(=5P+2P)、...、(2k−1)P(=(2k−3)P+2P)を計算する。楕円点2P、3P、5P、7P、...、(2k−1)Pに対するλの分母を、それぞれ、δ、δ、...、δとすると、以下の数式が成立する。
=x=δ (式21)
=(d...di−1δ (式22)
=d...d (式23)
=1/d (式24)
=(d...di−1=ei−1 (式25)
=1/δ (式26)
また、上記楕円点計算処理(図16)のステップ1602、ステップ1603、ステップ1611は、それぞれ、楕円2倍算、楕円加算、楕円加算をLを用いて計算したものである。従って、本実施形態の事前計算テーブル作成処理により算出され出力される値は、事前計算楕円点といえる。
また、本実施形態の事前計算テーブル作成処理では、第一の実施形態同様、逆元計算は同時逆元処理(図14)のステップ1402でのみ行われている。しかも、上述のように、ステップ1402を実行する回数は1回である。従って、本実施形態の事前計算テーブル作成処理全体における逆元計算回数は1回である。
以上説明した通り、本実施形態によれば、楕円曲線がバイナリ曲線である楕円曲線暗号を用いた暗号通信システムにおいて、楕円曲線演算のスカラー倍計算を高速に行うための事前計算テーブルを作成する際に、逆元計算回数を一回に削減することができる。従って、処理速度を犠牲にせず、処理負担、メモリ使用量の少ない楕円曲線演算を実現することができ、これらの特徴を備えた暗号通信システムを実現することができる。
<<第三の実施形態>>
本発明を適用した第三の実施形態を図面を用いて説明する。本実施形態は、楕円曲線暗号における暗号化、復号化処理におけるスカラー倍計算の事前計算テーブル作成を、非特許文献3に示されている手法と上記の第一の実施形態および第二の実施形態で説明した事前計算テーブルの作成方法とを組み合わせて行うものである。以下においては、第一の実施形態、すなわち、楕円曲線が素体上の楕円曲線である場合を例にあげて説明する。
ここで、以下に非特許文献3の事前計算テーブル生成手法(以下、CMO(Cohen、Miyaji、Ono)前計算処理と呼ぶ。)の概要を説明する。CMO前計算処理では、ベース点Pから楕円点2Pを計算し、次のステップで楕円点3P(P+2P)、4P(2P+2P)を計算する。次のステップで楕円点5P(P+4P)、7P(3P+4P)、8P(4P+4P)を計算する。そして、同様の処理ステップを繰り返すことにより、楕円点3P、5P、...、(2k−1)Pを計算する。すなわち、CMO前計算処理では、先に計算した複数の楕円点のみを用いて、次の楕円点群を計算する処理ステップを繰り返す。1ステップ内の楕円点群の計算は、既に計算されている複数の楕円点を用いて行うため、モンゴメリトリックの手法を利用して並列に処理することが可能である。本方法によれば、上記ステップごとに一回の逆元計算を必要とし、処理全体ではw(ウィンドウ幅)回程度の逆元計算を必要とする。
本実施形態では、所定数の必要な楕円点の中の連続した楕円点をまとめて上記第一の実施形態の方法で算出し、その後の楕円点を上記非特許文献3の手法を用いて算出する。例えば、3P,5P,7P,8Pを第一の実施形態の手法により算出し、これらの楕円点を用いて残りの楕円点をCMO前計算処理を用いて算出する。本実施形態の方法によれば、逆元計算の削減回数を、メモリ使用量、乗算・逆元演算など各種演算の相対速度比、デバイス特性などに応じて調整することができ、所定条件下で更なる高速化が可能である。
本実施形態の暗号通信システムのシステム構成、各処理部間の情報の受け渡し等は基本的に第一の実施形態と同様である。以下、本実施形態について、コンピュータA101が暗号化処理を行う場合の、スカラー倍計算部115の処理について、第一の実施形態と異なる構成についてのみ説明する。
第一の実施形態と本実施形態との異なる構成は、事前計算テーブルを作成する前計算部である。図17は、本実施形態の前計算部1702を構成する各モジュールを示す機能ブロック図である。本実施形態の前計算部1702は、第一の実施形態の前計算部302の構成に加え、CMO前計算部1750を備える。すなわち、本図に示すように、本実施形態の前計算部1702は、分母変換部1710と、同時逆元計算部1720と、分母復元部1730と、楕円点計算部1740と、全体を制御する前計算制御部1760と、CMO前計算部1750と、を備える。分母変換部1710は、加算部1711と、減算部1712と、乗算部1713と、繰り返し判定部1714とを備える。同時逆元計算部1720は、乗算部1721と、逆元計算部1722と、繰り返し判定部1723とを備える。分母復元部1730は、乗算部1731と、繰り返し判定部1732とを備える。楕円点計算部1740は、加算部1741と、減算部1742と、乗算部1743と、繰り返し判定部1744とを備える。第一の実施形態と同名の構成は、基本的に同様の機能を有する。また、CMO前計算部1750は、CMO前計算処理を実行する。
次に、本実施形態における前計算部1702が実現する事前計算テーブル生成処理の詳細を説明する。図18は、本実施形態の前計算部1702の各モジュールの処理および各モジュール間のデータの流れを示すシーケンス図である。
前計算制御部1760が、前計算部1702に入力されたベース点P、ウィンドウ幅wを受け取る(1801)。前計算制御部1760は、ベース点P、ウィンドウ幅wから算出した格納要素数k以下の値である、予め定めた第一の実施形態の方法を応用して計算する楕円点の個数を示す適用要素数k´を、分母変換部1710へ送る(1802)。
分母変換部1710は、ベース点Pおよび適用要素数k´から、i=1,...,k´に対する変換分母dを計算する。分母変換部1710は、得られた変換分母dを同時逆元計算部1720へ送る(1803)。ここで行われる分母変換処理は、第一の実施形態と同様である。
同時逆元計算部1720は、i=1,...,k´に対して変換分母dから、再利用データとして変数eを計算する。そして、同時逆元計算部1720は、i=1,...,k´に対する再利用データeを分母変換部1710へ送る(1804)。
分母変換部1710は、再利用データe、分母変換処理で計算した変換分母dk´から変換分母d k´+1を計算し、同時逆元計算部1720に送る(1805)。
同時逆元計算部1720は、変換分母d k´+1からi=1,...,k´+1に対する逆元計算fを得る。そして、結果fを分母復元部1730へ送る(1806)。
分母復元部1730は、逆元計算結果fからi=1,...,k´+1に対する復元分母Lを得、結果Lを楕円点計算部1740へ送る(1807)。
前計算制御部1760は、ベース点Pを楕円点計算部1740へ送る(1808)。
楕円点計算部1740は、復元分母Lおよびベース点Pから事前計算楕円点3P、5P、...、(2k´−1)Pおよび(2k´)Pを計算し、CMO前計算部1750へ送る(1809)。
また、前計算制御部1760は、格納要素数kをCMO前計算部1750へ送る(1810)。
CMO前計算部1750は、事前計算楕円点3P、5P、...、(2k´−1)Pおよび(2k´)Pと格納要素数kとから、CMO前計算処理を行い、さらなる事前計算楕円点(2k´+1)P、(2k´+2)P、...、(2k−1)Pを計算する。そして、CMO前計算部1750は、得られた事前計算楕円点3P、5P、...、(2k−1)Pを前計算制御部1760へ送る(1811)。
前計算制御部1760は、得られた事前計算楕円点を格納した事前計算テーブルを生成し、出力する(1812)。
次に、上記シーケンスにおいて事前計算テーブル生成処理時の各モジュールが行う処理の流れを、各処理の詳細とともに説明する。図19は、本実施形態の事前計算テーブル生成処理の処理フローである。
まず、分母変換部1710が、第一の実施形態で説明した分母変換処理を行い、ベース点Pおよび適用要素数k´から、i=1,...,k´に対する変換分母dを計算する(ステップ1901)。
次に、同時逆元計算部1720が、再利用データ計算処理を行い、再利用データとして変数eを計算する(ステップ1902)。この計算は第一の実施形態の同時逆元計算処理(図10)のステップ1002からステップ1013までの処理を行うことにより達成できる。
次に、分母変換部1710が、ステップ1902で計算した再利用データeおよびステップ1901で計算した変換分母dk´から変換分母d k´+1を計算する(ステップ1903)。本処理は、加算部1711、減算部1712、乗算部1713が以下の処理を行うことにより達成する。
・d mod pを計算し、その結果を変数Eに格納する。
・B・E mod pを計算し、その結果を変数Bに格納する。
・C・D mod pを計算し、その結果を変数Cに格納する。
・E・d mod pを計算し、その結果を変数Dに格納する。
・−A・dk´−C mod pを計算し、その結果を変数Aに格納する。
・d (A−D−B)+d・ek´ mod pを計算し、その結果を変換分母d k´+1に格納する。
次に、同時逆元計算部1720は、再利用データek´および変換分母d〜k´+1から再利用データek´+1を計算する(ステップ1904)。この計算は、乗算部1721がek´・dk´+1 mod pを計算し、その結果を再利用データek´+1に格納することにより達成できる。
次に、同時逆元計算部1720は、i=1,...,k´に対する変換分母d、変換分母d k´+1、i=1,...,k´+1に対する再利用データから、第一の実施形態で説明した同時逆元計算処理を行い、i=1,...,k´に対する逆元計算結果fおよび逆元計算結果f k´+1を計算する(ステップ1905)。
さらに、同時逆元計算部1720は、変換分母dおよび逆元計算結果f k´+1から逆元計算結果fk´+1を計算する(ステップ1906)。この計算は、乗算部1721が、d k´+1 mod pを計算し、その結果を逆元計算結果fk´+1に格納することにより達成できる。
分母復元部1730は、i=1,...,k´+1に対して逆元計算結果fから、第一の実施形態で説明した分母復元処理を行い、復元分母Lを計算する(ステップ1907)。
楕円点計算部1740は、i=1,...,k´に対して第一の実施形態で説明した楕円点計算処理を行い、事前計算楕円点3P、5P、...、(2k´−1)Pを計算する(ステップ1908)。
次に、楕円点計算部1740は、楕円点2k´Pを計算する(ステップ1909)。この計算は、加算部1741、減算部1742、乗算部1743が以下の処理を行うことにより達成できる。
・(yk´+1−y)・Lk´+1 mod pを計算し、その結果を変数Tに格納する。
・T−x−xk´+1 mod pを計算し、その結果を楕円点2k´Pのx座標xk´+2に格納する。
・T(x−xk´+1)−y mod pを計算し、その結果を楕円点2k´Pのy座標yk´+2に格納する。
次に、CMO前計算部1750は、事前計算楕円点3P、5P、...、(2k´−1)Pおよび(2k´)P、格納要素数kから、CMO前計算処理を行い、(2k´+1)P,(2k´+2)P,...,(2k−1)Pを計算する(ステップ1910)。
なお、本実施形態においても、各モジュール間のデータの受け渡しは、データを直接転送する以外にも、記憶部102にデータを書き込み、転送先モジュールが記憶部102にアクセスし、データを読み出すよう構成してもよい。
また、各モジュールは必要に応じて楕円曲線パラメタ(例えば、楕円曲線を定める定数aや対応する有限体の素数pなど)を用いる。これらのデータは、予め記憶部102に書き込んでおき、各モジュールが記憶部102にアクセスし、データを読み出すよう構成してもよい。
楕円点計算部1740の受け取る復元分母L、ベース点Pは、楕円点計算部1740が楕円点計算処理を行う前であれば、受け取る順番は問わない。例えば、前計算制御部1760がベース点Pを楕円点計算部1740に送った後で、分母変換部1710、同時逆元計算部1720、分母復元部1730が各々の処理を行い、分母復元部1730が復元分母Lを楕円点計算部1740に送るよう構成してもよい。
また、各モジュールは、各々の処理の過程で算出した演算結果を再利用データとして出力してもよい。処理過程で同じ演算を必要とする他のモジュールがその再利用データを入力として受け取り利用することにより、演算を削減することができ、当該モジュール処理を効率化することができる。
なお、本実施形態では、同時逆元計算部1720が再利用データを計算する場合を例に取り説明したが、分母変換部1710、分母復元部1730などが再利用データを計算してもよい。
また、上記の説明においては、楕円曲線暗号に用いる楕円曲線が第一の実施形態の素体上の楕円曲線の場合との組み合せを例に取り説明したが、上述したように第二の実施形態のバイナリ曲線の場合と組み合わせてもよい。その場合、ステップ1903、ステップ1909などの楕円曲線の形状により異なる処理は、バイナリ曲線の加算式(式16、式17、式18)に基づいたものに修正すればよい。
なお、本実施形態では、楕円点3P、5P、...、(2k´−1)Pおよび(2k´)Pを一回の逆元計算で求めている。しかし、楕円点3P、5P、...、(2k´−1)Pを一回の逆元計算で求め、その後、楕円点計算部1740が、楕円点(2k´)Pを計算することにより、楕円点3P、5P、...、(2k´−1)Pおよび(2k´)Pを求めるよう構成してもよい。
この場合、楕円点3P、5P、...、(2k´−1)Pの計算に第一の実施形態および第二の実施形態の計算方法をそのまま適用することができるため、前計算部1702の構成を簡略化でき、回路規模を小さくすることができる。なお、この場合の楕円点(2k´)Pの計算は、例えば素体上の楕円曲線の場合には楕円点計算部1740が以下の処理を行うことにより達成できる。
・(xk´+1−x) mod pを計算し、その結果を変数Tに格納する。
・1/T mod pを計算し、その結果を変数Tに格納する。
・T・(yk´+1−y) mod pを計算し、その結果をTに格納する。
・T−x−xk´+1 mod pを計算し、その結果を楕円点(2k´)Pのx座標xk+2に格納する。
・T・(x−xk´+1)−y mod pを計算し、その結果を楕円点(2k´)Pのy座標yk+2に格納する。
ただし、本構成の場合、1/T mod pの計算に逆元計算部が必要となる。このため、楕円点計算部1740が逆元計算部を備えるか、または同時逆元計算部1720の逆元計算部1722を利用して行うよう構成する必要がある。なお、楕円曲線としてバイナリ曲線を用いる場合は、式16、式17、式18を利用して(2k´)Pを計算する。
以上、本実施形態の事前計算テーブル作成処理を説明した。本実施形態の事前計算テーブル作成処理によれば、ベース点Pから楕円点2Pを計算し、その後3P(=P+2P)、5P(=3P+2P)、7P(=5P+2P)、...、(2k´−1)P(=(2k´−3)P+2P)および(2k´)P(=(2k´−1)P+P)を計算する。楕円点2P、3P、5P、7P、...、(2k´−1)Pおよび(2k´)Pに対するλの分母を、それぞれ、δ、δ、...、δとすると、以下の数式が成立する。
=2y=δ mod p (式27)
=(d...di−1δ mod p
(i=1,...,k´+1) (式28)
k´+1=d k´+1 mod p (式29)
=d...d mod p
(i=1,...,k´) (式30)
k´+1=ek´+1 mod p (式31)
=1/d mod p
(i=1,...,k´+1) (式32)
k´+1=1/d k´+1 mod p (式33)
=(d...di−1=ei−1 mod p
(i=1,...,k´+1) (式34)
=1/δ mod p
(i=1,...,k´+1) (式35)
また、上記ステップ1909の楕円点計算処理(図19)は、楕円加算をLを用いて計算したものである。従って、本実施形態の事前計算テーブル作成処理により算出され出力される値は、事前計算点といえる。
また、本実施形態の事前計算テーブル処理では、逆元計算は図19のステップ1905およびステップ1910でのみ行われる。ステップ1905では、逆元計算は1回である。従って、本実施形態の事前計算テーブル作成処理全体においては、従来の方法に比べて逆元計算回数を抑えることができる。
以上説明した通り、本実施形態によれば、楕円曲線暗号を用いた暗号通信システムにおいて、楕円曲線演算のスカラー倍計算を高速に行うための事前計算テーブルを作成する際に、逆元計算回数を低減することができる。従って、処理速度を犠牲にせず、処理負担、メモリ使用量の少ない楕円曲線演算を実現することができ、これらの特徴を備えた暗号通信システムを実現することができる。
<<第四の実施形態>>
次に、本発明を署名検証システムに適用する実施形態を図面を用いて説明する。本実施形態の署名検証システムでは、署名の生成および検証に楕円曲線演算(楕円曲線暗号)を用いる。本実施形態はこの楕円曲線演算に本発明を適用し、その処理の高速化、効率化を実現する。
図20は、本発明を適用した署名検証システムのシステム構成図である。本図に示すように、本実施形態の署名検証システムは、第一の実施形態の暗号通信システムで用いられた楕円曲線暗号技術をそれぞれ適用したスマートカード2001と署名検証処理を行うコンピュータ2021とを備える。スマートカード2001は署名を生成し、コンピュータ2021は、生成された署名を検証する。
スマートカード2001は、第一の実施形態のコンピュータA101と類似の構成を備え、CPU2013、コプロセッサ2014などの演算装置、RAM2003、ROM2006などの記憶装置、外部とのデータ入出力を行なう入出力インタフェース2010を備える。記憶装置に格納されたプログラムを演算装置が実行することにより、署名生成処理部2012およびスカラー倍計算部2015からなる処理部2011を実現する。RAM2003には、処理に必要な定数2004、秘密情報2005が保持される。
コンピュータ2021は、第一の実施形態のコンピュータA101と同様の構成を備え、CPU2013、コプロセッサ2014などの演算装置、RAM2023、ROM2026、外部記憶装置2027などの記憶装置、コンピュータ2021の外部とのデータ入出力を行なう入出力インタフェース2030を装備し、外部にはコンピュータ2021をユーザが操作するためのディスプレイ2008、キーボード2009、着脱可能な可搬型記憶媒体の読み書き装置などが接続される。記憶装置に格納されたプログラムを演算装置が実行することにより、署名検証処理部2032およびスカラー倍計算部2035からなる処理部2031を実現する。RAM2023には、処理に必要な定数2024、秘密情報2025が保持される。
本実施形態のスカラー倍計算部2015と2035とは第一の実施形態のスカラー倍計算部115または135と基本的に同様の機能を備える。
なお、本実施形態において、コンピュータ2021内の各プログラムは、予め、上記コンピュータ内の記憶部2022に格納されていてもよいし、必要なときに、コンピュータ2021が利用可能な媒体を介して他の装置から上記記憶部2022に導入されてもよい。媒体とは、例えば、入出力インタフェース2030に着脱可能な記憶媒体、または通信媒体(すなわちネットワークまたはネットワークを伝搬する搬送波)を指す。
さらに、スマートカード2001内の各プログラムは、予め、上記スマートカード2001内の記憶部2002に格納されてもよいし、必要なときに、入出力インタフェース2010を介して接続するコンピュータ、または当該コンピュータが利用可能な媒体を介して上記記憶部に導入されてもよい。媒体とは、例えば、当該コンピュータに着脱可能な記憶媒体、または通信媒体(すなわちネットワークまたはネットワークを伝搬する搬送波)を指す。
次に、本実施形態の署名検証システムにおける署名生成と署名検証動作を説明する。ここでは、第一の実施形態の図2を参照して説明する。まず、スマートカード2001における署名生成時の動作について説明する。なお、本実施形態では、図2のデータ処理部112は、署名生成処理部2012、スカラー倍計算部115はスカラー倍計算部2015、記憶部102は、記憶部2002である。
コンピュータ2021は、ランダムに選んだ数値をチャレンジコード2043として、スマートカード2001に転送する。
署名生成処理部2012は、入出力インタフェース2010を介して、チャレンジコードを受け取ると(201)、チャレンジコード2043のハッシュ値をとり、所定のビット長の数値fに変換する。
署名生成処理部2012は、乱数rを生成する。また、署名生成処理部2012は、記憶部2002に格納されている定数2004から楕円曲線上の定点Qを読み出す(202)。そして、署名生成処理部2012は、乱数rをスカラー値とし、読み出した定点Qをベース点とし、利用可能なメモリ容量に応じてウィンドウ幅wを設定する。そして、スカラー値r、ベース点Q、ウィンドウ幅wをスカラー倍計算部2015へ送る(203)。
スカラー倍計算部2015は、スカラー値r(乱数r)による定点Qのスカラー倍点rQ(=(x,y))を計算し、計算されたスカラー倍点rQを署名生成処理部2012へ送る(204)。
署名生成部2012は、送られたスカラー倍点rQを用いて署名の生成を行う。例えば、ECDSA署名であれば、
s=x mod q (式36)
t=r−1(f+ds) mod q (式37)
を計算することによりチャレンジコード2043に対応する署名(s,t)を得る。ここで、qは定点Qの位数、すなわち定点Qのq倍点qQが無限遠点になり、qより小さな数値mに対する定点Qのm倍点mQは無限遠点にはならない、というような数値のことである。
署名生成部2012は、入出力インタフェース2010を介して生成した署名(s,t)を出力データとして出力する(205)。
スマートカード2001は、署名生成処理部2012で作成した署名(s,t)を入出力インタフェース2010より署名2041として出力し、コンピュータ2021へ転送する。
次に、署名2041を受け取ったコンピュータ2021側の動作について図2を用いて説明する。ここでは、図2のデータ処理部112は、署名検証処理部2032、スカラー倍計算部115は、スカラー倍計算部2035、記憶部102は、記憶部2022とする。
コンピュータ2021の署名検証処理部2032(図2の112)は、入出力インタフェース2030を介して、署名2041を入力メッセージとして受け取る(201)と、署名2041の数値s,tが適切な範囲内、すなわち1≦s,t<qであるかを調べる。
数値s,tが上記範囲内になければチャレンジコード2043に対する署名の検証結果として「無効」を出力し、スマートカード2001を拒絶する。一方、数値s,tが上記範囲内にあれば、署名検証処理部2032は、
h=t−1 mod q (式38)
=f・h mod q (式39)
=s・h mod q (式40)
を計算する。
次に、署名検証処理部2032は、記憶部2022(図2の102)に格納されている定数2024から公開鍵uQ及び定点Qを読み出す(202)。そして、計算したh,hとともに、公開鍵uQ、定点Qをスカラー倍計算部2035へ送る(203)。
スカラー倍計算部2035は、定点Qとhとによるスカラー倍点hQと、公開鍵uQとhとによるスカラー倍点huQとを計算し、両スカラー倍点hQ、huQを署名検証処理部2032へ送る(204)。
署名検証処理部2032は、送られたスカラー倍点を用いて、署名検証処理を行う。例えば、ECDSAの署名検証であれば、点R
R=hQ+huQ (式41)
を計算し、そのx座標をxとしたとき、
s’=x mod q (式42)
を計算する。
ここで、s’=sであれば、署名検証処理部2032は、チャレンジコード2043に対する署名の検証結果として「有効」を出力する(205)。この場合、コンピュータ2021は、スマートカード2001を認証し、受入れる。
一方、s’=sでなければ、署名検証処理部2032は、署名の検証結果として「無効」を出力する(205)。この場合、コンピュータ2021は、スマートカードを拒絶する。
本実施形態のスカラー倍計算部2015、2035は、第一の実施形態のスカラー倍計算部115または135と同様の機能を備える。このため、高速かつ低負担で事前計算テーブルを作成し、スカラー倍計算を実行することができる。
従って、本実施形態によれば、処理速度を犠牲にせず、処理負担、メモリ使用量の少ない楕円曲線演算を実現することができ、これらの特徴を備えた署名生成、検証装置を実現することができる。
なお、上記の実施形態では、第一の実施形態のスカラー倍計算処理を署名生成、署名検証に適用した場合を例にあげて説明したが、もちろん、第二、第三の実施形態のスカラー倍計算処理を適用することも可能である。
<<第五の実施形態>>
次に、本発明を鍵交換システムに適用する実施形態を図面を用いて説明する。本実施形態の鍵交換システムでは、交換する鍵データの生成および抽出に楕円曲線演算(楕円曲線暗号)を用いる。本実施形態はこの楕円曲線演算に本発明を適用し、その処理の高速化、効率化を実現する。
本実施形態の鍵交換システムのシステム構成は、第一の実施形態と基本的に同様である。従って、以下においては、図1を用いて説明する。ただし、図1のデータ処理部112、132は、本実施形態においては、それぞれ鍵交換処理部112、132として機能する。本実施形態における鍵の交換は、コンピュータA101およびコンピュータB121において、それぞれ、ネットワークを介して取得したデータ(公開鍵)と自身が有する秘密鍵とを用いて新たなデータを生成し、それを秘密裏の共有することにより、両者間の暗号通信における新たな鍵とすることにより実現する。
鍵交換システムのコンピュータA101が、入力されたデータ143から共有情報の導出を行う場合の動作について図1、図2を参照して説明する。
コンピュータB121の鍵交換処理部132は、記憶部122(の定数125から秘密鍵vを読み出し、コンピュータB121の公開鍵vQを計算する。そして、ネットワーク142を介して、公開鍵vQをデータ143としてコンピュータA101に転送する。
コンピュータA101の鍵交換処理部112は、入出力インタフェース110を介してコンピュータB121の公開鍵vQを受け取る(201)。また、鍵交換処理部112は、記憶部102から秘密情報105であるコンピュータA101の秘密鍵u読み出す(202)。
鍵交換処理部112は、コンピュータB121の公開鍵vQと自身の秘密鍵uと設定したウィンドウ幅wとをスカラー倍計算部115へ送る(203)。
スカラー倍計算部115は、秘密鍵uと公開鍵vQとによるスカラー倍点uvQを計算し、計算されたスカラー倍点uvQを鍵交換処理部112へ送る(204)。
鍵交換処理部112は、送られたスカラー倍点uvQを用いて共有情報の導出を行ない、記憶部102に秘密情報105として格納する。例えば、スカラー倍点uvQのx座標を、共有情報とする。
次に、コンピュータB121が、入力されたデータ141から共有情報の導出を行なう場合の動作について説明する。
コンピュータA101の鍵交換処理部112は、記憶部102の定数105から秘密鍵uを読み出し、コンピュータA101の公開鍵uQを計算する。そして、ネットワーク142を介して、公開鍵uQをデータ141としてコンピュータB121に転送する。
コンピュータB121の鍵交換処理部132は、入出力インタフェース130を介してコンピュータA101の公開鍵uQを受け取る(201)。また、鍵交換処理部132は、記憶部122から秘密情報125であるコンピュータB121の秘密鍵vを読み出す(202)。
鍵交換処理部132は、秘密鍵vとコンピュータA101の公開鍵uQと設定したウィンドウ幅wとをスカラー倍計算部135へ送る(203)。
スカラー倍計算部135は、秘密鍵vと公開鍵uQとによるスカラー倍点vuQを計算し、計算されたスカラー倍点vuQを鍵交換処理部132へ送る(204)。
鍵交換処理部132は、送られたスカラー倍点vuQを用いて共有情報の導出を行ない、記憶部122に秘密情報125として格納する。例えば、スカラー倍点baQのx座標を、共有情報とする。
ここで、数uvと数vuとは数値として等しいので、点uvQと点vuQは同一の点となり、同一の情報が導出されたことになる。
ネットワーク142には、点uQと点vQが送信されるが、点uvQ(もしくはvuQ)は送信されない。点uvQ(もしくはvuQ)を計算するためには秘密鍵uもしくは秘密鍵vを用いなけらばならない。すなわち、秘密鍵uもしくは秘密鍵vを知らなければ、共有情報を得ることができない。このようにして得られた共有情報は、共通鍵暗号の秘密鍵として利用できる。
以上の方法により、本実施形態の鍵交換システムは、共通鍵暗号の秘密鍵の交換を実現する。
本実施形態においても、スカラー倍計算部115、135は、上記各実施形態のいずれの構成も採用が可能である。従って、本実施形態においても、処理速度を犠牲にせず、処理負担、メモリ使用量の少ないスカラー倍計算による楕円曲線演算を実現でき、これらの特徴を備えた鍵交換システムを実現することができる。なお、本実施形態のシステムで交換する情報は、鍵情報に限られない。従って、本実施形態は、一般のデータを共有するシステムとして利用できる。
なお、上記の実施形態では、第一の実施形態を適用した場合を例にあげて説明したが、もちろん、第二、第三の実施形態のスカラー倍計算処理を適用することも可能である。
なお、上記の各実施形態における暗号化処理部、復号化処理部、署名作成部、署名検証部、鍵交換処理部は、専用のハードウェアを用いて行ってもよい。また、スカラー倍計算部、前計算部、加算部、減算部、乗算部、逆元計算部をコプロセッサまたはそれ以外の専用ハードウェアで実現してもよい。
また、データ処理部は、上記暗号化処理、復号化処理、署名生成処理、署名検証処理、鍵交換処理のうち、任意の一つ以上の処理を行えるように構成してもよい。
第一の実施形態の暗号通信システムのシステム構成図である。 第一の実施形態のコンピュータ内の各処理部間の情報の受け渡しを示すシーケンス図である。 第一の実施形態のスカラー倍計算部の機能ブロック図である。 第一の実施形態のスカラー倍計算部内の各モジュールの処理および各モジュール間のデータの流れを示すシーケンス図である。 第一の実施形態のスカラー倍計算処理の処理フローである。 第一の実施形態の前計算部の機能ブロック図である。 第一の実施形態の前計算部内の各モジュールの処理および各モジュール間のデータの流れを示すシーケンス図である。 第一の実施形態の事前計算テーブル生成処理の処理フローである。 第一の実施形態の分母変換処理の処理フローである。 第一の実施形態の同時逆元処理の処理フローである。 第一の実施形態の分母復元処理の処理フローである。 第一の実施形態の楕円点計算処理の処理フローである。 第二の実施形態の分母変換処理の処理フローである。 第二の実施形態の同時逆元処理の処理フローである。 第二の実施形態の分母復元処理の処理フローである。 第二の実施形態の楕円点計算処理の処理フローである。 第三の実施形態の前計算部の機能ブロック図である。 第三の実施形態の前計算部内の各モジュールの処理および各モジュール間のデータの流れを示すシーケンス図である。 第三の実施形態の事前計算テーブル生成処理の処理フローである。 第四の実施形態の署名検証システムのシステム構成図である。
符号の説明
101:コンピュータA、102:記憶部、103:RAM、104:定数、105:秘密情報、106:ROM、107:外部記憶装置、108:ディスプレイ、109:キーボード、110:入出力インタフェース、111:処理部、112:データ処理部、113:CPU、114:コプロセッサ、115:スカラー倍計算部、121:コンピュータB、122:記憶部、123:RAM、124:定数、125:秘密情報、126:ROM、127:外部記憶装置、128:ディスプレイ、129:キーボード、130:入出力インタフェース、131:処理部、132:データ処理部、133:CPU、134:コプロセッサ、135:スカラー倍計算部、141:データ、142:ネットワーク、143:データ、301:エンコード部、302:前計算部、303:実計算部、304:制御部、331:エンコード値判定部、332:楕円加算部、333:楕円2倍算部、334:繰り返し判定部、610:分母変換部、620:同時逆元計算部、630:分母復元部、640:楕円点計算部、660:前計算制御部、611:加算部、612:減算部、613:乗算部、614:繰り返し判定部、621:乗算部、622:逆元計算部、623:繰り返し判定部、631:乗算部、632:繰り返し判定部、641:加算部、642:減算部、643:乗算部、644:繰り返し判定部、1702:前計算部、1710:分母変換部、1720:同時逆元計算部、1730:分母復元部、1740:楕円点計算部、1750:CMO計算部、1760:前計算制御部、1711:加算部、1712:減算部、1713:乗算部、1714:繰り返し判定部、17621:乗算部、1722:逆元計算部、1723:繰り返し判定部、1731:乗算部、1732:繰り返し判定部、1741:加算部、1742:減算部、1743:乗算部、1744:繰り返し判定部、2001:スマートカード、2002:記憶部、2003:RAM、2004:定数、2005:秘密情報、2006:ROM、2010:入出力インタフェース、2011:処理部、2012:署名生成処理部、2013:CPU、2014:コプロセッサ、2015:スカラー倍計算部、2021:コンピュータ、2022:記憶部、2023:RAM、2024:定数、2025:秘密情報、2026:ROM、2027:外部記憶装置、2028:ディスプレイ、2029:キーボード、2030:入出力インタフェース、2031:処理部、2032:署名検証処理部、2033:CPU、2034:コプロセッサ、2035:スカラー倍計算部、2041:署名、2042:チャレンジコード

Claims (11)

  1. 楕円曲線演算を用いてデータを変換する変換装置において、スカラー値および楕円曲線上のベースとなる点(ベース点)とからスカラー倍を計算するスカラー倍計算のために、入力された前記ベース点から所定数のスカラー倍計算を行って楕円点として保持する事前計算テーブルを作成する楕円曲線暗号における事前計算テーブル作成装置であって、
    前記ベース点から前記楕円点を計算する際に必要となる逆元計算の分母を変換し、変換分母として出力する分母変換手段と、
    前記変換分母を集約して逆元計算を行った後に展開して同時逆元計算結果として出力する同時逆元計算手段と、
    前記同時逆元計算結果を、前記楕円曲線上の前記ベース点から前記スカラー倍を計算する際に必要な逆元計算結果に復元し復元分母として出力する分母復元手段と、
    前記復元分母を用いて前記楕円点を計算して出力する楕円点計算手段と、
    前記計算した楕円点を前記事前計算テーブルに格納する事前計算テーブル生成手段と、を備えること
    を特徴とする事前計算テーブル作成装置。
  2. 請求項1記載の事前計算テーブル作成装置であって、
    前記分母変換手段における変換は、
    変換前の分母をδ, δ,..., δとし、変換分母をd,d,...,dとすると、
    変換分母がそれぞれ、
    =δ
    =(d...di−1δ(i=2,3,...,k)
    と表される変換であること
    を特徴とする事前計算テーブル作成装置。
  3. 請求項1または2記載の事前計算テーブル作成装置であって、
    既に計算した複数の楕円点を用いて次の楕円点群をモンゴメリトリックの手法を利用して並列に計算することを繰り返す前計算手段をさらに備えること
    を特徴とする事前計算テーブル作成装置。
  4. 請求項1から3いずれか1項記載の事前計算テーブル作成装置であって、
    前記楕円曲線として、素体上の楕円曲線またはバイナリ曲線を用いること
    を特徴とする事前計算テーブル作成装置。
  5. 楕円曲線演算を用いてデータを変換する変換装置において、スカラー値と楕円曲線上のベースとなる点(ベース点)からスカラー倍を計算するスカラー倍計算装置であって、
    請求項1から4のいずれか1項記載の事前計算テーブル作成装置を用いて作成した事前計算テーブルを用いて前記ベース点のスカラー倍を計算すること
    を特徴とするスカラー倍計算装置。
  6. 楕円曲線演算を用いてメッセージを暗号化する暗号化装置であって、
    請求項5記載のスカラー倍計算装置を用いてスカラー値と楕円曲線上のベースとなる点(ベース点)から前記楕円曲線演算におけるスカラー倍計算を行うこと
    を特徴とする暗号化装置。
  7. 暗号化されたデータを楕円曲線演算を用いて復号する復号化装置であって、
    請求項5記載のスカラー倍計算装置を用いてスカラー値と楕円曲線上のベースとなる点(ベース点)から前記楕円曲線演算におけるスカラー倍計算を行うこと
    を特徴とする復号化装置。
  8. 請求項6の暗号化装置と請求項7の復号化装置とを備える暗号通信システム。
  9. 楕円曲線演算を用いてデータからディジタル署名データを生成する署名生成装置であって、
    請求項5記載のスカラー倍計算装置を用いてスカラー値と楕円曲線上のベースとなる点(ベース点)から前記楕円曲線演算におけるスカラー倍計算を行うこと
    を特徴とする署名生成装置。
  10. 楕円曲線演算を用いて、データと署名データとから署名の正当性を検証する署名検証装置であって、
    請求項5記載のスカラー倍計算装置を用いてスカラー値と楕円曲線上のベースとなる点(ベース点)から前記楕円曲線演算におけるスカラー倍計算を行うこと
    を特徴とする署名検証装置。
  11. 第一の処理装置と第二の処理装置との間でデータを共有するデータ共有システムであって、
    前記第一の処理装置と前記第二の処理装置とはそれぞれ、
    自身の秘密鍵をスカラー値として楕円曲線上のベースとなる点(ベース点)のスカラー倍計算を行いスカラー倍点を算出する送出情報生成手段と、
    前記算出したスカラー倍点を送出するとともに、他方の処理装置から送出された前記スカラー倍点を受信する入出力手段と、
    自身の秘密鍵をスカラー値として前記入出力手段で受け取ったスカラー倍点のスカラー倍計算を行い共有情報を算出する共有情報算出手段と、を備え、
    前記送出情報生成手段および前記共有情報算出手段におけるスカラー倍計算は、前記請求項5のスカラー倍装置を用いて行うこと
    を特徴とするデータ共有システム。
JP2006032697A 2006-02-09 2006-02-09 楕円曲線暗号における事前計算テーブル作成装置 Withdrawn JP2007212768A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006032697A JP2007212768A (ja) 2006-02-09 2006-02-09 楕円曲線暗号における事前計算テーブル作成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006032697A JP2007212768A (ja) 2006-02-09 2006-02-09 楕円曲線暗号における事前計算テーブル作成装置

Publications (1)

Publication Number Publication Date
JP2007212768A true JP2007212768A (ja) 2007-08-23

Family

ID=38491260

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006032697A Withdrawn JP2007212768A (ja) 2006-02-09 2006-02-09 楕円曲線暗号における事前計算テーブル作成装置

Country Status (1)

Country Link
JP (1) JP2007212768A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101350987B1 (ko) 2011-10-31 2014-01-16 삼성에스디에스 주식회사 이산 대수 계산을 위한 분산 처리 시스템 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101350987B1 (ko) 2011-10-31 2014-01-16 삼성에스디에스 주식회사 이산 대수 계산을 위한 분산 처리 시스템 및 방법
US9032007B2 (en) 2011-10-31 2015-05-12 Samsung Sds Co., Ltd. Distributed processing system and method for discrete logarithm calculation

Similar Documents

Publication Publication Date Title
US7904498B2 (en) Modular multiplication processing apparatus
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
KR101269737B1 (ko) 암호 처리 장치 및 암호 처리 방법과 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
US20090136025A1 (en) Method for scalarly multiplying points on an elliptic curve
JP2004501385A (ja) 楕円曲線暗号化方法
US6480606B1 (en) Elliptic curve encryption method and system
JP2003098962A (ja) 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
Koppermann et al. 18 seconds to key exchange: Limitations of supersingular isogeny Diffie-Hellman on embedded devices
JP4351987B2 (ja) モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
US9419789B2 (en) Method and apparatus for scalar multiplication secure against differential power attacks
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
JP2004163687A (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム
JP2003255831A (ja) 楕円曲線スカラー倍計算方法及び装置
JP2007212768A (ja) 楕円曲線暗号における事前計算テーブル作成装置
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
JP4598269B2 (ja) 楕円曲線上の高速有限体演算
KR100974624B1 (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체
JPH1152854A (ja) 有限体上の四則演算装置及び楕円曲線上の群演算装置
JP2005316038A (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびプログラム
KR102253211B1 (ko) 소수체와 이진체 상의 타원곡선을 지원하는 공개키 암호 시스템의 하드웨어 구현을 위한 연산장치 및 방법
JP2004205870A (ja) 超楕円曲線スカラー倍演算方法及び装置
JP5179933B2 (ja) データ処理装置
JP2006309201A (ja) 楕円曲線暗号における多重スカラー倍計算装置、署名検証装置、及び、それらのプログラム。

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080815

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20091109