復号処理装置、復号処理方法、及び復号処理プログラム
【課題】RSA暗号の高速な復号のために、CRT(中国人剰余定理)と呼ばれる高速演算アルゴリズムを適用し、電力差分解析攻撃に対する耐性を高めつつ、中間演算データによるメモリ消費量を削減できる、復号処理装置、復号処理方法、及び復号処理プログラムを提供する。
【解決手段】CRTが適用されるRSA復号処理の後処理において、計算式「Z=C×q+Cq」の代わりに、rをp及びqよりも大きい奇数である秘密変数として、計算式「Z=(C×q(r+1)+Cq)modqr」を用いる。
【解決手段】CRTが適用されるRSA復号処理の後処理において、計算式「Z=C×q+Cq」の代わりに、rをp及びqよりも大きい奇数である秘密変数として、計算式「Z=(C×q(r+1)+Cq)modqr」を用いる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、復号処理装置、復号処理方法、及び復号処理プログラムに関する。
【背景技術】
【0002】
昨今、ユビキタスネットワーク社会において、復号処理が様々な情報機器に利用されている。復号処理の方式として、公開鍵暗号方式が知られている。代表的な公開鍵暗号方式として、RSA暗号方式が知られている。RSA暗号方式では、べき乗剰余演算が行われる。べき乗剰余演算は、コンピュータにより、実行される。以下に、RSA暗号方式について説明する。
【0003】
RSA暗号方式では、秘密素数p、秘密素数q、公開鍵e、公開鍵N、及び秘密鍵dが用いられる。ここで、公開鍵Nは、式「N=p×q」により、与えられる。また、公開鍵eは、(p−1)×(q−1)と互いに素である正の整数である。秘密鍵dは、(p−1)×(q−1)を法とした公開鍵eの逆元である。
【0004】
平文Zを暗号文M(メッセージM)に変換する場合には、公開鍵e及び公開鍵Nを用いて、下記式1により示される計算が行なわれる。
(数式1):M=ZemodN
一方、メッセージMを平文Zに変換(復号)する場合には、秘密鍵d及び公開鍵Nを用いて、下記式2により示される計算が行なわれる。
(数式2):Z=MdmodN
尚、「AmodB」とは、Bを法としたAの剰余を示す。
【0005】
上述のように、復号時(数式2の演算時)には、M、d、及びNを用いて、べき乗剰余演算が実行される。ここで、第三者による解読を困難にするために、M、d、及びNとして、非常に大きな数値(例えばそれぞれ1024bitなど)が用いられる。しかしながら、これによって、復号時においてべき乗剰余演算に費やされる処理時間が、長くなってしまう。
【0006】
べき乗剰余演算に要する処理時間を短縮するために、一般的には、中国人剰余定理(Chinese Remainder Theorem:以降CRTと称す)と呼ばれる高速演算アルゴリズムが適用される。CRTを用いることにより、べき乗剰余演算に費やされる処理時間を1/4に短縮できることが知られている。
【0007】
以下に、CRTが適用されるRSA復号処理について説明する。図1は、CRTを適用した復号処理を示すフローチャートである。図1に示されるように、事前処理として、秘密鍵p、q、u、dp、及びdqを示すデータが、コンピュータに入力される(ステップS101)。ここで、u,dp,及びdqは、下記式3乃至5によって表される式により求められた値である。
(数式3):u=(1/q)modp
(数式4):dp=dmod(p−1)
(数式5):dq=dmod(q−1)
【0008】
次いで、メッセージMを示すデータがコンピュータに入力される(ステップS102)。
【0009】
次いで、コンピュータが、主処理が行う。主処理として、下記式6及び7に従って、Mp及びMqが求められる(ステップS103)。また、下記式8及び9に従って、Cp及びCqが求められる(ステップS104)。
(数式6):Mp=Mmodp
(数式7):Mq=Mmodq
(数式8):Cp=Mpdpmodp
(数式9):Cq=Mqdqmodq
【0010】
次いで、コンピュータが、後処理を行なう。後処理として、下記式10及び11に従って、C及び平文Zが求められる(ステップS105)。
(数式10):C=((Cp−Cq)×u)modp
(数式11):Z=C×q+Cq
【0011】
そして、数式11により求められた平文Zが、復号結果として出力される(ステップS106)。すなわち、CRTを用いた場合には、数式2によって示される演算が、数式3乃至11を用いることにより、実行される。
【0012】
一方で、暗号処理方式の脆弱性を研究及び開発する活動が、盛んに行なわれている。特に、サイドチャネル攻撃と呼ばれる攻撃手法の研究が、学会等を賑やかせている。サイドチャネル攻撃の一手法として、電力差分解析攻撃(DPA:Differential Power Analysis)という手法が存在する。デバイスの消費電力は、実行されている演算、及び用いられているデータ値に関係する場合がある。電力差分解析攻撃では、この点が利用される。すなわち、復号処理を行っている時の消費電力が測定され、統計処理が行われ、復号処理内容に関する情報(秘密鍵などの機密情報)が導出される。
【0013】
CRTが適用されたRSA暗号処理方式においては、電力差分解析攻撃に対して非常に脆弱な処理部分が存在する。非特許文献1(Paper on DPA recombination attack on RSA−CRT、 http://www.riscure.com/tech−corner/publications.html)には、再結合処理(Recombination)と呼ばれる処理(数式10及び数式11)が、電力差分解析攻撃に対する脆弱性を有している点が開示されている。
【0014】
一方、特許文献1(特開2006−217193号公報)には、再結合処理に対する電力差分解析攻撃を用いたアタックを困難にするための復号処理方法が、開示されている。
【0015】
図2Aは、特許文献1に記載された復号処理方法を示すフローチャートである。また、図3は、特許文献1に記載された復号処理方法において、記憶装置に格納されるデータを示す構成図である。図2Aに示されるように、この復号処理方法では、ステップS100において、入力データであるメッセージMが外部から受信される。メッセージMは、記憶装置における一時データ格納部(図3参照)に格納される。次いで、ステップS101において、記憶装置における永続データ格納部(図3参照)に格納に格納された秘密鍵(p,q,u,dp,dq)を用いて、メッセージMに対するRSA計算が実行され、出力データである平文Zが計算される。平文Zは、一時データ格納部に格納される。ステップS102において、平文Zが外部に送信される。
【0016】
図2Bは、上述のステップS102における処理を詳細に示すフローチャートである。
【0017】
図2Bに示されるように、ステップS111において、Mのpを法とした剰余Mp、及びMのqを法とした剰余Mqが計算され、計算結果が一時データ格納部に格納される。また、dpを指数かつpを法としたMpのべき乗剰余Cp、及び、dpを指数かつqを法としたMqのべき乗剰余Cqが計算され、計算結果が一時データ格納部に格納される。
【0018】
次に、ステップS112において、乱数r1が生成され、一時データ格納部233に格納される。次に、ステップS113において、r1の値が、uを法とするr1の剰余r1を計算することにより、更新される。次に、ステップS114において、uからr1を減算することにより、r2が計算される。r2を示すデータは、データ格納部に格納される。次に、ステップS115にて、pを法としたCp−Cqの剰余C0が計算され、データ格納部に格納される。次にS116において、pを法としたC0とr1の乗算剰余C1と、C0とr2の乗算剰余C2とが計算され、一時データ格納部に格納される。次に、ステップS117において、C1とqの乗算Z1と、C2とqの乗算Z2とが計算され、一時データ格納部に格納される。次に、ステップS118において、pとqの乗算Nが計算され、一時データ格納部に格納される。次に、ステップS119において、Nを法としたZ1とZ2の加算剰余に、Cqが加算され、Zとして、一時データ格納部に格納される。
【0019】
特許文献1の記載によれば、ステップS112乃至S114において、乱数r1及びr2が生成される。そして、ステップS116において、これらの乱数r1及びr2を用いて、Cの値が、C1及びC2にランダムに分解される。そして、Cとqの乗算を計算する代わりに、ステップS117において、C1とqの乗算Z1、及び、C2とqの乗算Z2が計算される。最後に、ステップS119において、Z1とZ2とが加算され、Cとqとの乗算が実現される。ここで、乱数r1とr2の値は、RSA計算を行う度に異なった値になる。Cとqとの乗算を行う際に、毎回異なる乱数値が用いられるため、Cとqとを乗算する際における消費電力を繰り返し観察したとしても、qの値を推測することが困難になる。
【先行技術文献】
【特許文献】
【0020】
【特許文献1】特開2006−217193号公報
【非特許文献】
【0021】
【非特許文献1】Paper on DPA recombination attack on RSA−CRT、 http://www.riscure.com/tech−corner/publications.html
【発明の概要】
【発明が解決しようとする課題】
【0022】
特許文献1に記載された方法によれば、電力差分解析攻撃に対する耐性を高めることができる。しかしながら、この方法では、剰余加減算や剰余乗算を処理可能なコプロセッサを用いた場合であっても、図3に示したように大量の中間演算データが発生する。そのようなコプロセッサを搭載していないコンピュータ(通常のコンピュータ)を用いる場合には、更に大量の中間演算データが発生する。図4は、特許文献1に記載された方法が通常のコンピュータによって実行される場合に発生する中間演算データを示す概略図である。図4には、鍵長が1024bitである場合の例が示されている。図4に示される例では、入力データとして、それぞれ512bitであるp、q、d、及び、1024bitであるメッセージMが用いられている。図4に示されるように、中間演算データとして、14個(u,dp,dq,Mp,Mq,Cp,Cq,r1,r3,r2,C00,C0,C1,及びC2)の512bitのデータが発生し、8個(C11,C21、Z1、Z2、N、Z3、Z4、及びZ)の1024bitのデータが発生する。
【0023】
上述のように、特許文献1に記載された方法では、中間演算データの種類が非常に多くなり、そのbit長も512bit若しくは1024bitになる。従って、中間演算データを保持するために、メモリの消費量が多くなってしまう。また、中間演算データをロード又はアンロードするために、時間が費やされてしまう。さらに、図4には、RSA暗号の鍵長が1024bitである場合の例が示されているが、近年利用されるRSA暗号では、安全性の面から、鍵長が1280bit〜2048bitに変わりつつある。従って、更にメモリを多く消費することになる。加えて、特許文献1に記載された方法では、復号処理を行うために乱数を発生させる必要があり、乱数生成器をコンピュータに設ける必要がある。
【0024】
すなわち、特許文献1に記載された方法では、中間演算処理に要する負担が増大し、中間演算データを一時保存するために大量のメモリが必要になる。また、乱数生成器を設けなければならない。そのため、低価格化が要求されるシステムに対して実装することは不向きである、という問題点があった。
【0025】
また、既述のように、特別なコプロセッサ(多倍長整数を用いた算術演算を行うコプロセッサ)を用いることにより、メモリの消費量を抑制することは可能であるが、そのようなコプロセッサの回路規模は非常に大きい。従って、コスト増大のインパクトも非常に大きい。低価格化が要求されるシステム(例えば機器認証を必要とするインターネット接続可能な情報家電などに適用されるシステム)に実装する場合は、不利になる。
【課題を解決するための手段】
【0026】
本発明に係る復号処理装置は、メッセージMを示すメッセージデータ、秘密素数pを示すpデータ、秘密素数qを示すqデータ、秘密鍵dを示すdデータ、及び、前記p及び前記qよりも大きい奇数である秘密変数rを示す秘密変数データを格納する、データ記憶部と、事前処理部と、主処理部と、後処理部とを具備する。前記メッセージMは、平文Z、公開鍵e、及び公開鍵Nに基づいて、下記式12により得られたものである。
(数式12):M=ZemodN
前記eは、(p−1)×(q−1)と互いに素である正の整数である。前記Nは、p×qにより表される数である。前記dは、(p−1)×(q−1)を法とした前記eの逆元を示す数である。前記事前処理部は、前記pデータ、前記qデータ、及び前記dデータに基づいて、下記式13乃至15によって表される計算を行い、uを示すuデータ、dpを示すdpデータ、及びdqを示すdqデータを生成する。
(数式13):u=q−1modp
(数式14):dp=dmod(p−1)
(数式15):dq=dmod(q−1)
前記主処理部は、前記メッセージM、前記pデータ、及び前記qデータに基づいて、下記式16及び17によって表される計算を行い、Mpを示すMpデータ、及びMqを示すMqデータを生成し、前記Mpデータ、前記dpデータ、前記pデータ、前記Mqデータ、前記dqデータ、及び前記qデータに基づいて、下記式18及び19によって表される計算を行い、Cpを示すCpデータ及びCqを示すCqデータを生成する。
(数式16):Mp=Mmodp
(数式17):Mq=Mmodq
(数式18):Cp=(Mp)dpmodp
(数式19):Cq=(Mq)dqmodq
前記後処理部は、前記Cpデータ、前記Cqデータ、前記uデータ、及び前記pデータに基づいて、下記式20によって表される計算を行い、Cを示すCデータを生成し、前記Cデータ、前記qデータ、前記rデータ、前記Cqデータに基づいて、下記式21又は22によって表される計算を行い、前記平文Zを示す出力データを生成する。
(数式20):C=((Cp−Cq)×u)modp
(数式21);Z=(C×q(r+1)+Cq)modqr
(数式22);Z=(C×q(k×r+1)+Cq)modqr
ここで、上式22中、kは任意の定数を示す。
【0027】
本発明に係る復号処理方法は、コンピュータが、メッセージMを示すメッセージデータ、秘密素数pを示すpデータ、秘密素数qを示すqデータ、秘密鍵であるdを示すdデータ、及び、前記p及び前記qよりも大きい奇数である秘密変数rを示す秘密変数データを取得するステップと、コンピュータが、事前処理を行うステップと、コンピュータが、主処理を行うステップと、コンピュータが、後処理を行うステップとを具備する。前記メッセージMは、平文Z、公開鍵e、及び公開鍵Nに基づいて、下記式12により得られたものである。
(数式12):M=ZemodN
前記eは、(p−1)×(q−1)と互いに素である整数である。前記Nは、p×qにより表される数である。前記dは、(p−1)×(q−1)を法とした前記eの逆元を示す数である。前記事前処理を行うステップは、前記pデータ、前記qデータ、及び前記dデータに基づいて、下記式13乃至15によって表される計算を行い、uを示すuデータ、dpを示すdpデータ、及びdqを示すdqデータを生成するステップを含む。
(数式13):u=q−1modp
(数式14):dp=dmod(p−1)
(数式15):dq=dmod(q−1)
前記主処理を行うステップは、前記メッセージM、前記pデータ、及び前記qデータに基づいて、下記式16及び17によって表される計算を行い、Mpを示すMpデータ、及びMqを示すMqデータを生成し、前記Mpデータ、前記dpデータ、前記pデータ、前記Mqデータ、前記dqデータ、及び前記qデータに基づいて、下記式18及び19によって表される計算を行い、Cpを示すCpデータ及びCqを示すCqデータを生成ステップを含む。
(数式16):Mp=Mmodp
(数式17):Mq=Mmodq
(数式18):Cp=(Mp)dpmodp
(数式19):Cq=(Mq)dqmodq
前記後処理を行うステップは、前記Cpデータ、前記Cqデータ、前記uデータ、及び前記pデータに基づいて、下記式20によって表される計算を行い、Cを示すCデータを生成し、前記Cデータ、前記qデータ、前記rデータ、前記Cqデータに基づいて、下記式21又は22によって表される計算を行い、前記平文Zを示す出力データを生成するステップを含む。
(数式20):C=((Cp−Cq)×u)modp
(数式21);Z=(C×q(r+1)+Cq)modqr
(数式22);Z=(C×q(k×r+1)+Cq)modqr
ここで、上式11中、kは任意の定数を示す。
【0028】
本発明に係る復号処理プログラムは、上述の復号処理方法をコンピュータにより実現するためのプログラムである。
【発明の効果】
【0029】
本発明によれば、中間演算データのメモリ消費量を削減できる、復号処理装置、復号処理方法、及び復号処理プログラムが提供される。
【図面の簡単な説明】
【0030】
【図1】CRTを適用した復号処理を示すフローチャートである。
【図2A】特許文献1に記載された復号処理方法を示すフローチャートである。
【図2B】ステップS102における処理を詳細に示すフローチャートである。
【図3】特許文献1に記載された復号処理方法において、記憶装置に格納されるデータを示す構成図である。
【図4】特許文献1において発生する中間演算データを示す概略図である。
【図5】復号処理装置を示す構成図である。
【図6】復号処理プログラムに記載されたアルゴリズムを概略的に示す図である。
【図7】復号処理装置の動作方法を示すフローチャートである。
【図8】発生するデータを概念的に示す図である。
【発明を実施するための形態】
【0031】
以下に、図面を参照しつつ、本発明の実施形態について説明する。
【0032】
図5は、本実施形態に係る復号処理装置1を示す構成図である。本実施形態に係る復号処理装置1は、コンピュータによって実現される。図5に示されるように、復号処理装置1は、中央演算処理装置2、データ記憶部3、データ入出力部4、及びプログラム記憶部5を備えている。これらは、データバス6を介して、中央演算処理装置2から復号処理装置1、データ記憶部3、データ入出力部4、プログラム記憶部5にアクセス可能になるように接続されている。
【0033】
プログラム記憶部5は、ROM(Read Only Memory)等により実現される。プログラム記憶部5には、復号処理プログラム7が格納されている。復号処理プログラム7は、中央演算処理装置2によって実行される。復号処理プログラム7が実行されることにより、事前処理を行う事前処理部8、主処理を行う主処理部9、及び後処理を行なう後処理部10が実現される。復号処理プログラム7は、例えば、コンピュータによって読み取りが可能な記録媒体(図示せず)から、プログラム記憶部5にインストールされる。
【0034】
データ入出力部4は、外部装置に接続され、外部装置から必要なデータを取得する機能を有している。また、データ入出力部4は、復号処理装置1によって生成された出力データを外部装置に出力する機能も有している。
【0035】
データ記憶部3は、復号処理に必要なデータを格納する部分である。データ記憶部3には、入出力データ、及び中間演算データが記憶される。入出力データは、データ入出力部4を介して入出力されるデータである。中間演算データは、復号処理プログラム7の実行中に発生するデータであり、データ記憶部3に一時的に記憶される。
【0036】
続いて、本実施形態に係る復号処理装置1の動作方法について説明する。まず、本実施形態に係る復号処理装置1の動作方法の概要について説明する。
【0037】
図6は、復号処理プログラム7に記載されたアルゴリズムを概略的に示す図である。本実施形態では、中央演算処理装置2が復号処理プログラム7を実行することにより、メッセージMが復号され、平文Zが得られる。ここで、メッセージMは、公開鍵e及びNを用いて平文Zを暗号化することにより、得られたものである。復号処理装置1は、図6に示されるように、秘密鍵d、p、q、r、およびメッセージM(暗号文)をパラメータとして用い、平文Zを得る。ここで、秘密鍵p及びqは、素数である。また、秘密鍵rは、p及びqよりも大きい奇数である。また、公開鍵eは、(p−1)×(q−1)と互いに素である正の整数である。また、公開鍵Nは、p×qにより表される数である。更に、秘密鍵dは、(p−1)×(q−1)を法としたeの逆元を示す数である。
【0038】
図6に示されるように、復号処理装置1では、事前処理部8が事前処理を行い、u、dp、及びdqが求められる。更に、主処理部9によって、Mp、Mq、Cp、及びCqが求められる。更に、後処理部10によって、C及びZが求められる。ここで、本実施形態においては、Zを計算する為の処理が、工夫されている。すなわち、CRTを用いた場合の最後の計算式(既述の数式11)が、下記式23により計算される。
(数式23):Z=(C×q(r+1)+Cq)modqr
【0039】
上式23を用いることにより、中間演算データの発生量を抑制した上で、電力差分解析攻撃に対する耐性を強化できる。
【0040】
以下に、復号処理装置1の動作方法について、詳細に説明する。図7は、復号処理装置1の動作方法を示すフローチャートである。
【0041】
<ステップS1>
まず、データ入出力部4が、外部から、秘密鍵pを示すpデータ、秘密鍵qを示すqデータ、及び秘密鍵dを示すdデータを取得する。pデータ、qデータ、及びdデータは、入出力データとして、データ記憶部3に格納される。
【0042】
<ステップS2>
次いで、事前処理部8が、事前処理を実行する。具体的には、事前処理部8は、qデータ及びpデータを用いて、pを法としたqの逆元uを計算し、数値uを示すuデータを生成する。また、事前処理部8は、pデータ及びdデータに基づいて、p−1を法としたdの剰余dpを計算し、数値dpを示すdpデータを生成する。更に、事前処理部8は、qデータ及びdデータに基づいて、q−1を法としたdの剰余dqを計算し、数値dqを示すdqデータを生成する。uデータ、dpデータ、及びdqデータは、中間演算データとして、データ記憶部3に格納される。
【0043】
<ステップS3>
次いで、データ入出力部4が、外部から、メッセージMを示すMデータを取得する。Mデータは、入出力データとして、データ記憶部3に格納される。
【0044】
<ステップS4、5>
次いで、主処理部9が、Mデータ及びpデータに基づいて、Mのpを法とした剰余Mpを計算し、数値Mpを示すMpデータを生成する。また、主処理部9は、Mデータ及びqデータに基づいて、Mのqを法とした剰余Mqを計算し、数値Mqを示すMqデータを生成する。Mpデータ及びMqデータは、中間演算データとして、データ記憶部3に格納される(ステップS4)。
【0045】
また、主処理部9は、Mpデータ、dpデータ、およびpデータに基づいて、dpを指数かつpを法としたMpのべき乗剰余Cpを計算し、数値Cpを示すCpデータを生成する。また、主処理部9は、Mqデータ、dqデータ、及びqデータに基づいて、dpを指数かつqを法としたMqのべき乗剰余Cqを計算し、数値Cqを示すCqデータを生成する。Cpデータ及びCqデータは、中間演算データとして、データ記憶部3に格納される(ステップS5)。
【0046】
<ステップS6>
続いて、後処理部10が、Cpデータ、Cqデータ、uデータ、及びpデータに基づいて、CpからCqを減じた結果にuを乗じ、その結果のpを法とした剰余Cを計算し、数値Cを示すCデータを生成する。Cデータは、中間演算データとして、データ記憶部3に格納される。
【0047】
<ステップS7>
続いて、データ入出力部4が、外部装置から、秘密変数rを示すrデータを受信し、データ記憶部3に格納する。秘密変数rは、秘密鍵p、qよりも大きい奇数である(ステップS7)。
【0048】
<ステップS8〜11>
続いて、ステップS7乃至11の処理が行われ、既述の式23「Z=(C×q(r+1)+Cq)modqr」の計算が実行される。
【0049】
すなわち、まず、後処理部10が、qデータ及びrデータに基づいて、qとr+1の乗算m0を計算し、数値m0を示すm0データを生成する。m0データは、中間演算データとして、データ記憶部3に格納される(ステップS8)。
【0050】
次いで、後処理部10が、Cデータ及びm0データに基づいて、Cとm0の乗算m1を計算し、数値m1を示すm1データを生成する。m1データは、中間演算データとして、データ記憶部3に格納される(ステップS9)。
【0051】
次いで、後処理部10が、m1データ及びCqデータに基づいて、m1とCqの加算m2を計算し、数値m2を示すm2データを生成する。m2データは、中間演算データとして、データ記憶部3に格納される(ステップS10)。
【0052】
次いで、後処理部10が、m2データ、qデータ、及びrデータに基づいて、m2のqrを法とした剰余Zを計算し、数値Zを示すZデータを生成する。Zデータは、入出力データとして、データ記憶部3に格納される(ステップS11)。
【0053】
<ステップS12>
以上のステップS11までの処理により、平文Zを示すZデータが生成される。Zデータは、復号結果として、データ入出力部4を介して外部装置に送信される。
【0054】
続いて、本実施形態の作用効果について説明する。
【0055】
既述のように、CRTを用いた場合の復号処理においては、最後の演算である数式11「Z=C×q+Cq」が、電力差分解析攻撃に対して耐性が低い。ここで、本実施形態においては、数式11が、既述の数式23「Z=(C×q(r+1)+Cq)modqr」に変形されている。秘密変数rが用いられているため、電力差分解析攻撃によって秘密鍵qを予測するためには、攻撃者は、秘密変数rも予測する必要がある。2つの秘密変数q及びrを予測する必要があるので、電力差分解析攻撃によって秘密鍵qを推測することが困難になる。従って、電力差分解析攻撃に対する耐性を高めることができる。
【0056】
尚、式11と式23とが等価であることは、以下の式展開により、理解できる。
Z=(C×q(r+1)+Cq)modqr
=(C×qr+C×q+Cq)modqr
=0+(C×q+Cq)modqr
=C×q+Cq
∵C<p、Cq<q、P<rより、(C×q+Cq)<qrは明確。
【0057】
また、式23の代わりに、任意の整数kを用いて、下記式24を用いても、同様の結果を得ることができる。
(数式24):Z=(C×q(k×r+1)+Cq)modqr
【0058】
加えて、本実施形態によれば、復号処理時に発生する中間演算データのデータ量を抑制することができる。以下に、この点について詳述する。
【0059】
図8は、本実施形態において発生するデータを概念的に示す図である。図8に示されるように、本実施形態では、入力データとして、pデータ、qデータ、dデータ、rデータ、及びMデータが用いられる。ここで、pデータ、qデータ、dデータ、及びrデータは、それぞれ512bitであるものとする。また、Mデータは、1024bitであるものとする。すなわち、鍵長は、1024bitであるものとする。
【0060】
図8に示されるように、中間演算データとしては、uデータ,dpデータ,dqデータ,Mpデータ,Mqデータ,Cpデータ,Cqデータ,C0データ,Cデータ,r1データ、C1データ、m0データ、m1データ、m2データ、及びKデータが発生する。ここで、uデータ,dpデータ,dqデータ,Mpデータ,Mqデータ,Cpデータ,Cqデータ,C0データ,Cデータ及びr1データは、それぞれ、512bitである。また、C1データ,m0データ,及びKデータは、1024bitである。また、m1データ、およびm2データは、それぞれ、1536bitである。尚、Zデータは、1024bitである。すなわち、10個の512bitのデータ、4個の1024bitのデータ、及び2個の1536bitのデータが発生する。すなわち、本実施形態においては、メモリ消費量は、12Kbitである。
【0061】
本実施形態を図3に示した例と比較する。図3に示した例では、メモリ消費量は、15Kbitである。すなわち、本実施形態によれば、図3に示した例と比較して、メモリ消費量を、3Kbitほど削減できることが理解される。すなわち、本実施形態では、既述の式10及び式11のうち、式11だけが変形されているため、式10及び式11の双方を変形する場合と比較して、メモリ消費量を小さくすることができる。
【0062】
以上説明したように、本実施形態によれば、メモリ消費量を抑制した上で、電力差分解析攻撃に対する耐性を向上することができる。メモリ消費量が削減できるため、中間演算データをロード及びアンロードするために費やされる時間も削減できる。また、乱数生成器を設ける必要がないため、低価格化を実現できる。従って、低価格化が要求されるシステムに対して、有効に適用することができる。
【符号の説明】
【0063】
1 復号処理装置
2 中央演算処理装置
3 データ記憶部
4 データ入出力部
5 プログラム記憶部
6 データバス
7 復号プログラム
8 事前処理部
9 主処理部
10 後処理部
【技術分野】
【0001】
本発明は、復号処理装置、復号処理方法、及び復号処理プログラムに関する。
【背景技術】
【0002】
昨今、ユビキタスネットワーク社会において、復号処理が様々な情報機器に利用されている。復号処理の方式として、公開鍵暗号方式が知られている。代表的な公開鍵暗号方式として、RSA暗号方式が知られている。RSA暗号方式では、べき乗剰余演算が行われる。べき乗剰余演算は、コンピュータにより、実行される。以下に、RSA暗号方式について説明する。
【0003】
RSA暗号方式では、秘密素数p、秘密素数q、公開鍵e、公開鍵N、及び秘密鍵dが用いられる。ここで、公開鍵Nは、式「N=p×q」により、与えられる。また、公開鍵eは、(p−1)×(q−1)と互いに素である正の整数である。秘密鍵dは、(p−1)×(q−1)を法とした公開鍵eの逆元である。
【0004】
平文Zを暗号文M(メッセージM)に変換する場合には、公開鍵e及び公開鍵Nを用いて、下記式1により示される計算が行なわれる。
(数式1):M=ZemodN
一方、メッセージMを平文Zに変換(復号)する場合には、秘密鍵d及び公開鍵Nを用いて、下記式2により示される計算が行なわれる。
(数式2):Z=MdmodN
尚、「AmodB」とは、Bを法としたAの剰余を示す。
【0005】
上述のように、復号時(数式2の演算時)には、M、d、及びNを用いて、べき乗剰余演算が実行される。ここで、第三者による解読を困難にするために、M、d、及びNとして、非常に大きな数値(例えばそれぞれ1024bitなど)が用いられる。しかしながら、これによって、復号時においてべき乗剰余演算に費やされる処理時間が、長くなってしまう。
【0006】
べき乗剰余演算に要する処理時間を短縮するために、一般的には、中国人剰余定理(Chinese Remainder Theorem:以降CRTと称す)と呼ばれる高速演算アルゴリズムが適用される。CRTを用いることにより、べき乗剰余演算に費やされる処理時間を1/4に短縮できることが知られている。
【0007】
以下に、CRTが適用されるRSA復号処理について説明する。図1は、CRTを適用した復号処理を示すフローチャートである。図1に示されるように、事前処理として、秘密鍵p、q、u、dp、及びdqを示すデータが、コンピュータに入力される(ステップS101)。ここで、u,dp,及びdqは、下記式3乃至5によって表される式により求められた値である。
(数式3):u=(1/q)modp
(数式4):dp=dmod(p−1)
(数式5):dq=dmod(q−1)
【0008】
次いで、メッセージMを示すデータがコンピュータに入力される(ステップS102)。
【0009】
次いで、コンピュータが、主処理が行う。主処理として、下記式6及び7に従って、Mp及びMqが求められる(ステップS103)。また、下記式8及び9に従って、Cp及びCqが求められる(ステップS104)。
(数式6):Mp=Mmodp
(数式7):Mq=Mmodq
(数式8):Cp=Mpdpmodp
(数式9):Cq=Mqdqmodq
【0010】
次いで、コンピュータが、後処理を行なう。後処理として、下記式10及び11に従って、C及び平文Zが求められる(ステップS105)。
(数式10):C=((Cp−Cq)×u)modp
(数式11):Z=C×q+Cq
【0011】
そして、数式11により求められた平文Zが、復号結果として出力される(ステップS106)。すなわち、CRTを用いた場合には、数式2によって示される演算が、数式3乃至11を用いることにより、実行される。
【0012】
一方で、暗号処理方式の脆弱性を研究及び開発する活動が、盛んに行なわれている。特に、サイドチャネル攻撃と呼ばれる攻撃手法の研究が、学会等を賑やかせている。サイドチャネル攻撃の一手法として、電力差分解析攻撃(DPA:Differential Power Analysis)という手法が存在する。デバイスの消費電力は、実行されている演算、及び用いられているデータ値に関係する場合がある。電力差分解析攻撃では、この点が利用される。すなわち、復号処理を行っている時の消費電力が測定され、統計処理が行われ、復号処理内容に関する情報(秘密鍵などの機密情報)が導出される。
【0013】
CRTが適用されたRSA暗号処理方式においては、電力差分解析攻撃に対して非常に脆弱な処理部分が存在する。非特許文献1(Paper on DPA recombination attack on RSA−CRT、 http://www.riscure.com/tech−corner/publications.html)には、再結合処理(Recombination)と呼ばれる処理(数式10及び数式11)が、電力差分解析攻撃に対する脆弱性を有している点が開示されている。
【0014】
一方、特許文献1(特開2006−217193号公報)には、再結合処理に対する電力差分解析攻撃を用いたアタックを困難にするための復号処理方法が、開示されている。
【0015】
図2Aは、特許文献1に記載された復号処理方法を示すフローチャートである。また、図3は、特許文献1に記載された復号処理方法において、記憶装置に格納されるデータを示す構成図である。図2Aに示されるように、この復号処理方法では、ステップS100において、入力データであるメッセージMが外部から受信される。メッセージMは、記憶装置における一時データ格納部(図3参照)に格納される。次いで、ステップS101において、記憶装置における永続データ格納部(図3参照)に格納に格納された秘密鍵(p,q,u,dp,dq)を用いて、メッセージMに対するRSA計算が実行され、出力データである平文Zが計算される。平文Zは、一時データ格納部に格納される。ステップS102において、平文Zが外部に送信される。
【0016】
図2Bは、上述のステップS102における処理を詳細に示すフローチャートである。
【0017】
図2Bに示されるように、ステップS111において、Mのpを法とした剰余Mp、及びMのqを法とした剰余Mqが計算され、計算結果が一時データ格納部に格納される。また、dpを指数かつpを法としたMpのべき乗剰余Cp、及び、dpを指数かつqを法としたMqのべき乗剰余Cqが計算され、計算結果が一時データ格納部に格納される。
【0018】
次に、ステップS112において、乱数r1が生成され、一時データ格納部233に格納される。次に、ステップS113において、r1の値が、uを法とするr1の剰余r1を計算することにより、更新される。次に、ステップS114において、uからr1を減算することにより、r2が計算される。r2を示すデータは、データ格納部に格納される。次に、ステップS115にて、pを法としたCp−Cqの剰余C0が計算され、データ格納部に格納される。次にS116において、pを法としたC0とr1の乗算剰余C1と、C0とr2の乗算剰余C2とが計算され、一時データ格納部に格納される。次に、ステップS117において、C1とqの乗算Z1と、C2とqの乗算Z2とが計算され、一時データ格納部に格納される。次に、ステップS118において、pとqの乗算Nが計算され、一時データ格納部に格納される。次に、ステップS119において、Nを法としたZ1とZ2の加算剰余に、Cqが加算され、Zとして、一時データ格納部に格納される。
【0019】
特許文献1の記載によれば、ステップS112乃至S114において、乱数r1及びr2が生成される。そして、ステップS116において、これらの乱数r1及びr2を用いて、Cの値が、C1及びC2にランダムに分解される。そして、Cとqの乗算を計算する代わりに、ステップS117において、C1とqの乗算Z1、及び、C2とqの乗算Z2が計算される。最後に、ステップS119において、Z1とZ2とが加算され、Cとqとの乗算が実現される。ここで、乱数r1とr2の値は、RSA計算を行う度に異なった値になる。Cとqとの乗算を行う際に、毎回異なる乱数値が用いられるため、Cとqとを乗算する際における消費電力を繰り返し観察したとしても、qの値を推測することが困難になる。
【先行技術文献】
【特許文献】
【0020】
【特許文献1】特開2006−217193号公報
【非特許文献】
【0021】
【非特許文献1】Paper on DPA recombination attack on RSA−CRT、 http://www.riscure.com/tech−corner/publications.html
【発明の概要】
【発明が解決しようとする課題】
【0022】
特許文献1に記載された方法によれば、電力差分解析攻撃に対する耐性を高めることができる。しかしながら、この方法では、剰余加減算や剰余乗算を処理可能なコプロセッサを用いた場合であっても、図3に示したように大量の中間演算データが発生する。そのようなコプロセッサを搭載していないコンピュータ(通常のコンピュータ)を用いる場合には、更に大量の中間演算データが発生する。図4は、特許文献1に記載された方法が通常のコンピュータによって実行される場合に発生する中間演算データを示す概略図である。図4には、鍵長が1024bitである場合の例が示されている。図4に示される例では、入力データとして、それぞれ512bitであるp、q、d、及び、1024bitであるメッセージMが用いられている。図4に示されるように、中間演算データとして、14個(u,dp,dq,Mp,Mq,Cp,Cq,r1,r3,r2,C00,C0,C1,及びC2)の512bitのデータが発生し、8個(C11,C21、Z1、Z2、N、Z3、Z4、及びZ)の1024bitのデータが発生する。
【0023】
上述のように、特許文献1に記載された方法では、中間演算データの種類が非常に多くなり、そのbit長も512bit若しくは1024bitになる。従って、中間演算データを保持するために、メモリの消費量が多くなってしまう。また、中間演算データをロード又はアンロードするために、時間が費やされてしまう。さらに、図4には、RSA暗号の鍵長が1024bitである場合の例が示されているが、近年利用されるRSA暗号では、安全性の面から、鍵長が1280bit〜2048bitに変わりつつある。従って、更にメモリを多く消費することになる。加えて、特許文献1に記載された方法では、復号処理を行うために乱数を発生させる必要があり、乱数生成器をコンピュータに設ける必要がある。
【0024】
すなわち、特許文献1に記載された方法では、中間演算処理に要する負担が増大し、中間演算データを一時保存するために大量のメモリが必要になる。また、乱数生成器を設けなければならない。そのため、低価格化が要求されるシステムに対して実装することは不向きである、という問題点があった。
【0025】
また、既述のように、特別なコプロセッサ(多倍長整数を用いた算術演算を行うコプロセッサ)を用いることにより、メモリの消費量を抑制することは可能であるが、そのようなコプロセッサの回路規模は非常に大きい。従って、コスト増大のインパクトも非常に大きい。低価格化が要求されるシステム(例えば機器認証を必要とするインターネット接続可能な情報家電などに適用されるシステム)に実装する場合は、不利になる。
【課題を解決するための手段】
【0026】
本発明に係る復号処理装置は、メッセージMを示すメッセージデータ、秘密素数pを示すpデータ、秘密素数qを示すqデータ、秘密鍵dを示すdデータ、及び、前記p及び前記qよりも大きい奇数である秘密変数rを示す秘密変数データを格納する、データ記憶部と、事前処理部と、主処理部と、後処理部とを具備する。前記メッセージMは、平文Z、公開鍵e、及び公開鍵Nに基づいて、下記式12により得られたものである。
(数式12):M=ZemodN
前記eは、(p−1)×(q−1)と互いに素である正の整数である。前記Nは、p×qにより表される数である。前記dは、(p−1)×(q−1)を法とした前記eの逆元を示す数である。前記事前処理部は、前記pデータ、前記qデータ、及び前記dデータに基づいて、下記式13乃至15によって表される計算を行い、uを示すuデータ、dpを示すdpデータ、及びdqを示すdqデータを生成する。
(数式13):u=q−1modp
(数式14):dp=dmod(p−1)
(数式15):dq=dmod(q−1)
前記主処理部は、前記メッセージM、前記pデータ、及び前記qデータに基づいて、下記式16及び17によって表される計算を行い、Mpを示すMpデータ、及びMqを示すMqデータを生成し、前記Mpデータ、前記dpデータ、前記pデータ、前記Mqデータ、前記dqデータ、及び前記qデータに基づいて、下記式18及び19によって表される計算を行い、Cpを示すCpデータ及びCqを示すCqデータを生成する。
(数式16):Mp=Mmodp
(数式17):Mq=Mmodq
(数式18):Cp=(Mp)dpmodp
(数式19):Cq=(Mq)dqmodq
前記後処理部は、前記Cpデータ、前記Cqデータ、前記uデータ、及び前記pデータに基づいて、下記式20によって表される計算を行い、Cを示すCデータを生成し、前記Cデータ、前記qデータ、前記rデータ、前記Cqデータに基づいて、下記式21又は22によって表される計算を行い、前記平文Zを示す出力データを生成する。
(数式20):C=((Cp−Cq)×u)modp
(数式21);Z=(C×q(r+1)+Cq)modqr
(数式22);Z=(C×q(k×r+1)+Cq)modqr
ここで、上式22中、kは任意の定数を示す。
【0027】
本発明に係る復号処理方法は、コンピュータが、メッセージMを示すメッセージデータ、秘密素数pを示すpデータ、秘密素数qを示すqデータ、秘密鍵であるdを示すdデータ、及び、前記p及び前記qよりも大きい奇数である秘密変数rを示す秘密変数データを取得するステップと、コンピュータが、事前処理を行うステップと、コンピュータが、主処理を行うステップと、コンピュータが、後処理を行うステップとを具備する。前記メッセージMは、平文Z、公開鍵e、及び公開鍵Nに基づいて、下記式12により得られたものである。
(数式12):M=ZemodN
前記eは、(p−1)×(q−1)と互いに素である整数である。前記Nは、p×qにより表される数である。前記dは、(p−1)×(q−1)を法とした前記eの逆元を示す数である。前記事前処理を行うステップは、前記pデータ、前記qデータ、及び前記dデータに基づいて、下記式13乃至15によって表される計算を行い、uを示すuデータ、dpを示すdpデータ、及びdqを示すdqデータを生成するステップを含む。
(数式13):u=q−1modp
(数式14):dp=dmod(p−1)
(数式15):dq=dmod(q−1)
前記主処理を行うステップは、前記メッセージM、前記pデータ、及び前記qデータに基づいて、下記式16及び17によって表される計算を行い、Mpを示すMpデータ、及びMqを示すMqデータを生成し、前記Mpデータ、前記dpデータ、前記pデータ、前記Mqデータ、前記dqデータ、及び前記qデータに基づいて、下記式18及び19によって表される計算を行い、Cpを示すCpデータ及びCqを示すCqデータを生成ステップを含む。
(数式16):Mp=Mmodp
(数式17):Mq=Mmodq
(数式18):Cp=(Mp)dpmodp
(数式19):Cq=(Mq)dqmodq
前記後処理を行うステップは、前記Cpデータ、前記Cqデータ、前記uデータ、及び前記pデータに基づいて、下記式20によって表される計算を行い、Cを示すCデータを生成し、前記Cデータ、前記qデータ、前記rデータ、前記Cqデータに基づいて、下記式21又は22によって表される計算を行い、前記平文Zを示す出力データを生成するステップを含む。
(数式20):C=((Cp−Cq)×u)modp
(数式21);Z=(C×q(r+1)+Cq)modqr
(数式22);Z=(C×q(k×r+1)+Cq)modqr
ここで、上式11中、kは任意の定数を示す。
【0028】
本発明に係る復号処理プログラムは、上述の復号処理方法をコンピュータにより実現するためのプログラムである。
【発明の効果】
【0029】
本発明によれば、中間演算データのメモリ消費量を削減できる、復号処理装置、復号処理方法、及び復号処理プログラムが提供される。
【図面の簡単な説明】
【0030】
【図1】CRTを適用した復号処理を示すフローチャートである。
【図2A】特許文献1に記載された復号処理方法を示すフローチャートである。
【図2B】ステップS102における処理を詳細に示すフローチャートである。
【図3】特許文献1に記載された復号処理方法において、記憶装置に格納されるデータを示す構成図である。
【図4】特許文献1において発生する中間演算データを示す概略図である。
【図5】復号処理装置を示す構成図である。
【図6】復号処理プログラムに記載されたアルゴリズムを概略的に示す図である。
【図7】復号処理装置の動作方法を示すフローチャートである。
【図8】発生するデータを概念的に示す図である。
【発明を実施するための形態】
【0031】
以下に、図面を参照しつつ、本発明の実施形態について説明する。
【0032】
図5は、本実施形態に係る復号処理装置1を示す構成図である。本実施形態に係る復号処理装置1は、コンピュータによって実現される。図5に示されるように、復号処理装置1は、中央演算処理装置2、データ記憶部3、データ入出力部4、及びプログラム記憶部5を備えている。これらは、データバス6を介して、中央演算処理装置2から復号処理装置1、データ記憶部3、データ入出力部4、プログラム記憶部5にアクセス可能になるように接続されている。
【0033】
プログラム記憶部5は、ROM(Read Only Memory)等により実現される。プログラム記憶部5には、復号処理プログラム7が格納されている。復号処理プログラム7は、中央演算処理装置2によって実行される。復号処理プログラム7が実行されることにより、事前処理を行う事前処理部8、主処理を行う主処理部9、及び後処理を行なう後処理部10が実現される。復号処理プログラム7は、例えば、コンピュータによって読み取りが可能な記録媒体(図示せず)から、プログラム記憶部5にインストールされる。
【0034】
データ入出力部4は、外部装置に接続され、外部装置から必要なデータを取得する機能を有している。また、データ入出力部4は、復号処理装置1によって生成された出力データを外部装置に出力する機能も有している。
【0035】
データ記憶部3は、復号処理に必要なデータを格納する部分である。データ記憶部3には、入出力データ、及び中間演算データが記憶される。入出力データは、データ入出力部4を介して入出力されるデータである。中間演算データは、復号処理プログラム7の実行中に発生するデータであり、データ記憶部3に一時的に記憶される。
【0036】
続いて、本実施形態に係る復号処理装置1の動作方法について説明する。まず、本実施形態に係る復号処理装置1の動作方法の概要について説明する。
【0037】
図6は、復号処理プログラム7に記載されたアルゴリズムを概略的に示す図である。本実施形態では、中央演算処理装置2が復号処理プログラム7を実行することにより、メッセージMが復号され、平文Zが得られる。ここで、メッセージMは、公開鍵e及びNを用いて平文Zを暗号化することにより、得られたものである。復号処理装置1は、図6に示されるように、秘密鍵d、p、q、r、およびメッセージM(暗号文)をパラメータとして用い、平文Zを得る。ここで、秘密鍵p及びqは、素数である。また、秘密鍵rは、p及びqよりも大きい奇数である。また、公開鍵eは、(p−1)×(q−1)と互いに素である正の整数である。また、公開鍵Nは、p×qにより表される数である。更に、秘密鍵dは、(p−1)×(q−1)を法としたeの逆元を示す数である。
【0038】
図6に示されるように、復号処理装置1では、事前処理部8が事前処理を行い、u、dp、及びdqが求められる。更に、主処理部9によって、Mp、Mq、Cp、及びCqが求められる。更に、後処理部10によって、C及びZが求められる。ここで、本実施形態においては、Zを計算する為の処理が、工夫されている。すなわち、CRTを用いた場合の最後の計算式(既述の数式11)が、下記式23により計算される。
(数式23):Z=(C×q(r+1)+Cq)modqr
【0039】
上式23を用いることにより、中間演算データの発生量を抑制した上で、電力差分解析攻撃に対する耐性を強化できる。
【0040】
以下に、復号処理装置1の動作方法について、詳細に説明する。図7は、復号処理装置1の動作方法を示すフローチャートである。
【0041】
<ステップS1>
まず、データ入出力部4が、外部から、秘密鍵pを示すpデータ、秘密鍵qを示すqデータ、及び秘密鍵dを示すdデータを取得する。pデータ、qデータ、及びdデータは、入出力データとして、データ記憶部3に格納される。
【0042】
<ステップS2>
次いで、事前処理部8が、事前処理を実行する。具体的には、事前処理部8は、qデータ及びpデータを用いて、pを法としたqの逆元uを計算し、数値uを示すuデータを生成する。また、事前処理部8は、pデータ及びdデータに基づいて、p−1を法としたdの剰余dpを計算し、数値dpを示すdpデータを生成する。更に、事前処理部8は、qデータ及びdデータに基づいて、q−1を法としたdの剰余dqを計算し、数値dqを示すdqデータを生成する。uデータ、dpデータ、及びdqデータは、中間演算データとして、データ記憶部3に格納される。
【0043】
<ステップS3>
次いで、データ入出力部4が、外部から、メッセージMを示すMデータを取得する。Mデータは、入出力データとして、データ記憶部3に格納される。
【0044】
<ステップS4、5>
次いで、主処理部9が、Mデータ及びpデータに基づいて、Mのpを法とした剰余Mpを計算し、数値Mpを示すMpデータを生成する。また、主処理部9は、Mデータ及びqデータに基づいて、Mのqを法とした剰余Mqを計算し、数値Mqを示すMqデータを生成する。Mpデータ及びMqデータは、中間演算データとして、データ記憶部3に格納される(ステップS4)。
【0045】
また、主処理部9は、Mpデータ、dpデータ、およびpデータに基づいて、dpを指数かつpを法としたMpのべき乗剰余Cpを計算し、数値Cpを示すCpデータを生成する。また、主処理部9は、Mqデータ、dqデータ、及びqデータに基づいて、dpを指数かつqを法としたMqのべき乗剰余Cqを計算し、数値Cqを示すCqデータを生成する。Cpデータ及びCqデータは、中間演算データとして、データ記憶部3に格納される(ステップS5)。
【0046】
<ステップS6>
続いて、後処理部10が、Cpデータ、Cqデータ、uデータ、及びpデータに基づいて、CpからCqを減じた結果にuを乗じ、その結果のpを法とした剰余Cを計算し、数値Cを示すCデータを生成する。Cデータは、中間演算データとして、データ記憶部3に格納される。
【0047】
<ステップS7>
続いて、データ入出力部4が、外部装置から、秘密変数rを示すrデータを受信し、データ記憶部3に格納する。秘密変数rは、秘密鍵p、qよりも大きい奇数である(ステップS7)。
【0048】
<ステップS8〜11>
続いて、ステップS7乃至11の処理が行われ、既述の式23「Z=(C×q(r+1)+Cq)modqr」の計算が実行される。
【0049】
すなわち、まず、後処理部10が、qデータ及びrデータに基づいて、qとr+1の乗算m0を計算し、数値m0を示すm0データを生成する。m0データは、中間演算データとして、データ記憶部3に格納される(ステップS8)。
【0050】
次いで、後処理部10が、Cデータ及びm0データに基づいて、Cとm0の乗算m1を計算し、数値m1を示すm1データを生成する。m1データは、中間演算データとして、データ記憶部3に格納される(ステップS9)。
【0051】
次いで、後処理部10が、m1データ及びCqデータに基づいて、m1とCqの加算m2を計算し、数値m2を示すm2データを生成する。m2データは、中間演算データとして、データ記憶部3に格納される(ステップS10)。
【0052】
次いで、後処理部10が、m2データ、qデータ、及びrデータに基づいて、m2のqrを法とした剰余Zを計算し、数値Zを示すZデータを生成する。Zデータは、入出力データとして、データ記憶部3に格納される(ステップS11)。
【0053】
<ステップS12>
以上のステップS11までの処理により、平文Zを示すZデータが生成される。Zデータは、復号結果として、データ入出力部4を介して外部装置に送信される。
【0054】
続いて、本実施形態の作用効果について説明する。
【0055】
既述のように、CRTを用いた場合の復号処理においては、最後の演算である数式11「Z=C×q+Cq」が、電力差分解析攻撃に対して耐性が低い。ここで、本実施形態においては、数式11が、既述の数式23「Z=(C×q(r+1)+Cq)modqr」に変形されている。秘密変数rが用いられているため、電力差分解析攻撃によって秘密鍵qを予測するためには、攻撃者は、秘密変数rも予測する必要がある。2つの秘密変数q及びrを予測する必要があるので、電力差分解析攻撃によって秘密鍵qを推測することが困難になる。従って、電力差分解析攻撃に対する耐性を高めることができる。
【0056】
尚、式11と式23とが等価であることは、以下の式展開により、理解できる。
Z=(C×q(r+1)+Cq)modqr
=(C×qr+C×q+Cq)modqr
=0+(C×q+Cq)modqr
=C×q+Cq
∵C<p、Cq<q、P<rより、(C×q+Cq)<qrは明確。
【0057】
また、式23の代わりに、任意の整数kを用いて、下記式24を用いても、同様の結果を得ることができる。
(数式24):Z=(C×q(k×r+1)+Cq)modqr
【0058】
加えて、本実施形態によれば、復号処理時に発生する中間演算データのデータ量を抑制することができる。以下に、この点について詳述する。
【0059】
図8は、本実施形態において発生するデータを概念的に示す図である。図8に示されるように、本実施形態では、入力データとして、pデータ、qデータ、dデータ、rデータ、及びMデータが用いられる。ここで、pデータ、qデータ、dデータ、及びrデータは、それぞれ512bitであるものとする。また、Mデータは、1024bitであるものとする。すなわち、鍵長は、1024bitであるものとする。
【0060】
図8に示されるように、中間演算データとしては、uデータ,dpデータ,dqデータ,Mpデータ,Mqデータ,Cpデータ,Cqデータ,C0データ,Cデータ,r1データ、C1データ、m0データ、m1データ、m2データ、及びKデータが発生する。ここで、uデータ,dpデータ,dqデータ,Mpデータ,Mqデータ,Cpデータ,Cqデータ,C0データ,Cデータ及びr1データは、それぞれ、512bitである。また、C1データ,m0データ,及びKデータは、1024bitである。また、m1データ、およびm2データは、それぞれ、1536bitである。尚、Zデータは、1024bitである。すなわち、10個の512bitのデータ、4個の1024bitのデータ、及び2個の1536bitのデータが発生する。すなわち、本実施形態においては、メモリ消費量は、12Kbitである。
【0061】
本実施形態を図3に示した例と比較する。図3に示した例では、メモリ消費量は、15Kbitである。すなわち、本実施形態によれば、図3に示した例と比較して、メモリ消費量を、3Kbitほど削減できることが理解される。すなわち、本実施形態では、既述の式10及び式11のうち、式11だけが変形されているため、式10及び式11の双方を変形する場合と比較して、メモリ消費量を小さくすることができる。
【0062】
以上説明したように、本実施形態によれば、メモリ消費量を抑制した上で、電力差分解析攻撃に対する耐性を向上することができる。メモリ消費量が削減できるため、中間演算データをロード及びアンロードするために費やされる時間も削減できる。また、乱数生成器を設ける必要がないため、低価格化を実現できる。従って、低価格化が要求されるシステムに対して、有効に適用することができる。
【符号の説明】
【0063】
1 復号処理装置
2 中央演算処理装置
3 データ記憶部
4 データ入出力部
5 プログラム記憶部
6 データバス
7 復号プログラム
8 事前処理部
9 主処理部
10 後処理部
【特許請求の範囲】
【請求項1】
メッセージMを示すメッセージデータ、秘密素数pを示すpデータ、秘密素数qを示すqデータ、秘密鍵dを示すdデータ、及び、前記p及び前記qよりも大きい奇数である秘密変数rを示す秘密変数データを格納する、データ記憶部と、
事前処理部と、
主処理部と、
後処理部と、
を具備し、
前記メッセージMは、平文Z、公開鍵e、及び公開鍵Nに基づいて、下記式1により得られたものであり、
(数式1):M=ZemodN
前記eは、(p−1)×(q−1)と互いに素である正の整数であり、
前記Nは、p×qにより表される数であり、
前記dは、(p−1)×(q−1)を法とした前記eの逆元を示す数であり、
前記事前処理部は、前記pデータ、前記qデータ、及び前記dデータに基づいて、下記式2乃至4によって表される計算を行い、uを示すuデータ、dpを示すdpデータ、及びdqを示すdqデータを生成し、
(数式2):u=q−1modp
(数式3):dp=dmod(p−1)
(数式4):dq=dmod(q−1)
前記主処理部は、前記メッセージM、前記pデータ、及び前記qデータに基づいて、下記式5及び6によって表される計算を行い、Mpを示すMpデータ、及びMqを示すMqデータを生成し、前記Mpデータ、前記dpデータ、前記pデータ、前記Mqデータ、前記dqデータ、及び前記qデータに基づいて、下記式7及び8によって表される計算を行い、Cpを示すCpデータ及びCqを示すCqデータを生成し、
(数式5):Mp=Mmodp
(数式6):Mq=Mmodq
(数式7):Cp=(Mp)dpmodp
(数式8):Cq=(Mq)dqmodq
前記後処理部は、前記Cpデータ、前記Cqデータ、前記uデータ、及び前記pデータに基づいて、下記式9によって表される計算を行い、Cを示すCデータを生成し、前記Cデータ、前記qデータ、前記rデータ、前記Cqデータに基づいて、下記式10又は11によって表される計算を行い、前記平文Zを示す出力データを生成し、
(数式9):C=((Cp−Cq)×u)modp
(数式10);Z=(C×q(r+1)+Cq)modqr
(数式11);Z=(C×q(k×r+1)+Cq)modqr
上式11中、kは任意の定数を示す
復号処理装置。
【請求項2】
コンピュータが、メッセージMを示すメッセージデータ、秘密素数pを示すpデータ、秘密素数qを示すqデータ、秘密鍵であるdを示すdデータ、及び、前記p及び前記qよりも大きい奇数である秘密変数rを示す秘密変数データを取得するステップと、
コンピュータが、事前処理を行うステップと、
コンピュータが、主処理を行うステップと、
コンピュータが、後処理を行うステップと、
を具備し、
前記メッセージMは、平文Z、公開鍵e、及び公開鍵Nに基づいて、下記式1により得られたものであり、
(数式1):M=ZemodN
前記eは、(p−1)×(q−1)と互いに素である整数であり、
前記Nは、p×qにより表される数であり、
前記dは、(p−1)×(q−1)を法とした前記eの逆元を示す数であり、
前記事前処理を行うステップは、前記pデータ、前記qデータ、及び前記dデータに基づいて、下記式2乃至4によって表される計算を行い、uを示すuデータ、dpを示すdpデータ、及びdqを示すdqデータを生成するステップを含み、
(数式2):u=q−1modp
(数式3):dp=dmod(p−1)
(数式4):dq=dmod(q−1)
前記主処理を行うステップは、前記メッセージM、前記pデータ、及び前記qデータに基づいて、下記式5及び6によって表される計算を行い、Mpを示すMpデータ、及びMqを示すMqデータを生成し、前記Mpデータ、前記dpデータ、前記pデータ、前記Mqデータ、前記dqデータ、及び前記qデータに基づいて、下記式7及び8によって表される計算を行い、Cpを示すCpデータ及びCqを示すCqデータを生成ステップを含み、
(数式5):Mp=Mmodp
(数式6):Mq=Mmodq
(数式7):Cp=(Mp)dpmodp
(数式8):Cq=(Mq)dqmodq
前記後処理を行うステップは、前記Cpデータ、前記Cqデータ、前記uデータ、及び前記pデータに基づいて、下記式9によって表される計算を行い、Cを示すCデータを生成し、前記Cデータ、前記qデータ、前記rデータ、前記Cqデータに基づいて、下記式10又は11によって表される計算を行い、前記平文Zを示す出力データを生成するステップを含み、
(数式9):C=((Cp−Cq)×u)modp
(数式10);Z=(C×q(r+1)+Cq)modqr
(数式11);Z=(C×q(k×r+1)+Cq)modqr
上式11中、kは任意の定数を示す
復号処理方法。
【請求項3】
請求項2に記載される復号処理方法をコンピュータにより実現するための復号処理プログラム。
【請求項1】
メッセージMを示すメッセージデータ、秘密素数pを示すpデータ、秘密素数qを示すqデータ、秘密鍵dを示すdデータ、及び、前記p及び前記qよりも大きい奇数である秘密変数rを示す秘密変数データを格納する、データ記憶部と、
事前処理部と、
主処理部と、
後処理部と、
を具備し、
前記メッセージMは、平文Z、公開鍵e、及び公開鍵Nに基づいて、下記式1により得られたものであり、
(数式1):M=ZemodN
前記eは、(p−1)×(q−1)と互いに素である正の整数であり、
前記Nは、p×qにより表される数であり、
前記dは、(p−1)×(q−1)を法とした前記eの逆元を示す数であり、
前記事前処理部は、前記pデータ、前記qデータ、及び前記dデータに基づいて、下記式2乃至4によって表される計算を行い、uを示すuデータ、dpを示すdpデータ、及びdqを示すdqデータを生成し、
(数式2):u=q−1modp
(数式3):dp=dmod(p−1)
(数式4):dq=dmod(q−1)
前記主処理部は、前記メッセージM、前記pデータ、及び前記qデータに基づいて、下記式5及び6によって表される計算を行い、Mpを示すMpデータ、及びMqを示すMqデータを生成し、前記Mpデータ、前記dpデータ、前記pデータ、前記Mqデータ、前記dqデータ、及び前記qデータに基づいて、下記式7及び8によって表される計算を行い、Cpを示すCpデータ及びCqを示すCqデータを生成し、
(数式5):Mp=Mmodp
(数式6):Mq=Mmodq
(数式7):Cp=(Mp)dpmodp
(数式8):Cq=(Mq)dqmodq
前記後処理部は、前記Cpデータ、前記Cqデータ、前記uデータ、及び前記pデータに基づいて、下記式9によって表される計算を行い、Cを示すCデータを生成し、前記Cデータ、前記qデータ、前記rデータ、前記Cqデータに基づいて、下記式10又は11によって表される計算を行い、前記平文Zを示す出力データを生成し、
(数式9):C=((Cp−Cq)×u)modp
(数式10);Z=(C×q(r+1)+Cq)modqr
(数式11);Z=(C×q(k×r+1)+Cq)modqr
上式11中、kは任意の定数を示す
復号処理装置。
【請求項2】
コンピュータが、メッセージMを示すメッセージデータ、秘密素数pを示すpデータ、秘密素数qを示すqデータ、秘密鍵であるdを示すdデータ、及び、前記p及び前記qよりも大きい奇数である秘密変数rを示す秘密変数データを取得するステップと、
コンピュータが、事前処理を行うステップと、
コンピュータが、主処理を行うステップと、
コンピュータが、後処理を行うステップと、
を具備し、
前記メッセージMは、平文Z、公開鍵e、及び公開鍵Nに基づいて、下記式1により得られたものであり、
(数式1):M=ZemodN
前記eは、(p−1)×(q−1)と互いに素である整数であり、
前記Nは、p×qにより表される数であり、
前記dは、(p−1)×(q−1)を法とした前記eの逆元を示す数であり、
前記事前処理を行うステップは、前記pデータ、前記qデータ、及び前記dデータに基づいて、下記式2乃至4によって表される計算を行い、uを示すuデータ、dpを示すdpデータ、及びdqを示すdqデータを生成するステップを含み、
(数式2):u=q−1modp
(数式3):dp=dmod(p−1)
(数式4):dq=dmod(q−1)
前記主処理を行うステップは、前記メッセージM、前記pデータ、及び前記qデータに基づいて、下記式5及び6によって表される計算を行い、Mpを示すMpデータ、及びMqを示すMqデータを生成し、前記Mpデータ、前記dpデータ、前記pデータ、前記Mqデータ、前記dqデータ、及び前記qデータに基づいて、下記式7及び8によって表される計算を行い、Cpを示すCpデータ及びCqを示すCqデータを生成ステップを含み、
(数式5):Mp=Mmodp
(数式6):Mq=Mmodq
(数式7):Cp=(Mp)dpmodp
(数式8):Cq=(Mq)dqmodq
前記後処理を行うステップは、前記Cpデータ、前記Cqデータ、前記uデータ、及び前記pデータに基づいて、下記式9によって表される計算を行い、Cを示すCデータを生成し、前記Cデータ、前記qデータ、前記rデータ、前記Cqデータに基づいて、下記式10又は11によって表される計算を行い、前記平文Zを示す出力データを生成するステップを含み、
(数式9):C=((Cp−Cq)×u)modp
(数式10);Z=(C×q(r+1)+Cq)modqr
(数式11);Z=(C×q(k×r+1)+Cq)modqr
上式11中、kは任意の定数を示す
復号処理方法。
【請求項3】
請求項2に記載される復号処理方法をコンピュータにより実現するための復号処理プログラム。
【図1】
【図2A】
【図2B】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図2A】
【図2B】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【公開番号】特開2012−242573(P2012−242573A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−112058(P2011−112058)
【出願日】平成23年5月19日(2011.5.19)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願日】平成23年5月19日(2011.5.19)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】
[ Back to top ]