JP2016008994A - べき乗剰余演算装置、icカード、べき乗剰余演算方法、及び、べき乗剰余演算プログラム - Google Patents

べき乗剰余演算装置、icカード、べき乗剰余演算方法、及び、べき乗剰余演算プログラム Download PDF

Info

Publication number
JP2016008994A
JP2016008994A JP2014127864A JP2014127864A JP2016008994A JP 2016008994 A JP2016008994 A JP 2016008994A JP 2014127864 A JP2014127864 A JP 2014127864A JP 2014127864 A JP2014127864 A JP 2014127864A JP 2016008994 A JP2016008994 A JP 2016008994A
Authority
JP
Japan
Prior art keywords
calculation
remainder
power
residue
multiplication
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
JP2014127864A
Other languages
English (en)
Other versions
JP6354376B2 (ja
Inventor
半田 富己男
Fukio Handa
富己男 半田
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.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
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 Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2014127864A priority Critical patent/JP6354376B2/ja
Publication of JP2016008994A publication Critical patent/JP2016008994A/ja
Application granted granted Critical
Publication of JP6354376B2 publication Critical patent/JP6354376B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】“Bypass Fault Attack”等の攻撃に対して有効に対応することが可能な、べき乗剰余演算装置、ICカード、べき乗剰余演算方法、及び、べき乗剰余演算プログラムを提供する。
【解決手段】本発明は、公開鍵指数eを2進数表現e(k(eのビット長)>i≧0)としたときに、k回の二乗剰余演算と、e=1となるビットの数と等しい回数の乗算剰余演算との繰り返し演算中に、前記二乗剰余演算または前記乗算剰余演算の演算回数をカウントし、カウントされた前記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定し、異常であると判定された場合、エラー処理を行う。
【選択図】図2

Description

本発明は、RSA(Rivest Shamir Adleman scheme)暗号や、Diffie−Hellman鍵共有(Key Agreement)等の公開鍵暗号方式の実装に用いられるべき乗剰余演算装置等の技術分野に関する。
従来から、ICチップ等が搭載されるICカードや携帯型情報端末においては、当該ICチップに格納される個人情報等は、一般に、RSA(Rivest Shamir Adleman scheme)暗号方式により暗号化されて不揮発性メモリに書き込まれ、暗号化された個人情報等が読み出される際には復号されて出力されるようになっている。RSA暗号では、べき乗剰余演算によって、下記(1)式に基づき暗号化処理が行われ、下記(2)式に基づき復号処理が行われる。
C=Mmodn ・・・(1)
M=Cmodn ・・・(2)
ここで、M は暗号化の対象となる平文、Cは暗号化された平文(つまり、暗号文)、d(べき値)は秘密鍵(プライベート鍵)指数、e(べき値)は公開鍵指数、nは公開鍵モジュラスである。また、公開鍵モジュラスnは、素数pとqの積である。
上述した暗号化処理及び復号処理におけるべき乗剰余演算では、一般に、バイナリ法(繰り返し二乗法)が用いられる。このバイナリ法を用いた暗号化処理におけるべき乗剰余演算アルゴリズムを以下に示す。
S=1
for(j=k−1 to 0)
S=Smodn
if(d=1) then
S=S*Mmodn
end if
end for
ここで、kはdのビット長であり、dはdの2進数表現である。暗号化処理におけるべき乗剰余演算アルゴリズムでは、Sの初期値を“1”とする二乗剰余演算(Smodn)と、d=1となるビットの数と等しい回数の乗算剰余演算(S*Mmodn)との繰返し演算が行われる。
また、バイナリ法を用いた復号処理におけるべき乗剰余演算アルゴリズムを以下に示す。
S=1
for(j=k−1 to 0)
S=Smodn
if(e=1) then
S=S*Cmodn
end if
end for
ここで、kはeのビット長であり、eはeの2進数表現である。復号処理におけるべき乗剰余演算アルゴリズムでは、Sの初期値を“1”とする二乗剰余演算(Smodn)と、e=1となるビットの数と等しい回数の乗算剰余演算(S*Cmodn)との繰返し演算が行われる。
ところで、上述したように、べき乗剰余演算においてバイナリ法を用いる場合、dやeが1であるか0であるかによって演算方法が異なる(つまり、乗算剰余演算が行われるか否かが異なる)。このため、べき乗剰余演算中の消費電力の変動を観測して秘密鍵の導出を試みるSPA(Simple Power Analysis)やDPA(Differential Power Analysis)等のサイドチャネル攻撃がなされるという問題があった。また、消費電力の代わりに電磁界の変動を観測するSEMA(Simple ElectroMagnetic Analysis)やDEMA(Differential ElectroMagnetic Analysis)と呼ばれる攻撃手法も知られている。このようなサイドチャネル攻撃に対する対策として、例えば秘密鍵を用いた演算中のデータを乱数などでマスク(ブラインディング)することによって演算中のデータと秘密鍵を無相関にする対策が知られている。例えば、特許文献1には、秘密鍵指数を、乱数を用いてブラインディングする技術が開示されている。
特許5412274号 Shay Gueron, Jean-Pierre Seifert,"Is It Wise to Publish Your Public RSA Keys?",Fault Diagnosis and Tolerance in Cryptography (FDTC 2006), Lecture Notes in Computer Science Volume 4236, 2006, pp.1-12
ところで、非特許文献1では、Dr. Jean-Pierre Seifertらにより、署名検証時の「べき乗剰余演算」のタイミングを狙って故障利用攻撃を実行し、ニセの署名であっても署名検証に成功させる攻撃“Bypass Fault Attack”が報告されている。例えば、秘密鍵dを知らない攻撃者は、署名検証に成功できる正しい署名値(暗号文)Cを作れないため、元の平文Mを署名検証ステップの入力として与える。そして、当該攻撃者は、上述した乗算剰余演算を1回だけ行われたタイミングで攻撃することで、指数eをe=1とさせた演算結果(すなわち、Mの1乗なのでMのまま)を、署名検証判断ルーチンに与え、署名検証をすりぬける。この手法により、攻撃者は、例えばCA局の正しい署名が付いていないニセの公開鍵証明書であっても、署名検証を成功させて受け容れさせることができる。従来、このような“Bypass Fault Attack”に対して有効な対策は知られていなかった。
そこで、本発明は、上記点等に鑑みてなされたものであり、“Bypass Fault Attack”等の攻撃に対して有効に対応することが可能な、べき乗剰余演算装置、ICカード、べき乗剰余演算方法、及び、べき乗剰余演算プログラムを提供することを目的とする。
上記課題を解決するために、請求項1に記載の発明は、バイナリ法を用いてS=Cmodnの演算を行う、べき乗剰余演算装置において、複数ビットで表現される正の整数であるC、e、及びnを入力する入力手段と、前記eを2進数表現e(k(eのビット長)>i≧0)としたときに、k回の二乗剰余演算と、e=1となるビットの数と等しい回数の乗算剰余演算との繰り返し演算を行う演算手段と、前記二乗剰余演算または前記乗算剰余演算の演算回数をカウントするカウント手段と、前記カウント手段によりカウントされた前記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定する判定手段と、前記判定手段により異常であると判定された場合、エラー処理を行う処理手段と、を備えることを特徴とする。
請求項2に記載の発明は、請求項1に記載のべき乗剰余演算装置において、前記設定回数は、1に設定され、前記判定手段は、前記演算回数が前記設定回数である場合に異常であると判定することを特徴とする。
請求項3に記載の発明は、請求項1に記載のべき乗剰余演算装置において、前記設定回数は、e=1となるビットの数に設定され、前記判定手段は、前記乗算剰余演算の前記演算回数が前記設定回数でない場合に異常であると判定することを特徴とする。
請求項4に記載の発明は、請求項1乃至3の何れか一項に記載のべき乗剰余演算装置において、前記Cは検証対象データ、前記eは公開鍵指数、前記nは公開鍵モジュラスであり、前記判定手段により異常でないと判定された場合において前記繰り返し演算により算出された前記Sと、べき乗剰余演算による暗号化の対象となる平文データとが一致するか否かを判定することにより前記Cの検証を行う検証手段を更に備えることを特徴とする。
請求項5に記載の発明は、バイナリ法を用いてS=Cmodnの演算を行うICカードにおいて、複数ビットで表現される正の整数であるC、e、及びnを入力する入力手段と、前記eを2進数表現e(k(eのビット長)>i≧0)としたときに、k回の二乗剰余演算と、e=1となるビットの数と等しい回数の乗算剰余演算との繰り返し演算を行う演算手段と、前記二乗剰余演算または前記乗算剰余演算の演算回数をカウントするカウント手段と、前記カウント手段によりカウントされた前記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定する判定手段と、前記判定手段により異常であると判定された場合、エラー処理を行う処理手段と、を備えることを特徴とする。
請求項6に記載の発明は、バイナリ法を用いてS=Cmodnの演算を行うコンピュータにより実行されるべき乗剰余演算方法であって、複数ビットで表現される正の整数であるC、e、及びnを入力するステップと、前記eを2進数表現e(k(eのビット長)>i≧0)としたときに、k回の二乗剰余演算と、e=1となるビットの数と等しい回数の乗算剰余演算との繰り返し演算を行うステップと、前記二乗剰余演算または前記乗算剰余演算の演算回数をカウントするステップと、前記カウントされた前記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定する判定ステップと、前記判定ステップにおいて異常であると判定された場合、エラー処理を行うステップと、を含むことを特徴とする。
請求項7に記載の発明は、バイナリ法を用いてS=Cmodnの演算を行うコンピュータに、複数ビットで表現される正の整数であるC、e、及びnを入力するステップと、前記eを2進数表現e(k(eのビット長)>i≧0)としたときに、k回の二乗剰余演算と、e=1となるビットの数と等しい回数の乗算剰余演算との繰り返し演算を行うステップと、前記二乗剰余演算または前記乗算剰余演算の演算回数をカウントするステップと、前記カウントされた前記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定する判定ステップと、前記判定ステップにおいて異常であると判定された場合、エラー処理を行うステップと、を実行させることを特徴とする。
本発明によれば、前記二乗剰余演算または前記乗算剰余演算の演算回数をカウントし、カウントされた前記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定し、異常であると判定された場合、エラー処理を行うので、“Bypass Fault Attack”等の攻撃等による異常を迅速に検知して有効に対応することができる。
ICカード1の概要構成例を示す図である。 コプロセッサ11により実行される復号処理の一例を示すフローチャートである。 コプロセッサ11により実行される復号処理の一例を示すフローチャートである。
以下、図面を参照して本発明の実施形態について詳細に説明する。なお、以下に説明する実施形態は、ICチップに対して本発明を適用した場合の実施の形態である。
先ず、図1を参照して、ICカード1の概要構成及び機能について説明する。図1は、ICカード1の概要構成例を示す図である。なお、ICカード1は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ICカード1は、スマートフォンや携帯電話機等の通信機器に組み込まれる。なお、ICチップ1aは、通信機器の回路基板上に直接組み込んで構成するようにしてもよい。
図1に示すように、ICカード1に搭載されるICチップ1aは、CPU(Central Processing Unit)10、コプロセッサ11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、不揮発性メモリ14、及びI/O回路15を備えて構成される。コプロセッサ11は、本発明のべき乗剰余演算装置及びコンピュータの一例であり、主に、CPU10の補助する検証処理を行うものである。また、本実施形態において、コプロセッサ11は、検証装置の一例である。不揮発性メモリ14としては、例えば、フラッシュメモリが適用される。或いは「Electrically Erasable Programmable Read-Only Memory」が適用されてもよい。I/O回路15は、外部端末2とのインターフェイスを担う。接触式のICチップ1aの場合、I/O回路15には、例えば、C1〜C8の8個の端子が備えられている。例えば、C1端子は電源端子、C2端子はリセット端子、C3端子はクロック端子、C5端子はグランド端子、C7端子は外部端末2との間で通信を行うための端子である。一方、非接触式のICチップ1aの場合、I/O回路15には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部端末2の例としては、ICカード発行機、ATM、改札機、認証用ゲート等が挙げられる。或いは、ICチップ1aが通信機器に組み込まれる場合、外部端末2には通信機器の機能を担う制御部が該当する。
ROM12または不揮発性メモリ14には、CPU10、及びコプロセッサ11に実行させるプログラム、及び各種データが記憶されている。不揮発性メモリ14に記憶されるプログラムには、CPU10に実行させるコマンド処理を規定するコマンド処理プログラムが含まれる。また、不揮発性メモリ14に記憶されるプログラムには、コプロセッサ11に実行させる暗号化処理を規定する暗号化処理プログラム、及びコプロセッサ11に実行させる復号処理を規定する復号処理プログラム(本発明のべき乗剰余演算プログラムを含む)が含まれる。また、不揮発性メモリ14には、セキュアな記憶領域が設けられており、この記憶領域には、暗号化処理で用いられる秘密鍵d、復号処理で用いられる公開鍵(a,n)等が記憶される。
CPU10は、外部端末2から送信されたコマンドを受信すると、コマンド処理プログラムに従って当該コマンドに応じたコマンド処理を実行する。特に、コマンド処理が、データの暗号化、またはデータの復号を伴う場合、CPU10は、暗号化処理、または復号処理をコプロセッサ11に実行させる。コプロセッサ11は、本発明における入力手段、演算手段、カウント手段、判定手段、処理手段、検証手段の一例である。コプロセッサ11は、例えば、べき乗剰余演算部、カウンタ、検証部、及び複数のレジスタ等を備え、暗号化処理プログラム、または復号処理プログラムに従って、暗号化処理、または復号処理を実行する。この復号処理において、コプロセッサ11は、バイナリ法を用いたS=Cmodnの演算を行う。なお、CPU10が、コプロセッサ11の代わりに、本発明におけるカウント手段、判定手段、処理手段、及び検証手段として機能してもよい。この場合、CPU10は、例えば、カウンタ、及び検証部を備える。
具体的には、コプロセッサ11は、複数ビットで表現される正の整数であるC(検証対象データ)、e(公開鍵指数)、及びn(公開鍵モジュラス)を、RAM13または不揮発性メモリ14から入力する(読み込む)。コプロセッサ11は、入力したeを2進数表現eとしたとき、k回の二乗剰余演算(Smodn)と、e=1となるビットの数と等しい回数の乗算剰余演算(S*Cmodn)との繰り返し演算を行う。ここで、kはeのビット長であり、eはeの2進数表現である(k>i≧0)。また、2進数表現したeの各ビットをE[j]と表記すると、eは、下記(3)式で表すことができる。
e=2k-1E[k-1] + 2k-2E[k-2] + ・・・ + 22E[2] + 2E[1] + E[0]・・・(3)
繰り返し演算は、乗算と除算(mod算)から構成される。乗算は、初期値を1とするSの値に対してS*S、またはS*Mを行う部分である。除算は、それぞれの乗算で得られた値に対してmodn(nで割ったときの余りを求める演算)を行う部分である。繰返し演算では、乗算と除算を1対の演算として、eのビット値に従って行なわれる。すなわち、eの最上位ビットから最下位ビットまでの各ビットの内容によって乗算と除算が行なわれる。
コプロセッサ11、またはCPU10は、上記繰り返し演算において、二乗剰余演算または乗算剰余演算の演算回数をカウントする。そして、コプロセッサ11は、カウントされた上記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定し、異常であると判定した場合、エラー処理を行う。また、コプロセッサ11は、異常でないと判定した場合において上記繰り返し演算により算出されたSと、べき乗剰余演算による暗号化の対象となるM(平文データ)とが一致するか否かを判定することによりCの検証を行う。
次に、図2及び図3を参照して、コプロセッサ11により実行される復号処理の具体例を説明する。図2及び図3は、コプロセッサ11により実行される復号処理の一例を示すフローチャートである。なお、以下の説明では、コプロセッサ11が、二乗剰余演算または乗算剰余演算の演算回数をカウントし、カウントされた演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定し、異常であると判定した場合、エラー処理を行うものとしているが、このような一連の処理は、CPU10により行われるように構成してもよい。
(実施例1)
先ず、図2を参照して、コプロセッサ11により実行される復号処理を説明する。図2に示す復号処理は、繰り返し演算において乗算剰余演算の演算回数が“1”である場合に異常であると判定する例である。
図2に示す処理は、例えば、CPU10から、署名検証指令があった場合に開始される。なお、図2に示す処理の前提として、上記設定回数が“1”に設定される。図2に示す処理が開始されると、コプロセッサ11は、M(平文データ)、C(検証対象データ)、e(公開鍵指数)、及びn(公開鍵モジュラス)を、例えば、RAM13または不揮発性メモリ14から入力し、MをMレジスタに格納し、CをCレジスタに格納し、eをEレジスタに格納し、nをNレジスタに格納する。なお、Eレジスタには、eを2進数で表現した各ビットの値が格納される。そして、コプロセッサ11は、kを“eのビット長”とし、Sを“1”(初期値)とし、ctを“0”とする(ステップS1)。例えば、Kレジスタに“eのビット長”が格納され、Sレジスタに“1”が格納され、CTレジスタに“0”が格納される。
次いで、コプロセッサ11は、ビットの位置(最上位から最下位まで)を示すjを“k−1”とする(ステップS2)。例えば、Jレジスタに“k−1”が格納される。次いで、コプロセッサ11は、べき乗剰余演算部により、二乗剰余演算(Smodn)を行ってSを算出する(ステップS3)。こうして算出されたSによりSレジスタに格納されている値が更新される。次いで、コプロセッサ11は、Eレジスタを参照して、eが“1”であるか否かを判定する(ステップS4)。コプロセッサ11は、eが“1”であると判定した場合(ステップS4:YES)、ステップS5へ進む。一方、コプロセッサ11は、eが“1”でない(つまり、eが“0”である)と判定した場合(ステップS4:NO)、ステップS7へ進む。
ステップS5では、コプロセッサ11は、べき乗剰余演算部により、乗算剰余演算(S*Cmodn)を行ってSを算出する。こうして算出されたSによりSレジスタに格納されている値が更新される。次いで、コプロセッサ11は、カウンタにより、ctの値(乗算剰余演算のカウント値)に“1”を加算(1カウントアップ)する(ステップS6)。これにより、CTレジスタに格納されている値が更新される。
ステップS7では、コプロセッサ11は、jの値から“1”を減算する。これにより、Jレジスタに格納されている値が更新される。次いで、コプロセッサ11は、Jレジスタを参照して、jの値が“0”以上であるか否かを判定する(ステップS8)。コプロセッサ11は、jの値が“0”以上であると判定した場合(ステップS8:YES)、ステップS3に戻り、ステップS3以降の処理を繰り返す。一方、コプロセッサ11は、jの値が“0”以上でない(つまり、繰り返し演算が、k回行われた)と判定した場合(ステップS8:NO)、ステップS9へ進む。
ステップS9では、コプロセッサ11は、CTレジスタを参照して、ctが“1”(設定回数)であるか(つまり、カウントされた乗算剰余演算の演算回数と、設定回数とを比較し、当該比較結果に基づいて異常であるか)否かを判定する。つまり、図2の例では、乗算剰余演算の演算回数が“1”であるか否かが判定される。コプロセッサ11は、ctが“1”であると判定した場合(ステップS9:YES)、異常があったと判断(異常検知)して、エラー処理を行う(ステップS10)。つまり、乗算剰余演算の演算回数が“1”である場合、乗算剰余演算が1回だけ行われたタイミングで攻撃されたことが想定されるため、エラー処理を行うのである。このエラー処理では、コプロセッサ11は、例えばCPU10へ警報出力(例えば、攻撃等の異常があったことを示すメッセージを出力)して、図2に示す処理を終了する(つまり、警告終了でリターン)。或いは、エラー処理では、コプロセッサ11は、動作を停止してもよい。
CPU10は、コプロセッサ11からの警報出力を入力した場合、ICチップ1aの動作を停止、またはICチップ1aにおいて起動中の特定のプログラムの動作を停止する。或いは、この場合、CPU10は、外部端末2へエラー応答を送信する。エラー応答は、ICチップ1a内でエラーが発生したことを示す。なお、CPU10は、ICチップ1aまたは上記特定のプログラムの動作を停止すると共に、外部端末2へエラー応答を送信してもよい。
一方、ステップS9において、コプロセッサ11は、ctが“1”でないと判定した場合(ステップS9:NO)、繰り返し演算により算出されたS(Sレジスタに最終的に格納されている値)と、べき乗剰余演算による暗号化の対象となるM(Mレジスタに格納されている値)とが一致するか否かを検証部により判定する(ステップS11)。これにより、入力されたCの検証が行われる。コプロセッサ11は、SとMとが一致すると判定した場合(ステップS11:YES)、検証成功を示すメッセージをCPU10へ出力し(ステップS12)、図2に示す処理を終了する。一方、コプロセッサ11は、SとMとが一致しないと判定した場合(ステップS11:NO)、検証失敗を示すメッセージをCPU10へ出力し(ステップS13)、図2に示す処理を終了する。CPU10は、コプロセッサ11からの検証成功、または検証失敗に応じた処理を行うことになる。なお、ステップS11の処理は、CPU10が行うように構成してもよい。この場合、コプロセッサ11は、ctが“1”でないと判定した場合(ステップS9:NO)、繰り返し演算により算出されたS(Sレジスタに最終的に格納されている値)をCPU10へ出力することになる。
以上説明したように、上記実施例1によれば、例えば、検証対象データ(本来、暗号文C)としてMが入力され、上記乗算剰余演算が1回だけ行われたタイミングで攻撃された場合であっても、この攻撃による異常を検知して、エラー処理を行うことができる。よって、“Bypass Fault Attack”等の攻撃等による異常を迅速に検知して有効に対応することができる。
なお、ctの値に“1”を加算する処理は、ステップS5の直後ではなく、例えば、ステップS3とステップS4の間で行われるように構成してもよい。この場合、二乗剰余演算の演算回数がカウントされることになる。この場合も、上記設定回数が“1”であってもよいが、正常な繰り返し演算(二乗剰余演算)はk回行われる。そのため、上記設定回数をkとし、ステップS9では、コプロセッサ11は、ctがk未満であるか否かを判定し、ctがk未満ある場合、エラー処理を行うように構成してもよい。この構成により、べき乗剰余演算においてバイナリ法を用いる場合の反復演算が実行された回数を把握することができるので、演算中に攻撃を受けた可能性を検知することができる。
(実施例2)
次に、図3を参照して、コプロセッサ11により実行される復号処理を説明する。図2に示す復号処理は、繰り返し演算において乗算剰余演算の演算回数が“e=1となるビットの数”でない場合に異常であると判定する例である。なお、図3に示すステップS29以外の処理は、図2に示す処理と同様であるので、重複する説明を省略する。ステップS29では、コプロセッサ11は、ctが“e=1となるビットの数”であるか否かを判定する。そして、コプロセッサ11は、ctが“e=1となるビットの数”であると判定した場合(ステップS29:YES)、ステップS31へ進んで、検証を行う。一方、コプロセッサ11は、ctが“e=1となるビットの数”でないと判定した場合(ステップS29:NO)、ステップS30へ進んで、エラー処理を行う。例えば、公開鍵指数e=65537である場合、この2進数表現は、“10000000000000001”となり、17ビットのうち、2ビットに“1”が立っているので、正常な繰り返し演算(二乗剰余演算)が行われた場合、ステップS29において、ctの値は“2”となっているはずである。このため、もし、ctが“2”でなければ、コプロセッサ11は、異常があったと判断(異常検知)して、エラー処理を行う。
以上説明したように、上記実施例2によれば、“Bypass Fault Attack”等の攻撃を、より精度良く検知して、エラー処理を行うことができる。よって、“Bypass Fault Attack”等の攻撃等による異常を精度良く検知して有効に対応することができる。更に、上記実施例2によれば、“Bypass Fault Attack”に限らず、現時点で未知の攻撃によって、バイナリ法の反復演算が攪乱された場合でも、異常を検出することができる。
なお、上記実施形態においては、ICチップに対して本発明を適用した場合の例であるが、本発明は、ICチップ以外の組込み型のマイクロプロセッサ等に対して適用可能である。また、上記実施形態においては、本発明の各手段がソフトウェアにより構成する場合の例を説明したが、本発明の各手段はハードウェアにより構成されてもよい。
1 ICカード
1a ICチップ
10 CPU
11 コプロセッサ
12 ROM
13 RAM
14 不揮発性メモリ
15 I/O回路

Claims (7)

  1. バイナリ法を用いてS=Cmodnの演算を行う、べき乗剰余演算装置において、
    複数ビットで表現される正の整数であるC、e、及びnを入力する入力手段と、
    前記eを2進数表現e(k(eのビット長)>i≧0)としたときに、k回の二乗剰余演算と、e=1となるビットの数と等しい回数の乗算剰余演算との繰り返し演算を行う演算手段と、
    前記二乗剰余演算または前記乗算剰余演算の演算回数をカウントするカウント手段と、
    前記カウント手段によりカウントされた前記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定する判定手段と、
    前記判定手段により異常であると判定された場合、エラー処理を行う処理手段と、
    を備えることを特徴とする、べき乗剰余演算装置。
  2. 前記設定回数は、1に設定され、
    前記判定手段は、前記演算回数が前記設定回数である場合に異常であると判定することを特徴とする請求項1に記載のべき乗剰余演算装置。
  3. 前記設定回数は、e=1となるビットの数に設定され、
    前記判定手段は、前記乗算剰余演算の前記演算回数が前記設定回数でない場合に異常であると判定することを特徴とする請求項1に記載のべき乗剰余演算装置。
  4. 前記Cは検証対象データ、前記eは公開鍵指数、前記nは公開鍵モジュラスであり、
    前記判定手段により異常でないと判定された場合において前記繰り返し演算により算出された前記Sと、べき乗剰余演算による暗号化の対象となる平文データとが一致するか否かを判定することにより前記Cの検証を行う検証手段を更に備えることを特徴とする請求項1乃至3の何れか一項に記載のべき乗剰余演算装置。
  5. バイナリ法を用いてS=Cmodnの演算を行うICカードにおいて、
    複数ビットで表現される正の整数であるC、e、及びnを入力する入力手段と、
    前記eを2進数表現e(k(eのビット長)>i≧0)としたときに、k回の二乗剰余演算と、e=1となるビットの数と等しい回数の乗算剰余演算との繰り返し演算を行う演算手段と、
    前記二乗剰余演算または前記乗算剰余演算の演算回数をカウントするカウント手段と、
    前記カウント手段によりカウントされた前記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定する判定手段と、
    前記判定手段により異常であると判定された場合、エラー処理を行う処理手段と、
    を備えることを特徴とするICカード。
  6. バイナリ法を用いてS=Cmodnの演算を行うコンピュータにより実行されるべき乗剰余演算方法であって、
    複数ビットで表現される正の整数であるC、e、及びnを入力するステップと、
    前記eを2進数表現e(k(eのビット長)>i≧0)としたときに、k回の二乗剰余演算と、e=1となるビットの数と等しい回数の乗算剰余演算との繰り返し演算を行うステップと、
    前記二乗剰余演算または前記乗算剰余演算の演算回数をカウントするステップと、
    前記カウントされた前記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定する判定ステップと、
    前記判定ステップにおいて異常であると判定された場合、エラー処理を行うステップと、
    を含むことを特徴とする、べき乗剰余演算方法。
  7. バイナリ法を用いてS=Cmodnの演算を行うコンピュータに、
    複数ビットで表現される正の整数であるC、e、及びnを入力するステップと、
    前記eを2進数表現e(k(eのビット長)>i≧0)としたときに、k回の二乗剰余演算と、e=1となるビットの数と等しい回数の乗算剰余演算との繰り返し演算を行うステップと、
    前記二乗剰余演算または前記乗算剰余演算の演算回数をカウントするステップと、
    前記カウントされた前記演算回数と予め設定された設定回数とを比較し、当該比較結果に基づいて異常であるか否かを判定する判定ステップと、
    前記判定ステップにおいて異常であると判定された場合、エラー処理を行うステップと、
    を実行させることを特徴とする、べき乗剰余演算プログラム。
JP2014127864A 2014-06-23 2014-06-23 べき乗剰余演算装置、icカード、べき乗剰余演算方法、及び、べき乗剰余演算プログラム Active JP6354376B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014127864A JP6354376B2 (ja) 2014-06-23 2014-06-23 べき乗剰余演算装置、icカード、べき乗剰余演算方法、及び、べき乗剰余演算プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014127864A JP6354376B2 (ja) 2014-06-23 2014-06-23 べき乗剰余演算装置、icカード、べき乗剰余演算方法、及び、べき乗剰余演算プログラム

Publications (2)

Publication Number Publication Date
JP2016008994A true JP2016008994A (ja) 2016-01-18
JP6354376B2 JP6354376B2 (ja) 2018-07-11

Family

ID=55226604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014127864A Active JP6354376B2 (ja) 2014-06-23 2014-06-23 べき乗剰余演算装置、icカード、べき乗剰余演算方法、及び、べき乗剰余演算プログラム

Country Status (1)

Country Link
JP (1) JP6354376B2 (ja)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154976A (ja) * 1996-11-22 1998-06-09 Toshiba Corp タンパーフリー装置
JPH118616A (ja) * 1997-06-17 1999-01-12 Dainippon Printing Co Ltd 故障利用攻撃対応icカード
US20040125950A1 (en) * 2002-12-27 2004-07-01 Sung-Ming Yen Method for protecting public key schemes from timing, power and fault attacks
JP2005165290A (ja) * 2003-11-12 2005-06-23 Matsushita Electric Ind Co Ltd Rsa公開鍵生成装置、rsa復号装置及びrsa署名装置
US20060029224A1 (en) * 2004-08-06 2006-02-09 Yoo-Jin Baek System and recording medium for securing data and methods thereof
JP2010068135A (ja) * 2008-09-09 2010-03-25 Fujitsu Ltd 不正操作検知回路、不正操作検知回路を備えた装置、及び不正操作検知方法
JP2010193447A (ja) * 2009-02-19 2010-09-02 Thomson Licensing 欠陥攻撃に対抗する方法及び装置
JP2014174556A (ja) * 2013-03-11 2014-09-22 Thomson Licensing 暗号システムにおける故障耐性のある冪乗のための方法および装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154976A (ja) * 1996-11-22 1998-06-09 Toshiba Corp タンパーフリー装置
JPH118616A (ja) * 1997-06-17 1999-01-12 Dainippon Printing Co Ltd 故障利用攻撃対応icカード
US20040125950A1 (en) * 2002-12-27 2004-07-01 Sung-Ming Yen Method for protecting public key schemes from timing, power and fault attacks
JP2005165290A (ja) * 2003-11-12 2005-06-23 Matsushita Electric Ind Co Ltd Rsa公開鍵生成装置、rsa復号装置及びrsa署名装置
US20060029224A1 (en) * 2004-08-06 2006-02-09 Yoo-Jin Baek System and recording medium for securing data and methods thereof
JP2010068135A (ja) * 2008-09-09 2010-03-25 Fujitsu Ltd 不正操作検知回路、不正操作検知回路を備えた装置、及び不正操作検知方法
JP2010193447A (ja) * 2009-02-19 2010-09-02 Thomson Licensing 欠陥攻撃に対抗する方法及び装置
JP2014174556A (ja) * 2013-03-11 2014-09-22 Thomson Licensing 暗号システムにおける故障耐性のある冪乗のための方法および装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
楠田 浩二: "公開鍵暗号方式の安全性評価に関する現状と課題", 日本銀行金融研究所ディスカッション・ペーパー・シリーズ(1997年収録分) [ONLINE], JPN6018006170, 1 April 1998 (1998-04-01), pages 30 - 31, ISSN: 0003794742 *

Also Published As

Publication number Publication date
JP6354376B2 (ja) 2018-07-11

Similar Documents

Publication Publication Date Title
US8402287B2 (en) Protection against side channel attacks
US8065531B2 (en) Decryption method
US8391477B2 (en) Cryptographic device having tamper resistance to power analysis attack
EP1134653B1 (en) Information processing device, information processing method and smartcard
EP2211265B1 (en) Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method
US10721056B2 (en) Key processing method and device
EP2332040B1 (en) Countermeasure securing exponentiation based cryptography
CN105991292A (zh) 用于操作安全椭圆曲线密码系统的系统和方法
CN101133593B (zh) 安全地执行rsa型密码术算法的方法及相应部件
KR20100113130A (ko) 비대칭 암호화를 위한 대응조치 방법 및 디바이스
EP3191936B1 (en) System and method for one-time chinese-remainder-theorem exponentiation for cryptographic algorythms
TWI512610B (zh) 利用模數的特殊形式之模組約化
JP5261088B2 (ja) 不正操作検知回路、不正操作検知回路を備えた装置、及び不正操作検知方法
WO2018019233A1 (zh) 一种运算方法和安全芯片
Kaminaga et al. Double Counting in $2^{t} $-ary RSA Precomputation Reveals the Secret Exponent
EP3461053A1 (en) Fault attacks counter-measures for eddsa
JP6354376B2 (ja) べき乗剰余演算装置、icカード、べき乗剰余演算方法、及び、べき乗剰余演算プログラム
US7174016B2 (en) Modular exponentiation algorithm in an electronic component using a public key encryption algorithm
JP3952304B2 (ja) 電子コンポネントにおいて公開指数を求める暗号アルゴリズムを実行する方法
Le et al. On double exponentiation for securing RSA against fault analysis
US10305678B2 (en) Imbalanced montgomery ladder
KR20080012634A (ko) 고속 몽고메리 전력 래더 알고리즘에서 사용되는 폴트 검출동작을 구현하기 위한 이진 유한 영역에서의 포인트 덧셈방법 및 덧셈 연산 장치
Devi et al. A Review on Different Types of Attacks
Feix et al. Recovering CRT-RSA secret keys from message reduced values with side-channel analysis
Wang et al. A Novel SPA Attack on ECC Using MMM's Conditional Subtraction

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170425

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180427

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180528

R150 Certificate of patent or registration of utility model

Ref document number: 6354376

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150