特許第6457911号(P6457911)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社メガチップスの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6457911
(24)【登録日】2018年12月28日
(45)【発行日】2019年1月23日
(54)【発明の名称】スカラー倍算装置
(51)【国際特許分類】
   G09C 1/00 20060101AFI20190110BHJP
【FI】
   G09C1/00 650A
【請求項の数】5
【全頁数】34
(21)【出願番号】特願2015-190114(P2015-190114)
(22)【出願日】2015年9月28日
(65)【公開番号】特開2017-67859(P2017-67859A)
(43)【公開日】2017年4月6日
【審査請求日】2018年3月5日
(73)【特許権者】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100088672
【弁理士】
【氏名又は名称】吉竹 英俊
(74)【代理人】
【識別番号】100088845
【弁理士】
【氏名又は名称】有田 貴弘
(72)【発明者】
【氏名】吉田 敦郎
【審査官】 青木 重徳
(56)【参考文献】
【文献】 国際公開第2005/015526(WO,A1)
【文献】 米国特許出願公開第2015/0092941(US,A1)
【文献】 木藤 圭亮 ほか,サイドチャネル攻撃耐性を持つスカラー倍算アルゴリズム,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,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名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
入力座標点及び入力スカラー値を受け、前記入力座標点のスカラー倍算値を得るスカラー倍算装置であって、
2つの入力値の加算演算を実行する加算演算部と、
1つの入力値の2倍算演算を実行する2倍算演算部と、
前記入力スカラー値あるいは前記入力スカラー値を変換して得られる変換スカラー値を演算用スカラー値とし、前記演算用スカラー値と前記入力座標点とを演算対象として、スカラー倍算処理を行い前記スカラー倍算値を得るスカラー倍演算機構とを備え、
前記演算用スカラー値は複数の桁部を有し、前記複数の桁部はそれぞれ少なくとも1ビットの情報量を有し、
前記スカラー倍算処理は、前記複数の桁部に対応して実行され各々が桁部演算結果を得る複数の桁部演算処理を含み、前記複数の桁部演算処理の実行により、隣接する桁部間で上位から下位に桁部演算結果を伝搬しつつ、最上位から最下位にかけて桁部単位に桁部演算結果を順次得て、最下位の桁部より得られる桁部演算結果を前記スカラー倍算値とし、
前記複数の桁部演算処理はそれぞれ、前記加算演算部及び前記2倍算演算部を用いて実行され、桁部の値が“0”の場合はゼロ演算処理を実行して桁部演算結果を取得し、“0”以外の場合は前記ゼロ演算処理と異なる演算内容の非ゼロ演算処理を実行して桁部演算結果を取得し、
前記ゼロ演算処理及び前記非ゼロ演算処理を共に、2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、前記第2の加算処理の演算結果を桁部演算結果としたことを特徴とする、
スカラー倍算装置。
【請求項2】
請求項1記載のスカラー倍算装置であって、
前記演算用スカラー値は前記入力スカラー値であり、前記複数の桁部はそれぞれ1ビットの情報量を有し、
前記2倍算処理は前記2倍算演算部を1回用いて1回倍算値を得る処理を含む、
スカラー倍算装置。
【請求項3】
請求項1記載のスカラー倍算装置であって、
前記演算用スカラー値は前記変換スカラー値であり、前記複数の桁部はそれぞれM(M≧2)ビットの情報量を有し、
前記スカラー倍算処理は、
前記入力スカラー値を前記変換スカラー値に変換するスカラー値変換処理と、
前記入力座標点に基づき、前記入力座標点を整数倍して得られる整数倍座標点を複数種有する倍数テーブルを作成するテーブル作成処理と、
前記スカラー値変換処理及び前記テーブル作成処理の実行後に、前記複数の桁部演算処理を実行するスカラー倍算本処理とを含み、
前記2倍算処理は前記2倍算演算部をM回繰り返し用いてM回倍算値を得る処理を含み、
前記第1の加算処理は前記非ゼロ演算処理の実行時に前記倍数テーブルを用いて行われる、
スカラー倍算装置。
【請求項4】
請求項1記載のスカラー倍算装置であって、
前記演算用スカラー値は前記変換スカラー値であり、前記複数の桁部はそれぞれ正負を含む1ビットの情報量を有し
前記スカラー倍算処理は、
前記入力スカラー値を前記変換スカラー値に変換するスカラー値変換処理と、
前記スカラー値変換処理の実行後に、前記複数の桁部演算処理を実行するスカラー倍算本処理とを含み、
前記2倍算処理は前記2倍算演算部を1回用いて1回倍算値を得る処理を含み、
前記非ゼロ演算処理は、前記桁部の値が正の場合に実行される第1の非ゼロ演算処理と
前記桁部の値が負の場合に実行される第2の非ゼロ演算処理とを含み、前記第1及び第2の非ゼロ演算処理は共に前記2倍算処理、前記第1の加算処理、及び前記第2の加算処理の順で行い、前記第2の加算処理の演算結果を桁部演算結果としている、
スカラー倍算装置。
【請求項5】
請求項1記載のスカラー倍算装置であって、
前記演算用スカラー値は前記変換スカラー値であり、前記複数の桁部はそれぞれM(M≧2)ビット以下のK(K=1〜Mのいずれか)ビットの情報量を有し、
前記スカラー倍算処理は、
前記入力スカラー値を前記変換スカラー値に変換するスカラー値変換処理と、
前記入力座標点に基づき、前記入力座標点を偶数倍して偶数倍座標点を複数種有する倍数テーブルを作成するテーブル作成処理と、
前記スカラー値変換処理及び前記テーブル作成処理の実行後に、前記複数の桁部演算処理を実行するスカラー倍算本処理とを含み、
前記2倍算処理は前記2倍算演算部をM回繰り返し用いて1回倍算値〜M回倍算値を得た後、K回倍算値を選択する処理を含み、
前記非ゼロ演算処理は、前記桁部の値が正の場合に実行される第1の非ゼロ演算処理と
前記桁部の値が負の場合に実行される第2の非ゼロ演算処理とを含み、前記第1及び第2の非ゼロ演算処理は共に前記2倍算処理、前記第1の加算処理、及び前記第2の加算処理の順で行い、前記第2の加算処理の演算結果を桁部演算結果としている、
スカラー倍算装置。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、入力座標点をスカラー倍算してスカラー倍算値を得るスカラー倍算装置に関する。
【背景技術】
【0002】
楕円曲線暗号の主演算であるスカラー倍算処理は、有理点Pとスカラー(倍数)値dの乗算を行うことで、スカラー倍算値dP(スカラー倍数点)を求める演算処理である。楕円曲線暗号はスカラー倍算値dPからスカラー値dを求めるのは困難なこと(楕円曲線上の離散対数問題(ECDLP))を安全性の根拠としている。
【0003】
楕円曲線上の有理点の演算は、無限遠点を零元とする加群を成す。一般的に直線を用いた加算、2倍算の2種類が定義される。これらの演算は、スカラー(倍数)値dをバイナリ法などの加算鎖アルゴリズムによってビット展開し、各ビットの値によって加算、2倍算を行うことで、スカラー倍算処理を実現している。しかし、処理時間はスカラー値dに依存して変化(タイミングリークが発生)するため、スカラー値dが漏洩するという問題がある。タイミングリークの回避策としては、スカラー値dのビット値が“0”の場合でもダミー演算を行うことが考えられるが、非特許文献1によってフォルト挿入によるセーフエラー攻撃によってダミー演算からスカラー値dの漏洩の可能性が指摘されている。また特許文献1〜特許文献6において様々なサイドチャネル攻撃対策が提案されているが、各種入力データ(スカラー値d、有理点P)を写像や変換を行う必要があるため、主演算であるスカラー倍算処理以外に用いる演算器や制御機構が必要なため実装コストが高くなる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第4783061号公報
【特許文献2】特許第4284320号公報
【特許文献3】特許第4668931号公報
【特許文献4】特許第5233473号公報
【特許文献5】特許第5488718号公報
【特許文献6】特許第5573964号公報
【非特許文献】
【0005】
【非特許文献1】菅原 健、鈴木 大輔,『楕円群演算において無限遠点が特別扱いされることを利用したECDSAのセーフエラー攻撃』(SCIS2015)
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したように、ダミー演算によるタイミングリーク回避策を施した従来のスカラー倍算装置は、フォルト挿入によるセーフエラー攻撃に弱いという問題点があった。また、サイドチャネル攻撃対策にスカラー倍算処理以外の種々の演算処理を余分に実行するようにしたスカラー倍算装置は実装コストが高くなるという問題点があった。
【0007】
この発明は上記問題点を解決するためになされたもので、サイドチャネル攻撃に強く、セキュリティー性が高いスカラー倍演算処理を実行するスカラー倍算装置を比較的簡単な構成で得ることを目的とする。
【課題を解決するための手段】
【0008】
この発明に係る請求項1記載のスカラー倍算装置は、入力座標点及び入力スカラー値を受け、前記入力座標点のスカラー倍算値を得るスカラー倍算装置であって、2つの入力値の加算演算を実行する加算演算部と、1つの入力値の2倍算演算を実行する2倍算演算部と、前記入力スカラー値あるいは前記入力スカラー値を変換して得られる変換スカラー値を演算用スカラー値とし、前記演算用スカラー値と前記入力座標点とを演算対象として、スカラー倍算処理を行い前記スカラー倍算値を得るスカラー倍演算機構とを備え、前記演算用スカラー値は複数の桁部を有し、前記複数の桁部はそれぞれ少なくとも1ビットの情報量を有し、前記スカラー倍算処理は、前記複数の桁部に対応して実行され各々が桁部演算結果を得る複数の桁部演算処理を含み、前記複数の桁部演算処理の実行により、隣接する桁部間で上位から下位に桁部演算結果を伝搬しつつ、最上位から最下位にかけて桁部単位に桁部演算結果を順次得て、最下位の桁部より得られる桁部演算結果を前記スカラー倍算値とし、前記複数の桁部演算処理はそれぞれ、前記加算演算部及び前記2倍算演算部を用いて実行され、桁部の値が“0”の場合はゼロ演算処理を実行して桁部演算結果を取得し、“0”以外の場合は前記ゼロ演算処理と異なる演算内容の非ゼロ演算処理を実行して桁部演算結果を取得し、前記ゼロ演算処理及び前記非ゼロ演算処理を共に、2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、前記第2の加算処理の演算結果を桁部演算結果としたことを特徴としている。
【発明の効果】
【0009】
請求項1記載の本願発明におけるスカラー倍算装置は、上記特徴を有することにより、ゼロ演算処理及び非ゼロ演算処理間で共通の演算処理(2倍算処理、第1及び第2の加算処理)の実行後にはじめて桁部演算結果を得ている。このため、演算用スカラー値の桁部の値が“0”か非“0”かによって演算処理時間の変化が生じない。したがって、ゼロ演算処理及び非ゼロ演算処理間における演算処理時の差異に基づくタイミングリークを確実に回避することができる。
【0010】
さらに、ゼロ演算処理及び非ゼロ演算処理間で実行される2倍算処理、第1及び第2の加算処理は全て桁部演算結果を得るために必要な演算処理であり、演算結果が利用されないダミー演算処理ではない。したがって、ダミー演算処理に対するセーフエラー攻撃が実行されることもない。
【0011】
加えて、スカラー倍算処理以外のサイドチャネル攻撃用の演算処理を特に施していないため、比較的簡単な構成で実現できる。
【0012】
その結果、タイミングリークの検知及びセーフエラー攻撃を含むサイドチャネル攻撃に強く、セキュリティー性が高いスカラー倍算処理を実行するスカラー倍算装置を得ることができる。
【図面の簡単な説明】
【0013】
図1】本願発明のスカラー倍算装置のスカラー倍算アルゴリズムの概要を示す説明図である。
図2】実施の形態1(〜4)のスカラー倍算装置の構成を示すブロック図である。
図3】実施の形態1のスカラー倍算アルゴリズムを模式的に示す説明図である。
図4】実施の形態1のスカラー倍算アルゴリズムの実行例を模式的に示す説明図である。
図5】Window法における変換アルゴリズムを模式的に示す説明図である。
図6】Window法における従来の事前計算アルゴリズムを模式的に示す説明図である。
図7】Window法における従来の本計算アルゴリズムを模式的に示す説明図である。
図8】実施の形態2の事前計算アルゴリズムを模式的に示す説明図である。
図9】実施の形態2の本計算アルゴリズムを模式的に示す説明図である。
図10】実施の形態2の本計算アルゴリズムの実行例を模式的に示す説明図である。
図11】NAF法における変換アルゴリズムを模式的に示す説明図である。
図12】NAF法における従来の本計算アルゴリズムを模式的に示す説明図である。
図13】実施の形態3の本計算アルゴリズムを模式的に示す説明図である。
図14】実施の形態3の本計算アルゴリズムの実行例を模式的に示す説明図である。
図15】wNAF法における従来の変換アルゴリズムを模式的に示す説明図である。
図16】wNAF法における従来の事前計算アルゴリズムを模式的に示す説明図である。
図17】wNAF法における従来の本計算アルゴリズムを模式的に示す説明図である。
図18】実施の形態4の変換アルゴリズムを模式的に示す説明図である。
図19】実施の形態4の事前計算アルゴリズムを模式的に示す説明図である。
図20】実施の形態4の本計算アルゴリズムを模式的に示す説明図である。
図21】実施の形態4の本計算アルゴリズムの実行例を模式的に示す説明図(その1)である。
図22】実施の形態4の本計算アルゴリズムの実行例を模式的に示す説明図(その2)である。
図23】楕円曲線を示す説明図である。
図24】従来のバイナリ法のアルゴリズムを示す説明図である。
図25】ダミー演算処理を実行する、従来のバイナリ法のアルゴリズムを示す説明図である。
【発明を実施するための形態】
【0014】
<発明の原理>
(楕円曲線暗号について)
公開鍵暗号としてはRSA暗号が普及しているが、近年、同じ安全性をより短い鍵長で実現できる楕円曲線暗号の普及が進んできており、デジタル家電の認証や、著作権保護に採用されている。楕円曲線暗号のもう一つ特筆すべき点は、楕円曲線上のペアリングと呼ばれる双線形写像を用いたペアリング暗号へ拡張できることである。ペアリングを利用した暗号プロトコルの研究が盛んになっており、そのような暗号としては、IDベース暗号、タイムリリース暗号、属性ベース暗号、検索可能暗号、関数型暗号などがある。
【0015】
(楕円曲線の定義)
図23は楕円曲線を示す説明図である。本明細書では、Weierstrass標準形E:{y=x+ax+b}で与えられる標数p>3の有限体F上の楕円曲線の場合について記述する。楕円曲線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の時は、E(F)は有限群となり、その位数を#E(F)と表記する。
【0017】
この幾何学的な加法は点の座標を用いて記述することができる。P=(x,y)、Q=(x,y)とすると、P+Q=(x,y)は以下の式(1)〜式(3)で与えられる。
【0018】
【数1】
【0019】
【数2】
【0020】
【数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進数{ds−1,ds−2,…,d,d}で表される。すなわち、スカラー値dは各々が1ビットの情報量を有するs個の桁部により表される。
【0027】
そして、スカラー値dに対し、最上位桁(s−1)から、最下位桁0にかけて、ステップST3の2倍算関数ECDBL(Q)後に、各桁部の値d(i=(s−1)〜0のいずれか)が“1”であるか否か(“0”であるか否か)に基づき、ステップST4の加算関数ECADD(P,Q)の実行の有無が分けられる桁部演算処理を実行し、最終的に最下位桁0のdの桁部演算処理によって得られる値Q(桁部演算結果)が、スカラー倍算値dPとして得られる。
【0028】
このように、Left to Rightバイナリ法は、スカラー値dを2進数表記にしたときの各桁部(ビット)の値dによってステップST4の加算処理を行うかどうかが分岐するという特徴がある。
【0029】
(課題)
楕円曲線の演算は、一般的に楕円曲線上の点を通る直線により、有理点の加算、及び2倍算という加法が定義され、Left to Rightバイナリ法等の加算鎖アルゴリズムによって、加算(ECADD(P,Q))及び2倍算(ECDBL(Q))に展開することによってスカラー倍算処理を実現している。
【0030】
しかし、バイナリ法のアルゴリズムは秘密鍵となるスカラー(倍数)値dの各ビット値dに依存して処理時間が変化するタイミングリークが発生するため、スカラー値dが漏洩する恐れがある。
【0031】
図25はダミー演算処理を挿入した、従来のLeft to Rightバイナリ法のアルゴリズムを示す説明図である。なお、図25で示すスカラー倍算アルゴリズムAR52において、1:,2:,…8:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST8と呼ぶ。
【0032】
図25のスカラー倍算アルゴリズムAR52に示すように、一般的な対策としては、ステップST5で示すダミー演算(加算関数ECADD(Q,P))を挿入してスカラー値dのビット値dに関わらず、処理時間を一定にしている。
【0033】
このステップST5のダミー演算により得られた変数Dは、演算後破棄される。ダミー演算を挿入することにより、スカラー値dのビット値dの“0”,“1”(ゼロであるか、非ゼロであるか)に依存せず処理時間が同じになるためタイミングリークを回避することができる。
【0034】
しかし、このようなダミー演算がある場合、非特許文献1に開示されたように、フォルト挿入により中間結果が無限遠点Oに入った時に限り、誤りが伝播しないことを利用してスカラー倍数値を推定するセーフエラー攻撃に弱いという問題点があった。
【0035】
以下、セーフエラー攻撃例を説明する。スカラー倍算アルゴリズムAR52のステップST4またはステップST5で、{Q+P→O}となるようなフォルトを挿入する(例えば、Q=−Pとする)。
【0036】
すると、次に実行される(仮にi=n−1とする)ステップST3で、2Q→Oとなる場合は、d=1、そうでない場合はd=0と推定することができる。以下、この点を詳述する。
【0037】
ステップST4で{Q+P→O}となるようにフォルトを挿入すると、次に実行されるステップST3で“0”の倍算時に無限遠点Oであることが判明し例外処理が実行されることにより、d=1であったと予測できる。
【0038】
一方、ステップ5で{Q+P→O}となるようにフォルトを挿入しても、D(ダミー演算結果)は破棄されるため、次に実行されるステップST3で“0”の倍算時に無限遠点Oとならず例外処理が実行されないことにより、d=0であったと予測できる。
【0039】
このように、ダミー演算を挿入して、d=“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が“1”の場合、{Q←2Q+P}の演算式1による桁部演算処理(非ゼロ演算処理)を行い、スカラー値dの桁部のビット値dが“0”の場合、{Q←2Q}の演算式2による桁部演算処理(ゼロ演算処理)を行って、それぞれ桁部演算結果を得る必要がある。
【0044】
このように、バイナリ法に代表されるスカラー倍算アルゴリズムは、桁部の値が“0”の場合に実行するゼロ演算処理と、“1”の場合(“0”以外の場合)に実行する非ゼロ演算処理とは演算処理内容が異なっている。
【0045】
そこで、本願発明は、スカラー値dの桁部のビット値dが“1”の場合、図1(a)に示すように、ステップSP11〜SP13を実行することにより、{Q←2Q+P}の演算式1を実現している。ステップSP11は2倍算処理であり、ステップSP12及びSP13は加算処理(第1及び第2の加算処理)である。
【0046】
一方、スカラー値dの桁部のビット値dが“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={ds−1,ds−2,…,d,dで表される。例えば、図4(a)に示すように、s=12とした、スカラー値d“101001111011”(=(2683)10)の値を有する、d11〜dがスカラー倍算用演算部1内に取り込まれ、必要に応じて記憶部8に格納される。
【0067】
(3)1つ上位の桁部における桁部演算結果Q(初期値は無限遠点O)の2倍算値(2倍点)2Qを計算し、記憶部8に格納する(図3のステップST3に相当)。
【0068】
例えば、MSB(最上位(s−1))の桁部の値d11に対する演算処理P1では、桁部演算結果Qの初期値は無限遠点Oであるため、2倍算関数ECDBL(Q)の演算結果も無限遠点Oとなり、ステップST3が実行されない場合と実質的に同じになる(図4では図示せず)。
【0069】
また、MSB−1(=s−2)の桁部の値d10に対する演算処理P2(1行目)では、1つ上位の桁部の演算処理P1の桁部演算結果QがPであったため、Pの2倍算値2P(=P×2)が得られる。
【0070】
(4)d(i=(s−1)〜0のいずれか)が“1”の場合、A=2Pとして加算処理(Q+A)(第1の加算処理)を実行し(ステップST4に相当)、dが“0”の場合、A=Pとして加算処理(Q+A)(第1の加算処理)を実行する(図3のステップST5に相当)。
【0071】
例えば、d(=“1”)に対して行う演算処理P3(2行目)では、Q(=4P)+2Pの加算処理が実行され、d(=“0”)に対して行う演算処理P4(2行目)では、Q(=10P)+Pの加算処理が実行される。
【0072】
(5)B=−Pとして加算処理(第2の加算処理)を実行して、i桁の桁部(d)の桁部演算結果Qを得る(ステップST6に相当)。
【0073】
例えば、d(=“1”)に対して行う演算処理P3(3行目)では、Q(=6P)+(−P)の加算処理が実行される。
【0074】
(6)桁数iを“1”繰り下げた後(ステップST7に相当)、上記処理(3)〜(5)を繰り返す。
【0075】
そして、スカラー倍算用演算部1は、最終的にi=0のとき、dに対する演算処理P12の第2の加算処理(処理(5))によって得られるLSB(最下位“0”)の桁部の桁部演算結果Q=2683Pが、スカラー倍算値dPとなる。
【0076】
このように、演算処理P1〜P12のうち、最初の演算処理P1を除いて、dの値の“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が“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”(=(2683)であり、M=w=4の場合、スカラー値変換処理を実行することにより、スカラー値dを4ビット単位にWindow変換して、変換スカラー値b(データb=“1010”、データb=“0111”)、データb=“1011”)を得ることができる。すなわち、変換スカラー値bは、データb〜データbを有する3つの桁部から構成される。
【0092】
図6はWindow法における従来のテーブル作成処理である事前計算アルゴリズムAR62を模式的に示す説明図である。なお、図6で示す事前計算アルゴリズムAR62において、1:,2:,…5:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST5と呼ぶ。
【0093】
図6で示す事前計算アルゴリズムAR62を実行することにより、入力座標点Pを整数倍して得られる整数倍座標点を複数種計算し、{テーブルT〜Tβ}として記憶部8内に格納される。
【0094】
図7はWindow法における従来のスカラー倍算本処理である本計算アルゴリズムAR63を模式的に示す説明図である。なお、図7で示す本計算アルゴリズムAR63において、1:,2:,…11:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST11と呼ぶ。
【0095】
このように、変換アルゴリズムAR61、事前計算アルゴリズムAR62及び本計算アルゴリズムAR63からなるスカラー倍算処理を実行するのが従来のWindow法である。
【0096】
図7に示すように、従来のスカラー倍算本処理では、変換スカラー値bの桁部の値bが非“0”の場合はステップST7及びST8が実行され、値bが“0”の場合はステップST7及びST8が実行されない。
【0097】
したがって、従来のWindow法に対するサイドチャネル攻撃については、桁部の値(Window値)であるbが“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〜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={bn−1,…,b}で表される。例えば、図10(a)に示すように、n=3とした、変換スカラー値b(データb=10、データb=7、データb=11)の値を有する、b〜bとなる。
【0111】
(3)1つ上位の桁部における桁部演算結果A(初期値“無限遠点O”)の2倍点(w回倍算値)である2Aを計算し、記憶部8に格納する(図9のステップST2〜ST4に相当)。
【0112】
例えば、MSB(最上位(n−1))の桁部の値bに対する演算処理P1では、桁部演算結果Aの初期値は無限遠点Oであるため、2倍算関数ECDBL(A)の演算結果も無限遠点Oとなり、ステップST2〜ST4が実行されない場合と実質的に同じになる(図10では図示せず)。
【0113】
また、MSB−1(=n−2)の桁部の値bに対する演算処理P2(1〜4行目)では、1つ上位の桁部の演算処理P1の桁部演算結果Aが10Pであったため、Pの2倍算を4(=M=w)回繰り返して行う4回倍算値である倍算値160P(=10P×2×2×2×2)が得られる。
【0114】
(4)b(i=(n−1)〜0のいずれか)が非“0”の場合、B=ePとして決定した(図9のステップST5及びST6に相当)後、加算処理(A+B)(第1の加算処理)を実行する(図9のステップST10に相当)。
【0115】
なお、eはbの値により選択される入力座標点Pの倍数値を意味し、e=(b+1)となる。すなわち、bが非“0”の場合、事前計算アルゴリズムAR12に沿ったテーブル作成処理によって得られた倍数テーブル{テーブルT〜Tβ}のうち、Tbi−1に合致する値が選択される。このように、第1の加算処理は非ゼロ演算処理の実行時に倍数テーブルを用いて行われる。
【0116】
例えば、b(=“7”)に対して行う演算処理P2(5行目)では、e=b+1=8となり、A(=160P)+8Pの加算処理が実行される。
【0117】
一方、bが“0”の場合、B=Pとして決定した(図9のステップST7及びST8に相当)後、加算処理(A+B)(第1の加算処理)を実行する(図9のステップST10に相当)。
【0118】
(5)−Pを用いた加算処理(第2の加算処理)を実行して、i桁の桁部(b)の桁部演算結果Aを得る(図9のステップST11に相当)。
【0119】
例えば、bに対して行う演算処理P2(6行目)では、A(=168P)+(−P)の加算処理が実行される。
【0120】
(6)桁数iを“1”繰り下げた後(ステップST1及びST12に相当)、上記処理(3)〜(5)を繰り返す。
【0121】
そして、スカラー倍算用演算部1は、最終的にi=0のとき、bに対する演算処理P3の第2の加算処理(処理(5))によって得られるLSB(最下位“0”)桁部の桁部演算結果A=2683Pを、スカラー倍算値dPとして出力する(図9のステップST13に相当)。
【0122】
このように、実施の形態2のスカラー倍算装置は、スカラー倍算処理として、変換アルゴリズムAR11を採用したスカラー値変換処理、事前計算アルゴリズムAR12を採用したテーブル作成処理及び本計算アルゴリズムAR13を採用したスカラー倍算本処理を実行している。
【0123】
したがって、図10(b)に示すように、演算処理P1〜P3のうち、最初の演算処理P1を除いて、bの値の“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が“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〜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は正負の情報を含んでいる。値aの正負決定処理は、図11のステップST4〜ST7の処理で行われる。
【0140】
例えば、スカラー値dが“101001111011”(=(2683))の場合、変換アルゴリズムAR71を採用したスカラー値変換処理を実行することにより、スカラー値dを1ビット単位にNAF変換して、変換スカラー値a=“101010000(−1)0(−1)”を得ることができる。すなわち、変換スカラー値aは、データa11〜データaを有する12個の桁部から構成される。
【0141】
図12はNAF法における従来のスカラー倍算本処理である本計算アルゴリズムAR73を模式的に示す説明図である。なお、図12で示す本計算アルゴリズムAR73において、1:,2:,…10:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST10と呼ぶ。
【0142】
このように、変換アルゴリズムAR71、及び本計算アルゴリズムAR73からなるスカラー倍算処理を実行するのが従来のNAF法である。
【0143】
図12に示すように、従来のスカラー倍算本処理では、変換スカラー値aの桁部の値aが非“0”の場合はステップST5あるいはステップST7を実行している。すなわち、a=“1”の場合はステップST5が実行され、a=“−1”の場合はステップST7が実行される。このように、NAF法では、非ゼロ演算処理として互いに異なる2つの非ゼロ演算処理(第1及び第2の非ゼロ演算処理)を有している。
【0144】
一方、値aが“0”の場合はステップST5及びST7は共に実行されない。
【0145】
したがって、従来のNAF法に対するサイドチャネル攻撃については、桁部の値であるaが“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={an−1,…,a}で表される。例えば、図14(a)に示すように、n=12とした、変換スカラー値a=“101010000(−1)0(−1)”の値を有する、a11〜aがスカラー倍算用演算部1に出力される。
【0156】
(3)1つ上位の桁部における桁部演算結果A(初期値“0”)の2倍算点である2Aを計算し、記憶部8に格納する(図13のステップST3に相当)。
【0157】
例えば、MSB(最上位(n−1))の桁部の値a11に対する演算処理P1では、桁部演算結果Aの初期値は無限遠点O”であるため、2倍算関数ECDBL(A)の演算結果も無限遠点Oとなり、ステップST3が実行されない場合と実質的に同じになる(図14では図示せず)。
【0158】
また、MSB−1(=n−2)の桁部の値a10に対する演算処理P2(1行目)では、1つ上位の桁部の演算処理P1の桁部演算結果AがPであったため、Pの2倍算を行って倍算値2P(=P×2)が得られる。
【0159】
(4)a(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(=“1”)に対して行う演算処理P3(2行目)では、第1の加算処理として、A(=4P)+B(=2P)の加算処理が実行され、演算処理P3(3行目)では、第2の加算処理として、A(=6P)+B(=−P)の加算処理が実行される。
【0161】
また、a(=“−1”)に対して行う演算処理P10(2行目)では、第1の加算処理として、A(=672P)+B(=−2P)の加算処理が実行され、演算処理P10(3行目)では、第2の加算処理として、A(=670P)+B(=P)の加算処理が実行される。
【0162】
一方、aが“0”の場合、{B=P,C=−P}に設定した(図13のステップST9)後、加算処理(A+B)(第1の加算処理)を実行し(図13のステップST11に相当)、さらに、その後、加算処理(A+C)(第2の加算処理)を実行する(図13のステップST12に相当)。
【0163】
例えば、a10(=“0”)に対して行う演算処理P2(2行目)では、第1の加算処理として、A(=2P)+B(=P)の加算処理が実行され、演算処理P2(3行目)では、第2の加算処理として、A(=3P)+B(=−P)の加算処理が実行される。
【0164】
上述した第2の加算処理(図13のステップST11に相当)を実行した後、i桁の桁部(a)の桁部演算結果Aを得ることができる。桁部演算結果Aは適宜記憶部8に格納される。
【0165】
(5)桁数iを“1”繰り下げた後(ステップST2及びST13に相当)、上記処理(3)〜(4)を繰り返す。
【0166】
そして、スカラー倍算用演算部1は、最終的にi=0のとき、aに対する演算処理P12の第2の加算処理(処理(4))によって得られるLSB(最下位“0”)桁部の桁部演算結果A=2683Pを、スカラー倍算値dPとして出力する(図13のステップST14に相当)。
【0167】
このように、実施の形態3のスカラー倍算装置は、スカラー倍算処理として、変換アルゴリズムAR21を採用したスカラー値変換処理、及び本計算アルゴリズムAR23を採用したスカラー倍算本処理を実行している。
【0168】
したがって、演算処理P1〜P12のうち、最初の演算処理P1を除いて、aの値の“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が“0”の場合にゼロ演算処理(図13のステップST9を固有の実行とする処理)を実行して桁部演算結果Aを取得し、非“0”の場合は上記ゼロ演算処理と異なる演算内容の非ゼロ演算処理(図13のステップST5あるいはST7を固有の実行とする処理)を実行して桁部演算結果Aを取得している。
【0171】
そして、実施の形態3のスカラー倍算装置は、実施の形態1と同様、上記ゼロ演算処理及び上記非ゼロ演算処理を共に、2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、第2の加算処理の演算結果を桁部演算結果としたことを特徴としている。
【0172】
さらに、実施の形態3のスカラー倍算装置は、非ゼロ演算処理として桁部の値aが正の場合に実行される第1の非ゼロ演算処理(図13のステップST3,ST5、ST11及びST12に相当)と、桁部の値aが負の場合に実行される第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は正負の情報を含んでいる。値bの正負決定処理は、図15のステップST4〜ST7の処理で行われる。
【0185】
例えば、スカラー値dが“101001111011”(=(2683))の場合、変換アルゴリズムAR81を採用したスカラー値変換処理を実行することにより、スカラー値dを1ビット単位にwNAF変換して、変換スカラー値b(=10005000000(−5))を得ることができる。すなわち、変換スカラー値bは、データb11〜データbを有する12個の桁部から構成される。
【0186】
図16はwNAF法における従来のテーブル作成処理である事前計算アルゴリズムAR82を模式的に示す説明図である。なお、図16で示す事前計算アルゴリズムAR82において、1:,2:,…5:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST5と呼ぶ。
【0187】
図16で示す事前計算アルゴリズムAR82を実行することにより、入力座標点Pを奇数倍して得られる奇数倍座標点を複数個計算し、{テーブルT〜Tβ}として記憶部8内に格納される。
【0188】
図17はwNAF法における従来のスカラー倍算本処理である本計算アルゴリズムAR83を模式的に示す説明図である。なお、図17で示す本計算アルゴリズムAR83において、1:,2:,…10:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST10と呼ぶ。
【0189】
このように、変換アルゴリズムAR81、事前計算アルゴリズムAR82及び本計算アルゴリズムAR83からなるスカラー倍算処理を実行するのが従来のwNAF法である。
【0190】
図17に示すように、wNAF法を採用した従来のスカラー倍算本処理では、変換スカラー値bの桁部の値bが非“0”の場合はステップST5あるいはステップST7が実行される。すなわち、bが正の場合はステップST5が実行され、bが負の場合はステップST7が実行される。このように、wNAF法では、非ゼロ演算処理として互いに異なる2つの非ゼロ演算処理(第1及び第2の非ゼロ演算処理)を有している。
【0191】
一方、値bが“0”の場合はステップST5及びST7は全てが実行されない。
【0192】
したがって、従来のwNAF法に対するサイドチャネル攻撃については、桁部の値であるbが“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は正負の情報を含んでいる。値bの正負決定処理は、図18のステップST5〜ST8の処理で行われる。
【0199】
例えば、スカラー値dが“101001111011”(=(2683))の場合、変換アルゴリズムAR31を採用したスカラー値変換処理を実行することにより、スカラー値dをwNAF変換して、変換スカラー値b(データb=“1”(K=1ビット情報量)、データb=“5”(K=4ビット情報量)、データb=“0”(K=3ビット情報量)、データb=“−5”(K=4ビット情報量))を得ることができる。すなわち、変換スカラー値bは、データb〜データbを有する4個の桁部から構成される。
【0200】
また、bが非“0”の場合のビット数Kとなるlen(Window幅)は最大のM=w+1(ビット)となり(図18のステップST9〜ST11の処理)、bが“0”の場合のビット数Kとなるlenは1〜Mビットのうちのいずれか(図18のステップST14〜ST16の処理)となる。
【0201】
例えば、スカラー値dが“101001111011”の場合、b〜bの{1,5,0,−5}に対応して、len〜len={4,4,3,4}となる。
【0202】
変換スカラー値生成部3はスカラー値dを受け、スカラー値dに基づき、変換アルゴリズムAR31によるスカラー値変換処理を実行して変換スカラー値bを取得し、その後、変換スカラー値bをスカラー倍算用演算部1に出力する。この際、bのビット数Kを示すlenも併せてスカラー倍算用演算部1に出力する。
【0203】
そして、スカラー倍算用演算部1は、変換スカラー値生成部3から変換スカラー値bのb及びビット数Kを示すlenを受け、変換スカラー値b及び入力座標点Pを演算対象として後述するスカラー倍算本処理を実行してスカラー倍算値dPを得る。なお、変換スカラー値b、入力座標点及びビット数Kを示すlenは必要に応じて記憶部8に格納される。
【0204】
図19はwNAF法における実施の形態4のテーブル作成処理である事前計算アルゴリズムAR32を模式的に示す説明図である。なお、図19で示す事前計算アルゴリズムAR32において、1:,2:,…5:は実行ステップ位置を示す。以下、実行ステップ位置を基準にしてステップST1〜ST5と呼ぶ。
【0205】
図19で示す事前計算アルゴリズムAR32を実行することにより、入力座標点Pを偶数倍して得られる偶数倍座標点を複数個計算し、{テーブルT,T〜Tβ}として記憶部8に格納される。この際、T(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とともに、bn−1〜bのビット数Kを示すlenn−1〜lenがスカラー倍算用演算部1に出力される。
【0209】
(2)上記処理(1)の際、wNAF法のアルゴリズムで計算を行うため、変換スカラー値bに関しn個の桁部がそれぞれ正負を含むM(=w+1)ビット以下のKビットの情報を有する表記とする。
【0210】
図20に示すように、変換スカラー値b={bn−1,…,b}で表される。例えば、図21(a)に示すように、n=4とした、変換スカラー値b=(b=“1”、b=“5”、b=“0”、データb=“−5”)の値を有する、b〜bがlen〜lenと共にスカラー倍算用演算部1に出力され、必要に応じて記憶部8に格納される。
【0211】
(3)1つ上位の桁部における桁部演算結果A(初期値“0”)の2倍算点〜2w+1倍算点である2A〜2w+1A(1回倍算値〜M(=w+1)回倍算値)を計算し、記憶部8に格納する(図20のステップST2〜ST5に相当)。
【0212】
例えば、MSB(最上位(n−1))の桁部の値bに対する演算処理P1では、桁部演算結果Aの初期値は無限遠点Oであるため、2倍算関数ECDBL(A)の演算結果も無限遠点Oとなり、ステップST2〜ST5が実行されない場合と実質的に同じになる(図21では図示せず)。すなわち、図22の加算・減算処理AS3のみが実行されることになる。
【0213】
また、MSB−1(=n−2)の桁部の値bに対する演算処理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=4のため、倍数選択処理LS2(図20のステップST6及びST7に相当)によって4回倍算値(=K回倍算値)である16Pが選択される。
【0214】
(4)b(i=(n−1)〜0のいずれか)が正の場合(非“0”)は{B=Tbi+1,C=−P}に設定し(図20のステップST9に相当)、負の場合(非“0”)は{B=−T1−bi,C=P}に設定する(図20のステップST11)。その後、加算処理(A+B)(第1の加算処理)を実行し(図20のステップST15に相当)、さらに、その後、加算処理(A+C)(第2の加算処理)を実行する(図20のステップST16に相当)。
【0215】
例えば、b(=“5”)に対して行う演算処理P2(5行目)では、第1の加算処理として、A(=16P)+B(=6P=T)の加算処理が実行され、演算処理P2(6行目)では、第2の加算処理として、A(=22P)+B(=−P)の加算処理が実行される。すなわち、図22の加算・減算処理AS2のように、A(=16P)に対して+5Pを加算する処理が実行されたことになる。
【0216】
また、b(=“−5”)に対して行う演算処理P4(5行目)では、第1の加算処理として、A(=2688P)+B(=−6P=−T)の加算処理が実行され、演算処理P4(6行目)では、第2の加算処理として、A(=2682P)+B(=P)の加算処理が実行される。すなわち、図22の加算・減算処理AS0のように、A(=2688P)に対して−5Pを加算(5Pを減算する)する処理が実行されたことになる。
【0217】
一方、bが“0”の場合、{B=P,C=−P}に設定した(図20のステップST13)後、加算処理(A+B)(第1の加算処理)を実行し(図20のステップST15に相当)、さらに、その後、加算処理(A+C)(第2の加算処理)を実行する(図20のステップST16に相当)。
【0218】
例えば、b(=“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)の桁部演算結果Aを得ることができる。
【0220】
(5)桁数iを“1”繰り下げた後(ステップST1及びST17に相当)、上記処理(3)〜(4)を繰り返す。
【0221】
そして、スカラー倍算用演算部1は、最終的にi=0のとき、bに対する演算処理P4の第2の加算処理(処理(4))によって得られるLSB(最下位“0”)桁部の桁部演算結果A=2683Pを、スカラー倍算値dPとして出力する(図20のステップST18に相当)。
【0222】
このように、実施の形態4のスカラー倍算装置は、スカラー倍算処理として、変換アルゴリズムAR31を採用したスカラー値変換処理、事前計算アルゴリズムAR32を採用したテーブル作成処理及び本計算アルゴリズムAR33を採用したスカラー倍算本処理を実行している。
【0223】
したがって、スカラー倍算用演算部1は、演算処理P1〜P4のうち、最初の演算処理P1を除いて、bの値の“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=3のため、2倍算を3(=w=M−1)回繰り返して得られる3回倍算値(S)を選択している(ステップST6及びST7)。すなわち、図22に示すように、2倍算を1〜4回繰り返して得られる1回倍算値(42P)〜4回倍算値(336P)のうち、倍数選択処理LS1により3回倍算値(=K回倍算値)である2倍算処理結果168Pを選択している。
【0225】
一方、演算処理P2及び演算処理P4では共にビット数Kを示すlen=len=4のため、2倍算を4(=w+1=M)回繰り返して得られる4回倍算値(S)を選択している(ステップ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が“0”の場合にゼロ演算処理(図20のステップST13を固有の実行とする処理)を実行して桁部演算結果Aを取得し、非“0”の場合は上記ゼロ演算処理と異なる演算内容の非ゼロ演算処理(図20のステップST9あるいはST11を固有の実行とする処理)を実行して桁部演算結果Aを取得している。
【0230】
そして、実施の形態4のスカラー倍算装置は、実施の形態1と同様、上記ゼロ演算処理及び上記非ゼロ演算処理を共に、(M(=w+1)回繰り返して行う)2倍算処理、第1の加算処理、及び第2の加算処理の順で行い、第2の加算処理の演算結果を桁部演算結果としたことを特徴としている。
【0231】
さらに、実施の形態4のスカラー倍算装置は、非ゼロ演算処理として桁部の値bが正の場合に実行される第1の非ゼロ演算処理(図20のステップST2〜ST5,ST9、ST15及びST16に相当)と、桁部の値bが負の場合に実行される第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】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略したりすることが可能である。
【符号の説明】
【0255】
1 スカラー倍算用演算部
3 変換スカラー値生成部
5 加算演算部
6 2倍算演算部
8 記憶部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25