JP3794266B2 - 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体 - Google Patents

楕円曲線スカラー倍計算方法及び装置並びに記憶媒体 Download PDF

Info

Publication number
JP3794266B2
JP3794266B2 JP2000393279A JP2000393279A JP3794266B2 JP 3794266 B2 JP3794266 B2 JP 3794266B2 JP 2000393279 A JP2000393279 A JP 2000393279A JP 2000393279 A JP2000393279 A JP 2000393279A JP 3794266 B2 JP3794266 B2 JP 3794266B2
Authority
JP
Japan
Prior art keywords
elliptic curve
point
scalar
coordinates
montgomery
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 - Fee Related
Application number
JP2000393279A
Other languages
English (en)
Other versions
JP2002207424A (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.)
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 JP2000393279A priority Critical patent/JP3794266B2/ja
Priority to US10/049,264 priority patent/US20030156714A1/en
Priority to EP01982747A priority patent/EP1445891A4/en
Priority to PCT/JP2001/009781 priority patent/WO2002039664A2/ja
Publication of JP2002207424A publication Critical patent/JP2002207424A/ja
Application granted granted Critical
Publication of JP3794266B2 publication Critical patent/JP3794266B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Description

【0001】
【発明の属する技術分野】
本発明はコンピュータネットワークにおけるセキュリティ技術に係り、特に楕円曲線暗号における暗号処理実行方法に関する。
【0002】
【従来の技術】
楕円曲線暗号はN.Koblitz, V.S.Millerにより提案された公開鍵暗号の一種である。公開鍵暗号には、公開鍵と呼ばれる一般に公開してよい情報と、秘密鍵と呼ばれる秘匿しなければならない秘密情報がある。与えられたメッセージの暗号化や署名の検証には公開鍵を用い、与えられたメッセージの復号化や署名の作成には秘密鍵を用いる。楕円曲線暗号における秘密鍵は、スカラー値が担っている。また、楕円曲線暗号の安全性は楕円曲線上の離散対数問題の求解が困難であることに由来している。ここで楕円曲線上の離散対数問題とは、楕円曲線上のある点Pとそのスカラー倍の点dPが与えられた時、スカラー値dを求める問題である。ここにおいて、楕円曲線上の点とは、楕円曲線の定義方程式をみたす数の組をいい、楕円曲線上の点全体には、無限遠点という仮想的な点を単位元とした演算、すなわち楕円曲線上の加法(乃至は加算)が定義される。そして、同じ点同士の楕円曲線上の加法のことを、特に楕円曲線上の2倍算という。楕円曲線上の2点の加法は次のようにして計算される。2点を通る直線を引くとその直線は楕円曲線と他の点において交わる。その交わった点とx軸に関して対称な点を加法を行なった結果の点とする。楕円曲線上の点の2倍算は次のようにして計算される。楕円曲線上の点における接線をひくと、その接線は楕円曲線上の他の点において交わる。その交わった点とx座標に関して対称な点を2倍算を行なった結果の点とする。ある点に対し、特定の回数だけ加法を行なうことをスカラー倍といい、その結果をスカラー倍点、その回数のことをスカラー値という。
【0003】
情報通信ネットワークの進展と共に電子情報に対する秘匿や認証の為に暗号技術は不可欠な要素となってきている。そこでは暗号技術の安全性とともに高速化が望まれている。楕円曲線上の離散対数問題が非常に困難である為に、素因数分解の困難性を安全性の根拠にしているRSA暗号と比べて、楕円曲線暗号は鍵長を比較的短くすることができる。そのため比較的高速な暗号処理が可能である。しかしながら、処理能力の制限されているスマートカードや大量の暗号処理を行なう必要のあるサーバ等においては、必ずしも満足できる程高速であるとは限らない。それゆえに暗号のさらなる高速化が必要となる。
【0004】
楕円曲線暗号には、ワイエルシュトラス型楕円曲線と呼ばれる楕円曲線が通常用いられている。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514, Springer-Verlag, (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この計算方法は、スカラー倍点の座標を、省略することなく正確に表示している。すなわち、アフィン座標系であれば、x座標及びy座標、射影座標乃至はヤコビアン座標であれば、X座標、Y座標及びZ座標の値を全て与えている。
【0005】
一方でモンゴメリ型楕円曲線BY=X+AX+X(A,B∈F)を用いるとワイエルシュトラス型楕円曲線よりも高速に演算を実行できることがP.L.Montgomery, Speeding the Pollard and Elliptic Curve Methods of Factorization, Math. Comp. 48 (1987) pp.243-264. に記載されている。これは、スカラー値の特定のビットの値に依存して、楕円曲線上の点の組(mP,(m+1)P)から点の組(2mP,(2m+1)P)乃至は点の組((2m+1)P,(2m+2)P)を繰り返し計算するスカラー倍計算方法において、モンゴメリ型楕円曲線を利用することにより、加算及び2倍算の計算時間が短縮されることに由来する。このスカラー倍計算法は、ワイエルシュトラス型楕円曲線における、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いた場合よりも、高速に計算することができる。しかしながら、この方法は楕円曲線上の点のy座標の値は計算しない。多くの暗号処理においては、本質的にy座標を用いないので、この事は問題にはならないが、一部の暗号処理を実行する又は完全な形で標準に準拠しようとすれば、y座標の値も必要となる。
【0006】
以上は楕円曲線の定義体の標数が5以上の素数の場合であるが、他方、標数2の有限体上定義された楕円曲線に対しては、スカラー倍点の完全な座標を与え且つ高速なスカラー倍計算方法が J.Lopez, R.Dahab, Fast Multiplication on Elliptic Curves over GF(2m) without Precomputation, Cryptographics Hardware and Embedded Systems: Proceedings of CHES'99, LNCS 1717, Springer-Verlag, (1999) pp.316-327. に記載されている。
【0007】
【発明が解決しようとする課題】
上記従来技術により、標数が5以上の有限体上定義された楕円曲線を用いて楕円曲線暗号を構成した場合、ワイエルシュトラス型楕円曲線においてウィンドウ法及び混合座標系を用いると、スカラー倍点の座標を完全に計算することができるが、モンゴメリ型楕円曲線のスカラー倍計算方法を用いた場合程高速に計算することはできない。モンゴメリ型楕円曲線におけるスカラー倍計算方法を用いると、ワイエルシュトラス型楕円曲線においてウィンドウ法及び混合座標系を用いた場合より高速に計算することが可能であるが、スカラー倍点の座標を完全に与えること、すなわちy座標を与えることができない。したがって、スカラー倍計算方法として、高速化を計ろうとするとスカラー倍点の座標を完全に与えることができず、スカラー倍点の座標を完全に与えようとすると高速に計算ができないという状態にあった。
【0008】
本発明の目的は、標数が5以上の有限体上定義された楕円曲線において、モンゴメリ型楕円曲線におけるスカラー倍演算と同程度の高速さで、スカラー倍点の座標を完全に与えることができるスカラー倍計算方法を提供することにある。
【0009】
【課題を解決するための手段】
上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義された楕円曲線において、スカラー値及び楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報から完全な座標を復元するステップとを有することを特徴とする。
【0010】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義された楕円曲線において、スカラー値及び楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報からアフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【0011】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義された楕円曲線において、スカラー値及び楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報から射影座標において完全な座標を復元するステップとを有することを特徴とする。
【0012】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報から完全な座標を復元するステップとを有することを特徴とする。
【0013】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報から完全な座標を復元するステップとを有することを特徴とする。
【0014】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のX座標及びZ座標並びに前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を加算した点の射影座標におけるX座標及びZ座標を与え、アフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【0015】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のX座標及びZ座標並びに前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を加算した点の射影座標におけるX座標及びZ座標を与え、射影座標において完全な座標を復元するステップとを有することを特徴とする。
【0016】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のX座標及びZ座標、前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を加算した点の射影座標におけるX座標及びZ座標並びに前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を減算した点の射影座標におけるX座標及びZ座標を与え、アフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【0017】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のX座標及びZ座標、前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を加算した点の射影座標におけるX座標及びZ座標並びに前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を減算した点の射影座標におけるX座標及びZ座標を与え、射影座標において完全な座標を復元するステップとを有することを特徴とする。
【0018】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたモンゴメリ型楕円曲線において、スカラー値及びモンゴメリ型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報としてアフィン座標で与えられた前記スカラー倍点のx座標、前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を加算した点のアフィン座標におけるx座標並びに前記スカラー倍点と前記モンゴメリ型楕円曲線上の点を減算した点のアフィン座標におけるx座標を与え、アフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【0019】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のX座標及びZ座標、前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を加算した点の射影座標におけるX座標及びZ座標並びに前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を減算した点の射影座標におけるX座標及びZ座標を与え、アフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【0020】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報として射影座標で与えられた前記スカラー倍点のX座標及びZ座標、前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を加算した点の射影座標におけるX座標及びZ座標並びに前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を減算した点の射影座標におけるX座標及びZ座標を与え、射影座標において完全な座標を復元するステップとを有することを特徴とする。
【0021】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記スカラー倍点の部分情報を計算するステップと、前記スカラー倍点の部分情報としてアフィン座標で与えられた前記スカラー倍点のx座標、前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を加算した点のアフィン座標におけるx座標並びに前記スカラー倍点と前記ワイエルシュトラス型楕円曲線上の点を減算した点のアフィン座標におけるx座標を与え、アフィン座標において完全な座標を復元するステップとを有することを特徴とする。
【0022】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報からワイエルシュトラス型楕円曲線において完全な座標を復元するステップとを有することを特徴とする。
【0023】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報からモンゴメリ型楕円曲線において完全な座標を復元するステップと、前記モンゴメリ型楕円曲線において完全な座標が復元されたスカラー倍点からワイエルシュトラス型楕円曲線におけるスカラー倍点を計算するステップとを有することを特徴とする。
【0024】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報としてモンゴメリ型楕円曲線において射影座標で与えられたスカラー倍点のX座標及びZ座標並びに前記スカラー倍点とモンゴメリ型楕円曲線上の点を加算した点の射影座標におけるX座標及びZ座標を与え、ワイエルシュトラス型楕円曲線においてアフィン座標における完全な座標を復元するステップとを有することを特徴とする。
【0025】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報としてモンゴメリ型楕円曲線において射影座標で与えられたスカラー倍点のX座標及びZ座標並びに前記スカラー倍点とモンゴメリ型楕円曲線上の点を加算した点の射影座標におけるX座標及びZ座標を与え、ワイエルシュトラス型楕円曲線において射影座標における完全な座標を復元するステップとを有することを特徴とする。
【0026】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報としてモンゴメリ型楕円曲線において射影座標で与えられたスカラー倍点のX座標及びZ座標、前記スカラー倍点とモンゴメリ型楕円曲線上の点を加算した点の射影座標におけるX座標及びZ座標並びに前記スカラー倍点とモンゴメリ型楕円曲線上の点を減算した点の射影座標におけるX座標及びZ座標を与え、ワイエルシュトラス型楕円曲線においてアフィン座標における完全な座標を復元するステップとを含むことを特徴とする。
【0027】
また本発明は、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報としてモンゴメリ型楕円曲線において射影座標で与えられたスカラー倍点のX座標及びZ座標、前記スカラー倍点とモンゴメリ型楕円曲線上の点を加算した点の射影座標におけるX座標及びZ座標並びに前記スカラー倍点とモンゴメリ型楕円曲線上の点を減算した点の射影座標におけるX座標及びZ座標を与え、ワイエルシュトラス型楕円曲線において射影座標における完全な座標を復元するステップとを有することを特徴とする。
【0028】
また上記目的を達する一手段として、楕円曲線暗号における標数5以上の有限体上定義されたワイエルシュトラス型楕円曲線において、スカラー値及びワイエルシュトラス型楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、前記ワイエルシュトラス型楕円曲線をモンゴメリ型楕円曲線に変換するステップと、モンゴメリ型楕円曲線におけるスカラー倍点の部分情報を計算するステップと、前記モンゴメリ型楕円曲線におけるスカラー倍点の部分情報としてモンゴメリ型楕円曲線においてアフィン座標で与えられたスカラー倍点のx座標、前記スカラー倍点とモンゴメリ型楕円曲線上の点を加算した点のアフィン座標におけるx座標並びに前記スカラー倍点とモンゴメリ型楕円曲線上の点を減算した点のアフィン座標におけるx座標を与え、ワイエルシュトラス型楕円曲線においてアフィン座標における完全な座標を復元するステップとを有することを特徴とする。
【0029】
【発明の実施の形態】
以下、本発明の実施例を図面により説明する。
【0030】
図1は暗号/復号処理装置の構成を示したものである。この暗号/復号処理装置101は、入力されたメッセージの暗号化、暗号化されたメッセージの復号化のいずれも行えるようにしたものである。尚、ここで扱う楕円曲線は標数5以上の楕円曲線とする。
【0031】
入力されたメッセージを暗号化し、暗号化されたメッセージを復号化する場合、一般に次の数1が成立する。
【0032】
【数1】
Pm+k(aQ)−a(kQ)=Pm …数1
ここで、Pはメッセージであり、kは乱数、aは秘密鍵を示す定数、Qは定点である。この式のPm+k(aQ)のaQは、公開鍵を示しており、入力されたメッセージを公開鍵によって暗号化することを示している。a(kQ)のaは秘密鍵を示しており、秘密鍵により復号化することを示している。
【0033】
従って、図1に示した暗号/復号処理装置101をメッセージの暗号化だけに用いる場合には、Pm+k(aQ)及びkQを計算して出力し、復号化だけに用いる場合には、秘密鍵a及びkQより−a(kQ)を計算し、(Pm+k(aQ))−a(kQ)を計算して出力するようにすればよい。
【0034】
図1に示した暗号/復号処理装置101は、処理部110と、記憶部120、レジスタ部130とを有している。処理部120は、暗号化処理に必要な処理を機能ブロックで示しており、入力されたメッセージの暗号化や暗号化されたメッセージの復号化を行う暗号/復号処理部102、暗号/復号処理部102で暗号化や復号化を行うのに必要なパラメータを演算するスカラー倍計算部103とを有している。記憶部120は、定数、秘密情報(例えば、秘密鍵である。)などを記憶している。レジスタ部130は、暗号化又は復号化処理において演算の結果や、記憶部120に記憶された情報を一次的に記憶する。尚、処理部110、レジスタ部130は以下に説明する処理を行う専用の演算装置やCPUなどにより実現することができ、記憶部120は、RAM、ROMなどによって実現することができる。
【0035】
次に、図1に示した暗号/復号処理装置101の動作について説明する。図3は、暗号/復号処理装置101において暗号化、復号化を行う場合の各部の情報の伝達を示したものである。
【0036】
まず、図30により入力されたメッセージを暗号化する場合の動作について説明する。
【0037】
暗号/復号処理部102へメッセージが入力されると(3001)、入力されたメッセージのビット長が予め定めたビット長か否かを判断する。予め定めたビット長より長い場合には、予め定めたビット長となるようにメッセージを区切る(以下、メッセージは所定のビット長に区切られているものとして説明する。)。次に、暗号/復号処理部102は、メッセージのビット列によって表される数値をx座標(x1)にもつ楕円曲線上のy座標の値(y1)を計算する。例えば、モンゴメリ型楕円曲線は、By1=x1+Ax1+x1で表されるので、これよりy座標の値を求めることができる。尚、B、Aはそれぞれ定数である。暗号化処理部120は、公開鍵aQ及びQのx座標、y座標の値をスカラー倍計算部103へ送る。このとき、暗号化処理部120は乱数を生成し、これをスカラー倍計算部103へ送る(3002)。スカラー倍計算部103は、Qのx座標、y座標の値、乱数によるスカラー倍点(xd1、yd1)と、公開鍵aQのx座標、y座標の値、乱数によるスカラー倍点(xd2、yd2)とを計算し(3003)、計算されたスカラー倍点を暗号化処理部102へ送る(3004)。暗号化処理部102は、送られたスカラー倍点を用いて、暗号化処理を行う(3005)。例えば、モンゴメリ型の楕円曲線については、次式により暗号化されたメッセージxe1、xe2を得る。
【0038】
【数2】
xe1=B((yd1−y1)/(xd1−x1))−A−x1−xd1 …数2
【0039】
【数3】
xe2=xd2 …数3
暗号/復号処理装置101は暗号/復号処理部102で暗号化されたメッセージを出力する。
【0040】
次に、図32により暗号化されたメッセージを復号化する場合の動作について説明する。
【0041】
暗号/復号処理部102へ暗号化されたメッセージが入力されると(3201)、暗号化されたメッセージのビット列によって表される数値をx座標にもつ楕円曲線上のy座標の値を計算する。ここで、暗号化されたメッセージがxe1、xe2のビット列であり、モンゴメリ型楕円曲線の場合、y座標の値(ye1)はBye1=xe1+Axe1+xe1から得られる。尚、B、Aはそれぞれ定数である。暗号化処理部120は、x座標、y座標の値(xe1、ye1)をスカラー倍計算部103へ送る(3202)。スカラー倍計算部103は記憶部120から秘密情報を読み出し(3203)、x座標、y座標の値、秘密情報からスカラー倍点(xd3、yd3)を計算し(3204)、計算されたスカラー倍点を暗号/復号処理部102へ送る(3205)。暗号化処理部102は、送られたスカラー倍点を用いて、復号化処理を行う(3206)。例えば、暗号化されたメッセージが、xe1、xe2のビット列であり、モンゴメリ型の楕円曲線の場合は、次式によりxf1を得る。
【0042】
【数4】
xf1=B((ye2+yd3)/(xe2-xd3)) -A-xe2-xd3 …数4
このxf1は、暗号化される前のメッセージx1に相当するものである。
【0043】
以上のようにして、暗号/復号処理部102により暗号化、または復号化処理が行われる。
【0044】
次に、暗号化処理装置101のスカラー倍計算部103の処理について説明する。ここでは、暗号化処理装置101が、復号化処理を行う場合を例に以下、説明する。
【0045】
図2は、スカラー倍計算部103の機能ブロックを示したものである。図25は、スカラー倍計算部103の動作を示したものである。
【0046】
高速スカラー倍計算部202が、秘密情報であるスカラー値及び暗号化されたメッセージと、暗号化されたメッセージがX座標となる楕円曲線上のY座標の値である楕円曲線上の点を受け取る(ステップ2501)と、高速スカラー倍計算部202は受け取ったスカラー値と楕円曲線上の点からスカラー倍点の座標の一部の値を計算し(ステップ2502)、その情報を座標復元部203に与える(ステップ2503)。座標復元部203は与えられたスカラー倍点の情報及び入力された楕円曲線上の点よりスカラー倍点の座標の復元を行なう(ステップ2504)。スカラー倍計算装置201は完全に座標が与えられたスカラー倍点を計算結果として出力する(ステップ2505)。ここで、完全に座標が与えられたスカラー倍点とは、y座標が計算されて出力されることを意味する(以下、同じ。)。
【0047】
以下、スカラー倍計算部103の高速スカラー倍計算部202、座標復元部203についていくつかの実施例を説明する。
【0048】
第1の実施例は、スカラー倍計算装置103がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力するものである。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1) の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値Xd、Zd、Xd+1、Zd+1、x及びyよりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標xd及びydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0049】
次に図11により、座標x,y,Xd,Zd,Xd+1,Zd+1が与えられた場合にxd,ydを出力する座標復元部の処理について説明する。
【0050】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X,Y,Z)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0051】
ステップ1101においてXd×xが計算され、レジスタT1に格納される。ステップ1102においてT1-Zdが計算される。ここでレジスタT1にはXdxが格納されており、したがってXdx-Zd が計算される。その結果がレジスタT1に格納される。ステップ1103においてZd×xが計算され、レジスタT2に格納される。ステップ1104においてXd-T2が計算される。ここでレジスタT2にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタT2に格納される。ステップ1105においてXd+1×T2が計算される。ここでレジスタT2にはXd-xZdが格納されており、したがってXd+1(Xd-xZd)が計算される。その結果がレジスタT3に格納される。ステップ1106においてT2の2乗が計算される。ここでレジスタT2には(Xd-xZd)が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1107においてT2×Xd+1が計算される。ここでレジスタT2には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1108においてT2×Zd+1が計算される。ここでレジスタT2にはXd+1(Xd-xZd)2が格納されており、したがってZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1109においてT2×yが計算される。ここでレジスタT2にはZd+1Xd+1(Xd-xZd)2が格納されており、したがってyZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1110においてT2×Bが計算される。ここでレジスタT2にはyZd+1Xd+1(Xd-xZd)2が格納されており、したがってByZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1111においてT2×Zdが計算される。ここでレジスタT2にはByZd+1Xd+1(Xd-xZd)2が格納されており、したがってByZd+1Xd+1(Xd-xZd)2Zdが計算される。その結果がレジスタT2に格納される。ステップ1112においてT2×Xdが計算される。ここでレジスタT2にはByZd+1Xd+1(Xd-xZd)2Zdが格納されており、したがってByZd+1Xd+1(Xd-xZd)2ZdXdが計算される。その結果がレジスタT4に格納される。ステップ1113においてT2×Zdが計算される。ここでレジスタT2にはByZd+1Xd+1(Xd-xZd)2Zdが格納されており、したがってByZd+1Xd+1(Xd-xZd)2Zdが計算される。その結果がレジスタT2に格納される。ステップ1114においてレジスタT2の逆元が計算される。ここでレジスタT2にはByZd+1Xd+1(Xd-xZd)2Zd 2が格納されており、したがって1/ByZd+1Xd+1(Xd-xZd)2Zd 2が計算される。その結果がレジスタT2に格納される。ステップ1115においてT2×Tが計算される。ここでレジスタT2には1/ByZd+1Xd+1(Xd-xZd)2Zd 2がレジスタTにはByZd+1Xd+1(Xd-xZd)2ZdXdがそれぞれ格納されており、したがって(ByZd+1Xd+1(Xd-xZd)2ZdXd)/(ByZd+1Xd+1(Xd-xZd)2Zd 2)(=Xd/Zd)が計算される。その結果がレジスタxdに格納される。ステップ1116においてT1×Zd+1が計算される。ここでレジスタT1にはXdx-Zdが格納されており、したがってZd+1(Xdx-Zd)が計算される。その結果がレジスタT4に格納される。ステップ1117においてレジスタT1の2乗が計算される。ここでレジスタT1には(Xdx-Zd)が格納されており、したがって(Xdx-Zd)2が計算される。その結果がレジスタT1に格納される。ステップ1118においてT1×Tが計算される。ここでレジスタT1には(Xdx-Zd)2がレジスタTには1/ByZd+1Xd+1(Xd-xZd)2がそれぞれ格納されており、したがって(Xdx-Zd)2/ByZd+1Xd+1(Xd-xZd)2Zd 2 が計算される。その結果がレジスタT2に格納される。ステップ1119においてT3+T4が計算される。ここでレジスタT3にはXd+1(Xd-xZd) がレジスタT4にはZd+1 (Xdx-Zd)がそれぞれ格納されており、したがってXd+1(Xd-xZd)+Zd+1(Xdx-Zd)が計算される。その結果がレジスタT1に格納される。ステップ1120においてT3-T4が計算される。ここでレジスタT3にはXd+1(Xd-xZd)がレジスタT4にはZd+1(Xdx-Zd)がそれぞれ格納されており、したがってXd+1(Xd-xZd)-Zd+1(Xdx-Zd)が計算される。その結果がレジスタT3に格納される。ステップ1121においてT1×T3が計算される。ここでレジスタT1にはXd+1(Xd-xZd)+Zd+1(Xdx-Zd)がレジスタT3にはXd+1(Xd-xZd)-Zd+1(Xdx-Zd)がそれぞれ格納されており、したがって{Xd+1(Xd-xZd)+Zd+1(Xdx-Zd)}{Xd+1(Xd-xZd)-Zd+1(Xdx-Zd)}が計算される。その結果がレジスタT1に格納される。ステップ1122においてT1×T2が計算される。ここでレジスタT1には{Xd+1(Xd-xZd)+Zd+1(Xdx-Zd)}{Xd+1(Xd-xZd)-Zd+1(Xdx-Zd)}がレジスタT2には(Xdx-Zd)2/ByZd+1Xd+1(Xd-xZd)2Zd 2がそれぞれ格納されており、したがって
【0052】
【数5】
Figure 0003794266
【0053】
が計算される。その結果がydに格納される。xdにはステップ1115において(ByZd+1Xd+1(Xd-xZd)2 ZdXd)/(ByZd+1Xd+1(Xd-xZd) 2 Xd 2)が格納され、その後更新が行なわれないので、その値が保持されている。
【0054】
上記手順により座標復元部203へ与えられたx、y、Xd、Zd、Xd+1、Zd+1からモンゴメリ型楕円曲線におけるスカラー倍点のアフィン座標(xd,yd)における値が全て復元される理由は以下の通りである。尚、点(d+1)Pは点dPに点Pを加算した点であり、点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、次の式を得る。
【0055】
【数6】
Figure 0003794266
【0056】
【数7】
Figure 0003794266
【0057】
両辺を各々減算することにより、
【0058】
【数8】
Figure 0003794266
【0059】
を得る。したがって、
【0060】
【数9】
Figure 0003794266
【0061】
となる。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1、xd-1=Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【0062】
【数10】
Figure 0003794266
【0063】
モンゴメリ型楕円曲線の射影座標での加算公式は
【0064】
【数11】
Figure 0003794266
【0065】
【数12】
Figure 0003794266
【0066】
である。ここでXm及びZmはモンゴメリ型楕円曲線上の点Pのm倍点mPの射影座標におけるX座標及びZ座標、Xn及びZnはモンゴメリ型楕円曲線上の点Pのn倍点nPの射影座標におけるX座標及びZ座標、Xm-n及びZm-nはモンゴメリ型楕円曲線上の点Pの(m-n)倍点(m-n)Pの射影座標におけるX座標及びZ座標、Xm+n及びZm+nはモンゴメリ型楕円曲線上の点Pの(m+n)倍点(m+n)Pの射影座標におけるX座標及びZ座標であり、m,nはm>nをみたす正整数である。この式はXm/Zm=xm、Xn/Zn=xn、Xm-n/Zm-n=xm-nが不変のとき、Xm+n/Zm+n=xm+nも不変となるので、射影座標での公式としてうまく働いている。他方、
【0067】
【数13】
Figure 0003794266
【0068】
【数14】
Figure 0003794266
【0069】
とおくと、この式でXm/Zm=xm、Xn/Zn=xn、Xm+n/Zm+n=xm+nが不変のとき、X'm-n/Z'm-nも不変となる。また、X'm-n/Z'm-n=Xm-n/Zm-nをみたすので、xm-nの射影座標としてX'm-n,Z'm-nをとってよい。m=d、n=1として上記公式を用いてydの式よりXd-1及びZd-1を消去し、X1=x,Z1=1とおくことにより、次の式を得る。
【0070】
【数15】
Figure 0003794266
【0071】
d=Xd/Zdであるが、逆元演算の回数を減らす目的でydの分母と通分することにより、
【0072】
【数16】
Figure 0003794266
【0073】
となる。ここで、xd ydは図11の処理により与えられている。したがって、アフィン座標(xd,yd)の値が全て復元されていることになる。
【0074】
上記手順はステップ1101、ステップ1103、ステップ1105、ステップ1107、ステップ1108、ステップ1109、ステップ1110、ステップ1111、ステップ1112、ステップ1113、ステップ1115、ステップ1116、ステップ1118、ステップ1121及びステップ1122において有限体上の乗算の計算量を必要とする。また、ステップ1106及びステップ1117において有限体上の2乗算の計算量を必要とする。また、ステップ1114において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS及び有限体上の逆元演算の計算量をIとすると、上記手順は15M+2S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M、I=40Mと仮定すると座標復元の計算量は56.6Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0075】
尚、上記手順をとらなくても、上記計算式により与えられたxd,ydの値が計算できればxd,ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ1110における乗算の計算量を削減することができる。
【0076】
次に図4により、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力する高速スカラー倍計算部の処理を説明する。
【0077】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1を出力する。ステップ401として、変数Iに初期値1を代入する。ステップ402として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ403として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ402で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ404として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ413へ行く。一致しなければステップ405へ行く。ステップ405として、変数Iを1増加させる。ステップ406として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ406へ行く。そのビットの値が1であればステップ410へ行く。ステップ407として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ408へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ408として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ409へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ409として、ステップ408で求めた点2mPとステップ407で求めた点(2m+1)Pを点の組(2mP, (2m+1)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ404へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ410として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ411へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ411として、射影座標により表された点の組(mP,(m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ412へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ411として、ステップ410で求めた点(2m+1)Pとステップ411で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ404へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ413として、射影座標で表された点の組(mP,(m+1)P)から、射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとして、射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、出力する。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。また上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【0078】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ407において加算の計算量、ステップ408において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ410において加算の計算量、ステップ411において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ404、ステップ405、ステップ406、ステップ407、ステップ408、ステップ409乃至はステップ404、ステップ405、ステップ406、ステップ410、ステップ411、ステップ412の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ402での2倍算の計算量を考慮に入れると、全体の計算量は(6M+4S)(k―1)+3M+2Sとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度と見積もられるので、全体の計算量はおおよそ(9.2k―4.6)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1467Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1600Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0079】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Yd,Xd+1,Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0080】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は15M+2S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k―4.6)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+52)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1524Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0081】
第2の実施例は、スカラー倍計算部103がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算し出力するものである。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値Xd、Zd、Xd+1、Zd+1、x及びyよりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標Xd,Yd及びZdの復元を行なう。スカラー倍計算装置103は射影座標において完全に座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算結果として出力する。
【0082】
次に図9により、座標x、y Xd、Zd、Xd+1、Zd+1が与えられた場合にXd、Yd、Zdを出力する座標復元部の処理について説明する。
【0083】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順で射影座標おいて完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0084】
ステップ901においてXd×xが計算され、レジスタT1に格納される。ステップ902においてT1−Zdが計算される。ここでレジスタT1にはXdxが格納されており、したがってXdx−Zdが計算される。その結果がレジスタT1に格納される。ステップ903においてZd×xが計算され、レジスタT2に格納される。ステップ904においてXd−T2が計算される。ここでレジスタT2にはZdxが格納されており、したがってXd−xZdが計算される。その結果がレジスタT2に格納される。ステップ905においてZd+1×T1が計算される。ここでレジスタT1にはXdx−Zdが格納されており、したがってZd+1(Xdx−Zd)が計算される。その結果がレジスタT3に格納される。ステップ906においてXd+1×T2が計算される。ここでレジスタT2にはXd−xZdが格納されており、したがってXd+1(Xd−xZd)が計算される。その結果がレジスタT4に格納される。ステップ907においてT1の2乗が計算される。ここでレジスタT1にはXdx−Zdが格納されており、したがって(Xdx−Zd)2が計算される。その結果がレジスタT1に格納される。ステップ908においてT2の2乗が計算される。ここでレジスタT2にはXd−xZdが格納されており、したがって(Xd−xZd)2が計算される。その結果がレジスタT2に格納される。ステップ909においてT2×Zdが計算される。ここでレジスタT2には(Xd−xZd)2が格納されており、したがってZd (Xd−xZd)2が計算される。その結果がレジスタT2に格納される。ステップ910においてT2×Xd+1が計算される。ここでレジスタT2にはZd (Xd−xZd)2が格納されており、したがってXd+1Zd(Xd−xZd)2が計算される。その結果がレジスタT2に格納される。ステップ911においてT2×Zd+1が計算される。ここでレジスタT2にXd+1Zd(Xd−xZd)2が格納されており、したがってZd+1Xd+1Zd(Xd−xZd)2が計算される。その結果がレジスタT2に格納される。ステップ912においてT2×yが計算される。ここでレジスタT2にはZd+1Xd+1Zd(Xd−xZd)2が格納されており、したがってyZd+1Xd+1Zd(Xd−xZd)2が計算される。その結果がレジスタT2に格納される。ステップ913においてT2×Bが計算される。ここでレジスタT2にはyZd+1Xd+1Zd(Xd−xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd−xZd)2が計算される。その結果がレジスタT2に格納される。ステップ914においてT2×Xdが計算される。ここでレジスタT2にはByZd+1Xd+1Zd(Xd−xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd−xZd)2Xdが計算される。その結果がXdに格納される。ステップ915においてT2×Zdが計算される。ここでレジスタT2にはByZd+1Xd+1Zd(Xd−xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd−xZd)2Zdが計算される。その結果がレジスタZdに格納される。ステップ916においてT3+T4が計算される。ここでレジスタT3にはZd+1(Xdx−Zd)がレジスタT4にはXd+1(Xd−xZd)が格納されており、したがってZd+1(Xdx−Zd)+Xd+1(Xd−xZd)が計算される。その結果がレジスタT2に格納される。ステップ917においてT3−T4が計算される。ここでレジスタT3にはZd+1(Xdx−Zd)がレジスタT4にはXd+1(Xd−xZd)が格納されており、したがってZd+1(Xdx−Zd)−Xd+1(Xd−xZd)が計算される。その結果がレジスタT3に格納される。ステップ918においてT1×T2が計算される。ここでレジスタT1には(Xdx−Zd)2がレジスタT2にはZd+1(Xdx−Zd)+Xd+1(Xd−xZd)が格納されており、したがって{Zd+1(Xdx−Zd)+Xd+1(Xd−xZd)}(Xdx−Zd)2が計算される。その結果がレジスタT1に格納される。ステップ919においてT1×T3が計算される。ここでレジスタT1には{Zd+1(Xdx−Zd)+Xd+1(Xd−xZd)}(Xdx−Zd)2がレジスタT3にはZd+1(Xdx−Zd)−Xd+1(Xd−xZd)が格納されており、したがって{Zd+1(Xdx−Zd)+Xd+1(Xd−xZd)}{Zd+1(Xdx−Zd)−Xd+1(Xd−xZd)}(Xdx−Zd)2が計算される。その結果がレジスタYdに格納される。したがってレジスタYdには{Zd+1(Xdx−Zd)+Xd+1(Xd−xZd)}{Zd+1(Xdx−Zd)−Xd+1(Xd−xZd)}(Xdx−Zd)2が格納されている。レジスタXdにはステップ914においてByZd+1Xd+1Zd+1(Xd−xZd)2Xdが格納され、その後更新が行われないので、その値が保持されている。レジスタZdにはステップ915においてBy Zd+1Xd+1Zd+1(Xd−xZd)2Zdが格納され、その後更新が行われないので、その値が保持されている。
【0085】
上記手順により与えられたx、y、Xd、Zd、Xd+1 Zd+1からスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点であり、点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、次の数6、数7を得る。両辺を各々減算することにより、数8を得る。したがって、数9となる。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1、xd-1=Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数10を得る。
【0086】
モンゴメリ型楕円曲線の射影座標での加算公式は数11、数12である。ここでXm及びZmはモンゴメリ型楕円曲線上の点Pのm倍点mPの射影座標におけるX座標及びZ座標、Xn及びZnはモンゴメリ型楕円曲線上の点Pのn倍点nPの射影座標におけるX座標及びZ座標、Xm-n及びZm-nはモンゴメリ型楕円曲線上の点Pの(m-n)倍点(m-n)Pの射影座標におけるX座標及びZ座標、Xm+n及びZm+nはモンゴメリ型楕円曲線上の点Pの(m+n)倍点(m+n)Pの射影座標におけるX座標及びZ座標であり、m,nはm>nをみたす正整数である。この式はXm/Zm=xm、Xn/Zn=xn、Xm-n/Zm-n=xm-nが不変のとき、Xm+n/Zm+n=xm+nも不変となるので、射影座標での公式としてうまく働いている。他方、数14、数15とおくと、この式でXm/Zm=xm、Xn/Zn=xn、Xm+n/Zm+n=xm+nが不変のとき、X'm-n/Z'm-nも不変となる。また、X'm-n/Z'm-n=Xm-n/Zm-n=xm-nをみたすので、xm-nの射影座標としてX'm-n,Z'm-nをとってよい。m=d、n=1として上記公式を用いてydの式よりXd-1及びZd-1を消去し、X1=x,Z1=1とおくことにより、数15を得る。xd=Xd/Zdであるが、ydの分母と通分することにより、数16となる。
【0087】
その結果として、
【0088】
【数17】
Figure 0003794266
【0089】
とし、Xd及びZdをそれぞれ
【0090】
【数18】
Figure 0003794266
【0091】
【数19】
Figure 0003794266
【0092】
により更新すればよい。ここで、Xd,Yd,Zdは図9の処理により与えられている。したがって、射影座標(Xd,Yd,Zd)の値が全て復元されていることになる。
【0093】
上記手順はステップ901、ステップ903、ステップ905、ステップ906、ステップ909、ステップ910、ステップ911、ステップ912、ステップ913、ステップ914、ステップ915、ステップ918及びステップ919において有限体上の乗算の計算量を必要とする。また、ステップ907及びステップ908において有限体上の2乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をSとすると、上記手順は13M+2Sの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8Mと仮定すると座標復元の計算量は14.6Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0094】
尚、上記手順をとらなくても、上記計算式により与えられたXd、Yd、Zdの値が計算できればXd、Yd、Zdの値が復元できる。また、xd、ydが上記計算式により与えられる値を取るようにXd、Yd、Zdの値を選択し、その値が計算できればXd、Yd、Zdが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ913における乗算の計算量を削減することができる。
【0095】
次に、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムについて説明する。
【0096】
第2実施例の高速スカラー倍計算部202の高速スカラー倍計算方法として、第1実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部202において上記アルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0097】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は13M+2Sであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k―4.6)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+10)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1482Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ1600Mであり、これと比べて必要となる計算量は削減されている。
【0098】
第3の実施例は、スカラー倍計算装置103がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力するものである。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d−1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値値Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1、x及びyよりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標xd及びydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0099】
次に図12により、座標x、y、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1が与えられた場合にxd、ydを出力する座標復元部の処理について説明する。
【0100】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X,Y,Z)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0101】
ステップ1201においてXd-1×Zd+1が計算され、レジスタT1に格納される。ステップ1202においてZd-1×Xd+1が計算され、レジスタTに格納される。ステップ1203においてT1−Tが計算される。ここでレジスタT1にはXd-1Zd+1がレジスタTにはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がレジスタT1に格納される。ステップ1204においてZd×xが計算され、レジスタTに格納される。ステップ1205においてXd-Tが計算さる。ここでレジスタTにはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタTに格納される。ステップ1206においてTの2乗が計算される。ここでレジスタTにはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタTに格納される。ステップ1207においてT1×Tが計算される。ここでレジスタT1にはXd-1Zd+1-Zd-1Xd+1がレジスタTには(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がレジスタT1に格納される。ステップ1208において4×Byが計算される。その結果がレジスタTに格納される。ステップ1209においてT×Zd+1が計算される。ここでレジスタTには4Byが格納されており、したがって4ByZd+1が計算される。その結果がレジスタTに格納される。ステップ1210においてT×Zd-1が計算される。ここでレジスタTには4ByZd+1が格納されており、したがって4ByZd-1Zd+1が計算される。その結果がレジスタTに格納される。ステップ1211においてT×Zdが計算される。ここでレジスタTには4ByZd+1Zd-1が格納されており、したがって4ByZd+1Zd-1Zdが計算される。その結果がレジスタTに格納される。ステップ1212においてT×Xdが計算される。ここでレジスタTには4ByZd-1Zd+1Zdが格納されており、したがって4ByZd+1Zd-1ZdXdが計算される。その結果がレジスタT3に格納される。ステップ1213においてT×Zdが計算される。ここでレジスタTには4ByZd+1Zd-1Zdが格納されており、したがって4ByZd+1Zd-1ZdZdが計算される。その結果がレジスタTに格納される。ステップ1214においてレジスタTの逆元が計算される。ここでレジスタTには4ByZd+1Zd-1ZdZdが格納されており、したがって1/4ByZd+1Zd-1ZdZdが計算される。その結果がレジスタTに格納される。ステップ1215においてT×T3が計算される。ここでレジスタTには1/4ByZd+1Zd-1ZdZdがレジスタT3には4ByZd+1Zd-1ZdXd がそれぞれ格納されており、したがって(4ByZd+1Zd-1ZdXd)/(4ByZd+1Zd-1ZdZd)が計算される。その結果がレジスタxdに格納される。ステップ1216においてT1×Tが計算される。ここでレジスタT1には(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)がレジスタTには1/4ByZd+1Zd-1ZdZdがそれぞれ格納されており、したがって(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4ByZd-1Zd+1Zd 2が計算される。その結果がレジスタydに格納される。したがってレジスタydには(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4ByZd-1Zd+1Zd 2が格納されている。レジスタxdにはステップ1215において(4ByZd+1Zd-1ZdXd)/(4ByZd+1Zd-1ZdZd)が格納され、その後更新が行なわれないので、その値が保持されている。
【0102】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からモンゴメリ型楕円曲線におけるスカラー倍点のアフィン座標(xd,yd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点であり、点(d-1)Pは点dPから点Pを減算した点である。
【0103】
モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数6、数7を得る。両辺を各々減算することにより、数8を得る。したがって、数9となる。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1、xd-1=Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数10を得る。
【0104】
d=Xd/Zdであるが、逆元演算の回数を減らす目的でydの分母と通分することにより、
【0105】
【数20】
Figure 0003794266
【0106】
となる。このxd,ydは図12で示した処理により与えられ、したがってアフィン座標(xd,yd)の値が全て復元されていることになる。
【0107】
上記手順はステップ1201、ステップ1202、ステップ1204、ステップ1207、ステップ1208、ステップ1209、ステップ1210、ステップ1211、ステップ1212、ステップ1213、ステップ1215及びステップ1216において有限体上の乗算の計算量を必要とする。また、ステップ1206において有限体上の2乗算の計算量を必要とする。また、ステップ1214において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS及び有限体上の逆元演算の計算量をIとすると、上記手順は12M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M、I=40Mと仮定すると座標復元の計算量は52.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0108】
尚、上記手順をとらなくても、上記計算式により与えられたxd,ydの値が計算できればxd,ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ1208における乗算の計算量を削減することができる。
【0109】
次に図5により、スカラー値d及びモンゴメリ型楕円曲線上の点PからXd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力する高速スカラー倍計算部の処理について説明する。
【0110】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)のうちXd-1及びZd-1を出力する。ステップ501として、変数Iに初期値1を代入する。ステップ502として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ503として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ502で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ504として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ514へ行く。一致しなければステップ505へ行く。ステップ505として、変数Iを1増加させる。ステップ506として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ506へ行く。そのビットの値が1であればステップ510へ行く。ステップ507として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ508へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ508として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ509へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ509として、ステップ508で求めた点2mPとステップ507で求めた点(2m+1)Pを点の組(2mP, (2m+1)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ504へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ510として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ511へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ511として、射影座標により表された点の組(mP,(m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ512へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ511として、ステップ510で求めた点(2m+1)Pとステップ511で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ504へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ514として、射影座標で表された点の組(mP, (m+1)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標Zm-1を求め、それぞれXd-1及びZd-1とする。その後ステップ513へ行く。ステップ513として、射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとして、射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、Xd-1及びZd-1と共に出力する。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。また上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。またステップ514において(m-1)Pを求める際に、数10、数11の公式により求めてもよいし、mが奇数であれば、((m-1)/2)Pの値をステップ512の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の2倍算の公式より、(m-1)Pを求めてもよい。
【0111】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ507において加算の計算量、ステップ508において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ510において加算の計算量、ステップ511において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ504、ステップ505、ステップ506、ステップ507、ステップ508、ステップ509乃至はステップ504、ステップ505、ステップ506、ステップ510、ステップ511、ステップ512の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ502での2倍算の計算量とステップ514での(m-1)Pの計算に必要な計算量を考慮に入れると、全体の計算量は(6M+4S)k+Mとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度と見積もられるので、全体の計算量はおおよそ(9.2k+1)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1473Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1600Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0112】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd, Zd ,Xd+1, Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0113】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は12M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+1)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+53.8)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量はおおよそ1526Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0114】
第4の実施例は、スカラー倍計算部103がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算し出力する。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1、x及びyよりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標Xd,Yd及びZdの復元を行なう。スカラー倍計算装置103は射影座標において完全に座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算結果として出力する。
【0115】
次に図13により、座標x、y Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1が与えられた場合にXd、Yd、Zdを出力する座標復元部の処理について説明する。
【0116】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1 スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順で射影座標おいて完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0117】
ステップ1301においてXd-1×Zd+1が計算され、レジスタT1に格納される。ステップ1302においてZd-1×Xd+1が計算され、レジスタTに格納される。ステップ1303においてT1−Tが計算される。ここでレジスタT1にはXd-1Zd+1がレジスタTにはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がレジスタT1に格納される。ステップ1304においてZd×xが計算され、レジスタTに格納される。ステップ1305においてXd-Tが計算さる。ここでレジスタTにはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタTに格納される。ステップ1306においてTの2乗が計算される。ここでレジスタTにはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタTに格納される。ステップ1307においてT1×Tが計算される。ここでレジスタT1にはXd-1Zd+1-Zd-1Xd+1がレジスタTには(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がレジスタYdに格納される。ステップ1308において4×Byが計算される。その結果がレジスタTに格納される。ステップ1309においてT×Zd+1が計算される。ここでレジスタTには4Byが格納されており、したがって4ByZd+1が計算される。その結果がレジスタTに格納される。ステップ1310においてT×Zd-1が計算される。ここでレジスタTには4ByZd+1が格納されており、したがって4ByZd+1Zd-1が計算される。その結果がレジスタTに格納される。ステップ1311においてT×Zdが計算される。ここでレジスタTには4ByZd+1Zd-1が格納されており、したがって4ByZd+1Zd-1Zdが計算される。その結果がレジスタTに格納される。ステップ1312においてT×Xdが計算される。ここでレジスタTには4ByZd+1Zd-1Zdが格納されており、したがって4ByZd+1Zd-1ZdXdが計算される。その結果がレジスタXdに格納される。ステップ1313においてT×Zdが計算される。ここでレジスタTには4ByZd+1Zd-1Zdが格納されており、したがって4ByZd+1Zd-1ZdZdが計算される。その結果がZdに格納される。したがってZdには4ByZd+1Zd-1ZdZdが格納されている。レジスタYdにはステップ1307において(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が格納され、その後更新が行われないので、その値が保持されている。
【0118】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。これより、先に述べた数7を得ることができる。座標復元部203はスカラー倍点の射影座標で表された完全な座標として(Xd,Yd,Zd)を出力する。
【0119】
上記手順により与えられたx、y Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数6、数7を得る。両辺を各々減算することにより、数8を得る。したがって、数9となる。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1、xd-1=Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数7を得る。
【0120】
d=Xd/Zdであるが、ydの分母と通分することにより、数20となる。その結果として、数17、
【0121】
【数21】
Figure 0003794266
【0122】
とし、Xd及びZdをそれぞれ
【0123】
【数22】
Figure 0003794266
【0124】
【数23】
Figure 0003794266
【0125】
により更新すればよい。ここで示したXd,Yd,Zd,は図13で示した処理により与えられている。したがって、射影座標の値(Xd,Yd,Zd)が全て復元されていることになる。
【0126】
上記手順はステップ1301、ステップ1302、ステップ1304、ステップ1307、ステップ1308、ステップ1309、ステップ1310、ステップ1311、ステップ1312及びステップ1313において有限体上の乗算の計算量を必要とする。また、ステップ1306において有限体上の2乗算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、2乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をSとすると、上記手順は10M+Sの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8Mと仮定すると座標復元の計算量は10.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0127】
尚、上記手順をとらなくても、上記計算式により与えられたXd,Yd,Zdの値が計算できればXd,Yd,Zdの値が復元できる。また、xd,ydが上記計算式により与えられる値を取るようにXd,Yd,Zdの値を選択し、その値が計算できればXd,Yd,Zdが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ1308における乗算の計算量を削減することができる。
【0128】
次に、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力するアルゴリズムについて説明する。
【0129】
第4実施例の高速スカラー倍計算部202の高速スカラー倍計算方法として、第3実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0130】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は10M+Sであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+1)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+11.8)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量はおおよそ1484Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ1600Mであり、これと比べて必要となる計算量は削減されている。
【0131】
第5の実施例は、スカラー倍計算装置103がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力する。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(xd-1,yd-1)の座標のうちxd-1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値xd、xd+1、xd-1、x及びyよりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標ydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0132】
次に図26により、座標x、y、xd、xd+1、xd-1が与えられた場合に、xd、ydを出力する座標復元部の処理について説明する。
【0133】
座標復元部203では、モンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(xd-1,yd-1)の座標のうちxd-1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xd,yd)を出力する。
【0134】
ステップ2601においてxd−xが計算され、レジスタT1に格納される。ステップ2602においてT1の2乗すなわち(xd−x)2が計算され、レジスタT1に格納される。ステップ2603においてxd-1−xd+1が計算され、レジスタT2に格納される。ステップ2604においてT1×T2が計算される。ここでレジスタT1には(xd−x)2がレジスタT2にはxd-1−xd+1がそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)が計算される。その結果がレジスタT1に格納される。ステップ2605において4B×yが計算され、レジスタT2に格納される。ステップ2606においてT2の逆元が計算される。ここでレジスタT2には4Byが格納されており、したがって1/4Byが計算される。その結果がレジスタT2に格納される。ステップ2607においてT1×T2が計算される。ここでレジスタT1には(xd−x)2(xd-1−xd+1)がレジスタT2には1/4Byがそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)/4Byが計算される。その結果がレジスタydに格納される。したがってレジスタydには(xd−x)2(xd-1−xd+1)/4Byが格納されている。レジスタxdは全く更新されないので入力された値が保持されている。
【0135】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。尚、点(d+1)Pは点dPに点Pを加算した点であり、点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数6、数7を得る。
【0136】
両辺を各々減算することにより、数8を得る。したがって、数9となる。
【0137】
ここで、xd,ydは図26の処理により与えられる。したがって、アフィン座標(xd,yd)の値は全て復元されたことになる。
【0138】
上記手順はステップ2604、ステップ2605及びステップ2607において有限体上の乗算の計算量を必要とする。また、ステップ2602において有限体上の2乗算の計算量を必要とする。さらにステップ2606において有限体上の逆元演算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、2乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS、有限体上の逆元演算の計算量をIとすると、上記手順は3M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M及びI=40Mと仮定すると座標復元の計算量は43.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0139】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればydの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ2605における乗算の計算量を削減することができる。
【0140】
次に図6により、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、xd、xd+1、xd-1を出力する高速スカラー倍計算部の処理について説明する。
【0141】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(xd-1,yd-1)のうちxd-1を出力する。ステップ601として、変数Iに初期値1を代入する。ステップ602として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ603として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ602で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ604として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ614へ行く。一致しなければステップ605へ行く。ステップ605として、変数Iを1増加させる。ステップ606として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ606へ行く。そのビットの値が1であればステップ610へ行く。ステップ607として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ608へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ608として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ609へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ609として、ステップ608で求めた点2mPとステップ607で求めた点(2m+1)Pを点の組(2mP, (2m+1)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ604へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ610として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ611へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ611として、射影座標により表された点の組(mP,(m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ612へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ611として、ステップ610で求めた点(2m+1)Pとステップ611で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ604へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ614として、射影座標で表された点の組(mP,(m+1)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標Zm-1を求め、それぞれXd-1及びZd-1とする。その後ステップ615へ行く。ステップ615として、射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとし、射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1とする。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。Xd-1,Zd-1,Xd,Zd,Xd+1,Zd+1より、
【0142】
【数24】
Figure 0003794266
【0143】
【数25】
Figure 0003794266
【0144】
【数26】
Figure 0003794266
【0145】
としてxd-1,xd,xd+1を求める。その後ステップ613へ行く。ステップ613として、xd-1,xd,xd+1を出力する。上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。またステップ614において(m-1)Pを求める際に、数13、数14の公式により求めてもよいし、mが奇数であれば、((m-1)/2)Pの値をステップ612の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の2倍算の公式より、(m-1)Pを求めてもよい。
【0146】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ607において加算の計算量、ステップ608において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ610において加算の計算量、ステップ611において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ604、ステップ605、ステップ606、ステップ607、ステップ608、ステップ609乃至はステップ604、ステップ605、ステップ606、ステップ610、ステップ611、ステップ612の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ602での2倍算の計算量及びステップ614での(m-1)Pの計算に必要な計算量及びアフィン座標への変換の計算量を考慮に入れると、全体の計算量は(6M+4S)k+11M+Iとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度、計算量IはI=40M程度と見積もられるので、全体の計算量はおおよそ(9.2k+51)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1523Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられ、これ以外にアフィン座標への変換の計算量が必要となる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1640Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0147】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、xd、xd+1、xd-1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0148】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は3M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+51)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。S=0.8M及びI=40Mと仮定すると、この計算量はおおよそ(9.2k+94.8)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量はおおよそ1567Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0149】
第6の実施例は、楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置103の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置103の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算装置103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力するものである。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d−1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値値Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標xd及びydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0150】
次に図14により、座標x、y、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1が与えられた場合にxd、ydを出力する座標復元部の処理について説明する。
【0151】
座標復元部203では、ワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたワイエルシュトラス型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X,Y,Z)でそれぞれ表す。入力されたスカラー値をdとしてワイエルシュトラス型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0152】
ステップ1401においてXd-1×Zd+1が計算され、レジスタT1に格納される。ステップ1402においてZd-1×Xd+1が計算され、レジスタTに格納される。ステップ1403においてT1−Tが計算される。ここでレジスタT1にはXd-1Zd+1がレジスタTにはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がレジスタT1に格納される。ステップ1404においてZd×xが計算され、レジスタTに格納される。ステップ1405においてXd-Tが計算さる。ここでレジスタTにはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタTに格納される。ステップ1406においてTの2乗が計算される。ここでレジスタTにはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタTに格納される。ステップ1407においてT1×Tが計算される。ここでレジスタT1にはXd-1Zd+1-Zd-1Xd+1がレジスタTには(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がレジスタT1に格納される。ステップ1408において4×yが計算される。その結果がレジスタTに格納される。ステップ1409においてT×Zd+1が計算される。ここでレジスタTには4yが格納されており、したがって4yZd+1が計算される。その結果がレジスタTに格納される。ステップ1410においてT×Zd-1が計算される。ここでレジスタTには4yZd+1が格納されており、したがって4yZd+1Zd-1が計算される。その結果がレジスタTに格納される。ステップ1411においてT×Zdが計算される。ここでレジスタTには4yZd+1Zd-1が格納されており、したがって4yZd+1Zd-1Zdが計算される。その結果がレジスタTに格納される。ステップ1412においてT×Xdが計算される。ここでレジスタTには4yZd+1Zd-1Zdが格納されており、したがって4yZd+1Zd-1ZdXdが計算される。その結果がレジスタT3に格納される。ステップ1413においてT×Zdが計算される。ここでレジスタTには4yZd-1Zd+1Zdが格納されており、したがって4yZd+1Zd-1ZdZdが計算される。その結果がレジスタTに格納される。ステップ1414においてレジスタTの逆元が計算される。ここでレジスタTには4yZd+1Zd-1ZdZdが格納されており、したがって1/4yZd+1Zd-1ZdZdが計算される。その結果がレジスタTに格納される。ステップ1415においてT×T3が計算される。ここでレジスタTには1/4yZd+1Zd-1ZdZdがレジスタT3には4yZd-1Zd+1ZdXd がそれぞれ格納されており、したがって(4yZd+1Zd-1ZdXd)/(4yZd+1Zd-1ZdZd)が計算される。その結果がxdに格納される。ステップ1416においてT1×Tが計算される。ここでレジスタT1には(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)がレジスタTには1/4yZd+1Zd-1ZdZdがそれぞれ格納されており、したがって(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4y Zd+1Zd-1Zd 2が計算される。その結果がレジスタydに格納される。したがってレジスタydには(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4yZd-1Zd+1Zd 2が格納されている。レジスタxdにはステップ1415において(4yZd-1Zd+1ZdXd)/(4yZd-1Zd+1ZdZd)が格納され、その後更新が行なわれないので、その値が保持されている。
【0153】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(xd,yd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、次の式を得る。
【0154】
【数27】
Figure 0003794266
【0155】
【数28】
Figure 0003794266
【0156】
両辺を各々減算することにより、
【0157】
【数29】
Figure 0003794266
【0158】
を得る。したがって、
【0159】
【数30】
Figure 0003794266
【0160】
となる。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1、xd=1=Xd=1/Zd=1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【0161】
【数31】
Figure 0003794266
【0162】
d=Xd/Zdであるが、逆元演算の回数を減らす目的でydの分母と通分することにより、
【0163】
【数32】
Figure 0003794266
【0164】
となる。ここで、xd,ydは図14で示した処理により与えられる。したがって、アフィン座標(xd,yd)の値が全て復元されていることになる。
【0165】
上記手順はステップ1401、ステップ1402、ステップ1404、ステップ1407、ステップ1409、ステップ1410、ステップ1411、ステップ1412、ステップ1413、ステップ1415及びステップ1416において有限体上の乗算の計算量を必要とする。ただし、ステップ1408の乗算は、被乗数の値が4と小さいので、その計算量は通常の乗算の計算量と比べて小さい為無視してよい。また、ステップ1406において有限体上の2乗算の計算量を必要とする。また、ステップ1414において有限体上の逆元演算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、2乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS及び有限体上の逆元演算の計算量をIとすると、上記手順は11M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M、I=40Mと仮定すると座標復元の計算量は51.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0166】
尚、上記手順をとらなくても、上記計算式により与えられたxd,ydの値が計算できればxd,ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。
【0167】
次に図7により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力する高速スカラー倍計算部の処理について説明する。
【0168】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)のうちXd-1及びZd-1を出力する。ステップ716として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ701として、変数Iに初期値1を代入する。ステップ702として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ703として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ702で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ704として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ714へ行く。一致しなければステップ705へ行く。ステップ705として、変数Iを1増加させる。ステップ706として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ706へ行く。そのビットの値が1であればステップ710へ行く。ステップ707として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ708へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ708として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ709へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ709として、ステップ708で求めた点2mPとステップ707で求めた点(2m+1)Pを点の組(2mP, (2m+1)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ704へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ710として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ711へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ711として、射影座標により表された点の組(mP,(m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ712へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ711として、ステップ710で求めた点(2m+1)Pとステップ711で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ704へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ714として、射影座標で表された点の組(mP,(m+1)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標Zm-1を求める。その後ステップ715へ行く。ステップ715として、モンゴメリ型楕円曲線における点(m-1)Pを、ワイエルシュトラス型楕円曲線上で射影座標により表された点に変換する。その点のX座標及びZ座標をそれぞれあらためてXm-1及びZm-1とおく。また、モンゴメリ型楕円曲線において射影座標で表された点の組(mP,(m+1)P)に対して、点mP及び点(m+1)Pをワイエルシュトラス型楕円曲線上で射影座標で表された点に変換し、それぞれmP=(Xm,Ym,Zm)及び(m+1)P=(Xm+1,Ym+1,Zm+1)とあらためて置き直す。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。ステップ713として、ワイエルシュトラス型楕円曲線上で射影座標で表された点(m-1)PのX座標Xm-1及びZ座標Zm-1をそれぞれXd-1及びZd-1として、ワイエルシュトラス型楕円曲線上で射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZとして、ワイエルシュトラス型楕円曲線上で射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、出力する。また上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。またステップ714において(m-1)Pを求める際に、数13、数14の公式により求めてもよいし、mが奇数であれば、((m-1)/2)Pの値をステップ712の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の2倍算の公式より、(m-1)Pを求めてもよい。
【0169】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ707において加算の計算量、ステップ708において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ710において加算の計算量、ステップ711において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ704、ステップ705、ステップ706、ステップ707、ステップ708、ステップ709乃至はステップ704、ステップ705、ステップ706、ステップ710、ステップ711、ステップ712の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ702での2倍算の計算量とステップ716でのモンゴメリ型楕円曲線上の点への変換に必要な計算量及びステップ715でのワイエルシュトラス型楕円曲線上の点への変換に必要な計算量を考慮に入れると、全体の計算量は(6M+4S)k+4Mとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度と見積もられるので、全体の計算量はおおよそ(9.2k+4)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1476Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1600Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0170】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0171】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は11M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+4)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+55.8)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量はおおよそ1528Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0172】
第7の実施例は楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置103の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置103の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算部103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1、x及びyよりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標Xd,Yd及びZdの復元を行なう。スカラー倍計算装置103は射影座標において完全に座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算結果として出力する。
【0173】
次に図15により、座標x、y Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1が与えられた場合にXd、Yd、Zdを出力する座標復元部の処理について説明する。
【0174】
座標復元部203では、ワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順で射影座標おいて完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を出力する。ここで入力されたワイエルシュトラス型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてワイエルシュトラス型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0175】
ステップ1501においてXd-1×Zd+1が計算され、T1に格納される。ステップ1502においてZd-1×Xd+1が計算され、Tに格納される。ステップ1503においてT1−Tが計算される。ここでT1にはXd-1Zd+1がTにはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がT1に格納される。ステップ1504においてZd×xが計算され、Tに格納される。ステップ1505においてXd-Tが計算さる。ここでTにはZdxが格納されており、したがってXd-xZdが計算される。その結果がTに格納される。ステップ1506においてTの2乗が計算される。ここでTにはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がTに格納される。ステップ1507においてT1×Tが計算される。ここでT1にはXd-1Zd+1-Zd-1Xd+1がTには(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がレジスタYdに格納される。ステップ1508において4×yが計算される。その結果がTに格納される。ステップ1509においてT×Zd+1が計算される。ここでTには4yが格納されており、したがって4yZd+1が計算される。その結果がTに格納される。ステップ1510においてT×Zd-1が計算される。ここでTには4yZd+1が格納されており、したがって4yZd+1Zd-1が計算される。その結果がTに格納される。ステップ1511においてT×Zdが計算される。ここでTには4yZd+1Zd-1が格納されており、したがって4yZd+1Zd-1Zdが計算される。その結果がTに格納される。ステップ1512においてT×Xdが計算される。ここでTには4yZd+1Zd-1Zdが格納されており、したがって4yZd+1Zd-1ZdXdが計算される。その結果がレジスタXdに格納される。ステップ1513においてT×Zdが計算される。ここでTには4yZd+1Zd-1Zdが格納されており、したがって4yZd+1Zd-1ZdZdが計算される。その結果がレジスタZdに格納される。したがってレジスタZdには4y Zd+1Zd-1ZdZdが格納されている。レジスタYdにはステップ1507において(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が格納され、その後更新が行われないので、その値が保持されている。レジスタXdにはステップ1512において4yZd+1Zd-1ZdXdが格納され、その後更新が行われないので、その値が保持されている。
【0176】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からワイエルシュトラス型楕円曲線におけるスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、数27、数28を得る。両辺を各々減算することにより、数29を得る。したがって、数30となる。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1、xd-1=Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数31を得る。xd=Xd/Zdであるが、ydの分母と通分することにより、数32となる。
【0177】
その結果として
【0178】
【数33】
Figure 0003794266
【0179】
とし、Xd及びZdをそれぞれ
【0180】
【数34】
Figure 0003794266
【0181】
【数35】
Figure 0003794266
【0182】
により更新すればよい。
【0183】
ここで、Xd,Yd,Zdは図15で示した処理により与えられる。したがって、射影座標(Xd,Yd,Zd)の値は全て復元されたことになる。
【0184】
上記手順はステップ1501、ステップ1505、ステップ1504、ステップ1507、ステップ1509、ステップ1510、ステップ1511、ステップ1512及びステップ1513において有限体上の乗算の計算量を必要とする。
【0185】
ただし、ステップ1508の乗算は、被乗数の値が4と小さいので、その計算量は通常の乗算の計算量と比べて小さい為無視してよい。また、ステップ1506において有限体上の2乗算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、2乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をSとすると、上記手順は9M+Sの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8Mと仮定すると座標復元の計算量は9.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0186】
尚、上記手順をとらなくても、上記計算式により与えられたXd,Yd,Zdの値が計算できればXd,Yd,Zdの値が復元できる。また、xd,ydが上記計算式により与えられる値を取るようにXd,Yd,Zdの値を選択し、その値が計算できればXd,Yd,Zdが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。
【0187】
次に、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力するアルゴリズムについて説明する。
【0188】
第7実施例の高速スカラー倍計算部202の高速スカラー倍計算方法として、第6実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0189】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は9M+Sであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+4)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+13.8)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量はおおよそ1486Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ1600Mであり、これと比べて必要となる計算量は削減されている。
【0190】
第8の実施例は楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置103の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置103の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算装置103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P=(xd-1,yd-1)の座標のうちxd-1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値xd、xd+1、xd-1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標ydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0191】
次に図16により、座標x、y、xd、xd+1、xd-1が与えられた場合に、xd、ydを出力する座標復元部の処理について説明する。
【0192】
座標復元部203では、ワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P=(xd-1,yd-1)の座標のうちxd-1、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xd,yd)を出力する。
【0193】
ステップ1601においてxd−xが計算され、T1に格納される。ステップ1602においてT1の2乗すなわち(xd−x)2が計算され、T1に格納される。ステップ1603においてxd-1−xd+1が計算され、T2に格納される。ステップ1604においてT1×T2が計算される。ここでT1には(xd−x)2がT2にはxd-1−xd+1がそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)が計算される。その結果がT1に格納される。ステップ1605において4×yが計算され、T2に格納される。ステップ1606においてT2の逆元が計算される。ここでT2には4yが格納されており、したがって1/4yが計算される。その結果がT2に格納される。ステップ1607においてT1×T2が計算される。ここでT1には(xd−x)2(xd -1−xd+1)がT2には1/4yがそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)/4yが計算される。その結果がレジスタydに格納される。したがってレジスタydには(xd−x)2(xd-1−xd+1)/4yが格納されている。レジスタxdは全く更新されないので入力された値が保持されている。
【0194】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、数27、数28を得る。両辺を各々減算することにより、数29を得る。したがって、数30となる。ここでxd,ydは図16の処理によって与えられる。したがって、アフィン座標(xd,yd)の値を全て復元していることになる。
【0195】
上記手順はステップ1604、ステップ1607において有限体上の乗算の計算量を必要とする。ただし、ステップ1605の乗算は、被乗数の値が4と小さいので、その計算量は通常の乗算の計算量と比べて小さい為無視してよい。また、ステップ1602において有限体上の2乗算の計算量を必要とする。さらにステップ1606において有限体上の逆元演算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、2乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS、有限体上の逆元演算の計算量をIとすると、上記手順は2M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M及びI=40Mと仮定すると座標復元の計算量は42.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0196】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればydの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。
【0197】
次に図7により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd、xd+1、xd-1を出力するアルゴリズムについて説明する。
【0198】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(xd+1,yd+1)のうちxd+1、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P=(xd-1,yd-1)のうちxd-1を出力する。ステップ716として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ701として、変数Iに初期値1を代入する。ステップ702として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ703として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ702で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ704として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ714へ行く。一致しなければステップ705へ行く。ステップ705として、変数Iを1増加させる。ステップ706として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ706へ行く。そのビットの値が1であればステップ710へ行く。ステップ707として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ708へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ708として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ709へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ709として、ステップ708で求めた点2mPとステップ707で求めた点(2m+1)Pを点の組(2mP, (2m+1)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ704へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ710として、射影座標により表された点の組(mP, (m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ711へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ711として、射影座標により表された点の組(mP, (m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ712へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ711として、ステップ710で求めた点(2m+1)Pとステップ711で求めた点(2m+2)Pを点の組((2m+1)P, (2m+2)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ704へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ714として、射影座標で表された点の組(mP,(m+1)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標Zm-1を求める。その後ステップ715へ行く。ステップ715として、モンゴメリ型楕円曲線における点(m-1)Pを、ワイエルシュトラス型楕円曲線上でアフィン座標により表された点に変換する。その点のx座標をそれぞれあらためてxm-1とおく。また、モンゴメリ型楕円曲線において射影座標で表された点の組(mP,(m+1)P)に対して、点mP及び点(m+1)Pをワイエルシュトラス型楕円曲線上でアフィン座標で表された点に変換し、それぞれmP=(xm,ym)及び(m+1)P=(xm+1,ym+1)とあらためて置き直す。ここで、ym及びym+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。その後ステップ713へ行く。ステップ713として、ワイエルシュトラス型楕円曲線上でアフィン座標で表された点(m-1)Pのx座標xm-1をxd-1として、ワイエルシュトラス型楕円曲線上で射影座標で表された点mP=(xm,ym)よりxmをxdとして、ワイエルシュトラス型楕円曲線上でアフィン座標で表された点(m+1)P=(xm+1,ym+1)よりxm+1をxd+1として、出力する。また上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。またステップ714において(m-1)Pを求める際に、数13、数14の公式により求めてもよいし、mが奇数であれば、((m-1)/2)Pの値をステップ712の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の2倍算の公式より、(m-1)Pを求めてもよい。
【0199】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ707において加算の計算量、ステップ708において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ710において加算の計算量、ステップ711において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ704、ステップ705、ステップ706、ステップ707、ステップ708、ステップ709乃至はステップ704、ステップ705、ステップ706、ステップ710、ステップ711、ステップ712の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ702での2倍算の計算量とステップ716でのモンゴメリ型楕円曲線上への点への変換に必要な計算量及びステップ715でのワイエルシュトラス型楕円曲線上の点への必要な計算量を考慮に入れると、全体の計算量は(6M+4S)k+15M+Iとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度、計算量Iは、I=40M程度と見積もられるので、全体の計算量はおおよそ(9.2k+55)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1527Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1640Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0200】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd, xd+1,xd=1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0201】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は2M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+55)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+97.8)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1570Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0202】
第9の実施例は、入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力するものである。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1) の座標のうちXd+1及びZd+1を計算する。また、入力されたワイエルシュトラス型楕円曲線上の点Pを、与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線上の点に変換し、その点を新たにP=(x,y)とおく。高速スカラー倍計算部202は、Xd、Zd、Xd+1、Zd+1、x及びyを座標復元部203に与える。座標復元部203は与えられた座標の値Xd、Zd、Xd+1、Zd+1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標xd及びydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0203】
次に図17により、座標x,y,Xd,Zd,Xd+1,Zd+1が与えられた場合にxd,ydを出力する座標復元部の処理について説明する。
【0204】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X,Y,Z)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd Mon,yd Mon)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0205】
ステップ1701においてXd×xが計算され、レジスタT1に格納される。ステップ1702においてT1-Zdが計算される。ここでレジスタT1にはXdxが格納されており、したがってXdx-Zd が計算される。その結果がレジスタT1に格納される。ステップ1703においてZd×xが計算され、レジスタT2に格納される。ステップ1104においてXd-T2が計算される。ここでレジスタT2にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタT2に格納される。ステップ1705においてXd+1×T2が計算される。ここでレジスタT2にはXd-xZdが格納されており、したがってXd+1(Xd-xZd)が計算される。その結果がレジスタT3に格納される。ステップ1706においてT2の2乗が計算される。ここでレジスタT2には(Xd-xZd)が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1107においてT2×Xd+1が計算される。ここでレジスタT2には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1708においてT2×Zd+1が計算される。ここでレジスタT2にはXd+1(Xd-xZd)2が格納されており、したがってZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1709においてT2×yが計算される。ここでレジスタT2にはZd+1Xd+1(Xd-xZd)2が格納されており、したがってyZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1710においてT2×Bが計算される。ここでレジスタT2にはyZd+1Xd+1(Xd-xZd)2が格納されており、したがってByZd+1Xd+1(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1711においてT2×Zdが計算される。ここでレジスタT2にはByZd+1Xd+1(Xd-xZd)2が格納されており、したがってByZd+1Xd+1(Xd-xZd)2Zdが計算される。その結果がレジスタT2に格納される。ステップ1712においてT2×Xdが計算される。ここでレジスタT2にはByZd+1Xd+1(Xd-xZd)2Zdが格納されており、したがってByZd+1Xd+1(Xd-xZd)2ZdXdが計算される。その結果がレジスタT4に格納される。ステップ1713においてT2×Zdが計算される。ここでレジスタT2にはByZd+1Xd+1(Xd-xZd)2Zdが格納されており、したがってByZd+1Xd+1(Xd-xZd)2Zdが計算される。その結果がレジスタT2に格納される。ステップ1714においてレジスタT2×sが計算される。ここでレジスタT2にはByZd+1Xd+1(Xd-xZd)2Zd 2が格納されており、したがってsByZd+1Xd+1(Xd-xZd)2Zd 2が計算される。その結果がレジスタT2に格納される。ステップ1715においてT2の逆元が計算される。ここで、T2にはsByZd+1Xd+1(Xd-xZd)2Zd 2が格納されており、したがって1/ sByZd+1Xd+1(Xd-xZd)2Zd 2が計算される。その結果がT2に格納される。ステップ1716においてT2×Tが計算される。ここでレジスタT2には1/sByZd+1Xd+1(Xd-xZd)2Zd 2がレジスタTにはByZd+1Xd+1(Xd-xZd)2ZdXdがそれぞれ格納されており、したがって(ByZd+1Xd+1(Xd-xZd)2ZdXd)/(sByZd+1Xd+1(Xd-xZd)2Zd 2)が計算される。その結果がレジスタTに格納される。ステップ1717においてT+αが計算される。ここでレジスタTには(ByZd+1Xd+1(Xd-xZd)2ZdXd)/(sByZd+1Xd+1(Xd-xZd)2Zd 2) が格納されており、従って、数36が計算される。
【0206】
【数36】
Figure 0003794266
【0207】
その結果が、レジスタxdに格納される。ステップ1718においてT1×Zd+1が計算される。ここでレジスタT1にはXdx-Zdが格納されており、したがってZd+1(Xdx-Zd)が計算される。その結果がレジスタT4に格納される。ステップ1719においてレジスタT1の2乗が計算される。ここでレジスタT1には(Xdx-Zd)が格納されており、したがって(Xdx-Zd)2が計算される。その結果がレジスタT1に格納される。ステップ1720においてT1×Tが計算される。ここでレジスタT1には(Xdx-Zd)2がレジスタTには1/sByZd+1Xd+1(Xd-xZd)2Zd 2がそれぞれ格納されており、したがって(Xdx-Zd)2/sByZd+1Xd+1(Xd-xZd)2 Zd 2が計算される。その結果がレジスタT2に格納される。ステップ1721においてT3+T4が計算される。ここでレジスタT3にはXd+1(Xd-xZd) がレジスタT4にはZd+1 (Xdx-Zd)がそれぞれ格納されており、したがってXd+1(Xd-xZd)+Zd+1 (Xdx-Zd)が計算される。その結果がレジスタT1に格納される。ステップ1722においてT3-T4が計算される。ここでレジスタT3にはXd+1(Xd-xZd)がレジスタT4にはZd+1(Xdx-Zd)がそれぞれ格納されており、したがってXd+1(Xd-xZd)-Zd+1(Xdx-Zd)が計算される。その結果がレジスタT3に格納される。ステップ1723においてT1×T3が計算される。ここでレジスタT1にはXd+1(Xd-xZd)+Zd+1(Xdx-Zd)がレジスタT3にはXd+1(Xd-xZd)-Zd+1(Xdx-Zd)がそれぞれ格納されており、したがって{Xd+1(Xd-xZd)+Zd+1(Xdx-Zd)}{Xd+1(Xd-xZd)-Zd+1(Xdx-Zd)}が計算される。その結果がレジスタT1に格納される。ステップ1724においてT1×T2が計算される。ここでレジスタT1には{Xd+1(Xd-xZd)+Zd+1(Xdx-Zd)}{Xd+1(Xd-xZd)-Zd+1(Xdx-Zd)}がレジスタT2には(Xdx-Zd)2/sByZd+1Xd+1(Xd-xZd)2Zd 2がそれぞれ格納されており、したがって
【0208】
【数37】
Figure 0003794266
【0209】
が計算される。その結果がレジスタydに格納される。したがってレジスタydには数37の値が格納されている。レジスタxdにはステップ1717において数36の値が格納され、その後更新が行なわれないので、その値が保持されている。その結果として、ワイエルシュトラス型楕円曲線におけるアフィン座標(xd,yd)の値が全て復元されている。
【0210】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(xd,yd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、次の式を得る。
【0211】
【数38】
Figure 0003794266
【0212】
【数39】
Figure 0003794266
【0213】
両辺を各々減算することにより、
【0214】
【数40】
Figure 0003794266
【0215】
を得る。したがって、
【0216】
【数41】
Figure 0003794266
【0217】
となる。ここでxd Mon=Xd/Zd、xd+1=Xd+1/Zd+1、xd-1=Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【0218】
【数42】
Figure 0003794266
【0219】
モンゴメリ型楕円曲線の射影座標での加算公式は既に示した数11、数12である。ここでXm及びZmはモンゴメリ型楕円曲線上の点Pのm倍点mPの射影座標におけるX座標及びZ座標、Xn及びZnはモンゴメリ型楕円曲線上の点Pのn倍点nPの射影座標におけるX座標及びZ座標、Xm-n及びZm-nはモンゴメリ型楕円曲線上の点Pの(m-n)倍点(m-n)Pの射影座標におけるX座標及びZ座標、Xm+n及びZm+nはモンゴメリ型楕円曲線上の点Pの(m+n)倍点(m+n)Pの射影座標におけるX座標及びZ座標であり、m,nはm>nをみたす正整数である。この式はXm/Zm=xm、Xn/Zn=xn、Xm-n/Zm-n=xm-nが不変のとき、Xm+n/Zm+n=xm+nも不変となるので、射影座標での公式としてうまく働いている。他方、数13、数14とおくと、この式もXm/Zm=xm、Xn/Zn=xn、Xm-n/Zm-n=xm-nが不変のとき、Xm+n/Zm+n=xm-nも不変となる。また、X'm-n/Z'm-n=Xm-n/Zm-n=xm-nをみたすので、xm-nの射影座標としてX'm-n,Z'm-nをとってよい。m=d、n=1として上記公式を用いてyd Monの式よりXd-1及びZd-1を消去し、X1=x,Z1=1とおくことにより、次の式を得る。
【0220】
【数43】
Figure 0003794266
【0221】
d Mon=Xd/Zdであるが、逆元演算の回数を減らす目的でyd Modの分母と通分することにより、
【0222】
【数44】
Figure 0003794266
【0223】
となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、yd=s-1yd Mon及びxd=s-1xd Mon+αの関係がある。結果として数45、数46を得る。
【0224】
【数45】
Figure 0003794266
【0225】
【数46】
Figure 0003794266
【0226】
ここで、xd,ydは図17より与えられる。したがって、ワイエルシュトラス型楕円曲線におけるアフィン座標(xd,yd)の値が全て復元されていることになる。
【0227】
上記手順はステップ1701、ステップ1703、ステップ1705、ステップ1707、ステップ1708、ステップ1709、ステップ1710、ステップ1711、ステップ1712、ステップ1713、ステップ1714、ステップ1716、ステップ1718、ステップ1720、ステップ1723及びステップ1724において有限体上の乗算の計算量を必要とする。また、ステップ1706及びステップ1719において有限体上の2乗算の計算量を必要とする。また、ステップ1115において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS及び有限体上の逆元演算の計算量をIとすると、上記手順は16M+2S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M、I=40Mと仮定すると座標復元の計算量は57.6Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0228】
尚、上記手順をとらなくても、上記計算式により与えられたxd,ydの値が計算できればxd,ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、モンゴメリ型楕円曲線のパラメタであるBの値やモンゴメリ型楕円曲線への変換パラメタであるsを小さくとることにより、ステップ1710における乗算の計算量やステップ1714における乗算の計算量を削減することができる。
【0229】
次に図8により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力する高速スカラー倍計算部の処理について説明する。
【0230】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1を出力する。ステップ816として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ801として、変数Iに初期値1を代入する。ステップ802として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ803として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ802で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ804として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ813へ行く。一致しなければステップ805へ行く。ステップ805として、変数Iを1増加させる。ステップ806として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ806へ行く。そのビットの値が1であればステップ810へ行く。ステップ807として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ808へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ808として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ809へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ809として、ステップ808で求めた点2mPとステップ807で求めた点(2m+1)Pを点の組(2mP,(2m+1)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ804へ戻る。ここで、点2mP、点(2m+1)、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ810として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)を計算する。その後ステップ811へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ811として、射影座標により表された点の組(mP,(m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ812へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ811として、ステップ810で求めた点(2m+1)Pとステップ811で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ804へ戻る。ここで、点(2m+1)P、点(2m+2)、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ813として、射影座標で表された点の組(mP,(m+1)P)から、射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとして、射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、出力する。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。また上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【0231】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ807において加算の計算量、ステップ808において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ810において加算の計算量、ステップ811において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ804、ステップ805、ステップ806、ステップ807、ステップ808、ステップ809乃至はステップ804、ステップ805、ステップ806、ステップ810、ステップ811、ステップ812の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ802での2倍算の計算量及びステップ816でのモンゴメリ型楕円曲線上の点への変換の計算量を考慮に入れると、全体の計算量は(6M+4S)(k―1)+4M+2Sとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度と見積もられるので、全体の計算量はおおよそ(9.2k―3.6)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1468Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1600Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0232】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0233】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は16M+2S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k―3.6)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+54)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1526Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0234】
第10の実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点,(Xd W,Yd W,Zd W)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点d(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算する。また、入力されたワイエルシュトラス型楕円曲線上の点Pを、与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線上の点に変換し、その点を新たにP=(x,y)とおく。高速スカラー倍計算部202は、Xd,Zd,Xd+1,Zd+1,x及びyを座標復元部203に与える。座標復元部203は与えられた座標の値Xd,Zd,Xd+1,Zd+1,x及びyよりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd W,Yd W,Zd W)の座標Xd W、Yd W及びZd Wの復元を行なう。スカラー倍計算装置103は射影座標において完全に座標が与えられたスカラー倍点(Xd W,Yd W,Zd W)を計算結果として出力する。
【0235】
次に図18により、座標x,y,Xd,Zd,Xd+1,Zd+1が与えられた場合にXd W、Yd W、Zd Wを出力する座標復元部の処理について説明する。
【0236】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でワイエルシュトラス型楕円曲線上で射影座標おいて完全な座標が与えられたスカラー倍点(Xd W,Yd W,Zd W)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0237】
ステップ1801においてXd×xが計算され、レジスタT1に格納される。ステップ1802においてT1-Zdが計算される。ここでレジスタT1にはXdxが格納されており、したがってXdx-Zdが計算される。その結果がレジスタT1に格納される。ステップ1803においてZd×xが計算され、レジスタT2に格納される。ステップ1804においてXd-T2が計算される。ここでレジスタT2にはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタT2に格納される。ステップ1805においてZd+1×T1が計算される。ここでレジスタT1にはXdx-Zdが格納されており、したがってZd+1(Xdx-Zd)が計算される。その結果がレジスタT3に格納される。ステップ1806においてXd+1×T2が計算される。ここでレジスタT2にはXd-xZdが格納されており、したがってXd+1(Xd-xZd)が計算される。その結果がレジスタT4に格納される。ステップ1807においてT1の2乗が計算される。ここでレジスタT1にはXdx-Zdが格納されており、したがって(Xdx-Zd)2が計算される。その結果がレジスタT1に格納される。ステップ1808においてT2の2乗が計算される。ここでレジスタT2にはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1809においてT2×Zdが計算される。ここでレジスタT2には(Xd-xZd)2が格納されており、したがってZd(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1810においてT2×Xd+1が計算される。ここでレジスタT2にはZd(Xd-xZd)2が格納されており、したがってXd+1Zd(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1811においてT2×Zd+1が計算される。ここでレジスタT2にはXd+1Zd(Xd-xZd)2が格納されており、したがってZd+1Xd+1Zd(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1812においてT2×yが計算される。ここでレジスタT2にはZd+1Xd+1Zd(Xd-xZd)2が格納されており、したがってyZd+1Xd+1Zd(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1813においてT2×Bが計算される。ここでレジスタT2にはyZd+1Xd+1Zd(Xd-xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ1814においてT2×Xdが計算される。ここでレジスタT2にはByZd+1Xd+1Zd(Xd-xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd-xZd)2Xdが計算される。その結果がレジスタT5に格納される。ステップ1815においてT2×Zdが計算される。ここでレジスタT2にはByZd+1Xd+1Zd(Xd-xZd)2が格納されており、したがってByZd+1Xd+1Zd(Xd-xZd)2Zdが計算される。その結果がレジスタT2に格納される。ステップ1816においてT2×sが計算される。ここでレジスタT2にはByZd+1Xd+1Zd(Xd-xZd)2Zdが格納されており、したがってsByZd+1Xd+1Zd(Xd-xZd)2Zdが計算される。その結果がZd に格納される。ステップ1817においてα×Zd が計算される。ここでZd にはsByZd+1Xd+1Zd(Xd-xZd)2Zdが格納されており、したがってαsByZd+1Xd+1Zd(Xd-xZd)2Zdが計算される。その結果がレジスタT2に格納される。ステップ1818においてT2+T5が計算される。ここでレジスタT2にはαsByZd+1Xd+1Zd(Xd-xZd)2ZdがレジスタT5にはByZd+1Xd+1Zd(Xd-xZd)2Xdがそれぞれ格納されており、したがってαsByZd+1Xd+1Zd(Xd-xZd)2Zd+ByZd+1Xd+1Zd(Xd-xZd)2Xdが計算される。その結果がXd に格納される。ステップ1819においてT3+T4が計算される。ここでレジスタT3にはZd+1(Xdx-Zd)がレジスタT4にはXd+1(Xd-xZd)が格納されており、したがってZd+1(Xdx-Zd)+Xd+1(Xd-xZd)が計算される。その結果がレジスタT2に格納される。ステップ1820においてT3-T4が計算される。ここでレジスタT3にはZd+1(Xdx-Zd)がレジスタT4にはXd+1(Xd-xZd)が格納されており、したがってZd+1(Xdx-Zd)- Xd+1(Xd-xZd)が計算される。その結果がレジスタT3に格納される。ステップ1821においてT1×T2が計算される。ここでレジスタT1には(Xdx-Zd)2がレジスタT2にはZd+1(Xdx-Zd)+Xd+1(Xd-xZd)が格納されており、したがって{Zd+1(Xdx-Zd)+Xd+1(Xd-xZd)}(Xdx-Zd)2が計算される。その結果がレジスタT1に格納される。ステップ1822においてT1×T3が計算される。ここでレジスタT1には{Zd+1(Xdx-Zd)+Xd+1(Xd-xZd)}(Xdx-Zd)2がレジスタT3にはZd+1(Xdx-Zd)- Xd+1(Xd-xZd)が格納されており、したがって{Zd+1(Xdx-Zd)+Xd+1(Xd-xZd)}{Zd+1(Xdx-Zd)-Xd+1(Xd-xZd)}(Xdx-Zd)2が計算される。その結果がYd に格納される。したがってYd には{Zd+1(Xdx-Zd)+Xd+1(Xd-xZd)}{Zd+1(Xdx-Zd)-Xd+1(Xd-xZd)}(Xdx-Zd)2が格納されている。Xd にはステップ1818においてByZd+1Xd+1Zd(Xd-xZd)2Xd+αsByZd+1Xd+1Zd(Xd-xZd)2Zdが格納され、その後更新が行われないので、その値が保持されている。Xd にはステップ1816においてsByZd+1Xd+1Zd(Xd-xZd)2Zdが格納され、その後更新が行われないので、その値が保持されている。その結果として、ワイエルシュトラス型楕円曲線における射影座標(Xd W,Yd W,Zd W)の値が全て復元されている。
【0238】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点の射影座標(Xd W,Yd W,Zd W)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数6、数7を得る。数6、数7の両辺を各々減算することにより、数8を得る。したがって、数9のようになる。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1、xd-1=Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数10を得る。モンゴメリ型楕円曲線の射影座標での加算公式は数11、数12である。ここでXm及びZmはモンゴメリ型楕円曲線上の点Pのm倍点mPの射影座標におけるX座標及びZ座標、Xn及びZnはモンゴメリ型楕円曲線上の点Pのn倍点nPの射影座標におけるX座標及びZ座標、Xm-n及びZm-nはモンゴメリ型楕円曲線上の点Pの(m-n)倍点(m-n)Pの射影座標におけるX座標及びZ座標、Xm+n及びZm+nはモンゴメリ型楕円曲線上の点Pの(m+n)倍点(m+n)Pの射影座標におけるX座標及びZ座標であり、m,nはm>nをみたす正整数である。この式はXm/Zm=xm、Xn/Zn=xn、Xm-n/Zm-n=xm-nが不変のとき、Xm+n/Zm+n=xm+nも不変となるので、射影座標での公式としてうまく働いている。他方、数13、数14とおくと、この式もXm/Zm=xm、Xn/Zn=xn、Xm-n/Zm-n=xm-nが不変のとき、Xm+n/Zm+n=xm+nも不変となる。また、X'm-n/Z'm-n=Xm-n/Zm-n=xm-nをみたすので、xm-nの射影座標としてX'm-n,Z'm-nをとってよい。m=d,n=1として上記公式を用いてydの式よりXd-1及びZd-1を消去し、X1=x,Z1=1とおくことにより、数15を得る。xd=Xd/Zdであるが、ydの分母と通分することにより、数16となる。その結果として、
【0239】
【数47】
Figure 0003794266
【0240】
とし、
【0241】
【数48】
Figure 0003794266
【0242】
【数49】
Figure 0003794266
【0243】
とすると(X'd,Y'd,Z'd)=(Xd,Yd,Zd)となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをsαとして、Yd W=Y'd、Xd W=X'd+αZd W、及びZd W=sZ'dという関係がある。結果として次の式を得る。
【0244】
【数50】
Figure 0003794266
【0245】
【数51】
Figure 0003794266
【0246】
【数52】
Figure 0003794266
【0247】
により更新すればよい。ここで、Xd W,Yd W,Zd Wは図18の処理により与えられている。したがって、ワイエルシュトラス型楕円曲線における射影座標(Xd W,Yd W,Zd W)の値が全て復元されていることになる。
【0248】
上記手順はステップ1801、ステップ1803、ステップ1805、ステップ1806、ステップ1809、ステップ1810、ステップ1811、ステップ1812、ステップ1813、ステップ1814、ステップ1815、ステップ1816、ステップ1817、ステップ1821及びステップ1822において有限体上の乗算の計算量を必要とする。また、ステップ1807及びステップ1808において有限体上の2乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をSとすると、上記手順は15M+2Sの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8Mと仮定すると座標復元の計算量は16.6Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0249】
尚、上記手順をとらなくても、上記計算式により与えられたXd W、Yd W、Zd Wの値が計算できればXd W、Yd W、Zd Wの値が復元できる。また、ワイエルシュトラス型楕円曲線においてアフィン座標におけるスカラー倍点dPをdP=(xd W,yd W)とすると、xd W、yd Wが上記計算式により与えられる値を取るようにXd W、Yd W、Zd Wの値を選択し、その値が計算できればXd W、Yd W、Zd Wが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、モンゴメリ型楕円曲線のパラメタであるBの値やモンゴメリ型楕円曲線への変換パラメタsの値を小さくとることにより、ステップ1813乃至はステップ1816における乗算の計算量を削減することができる。
【0250】
次に、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムについて説明する。
【0251】
第10実施例の高速スカラー倍計算部202の高速スカラー倍計算方法として、第9実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部202において上記アルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0252】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は15M+2Sであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k―3.6)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+13)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1485Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ1600Mであり、これと比べて必要となる計算量は削減されている。
【0253】
第11実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置103が、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1を計算する。また、入力されたワイエルシュトラス型楕円曲線上の点Pを、与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線上の点に変換し、その点を新たにP=(x,y)とおく。高速スカラー倍計算部202は、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1,x及びyを座標復元部203に与える。座標復元部203は与えられた座標の値Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1,x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標xd及びydの復元を行なう。スカラー倍計算装置103はワイエルシュトラス型楕円曲線上でアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0254】
次に図19により、座標x,y,Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1が与えられた場合にxd、ydを出力する座標復元部の処理について説明する。
【0255】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でワイエルシュトラス型楕円曲線上でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X,Y,Z)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd Mon,yd Mon)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0256】
ステップ1901においてXd-1×Zd+1が計算され、レジスタT1に格納される。ステップ1902においてZd-1×Xd+1が計算され、レジスタTに格納される。ステップ1903においてT1−Tが計算される。ここでレジスタT1にはXd-1Zd+1がレジスタTにはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がレジスタT1に格納される。ステップ1904においてZd×xが計算され、レジスタTに格納される。ステップ1905においてXd-Tが計算さる。ここでレジスタTにはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタTに格納される。ステップ1906においてTの2乗が計算される。ここでレジスタTにはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタTに格納される。ステップ1907においてT1×Tが計算される。ここでレジスタT1にはXd-1Zd+1-Zd-1Xd+1がレジスタTには(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がレジスタT1に格納される。ステップ1908において4B×yが計算される。その結果がレジスタTに格納される。ステップ1909においてT×Zd+1が計算される。ここでレジスタTには4Byが格納されており、したがって4ByZd+1が計算される。その結果がレジスタTに格納される。ステップ1910においてT×Zd-1が計算される。ここでレジスタTには4ByZd+1が格納されており、したがって4ByZd-1Zd+1が計算される。その結果がレジスタTに格納される。ステップ1911においてT×Zdが計算される。ここでレジスタTには4ByZd-1Zd+1が格納されており、したがって4ByZd-1Zd+1Zdが計算される。その結果がレジスタTに格納される。ステップ1912においてT×Xdが計算される。ここでレジスタTには4ByZd-1Zd+1Zdが格納されており、したがって4ByZd-1Zd+1ZdXdが計算される。その結果がレジスタT3に格納される。ステップ1913においてT×Zdが計算される。ここでレジスタTには4ByZd-1Zd+1Zdが格納されており、したがって4ByZd-1Zd+1ZdZdが計算される。その結果がレジスタTに格納される。ステップ1914において、T×sが計算される。ここでレジスタTには4ByZd-1Zd+1ZdZdが格納されており、したがって4sByZd-1Zd+1ZdZdが計算される。その結果がレジスタTに格納される。ステップ1915においてレジスタTの逆元が計算される。ここでレジスタTには4sByZd-1Zd+1ZdZdが格納されており、したがって1/4sByZd-1Zd+1ZdZdが計算される。その結果がレジスタTに格納される。ステップ1416においてT×T3が計算される。ここでレジスタTには1/4sByZd-1Zd+1ZdZdがレジスタT3には4ByZd-1Zd+1ZdXd がそれぞれ格納されており、したがって(4ByZd-1Zd+1ZdXd)/(4sByZd-1Zd+1ZdZd)が計算される。その結果がレジスタT3に格納される。ステップ1917においてT3+αが計算される。ここでレジスタT3には(4ByZd-1Zd+1ZdXd)/(4sByZd-1Zd+1ZdZd)が格納されており、したがって(4ByZd-1Zd+1ZdXd)/(4sByZd-1Zd+1ZdZd)+αが計算される。その結果がレジスタxdに格納される。ステップ1918においてレジスタT1×Tが計算される。ここでレジスタT1には(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)がレジスタTには1/4sByZd-1Zd+1ZdZdがそれぞれ格納されており、したがって(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4sByZd-1Zd+1Zd 2が計算される。その結果がレジスタydに格納される。したがってレジスタydには(Xd-1Zd+1-Zd-1Xd+1)(Xd-Zdx)2/4sByZd-1Zd+1Zd 2が格納されている。レジスタxdにはステップ1917において(4ByZd-1Zd+1ZdXd)/(4sByZd-1Zd+1ZdZd)+αが格納され、その後更新が行なわれないので、その値が保持されている。
【0257】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(xd,yd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数38、数39を得る。両辺を各々減算することにより、数40を得る。したがって、数41となる。ここでxd Mon=Xd/Zd、xd+1=Xd+1/Zd+1、xd=1=Xd=1/Zd=1であり、この値を代入することにより射影座標の値へと変換すると、数42を得る。
【0258】
d Mon=Xd/Zdであるが、逆元演算の回数を減らす目的でyd Monの分母と通分することにより、数53となる。
【0259】
【数53】
Figure 0003794266
【0260】
モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、yd=s-1yd Mon及びxd=s-1xd Mon+αの関係がある。結果として次の式を得る。
【0261】
【数54】
Figure 0003794266
【0262】
【数55】
Figure 0003794266
【0263】
ここで、xd,ydは図19により与えられる。したがって、ワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(xd,yd)における値が全て復元されることになる。
【0264】
上記手順はステップ1901、ステップ1902、ステップ1904、ステップ1907、ステップ1908、ステップ1909、ステップ1910、ステップ1911、ステップ1912、ステップ1913、ステップ1914、ステップ1916及びステップ1918において有限体上の乗算の計算量を必要とする。また、ステップ1906において有限体上の2乗算の計算量を必要とする。また、ステップ1914において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS及び有限体上の逆元演算の計算量をIとすると、上記手順は13M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M、I=40Mと仮定すると座標復元の計算量は53.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0265】
尚、上記手順をとらなくても、上記計算式により与えられたxd,ydの値が計算できればxd,ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、モンゴメリ型楕円曲線のパラメタであるBの値乃至はモンゴメリ型楕円曲線への変換パラメタであるsの値をを小さくとることにより、ステップ1908乃至はステップ1914における乗算の計算量を削減することができる。
【0266】
次に図10により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd+1,Zd-1を出力する高速スカラー倍計算部の処理について説明する。
【0267】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)のうちXd-1及びZd-1を出力する。ステップ1016として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ1001として、変数Iに初期値1を代入する。ステップ1002として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ1003として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ1002で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ1004として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ1014へ行く。一致しなければステップ1005へ行く。ステップ1005として、変数Iを1増加させる。ステップ1006として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ1006へ行く。そのビットの値が1であればステップ1010へ行く。ステップ1007として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ1008へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ1008として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ1009へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ1009として、ステップ1008で求めた点2mPとステップ1007で求めた点(2m+1)Pを点の組(2mP, (2m+1)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ1004へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ1010として、射影座標により表された点の組(mP, (m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ1011へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ1011として、射影座標により表された点の組(mP, (m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ1012へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ1011として、ステップ1010で求めた点(2m+1)Pとステップ1011で求めた点(2m+2)Pを点の組((2m+1)P, (2m+2)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ1004へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ1014として、射影座標で表された点の組(mP,(m+1)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標をZm-1求め、それぞれXd-1及びZd-1とする。その後ステップ1013へ行く。ステップ1013として、射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとして、射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm +1及びZm+1をそれぞれXd+1及びZd+1として、Xd-1及びZd-1と共に出力する。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。また上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【0268】
また、ステップ1014において(m-1)Pを求める際に、数13、数14の公式より求めてもよいし、mが奇数であれば、((m-1)/2)Pの値をステップ1012の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の2倍の公式より、(m-1)Pを求めてもよい。
【0269】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ1007において加算の計算量、ステップ1008において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ1010において加算の計算量、ステップ1011において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ1004、ステップ1005、ステップ1006、ステップ1007、ステップ1008、ステップ1009乃至はステップ1004、ステップ1005、ステップ1006、ステップ1010、ステップ1011、ステップ1012の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ1002での2倍算の計算量とステップ1014での(m-1)Pの計算に必要な計算量を考慮に入れると、全体の計算量は(6M+4S)k+Mとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度と見積もられるので、全体の計算量はおおよそ(9.2k+3)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1475Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1600Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0270】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Yd,Xd+1,Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0271】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は13M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+1)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+56.8)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量はおおよそ1529Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0272】
第12実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いる。スカラー倍計算装置103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd W,Yd W,Zd W)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd=1及びZd-1を計算し、射影座標で表された入力されたワイエルシュトラス型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標変換部203は与えられた座標の値Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1,x及びyよりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd W,Yd W,Zd W)の座標Xd W、Yd W及びZd Wの復元を行なう。スカラー倍計算装置103はワイエルシュトラス型楕円曲線上で座標射影座標において完全に座標が与えられたスカラー倍点(Xd W,Yd W,Zd W)を計算結果として出力する。
【0273】
次に図13により、座標x,y,Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1が与えられた場合にXd W、Yd W、Zd Wを出力する座標復元部の処理について説明する。
【0274】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、射影座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(Xd-1,Yd-1,Zd-1)の座標のうちXd-1及びZd-1、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pを射影座標で表した(x,y)を入力し、以下の手順でワイエルシュトラス型楕円曲線上で射影座標おいて完全な座標が与えられたスカラー倍点(Xd W,Yd W,Zd W)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d-1)Pのアフィン座標を(xd-1,yd-1)で、射影座標を(Xd-1,Yd-1,Zd-1)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0275】
ステップ2001においてXd-1×Zd+1が計算され、レジスタT1に格納される。ステップ2002においてZd-1×Xd+1が計算され、レジスタTに格納される。ステップ2003においてT1−Tが計算される。ここでレジスタT1にはXd-1Zd+1がレジスタTにはZd-1Xd+1がそれぞれ格納されており、したがってXd-1Zd+1-Zd-1Xd+1が計算される。その結果がレジスタT1に格納される。ステップ2004においてZd×xが計算され、レジスタTに格納される。ステップ2005においてXd-Tが計算さる。ここでレジスタTにはZdxが格納されており、したがってXd-xZdが計算される。その結果がレジスタTに格納される。ステップ2006においてTの2乗が計算される。ここでレジスタTにはXd-xZdが格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタTに格納される。ステップ2007においてT1×Tが計算される。ここでレジスタT1にはXd-1Zd+1-Zd-1Xd+1がレジスタTには(Xd-xZd)2がそれぞれ格納されており、したがって(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が計算される。その結果がYd Wに格納される。ステップ2008において4B×yが計算される。その結果がレジスタTに格納される。ステップ2009においてT×Zd+1が計算される。ここでレジスタTには4Byが格納されており、したがって4ByZd+1が計算される。その結果がレジスタTに格納される。ステップ2010においてT×Zd-1が計算される。ここでレジスタTには4ByZd+1が格納されており、したがって4ByZd 1Zd-1が計算される。その結果がレジスタTに格納される。ステップ2011においてT×Zdが計算される。ここでレジスタTには4yZd+1Zd-1が格納されており、したがって4ByZd+1Zd-1Zdが計算される。その結果がレジスタTに格納される。ステップ2012においてT×Xdが計算される。ここでレジスタTには4ByZd+1Zd-1Zdが格納されており、したがって4ByZd+1Zd-1ZdXdが計算される。その結果がレジスタT1に格納される。ステップ2013においてT×Zdが計算される。ここでレジスタTには4ByZd+1Zd-1Zdが格納されており、したがって4ByZd+1Zd-1ZdZdが計算される。その結果がレジスタT2に格納される。ステップ2014においてT2×sが計算される。ここでレジスタT2には4ByZd+1Zd-1ZdZdが格納されており、したがって4sByZd+1Zd-1ZdZdが計算される。その結果がレジスタZd W格納される。ステップ2015においてα×Zd Wが計算される。ここでレジスタZd Wには4sByZd+1Zd-1ZdZdが格納されており、したがって4αsByZd+1Zd-1ZdZdが計算される。その結果がレジスタT2に格納される。ステップ2016においてT1+T2が計算される。ここでレジスタT1には4ByZd+1Zd-1ZdXdがレジスタT2には4αsByZd+1Zd-1ZdZdがそれぞれ格納されており、したがって4ByZd+1Zd-1ZdXd+4αsByZd+1Zd-1ZdZdが計算される。その結果がレジスタXd Wに格納される。したがってレジスタXd Wには4ByZd+1Zd-1ZdXd+4αsByZd+1Zd-1ZdZdが格納されている。レジスタYd Wにはステップ2007において(Xd-xZd)2(Xd-1Zd+1-Zd-1Xd+1)が格納され、その後更新が行なわれないので、その値が保持されている。レジスタZd Wにはステップ2014において4sByZd+1Zd-1ZdZdが格納され、その後更新が行なわれないので、その値が保持されている。
【0276】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1、Xd-1、Zd-1からワイエルシュトラス型楕円曲線におけるスカラー倍点の射影座標(Xd W, Yd W, Zd W)における値が全て復元される理由は以下の通りである。尚、点(d+1)Pは点dPに点Pを加算した点であり、点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数6、数7を得る。両辺を各々減算することにより、数8を得る。したがって、数9となる。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1、xd-1=Xd-1/Zd-1であり、この値を代入することにより射影座標の値へと変換すると、数10を得る。
【0277】
d=Xd/Zdであるが、ydの分母と通分することにより、数20となる。その結果として、
【0278】
【数56】
Figure 0003794266
【0279】
とし、
【0280】
【数57】
Figure 0003794266
【0281】
【数58】
Figure 0003794266
【0282】
とすると(X'd, Y'd, Z'd)=(Xd, Xd, Xd)となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、Yd W = Y'd、Xd W=X'd+αZd W及びZd W=sZ'dの関係がある。結果として次の式を得る。
【0283】
【数59】
Figure 0003794266
【0284】
【数60】
Figure 0003794266
【0285】
【数61】
Figure 0003794266
【0286】
となる。ここで、Xd W, Yd W, Zd Wは図20により与えられる。したがって、ワイエルシュトラス型楕円曲線における射影座標(Xd W, Yd W, Zd W)の値が全て復元されていることになる。
【0287】
上記手順はステップ2001、ステップ2002、ステップ2004、ステップ2007、ステップ2008、ステップ2009、ステップ2010、ステップ2011、ステップ2012、ステップ2013、ステップ2014及びステップ2015において有限体上の乗算の計算量を必要とする。また、ステップ2006において有限体上の2乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をSとすると、上記手順は12M+Sの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8Mと仮定すると座標復元の計算量は12.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0288】
尚、上記手順をとらなくても、上記計算式により与えられたXd W、Yd W、Zd Wの値が計算できればXd W、Yd W、Zd Wの値が復元できる。また、ワイエルシュトラス型楕円曲線においてアフィン座標におけるスカラー倍点dPをdP=(xd W、,yd W)とすると、xd W、yd Wが上記計算式により与えられる値を取るようにXd W、Yd W、Zd Wの値を選択し、その値が計算できればXd W、Yd W、Zd Wが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBやモンゴメリ型楕円曲線への変換パラメタであるsの値を小さくとることにより、ステップ2008乃至はステップ2014における乗算の計算量を削減することができる。
【0289】
次に、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力するアルゴリズムについて説明する。
【0290】
第12実施例の高速スカラー倍計算部202の高速スカラー倍計算方法として、第11実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1,Xd-1,Zd-1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0291】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は12M+Sであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+1)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+13.8)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量はおおよそ1486Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ1600Mであり、これと比べて必要となる計算量は削減されている。
【0292】
第13実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置103が、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd W,yd W)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(xd-1,yd-1)の座標のうちxd-1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値xd、xd+1、xd-1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd W,yd W)の座標yd Wの復元を行なう。スカラー倍計算装置103はワイエルシュトラス型楕円曲線上でアフィン座標において完全に座標が与えられたスカラー倍点(xd W,yd W)を計算結果として出力する。
【0293】
次に図21により、座標x、y、xd、xd+1、xd-1が与えられた場合に、xd W、yd Wを出力する座標復元部の処理について説明する。
【0294】
座標復元部203では、モンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(xd-1,yd-1)の座標のうちxd-1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xd W,yd W)を出力する。
【0295】
ステップ2101においてxd−xが計算され、レジスタT1に格納される。ステップ2102においてT1の2乗すなわち(xd−x)2が計算され、レジスタT1に格納される。ステップ2103においてxd-1−xd+1が計算され、レジスタT2に格納される。ステップ2104においてT1×T2が計算される。ここでレジスタT1には(xd−x)2がレジスタT2にはxd-1−xd+1がそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)が計算される。その結果がレジスタT1に格納される。ステップ2105において4B×yが計算され、レジスタT2に格納される。ステップ2106においてT2の逆元が計算される。ここでレジスタT2には4Byが格納されており、したがって1/4Byが計算される。その結果がレジスタT2に格納される。ステップ2107においてT1×T2が計算される。ここでレジスタT1には(xd−x)2(xd-1−xd+1)がレジスタT2には1/4Byがそれぞれ格納されており、したがって(xd−x)2(xd-1−xd+1)/4Byが計算される。その結果がレジスタT1に格納される。ステップ2108においてT1×s-1が計算される。ここでレジスタT1には(xd−x)2(xd-1−xd+1)/4Byが格納されており、したがって(xd−x)2(xd-1−xd+1)/4sByが計算される。その結果がレジスタyd Wに格納される。尚、sはあらかじめ与えられている値であり、したがってあらかじめs-1を計算できる。ステップ2109においてxd×s-1が計算される。その結果がレジスタT1に格納される。ステップ2110においてT1+αが計算される。ここでレジスタT1にはs-1xdが格納されており、したがってs-1xd+αが計算される。その結果がレジスタxd Wに格納される。したがってレジスタxd Wにはs-1xd+αが格納されている。レジスタyd Wはステップ2108において(xd−x)2(xd-1−xd+1)/4sByが格納され、その後更新されないので、その値が保持されている。
【0296】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。点(d-1)Pは点dPから点Pを減算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数6、数7を得る。両辺を各々減算することにより、数8を得る。したがって、数9となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、yd W=s-1yd及びxd W=s-1xd+αの関係がある。結果として次の式を得る。
【0297】
【数62】
Figure 0003794266
【0298】
【数63】
Figure 0003794266
【0299】
ここで、xd W,yd Wは図21により与えられる。したがって、アフィン座標(xd W, yd W)の値は全て復元されていることになる。
【0300】
上記手順はステップ2104、ステップ2105、ステップ2107、ステップ2108及びステップ2109において有限体上の乗算の計算量を必要とする。また、ステップ2102において有限体上の2乗算の計算量を必要とする。さらにステップ2106において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS、有限体上の逆元演算の計算量をIとすると、上記手順は5M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M及びI=40Mと仮定すると座標復元の計算量は45.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0301】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればyd Wの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBやモンゴメリ型楕円曲線への変換パラメタsの値を小さくとることにより、ステップ2105、ステップ2108乃至はステップ2109における乗算の計算量を削減することができる。
【0302】
次に図24により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd,xd+1,xd=1を出力する高速スカラー倍計算部の処理について説明する。
【0303】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)のうちxd+1、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d-1)P=(xd-1,yd-1)のうちxd-1を出力する。ステップ2416として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ2401として、変数Iに初期値1を代入する。ステップ2402として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ2403として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ2402で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ2404として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ2414へ行く。一致しなければステップ2405へ行く。ステップ2405として、変数Iを1増加させる。ステップ2406として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ2406へ行く。そのビットの値が1であればステップ2410へ行く。ステップ2407として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ2408へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ2408として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ2409へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ2409として、ステップ2408で求めた点2mPとステップ2407で求めた点(2m+1)Pを点の組(2mP,(2m+1)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ2404へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ2410として、射影座標により表された点の組(mP, (m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ2411へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ2411として、射影座標により表された点の組(mP,(m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ2412へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ2411として、ステップ2410で求めた点(2m+1)Pとステップ2411で求めた点(2m+2)Pを点の組((2m+1)P, (2m+2)P)として、点の組(mP,(m+1)Pの代わりに格納する。その後ステップ2404へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ2414として、射影座標で表された点の組(mP,(m+1)P)から、点(m-1)Pの射影座標におけるX座標Xm-1及びZ座標Zm-1を求め、それぞれXd-1及びZd-1とする。その後ステップ2415へ行く。ステップ2415として、射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとし、射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1とする。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。Xd-1,Z d+1,X d,Z d,X d+1,Z d+1より、数24、数25、数26としてxd-1,xd,xd+1を求める。その後ステップ2413へ行く。ステップ2413として、xd-1,xd,xd+1を出力する。上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。またステップ2414において(m-1)Pを求める際に、数13、数14の公式により求めてもよいし、mが奇数であれば、((m-1)/2)Pの値をステップ2412の段階で別に保持しておき、その値からモンゴメリ型楕円曲線の2倍算の公式より、(m-1)Pを求めてもよい。
【0304】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ2407において加算の計算量、ステップ2408において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ2410において加算の計算量、ステップ2411において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ2404、ステップ2405、ステップ2406、ステップ2407、ステップ2408、ステップ2409乃至はステップ2404、ステップ2405、ステップ2406、ステップ2410、ステップ2411、ステップ2412の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ2402での2倍算の計算量、ステップ2414での(m-1)Pの計算に必要な計算量及びステップ2415でのアフィン座標への変換の計算量を考慮に入れると、全体の計算量は(6M+4S)k+11M+Iとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度、計算量IはI=40M程度と見積もられるので、全体の計算量はおおよそ(9.2k+51)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1523Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられ、これ以外にアフィン座標への変換の計算量が必要となる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1640Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0305】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd-1,xd,xd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0306】
第14の実施例は、スカラー倍計算装置103がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力するものである。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1) の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値Xd、Zd、Xd+1、Zd+1、x及びyよりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標xd及びydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0307】
次に図34により、座標x,y,Xd,Zd,Xd+1,Zd+1が与えられた場合にxd,ydを出力する座標復元部の処理について説明する。
【0308】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X,Y,Z)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0309】
ステップ3401においてx×Zdが計算され、レジスタT1に格納される。ステップ3402においてXd+T1が計算される。ここでレジスタT1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタT2に格納される。ステップ3403においてXd-T1が計算され、ここでレジスタT1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタT3に格納される。ステップ3404においてレジスタT3の2乗が計算される。ここでレジスタT3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ3405においてT3×Xd+1が計算される。ここでレジスタT3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ3406において2A×Zdが計算され、レジスタT1に格納される。ステップ3407においてT2+T1が計算される。ここでレジスタT2にはxZd+XdがレジスタT1には2AZdがそれぞれ格納されており、したがってxZd+Xd+2AZdが計算される。その結果がレジスタT2に格納される。ステップ3408においてx×Xdが計算され、レジスタT4に格納される。ステップ3409においてT4+Zdが計算される。ここでレジスタT4にはxXdが格納されており、したがってxXd+Zdが計算される。その結果がレジスタT4に格納される。ステップ3410においてT2×T4が計算される。ここでレジスタT2にはxZd+Xd+2AZdがレジスタT4にはxXd+Zdがそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)が計算される。その結果がレジスタT2に格納される。ステップ3411においてT1×Zdが計算される。ここでレジスタT1には2AZdが格納されており、したがって2AZd 2が計算される。その結果がレジスタT1に格納される。ステップ3412においてT2-T1が計算される。ここでレジスタT2には(xZd+Xd+2AZd)(xXd+Zd)がここでレジスタT1には2AZd 2がそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)-2AZd 2が計算される。その結果がレジスタT2に格納される。ステップ3413においてT2×Zd+1が計算される。ここでレジスタT2には(xZd+Xd+2AZd)(xXd+Zd)-2AZd 2が格納されており、したがってZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)が計算される。その結果がレジスタT2に格納される。ステップ3414においてT2-T3が計算される。ここでレジスタT2にはZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)がレジスタT3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xZd+Xd+2AZd) (xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ3415において2B×yが計算され、レジスタT1に格納される。ステップ3416においてT1×Zdが計算される。ここでレジスタT1には2Byが格納されており、したがって2ByZdが計算される。その結果がレジスタT1に格納される。ステップ3417においてT1×Zd+1が計算される。ここでレジスタT1には2ByZdが格納されており、したがって2ByZdZd+1が計算される。その結果がレジスタT1に格納される。ステップ3418においてT1×Zdが計算される。ここでレジスタT1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Zdが計算される。その結果がレジスタT3に格納される。ステップ3419においてレジスタT3の逆元が計算される。ここでレジスタT3には2ByZdZd+1Zdが格納されており、したがって1/2ByZdZd+1Zdが計算される。その結果がレジスタT3に格納される。ステップ3420においてT2×T3が計算される。ここでレジスタT2にはZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2がレジスタT3には1/2ByZdZd+1Zdがそれぞれ格納されており、したがって{Zd+1 ((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2}/2ByZdZd+1 Zdが計算される。その結果がレジスタydに格納される。ステップ3421においてT1×Xdが計算される。ここでレジスタT1には2ByZdZd+1が格納されており、したがって2ByZd Zd+1Xdが計算される。その結果がレジスタT1に格納される。ステップ3422においてT1×T3が計算される。ここでレジスタT1には2ByZdZd+1XdがレジスタT3には1/2ByZdZd+1Zdがそれぞれ格納されており、したがって2ByZdZd+1Xd /2ByZdZd+1Zd(=Xd/Zd)が計算される。その結果がxdに格納される。ydにはステップ3420において{Zd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2}/2By ZdZd+1Zdが格納され、その後更新が行なわれないので、その値が保持されている。
【0310】
上記手順により座標復元部203へ与えられたx、y、Xd、Zd、Xd+1、Zd+1からモンゴメリ型楕円曲線におけるスカラー倍点のアフィン座標(xd,yd)における値が全て復元される理由は以下の通りである。尚、点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数6を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd 2=xd 3+Axd 2+xd及びBy2=x3+Ax2+xをみたす。数6に代入し、Byd 2及びBy2を消去し、式を整理すると、
【0311】
【数64】
Figure 0003794266
【0312】
を得る。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【0313】
【数65】
Figure 0003794266
【0314】
d=Xd/Zdであるが、逆元演算の回数を減らす目的でydの分母と通分することにより、
【0315】
【数66】
Figure 0003794266
【0316】
となる。ここで、xd ydは図34の処理により与えられている。したがって、アフィン座標(xd,yd)の値が全て復元されていることになる。
【0317】
上記手順はステップ3401、ステップ3405、ステップ3406、ステップ3408、ステップ3410、ステップ3411、ステップ3413、ステップ3415、ステップ3416、ステップ3417、ステップ3418、ステップ3420、ステップ3421及びステップ3422において有限体上の乗算の計算量を必要とする。また、ステップ3404において有限体上の2乗算の計算量を必要とする。また、ステップ3419において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS及び有限体上の逆元演算の計算量をIとすると、上記手順は14M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M、I=40Mと仮定すると座標復元の計算量は54.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0318】
尚、上記手順をとらなくても、上記計算式により与えられたxd,ydの値が計算できればxd,ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるA乃至はBの値を小さくとることにより、ステップ3406乃至はステップ3415における乗算の計算量を削減することができる。
【0319】
次にスカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力する高速スカラー倍計算部の処理を説明する。
【0320】
第14実施例の高速スカラー倍計算部202の高速スカラー倍計算方法として、第1実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部202において上記アルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0321】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は14M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k―4.6)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+50)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1522Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0322】
第15の実施例は、スカラー倍計算部103がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算し出力するものである。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値Xd、Zd、Xd+1、Zd+1、x及びyよりモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標Xd,Yd及びZdの復元を行なう。スカラー倍計算装置103は射影座標において完全に座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算結果として出力する。
【0323】
次に図35により、座標x、y Xd、Zd、Xd+1、Zd+1が与えられた場合にXd、Yd、Zdを出力する座標復元部の処理について説明する。
【0324】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順で射影座標おいて完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0325】
ステップ3501においてx×Zdが計算され、レジスタT1に格納される。ステップ3502においてXd+T1が計算される。ここでレジスタT1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタT2に格納される。ステップ3503においてXd-T1が計算され、ここでレジスタT1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタT3に格納される。ステップ3504においてレジスタT3の2乗が計算される。ここでレジスタT3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ3505においてT3×Xd+1が計算される。ここでレジスタT3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ3506において2A×Zdが計算され、レジスタT1に格納される。ステップ3507においてT2+T1が計算される。ここでレジスタT2にはxZd+XdがレジスタT1には2AZdがそれぞれ格納されており、したがってxZd+Xd+2AZdが計算される。その結果がレジスタT2に格納される。ステップ3508においてx×Xdが計算され、レジスタT4に格納される。ステップ3509においてT4+Zdが計算される。ここでレジスタT4にはxXdが格納されており、したがってxXd+Zdが計算される。その結果がレジスタT4に格納される。ステップ3510においてT2×T4が計算される。ここでレジスタT2にはxZd+Xd+2AZdがレジスタT4にはxXd+Zdがそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)が計算される。その結果がレジスタT2に格納される。ステップ3511においてT1×Zdが計算される。ここでレジスタT1には2AZdが格納されており、したがって2AZd 2が計算される。その結果がレジスタT1に格納される。ステップ3512においてT2-T1が計算される。ここでレジスタT2には(xZd+Xd+2AZd)(xXd+Zd)がここでレジスタT1には2AZd 2がそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)-2AZd 2が計算される。その結果がレジスタT2に格納される。ステップ3513においてT2×Zd+1が計算される。ここでレジスタT2には(xZd+Xd+2AZd)(xXd+Zd)-2AZd 2が格納されており、したがってZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)が計算される。その結果がレジスタT2に格納される。ステップ3514においてT2-T3が計算される。ここでレジスタT2にはZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)がレジスタT3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタYdに格納される。ステップ3515において2B×yが計算され、レジスタT1に格納される。ステップ3516においてT1×Zdが計算される。ここでレジスタT1には2Byが格納されており、したがって2ByZdが計算される。その結果がレジスタT1に格納される。ステップ3517においてT1×Zd+1が計算される。ここでレジスタT1には2ByZdが格納されており、したがって2ByZdZd+1が計算される。その結果がレジスタT1に格納される。ステップ3518においてT1×Xdが計算される。ここでレジスタT1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Xdが計算される。その結果がレジスタXdに格納される。ステップ3519においてT1×Zdが計算される。ここでレジスタT1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Zdが計算される。その結果がレジスタZdに格納される。Xdにはステップ3518において2ByZdZd+1Xdが格納され、その後更新が行なわれないので、その値が保持されている。Ydにはステップ3514においてZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2が格納され、その後更新が行なわれないので、その値が保持されている。
【0326】
上記手順により与えられたx、y、Xd、Zd、Xd+1 Zd+1からスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、次の数6を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd 2=xd 3+Axd 2+xd及びBy2=x3+Ax2+xをみたす。数6に代入し、Byd 2及びBy2を消去し、式を整理すると、数64を得る。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、数65を得る。xd=Xd/Zdであるが、逆元演算の回数を減らす目的でydの分母と通分することにより、数66となる。その結果として、
【0327】
【数67】
Figure 0003794266
【0328】
とし、Xd及びZdをそれぞれ
【0329】
【数68】
Figure 0003794266
【0330】
【数69】
Figure 0003794266
【0331】
により更新すればよい。ここで、Xd,Yd,Zdは図35の処理により与えられている。したがって、射影座標(Xd,Yd,Zd)の値が全て復元されていることになる。
【0332】
上記手順はステップ3501、ステップ3505、ステップ3506、ステップ3508、ステップ3510、ステップ3511、ステップ3513、ステップ3515、ステップ3516、ステップ3517、ステップ3518及びステップ3519において有限体上の乗算の計算量を必要とする。また、ステップ3504において有限体上の2乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をSとすると、上記手順は12M+Sの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8Mと仮定すると座標復元の計算量は12.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0333】
尚、上記手順をとらなくても、上記計算式により与えられたXd、Yd、Zdの値が計算できればXd、Yd、Zdの値が復元できる。また、xd、ydが上記計算式により与えられる値を取るようにXd、Yd、Zdの値を選択し、その値が計算できればXd、Yd、Zdが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるA乃至はBの値を小さくとることにより、ステップ3506乃至はステップ3515における乗算の計算量を削減することができる。
【0334】
次に、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムについて説明する。
【0335】
第15実施例の高速スカラー倍計算部202の高速スカラー倍計算方法として、第1実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部202において上記アルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0336】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は12M+Sであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k―4.6)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+8)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1480Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ1600Mであり、これと比べて必要となる計算量は削減されている。
【0337】
第16の実施例は、スカラー倍計算装置103がスカラー値d及びモンゴメリ型楕円曲線上の点Pから、モンゴメリ型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力する。スカラー値d及びモンゴメリ型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値xd、xd+1、x及びyよりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標ydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0338】
次に図36により、座標x、y、xd、xd+1が与えられた場合に、xd、ydを出力する座標復元部の処理について説明する。
【0339】
座標復元部203では、モンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xd,yd)を出力する。
【0340】
ステップ3601においてxd×xが計算され、レジスタT1に格納される。ステップ3602においてT1+1が計算される。ここでレジスタT1にはxdxが格納されており、したがってxdx+1が計算される。その結果がレジスタT1に格納される。ステップ3603においてxd+xが計算され、レジスタT2に格納される。ステップ3604においてT2+2Aが計算される。ここでレジスタT2にはxd+xが格納されており、したがってxd+x+2Aが計算される。その結果がレジスタT2に格納される。ステップ3605においてT1×T2が計算される。ここでレジスタT1にはxdx+1がレジスタT2にはxd+x+2Aがそれぞれ格納されており、したがって(xdx+1)(xd+x+2A)が計算される。その結果がレジスタT1に格納される。ステップ3606においてT1-2Aが計算される。ここでレジスタT1には(xdx+1)(xd+x+2A)が格納されており、したがって(xdx+1)(xd+x+2A)-2Aが計算される。その結果がレジスタT1に格納される。ステップ3607においてxd-xが計算され、レジスタT2に格納される。ステップ3608においてT2の2乗が計算される。ここでレジスタT2にはxd-xが格納されており、したがって(xd−x)2が計算される。その結果がレジスタT2に格納される。ステップ3609においてT2×xd+1が計算される。ここでレジスタT2には(xd−x)2が格納されており、したがって(xd−x)2xd+1が計算される。その結果がレジスタT2に格納される。ステップ3610においてT1-T2が計算される。ここでレジスタT1には(xdx+1)(xd+x+2A)-2AがレジスタT2には(xd−x)2xd+1がそれぞれ格納されており、したがって(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1が計算される。その結果がレジスタT1に格納される。ステップ3611において2B×yが計算され、レジスタT2に格納される。ステップ3612においてT2の逆元が計算される。ここでレジスタT2には2Byが格納されており、したがって1/2Byが計算される。その結果がレジスタT2に格納される。ステップ3613においてT1×T2が計算される。ここでレジスタT1には(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1がレジスタT2には1/2Byがそれぞれ格納されており、したがって(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1/2Byが計算される。その結果がレジスタydに格納される。したがってレジスタydには(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1/2Byが格納されている。レジスタxdは全く更新されないので入力された値が保持されている。
【0341】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。尚、点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数6を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd 2=xd 3+Axd 2 +xd及びBy2=x3+Ax2+xをみたす。数6に代入し、Byd 2及びBy2を消去し、式を整理すると、数64を得る。ここで、xd,ydは図36の処理により与えられる。したがって、アフィン座標(xd,yd)の値は全て復元されたことになる。
【0342】
上記手順はステップ3601、ステップ3605、ステップ3609、ステップ3611及びステップ3613において有限体上の乗算の計算量を必要とする。また、ステップ3608において有限体上の2乗算の計算量を必要とする。さらにステップ3612において有限体上の逆元演算の計算量を必要とする。有限体上の減算の計算量は、有限体上の乗算の計算量、2乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS、有限体上の逆元演算の計算量をIとすると、上記手順は5M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M及びI=40Mと仮定すると座標復元の計算量は45.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0343】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればydの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるBの値を小さくとることにより、ステップ2605における乗算の計算量を削減することができる。
【0344】
次に図43により、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、xd、xd+1を出力する高速スカラー倍計算部の処理について説明する。
【0345】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)のうちxd+1を出力する。ステップ4301として、変数Iに初期値1を代入する。ステップ4302として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ4303として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ4302で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ4304として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ4315へ行く。一致しなければステップ4305へ行く。ステップ4305として、変数Iを1増加させる。ステップ4306として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ4306へ行く。そのビットの値が1であればステップ4310へ行く。ステップ4307として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ4308へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ4308として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ4309へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ4309として、ステップ4308で求めた点2mPとステップ4307で求めた点(2m+1)Pを点の組(2mP, (2m+1)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ4304へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ4310として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ4311へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ4311として、射影座標により表された点の組(mP,(m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ4312へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ4311として、ステップ4310で求めた点(2m+1)Pとステップ4311で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ4304へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ615として、射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとし、射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1とする。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。Xd,Zd,Xd+1,Zd+1より、xd=XdZd+1/ZdZd+1, xd+1=ZdXd+1/Zd Zd+1としてxd,xd+1を求める。その後ステップ4313へ行く。ステップ4313として、xd,xd+1を出力する。上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【0346】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ4307において加算の計算量、ステップ4308において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ4310において加算の計算量、ステップ4311において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ4304、ステップ4305、ステップ4306、ステップ4307、ステップ4308、ステップ4309乃至はステップ4304、ステップ4305、ステップ4306、ステップ4310、ステップ4311、ステップ4312の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ4302での2倍算の計算量及びアフィン座標への変換の計算量を考慮に入れると、全体の計算量は(6M+4S)k+2M―2S+Iとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度、計算量IはI=40M程度と見積もられるので、全体の計算量はおおよそ(9.2k+40.4)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1512Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられ、これ以外にアフィン座標への変換の計算量が必要となる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1640Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0347】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びモンゴメリ型楕円曲線上の点Pから、xd、xd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0348】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は5M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+40.4)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。S=0.8M及びI=40Mと仮定すると、この計算量はおおよそ(9.2k+86.2)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量はおおよそ1558Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0349】
第17の実施例は、楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置103の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置103の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算装置103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力するものである。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値値Xd、Zd、Xd+1、Zd+1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標xd及びydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0350】
次に図37により、座標x、y、Xd、Zd、Xd+1、Zd+1が与えられた場合にxd、ydを出力する座標復元部の処理について説明する。
【0351】
座標復元部203では、ワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたワイエルシュトラス型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X,Y,Z)でそれぞれ表す。入力されたスカラー値をdとしてワイエルシュトラス型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0352】
ステップ3701においてx×Zdが計算され、レジスタT1に格納される。ステップ3702においてXd+T1が計算される。ここでレジスタT1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタT2に格納される。ステップ3703においてXd-T1が計算され、ここでレジスタT1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタT3に格納される。ステップ3704においてレジスタT3の2乗が計算される。ここでレジスタT3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ3705においてT3×Xd+1が計算される。ここでレジスタT3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ3706においてx×Xdが計算され、レジスタT1に格納される。ステップ3707においてa×Zdが計算され、レジスタT4に格納される。ステップ3708においてT1+T4が計算される。ここでレジスタT1にはxXdがレジスタT4にはaZdがそれぞれ格納されており、したがってxXd+aZdが計算される。その結果がレジスタT1に格納される。ステップ3709においてT1×T2が計算される。ここでレジスタT1にはxXd+aZdがレジスタT2にはxZd+Xdがそれぞれ格納されており、したがって(xXd+aZd)(xZd+Xd)が計算される。その結果がレジスタT1に格納される。ステップ3710においてレジスタZdの2乗が計算され、レジスタT2に格納される。ステップ3711においてT2×2bが計算される。ここでレジスタT2にはZd 2が格納されており、したがって2bZd 2が計算される。その結果がレジスタT2に格納される。ステップ3712においてT1+T2が計算される。ここでレジスタT1には(xXd+aZd)(xZd+Xd)がレジスタT2には2bZd 2がそれぞれ格納されており、したがって(xXd+aZd)(xZd+Xd)+2bZd 2が計算される。その結果がレジスタT1に格納される。ステップ3713においてT1×Zd+1が計算される。ここでレジスタT1には(xXd+aZd)(xZd+Xd)+2bZd 2が格納されており、したがってZd+1((xXd+aZd) (xZd+Xd)+2bZd 2)が計算される。その結果がレジスタT1に格納される。ステップ3714においてT1-T3が計算される。ここでレジスタT1にはZd+1((xXd+aZd)(xZd+Xd)+2bZd 2)がレジスタT3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xXd+aZd)(xZd+Xd)+2bZd 2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタT1に格納される。ステップ3715において2y×Zdが計算され、レジスタT2に格納される。ステップ3716においてT2×Zd+1が計算される。ここでレジスタT2には2yZdが格納されており、したがって2yZdZd+1が計算される。その結果がレジスタT2に格納される。ステップ3717においてT2×Zdが計算される。ここでレジスタT2には2yZdZd+1が格納されており、したがって2yZdZd+1Zdが計算される。その結果がレジスタT3に格納される。ステップ3718においてレジスタT3の逆元が計算される。ここでレジスタT3には2yZdZd+1Zdが格納されており、したがって1/2yZdZd+1Zd が計算される。その結果がレジスタT3に格納される。ステップ3719においてT1×T3が計算される。ここでレジスタT1にはZd+1((xXd+aZd)(xZd+Xd)+2bZd 2) -Xd+1(Xd-xZd)2がレジスタT3には1/2yZdZd+1Zdがそれぞれ格納されており、したがって(Zd+1((xXd+aZd)(xZd+Xd)+2bZd 2)-Xd+1(Xd-xZd)2)/2yZdZd+1Zdが計算される。その結果がレジスタydに格納される。ステップ3720においてT2×Xdが計算される。ここでレジスタT2には2yZdZd+1が格納されており、したがって2yZdZd+1Xdが計算される。その結果がレジスタT2に格納される。ステップ3721においてT2×T3が計算される。ここでレジスタT2には2yZdZd+1XdがレジスタT3には1/2yZdZd+1Zdがそれぞれ格納されており、したがって2yZdZd+1 Xd/2yZdZd+1Zdが計算される。その結果がレジスタxdに格納される。したがってレジスタxdには2yZdZd+1Xd/2yZdZd+1Zdが格納されている。レジスタydにはステップ3719において(Zd+1((xXd+aZd)(xZd+Xd)+2bZd 2)-Xd+1(Xd-xZd)2)/2yZdZd+1 Zdが格納され、その後更新が行なわれないので、その値が保持されている。
【0353】
上記手順により、与えられたx、y、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(xd,yd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、数27を得る。点P及び点dPはワイエルシュトラス型楕円曲線上の点であるので、yd 2=xd 3+axd+b及びy2=x3+ax+bをみたす。数27に代入し、yd 2及びy2を消去し、式を整理すると、
【0354】
【数70】
Figure 0003794266
【0355】
を得る。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【0356】
【数71】
Figure 0003794266
【0357】
d=Xd/Zdであるが、逆元演算の回数を減らす目的でydの分母と通分することにより、
【0358】
【数72】
Figure 0003794266
【0359】
となる。ここで、xd,ydは図37で示した処理により与えられる。したがって、アフィン座標(xd,yd)の値が全て復元されていることになる。
【0360】
上記手順はステップ3701、ステップ3705、ステップ3706、ステップ3707、ステップ3709、ステップ3710、ステップ3711、ステップ3713、ステップ3715、ステップ3716、ステップ3717、ステップ3719、ステップ3720及びステップ3721において有限体上の乗算の計算量を必要とする。また、ステップ3704において有限体上の2乗算の計算量を必要とする。また、ステップ3718において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS及び有限体上の逆元演算の計算量をIとすると、上記手順は14M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M、I=40Mと仮定すると座標復元の計算量は54.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0361】
尚、上記手順をとらなくても、上記計算式により与えられたxd,ydの値が計算できればxd,ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。
【0362】
次に図44により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力する高速スカラー倍計算部の処理について説明する。
【0363】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)のうちXd+1及びZd+1を出力する。ステップ4416として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ4401として、変数Iに初期値1を代入する。ステップ4402として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ4403として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ4402で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ4404として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ4415へ行く。一致しなければステップ4405へ行く。ステップ4405として、変数Iを1増加させる。ステップ4406として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ4406へ行く。そのビットの値が1であればステップ4410へ行く。ステップ4407として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ4408へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ4408として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ4409へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ4409として、ステップ4408で求めた点2mPとステップ4407で求めた点(2m+1)Pを点の組(2mP, (2m+1)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ4404へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ4410として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ4411へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ4411として、射影座標により表された点の組(mP,(m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ4412へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ4411として、ステップ4410で求めた点(2m+1)Pとステップ4411で求めた点(2m+2)Pを点の組((2m+1)P,(2m+2)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ4404へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ4415として、モンゴメリ型楕円曲線における点(m-1)Pを、ワイエルシュトラス型楕円曲線上で射影座標により表された点に変換する。その点のX座標及びZ座標をそれぞれあらためてXm-1及びZm-1とおく。また、モンゴメリ型楕円曲線において射影座標で表された点の組(mP,(m+1)P)に対して、点mP及び点(m+1)Pをワイエルシュトラス型楕円曲線上で射影座標で表された点に変換し、それぞれmP=(Xm,Ym,Zm)及び(m+1)P=(Xm+1,Ym+1,Zm+1)とあらためて置き直す。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。ステップ4413として、ワイエルシュトラス型楕円曲線上で射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZとして、ワイエルシュトラス型楕円曲線上で射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1として、出力する。また上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【0364】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ4407において加算の計算量、ステップ4408において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ4410において加算の計算量、ステップ4411において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ4404、ステップ4405、ステップ4406、ステップ4407、ステップ4408、ステップ4409乃至はステップ4404、ステップ4405、ステップ4406、ステップ4410、ステップ4411、ステップ4412の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ4402での2倍算の計算量とステップ4416でのモンゴメリ型楕円曲線上の点への変換に必要な計算量及びステップ4415でのワイエルシュトラス型楕円曲線上の点への変換に必要な計算量を考慮に入れると、全体の計算量は(6M+4S)k+2M―2Sとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度と見積もられるので、全体の計算量はおおよそ(9.2k+0.4)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1472Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1600Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0365】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd、Zd、Xd+1、Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0366】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は14M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+0.4)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+55.2)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量はおおよそ1527Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0367】
第18の実施例は楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置103の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置103の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算部103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値Xd、Zd、Xd+1、Zd+1、x及びyよりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標Xd,Yd及びZdの復元を行なう。スカラー倍計算装置103は射影座標において完全に座標が与えられたスカラー倍点(Xd,Yd,Zd)を計算結果として出力する。
【0368】
次に図38により、座標x、y Xd、Zd、Xd+1、Zd+1が与えられた場合にXd、Yd、Zdを出力する座標復元部の処理について説明する。
【0369】
座標復元部203では、ワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順で射影座標おいて完全な座標が与えられたスカラー倍点(Xd,Yd,Zd)を出力する。ここで入力されたワイエルシュトラス型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてワイエルシュトラス型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。ワイエルシュトラス型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0370】
ステップ3801においてx×Zdが計算され、レジスタT1に格納される。ステップ3802においてXd+T1が計算される。ここでレジスタT1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタT2に格納される。ステップ3803においてXd-T1が計算され、ここでレジスタT1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタT3に格納される。ステップ3804においてレジスタT3の2乗が計算される。ここでレジスタT3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ3805においてT3×Xd+1が計算される。ここでレジスタT3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ3806においてx×Xdが計算され、レジスタT1に格納される。ステップ3807においてa×Zdが計算され、レジスタT4に格納される。ステップ3808においてT1+T4が計算される。ここでレジスタT1にはxXdがレジスタT4にはaZdがそれぞれ格納されており、したがってxXd+aZdが計算される。その結果がレジスタT1に格納される。ステップ3809においてT1×T2が計算される。ここでレジスタT1にはxXd+aZdがレジスタT2にはxZd+Xdがそれぞれ格納されており、したがって(xXd+aZd)(xZd+Xd)が計算される。その結果がレジスタT1に格納される。ステップ3810においてレジスタZdの2乗が計算され、レジスタT2に格納される。ステップ3811においてT2×2bが計算される。ここでレジスタT2にはZd 2が格納されており、したがって2bZd 2が計算される。その結果がレジスタT2に格納される。ステップ3812においてT1+T2が計算される。ここでレジスタT1には(xXd+aZd)(xZd+Xd)がレジスタT2には2bZd 2がそれぞれ格納されており、したがって(xXd+aZd)(xZd+Xd)+2bZd 2が計算される。その結果がレジスタT1に格納される。ステップ3813においてT1×Zd+1が計算される。ここでレジスタT1には(xXd+aZd)(xZd+Xd)+2bZd 2が格納されており、したがってZd+1((xXd+aZd) (xZd+Xd)+2bZd 2)が計算される。その結果がレジスタT1に格納される。ステップ3814においてT1-T3が計算される。ここでレジスタT1にはZd+1((xXd+aZd)(xZd+Xd)+2bZd 2)がレジスタT3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xXd+aZd)(xZd+Xd)+2bZd 2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタYdに格納される。ステップ3815において2y×Zdが計算され、レジスタT2に格納される。ステップ3816においてT2×Zd+1が計算される。ここでレジスタT2には2yZdが格納されており、したがって2yZdZd+1が計算される。その結果がレジスタT2に格納される。ステップ3817においてT2×Xdが計算される。ここでレジスタT2には2yZdZd+1が格納されており、したがって2yZdZd+1Xdが計算される。その結果がレジスタXdに格納される。ステップ3819においてT2×Zdが計算される。ここでレジスタT2には2yZdZd+1が格納されており、したがって2yZdZd+1Zdが計算される。その結果がレジスタZdに格納される。したがってレジスタZdには2yZdZd+1Zdが格納されている。レジスタYdにはステップ3814においてZd+1((xXd+aZd)(xZd+Xd) +2bZd 2)+Xd+1(Xd-xZd)2が格納され、その後更新が行なわれないので、その値が保持されている。レジスタXdにはステップ3817において2yZdZd+1Xdが格納され、その後更新が行なわれないので、その値が保持されている。
【0371】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点の射影座標(Xd,Yd,Zd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、数27を得る。点P及び点dPはワイエルシュトラス型楕円曲線上の点であるので、yd 2=xd 3+axd+b及びy2=x3+ax+bをみたす。数27に代入し、yd 2及びy2を消去し、式を整理すると、数70を得る。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、数71を得る。xd=Xd/Zdであるが、逆元演算の回数を減らす目的でydの分母と通分することにより、数72となる。その結果として
【0372】
【数73】
Figure 0003794266
【0373】
とし、Xd及びZdをそれぞれ
【0374】
【数74】
Figure 0003794266
【0375】
【数75】
Figure 0003794266
【0376】
により更新すればよい。ここで、Xd,Yd,Zdは図38で示した処理により与えられる。したがって、射影座標(Xd,Yd,Zd)の値は全て復元されたことになる。
【0377】
上記手順はステップ3801、ステップ3805、ステップ3806、ステップ3807、ステップ3809、ステップ3811、ステップ3813、ステップ3815、ステップ3816、ステップ3817及びステップ3818において有限体上の乗算の計算量を必要とする。また、ステップ3804およびステップ3810において有限体上の2乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をSとすると、上記手順は11M+2Sの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8Mと仮定すると座標復元の計算量は12.6Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0378】
尚、上記手順をとらなくても、上記計算式により与えられたXd,Yd,Zdの値が計算できればXd,Yd,Zdの値が復元できる。また、xd,ydが上記計算式により与えられる値を取るようにXd,Yd,Zdの値を選択し、その値が計算できればXd,Yd,Zdが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。
【0379】
次に、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムについて説明する。
【0380】
第18実施例の高速スカラー倍計算部202の高速スカラー倍計算方法として、第17実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0381】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は11M+2Sであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+0.4)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+13)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量はおおよそ1485Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ1600Mであり、これと比べて必要となる計算量は削減されている。
【0382】
第19の実施例は楕円曲線としてワイエルシュトラス型楕円曲線を用いたものである。すなわち、スカラー倍計算装置103の入出力に用いる楕円曲線はワイエルシュトラス型楕円曲線である。ただし、スカラー倍計算装置103の内部の計算で使用する楕円曲線として、与えられたワイエルシュトラス型楕円曲線から変換可能であるようなモンゴメリ型楕円曲線を用いてもよい。スカラー倍計算装置103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d-1)P=(xd-1,yd-1)の座標のうちxd-1を計算し、アフィン座標で表された入力されたワイエルシュトラス型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値xd、xd+1、xd-1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標ydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0383】
次に図39により、座標x、y、xd、xd+1が与えられた場合に、xd、ydを出力する座標復元部の処理について説明する。
【0384】
座標復元部203では、ワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xd,yd)を出力する。
【0385】
ステップ3901においてxd×xが計算され、レジスタT1に格納される。ステップ3902においてT1+aが計算される。ここでレジスタT1にはxdxが格納されており、したがってxdx+aが計算される。その結果がレジスタT1に格納される。ステップ3903においてxd+xが計算され、レジスタT2に格納される。ステップ3904においてT1×T2が計算される。ここでレジスタT1にはxdx+aがレジスタT2にはxd+xがそれぞれ格納されており、したがって(xdx+a)(xd+x)が計算される。その結果がレジスタT1に格納される。ステップ3905においてT1+2bが計算される。ここでレジスタT1には(xdx+a)(xd+x)が格納されており、したがって(xdx+a)(xd+x)+2bが計算される。その結果がレジスタT1に格納される。ステップ3906においてxd-xが計算され、レジスタT2に格納される。ステップ3907においてT2の2乗が計算される。ここでレジスタT2にはxd-xが格納されており、したがって(xd−x)2が計算される。その結果がレジスタT2に格納される。ステップ3908においてT2×x2d+1が計算される。ここでレジスタT2には(xd−x)2が格納されており、したがってxd+1(xd−x)2が計算される。その結果がレジスタT2に格納される。ステップ3909においてT1-T2が計算される。ここでレジスタT1には(xdx+a)(xd+x)+2bがレジスタT2にはxd+1(xd−x)2がそれぞれ格納されており、したがって(xdx+a)(xd+x)+2b-xd+1(xd−x)2が計算される。その結果がレジスタT1に格納される。ステップ3910において2yの逆元が計算され、レジスタT2に格納される。ステップ3911においてT1×T2が計算される。ここでレジスタT1には(xdx+a)(xd+x)+2b-xd+1(xd−x)2がレジスタT2には1/2yがそれぞれ格納されており、したがって((xdx+a)(xd+x)+2b-xd+1(xd−x)2)/2yが計算される。その結果がレジスタydに格納される。したがってレジスタydには((xdx+a)(xd+x)+2b-xd+1(xd−x)2)/2yが格納されている。レジスタxdは全く更新されないので入力された値が保持されている。
【0386】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。ワイエルシュトラス型楕円曲線のアフィン座標における加算公式に代入すると、数27を得る。点P及び点dPはワイエルシュトラス型楕円曲線上の点であるので、yd 2=xd 3+axd+b及びy2=x3+ax+bをみたす。数27に代入し、yd 2及びy2を消去し、式を整理すると、数70を得る。ここでxd,ydは図39の処理によって与えられる。したがって、アフィン座標(xd,yd)の値を全て復元していることになる。
【0387】
上記手順はステップ3901、ステップ3904、ステップ3908及びステップ3911において有限体上の乗算の計算量を必要とする。また、ステップ3907において有限体上の2乗算の計算量を必要とする。さらにステップ3910において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS、有限体上の逆元演算の計算量をIとすると、上記手順は4M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M及びI=40Mと仮定すると座標復元の計算量は44.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0388】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればydの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。
【0389】
次に図44により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd、xd+1を出力するアルゴリズムについて説明する。
【0390】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)のうちxd、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)P=(xd+1,yd+1)のうちxd+1を出力する。ステップ4416として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ4401として、変数Iに初期値1を代入する。ステップ4402として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ4403として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ4402で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ4404として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ4415へ行く。一致しなければステップ4405へ行く。ステップ4405として、変数Iを1増加させる。ステップ4406として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ4406へ行く。そのビットの値が1であればステップ4410へ行く。ステップ4407として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ4408へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ4408として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ4409へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ4409として、ステップ4408で求めた点2mPとステップ4407で求めた点(2m+1)Pを点の組(2mP, (2m+1)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ4404へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ4410として、射影座標により表された点の組(mP, (m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ4411へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ4411として、射影座標により表された点の組(mP, (m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ4412へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ4411として、ステップ4410で求めた点(2m+1)Pとステップ4411で求めた点(2m+2)Pを点の組((2m+1)P, (2m+2)P)として、点の組(mP, (m+1)P)の代わりに格納する。その後ステップ4404へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ4415として、モンゴメリ型楕円曲線において射影座標で表された点の組(mP,(m+1)P)に対して、点mP及び点(m+1)Pをワイエルシュトラス型楕円曲線上でアフィン座標で表された点に変換し、それぞれmP=(xm,ym)及び(m+1)P=(xm+1,ym+1)とあらためて置き直す。ここで、ym及びym+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。その後ステップ4413へ行く。ステップ4413として、ワイエルシュトラス型楕円曲線上で射影座標で表された点mP=(xm,ym)よりxmをxdとして、ワイエルシュトラス型楕円曲線上でアフィン座標で表された点(m+1)P=(xm+1,ym+1)よりxm+1をxd+1として、出力する。また上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【0391】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ4407において加算の計算量、ステップ4408において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ4410において加算の計算量、ステップ4411において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ4404、ステップ4405、ステップ4406、ステップ4407、ステップ4408、ステップ4409乃至はステップ4404、ステップ4405、ステップ4406、ステップ4410、ステップ4411、ステップ4412の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ4402での2倍算の計算量とステップ4416でのモンゴメリ型楕円曲線上への点への変換に必要な計算量及びステップ4415でのワイエルシュトラス型楕円曲線上の点への必要な計算量を考慮に入れると、全体の計算量は(6M+4S)k+4M―2S+Iとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度、計算量Iは、I=40M程度と見積もられるので、全体の計算量はおおよそ(9.2k+42.4)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1514Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1640Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0392】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd, xd+1,xd=1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0393】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は4M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+42.4)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+87.2)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1559Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0394】
第20の実施例は、入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd,yd)を計算し出力するものである。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1) の座標のうちXd+1及びZd+1を計算する。また、入力されたワイエルシュトラス型楕円曲線上の点Pを、与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線上の点に変換し、その点を新たにP=(x,y)とおく。高速スカラー倍計算部202は、Xd、Zd、Xd+1、Zd+1、x及びyを座標復元部203に与える。座標復元部203は与えられた座標の値Xd、Zd、Xd+1、Zd+1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標xd及びydの復元を行なう。スカラー倍計算装置103はアフィン座標において完全に座標が与えられたスカラー倍点(xd,yd)を計算結果として出力する。
【0395】
次に図40により、座標x,y,Xd,Zd,Xd+1,Zd+1が与えられた場合にxd,ydを出力する座標復元部の処理について説明する。
【0396】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標うちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標おいて完全な座標が与えられたスカラー倍点(xd,yd)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X,Y,Z)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd Mon,yd Mon)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0397】
ステップ4001においてx×Zdが計算され、レジスタT1に格納される。ステップ4002においてXd+T1が計算される。ここでレジスタT1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタT2に格納される。ステップ4003においてXd-T1が計算され、ここでレジスタT1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタT3に格納される。ステップ4004においてレジスタT3の2乗が計算される。ここでレジスタT3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ4005においてT3×Xd+1が計算される。ここでレジスタT3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ4006において2A×Zdが計算され、レジスタT1に格納される。ステップ4007においてT2+T1が計算される。ここでレジスタT2にはxZd+XdがレジスタT1には2AZdがそれぞれ格納されており、したがってxZd+Xd+2AZdが計算される。その結果がレジスタT2に格納される。ステップ4008においてx×Xdが計算され、レジスタT4に格納される。ステップ4009においてT4+Zdが計算される。ここでレジスタT4にはxXdが格納されており、したがってxXd+Zdが計算される。その結果がレジスタT4に格納される。ステップ4010においてT2×T4が計算される。ここでレジスタT2にはxZd+Xd+2AZdがレジスタT4にはxXd+Zdがそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)が計算される。その結果がレジスタT2に格納される。ステップ4011においてT1×Zdが計算される。ここでレジスタT1には2AZdが格納されており、したがって2AZd 2が計算される。その結果がレジスタT1に格納される。ステップ4012においてT2-T1が計算される。ここでレジスタT2には(xZd+Xd+2AZd)(xXd+Zd)がここでレジスタT1には2AZd 2がそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)-2AZd 2が計算される。その結果がレジスタT2に格納される。ステップ4013においてT2×Zd+1が計算される。ここでレジスタT2には(xZd+Xd+2AZd)(xXd+Zd)-2AZd 2が格納されており、したがってZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)が計算される。その結果がレジスタT2に格納される。ステップ4014においてT2-T3が計算される。ここでレジスタT2にはZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)がレジスタT3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xZd+Xd+2AZd) (xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタT2に格納される。ステップ4015において2B×yが計算され、レジスタT1に格納される。ステップ4016においてT1×Zdが計算される。ここでレジスタT1には2Byが格納されており、したがって2ByZdが計算される。その結果がレジスタT1に格納される。ステップ4017においてT1×Zd+1が計算される。ここでレジスタT1には2ByZdが格納されており、したがって2ByZdZd+1が計算される。その結果がレジスタT1に格納される。ステップ4018においてT1×Zdが計算される。ここでレジスタT1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Zdが計算される。その結果がレジスタT3に格納される。ステップ4019においてT3×sが計算される。ここでレジスタT3には2ByZdZd+1Zdが格納されており、したがって2ByZdZd+1Zdsが計算される。その結果がレジスタT3に格納される。ステップ4020においてレジスタT3の逆元が計算される。ここでレジスタT3には2ByZdZd+1Zdsが格納されており、したがって1/2ByZdZd+1 Zdsが計算される。その結果がレジスタT3に格納される。ステップ4021においてT2×T3が計算される。ここでレジスタT2にはZd+1((xZd+Xd+2AZd) (xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2がレジスタT3には1/2ByZdZd+1Zdsがそれぞれ格納されており、したがって{Zd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2} /2ByZdZd+1Zdsが計算される。その結果がレジスタydに格納される。ステップ4022においてT1×Xdが計算される。ここでレジスタT1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Xdが計算される。その結果がレジスタT1に格納される。ステップ4023においてT1×T3が計算される。ここでレジスタT1には2ByZdZd+1XdがレジスタT3には1/2ByZdZd+1Zdsがそれぞれ格納されており、したがって2ByZdZd+1Xd/2ByZdZd+1Zds(=Xd/Zds)が計算される。その結果がT1に格納される。ステップ4024においてT1+αが計算される。ここでレジスタT1にはXd/Zdsが格納されており、したがって(Xd/Zds)+αが計算される。その結果がxdに格納される。したがってレジスタxdには(Xd/Zds)+αの値が格納されている。ydにはステップ4021において{Zd+1((xZd+Xd+2AZd) (xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2}/2ByZdZd+1Zdsが格納され、その後更新が行なわれないので、その値が保持されている。その結果として、ワイエルシュトラス型楕円曲線におけるアフィン座標(xd,yd)の値が全て復元されている。
【0398】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点のアフィン座標(xd,yd)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数38を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd Mon 2=xd Mon 3+Axd Mon 2+xd Mon及びBy2=x3+Ax2+xをみたす。 数38に代入し、Byd Mon 2及びBy2を消去し、式を整理すると、
【0399】
【数76】
Figure 0003794266
【0400】
を得る。ここでxd Mon=Xd/Zd、xd+1=Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、次の式を得る。
【0401】
【数77】
Figure 0003794266
【0402】
d Mon=Xd/Zdであるが、逆元演算の回数を減らす目的でyd Monの分母と通分することにより、
【0403】
【数78】
Figure 0003794266
【0404】
となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、yd=s-1yd Mon及びxd=s-1xd Mon+αの関係がある。結果として数79、数80を得る。
【0405】
【数79】
Figure 0003794266
【0406】
【数80】
Figure 0003794266
【0407】
ここで、xd,ydは図40より与えられる。したがって、ワイエルシュトラス型楕円曲線におけるアフィン座標(xd,yd)の値が全て復元されていることになる。
【0408】
上記手順はステップ4001、ステップ4005、ステップ4006、ステップ4008、ステップ4010、ステップ4011、ステップ4013、ステップ4015、ステップ4016、ステップ4017、ステップ4018、ステップ4019、ステップ4021、ステップ4022及びステップ4023において有限体上の乗算の計算量を必要とする。また、ステップ4004において有限体上の2乗算の計算量を必要とする。また、ステップ4020において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量及び逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS及び有限体上の逆元演算の計算量をIとすると、上記手順は15M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M、I=40Mと仮定すると座標復元の計算量は55.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0409】
尚、上記手順をとらなくても、上記計算式により与えられたxd,ydの値が計算できればxd,ydの値が復元できる。その場合においては一般的に復元に必要となる計算量が増大する。また、モンゴメリ型楕円曲線のパラメタであるA乃至はBの値やモンゴメリ型楕円曲線への変換パラメタであるsを小さくとることにより、ステップ4006乃至はステップ4015における乗算の計算量やステップ4019における乗算の計算量を削減することができる。
【0410】
次に図8により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力する高速スカラー倍計算部の処理について説明する。
【0411】
第20実施例の高速スカラー倍計算部202の高速スカラー倍計算方法として、第9実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部202において上記アルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0412】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は15M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k―3.6)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+52.2)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1524Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0413】
第21の実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置103がスカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線における射影座標の点として完全な座標が与えられたスカラー倍点,(Xd W,Yd W,Zd W)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点d(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1を計算する。また、入力されたワイエルシュトラス型楕円曲線上の点Pを、与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線上の点に変換し、その点を新たにP=(x,y)とおく。高速スカラー倍計算部202は、Xd,Zd,Xd+1,Zd+1,x及びyを座標復元部203に与える。座標復元部203は与えられた座標の値Xd,Zd,Xd+1,Zd+1,x及びyよりワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd W,Yd W,Zd W)の座標Xd W、Yd W及びZd Wの復元を行なう。スカラー倍計算装置103は射影座標において完全に座標が与えられたスカラー倍点(Xd W,Yd W,Zd W)を計算結果として出力する。
【0414】
次に図41により、座標x,y,Xd,Zd,Xd+1,Zd+1が与えられた場合にXd W、Yd W、Zd Wを出力する座標復元部の処理について説明する。
【0415】
座標復元部203では、モンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dP=(Xd,Yd,Zd)の座標のうちXd及びZd、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(Xd+1,Yd+1,Zd+1)の座標のうちXd+1及びZd+1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でワイエルシュトラス型楕円曲線上で射影座標おいて完全な座標が与えられたスカラー倍点(Xd W,Yd W,Zd W)を出力する。ここで入力されたモンゴメリ型楕円曲線上の点Pのアフィン座標を(x,y)で、射影座標を(X1,Y1,Z1)でそれぞれ表す。入力されたスカラー値をdとしてモンゴメリ型楕円曲線におけるスカラー倍点dPのアフィン座標を(xd,yd)で、射影座標を(Xd,Yd,Zd)でそれぞれ表す。モンゴメリ型楕円曲線上の点(d+1)Pのアフィン座標を(xd+1,yd+1)で、射影座標を(Xd+1,Yd+1,Zd+1)でそれぞれ表す。
【0416】
ステップ4101においてx×Zdが計算され、レジスタT1に格納される。ステップ4102においてXd+T1が計算される。ここでレジスタT1にはxZd が格納されており、したがってxZd+Xdが計算される。その結果がレジスタT2に格納される。ステップ4103においてXd-T1が計算され、ここでレジスタT1にはxZdが格納されており、したがってxZd-Xdが計算される。その結果がレジスタT3に格納される。ステップ4104においてレジスタT3の2乗が計算される。ここでレジスタT3にはxZd-Xd が格納されており、したがって(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ4105においてT3×Xd+1が計算される。ここでレジスタT3には(Xd-xZd)2が格納されており、したがってXd+1(Xd-xZd)2が計算される。その結果がレジスタT3に格納される。ステップ4106において2A×Zdが計算され、レジスタT1に格納される。ステップ4107においてT2+T1が計算される。ここでレジスタT2にはxZd+XdがレジスタT1には2AZdがそれぞれ格納されており、したがってxZd+Xd+2AZdが計算される。その結果がレジスタT2に格納される。ステップ4108においてx×Xdが計算され、レジスタT4に格納される。ステップ4109においてT4+Zdが計算される。ここでレジスタT4にはxXdが格納されており、したがってxXd+Zdが計算される。その結果がレジスタT4に格納される。ステップ4110においてT2×T4が計算される。ここでレジスタT2にはxZd+Xd+2AZdがレジスタT4にはxXd+Zdがそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)が計算される。その結果がレジスタT2に格納される。ステップ4111においてT1×Zdが計算される。ここでレジスタT1には2AZdが格納されており、したがって2AZd 2が計算される。その結果がレジスタT1に格納される。ステップ4112においてT2-T1が計算される。ここでレジスタT2には(xZd+Xd+2AZd)(xXd+Zd)がここでレジスタT1には2AZd 2がそれぞれ格納されており、したがって(xZd+Xd+2AZd)(xXd+Zd)-2AZd 2が計算される。その結果がレジスタT2に格納される。ステップ4113においてT2×Zd+1が計算される。ここでレジスタT2には(xZd+Xd+2AZd)(xXd+Zd)-2AZd 2が格納されており、したがってZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)が計算される。その結果がレジスタT2に格納される。ステップ4114においてT2-T3が計算される。ここでレジスタT2にはZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)がレジスタT3にはXd+1(Xd-xZd)2がそれぞれ格納されており、したがってZd+1((xZd+Xd+2AZd) (xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2が計算される。その結果がレジスタYd Wに格納される。ステップ4115において2B×yが計算され、レジスタT1に格納される。ステップ4116においてT1×Zdが計算される。ここでレジスタT1には2Byが格納されており、したがって2ByZdが計算される。その結果がレジスタT1に格納される。ステップ4117においてT1×Zd+1が計算される。ここでレジスタT1には2ByZdが格納されており、したがって2ByZdZd+1が計算される。その結果がレジスタT1に格納される。ステップ4118においてT1×Zdが計算される。ここでレジスタT1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Zdが計算される。その結果がレジスタT3に格納される。ステップ4119においてT3×sが計算される。ここでレジスタT3には2ByZdZd+1Zdが格納されており、したがって2ByZdZd+1Zdsが計算される。その結果がレジスタZd Wに格納される。ステップ4120においてT1×Xdが計算される。ここでレジスタT1には2ByZdZd+1が格納されており、したがって2ByZdZd+1Xdが計算される。その結果がレジスタT1に格納される。ステップ4121においてZd W×αが計算される。ここでレジスタZd Wには2ByZdZd+1Zdsが格納されており、したがって2ByZdZd+1Zdsαが計算される。その結果がT3に格納される。ステップ4122においてT1+T3が計算される。ここでレジスタT1には2ByZdZd+1XdがレジスタT3には2ByZdZd+1Zdsαがそれぞれ格納されており、したがって2ByZdZd+1Xd +2ByZdZd+1Zdsαが計算される。その結果がXd W に格納される。したがってレジスタxdには2ByZdZd+1Xd+2ByZdZd+1Zdsαの値が格納されている。Yd Wにはステップ4114においてZd+1((xZd+Xd+2AZd)(xXd+Zd)-2AZd 2)-Xd+1(Xd-xZd)2が格納され、その後更新が行なわれないので、その値が保持されている。Zd Wにはステップ4119において2ByZdZd+1Zdsが格納され、その後更新が行なわれないので、その値が保持されている。その結果として、ワイエルシュトラス型楕円曲線における射影座標(Xd W,Yd W,Zd W)の値が全て復元されている。
【0417】
上記手順により与えられたx、y、Xd、Zd、Xd+1、Zd+1からワイエルシュトラス型楕円曲線におけるスカラー倍点の射影座標(Xd W,Yd W,Zd W)における値が全て復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数6を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd 2=xd 3+Axd 2+xd及びBy2=x3+Ax2+xをみたす。 数6に代入し、Byd 2及びBy2を消去し、式を整理すると、数64をを得る。ここでxd=Xd/Zd、xd+1=Xd+1/Zd+1であり、この値を代入することにより射影座標の値へと変換すると、数65を得る。xd=Xd/Zdであるが、逆元演算の回数を減らす目的でydの分母と通分することにより、数66となる。その結果として、
【0418】
【数81】
Figure 0003794266
【0419】
とし、
【0420】
【数82】
Figure 0003794266
【0421】
【数83】
Figure 0003794266
【0422】
とすると(X'd,Y'd,Z'd)=(Xd,Yd,Zd)となる。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをsαとして、Yd W=Y'd、Xd W=X'd+αZd W、及びZd W=sZ'dという関係がある。結果として次の式を得る。
【0423】
【数84】
Figure 0003794266
【0424】
【数85】
Figure 0003794266
【0425】
【数86】
Figure 0003794266
【0426】
により更新すればよい。ここで、Xd W,Yd W,Zd Wは図41の処理により与えられている。したがって、ワイエルシュトラス型楕円曲線における射影座標(Xd W,Yd W,Zd W)の値が全て復元されていることになる。
【0427】
上記手順はステップ4101、ステップ4105、ステップ4106、ステップ4108、ステップ4110、ステップ4111、ステップ4113、ステップ4115、ステップ4116、ステップ4117、ステップ4118、ステップ4119、ステップ4120及びステップ4121において有限体上の乗算の計算量を必要とする。また、ステップ4104において有限体上の2乗算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をSとすると、上記手順は14M+Sの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8Mと仮定すると座標復元の計算量は14.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0428】
尚、上記手順をとらなくても、上記計算式により与えられたXd W、Yd W、Zd Wの値が計算できればXd W、Yd W、Zd Wの値が復元できる。また、ワイエルシュトラス型楕円曲線においてアフィン座標におけるスカラー倍点dPをdP=(xd W,yd W)とすると、xd W、yd Wが上記計算式により与えられる値を取るようにXd W、Yd W、Zd Wの値を選択し、その値が計算できればXd W、Yd W、Zd Wが復元できる。それらの場合においては一般的に復元に必要となる計算量が増大する。また、モンゴメリ型楕円曲線のパラメタであるA乃至はBの値やモンゴメリ型楕円曲線への変換パラメタsの値を小さくとることにより、ステップ4106、ステップ4115乃至はステップ4119における乗算の計算量を削減することができる。
【0429】
次に、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムについて説明する。
【0430】
第21実施例の高速スカラー倍計算部202の高速スカラー倍計算方法として、第9実施例の高速スカラー倍計算方法を用いる。これにより、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムとして、高速であるアルゴリズムが達成される。尚、高速スカラー倍計算部202において上記アルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、Xd,Zd,Xd+1,Zd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0431】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は14M+Sであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k―3.6)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+11.2)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1483Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をヤコビアン座標として出力する場合に必要となる計算量はおおよそ1600Mであり、これと比べて必要となる計算量は削減されている。
【0432】
第22実施例は入出力用の楕円曲線としてワイエルシュトラス型楕円曲線を、内部の計算用には与えられたワイエルシュトラス型楕円曲線から変換可能であるモンゴメリ型楕円曲線を用いたものである。スカラー倍計算装置103が、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、ワイエルシュトラス型楕円曲線におけるアフィン座標の点として完全な座標が与えられたスカラー倍点(xd W,yd W)を計算し出力する。スカラー値d及びワイエルシュトラス型楕円曲線上の点Pをスカラー倍計算装置103に入力すると高速スカラー倍計算部202がそれを受け取る。高速スカラー倍計算部202は受け取ったスカラー値dと与えられたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1を計算し、アフィン座標で表された入力されたモンゴメリ型楕円曲線上の点P=(x,y)と共にその情報を座標復元部203に与える。座標復元部203は与えられた座標の値xd、xd+1、x及びyよりワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd W,yd W)の座標yd Wの復元を行なう。スカラー倍計算装置103はワイエルシュトラス型楕円曲線上でアフィン座標において完全に座標が与えられたスカラー倍点(xd W,yd W)を計算結果として出力する。
【0433】
次に図42により、座標x、y、xd、xd+1が与えられた場合に、xd W、yd Wを出力する座標復元部の処理について説明する。
【0434】
座標復元部203では、モンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)の座標のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)の座標のうちxd+1、スカラー倍計算装置103に入力されたモンゴメリ型楕円曲線上の点Pをアフィン座標で表した(x,y)を入力し、以下の手順でアフィン座標において完全な座標が与えられたスカラー倍点(xd W,yd W)を出力する。
【0435】
ステップ4201においてxd×xが計算され、レジスタT1に格納される。ステップ4202においてT1+1が計算される。ここでレジスタT1にはxdxが格納されており、したがってxdx+1が計算される。その結果がレジスタT1に格納される。ステップ4203においてxd+xが計算され、レジスタT2に格納される。ステップ4204においてT2+2Aが計算される。ここでレジスタT2にはxd+xが格納されており、したがってxd+x+2Aが計算される。その結果がレジスタT2に格納される。ステップ4205においてT1×T2が計算される。ここでレジスタT1にはxdx+1がレジスタT2にはxd+x+2Aがそれぞれ格納されており、したがって(xdx+1)(xd+x+2A)が計算される。その結果がレジスタT1に格納される。ステップ4206においてT1-2Aが計算される。ここでレジスタT1には(xdx+1)(xd+x+2A)が格納されており、したがって(xdx+1)(xd+x+2A)-2Aが計算される。その結果がレジスタT1に格納される。ステップ4207においてxd-xが計算され、レジスタT2に格納される。ステップ4208においてT2の2乗が計算される。ここでレジスタT2にはxd-xが格納されており、したがって(xd−x)2が計算される。その結果がレジスタT2に格納される。ステップ4209においてT2×xd+1が計算される。ここでレジスタT2には(xd−x)2が格納されており、したがって(xd−x)2xd+1が計算される。その結果がレジスタT2に格納される。ステップ4210においてT1-T2が計算される。ここでレジスタT1には(xdx+1)(xd+x+2A)-2AがレジスタT2には(xd−x)2xd+1がそれぞれ格納されており、したがって(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1が計算される。その結果がレジスタT1に格納される。ステップ4211において2B×yが計算され、レジスタT2に格納される。ステップ4212においてT2の逆元が計算される。ここでレジスタT2には2Byが格納されており、したがって1/2Byが計算される。その結果がレジスタT2に格納される。ステップ4213においてT1×T2が計算される。ここでレジスタT1には(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1がレジスタT2には1/2Byがそれぞれ格納されており、したがって{(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1}/2Byが計算される。その結果がレジスタT1に格納される。ステップ4214においてT1×(1/s)が計算される。ここでレジスタT1には{(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1}/2Byが格納されており、したがって{(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1}/2Bysが計算される。その結果がレジスタyd Wに格納される。ステップ4215においてxd×(1/s)が計算され、レジスタT1に格納される。ステップ4216においてT1+αが計算される。ここでレジスタT1にはxd/sが格納されており、したがって(xd/s)+αが計算される。その結果がレジスタxd Wに格納される。したがってレジスタxd Wには(xd/s)+αが格納されている。レジスタyd Wはステップ4214において{(xdx+1)(xd+x+2A)-2A-(xd−x)2xd+1}/2Bysが格納され、その後更新されないので、その値が保持されている。
【0436】
上記手順によりスカラー倍点のy座標ydが復元される理由は以下の通りである。点(d+1)Pは点dPに点Pを加算した点である。モンゴメリ型楕円曲線のアフィン座標における加算公式に代入すると、数6を得る。点P及び点dPはモンゴメリ型楕円曲線上の点であるので、Byd 2=xd 3+Axd 2+xd及びBy2=x3+Ax2+xをみたす。 数6に代入し、Byd 2及びBy2を消去し、式を整理すると、数64を得る。モンゴメリ型楕円曲線上の点とワイエルシュトラス型楕円曲線上の点との対応関係については、K.Okeya, H.Kurumatani, K.Sakurai, Elliptic Curves with the Montgomery-Form and Their Cryptographic Applications, Public Key Cryptography, LNCS 1751 (2000) pp.238-257 に記載されている。それによると、変換パラメタをs,αとして、yd W=s-1yd及びxd W=s-1xd+αの関係がある。結果として数87、数63を得る。
【0437】
【数87】
Figure 0003794266
【0438】
ここで、xd W,yd Wは図42により与えられる。したがって、アフィン座標(xd W, yd W)の値は全て復元されていることになる。
【0439】
上記手順はステップ4201、ステップ4205、ステップ4209、ステップ4211、ステップ4213、ステップ4214及びステップ4215において有限体上の乗算の計算量を必要とする。また、ステップ4208において有限体上の2乗算の計算量を必要とする。さらにステップ4212において有限体上の逆元演算の計算量を必要とする。有限体上の加算及び減算の計算量は、有限体上の乗算の計算量、2乗算の計算量、逆元演算の計算量と比べて比較的小さいので無視してもよい。有限体上の乗算の計算量をM、有限体上の2乗算の計算量をS、有限体上の逆元演算の計算量をIとすると、上記手順は7M+S+Iの計算量を必要とする。これは高速スカラー倍計算の計算量と比べてはるかに小さい。例えばスカラー値dが160ビットであれば、高速スカラー倍計算の計算量はおおよそ1500M弱と見積もられる。S=0.8M及びI=40Mと仮定すると座標復元の計算量は47.8Mであり、高速スカラー倍計算の計算量と比べてはるかに小さい。したがって効率的に座標を復元できていることが示された。
【0440】
尚、上記手順をとらなくても、上記等式の右辺の値が計算できればyd Wの値が復元できる。その場合は一般的に復元に必要となる計算量が増大する。また、楕円曲線のパラメタであるA乃至はBやモンゴメリ型楕円曲線への変換パラメタsの値を小さくとることにより、ステップ4206、ステップ4211、ステップ4214乃至はステップ4215における乗算の計算量を削減することができる。
【0441】
次に図45により、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd,xd+1を出力する高速スカラー倍計算部の処理について説明する。
【0442】
高速スカラー倍計算部202では、スカラー倍計算装置103に入力されたワイエルシュトラス型楕円曲線上の点Pを入力し、以下の手順によりモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dP=(xd,yd)のうちxd、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)P=(xd+1,yd+1)のうちxd+1を出力する。ステップ4516として、与えられたワイエルシュトラス型楕円曲線上の点Pをモンゴメリ型楕円曲線上で射影座標により表された点に変換する。この点をあらためて点Pとする。ステップ4501として、変数Iに初期値1を代入する。ステップ4502として、点Pの2倍点2Pを計算する。ここで点Pは射影座標において(x,y,1)として表し、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて2倍点2Pを計算する。ステップ4503として、スカラー倍計算装置103に入力された楕円曲線上の点Pとステップ4502で求めた点2Pを、点の組(P,2P)として格納する。ここで点P及び点2Pは射影座標で表されている。ステップ4504として、変数Iとスカラー値dのビット長とが一致するかどうかを判定し、一致すればステップ4515へ行く。一致しなければステップ4505へ行く。ステップ4505として、変数Iを1増加させる。ステップ4506として、スカラー値のI番目のビットの値が0であるか1であるかを判定する。そのビットの値が0であればステップ4506へ行く。そのビットの値が1であればステップ4510へ行く。ステップ4507として、射影座標により表された点の組(mP,(m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ4508へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ4508として、射影座標により表された点の組(mP,(m+1)P)から点mPの2倍算2(mP)を行ない、点2mPを計算する。その後ステップ4509へ行く。ここで、2倍算2(mP)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ4509として、ステップ4508で求めた点2mPとステップ4507で求めた点(2m+1)Pを点の組(2mP,(2m+1)P)として、点の組(mP,(m+1)P)の代わりに格納する。その後ステップ4504へ戻る。ここで、点2mP、点(2m+1)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ4510として、射影座標により表された点の組(mP, (m+1)P)から点mPと点(m+1)Pの加算mP+(m+1)Pを行ない、点(2m+1)Pを計算する。その後ステップ4511へ行く。ここで、加算mP+(m+1)Pは、モンゴメリ型楕円曲線の射影座標における加算公式を用いて計算される。ステップ4511として、射影座標により表された点の組(mP,(m+1)P)から点(m+1)Pの2倍算2((m+1)P)を行ない、点(2m+2)Pを計算する。その後ステップ4512へ行く。ここで、2倍算2((m+1)P)は、モンゴメリ型楕円曲線の射影座標における2倍算の公式を用いて計算される。ステップ4511として、ステップ4510で求めた点(2m+1)Pとステップ4511で求めた点(2m+2)Pを点の組((2m+1)P, (2m+2)P)として、点の組(mP,(m+1)Pの代わりに格納する。その後ステップ4504へ戻る。ここで、点(2m+1)P、点(2m+2)P、点mP及び点(m+1)Pは全て射影座標において表されている。ステップ4515として、射影座標で表された点mP=(Xm,Ym,Zm)よりXm及びZmをそれぞれXd及びZdとし、射影座標で表された点(m+1)P=(Xm+1,Ym+1,Zm+1)よりXm+1及びZm+1をそれぞれXd+1及びZd+1とする。ここで、Ym及びYm+1は、モンゴメリ型楕円曲線の射影座標における加算公式及び2倍算の公式ではY座標を求める事ができないので、求まっていない。X d,Z d,X d+1,Z d+1より、xd=XdZd+1/ZdZd+1, xd+1=ZdXd+1/ZdZd+1としてxd,xd+1を求める。その後ステップ4513へ行く。ステップ4513として、xd,xd+1を出力する。上記手順により、mとスカラー値dはビット長が等しくさらにそのビットのパターンも同じとなる為、等しくなる。
【0443】
モンゴメリ型楕円曲線の射影座標における加算公式の計算量は、Z1=1ととることにより3M+2Sとなる。ここでMは有限体上の乗算の計算量、Sは有限体上の2乗算の計算量である。モンゴメリ型楕円曲線の射影座標における2倍算の公式の計算量は、3M+2Sである。スカラー値のI番目のビットの値が0であれば、ステップ4507において加算の計算量、ステップ4508において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要となる。スカラー値のI番目のビットの値が1であれば、ステップ4510において加算の計算量、ステップ4511において2倍算の計算量が必要となる。すなわち6M+4Sの計算量が必要である。いずれの場合においても6M+4Sの計算量が必要である。ステップ4504、ステップ4505、ステップ4506、ステップ4507、ステップ4508、ステップ4509乃至はステップ4504、ステップ4505、ステップ4506、ステップ4510、ステップ4511、ステップ4512の繰り返しの回数は、(スカラー値dのビット長)―1回となるので、ステップ4502での2倍算の計算量及びステップ4515でのアフィン座標への変換の計算量を考慮に入れると、全体の計算量は(6M+4S)k+3M―2S+Iとなる。ここでkはスカラー値dのビット長である。一般的には、計算量Sは、S=0.8M程度、計算量IはI=40M程度と見積もられるので、全体の計算量はおおよそ(9.2k+41.4)Mとなる。例えばスカラー値dが160ビット(k=160)であれば、上記手順のアルゴリズムの計算量はおおよそ1513Mとなる。スカラー値dのビットあたりの計算量としてはおよそ9.2Mとなる。A.Miyaji, T.Ono, H.Cohen, Efficient elliptic curve exponentiation using mixed coordinates, Advances in Cryptology Proceedings of ASIACRYPT'98, LNCS 1514 (1998) pp.51-65 には、ワイエルシュトラス型楕円曲線において、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法は高速なスカラー倍計算方法として記載されている。この場合においては、スカラー値のビットあたりの計算量はおおよそ10Mと見積もられ、これ以外にアフィン座標への変換の計算量が必要となる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算方法の計算量はおおよそ1640Mとなる。したがって、上記手順のアルゴリズムの方が計算量が少なく高速といえる。
【0444】
尚、高速スカラー倍計算部202において上記手順のアルゴリズムを用いなくても、スカラー値d及びワイエルシュトラス型楕円曲線上の点Pから、xd,xd+1を出力するアルゴリズムであり且つ高速であれば、他のアルゴリズムを用いていもよい。
【0445】
スカラー倍計算装置103における座標復元部203の座標復元に必要な計算量は7M+S+Iであり、これは高速スカラー倍計算部202の高速スカラー倍計算に必要な計算量の(9.2k+41.4)Mとに比べてはるかに小さい。したがって、スカラー倍計算装置103のスカラー倍計算に必要な計算量は、高速スカラー倍計算部の高速スカラー倍計算に必要な計算量とほぼ同等である。I=40M、S=0.8Mと仮定すると、この計算量はおおよそ(9.2k+89.2)Mと見積もることができる。例えばスカラー値dが160ビット(k=160)であれば、このスカラー倍計算に必要な計算量は1561Mとなる。楕円曲線としてワイエルシュトラス型楕円曲線を使用し、ウィンドウ法を用いてヤコビアン座標を中心とした混合座標系を用いたスカラー倍計算方法を用いて、スカラー倍点をアフィン座標として出力する場合に必要となる計算量はおおよそ1640Mであり、これと比べて必要となる計算量は削減されている。
【0446】
以上、図1に示した暗号/復号処理装置を復号化処理を行う装置として第1から第22の実施例を説明したが、同様に暗号化処理を行う装置としても利用できる。その場合には、既に説明したように暗号/復号処理装置のスカラー倍計算部103は、既に説明した楕円曲線上の点Q、乱数kによるスカラー倍点と、公開鍵aQと乱数kによるスカラー倍点を出力する。このとき、実施例1から22で説明したスカラー値dを乱数k、楕円曲線上の点Pを楕円曲線上の点Q、公開鍵aQとして同様の処理を行うことにより、それぞれのスカラー倍点を求めることができる。
【0447】
尚、図1に示した暗号/復号処理装置は、暗号化、復号化の両方を行えるように示したが、暗号化の処理のみ、あるいは復号化の処理のみを行えるように構成してもよい。
【0448】
また、第1から第22の実施例で説明した処理については、コンピュータ読み取り可能な記憶媒体に格納されたプログラムであってもよい。この場合は、そのプログラムを図1の記憶部へ読み込み、処理部であるCPUなどの演算装置がこのプログラムに従って、処理を行う。
【0449】
図27は、図1の暗号処理システムにおける秘密情報を用いた暗号処理において、スカラー倍点の完全な座標を与え且つ高速なスカラー倍計算方法の実施例を示す図である。図33は、図27のスカラー倍計算方法の実施例における処理の流れを示すフローチャートである。
【0450】
図33において、図27のスカラー倍計算装置2701は以下のようにして、スカラー値及びワイエルシュトラス型楕円曲線上の点から、ワイエルシュトラス型楕円曲線上で完全な座標が与えられたスカラー倍点を計算し出力する。スカラー値及びワイエルシュトラス型楕円曲線上の点をスカラー倍計算装置2701に入力すると、楕円曲線変換部2704がワイエルシュトラス型楕円曲線上の点をモンゴメリ型楕円曲線上の点に変換する。(ステップ3301)。高速スカラー倍計算部2702はスカラー倍計算装置2701に入力されたスカラー値及び楕円曲線変換部2704が変換したモンゴメリ型楕円曲線上の点を受け取る(ステップ3302)。高速スカラー倍計算部3302は受け取ったスカラー値とモンゴメリ型楕円曲線上の点からモンゴメリ型楕円曲線上のスカラー倍点の座標の一部の値を計算し(ステップ3303)、その情報を座標復元部2703に与える(ステップ3304)。座標復元部2703は与えられたモンゴメリ型楕円曲線上のスカラー倍点の情報及び楕円曲線変換部2704により変換されたモンゴメリ型楕円曲線上の点よりモンゴメリ型楕円曲線上のスカラー倍点の座標の復元を行なう(ステップ3305)。楕円曲線逆変換部2705は、座標復元部2703により復元されたモンゴメリ型楕円曲線上のスカラー倍点をワイエルシュトラス型楕円曲線上のスカラー倍点に変換する(ステップ3306)。スカラー倍計算装置2701はワイエルシュトラス型楕円曲線上で完全に座標が与えられたスカラー倍点を計算結果として出力する。(ステップ3307)。
【0451】
スカラー倍計算装置2701における高速スカラー倍計算部2702及び座標復元部2703が実行するモンゴメリ型楕円曲線上のスカラー倍計算は、上述した第1〜第5及び第14〜第16実施例で説明したモンゴメリ型楕円曲線上におけるスカラー倍計算方法がそのまま適応される。したがってこのスカラー倍計算は、スカラー倍点の完全な座標を与え且つ高速なスカラー倍計算方法である。
【0452】
図22は、図1の本実施形態の暗号処理システムを署名作成装置として利用する場合の構成を示す。図1の暗号処理部102は、図22の署名作成装置2201では署名部2202になる。図28は、図22の署名作成装置における処理の流れを示すフローチャートである。図29は、図22の署名作成装置における処理の流れを示すシーケンス図である。
【0453】
図28において、署名作成装置2201は以下のようにして、与えられたメッセージ2205から署名が付随しているメッセージ2206を出力する。メッセージ2205を署名作成装置2201に入力すると署名部2202がそれを受け取る(ステップ2801)。署名部2202はスカラー倍計算部2203に受け取ったメッセージ2205に応じて楕円曲線上の点を与える(ステップ2802)。スカラー倍計算部2203は秘密情報格納部2204より秘密情報であるスカラー値を受け取る(ステップ2803)。スカラー倍計算部2203は受け取った楕円曲線上の点とスカラー値よりスカラー倍点を計算し(ステップ2804)、そのスカラー倍点を署名部2202に送る(ステップ2805)。署名部2202はスカラー倍計算部2203より受け取ったスカラー倍点をもとにして署名作成処理を行なう(ステップ2806)。その結果を署名が付随したメッセージ2206として出力する(ステップ2807)。
【0454】
上記処理手順を図29のシーケンス図を用いて説明する。まず、署名部2901(図22の2202)の実行する処理について説明する。署名部2901は、入力メッセージを受け取る。署名部2901は、入力メッセージをもとに楕円曲線上の点を選び、スカラー倍計算部2902に楕円曲線上の点を与え、そしてスカラー倍計算部2902からスカラー倍点を受け取る。署名部2901は、受け取ったスカラー倍点を用いて署名作成処理を行ない、その結果を出力メッセージとして出力する。
【0455】
次にスカラー倍計算部2902(図22の2203)の実行する処理について説明する。スカラー倍計算部2902は、署名部2901より楕円曲線上の点を受け取る。スカラー倍計算部2902は、秘密情報格納部2903よりスカラー値を受け取る。スカラー倍計算部2902は、受け取った楕円曲線上の点及びスカラー値から、完全な座標を与え且つ高速なスカラー倍計算方法により、スカラー倍点を計算し、署名部2901にスカラー倍点を送る。
【0456】
最後に秘密情報格納部2903(図22の2204)の実行する処理について説明する。秘密情報格納部2903は、スカラー倍計算部2902がスカラー倍を計算できるように、スカラー値をスカラー倍計算部2902に送る。
【0457】
スカラー倍計算部2203が実行するスカラー倍計算は、上述した第1〜第22実施例で説明したものがそのまま適応される。したがってこのスカラー倍計算は、スカラー倍点の完全な座標を与え且つ高速なスカラー倍計算方法である。そのため署名部2202において、署名作成処理を行なう際に、スカラー倍点の完全な座標を用いることができ、その上高速に実行できる。
【0458】
図23は、図1の本実施形態の暗号処理システムを復号化装置として利用する場合の構成を示す。図1の暗号処理部102は、図23の復号化装置2301では復号部2302になる。図30は、図23の復号化装置における処理の流れを示すフローチャートである。図31は、図23の復号化装置における処理の流れを示すシーケンス図である。
【0459】
図30において、復号装置2301は以下のようにして、与えられたメッセージ2305から復号化されたメッセージ2306を出力する。メッセージ2305を復号装置2301に入力すると復号部2302がそれを受け取る(ステップ3001)。復号部2302はスカラー倍計算部2303に受け取ったメッセージ2305に応じて楕円曲線上の点を与える(ステップ3002)。スカラー倍計算部2303は秘密情報格納部2304より秘密情報であるスカラー値を受け取る(ステップ3003)。スカラー倍計算部2303は受け取った楕円曲線上の点とスカラー値よりスカラー倍点を計算し(ステップ3004)、そのスカラー倍点を復号部2302に送る(ステップ3005)。復号部2302はスカラー倍計算部2303より受け取ったスカラー倍点をもとにして復号化処理を行なう(ステップ3006)。その結果を復号化されたメッセージ2306として出力する(ステップ3007)。
【0460】
上記処理手順を図31のシーケンス図を用いて説明する。まず、復号化部3101(図23の2302)の実行する処理について説明する。復号化部3101は、入力メッセージを受け取る。復号化部3101は、入力メッセージをもとに楕円曲線上の点を選び、スカラー倍計算部3102に楕円曲線上の点を与え、そしてスカラー倍計算部3102からスカラー倍点を受け取る。復号化部3101は、受け取ったスカラー倍点を用いて復号化処理を行ない、その結果を出力メッセージとして出力する。
【0461】
次にスカラー倍計算部3102(図23の2303)の実行する処理について説明する。スカラー倍計算部3102は、復号化部3101より楕円曲線上の点を受け取る。スカラー倍計算部3102は、秘密情報格納部3103よりスカラー値を受け取る。スカラー倍計算部3102は、受け取った楕円曲線上の点及びスカラー値から、完全な座標を与え且つ高速なスカラー倍計算方法により、スカラー倍点を計算し、復号化部3101にスカラー倍点を送る。
【0462】
最後に秘密情報格納部3103(図23の2304)の実行する処理について説明する。秘密情報格納部3103は、スカラー倍計算部3102がスカラー倍を計算できるように、スカラー値をスカラー倍計算部3102に送る。
【0463】
スカラー倍計算部2303が実行するスカラー倍計算は、上述した第1〜第22実施例で説明したものがそのまま適応される。したがってこのスカラー倍計算は、スカラー倍点の完全な座標を与え且つ高速なスカラー倍計算方法である。そのため復号部2302において、復号化処理を行なう際に、スカラー倍点の完全な座標を用いることができ、その上高速に実行できる。
【0464】
【発明の効果】
以上述べたように本発明によれば、暗号処理システムにおける秘密情報を用いた暗号処理において用いられるスカラー倍計算が高速化されており、暗号処理の高速化が計れる。また、スカラー倍点の座標を完全に与えることができるので、全ての暗号処理を行なうことができる。
【図面の簡単な説明】
【図1】本発明の暗号処理システムの構成図である。
【図2】本発明の実施例におけるスカラー倍計算方法及び装置における処理の流れを示す図である。
【図3】図1の暗号処理システムでの処理の流れを示すシーケンス図である。
【図4】本発明の第1、第2、第14及び第15実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図5】本発明の第3及び第4実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図6】本発明の第5実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図7】本発明の第6、第7及び第8実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図8】本発明の第9、第10、第20及び第21実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図9】本発明の第2実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図10】本発明の第11及び第12実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図11】本発明の第1実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図12】本発明の第3実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図13】本発明の第4実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図14】本発明の第6実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図15】本発明の第7実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図16】本発明の第8実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図17】本発明の第9実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図18】本発明の第10実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図19】本発明の第11実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図20】本発明の第12実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図21】本発明の第13実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図22】本発明の実施の形態に係る署名作成装置の構成図である。
【図23】本発明の実施の形態に係る復号化装置の構成図である。
【図24】本発明の第13実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図25】図2のスカラー倍計算装置におけるスカラー倍計算方法を示すフローチャートである。
【図26】本発明の第5実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図27】本発明の実施例におけるスカラー倍計算方法及び装置における処理の流れを示す図である。
【図28】図22の署名作成装置における署名作成方法を示すフローチャートである。
【図29】図22の署名作成装置における処理の流れを示すシーケンス図である。
【図30】図23の復号化装置における復号化方法を示すフローチャートである。
【図31】図23の復号化装置における処理の流れを示すシーケンス図である。
【図32】図1の暗号処理システムにおける暗号処理方法を示すフローチャートである。
【図33】図27のスカラー倍計算装置におけるスカラー倍計算方法を示すフローチャートである。
【図34】本発明の第14実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図35】本発明の第15実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図36】本発明の第16実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図37】本発明の第17実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図38】本発明の第18実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図39】本発明の第19実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図40】本発明の第20実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図41】本発明の第21実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図42】本発明の第22実施例のスカラー倍計算方法における座標復元方法を示すフローチャート図である。
【図43】本発明の第16実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図44】本発明の第17、第18及び第19実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【図45】本発明の第22実施例のスカラー倍計算方法における高速スカラー倍計算方法を示すフローチャート図である。
【符号の説明】
101 暗号処理システム
102 暗号処理部
103 スカラー倍計算部
104 秘密情報格納部
105 入力メッセージ
106 出力メッセージ
201 スカラー倍計算装置
202 高速スカラー倍計算部
203 座標復元部
2201 署名作成装置
2202 署名部
2203 スカラー倍計算部
2204 秘密情報格納部
2205 入力メッセージ
2206 出力メッセージ
2301 復号化装置
2302 復号部
2303 スカラー倍計算部
2304 秘密情報格納部
2305 入力メッセージ
2306 出力メッセージ
2701 スカラー倍計算装置
2702 高速スカラー倍計算部
2703 座標復元部
2704 楕円曲線変換部
2705 楕円曲線逆変換部

Claims (22)

  1. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、モンゴメリ型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたモンゴメリ型楕円曲線上の前記点Pからモンゴメリ楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + とを求め、
    座標復元部によって、求められたX、Z、X + 、Z + と入力されたモンゴメリ型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    Figure 0003794266
    但し、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタB
    を計算することによってスカラー倍点の座標x、yを求めることを特徴とするスカラ
    ー倍計算方法。
  2. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、モンゴメリ型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたモンゴメリ型楕円曲線上の前記点Pからモンゴメリ楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + とを求め、
    座標復元部によって、求められたX、Z、X + 、Z + と入力されたモンゴメリ型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    を計算することによってスカラー倍点の座標Yを求めることを特徴とするスカラー倍計算方法。
  3. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、モンゴメリ型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたモンゴメリ型楕円曲線上の前記点Pからモンゴメリ楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + と、射影座標で表されたモンゴメリ型楕円曲線上の点(d−1)Pの座標X - 、Zd−1を求め、
    座標復元部によって、求められたX、Z、X + 、Z + 、Xd−1、Zd−1と入力されたモンゴメリ型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    Figure 0003794266
    但し、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタB
    を計算することによってスカラー倍点の座標x、yを求めることを特徴とするスカラ
    ー倍計算方法。
  4. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、モンゴメリ型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたモンゴメリ型楕円曲線上の前記点Pからモンゴメリ楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + と、射影座標で表されたモンゴメリ型楕円曲線上の点(d−1)Pの座標Xd−1、Zd−1を求め、
    座標復元部によって、求められたX、Z、X + 、Z + 、Xd−1、Zd−1と入力されたモンゴメリ型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    を計算することによってスカラー倍点の座標Yを求めることを特徴とするスカラー倍計算方法。
  5. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、モンゴメリ型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたモンゴメリ型楕円曲線上の点Pからモンゴメリ楕円曲線においてアフィン座標で表されたスカラー倍点dPの座標xとアフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標x + とアフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標xd−1とを求め、
    座標復元部によって、求められたx、x + 、xd−1と入力されたモンゴメリ型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    但し、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタB
    を計算することによってスカラー倍点の座標yを求めることを特徴とするスカラー倍計算方法。
  6. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値と入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)Pの座標X + 、Z + と、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d−1)Pの座標Xd−1、Zd−1とを求め、 座標復元部によって、求められたX、Z、X + 、Z + 、Xd−1、Zd−1と入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    Figure 0003794266
    を計算することによってスカラー倍点の座標x、yを求めることを特徴とするスカラ
    ー倍計算方法。
  7. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)Pの座標X + 、Z + と、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d−1)Pの座標Xd−1、Zd−1とを求め、
    座標復元部によって、求められたX、Z、X + 、Z + 、Xd−1、Zd−1と入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    を計算することによってスカラー倍点の座標Yを求めることを特徴とするスカラー倍計算方法。
  8. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス楕円曲線においてアフィン座標で表されたスカラー倍点dPの座標xと、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)Pの座標x + と、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d−1)Pの座標xd−1とを求め、 座標復元部によって、求められたx、x + 、xd−1と入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    を計算することによってスカラー倍点の座標Yを求めることを特徴とするスカラー倍計算方法。
  9. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + と、入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yに対するモンゴメリ型楕円曲線上の点x、yとを求め、
    座標復元部によって、求められたX、Z、X + 、Z + 、x、yから、
    Figure 0003794266
    Figure 0003794266
    但し、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタB、
    s 、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
    Figure 0003794266
    及び
    Figure 0003794266
    の関係における変換パラメタs、α
    を計算することによってスカラー倍点の座標x、yを求めることを特徴とするスカラ
    ー倍計算方法。
  10. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + と、入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yに対するモンゴメリ型楕円曲線上の点x、yとを求め、
    座標復元部によって、求められたX、Z、X + 、Z + 、x、yから、
    Figure 0003794266
    Figure 0003794266
    Figure 0003794266
    但し、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタB、
    s 、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
    Figure 0003794266
    及び
    Figure 0003794266
    の関係における変換パラメタs、α
    を計算することによってワイエルシュトラスがた楕円曲線におけるスカラー倍点の座標X W、Y W、Z Wを求めることを特徴とするスカラー倍計算方法。
  11. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、 前記高速スカラー倍計算部によって、入力された前記スカラー値と入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + と、射影座標で表されたモンゴメリ型楕円曲線上の点(d−1)Pの座標X - 、Zd−1と、入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yに対するモンゴメリ型楕円曲線上の点x、yとを求め、 座標復元部によって、求められたX、Z、X + 、Z + 、Xd−Zd−1、x、yから、
    Figure 0003794266
    Figure 0003794266
    但し、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタB、
    s 、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
    Figure 0003794266
    及び
    Figure 0003794266
    の関係における変換パラメタs、α
    を計算することによってスカラー倍点の座標x、yを求めることを特徴とするスカラ
    ー倍計算方法。
  12. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + と、射影座標で表されたモンゴメリ型楕円曲線上の点(d−1)Pの座標X - 、Zd−1とを求め、 座標復元部によって、求められたX、Z、X + 、Z + 、Xd−1、Zd−1と、入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    Figure 0003794266
    Figure 0003794266
    但し、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタB、
    s 、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
    Figure 0003794266
    及び
    Figure 0003794266
    の関係における変換パラメタs、α
    を計算することによってワイエルシュトラス型楕円曲線におけるスカラー倍点の座標X W、Y W、Z Wを求めることを特徴とするスカラー倍計算方法。
  13. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dPの座標Xと、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + と、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d−1)Pの座標Xd−1とを求め、
    座標復元部によって、求められたX、X + 、Xd−1と入力されたモンゴメリ型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    Figure 0003794266
    但し、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタB、
    s 、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
    Figure 0003794266
    及び
    Figure 0003794266
    の関係における変換パラメタs、α
    を計算することによってスカラー倍点の座標x W、y Wを求めることを特徴とするスカラー倍計算方法。
  14. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、モンゴメリ型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力されたスカラー値dと入力されたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + とを求め、
    座標復元部によって、求められたX、Z、X + 、Z + と入力されたモンゴメリ型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    Figure 0003794266
    但し、A、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタA、B、
    s 、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
    Figure 0003794266
    及び
    Figure 0003794266
    の関係における変換パラメタs、α
    を計算することによってスカラー倍点の座標x、yを求めることを特徴とするスカラー倍計算方法。
  15. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、モンゴメリ型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + とを求め、
    座標復元部によって、求められたX、Z、X + 、Z + と入力されたモンゴメリ型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    但し、Aはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタA
    を計算することによってスカラー倍点の座標Yを求めることを特徴とするスカラー倍計算方法。
  16. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、モンゴメリ型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたモンゴメリ型楕円曲線上の点Pからモンゴメリ型楕円曲線においてアフィン座標で表されたスカラー倍点dPの座標xと、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標x + とを求め、
    座標復元部によって、求められたx、x + と入力されたモンゴメリ型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    但し、A、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタA、B
    を計算することによってスカラー倍点の座標yを求めることを特徴とするスカラー倍計算方法。
  17. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、 前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)Pの座標X + 、Z + とを求め、 座標復元部によって、求められたX、Z、X + 、Z + と入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    Figure 0003794266
    を計算することによってスカラー倍点の座標x、yを求めることを特徴とするスカラー倍計算方法。
  18. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)Pの座標X + 、Z + とを求め、
    座標復元部によって、求められたX、Z、X + 、Z + と入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    を計算することによってスカラー倍点の座標Yを求めることを特徴とするスカラー倍計算方法。
  19. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力されたスカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線においてアフィン座標で表されたスカラー倍点dPの座標xと、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d+1)Pの座標x + 、アフィン座標で表されたワイエルシュトラス型楕円曲線上の点(d―1)Pの座標xd−1とを求め、 座標復元部によって、求められたx、x + 、xd−1と入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yから、
    Figure 0003794266
    を計算することによってスカラー倍点の座標yを求めることを特徴とするスカラー倍計算方法。
  20. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + と、入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yに対するモンゴメリ型楕円曲線上の点x、yとを求め、
    座標復元部によって、求められたX、Z、X + 、Z + 、x、yから、
    Figure 0003794266
    Figure 0003794266
    但し、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタB、
    s 、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
    Figure 0003794266
    及び
    Figure 0003794266
    の関係における変換パラメタs、α
    を計算することによってスカラー倍点の座標x、yを求めることを特徴とするスカラー倍計算方法。
  21. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからワイエルシュトラス型楕円曲線において射影座標で表されたスカラー倍点dPの座標X、Zと、射影座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標X + 、Z + と、入力されたワイエルシュトラス型楕円曲線上の点Pの座標x、yに対するモンゴメリ型楕円曲線上の点x、yとを求め、
    座標復元部によって、求められたX、Z、X + 、Z + 、x、yから、
    Figure 0003794266
    Figure 0003794266
    Figure 0003794266
    但し、A、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタA、B、
    s 、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
    Figure 0003794266
    及び
    Figure 0003794266
    の関係における変換パラメタs、α
    を計算することによってスカラー倍点の座標X 、Y 、Z を求めることを特徴とするスカラー倍計算方法。
  22. 楕円曲線暗号における標数5以上の有限体上に定義された楕円曲線において、スカラー値d及び楕円曲線上の点Pからスカラー倍点を計算するスカラー倍計算方法であって、
    予め記憶装置に記憶されたスカラー値dと、ワイエルシュトラス型楕円曲線上の点Pの座標x、yとを高速スカラー倍計算部へ入力し、
    前記高速スカラー倍計算部によって、入力された前記スカラー値dと入力されたワイエルシュトラス型楕円曲線上の点Pからモンゴメリ型楕円曲線において射影座標で表されたスカラー倍点dPの座標xと、アフィン座標で表されたモンゴメリ型楕円曲線上の点(d+1)Pの座標x + と、入力されたモンゴメリ型楕円曲線上の点Pであるx、yとを求め、座標復元部によって、求められたx、x + 、x、yから、
    Figure 0003794266
    Figure 0003794266
    但し、A、Bはモンゴメリ型楕円曲線の定義式
    Figure 0003794266
    におけるパラメタA、B、
    s 、αはモンゴメリ型楕円曲線とワイエルシュトラス型楕円曲線の間の
    Figure 0003794266
    及び
    Figure 0003794266
    の関係における変換パラメタs、α
    を計算することによってスカラー倍点の座標x 、y を求めることを特徴とするスカラー倍計算方法。
