JP5010508B2 - 楕円曲線暗号演算装置、方法及びプログラム並びに楕円曲線暗号演算システム及び方法 - Google Patents

楕円曲線暗号演算装置、方法及びプログラム並びに楕円曲線暗号演算システム及び方法 Download PDF

Info

Publication number
JP5010508B2
JP5010508B2 JP2008062241A JP2008062241A JP5010508B2 JP 5010508 B2 JP5010508 B2 JP 5010508B2 JP 2008062241 A JP2008062241 A JP 2008062241A JP 2008062241 A JP2008062241 A JP 2008062241A JP 5010508 B2 JP5010508 B2 JP 5010508B2
Authority
JP
Japan
Prior art keywords
point
integer
unit
elliptic curve
scalar
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.)
Active
Application number
JP2008062241A
Other languages
English (en)
Other versions
JP2009218991A (ja
Inventor
公洋 山越
利徳 福永
順子 高橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2008062241A priority Critical patent/JP5010508B2/ja
Publication of JP2009218991A publication Critical patent/JP2009218991A/ja
Application granted granted Critical
Publication of JP5010508B2 publication Critical patent/JP5010508B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、楕円曲線暗号に関する。特に、楕円曲線暗号演算への電力解析攻撃に対する防御技術に関する。
楕円曲線暗号演算への電力解析攻撃に対する防御技術として、乱数を用いてスカラ倍指数を分離する方法が提案されている(例えば、非特許文献1参照。)。この方法では、楕円スカラ倍算k×Pを実行する度に毎回異なる乱数rを生成して、この乱数rを用いて、スカラ倍指数kをk→(k−r)+(r)のように2つの整数に分離する。そして、点Pの楕円スカラk倍算k×Pを、下記の式を計算することにより行う。すなわち、点Pの楕円スカラ(k−r)倍点(k−r)×Pと、点Pの楕円スカラr倍点r×Pとをそれぞれ計算した後に、これらの計算された点を加算する。
(k−r)×P+r×P
上記の方法の変形として、下記の式により楕円スカラ倍算k×Pを行う方法が提案されている(例えば、非特許文献2参照。)。ここで、[・]は、[・]を・の整数部分を出力する床関数である。このように、スカラ倍指数kを、スカラ倍指数kを乱数rで割ったときの余り(k mod r)と、商[k/r]をr倍した値[k/r]rとに分離して、下記の式により楕円スカラ倍算k×Pを行う。すなわち、点Pの楕円スカラ(k mod r)倍点と、点Pの楕円スカラ[k/r]r倍点とをそれぞれ計算した後に、これらの計算された点を加算する。
(k mod r)×P+[k/r]r×P
これらの2つの方法のように、乱数rを用いてスカラ倍指数kを2つの整数に分離して楕円スカラ倍算を行うことにより、演算の中間値が楕円スカラ倍算の度に毎回異なる値を取るようにできるため、いわゆる差分電力解析攻撃(DPA:Differential Power Analysis)を防ぐことができる。
Christopher Clavier and Marc Joye, 「Universal Exponentiation Algorithm」, CHES 2001, volume 2162 of LNCS, Springer-Verlag, 2001, P.300-308 Christopher Clavier and Marc Joye, 「(Virtually) Free Randomization Techniques for Elliptic Curve Cryptography」, ICIS 2003, volume 2836 of LNCS, Springer-Verlag, 2003, P.348-359,
しかし、上記の2つの方法は、楕円スカラ倍算を行うモジュールがいわゆる単純電力解析攻撃(SPA:Simple Power Analysis)に対する防御機能を備えていることを前提としている。楕円スカラ倍算を行うモジュールが単純電力解析攻撃に対する防御機能を備えていない場合、攻撃者は、スカラ倍指数kをk→x+xと分離した結果生じる2つのスカラ倍指数x,xを、点Pの楕円スカラx倍算x×P及び点Pの楕円スカラx倍算x×Pのそれぞれ単純電力解析攻撃することにより取得することが可能である。したがって、取得した2つのスカラ倍指数x,xから、元の秘密情報であるスカラ倍指数kを、k=x+xにより復元することができるという問題があった。
この発明は、上記問題に鑑み、元のスカラ倍指数kを復元することができない楕円曲線暗号演算装置、方法及びプログラム並びに楕円曲線暗号演算システム及び方法を提供することを目的とする。
この発明の1つの観点によれば、楕円曲線上の点Pを楕円スカラk倍した点k×Pを求めるために、記憶部には、点Pの位数をnとして、1<r<nの予め定められた整数rと、点Pを楕円スカラr倍した点S=r×Pとを、正当権限を有しない外部機器が読み出すことができないように記憶されている。除数生成部が、1<α<nの整数の乱数であるαと、記憶部から読み込んだ整数rとを用いて、r’=αr mod nにより定義される除数r’を生成する。第一スカラ倍演算部が、点Pを楕円スカラ(k mod r’)倍した点(k mod r’)×Pを求める。第二スカラ倍演算部が、[・]を・の整数部分を出力する床関数として、記憶部から読み込んだ点Sを楕円スカラ[k/r’]α倍した点[k/r’]α×Sを求める。加算部が、点(k mod r’)×Pと、点[k/r’]α×Sを加算する。
攻撃者が、点Pの楕円スカラ倍算と、点Sの楕円スカラ倍算とをそれぞれ単純電力解析攻撃をすることにより得た2つのスカラ倍指数を加算しても、元のスカラ倍指数kを復元することはできない。
図面を参照して、この発明の各実施例について説明する。同一の部分には、同じ符号を付けて重複説明を略する。
図1に示すように、実施例1の楕円曲線暗号演算装置は、記憶部11、乱数生成部12、除数生成部13及びメイン計算部15を例えば含む。メイン計算部15は、第一スカラ倍演算部151、第二スカラ倍演算部152及び加算部153を例えば含む。実施例1の楕円曲線暗号演算方法は、図2に示すステップS1からステップS3の処理を例えば行う。
楕円曲線暗号演算装置は、単純電力解析攻撃に対する防御機能を備えていない、ICカード、携帯端末機器等の楕円曲線暗号の演算を行う装置である。
楕円曲線暗号演算装置の記憶部11には、楕円曲線パラメータE、ベースポイントである点Pのx,y座標x,y、点Pの位数n、1<r<nの予め定められた整数r、点Pの楕円スカラr倍点S=r×Pのx,y座標x,yが事前パラメータとして格納される。これらの事前パラメータは、正当権限を有しない外部インターフェースから読み出すことができないように記憶部11に記憶される。
なお、事前パラメータの内、整数r、及び、点Pの楕円スカラr倍点S=r×Pのx,y座標x,yは、秘密情報として正当権限を有する機器のみで秘密にされる。一方、事前パラメータの内、楕円曲線パラメータE、ベースポイントである点Pのx,y座標x,y、点Pの位数nは、公開情報として公開されるものであるため、正当権限を有しない外部インターフェースが読み出すことができるように楕円曲線暗号演算装置に記憶されていてもよい。
<ステップS1>
暗号演算処理の過程で、楕円スカラk倍算を行う必要が生じたとき、乱数生成部12が、1<α<nの整数の乱数αを生成する。生成された乱数αは、除数生成部13と、メイン計算部15とに送られる。
<ステップS2>
除数生成部13は、乱数αと、記憶部から読み込んだ整数rとを用いて、
r’=αr mod n
により定義される除数r’を生成する。生成された除数r’は、メイン計算部15に送られる。
<ステップS3>
メイン計算部15は、下記の式(1)を計算することにより、点Pの楕円スカラk倍点k×Pを求める。具体的には、第一スカラ倍演算部151,第二スカラ倍演算部152及び加算部153が、ステップS31からステップS33の処理を行うことにより、点k×Pの計算を行う。下記の式(1)を計算することにより求まる点が、点k×Pと等しくなる理由、すなわちk×P=(k mod r’)×P+[k/r’]α×Sとなる理由については後述する。
(k mod r’)×P+[k/r’]α×S …(1)
<ステップS31>
第一スカラ倍演算部151は、点Pを楕円スカラ(k mod r’)倍した点
(k mod r’)×P
を求める。点(k mod r’)×Pは、加算部153に送られる。
<ステップS32>
第二スカラ倍演算部152は、[・]を・の整数部分を出力する床関数として、記憶部11から読み込んだ点Sを楕円スカラ[k/r’]α倍した点
[k/r’]α×S
を求める。点[k/r’]α×Sは、加算部153に送られる。
<ステップS33>
加算部153は、点(k mod r’)×Pと、点[k/r’]α×Sとを加算する。
以上が、実施例1の楕円曲線暗号演算装置、方法の処理である。
楕円曲線暗号演算装置が単純電力解析攻撃に対する防御機能を備えていない場合には、攻撃者は、点Pの楕円スカラ(k mod r’)倍算と、点Sの楕円スカラ[k/r’]α倍算とをそれぞれ単純電力解析攻撃をすることにより、(k mod r’)の値と、[k/r’]αの値とを取得することができる。しかし、(k mod r’)の値と、[k/r’]αの値とを加算しても、スカラ倍指数kにはならない。記憶部11に格納された予め定められた整数rの値を取得できない限り、これらの値から元のスカラ倍指数kを復元することはできない。このように、この実施例1の楕円曲線暗号演算装置、方法により、単純電力解析攻撃からスカラ倍指数kを防御することができる。
k×P=(k mod r’)×P+[k/r’]α×Sとなる理由について説明する。nは点Pの位数であるから、位数の定義よりn×P=O(無限遠点)である。このため、
α×S=αr×P=(αr mod n)×P=r’×P
となる。したがって、
(k mod r’)×P+[k/r’]α×S
=(k mod r’)×P+[k/r’]r’×P
=k×P
となるのである。
図3に例示するように、実施例2の楕円曲線暗号演算装置は、実施例1のメイン計算部15を除く各部に加えて、スカラ倍指数kを拡張スカラ倍指数k’に変換する拡張スカラ倍指数生成部14と、乱数生成部141とを更に有する。また、メイン計算部15に代えて、第一スカラ倍演算部151’、第二スカラ倍演算部152’及び加算部153’を例えば有するメイン計算部15’を有する。実施例2の楕円曲線暗号演算方法は、図4に例示するように、実施例1のステップ1,ステップS2に加えて、ステップS4,ステップS5の処理を行う。また、ステップS3の処理に代えて、ステップS3’の処理を行う。実施例2はこれらの部分で実施例1とは異なる。他の部分は実施例1と同様である。
<ステップS4(図4)>
乱数生成部141(図3)は、1<βの整数である乱数βを生成して、拡張スカラ倍指数生成部14に送る。
<ステップS5>
拡張スカラ倍指数生成部14は、乱数βを用いて、入力されたスカラ倍指数kを拡張した拡張スカラ倍指数k’=k+βnを求める。
<ステップS3’>
メイン計算部15’は、下記の式を計算することにより、点Pの楕円スカラk倍点k×Pを求める。具体的には、第一スカラ倍演算部151’,第二スカラ倍演算部152’及び加算部153’が、ステップS31’からステップS33’の処理を行うことにより、点k×Pの計算を行う。下記の式(2)を計算することにより求まる点が、点k×Pと等しくなる理由、すなわちk×P=(k’ mod r’)×P+[k’/r’]α×Sとなる理由については後述する。
(k’ mod r’)×P+[k’/r’]α×S …(2)
<ステップS31’>
第一スカラ倍演算部151’は、点Pを楕円スカラ(k’ mod r’)倍した点
(k’ mod r’)×P
を求める。点(k’ mod r’)×Pは、加算部153’に送られる。
<ステップS32’>
第二スカラ倍演算部152’は、[・]を・の整数部分を出力する床関数として、記憶部11から読み込んだ点Sを楕円スカラ[k’/r’]α倍した点
[k’/r’]α×S
を求める。点[k’/r’]α×Sは、加算部153’に送られる。
<ステップS33’>
加算部153’は、点(k’ mod r’)×Pと、点[k’/r’]α×Sとを加算する。
以上が、実施例2の楕円曲線暗号演算装置、方法の処理である。
楕円曲線暗号演算装置が単純電力解析攻撃に対する防御機能を備えていない場合には、攻撃者は、点Pの楕円スカラ(k’ mod r’)倍算と、点Sの楕円スカラ[k’/r’]α倍算とをそれぞれ単純電力解析攻撃をすることにより、(k’ mod r’)の値と、[k’/r’]αとを取得することができる。しかし、(k’ mod r’)の値と、[k’/r’]αの値とを加算しても、スカラ倍指数kにはならない。記憶部11に格納された予め定められた整数rの値を取得できない限り、これらの値から元のスカラ倍指数kを復元することはできない。このように、この実施例2の楕円曲線暗号演算装置、方法により、単純電力解析攻撃からスカラ倍指数kを防御することができる。
k’×P=(k’ mod r’)×P+[k’/r’]α×Sとなる理由について説明する。nは点Pの位数であるから、位数の定義よりn×P=O(無限遠点)である。このため、
α×S=αr×P=(αr mod n)×P=r’×P
となり、また、
k’=k+βn=k
となる。したがって、
(k’ mod r’)×P+[k’/r’]α×S
=(k’ mod r’)×P+[k’/r’]r’×P
=k’×P
=k×P
となるのである。
実施例1においては、スカラ倍指数kの値が小さく、除数r’の値が大きい場合、[k/r’]=0となる可能性がある。[k/r’]=0の場合、k=k mod r’であるため、攻撃者は、点Pの楕円スカラ(k mod r’)倍算を単純電力解析攻撃をすることにより、スカラ倍指数kを知ることができる。しかし、実施例2においては、拡張スカラ倍指数k’>nであり、除数r’<nであり、[k’/r’]=0となることはないため、実施例1に比べて安全性が更に高い。
実施例3は、除数r’の値を所定の大きさ以上にすることにより、k/r’又はk/r’の計算コストを削減することを特徴とする。
具体的には、実施例3の楕円曲線暗号演算装置は、実施例1又は2の各部に加えて、除数r’が所定の値よりも大きいかどうかを判断する判断部16、除数r’が所定の値よりも小さい場合に除数r’とαを大きくする変換部17を更に有する。また、実施例3の楕円曲線暗号演算方法は、実施例1又は2の各ステップに加えて、図2又は図4において破線で示した、ステップS6,ステップS7の処理を例えば行う。
なお、実施例3においては、αは、1<α<nではなく、1<α<n−1からランダムに選択される整数の乱数であるとする。後述する処理においてα←α+1と変換された場合に、変換されたαが1<α<nとなるようにするためである。
以下では、図5を参照して、実施例2に、判断部16、変換部17を設けた場合を例に挙げて説明をする。実施例2と異なる部分についてのみ説明をして、同様な部分については重複説明を略する。
Lを2以上の整数として、整数rは、n/2<r<n−n/2の範囲からランダムに選択されて、記憶部11に記憶されている。
除数生成部13が生成した除数r’は、判断部16に送られる。
<ステップS6>
判断部16は、除数r’が、r’≧n/2を満たすかどうかを判断する。判断結果は、変換部17に送られる。
<ステップS7>
変換部17は、ステップS6においてr’≧n/2を満たさないと判断された場合には、r’←r’+r、α←α+1と変換する。すなわち、r’の値をr’の値にrを加算した値に変換すると共に、αの値をαの値に1を加算した値に変換する。変換された、除数r’及び乱数αは、メイン計算部15に送られる。
その後、メイン計算部15’は、変換された、除数r’及び乱数αに基づいて、実施例2と同じ計算を行う(ステップS3’)。
変換部17は、ステップS6においてr’≧n/2を満たす判断された場合には、除数r’及び乱数αを変更しない。
以上が、実施例3の楕円曲線暗号演算装置、方法の処理である。
以下、上記の処理により、k’/r’の値が所定の値(この例では、2L+1)よりも小さくなることを、(1)n/2≦r’<nの場合と、(2)0<r’<n/2の場合とに分けて説明する。
(1)n/2≦r’<nの場合
k’=k+n<2nであるから、k’/r’<2n/(n/2)=2L+1
(2)0<r’<n/2の場合
この場合、変換部17により、r’←r’+r、α←α+1と変換される。今、r’’=r’+rと置くと、0<r’、n/2<rより、n/2<r’’、また、r’<n/2、r<n−n/2より、r’’<r/2+(n−n/2)=nとなる。したがって、n/2<r’’<nとなる。
k’=k+n<2nであるから、k’/r’’<2n/(n/2)=2L+1となる。
このように、何れの場合も、k’/r’<2L+1となり、パラメータL(≧2)により、k’/r’の上限値を制限することができる。すなわち、k’/r’の計算コストを小さくすることができる。
実施例2に、判断部16、変換部17を設けた場合を例に挙げて説明したが、実施例1についても、同様の処理を行う判断部16、変換部17を設けてもよい。
実施例3の楕円曲線暗号演算装置、方法も、実施例1及び2と同じ理由により、単純電力解析攻撃からスカラ倍指数kを防御することができる。また、実施例1及び2と同じ理由により、メイン計算部15の計算結果が、k×Pと等しくなる。
実施例4は、実施例1から3の何れかの楕円曲線暗号演算装置と、整数r及び点S=r×Pを更新する発行装置30とを有する楕円曲線暗号演算システム及びその方法であり、整数r及び点Sを更新することを特徴とする。
以下では、図6、図7及び図8を参照して、楕円曲線暗号演算装置が実施例2の楕円曲線暗号演算装置である場合を例に挙げて説明する。実施例2と異なる部分についてのみ説明をして、同様な部分については重複説明を略する。
実施例4の楕円曲線暗号演算装置は、実施例2の楕円曲線暗号演算装置の各部に加えて、図6に例示するように、受信部18及び更新部19を例えば有する。また、実施例4の楕円曲線暗号演算方法は、実施例2の楕円曲線暗号演算方法の各ステップ(図4参照)に加えて、ステップS8からステップS12の処理(図8参照)を例えば行う。発行装置30(図7参照)は、整数生成部32、第三スカラ倍演算部33及び送信部34を例えば備える。
<ステップS8(図8参照)>
正当権限を有する外部機器である発行装置30の整数生成部32(図7参照)は、1<r<nの整数rを更新された整数rとして選択する。更新された整数rは、第三スカラ倍演算部33と、送信部34とに送られる。なお、楕円曲線暗号演算装置が実施例3の楕円曲線暗号演算装置である場合には、n/2<r<n−n/2の整数rが更新された整数rとして選択される。
<ステップS9>
第三スカラ倍演算部33は、更新された整数rを用いて、点Pの楕円スカラr倍点S=r×Pを更新された点Sとして求める。更新された点Sは、送信部34に送られる。
<ステップS10>
送信部34は、更新された整数r及び更新された点Sを、公衆網等を介しないセキュアな通信手段を用いて、この発明による楕円曲線暗号演算装置に送る。
<ステップS11>
楕円曲線暗号演算装置の受信部18(図6参照)は、正当権限を有する発行装置30から受信した、更新された整数r及び更新された点Sを更新部19に送る。
<ステップS12>
更新部19は、更新された整数r及び更新された点Sで、記憶部11に記憶された整数r及び点Sを更新する。
その後、更新された整数r及び更新された点Sとに基づいて、実施例2と同様の計算が行われる。
ここで、図7に破線で例示するように、安全性を保障するために、ユーザ認証を行うユーザ認証部31を発行装置30に設けて、メンテナンス許可者のみが、ユーザ認証を経て整数r及び点Sの更新処理シーケンスを行うことが可能であることが望ましい。また、整数r、点Sの更新が完了した後は、生成した、整数r、点Sの値を直ちに消去する機能を有していることが望ましい。さらに、整数r、点Sの更新以外の目的で使用されることができない仕様になっていることが望ましい。
以上が、実施例4の楕円曲線暗号演算装置及び方法、並びに、楕円曲線暗号演算システム及び方法の処理である。
このようにして、整数r及び点Sを更新することにより、安全性を増すことができる。何らかのデータ管理上の不手際等が原因で整数rの値が外部に放出され第三者に知れ渡ってしまったような場合、同一の整数rの値を暗号処理に継続して使用することは安全性の点で問題がある。例えばこのような場合に備えて、整数rや点Sを一定の頻度で更新することが望ましい。
実施例5は、実施例1から3の何れかの楕円曲線暗号演算装置と、整数r及び点S=r×Pを更新するための更新コマンドを生成する発行装置30’を有する楕円曲線暗号演算システム及びその方法である。実施例5は、発行装置ではなく、更新コマンドを受けた楕円曲線暗号演算装置が整数r及び点Sを生成する点で、実施例4とは異なる。
以下では、図9、図10及び図11を参照して、楕円曲線暗号演算装置が実施例2の楕円曲線暗号演算装置である場合を例に挙げて説明する。実施例2と異なる部分についてのみ説明をして、同様な部分については重複説明を略する。
実施例5の楕円曲線暗号演算装置は、実施例2の楕円曲線暗号演算装置の各部(図3参照)に加えて、図9に例示する受信部18、更新部19、整数生成部20及び第四スカラ倍演算部21を例えば有する。また、実施例4の楕円曲線暗号演算方法は、図11に例示するように、実施例2の楕円曲線暗号演算方法の各ステップ(図4参照)に加えて、ステップS13からステップS16の処理を例えば行う。発行装置30’は、図10に例示するように、整数生成部32、第三スカラ倍演算部33及び送信部34を例えば備える。
<ステップS13(図11参照)>
正当権限を有する外部機器である発行装置30’の更新コマンド生成部35(図10参照)は、楕円曲線暗号演算装置に整数r及び点Sの更新を指示する更新コマンドを生成して、楕円曲線暗号演算装置に送る。
<ステップS14>
楕円曲線暗号演算装置の整数生成部20は、受信部18を介して更新コマンドを受け取ると、整数rを生成する。生成された整数rは、更新部19及び第四スカラ倍演算部21に送られる。なお、楕円曲線暗号演算装置が実施例3の楕円曲線暗号演算装置である場合には、n/2<r<n−n/2の整数rが更新された整数rとして選択される。
<ステップS15>
第四スカラ倍演算部21は、更新された整数rを用いて、点Pの楕円スカラr倍点S=r×Pを更新された点Sとして求める。更新された点Sは、更新部19に送られる。
<ステップS16>
更新部19は、更新された整数r及び更新された点Sで、記憶部11に記憶された整数r及び点Sを更新する。
その後、更新された整数r及び更新された点Sに基づいて、実施例2と同様の計算が行われる。
実施例5においては、更新の際に第四スカラ倍演算部21において点Pの楕円スカラr倍算r×Pが行われる。したがって、更新の際に単純電力解析攻撃を受けると、整数rの値が取得されてしまうので、整数r及び点Sの更新は限定的な条件でのみ許可され得る仕様になっていることが望ましい。したがって、図10に破線で例示するように、ユーザ認証を行うユーザ認証部31を発行装置30’に設けて、メンテナンス許可者のみが、ユーザ認証を経て整数r及び点Sの更新処理シーケンスを行うことが可能であることが望ましい。このようにして、整数r及び点Sを更新することにより、実施例4と同様に安全性を増すことができる。
[変形例等]
乱数生成部12を設けないで、予め生成された乱数αに基づいて上記の計算が行われるようにしてもよい。同様に、乱数生成部141を設けないで、予め生成された乱数βに基づいて上記の計算が行われるようにしてもよい。
なお、単純電力解析攻撃に対する防御機能を備えている楕円曲線暗号演算装置が、更なる安全性を確保するために、この発明による楕円曲線暗号の演算を行ってもよい。すなわち、この発明の楕円曲線暗号演算装置は、単純電力解析攻撃に対する防御機能を備えていてもよい。
上述の構成をコンピュータによって実現する場合、楕円曲線暗号演算装置の各部が有する機能の処理内容はプログラムによって記述される。そして、このプログラムを図12に例示するコンピュータで実行することにより、上記各部の機能がコンピュータ上で実現される。
すなわち、CPU1がプログラムを逐次読み込んで実行することにより、乱数生成部12、除数生成部13、拡張スカラ倍指数生成部14、乱数生成部141、メイン計算部15、第一スカラ倍演算部151、第二スカラ倍演算部152、加算部153、メイン計算部15’、第一スカラ倍演算部151’、第二スカラ倍演算部152’、加算部153’、判断部16、変換部17、受信部18、更新部19、整数生成部20及び第四スカラ倍演算部21の機能がそれぞれ実現される。また、補助記憶装置3又はメモリ2が、記憶部11として機能する。
楕円曲線暗号演算装置の各部として機能するCPU1は、例えばメモリ2又は補助記憶装置3から読み込み込んだデータに対して処理を行い、処理を行った後のデータをメモリ2又は補助記憶装置3に格納する。すなわち、メモリ2又は補助記憶装置3を介して、楕円曲線暗号演算装置の各部間でデータがやり取りされる。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD
−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
また、上述した実施形態とは別の実行形態として、コンピュータが可搬型記録媒体から直接このプログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を基底する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。例えば、図2において、ステップS31の処理及びステップS32の処理を並列に行ってもよい。
その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
実施例1の楕円曲線暗号演算装置の機能ブロック図。 実施例1の楕円曲線暗号演算方法のフローチャート。 実施例2の楕円曲線暗号演算装置の機能ブロック図。 実施例2の楕円曲線暗号演算方法のフローチャート。 実施例3の楕円曲線暗号演算装置の機能ブロック図。 実施例4の楕円曲線暗号演算装置の機能ブロック図。 実施例4の発行装置の機能ブロック図。 実施例4の楕円曲線暗号演算システムの方法のフローチャート。 実施例5の楕円曲線暗号演算装置の機能ブロック図。 実施例5の発行装置の機能ブロック図。 実施例5の楕円曲線暗号演算システムの方法のフローチャート。 この発明の楕円曲線暗号演算装置をコンピュータで実現させる場合の機能ブロック図の例。
符号の説明
11 記憶部
12 乱数生成部
13 除数生成部
14 拡張スカラ倍指数生成部
15,15’ メイン計算部
151,151’ 第一スカラ倍演算部
152,152’ 第二スカラ倍演算部
16 判断部
17 変換部
18 受信部
19 更新部
20 整数生成部
21 第四スカラ倍演算部
30 発行装置
31 ユーザ認証部
32 整数生成部
33 第三スカラ倍演算部
34 送信部
35 更新コマンド生成部
141 乱数生成部

Claims (15)

  1. 楕円曲線上の点Pを楕円スカラk倍した点k×Pを求める楕円曲線暗号演算装置であって、
    上記点Pの位数をnとして、1<r<nの予め定められた整数rと、上記点Pを楕円スカラr倍した点S=r×Pとを、正当権限を有しない外部機器が読み出すことができないように記憶する記憶部と、
    1<α<nの整数の乱数であるαと、上記記憶部から読み込んだ上記整数rとを用いて、r’=αr mod nにより定義される除数r’を生成する除数生成部と、
    上記点Pを楕円スカラ(k mod r’)倍した点(k mod r’)×Pを求める第一スカラ倍演算部と、
    [・]を・の整数部分を出力する床関数として、上記記憶部から読み込んだ上記点Sを楕円スカラ[k/r’]α倍した点[k/r’]α×Sを求める第二スカラ倍演算部と、
    上記点(k mod r’)×Pと、上記点[k/r’]α×Sを加算する加算部と、
    を有する楕円曲線暗号演算装置。
  2. 請求項1に記載の楕円曲線暗号演算装置であって、
    1<βの整数である乱数βを用いて、kを拡張した拡張スカラ倍指数k’=k+βnを求める拡張スカラ倍指数生成部を更に有し、
    上記第一スカラ倍演算部は、上記点Pを楕円スカラ(k’ mod r’)倍した点(k’ mod r’)×Pを求める部であり、
    上記第二スカラ倍演算部は、上記点Sを楕円スカラ[k’/r’]α倍した点[k’/r’]α×Sを求める部であり、
    上記加算部は、上記点(k’ mod r’)×Pと、上記点[k’/r’]α×Sを加算する部である、
    ことを特徴とする楕円曲線暗号演算装置。
  3. 請求項1又は2に記載の楕円曲線暗号演算装置であって、
    上記αは、1<α<n−1の整数の乱数であり、
    Lを2以上の整数として、上記rはn/2<r<n−n/2の整数であり、
    上記除数r’の値が、n/2以上又はより大であるかどうかを判断する判断部と、
    上記r’の値がn/2以上又はより大でないと判断された場合には、上記r’の値を上記r’の値に上記rを加算した値に変換すると共に、上記αの値を上記αの値に1を加算した値に変換する変換部と、
    を更に有することを特徴とする楕円曲線暗号演算装置。
  4. 請求項1から3の何れかに記載の楕円曲線暗号演算装置であって、
    正当権限を有する外部機器から、更新された整数r及び更新された点Sを受信する受信部と、
    上記更新された整数r及び上記更新された点Sで、上記記憶部に記憶された上記整数r及び上記点Sを更新する更新部と、
    を更に有することを特徴とする楕円曲線暗号演算装置。
  5. 請求項1から3の何れかに記載の楕円曲線暗号演算装置であって、
    正当権限を有する外部機器から更新コマンドを受信すると、1<r<nの整数又はn/2<r<n−n/2の整数rを更新された整数rとして選択する整数生成部と、
    上記更新された整数rを用いて、上記点Pの楕円スカラr倍点S=r×Pを更新された点Sとして求める第四スカラ倍演算部と、
    上記更新された整数r及び上記更新された点Sで、上記記憶部に記憶された上記整数r及び上記点Sを更新する更新部と、
    を更に有することを特徴とする楕円曲線暗号演算装置。
  6. 請求項4に記載の楕円曲線暗号演算装置と、
    上記正当権限を有する外部機器と、
    を有し、
    上記正当権限を有する外部機器は、
    1<r<nの整数又はn/2<r<n−n/2の整数rを更新された整数rとして選択する整数生成部と、更新された整数rを用いて上記点Pの楕円スカラr倍点S=r×Pを更新された点Sとして求める第三スカラ倍演算部と、上記更新された整数r及び上記更新された点Sを上記楕円曲線暗号演算装置に送る送信部とを有する、
    ことを特徴とする楕円曲線暗号演算システム。
  7. 請求項5に記載の楕円曲線暗号演算装置と、
    上記正当権限を有する外部機器と、
    を有し、
    上記正当権限を有する外部機器は、更新コマンドを上記楕円曲線暗号演算装置に送る送信部を有する、
    ことを特徴とする楕円曲線暗号演算システム。
  8. 楕円曲線上の点Pを楕円スカラk倍した点k×Pを求める楕円曲線暗号演算方法であって、
    記憶部には、上記点Pの位数をnとして、1<r<nの予め定められた整数rと、上記点Pを楕円スカラr倍した点S=r×Pとを、正当権限を有しない外部機器が読み出すことができないように記憶されており、
    除数生成部が、1<α<nの整数の乱数であるαと、上記記憶部から読み込んだ上記整数rとを用いて、r’=αr mod nにより定義される除数r’を生成する除数生成ステップと、
    第一スカラ倍演算部が、上記点Pを楕円スカラ(k mod r’)倍した点(k mod r’)×Pを求める第一スカラ倍演算ステップと、
    第二スカラ倍演算部が、[・]を・の整数部分を出力する床関数として、上記記憶部から読み込んだ上記点Sを楕円スカラ[k/r’]α倍した点[k/r’]α×Sを求める第二スカラ倍演算ステップと、
    加算部が、上記点(k mod r’)×Pと、上記点[k/r’]α×Sを加算する加算ステップと、
    を有する楕円曲線暗号演算方法。
  9. 請求項8に記載の楕円曲線暗号演算方法であって、
    拡張スカラ倍指数生成部が、1<βの整数である乱数βを用いて、kを拡張した拡張スカラ倍指数k’=k+βnを求める拡張スカラ倍指数生成ステップを更に有し、
    上記第一スカラ倍演算ステップは、上記点Pを楕円スカラ(k’ mod r’)倍した点(k’ mod r’)×Pを求めるステップであり、
    上記第二スカラ倍演算ステップは、上記点Sを楕円スカラ[k’/r’]α倍した点[k’/r’]α×Sを求めるステップであり、
    上記加算ステップは、上記点(k’ mod r’)×Pと、上記点[k’/r’]α×Sを加算するステップである、
    ことを特徴とする楕円曲線暗号演算方法。
  10. 請求項8又は9に記載の楕円曲線暗号演算方法であって、
    上記αは、1<α<n−1の整数の乱数であり、
    Lを2以上の整数として、上記rはn/2<r<n−n/2の整数であり、
    判断部が、上記除数r’の値が、n/2以上又はより大であるかどうかを判断する判断ステップと、
    変換部が、上記r’の値がn/2以上又はより大でないと判断された場合には、上記r’の値を上記r’の値に上記rを加算した値に変換すると共に、上記αの値を上記αの値に1を加算した値に変換する変換ステップと、
    を更に有することを特徴とする楕円曲線暗号演算方法。
  11. 請求項8から10の何れかに記載の楕円曲線暗号演算方法であって、
    受信部が、正当権限を有する外部機器から、更新された整数r及び更新された点Sを受信する受信ステップと、
    更新部が、上記更新された整数r及び上記更新された点Sで、上記記憶部に記憶された上記整数r及び上記点Sを更新する更新ステップと、
    を更に有することを特徴とする楕円曲線暗号演算方法。
  12. 請求項8から10の何れかに記載の楕円曲線暗号演算方法であって、
    整数生成部が、正当権限を有する外部機器から更新コマンドを受信すると、1<r<nの整数又はn/2<r<n−n/2の整数rを更新された整数rとして選択する整数生成ステップと、
    第四スカラ倍演算部が、上記更新された整数rを用いて、上記点Pの楕円スカラr倍点S=r×Pを更新された点Sとして求める第四スカラ倍演算ステップと、
    更新部が、上記更新された整数r及び上記更新された点Sで、上記記憶部に記憶された上記整数r及び上記点Sを更新する更新ステップと、
    を更に有することを特徴とする楕円曲線暗号演算方法。
  13. 請求項11に記載の楕円曲線暗号演算方法と、
    上記正当権限を有する外部機器が、1<r<nの整数又はn/2<r<n−n/2の整数rを更新された整数rとして選択する整数生成ステップと、
    上記正当権限を有する外部機器が、更新された整数rを用いて上記点Pの楕円スカラr倍点S=r×Pを更新された点Sとして求める第三スカラ倍演算ステップと、
    上記正当権限を有する外部機器が、上記更新された整数r及び上記更新された点Sを上記受信部に送る送信ステップと、
    を有することを特徴とする楕円曲線暗号演算システムの方法。
  14. 請求項12に記載の楕円曲線暗号演算方法と、
    上記正当権限を有する外部機器が、更新コマンドを上記楕円曲線暗号演算方法に送る送信ステップ、
    を有することを特徴とする楕円曲線暗号演算システムの方法。
  15. 請求項1から5のいずれかに記載の楕円曲線暗号演算装置の各部としてコンピュータを機能させるための楕円曲線暗号演算プログラム。
JP2008062241A 2008-03-12 2008-03-12 楕円曲線暗号演算装置、方法及びプログラム並びに楕円曲線暗号演算システム及び方法 Active JP5010508B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008062241A JP5010508B2 (ja) 2008-03-12 2008-03-12 楕円曲線暗号演算装置、方法及びプログラム並びに楕円曲線暗号演算システム及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008062241A JP5010508B2 (ja) 2008-03-12 2008-03-12 楕円曲線暗号演算装置、方法及びプログラム並びに楕円曲線暗号演算システム及び方法

Publications (2)

Publication Number Publication Date
JP2009218991A JP2009218991A (ja) 2009-09-24
JP5010508B2 true JP5010508B2 (ja) 2012-08-29

Family

ID=41190404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008062241A Active JP5010508B2 (ja) 2008-03-12 2008-03-12 楕円曲線暗号演算装置、方法及びプログラム並びに楕円曲線暗号演算システム及び方法

Country Status (1)

Country Link
JP (1) JP5010508B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011082662A (ja) * 2009-10-05 2011-04-21 Mitsubishi Electric Corp 通信装置及び情報処理方法及びプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19963408A1 (de) * 1999-12-28 2001-08-30 Giesecke & Devrient Gmbh Tragbarer Datenträger mit Zugriffsschutz durch Schlüsselteilung

Also Published As

Publication number Publication date
JP2009218991A (ja) 2009-09-24

Similar Documents

Publication Publication Date Title
US9652200B2 (en) Modular multiplication using look-up tables
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
KR101269737B1 (ko) 암호 처리 장치 및 암호 처리 방법과 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
JP4909403B2 (ja) 安全にデータを求める方法
JP2010277085A (ja) Rsaアルゴリズムにおける素数生成の保護
US8300810B2 (en) Method for securely encrypting or decrypting a message
EP3202079B1 (en) Exponent splitting for cryptographic operations
WO2018135566A1 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、プログラム
EP3503459B1 (en) Device and method for protecting execution of a cryptographic operation
KR100731387B1 (ko) 암호화 시스템 내의 모듈러 멱승 결과 결정 장치 및 방법
US8160256B2 (en) Key calculation method and key agreement method using the same
JP4351987B2 (ja) モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム
JP2007187908A (ja) サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法
CN111984225A (zh) 基于边缘计算的支持隐私保护的模幂运算任务外包方法
JP5010508B2 (ja) 楕円曲線暗号演算装置、方法及びプログラム並びに楕円曲線暗号演算システム及び方法
WO2013153628A1 (ja) 演算処理システムおよび演算結果認証方法
JP4922139B2 (ja) 鍵共有方法、第1装置、第2装置、及び、それらのプログラム
JP2006072336A (ja) 素因数分解装置、素因数分解プログラム、安全性評価装置、安全性評価プログラム及び素因数分解方法
KR20170113268A (ko) 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치
KR20140028233A (ko) 중국인 나머지 정리에 기반한 준동형 암복호화 방법 및 이를 이용한 장치
KR101112570B1 (ko) 전력 분석 및 오류 주입 공격에 안전한 디지털 서명 장치, 방법 및 그 기록 매체
KR101341810B1 (ko) Crt-rsa를 이용하여 전력 분석 공격과 오류 주입 공격으로부터 정보를 보호하는 방법
KR102510077B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
US20240106639A1 (en) Method of Calculating Cipher and Electronic Device Performing the Method
US10903975B2 (en) Apparatus and method for performing operation being secure against side channel attack

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100114

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110729

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120510

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 5010508

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150608

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350