JP4804981B2 - データ変換装置及びデータ変換プログラム - Google Patents

データ変換装置及びデータ変換プログラム Download PDF

Info

Publication number
JP4804981B2
JP4804981B2 JP2006087736A JP2006087736A JP4804981B2 JP 4804981 B2 JP4804981 B2 JP 4804981B2 JP 2006087736 A JP2006087736 A JP 2006087736A JP 2006087736 A JP2006087736 A JP 2006087736A JP 4804981 B2 JP4804981 B2 JP 4804981B2
Authority
JP
Japan
Prior art keywords
data
cycle
spread
secret information
secret
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
JP2006087736A
Other languages
English (en)
Other versions
JP2007266879A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2006087736A priority Critical patent/JP4804981B2/ja
Publication of JP2007266879A publication Critical patent/JP2007266879A/ja
Application granted granted Critical
Publication of JP4804981B2 publication Critical patent/JP4804981B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、暗号アルゴリズムを処理する装置に係り、装置内で処理される秘密鍵情報を装置の外部から監視可能な情報を利用して特定する攻撃(以下、この攻撃をサイドチャネル攻撃と呼ぶ)に対しての対抗措置に関するものである。
一般に、暗号アルゴリズムを処理する装置は、秘密鍵情報を物理的に保護された装置内に持つ。このような装置において、暗号アルゴリズムが解読されない限り、装置の入出力のみから秘密鍵情報を入手する事は困難である。
一方、非特許文献1や非特許文献2で、装置の入出力以外の外部から観測可能な情報(装置の処理時間や消費電力、電磁波等)を利用して秘密鍵情報を入手可能であることが示されている。このような攻撃は一般にサイドチャネル攻撃と呼ばれる。
従来のサイドチャネル攻撃に対する対抗装置では、装置内になんらかの追加的な秘密情報を付加することで、装置内の処理状態と秘密情報の相関を隠蔽する方式を採っている。例えば、特許文献1では、広範に用いられている共通鍵ブロック暗号アルゴリズムDES(Data Encryption Standard)に対して、そのアルゴリズムで処理する入力データや秘密鍵情報及びアルゴリズムの処理方法を追加的な予測不可能情報を利用してランダム化し秘密鍵情報との相関を隠蔽する方式が示されている。
特表2002−519722号公報 P. Kocher, "Timing Attacks on Implementations of Diffiee−Hellman, RSA, DSS, and Other Systems," Advances in Cryptology: Proceedings of CRYPTO ’96, Springer−Verlag, August 1996, pp. 104−113. P. Kocher, J. Jaffe, and B. Jun, "Differential Power Analysis," Advances in Cryptology− Proceedings of Crypto ’99, Lecture Notes in Computer Science, Vol. 1666,Springer−Verlag, 1999, pp. 388−397.
従来技術(例えば特許文献1)では、追加的な秘密情報は、秘密鍵情報とは独立に生成する必要があるため、装置の構成として乱数発生器を必要した。本発明は、サイドチャネル攻撃に対する対抗装置及びその制御方法係わり、装置内に追加的な秘密情報を必要とせず、暗号処理中間値及び秘密鍵情報を利用して装置内の秘密鍵情報をサイドチャネル攻撃から保護することを目的とする。これにより、暗号処理装置に乱数発生器を実装せずともサイドチャネル攻撃に対して安全な対抗措置を施した装置の提供を目的とする。
この発明のデータ変換装置は、
データ変換の対象となる入力データを入力して第0サイクルから第n−1サイクル(nは1以上の整数)までのnサイクルを順次実行することにより入力データを変換して出力するデータ変換装置において、
入力データの変換に用いる所定のビット数の秘密鍵情報を格納するメモリと、
前記メモリが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも1以上のビットに依存する情報である拡散秘密情報を生成する拡散秘密情報生成部と、
入力データを入力して第0サイクルから第n−1サイクルまでのnサイクルにより入力データを変換するとともにnサイクルのそれぞれにおいて、サイクルごとの変換対象のデータであるサイクル変換対象データを、前記メモリが格納する秘密鍵情報と前記拡散秘密情報生成部が生成した拡散秘密情報とに基づいて変換するデータ変換部と
を備えたことを特徴とする。
この発明により、乱数発生器の実装を必要とすることなくサイドチャネル攻撃に対抗し得る安全な装置を提供することができる。
実施の形態1.
以下に図1〜図15を参照して、本実施の形態における暗号処理装置100(データ変換装置)を説明する。
図1は、暗号処理装置100の構成図である。図1に示すように、暗号処理装置100は、拡散秘密情報生成部101と暗号処理部102(データ変換部)と秘密鍵情報格納部105(メモリ)を備える。暗号処理装置100は、標準入力103(IV、平文/暗号文)を外部入力とし、標準出力104(暗号文/暗号文)を外部出力とする装置である。
秘密鍵情報格納部105は、入力データの変換に用いる所定のビット数の秘密鍵情報を格納する。
暗号処理部102は、標準入力103の他に、暗号処理装置100内部の秘密鍵情報(以下Kと表記する場合がある)及び拡散秘密情報生成部101の出力である拡散秘密情報106(以下、Gと表記する場合がある)とを入力とし、標準出力104を装置外部に出力する。加えて、暗号処理部102は、暗号処理中間値107(以下、単に中間値、あるいはHと表記する場合がある)を拡散秘密情報生成部101へ出力する。
拡散秘密情報生成部101は、暗号処理中間値107を用いて拡散秘密情報106を更新し、次のサイクルで使用する拡散秘密情報106を暗号処理部102へ出力する。
図2は、暗号処理装置100のハードウェア構成を示す図である。図2の暗号処理装置100は、演算制御部110と、秘密鍵情報を格納するROM(Read Only Memory)120と、中間値等を一時的に記憶するRAM(Random Access Memory)130と、外部とのデータのやり取りを行なうインターフェース140とを備える。
演算制御部110は、CPU(Central Processing Unit)111と、コプロセッサ112とから構成される。演算制御部110により、拡散秘密情報生成部101と暗号処理部102とが実現される。
次に、図3〜図13を用いて動作を説明する。図3は、暗号処理装置100の動作を示すフローチャートである。図4〜図13は、暗号処理装置100によるデータ変換を説明する図である。
まず、図3を用いて暗号処理装置100の全体の動作概要を説明し、その後、図4〜図13を参照して具体的な場合の動作を説明する。
図3を用いて暗号処理装置100の動作を説明するが、先ず暗号処理装置100による処理の前提条件を説明する。
(暗号処理装置100による処理の前提条件)
暗号処理装置100による処理では、次の(a)〜(d)を前提条件とする。
(a)暗号処理装置100処理は、
mブロックの平文{P,P,・・・,Pm−1
あるいは
mブロックの暗号文{C,C,・・・,Cm−1
に対して処理を行うものとする。暗号処理装置100は、1ブロックあたりnサイクルの処理で暗号化(あるいは復号化)の処理を終了するものとする。
(b)また、暗号化関数Fは平文P、秘密鍵情報Kを入力とし、暗号文Cを出力すると定義し、これを
C=F(K,P)
と表記(あるいはF(P)と表記する場合がある)する。
また、これに対応して復号化関数はF−1とし、
P=F−1(K,C)
と表記する。
(c)さらに、平文(あるいは暗号文)1ブロックについて第0サイクル〜第n−1サイクルの各サイクルで処理する暗号化関数Fの部分関数をそれぞれ
(0),f(1),・・・,f(n−1)
とする。
同様に、復号化関数F−1に対しては、各サイクルで処理する部分関数を
−1(0),f−1(1),・・・,f−1(n−1)
とする。
(d)また、以下では排他的論理和の演算記号を<EXOR>と表記する。例えば、同じビット数であるデータAとデータBとの排他的論理和を「A<EXOR>B」と表記する。なお、図4等では、この<EXOR>の代わりに、排他的論理和の演算記号を、丸印の中に「+」をもつ記号で表記している。
図4は、暗号処理装置100が行なう処理の関係式を示す図である。以下に記号の意味を説明する。
(記号の説明)
i:0〜m−1のいずれかの平文(あるいは暗号文)のブロック番号を示す。
J:0〜n−1のいずれかのサイクルを示す。
(i,J):i,Jにより決まる拡散秘密情報を示す。
(i,J):i,Jにより決まる中間値を示す。
(J):Jにより決まる部分関数を示す。
J+1:第J(0≦J≦n−1)サイクルにおいて生成されるその第Jサイクルでの最終生成値を示す。
図4に示すように、拡散秘密情報Gは、次のように定義される。
すなわち、
(0,0)=F(K)、
(i,J+1)=G(i,J)<EXOR>H(i,J)
(i+1,0)=G(i,n)
=G(i,n−1)<EXOR>H(i,n−1)
と定義される。
また、第Jサイクル目で変換され生成されるデータxJ+1
J+1
=f(J)(x,G(i,J)
=f (J)(x<EXOR>G(i,J))<EXOR>G(i,J+1)
と定義される。
また、図5は、図3のフローチャートにおいて、「i=0,J=0」の場合を示す図である。「i=0,J=0」の場合とは、mブロックからなる平文の最初のブロックP(i=0)について、nサイクルの処理のうち最初の処理(J=0)である。図5を参照しながら、図3のフローチャートにそって説明をする。
(1)まず、暗号処理装置100は秘密鍵情報Kを用いて
拡散秘密情報G(0,0)(K)
を生成する(S201)。
図5に示すように、S201における拡散秘密情報Gの生成処理では、リソースの共用化の観点から、拡散秘密情報生成部101は、
(0,0)(K)=F(K,K)
あるいは
(0,0)(K)=F−1(K,K)
として、拡散秘密関数G(0,0)(拡散秘密情報)を、暗号化関数Fあるいは復号化関数F−1と同一の関数で処理することが可能である。拡散秘密関数G(0,0)は、その出力の各ビットが元の秘密鍵情報Kの全てあるいは複数のビットと依存して決定される関数とする。これにより、拡散秘密情報G(0,0)(K)の各ビット値には元の秘密鍵情報Kの全てあるいは複数のビット値が拡散される。このため、元の秘密鍵情報Kの全てあるいは複数のビット値が導出された場合のみ、G(0,0)(K)の各ビットが算出されることになり、G(0,0)(K)の安全性と秘密鍵情報Kの安全性とを関連づけることができる。
(2)暗号処理装置100は、mブロック分の平文あるいは暗号文に対して処理が完了した場合には、処理を終了する(S203のNO)。
(3)また、暗号処理装置100は、1ブロックあたりのnサイクルの処理(J=0〜n−1)が完了した場合には、
暗号文C(0≦i<m)
あるいは
平文P(0≦i<m)
を出力し、次のブロックの処理を開始する(S206のNO,S211,S212)。
(4)(1サイクルごとの処理)
次に、1サイクル毎の処理(S206〜S210)を説明する。1サイクル毎の処理では、まず入力した平文(あるいは暗号文)(S204)に対して、暗号処理部102により部分関数の処理f(J)あるいはf−1(J)を実行する(S207)。この時、S201で生成した拡散秘密情報G(0,0)あるいはS209で更新した拡散秘密情報G(i,J)を伴って処理を行う。図5の場合では、暗号処理部102が、暗号処理部102を示す枠内の式を実行する。
即ち、
=P<EXOR>G(0,0)
=f’ (0)(x,G(0,0)
=f (0)(x<EXOR>G(0,0))<EXOR>G(0,1)
=f (0)(P)<EXOR>G(0,1)
を実行する。この処理では、x、xの式からわかるように、拡散秘密情報G(0,0)とG(0,1)とを伴って処理を行なっている。
この場合、
(0)、x、G(0,0)は既知である。また、G(0,1)は後述する図6に示すように、
(0,1)=G(0,0)<EXOR>H(0,0)
と定義される。後述のように、H(0,0)は、それまでに生成されたいずれかの中間値を用いることができるので、G(0,1)も既知となり、
=f’ (0)(x,G(0,0)
=f (0)(x<EXOR>G(0,0))<EXOR>G(0,1)
=f (0)(P)<EXOR>G(0,1)
が確定する。図5、図6によれば、G(0,1)は図6ではじめて得られるように見かけ上表記されている。しかし、実際には、G(0,1)は前記のように、
図5において
=f’ (0)(x,G(0,0)
=f (0)(x<EXOR>G(0,0))<EXOR>G(0,1)
=f (0)(P)<EXOR>G(0,1)
を生成する際に、
(0,1)=G(0,0)<EXOR>H(0,0)
の関係から導出される。
(5)S207の実行結果あるいはその処理過程の中間結果、あるいは入力データPを暗号処理中間値H(i,J)として拡散秘密情報生成部101へ出力する(S208)。図5では、暗号処理部102が、拡散秘密情報生成部101に中間値H(0,0)を出力している。前記のように、この中間値H(0,0)は第0サイクル(実行サイクル)においてxを生成する過程で生じるいずれかの中間値を用いても構わないし、入力値Pを用いても構わない。これはnサイクルのうち、いずれのサイクルにおいても同様である。
(6)これを受けて、拡散秘密情報生成部101は拡散秘密情報Gの更新処理を行う(S209)。図5では、拡散秘密情報生成部101は、暗号処理部102からH(0,0)を入力する。図6は、「i=0,J=1」の場合を示す図であるが、拡散秘密情報生成部101は、図6において拡散秘密情報生成部101を示す枠内の式を実行することにより、拡散秘密情報G(0,0)をG(0,1)に更新する。
(7)この拡散秘密情報生成部101による拡散秘密情報Gの更新処理は、拡散秘密情報G(i,J)を次のサイクルで使用する拡散秘密情報G(i,J+1)に更新する処理である。図5、図6の例によれば、第0サイクル(i=0)で使用するG(0,0)を、第1サイクル(i=1)で使用するG(0,1)へと更新する処理である。この実施の形態では、暗号処理中間値H(i,J)を用いた拡散秘密情報の更新方法として、
(i,J+1)=H(i,J)<EXOR>G(i,J) (更新式1)
使用する場合を示した。この中間値H(i,J)は、暗号処理部102により実行されている第Jサイクル(実行サイクル)の終了以前に、暗号処理部102より変換されたいずれかの中間値を用いることができる。例えば、H(0,1)は、暗号処理部102により第1サイクルが実行されている場合において、

=f (1)・f (0)(P)<EXOR>G(0,2)
の値が算出される以前のいずれかの中間値を用いることができる。また、H(i,J)として中間値ではないが、入力データPを用いてもよい。なお、上記の方法(更新式1)に限定するものではない。
(i,J+1)=H(i,J)<EXOR>G(i,J)
は一例である。
上記以外の更新方法についても
(i,J)及びG(i,J)
の各ビットが更新後の
拡散秘密情報G(i,J+1)
の各ビットに依存して決定される方法で更新するとし、前記の例(更新式1)に限定するわけではない。
(8)以下、この動作を図3のフローに従ってmブロック分の平文(あるいは暗号文)に対して処理が完了するまで継続する。
次に、図4〜図13を参照して、
(1)i=0,J=0〜n−1の場合、
(2)i=1,J=0〜n−1の場合、
(3)i=2,J=0〜n−1の場合
を説明する。
すなわち
(1)は、暗号処理装置100による第0ブロックに対する全サイクルの処理である。
(2)は、暗号処理装置100による第1ブロックに対する全サイクルの処理である。
(3)は、暗号処理装置100による第2ブロックに対する全サイクルの処理である。
これらの図を簡単に説明する。
図4は、前記のように暗号処理装置100による処理の関係式を示す図である。
図5は、前記のように暗号処理装置100による「i=0,J=0」の処理を示す。
図6は、前記のように暗号処理装置100による「i=0,J=1」の処理を示す。
図7は、暗号処理装置100による「i=0,J=2」の処理を示す。
図8は、暗号処理装置100による「i=0,J=n−1」の処理を示す。
図9は、暗号処理装置100による「i=1,J=0」の処理を示す。
図10は、暗号処理装置100による「i=1,J=1」の処理を示す。
図11は、「i=0,J=0〜n−1」の処理を表形式にした図である。
図12は、「i=1,J=0〜n−1」の処理を表形式にした図である。
図13は、「i=2,J=0〜n−1」の処理を表形式にした図である。
まず、図11を用いて暗号処理装置100による「i=0,J=0〜n−1」の処理を説明する。図11は、i=0の場合(Pブロック)におけるJ=0〜n−1の各サイクルにおける処理を説明する図である。
図11の(a)は、図4に対応する。
図11の(b)は、図5に対応する。
図11の(c)は、図6に対応する。
図11の(d)は、図7に対応する。
図11の(g)は、図8に対応する。
(1)(b:「i=0,J=0」の場合)
拡散秘密情報生成部101は、拡散秘密情報G(0,0)
(0,0)=F(K)
の式により生成して暗号処理部102に送る。
暗号処理部102は、入力データPとG(0,0)との排他的論理和の演算によりxを生成する。
すなわち
=P<EXOR>G(0,0)
である。
次に、暗号処理部102は、x(サイクル変換対象データ)をG(0,0)と関数f(0)とを用いて変換する。
すなわち、

=f(0)(x,G(0,0)
=f (0)(x<EXOR>G(0,0))<EXOR>G(0,1)
である。
前記のように
=P<EXOR>G(0,0)
であるので、

=f(0)(x,G(0,0)
=f (0)(x<EXOR>G(0,0))<EXOR>G(0,1)
=f (0)(P<EXOR>G(0,0)<EXOR>G(0,0))<EXOR>G(0,1)
=f (0)(P)<EXOR>G(0,1)
となる。
ここで、f (0)(P)は既知であるとともに、G(0,1)は図11(c)に示す式で算出される。前記のように、拡散秘密情報生成部101は、第0サイクルでG(0,1)を算出するので、暗号処理部102は、第0サイクルにおいてxを生成することができる。すなわち、暗号処理部102は第0サイクルにおいてx(サイクル変換対象データ)をxに変換することができる。このように、暗号処理部102は、x(サイクル変換対象データ)を秘密鍵情報Kと拡散秘密情報G(0,0) (0,1)とに基づいてxに変換する。この(b)に示す暗号処理部102による第0サイクルの処理では、全ての式にG(0,0)、あるはG(0,1)が作用している。即ち、G(0,0)、あるはG(0,1)によりいわゆるマスクされたのと同様の状態になっている。ただし、G(0,0)、あるはG(0,1)は秘密鍵情報Kに基づき生成された情報であって、乱数ではない点が一つの特徴である。この図11(b)に対応する図5にも示しているが、第0サイクルにおいて最終的に生成される(変換される)データx
=f (0)(P)<EXOR>G(0,1)
である。図5にも示すように、暗号処理部102は、入力データPに秘密鍵情報Kを作用させたf (0)(P)(秘密鍵作用データ)に対して、更に拡散秘密情報G(0,1)を作用させることによりx(拡散秘密情報作用データ)に変換する。暗号処理部102は、拡散秘密情報生成部101にH(0,0)を送る。ここでH(0,0)は、xを生成するに至るいずれかの中間値と入力データPとのうちのいずれかを用いることができる。いずれのデータを用いるかにつては予め設定することができる。
(2)(c:「i=0,J=1」の場合)
次に(c)のJ=1の場合、すなわち第1サイクルの場合を説明する。第1サイクルも第0サイクルと同様である。第1サイクルにおける変換の対象となるデータ(サイクル変換対象データ)は、第0サイクルの最終生成データであるxである。拡散秘密情報生成部101は、
(0,1)=G(0,0)<EXOR>H(0,0)
の式により生成した拡散秘密情報G(0,1)を暗号処理部102に送る。
次に、暗号処理部102は、xをG(0,1)と関数f(1)とを用いてxに変換する。
すなわち、

=f(1)(x,G(0,1)
=f (1)(x<EXOR>G(0,1))<EXOR>G(0,2)
である。
ここで、(b)により
=f (0)(P)<EXOR>G(0,1)
であるので、

=f(1)(x,G(0,1)
=f (1)(x<EXOR>G(0,1))<EXOR>G(0,2)
=f (1)(f (0)(P)<EXOR>G(0,1)<EXOR>G(0,1))<EXOR>G(0,2)
=f (1)・f (0)(P)<EXOR>G(0,2)
となる。
ここで、f (1)・f (0)(P)は既知であるとともに、G(0,2)は図11(d)に示す式で算出される。前記のように、拡散秘密情報生成部101は、第1サイクルでG(0,2)を算出するので、暗号処理部102は、第1サイクルにおいてxを生成することができる。すなわち、暗号処理部102は第1サイクルにおいてx(サイクル変換対象データ)をxに変換することができる。このように、暗号処理部102は、x(サイクル変換対象データ)を秘密鍵情報Kと拡散秘密情報G(0,1) (0,2)とに基づいてxに変換する。この(c)に示す暗号処理部102による第1サイクルの処理では、全ての式にG(0,1)、あるはG(0,2)が作用している。即ち、G(0,1)、あるはG(0,2)により、いわゆるマスクされたのと同様の状態になっている。ただし、G(0,1)、あるはG(0,2)は秘密鍵情報Kに基づき生成された情報であって、乱数ではないのは図11(b)の場合と同様である。
以下、図11(d)の第2サイクルから(g)の第n−1サイクルまで同様の処理である。すなわち、いずれのサイクルにおいても暗号処理部102は、拡散秘密情報を伴って処理を行なう。このため、各サイクルの処理では、拡散秘密情報により、いわゆるマスクされた状態となる。また、図11(a)〜(g)に示すように、拡散秘密情報Gは各サイクルで更新されていく。このように、暗号処理装置100では、拡散秘密情報Gが各サイクルで更新されていくことが特徴である。
図12は、上述のように「i=1,J=0〜n−1」の場合を示す。即ち、第2ブロックPにおける第0サイクル〜第n−1サイクルまでの処理を示している。図12の場合も図11の場合と同様であるので、説明は省略する。なお、「i=1,J=0」におけるG(1,0)は、図11(a)における(式2)に基づき生成される。図11(a)の(式2)は、第1ブロック〜第m−1ブロックの第0サイクルにおける拡散秘密情報Gを生成する場合の式である。この(式2)により前のブロックから後のブロックに移る場合の連続性が保持される。
図1あるいは図2に示した暗号処理装置100の拡散秘密情報生成部101、暗号処理部102の一連の動作は互いに関連しており、これらの一連の動作をデータ変換方法として把握することができる。
図14は、暗号処理装置100の拡散秘密情報生成部101等の動作をデータ変換方法として把握した場合のフローチャートを示す。
(1)S301は、拡散秘密情報生成部が、ROMが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも1以上のビットに依存する情報である拡散秘密情報を生成するステップである。
(2)S302は、暗号処理部102(データ変換部)が、入力データを入力して第0サイクルから第n−1サイクルまでのnサイクルにより入力データを変換するとともにnサイクルのそれぞれにおいて、サイクルごとの変換対象のデータであるサイクル変換対象データをROMが格納する秘密鍵情報と、暗号処理部102が生成した拡散秘密情報とに基づいて変換するステップである。
また、図1あるいは図2に示した暗号処理装置100の拡散秘密情報生成部101、暗号処理部102の一連の動作は、一連の処理に置き換えることにより、データ変換プログラムの実施形態として把握することができる。
図15は、コンピュータである暗号処理装置100の拡散秘密情報生成部101等の動作を、コンピュータである暗号処理装置に実効させるデータ変換プログラムの処理を示すフローチャートである。このデータ変換プログラムは、例えば図2のROM120に格納することができる。
(1)S401は、ROMが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも1以上のビットに依存する情報である拡散秘密情報を生成する処理である。
(2)S402は、入力データを入力して第0サイクルから第n−1サイクルまでのnサイクルにより入力データを変換するとともにnサイクルのそれぞれにおいて、サイクルごとの変換対象のデータであるサイクル変換対象データをROMが格納する秘密鍵情報と、生成された拡散秘密情報とに基づいて変換する処理である。
このように従来技術では、追加的な秘密情報を秘密鍵情報とは独立に生成して処理に利用するのに対して、本実施の形態の暗号処理装置100は、秘密鍵情報Kと独立ではない拡散秘密情報Gを処理に利用する。この拡散秘密情報Gの各ビットは秘密鍵情報Kの全てあるいは複数のビットに依存して決定される。このため、拡散秘密情報Gと秘密鍵情報Kは独立ではないが、相関が弱くなる。よって、従来技術と同等の効果を保持しつつ、従来技術では独立で追加的な秘密情報を装置内で入手するために装置の構成として乱数発生器を必要したことに対して、本実施の形態の暗号処理装置100は、追加的な秘密情報を用いないため乱数発生器を必要とせず、実装効率が向上する。拡散秘密情報Gが算出されると、サイドチャネル攻撃によって秘密鍵情報Kも算出される可能性がある。極めて強力な攻撃者(例えば、当該暗号処理装置の設計者)には、Gの生成論理を知られるかも知れない。そのような攻撃者は、Kを知ればGを算出することができる。しかし、Kを知らない限り、Gの算出はKの算出と同様に困難である。従って、Kを算出するためにまずGを算出する、という攻撃は成立せず、GはKと独立な乱数ではないにも関わらず、従来技術と同等のサイドチャネル攻撃に対する対抗性を保持することができる。
この実施の形態の暗号処理装置100は、拡散秘密情報生成部が秘密鍵情報に基づき拡散秘密情報を生成し、暗号処理部が各サイクルにおいて拡散秘密情報に基づいてデータを変換する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を保持することができる。
この実施の形態の暗号処理装置100は、
暗号処理部が各サイクルにおいて、サイクル変換対象データを秘密鍵作用データに対して更に拡散秘密情報を作用させることにより拡散秘密情報作用データに変換する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を高めることができる。
この実施の形態の暗号処理装置100は、
拡散秘密情報生成部が、実行サイクルにおいて使用される拡散秘密情報を、入力データあるいは中間値等に基づいて生成する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を高めることができる。
この実施の形態の暗号処理装置100は、拡散秘密情報生成部が、実行サイクルが第0サイクルよりも後の実行サイクルである場合に、後の実行サイクルにおいて使用される拡散秘密情報を、後の実行サイクルの直前のサイクルにおいて使用された拡散秘密情報から更新する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を更に高めることができる。
この実施の形態のデータ変換方法は、拡散秘密情報生成部が秘密鍵情報に基づき拡散秘密情報を生成し、暗号処理部(データ変換部)が各サイクルにおいて拡散秘密情報に基づいてデータを変換する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を保持することができる。
この実施の形態のデータ変換プログラムは、秘密鍵情報に基づき拡散秘密情報を生成し、各サイクルにおいて拡散秘密情報に基づいてデータを変換する。よって、乱数を生成することなく、サイドチャネル攻撃に対する対抗性を保持することができる。また専用装置を設けることなく汎用のコンピュータで暗号処理装置を実現することができる。
以上の実施の形態では、追加的な秘密情報を必要としない情報漏洩防止装置機能付き暗号処理装置及び制御方法について説明した。
暗号処理装置100の構成を示すブロック図。 暗号処理装置100のハードウェア構成図。 暗号処理装置100の動作を示すフローチャート。 暗号処理装置100が行なう処理の関係式を示す図。 暗号処理装置100による「i=0,J=0」の処理を示す図。 暗号処理装置100による「i=0,J=1」の処理を示す図。 暗号処理装置100による「i=0,J=2」の処理を示す図。 暗号処理装置100による「i=0,J=n−1」の処理を示す図。 暗号処理装置100による「i=1,J=0」の処理を示す図。 暗号処理装置100による「i=1,J=1」の処理を示す図。 「i=0,J=0〜n−1」の処理を表形式にした図。 「i=1,J=0〜n−1」の処理を表形式にした図。 「i=2,J=0〜n−1」の処理を表形式にした図。 データ変換方法のフローチャート。 変換プログラムのフローチャート。
符号の説明
100 暗号処理装置、101 拡散秘密情報生成部、102 暗号処理部、103 標準入力、104 標準出力、105 秘密鍵情報格納部、106 拡散秘密情報、107 暗号処理中間値、110 演算制御部、111 CPU、112 コプロセッサ、120 ROM、130 RAM、140 インターフェース。

Claims (6)

  1. データ変換の対象となる入力データP0を入力して第0サイクルから第n−1サイクル(nは3以上の整数)までのnサイクルを順次実行することにより入力データP0を変換して出力するデータ変換装置において、
    入力データP0の変換に用いる所定のビット数の秘密鍵情報を格納するメモリと、前記メモリが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも1以上のビットに依存する情報である拡散秘密情報G0を生成する拡散秘密情報生成部と、データ変換部とを備え、
    (1)第0サイクルにおいて、
    前記データ変換部が、第0サイクルにおける変換対象のデータであって入力データP0に基づくデータである第0サイクル変換対象データX0を拡散秘密情報G0でマスクし、変換対象データX0を拡散秘密情報G0でマスクしたデータをデータ変換し、
    前記拡散秘密情報生成部が、前記入力データP0と、前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報G0を更新して更新後の拡散秘密情報G1を生成し、
    前記データ変換部が、第0サイクルでデータ変換されたデータを更新後の拡散秘密情報G1でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報G1でマスクしたデータX1を生成し、
    (2)第1サイクルにおいて、
    前記データ変換部が、前記第0サイクルで生成されたデータX1を第0サイクルで生成された拡散秘密情報G1でマスクし、さらに、データX1を拡散秘密情報G1でマスクしたデータをデータ変換し、
    拡散秘密情報生成部が、前記入力データP0と、第1サイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報G1を更新して更新後の拡散秘密情報G2を生成し、
    前記データ変換部が、第1サイクルでデータ変換されたデータを更新後の拡散秘密情報G2でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報G2でマスクしたデータX2を生成し、
    以下、第kサイクル(k:2≦k≦n−1の整数)でも第1サイクルと同様に、
    (3)第kサイクルにおいて、
    前記データ変換部が、前記第k−1サイクルで生成されたデータXkを第k−1サイクルで生成された拡散秘密情報Gkでマスクし、さらに、データXkを秘密情報Gkでマスクしたデータをデータ変換し、
    拡散秘密情報生成部が、前記入力データP0と、第kサイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値とのいずれかに基づいて拡散秘密情報Gkを更新して更新後の拡散秘密情報Gk+1を生成し、
    前記データ変換部が、第kサイクルでデータ変換されたデータを更新後の拡散秘密情報Gk+1でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Gk+1でマスクしたデータXk+1を生成する
    ことを特徴とするデータ変換装置。
  2. 前記データ変換装置は、
    前記入力データP0と異なる入力データP1をさらに入力し、入力した前記入力データP1に対して、前記入力データP0と同様に、前記第0サイクルから前記第n−1サイクル(nは3以上の整数)までのnサイクルを順次実行することにより入力データP1を変換して出力すると共に、
    (1)入力データP1に関する第0サイクルにおいて、
    前記データ変換部が、入力データP1に関する第0サイクルにおける変換対象のデータであって入力データP1に基づくデータである第0サイクル変換対象データX0を、入力データP0に関する第n−1サイクルにおいて前記拡散秘密情報生成部によって生成された拡散秘密情報Gnを拡散秘密情報G(1,0)として拡散秘密情報G(1,0)でマスクし、入力データP1に基づく変換対象データX0を拡散秘密情報G(1,0)でマスクしたデータをデータ変換し、
    前記拡散秘密情報生成部が、前記入力データP0と、前記入力データP1と、前記入力データP0に関する第0サイクルから第n−1サイクルまでのnサイクル及び入力データP1に関する第0サイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値と、のうちのいずれかに基づいて拡散秘密情報G(1、0)を更新して更新後の拡散秘密情報G(1、1)を生成し、
    前記データ変換部が、入力データP1の第0サイクルでデータ変換されたデータを更新後の拡散秘密情報G(1、1)でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報G(1、1)でマスクしたデータX1を生成し、
    (2)入力データP1に関する第1サイクルにおいて、
    前記データ変換部が、入力データP1の前記第0サイクルで生成されたデータX1を拡散秘密情報G(1、1)でマスクし、さらに、データX1を拡散秘密情報G(1、1)でマスクしたデータをデータ変換し、
    拡散秘密情報生成部が、前記入力データP0と、前記入力データP1と、前記入力データP0に関する第0サイクルから第n−1サイクルまでのnサイクル及び入力データP1に関する第1サイクルまでを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値と、のうちのいずれかに基づいて拡散秘密情報G(1、1)を更新して更新後の拡散秘密情報G(1、2)を生成し、
    前記データ変換部が、入力データP1の第1サイクルでデータ変換されたデータを更新後の拡散秘密情報G(1、2)でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報G(1、2)でマスクしたデータX2を生成し、
    以下、入力データP1に関する第kサイクル(k:2≦k≦n−1の整数)でも入力データP1に関する第1サイクルと同様に、
    (3)入力データP1に関する第kサイクルにおいて、
    前記データ変換部が、前記第k−1サイクルで生成されたデータXkを第k−1サイクルで生成された拡散秘密情報G(1、k)でマスクし、さらに、データXkを秘密情報G(1、k)でマスクしたデータをデータ変換し、
    拡散秘密情報生成部が、前記入力データP0と、前記入力データP1と、前記入力データP0に関する第0サイクルから第n−1サイクルまでのnサイクル及び入力データP1に関する第kサイクルまでを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値と、のうちのいずれかに基づいて拡散秘密情報G(1、k)を更新して更新後の拡散秘密情報G(1、k+1)を生成し、
    前記データ変換部が、第kサイクルでデータ変換されたデータを更新後の拡散秘密情報G(1、k+1)でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報G(1、k+1)でマスクしたデータXk+1を生成する
    ことを特徴とする請求項1記載のデータ変換装置。
  3. 第0サイクル変換対象データX0は、
    入力データP0を拡散秘密情報G0でマスクしたデータであることを特徴とする請求項1記載のデータ変換装置。
  4. データ変換の対象となる入力データP0を入力して第0サイクルと第1サイクルとの2サイクルを順次実行することにより入力データP0を変換して出力するデータ変換装置において、
    入力データP0の変換に用いる所定のビット数の秘密鍵情報を格納するメモリと、前記メモリが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも1以上のビットに依存する情報である拡散秘密情報G0を生成する拡散秘密情報生成部と、データ変換部とを備え、
    (1)第0サイクルにおいて、
    前記データ変換部が、第0サイクルにおける変換対象のデータであって入力データP0に基づくデータである第0サイクル変換対象データX0を拡散秘密情報G0でマスクし、変換対象データX0を拡散秘密情報G0でマスクしたデータをデータ変換し、
    前記拡散秘密情報生成部が、前記入力データP0と、前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報G0を更新して更新後の拡散秘密情報G1を生成し、
    前記データ変換部が、第0サイクルでデータ変換されたデータを更新後の拡散秘密情報G1でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報G1でマスクしたデータX1を生成し、
    (2)第1サイクルにおいて、
    前記データ変換部が、前記第0サイクルで生成されたデータX1を第0サイクルで生成された拡散秘密情報G1でマスクし、さらに、データX1を拡散秘密情報G1でマスクしたデータをデータ変換し、
    拡散秘密情報生成部が、前記入力データP0と、第1サイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報G1を更新して更新後の拡散秘密情報G2を生成し、
    前記データ変換部が、第1サイクルでデータ変換されたデータを更新後の拡散秘密情報G2でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報G2でマスクしたデータX2を生成することを特徴とするデータ変換装置。
  5. データ変換の対象となる入力データP0を入力して第0サイクルの1サイクルを実行することにより入力データP0を変換して出力するデータ変換装置において、
    入力データP0の変換に用いる所定のビット数の秘密鍵情報を格納するメモリと、前記メモリが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも1以上のビットに依存する情報である拡散秘密情報G0を生成する拡散秘密情報生成部と、データ変換部とを備え、
    (1)第0サイクルにおいて、
    前記データ変換部が、第0サイクルにおける変換対象のデータであって入力データP0に基づくデータである第0サイクル変換対象データX0を拡散秘密情報G0でマスクし、変換対象データX0を拡散秘密情報G0でマスクしたデータをデータ変換し、
    前記拡散秘密情報生成部が、前記入力データP0と、前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報G0を更新して更新後の拡散秘密情報G1を生成し、
    前記データ変換部が、第0サイクルでデータ変換されたデータを更新後の拡散秘密情報G1でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報G1でマスクしたデータX1を生成することを特徴とするデータ変換装置。
  6. データ変換の対象となる入力データP0を入力して第0サイクルから第n−1サイクル(nは3以上の整数)までのnサイクルを順次実行することにより入力データP0を変換して出力するコンピュータであって、入力データP0の変換に用いる所定のビット数の秘密鍵情報を格納するメモリを備えたコンピュータであるデータ変換装置を、
    以下の拡散秘密情報生成部、データ変換部として機能させるためのデータ変換プログラム
    (1)前記拡散秘密情報生成部が、前記メモリが格納する秘密鍵情報に基づいて、それぞれのビットが秘密鍵情報の少なくとも1以上のビットに依存する情報である拡散秘密情報G0を生成し、
    (2)第0サイクルにおいて、
    前記データ変換部が、第0サイクルにおける変換対象のデータであって入力データP0に基づくデータである第0サイクル変換対象データX0を拡散秘密情報G0でマスクし、変換対象データX0を拡散秘密情報G0でマスクしたデータをデータ変換し、
    前記拡散秘密情報生成部が、前記入力データP0と、前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報G0を更新して更新後の拡散秘密情報G1を生成し、
    前記データ変換部が、第0サイクルでデータ変換されたデータを更新後の拡散秘密情報G1でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報G1でマスクしたデータX1を生成し、
    (3)第1サイクルにおいて、
    前記データ変換部が、前記第0サイクルで生成されたデータX1を第0サイクルで生成された拡散秘密情報G1でマスクし、さらに、データX1を拡散秘密情報G1でマスクしたデータをデータ変換し、
    拡散秘密情報生成部が、前記入力データP0と、第1サイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値とのうちのいずれかに基づいて拡散秘密情報G1を更新して更新後の拡散秘密情報G2を生成し、
    前記データ変換部が、第1サイクルでデータ変換されたデータを更新後の拡散秘密情報G2でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報G2でマスクしたデータX2を生成し、
    以下、第kサイクル(k:2≦k≦n−1の整数)でも第1サイクルと同様に、
    (4)第kサイクルにおいて、
    前記データ変換部が、前記第k−1サイクルで生成されたデータXkを第k−1サイクルで生成された拡散秘密情報Gkでマスクし、さらに、データXkを秘密情報Gkでマスクしたデータをデータ変換し、
    拡散秘密情報生成部が、前記入力データP0と、第kサイクルを含めてそれまでのサイクルにおいて前記データ変換部によるデータ変換の際に生成された中間値とのいずれかに基づいて拡散秘密情報Gkを更新して更新後の拡散秘密情報Gk+1を生成し、
    前記データ変換部が、第kサイクルでデータ変換されたデータを更新後の拡散秘密情報Gk+1でマスクすることにより、データ変換されたデータを更新後の拡散秘密情報Gk+1でマスクしたデータXk+1を生成する。
JP2006087736A 2006-03-28 2006-03-28 データ変換装置及びデータ変換プログラム Expired - Fee Related JP4804981B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006087736A JP4804981B2 (ja) 2006-03-28 2006-03-28 データ変換装置及びデータ変換プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006087736A JP4804981B2 (ja) 2006-03-28 2006-03-28 データ変換装置及びデータ変換プログラム

Publications (2)

Publication Number Publication Date
JP2007266879A JP2007266879A (ja) 2007-10-11
JP4804981B2 true JP4804981B2 (ja) 2011-11-02

Family

ID=38639449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006087736A Expired - Fee Related JP4804981B2 (ja) 2006-03-28 2006-03-28 データ変換装置及びデータ変換プログラム

Country Status (1)

Country Link
JP (1) JP4804981B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2804524B1 (fr) * 2000-01-31 2002-04-19 Oberthur Card Systems Sas Procede d'execution d'un protocole cryptographique entre deux entites electroniques
GB0211812D0 (en) * 2002-05-23 2002-07-03 Koninkl Philips Electronics Nv S-box encryption in block cipher implementations
JP2005031471A (ja) * 2003-07-07 2005-02-03 Sony Corp 暗号処理装置、および暗号処理方法
JP2005046472A (ja) * 2003-07-31 2005-02-24 Sumitomo Rubber Ind Ltd 防水靴
JP2006019872A (ja) * 2004-06-30 2006-01-19 Sony Corp 暗号処理装置

Also Published As

Publication number Publication date
JP2007266879A (ja) 2007-10-11

Similar Documents

Publication Publication Date Title
US8638944B2 (en) Security countermeasures for power analysis attacks
JP5892887B2 (ja) サイドチャネル攻撃に対抗する方法
JP5198526B2 (ja) 暗号化装置および復号装置
US8605894B2 (en) Cryptographic process execution protecting an input value against attacks
EP1833190A1 (en) Table splitting for cryptographic processes
JP2007195132A (ja) 暗号処理装置
US20130010963A1 (en) Multiplicative splits to protect cipher keys
JP7155173B2 (ja) 外部監視攻撃からモジュラーインバージョン演算を保護すること
CN111712816B (zh) 使用密码蒙蔽以用于高效地使用蒙哥马利乘法
KR101506499B1 (ko) 마스킹이 적용된 seed를 이용한 암호화 방법
Jayasinghe et al. Constant time encryption as a countermeasure against remote cache timing attacks
JP5202350B2 (ja) 暗号処理装置及び暗号処理方法及び暗号処理プログラム
JP7079711B2 (ja) 変換装置、変換方法、変換プログラム及び難読プログラム
KR100991713B1 (ko) 마스킹을 이용한 aes 역원 연산 장치 및 방법과 이를 이용한 aes 암호 시스템
Vadnala et al. Algorithms for switching between boolean and arithmetic masking of second order
JP4804981B2 (ja) データ変換装置及びデータ変換プログラム
US11336429B2 (en) Method for protecting a source of entropy used in countermeasures securing a white-box cryptographic algorithm
JP2006025366A (ja) 暗号化装置及び半導体集積回路
Savitha et al. Implementation of AES algorithm to overt fake keys against counter attacks
JP4611643B2 (ja) 個別鍵生成装置
JP2010232709A (ja) 暗号演算回路装置
JP2006201641A (ja) 非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラム
JP6371197B2 (ja) 暗号処理装置
KR20240073510A (ko) 영지식 증명에서 효율적인 일방향 함수를 이용한 연산 방법, 그리고 이를 구현하기 위한 장치
Yuan et al. Detecting first-order leakages against the tower field masking scheme

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110419

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110614

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4804981

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140819

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees