JP4962165B2 - 暗号処理装置,暗号処理プログラム及び暗号処理方法 - Google Patents

暗号処理装置,暗号処理プログラム及び暗号処理方法 Download PDF

Info

Publication number
JP4962165B2
JP4962165B2 JP2007165154A JP2007165154A JP4962165B2 JP 4962165 B2 JP4962165 B2 JP 4962165B2 JP 2007165154 A JP2007165154 A JP 2007165154A JP 2007165154 A JP2007165154 A JP 2007165154A JP 4962165 B2 JP4962165 B2 JP 4962165B2
Authority
JP
Japan
Prior art keywords
secret information
information
masked
random number
intermediate value
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.)
Expired - Fee Related
Application number
JP2007165154A
Other languages
English (en)
Other versions
JP2009005164A (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.)
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 JP2007165154A priority Critical patent/JP4962165B2/ja
Publication of JP2009005164A publication Critical patent/JP2009005164A/ja
Application granted granted Critical
Publication of JP4962165B2 publication Critical patent/JP4962165B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、秘密の鍵を用いて情報を暗号化する暗号処理装置,暗号処理プログラム及び暗号処理方法に関するものである。
秘密情報(秘匿情報)を扱う暗号演算などの演算は、ICカード上で行う場合、サイドチャネル攻撃に注意する必要がある。ここで、サイドチャネル攻撃とは、消費電力や実行時間など演算の副作用として出力され、秘密情報の漏洩の原因となる情報、通称「サイドチャネル情報」を計測することにより、秘密鍵などの秘密情報を取得しようとする攻撃である。
サイドチャネル攻撃の1つとしてDPA(差分電力解析攻撃)が挙げられる。DPAでは、まず多くの異なる入力で暗号演算を実行し、その際の消費電力を測定する。秘密情報の値の一部を仮定し、その仮定に基づき一定のルールで上記測定した消費電力情報を二つのグループに分類し、各々のグループごとに平均を取る。最後に二つの平均値の差分をとり、一部に大きな差分が発生すれば、仮定が正しいことが分かる。このDPAによる攻撃の対策として、秘密情報にマスク(mask)処理(値に乱数をXOR演算して情報を隠す処理)を施して演算を行い、秘密情報と途中の処理との依存関係を消滅させることで、暗号解析を防ぐことができるとされている(例えば、特許文献1)。
しかし、演算の途中に非線形演算が挟まる場合(存在する場合)、マスク処理をしたまま演算を行うと、正しい演算結果を得ることはできないという問題があった。
特表2002−519722号公報
本発明の課題は、マスク処理をしたまま非線形演算を行っても正しい演算結果を得ることができる暗号処理装置,暗号処理プログラム及び暗号処理方法を提供することである。
本発明は、以下のような解決手段により、前記課題を解決する。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
請求項1の発明は、第1の秘密情報(a)と第1の乱数情報(m)とを排他的論理和により加算することによって前記第1の秘密情報(a)をマスクし、第1のマスクされた秘密情報(A)を算出する手段(12)と、第2の秘密情報(b)と第2の乱数情報(m)とを排他的論理和により加算することによって前記第2の秘密情報(b)をマスクし、第2のマスクされた秘密情報(B)を算出する手段(12)と、前記第1のマスクされた秘密情報(A)と前記第2の乱数情報(m)とを用いて、前記マスクされた秘密情報(A,B)のマスクを除去するための第1の中間値(Temp1)を算出する手段(12)と、前記第2のマスクされた秘密情報(B)と前記第1の乱数情報(m)とを用いて、前記マスクされた秘密情報(A,B)のマスクを除去するための第2の中間値(Temp2)を算出する手段(12)と、前記第1の乱数情報(m)と前記第2の乱数情報(m)とを用いて、前記マスクされた秘密情報(A,B)のマスクを除去するための第3の中間値(Temp3)を算出する手段(12)と、前記第1のマスクされた秘密情報(A)と、前記第2のマスクされた秘密情報(B)と、前記第1の中間値(Temp1)と、前記第2の中間値(Temp2)と、前記第3の中間値(Temp3)とを用いて、前記第1の秘密情報(a)と前記第2の秘密情報(b)との論理積の値を算出する手段と、を備える暗号処理装置(10)である。
請求項2の発明は、請求項1に記載の暗号処理装置(10)において、前記第1の秘密情報をaとし、前記第2の秘密情報をbとし、前記第1の乱数情報をmとし、前記第2の乱数情報をmとし、前記第1のマスクされた秘密情報をAとし、前記第2のマスクされた秘密情報をBとし、前記第1の中間値をTemp1とし、前記第2の中間値をTemp2とし、前記第3の中間値をTemp3とし、前記第1の秘密情報(a)と前記第2の秘密情報(b)との論理積の値をresultとした場合に、以下の式(1.2)〜式(1.8)を用いて、式(1.1)の演算処理を行うこと、
Figure 0004962165
を特徴とする暗号処理装置(10)である。
請求項3の発明は、請求項2に記載の暗号処理装置(10)において、第3の乱数情報をmとし、前記式(1.7)を以下の式(1.13)とし、前記式(1.8)を以下の式(1.14)とすること、
Figure 0004962165
を特徴とする暗号処理装置(10)である。
請求項4の発明は、第1の秘密情報(a)と第1の乱数情報(m)とを排他的論理和により加算することによって前記第1の秘密情報(a)をマスクし、第1のマスクされた秘密情報(A)を算出する手段(12)と、第2の秘密情報(b)と第2の乱数情報(m)とを排他的論理和により加算することによって前記第2の秘密情報(b)をマスクし、第2のマスクされた秘密情報(B)を算出する手段(12)と、前記第1のマスクされた秘密情報(A)と前記第2の乱数情報(m)とを用いて、前記マスクされた秘密情報(A,B)のマスクを除去するための第1の中間値(Temp1)を算出する手段(12)と、前記第2のマスクされた秘密情報(B)と前記第1の乱数情報(m)とを用いて、前記マスクされた秘密情報(A,B)のマスクを除去するための第2の中間値(Temp2)を算出する手段(12)と、前記第1の乱数情報(m)と前記第2の乱数情報(m)とを用いて、前記マスクされた秘密情報(A,B)のマスクを除去するための第3の中間値(Temp3)を算出する手段(12)と、前記第1のマスクされた秘密情報(A)と、前記第2のマスクされた秘密情報(B)と、前記第1の中間値(Temp1)と、前記第2の中間値(Temp2)と、前記第3の中間値(Temp3)とを用いて、前記第1の秘密情報(a)と前記第2の秘密情報(b)との論理和の値を算出する手段(12)と、を備える暗号処理装置(10)である。
請求項5の発明は、請求項4に記載の暗号処理装置(10)において、前記第1のマスクされた秘密情報(A)及び前記第2のマスクされた秘密情報(B)には、最初に否定処理を施して、その後の演算を行うこと、を特徴とする暗号処理装置(10)である。
請求項6の発明は、請求項5に記載の暗号処理装置(10)において、前記第1の秘密情報をaとし、前記第2の秘密情報をbとし、前記第1の乱数情報をmとし、前記第2の乱数情報をmとし、前記第1のマスクされた秘密情報をAとし、前記第2のマスクされた秘密情報をBとし、前記第1の中間値をTemp1とし、前記第2の中間値をTemp2とし、前記第3の中間値をTemp3とし、前記第1の秘密情報(a)と前記第2の秘密情報(b)との論理和の値をresultとした場合に、以下の式(2.2)〜式(2.11)を用いて、式(2.1)の演算処理を行うこと、
Figure 0004962165
を特徴とする暗号処理装置(10)である。
請求項7の発明は、請求項6に記載の暗号処理装置(10)において、第3の乱数情報をmとし、前記式(2.9)を以下の式(2.12)とし、前記式(2.10)を以下の式(2.13)とすること、
Figure 0004962165
を特徴とする暗号処理装置(10)である。
請求項8の発明は、請求項1から請求項7までのいずれか1項に記載の暗号処理装置(10)において、前記第1の秘密情報(a)と前記第2の秘密情報(b)との論理積又は論理和の算出は、ハッシュ関数,ストリーム暗号及びブロック暗号のうち少なくとも1つの処理の一部又は全部に用いられること、を特徴とする暗号処理装置(10)である。
請求項9の発明は、コンピュータを、第1の秘密情報と第1の乱数情報とを排他的論理和により加算することによって前記第1の秘密情報をマスクし、第1のマスクされた秘密情報を算出する手段と、第2の秘密情報と第2の乱数情報とを排他的論理和により加算することによって前記第2の秘密情報をマスクし、第2のマスクされた秘密情報を算出する手段と、前記第1のマスクされた秘密情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第1の中間値を算出する手段と、前記第2のマスクされた秘密情報と前記第1の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第2の中間値を算出する手段と、前記第1の乱数情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第3の中間値を算出する手段と、前記第1のマスクされた秘密情報と、前記第2のマスクされた秘密情報と、前記第1の中間値と、前記第2の中間値と、前記第3の中間値とを用いて、前記第1の秘密情報と前記第2の秘密情報との論理積の値を算出する手段と、として機能させるための暗号処理プログラムである。
請求項10の発明は、コンピュータを、第1の秘密情報と第1の乱数情報とを排他的論理和により加算することによって前記第1の秘密情報をマスクし、第1のマスクされた秘密情報を算出する手段と、第2の秘密情報と第2の乱数情報とを排他的論理和により加算することによって前記第2の秘密情報をマスクし、第2のマスクされた秘密情報を算出する手段と、前記第1のマスクされた秘密情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第1の中間値を算出する手段と、前記第2のマスクされた秘密情報と前記第1の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第2の中間値を算出する手段と、前記第1の乱数情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第3の中間値を算出する手段と、前記第1のマスクされた秘密情報と、前記第2のマスクされた秘密情報と、前記第1の中間値と、前記第2の中間値と、前記第3の中間値とを用いて、前記第1の秘密情報と前記第2の秘密情報との論理和の値を算出する手段と、として機能させるための暗号処理プログラムである。
請求項11の発明は、記憶部及び制御部を備える暗号処理装置が、第1の秘密情報と第1の乱数情報とを排他的論理和により加算することによって前記第1の秘密情報をマスクし、第1のマスクされた秘密情報を算出する工程と、前記暗号処理装置が、第2の秘密情報と第2の乱数情報とを排他的論理和により加算することによって前記第2の秘密情報をマスクし、第2のマスクされた秘密情報を算出する工程と、前記暗号処理装置が、前記第1のマスクされた秘密情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第1の中間値を算出する工程と、前記暗号処理装置が、前記第2のマスクされた秘密情報と前記第1の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第2の中間値を算出する工程と、前記暗号処理装置が、前記第1の乱数情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第3の中間値を算出する工程と、前記暗号処理装置が、前記第1のマスクされた秘密情報と、前記第2のマスクされた秘密情報と、前記第1の中間値と、前記第2の中間値と、前記第3の中間値とを用いて、前記第1の秘密情報と前記第2の秘密情報との論理積の値を算出する工程と、を備える暗号処理方法である。
請求項12の発明は、記憶部及び制御部を備える暗号処理装置が、第1の秘密情報と第1の乱数情報とを排他的論理和により加算することによって前記第1の秘密情報をマスクし、第1のマスクされた秘密情報を算出する工程と、前記暗号処理装置が、第2の秘密情報と第2の乱数情報とを排他的論理和により加算することによって前記第2の秘密情報をマスクし、第2のマスクされた秘密情報を算出する工程と、前記暗号処理装置が、前記第1のマスクされた秘密情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第1の中間値を算出する工程と、前記暗号処理装置が、前記第2のマスクされた秘密情報と前記第1の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第2の中間値を算出する工程と、前記暗号処理装置が、前記第1の乱数情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第3の中間値を算出する工程と、前記暗号処理装置が、前記第1のマスクされた秘密情報と、前記第2のマスクされた秘密情報と、前記第1の中間値と、前記第2の中間値と、前記第3の中間値とを用いて、前記第1の秘密情報と前記第2の秘密情報との論理和の値を算出する工程と、を備える暗号処理方法である。
本発明によれば、以下のような効果がある。
(1)マスクされた秘密情報及び/又は中間値を用いて、秘密情報の論理積及び/又は論理和に関する演算を行うので、演算中に秘密情報を用いる必要がなく、秘密情報が漏洩することがない。また、最終的には、中間値によってマスクを除去することができるので、秘密情報にマスク処理をしたまま非線形演算を行っても正しい演算結果を得ることができる。
(2)中間値やマスクされた秘密情報から予測される秘密情報の出現率が等しくなるような演算式を用いて演算を行うので、秘密情報が予測されることがない。
(3)各秘密情報(a,b)を入れ替えても、マスクされた秘密情報を持つ変数(A,B)に各秘密情報(a,b)の変化を反映させれば、演算結果が変わらないような対称な演算式を用いて演算処理を行うので、秘密情報が予測されることがない。
(4)論理和の値を算出する場合、第1のマスクされた秘密情報及び第2のマスクされた秘密情報には、最初に否定処理を施して、その後の演算を行うので、最終的な演算結果を効率よく得ることができる。
(5)秘密情報の論理積及び/又は論理和に関する演算は、ハッシュ関数,ストリーム暗号及びブロック暗号のうち少なくとも1つの処理の一部又は全部に用いられるので、これらの処理をより安全に行うことができる。
以下、図面等を参照して、本発明の実施形態について、さらに詳しく説明する。
(実施形態)
図1は、本発明による暗号処理装置の実施形態を示す図である。
本実施形態のICカード(暗号処理装置)10は、通信部11と、CPU12と、ROM13と、RAM14と、EEPROM15と、乱数生成部16などとを備え、非線形演算処理におけるサイドチャネル攻撃に対応可能なICカードである。
通信部11は、外部装置としてのリーダライタ20とコマンドやデータを送受信するための入出力インターフェースであり、例えば、接触式の接触端子や、非接触式のアンテナなどを備える。
CPU12は、通信部11を介してリーダライタ20と交信し、ROM13に記憶されているプログラム(制御プログラム,暗号処理プログラムなど)に基づいてICカード10を統括制御する部分である。また、CPU12は、後述する秘密情報、乱数情報、マスクされた秘密情報、中間値などを用いて、秘密情報の論理積や論理和を、秘密情報を漏洩せずに、安全かつ間接的に求める演算を行う。
ROM13は、不揮発性のメモリであり、CPU12によって実行されるプログラムが記憶されている。
RAM14は、揮発性のメモリであり、CPU12が制御を行う上で作業領域として使用される。
EEPROM15は、書き換え可能な不揮発性のメモリであり、ICカード10に記録されるデータを格納する。
乱数生成部16は、CPU12の指示により、所定の乱数を発生する部分である。
図2は、RAM14に展開されるデータの様子を示す図である。
暗号処理時には、CPU12の指示により、演算用のデータとして、RAM14に秘密情報a,b、乱数情報m1,m2,マスクされた秘密情報A,Bなどが展開される。なお、図2では、秘密情報はa〜z、マスクされた秘密情報はA〜Zの例で示しているが、以下の説明では、2つの秘密情報a,bと、2つのマスクされた秘密情報A,Bの例で説明する。
図3は、ICカード10の動作を説明する図である。図3の括弧内の番号は、以下の各式の番号と対応している。
ここでは、秘密情報aと秘密情報bとのAND演算(論理積)について説明する。なお、以下の演算処理は、ICカード10のCPU12が処理を行わせている。
サイドチャネル攻撃の対策として、秘密情報に乱数をXOR演算(排他的論理和)し、その状態のまま演算を行う必要があるが、非線形処理であるAND演算において、秘密情報に乱数をXOR演算した状態のまま演算を行うと、正しい演算結果を得ることができない。
そこで、マスク処理を保持した状態で、秘密情報aと秘密情報bとのAND演算を行うための方法を提案する。ここでは、以下の式(1.1)の演算結果を求める状況を想定する。なお、以下の説明中、「・」はAND演算(論理積)を示し、「+」はOR演算(論理和)を示し、丸の中に加算の記号は、XOR演算(排他的論理和)を示している。
Figure 0004962165
また、ここでは、
秘密情報a;第1の秘密情報
秘密情報b;第2の秘密情報
乱数情報m1;第1の乱数情報
乱数情報m2;第2の乱数情報
マスクされた秘密情報A;第1のマスクされた秘密情報
マスクされた秘密情報B;第2のマスクされた秘密情報
中間値Temp1;第1の中間値
中間値Temp2;第2の中間値
中間値Temp3;第3の中間値
result;第1の秘密情報と第2の秘密情報との論理積の値
としている。
秘密情報a,bは、秘密とすべき情報であり、乱数情報m1,m2は、乱数生成部16で生成される乱数であり、マスクされた秘密情報A,Bは、秘密情報a,bと乱数情報m1
,m2とを排他的論理和により加算することによって得られた値であり、中間値Temp
1〜Temp3は、マスクされた秘密情報A,Bのマスクを除去するための値である。
式(1.1)において、秘密情報a,bは、秘密にされるべき要素であるが、この演算を直接行うと、DPAなどにより、秘密情報a,bの値を推測されてしまう可能性がある。
演算結果を読み取られても問題がないようにするため、式(1.2),式(1.3)に示すように、あらかじめそれぞれの秘密情報a,bに乱数情報m1,m2をXOR演算してマスクしておく。これにより、すべての演算の入力値に、異なる乱数情報がXOR演算されることになる。
Figure 0004962165
Figure 0004962165
ここで、乱数情報m1,m2は、乱数生成部16で生成された任意の乱数である。この乱数情報m1,m2と秘密情報a,bとをXOR演算したマスクされた秘密情報A,Bの値で計算を行うことにより、サイドチャネル攻撃で値を読み取られたとしても、読み取られた値から秘密情報a,bを推測することが不可能になる。
マスクされた秘密情報A,Bを使用してAND演算を行うと、式(1.4)のようになる。
Figure 0004962165
この演算より、秘密情報a,b同士の論理積であるa・bを求めるためには、(a・m2),(b・m1),(m1・m2)をそれぞれ求め、式(1.4)に対してそれぞれXOR演算する必要がある。ただし、これらの値を求める際に、秘密情報a,bを直接使用してはならない。そのため、マスクされた秘密情報A,B、乱数情報m1,m2のみを利用して、以下の3つの式(1.5)(1.6)(1.7)を用いて演算を行う。
Figure 0004962165
Figure 0004962165
Figure 0004962165
式(1.5),式(1.6),式(1.7)より、それぞれの結果を利用して演算を行うと、以下の式(1.8)となり、秘密情報a,bを直接演算に利用せずに、目的とする式(1.1)の演算結果を得ることが可能となる。
Figure 0004962165
また、式(1.4),式(1.5),式(1.6)は、マスクされた秘密情報A,Bを含んだ中間値Temp1〜Temp3とマスクされた秘密情報A,Bとから予測される秘密情報a,bの出現率が等しくなるような演算式である(出現率の詳細は後述)。
さらに、式(1.4),式(1.5),式(1.6),式(1.7)は、2つの秘密情報a,bのうちaとbとを入れ替えても演算結果が変わらないような対称な演算式である。
次に、上述したアルゴリズムの安全性について検討する。
上述したアルゴリズムによって、サイドチャネル攻撃の対策により秘密情報a,bを乱数情報m1,m2でマスク処理したまま演算を行うことが可能となり、DPA攻撃などによる秘密情報a,bの推測を防ぐことが可能となる。
しかし、秘密情報a,bを演算に直接利用していなくとも,途中演算において、秘密情報a,bをマスク処理したデータ同士の演算結果により、秘密情報a,bの推測又は絞り込みが行える可能性もある。
2項間(複数の式)で演算を行うこととした場合、上述したアルゴリズムで実際に計算を行う必要があるのは以下の演算である。
Figure 0004962165
Figure 0004962165
Figure 0004962165
Figure 0004962165
上記以外の演算は、上記演算から発生したデータを用いて演算を行うため、これらの演算において秘密情報a,bが推測できなければ、それ以降の演算においても秘密情報a,bを推測することはできない。
そのため、上記演算から秘密情報a,bが推測できなければ途中演算からの推測はできないと考えられる。
式(1.9)〜式(1.11)のそれぞれの演算について真理値表を作成すると、以下の表1〜表3のようになる。
Figure 0004962165
Figure 0004962165
Figure 0004962165
表1は、式(1.9)の真理値表を示す表であり、表2は、式(1.10)の真理値表を示す表であり、表3は、式(1.11)の真理値表を示す表である。
表1より、マスクされた秘密情報同士の論理積であるA・Bでは、A・B=0の状況下において、秘密情報a,bがそれぞれ0,1になる確率(0,1の出現率)は等しくなることがわかる。
具体的には、A・B=0の場合は、a=0の場合が6通り、a=1の場合が6通り、b=0の場合が6通り、b=1の場合が6通りである。
同様に、A・B=1の状況下においても、秘密情報a,bがそれぞれ0,1になる確率は等しい。
具体的には、A・B=1の場合は、a=0の場合が2通り、a=1の場合が2通り、b=0の場合が2通り、b=1の場合が2通りである。
このことから、例え、A・Bの値が外部に漏洩したとしても、そのA・Bの値より秘密情報a,bを推測することは不可能であることがわかる。
また、表2より、マスクされた秘密情報と乱数情報との論理積であるA・m2では、A
・m2=0,1の状況下において、秘密情報a=0,1となる確率はそれぞれ等しい。そ
のため、A・m2より秘密情報aを推測することはできない。
同様に、表3より、マスクされた秘密情報と乱数情報との論理積であるB・m1では、
B・m1=0,1の状況下において、秘密情報b=0,1となる確率はそれぞれ等しいた
め、B・m1から秘密情報bを推測することは不可能である。
さらに、上述した式(1.12)では、秘密情報a,bの論理積に関する演算を行うので、秘密情報a,bは一切利用しておらず、この演算から秘密情報a,bを推測される可能性はない。
次に、OR演算について説明する。
OR演算も、基本的には、AND演算と同様であり、サイドチャネル攻撃の対策として、マスク処理を保持した状態で演算を行う必要がある。ここでは、以下の式(2.1)の演算結果を求める状況を想定する。
Figure 0004962165
式(2.1)において、秘密情報a,bは、秘密にされるべき要素であるが、この演算を直接行うと、DPAなどにより、秘密情報a,bの値を推測されてしまう可能性がある。
演算結果を読み取られても問題がないようにするため、式(2.2),式(2.3)に示すように、あらかじめそれぞれの秘密情報a,bに乱数情報m1,m2をXOR演算してマスクしておく。
Figure 0004962165
Figure 0004962165
後ほどド・モルガンの定理を用いるために、マスクされた秘密情報A,BにはあらかじめNOT演算(否定処理)を施しておく。演算としては、秘密情報a,bにNOT処理を行うことと同じ意味であるが、秘密情報a,bを用いて直接演算すると演算結果を読み取
られる危険があるため、式(2.4),式(2.5)に示すように、マスク処理後のマスクされた秘密情報A,BについてNOT処理を施す。
Figure 0004962165
Figure 0004962165
ここで、乱数情報m1,m2は、乱数生成部16で生成された任意の乱数である。マスクされた秘密情報A,Bを使用してAND演算を行うと、式(2.6)のようになる。
Figure 0004962165
この式(2.6)の演算より、秘密情報同士の論理積であるa+bを求めるために、あらかじめ以下の式(2.7),式(2.8),式(2.9)演算結果を算出しておく。
Figure 0004962165
Figure 0004962165
Figure 0004962165
そして、AND演算時と同様に、式(2.7),式(2.8),式(2.9)より,それぞれの結果を利用して演算を行うと、式(2.10)のようになる。
Figure 0004962165
式(2.10)の結果より、ド・モルガンの定理を用いて以下の式(2.11)ように変換を行う。
Figure 0004962165
式(2.11)の演算より、秘密情報a,bを直接演算に利用せず、目的とする式(2.1)の演算結果を得ることができる。
なお、上述したアルゴリズムの安全性に関して、途中演算からの秘密情報a,bの推測については、上述した表1〜表3と同様であり、安全性は確保されている。
ここで、上述したアルゴリズムをより安全に実行する方法について説明する。
上述した各式の通りに、DPA対策を行えば、基本的には問題はないが、所定の場合には、表1〜表3の真理値表が成り立たず、秘密情報a,bを推測することができる可能性がある。
具体的には、式(1.12)〜式(1.14)個別では、秘密情報a,bが漏洩することはないが、それらをXOR演算で加算すると、情報漏えいにつながる可能性がある。
そこで、この解決策として、第3の乱数情報m3を導入し、式(1.7)を以下の式(
1.13)とし、式(1.8)を以下の式(1.14)として演算を行う。
なお、上述した真理値表(表1〜表3)は、必ず成り立つものである。問題は、第3の乱数情報m3をXOR演算で加算しておかないと、中間値Temp1と中間値Temp2
とをXOR処理するなど中間値同士をXOR処理した更なる中間値が秘密情報の漏洩につながる偏りを見せてしまう、ということである。ただ、中間値単独で考えれば情報漏えいの問題はないので、「問題ない値(Temp1,Temp2)を2つXOR演算してなぜ問題がある値になってしまうのか」という点で疑問が生じるが、これは実際コンピュータで計算して確認した結果なので問題ない。これを細かく説明すると、漏洩につながる偏りを見せてしまう原因は、第3の乱数情報m3を使わない場合、中間値Temp1,Tem
p2,Temp3のうち2つをXOR処理したときの値は、第1の乱数情報m1と第2の
乱数情報m2の要素が相殺されてしまうためであり、結果として、値に偏りが生じること
になる。このような問題点に対して、第3の乱数情報m3を導入することで、値に偏りが
生じなくなる。
Figure 0004962165
このようにすれば、秘密情報a,bを推測することが完全にできなくなり、安全性がよ
り高まる。
これと同様に、第3の乱数情報をm3とし、式(2.9)を以下の式(2.12)とし
、式(2.10)を以下の式(2.13)としても、安全性を高めることができる。
Figure 0004962165
このように、本実施形態によれば、以下のような効果がある。
(1)マスクされた秘密情報A,Bと、中間値Temp1〜Temp3を用いて、秘密情報a,bのAND演算やOR演算に関する演算を行うので、演算中に秘密情報a,bを用いる必要がなく、秘密情報a,bが漏洩することがない。また、最終的には、中間値Temp1〜Temp3によってマスクを除去することができるので、秘密情報a,bにマスク処理をしたまま非線形演算を行っても正しい演算結果を得ることができる。さらに、暗号演算内のAND演算とOR演算とを、サイドチャネル攻撃などの脅威から守ることができる。
(2)マスク演算の最終出力全てを参照テーブルとしてプログラムに組み込む方法に比べ、本願発明のようにブール代数の基本演算(AND,OR,NOT,XOR)を組み合わせる手法の方が、処理速度を向上させることができる。
(3)テーブルを使用していないので、メモリ使用量も減らせ、演算のリソース(ハードウェアやソフトウェアの資源)の負担が軽減でき、また、データを保護するマスク用の乱数情報m1,m2を定期的に変えられるため、セキュリティが向上する。
(4)中間値Temp1〜Temp3やマスクされた秘密情報A,Bから予測される秘密情報a,bの出現率が等しくなるような演算式を用いて演算を行うので、秘密情報a,bが予測されることがない。
(5)各秘密情報a,bを入れ替えても、マスクされた秘密情報を持つ変数A,Bに各秘密情報a,bの変化を反映させれば、演算結果が変わらないような対称な演算式を用いて演算処理を行うので、秘密情報a,bが予測されることがない。
(6)論理和の値を算出する場合、秘密情報a,bには、最初にNOT演算を施して、その後の演算を行うので、最終的な演算結果を効率よく得ることができる。
(7)秘密情報a,bの論理積や論理和に関する演算は、ハッシュ関数やストリーム暗号、ブロック暗号の処理の一部として用いられるので、これらの処理をより安全に行うことができる。
(8)提案した非線形演算におけるサイドチャネル攻撃の対策アルゴリズムは、実際にAND演算又はOR演算を利用する暗号や、認証用のアルゴリズムにおいて秘密鍵を守る目的で利用することが考えられ、特に、HMAC−SHA1のアルゴリズムに好適に適用することができる。
HMAC−SHA1とは、認証やデジタル署名などに使用されるハッシュ関数(厳密に言えば、ハッシュ関数より上位の関数)である。HMAC−SHA1は、秘密情報と公開情報を混合して認証のためのデータを生成する手法であり、演算に使用する情報を秘密にすることができる。サイドチャネル攻撃の対策を行う際、乱数をXOR演算してマスクをかけた状態で演算することが考えられるが、HMAC−SHA1のアルゴリズムでは、AND演算を利用するため、マスクをかけた状態で演算を行うと、正しい演算結果を得ることができない。
この問題を防ぐために、AND演算部分に上述の手法を適用することにより、サイドチャネル攻撃を防ぐことができる。なお、HMAC−SHA1の他にも、HMACの下位層にあたるHMAC−RIPEMD160などといったハッシュ関数にも適用することができる。
(変形形態)
以上説明した実施形態に限定されることなく、種々の変形や変更が可能であって、それらも本発明の範囲内である。
(1)実施形態では、暗号処理装置は、ICカードの例で説明したが、セキュアートークン(代用硬貨)、携帯可能演算装置、ハードウェア、セキュリティ・モジュール、携帯電話機、UIMカード、SIMカード、ICカードの暗号ソフト、PC用のセキュリティチップなどであってもよい。
(2)ICカード用の暗号プログラムとしては、Keyed・Hash暗号(HMAC−SHA1,HMAC−RIPEMD160など)に使用することもできる。
(3)上述したような手順によって制御を行う暗号処理プログラムを配信するようにしてもよい。なお、本発明でいうコンピュータとは、記憶手段、制御手段などを備えた情報処理装置をいい、パーソナルコンピュータも、携帯電話機も、本発明のコンピュータの概念に含まれる。
(4)上述したような工程を備える暗号化方法によって暗号処理を行ってもよい。
本発明による暗号処理装置の実施形態を示す図である。 RAM14に展開されるデータの様子を示す図である。 ICカード10の動作を説明する図である。
符号の説明
10 ICカード(暗号処理装置)
11 通信部
12 CPU
13 ROM
14 RAM
15 EEPROM
16 乱数生成部
20 リーダライタ
a,b 秘密情報
A,B マスクされた秘密情報
1,m2 乱数情報
Temp1〜Temp3 中間値

Claims (12)

  1. 第1の秘密情報と第1の乱数情報とを排他的論理和により加算することによって前記第1の秘密情報をマスクし、第1のマスクされた秘密情報を算出する手段と、
    第2の秘密情報と第2の乱数情報とを排他的論理和により加算することによって前記第2の秘密情報をマスクし、第2のマスクされた秘密情報を算出する手段と、
    前記第1のマスクされた秘密情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第1の中間値を算出する手段と、
    前記第2のマスクされた秘密情報と前記第1の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第2の中間値を算出する手段と、
    前記第1の乱数情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第3の中間値を算出する手段と、
    前記第1のマスクされた秘密情報と、前記第2のマスクされた秘密情報と、前記第1の中間値と、前記第2の中間値と、前記第3の中間値とを用いて、前記第1の秘密情報と前記第2の秘密情報との論理積の値を算出する手段と、
    を備える暗号処理装置。
  2. 請求項1に記載の暗号処理装置において、
    前記第1の秘密情報をaとし、
    前記第2の秘密情報をbとし、
    前記第1の乱数情報をmとし、
    前記第2の乱数情報をmとし、
    前記第1のマスクされた秘密情報をAとし、
    前記第2のマスクされた秘密情報をBとし、
    前記第1の中間値をTemp1とし、
    前記第2の中間値をTemp2とし、
    前記第3の中間値をTemp3とし、
    前記第1の秘密情報と前記第2の秘密情報との論理積の値をresultとした場合に、
    以下の式(1.2)〜式(1.8)を用いて、式(1.1)の演算処理を行うこと、
    Figure 0004962165
    を特徴とする暗号処理装置。
  3. 請求項2に記載の暗号処理装置において、
    第3の乱数情報をmとし、
    前記式(1.7)を以下の式(1.13)とし、前記式(1.8)を以下の式(1.14)とすること、
    Figure 0004962165
    を特徴とする暗号処理装置。
  4. 第1の秘密情報と第1の乱数情報とを排他的論理和により加算することによって前記第1の秘密情報をマスクし、第1のマスクされた秘密情報を算出する手段と、
    第2の秘密情報と第2の乱数情報とを排他的論理和により加算することによって前記第2の秘密情報をマスクし、第2のマスクされた秘密情報を算出する手段と、
    前記第1のマスクされた秘密情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第1の中間値を算出する手段と、
    前記第2のマスクされた秘密情報と前記第1の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第2の中間値を算出する手段と、
    前記第1の乱数情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第3の中間値を算出する手段と、
    前記第1のマスクされた秘密情報と、前記第2のマスクされた秘密情報と、前記第1の中間値と、前記第2の中間値と、前記第3の中間値とを用いて、前記第1の秘密情報と前記第2の秘密情報との論理和の値を算出する手段と、
    を備える暗号処理装置。
  5. 請求項4に記載の暗号処理装置において、
    前記第1のマスクされた秘密情報及び前記第2のマスクされた秘密情報には、最初に否定処理を施して、その後の演算を行うこと、
    を特徴とする暗号処理装置。
  6. 請求項5に記載の暗号処理装置において、
    前記第1の秘密情報をaとし、
    前記第2の秘密情報をbとし、
    前記第1の乱数情報をmとし、
    前記第2の乱数情報をmとし、
    前記第1のマスクされた秘密情報をAとし、
    前記第2のマスクされた秘密情報をBとし、
    前記第1の中間値をTemp1とし、
    前記第2の中間値をTemp2とし、
    前記第3の中間値をTemp3とし、
    前記第1の秘密情報と前記第2の秘密情報との論理和の値をresultとした場合に、
    以下の式(2.2)〜式(2.11)を用いて、式(2.1)の演算処理を行うこと、
    Figure 0004962165
    を特徴とする暗号処理装置。
  7. 請求項6に記載の暗号処理装置において、
    第3の乱数情報をmとし、
    前記式(2.9)を以下の式(2.12)とし、前記式(2.10)を以下の式(2.13)とすること、
    Figure 0004962165
    を特徴とする暗号処理装置。
  8. 請求項1から請求項7までのいずれか1項に記載の暗号処理装置において、
    前記第1の秘密情報と前記第2の秘密情報との論理積又は論理和の算出は、ハッシュ関数,ストリーム暗号及びブロック暗号のうち少なくとも1つの処理の一部又は全部に用いられること、
    を特徴とする暗号処理装置。
  9. コンピュータ
    第1の秘密情報と第1の乱数情報とを排他的論理和により加算することによって前記第1の秘密情報をマスク第1のマスクされた秘密情報を算出手段と、
    第2の秘密情報と第2の乱数情報とを排他的論理和により加算することによって前記第2の秘密情報をマスクし、第2のマスクされた秘密情報を算出する手段と、
    前記第1のマスクされた秘密情報前記第2の乱数情報を用いて、前記マスクされた秘密情報のマスクを除去するための第1の中間値を算出手段と、
    前記第2のマスクされた秘密情報と前記第1の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第2の中間値を算出する手段と、
    前記第1の乱数情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第3の中間値を算出する手段と、
    前記第1のマスクされた秘密情報と、前記第2のマスクされた秘密情報と、前記第1の中間値と、前記第2の中間値と、前記第3の中間値とを用いて、前記第1の秘密情報と前記第2の秘密情報との論理積の値を算出する手段と、
    として機能させるための暗号処理プログラム。
  10. コンピュータを、
    第1の秘密情報と第1の乱数情報とを排他的論理和により加算することによって前記第1の秘密情報をマスクし、第1のマスクされた秘密情報を算出する手段と、
    第2の秘密情報と第2の乱数情報とを排他的論理和により加算することによって前記第2の秘密情報をマスクし、第2のマスクされた秘密情報を算出する手段と、
    前記第1のマスクされた秘密情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第1の中間値を算出する手段と、
    前記第2のマスクされた秘密情報と前記第1の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第2の中間値を算出する手段と、
    前記第1の乱数情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第3の中間値を算出する手段と、
    前記第1のマスクされた秘密情報と、前記第2のマスクされた秘密情報と、前記第1の中間値と、前記第2の中間値と、前記第3の中間値とを用いて、前記第1の秘密情報と前記第2の秘密情報との論理和の値を算出する手段と、
    として機能させるための暗号処理プログラム。
  11. 記憶部及び制御部を備える暗号処理装置が、第1の秘密情報と第1の乱数情報とを排他的論理和により加算することによって前記第1の秘密情報をマスク第1のマスクされた秘密情報を算出る工程と、
    前記暗号処理装置が、第2の秘密情報と第2の乱数情報とを排他的論理和により加算することによって前記第2の秘密情報をマスクし、第2のマスクされた秘密情報を算出する工程と、
    前記暗号処理装置が、前記第1のマスクされた秘密情報前記第2の乱数情報を用いて、前記マスクされた秘密情報のマスクを除去するための第1の中間値を算出る工程と、
    前記暗号処理装置が、前記第2のマスクされた秘密情報と前記第1の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第2の中間値を算出する工程と、
    前記暗号処理装置が、前記第1の乱数情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第3の中間値を算出する工程と、
    前記暗号処理装置が、前記第1のマスクされた秘密情報と、前記第2のマスクされた秘密情報と、前記第1の中間値と、前記第2の中間値と、前記第3の中間値とを用いて、前記第1の秘密情報と前記第2の秘密情報との論理積の値を算出する工程と、
    を備える暗号処理方法。
  12. 記憶部及び制御部を備える暗号処理装置が、第1の秘密情報と第1の乱数情報とを排他的論理和により加算することによって前記第1の秘密情報をマスクし、第1のマスクされた秘密情報を算出する工程と、
    前記暗号処理装置が、第2の秘密情報と第2の乱数情報とを排他的論理和により加算することによって前記第2の秘密情報をマスクし、第2のマスクされた秘密情報を算出する工程と、
    前記暗号処理装置が、前記第1のマスクされた秘密情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第1の中間値を算出する工程と、
    前記暗号処理装置が、前記第2のマスクされた秘密情報と前記第1の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第2の中間値を算出する工程と、
    前記暗号処理装置が、前記第1の乱数情報と前記第2の乱数情報とを用いて、前記マスクされた秘密情報のマスクを除去するための第3の中間値を算出する工程と、
    前記暗号処理装置が、前記第1のマスクされた秘密情報と、前記第2のマスクされた秘密情報と、前記第1の中間値と、前記第2の中間値と、前記第3の中間値とを用いて、前記第1の秘密情報と前記第2の秘密情報との論理和の値を算出する工程と、
    を備える暗号処理方法。
JP2007165154A 2007-06-22 2007-06-22 暗号処理装置,暗号処理プログラム及び暗号処理方法 Expired - Fee Related JP4962165B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007165154A JP4962165B2 (ja) 2007-06-22 2007-06-22 暗号処理装置,暗号処理プログラム及び暗号処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007165154A JP4962165B2 (ja) 2007-06-22 2007-06-22 暗号処理装置,暗号処理プログラム及び暗号処理方法

Publications (2)

Publication Number Publication Date
JP2009005164A JP2009005164A (ja) 2009-01-08
JP4962165B2 true JP4962165B2 (ja) 2012-06-27

Family

ID=40321053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007165154A Expired - Fee Related JP4962165B2 (ja) 2007-06-22 2007-06-22 暗号処理装置,暗号処理プログラム及び暗号処理方法

Country Status (1)

Country Link
JP (1) JP4962165B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11115210B2 (en) 2017-08-07 2021-09-07 Maxim Integrated Products, Inc. Systems and methods for masking RSA operations

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2767189C (en) * 2009-09-29 2015-02-10 Silverbrook Research Pty Ltd Communication system, method and device with limited encryption key retrieval
JP5495825B2 (ja) * 2010-02-01 2014-05-21 Kddi株式会社 ストリーム暗号の秘匿計算暗号化装置、ストリーム暗号の秘匿計算復号化装置、暗号化方法、復号化方法およびプログラム
US8971526B2 (en) * 2011-07-26 2015-03-03 Crocus-Technology Sa Method of counter-measuring against side-channel attacks
JP5951260B2 (ja) * 2012-01-10 2016-07-13 Kddi株式会社 論理演算装置、論理演算方法、およびプログラム
JP6035459B2 (ja) 2012-04-02 2016-11-30 株式会社クリプト・ベーシック 暗号化装置、復号化装置、及びプログラム
JP2015102639A (ja) * 2013-11-22 2015-06-04 Kddi株式会社 演算装置、演算方法、コンピュータプログラムおよびストリーム暗号化装置
JP6212377B2 (ja) * 2013-12-17 2017-10-11 Kddi株式会社 演算装置、演算方法およびコンピュータプログラム
JP6360440B2 (ja) * 2015-01-06 2018-07-18 Kddi株式会社 復号装置、方法及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4003723B2 (ja) * 2003-09-12 2007-11-07 株式会社日立製作所 情報処理装置、耐タンパ処理装置
KR101061906B1 (ko) * 2004-02-19 2011-09-02 삼성전자주식회사 전력분석공격에 안전한 기본 연산 장치 및 방법
JP4271077B2 (ja) * 2004-04-30 2009-06-03 株式会社東芝 マスク論理回路及び暗号装置
JP4859370B2 (ja) * 2005-01-19 2012-01-25 三菱電機株式会社 電子素子

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11115210B2 (en) 2017-08-07 2021-09-07 Maxim Integrated Products, Inc. Systems and methods for masking RSA operations

