【文献】
木藤 圭亮 ほか,サイドチャネル攻撃耐性を持つスカラー倍算アルゴリズム,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2015年 2月24日,Vol.114 No.489,pp.85−90
【文献】
Bodo Moeller,Securing Elliptic Curve Point Multiplication against Side-Channel Attacks,ISC 2001, LNCS,[オンライン],2001年,Vol.2200,pp.324-334,[検索日 平成30年10月30日]、インターネット,URL,<https://pdfs.semanticscholar.org/2b15/76767bf2b6294d0340ef581152271b256649.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
<発明の原理>
(楕円曲線暗号について)
公開鍵暗号としてはRSA暗号が普及しているが、近年、同じ安全性をより短い鍵長で実現できる楕円曲線暗号の普及が進んできており、デジタル家電の認証や、著作権保護に採用されている。楕円曲線暗号のもう一つ特筆すべき点は、楕円曲線上のペアリングと呼ばれる双線形写像を用いたペアリング暗号へ拡張できることである。ペアリングを利用した暗号プロトコルの研究が盛んになっており、そのような暗号としては、IDベース暗号、タイムリリース暗号、属性ベース暗号、検索可能暗号、関数型暗号などがある。
【0015】
(楕円曲線の定義)
図23は楕円曲線を示す説明図である。本明細書では、Weierstrass標準形E:{y
2=x
3+ax+b}で与えられる標数p>3の有限体F
p上の楕円曲線の場合について記述する。楕円曲線Eに含まれる任意の2点P,Q∈E対して、{P+Q}と表記される第3の点が、
図23のようなPとQとを通る直線Lを使って幾何学的に定義され、この演算{+}によってEは群を成す。
【0016】
(楕円曲線上の有理点の加法(直線による定義))
楕円曲線の重要な性質は、P,Q∈E(F)に対して第3の点{P+Q}∈E(F)が幾何学的に定義でき、無限遠点Oを零元とする加群を成すことである。Fが有限体F
pの時は、E(F
p)は有限群となり、その位数を#E(F
p)と表記する。
【0017】
この幾何学的な加法は点の座標を用いて記述することができる。P=(x
1,y
1)、Q=(x
2,y
2)とすると、P+Q=(x
3,y
3)は以下の式(1)〜式(3)で与えられる。
【0021】
式(2)の公式は、P≠Q場合は加算、P=Qの場合は2倍算と呼ばれる。以降、アルゴリズムを表す擬似言語の図中では、加算をECADD(P,Q)、2倍算をECDBL(P)という関数形式で表す。
【0022】
(スカラー倍算処理)
上述した加法の繰り返しにより、楕円曲線上の有理点と整数に対してスカラー倍数値dPは、スカラー値d個の和となる{dP=P+P+…+P}が定義される。
【0023】
このような演算をスカラー倍算と呼び、楕円曲線暗号はスカラー倍算値dPからPを求めることは困難なこと(楕円曲線上の離散対数問題(ECDLP))を安全性の根拠としている。
【0024】
実際にスカラー倍算値dPを求めるには、加算鎖アルゴリズムを用いることが一般的である。
【0025】
図24は代表的な加算鎖アルゴリズムである、従来のLeft to Rightバイナリ法のアルゴリズムを示す説明図である。なお、
図24で示すスカラー倍算アルゴリズムAR51において、1:,2:,…7:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST7と呼ぶ。
【0026】
図24に示すスカラー倍算アルゴリズムAR51は、スカラー値dはsビットの2進数{d
s−1,d
s−2,…,d
1,d
0}で表される。すなわち、スカラー値dは各々が1ビットの情報量を有するs個の桁部により表される。
【0027】
そして、スカラー値dに対し、最上位桁(s−1)から、最下位桁0にかけて、ステップST3の2倍算関数ECDBL(Q)後に、各桁部の値d
i(i=(s−1)〜0のいずれか)が“1”であるか否か(“0”であるか否か)に基づき、ステップST4の加算関数ECADD(P,Q)の実行の有無が分けられる桁部演算処理を実行し、最終的に最下位桁0のd
0の桁部演算処理によって得られる値Q(桁部演算結果)が、スカラー倍算値dPとして得られる。
【0028】
このように、Left to Rightバイナリ法は、スカラー値dを2進数表記にしたときの各桁部(ビット)の値d
iによってステップST4の加算処理を行うかどうかが分岐するという特徴がある。
【0029】
(課題)
楕円曲線の演算は、一般的に楕円曲線上の点を通る直線により、有理点の加算、及び2倍算という加法が定義され、Left to Rightバイナリ法等の加算鎖アルゴリズムによって、加算(ECADD(P,Q))及び2倍算(ECDBL(Q))に展開することによってスカラー倍算処理を実現している。
【0030】
しかし、バイナリ法のアルゴリズムは秘密鍵となるスカラー(倍数)値dの各ビット値d
iに依存して処理時間が変化するタイミングリークが発生するため、スカラー値dが漏洩する恐れがある。
【0031】
図25はダミー演算処理を挿入した、従来のLeft to Rightバイナリ法のアルゴリズムを示す説明図である。なお、
図25で示すスカラー倍算アルゴリズムAR52において、1:,2:,…8:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST8と呼ぶ。
【0032】
図25のスカラー倍算アルゴリズムAR52に示すように、一般的な対策としては、ステップST5で示すダミー演算(加算関数ECADD(Q,P))を挿入してスカラー値dのビット値d
iに関わらず、処理時間を一定にしている。
【0033】
このステップST5のダミー演算により得られた変数Dは、演算後破棄される。ダミー演算を挿入することにより、スカラー値dのビット値d
iの“0”,“1”(ゼロであるか、非ゼロであるか)に依存せず処理時間が同じになるためタイミングリークを回避することができる。
【0034】
しかし、このようなダミー演算がある場合、非特許文献1に開示されたように、フォルト挿入により中間結果が無限遠点Oに入った時に限り、誤りが伝播しないことを利用してスカラー倍数値を推定するセーフエラー攻撃に弱いという問題点があった。
【0035】
以下、セーフエラー攻撃例を説明する。スカラー倍算アルゴリズムAR52のステップST4またはステップST5で、{Q+P→O}となるようなフォルトを挿入する(例えば、Q=−Pとする)。
【0036】
すると、次に実行される(仮にi=n−1とする)ステップST3で、2Q→Oとなる場合は、d
n=1、そうでない場合はd
n=0と推定することができる。以下、この点を詳述する。
【0037】
ステップST4で{Q+P→O}となるようにフォルトを挿入すると、次に実行されるステップST3で“0”の倍算時に無限遠点Oであることが判明し例外処理が実行されることにより、d
n=1であったと予測できる。
【0038】
一方、ステップ5で{Q+P→O}となるようにフォルトを挿入しても、D(ダミー演算結果)は破棄されるため、次に実行されるステップST3で“0”の倍算時に無限遠点Oとならず例外処理が実行されないことにより、d
n=0であったと予測できる。
【0039】
このように、ダミー演算を挿入して、d
i=“0”,“1”に関わらず、加算関数ECADD(P,Q)を実行するようにしても、フォルト挿入によるセーフエラー攻撃によりスカラー値dが漏洩する問題を回避することができない課題がある。
【0040】
以下の実施の形態1〜実施の形態4で述べる本願発明のスカラー倍算装置は、フォルト挿入によるセーフエラー攻撃によりスカラー値dが漏洩する問題を回避するという、課題の解決を図る装置である。
【0041】
(発明の概要)
本願発明のスカラー倍算装置では、スカラー(倍数)値dに依存したタイミングリークの回避、及び無限遠点Oが特別扱いされることを利用したセーフエラー攻撃への対策として、加法公式の組み合わせによって処理時間をスカラー値のビット値に依存せず一定にしたまま、Left to Rightバイナリ法(以下、単に「バイナリ法」と略記する場合あり)に代表されるスカラー倍算アルゴリズムが成立する演算の組み合わせを提案する。
【0042】
図1は本願発明のスカラー倍算装置のスカラー倍算アルゴリズムの概要を示す説明図である。スカラー値dはそれぞれが1ビットの情報量を有する複数の桁部により構成されている。
【0043】
図24及び
図25で示したスカラー倍算アルゴリズムAR51及びAR52で示すように、バイナリ法では、スカラー値dの桁部のビット値d
iが“1”の場合、{Q←2Q+P}の演算式1による桁部演算処理(非ゼロ演算処理)を行い、スカラー値dの桁部のビット値d
iが“0”の場合、{Q←2Q}の演算式2による桁部演算処理(ゼロ演算処理)を行って、それぞれ桁部演算結果を得る必要がある。
【0044】
このように、バイナリ法に代表されるスカラー倍算アルゴリズムは、桁部の値が“0”の場合に実行するゼロ演算処理と、“1”の場合(“0”以外の場合)に実行する非ゼロ演算処理とは演算処理内容が異なっている。
【0045】
そこで、本願発明は、スカラー値dの桁部のビット値d
iが“1”の場合、
図1(a)に示すように、ステップSP11〜SP13を実行することにより、{Q←2Q+P}の演算式1を実現している。ステップSP11は2倍算処理であり、ステップSP12及びSP13は加算処理(第1及び第2の加算処理)である。
【0046】
一方、スカラー値dの桁部のビット値d
iが“0”の場合、
図1(b)に示すように、ステップSP01〜SP03を実行することにより、{Q←2Q}の演算式2を実現している。ステップSP01は2倍算処理であり、ステップSP02及びSP03は加算処理(第1及び第2の加算処理)である。なお、ステップSP03及びステップSP13も{B←(−P)}とした加算処理に含まれる。
【0047】
このように、ゼロ演算処理(ステップSP01〜SP03)及び非ゼロ演算処理(ステップSP11〜SP13)を共に、倍算器を用いた2倍算処理(SP01,SP11)、主として加算演算部5を用いた第1の加算処理(SP02,SP12)、及び主として加算演算部5を用いた第2の加算処理(SP03,SP13)の順で行い、第2の加算処理の演算結果(ステップSP03及びSP13で得られたQ)を最終的に得られる桁部演算結果としている。
【0048】
ここで、ステップSP12及びSP13並びにステップSP02及びSP03においてと、「Q=A」または「Q=B」となった場合は加算処理の代わりに例外的に2倍算処理を行う。実行するアルゴリズムが変動するため、タイミングリークが発生すると考えられるが、スカラー値dの桁部の値に起因するものではないため、スカラー値dの漏洩には影響しない。また、ステップSP01〜SP03の処理は冗長ではあるが、上記演算式2を成立させるために必要な演算処理のみにより構成されているため、無限遠点Oを利用したフォルト挿入によるセーフエラー攻撃の影響も受けない。
【0049】
以上の説明したように、
図1で示したゼロ演算処理(ステップSP01〜SP03)及び非ゼロ演算処理(ステップSP11〜SP13)を採用した本願発明のスカラー倍算装置は、秘密鍵であるスカラー(倍数)値dに対する2種類のサイドチャネル攻撃(「タイミングリークによるスカラー値の漏洩」と「フォルト挿入によるセーフエラー攻撃」)を防ぐことができる。
【0050】
<実施の形態1>
図2は実施の形態1のスカラー倍算装置の構成を示すブロック図である。同図に示すように、スカラー倍算装置は、スカラー倍算用演算部1、変換スカラー値生成部3、加算演算部5、2倍算演算部6及び記憶部8を主要構成要素として有している。
【0051】
加算演算部(ECADD演算部)5は直線による加法に基づく加算演算を実行すべく、加算シーケンサ、有限体加算器、有限体減算器及び有限体乗算器(以下、これらを総称して「有限体演算器」と略記する場合あり)、並びに上述した有限体演算器の選択部等を含んで構成されており、2つの入力値(I1,I2)の加算演算を実行して加算演算結果(I1+I2)を得る。
【0052】
2倍算演算部(ECADD演算部)6は、直線による加法に基づく2倍算演算を実行すべく、2倍算シーケンサ、有限体加算器、有限体減算器及び有限体乗算器並びに上述した有限体演算器の選択部等を含んで構成されており、1つの入力値(I)の2倍算演算を実行して2倍算演算結果(2I)を得る。
【0053】
スカラー倍算用演算部1は内部の演算部選択機能により、加算演算部5及び2倍算演算部6を選択的に使用して、楕円曲線加法アルゴリズムにおける演算内容の切り替えを行う。
【0054】
変換スカラー値生成部3はスカラー倍算用演算部1よりスカラー値dを受け、スカラー値dに対しスカラー値変換処理を行い、変換スカラー値b,変換スカラー値a等の変換スカラー値をスカラー倍算用演算部1に出力する。なお、実施の形態1では選択値生成部3を利用することなく、スカラー値dをそのまま演算対象としている。
【0055】
スカラー倍算用演算部1は、入力座標点P(x,y)及びスカラー値dを受け、さらに後述するスカラー倍算アルゴリズムAR1に沿って有限体の計算を行うスカラー倍算処理を実行して、スカラー倍算値(スカラー倍数点)を得る。スカラー倍算用演算部1はスカラー倍算アルゴリズムAR1の実行時において2倍算処理及び加算処理を行う場合、演算部選択機能により、加算演算部5あるいは2倍算演算部6を選択的に使用して、加算演算部5あるいは2倍算演算部6より得られる演算結果情報を記憶部8に出力させる。そして、スカラー倍算用演算部1は当該演算結果情報を記憶部8から取得する。
【0056】
記憶部8は、上述した加算演算部5あるいは2倍算演算部6からの演算結果情報以外に、入力座標点P、スカラー値d、及び変換スカラー値b,a、並びに後述する倍数テーブル及び桁部演算結果(Q,A)等のスカラー倍算処理に必要な種々の情報をさらに格納する。
【0057】
実施の形態1では、上述したスカラー倍算用演算部1のみにより、スカラー値dを演算用スカラー値とし、演算用スカラー値と入力座標点Pとを演算対象として、スカラー倍演算処理を行いスカラー倍算値dPを得るスカラー倍演算機構が構成される。
【0058】
図3は実施の形態1のスカラー倍算装置が実行するスカラー倍算アルゴリズムAR1を模式的に示す説明図である。なお、
図3で示すスカラー倍算アルゴリズムAR1において、1:,2:,…9:は実行ステップ位置を示す。以下、実行ステップ位置をステップST1〜ST9と呼ぶ。
【0059】
なお、
図3において、ステップST3の2倍算関数ECDBL(Q)はQの2倍算処理を行うこと示している。したがって、ステップST3は、具体的には、スカラー倍算用演算部1は演算部選択機能により、2倍算関数ECDBL(Q)を演算入力情報として2倍算演算部6に1つの入力値Q(演算入力情報)を与え、2倍算演算部6より得られるQの2倍算演算結果2Qが演算結果情報として記憶部8に格納され、記憶部8に格納された2倍算演算結果2Qをスカラー倍算用演算部1が取得する。
【0060】
また、
図3において、ステップST4〜ST6の加算関数ECADD(Q,A(B))は2つの入力値QとA(B)との加算処理を行うことを示している。したがって、ステップST4,ST5(ST6)は、具体的には、スカラー倍算用演算部1は演算部選択機能により、加算関数ECADD(Q,A)(あるいはECADD(Q,B))に基づく2つの入力値Q及びA(B)(演算入力情報)を加算演算部5に与え、加算演算部5により得られるQとAとの加算演算結果(Q+A)あるいはQとBとの加算演算結果(Q+B)が演算結果情報として記憶部8に格納される。そして、記憶部8に格納された加算演算結果(A+B)あるいは(Q+B)をスカラー倍算用演算部1が取得する。
【0061】
ただし、加算関数ECADD(Q,A(B))おいてQ=AあるいはQ=Bの場合、演算部選択機能は例外的に、2倍算演算部6に一つの入力値Qを与え、倍算演算部6より得られるQの2倍算演算結果2Qが演算結果情報となる。
【0062】
図3に示すように、スカラー倍算アルゴリズムAR1では、ステップST3で
図1のステップSP11(あるいはステップSP01)を実行し、ステップST4で
図1のステップSP12、ステップST5で
図1のステップSP02を実行し、ステップST6で
図1のステップSP13(あるいはステップSP03)を実行するようにしている。
【0063】
図4は実施の形態1のスカラー倍算装置によるスカラー倍算アルゴリズムAR1の実行例を模式的に示す説明図である。以下、スカラー倍算用演算部1が実行するスカラー倍算アルゴリズムAR1の概要を、
図3及び
図4を参照して説明する。
【0064】
(1)スカラー倍算装置に入力座標点Pとスカラー値dを入力し、入力座標点Pをスカラー倍算用演算部1に取り込むとともに、必要に応じて記憶部8に格納する(
図3のInput:…に相当)。
【0065】
(2)上記処理(1)の際、Left to Rightバイナリ法のアルゴリズムで計算を行うため、スカラー値dに関しs個の桁部がそれぞれ1ビット情報を有する表記とする。
【0066】
したがって、
図3に示すように、スカラー値d={d
s−1,d
s−2,…,d
1,d
0}
2で表される。例えば、
図4(a)に示すように、s=12とした、スカラー値d“101001111011”
2(=(2683)
10)の値を有する、d
11〜d
0がスカラー倍算用演算部1内に取り込まれ、必要に応じて記憶部8に格納される。
【0067】
(3)1つ上位の桁部における桁部演算結果Q(初期値は無限遠点O)の2倍算値(2倍点)2Qを計算し、記憶部8に格納する(
図3のステップST3に相当)。
【0068】
例えば、MSB(最上位(s−1))の桁部の値d
11に対する演算処理P1では、桁部演算結果Qの初期値は無限遠点Oであるため、2倍算関数ECDBL(Q)の演算結果も無限遠点Oとなり、ステップST3が実行されない場合と実質的に同じになる(
図4では図示せず)。
【0069】
また、MSB−1(=s−2)の桁部の値d
10に対する演算処理P2(1行目)では、1つ上位の桁部の演算処理P1の桁部演算結果QがPであったため、Pの2倍算値2P(=P×2)が得られる。
【0070】
(4)d
i(i=(s−1)〜0のいずれか)が“1”の場合、A=2Pとして加算処理(Q+A)(第1の加算処理)を実行し(ステップST4に相当)、d
iが“0”の場合、A=Pとして加算処理(Q+A)(第1の加算処理)を実行する(
図3のステップST5に相当)。
【0071】
例えば、d
9(=“1”)に対して行う演算処理P3(2行目)では、Q(=4P)+2Pの加算処理が実行され、d
8(=“0”)に対して行う演算処理P4(2行目)では、Q(=10P)+Pの加算処理が実行される。
【0072】
(5)B=−Pとして加算処理(第2の加算処理)を実行して、i桁の桁部(d
i)の桁部演算結果Qを得る(ステップST6に相当)。
【0073】
例えば、d
9(=“1”)に対して行う演算処理P3(3行目)では、Q(=6P)+(−P)の加算処理が実行される。
【0074】
(6)桁数iを“1”繰り下げた後(ステップST7に相当)、上記処理(3)〜(5)を繰り返す。
【0075】
そして、スカラー倍算用演算部1は、最終的にi=0のとき、d
0に対する演算処理P12の第2の加算処理(処理(5))によって得られるLSB(最下位“0”)の桁部の桁部演算結果Q=2683Pが、スカラー倍算値dPとなる。
【0076】
このように、演算処理P1〜P12のうち、最初の演算処理P1を除いて、d
iの値の“0”,“1”に関わらず、2倍算処理(
図3のステップST3)→第1の加算処理(
図3のステップST4あるいはST5)→第2の加算処理(
図3のステップST6)の順番で11回実行するため、ダミー演算を行うことなく処理時間を一定にすることができる。
【0077】
(効果等)
上述したように、実施の形態1のスカラー倍算装置において、スカラー倍算用演算部1によって行うスカラー倍演算処理は、スカラー値dを構成する複数の桁部に対応して実行され、各々が桁部演算結果を得る複数の桁部演算処理(
図4(b)の演算処理P1〜P12に相当)を含んでいる。そして、複数の桁部演算処理の実行により、隣接する桁部間で上位から下位に桁部演算結果Qを記憶部8を介して伝搬しつつ、最上位(n−1)から最下位(0)にかけて桁部単位に桁部演算結果Qを順次得て、最下位の桁部に対応する桁部演算処理(
図4(b)の演算処理P12に相当)より得られる桁部演算結果Qをスカラー倍算値dPとして取得している。
【0078】
上述した複数の桁部演算処理はそれぞれ、加算演算部5及び2倍算演算部6を用いて実行され、桁部のd
iが“0”の場合はゼロ演算処理(
図2のステップSP01〜SP03)を実行して桁部演算結果Qを取得し、“1”の場合(“0”以外の場合)は上記ゼロ演算処理と異なる演算内容の非ゼロ演算処理(
図2のステップSP11〜SP13)を実行して桁部演算結果Qを取得している。
【0079】
そして、実施の形態1のスカラー倍算装置は、上記ゼロ演算処理及び上記非ゼロ演算処理を共に、2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、第2の加算処理の演算結果を桁部演算結果としたことを特徴としている。
【0080】
実施の形態1のスカラー倍算装置は、上記特徴を有することにより、ゼロ演算処理及び非ゼロ演算処理間で共通の演算処理(2倍算処理、第1及び第2の加算処理)の実行後にはじめて桁部演算結果を得ているため、スカラー値d(演算用スカラー値)の桁部の値が“0”か非“0”かによって演算処理時間の変化が生じない。したがって、ゼロ演算処理及び非ゼロ演算処理間における演算処理時の差異に基づくタイミングリークを確実に回避することができる。
【0081】
さらに、実施の形態1において、ゼロ演算処理及び非ゼロ演算処理間で実行される2倍算処理、第1及び第2の加算処理は全て桁部演算結果Qを得るために必要な演算処理であり、演算結果が利用されないダミー演算処理ではない。したがって、ダミー演算処理に対するセーフエラー攻撃が実行されることもない。
【0082】
加えて、スカラー倍算処理以外のサイドチャネル攻撃用の演算処理を特に必要としていないため、実施の形態1のスカラー倍算装置を比較的簡単な構成で実現できる。
【0083】
その結果、タイミングリークの検知及びセーフエラー攻撃を含むサイドチャネル攻撃に強く、セキュリティー性が高いスカラー倍演算処理を実行する実施の形態1のスカラー倍算装置を比較的簡単な構成で得ることができる。
【0084】
なお、実施の形態1のスカラー倍算装置は、外部より入力されるスカラー値d(入力スカラー値)を、スカラー倍算用演算部1がスカラー倍算処理を行うための演算対象となる演算用スカラー値として用いている。したがって、演算用スカラー値(スカラー値d)を構成する複数の桁部はそれぞれ1ビットの情報量を有している。また、
図1のステップSP01あるいはステップSP11として実行する2倍算処理は2倍算演算部6を1回用いて1回倍算値を得る処理となる。
【0085】
このように、実施の形態1のスカラー倍算装置は、スカラー値d(入力スカラー値)をそのまま演算用スカラー値として用いるバイナリ法を採用したスカラー倍演算処理をセキュリティー性を高めて実行することができる効果を奏する。
【0086】
<実施の形態2>
実施の形態2は、Window法を採用したスカラー倍算装置である。Window法とは、スカラー倍数値をMビットのウィンドウ形式に変換して得られる変換スカラー値を演算用スカラー値としてスカラー倍算処理を行う加算鎖アルゴリズムの一種である。Window法は楕円曲線演算をバイナリ法より高速に行うことができる利点を奏している。
【0087】
(Window法の概要)
Window法のアルゴリズムにおけるスカラー倍算処理は、「Window変換」(スカラー値変換処理)、「事前計算」(テーブル作成処理)、及び「本計算」(スカラー倍算本処理)の3つの処理に分類される。
【0088】
図5はWindow法におけるスカラー値変換処理の(Window)変換アルゴリズムAR61を模式的に示す説明図である。なお、
図5で示す変換アルゴリズムAR61において、1:,2:,…12:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST12と呼ぶ。
【0089】
図5のステップST3において、c[w−1:0]は変数cにおける最下位wビットを意味する。
【0090】
図5で示す変換アルゴリズムAR61を実行することにより、スカラー値dから、各々がMビット(=w≧2)の情報量の複数の桁部を有する変換スカラー値bを得ることができる。
【0091】
例えば、スカラー値dが“101001111011”
2(=(2683)であり、M=w=4の場合、スカラー値変換処理を実行することにより、スカラー値dを4ビット単位にWindow変換して、変換スカラー値b(データb
2=“1010”、データb
1=“0111”)、データb
0=“1011”)を得ることができる。すなわち、変換スカラー値bは、データb
2〜データb
0を有する3つの桁部から構成される。
【0092】
図6はWindow法における従来のテーブル作成処理である事前計算アルゴリズムAR62を模式的に示す説明図である。なお、
図6で示す事前計算アルゴリズムAR62において、1:,2:,…5:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST5と呼ぶ。
【0093】
図6で示す事前計算アルゴリズムAR62を実行することにより、入力座標点Pを整数倍して得られる整数倍座標点を複数種計算し、{テーブルT
1〜T
β}として記憶部8内に格納される。
【0094】
図7はWindow法における従来のスカラー倍算本処理である本計算アルゴリズムAR63を模式的に示す説明図である。なお、
図7で示す本計算アルゴリズムAR63において、1:,2:,…11:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST11と呼ぶ。
【0095】
このように、変換アルゴリズムAR61、事前計算アルゴリズムAR62及び本計算アルゴリズムAR63からなるスカラー倍算処理を実行するのが従来のWindow法である。
【0096】
図7に示すように、従来のスカラー倍算本処理では、変換スカラー値bの桁部の値b
iが非“0”の場合はステップST7及びST8が実行され、値b
iが“0”の場合はステップST7及びST8が実行されない。
【0097】
したがって、従来のWindow法に対するサイドチャネル攻撃については、桁部の値(Window値)であるb
iが“0”と非“0”の場合で処理が分岐しているため、タイミングリークを完全に隠蔽することができない問題点があった。
【0098】
(構成)
上記問題点の解決を図りつつ、Window法を採用したのが実施の形態2のスカラー倍算装置である。
【0099】
装置構成は
図2で示した実施の形態1と同様であるが、変換スカラー値生成部3が上述したスカラー値変換処理を行い、スカラー値dから変換スカラー値bを得る点、スカラー倍算用演算部1が変換スカラー値bを演算用スカラー値として、後述するテーブル作成処理及びスカラー倍算本処理を行う点が大きく異なる。
【0100】
そして、実施の形態2において、スカラー倍算用演算部1及び変換スカラー値生成部3により、変換スカラー値bを演算用スカラー値とし、演算用スカラー値と入力座標点Pとを演算対象として、スカラー倍演算処理を行いスカラー倍算値dPを得るスカラー倍演算機構が構成される。
【0101】
変換スカラー値生成部3はスカラー値dを受け、スカラー値dに基づき、変換アルゴリズムAR11(
図5で示した変換アルゴリズムAR61と同じ)によるスカラー値変換処理を実行して変換スカラー値bを取得し、取得した変換スカラー値bをスカラー倍算用演算部1に出力する。
【0102】
スカラー倍算用演算部1は、後述するテーブル作成処理を実行して入力座標点Pを整数倍して得られる整数倍座標点を複数種有する倍数テーブルを作成して記憶部8に格納する。
【0103】
そして、スカラー倍算用演算部1は、変換スカラー値生成部3から変換スカラー値bを受け、変換スカラー値b及び入力座標点Pを演算対象として後述するスカラー倍算本処理を実行してスカラー倍算値dPを得る。なお、変換スカラー値b及び入力座標点Pは必要に応じて記憶部8に格納される。
【0104】
(アルゴリズム)
図8はWindow法における実施の形態2のテーブル作成処理である事前計算アルゴリズムAR12を模式的に示す説明図である。なお、
図8で示す事前計算アルゴリズムAR12において、1:,2:,…5:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST5と呼ぶ。
【0105】
図8で示す事前計算アルゴリズムAR12を実行することにより、入力座標点Pを整数倍して得られる整数倍座標点を複数個計算し、倍数テーブル{T
2〜T
β}として記憶部8内に格納される。
【0106】
図9はWindow法における実施の形態2のスカラー倍算本処理である本計算アルゴリズムAR13を模式的に示す説明図である。なお、
図9で示す本計算アルゴリズムAR13において、1:,2:,…13:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST13と呼ぶ。
【0107】
図10は実施の形態2のスカラー倍算装置による本計算アルゴリズムAR13の実行例を模式的に示す説明図である。以下、スカラー倍算用演算部1が実行する本計算アルゴリズムAR13の概要を、
図9及び
図10を参照して説明する。なお、
図10で示す例では、Window幅Mである各桁部のビット数を4ビットとしている。
【0108】
(1)スカラー倍算装置に入力座標点Pとスカラー値d(入力スカラー値)を入力し、入座標点Pをスカラー倍算用演算部1に取り込むとともに、必要に応じて記憶部8に格納する。一方、変換スカラー値生成部3は変換アルゴリズムAR11を採用したスカラー値変換処理を実行することにより、スカラー値dを変換スカラー値bに変換し、変換スカラー値bをスカラー倍算用演算部1に出力する(
図9のInput:…に相当)。
【0109】
(2)上記処理(1)の際、Window法のアルゴリズムで計算を行うため、変換スカラー値bに関しn個の桁部がそれぞれ4ビット(Mビット)情報を有する表記とする。
【0110】
図9に示すように、変換スカラー値b={b
n−1,…,b
0}で表される。例えば、
図10(a)に示すように、n=3とした、変換スカラー値b(データb
2=10、データb
1=7、データb
0=11)の値を有する、b
2〜b
0となる。
【0111】
(3)1つ上位の桁部における桁部演算結果A(初期値“無限遠点O”)の2
w倍点(w回倍算値)である2
wAを計算し、記憶部8に格納する(
図9のステップST2〜ST4に相当)。
【0112】
例えば、MSB(最上位(n−1))の桁部の値b
2に対する演算処理P1では、桁部演算結果Aの初期値は無限遠点Oであるため、2倍算関数ECDBL(A)の演算結果も無限遠点Oとなり、ステップST2〜ST4が実行されない場合と実質的に同じになる(
図10では図示せず)。
【0113】
また、MSB−1(=n−2)の桁部の値b
1に対する演算処理P2(1〜4行目)では、1つ上位の桁部の演算処理P1の桁部演算結果Aが10Pであったため、Pの2倍算を4(=M=w)回繰り返して行う4回倍算値である倍算値160P(=10P×2×2×2×2)が得られる。
【0114】
(4)b
i(i=(n−1)〜0のいずれか)が非“0”の場合、B=ePとして決定した(
図9のステップST5及びST6に相当)後、加算処理(A+B)(第1の加算処理)を実行する(
図9のステップST10に相当)。
【0115】
なお、eはb
iの値により選択される入力座標点Pの倍数値を意味し、e=(b
i+1)となる。すなわち、b
iが非“0”の場合、事前計算アルゴリズムAR12に沿ったテーブル作成処理によって得られた倍数テーブル{テーブルT
2〜T
β}のうち、T
bi−1に合致する値が選択される。このように、第1の加算処理は非ゼロ演算処理の実行時に倍数テーブルを用いて行われる。
【0116】
例えば、b
1(=“7”)に対して行う演算処理P2(5行目)では、e=b
1+1=8となり、A(=160P)+8Pの加算処理が実行される。
【0117】
一方、b
iが“0”の場合、B=Pとして決定した(
図9のステップST7及びST8に相当)後、加算処理(A+B)(第1の加算処理)を実行する(
図9のステップST10に相当)。
【0118】
(5)−Pを用いた加算処理(第2の加算処理)を実行して、i桁の桁部(b
i)の桁部演算結果Aを得る(
図9のステップST11に相当)。
【0119】
例えば、b
1に対して行う演算処理P2(6行目)では、A(=168P)+(−P)の加算処理が実行される。
【0120】
(6)桁数iを“1”繰り下げた後(ステップST1及びST12に相当)、上記処理(3)〜(5)を繰り返す。
【0121】
そして、スカラー倍算用演算部1は、最終的にi=0のとき、b
0に対する演算処理P3の第2の加算処理(処理(5))によって得られるLSB(最下位“0”)桁部の桁部演算結果A=2683Pを、スカラー倍算値dPとして出力する(
図9のステップST13に相当)。
【0122】
このように、実施の形態2のスカラー倍算装置は、スカラー倍算処理として、変換アルゴリズムAR11を採用したスカラー値変換処理、事前計算アルゴリズムAR12を採用したテーブル作成処理及び本計算アルゴリズムAR13を採用したスカラー倍算本処理を実行している。
【0123】
したがって、
図10(b)に示すように、演算処理P1〜P3のうち、最初の演算処理P1を除いて、b
iの値の“0”,非“0”に関わらず、M(=w)回繰り返して行う2倍算処理(
図9のステップST2〜ST4)→第1の加算処理(
図9のステップST5、ST6及びST10、あるいはST7、ST8及びST10)→第2の加算処理(
図9のステップST11)の順番で2回実行するため、ダミー演算を行うことなく処理時間を一定にすることができる。
【0124】
(効果等)
このように、実施の形態2のスカラー倍算装置において、スカラー倍算用演算部1によって行うスカラー倍演算処理は、変換スカラー値bを構成する複数の桁部に対応して実行され、各々が桁部演算結果を得る複数の桁部演算処理(
図10(b)の演算処理P1〜P3に相当)を含んでいる。そして、複数の桁部演算処理の実行により、隣接する桁部間で上位から下位に桁部演算結果Aを記憶部8を介して伝搬しつつ、最上位(n−1)から最下位(0)にかけて桁部単位に桁部演算結果Aを順次得て、最下位の桁部に対応する桁部演算処理(
図10(b)の演算処理P3に相当)より得られる桁部演算結果Aをスカラー倍算値dPとして取得する。
【0125】
上述した複数の桁部演算処理はそれぞれ、加算演算部5及び2倍算演算部6を用いて実行され、桁部のb
iが“0”の場合にゼロ演算処理(
図9のステップST8を固有の実行とする処理)を実行して桁部演算結果Aを取得し、非“0”の場合は上記ゼロ演算処理と異なる演算内容の非ゼロ演算処理(
図9のステップST6を固有の実行とする処理)を実行して桁部演算結果Aを取得している。
【0126】
そして、実施の形態2のスカラー倍算装置は、実施の形態1と同様、上記ゼロ演算処理及び上記非ゼロ演算処理を共に、(M(=w)回繰り返して行う)2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、第2の加算処理の演算結果を桁部演算結果としたことを特徴としている。
【0127】
実施の形態2のスカラー倍算装置は、上記特徴を有することにより、実施の形態1と同様、ゼロ演算処理及び非ゼロ演算処理間における演算処理時の差異に基づくタイミングリークを確実に回避することができる。
【0128】
さらに、実施の形態2において、ゼロ演算処理及び非ゼロ演算処理間で実行されるM(=w)回繰り返して行う2倍算処理、第1及び第2の加算処理は全て桁部演算結果Aを得るために必要な演算処理であり、演算結果が利用されないダミー演算処理ではない。したがって、ダミー演算処理に対するセーフエラー攻撃が実行されることもない。
【0129】
加えて、スカラー倍算処理以外のサイドチャネル攻撃用の演算処理を特に必要としていないため、実施の形態2のスカラー倍算装置を比較的簡単な構成で実現できる。
【0130】
その結果、サイドチャネル攻撃に強く、セキュリティー性が高いスカラー倍演算処理を実行する実施の形態2のスカラー倍算装置を得ることができる。
【0131】
なお、実施の形態2のスカラー倍算装置は、外部より入力されるスカラー値d(入力スカラー値)がスカラー値変換処理によって変換された変換スカラー値bをスカラー倍算処理の演算対象となる演算用スカラー値として用いている。したがって、演算用スカラー値(変換スカラー値b)を構成する複数の桁部はそれぞれM(=w)ビットの情報量を有している。また、
図9のステップステップST2〜ST4として実行する、2倍算処理は2倍算演算部6をM回用いてM回倍算値を得る処理となる。
【0132】
また、第1の加算処理は、非ゼロ演算処理の実行時にテーブル作成処理によって作成された倍数テーブル{T
2〜T
β}を用いて行っている。
【0133】
このように、実施の形態2のスカラー倍算装置は、変換スカラー値bを演算用スカラー値として用いるWindow法を採用したスカラー倍演算処理をセキュリティー性を高めて実行することができる効果を奏する。
【0134】
さらに、実施の形態2のスカラー倍算装置は、バイナリ法を採用した実施の形態1に比べて加算処理回数を少なくして処理速度を高めることができる効果も奏する。
【0135】
<実施の形態3>
実施の形態3は、NAF法を採用したスカラー倍算装置である。NAF法とはスカラー値dをNAF(符号付の非隣接形式)に変換して得られる変換スカラー値を演算用スカラー値としてスカラー倍算処理を行うアルゴリズムの一種である。NAF法は加算鎖の計算をバイナリ法より高速に行える可能性が高い利点を奏している。
【0136】
(NAF法の概要)
NAF法のアルゴリズムにおけるスカラー倍算処理は、「NAF変換」(スカラー値変換処理)、及び「本計算」(スカラー倍算本処理)の2つの処理に分類される。
【0137】
図11はNAF法におけるスカラー値変換処理の(NAF)変換アルゴリズムAR71を模式的に示す説明図である。なお、
図11で示す変換アルゴリズムAR71において、1:,2:,…16:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST16と呼ぶ。
【0138】
図11のステップST3においてc[0]は変数cの最下位ビットを示し、ステップST4においてc[1:0]は変数cにおける最下位2ビットを意味する。
【0139】
図11で示す変換アルゴリズムAR71を実行することにより、スカラー値dから、各々が1ビットの情報量の複数の桁部を有する変換スカラー値aを得ることができる。ただし、変換スカラー値aを構成する複数の桁部の値a
iは正負の情報を含んでいる。値a
iの正負決定処理は、
図11のステップST4〜ST7の処理で行われる。
【0140】
例えば、スカラー値dが“101001111011”
2(=(2683))の場合、変換アルゴリズムAR71を採用したスカラー値変換処理を実行することにより、スカラー値dを1ビット単位にNAF変換して、変換スカラー値a=“101010000(−1)0(−1)”を得ることができる。すなわち、変換スカラー値aは、データa
11〜データa
0を有する12個の桁部から構成される。
【0141】
図12はNAF法における従来のスカラー倍算本処理である本計算アルゴリズムAR73を模式的に示す説明図である。なお、
図12で示す本計算アルゴリズムAR73において、1:,2:,…10:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST10と呼ぶ。
【0142】
このように、変換アルゴリズムAR71、及び本計算アルゴリズムAR73からなるスカラー倍算処理を実行するのが従来のNAF法である。
【0143】
図12に示すように、従来のスカラー倍算本処理では、変換スカラー値aの桁部の値a
iが非“0”の場合はステップST5あるいはステップST7を実行している。すなわち、a
i=“1”の場合はステップST5が実行され、a
i=“−1”の場合はステップST7が実行される。このように、NAF法では、非ゼロ演算処理として互いに異なる2つの非ゼロ演算処理(第1及び第2の非ゼロ演算処理)を有している。
【0144】
一方、値a
iが“0”の場合はステップST5及びST7は共に実行されない。
【0145】
したがって、従来のNAF法に対するサイドチャネル攻撃については、桁部の値であるa
iが“0”と非“0”の場合で処理が分岐しているため、タイミングリークを完全に隠蔽することができない問題点があった。
【0146】
(構成)
上記問題点の解決を図りつつ、NAF法を採用したのが実施の形態3のスカラー倍算装置である。
【0147】
装置構成は
図2で示した実施の形態1と同様であるが、変換スカラー値生成部3が上述したスカラー値変換処理を行い、スカラー値dから変換スカラー値aを得る点、スカラー倍算用演算部1が変換スカラー値aを演算用スカラー値として、後述するスカラー倍算本処理を行う点が大きく異なる。
【0148】
そして、実施の形態3において、スカラー倍算用演算部1及び変換スカラー値生成部3により、変換スカラー値aを演算用スカラー値とし、演算用スカラー値と入力座標点Pとを演算対象として、スカラー倍演算処理を行いスカラー倍算値dPを得るスカラー倍演算機構が構成される。
【0149】
変換スカラー値生成部3はスカラー値dを受け、スカラー値dに基づき、変換アルゴリズムAR21(
図11で示した変換アルゴリズムAR71と同じ)によるスカラー値変換処理を実行して変換スカラー値aを取得し、変換スカラー値aをスカラー倍算用演算部1に出力する。
【0150】
そして、スカラー倍算用演算部1は、変換スカラー値生成部3から取得した変換スカラー値aに基づき、変換スカラー値a及び入力座標点Pを演算対象として後述するスカラー倍算本処理を実行してスカラー倍算値dPを得る。なお、変換スカラー値a及び入力座標点Pは必要に応じて記憶部8に格納される。
【0151】
(アルゴリズム)
図13はNAF法における実施の形態3のスカラー倍算本処理である本計算アルゴリズムAR23を模式的に示す説明図である。なお、
図13で示す本計算アルゴリズムAR23において、1:,2:,…14:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST14と呼ぶ。
【0152】
図14は実施の形態3のスカラー倍算装置による本計算アルゴリズムAR23の実行例を模式的に示す説明図である。以下、スカラー倍算用演算部1が実行する本計算アルゴリズムAR23の概要を、
図13及び
図14を参照して説明する。
【0153】
(1)スカラー倍算装置に入力座標点Pとスカラー値d(入力スカラー値)を入力し、入座標点Pをスカラー倍算用演算部1内に取り込むとともに、必要に応じて記憶部8格納する。一方、変換スカラー値生成部3は変換アルゴリズムAR21を採用したスカラー値変換処理を実行することにより、スカラー値dを変換スカラー値aに変換し、変換スカラー値aをスカラー倍算用演算部1に出力する(
図13のInput:…に相当)。
【0154】
(2)上記処理(1)の際、NAF法のアルゴリズムで計算を行うため、変換スカラー値aに関しn個の桁部がそれぞれ正負を含む1ビット情報を有する表記とする。
【0155】
図13に示すように、変換スカラー値a={a
n−1,…,a
0}で表される。例えば、
図14(a)に示すように、n=12とした、変換スカラー値a=“101010000(−1)0(−1)”の値を有する、a
11〜a
0がスカラー倍算用演算部1に出力される。
【0156】
(3)1つ上位の桁部における桁部演算結果A(初期値“0”)の2倍算点である2Aを計算し、記憶部8に格納する(
図13のステップST3に相当)。
【0157】
例えば、MSB(最上位(n−1))の桁部の値a
11に対する演算処理P1では、桁部演算結果Aの初期値は無限遠点O”であるため、2倍算関数ECDBL(A)の演算結果も無限遠点Oとなり、ステップST3が実行されない場合と実質的に同じになる(
図14では図示せず)。
【0158】
また、MSB−1(=n−2)の桁部の値a
10に対する演算処理P2(1行目)では、1つ上位の桁部の演算処理P1の桁部演算結果AがPであったため、Pの2倍算を行って倍算値2P(=P×2)が得られる。
【0159】
(4)a
i(i=(n−1)〜0のいずれか)が非“0”で正の場合は{B=2P,C=−P}に設定し(
図13のステップST5)、非“0”で負の場合は{B=−2P,C=P}に設定した(
図13のステップST7)後、加算処理(A+B)(第1の加算処理)を実行する(
図13のステップST11に相当)。さらに、その後、加算処理(A+C)(第2の加算処理)を実行する(
図13のステップST12に相当)。
【0160】
例えば、a
9(=“1”)に対して行う演算処理P3(2行目)では、第1の加算処理として、A(=4P)+B(=2P)の加算処理が実行され、演算処理P3(3行目)では、第2の加算処理として、A(=6P)+B(=−P)の加算処理が実行される。
【0161】
また、a
2(=“−1”)に対して行う演算処理P10(2行目)では、第1の加算処理として、A(=672P)+B(=−2P)の加算処理が実行され、演算処理P10(3行目)では、第2の加算処理として、A(=670P)+B(=P)の加算処理が実行される。
【0162】
一方、a
iが“0”の場合、{B=P,C=−P}に設定した(
図13のステップST9)後、加算処理(A+B)(第1の加算処理)を実行し(
図13のステップST11に相当)、さらに、その後、加算処理(A+C)(第2の加算処理)を実行する(
図13のステップST12に相当)。
【0163】
例えば、a
10(=“0”)に対して行う演算処理P2(2行目)では、第1の加算処理として、A(=2P)+B(=P)の加算処理が実行され、演算処理P2(3行目)では、第2の加算処理として、A(=3P)+B(=−P)の加算処理が実行される。
【0164】
上述した第2の加算処理(
図13のステップST11に相当)を実行した後、i桁の桁部(a
i)の桁部演算結果Aを得ることができる。桁部演算結果Aは適宜記憶部8に格納される。
【0165】
(5)桁数iを“1”繰り下げた後(ステップST2及びST13に相当)、上記処理(3)〜(4)を繰り返す。
【0166】
そして、スカラー倍算用演算部1は、最終的にi=0のとき、a
0に対する演算処理P12の第2の加算処理(処理(4))によって得られるLSB(最下位“0”)桁部の桁部演算結果A=2683Pを、スカラー倍算値dPとして出力する(
図13のステップST14に相当)。
【0167】
このように、実施の形態3のスカラー倍算装置は、スカラー倍算処理として、変換アルゴリズムAR21を採用したスカラー値変換処理、及び本計算アルゴリズムAR23を採用したスカラー倍算本処理を実行している。
【0168】
したがって、演算処理P1〜P12のうち、最初の演算処理P1を除いて、a
iの値の“0”,非“0”(正,負)に関わらず、2倍算処理(
図13のステップST3)→第1の加算処理(
図13のステップST5及びST11、ST7及びST11あるいはST9及びST11)→第2の加算処理(
図13のステップST5及びST12、ST7及びST12あるいはST9及びST12)の順番で11回実行するため、ダミー演算を行うことなく処理時間を一定にすることができる。
【0169】
(効果等)
このように、実施の形態3のスカラー倍算装置において、スカラー倍算用演算部1によって行うスカラー倍演算処理は、変換スカラー値aを構成する複数の桁部に対応して実行され、各々が桁部演算結果を得る複数の桁部演算処理(
図14(b)の演算処理P1〜P12に相当)を含んでいる。そして、複数の桁部演算処理の実行により、隣接する桁部間で上位から下位に桁部演算結果Aを記憶部8を介して伝搬しつつ、最上位(n−1)から最下位(0)にかけて桁部単位に桁部演算結果Aを順次得て、最下位の桁部に対応する桁部演算処理(
図14(b)の演算処理P12に相当)より得られる桁部演算結果Aをスカラー倍算値dPとして取得する。
【0170】
上述した複数の桁部演算処理はそれぞれ、加算演算部5及び2倍算演算部6を用いて実行され、スカラー倍算用演算部1は、桁部のa
iが“0”の場合にゼロ演算処理(
図13のステップST9を固有の実行とする処理)を実行して桁部演算結果Aを取得し、非“0”の場合は上記ゼロ演算処理と異なる演算内容の非ゼロ演算処理(
図13のステップST5あるいはST7を固有の実行とする処理)を実行して桁部演算結果Aを取得している。
【0171】
そして、実施の形態3のスカラー倍算装置は、実施の形態1と同様、上記ゼロ演算処理及び上記非ゼロ演算処理を共に、2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、第2の加算処理の演算結果を桁部演算結果としたことを特徴としている。
【0172】
さらに、実施の形態3のスカラー倍算装置は、非ゼロ演算処理として桁部の値a
iが正の場合に実行される第1の非ゼロ演算処理(
図13のステップST3,ST5、ST11及びST12に相当)と、桁部の値a
iが負の場合に実行される第2の非ゼロ演算処理(
図13のステップST3,ST7,ST11及びST12に相当)とを含んでいる。
【0173】
そして、実施の形態3のスカラー倍算装置は、上述した第1の非ゼロ演算処理及び第2の非ゼロ演算処理を共に、2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、第2の加算処理の演算結果を桁部演算結果としている。このため、第1の非ゼロ演算処理及び第2の非ゼロ演算処理間においても、演算処理時の差異に基づくタイミングリークはなく、ダミー演算処理を含まない。
【0174】
実施の形態3のスカラー倍算装置は、上記特徴を有することにより、実施の形態1及び実施の形態2と同様、ゼロ演算処理及び非ゼロ演算処理間における演算処理時の差異に基づくタイミングリークを確実に回避することができる。
【0175】
さらに、実施の形態3において、ゼロ演算処理及び非ゼロ演算処理(第1及び第2の非ゼロ演算処理を含む)間で実行される2倍算処理、第1及び第2の加算処理は全て桁部演算結果Aを得るために必要な演算処理であり、演算結果が利用されないダミー演算処理ではない。したがって、ダミー演算処理に対するセーフエラー攻撃が実行されることもない。
【0176】
加えて、スカラー倍算処理以外のサイドチャネル攻撃用の演算処理を特に必要としていないため、実施の形態3のスカラー倍算装置を比較的簡単な構成で実現できる。
【0177】
その結果、サイドチャネル攻撃に強く、セキュリティー性が高いスカラー倍演算処理を実行する実施の形態3のスカラー倍算装置を得ることができる。
【0178】
なお、実施の形態3のスカラー倍算装置は、外部より入力されるスカラー値d(入力スカラー値)がスカラー値変換処理によって変換された変換スカラー値aをスカラー倍算処理の演算用スカラー値として用いている。したがって、演算用スカラー値(変換スカラー値a)を構成する複数の桁部はそれぞれ正負の情報を含む1ビットの情報量を有している。また、
図1のステップSP01あるいはステップSP11として実行する2倍算処理は2倍算演算部6を1回用いて1回倍算値を得る処理となる。
【0179】
このように、実施の形態3のスカラー倍算装置は、変換スカラー値aを演算用スカラー値として用いるNAF法を採用したスカラー倍演算処理をセキュリティー性を高めて実行することができる効果を奏する。
【0180】
<実施の形態4>
実施の形態4は、w(Window)NAF法を採用したスカラー倍算装置である。wNAF法とはスカラー値dをwNAF(符号付ウィンドウ形式)に変換して計算を行うアルゴリズムである。wNAF法は加算鎖の計算をバイナリ法より高速に行える可能性が高い利点を奏している。
【0181】
(wNAF法の概要)
wNAF法のアルゴリズムにおけるスカラー倍算処理は、「wNAF変換」(スカラー値変換処理)、「事前計算」(テーブル作成処理)、及び「本計算」(スカラー倍算本処理)の3つの処理に分類される。
【0182】
図15はwNAF法における従来のスカラー値変換処理の(wNAF)変換アルゴリズムAR81を模式的に示す説明図である。なお、
図15で示す変換アルゴリズムAR81において、1:,2:,…16:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST16と呼ぶ。
【0183】
図15のステップST3においてc[0]は変数cの最下位ビットを示し、ステップST4においてc[w:0]は変数cにおける最下位(w+1)ビットを意味する。
【0184】
図15で示す変換アルゴリズムAR81を実行することにより、スカラー値dから、各々がM(=w+1)ビット以下のKビットの情報量の複数の桁部を有する変換スカラー値bを得ることができる。ただし、変換スカラー値bを構成する複数の桁部の値b
iは正負の情報を含んでいる。値b
iの正負決定処理は、
図15のステップST4〜ST7の処理で行われる。
【0185】
例えば、スカラー値dが“101001111011”
2(=(2683))の場合、変換アルゴリズムAR81を採用したスカラー値変換処理を実行することにより、スカラー値dを1ビット単位にwNAF変換して、変換スカラー値b(=10005000000(−5))を得ることができる。すなわち、変換スカラー値bは、データb
11〜データb
0を有する12個の桁部から構成される。
【0186】
図16はwNAF法における従来のテーブル作成処理である事前計算アルゴリズムAR82を模式的に示す説明図である。なお、
図16で示す事前計算アルゴリズムAR82において、1:,2:,…5:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST5と呼ぶ。
【0187】
図16で示す事前計算アルゴリズムAR82を実行することにより、入力座標点Pを奇数倍して得られる奇数倍座標点を複数個計算し、{テーブルT
1〜T
β}として記憶部8内に格納される。
【0188】
図17はwNAF法における従来のスカラー倍算本処理である本計算アルゴリズムAR83を模式的に示す説明図である。なお、
図17で示す本計算アルゴリズムAR83において、1:,2:,…10:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST10と呼ぶ。
【0189】
このように、変換アルゴリズムAR81、事前計算アルゴリズムAR82及び本計算アルゴリズムAR83からなるスカラー倍算処理を実行するのが従来のwNAF法である。
【0190】
図17に示すように、wNAF法を採用した従来のスカラー倍算本処理では、変換スカラー値bの桁部の値b
iが非“0”の場合はステップST5あるいはステップST7が実行される。すなわち、b
iが正の場合はステップST5が実行され、b
iが負の場合はステップST7が実行される。このように、wNAF法では、非ゼロ演算処理として互いに異なる2つの非ゼロ演算処理(第1及び第2の非ゼロ演算処理)を有している。
【0191】
一方、値b
iが“0”の場合はステップST5及びST7は全てが実行されない。
【0192】
したがって、従来のwNAF法に対するサイドチャネル攻撃については、桁部の値であるb
iが“0”と非“0”との場合で処理が分岐しているため、タイミングリークを完全に隠蔽することができない問題点があった。
【0193】
(構成)
上記問題点の解決を図りつつ、wNAF法を採用したのが実施の形態4のスカラー倍算装置である。
【0194】
装置構成は
図2で示した実施の形態1と同様であるが、変換スカラー値生成部3が後述するスカラー値変換処理を行い、スカラー値dから変換スカラー値bを得る点、スカラー倍算用演算部1が変換スカラー値bを演算用スカラー値として、後述するスカラー倍算本処理を行う点が大きく異なる。
【0195】
そして、実施の形態4において、スカラー倍算用演算部1及び変換スカラー値生成部3により、変換スカラー値bを演算用スカラー値とし、演算用スカラー値と入力座標点Pとを演算対象として、スカラー倍演算処理を行いスカラー倍算値dPを得るスカラー倍演算機構が構成される。
【0196】
(アルゴリズム)
図18はwNAF法における実施の形態4のスカラー値変換処理の(wNAF)変換アルゴリズムAR31を模式的に示す説明図である。なお、
図18で示す変換アルゴリズムAR31において、1:,2:,…21:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST21と呼ぶ。
【0197】
図18のステップST3においてc[0]は変数cの最下位ビットを示し、ステップST4においてc[w:0]は変数cにおける最下位(w+1)ビットを意味する。
【0198】
図18で示す変換アルゴリズムAR31を実行することにより、スカラー値dから、各々がKビット(K=1〜M(=w+1)のいずれか)の情報量の複数の桁部を有する変換スカラー値bを得ることができる。ただし、変換スカラー値bを構成する複数の桁部の値b
iは正負の情報を含んでいる。値b
iの正負決定処理は、
図18のステップST5〜ST8の処理で行われる。
【0199】
例えば、スカラー値dが“101001111011”
2(=(2683))の場合、変換アルゴリズムAR31を採用したスカラー値変換処理を実行することにより、スカラー値dをwNAF変換して、変換スカラー値b(データb
3=“1”(K=1ビット情報量)、データb
2=“5”(K=4ビット情報量)、データb
1=“0”(K=3ビット情報量)、データb
0=“−5”(K=4ビット情報量))を得ることができる。すなわち、変換スカラー値bは、データb
3〜データb
0を有する4個の桁部から構成される。
【0200】
また、b
iが非“0”の場合のビット数Kとなるlen
i(Window幅)は最大のM=w+1(ビット)となり(
図18のステップST9〜ST11の処理)、b
iが“0”の場合のビット数Kとなるlen
iは1〜Mビットのうちのいずれか(
図18のステップST14〜ST16の処理)となる。
【0201】
例えば、スカラー値dが“101001111011”
2の場合、b
3〜b
0の{1,5,0,−5}に対応して、len
3〜len
0={4,4,3,4}となる。
【0202】
変換スカラー値生成部3はスカラー値dを受け、スカラー値dに基づき、変換アルゴリズムAR31によるスカラー値変換処理を実行して変換スカラー値bを取得し、その後、変換スカラー値bをスカラー倍算用演算部1に出力する。この際、b
iのビット数Kを示すlen
iも併せてスカラー倍算用演算部1に出力する。
【0203】
そして、スカラー倍算用演算部1は、変換スカラー値生成部3から変換スカラー値bのb
i及びビット数Kを示すlen
iを受け、変換スカラー値b及び入力座標点Pを演算対象として後述するスカラー倍算本処理を実行してスカラー倍算値dPを得る。なお、変換スカラー値b、入力座標点及びビット数Kを示すlen
iは必要に応じて記憶部8に格納される。
【0204】
図19はwNAF法における実施の形態4のテーブル作成処理である事前計算アルゴリズムAR32を模式的に示す説明図である。なお、
図19で示す事前計算アルゴリズムAR32において、1:,2:,…5:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST5と呼ぶ。
【0205】
図19で示す事前計算アルゴリズムAR32を実行することにより、入力座標点Pを偶数倍して得られる偶数倍座標点を複数個計算し、{テーブルT
2,T
4〜T
β}として記憶部8に格納される。この際、T
i(i=2〜βを満足する偶数)の値はi×Pとなる。
【0206】
図20はwNAF法における実施の形態4のスカラー倍算本処理である本計算アルゴリズムAR33を模式的に示す説明図である。なお、
図20で示す本計算アルゴリズムAR33において、1:,2:,…18:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST18と呼ぶ。
【0207】
図21は実施の形態4のスカラー倍算装置による本計算アルゴリズムAR33の実行例を模式的に示す説明図(その1)である。
図22は実施の形態4のスカラー倍算装置による本計算アルゴリズムAR33の実行例を模式的に示す説明図(その2)である。以下、スカラー倍算用演算部1が実行する本計算アルゴリズムAR33の概要を、
図20〜
図22を参照して説明する。
【0208】
(1)スカラー倍算装置に入力座標点Pとスカラー値d(入力スカラー値)を入力し、入力座標点Pをスカラー倍算用演算部1内に取り込まれ、必要に応じて記憶部8に格納される。さらに、変換アルゴリズムAR31を採用したスカラー値変換処理によってスカラー値dを変換して得られる変換スカラー値bが変換スカラー値生成部3によって得られる(
図20のInput:…に相当)。この際、変換スカラー値bとともに、b
n−1〜b
0のビット数Kを示すlen
n−1〜len
0がスカラー倍算用演算部1に出力される。
【0209】
(2)上記処理(1)の際、wNAF法のアルゴリズムで計算を行うため、変換スカラー値bに関しn個の桁部がそれぞれ正負を含むM(=w+1)ビット以下のKビットの情報を有する表記とする。
【0210】
図20に示すように、変換スカラー値b={b
n−1,…,b
0}で表される。例えば、
図21(a)に示すように、n=4とした、変換スカラー値b=(b
3=“1”、b
2=“5”、b
1=“0”、データb
0=“−5”)の値を有する、b
3〜b
0がlen
3〜len
0と共にスカラー倍算用演算部1に出力され、必要に応じて記憶部8に格納される。
【0211】
(3)1つ上位の桁部における桁部演算結果A(初期値“0”)の2倍算点〜2
w+1倍算点である2A〜2
w+1A(1回倍算値〜M(=w+1)回倍算値)を計算し、記憶部8に格納する(
図20のステップST2〜ST5に相当)。
【0212】
例えば、MSB(最上位(n−1))の桁部の値b
3に対する演算処理P1では、桁部演算結果Aの初期値は無限遠点Oであるため、2倍算関数ECDBL(A)の演算結果も無限遠点Oとなり、ステップST2〜ST5が実行されない場合と実質的に同じになる(
図21では図示せず)。すなわち、
図22の加算・減算処理AS3のみが実行されることになる。
【0213】
また、MSB−1(=n−2)の桁部の値b
2に対する演算処理P2(1〜4行目)では、1つ上位の桁部の演算処理P1(加算・減算処理AS3)の桁部演算結果AがPであったため、Pの2倍算を1〜4(M=w+1)回繰り返して、倍算値2P,4P,8P及び16P(=P×2×2×2×2)が得られる。この際、
図22に示すように、ビット数Kを示すlen
2=4のため、倍数選択処理LS2(
図20のステップST6及びST7に相当)によって4回倍算値(=K回倍算値)である16Pが選択される。
【0214】
(4)b
i(i=(n−1)〜0のいずれか)が正の場合(非“0”)は{B=T
bi+1,C=−P}に設定し(
図20のステップST9に相当)、負の場合(非“0”)は{B=−T
1−bi,C=P}に設定する(
図20のステップST11)。その後、加算処理(A+B)(第1の加算処理)を実行し(
図20のステップST15に相当)、さらに、その後、加算処理(A+C)(第2の加算処理)を実行する(
図20のステップST16に相当)。
【0215】
例えば、b
2(=“5”)に対して行う演算処理P2(5行目)では、第1の加算処理として、A(=16P)+B(=6P=T
6)の加算処理が実行され、演算処理P2(6行目)では、第2の加算処理として、A(=22P)+B(=−P)の加算処理が実行される。すなわち、
図22の加算・減算処理AS2のように、A(=16P)に対して+5Pを加算する処理が実行されたことになる。
【0216】
また、b
0(=“−5”)に対して行う演算処理P4(5行目)では、第1の加算処理として、A(=2688P)+B(=−6P=−T
6)の加算処理が実行され、演算処理P4(6行目)では、第2の加算処理として、A(=2682P)+B(=P)の加算処理が実行される。すなわち、
図22の加算・減算処理AS0のように、A(=2688P)に対して−5Pを加算(5Pを減算する)する処理が実行されたことになる。
【0217】
一方、b
iが“0”の場合、{B=P,C=−P}に設定した(
図20のステップST13)後、加算処理(A+B)(第1の加算処理)を実行し(
図20のステップST15に相当)、さらに、その後、加算処理(A+C)(第2の加算処理)を実行する(
図20のステップST16に相当)。
【0218】
例えば、b
1(=“0”)に対して行う演算処理P3(5行目)では、第1の加算処理として、A(=168P)+B(=P)の加算処理が実行され、演算処理P3(6行目)では、第2の加算処理として、A(=169P)+B(=−P)の加算処理が実行される。すなわち、
図22の加算・減算処理AS1のように、A(=168P)に対して+0Pを加算(−0Pを減算する)する処理が実行されたことになる。
【0219】
上述した第2の加算処理(
図20のステップST16に相当)を実行した後、i桁の桁部(b
i)の桁部演算結果Aを得ることができる。
【0220】
(5)桁数iを“1”繰り下げた後(ステップST1及びST17に相当)、上記処理(3)〜(4)を繰り返す。
【0221】
そして、スカラー倍算用演算部1は、最終的にi=0のとき、b
0に対する演算処理P4の第2の加算処理(処理(4))によって得られるLSB(最下位“0”)桁部の桁部演算結果A=2683Pを、スカラー倍算値dPとして出力する(
図20のステップST18に相当)。
【0222】
このように、実施の形態4のスカラー倍算装置は、スカラー倍算処理として、変換アルゴリズムAR31を採用したスカラー値変換処理、事前計算アルゴリズムAR32を採用したテーブル作成処理及び本計算アルゴリズムAR33を採用したスカラー倍算本処理を実行している。
【0223】
したがって、スカラー倍算用演算部1は、演算処理P1〜P4のうち、最初の演算処理P1を除いて、b
iの値の“0”,非“0”(正,負)に関わらず、M(=w+1)回繰り返して行う2倍算処理(
図20のステップST2〜ST5)→第1の加算処理(
図20のステップST9及びST15、ST11及びST15あるいはST13及びST15)→第2の加算処理(
図20のステップST9及びST16、ST11及びST16あるいはST13及びST16)の順番で3回実行するため、ダミー演算を行うことなく処理時間を一定にすることができる。
【0224】
なお、演算処理P3ではビット数Kを示すlen
1=3のため、2倍算を3(=w=M−1)回繰り返して得られる3回倍算値(S
2)を選択している(ステップST6及びST7)。すなわち、
図22に示すように、2倍算を1〜4回繰り返して得られる1回倍算値(42P)〜4回倍算値(336P)のうち、倍数選択処理LS1により3回倍算値(=K回倍算値)である2倍算処理結果168Pを選択している。
【0225】
一方、演算処理P2及び演算処理P4では共にビット数Kを示すlen
2=len
0=4のため、2倍算を4(=w+1=M)回繰り返して得られる4回倍算値(S
3)を選択している(ステップST6及びST7)。すなわち、
図22に示すように、2倍算を1〜4回繰り返して得られる1回倍算値(2P,336P)〜4回倍算値(16P,2688P)のうち、倍数選択処理LS2及びLS0により4回倍算値(=K回倍算値)である2倍算処理結果16P及び2688Pを選択している。
【0226】
しかしながら、演算処理P3も演算処理P2及び演算処理P4と同様、4回繰り返した2倍算処理(ステップST2〜ST5)を実行している。すなわち、
図22に示すように、倍数選択処理LS2〜LS0に先がけて、必ず4回繰り返した2倍算処理が実行されている。
【0227】
したがって、桁部のビット数Kに関わらず、常に2倍算は4回繰り返して実行されるため、桁部のビット数Kの違いによって2倍算処理間でタイミングリークが生じることはない。
【0228】
(効果等)
このように、実施の形態4のスカラー倍算装置において、スカラー倍算用演算部1によって行うスカラー倍演算処理は、変換スカラー値bを構成する複数の桁部に対応して実行され、各々が桁部演算結果を得る複数の桁部演算処理(
図21の演算処理P1〜P4に相当)を含んでいる。そして、複数の桁部演算処理の実行により、隣接する桁部間で上位から下位に桁部演算結果Aを記憶部8を介して伝搬しつつ、最上位(n−1)から最下位(0)にかけて桁部単位に桁部演算結果Aを順次得て、最下位の桁部に対応する桁部演算処理(
図21の演算処理P4に相当)より得られる桁部演算結果Aをスカラー倍算値dPとして取得する。
【0229】
上述した複数の桁部演算処理はそれぞれ、加算演算部5及び2倍算演算部6を用いて実行され、スカラー倍算用演算部1は、桁部のb
iが“0”の場合にゼロ演算処理(
図20のステップST13を固有の実行とする処理)を実行して桁部演算結果Aを取得し、非“0”の場合は上記ゼロ演算処理と異なる演算内容の非ゼロ演算処理(
図20のステップST9あるいはST11を固有の実行とする処理)を実行して桁部演算結果Aを取得している。
【0230】
そして、実施の形態4のスカラー倍算装置は、実施の形態1と同様、上記ゼロ演算処理及び上記非ゼロ演算処理を共に、(M(=w+1)回繰り返して行う)2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、第2の加算処理の演算結果を桁部演算結果としたことを特徴としている。
【0231】
さらに、実施の形態4のスカラー倍算装置は、非ゼロ演算処理として桁部の値b
iが正の場合に実行される第1の非ゼロ演算処理(
図20のステップST2〜ST5,ST9、ST15及びST16に相当)と、桁部の値b
iが負の場合に実行される第2の非ゼロ演算処理(
図20のステップST2〜ST5,ST11、ST15及びST16に相当)とを含んでいる。
【0232】
そして、実施の形態4のスカラー倍算装置は、第1の非ゼロ演算処理及び第2の非ゼロ演算処理を共に、(M回繰り返して行う)2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、第2の加算処理の演算結果を桁部演算結果としている。このため、第1の非ゼロ演算処理及び第2の非ゼロ演算処理間においても演算処理時の差異に基づくタイミングリークはなく、ダミー演算処理を含まない。
【0233】
実施の形態4のスカラー倍算装置は、上記特徴を有することにより、実施の形態1〜実施の形態3と同様、ゼロ演算処理及び非ゼロ演算処理間における演算処理時の差異に基づくタイミングリークを確実に回避することができる。
【0234】
さらに、実施の形態4において、ゼロ演算処理及び非ゼロ演算処理(第1及び第2の非ゼロ演算処理を含む)間で実行される(M回繰り返して行う)2倍算処理、第1及び第2の加算処理は全て桁部演算結果Aを得るために必要な演算処理であり、演算結果が利用されないダミー演算処理ではない。したがって、ダミー演算処理に対するセーフエラー攻撃が実行されることもない。
【0235】
加えて、スカラー倍算処理以外のサイドチャネル攻撃用の演算処理を特に必要としていないため、実施の形態4のスカラー倍算装置を比較的簡単な構成で実現できる。
【0236】
その結果、サイドチャネル攻撃に強く、セキュリティー性が高いスカラー倍演算処理を実行する実施の形態4のスカラー倍算装置を得ることができる。
【0237】
なお、実施の形態4のスカラー倍算装置は、外部より入力されるスカラー値d(入力スカラー値)がスカラー値変換処理によって変換された変換スカラー値bをスカラー倍算処理の演算用スカラー値として用いている。したがって、演算用スカラー値(変換スカラー値b)を構成する複数の桁部はそれぞれ正負の情報を含むM(=w+1)ビット以下のKビットの情報量を有している。また、
図20のステップST2〜ST5として実行する、2倍算処理は2倍算演算部6をM回用いて1回倍算値〜M回倍算値を得た後、K回倍算値を選択的に得る処理となる。
【0238】
このように、実施の形態4のスカラー倍算装置は、変換スカラー値bを演算用スカラー値として用いるwNAF法を採用したスカラー倍演算処理をセキュリティー性を高めて実行することができる効果を奏する。
【0239】
さらに、実施の形態4のスカラー倍算装置は、バイナリ法を採用した実施の形態1に比べて加算処理回数を少なくして処理速度を高めることができる効果も奏する。
【0240】
<スカラー倍算方法>
実施の形態1〜実施の形態4で示したスカラー倍算装置を用いて行う、入力座標点P及びスカラー値dからスカラー倍算値dPを得るスカラー倍算方法について説明する。
【0241】
スカラー倍算方法は、実施の形態1のようにスカラー値d(入力スカラー値)をそのまま演算用スカラー値として用いても、実施の形態2〜実施の形態4のようにスカラー値dを変換して得られる変換スカラー値b(a)を演算用スカラー値として用いてもよい。
【0242】
スカラー倍算方法は、上記演算用スカラー値と入力座標点Pとを演算対象とし、上記演算用スカラー値は複数の桁部を有し、上記複数の桁部はそれぞれ少なくとも1ビットの情報量を有している。
【0243】
スカラー倍算方法は、複数の桁部に対応して実行され、各々が桁部演算結果を得る複数の桁部演算方法を含んでおり、複数の桁部演算方法の実行により、隣接する桁部間で上位から下位に桁部演算結果を伝搬しつつ、最上位から最下位にかけて桁部単位に桁部演算結果を順次得て、最下位の桁部より得られる桁部演算結果をスカラー倍算値dPとして得る。
【0244】
複数の桁部演算方法はそれぞれ以下のステップ(a)及び(b)を実行することにより実現される。
【0245】
(a)桁部の値が“0”の場合はゼロ演算処理を実行して桁部演算結果を取得する。
【0246】
(b)桁部の値が“0”以外の場合は上記ゼロ演算処理と異なる演算内容の非ゼロ演算処理を実行して桁部演算結果を取得する。
【0247】
そして、上記ステップ(a)及びステップ(b)は共に、2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、上記第2の加算処理の演算結果を桁部演算結果としたことを特徴としている。
【0248】
このように、本願発明におけるスカラー倍算方法は、上記特徴を有することにより、ステップ(a),(b)間で共通の演算処理(2倍算処理、第1及び第2の加算処理)の実行後にはじめて桁部演算結果を得ているため、演算用スカラー値の桁部の値が“0”か非“0”かによってステップ(a),(b)間に演算処理時間の変化が生じない。したがって、ゼロ演算処理及び非ゼロ演算処理間における演算処理時の差異に基づくタイミングリークを確実に回避することができる。
【0249】
さらに、ゼロ演算処理及び非ゼロ演算処理間で実行される2倍算処理、第1及び第2の加算処理は全て桁部演算結果を得るために必要な演算処理であり、演算結果が利用されないダミー演算処理ではない。したがって、ダミー演算処理に対するセーフエラー攻撃が実行されることもない。
【0250】
その結果、サイドチャネル攻撃に強く、セキュリティー性が高いスカラー倍演算処理を実行するスカラー倍算方法を得ることができる。
【0251】
<その他>
上述した実施の形態1〜実施の形態4では、スカラー倍演算機構としてスカラー倍算用演算部1及び変換スカラー値生成部3の組合せ(実施の形態1はスカラー倍算用演算部1のみ)を示したが、変換スカラー値生成部3の機能をスカラー倍算用演算部1内に含めるように構成してもよい。さらに、加算演算部5及び2倍算演算部6の機能をスカラー倍算用演算部1内に含まれる構成も考えられる。
【0252】
また、加算演算部5及び2倍算演算部6内にそれぞれ有限体加算器、有限体減算部及び有限体乗算部有する構成を説明したが、加算演算部5及び2倍算演算部6間で有限体加算器、有限体減算部及び有限体乗算部を共有するようにしても良い。
【0253】
また、
図2で示したスカラー倍算用演算部1、変換スカラー値生成部3、加算演算部5及び2倍算演算部6は、例えば、ソフトウェアに基づくCPUを用いたプログラム処理によって実行される。また、記憶部8は、HDD、DVD、メモリなどによって構成される。
【0254】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略したりすることが可能である。