JP2007187958A - 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム - Google Patents

暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Download PDF

Info

Publication number
JP2007187958A
JP2007187958A JP2006007105A JP2006007105A JP2007187958A JP 2007187958 A JP2007187958 A JP 2007187958A JP 2006007105 A JP2006007105 A JP 2006007105A JP 2006007105 A JP2006007105 A JP 2006007105A JP 2007187958 A JP2007187958 A JP 2007187958A
Authority
JP
Japan
Prior art keywords
scalar
jrf
scalar value
calculation
expression
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006007105A
Other languages
English (en)
Other versions
JP4682852B2 (ja
Inventor
Toru Akishita
徹 秋下
Masanori Kataki
雅宣 堅木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2006007105A priority Critical patent/JP4682852B2/ja
Priority to KR1020070003225A priority patent/KR101269737B1/ko
Priority to US11/653,182 priority patent/US7835517B2/en
Priority to CN2007100017341A priority patent/CN101005350B/zh
Priority to EP07100626A priority patent/EP1808762B1/en
Priority to DE602007001538T priority patent/DE602007001538D1/de
Publication of JP2007187958A publication Critical patent/JP2007187958A/ja
Application granted granted Critical
Publication of JP4682852B2 publication Critical patent/JP4682852B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4824Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices using signed-digit representation

Landscapes

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

Abstract

【課題】楕円曲線暗号処理において高速な演算を実現する装置および方法を実現する。
【解決手段】楕円曲線暗号におけるスカラー倍加算演算kP+lQの実行構成において、スカラー値k,lの対応ビット位置のビットの組み合わせ(k,l)を、(k,l)=(0,±1)または(±1,0)としたJRF表現スカラー値を適用してスカラー倍加算の演算を実行する。本構成により、(k,l)のすべての組み合わせにおいて同一の演算処理シーケンスが実行され、ビットの組み合わせに応じた処理の差異が発生せず電力解析に対する耐性が向上する。また、P+Qの事前計算を省略することが可能となり、演算処理の高速化が実現される。
【選択図】図1

Description

本発明は、暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、楕円曲線暗号におけるスカラー倍加算点kP+lQや超楕円曲線暗号におけるスカラー倍加算因子kD+lDの算出の高速化を実現する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が行なわれている。
例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号化を行なうシステムが実用化されている。
暗号処理を実行する例えばICカードは、例えば駅の改札などの様々なゲート、あるいはショッピングセンターなどで盛んに利用されるようになっており、小型化および処理の迅速化の要求が厳しくなってきている。
暗号化方式には、大別して共通鍵方式、公開鍵方式がある。共通鍵方式は、対称暗号方式ともよばれ、発信者、受信者の双方で共通の鍵を保有する。共通鍵方式の代表的な方法として、DES(Data Encryption Standard)がある。DESアルゴリズムの特徴は、暗号化と復号化とをほぼ同じアルゴリズムで実行可能なことである。
この共通鍵暗号に対して、発信者と受信者の鍵を異なるものとした構成が公開鍵方式または非対称暗号方式である。公開鍵暗号方式では、暗号化、復号化に共通の鍵を用いる共通鍵暗号方式と異なり、秘密に保つ必要のある秘密鍵は、特定の1人が持てばよいため鍵の管理において有利である。ただし、公開鍵暗号方式は共通鍵暗号方式に比較してデータ処理速度が遅く、一般には、秘密鍵の配送、デジタル署名等のデータ量の少ない対象に多く用いられている。公開鍵暗号方式の代表的なものにはRSA(Rivest-Shamir-Adleman)暗号や、楕円曲線暗号(ECC:Elliptic Curve Cryptography)が知られている。
楕円曲線暗号(Elliptic Curve Cryptography)は、楕円曲線上の離散対数問題の困難性を利用した暗号であり,160bitで1024bitのRSA暗号と等価の安全性をもつと言われる。一般に楕円曲線暗号は、素体上の楕円曲線:y=x+ax+b(4a+27b≠0)や、2の拡大体上の楕円曲線:y+xy=x+ax+b(b≠0)などを用いる。これらの曲線上の点に無限遠点(O)を加えた集合は、加法に関して有限群をなし、無限遠点(O)はその単位元となる。以下、この有限群上の点の加法を+で表す。
この有限群上の異なる2点P,Qの加算P+Qを「点の加算」、
点Pと点Pの加算P+P=2Pを「点の2倍算」
と呼ぶ。
また、点Pをk回加算した点P+P+…+P=kPを求める演算を「点のスカラー倍算」と呼ぶ。なお、楕円曲線暗号上の演算に関しては、例えば非特許文献1に記されている。
また、楕円曲線上の異なる2点P,Qのスカラー倍点の加算点kP+lQを高速に計算する「点のスカラー倍同時計算法」が知られている。k,lはスカラー量である。
点のスカラー倍同時計算のアルゴリズムは、スカラー量k,lについて、それぞれ、
k=(k・・・k
l=(l・・・l
とした2進表現として、以下のようなアルゴリズムを適用して実行される。
[点のスカラー倍同時計算のアルゴリズム]
Input:楕円曲線上の点P,Q スカラー値k,l
Output:kP+lQ
1.Compute P+Q
2.T←(kP+lQ)
3.For i=n−1 downto 0 do
T←2T
If (k,l)≠(0,0) then
T←T+(kP+lQ)
4.Return T
上記の[点のスカラー倍同時計算のアルゴリズム]では、各点P,Qの個々のスカラー倍としてのkP,lQを単独に計算するものではなく、2進表現スカラー量の対応ビット(k,l)の条件に基づいて、kP+lQを同時に計算する手法である。この手法は、それぞれ点P,Qのスカラー倍算kPまたはlQを算出してからkP+lQを点の加算処理として実行するよりも、点の2倍算の回数を約半分に減らすことができ、高速化を実現している。
楕円曲線上の離散対数問題の困難性の一方で、楕円曲線暗号処理中のデバイスの消費電力を測定することによりデバイス内部に格納された秘密情報を暴く電力解析攻撃と呼ばれる攻撃法が提案されている。電力解析攻撃には、主に一回の消費電力波形を利用する単純電力解析(Simple Power Analysis,SPA)と複数の消費電力波形の差分を利用する差分電力解析(Differential Power Analysis,DPA)が存在する。楕円曲線暗号に対する電力解析攻撃については、例えば非特許文献2に示されている。一般に、楕円曲線暗号におけるDPA対策は、SPA対策にランダム化手法を組み合わせることにより実現される。
しかし、上記の[点のスカラー倍同時計算アルゴリズム]は、SPAに対して安全ではない。点の2倍算と点の加算の演算は異なる処理として実行されるため、演算中の消費電力の特徴は異なる。そのため、攻撃者は消費電力波形を見ることにより点の2倍算を行なっているか点の加算を行なっているかを区別することができる。
上記の[点のスカラー倍同時計算アルゴリズム]におけるステップ3において、
T←2Tの点の2倍算は全てのiに対して行なうのに対して、
T←T+(kP+lQ)の点の加算は(k,l)≠(0,0)の場合にのみ行なう。従って、攻撃者は(k,l)=(0,0)であるか否かについて、消費電力波形を見ることにより判別することができる。また、上記の[点のスカラー倍同時計算アルゴリズム]においては、ステップ1においてP+Qの点の加算を行なうという前計算が必要となる。
D. Hankerson, J.L. Hernandez, and A. Menezes, "Software Implementation of Elliptic Curve Cryptography over Binary Fields", Cryptographic Hardware and Embedded Systems - CHES 2000, LNCS 1965, pp.1-24, Springer-Verlag, 2000. J.-S. Coron, "Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems",Cryptographic Hardware and Embedded Systems - CHES'99, LNCS 1965, pp.292-302, Springer-Verlag, 1999.
本発明は、楕円曲線暗号におけるスカラー倍加算点kP+lQや、楕円曲線暗号を一般化した方式として知られる超楕円曲線暗号におけるスカラー倍加算因子kD+lDの算出の高速化を実現し、さらに、単純電力解析(Simple Power Analysis,SPA)などの攻撃に対する耐性を持つスカラー倍点の加算点の計算を実現する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
本発明の第1の側面は、
楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
超楕円曲線暗号において規定される因子D,D、およびスカラー値k,lに基づくスカラー倍加算:kD+lD
いずれかのスカラー倍加算演算を実行する暗号処理装置であり、
前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(k,l)を、
(k,l)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
を生成するスカラー値制御部と、
前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する演算実行部と、
を有することを特徴とする暗号処理装置にある。
さらに、本発明の暗号処理装置の一実施態様において、前記スカラー値制御部は、スカラー値k,lが、両者とも偶数、または両者とも奇数である場合、いずれか一方のスカラー値の値を変更して、偶数と奇数の組み合わせに設定し、変更したスカラー値k,lについて、対応ビット位置のビットの組み合わせ(k,l)が、
(k,l)=(0,±1)または(±1,0)
を満足するJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
を生成する処理を実行する構成であり、
前記演算実行部は、前記変更スカラー値に基づくスカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行し、さらに、補正計算を実行して、変更前のスカラー値を適用したスカラー倍加算結果を算出する処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記演算実行部は、前記JRF表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
の対応ビット(k,l)を選択し、スカラー倍加算:kP+lQ、またはkD+lDを同時に計算する同時計算手法を適用した演算を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記演算実行部は、前記JRF表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
の対応ビット(k,l)のすべてについて、同一の計算シーケンスを適用した演算処理を実行する構成であることを特徴とする。
さらに、本発明の暗号処理装置の一実施態様において、前記演算実行部は、演算処理において、加算点:P+Q、または加算因子:D+Dの算出処理を実行することなく、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する構成であることを特徴とする。
さらに、本発明の第2の側面は、
楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
超楕円曲線暗号において規定される因子D,D、およびスカラー値k,lに基づくスカラー倍加算:kD+lD
いずれかのスカラー倍加算演算を、暗号処理装置において実行する暗号処理方法であり、
スカラー値制御部における実行ステップであり、
前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(k,l)を、
(k,l)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
を生成するスカラー値制御ステップと、
演算実行部における実行ステップであり、
前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する演算実行ステップと、
を有することを特徴とする暗号処理方法にある。
さらに、本発明の暗号処理方法の一実施態様において、前記スカラー値制御ステップは、スカラー値k,lが、両者とも偶数、または両者とも奇数である場合、いずれか一方のスカラー値の値を変更して、偶数と奇数の組み合わせに設定し、変更したスカラー値k,lについて、対応ビット位置のビットの組み合わせ(k,l)が、
(k,l)=(0,±1)または(±1,0)
を満足するJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
を生成する処理を実行するステップであり、
前記演算実行ステップは、
前記変更スカラー値に基づくスカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行し、さらに、補正計算を実行して、変更前のスカラー値を適用したスカラー倍加算結果を算出する処理を実行するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記演算実行ステップは、前記JRF表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
の対応ビット(k,l)を選択し、スカラー倍加算:kP+lQ、またはkD+lDを同時に計算する同時計算手法を適用した演算を実行するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記演算実行ステップは、前記JRF表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
の対応ビット(k,l)のすべてについて、同一の計算シーケンスを適用した演算処理を実行するステップであることを特徴とする。
さらに、本発明の暗号処理方法の一実施態様において、前記演算実行ステップは、演算処理において、加算点:P+Q、または加算因子:D+Dの算出処理を実行することなく、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行するステップであることを特徴とする。
さらに、本発明の第3の側面は、
楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
超楕円曲線暗号において規定される因子D,D、およびスカラー値k,lに基づくスカラー倍加算:kD+lD
いずれかのスカラー倍加算演算を、暗号処理装置において実行させるコンピュータ・プログラムであり、
スカラー値制御部において実行させるステップであり、
前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(k,l)を、
(k,l)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
を生成するスカラー値制御ステップと、
演算実行部において実行させるステップであり、
前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する演算実行ステップと、
を実行させることを特徴とするコンピュータ・プログラムにある。
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の構成によれば、楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、超楕円曲線暗号において規定される因子D,D、およびスカラー値k,lに基づくスカラー倍加算:kD+lD、これらの演算処理において、スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(k,l)を、
(k,l)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
を生成し、このJRF表現のスカラー値を適用してスカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する構成としたので、(k,l)のすべての組み合わせにおいて同一の演算処理シーケンスを実行可能となり、ビットの組み合わせに応じた処理の差異がなくなり電力解析に対する耐性が向上し、また、P+QやD+Dの事前計算の省略が可能となり演算処理の高速化が実現される。
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。説明は、以下の項目に従って行なう。
(1)楕円曲線暗号、および超楕円曲線暗号の概要
(2)本発明の暗号処理装置の具体的構成および処理例
(3)暗号処理装置の構成例
[(1)楕円曲線暗号、および超楕円曲線暗号の概要]
本発明は、楕円曲線暗号や、楕円曲線暗号を一般化した方式として知られる超楕円曲線暗号におけるスカラー倍点の加算点kP+lQの算出の高速化を実現し、さらに、単純電力解析(Simple Power Analysis,SPA)などの攻撃に対する耐性を持つスカラー倍点の加算点の計算を実現する。まず、楕円曲線暗号、および超楕円曲線暗号の概要について説明する。
前述したように、楕円曲線暗号(Elliptic Curve Cryptography)は、楕円曲線上の離散対数問題の困難性を利用した暗号であり,160bitで1024bitのRSA暗号と等価の安全性をもつと言われる。一般に楕円曲線暗号は、素体上の楕円曲線:y=x+ax+b(4a+27b≠0)や、2の拡大体上の楕円曲線:y+xy=x+ax+b(b≠0)などを用いる。
一方、楕円曲線暗号を一般化した超楕円曲線暗号(HECC:Hyper Elliptic Curve Cryptography)は、Koblitz、Cantorによって提案された方式である。有限体をFq(ただしq=p,pは素数)とする楕円曲線暗号(ECC)では有限体Fq上で定義される楕円曲線上の点をPとし、スカラー倍算した点kP(k∈Z)をQとすると、Qからkを求める問題は離散対数問題に帰着できる。一方、超楕円曲線暗号(HECC)では点の形式的和である因子(divisor)をDとし、スカラー倍算kDで定義される因子をDとすると、Dからkを求める問題は超楕円曲線におけるヤコビ多様体上の離散対数問題となり、その数学的解法の困難性が存在する。このように超楕円曲線暗号(HECC)は、数学的な解読困難性の存在が確認されており公開鍵暗号の有効な暗号方式として期待されている。
超楕円曲線では曲線を特徴づける値は種数(genus)gである。このとき有限体Fq上で定義される種数gの超楕円曲線Cは以下の方程式、
+h(x)y=f(x)
で定義される。ここで、h(x),f(x)∈Fq[x],f(x)は、高々、次数gの多項式(pが奇素数の場合はh=0)、f(x)は、次数2g+1のmonic多項式である。
超楕円曲線暗号の定義体の演算サイズ(ビット長)は楕円曲線暗号と同等の安全性を仮定した場合、Hasseの定理より、楕円曲線の定義体の演算サイズに比べて1/gに小さくなることが導かれる。演算サイズが小さいことは実装上メリットがあり、超楕円曲線暗号の利点の一つして挙げられる。
本発明は、上述した楕円曲線暗号や、超楕円曲線暗号において、高速にかつ、単純電力解析(SPA)などの攻撃に対する耐性を持つ演算として、楕円曲線暗号においては、楕円曲線上の点P,Qについてのスカラー倍点の加算点kP+lQの算出、超楕円曲線暗号においては、点の形式的和である因子(divisor)であるD,Dについてのスカラー倍因子の加算因子kD+lDの算出を実現する。
[(2)本発明の暗号処理装置の具体的構成および処理例]
以下、本発明の暗号処理装置の具体的構成および処理例について説明する。図1を参照して、本発明の暗号処理装置における楕円曲線暗号におけるスカラー倍点の加算点kP+lQ、または超楕円曲線暗号における因子D,Dについてのスカラー倍因子の加算因子kD+lDの算出を行なう暗号処理部100の構成例について説明する。なお、
P,Qは、楕円曲線上の2点、
,Dは、超楕円曲線における点の形式的和である因子(divisor)、
k,lは、スカラー量、
である。
図1に示すように、本発明の暗号処理装置において、楕円曲線暗号おけるスカラー倍点の加算点kP+lQ、または超楕円曲線暗号におけるスカラー倍因子の加算因子kD+lDの算出を行なう暗号処理部100は、スカラー値制御部101と、演算実行部102を有する。なお、以下では、楕円曲線暗号におけるスカラー倍点の加算点kP+lQの算出処理例を実施例として説明する。超楕円曲線暗号におけるスカラー倍因子の加算因子kD+lDの算出も、kP+lQの算出処理と同様に実行可能である。
スカラー値制御部101は、スカラー倍点の加算点kP+lQの算出に適用するスカラー値k,lを入力し、スカラー値k,lが偶数であるか奇数であるかを判定し、スカラー値k,lの偶奇が異なる場合に、
(k,l)=(0,±1)または(±1,0)
を満たす0,1,−1の数列k=〈k・・・k〉,l=〈l・・・l〉で表現する。
先に説明した従来の「点のスカラー倍同時計算法」では、スカラー値k,lについて、それぞれ、
k=(k・・・k
l=(l・・・l
とした2進表現として、以下のアルゴリズムを適用してkP+lQの算出が実行されていた。
[点のスカラー倍同時計算のアルゴリズム]
Input:楕円曲線上の点P,Q スカラー値k,l
Output:kP+lQ
1.Compute P+Q
2.T←(kP+lQ)
3.For i=n−1 downto 0 do
T←2T
If (k,l)≠(0,0) then
T←T+(kP+lQ)
4.Return T
すなわち、従来の構成では、スカラー値k,lについて、それぞれ、
k=(k・・・k
l=(l・・・l
とした2進表現、すなわち、
(k,l)=(0,0)または(0,1)または(1,0)または(1,1)
の2進表現を設定して、上記の[点のスカラー倍同時計算のアルゴリズム]を実行していた。
本発明の暗号処理においては、スカラー値制御部101は、スカラー倍点の加算点kP+lQの算出に適用するスカラー値k,lを入力し、スカラー値k,lが偶数であるか奇数であるかを判定し、スカラー値k,lの偶奇が異なる場合に、
(k,l)=(0,±1)または(±1,0)
を満たすように、スカラー値kおよびlをそれぞれ0,1,−1の数列とした拡張2進表現に変換する。この拡張2進表現を、
k=〈k・・・k〉,
l=〈l・・・l
として示す。
スカラー値:k,lの拡張2進表現において、対応するビット、すなわち、(k,l)は、
(k,l)=(0,±1)または(±1,0)
の条件を満たすように設定する。
この条件を満足するk,lの表現を、以下では、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)と呼ぶ。
本発明の暗号処理においては、スカラー値制御部101は、スカラー値k,lの偶奇を判定し、スカラー値k,lの偶奇が異なる場合、すなわち、
(a)スカラー値kが偶数、スカラー値lが奇数、または、
(b)スカラー値kが奇数、スカラー値lが偶数、
上記(a),(b)いずれかの場合に、
(k,l)=(0,±1)または(±1,0)
を満たす0,1,−1の数列k=〈k・・・k〉,l=〈l・・・l〉で表現し、これを図1に示す演算実行部102に入力し、演算実行部102は、前述の[点のスカラー倍同時計算のアルゴリズム]に従って、点のスカラー倍加算点kP+lQの算出を実行する。
演算実行部102は、以下の[点のスカラー倍同時計算のアルゴリズム]を実行する。
[点のスカラー倍同時計算のアルゴリズム]
Input:楕円曲線上の点P,Q スカラー値k,l
Output:kP+lQ
1.Compute P+Q
2.T←(kP+lQ)
3.For i=n−1 downto 0 do
T←2T
If (k,l)≠(0,0) then
T←T+(kP+lQ)
4.Return T
しかし、
(k,l)=(0,±1)または(±1,0)
の設定であるので、上記のアルゴリズムにおけるステップ3の処理において、
(k,l)=(0,0)となることはなく、すべての(k,l)について、ステップ3では、
T←2T
T←T+(kP+lQ)
これらの処理を実行することになる。すなわち、全ての(i)すなわち拡張2進表現のなされたk,lの各ビットについて、すべて同一の処理が実行される。
この結果、電力解析を実行しても、(k,l)=(0,0)であるか否かに応じて、処理が異なっていた従来シーケンスと異なり、すべての(k,l)の組について、同一の処理が実行され、SPA等の電力解析による処理の判別が不可能となり、電力解析に対する耐性の高い暗号処理が実現される。
さらに、ステップ3で実行される処理中の、
T←T+(kP+lQ)
この算出処理において、
(k,l)=(0,±1)または(±1,0)
の設定であるので、
T←T+(kP+lQ)
における(kP+lQ)の計算では、
(0*P)+((+1)*Q)=Q
(0*P)+((−1)*Q)=−Q
((+1)*P)+(0*Q)=P
((−1)*P)+(0*Q)=−P
上記4種類の計算のみが発生することになり、結果として、P,−P,Q,−Qの4つの値を算出するのみでよい。
これは、前述の[点のスカラー倍同時計算のアルゴリズム]におけるステップ1の事前計算処理、すなわち、
1.Compute P+Q
この計算処理ステップが、省略可能となることを意味する。
このステップ1の[P+Q]の算出処理は、[P+Q]の値を事前に算出することで、ステップ3において、P+Qを算出する必要が発生した場合に、算出済みの値を適用可能とするための算出ステップである。従来のシーケンスでは、ステップ3における処理、すなわち、
T←T+(kP+lQ)
この算出処理において、
(k,l)=(1,1)
の組み合わせが発生することがあり、この組み合わせが発生した場合に、ステップ1での事前計算値を適用する設定としていた。
しかし、本処理例では、
(k,l)=(0,±1)または(±1,0)
の設定であるので、
T←T+(kP+lQ)
における(kP+lQ)の計算では、P,−P,Q,−Qの4つの値のみが発生し、P+Qを算出する処理が必要なビットの組み合わせ(k,l)=(1,1)は発生しない。この結果、ステップ1での[P+Q]の事前計算処理が不要となり、処理ステップを1つ削減することが可能となり、演算の高速化が実現される。
このように、本発明の処理例に従って、[点のスカラー倍同時計算のアルゴリズム]を実行する場合、入力スカラー値が偶数、奇数の組み合わせである場合、
(k,l)=(0,±1)または(±1,0)
のジョイント・レギュラーフォーム(JRF:Joint Regular Form)に表現を設定して、[点のスカラー倍同時計算のアルゴリズム]を実行させることで、[点のスカラー倍同時計算のアルゴリズム]において、
(a)ステップ3の処理が、(k,l)のすべての組み合わせにおいて、すべて同一の処理として実行される。
(b)ステップ1の処理が省略できる。
上記(a),(b)が実現されることになり、電力解析に対する耐性が向上し、演算の高速化が図られることになる。
なお、本発明の処理例では、図1に示すスカラー値制御部101において、入力スカラー値が偶数、奇数の組み合わせである場合、
(k,l)=(0,±1)または(±1,0)
上記のジョイント・レギュラーフォーム(JRF:Joint Regular Form)に表現を設定して、演算実行部102に出力して、上述の[点のスカラー倍同時計算のアルゴリズム]を実行させる。
図1に示すスカラー値制御部101における処理、すなわち、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)の設定処理について、以下説明する。例えば、入力スカラー値k,lが、
(k,l)=(52,39)
である場合、k,およびlを(0,+1,−1)の拡張2進表現に設定するともに、
(k,l)=(0,±1)または(±1,0)
の関係となるジョイント・レギュラーフォーム(JRF:Joint Regular Form)に表現を設定すると、
k=52=<1,0,−1,0,1,0,0>
l=39=<0,1,0,1,0,−1,1>
となる。
以下、偶奇が異なるスカラー値k,lのジョイント・レギュラーフォーム(JRF:Joint Regular Form)を、
(k,l),・・・,(k,l)と下位から生成する方法について説明する。
図1に示すスカラー値制御部101は、スカラー値k,lを入力し、これらのスカラー値の偶奇判定を実行し、k,lが偶数と奇数の組み合わせである場合に、k,lの2進表現から、スカラー値k,lのジョイント・レギュラーフォーム(JRF:Joint Regular Form)を生成する。
スカラー値k,lの2進表現を、
k=(k・・・k
l=(l・・・l
とする。スカラー値制御部101は、この2進表現に基づいて、スカラー値k,lのジョイント・レギュラーフォーム(JRF:Joint Regular Form)を生成する。
まず、k,lは偶奇が異なるデータであり、必然的に、スカラー値k,lの2進表現の最下位ビットの組み合わせ(k,l)は、
(k,l)=(0,1)、または、
(k,l)=(1,0)
である。
スカラー値制御部101は、まず、スカラー値k,lの2進表現の最下位から2番目のビット、(k,l)に注目し、(k,l)の値に基づいて、変換処理を実行する。
(k,l)=(0,1)または(1,0)の場合には変換を行なわない。すなわち、ジョイント・レギュラーフォーム(JRF)の条件である、
(k,l)=(0,±1)または(±1,0)
この条件を満足するので、2進表現の(k,l)をそのまま、JRFにおける(k,l)とする。
一方、2進表現の(k,l)が、
(k,l)=(0,0)である場合は、ジョイント・レギュラーフォーム(JRF)の条件である、
(k,l)=(0,±1)または(±1,0)
この条件を満足していないので、表現を変更する。この場合、スカラー値制御部101は、スカラー値kの2進表現の最下位ビットkの値に応じて、スカラー値k,lの2進表現の最下位ビットおよび最下位から2番目のビット、[k,k]と、[l,l]を以下のように変換して、JRFにおける(k,l)および(k,l)を設定する。
=1の場合、すなわち、
(k,l)=(0,0)、
(k,l)=(1,0)のときは、
2進表現[k,k]=[0,1]→JRF表現[k,k]=[1,−1]
2進表現[l,l]=[0,0]→JRF表現[l,l]=[0,0]
とする変換処理を実行して、k,lのJRF表現を設定する。
=0の場合、すなわち、
(k,l)=(0,0)、
(k,l)=(0,1)のときは、
2進表現[k,k]=[0,0]→JRF表現[k,k]=[0,0]
2進表現[l,l]=[0,1]→JRF表現[l,l]=[1,−1]
とする変換処理を実行して、k,lのJRF表現を設定する。
また、2進表現の(k,l)が、
(k,l)=(1,1)である場合も、ジョイント・レギュラーフォーム(JRF)の条件である、
(k,l)=(0,±1)または(±1,0)
この条件を満足していないので、表現を変更する。この場合、スカラー値制御部101は、スカラー値kの2進表現の最下位ビットkの値に応じて、スカラー値k,lの2進表現の最下位ビットおよび最下位から2番目のビット、[k,k]と、[l,l]を以下のように変換して、JRFにおける(k,l)および(k,l)を設定する。
=1の場合、すなわち、
(k,l)=(1,1)、
(k,l)=(1,0)のときは、
2進表現[k,k]=[1,1]→JRF表現[k,k]=[0,−1]
2進表現[l,l]=[1,0]→JRF表現[l,l]=[1,0]
とし、さらに、kの2進表現の上位ビットkに(+1)を繰り越す。この変換処理を実行して、k,lのJRF表現を設定する。
=0の場合、すなわち、
(k,l)=(1,1)、
(k,l)=(0,1)のときは、
2進表現[k,k]=[1,0]→JRF表現[k,k]=[1,0]
2進表現[l,l]=[1,1]→JRF表現[l,l]=[0,−1]
とし、さらに、lの2進表現の上位ビットlに(+1)を繰り越す。この変換処理を実行して、k,lのJRF表現を設定する。
以上の処理を実行することで、
(k,l)=(0,0),(0,1),(1,0),(1,1)
これらの全ての場合に、
(k,l)=(0,±1)または(±1,0)と、
(k,l)=(0,1)または(1,0)
の組み合わせに設定されることになり、ジョイント・レギュラーフォーム(JRF)の条件である、
(k,l)=(0,±1)または(±1,0)
この条件を満足させることが可能となる。
次に,(k,l)についても、
(k,l)=(0,0)または(1,1)の場合には、
(k,l)に応じて、上述と同様の変換を行なう。
この処理を、スカラー値k,lの2進表現、すなわち、
k=(k・・・k
l=(l・・・l
これらの2進表現の下位から上位に向けて、順次、実行する。この処理を実行することにより、スカラー値k,lを、
(k,l)=(0,±1)または(±1,0)
を満たす0,1,−1の数列、
k=〈k・・・k〉,
l=〈l・・・l
で表現することが可能になる。
図2にスカラー値k,lの2進表現からJRF表現への変換処理の態様をまとめたテーブルを示す。
スカラー値k,lの2進表現を、
k=(k・・・k
l=(l・・・l
としたとき、
スカラー値制御部101は、この2進表現に基づいて、スカラー値k,lのジョイント・レギュラーフォーム(JRF:Joint Regular Form)を、k,lの2進表現の下位ビットから順次、生成する。
スカラー値制御部101は、図2に示すように、k,lの対応ビット(k,l)の組み合わせに応じて、以下の変換処理を行なってJRF表現に変更する。
(1)(k,l)=(1,0)の場合、
(k,l)を、変更せず、そのまま、JRF表現として適用
(2)(k,l)=(0,1)の場合、
(k,l)を、変更せず、そのまま、JRF表現として適用
(3)(k,l)=(0,0)の場合、
(3a)(ki−1,li−1)=(1,0)の場合、
(k,ki−1)=[0,1]→JRF<1,−1>
(l,li−1)=[0,0]→JRF<0,0>
これらの表現に変更して、JRF表現を設定する。
(3b)(ki−1,li−1)=(0,1)の場合、
(k,ki−1)=[0,0]→JRF<0,0>
(l,li−1)=[0,1]→JRF<1,−1>
これらの表現に変更して、JRF表現を設定する。
(4)(k,l)=(1,1)の場合、
(4a)(ki−1,li−1)=(1,0)の場合、
(k,ki−1)=[1,1]→JRF<0,−1>
(l,li−1)=[1,0]→JRF<1,0>
これらの表現に変更して、JRF表現を設定する。
(3b)(ki−1,li−1)=(0,1)の場合、
(k,ki−1)=[1,0]→JRF<1,0>
(l,li−1)=[1,1]→JRF<0,−1>
これらの表現に変更して、JRF表現を設定する。
スカラー値制御部101の実行するスカラー値k,lのJRF表現の生成処理アルゴリズムの一例である[アルゴリズム1]について、図3に示すフローチャートを参照して説明する。
まず、ステップS101において、楕円曲線上の異なる2点P,Qのスカラー倍点の加算点kP+lQの算出に適用するスカラー値k,lを入力する。次に、ステップS102において、スカラー値k,lについて初期設定を行う。すなわち、
i←0,s←k,t←l
の初期設定を実行する。
iは、k,lの2進表現としてのビット位置を示す変数i(i=0〜n)に相当する。
次に、ステップS103において、スカラー値k,lに相当するs,tの各々の最下位ビットk,lを算出する。k,lは、以下の式によって算出される。
←smod2
←tmod2
次に、ステップS104において、スカラー値k,lの対応ビットの組み合わせ(k,l)についての状態判定を実行する。すなわち、まず、
(k,l)=(0,0)
であるか否かを判定する。
ステップS104において、
(k,l)=(0,0)
と判定された場合には、次に、ステップS105に進み、
i−1=1であるか否かを判定する。
ステップS105において、
i−1=1であると判定された場合は、ステップS106に進み、
←1
i−1←−1
の設定を行う。すなわち、2進表現としてのスカラー値[k,ki−1]をJRF表現として<1,−1>として設定する。この処理は、図2における(3a)の処理に相当する。
また、ステップS105において、
i−1=1でないと判定された場合は、ステップS107に進み、
←1
i−1←−1
の設定を行う。すなわち、2進表現としてのスカラー値[l,li−1]をJRF表現として<1,−1>として設定する。この処理は、図2における(3b)の処理に相当する。
ステップS106またはステップS107の処理の後、ステップS108に進み、スカラー値k,lに相当するs,tの更新処理として、以下の処理を行なう。
i+1←s/2
i+1←t/2
これらの処理は、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。
ステップS104において、
(k,l)=(0,0)
でないと判定された場合には、次に、ステップS109に進み、
(k,l)=(1,1)
であるか否かを判定する。
ステップS109において、
(k,l)=(1,1)
であると判定された場合には、次に、ステップS110に進み、
i−1=1であるか否かを判定する。
ステップS110において、
i−1=1であると判定された場合は、ステップS111に進み、
←0
i−1←−1
の設定を行う。すなわち、2進表現としてのスカラー値[k,ki−1]をJRF表現として<0,−1>として設定する。さらに、スカラー値k,lに相当するs,tの更新処理として、以下の処理を行なう。
i+1←(s+1)/2
i+1←(t−1)/2
これらの処理は、kの2進表現の上位ビットki+1に(+1)を繰り越すとともに、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。この処理は、図2における(4a)の処理に相当する。
ステップS110において、
i−1=1でないと判定された場合は、ステップS112に進み、
←0
i−1←−1
の設定を行う。すなわち、2進表現としてのスカラー値[l,li−1]をJRF表現として<0,−1>として設定する。さらに、スカラー値k,lに相当するs,tの更新処理として、以下の処理を行なう。
i+1←(s−1)/2
i+1←(t+1)/2
これらの処理は、lの2進表現の上位ビットli+1に(+1)を繰り越すとともに、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。この処理は、図2における(4b)の処理に相当する。
ステップS109において、
(k,l)=(1,1)
でないと判定された場合には、次に、ステップS113に進み、スカラー値k,lに相当するs,tの更新処理として、以下の処理を行なう。
i+1←(s−k)/2
i+1←(t−l)/2
これらの処理は、2進表現としての(k,l)をそのままJRF表現として利用し、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。この処理は、図2における(1),(2)の処理に相当する。
次に、ステップS114において、
i+1>0、または、
i+1>0
が成立するか否かを判定する。これは、JRF表現への変換の済んでいない2進表現の上位ビットが存在するか否かを判定する処理である。ステップS114において、
i+1>0、または、
i+1>0
が成立すると判定された場合は、JRF表現への変換の済んでいない2進表現の上位ビットが存在することを意味するので、ステップS115において、変数iを更新、すなわち、
i←i+1
を実行して、ステップS103に戻り、同様の処理を繰り返し実行する。
ステップS114において、
i+1>0、または、
i+1>0
が成立しないと判定された場合は、JRF表現への変換の済んでいない2進表現の上位ビットが存在しないことを意味するので、ステップS116に進み、最終的に設定された変数iをnとする処理、すなわち、
n←i
この更新処理を実行し、ステップS117において、スカラー値k,lのJRF表現として、
k=<k,・・・k>、
l=<l,・・・l>、
を出力する。
図1に示す暗号処理部100のスカラー値制御部101は、この処理によって、
スカラー値k,lの2進表現、すなわち、
k=(k・・・k
l=(l・・・l
これらの2進表現を、拡張2進表現、すなわち、すべてのビットを0,または+1,または−1で表現し、かつ、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)の条件である、
(k,l)=(0,±1)または(±1,0)
を満足するJRF表現としての、
k=<k,・・・k>、
l=<l,・・・l>、
を生成し、演算実行部102に出力する。演算実行部102では、スカラー値制御部101から入力するスカラー値k,lのJRF表現としての、
k=<k,・・・k>、
l=<l,・・・l>、
これらのスカラー値に基づいて、先に説明した[点のスカラー倍同時計算のアルゴリズム]を実行する。この処理によって、[点のスカラー倍同時計算のアルゴリズム]において、
(a)(k,l)のすべての組み合わせにおいて、すべて同一の演算処理が実行される。
(b)P+Qの演算処理が省略できる。
上記(a),(b)が実現されることになり、電力解析に対する耐性が向上し、演算の高速化が図られることになる。
図3を参照して説明したJRF表現の生成アルゴリズムである[アルゴリズム1]をまとめると、以下のように記述することができる。
[アルゴリズム1]
1.i←0,s←k,t←lと入力する。
2.s,tの最下位ビットをそれぞれk,lとする。
3.(k,l)=(0,0)の場合には、次のようにする。
i−1=1の場合には、k←1,ki−1←−1と変換する。
i−1=0の場合には、l←1,li−1←−1と変換する。
i+1←s/2,ti+1←t/2とする。
4.(k,l)=(1,1)の場合には、次のようにする。
i−1=1の場合には、k←0,ki−1←−1と変換し、
i+1←(s+1)/2,ti+1←(t−1)/2とする。
i−1=0の場合には、l←0,li−1←−1と変換し、
i+1←(s−1)/2,ti+1←(t+1)/2とする。
5.上記3,4以外の場合、つまり、
(k,l)=(0,1)または(1,0)の場合は、
i+1←(s−k)/2,ti+1←(t−l)/2とする。
6.si+1>0またはti+1>0であれば、
i←i+1として、2.に戻る。そうでなければ、n←iとして、
〈k・・・k〉,〈l・・・l〉を出力する。
次に、上述のアルゴリズム1を、分岐が少なくなるように最適化した[アルゴリズム2]について、図4に示すフローチャートを参照して説明する。この[アルゴリズム2]も、スカラー値k,lのJRF表現の生成処理アルゴリズムの一例であり、図1に示す暗号処理部100におけるスカラー値制御部101において実行される。
ステップS201〜S203の処理は、図3を参照して説明した[アルゴリズム1]におけるステップS101〜S103と、ほぼ同様の処理である。すなわち、まず、ステップS201において、楕円曲線上の異なる2点P,Qのスカラー倍点の加算点kP+lQの算出に適用するスカラー値k,lを入力する。次に、ステップS202において、スカラー値k,lについて初期設定を行う。すなわち、
i←0,s←k,t←l
の初期設定を実行する。
iは、k,lの2進表現としてのビット位置を示す変数i(i=0〜n)に相当する。
次に、ステップS203において、スカラー値k,lに相当するs,tの各々の最下位ビットk,lを算出する。k,lは、以下の式によって算出される。
←smod2
←tmod2
次に、ステップS204において、スカラー値k,lの対応ビットの組み合わせ(k,l)についての状態判定を実行する。すなわち、まず、
(k,l)=(0,0)
であるか否かを判定する。
ステップS204において、
(k,l)=(0,0)
と判定された場合には、次に、ステップS205に進み、
←ki−1
i−1←−ki−1
←li−1
i−1←−li−1
これらの設定を行う。すなわち、2進表現に基づくスカラー値[k,ki−1]を、JRF表現として<ki−1,−ki−1>として設定し、[l,li−1]を、JRF表現として<li−1,−li−1>として設定する。この処理は、図2における(3a)(3b)の処理に相当する。
さらに、ステップS205では、スカラー値k,lに相当するs,tの更新処理として、以下の処理を行なう。
s←s/2
t←t/2
これらの処理は、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。
ステップS204において、
(k,l)=(0,0)
でないと判定された場合には、次に、ステップS206に進み、
(k,l)=(1,1)
であるか否かを判定する。
ステップS206において、
(k,l)=(1,1)
であると判定された場合には、次に、ステップS207に進み、
←1−ki−1
i−1←−ki−1
←1−li−1
i−1←−li−1
これらの設定を行う。すなわち、2進表現に基づくスカラー値[k,ki−1]を、JRF表現として<1−ki−1,−ki−1>として設定し、[l,li−1]を、JRF表現として<1−li−1,−li−1>として設定する。この処理は、図2における(4a)(4b)の処理に相当する。
さらに、ステップS207では、スカラー値k,lに相当するs,tの更新処理として、以下の処理を行なう。
s←(s−2k+1)/2
t←(t−l)/2
これらの処理は、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。
ステップS206において、
(k,l)=(1,1)
でないと判定された場合には、次に、ステップS208に進み、スカラー値k,lに相当するs,tの更新処理として、以下の処理を行なう。
s←(s−k)/2
t←(t−l)/2
これらの処理は、2進表現としての(k,l)をそのままJRF表現として利用し、JRF表現の設定された下位ビットを切り捨て、未処理の上位ビットのみを切り出す処理に相当する。この処理は、図2における(1),(2)の処理に相当する。
次に、ステップS209において、
s>0、または、
t>0
が成立するか否かを判定する。これは、JRF表現への変換の済んでいない2進表現の上位ビットが存在するか否かを判定する処理である。ステップS209において、
s>0、または、
t>0
が成立すると判定された場合は、JRF表現への変換の済んでいない2進表現の上位ビットが存在することを意味するので、ステップS210において、変数iを更新、すなわち、
i←i+1
を実行して、ステップS203に戻り、同様の処理を繰り返し実行する。
ステップS209において、
s>0、または、
t>0
が成立しないと判定された場合は、JRF表現への変換の済んでいない2進表現の上位ビットが存在しないことを意味するので、ステップS211に進み、最終的に設定された変数iをnとする処理、すなわち、
n←i
この更新処理を実行し、ステップS212において、スカラー値k,lのJRF表現として、
k=<k,・・・k>、
l=<l,・・・l>、
を出力する。
図1に示す暗号処理部100のスカラー値制御部101は、この処理によって、
スカラー値k,lの2進表現、すなわち、
k=(k・・・k
l=(l・・・l
これらの2進表現を、拡張2進表現、すなわち、すべてのビットを0,または+1,または−1で表現し、かつ、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)の条件である、
(k,l)=(0,±1)または(±1,0)
を満足するJRF表現としての、
k=<k,・・・k>、
l=<l,・・・l>、
を生成し、演算実行部102に出力する。演算実行部102では、スカラー値制御部101から入力するスカラー値k,lのJRF表現としての、
k=<k,・・・k>、
l=<l,・・・l>、
これらのスカラー値に基づいて、先に説明した[点のスカラー倍同時計算のアルゴリズム]を実行する。この処理によって、[点のスカラー倍同時計算のアルゴリズム]において、
(a)(k,l)のすべての組み合わせにおいて、すべて同一の演算処理が実行される。
(b)P+Qの演算処理が省略できる。
上記(a),(b)が実現されることになり、電力解析に対する耐性が向上し、演算の高速化が図られることになる。
図4を参照して説明したJRF表現の生成アルゴリズムである[アルゴリズム2]をまとめると、以下のように記述することができる。
[アルゴリズム2]
1.i←0,s←k,t←lと入力する。
2.s,tの最下位ビットをそれぞれk,lとする。
3.(k,l)=(0,0)の場合には、
←ki−1,ki−1←−ki−1
←li−1,li−1←−li−1
s←s/2,
t←t/2
とする。
4.(k,l)=(0,0)の場合には、
←1−ki−1,ki−1←−ki−1
←1−li−1,li−1←−li−1
s←(s−2k+1)/2,
t←(t−2l+1)/2
とする。
5.上記3,4以外の場合には、
s←(s−k)/2,
t←(t−l)/2
とする。
6.s>0またはt>0であれば、
i←i+1として2.に戻る。そうでなければ、n←iとして、
〈k・・・k〉,〈l・・・l〉を出力する。
次に、図1に示す暗号処理部100において実行される[点のスカラー倍同時計算のアルゴリズム]の全体処理について、すなわち、スカラー値制御部101と演算実行部102の実行する処理の全体アルゴリズムについて、[アルゴリズム3]として、図5に示すフローチャートを参照して説明する。
図1に示す暗号処理部100の演算実行部102は、スカラー値制御部101から入力するスカラー値k,lのJRF表現としての、
k=<k,・・・k>、
l=<l,・・・l>、
これらのスカラー値を入力して、点のスカラー倍加算点[kP+lQ]を算出する。基本的には、先に説明した[点のスカラー倍同時計算のアルゴリズム]を実行することになるが、先に説明したように、
(a)(k,l)のすべての組み合わせにおいて、すべて同一の演算処理が実行される。
(b)P+Qの演算処理が省略できる。
上記(a),(b)が実現され、従来の演算アルゴリズムと異なるアルゴリズムとなる。図5に示すフローを参照して本発明の[点のスカラー倍同時計算のアルゴリズム]について説明する。
まず、ステップS301において、暗号処理部は、点のスカラー倍加算点[kP+lQ]を算出するために必要となるパラメータとして、スカラー値k,lと、楕円曲線上の点P,Qを入力する。
次に、ステップS302において、スカラー値k,lをJRF表現としての、
k=<k,・・・k>、
l=<l,・・・l>、
に変換する。この処理は、図1に示すスカラー値制御部101において実行される処理であり、先に、図3を参照して説明した[アルゴリズム1]、または、図4を参照して説明した[アルゴリズム2]に従って実行される。
ステップS303以下の処理は、図1に示す演算実行部102において実行される[点のスカラー倍同時計算処理]である。この処理は、先に説明した従来手法としての[点のスカラー倍同時計算のアルゴリズム]、すなわち、
[点のスカラー倍同時計算のアルゴリズム]
Input:楕円曲線上の点P,Q スカラー値k,l
Output:kP+lQ
1.Compute P+Q
2.T←(kP+lQ)
3.For i=n−1 downto 0 do
T←2T
If (k,l)≠(0,0) then
T←T+(kP+lQ)
4.Return T
この処理を基本としているが、複数の変更点を有する。
まず、ステップS303において、
T←(kP+lQ)
i←n−1
とする。この処理は、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ2に相当する処理として実行される。iは、JRF表現としての
k=<k,・・・k>、
l=<l,・・・l>、
のビット位置を示す変数として利用される。
なお、本発明のアルゴリズムでは、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ1の[Compute P+Q]の算出処理が省略される。
次にステップS304において、
i≧0
が成立するか否かが判定される。i≧0が成立しない場合は、kP+lQの算出処理が終了したことを意味する。
i≧0が成立する場合は、kP+lQの算出処理が終了していないことを意味し、ステップS305に進み、
T←2T
とし、さらに、ステップS306において、
T←T+(kP+lQ)
とする処理を実行する。この処理は、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ3に相当する処理として実行される。
しかし、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ3では、(k,l)の値に基づく選択的な処理として実行されていた処理、すなわち、
If (k,l)≠(0,0) then
T←T+(kP+lQ)
この処理が、本発明に従った処理では、全ての(k,l)の組み合わせにおいて実行される。この処理の結果、電力解析ビット値の解析を困難化することが可能となる。
次に、ステップS307において、変数iの更新処理として、
i←i+1
を実行し、ステップS304以下を繰り返し実行する。
最終的に、ステップS304において、
i≧0
が成立しないと判定されると、kP+lQの算出処理が終了したと判定し、ステップS308において、T=kP+lQを出力して処理を終了する。
このように、本発明の点のスカラー倍同時計算アルゴリズムでは、先に説明した従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ1の[Compute P+Q]の算出処理が省略され、また、ステップ3の処理が、(k,l)のすべての組み合わせにおいて、すべて同一の処理として実行される。この結果、電力解析に対する耐性が向上するとともに、演算の高速処理が可能となる。
図5を参照して説明した本発明の点のスカラー倍同時計算アルゴリズムである[アルゴリズム3]をまとめると、以下のように記述することができる。
[アルゴリズム3]
1.k,lをJRFで表現し、
〈k・・・k〉,
〈l・・・l
を出力する。
2.T←(kP+lQ),
i←n−1
とする。
3.i≧0でなければ、Tを出力し終了する。
4.T←2Tを点の2倍算を用いて計算する。
5.T←T+(kP+lQ)を点の加算を用いて計算する。
6.i←n−1とし、3.に戻る。
上述の図5を参照して説明した処理フローは、kP+lQを算出する点のスカラー倍同時計算のアルゴリズムであるが、前提として、スカラー値kとlが偶奇の組み合わせ、すなわち、
kが偶数で、lが奇数、または、
kが奇数で、lが偶数、
これらのいずれかの場合を前提としている処理である。これは、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)の条件である、
(k,l)=(0,±1)または(±1,0)
を満足するための必須要件となるからである。
しかし、図1の暗号処理部100において算出すべき、点のスカラー倍加算点[kP+lQ]において、入力するスカラー値k,lは、偶奇の組み合わせであるとは限らない。以下、図6に示すフローチャートを参照して、スカラー値k,lが偶奇の組み合わせのみならず、偶数同士、奇数同士である場合にも、対応可能とし、電力解析に対する耐性の向上と演算の高速処理を実現する処理シーケンス[アルゴリズム4]について説明する。
図6に示すフローに従った[アルゴリズム4]は、図1に示す暗号処理部100において実行される。まず、ステップS401において、暗号処理部は、点のスカラー倍加算点[kP+lQ]を算出するために必要となるパラメータとして、スカラー値k,lと、楕円曲線上の点P,Qを入力する。
ステップS402〜S406の処理は、図1に示すスカラー値制御部101において実行される。まず、ステップS402において、スカラー値k,lの偶奇判定を行なう。すなわち、k,lが双方とも偶数、または奇数であるか否かが判定される。
ステップS402において、k,lが双方とも偶数、または奇数であると判定されると、入力されたk,lのままでは、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)の条件である、
(k,l)=(0,±1)または(±1,0)
を満足するJRF表現が設定できない。このため、ステップS404,S405において、フラグの設定およびスカラー値の調整を実行する。すなわち、ステップS404において、スカラー値の調整が実行されることを示すフラグ[1]を設定する。これは、例えば暗号処理部100のアクセス可能なメモリに、kP+lQの処理データに対応するフラグとして設定する。
次に、ステップS405において、スカラー値kをk+1に変更する処理を実行する。この処理によって、更新されたkとlは、偶数と奇数の組み合わせに変更され、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)の条件である、
(k,l)=(0,±1)または(±1,0)
を満足するJRF表現が設定可能となる。
一方、ステップS402において、k,lが双方とも偶数、または奇数の組み合わせでなく、偶奇の組み合わせであると判定されると、入力されたk,lのままで、ジョイント・レギュラーフォーム(JRF:Joint Regular Form)の条件である、
(k,l)=(0,±1)または(±1,0)
を満足するJRF表現が設定可能であり、ステップS403において、スカラー値の調整が実行されていないことを示すフラグ[0]を設定する。
ステップS403またはステップS405の処理の後、ステップS406において、スカラー値k,lをJRF表現としての、
k=<k,・・・k>、
l=<l,・・・l>、
に変換する。この処理は、図1に示すスカラー値制御部101において実行される処理であり、先に、図3を参照して説明した[アルゴリズム1]、または、図4を参照して説明した[アルゴリズム2]に従って実行される。
ステップS407以下の処理は、図1に示す演算実行部102において実行される[点のスカラー倍同時計算処理]である。この処理は、先に説明した従来手法としての[点のスカラー倍同時計算のアルゴリズム]を基本としているが、図5を参照して説明したと同様、複数の変更点を有する。
まず、ステップS407において、
T←(kP+lQ)
i←n−1
とする。この処理は、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ2に相当する処理として実行される。iは、JRF表現としての
k=<k,・・・k>、
l=<l,・・・l>、
のビット位置を示す変数として利用される。なお、このアルゴリズムにおいても、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ1の[Compute P+Q]の算出処理が省略される。
次にステップS408において、
i≧0
が成立するか否かが判定される。i≧0が成立しない場合は、kP+lQの算出処理が終了したことを意味する。
i≧0が成立する場合は、kP+lQの算出処理が終了していないことを意味し、ステップS409に進み、
T←2T
とし、さらに、ステップS410において、
T←T+(kP+lQ)
とする処理を実行する。この処理は、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ3に相当する処理として実行される。本処理例でも、先に図5を参照して説明したアルゴリズム3と同様、従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ3では、(k,l)の値に基づく選択的な処理として実行されていた処理、すなわち、
If (k,l)≠(0,0) then
T←T+(kP+lQ)
この処理が、本アルゴリズム4では、全ての(k,l)の組み合わせにおいて実行される。この処理の結果、電力解析ビット値の解析を困難化することが可能となる。
次に、ステップS411において、変数iの更新処理として、
i←i+1
を実行し、ステップS408以下を繰り返し実行する。
最終的に、ステップS408において、
i≧0
が成立しないと判定されると、kP+lQの算出処理が終了したと判定し、ステップS412において、設定済みのフラグの判定がなされる。フラグに[1]が設定されている場合は、演算実行部において算出したT=kP+lQの算出に適用したスカラー値[k]は、入力されたスカラー値ではなく、ステップS405において、k←k+1の処理で更新されたスカラー値であると判定し、ステップS413において、補正計算として、
T←T−P
の補正計算を実行する。この補正計算の後、ステップS414において、計算結果として、
T=kP+lQ
を出力して処理を終了する。
ステップS412において、フラグに[1]が設定されていない場合は、演算実行部において算出したT=kP+lQの算出に適用したスカラー値[k]は、入力されたスカラー値であり、ステップS405の補正処理は省略され、ステップS414において、計算結果として、
T=kP+lQ
を出力して処理を終了する。
このように、図6を参照して説明した[アルゴリズム4]では、入力するスカラー値k,lが任意の組み合わせにおいて対応可能であり、入力するスカラー値k,lが偶奇の組み合わせのみならず、偶数同士、奇数同士である場合にも、電力解析に対する耐性の向上と演算の高速処理が実現される。
すなわち、先に説明した従来の[点のスカラー倍同時計算のアルゴリズム]におけるステップ1の[Compute P+Q]の算出処理が省略され、また、ステップ3の処理が、(k,l)のすべての組み合わせにおいて、すべて同一の処理として実行される。この結果、電力解析に対する耐性が向上するとともに、演算の高速処理が可能となる。
図6を参照して説明した本発明の点のスカラー倍同時計算アルゴリズムである[アルゴリズム4]をまとめると、以下のように記述することができる。
[アルゴリズム4]
1.k,lの偶奇が同じであれば、
k←k+1,
flag←1
とする。そうでなければ、
flag←0とする。
2.k,lをJRFで表現し、
〈k・・・k〉,
〈l・・・k
を出力する。
3.T←(kP+lQ),
i←n−1とする。
4.i≧0でなければ、8.に進む。
5.T←2Tを点の2倍算を用いて計算する。
6.T←T+(kP+lQ)を点の加算を用いて計算する。
7.i←n−1とし、3.に戻る。
8.flag=1であれば,T←T−Pとする。
Tを出力する。
本処理例によれば、任意のスカラー値k,lに対する処理が可能であり、k,lの偶奇以外の情報をもらさずにkP+lQのスカラー倍同時計算をすることができる。なお、上述の実施例では、スカラー値kに対して+1することで、入力スカラー値の変更を行なう設定としたが、入力スカラー値が偶数同士、または奇数同士である場合に、偶数と奇数の組み合わせに変更すれば、よく、スカラー値k,lの変更態様は、上述した処理例(k←k+1)に限らず、様々な変更処理が可能である。ただし、変更したスカラー値を適用した演算後において、変更を元に戻すための補正計算を行なうことが必要である。
なお、図3〜図6を参照して説明した各アルゴリズムにおいては、楕円曲線暗号におけるスカラー倍点の加算点kP+lQの算出処理例を実施例として説明してきたが先にも説明したように、超楕円曲線暗号におけるスカラー倍因子の加算因子kD+lDの算出も、kP+lQの算出処理と同様に実行可能である。すなわち、本発明の暗号処理装置は、楕円曲線暗号または超楕円曲線暗号に対応する暗号処理演算を実行する暗号処理装置であり、楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、超楕円曲線暗号において規定される因子D,D、およびスカラー値k,lに基づくスカラー倍加算:kD+lD、これらのいずれかのスカラー倍加算演算を実行する。
図1に示すスカラー値制御部101は、スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(k,l)を、
(k,l)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
を生成する処理を実行するスカラー値制御部であり、図1に示す演算実行部102は、スカラー値制御部101の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する。
さらに、スカラー値制御部101は、スカラー値k,lが、両者とも偶数、または両者とも奇数である場合、いずれか一方のスカラー値の値を変更して、偶数と奇数の組み合わせに設定し、変更したスカラー値k,lについて、対応ビット位置のビットの組み合わせ(k,l)が、
(k,l)=(0,±1)または(±1,0)
を満足するJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
を生成する処理を実行し、演算実行部102は、変更スカラー値に基づくスカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行し、さらに、補正計算を実行して、変更前のスカラー値を適用したスカラー倍加算結果を算出する処理を実行する構成を持つ。
また、演算実行部102は、JRF表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
の対応ビット(k,l)を選択し、スカラー倍加算:kP+lQ、またはkD+lDを同時に計算する同時計算手法を適用した演算を実行する構成であり、JRF表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
の対応ビット(k,l)のすべてについて、同一の計算シーケンスを適用した演算処理を実行し、また演算処理において、加算点:P+Q、または加算因子:D+Dの算出処理を実行することなく、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する。
これらの処理構成によって、高速な演算が実現され、また、SPA耐性に優れた安全な暗号処理が可能となる。
[4.暗号処理装置の構成例]
最後に、上述の暗号処理を実行するデバイスとしてのICモジュール200の構成例を図7に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図7に示すICモジュール200は、これら様々な機器に構成することが可能である。
図7に示すCPU(Central processing Unit)201は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ202は、CPU201が実行するプログラム、あるいは演算パラメータとしての固定データを格納するROM(Read-Only-Memory)、CPU201の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータやフラグの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。
なお、メモリ202に格納する演算実行プログラムには、上述した点のスカラー倍加算処理の実行シーケンスを含むプログラムなどが含まれる。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部203は、上述したスカラー倍算処理を含む暗号処理、復号処理等を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU201がROM格納プログラムを読み出して実行するように構成してもよい。
乱数発生器204は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
送受信部205は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
本発明の構成によれば、楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、超楕円曲線暗号において規定される因子D,D、およびスカラー値k,lに基づくスカラー倍加算:kD+lD、これらの演算処理において、スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(k,l)を、
(k,l)=(0,±1)または(±1,0)
を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
k=<k,・・・k>、
l=<l,・・・l>、
を生成し、このJRF表現のスカラー値を適用してスカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する構成としたので、(k,l)のすべての組み合わせにおいて同一の演算処理シーケンスを実行可能となり、ビットの組み合わせに応じた処理の差異がなくなり電力解析に対する耐性が向上し、また、P+QやD+Dの事前計算の省略が可能となり演算処理の高速化が実現される。
本発明の暗号処理装置における点のスカラー倍加算の算出を実行する暗号処理部構成例について説明する図である。 スカラー値k,lの2進表現からJRF表現への変換処理の態様をまとめたテーブルを示す図である。 スカラー値制御部の実行するスカラー値k,lのJRF表現の生成処理アルゴリズムの一例である[アルゴリズム1]について説明するフローチャートを示す図である。 スカラー値制御部の実行するスカラー値k,lのJRF表現の生成処理アルゴリズムの一例である[アルゴリズム2]について説明するフローチャートを示す図である。 暗号処理部において実行される処理の全体アルゴリズムとしての[アルゴリズム3]について説明するフローチャートを示す図である。 暗号処理部において実行される処理の全体アルゴリズムとしての[アルゴリズム4]について説明するフローチャートを示す図である。 本発明の暗号処理演算を実行する暗号処理実行デバイス例としてのICモジュールの構成例を示す図である。
符号の説明
100 暗号処理部
101 スカラー値制御部
102 演算実行部
200 ICモジュール
201 CPU(Central Processing Unit)
202 メモリ
203 暗号処理部
204 乱数発生器
205 送受信部

Claims (11)

  1. 楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
    超楕円曲線暗号において規定される因子D,D、およびスカラー値k,lに基づくスカラー倍加算:kD+lD
    いずれかのスカラー倍加算演算を実行する暗号処理装置であり、
    前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(k,l)を、
    (k,l)=(0,±1)または(±1,0)
    を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
    k=<k,・・・k>、
    l=<l,・・・l>、
    を生成するスカラー値制御部と、
    前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する演算実行部と、
    を有することを特徴とする暗号処理装置。
  2. 前記スカラー値制御部は、
    スカラー値k,lが、両者とも偶数、または両者とも奇数である場合、いずれか一方のスカラー値の値を変更して、偶数と奇数の組み合わせに設定し、変更したスカラー値k,lについて、対応ビット位置のビットの組み合わせ(k,l)が、
    (k,l)=(0,±1)または(±1,0)
    を満足するJRF(ジョイント・レギュラーフォーム)表現スカラー値、
    k=<k,・・・k>、
    l=<l,・・・l>、
    を生成する処理を実行する構成であり、
    前記演算実行部は、
    前記変更スカラー値に基づくスカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行し、さらに、補正計算を実行して、変更前のスカラー値を適用したスカラー倍加算結果を算出する処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  3. 前記演算実行部は、
    前記JRF表現スカラー値、
    k=<k,・・・k>、
    l=<l,・・・l>、
    の対応ビット(k,l)を選択し、スカラー倍加算:kP+lQ、またはkD+lDを同時に計算する同時計算手法を適用した演算を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
  4. 前記演算実行部は、
    前記JRF表現スカラー値、
    k=<k,・・・k>、
    l=<l,・・・l>、
    の対応ビット(k,l)のすべてについて、同一の計算シーケンスを適用した演算処理を実行する構成であることを特徴とする請求項3に記載の暗号処理装置。
  5. 前記演算実行部は、
    演算処理において、加算点:P+Q、または加算因子:D+Dの算出処理を実行することなく、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する構成であることを特徴とする請求項3に記載の暗号処理装置。
  6. 楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
    超楕円曲線暗号において規定される因子D,D、およびスカラー値k,lに基づくスカラー倍加算:kD+lD
    いずれかのスカラー倍加算演算を、暗号処理装置において実行する暗号処理方法であり、
    スカラー値制御部における実行ステップであり、
    前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(k,l)を、
    (k,l)=(0,±1)または(±1,0)
    を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
    k=<k,・・・k>、
    l=<l,・・・l>、
    を生成するスカラー値制御ステップと、
    演算実行部における実行ステップであり、
    前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する演算実行ステップと、
    を有することを特徴とする暗号処理方法。
  7. 前記スカラー値制御ステップは、
    スカラー値k,lが、両者とも偶数、または両者とも奇数である場合、いずれか一方のスカラー値の値を変更して、偶数と奇数の組み合わせに設定し、変更したスカラー値k,lについて、対応ビット位置のビットの組み合わせ(k,l)が、
    (k,l)=(0,±1)または(±1,0)
    を満足するJRF(ジョイント・レギュラーフォーム)表現スカラー値、
    k=<k,・・・k>、
    l=<l,・・・l>、
    を生成する処理を実行するステップであり、
    前記演算実行ステップは、
    前記変更スカラー値に基づくスカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行し、さらに、補正計算を実行して、変更前のスカラー値を適用したスカラー倍加算結果を算出する処理を実行するステップであることを特徴とする請求項6に記載の暗号処理方法。
  8. 前記演算実行ステップは、
    前記JRF表現スカラー値、
    k=<k,・・・k>、
    l=<l,・・・l>、
    の対応ビット(k,l)を選択し、スカラー倍加算:kP+lQ、またはkD+lDを同時に計算する同時計算手法を適用した演算を実行するステップであることを特徴とする請求項6に記載の暗号処理方法。
  9. 前記演算実行ステップは、
    前記JRF表現スカラー値、
    k=<k,・・・k>、
    l=<l,・・・l>、
    の対応ビット(k,l)のすべてについて、同一の計算シーケンスを適用した演算処理を実行するステップであることを特徴とする請求項8に記載の暗号処理方法。
  10. 前記演算実行ステップは、
    演算処理において、加算点:P+Q、または加算因子:D+Dの算出処理を実行することなく、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行するステップであることを特徴とする請求項8に記載の暗号処理方法。
  11. 楕円曲線暗号において規定される楕円曲線上の2点P,Q、およびスカラー値k,lに基づくスカラー倍加算:kP+lQ、または、
    超楕円曲線暗号において規定される因子D,D、およびスカラー値k,lに基づくスカラー倍加算:kD+lD
    いずれかのスカラー倍加算演算を、暗号処理装置において実行させるコンピュータ・プログラムであり、
    スカラー値制御部において実行させるステップであり、
    前記スカラー値k,lについて、すべてのビットを0,または+1,または−1で表現し、かつ、スカラー値k,lの対応ビット位置のビットの組み合わせ(k,l)を、
    (k,l)=(0,±1)または(±1,0)
    を満足する設定としたJRF(ジョイント・レギュラーフォーム)表現スカラー値、
    k=<k,・・・k>、
    l=<l,・・・l>、
    を生成するスカラー値制御ステップと、
    演算実行部において実行させるステップであり、
    前記スカラー値制御部の生成したJRF表現スカラー値を適用して、スカラー倍加算:kP+lQ、またはkD+lDの演算処理を実行する演算実行ステップと、
    を実行させることを特徴とするコンピュータ・プログラム。
JP2006007105A 2006-01-16 2006-01-16 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Expired - Fee Related JP4682852B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2006007105A JP4682852B2 (ja) 2006-01-16 2006-01-16 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
KR1020070003225A KR101269737B1 (ko) 2006-01-16 2007-01-11 암호 처리 장치 및 암호 처리 방법과 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
US11/653,182 US7835517B2 (en) 2006-01-16 2007-01-12 Encryption processing apparatus, encryption processing method, and computer program
CN2007100017341A CN101005350B (zh) 2006-01-16 2007-01-16 加密处理设备和加密处理方法
EP07100626A EP1808762B1 (en) 2006-01-16 2007-01-16 Encryption processing apparatus, encryption processing method, and computer program
DE602007001538T DE602007001538D1 (de) 2006-01-16 2007-01-16 Verschlüsselungsverarbeitungsvorrichtung, Verschlüsselungsverarbeitungsverfahren und Computerprogramm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006007105A JP4682852B2 (ja) 2006-01-16 2006-01-16 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Publications (2)

Publication Number Publication Date
JP2007187958A true JP2007187958A (ja) 2007-07-26
JP4682852B2 JP4682852B2 (ja) 2011-05-11

Family

ID=38002237

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006007105A Expired - Fee Related JP4682852B2 (ja) 2006-01-16 2006-01-16 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US7835517B2 (ja)
EP (1) EP1808762B1 (ja)
JP (1) JP4682852B2 (ja)
KR (1) KR101269737B1 (ja)
CN (1) CN101005350B (ja)
DE (1) DE602007001538D1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104786986A (zh) * 2015-03-25 2015-07-22 王方圆 新型滚码汽车防盗器

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7961872B2 (en) * 2006-12-04 2011-06-14 Lsi Corporation Flexible hardware architecture for ECC/HECC based cryptography
CA2593723C (en) * 2007-06-27 2016-04-19 Certicom Corp. Multi-dimensional montgomery ladders for elliptic curves
KR100965813B1 (ko) * 2007-12-28 2010-06-24 경원대학교 산학협력단 유비쿼터스 환경에서 안전한 메시지 전송을 위한타원곡선기반의 rfid 암호 방법
JP5094882B2 (ja) * 2008-01-18 2012-12-12 三菱電機株式会社 暗号パラメータ設定装置及び鍵生成装置及び暗号システム及びプログラム及び暗号パラメータ設定方法及び鍵生成方法
JP5446678B2 (ja) * 2009-09-29 2014-03-19 富士通株式会社 楕円曲線暗号演算装置及び方法
US9400636B2 (en) 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
FR3024808B1 (fr) * 2014-08-05 2016-07-29 Inside Secure Procede de cryptographie sur courbe elliptique comprenant une detection d’erreur
CN104486074B (zh) * 2014-12-12 2017-06-23 湘潭大学 用于嵌入式设备的椭圆曲线加密方法和解密方法
WO2018145191A1 (en) * 2017-02-13 2018-08-16 Infosec Global Inc. System and method for optimized elliptic curve cryptography operations
CN107241198A (zh) * 2017-08-01 2017-10-10 北京智慧云测科技有限公司 一种椭圆曲线算法的安全性评估方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003263110A (ja) * 2002-03-08 2003-09-19 Nippon Telegr & Teleph Corp <Ntt> 楕円曲線上の有理点群の部分群の元生成装置、そのプログラム及び記録媒体
JP2004205870A (ja) * 2002-12-26 2004-07-22 Hitachi Ltd 超楕円曲線スカラー倍演算方法及び装置
JP2005258228A (ja) * 2004-03-12 2005-09-22 Sony Corp 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2791497B1 (fr) * 1999-03-26 2001-05-18 Gemplus Card Int Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique
JP2003098962A (ja) * 2001-09-20 2003-04-04 Hitachi Ltd 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
FR2811168B1 (fr) * 2000-06-30 2002-11-15 Gemplus Card Int Procede de conversion de la representation binaire d'un nombre dans une representation binaire signee
JP3820909B2 (ja) * 2001-04-24 2006-09-13 ソニー株式会社 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにプログラム
JP4034585B2 (ja) * 2002-01-28 2008-01-16 松下電器産業株式会社 楕円曲線演算装置及び楕円曲線演算方法
AU2003272087A1 (en) * 2002-10-26 2004-05-13 The Additional Director (Ipr), Defence Research And Development Organisation A method of elliptic curve encryption
US7555122B2 (en) * 2002-12-04 2009-06-30 Wired Communications LLC Method for elliptic curve point multiplication
EP1548687B1 (en) * 2002-12-18 2013-01-09 Fujitsu Limited Tamper-resistant elliptical curve encryption using secret key
JP2006145945A (ja) * 2004-11-22 2006-06-08 Sony Corp 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム
US7602907B2 (en) * 2005-07-01 2009-10-13 Microsoft Corporation Elliptic curve point multiplication
EP1946205B1 (en) * 2005-10-18 2010-04-14 Telecom Italia S.p.A. A method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems
EP1946204B1 (en) * 2005-10-28 2010-04-28 Telecom Italia S.p.A. A method for scalar multiplication in elliptic curve groups over binary polynomial fields for side-channel attack-resistant cryptosystems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003263110A (ja) * 2002-03-08 2003-09-19 Nippon Telegr & Teleph Corp <Ntt> 楕円曲線上の有理点群の部分群の元生成装置、そのプログラム及び記録媒体
JP2004205870A (ja) * 2002-12-26 2004-07-22 Hitachi Ltd 超楕円曲線スカラー倍演算方法及び装置
JP2005258228A (ja) * 2004-03-12 2005-09-22 Sony Corp 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104786986A (zh) * 2015-03-25 2015-07-22 王方圆 新型滚码汽车防盗器

Also Published As

Publication number Publication date
KR101269737B1 (ko) 2013-05-30
DE602007001538D1 (de) 2009-08-27
CN101005350A (zh) 2007-07-25
EP1808762B1 (en) 2009-07-15
US7835517B2 (en) 2010-11-16
JP4682852B2 (ja) 2011-05-11
EP1808762A1 (en) 2007-07-18
KR20070076440A (ko) 2007-07-24
US20070211894A1 (en) 2007-09-13
CN101005350B (zh) 2011-04-06

Similar Documents

Publication Publication Date Title
JP4682852B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
KR101154695B1 (ko) 암호 처리 연산 장치
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
US7379546B2 (en) Method for XZ-elliptic curve cryptography
US8102998B2 (en) Method for elliptic curve scalar multiplication using parameterized projective coordinates
JP4513752B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
KR101019242B1 (ko) 확장된 몽고메리 레더를 이용한 스칼라 곱셈 방법
JP2003098962A (ja) 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
US8014520B2 (en) Exponentiation ladder for cryptography
US9419789B2 (en) Method and apparatus for scalar multiplication secure against differential power attacks
Vijayakumar et al. Comparative study of hyperelliptic curve cryptosystem over prime field and its survey
US7177422B2 (en) Elliptic curve encryption processing method, elliptic curve encryption processing apparatus, and program
JP2007041461A (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
Jaiswal et al. Hardware implementation of text encryption using elliptic curve cryptography over 192 bit prime field
Iyengar Novel elliptic curve scalar multiplication algorithms for faster and safer public-key cryptosystems
JP2004163687A (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム
Al-Haija et al. Cost-effective design for binary Edwards elliptic curves crypto-processor over GF (2N) using parallel multipliers and architectures
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
Dhanda et al. Elliptic Curve Cryptography: A Software Implementation
Shankar et al. Cryptography with fast point multiplication by using ASCII codes and its implementation
JP2004053814A (ja) 楕円曲線暗号装置及び楕円曲線暗号演算方法
Kocabas et al. Hardware implementations of ECC over a binary Edwards curve
JP2007212768A (ja) 楕円曲線暗号における事前計算テーブル作成装置
Thompson Elliptic Curve Cryptography

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100518

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100709

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110111

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110124

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140218

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140218

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees