明 細 書
情報セキュリティ装置及び楕円曲線演算装置
技術分野
[0001] 本発明は、電力消費量の計測による電力解析攻撃に対抗でき、情報を安全、確実 に扱うことができる情報セキュリティ技術に関する。
背景技術
[0002] 近年、ハードウェアあるいはソフトウェアにより実装された暗号モジュールにおいて 暗号処理が行われる際に、当該暗号処理における様々な副情報を手がかりにして、 当該暗号処理にぉ 、て用いられて 、る暗号鍵の解析を行う各種の解読法が考案さ れている。
例えば、タイミング攻撃と呼ばれる解読方法では、暗号モジュールにおいて暗号処 理に要する時間が、当該暗号処理において用いられている暗号鍵の値により、わず かではあるが異なることを利用して、当該暗号鍵の解読を行う。また、 Simple Power A nalysis (単純電力解析攻撃)、や Differential Power Analysis (差分電力解析攻撃)と 呼ばれる解読方法では、暗号処理を行う際の暗号モジュールにおける電力消費量を 副情報として用いる。
[0003] これらの解読方法は、近年、高性能な計測機器が安価で手に入るようになった背景 もあって、 ICカードのような暗号モジュールが実装された実際の製品に対しても解析 が可能であることが報告されて 、る。
以下の記述では、上記のような暗号処理時における暗号モジュールの電力消費量 の変化、すなわち、電力波形を手がかりにして、暗号鍵を解析する解読方法を総称 して、「電力解析攻撃」と呼ぶ。なお、タイミング攻撃については、非特許文献 1に、電 力解析攻撃については、非特許文献 2に詳しく述べられている。
[0004] 次に、楕円曲線暗号への単純電力解析攻撃について説明する。なお、楕円曲線 暗号については、非特許文献 5に詳しく述べられており、また、楕円 ElGamal暗号や 楕円 DSA署名方式に関しては、非特許文献 3に詳しく述べられている。
(楕円曲線暗号の単純電力解析攻撃)
楕円曲線暗号の復号ィ匕処理において、正整数である秘密鍵 ksと暗号文の一部で ある楕円曲線上の点 Cのスカラ倍点 ks*Cを計算する。ここで、 ks*Cは、 ks個の点 Cを加算することにより得られる楕円曲線上の点を表す。この計算方法として例えば、 非特許文献 5の 69ページにおける符号付 Window法が知られている。以下では、符 号付 Window法について説明する。なお、以下では、 Windowの幅を 3ビットとする。
[0005] ステップ S801: v^ksとし、 v=v— O+v— 1 X 2"3+v_2X2"6H hv_bX2
'(bX3)となるょぅにv—0, v— 1, v_2, · · ·, v— bをとる。さらに、 v— (b+1) 0と する。ここで、 bは(lenZ3以上の最も小さい整数)— 1、 lenは vのビット数、「X」は整 数の乗算、 x"yは Xの y乗を示している。例えば、 len=52の場合は、 b=18— 1 = 17 である。
[0006] ステップ S802:以下のステップ S8021〜S8026で、整数列 {w— i}(i=l, 2, . . , b + 1)を生成する。
ステップ S8021:c 0
ステップ S8022:v— c>2'2である力判定。 v— c>2'2である場合、ステップ S802 3へ。それ以外は、ステップ S8024へ。
[0007] ステップ S8023:w— c^v— c— 2'3, v_(c + l)^v_(c+l) +1,ステップ S80 25へ。
ステップ S8024: w_c^v_c
ステップ S8025:c c+1
ステップ S8026:c>b + 1であるか判定。 c>b+lである場合、ステップ S803へ。 それ以外は、ステップ S8022へ。
[0008] ステップ S803:以下のステップ S8031〜S8035で、テーブル {P_i}を生成する。
ステップ S8031:P— 0 O, P— 2 Dob(C)。ここで、 Oは楕円曲線の零元であり 、 Dobは楕円曲線の 2倍算を示し、 Dob(C)は Cの 2倍点である。
ステップ S8032:c 3
ステップ S8033:P— c P— (c— 1)+C
ステップ S8034: c c + 1
ステップ S8035:c>2'2=4である力判定。 c>2'2である場合、ステップ S804へ
。それ以外は、ステップ S8033
[0009] ステップ S804:以下のステップ S8041 S8047で、スカラ倍点 Rを計算する。
ステップ S8041:c b +1
ステップ S8042:w— c = 0である力判定。 w— c = 0である場合は、 c c— 1
[0010] ステップ S8043:R P— (w c)
ステップ S8044: c— c 1
ステップ S8045:cく 0である力判定。 cく 0である場合は、ステップ S805へ。
ステップ S8046: R^Dob (Dob (Dob (P_ (w_c) ) ) )
ステップ S8047:w— c力正、負または 0であるか判定する。 w— c<0である場合は Add (R, - P_ (-w_c) ) w_c > 0である場合は、 R^Add (R, P_ (w_c ))、 w— c = 0の場合は何もしない。ステップ S8044 ここで、 Addは、楕円曲線の 加算であり、 Add (R, P— (w_c) )は、 Rと P— (w_c)とに対する楕円曲線の加算の 結果である。
[0011] ステップ S805:Rを出力し終了。
上記方法では、スカラ倍点を整数列 {w— i}とテーブル {P— i}を用いて計算して!/ヽ る。ステップ S8047では w— c = 0の場合は、楕円曲線の演算を実行していない。ま た、ステップ S8042では、 w— c = 0である場合は、楕円曲線の演算を行わず、 cをデ クリメントするため、その分、楕円曲線の演算を実行しないことになる。このように、 w — c = 0の場合は、そうでない場合と処理が異なる。
[0012] (楕円曲線の 2倍算と楕円曲線の加算の公式)
以下に、楕円曲線の 2倍算と楕円曲線の加算の公式を示す。この公式について非 特許文献 4に詳しく述べられている。ここでは、点の座標を Jacobian座標として、楕 円曲線の演算 (加算及び 2倍算)を行う。
(a)楕円曲線の加算公式
P1=(X1, Yl, Zl), P2=(X2, Y2, Ζ2)〖こ対して、 Ρ3 = Ρ1 + Ρ2= (Χ3, Υ3, Ζ3)とする。
[0013] X3=-H"3-2XUlXH"2+r"2
Y3=-SlXH"3+rX (U1XH'2— Χ3)
Z3 = Z1XZ2XH
ただし、 U1=X1XZ2'2, U2=X2XZ1"2, S1=Y1XZ2"3, S2=Y2XZ1"3 、 H=U1-U2, r=S2— SIである。
[0014] (b)楕円曲線の 2倍算公式
P1=(X1, Yl, Zl)に対して、 P4 = 2*P1=(X4, Y4, Z4)とする。
X4=T
Y4=— 8ΧΥΓ4 + ΜΧ (S-T)
Z4 = 2XY1XZ1
ただし、
M = 3XXl"2 + aXZl"4, T=— 2S + M'2である。
[0015] 上記より、楕円曲線加算において、 2乗算が 4回実行され、乗算が 12回実行される 。それに比べて、楕円曲線 2倍算では、 2乗算が 6回実行され、乗算が 4回実行され る。
このように、楕円曲線加算と楕円曲線 2倍算とは、 2乗算及び乗算の回数が異なる ため、暗号モジュールにおける消費電力の波形が異なる。したがって、電力波形を観 測することにより、楕円曲線の 2倍算、加算の演算の順序を解析することが可能にな る。その解析結果から、 w—c = 0の場合の有無を攻撃者が知ることができる。さらに、 攻撃者は、 w—c = 0である力否かの情報力 秘密鍵 ksの探索空間を狭めることが可 會 になる。
[0016] (従来の楕円曲線暗号の単純電力解析攻撃に対する対策方法)
上記の単純電力解析攻撃では、 w_c = 0の場合に計算処理が異なることを利用し ている。そこで、この攻撃から防御するためには、 w— c = 0の場合にダミーの計算処 理を追加することにより、 w—c = 0の場合とそうでない場合の計算処理を同じにすれ ばよい。具体的には、以下のアルゴリズムで計算する。
[0017] ステップ S901: V ks、 v=v— O+v— 1 X 2"3+v_2 X 2"6H—— hv_b X 2" (b
X3)となるように v_0, v_l, v_2, ···, v_bをとる。さらに v_(b+l) 0とする。こ こで、 bは(lenZ3以上の最も小さい整数)— 1、 lenは vのビット数、 "X"は整数の乗 算、 x"yは Xの y乗を示している。例えば、 len=52の場合は、 b = 18— 1 = 17である
[0018] ステップ S902:以下のステップ S9021 S9026で、 列 {w— i}(i=l, 2, .. , b + 1)を生成する。
ステップ S9021:c 0
ステップ S9022:v— c>2"2である力判定。 v— c>2— 2である場合、ステップ S902 3 それ以外は、ステップ S9024
[0019] ステップ S9023:w— c^v— c— 2'3 v_(c + l)^v_(c+l) +1,ステップ S90 25
ステップ S9024: w_c^v_c
ステップ S9025:c c+1
ステップ S9026:c b + 1であるか判定。 c>b+lである場合、ステップ S903 それ以外は、ステップ S9022
[0020] ステップ S903:以下のステップ S9031 S9035で、テーブル {P—i}を生成する。
ステップ S9031:P— 0 O, P— 2—Dob(C
ステップ S9032:c 3
ステップ S9033:P— c P— (c— 1)+C
ステップ S9034: c c + 1
ステップ S9035:c>2"2=4である力判定。 c>2"2である場合、ステップ S904へ 。それ以外は、ステップ S9033
[0021] ステップ S904:以下のステップで、スカラ倍点 Rを
ステップ S 9041: c b + 1
ステップ S9042:w— c = 0である力判定。 w— c = 0である場合は、 D^Dob(Dob( Dob(C))), D Add(R, C), c c一 1
ステップ S9043 :R—P— (w一 c)
ステップ S 9044: c^c一 1
ステップ S9045:cく 0であるか判定。 c<0である場合は、ステップ S905 [0022] ステップ S 9046 :R— Dob (Dob (Dob (P_(w_c) ) ) )
ステップ S9047:w— cが正、負または 0であるか判定する。 w— c<0である場合は Add (R, - P_ (— w_c) ) w_c > 0である場合は、 Add (R, P_ (w_c
) )、 w— c = 0の場合は、 D^Add (R, C)。ステップ S9044へ。ここで、 Addは、楕円 曲線の加算であり、 Add (R, P— (w— c) )は、 Rと P— (w— c)とに対する楕円曲線の 加算の結果である。
[0023] ステップ S905 :Rを出力し終了。
上記単純電力攻撃に対する対策方法では、 Dは計算結果に関係しないダミーの点 であり、ステップ S9042及びステップ S9047で実行する Qの演算はダミー演算となる 。ステップ S9042では w— c = 0の場合は、 3回のダミーの楕円曲線 2倍算と 1回のダ ミーの楕円曲線加算を実行する。 w—c = 0でない場合においても、ステップ S9046 の 3回の楕円曲線 2倍算、ステップ S9047で 1回の楕円曲線加算を実行するため、 w — c = 0の場合と、 w—c≠0の場合で同じ演算を実行していることになる。また、ステツ プ S9047において w— c = 0の場合はダミーの加算を実行しており、 w— c≠ 0の場合 と同じ演算を実行していることになる。
[0024] したがって、上記単純電力攻撃に対する対策方法では、 w— c = 0の場合も、 w_c ≠0の場合と同じ演算を実行するため、電力波形が同じになり、攻撃者が w— c = 0で ある力否かの情報を電力波形力 知ることができなくなる。
非特干文献 1: Paul C. Kocher, Timing attacks on implementations of Diffie- Hellma n,RSA,DSS,and Other Systems " ,In Neal Koblitz, editor, CRYPTO '96, LNCS 1109, Springer— Verlag ,199b, pp.104-113.
非特許文献 2 : P. KocherJ. Jaffe'and B. Jun, Differential Power Analysis , Advance s in Cryptology -CRYPTO '99,LNCS,1666 'Springer- Verlag,1999,pp.388- 397. 非特許文献 3 :岡本龍明、山本博資、「現代暗号」、産業図書 (1997年)
非特干文献 4 : A. iyaji.T. Ono and H.し ohen, Efticient elliptic curve exponentiatio n",ICICS'97,Springer-Verlag,1999,pp.282-291.
非特許文献 5 : I.Blake,G.Seroussi and N. Smart, "Elliptic Curves in Cryptography", Lo ndon Mathematical Society Lecture Note Series 265.CAMBRIDGE UNIVERSITY P RESS.1999
発明の開示
発明が解決しょうとする課題
[0025] 上述した単純電力攻撃に対する対策方法では、 P— 1 =P以外に P— 2, P— 3, P
—4の 3点をテーブルに格納している。しかしながら、 ICカードなどのリソースが限ら れて 、る状況では、テーブル量を小さくした 、との要望がある。
本発明は、単純電力解析攻撃に対する耐性は保持しつつ、使用するテーブル量を 削減することができる情報セキュリティ装置、楕円曲線演算装置、方法及びコンビュ ータプログラムを提供することを目的とする。 課題を解決するための手段
[0026] 上記目的を達成するために、本発明は、素数 pを法とする剰余体 F上で定義された 楕円曲線 E上の離散対数問題を根拠として、楕円曲線 E上の点 Cに、素数 p未満の 正整数である係数 kを乗じて点 k* Cを算出する楕円曲線演算を用いて、情報を安全 又は確実に扱う情報セキュリティ装置であって、楕円曲線 E上の点 Cを記憶している 点記憶手段と、係数 kの全桁の値を記憶している桁記憶手段と、桁記憶手段から 1個 の桁の値 wを取得する取得手段と、取得した前記桁により表現しうる値の種類の数と 同数の乗算手段と、取得した前記桁の値 wに対応する乗算手段を選択する選択手 段と、係数 kの全ての桁について、前記取得手段、前記選択手段及び前記乗算手段 に対して、 1個の桁の値 wの取得と、取得した桁の値 wに対応する乗算手段の選択と 、選択された乗算手段による乗算とを繰り返すように制御する繰返制御手段とを備え 、各乗算手段は、楕円曲線 E上において、前記点 Cに取得した前記桁の値 wを乗じ て得られた乗算結果を、当該桁に相応する位置において加算し、取得した前記桁の 値 wが で割り切れ、 2t+1で割り切れない条件を満たす非負整数 tが存在する場合 に、当該桁の値 wに対応する前記乗算手段は、楕円曲線 E上において、点 Qに wZ を乗じて得られる点の加算又は点 Qに I w/^ Iを乗じて得られる点の減算を含 む演算を行うことを特徴とする。
[0027] ここで、点記憶手段は、実施の形態の被演算値格納部 224に相当し、桁記憶手段 は、分割情報格納部 223に相当し、取得手段は、取得部 241に相当し、選択手段は 、選択部 242に相当し、複数の乗算手段は、それぞれ、 Window演算部 251〜258 に相当し、繰返制御手段は、繰返制御部 243に相当する。また、実施の形態におけ る Windowを、ここでは、桁と表現している。
発明の効果
[0028] この構成によると、当該桁の値 wに対応する前記乗算手段は、楕円曲線 E上にお いて、点 Qに w/ を乗じて得られる点の加算又は点 Qに I W Iを乗じて得られ る点の減算を含む演算を行うので、例えば、各桁のビット長が 3である場合に、加算 又は減算で用いられる点は、 Cを除いて、 3 * Cのみであり、各桁のビット長が 4である 場合に、加算又は減算で用いられる点は、 Cを除いて、 3 * C、 5 *じ及び7 *じのみ である。
[0029] 従来技術によると、例えば、各桁のビット長が 3である場合に、加算又は減算で用い られる点は、 Cを除いて、 2 * C、 3 *じ及び4 *じでぁり、各桁のビット長が 4である場 合に、加算又は減算で用いられる点は、点 Cを除いて、 2 * C、3 * C、4 * C、5 * C 、 6 * C、 7 * C及び 8 * Cである。
このように、本発明によると、従来技術と比較して、加算又は減算において用いられ る点を少なくすることができ、使用するテーブル量を削減することができる。
[0030] ここで、取得した前記桁は、 swビット長であり、前記非負整数 tが存在する場合に、 前記桁の値 wに対応する前記乗算手段は、(sw+ 1)回の演算を順次行い、前記複 数の演算のうち(sw— + 1)番目の演算は、楕円曲線 E上の前記加算又は前記減算 であり、他の演算は、楕円曲線 E上の 2倍算であるとしてもよい。
この構成によると、従来技術における場合と同じ演算結果が得られ、かつ、加算又 は減算にお 、て用いる点の数を少なくすることができる。
[0031] ここで、前記情報セキュリティ装置は、さらに、点 Qを初期の加算点とし、加算点へ 2
* Qを加算して新たな加算点を得ることを繰り返すことにより、点 Qを除く 2SW_1個の加 算点を生成するテーブル生成手段を含み、非負整数 tが存在する場合に、当該桁の 値 wに対応する前記乗算手段は、点 Qに wZ^又は I wZ^ Iを乗じて得られる点 として、前記テーブル生成手段により生成された前記加算点を用いるとしてもよい。
[0032] この構成によると、テーブル生成手段により 2s""1個の加算点が算出されているので 、乗算手段における演算回数を減らすことができる。
ここで、取得した前記桁は、 3ビット長であり、前記桁の値 wが 2である場合に、対応 する乗算手段は、楕円曲線 E上の 2倍算、 2倍算、加算及び 2倍算をこの順序で行い
、前記加算は、前記点 Cを加える演算であり、前記桁の値 wが 4である場合に、対応 する乗算手段は、楕円曲線 E上の 2倍算、加算、 2倍算及び 2倍算をこの順序で行い 、前記加算は、前記点 Cを加える演算であり、前記桁の値 wが— 2である場合に、対 応する乗算手段は、楕円曲線 E上の 2倍算、 2倍算、減算及び 2倍算をこの順序で行 い、前記減算は、前記点 Cを減ずる演算であるとしてもよい。
[0033] この構成によると、加算又は減算で用いられる点は、 Cを除いて、 3 * Cのみであり、 従来技術と比較して、使用するテーブル量を削減することができる。
ここで、取得した前記桁は、 4ビット長であり、前記桁の値 wが 2である場合に、対応 する乗算手段は、楕円曲線 E上の 2倍算、 2倍算、 2倍算、加算及び 2倍算をこの順 序で行い、前記加算は、前記点 Cを加える演算であり、前記桁の値 wが 4である場合 に、対応する乗算手段は、楕円曲線 E上の 2倍算、 2倍算、加算、 2倍算及び 2倍算 をこの順序で行い、前記加算は、前記点 Cを加える演算であり、前記桁の値 wが 6で ある場合に、対応する乗算手段は、楕円曲線 E上の 2倍算、 2倍算、 2倍算、加算及 び 2倍算をこの順序で行い、前記加算は、点 3 * Cを加える演算であり、前記桁の値 wが 8である場合に、対応する乗算手段は、楕円曲線 E上の 2倍算、加算、 2倍算、 2 倍算及び 2倍算をこの順序で行い、前記加算は、前記点 Cを加える演算であり、前記 桁の値 wがー 6である場合に、対応する乗算手段は、楕円曲線 E上の 2倍算、 2倍算 、 2倍算、減算及び 2倍算をこの順序で行い、前記減算は、点 3 * Cを減ずる演算で あり、前記桁の値 wがー 4である場合に、対応する乗算手段は、楕円曲線 E上の 2倍 算、 2倍算、減算、 2倍算及び 2倍算をこの順序で行い、前記減算は、点 Cを減ずる 演算であり、前記桁の値 wがー 2である場合に、対応する乗算手段は、楕円曲線 E上 の 2倍算、 2倍算、 2倍算、減算及び 2倍算をこの順序で行い、前記減算は、点 Cを減 ずる演算であるとしてもよ 、。
[0034] この構成によると、加算又は減算で用いられる点は、 Cを除いて、 3 * C、 5 * C及び 7 * Cのみであり、従来技術と比較して、使用するテーブル量を削減することができる ここで、前記加算又は前記減算及び前記 2倍算は、それぞれ、同じ順序で同じ種 類の演算を実行するように、ダミーの演算を含むとしてもよ 、。
この構成〖こよると、加算又は減算及び 2倍算は、それぞれ、同じ順序で同じ種類の 演算を実行するので、電力波形を手がかりにして、解析しょうとしても、加算又は減算 及び 2倍算において、同様の電力波形が出力され、 2者を明確に区別することが困 難となる。こうして、電力解析攻撃に対抗することができる。
[0035] ここで、取得した前記桁が aビット長である場合に、前記非負整数 tが存在するときに 、前記桁の値 wに対応する前記乗算手段は、(a+ 1)回の演算を順次行い、前記複 数の演算のうち(a— + 1)番目の演算は、楕円曲線 E上の前記加算又は前記減算 であり、他の演算は、楕円曲線 E上の 2倍算であり、取得した前記桁力 ¾ビット長であ る場合に、前記非負整数 tが存在するときに、前記桁の値 wに対応する前記乗算手 段は、(b + 1)回の演算を順次行い、前記複数の演算のうち (b— + 1)番目の演算 は、楕円曲線 E上の前記加算又は前記減算であり、他の演算は、楕円曲線 E上の 2 倍算であるとしてもよい。
[0036] この構成によると、異なるビット長の桁が混在すると想定する場合においても演算を 行うことができる。
ここで、前記情報セキュリティ装置は、暗号化装置であって、点 k* Cを算出する楕 円曲線演算を用いて、情報を暗号化するとしてもよい。
この構成によると、情報の暗号ィ匕の際の電力解析攻撃に対抗することができる。
[0037] ここで、前記情報セキュリティ装置は、復号装置であって、点 k* Cを算出する楕円 曲線演算を用いて、暗号化された情報を復号するとしてもよい。
この構成〖こよると、暗号化された情報を復号する際の電力解析攻撃に対抗すること ができる。
ここで、前記情報セキュリティ装置は、デジタル署名生成装置であって、点 k * Cを 算出する楕円曲線演算を用いて、情報にデジタル署名を施すとしてもよ 、。
[0038] この構成によると、デジタル署名の生成の際の電力解析攻撃に対抗することができ る。
ここで、前記情報セキュリティ装置は、デジタル署名検証装置であって、点 k * Cを 算出する楕円曲線演算を用いて、デジタル署名の検証を行うとしてもよ!/、。
この構成によると、デジタル署名の検証の際の電力解析攻撃に対抗することができ
る。
ここで、前記情報セキュリティ装置は、鍵共有装置であって、点 k* Cを算出する楕 円曲線演算を用いて、他の鍵共有装置との間で、共有する鍵を生成するとしてもよい
[0039] この構成によると、鍵共有の際の電力解析攻撃に対抗することができる。
また、本発明は、素数 pを法とする剰余体 F上で定義された楕円曲線 E上の離散対 数問題を根拠として、楕円曲線 E上の点 Cに、素数 p未満の正整数である係数 kを乗 じて点 k * Cを算出する楕円曲線演算装置であって、楕円曲線 E上の点 Cを記憶して いる点記憶手段と、係数 kの全桁の値を記憶している桁記憶手段と、桁記憶手段から 1個の桁の値 wを取得する取得手段と、取得した前記桁により表現しうる値の種類の 数と同数の乗算手段と、取得した前記桁の値 wに対応する乗算手段を選択する選択 手段と、係数 kの全ての桁について、前記取得手段、前記選択手段及び前記乗算手 段に対して、 1個の桁の値 wの取得と、取得した桁の値 wに対応する乗算手段の選 択と、選択された乗算手段による乗算とを繰り返すように制御する繰返制御手段とを 備え、各乗算手段は、楕円曲線 E上において、前記点 Cに取得した前記桁の値 wを 乗じて得られた乗算結果を、当該桁に相応する位置において加算し、取得した前記 桁の値 wが で割り切れ、 2t+1で割り切れない条件を満たす非負整数 tが存在する 場合に、当該桁の値 wに対応する前記乗算手段は、楕円曲線 E上において、点 Qに w/ を乗じて得られる点の加算又は点 Q〖こ I wZ^ Iを乗じて得られる点の減算 を含む演算を行うことを特徴とする。
[0040] この構成によると、従来技術と比較して、加算において用いられる点を少なくするこ とができ、使用するテーブル量を削減することができる。
以上説明したように、本発明の情報セキュリティ装置及び楕円曲線演算装置による と、単純電力解析攻撃の耐性を保持しつつ、従来技術と比較して、使用するテープ ル量を削減することができるという優れた効果を奏する。
図面の簡単な説明
[0041] [図 1]本発明に係る 1の実施の形態としてのポイント発行システム 10の構成を示すシ ステム構成図である。
[図 2]楕円曲線演算部 208の構成を示すブロック図である。
圆 3]分割情報生成部 222の動作を示すフローチャートである。
[図 4]楕円曲線加算部 226による加算の動作及び楕円曲線 2倍算部 227による 2倍 算の動作示すフローチャートである。図 5へ続く。
[図 5]楕円曲線加算部 226による加算の動作及び楕円曲線 2倍算部 227による 2倍 算の動作示すフローチャートである。図 4から続く。
[図 6]テーブル生成部 225によるテーブル {P—i}の生成の動作を示すフローチャート である。
[図 7]sw= 3の場合において、テーブル生成部 225により生成されるテーブル {P_i} の一例を示す。
[図 8]sw=4の場合において、テーブル生成部 225により生成されるテーブル {P_i} の一例を示す。
[図 9]sw= 5の場合において、テーブル生成部 225により生成されるテーブル {P_i} の一例を示す。
圆 10]スカラ倍演算部 229による演算の手順を示すフローチャートである。図 11へ続 く。
[図 11]スカラ倍演算部 229による演算の手順を示すフローチャートである。図 10から 続く。
[図 12]図 11のステップ S 161〜S168における各演算の意味を説明するための sw= 3の場合の演算変換表 320である。
[図 13]楕円曲線演算部 208の動作を示すフローチャートである。
[図 14]ポイント発行システム 10の動作を示すフローチャートである。
[図 15]デジタル署名システムの動作を示すフローチャートである。
[図 16]鍵共有システムの動作を示すフローチャートである。
[図 17]sw=4の場合の演算変換表 330を示す。
[図 18]スカラ倍演算部 229の構成を示すブロック図である。
符号の説明
10 ポイント発行システム
100 ICカード
101 秘密鍵記憶部
102 復号処理部
103 通信部
104 制御部
105 情報記憶部
108 楕円曲線演算部
200 ポイント発行装置
201 公開鍵記憶部
202 暗号処理部
203 通信部
204 制御部
205 情報記憶部
206 入力受付部
207 表示部
208 楕円曲線演算部
221 べき倍係数格納部
222 分割情報生成部
223 分割情報格納部
224 被演算値格納部
225 テーブル生成部
226 楕円曲線加算部
227 楕円曲線 2倍算部
228 テーブル格納部
229 スカラ倍演算部
230 入力部
231 出力部
発明を実施するための最良の形態
[0043] 1.実施の形態 1
本発明に係る 1の実施の形態としてのポイント発行システム 10について説明する。
1. 1 ポイント発行システム 10の構成
ポイント発行システム 10は、図 1に示すように、 ICカード 100及びポイント発行装置 200から構成されている。
[0044] ポイント発行装置 200の操作者により ICカード 100がポイント発行装置 200に装着 され、ポイント発行装置 200は、ポイントを生成し、生成したポイントに暗号ィ匕アルゴリ ズムを施して暗号化ポイントを生成し、生成した暗号化ポイントを ICカード 100へ送 信する。
ここで、ポイントは、利用者が商品を購入したりサービスの提供を受けた場合に、販 売者やサービス提供者力 受け取る特典情報であり、次に利用者が商品を購入した りサービスの提供を受ける際に、販売者やサービス提供者への対価の支払いの一部 又は全部として利用される。
[0045] ICカード 100は、暗号ィ匕ポイントを受け取り、受け取った暗号ィ匕ポイントに前記暗号 化に対応する復号アルゴリズムを施して、復号ポイントを生成し、生成した復号ポイン トを内部に記憶する。
ポイント発行装置 200及び ICカード 100は、それぞれ、素数 pを法とする剰余体 F 上で定義された楕円曲線 E上の離散対数問題を根拠として、楕円曲線 E上の点 こ
、素数 P未満の正整数である係数 kを乗じて点 k* Cを算出する楕円曲線演算を用い て、情報を安全に扱う情報セキュリティ装置である。
[0046] ここで、情報を安全に扱うとは、例えば、情報を二者間で通信する場合にぉ 、て、 当該情報が第三者に知られないようにすることを言い、この通信は、秘密の通信とも 呼ばれる。
1. 2 公開鍵暗号方式と離散対数問題
本実施の形態では、上記の暗号アルゴリズム及び復号アルゴリズムは、楕円曲線 上の演算を用いる公開鍵暗号方式によるものである。
[0047] 公開鍵暗号方式を用いる秘密通信では、暗号化鍵と復号化鍵とが異なり、復号ィ匕 鍵は秘密にする力 暗号ィ匕鍵は公開する。
この公開鍵暗号方式の安全性の根拠として、楕円曲線上において定義される離散 対数問題が用いられる。なお、離散対数問題については、ニイルコブリッツ著 "ァ コウス イン ナンバァ セォリイ アンド タリプトグラヒィ "(Neal Koblitz ,〃 A Course i n Number theory and Cryptography", Springer— Verlag, 1987)に詳しく述べられてい
[0048] 次に、楕円曲線上の離散対数問題について、以下に述べる。
楕円曲線上の離散対数問題とは、
E (GF (p) )を有限体 GF (p)上で定義された楕円曲線とし、楕円曲線 Eの位数が大 きな素数で割り切れる場合に、楕円曲線 Eに含まれる元 Gをベースポイントとする。こ のとき、楕円曲線 Eに含まれる与えられた元 Yに対して、
Y=x水 G
となる整数 Xが存在するならば、 Xを求めよ、という問題である。
[0049] ここで、 ρは素数、 GF (p)は p個の元を持つ有限体である。また、この明細書におい て、記号 *は、楕円曲線に含まれる元を複数個加算する演算を示し、 x * Gは、次式 に示すように、楕円曲線に含まれる元 Gを X個加算することを意味する。
X水 G = G + G + GH hG
離散対数問題を公開鍵暗号の安全性の根拠とするのは、多くの元を有する有限体 GF (p)に対して、上記問題は極めて難しいからである。
[0050] 1. 3 ポイント発行装置 200の構成
ポイント発行装置 200は、図 1に示すように、公開鍵記憶部 201、暗号処理部 202、 通信部 203、制御部 204、情報記憶部 205、入力受付部 206、表示部 207及び楕 円曲線演算部 208から構成されて 、る。
また、楕円曲線演算部 208は、図 2に示すように、入力部 230、べき倍係数格納部 221、分割情報生成部 222、分割情報格納部 223、被演算値格納部 224、テーブル 生成部 225、楕円曲線加算部 226、楕円曲線 2倍算部 227、テーブル格納部 228、 スカラ倍演算部 229及び出力部 231から構成されている。
[0051] ポイント発行装置 200は、ポイントを生成し、生成したポイントを暗号ィ匕して ICカード 100に書き込む装置であるとともに、商品の販売の際に、販売額を計算し、計算した
販売額を表示し、レシートを印刷し、生成した前記ポイントを内部に記憶し、利用者か ら支払われる代金の保管などを行う金銭レジスタ装置でもある。
ポイント発行装置 200は、具体的には、マイクロプロセッサ、 ROM、 RAM,ハード ディスクユニット、ディスプレイユニット、キーボードなどから構成されるコンピュータシ ステムである。前記 RAM又は前記ハードディスクユニットには、コンピュータプロダラ ムが記憶されている。前記マイクロプロセッサ力 前記コンピュータプログラムに従つ て動作することにより、ポイント発行装置 200は、その一部の機能を達成する。
[0052] (1)情報記憶部 205及び公開鍵記憶部 201
情報記憶部 205は、素数 p、素数 pを法とする剰余体 Fp上で定義された楕円曲線 E (Fp)上のベースポイント B及び楕円曲線 E (Fp)の係数を記憶している。また、生成さ れたポイント Pmを記憶するための領域を備えている。
前記楕円曲線 E (Fp)は、一例として、 y =x3 + a X x + bであり、前記係数は、 a及 び bである。
[0053] 公開鍵記憶部 201は、後述する秘密鍵 (私有鍵) ksに対応して生成された公開鍵 Kpを記憶している。ここで、公開鍵 Κρは、 ICカード 100又は鍵管理装置により、以 下に示す式により算出されたものである。
公開鍵 Kp =秘密鍵 ks *ベースポイント B
(2)制御部 204
制御部 204は、前記特典情報としてのポイント Pmを生成し、生成したポイント Pmを 情報記憶部 205に書き込む。次に、暗号処理部 202に対して、ポイント Pmを暗号ィ匕 して ICカード 100へ送信することを示す指示を出力する。
[0054] (3)通信部 203、入力受付部 206及び表示部 207
通信部 203は、暗号処理部 202又は制御部 204の制御の基に、 ICカード 100との 間で、情報の送受信を行う。
入力受付部 206は、ポイント発行装置 200の操作者力もの情報又は指示の入力を 受け付け、入力を受け付けた情報又は指示を制御部 204へ出力する。
[0055] 表示部 207は、制御部 204の制御により、様々な情報を表示する。
(4)暗号処理部 202
暗号処理部 202は、制御部 204から、ポイント Pmを暗号化して ICカード 100へ送 信することを示す指示を受け取る。
前記指示を受け取ると、暗号処理部 202は、乱数 rを生成し、ベースポイント Bを情 報記憶部 205から読み出し、次に、生成した乱数 rをべき倍係数 kとして、楕円曲線 演算部 208の入力部 230へ出力し、読み出したベースポイント Bを被べき倍点 Cとし て、入力部 230へ出力する。次に、楕円曲線演算部 208の出力部 231から、演算結 果としてべき倍点 k * C =r * Bを受け取り、第 1暗号文 s 1 =べき倍点 r * Bとする。
[0056] 次に、暗号処理部 202は、公開鍵記憶部 201から公開鍵 Kpを読み出し、次に、生 成した乱数 rをべき倍係数 kとして、入力部 230へ出力し、読み出した公開鍵 kpを被 べき倍点 Cとして、入力部 230へ出力する。次に、出力部 231から、演算結果として べき倍点 k * C =r * Kpを受け取る。
次に、暗号処理部 202は、情報記憶部 205からポイント Pmを読み出し、読み出し たポイント Pmと受け取つたべき倍点 r * Kpの X座標値とに排他的論理和を施して、第 2暗号文 s2 =ポイント Pm xor (べき倍点 r *Kpの x座標値)を生成する。ここで、「x orjは、排他的論理和を示す演算子である。
[0057] 次に、暗号処理部 202は、生成した第 1暗号文 si及び第 2暗号文 s2を通信部 203 を介して、 ICカード 100へ送信する。
(5)楕円曲線演算部 208
楕円曲線演算部 208は、上述したように、入力部 230、べき倍係数格納部 221、分 割情報生成部 222、分割情報格納部 223、被演算値格納部 224、テーブル生成部 225、楕円曲線加算部 226、楕円曲線 2倍算部 227、テーブル格納部 228、スカラ 倍演算部 229及び出力部 231から構成されている。
[0058] (5- 1)べき倍係数格納部 221及び被演算値格納部 224
べき倍係数格納部 221は、ただ 1個のべき倍係数 kを記憶するための領域を備えて いる。べき倍係数 kは、スカラであり、べき倍係数 kのビット数は、 lenであるとする。 また、被演算値格納部 224は、ただ 1個の被べき倍点 Gを記憶するための領域を備 えている。被べき倍点 Gは、楕円曲線上の点である。
[0059] (5— 2)入力部 230及び出力部 231
入力部 230は、暗号処理部 202からべき倍係数 kを受け取り、べき倍係数格納部 2 21に既にべき倍係数が記憶されている場合には、受け取つたべき倍係数 kをべき倍 係数格納部 221にお 、て上書きし、べき倍係数格納部 221にべき倍係数が記憶さ れて 、な 、場合には、受け取つたべき倍係数 kをべき倍係数格納部 221に書き込む
[0060] また、入力部 230は、暗号処理部 202から被べき倍点 Cを受け取り、被演算値格納 部 224に既に被べき倍点が記憶されている場合には、受け取った被べき倍点 Cを被 演算値格納部 224にお 、て上書きし、被演算値格納部 224に被べき倍点が記憶さ れて ヽな 、場合には、受け取った被べき倍点 Cを被演算値格納部 224に書き込む。 出力部 231は、スカラ倍演算部 229からべき倍点 k * Cを受け取り、受け取つたべき 倍点 k * Cを暗号処理部 202へ出力する。
[0061] (5- 3)分割情報格納部 223
分割情報格納部 223は、後述する(b + 1)個の整数 w— i (i= l、 2、 3、 · · ·、 b+ 1) 力 なる整数列 { w— i}を記憶するための領域を備えて 、る。
(5— 4)分割情報生成部 222
分割情報生成部 222は、べき倍係数格納部 221からべき倍係数 kを読み出し、以 下に示すようにして、読み出したべき倍係数 k力も分割情報である整数 w— i (i= l、 2 、 3、…、 b + 1)力 なる整数列 {w_i}を生成する。
[0062] ここで、 w— iは、 swビットの符号付整数値である。 swは、符号付 Window法による Windowの幅であり、一例として、 sw= 3である。この場合、 w— iは「― 3」、 「― 2」、 「 — 1」、 「0」、 「1」、 「2」、 「3」及び「4」のいずれかの値を取る。 bは、「(len/sw以上の 最も小さい整数) 1」であり、 lenは、後述する変数 Vのビット数であり、「 X」は、整数 の乗算を示す演算子であり、「x 」は、 Xの y乗を示す演算である。
[0063] 例えば、 len= 52の場合は、 b = 18— 1 = 17である。なお、以下では、一例として、 sw= 3としているが、 swは、「2」でもよいし、「4」以上でもよい。
分割情報生成部 222の動作について、図 3に示すフローチャートを用いて説明す る。
分割情報生成部 222は、べき倍係数 kを変数 Vに代入し (V^ks)、 v=v— 0+v— 1
X 2"sw+v_2 X2"(2Xsw)H hv一 b X2"(bX sw)となるように、 v一 0, v一 1
, ν_2, · ··, v_bをとる。さらに v_(b + l) 0とする(ステップ S131)。ここで、 v_i (i=0 1 2 · · · b)は、 swビットである。
[0064] 次に、分割情報生成部 222は、カウンタ変数 cに 0を代入する(c 0) (ステップ S13 2)。
次に、分割情報生成部 222は、 v_c>2" (sw—1)であるか判定し、 v_c>2" (sw - 1)である場合 (ステップ S 133で YES) w_c^v_c— 2' 3及び v一 (c + 1) 一 (c + 1) + 1を算出する(ステップ S 134)。 v_c≤ 2' (sw- 1)である場合 (ステップ SI 33で NO) w_cへ v_cを代入する(w_c^v_c) (ステップ SI 35)。
[0065] 次に、分割情報生成部 222は、 c c+1を算出する (ステップ S136)。
次に、分割情報生成部 222は、 c>b+lであるか否かを判定し、 c>b + lである場 合 (ステップ S 137で YES)、整数列 {w—i}を分割情報として分割情報格納部 223に 格納し (ステップ S 138)、分割情報の生成の処理を終了する。 c≤b + lである場合( ステップ S 137で NO)、ステップ SI 33へ戻って処理を繰り返す。
[0066] (5— 5)楕円曲線加算部 226及び楕円曲線 2倍算部 227
楕円曲線加算部 226は、テーブル生成部 225又はスカラ倍演算部 229から、楕円 曲線上の 2点 P1=(X1, Yl, Z1)及び P2=(X2, Y2, Z2)並びにこれらの点の加 算の指示を受け取り、受け取った Pl= (XI, Yl, Zl)及び P2= (X2, Y2, Z2)に対 して、以下に示すようにして、 P1と P2とを楕円曲線上で加算して点 P3 = P1 + P2= ( X3, Y3, Z3)を計算し、次に、計算した点 P3をテーブル生成部 225又はスカラ倍演 算部 229へ出力する。
[0067] また、楕円曲線 2倍算部 227は、テーブル生成部 225又はスカラ倍演算部 229から 、楕円曲線上の点 Pl= (XI, Yl, Zl)及び点 PIの 2倍算の指示を受け取り、受け 取った点 Pl= (XI, Yl, Zl)に対して、以下に示すようにして、楕円曲線上で点 P1 に 2倍算を施して、点131の2倍点でぁる点134 = 2*?1=( 4, Y4, Z4)を計算し、 次に、計算した点 P4をテーブル生成部 225又はスカラ倍演算部 229へ出力する。
[0068] (楕円曲線加算部 226による加算の詳細及び楕円曲線 2倍算部 227による 2倍算 の詳細)
本実施の形態では、楕円曲線加算部 226及び楕円曲線 2倍算部 227において使 用される演算及びその順序が同じになるように、ダミー演算が追加される。
以下では、ダミー演算が「ダミー演算である」と明確に分力るようにするため、ダミー 演算を結果の代入先を変数 Dにより示す。なお、本実施の形態で使用する楕円曲線 加算及び楕円曲線 2倍算は Jacobian座標に対するものである。 Jacobian座標につい ては非特許文献 4に詳しく述べられて 、る。
[0069] 楕円曲線加算部 226及び楕円曲線 2倍算部 227の詳細の演算について説明する 前に、使用される演算関数を以下に定義する。
•Sqr(X) :Xの 2乗算を示す。
•Mul (X, Y) :Xと Yの乗算を示す。なお、 X=Yの場合においても、 Mul(X,Y)と 記載している場合は、 Sqr (X)を用いて 2乗算を行うのではなぐ同じ Xの乗算として 計算を行う。
[0070] · Mul2 (X): Xと 2との乗算を示す。
•Mul3 (X) :Xと 3との乗算を示す。
•Mul4 (X) :Xと 4との乗算を示す。
•Mul8 (X) :Xと 8との乗算を示す。
•Sub (X, Y)Xから Yを引く減算を示す。
[0071] (楕円曲線加算部 226による加算の動作)
以下に、楕円曲線加算部 226による加算の動作を、図 4及び図 5に示すフローチヤ ートを用いて説明する。
楕円曲線加算部 226は、以下に示すステップに従って、加算を行う。
Z22^Sqr (Z2) (ステップ S401)、
D^Mul4 (Xl) (ステップ S402)
Ul^MuKXl, Z22) (ステップ S403)
Z12 Sqr (Zl) (ステップ S404)
D^Mul2 (Y1) (ステップ S405)
Z13^Mul (Z22, Z1) (ステップ S406)
Z23^Mul (Z22, Z2) (ステップ S407)
U2^Mul (X2, Z12) (ステップ S408)、
Sl^Mul(Yl, Z23) (ステップ S409)、
S2 Mul(Y2, Z13) (ステップ S410)、
D^Mul3 (Z12) (ステップ S411)、
H^Sub (U2, Ul) (ステップ S412)、
H2 Sqr(H) (ステップ S413)、
UlH^MuKUl, H2) (ステップ S414)、
U2H^Mul2 (UlH) (ステップ S415)、
r Sub (S2, SI) (ステップ S416)、
r2^Sqr (r) (ステップ S417)、
D^Mul8 (r) (ステップ S418)、
UHX^Sub (U1H, X3) (ステップ S419)、
H3^Mul (H2, H) (ステップ S420)、
S1H3 Mul(Sl, H3) (ステップ S421)、
rH Sub (r2, H3) (ステップ S422)、
X3 Sub (rH, U2H) (ステップ S423)、
ZlZ2^Mul(Zl, Z2) (ステップ S424)、
Z3 Mul (ZlZ2, H) (ステップ S425)、
rU^MuKr, UHX) (ステップ S426)、
Y3 Sub (rU, S1H3) (ステップ S427)。
(楕円曲線 2倍算部 227による 2倍算の動作)
以下に、楕円曲線 2倍算部 227による 2倍算の動作を、図 4及び図 5に示すフロ チャートを用いて説明する。
楕円曲線加算部 226は、以下に示すステップに従って、 2倍算を行う。
Y12 Sqr(Yl) (ステップ S501)、
X41 Mul4 (XI) (ステップ S502)、
S Mul (X41, Y12) (ステップ S503)、
X12 Sqr (Xl) (ステップ S504)、
Y21^Mul2 (Yl) (ステップ S 505)、
Z4^Mul (Y21, Zl) (ステップ S 506)、
Z12^Mul (Zl, Zl) (ステップ S507)、
Z14^Mul (Z12, Z12) (ステップ S 508)、
D^MuKYl, Z12) (ステップ S509)、
aZ14^Mul( (-a) , Z14) (ステップ S510)、
X32^Mul3 (XI 2) (ステップ S 511)、
M Sub (X32, aZ14) (ステップ S 512)、
M2 Sqr(M) (ステップ S 513)、
D^Mul(S, M2) (ステップ S514)、
S2^Mul2 (S) (ステップ S 515)、
X4 Sub (M2, S2) (ステップ S 516)、
Y14 Sqr(Y12) (ステップ S 517)、
Y814 Mul8 (Y14) (ステップ S 518)、
ST Sub (S, X4) (ステップ S 519)、
MST Mul (M, ST) (ステップ S 520)、
D^Mul(D, MST) (ステップ S521)、
Y4 Sub (MST, Y814) (ステップ S522)、
D Sub (Y4, S2) (ステップ S523)、
D^MuKZl, Z12) (ステップ S 524)、
D^Mul(D, M) (ステップ S525)、
D Mul(X4, ST) (ステップ S526)、
D Sub (D, Y4) (ステップ S527)。
なお、ステップ S 510で現れる( a)は、楕円曲線の方程式を y "2=x"3 + a X x+b としたときのパラメータ aの負の値であり、予め計算しておく。
図 4及び図 5に示すように、楕円曲線加算部 226と楕円曲線 2倍算部 227とは、同 じ順序で同じ演算を実行して 、ることがわかる。
(5— 6)テーブル格納部 228
テーブル格納部 228は、テーブル生成部 225により生成された楕円曲線上の点を 1個以上格納するための領域を備えている。
[0074] (5— 7)テーブル生成部 225
テーブル生成部 225は、以下に説明するように、楕円曲線上の点力 なるテーブル {P_i}を生成し、生成したテーブル {P_i}をテーブル格納部 228へ格納する。 ここで、テーブル {P— i}は、 1個以上の楕円曲線上の点 P— i (i= l 2 3、 · · ·)を 含む。
[0075] テーブル生成部 225によるテーブル {P—i}の生成の動作について、図 6に示すフ ローチャートを用いて、説明する。 テーブル生成部 225は、被演算値格納部 224から、被べき倍点 Cを読み出し、テ 一ブル生成部 225は、 P— 1 C及び Q ECD (C)を演算する(ステップ S141)。
[0076] ここで、 ECDは、楕円曲線上の 2倍算を示し、楕円曲線 2倍算部 227を用いて計算 することを示している。例えば、 ECD (A)は、楕円曲線上の点 Aに対して算出された 2倍算の演算結果を示し、 ECD (A) = 2 *Aである。テーブル生成部 225は、楕円 曲線 2倍算部 227に対して、楕円曲線上の点 C及び 2倍算の指示を出力し、楕円曲 線 2倍算部 227から 2倍算の演算結果を受け取る。
[0077] 次に、テーブル生成部 225は、カウンタ変数 iに対して、 i 1を算出する (ステップ S 142)。
次に、テーブル生成部 225は、 i— i+ 1を算出し (ステップ S143)、 2SW— 2を算出し、 i > 2 である力否かを判断する。 i> 2s である場合には (ステップ S144)、テープ ル生成の処理を終了する。
[0078] i> 2SW— 2でな!/ヽ場合には(ステップ S144)、テーブル生成部 225は、 P— i ECA ( P_(i— 1) , Q)を算出する。つまり、 ECA(P_(i— 1) , Q) =P_(i— 1) +Qを算出 する(ステップ S 145)。
ここで、 ECAは、楕円曲線上の加算を示し、楕円曲線加算部 226を用いて計算す ることを示している。例えば、 ECA (A, B)は、楕円曲線上の点 A及び点 Bに対して算 出された加算の演算結果を示し、 ECD (A) =A+Bである。テーブル生成部 225は 、楕円曲線加算部 226に対して、楕円曲線上の点 A及び点 B並びに加算の指示を
出力し、楕円曲線加算部 226から加算の演算結果を受け取る。
[0079] 次に、テーブル生成部 225は、 P—iをテーブル格納部 228に格納し (ステップ S 14 6)、ステップ S 143へ戻って処理を繰り返す。
上記の処理より、 P_i= (2 X 1- 1) * Cとなっていることがわ力る。
sw= 3、 4及び 5の場合において、テーブル生成部 225により生成されるテーブル { P— i}の一例を、それぞれ、図 7、図 8及び図 9に示す。
[0080] sw= 3の場合には、図 7に示すように、テーブル 311 {P_i} = {3C}である。また、 s w=4の場合には、図 8に示すように、テーブル 312{P— i} = {3C、 5C、 7C}である。 さらに、 sw= 5の場合には、図 9に示すように、テーブル 313{P— i} = {3C、 5C、 7C 、 9C、 11C、 13C、 15C}である。
(5-8)スカラ倍演算部 229
スカラ倍演算部 229は、分割情報格納部 223に格納されている整数列 {w—i}とテ 一ブル格納部 228に格納されているテーブル {P—i}を用いて、以下に示すようにし て、べき倍係数 kに対して、 k倍した点 k * Cを計算する。
[0081] スカラ倍演算部 229は、図 18に示すように、取得部 241、選択部 242、繰返制御部
243、 Window演算部 251、 252、 253、 254、 255、 256、 257、 258、初期演算部
244、レジスタ部 245及び演算値出力部 246から構成されて 、る。
スカラ倍演算部 229による演算の手順にっ 、て、図 10〜図 11に示すフローチヤ一 トを用いて説明する。
[0082] なお、下記の説明において、 ECAは、楕円曲線加算部 226による加算である。スカ ラ倍演算部 229は、加算を行う際に、楕円曲線加算部 226に対して、楕円曲線上の 2点及び加算の指示を出力し、楕円曲線加算部 226から加算の演算結果を受け取る 。また、 ECDは、楕円曲線 2倍算部 227による 2倍算である。スカラ倍演算部 229は、 2倍算を行う際に、楕円曲線 2倍算部 227に対して、楕円曲線上の 1点及び 2倍算の 指示を出力し、楕円曲線 2倍算部 227から 2倍算の演算結果を受け取る。
[0083] また、下記にお!、ては、一例として Windowの幅が「3ビット」であるものとして、つま り、 sw= 3であるとして、説明している。
スカラ倍演算部 229の初期演算部 244は、 c^b + Ιを算出する (ステップ S151)。
ここで、 cは、処理回数を計数するカウンタ変数であり、レジスタ部 245が有するレジス タにより構成されている。 bは、上述したように、「(lenZsw以上の最も小さい整数)―
1」である。レジスタ部 245は、また、後述する変数 D及び変数 Rをそれぞれ構成する
2個のレジスタを有して!/、る。
[0084] 次に、スカラ倍演算部 229の初期演算部 244は、 w— c = 0である力否かを判定す る。 w— c = 0である場合 (ステップ S152)、 D ECD (C) , D ECD (D) , D^ECD
(D) , D ECA(R, C) , c^c— 1を演算する(ステップ S153)。
次に、取得部 241は、 P— (w— c)を取得し、スカラ倍演算部 229の初期演算部 24
4は、 R P— (w— c)を演算し (ステップ S154)、繰返制御部 243は、 c c— 1を演 算する(ステップ S 155)。
[0085] 次に、スカラ倍演算部 229の繰返制御部 243は、 cく 0であるか否かを判定し、 c<
0である場合は (ステップ S156)、演算値出力部 246は、 Rを出力部 231へ出力し (ス テツプ S158)、演算処理を終了する。
c≥0である場合は(ステップ S 156)、取得部 241は、 P— (w— c)を取得し、スカラ 倍演算部 229の選択部 242は、 w—cの値に応じて (ステップ S 157)、以下の処理を 行う。
[0086] w— c=— 3の場合(ステップ3157)、選択部 242は、 Window演算部 251を選択 し、 Window演算部 251は、 R ECD (R) , R^ECD (R) , R^ECD (R) , R EC
A (R, —P— 2)を演算する(ステップ SI 61)。
w— c =— 2の場合 (ステップ S157)、選択部 242は、 Window演算部 252を選択 し、 Window演算部 252は、 R ECD (R) , R^ECD (R) , R ECA (R, — P— 1) ,
R^ECD (R)を演算する(ステップ S 162)。
[0087] w_c= 1の場合 (ステップ S157)、選択部 242は、 Window演算部 253を選択 し、 Window演算部 253は、 R^ECD (R) , R^ECD (R) , R^ECD (R) , R EC
D (R, P— 1)を演算する(ステップ S163)。
w_c = 0の場合 (ステップ SI 57)、選択部 242は、 Window演算部 254を選択し、
Window演算部 254は、 R^ECD (R) , R^ECD (R) , R^ECD (R) , D^ECA (R
, P—l)を演算する(ステップ S 164)。
[0088] w— c= 1の場合 (ステップ S157)、選択部 242は、 Window演算部 255を選択し、 Window演算部 255は、 R ECD (R) , R^ECD (R) , R^ECD (R) , R ECA(R , P—l)を演算する(ステップ S 165)。
w—c = 2の場合 (ステップ SI 57)、選択部 242は、 Window演算部 256を選択し、 Window演算部 256は、 R ECD (R) , R^ECD (R) , R ECA(R, P— 1) , R^E CD (R)を演算する(ステップ S 166)。
[0089] w—c = 3の場合 (ステップ SI 57)、選択部 242は、 Window演算部 257を選択し、 Window演算部 257は、 R ECD (R) , R^ECD (R) , R^ECD (R) , R ECA(R , P— 2)を演算する(ステップ SI 67)。
w— c=4の場合 (ステップ S157)、選択部 242は、 Window演算部 258を選択し、 Window演算部 258は、 R ECD (R) , R ECA(R, P—l) , R ECD (R) , R^E CD (R)を演算する(ステップ S 168)。
[0090] 次に、ステップ SI 55へ戻って処理を繰り返す。
(ステップ S161〜S168における各演算について)
ここで、図 11のステップ S161〜S168における各演算の意味について、図 12に示 す演算変換表 320を用いて説明する。
ここで、 w— cの値に応じて、なされる複数の演算を、便宜上、 Window演算と呼ぶ こととする。
[0091] 例えば、ステップ S164において、なされる R ECD (R) , R^ECD (R) , R^ECD
(R)及び D ECA (R, P—l)が、 1個の Window演算であり、ステップ S165におい て、なされる R^ECD (R) , R^ECD (R) , R ECD (R)及び R ECA (R, P—l) 1S 1個の Window演算である。
また、 Window演算に含まれる EC A及び ECDを、便宜上、基本演算と呼ぶ。
[0092] 演算変換表 320は、一例として Windowの幅が「3ビット」である場合にぉ 、て、つま り、 sw= 3である場合において、取り得る w— cの値毎に、当該 w— cの値と、これに対 応する従来の Window演算と、これに対応するスカラ倍演算部 229による Window 演算(本発明に関連する Window演算)と、スカラ倍演算部 229による Window演算 に含まれる基本演算の演算順序を示す基本演算順序と、 Window演算に含まれる
基本演算の個数を示す基本演算回数との関係を示している。
[0093] ここで、一例として Windowの幅は「3ビット」であるので、 w— cは、 8個の値「0」、「1 」、「2」、「3」、「4」、「一 3」、「一 2」及び「一 1」のいずれかをとる。
次に、 w—cが各値をとる場合について、従来の Window演算、スカラ倍演算部 22 9による Window演算、基本演算順序及び基本演算回数について説明する。
[0094] (a)w_c = 0の場合
w—c = 0に対する従来の Window演算は、「R^23 R」である。「R 23 R」は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 3ビット)だけ、上位にシフトすることを 示している。
一方、 w—c = 0に対するスカラ倍演算部 229による Window演算は、「R 23R」及 び「D R+C」である。ここで、「R 23 R」については、上述した通りである。また、「 D R+C」は、ダミーの加算であり、 w—c = 0の場合における Window演算に含ま れる基本演算の種類とその数と、他の場合における(つまり、 w— c≠0の場合におけ る) Window演算基本に含まれる基本演算の種類とその数とを一致させるためのもの である。
[0095] ここで、「R 23R」は、スカラ倍演算部 229において、 R^2 XR R^2 XR R 2
XR、により、演算される。
これは、 23 R= 2 X (2 X (2 XR) )であることによる。
従って、 w—c = 0に対するスカラ倍演算部 229による Window演算では、 2倍算、 2 倍算、 2倍算、ダミーの加算の順序で、複数の基本演算が行われる。(ステップ S164 参照)
このように、 w_c = 0に対するスカラ倍演算部 229による Window演算に含まれる 基本演算の個数は、「4」である。
[0096] (b)w_c = lの場合
w—c= lに対する従来の Window演算は、「R^23 R+C」である。「R^23 R+C」 は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 3ビット)だけ、上位にシフト し、その後、変数 Rに Cを加算することを示している。
また、 w c = lに対するスカラ倍演算部 229による Window演算は、「R^23 R+C
」である。
[0097] このように、 w—c=lに対する従来の Window演算と、スカラ倍演算部 229による Window演算とは、同一である。
ここで、「R 23R+C」は、スカラ倍演算部 229において、 R^2XR、 R^2XR、 R 2XR、 R^R+Cにより、演算される。(ステップ S165参照)
従って、 w—c=lに対するスカラ倍演算部 229による Window演算では、 2倍算、 2 倍算、 2倍算、加算の順序で、複数の基本演算が行われる。
[0098] このように、 w—c=lに対するスカラ倍演算部 229による Window演算に含まれる 基本演算の個数は、「4」である。
(c) w_c = 2の場合
w—c = 2に対する従来の Window演算は、「R^23R+2C」である。「R^23R+2 C」は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 3ビット)だけ、上位にシ フトし、その後、変数 Rに 2Cを加算することを示している。
[0099] 一方、 w—c = 2に対するスカラ倍演算部 229による Window演算は、「R 2(22R
+ C)」である。
2(22R+C) =23R+2Cであることにより、 w—c = 2に対する従来の Window演算 による結果と、スカラ倍演算部 229による Window演算による結果とは、同一であるこ とが分かる。
[0100] ここで、 ¾ 2(221^+ 」は、スカラ倍演算部229にぉぃて、1^ 2 1^ 2 1^ 、 R^R+C、 R^2XRにより、演算される。(ステップ S166参照)
これは、 2(22R+C) =2X (2X (2XR) +C)であることによる。
従って、 w—c = 2に対するスカラ倍演算部 229による Window演算では、 2倍算、 2 倍算、加算、 2倍算の順序で、複数の基本演算が行われる。
[0101] ここで、前記加算は、点 Cに w— cZ^を乗じて得られる点の加算である。
このように、 w_c = 2に対するスカラ倍演算部 229による Window演算に含まれる 基本演算の個数は、「4」である。
(d) w_c = 3の場合
w c = 3に対する従来の Window演算は、「R^23R+3C」である。「R^23R+3
C」は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 3ビット)だけ、上位にシ フトし、その後、変数 Rに 3Cを加算することを示している。
[0102] また、 w—c = 3に対するスカラ倍演算部 229による Window演算は、「R^23R+3 C」である。
このように、 w—c = 3に対する従来の Window演算と、スカラ倍演算部 229による Window演算とは、同一である。
ここで、「R^23 R+ 3CJは、スカラ倍演算部 229にお!/、て、 R 2 X R、 R 2 X R、 R^2XR、R^R+3C、により演算される。(ステップ S167参照)
これは、 23R+3C = 2X (2X (2XR)) +3Cであることによる。
[0103] 従って、 w—c = 3に対するスカラ倍演算部 229による Window演算では、 2倍算、 2 倍算、 2倍算、加算の順序で、複数の基本演算が行われる。
このように、 w_c = 3に対するスカラ倍演算部 229による Window演算に含まれる 基本演算の個数は、「4」である。
(e)w_c = 4の場合
w—c =4に対する従来の Window演算は、「R^23R+4C」である。「R^23R+4 C」は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 3ビット)だけ、上位にシ フトし、その後、変数 Rに 4Cを加算することを示している。
[0104] 一方、 w—c=4に対するスカラ倍演算部 229による Window演算は、「R^22 (2R
+ C)」である。
22 (2R+C) =23R+4Cであることにより、 w—c =4に対する従来の Window演算 による結果と、スカラ倍演算部 229による Window演算による結果とは、同一であるこ とが分かる。
[0105] ここで、「R 22 (2R+C)」は、スカラ倍演算部 229において、 R^2XR、 R R+ C、 R^2XR、 R^2XRにより、演算される。(ステップ S168参照)
これは、 22 (2R+C)=2X2X ((2XR)+C))であることによる。
従って、 w—c=4に対するスカラ倍演算部 229による Window演算では、 2倍算、 加算、 2倍算、 2倍算の順序で、複数の基本演算が行われる。
[0106] ここで、前記加算は、点 Cに w— cZ^を乗じて得られる点の加算である。
このように、 w_c = 4に対するスカラ倍演算部 229による Window演算に含まれる 基本演算の個数は、「4」である。
(f) w_c=— 3の場合
w—c=— 3に対する従来の Window演算は、「R^23 R— 3C」である。「R^23 R 3C」は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 3ビット)だけ、上位に シフトし、その後、変数 Rに— 3Cを加算する(つまり、変数 Rから 3Cを減算する)ことを 示している。
[0107] また、 w—c=— 3に対するスカラ倍演算部 229による Window演算は、「R^23 R
+ 3C」である。
このように、 w—c=— 3に対する従来の Window演算と、スカラ倍演算部 229によ る Window演算とは、同一である。
ここで、「R^23 R— 3CJは、スカラ倍演算部 229にお!/、て、 R 2 X R R 2 X R R^2 XR R^R+ (— 3C)、により演算される。(ステップ S161参照)
これは、 23 R— 3C = 2 X (2 X (2 XR) ) + (— 3C)であることによる。
[0108] 従って、 w—c =— 3に対するスカラ倍演算部 229による Window演算では、 2倍算
2倍算、 2倍算、加算 (ここでは減算)の順序で、複数の基本演算が行われる。
このように、 w—c =— 3に対するスカラ倍演算部 229による Window演算に含まれ る基本演算の個数は、「4」である。
(g) w— c=— 2の場合
w—c=— 2に対する従来の Window演算は、「R^23 R— 2C」である。「R^23 R 2C」は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 3ビット)だけ、上位に シフトし、その後、変数 Rに— 2Cを加算する(つまり、変数 Rから 2Cを減算する)ことを 示している。
[0109] 一方、 w—c=— 2に対するスカラ倍演算部 229による Window演算は、「R 2 (22 R—C)」である。
2 (22R-C) = 23R—2Cであることにより、 w—c=— 2に対する従来の Window演 算による結果と、スカラ倍演算部 229による Window演算による結果とは、同一であ ることが分力ゝる。
[0110] ここで、 ¾ 2(221^— 」は、スカラ倍演算部229にぉぃて、1^ 2 1^ 2 1^ 、 R R+ (— C)、 R 2XRにより、演算される。(ステップ S162参照)
これは、 2(22R— C) =2X (2X (2XR) + (— C))であることによる。
従って、 w—c=— 2に対するスカラ倍演算部 229による Window演算では、 2倍算 、 2倍算、加算 (ここでは減算)、 2倍算の順序で、複数の基本演算が行われる。
[0111] ここで、前記減算は、点 こ I w— c/2t Iを乗じて得られる点の減算である。
このように、 w—c=— 2に対するスカラ倍演算部 229による Window演算に含まれ る基本演算の個数は、「4」である。
(h)w_c=— lの場合
w—c=— lに対する従来の Window演算は、「R^23R— C」である。「R^23R— C」は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 3ビット)だけ、上位にシ フトし、その後、変数 Rに— Cを加算する(つまり、変数 Rから Cを減算する)ことを示し ている。
[0112] また、 w—c=— lに対するスカラ倍演算部 229による Window演算は、「R^23R
C」である。
このように、 w—c=— 1に対する従来の Window演算と、スカラ倍演算部 229によ る Window演算とは、同一である。
ここで、「R 23R—C」は、スカラ倍演算部 229において、 R^2XR、 R^2XR、 R 2XRゝ R^R+(— C)、により演算される。(ステップ S163参照)
これは、 23R— 3C = 2X (2X (2XR)) + (— C)であることによる。
[0113] 従って、 w— c=— 1に対するスカラ倍演算部 229による Window演算では、 2倍算 、 2倍算、 2倍算、加算 (ここでは、減算)の順序で、複数の基本演算が行われる。 このように、 w_c =— 1に対するスカラ倍演算部 229による Window演算に含まれ る基本演算の個数は、「4」である。
1.4 楕円曲線演算部 208の動作
楕円曲線演算部 208の動作について、図 13に示すフローチャートを用いて説明す る。
[0114] 入力部 230は、暗号処理部 202からべき倍係数 kを受け取り、受け取つたべき倍係
数 kをべき倍係数格納部 221に書き込み (ステップ S121)、暗号処理部 202から被 べき倍点 Cを受け取り、受け取った被べき倍点 Cを被演算値格納部 224に書き込む( ステップ S 122)。
次に、分割情報生成部 222は、べき倍係数 kから分割情報である整数列 {w_i}を 生成し、生成した整数列 {w_i}を分割情報格納部 223に格納する (ステップ S 123)
[0115] 次に、テーブル生成部 225は、被べき倍点 Cを用いてテーブル {P—i}を生成し、テ 一ブル { P_i}をテーブル格納部 228に格納する(ステップ S 124)。
次に、スカラ倍演算部 229は、分割情報格納部 223に格納されている整数列 {w— i}とテーブル格納部 228に格納されて 、るテーブル {P_i}とを使用して、べき倍点 k * Cを計算する(ステップ S 125)。
[0116] 次に、出力部 231は、スカラ倍演算部 229からべき倍点 k* Cを受け取り、受け取つ たべき倍点 k * Cを暗号処理部 202へ出力する(ステップ S 126)。
1. 5 ICカード 100の構成
ICカード 100は、図 1に示すように、秘密鍵記憶部 101、復号処理部 102、通信部 103、制御部 104、情報記憶部 105及び楕円曲線演算部 108から構成されている。
[0117] ICカード 100は、具体的には、マイクロプロセッサ、 ROM, RAMなどから構成され るコンピュータシステムである。前記 RAMには、コンピュータプログラムが記憶されて いる。前記マイクロプロセッサ力 前記コンピュータプログラムに従って動作することに より、 ICカード 100は、その一部の機能を達成する。
(1)情報記憶部 105及び秘密鍵記憶部 101
情報記憶部 105は、素数 p、楕円曲線 E (Fp)の係数及びベースポイント Bを記憶し ている。また、生成された復号ポイント Pm'を記憶するための領域を備えている。
[0118] 秘密鍵記憶部 101は、秘密鍵 ksを記憶している。
(2)通信部 103
通信部 103は、ポイント発行装置 200から第 1暗号文 si及び第 2暗号文 s2を受信 する。第 1暗号文 si及び第 2暗号文 s2を受信すると、制御部 104に対して、受信した 旨を制御部 104に対して通知する。また、受信した第 1暗号文 si及び第 2暗号文 s2
を復号処理部 102へ出力する。
[0119] (3)制御部 104
制御部 104は、通信部 103から第 1暗号文 si及び第 2暗号文 s2を受信した旨の通 知を受け取る。前記通知を受け取ると、復号処理部 102に対して、第 1暗号文 si及 び第 2暗号文 s2を復号して復号ポイントを生成することを示す指示を出力する。
(4)復号処理部 102
復号処理部 102は、制御部 104から、第 1暗号文 si及び第 2暗号文 s2を復号して 復号ポイントを生成することを示す指示を受け取る。また、通信部 103から第 1暗号文 si及び第 2暗号文 s2を受け取る。
[0120] 前記指示を受け取ると、復号処理部 102は、秘密鍵記憶部 101から秘密鍵 ksを読 み出し、次に、受け取った第 1暗号文 siを被べき倍点 kとして、楕円曲線演算部 108 へ出力し、読み出した秘密鍵 ksをべき倍係数 Cとして、楕円曲線演算部 108へ出力 する。次に、楕円曲線演算部 108から演算結果 ks * siを受け取り、復号ポイント Pm ,=第 2暗号文 s2 xor (演算結果 ks * siの x座標値)を計算する。
[0121] ここで、
Pm,= s2 xor (1^ * 51の 座標値)
= (Pm xor 0:* 1¾)の 座標値))
xor (!^ 水 の 座標値)
=Pm 01" (1:'1^ * 8の 座標値) xor '1^ * 8の 座標値)
=Pm
従って、復号ポイント Pm'は、ポイント Pmに一致することが分かる。
[0122] 次に、復号処理部 102は、生成した復号ポイント Pm'を情報記憶部 105へ書き込 む。
(5)楕円曲線演算部 108
楕円曲線演算部 108は、ポイント発行装置 200が有する楕円曲線演算部 208と同 一の構成を有して 、るので、詳細な説明を省略する。
[0123] 楕円曲線演算部 108は、復号処理部 102から、被べき倍点 k及びべき倍係数 Cを 受け取り、べき倍点 k * Cを算出し、算出したべき倍点 k * Cを復号処理部 102へ出
力する。
1. 6 ポイント発行システム 10の動作
ポイント発行システム 10の動作について、図 14に示すフローチャートを用いて説明 する。
[0124] (1)秘密鍵 ks及び公開鍵 Kpの生成の動作
以下に示す動作は、ポイント発行装置 200がポイントを発行する前に行われる。 ICカード 100の復号処理部 102は、秘密鍵 ksを生成し、生成した秘密鍵 ksを秘密 鍵記憶部 101へ書き込む (ステップ S101)。次に、復号処理部 102は、情報記憶部 105からベースポイント Bを読み出し、生成した前記秘密鍵 ksと読み出したベースポ イント Bに楕円べき倍演算を施して、公開鍵 Kp=ks * Bを生成する。この際、楕円べ き倍演算は、楕円曲線演算部 108により行われる (ステップ S102)。次に、復号処理 部 102は、生成した公開鍵 Kpを通信部 103を介して、ポイント発行装置 200へ送信 する(ステップ S 103)。
[0125] ポイント発行装置 200の暗号処理部 202は、 ICカード 100から通信部 203を介して 、公開鍵 Kpを受信し、受信した公開鍵 Kpを公開鍵記憶部 201へ書き込む (ステップ S104)。
ここでは、 ICカード 100が秘密鍵 ksを生成し、生成した秘密鍵 ksを基にして公開鍵 Kpを生成し、生成した公開鍵 Kpをポイント発行装置 200へ送信するとして 、るが、 次に示すようにしてもよい。
[0126] つまり、ポイント発行システム 10は、さらに、鍵管理装置 (公開鍵生成装置)を含む。
ICカード 100は、秘密鍵 ksを生成し、生成した秘密鍵 ksを内部に記憶する。
鍵管理装置は、 ICカード 100から秘密鍵 ksを安全に取得し、取得した秘密鍵 ksを 記憶する秘密鍵記憶部と、ベースポイント Bを記憶して 、るベースポイント記憶部と、 秘密鍵記憶部から秘密鍵 ksを読み出し、ベースポイント記憶部からベースポイント B を読み出し、秘密鍵 ksとベースポイント Bとを用いて、公開鍵 Kp = ks * Bを生成する 楕円曲線演算部と、生成した公開鍵 Kpをポイント発行装置 200へ送信する送信部と を備える。ここで、鍵管理装置が有する楕円曲線演算部は、 ICカード 100が有する 楕円曲線演算部と同一である。
[0127] (2)ポイントの発行の動作
ポイント発行装置 200の制御部 204は、ポイント Pmを生成し、生成したポイント Pm を情報記憶部 205に書き込み、次に、暗号処理部 202に対して、ポイント Pmを暗号 化して ICカード 100へ送信することを示す指示を出力する (ステップ S111)。
[0128] 暗号処理部 202は、制御部 204から、ポイント Pmを暗号化して ICカード 100へ送 信することを示す指示を受け取ると、乱数 rを生成し (ステップ S 112)、ベースポイント Bを情報記憶部 205から読み出し、生成した乱数 rをべき倍係数として、楕円曲線演 算部 208へ出力し、読み出したベースポイント Bを被べき倍点として、楕円曲線演算 部 208へ出力し、楕円曲線演算部 208から、演算結果としてべき倍点 r * Bを受け取 り、第 1暗号文 s 1 =べき倍点 r * Bとする (ステップ S 113)。
[0129] 次に、暗号処理部 202は、公開鍵記憶部 201から公開鍵 Kpを読み出し、生成した 乱数 rをべき倍係数として、楕円曲線演算部 208へ出力し、読み出した公開鍵 Kpを 被べき倍点として、楕円曲線演算部 208へ出力し、楕円曲線演算部 208から、演算 結果としてべき倍点 r *Kpを受け取り、暗号処理部 202は、情報記憶部 205からボイ ント Pmを読み出し、読み出したポイント Pmと受け取つたべき倍点 r *Kpとを加算して 、第 2暗号文 s2 =ポイント Pm xor (べき倍点 r * Kpの x座標値)を生成する(ステツ プ S114)。
[0130] 次に、暗号処理部 202は、生成した第 1暗号文 si及び第 2暗号文 s2を通信部 203 を介して、 ICカード 100へ送信する(ステップ S115)。
復号処理部 102は、ポイント発行装置 200から通信部 103を介して、第 1暗号文 si 及び第 2暗号文 s2を受け取る (ステップ S 115)。
次に、復号処理部 102は、秘密鍵記憶部 101から秘密鍵 ksを読み出し、受け取つ た第 1暗号文 siを被べき倍点として、楕円曲線演算部 108へ出力し、読み出した秘 密鍵 ksをべき倍係数として、楕円曲線演算部 108へ出力する。楕円曲線演算部 108 は、 ks * siを演算し、復号処理部 102は、楕円曲線演算部 108から演算結果 ks * s 1を受け取り、復号ポイント Pm' =第 2暗号文 s2 xor (演算結果 ks * siの x座標値) を計算する (ステップ S 116)。
[0131] 次に、復号処理部 102は、計算して得られた復号ポイント Pm'を情報記憶部 105
へ書き込む(ステップ S 117)。
2.実施の形態 2
本発明に係る別の実施の形態としてのデジタル署名システム(図示して ヽな ヽ)に ついて説明する。
[0132] デジタル署名システムは、ユーザ A装置 (署名生成装置とも呼ぶ)、ユーザ B装置( 署名検証装置とも呼ぶ)及び管理センタ装置 (管理装置とも呼ぶ)から構成されてお り(それぞれの装置を図示していない)、ユーザ A装置、ユーザ B装置及び管理セン タ装置は、それぞれ、インターネットを介して接続されている。
ユーザ A装置、ユーザ B装置及び管理センタ装置は、それぞれ、具体的には、マイ クロプロセッサ、 ROM、 RAM、ハードディスクユニット、ディスプレイユニット、キーボ ード、マウスなど力も構成されるコンピュータシステムである。前記 RAM又は前記ハ ードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプ 口セッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その 一部の機能を達成する。
[0133] ユーザ A装置、ユーザ B装置及び管理センタ装置は、それぞれ、素数 pを法とする 剰余体 F上で定義された楕円曲線 E上の離散対数問題を根拠として、楕円曲線 E上 の点 Cに、素数 p未満の正整数である係数 kを乗じて点 k* Cを算出する楕円曲線演 算を用いて、情報を確実に扱う情報セキュリティ装置である。
ここで、情報を確実に扱うとは、例えば、情報を二者間で通信する場合において、 送信者が送信した情報が、改変されることなぐ受信者に届くようにすることを言う。
[0134] ユーザ A装置は、デジタル署名データとともにメッセージをユーザ B装置へ送信し、 ユーザ B装置は、デジタル署名データとともにメッセージを受け取り、受け取ったデジ タル署名データにより、署名検証を行う。
ここで、素数 pを法とする剰余体 Fp上で定義された楕円曲線 E (Fp)を想定し、 Eの 位数を qとする。また、 Bは、楕円曲線 E上のベースポイントである。
[0135] ユーザ A装置は、秘密鍵 xAを生成する秘密鍵生成部と、生成した秘密鍵 xAを安 全に管理センタ装置へ送信する秘密鍵送信部と、送信すべきメッセージ mを記憶し ているメッセージ記憶部と、素数 p、楕円曲線 Eの係数、ベースポイント Bを管理センタ
装置力も受信するパラメタ受信部と、受信した素数 p、楕円曲線 Eの係数、ベースボイ ント Bを記憶するパラメタ記憶部と、乱数 rを生成する乱数生成部と、第 1署名データ R l = (rx, ry) =r * Bを生成し、 s Xr=m+rx XXA (mod q) から第 2署名データ sを計算する署名生成部と、得られた署名データ (Rl、 s)とメッセージ mとをユーザ B 装置へ送信する送信部と、署名生成部の指示により、楕円曲線上の点の楕円べき倍 演算を行う楕円曲線演算部とを備える。
[0136] 管理センタ装置は、ユーザ A装置から、秘密鍵 xAを安全に取得する取得部と、素 数 p、楕円曲線 Eの係数、ベースポイント Bを記憶しているパラメタ記憶部と、取得した 秘密鍵 xAを用いて、公開鍵 YA=xA* Gを算出する公開鍵算出部と、素数 p、楕円 曲線 Eの係数及びベースポイント Gを公開する公開部と、インターネットを介して、公 開鍵 YAをユーザ B装置へ送信する送信部と、公開鍵算出部の指示により、楕円曲 線上の点の楕円べき倍演算を行う楕円曲線演算部とを備える。
[0137] ユーザ B装置は、管理センタ装置から、素数 p、楕円曲線 Eの係数及びベースボイ ント Gを受信するパラメタ受信部と、取得した素数 p、楕円曲線 Eの係数及びベースポ イント Gを記憶するパラメタ記憶部と、管理センタ装置から、公開鍵 YAを受信する公 開鍵受信部と、受信した公開鍵 YAを記憶する公開鍵記憶部と、ユーザ A装置から 署名データ (Rl、 S)を受信する署名データ受信部と、ユーザ A装置からメッセージ m を受信するメッセージ受信部と、ユーザ B装置は、 3 *尺1及び1!1* 0+ *¥八を計 算し、 S *Rl =m * G+rx*YAが成立するかどうか判定し、成立する場合には、検 証の成功を示す成功情報を出力し、検証に失敗した場合に、検証の失敗を示す失 敗情報を出力する検証部と、検証部の指示により、楕円曲線上の点の楕円べき倍演 算を行う楕円曲線演算部とを備える。
[0138] ユーザ A装置、ユーザ B装置及び管理センタ装置がそれぞれ、有する楕円曲線演 算部は、実施の形態 1に示す楕円曲線演算部 208と同一である。
以下において、デジタル署名システムの動作について図 15に示すフローチャート を用いて説明する。
(秘密鍵 xA及び公開鍵 YAの生成)
ユーザ A装置は、秘密鍵 xAを生成する (ステップ S201)。
[0139] 管理センタ装置は、ユーザ A装置から、秘密鍵 xAを安全に取得し、取得した秘密 鍵 xAを用いて、公開鍵 YA=xA * Bを算出する (ステップ S 202)。
次に、管理センタ装置は、素数 p、楕円曲線 Eの係数及びベースポイント Bを公開し
(ステップ S204、ステップ S207)、インターネットを介して、公開鍵 YAをユーザ B装 置へ送信する (ステップ S 205)。
[0140] ユーザ B装置は、素数 p、楕円曲線 Eの係数及びベースポイント Bを取得し (ステツ プ S204)、公開鍵 YAを受信し (ステップ S205)、受信した公開鍵 YAを内部に記憶 する(ステップ S 206)。
ユーザ A装置も、素数 p、楕円曲線 Eの係数及びベースポイント Gを取得する (ステ ップ S 207)。
[0141] (デジタル署名データの生成と署名検証)
ユーザ A装置は、乱数 rを生成し (ステップ S211)、第 1署名データ Rl = (rx, ry) =r * Bを生成し (ステップ S 212)、
S Xr=m+rx X xA (mod q) 力 第 2署名データ sを計算する(ステップ S213) 。ここで、 mは、ユーザ A装置からユーザ B装置へ送信するメッセージである。
[0142] 次に、ユーザ A装置は、得られた署名データ (Rl、 s)とメッセージ mとをユーザ B装 置へ送信する (ステップ S 214)。
ユーザ B装置は、ユーザ A装置から署名データ (Rl、 s)とメッセージ mとを受信する (ステップ S214)。
次に、ユーザ B装置は、 s *Rl及び m* G+rx *YAを計算し (ステップ S215)、 S * Rl =m * G+rx * YAが成立するかどうか判定し (ステップ S216)、成立する場合 には (ステップ S216で YES)、検証に成功し、ユーザ A装置の身元の確認ができた こととなる。成立しない場合には (ステップ S216で NO)、検証に失敗し、ユーザ A装 置の身元が確認できな力つたこととなる。
[0143] 5.実施の形態 3
本発明に係るまた別の実施の形態としての鍵共有システム(図示して ヽな 、)につ いて説明する。
鍵共有システムは、ユーザ A装置 (鍵利用装置とも呼ぶ)、ユーザ B装置 (鍵利用装
置とも呼ぶ)及び管理センタ装置 (管理装置とも呼ぶ)から構成されており(それぞれ の装置を図示していない)、ユーザ A装置、ユーザ B装置及び管理センタ装置は、そ れぞれ、インターネットを介して接続されている。ユーザ A装置、ユーザ B装置及び管 理センタ装置は、それぞれ、具体的には、マイクロプロセッサ、 ROM、 RAMなどを含 んで構成されるコンピュータシステムである。マイクロプロセッサが、コンピュータプロ グラムに従って動作することにより、各装置は、その機能を達成する。
[0144] ユーザ A装置及びユーザ B装置は、素数 pを法とする剰余体 F上で定義された楕円 曲線 E上の離散対数問題を根拠として、楕円曲線 E上の点 Cに、素数 p未満の正整 数である係数 kを乗じて点 k* Cを算出する楕円曲線演算を用いて、情報を安全に扱 う情報セキュリティ装置である。
ここで、情報を安全に扱うとは、上述したように、例えば、情報を二者間で通信する 場合にお 、て、当該情報が第三者に知られな 、ようにすることを言う。
[0145] ユーザ A装置とユーザ B装置とは、以下に示すようにして、第三者に知られることな く、同一の共有鍵を取得する。
管理センタ装置は、楕円曲線 E (Fp)の係数及びベースポイント Bを選択する選択 部と、選択した楕円曲線 Eの係数、ベースポイント B及び素数 pを記憶しているパラメ タ記憶部と、素数 p、楕円曲線 E (Fp)及びベースポイント Gを公開する公開部とを備 えている。
[0146] ここで、素数 pを法とする剰余体 Fp上で定義された前記楕円曲線 Eを想定し、 Bは、 楕円曲線 E上のベースポイントである。
ユーザ A装置は、管理センタ装置から、素数 p、楕円曲線 Eの係数及びベースボイ ント Bを取得するパラメタ取得部と、乱数を用いて、秘密鍵 xAを設定する秘密鍵設定 部と、公開鍵 YA=xA* Bを算出する公開鍵算出部と、算出した公開鍵 YAをユー ザ B装置へ送信する送信する公開鍵送信部と、ユーザ B装置から、公開鍵 YBを受信 する公開鍵受信部と、共有鍵 xA*YB= (xAX xB) * Bを算出する共有鍵算出部と 、公開鍵算出部及び共有鍵算出部の指示により、楕円曲線上の点の楕円べき倍演 算を行う楕円曲線演算部とを備える。
[0147] ユーザ B装置もユーザ A装置と同様の構成を有して 、る。
ユーザ B装置は、管理センタ装置から、素数 p、楕円曲線 Eの係数及びベースボイ ント Bを取得するパラメタ取得部と、乱数を用いて、秘密鍵 xBを設定する秘密鍵設定 部と、公開鍵 YB = xB * Bを算出する公開鍵算出部と、算出した公開鍵 YBをユーザ A装置へ送信する送信する公開鍵送信部と、ユーザ A装置から、公開鍵 YAを受信 する公開鍵受信部と、共有鍵 xB *YA= (xB X xA) * Bを算出する共有鍵算出部と 、公開鍵算出部及び共有鍵算出部の指示により、楕円曲線上の点の楕円べき倍演 算を行う楕円曲線演算部とを備える。
[0148] ユーザ A装置及びユーザ B装置がそれぞれ有する楕円曲線演算部は、実施の形 態 1のポイント発行装置 200が有する楕円曲線演算部と同一である。
以下にお 、て、鍵共有システムの動作につ!、て図 16に示すフローチャートを用い て説明する。
管理センタ装置は、楕円曲線 Eの係数及びベースポイント Bを選択し (ステップ S31 1)、素数 P、楕円曲線 Eの係数及びベースポイント Bを公開する(ステップ S312)。
[0149] ユーザ A装置は、秘密鍵 xAを設定し (ステップ S301)、公開鍵 YA=xA* Bを算 出し (ステップ S302)、公開鍵 YAをユーザ B装置へ送信する (ステップ S303)。 一方、ユーザ B装置は、秘密鍵 xBを設定し (ステップ S321)、公開鍵 YB = xB * B を算出し (ステップ S322)、公開鍵 YBをユーザ A装置へ送信する (ステップ S323)。
[0150] ユーザ A装置は、共有鍵 xA *YB= (xAX xB) * Bを算出する(ステップ S304)。
一方、ユーザ B装置は、共有鍵 xB *YA= (xB X xA) * Bを算出する(ステップ S3 24)。
ここで、共有鍵 xB *YA= (xB X xA) * B
= (xAX xB) * B
=共有鍵 xA*YB
である。
[0151] こうして、ユーザ A装置とユーザ B装置とは、第三者に知られることなぐ同一の共有 鍵を取得することができる。
6.実施の形態 1の効果
実施の形態 1におけるポイント発行装置 200が有する楕円曲線演算部 208におい
て、楕円曲線加算部 226及び楕円曲線 2倍算部 227は、それぞれ同じ順序で同じ演 算を実行しているため(図 4〜図 5を参照)、電力波形を解析する攻撃者は、電力波 形力も楕円曲線加算及び楕円曲線 2倍算のどちらを実行しているかが区別できない
[0152] また、スカラ倍演算部 229では、カウンタ cに対する w—cの値によらず、楕円曲線 加算と楕円曲線 2倍算の演算回数の合計が 4回と同じであるため、べき倍係数の値 によらず、楕円曲線加算と楕円曲線 2倍算の演算回数の合計は同じになっている。し たがって、攻撃者が演算回数を知った場合においても、べき倍係数に関する情報が 攻撃者に漏れない。そのため、実施の形態 1は、単純電力解析攻撃に対して安全で ある。
[0153] また、 Windowの幅 sw= 3の場合、テーブル格納部 228のテーブルに格納される 点は、 P— 1 =Cを除いて、 P— 2 = 3 * Cのみの 1点である。従来の単純電力解析攻 撃対策方法では、テーブルに格納される点は、 P— 1 =Cを除いて、 P— 2, P— 3, P —4の 3点であり、本実施の形態 1では、従来方法より、テーブルサイズを 1Z3に削 減している。
[0154] 実施の形態 1では、 swビットの分割情報ごとに演算回数の合計を一定にしているが 、 1個のべき倍係数についての演算全体で演算回数の合計を一定になるようにしても よい。この場合、 1個のべき倍係数についての演算全体で演算回数を調整するため には、演算回数を計測しながら、演算処理を行う。この場合に比べて、実施の形態 1 では、 swビットごとに演算回数の合計を一定にしており、 1個のべき倍係数について の演算全体でも演算回数に注意する必要がなぐ制御が容易になるというさらなる効 果がある。
[0155] 上記の効果は、実施の形態 2及び 3についても同様である。
7.その他の変形例
上記に説明した各実施の形態は、本発明の実施の一例であり、本発明はこれらの 実施の形態に何ら限定されるものではなぐその主旨を逸脱しない範囲において種 々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる
[0156] (1)実施の形態 1において、テーブル生成部 225は、楕円曲線加算部 226及び楕 円曲線 2倍算部 227を使用して、楕円曲線加算及び楕円曲線 2倍算を計算して 、る 力 テーブル生成部 225が、楕円曲線加算部 226及び楕円曲線 2倍算部 227にお けるダミー演算を除去した通常の楕円曲線加算及び楕円曲線 2倍算を実行するとし てもよい。
(2)実施の形態では、 sw=3とした力 swを 2や 4以上の値としてもよい。このとき、 スカラ倍演算部 229において、 w—cの値に応じた window演算(図 10〜図 11のステ ップ S157、ステップ S161〜S168にネ目当)は、以下のようになる。
[0157] w—cの値に応じた window演算では、(sw+ 1)回の基本演算が行われる。
(i) w— cが 0以外の場合で、かつ、 w— cが 2"tで割り切れて、 2" (t+1)で割り切れ ないことを満たす非負整数 tが存在する場合、(sw+1)回の基本演算のうち、最初か ら(sw— +1)番目の基本演算を R^ECA(R, sgn(w_c) *P_((abs(w_c/2" t) + 1) /2) )とし、(sw+ 1)回の基本演算のうち、その他の sw回の基本演算を ECD(R)とする。
[0158] ここで、 sgn(w_c)は、 w_cの符号である。 w_c>0の場合、 sgn(w_c) = 1、 w — cく 0の場合、 sgn(w— c) =— 1である。
また、 abs(w— c)は w—cの絶対値である。
(ii) w_c = 0の場合は、 R^ECD(R)の基本演算を sw回行う、その後、 D^ECA( R,P— 1)を実行する。例えば、 sw=5, w— c=— 12の場合、 R ECD(R), R E CD (R) , R^ECD (R) , R^ECA (R, - P_2) , R^ECD (R) , R^ECD (R)とな る。
[0159] sw=2の場合は、 P— 1を除いて、テーブルに含まれる点は存在しないので、新た に点を計算してテーブルの要素を求める必要はない。このため、テーブル生成部 22 5による処理を含めてテーブル生成部 225及びテーブル格納部 228は、無くてもよい 。この場合は、テーブルサイズは、 P—1以外の点がないため、 0となり、テーブル削 減度合の効果が顕著となる。
[0160] (3) sw=3の場合の演算変換表 320を図 12に示している。ここでは、 sw=4の場合 の演算変換表 330を図 17に示す。
ここで、 Windowの幅は「4ビット」であるので、 w—cは、 16個の値「0」、「1」、「2」、「 3」、「4」、「5」、「6」、「7」、「8」、「一 7」、「一 6」、「一 5」「一 4」、「一 3」、「一 2」及び「 1」のいずれかをとる。
[0161] 次に、 w—cが各値をとる場合について、従来の Window演算、スカラ倍演算部 22 9による Window演算、基本演算順序及び基本演算回数について説明する。
(a) w_c = 0の場合
w—c = 0に対する従来の Window演算は、「R^24R」である。「R 24R」は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 4ビット)だけ、上位にシフトすることを 示している。
[0162] 一方、 w—c = 0に対するスカラ倍演算部 229による Window演算は、「R 24R」及 び「D R+C」である。ここで、「R 24R」については、上述した通りである。また、「 D R+C」は、ダミーの加算であり、 w—c = 0の場合における Window演算に含ま れる基本演算の種類とその数と、他の場合における(つまり、 w— c≠0の場合におけ る) Window演算基本に含まれる基本演算の種類とその数とを一致させるためのもの である。
[0163] ここで、「R 24R」は、スカラ倍演算部 229において、 R^2 XR、 R^2 XR、 R 2
XR、 R 2 XR、により、演算される。
これは、 24R= 2 X (2 X (2 X (2 XR) ) )であることによる。
従って、 w—c = 0に対するスカラ倍演算部 229による Window演算では、 2倍算、 2 倍算、 2倍算、 2倍算、ダミーの加算の順序で、複数の基本演算が行われる。
[0164] このように、 w—c = 0に対するスカラ倍演算部 229による Window演算に含まれる 基本演算の個数は、「5」である。
(b) w— c = l、 3、 5、 7、—7、—5、—3、— 1の場合
w— c= l、 3、 5、 7、—7、—5、—3、— 1の場合、それぞれ、従来の Window演算 は、「R 24R+C」、「R 24R+ 3C」、「R 24 R+5C R— 24R+ 7C」、「R 24R - 7C 」、「R 24R— 5C」、「R 24R— 3C」、「R 24R— 1C」である。
[0165] 「R^24R+C」は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 4ビット)だ け、上位にシフトし、その後、変数 Rに Cを加算することを示している。その他の演算
についても同様である。
また、 w一 c = l 3 5 7、 一 7、 一 5、 一 3、 一 1の場合におけるスカラ倍演算咅 229 による Window演算は、従来の Window演算と同一である。
[0166] この場合におけるスカラ倍演算部 229による各 Window演算では、 2倍算、 2倍算、 2倍算、 2倍算、加算の順序で、複数の基本演算が行われる。
このように、この場合におけるスカラ倍演算部 229による Window演算に含まれる基 本演算の個数は、「5」である。
(c)w— c = 2 4 6 8 —6 —4 —2の場合
w— c = 2 4 6 8 —6 —4 —2の場合、それぞれ、従来の Window演算は、「 R 24R+ 2C 「R^24R+4C 「R 24R+6C 「R 24R+8C 「R 24R— 6C 「R^24R—4C 「R 24R—2C」である。
[0167] 「R 24R+ 2C」は、変数 Rの値を、 Windowの幅の示すビット(ここでは、 4ビット) だけ、上位にシフトし、その後、変数 Rに 2Cを加算することを示している。その他の演 算についても同様である。
また、 w一 c = 2 4 6 8、 一 6、 一 4、 一 2の場合におけるスカラ倍演算咅 229によ る Window演算は、それぞれ、「R^2 (23 R+C)」、 「R 22 (22 R+C)」、 「R^2 (2 3 R+ 3C)」、 「R— 23 (2R+C)」、 「R 2 (23 R - 3C)」、 「R— 22 (22 R— C)」、 「R 2 (23 R—C)」である。これらの演算結果は、従来の Window演算による結果と、同一 である。
[0168] ここで、例えば、 w— c = 2の場合における「R 2 (23 R+C)」は、スカラ倍演算部 2 29において、 R 2 XR R 2 XR R 2 XR R R+C R 2 XRにより、演算さ れる。
従って、 w—c = 2に対するスカラ倍演算部 229による Window演算では、 2倍算、 2 倍算、 2倍算、加算、 2倍算の順序で、複数の基本演算が行われる。
[0169] このように、 w—c = 2に対するスカラ倍演算部 229による Window演算に含まれる 基本演算の個数は、「5」である。
w_c=4 6 8、 一 6、 一 4、 一 2の場合【こつ!ヽても、図 17【こ示す通りである。
(4)各実施の形態では、べき倍係数をすベて swビットの一定ビット列ごとに分割し
て、 swビットの分割情報を生成している力 これに限らない。ビット数が一定でなくて もよい。分割情報のビット数が一定でない場合、分割情報を用いたスカラ倍演算部の 演算処理も一定回数でなくてもよい。この場合は、分割情報ごとの演算処理の回数 は、分割情報のビット長に依存してもよいが、それ以外の分割情報のビット長以外の †青報には依存しない。
[0170] 分割情報のビット数力 ビット長である場合に、分割情報の値に対応する window 演算部は、(a+ 1)回の演算を順次行う。ここで、前記複数の演算のうち(a— + 1) 番目の演算は、楕円曲線 E上の前記加算であり、他の演算は、楕円曲線 E上の 2倍 算である。
また、分割情報のビット数カ¾ビット長である場合に (ここで、 a≠b)、分割情報の値 に対応する window演算部は、(b + 1)回の演算を順次行う。ここで、前記複数の演 算のうち(b— + 1)番目の演算は、楕円曲線 E上の前記加算であり、他の演算は、 楕円曲線 E上の 2倍算である。
[0171] (5)各実施の形態では、 w— c = 0の場合は、 sw回の R^ECD (R)の基本演算の 後、 D^ECA (R,P— 1)を実行している力 ダミーの演算処理は他の点との加算であ つてもよいし、楕円曲線 2倍算であってもよい。
(6)各実施の形態では、方程式は y" 2 = x" 3 + a X x + bの形をしたワイヤーシュトラ ス型の楕円曲線を使用しており、 Jacobian座標を使用しているが、これだけには限ら ない。例えば、他の座標(Projective座標)を使用してもよい。その場合においてもダミ 一演算を付加して、楕円曲線加算と楕円曲線 2倍算の区別をできなくしてもよい。ま た、楕円曲線 2倍算を楕円曲線加算に置き換えて演算可能な Hessian楕円(ヘッセ型 楕円)や Jacobian楕円(ヤコビ型楕円)を使用してもよい。その場合は、楕円曲線加算 及び楕円曲線 2倍算の内部の演算にダミー演算はなくてもよい。
[0172] (7)各実施の形態では、楕円曲線を使用してべき倍演算を実行しているが、超楕 円曲線またはその他の代数曲線のヤコビアン群のべき倍演算を実行してもよい。
(8)本発明は、各実施の形態の楕円曲線演算部を楕円 ElGamal暗号、 PSEC— KEMやその他の楕円曲線またはその他の代数曲線上の暗号方式に適用してもよい
例えば、暗号方式の暗号ィ匕アルゴリズムにおける秘密鍵をべき倍係数としたへぎ倍 演算に、各実施の形態の楕円曲線演算部を適用し、暗号方式の復号化アルゴリズム における秘密鍵をべき倍係数としたへぎ倍演算に、各実施の形態の楕円曲線演算 部を適用してもよい。
[0173] また、楕円 DSA署名方式、楕円 ElGamal署名方式、楕円 NR署名方式、楕円 MR 署名方式、楕円 PV署名方式、楕円 AO署名方式などの楕円曲線上の署名方式、も しくは、代数曲線上の署名方式に、各実施の形態の楕円曲線演算部を適用してもよ い。
上述したように、楕円曲線上の署名方式の署名生成アルゴリズムにおける乱数をべ き倍係数としたべき倍演算に楕円曲線演算部を適用してもよい。
[0174] 楕円 ElGamal暗号や楕円 DSA署名方式に関しては、非特許文献 3が詳しい。
(9)実施の形態 1のポイント発行システム 10では、利用者が商品を購入したりサー ビスの提供を受けた場合に、販売者やサービス提供者カゝら受け取る特典情報であり 、次に利用者が商品を購入したりサービスの提供を受ける際に、販売者やサービス 提供者への対価の支払いの一部又は全部として利用されるポイントを秘密通信の対 象とし、ポイント発行装置 200は、生成したポイントを暗号ィ匕し、暗号ィ匕ポイントを IC力 ード 100へ送信し、 ICカード 100は、暗号化ポイントを復号して復号ポイントを生成し 、生成した復号ポイントを記憶するようにしている。
[0175] しかし、秘密通信の対象は、上記のポイントには限定されない。
次に示すような金銭の決済システムに適用することもできる。
例えば、通貨の代わりに用いることができる電子マネーを秘密通信の対象とし、 IC カードは、電子マネーを記憶しており、利用者が、商品を購入する際に、 ICカードは 、商品の購入額に相当する電子マネーを暗号ィ匕して送信し、また、内部に記憶して V、る電子マネーから送信した分を減じる。ポイント発行装置 200に代えて同様の構成 を有するレジスタ装置は、暗号ィ匕電子マネーを受信し、受信した暗号化電子マネー を復号して電子マネーを再生し、記憶する。
[0176] また、上記の ICカードに代えて、美術館や博物館などの各種施設を利用のための I Cカードタイプの電子チケットが、上記のように、電子マネーに相当する情報を記憶し
ているとしてもよい。各種施設の入り口に設けられた入場管理装置は、各種施設の利 用料金に相当する額の電子マネーを要求し、前記電子チケットは、要求された額の 電子マネーを暗号化して送信し、入場管理装置は、暗号化電子マネーを受信し、受 信した暗号化電子マネーを復号して電子マネーを生成し、記憶するとしてもよ ヽ。
[0177] また、鉄道、ノ スなどの交通機関を利用する際に用いられる ICカードタイプの IC力 ード乗車券が、上記のように、電子マネーに相当する情報を記憶しているとしてもよ い。交通機関の駅の入り口に設けられた入場管理装置は、当該駅を識別する識別情 報を送信し、 ICカード乗車券は、前記識別情報を受信し、記憶する。交通機関の駅 の出口に設けられた出場管理装置は、前記識別情報を ICカード乗車券力も受信し、 受信した識別情報と当該出場管理装置が設けられた駅とを用いて、料金表により乗 車料金を算出し、算出した乗車料金に相当する額の電子マネーを要求し、 ICカード 乗車券は、要求された額の電子マネーを暗号ィ匕して送信し、出場管理装置は、暗号 化電子マネーを受信し、受信した暗号化電子マネーを復号して電子マネーを生成し 、,じ' I息 る。
[0178] 上記における暗号ィ匕及び復号ィ匕において、楕円曲線上の離散対数問題が安全性 の根拠として用いられ、楕円べき倍演算が行われる。この楕円べき倍演算を行う各装 置は、楕円曲線演算部 208と同一の楕円曲線演算部を備えている。
上記の各装置は、素数 pを法とする剰余体 F上で定義された楕円曲線 E上の離散 対数問題を根拠として、楕円曲線 E上の点 Cに、素数 p未満の正整数である係数 kを 乗じて点 k * Cを算出する楕円曲線演算を用いて、情報を安全に扱う情報セキユリテ ィ装置である。
[0179] (10)上記のような金銭の決済システムにおいて、送信される金銭の額、送信元、送 信先などについては、その正当性の証明が要求される場合がある。このような場合に ぉ 、て、実施の形態 2に示すデジタル署名や署名検証が適用される。
このようなデジタル署名や署名検証において、楕円曲線上の離散対数問題が安全 性の根拠として用いれ、楕円べき倍演算が行われる。この楕円べき倍演算を行う各 装置は、楕円曲線演算部 208と同一の楕円曲線演算部を備えている。
[0180] 上記の各装置は、素数 pを法とする剰余体 F上で定義された楕円曲線 E上の離散
対数問題を根拠として、楕円曲線 E上の点 Cに、素数 p未満の正整数である係数 kを 乗じて点 k * Cを算出する楕円曲線演算を用いて、情報を確実に扱う情報セキユリテ ィ装置である。
(11)秘密通信の対象は、上記のようなポイントや電子マネーなどには限定されな い。
[0181] 本発明は、コンテンツ暗号ィ匕装置とコンテンツ再生装置とから構成されるコンテンツ 配信システムにおいて適用され、例えば、映画、動画像、音声、音楽、小説、データ ベースなどのデジタル情報を秘密通信の対象としてもよい。これらのコンテンツは、コ ンテンッ供給者から利用者に対して、これらのコンテンツを記録して ヽる記録媒体を 販売したり、レンタルすることにより、提供される。また、デジタル放送やインターネット を介して、コンテンツ供給者から利用者に提供される。
[0182] コンテンツ供給者の有するコンテンツ暗号ィ匕装置は、デジタル著作物である映画を 暗号ィ匕して DVDに記録する。利用者の有するコンテンツ再生装置は、 DVDから暗 号化デジタル著作物を読み出し、復号して、映画を生成し、生成した映画を音声及 び映像として再生して、表示及び出力する。
上記における暗号ィ匕及び復号ィ匕において、楕円曲線上の離散対数問題が安全性 の根拠として用いられ、楕円べき倍演算が行われる。この楕円べき倍演算を行うコン テンッ暗号ィ匕装置とコンテンツ再生装置は、楕円曲線演算部 208と同一の楕円曲線 演算部を備えている。
[0183] 上記の例において、コンテンツを暗号化及び復号するためのコンテンツ鍵を、実施 の形態 1に示す秘密通信の対象としてもよい。この場合、コンテンツ鍵は、実施の形 態 1に示す方法と同様にして、暗号化され、また復号される。
この場合に、コンテンツは、コンテンツ鍵により、後述する共通鍵暗号方式を用いて 、暗号化され、復号される。
[0184] 上記の各装置は、素数 pを法とする剰余体 F上で定義された楕円曲線 E上の離散 対数問題を根拠として、楕円曲線 E上の点 Cに、素数 p未満の正整数である係数 kを 乗じて点 k * Cを算出する楕円曲線演算を用いて、情報を安全に扱う情報セキユリテ ィ装置である。
(12)上記のコンテンツ配信システムにおいて、デジタル著作物を暗号ィ匕する際に 用いる暗号化技術として、例えば、 DES (Data Encryption Standard)又は AES (Adv anced Encryption Standard)を用いるとしてもよい。 DES及び AESなどの暗号化技術 は、いわゆる共通鍵暗号方式 (又は秘密鍵暗号方式)と呼ばれる。
[0185] 上記のコンテンツ配信システムにおいて、このような共通鍵暗号方式を採用する場 合に、コンテンツ配信システムを構成する暗号ィ匕装置と再生装置との間で、いかにし て安全に同一の秘密鍵を共有するかが課題となる。
実施の形態 3に示す鍵共有システムは、この課題を解消するための手段を提供す る。
実施の形態 3に示す鍵共有システムにより、コンテンツ暗号化装置(実施の形態 3 のユーザ A装置に相当する)とコンテンツ再生装置(実施の形態 3のユーザ B装置に 相当する)との間で、第三者に知られることなぐ秘密鍵を共有し、その後は、共有鍵 暗号方式による暗号ィ匕アルゴリズムを適用し、コンテンツ暗号ィ匕装置において、共有 して 、る秘密鍵を用いて、デジタル著作物を暗号ィ匕して暗号ィ匕デジタル著作物を生 成し、次に、コンテンツ再生装置において、共有している秘密鍵を用いて、暗号化デ ジタル著作物を復号する。
[0186] 上記における鍵共有において、楕円曲線上の離散対数問題が安全性の根拠とし て用いられ、楕円べき倍演算が行われる。この楕円べき倍演算を行うコンテンツ暗号 化装置及びコンテンツ再生装置は、楕円曲線演算部 208と同一の楕円曲線演算部 を備えている。
(13)上記の各実施の形態及び変形例は、次に示すような場合において適用され る。
(a)各実施の形態及び変形例は、秘密のメッセージ伝送において適用される。これ については、上記において、秘密通信として説明をした。
[0187] (b)各実施の形態及び変形例は、認証にぉ 、て適用される。認証とは、メッセージ が自称どおりの人物によって送られたこと、またメッセージが改竄されな力つたというこ との検証である。また、各実施の形態及び変形例は、身分の証明において適用され る。身分の証明とは、例えば、データへのアクセス権、又は施設へのアクセス権 (入室
権)を持つことの証明、又は自分が主張どおりの人物であることの証明である。さらに 、各実施の形態及び変形例は、否認防止において適用される。否認防止とは、例え ば、実は何かに同意したのに、同意していないと主張する者に対抗することをいう。
[0188] (c)各実施の形態及び変形例は、鍵交換にぉ 、て適用される。鍵交換とは、例え ば、 2人の人が放送電波を使ってある秘密鍵暗号方式で使うための秘密鍵に同意す ることである。上記において、鍵共有として説明をした。
(d)各実施の形態及び変形例は、硬貨投げ (ビットコミットメントとも呼ばれる)にお いて適用される。硬貨投げとは、例えば、別々の巿に住む 2人のチェスプレーヤが、 電子メールで、誰が白を持つのかを決めることである。
[0189] (e)各実施の形態及び変形例は、秘密分散において適用される。秘密分散とは、 例えば、ある秘密の情報が、共に働く k人の人によって利用可能であるが、 k— 1人の 人では、利用できないようにすることを言う。
(f)各実施の形態及び変形例は、零知識証明において適用される。零知識証明と は、例えば、ある人が、数論的あるいは組合せ論的問題を解くことに成功したことを、 解が何であるかのわずかの情報さえ与えることなぐ他人にこのことを納得させること を言う。
[0190] (14)上記の各装置は、具体的には、マイクロプロセッサ、 ROM, RAM,ハードデ イスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュー タシステムである。前記 RAM又は前記ハードディスクユニットには、コンピュータプロ グラムが記憶されている。ここで、コンピュータプログラムは、所定の機能を達成する ために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成さ れたものである。前記マイクロプロセッサ力 前記コンピュータプログラムに従って動 作することにより、各装置は、その機能を達成する。つまり、前記マイクロプロセッサは 、前記コンピュータプログラムに含まれる各命令を 1個ずつ読み出し、読み出した命 令を解読し、解読結果に従って動作する。
[0191] (15)上記の各装置を構成する構成要素の一部又は全部は、 1個のシステム LSI (L arge Scale Integration:大規模集積回路)から構成されているとしてもよい。システム L SIは、複数の構成部を 1個のチップ上に集積して製造された超多機能 LSIであり、具
体的には、マイクロプロセッサ、 ROM, RAMなどを含んで構成されるコンピュータシ ステムである。前記 RAMには、コンピュータプログラムが記憶されている。前記マイク 口プロセッサ力 前記コンピュータプログラムに従って動作することにより、システム LS Iは、その機能を達成する。
[0192] また、上記の各装置を構成する構成要素の各部は、個別に 1チップィ匕されても良い し、一部又は全てを含むように 1チップ化されてもよい。また、ここでは、 LSIとした力 集積度の違いにより、 IC、システム LSI、スーパー LSI、ウルトラ LSIと呼称されること もめる。
また、集積回路化の手法は LSIに限るものではなぐ専用回路又は汎用プロセッサ で実現してもよい。 LSI製造後に、プログラムすることが可能な FPGA (Field Program mable Gate Array)や LSI内部の回路セルの接続や設定を再構成可能なリコンフィギ ュラブノレ ·プロセッサを利用しても良!、。
[0193] (16)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能な ICカード又は単体のモジュール力も構成されて 、るとしてもよ 、。前記 ICカード又は 前記モジュールは、マイクロプロセッサ、 ROM, RAM,などから構成されるコンビュ ータシステムである。前記 ICカード又は前記モジュールは、上記の超多機能 LSIを 含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作するこ とにより、前記 ICカード又は前記モジュールは、その機能を達成する。この ICカード 又はこのモジュールは、耐タンパ性を有するとしてもよ!/、。
[0194] (17)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンビュ ータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプ ログラム力もなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ 読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、 CD— RO M、 MO、 DVD, DVD-ROM, DVD -RAM, BD (Blu— ray Disc)、半導体メ モリなど、〖こ記録したものとしてもよい。また、これらの記録媒体に記録されている前 記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
[0195] また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信
回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送 等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって 、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサ は、前記コンピュータプログラムに従って動作するとしてもよい。
[0196] また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送する ことにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由し て移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい
(18)上述したように、本発明は、予め与えられる秘密情報と入力である楕円曲線上 の点に対し、楕円曲線上のスカラ倍演算を実行する楕円曲線演算装置であって、前 記秘密情報を分割して分割情報を生成する分割情報生成部と、 2個の前記楕円曲 線上の点に対し、前記楕円曲線の群において加算した結果得られる点を生成する 楕円曲線加算部と、 1個の前記楕円曲線上の点に対し、前記楕円曲線の群におい て 2倍した結果得られる点を生成する楕円曲線 2倍算部と、第 1の前記楕円曲線上の 点と前記分割情報に基づいて、前記楕円曲線加算部と前記楕円曲線 2倍算部を使 用して第 2の前記楕円曲線上の点を生成するスカラ倍演算部と、を備え、前記スカラ 倍演算部は、前記楕円曲線加算部と前記楕円曲線 2倍算部を使用する回数を合計 した値が前記秘密情報のビット長以外の情報に依らず一定になるように制御し、前記 楕円曲線加算部と前記楕円曲線 2倍算部の各々は、楕円曲線の定義体における乗 算を実行する乗算手段、前記定義体における 2乗算を実行する 2乗算手段、前記定 義体における加算を実行する加算手段を有し、前記楕円曲線加算部と前記楕円曲 線 2倍算部は、実行する前記乗算、前記 2乗算及び前記加算の順序が同じであるこ とを特徴とする。
[0197] ここで、前記スカラ倍演算部は、一つの前記分割情報に基づ 、て、前記楕円曲線 加算部と前記楕円曲線 2倍算部を使用する回数を合計した値が前記分割情報のビ ット長以外の情報に依らず一定になるように制御してもよ 、。
ここで、前記楕円曲線演算装置は、さらに 1以上の予め与えられた正整数に対して
、前記正整数をスカラとする前記楕円曲線上の点のスカラ倍点を計算し、その結果の それぞれをテーブルに格納するテーブル生成部を備え、前記楕円曲線加算部で使 用する 2個の前記楕円曲線上の点の内、少なくとも一つは前記テーブルに格納され て 、る前記スカラ倍点であるとしてもよ 、。
[0198] ここで、前記分割情報生成部は、前記秘密情報を予め与えられたビット数をもつ複 数の前記分割情報に分割してもよ ヽ。
ここで、前記楕円曲線 2倍算部は、さらに計算結果に影響のないダミーとなる前記 乗算を実行するダミー乗算手段を有するとしてもよ 、。
ここで、前記楕円曲線 2倍算部は、さらに定義体の元の 2乗算した結果を、前記元と 前記元の乗算を使用して得る 2乗算代替手段を有するとしてもよい。
[0199] ここで、前記正整数は奇数であるとしてもよい。
ここで、前記分割情報生成部は、複数の swビットの前記分割情報を生成し、前記ス カラ倍演算部は、(sw+ 1)回の演算処理を実行し、前記分割情報 wが 0以外かつ、 前記分割情報 wが 2"t (tは非負整数)で割り切れて、 2" (t+ 1)で割り切れない場合 に、(sw— + 1)番目の前記演算処理は前記楕円曲線加算部を使用し、その他の前 記演算処理は前記楕円曲線 2倍算部を使用するとしてもよい。
[0200] また、本発明は、予め与えられる秘密情報と入力である楕円曲線上の点に対し、楕 円曲線上のスカラ倍演算を実行する楕円曲線演算方法であって、前記秘密情報を 分割して分割情報を生成する分割情報生成ステップと、 2個の前記楕円曲線上の点 に対し、前記楕円曲線の群において加算した結果得られる点を生成する楕円曲線 加算ステップと、 1個の前記楕円曲線上の点に対し、前記楕円曲線の群において 2 倍した結果得られる点を生成する楕円曲線 2倍算ステップと、第 1の前記楕円曲線上 の点と前記分割情報に基づいて、前記楕円曲線加算ステップと前記楕円曲線 2倍算 ステップを使用して第 2の前記楕円曲線上の点を生成するスカラ倍演算ステップとを 含み、前記スカラ倍演算ステップは、前記楕円曲線加算ステップと前記楕円曲線 2倍 算ステップを使用する回数を合計した値が前記秘密情報のビット長以外の情報に依 らず一定になるように制御し、前記楕円曲線加算ステップと前記楕円曲線 2倍算ステ ップの各々は、楕円曲線の定義体における乗算を実行する乗算手段、前記定義体
における 2乗算を実行する 2乗算手段、前記定義体における加算を実行する加算手 段を有し、前記楕円曲線加算ステップと前記楕円曲線 2倍算ステップは、実行する前 記乗算、前記 2乗算及び前記加算の順序が同じであることを特徴とする。
[0201] ここで、前記スカラ倍演算ステップは、一つの前記分割情報に基づ 、て、前記楕円 曲線加算部と前記楕円曲線 2倍算部を使用する回数を合計した値が前記秘密情報 に依らず一定になるように制御するとしてもよ 、。
ここで、前記楕円曲線演算方法は、さらに 1以上の予め与えられた正整数に対して 、前記正整数をスカラとする前記楕円曲線上の点のスカラ倍点を計算し、その結果の それぞれをテーブルに格納するテーブル生成ステップを含み、前記楕円曲線加算ス テツプで使用する 2個の前記楕円曲線上の点の内、少なくとも一つは前記テーブル に格納されて 、る前記スカラ倍点であるとしてもよ!/、。
[0202] ここで、前記分割情報生成ステップは、前記秘密情報を予め与えられたビット数をも つ複数の前記分割情報に分割するとしてもよ ヽ。
ここで、前記正整数は奇数であるとしてもよい。
ここで、前記分割情報生成ステップは、複数の swビットの前記分割情報を生成し、 前記スカラ倍演算ステップは、(sw+ 1)回の演算処理を実行し、前記分割情報 wが 0以外かつ、前記分割情報 wが 2"t (tは非負整数)で割り切れて、 2" (t+ l)で割り切 れない場合に、 (sw-t+ 1)番目の前記演算処理は前記楕円曲線加算ステップを使 用し、その他の前記演算処理は前記楕円曲線 2倍算ステップを使用するとしてもよい
[0203] また、本発明は、予め与えられる秘密情報と入力である楕円曲線上の点に対し、楕 円曲線上のスカラ倍演算を実行する楕円曲線演算装置に実行させるプログラムであ つて、前記秘密情報を分割して分割情報を生成する分割情報生成ステップと、 2個の 前記楕円曲線上の点に対し、前記楕円曲線の群において加算した結果得られる点 を生成する楕円曲線加算ステップと、 1個の前記楕円曲線上の点に対し、前記楕円 曲線の群において 2倍した結果得られる点を生成する楕円曲線 2倍算ステップと、第 1の前記楕円曲線上の点と前記分割情報に基づいて、前記楕円曲線加算ステップと 前記楕円曲線 2倍算ステップを使用して第 2の前記楕円曲線上の点を生成するスカ
ラ倍演算ステップとを前記楕円曲線演算装置に実行させ、前記スカラ倍演算ステップ は、前記楕円曲線加算ステップと前記楕円曲線 2倍算ステップを使用する回数を合 計した値が前記秘密情報のビット長以外の情報に依らず一定になるように制御し、前 記楕円曲線加算ステップと前記楕円曲線 2倍算ステップの各々は、楕円曲線の定義 体における乗算を実行する乗算手段、前記定義体における 2乗算を実行する 2乗算 手段、前記定義体における加算を実行する加算手段を有し、前記楕円曲線加算ス テツプと前記楕円曲線 2倍算ステップは、実行する前記乗算、前記 2乗算及び前記 加算の順序が同じであることを特徴とする。
[0204] ここで、前記スカラ倍演算ステップは、一つの前記分割情報に基づ 、て、前記楕円 曲線加算部と前記楕円曲線 2倍算部を使用する回数を合計した値が前記秘密情報 に依らず一定になるように制御するとしてもよ 、。
ここで、前記楕円曲線演算方法は、さらに 1以上の予め与えられた正整数に対して 、前記正整数をスカラとする前記楕円曲線上の点のスカラ倍点を計算し、その結果の それぞれをテーブルに格納するテーブル生成ステップを含み、前記楕円曲線加算ス テツプで使用する 2個の前記楕円曲線上の点の内、少なくとも一つは前記テーブル に格納されて 、る前記スカラ倍点であるとしてもよ!/、。
[0205] ここで、前記分割情報生成ステップは、前記秘密情報を予め与えられたビット数をも つ複数の前記分割情報に分割するとしてもよ ヽ。
ここで、前記正整数は奇数であるとしてもよい。
ここで、前記分割情報生成ステップは、複数の swビットの前記分割情報を生成し、 前記スカラ倍演算ステップは、(sw+ 1)回の演算処理を実行し、前記分割情報 wが 0以外かつ、前記分割情報 wが 2"t (tは非負整数)で割り切れて、 2" (t+ l)で割り切 れない場合に、 (sw-t+ 1)番目の前記演算処理は前記楕円曲線加算ステップを使 用し、その他の前記演算処理は前記楕円曲線 2倍算ステップを使用するとしてもよい
[0206] また、本発明は、予め与えられる秘密情報と入力である楕円曲線上の点に対し、楕 円曲線上のスカラ倍演算を実行する楕円曲線演算装置の集積回路であって、前記 秘密情報を分割して分割情報を生成する分割情報生成部と、 2個の前記楕円曲線
上の点に対し、前記楕円曲線の群において加算した結果得られる点を生成する楕 円曲線加算部と、 1個の前記楕円曲線上の点に対し、前記楕円曲線の群において 2 倍した結果得られる点を生成する楕円曲線 2倍算部と、第 1の前記楕円曲線上の点 と前記分割情報に基づいて、前記楕円曲線加算部と前記楕円曲線 2倍算部を使用 して第 2の前記楕円曲線上の点を生成するスカラ倍演算部と、を備え、前記スカラ倍 演算部は、前記楕円曲線加算部と前記楕円曲線 2倍算部を使用する回数を合計し た値が前記秘密情報のビット長以外の情報に依らず一定になるように制御し、前記 楕円曲線加算部と前記楕円曲線 2倍算部の各々は、楕円曲線の定義体における乗 算を実行する乗算手段、前記定義体における 2乗算を実行する 2乗算手段、前記定 義体における加算を実行する加算手段を有し、前記楕円曲線加算部と前記楕円曲 線 2倍算部は、実行する前記乗算、前記 2乗算及び前記加算の順序が同じであるこ とを特徴とする。
[0207] ここで、前記スカラ倍演算部は、一つの前記分割情報に基づ 、て、前記楕円曲線 加算部と前記楕円曲線 2倍算部を使用する回数を合計した値が前記秘密情報に依 らず一定になるように制御するとしてもよ 、。
(19)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよ!/、。 産業上の利用可能性
[0208] 以上説明したように、本発明によると、単純電力解析攻撃により安全性を低下する ことを防ぐことができる。
本発明を構成する各装置、各方法及び各コンピュータプログラムは、情報を安全に 確実に扱う必要があるあらゆる産業において、経営的に、また継続的及び反復的に 使用することができる。また、本発明を構成する各装置は、電器機器製造産業にお いて、経営的に、また継続的及び反復的に、製造し、販売することができる。