JP2000393279A 2000-11-08 2000-12-21 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体 Expired - Fee Related JP3794266B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2000393279A JP3794266B2 (ja) 2000-11-08 2000-12-21 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体
US10/049,264 US20030156714A1 (en) 2000-11-08 2001-11-08 Elliptic curve scalar multiplication method and device, and storage medium
EP01982747A EP1445891A4 (en) 2000-11-08 2001-11-08 METHOD AND APPARATUS FOR MULTIPLE CALCULATION AND SCALING OF ELLIPTICAL CURVE, AND STORAGE DEVICE
PCT/JP2001/009781 WO2002039664A2 (fr) 2000-11-08 2001-11-08 Procede et dispositif de calcul multiple et scalaire de courbe elliptique, et dispositif de stockage

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000-345457 2000-11-08
JP2000345457 2000-11-08
JP2000393279A JP3794266B2 (ja) 2000-11-08 2000-12-21 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体

Publications (2)

Publication Number Publication Date
JP2002207424A JP2002207424A (ja) 2002-07-26
JP3794266B2 true JP3794266B2 (ja) 2006-07-05

Family

ID=26603869

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000393279A Expired - Fee Related JP3794266B2 (ja) 2000-11-08 2000-12-21 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体

Country Status (4)

Country Link
US (1) US20030156714A1 (ja)
EP (1) EP1445891A4 (ja)
JP (1) JP3794266B2 (ja)
WO (1) WO2002039664A2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4034585B2 (ja) 2002-01-28 2008-01-16 松下電器産業株式会社 楕円曲線演算装置及び楕円曲線演算方法
AU2003304629A1 (en) * 2003-07-22 2005-02-04 Fujitsu Limited Tamper-resistant encryption using individual key
US7853790B2 (en) * 2004-03-19 2010-12-14 Microsoft Corporation Enhancement to volume license keys
US8396213B2 (en) 2005-01-21 2013-03-12 Certicom Corp. Elliptic curve random number generation
EP1946205B1 (en) * 2005-10-18 2010-04-14 Telecom Italia S.p.A. A method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems
US7499552B2 (en) * 2006-01-11 2009-03-03 International Business Machines Corporation Cipher method and system for verifying a decryption of an encrypted user data key
DE102007001070B3 (de) * 2006-09-29 2008-04-30 Siemens Ag Verfahren zum verschlüsselten Datenausgleich eines Systems mit mindestens einem Datenträger und einem Lesegerät
CN101169776B (zh) * 2006-10-27 2012-01-25 松下电器产业株式会社 提升中央处理单元运算效能的数据加密方法及加密装置
US8102998B2 (en) * 2007-05-02 2012-01-24 King Fahd University Of Petroleum And Minerals Method for elliptic curve scalar multiplication using parameterized projective coordinates
US8559625B2 (en) * 2007-08-07 2013-10-15 Inside Secure Elliptic curve point transformations
US8619977B2 (en) * 2008-01-15 2013-12-31 Inside Secure Representation change of a point on an elliptic curve
EP2124382A1 (de) * 2008-05-20 2009-11-25 Siemens Aktiengesellschaft Verfahren zum verschlüsselten Datenaustausch und Kommunikationssystem
US8369517B2 (en) * 2008-08-12 2013-02-05 Inside Secure Fast scalar multiplication for elliptic curve cryptosystems over prime fields
US9645794B2 (en) 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307935B1 (en) * 1991-09-17 2001-10-23 Apple Computer, Inc. Method and apparatus for fast elliptic encryption with direct embedding
EP0874307B2 (en) * 1997-03-25 2016-12-28 Certicom Corp. Accelerated finite field operations on an elliptic curve
JP3796993B2 (ja) * 1998-12-22 2006-07-12 株式会社日立製作所 楕円曲線暗号実行方法及び装置並びに記録媒体

Also Published As

Publication number Publication date
EP1445891A4 (en) 2006-07-26
EP1445891A1 (en) 2004-08-11
JP2002207424A (ja) 2002-07-26
US20030156714A1 (en) 2003-08-21
WO2002039664A2 (fr) 2002-05-16

Similar Documents

Publication Publication Date Title
US6876745B1 (en) Method and apparatus for elliptic curve cryptography and recording medium therefore
US7308096B2 (en) Elliptic scalar multiplication system
US20030059043A1 (en) Elliptic curve signature verification method and apparatus and a storage medium for implementing the same
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
US7379546B2 (en) Method for XZ-elliptic curve cryptography
US20080044013A1 (en) Koblitz Exponentiation with Bucketing
JP3794266B2 (ja) 楕円曲線スカラー倍計算方法及び装置並びに記憶媒体
EP1160661A2 (en) Method of calculating multiplication by scalars on an elliptic curve and apparatus using same
CN101371285B (zh) 加密处理装置、加密处理方法
EP1296224B1 (en) Elliptic scalar multiplication system
EP0952697B1 (en) Elliptic curve encryption method and system
US7177422B2 (en) Elliptic curve encryption processing method, elliptic curve encryption processing apparatus, and program
JP2009042787A (ja) 楕円曲線上の有限体演算の加速方法
JP2003216026A (ja) 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにコンピュータ・プログラム
JP2005055488A (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
Dai et al. Don’t Forget Pairing-Friendly Curves with Odd Prime Embedding Degrees
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
JP4599859B2 (ja) 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
JP2000181347A (ja) 素体上楕円曲線上の点の演算方法およびその装置
KR20020086005A (ko) 타원곡선 암호 시스템을 위한 역원 연산기
JP4479135B2 (ja) 演算装置及び演算方法及び演算プログラム
JP2004053814A (ja) 楕円曲線暗号装置及び楕円曲線暗号演算方法
KR100400198B1 (ko) 공개키 암호시스템을 위한 특정 빅인티저에 대한 고속나머지 연산 방법
KR20010062971A (ko) 암호시스템의 연산속도 개선 방법
JP2007212768A (ja) 楕円曲線暗号における事前計算テーブル作成装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050809

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051007

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060404

LAPS Cancellation because of no payment of annual fees