Also Published As

Publication number Publication date
JP2009005164A (ja) 2009-01-08

Similar Documents

Publication Publication Date Title
JP4962165B2 (ja) 暗号処理装置,暗号処理プログラム及び暗号処理方法
US20090097637A1 (en) Randomized rsa-based cryptographic exponentiation resistant to side channel and fault attacks
US11256478B2 (en) Method for securing a cryptographic process with SBOX against high-order side-channel attacks
JPH10154976A (ja) タンパーフリー装置
EP3596876B1 (en) Elliptic curve point multiplication device and method for signing a message in a white-box context
US6914986B2 (en) Countermeasure method in an electronic component using a public key cryptography algorithm on an elliptic curve
EP3503459B1 (en) Device and method for protecting execution of a cryptographic operation
US9847879B2 (en) Protection against passive sniffing
JP2011072040A (ja) 誤りに基づく攻撃から電子回路を保護する方法
JP2021144239A (ja) 暗号アルゴリズム向けのワンタイムの中国剰余定理のべき乗のためのシステムおよび方法
US7286666B1 (en) Countermeasure method in an electric component implementing an elliptical curve type public key cryptography algorithm
US12052348B2 (en) Computation device using shared shares
TWI512610B (zh) 利用模數的特殊形式之模組約化
WO2012090289A1 (ja) 暗号処理装置および方法
US9780946B2 (en) Elliptic curve encryption method comprising an error detection
WO2017114739A1 (en) System and method for hiding a cryptographic secret using expansion
US10305678B2 (en) Imbalanced montgomery ladder
EP3166013B1 (en) Modular exponentiation using randomized addition chains
US11968290B2 (en) Circuit compiling device and circuit evaluation device
US20170286063A1 (en) Non-modular multiplier, method for non-modular multiplication and computational device
KR102067065B1 (ko) 전력 분석 및 전자파 분석에 안전한 메시지 랜덤화 기반의 행렬-벡터 곱 연산 장치, 이를 이용한 암호화 장치 및 방법
US10055194B2 (en) Operation based on two operands
EP4297330A1 (en) Method and system for protecting cryptographic operations against side-channel attacks
EP4372548A1 (en) Protecting cryptographic operations againt horizontal side-channel analysis attacks
US11329796B2 (en) Protection of an iterative calculation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120213

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4962165

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees