JPWO2006118086A1 - プログラム変換装置、暗号処理装置、暗号処理方法 - Google Patents
プログラム変換装置、暗号処理装置、暗号処理方法 Download PDFInfo
- Publication number
- JPWO2006118086A1 JPWO2006118086A1 JP2006523469A JP2006523469A JPWO2006118086A1 JP WO2006118086 A1 JPWO2006118086 A1 JP WO2006118086A1 JP 2006523469 A JP2006523469 A JP 2006523469A JP 2006523469 A JP2006523469 A JP 2006523469A JP WO2006118086 A1 JPWO2006118086 A1 JP WO2006118086A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- addition
- partial
- bits
- key
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
Description
Stanley Chow,Philip Eisen,Harold Johnson,Paul C.Van Oorschot「White−Box Cryptography and an AES Implementation」、Selected Areas in Cryptography(LNCS2595)所収、2003年 Springer−Verlag刊
y0=x0(+)k0、
y1=x1(+)k1、
y2=x2(+)k2、
y3=x3(+)k3
という4つの排他的論理和演算に分割することができる(S14)。各排他的論理和演算をテーブル化することにより、4つの排他的論理和演算は、変換テーブルTab0[ ]、Tab1[ ]、Tab2[ ]、Tab3[ ]を用いて、以下のように表すことができる(S16)。
y0=Tab0[x0]
y1=Tab1[x1]
y2=Tab2[x2]
y3=Tab3[x3]
y0、y1、y2、y3を結合することにより出力データYが得られる(S18)。このように、上記4つの排他的論理和演算をそれぞれテーブル化して変換テーブルTab0[ ]〜Tab3[ ]を作成することにより、1つの変換テーブルのみで算術加算または排他的論理和演算を表す場合に比べ、小さなテーブル容量(8ビット×2^8×4=1キロバイト)の変換テーブルで排他的論理和演算を表すことができる。
10 鍵データ抽出部
11 加算テーブル生成部
12 変換テーブル抽出部
13 テーブル融合部
14 乱数生成部
15 テーブルランダム化部
16 変換プログラム生成部
20、22、30a〜30d 鍵データ加算部
21a〜21d、23a〜23d テーブル変換部
図3は、本発明の実施の形態に係るプログラム変換装置を用いて、暗号処理プログラムを変換する際の一構成例を示したブロック図である。プログラム変換装置1は、暗号処理のプログラムPに対して変換を行い、変換プログラムtPを出力する。ここで、プログラムPは、上述したような観測した暗号処理の中間値から暗号鍵データを解析する解読法に対する対策を、何ら行っていないプログラムである。変換プログラムtPは、上記解読法に対して対策を行ったプログラムである。実際に暗号化処理を行なう機器には、変換プログラムtPが実装される。
以下、前記プログラムPの一具体例を説明する。図4は、プログラムPの処理内容について、1つの処理を1つのブロックで表したブロック図である。また、図5は、プログラムPの処理内容を示したフローチャートである。図4および図5を用いて、プログラムPの処理について詳細に説明する。
テーブル変換部21a、21b、21c、21dは、それぞれ、b0、b1、b2、b3に対して、次式(2a)〜(2d)で示されるテーブル変換処理を行い、c0、c1、c2、c3を求める(S103)。ただし、c=S[b]は、配列S[ ]のb番目の要素(8ビット)を取り出してcとすることを表す。プログラムPは、これらを上位からc0、c1、c2、c3の順に連結して、32ビットの中間データCとする(S104)。
c1=S[b1] …(2b)
c2=S[b2] …(2c)
c3=S[b3] …(2d)
鍵データ加算部22は、中間データCと鍵データK2との算術加算を次式(3)に従って行い、中間データDを求める(S105)。プログラムPは、中間データDを、上位から8ビットずつのデータに分割し、それぞれd0、d1、d2、d3とする(S106)。
テーブル変換部23a、23b、23c、23dは、それぞれ、d0、d1、d2、d3に対して、次式(4a)〜(4d)で示されるテーブル変換処理を行い、e0、e1、e2、e3を求める(S107)。プログラムPは、これらを上位からe0、e1、e2、e3の順に連結して、32ビットのデータEとする(S108)。
e1=S[d1] …(4b)
e2=S[d2] …(4c)
e3=S[d3] …(4d)
プログラムPは、32ビットのデータEを、出力データEとして出力する(S109)。
次に、プログラム変換装置1の構成について説明する。図6は、プログラム変換装置1の内部構成の一例を示したブロック図である。
プログラム変換装置1は、暗号処理のプログラムPを、耐タンパ性を有し、かつ処理のテーブル化を現実的に実装可能な容量のテーブルで実現する変換プログラムtPに変換する装置であり、鍵データ抽出部10と、加算テーブル生成部11と、変換テーブル抽出部12と、テーブル融合部13と、乱数生成部14と、テーブルランダム化部15と、変換プログラム生成部16とを備えている。
図4に示すプログラムPの鍵データ加算部20は、入力データA(32ビット)と固定値である鍵データK1(32ビット)との算術加算(A+K1)mod(2^(32))を行い、演算結果である中間データB(32ビット)を生成する処理を行う。この鍵データ加算部20の処理を、単純にテーブル変換に置き換えるとすると、入力データAを入力、中間データBを出力とする変換テーブルとなる。このとき、入力データAおよび中間データBは、ともに32ビットデータである。このため、生成される変換テーブルの容量は、32ビット×2^(32)=16ギガバイトにもなってしまう。そこで、以下のような原理に従い、比較的コンパクトなテーブルでの実現を行う。
T1[x]=((xの上位8ビット)+(xの下位1ビット)+k1)mod(2^9)(x=0、1、…、511) …(5b)
T2[x]=((xの上位8ビット)+(xの下位1ビット)+k2)mod(2^9)(x=0、1、…、511) …(5c)
T3[x]=(x+k3)mod(2^9)(x=0、1、…、255)
…(5d)
以上をまとめると、加算テーブル生成部11は、鍵データK1を元に上記4つの式に従って、加算テーブルT0、T1、T2、T3を生成する。また、上記と同様に、鍵データ加算部22についても、加算テーブルV0、V1、V2、V3を生成する。そして、生成した加算テーブルT0、T1、T2、T3、V0、V1、V2、V3をテーブル融合部13に転送する。
変換テーブル抽出部12は、プログラムPから、変換テーブルSの配列データ(8ビット×256個)を抽出して、テーブル融合部13に転送する(図7のS26)。
テーブル融合部13は、加算テーブルT0と変換テーブルS、加算テーブルT1と変換テーブルS、加算テーブルT2と変換テーブルS、加算テーブルT3と変換テーブルSを、それぞれ融合して融合テーブルU0、U1、U2、U3を生成する。同様に、テーブル融合部13は、加算テーブルV0と変換テーブルS、加算テーブルV1と変換テーブルS、加算テーブルV2と変換テーブルS、加算テーブルV3と変換テーブルSを、それぞれ融合して融合テーブルW0、W1、W2、W3を生成する(図7のS28)。以下では、融合テーブルU0、U1、U2、U3を生成する処理(図7のS28)について説明するが、融合テーブルW0、W1、W2、W3を生成する処理についても全く同様である。
U1[x]=(T1[x]の上位1ビット)‖S[T1[x]の下位8ビット](x=0、1、…、511) …(6b)
U2[x]=(T2[x]の上位1ビット)‖S[T2[x]の下位8ビット](x=0、1、…、511) …(6c)
U3[x]=(T3[x]の上位1ビット)‖S[T3[x]の下位8ビット](x=0、1、…、255) …(6d)
以上をまとめると、テーブル融合部13は、加算テーブルT0、T1、T2、T3、変換テーブルSを元に、上記4つの式に従って、融合テーブルU0、U1、U2、U3を生成する。また、テーブル融合部13は、上記と同様に、加算テーブルV0、V1、V2、V3、変換テーブルSから、融合テーブルW0、W1、W2、W3を生成する。そして、テーブル融合部13は、生成した融合テーブルU0、U1、U2、U3、W0、W1、W2、W3をテーブルランダム化部15に転送する(図7のS28)。
乱数生成部14は、12個の乱数r1a(9ビット)、r1b(9ビット)、r1c(9ビット)、r1d(8ビット)、r2a(8ビット)、r2b(8ビット)、r2c(8ビット)、r2d(8ビット)、r3a(8ビット)、r3b(9ビット)、r3c(9ビット)、r3d(9ビット)をそれぞれ生成し、テーブルランダム化部15に転送する(図7のS30)。
テーブルランダム化部15は、乱数生成部14で生成した12個の乱数を元に、融合テーブルU0、U1、U2、U3、W0、W1、W2、W3をそれぞれランダム化し、ランダム化融合変換テーブルRU0、RU1、RU2、RU3、RW0、RW1、RW2、RW3を生成する(図7のS32)。以下では、ランダム化融合変換テーブルRU0、RU1、RU2、RU3を生成する処理(図7のS32)について説明するが、RW0、RW1、RW2、RW3についても全く同様である。
…(7a)
RU1[x]=U1[x(+)r1b](+){(r1aの下位1ビット)‖r2b}(x=0、1、…、511) …(7b)
RU2[x]=U2[x(+)r1c](+){(r1bの下位1ビット)‖r2c}(x=0、1、…、511) …(7c)
RU3[x]=U3[x(+)r1d](+){(r1cの下位1ビット)‖r2d}(x=0、1、…、255) …(7d)
RW1[x]=V1[x(+){r2b‖(r3cの上位1ビット)}(+)r3b(x=0、1、…、511) …(8b)
RW2[x]=V2[x(+){r2c‖(r3dの上位1ビット)}](+)r3c(x=0、1、…、511) …(8c)
RW3[x]=V3[x(+)r2d](+)r3d(x=0、1、…、255)
…(8d)
以上をまとめると、テーブルランダム化部15は、融合テーブルU0、U1、U2、U3と乱数r1a、r1b、r1c、r1d、r2a、r2b、r2c、r2dを元に、式(7a)〜(7d)に従って、ランダム化融合変換テーブルRU0、RU1、RU2、RU3を生成する。また、テーブルランダム化部15は、同様に、融合テーブルW0、W1、W2、W3と乱数r2a、r2b、r2c、r2d、r3a、r3b、r3c、r3dを元に、式(8a)〜(8d)に従って、ランダム化融合変換テーブルRW0、RW1、RW2、RW3を生成する。そして、生成したランダム化融合変換テーブルRU0、RU1、RU2、RU3、RW0、RW1、RW2、RW3を変換プログラム生成部16に転送する(図7のS32)。
変換プログラム生成部16は、ランダム化融合変換テーブルRU0、RU1、RU2、RU3、RW0、RW1、RW2、RW3から、変換プログラムtPを生成する(図7のS34)。図14は、変換プログラムtPの各処理をブロックとして表現したブロック図であり、図15は、変換プログラムtPの処理の流れを説明するフローチャートである。変換プログラムtPには、上述した手順を経て生成されたランダム化融合変換テーブルRU0、RU1、RU2、RU3、RW0、RW1、RW2、RW3が内部に設定されている。また、次式(9a)および(9b)のように設定された乱数R1(32ビット)およびR3(32ビット)も内部に設定されている。
…(9a)
R3=(r3a)‖(r3bの下位8ビット)‖(r3cの下位8ビット)‖(r3dの下位8ビット)
…(9b)
まず、プログラムtPに対して入力データA(32ビット)が入力される(S200)。
変換プログラムtPは、ランダム化入力データRAを、上位から8ビットずつ分割して、ra0、ra1、ra2、ra3とする(S202)。
rc3=(t3の下位8ビット) …(11b)
rca3=(t3の上位1ビット) …(11c)
t2=RU2[ra2‖rca3] …(11d)
rc2=(t2の下位8ビット) …(11e)
rca2=(t2の上位1ビット) …(11f)
t1=RU1[ra1‖rca2] …(11g)
rc1=(t1の下位8ビット) …(11h)
rca1=(t1の上位1ビット) …(11i)
rc0=RU0[ra1‖rca1] …(11j)
ランダム化融合テーブル変換部36a、36b、36c、36dは、ランダム化中間データrc0、rc1、rc2、rc3に対して、次式(12a)〜(12j)に従った計算を順に行い、ランダム化出力データre0、re1、re2、re3を求める(S204)。
re3=(t3の下位8ビット) …(12b)
rcb3=(t3の上位1ビット) …(12c)
t2=RW2[rc2‖rcb3] …(12d)
re2=(t2の下位8ビット) …(12e)
rcb2=(t2の上位1ビット) …(12f)
t1=RW1[rc1‖rcb2] …(12g)
re1=(t1の下位8ビット) …(12h)
rcb1=(t1の上位1ビット) …(12i)
re0=RW0[rc1‖rcb1] …(12j)
変換プログラムtPは、ランダム化出力データre0、re1、re2、re3を上位からこの順序で連結して32ビットのランダム化出力データREとする(S205)。
E=RE(+)R3 …(13)
変換プログラムtPは、出力データEを出力する(S207)。
ここで、変換プログラムtPによって実行される暗号処理が、プログラムPによって実行される暗号処理と等価であることを説明する。即ち、任意の入力データAに対して、プログラムPの処理によって得られる出力データEと、変換プログラムtPによって得られる出力データEとが同じであることを説明する。
RA=A(+)R1
である。ここで、Aを上位から8ビットずつ分割して、a0、a1、a2、a3とすると、式(9a)より、次式(14a)〜(14d)に示す関係が成立する。
ra0=a0(+)(r1aの上位8ビット) …(14a)
ra1=a1(+)(r1bの上位8ビット) …(14b)
ra2=a2(+)(r1cの上位8ビット) …(14c)
ra3=a3(+)r1d …(14d)
次に、式(11a)、式(7d)、式(14d)、式(6d)より、次式(15)が導かれる。
t3=RU3[ra3]
=U3[ra3(+)r1d](+){(r1cの下位1ビット‖r2d)
=U3[a3](+){(r1cの下位1ビット)‖r2d}
={(T3[a3]の上位1ビット)‖S[T3[a3]の下位8ビット]}(+){(r1cの下位1ビット)‖r2d} …(15)
よって、式(15)、式(11b)、式(5d)より、次式(16)が導かれる。
rc3=S[T3[a3]の下位8ビット](+)r2d
=S[(a3+k3)mod(2^8)](+)r2d …(16)
また、式(15)、式(11c)、式(5d)より、次式(17)が導かれる。
={((a3+k3)mod(2^9))の上位1ビット}(+)(r1cの下位1ビット) …(17)
ここで、{((a3+k3)mod(2^9))の上位1ビット}は、バイトデータの加算(a3+k3)における上位バイトへの繰り上がり(0または1)であるので、以降は、これを「carry3」とすると、式(17)は次式(18)のように表すことができる。
次に、式(11d)、式(14c)、式(18)、式(7c)、式(6c)より、次式(19)が導かれる。
t2=RU2[ra2‖rca3]
=RU2[{a2(+)(r1cの上位8ビット)}‖carry3(+)(r1cの下位1ビット)}]
=RU2[(a2‖carry3)(+)r1c]
=U2[a2‖carry3](+){(r1bの下位1ビット)‖r2c}
=(T2[a2‖carry3]の上位1ビット)‖S[(T2[a2‖carry3]の下位8ビット)](+){(r1bの下位1ビット)‖r2c}…(19)
ここで、式(5c)より、次式(20)が導かれる。
T2[a2‖carry3]=(a2+carry3+k2)mod(2^9)
…(20)
式(20)、式(19)、式(11e)より、次式(21)が導かれる。
rc2=S[(T2[a2‖carry3]の下位8ビット)](+)r2c
=S[(a2+carry3+k2)mod(2^8)](+)r2c
…(21)
また、式(20)、式(19)、式(11f)より、次式(22)が導かれる。
rca2=(T2[a2‖carry3]の上位1ビット)(+)(r1bの下位1ビット)
={((a2+carry3+k2)mod(2^9))の上位1ビット}(+)(r1bの下位1ビット) …(22)
ここで、{((a3+k3)mod(2^9))の上位1ビット}は、バイトデータの加算(a3+k3)における上位バイトへの繰り上がり(0または1)であるので、以降は、これを「carry2」とすると、式(22)は次式(23)のように表すことができる。
以上から、次式(24)および(25)が得られる。
rc3=S[(a3+k3)mod(2^8)](+)r2d …(24)
rc2=S[(a2+carry3+k2)mod(2^8)](+)r2c
…(25)
上記と同様の式変形を繰り返すことにより、次式(26)および(27)が得られる。
rc1=S[(a1+carry2+k1)mod(2^8)](+)r2b
…(26)
rc0=S[(a0+carry1+k0)mod(2^8)](+)r2a
…(27)
ここで、carry2およびcarry1は、それぞれ、バイトデータの加算(a2+k2)および(a1+k1)における上位バイトへの繰り上がり(0または1)を表す。
RC=rc0‖rc1‖rc2‖rc3、
および
R2=r2a‖r2b‖r2c‖r2d
としたとき、図4の中間データCとの関係は、
RC=C(+)R2
となる。また、上記と同様の式変形を行うことによって、
RE=E(+)R3
であることが示される。ここで、
RE=re0‖re1‖re2‖re3
R3=r3a‖r3b‖r3c‖r3d
である。変換プログラムtPは、ランダム化出力データREに対して、図15のS206に示すように、RE(+)R3の演算を行うことにより、出力データEを導き出すことができる。即ち、プログラムtPの処理によって得られる出力データEは、プログラムPの処理によって得られる出力データEと等しくなることが示される。
なお、本実施の形態では、予めプログラム変換装置1によって生成した変換プログラムPを、暗号モジュール内のROMなどに予め記憶することを想定とした構成になっているが、この構成に限定されるものではない。例えば、図16に示すように、プログラム変換装置1と同じ処理を行うプログラム変換部41を暗号装置4の内部に具備し、暗号処理を行うたびに、暗号処理のプログラムPから変換プログラムtPを生成するような構成であってもよい。
Stanley Chow,Philip Eisen,Harold Johnson,Paul C. Van Oorschot「White−Box Cryptography and an AES Implementation」、Selected Areas in Cryptography(LNCS2595)所収、2003年 Springer−Verlag刊
y0=x0(+)k0、
y1=x1(+)k1、
y2=x2(+)k2、
y3=x3(+)k3
という4つの排他的論理和演算に分割することができる(S14)。各排他的論理和演算をテーブル化することにより、4つの排他的論理和演算は、変換テーブルTab0[ ]、Tab1[ ]、Tab2[ ]、Tab3[ ]を用いて、以下のように表すことができる(S16)。
y0=Tab0[x0]
y1=Tab1[x1]
y2=Tab2[x2]
y3=Tab3[x3]
y0、y1、y2、y3を結合することにより出力データYが得られる(S18)。このように、上記4つの排他的論理和演算をそれぞれテーブル化して変換テーブルTab0[ ]〜Tab3[ ]を作成することにより、1つの変換テーブルのみで算術加算または排他的論理和演算を表す場合に比べ、小さなテーブル容量(8ビット×2^8×4=1キロバイト)の変換テーブルで排他的論理和演算を表すことができる。
図3は、本発明の実施の形態に係るプログラム変換装置を用いて、暗号処理プログラムを変換する際の一構成例を示したブロック図である。プログラム変換装置1は、暗号処理のプログラムPに対して変換を行い、変換プログラムtPを出力する。ここで、プログラムPは、上述したような観測した暗号処理の中間値から暗号鍵データを解析する解読法に対する対策を、何ら行っていないプログラムである。変換プログラムtPは、上記解読法に対して対策を行ったプログラムである。実際に暗号化処理を行なう機器には、変換プログラムtPが実装される。
以下、前記プログラムPの一具体例を説明する。図4は、プログラムPの処理内容について、1つの処理を1つのブロックで表したブロック図である。また、図5は、プログラムPの処理内容を示したフローチャートである。図4および図5を用いて、プログラムPの処理について詳細に説明する。
テーブル変換部21a、21b、21c、21dは、それぞれ、b0、b1、b2、b3に対して、次式(2a)〜(2d)で示されるテーブル変換処理を行い、c0、c1、c2、c3を求める(S103)。ただし、c=S[b]は、配列S[ ]のb番目の要素(8ビット)を取り出してcとすることを表す。プログラムPは、これらを上位からc0、c1、c2、c3の順に連結して、32ビットの中間データCとする(S104)。
c1=S[b1] …(2b)
c2=S[b2] …(2c)
c3=S[b3] …(2d)
鍵データ加算部22は、中間データCと鍵データK2との算術加算を次式(3)に従って行い、中間データDを求める(S105)。プログラムPは、中間データDを、上位から8ビットずつのデータに分割し、それぞれd0、d1、d2、d3とする(S106)。
テーブル変換部23a、23b、23c、23dは、それぞれ、d0、d1、d2、d3に対して、次式(4a)〜(4d)で示されるテーブル変換処理を行い、e0、e1、e2、e3を求める(S107)。プログラムPは、これらを上位からe0、e1、e2、e3の順に連結して、32ビットのデータEとする(S108)。
e1=S[d1] …(4b)
e2=S[d2] …(4c)
e3=S[d3] …(4d)
プログラムPは、32ビットのデータEを、出力データEとして出力する(S109)。
次に、プログラム変換装置1の構成について説明する。図6は、プログラム変換装置1の内部構成の一例を示したブロック図である。
プログラム変換装置1は、暗号処理のプログラムPを、耐タンパ性を有し、かつ処理のテーブル化を現実的に実装可能な容量のテーブルで実現する変換プログラムtPに変換する装置であり、鍵データ抽出部10と、加算テーブル生成部11と、変換テーブル抽出部12と、テーブル融合部13と、乱数生成部14と、テーブルランダム化部15と、変換プログラム生成部16とを備えている。
図4に示すプログラムPの鍵データ加算部20は、入力データA(32ビット)と固定値である鍵データK1(32ビット)との算術加算(A+K1)mod(2^(32))を行い、演算結果である中間データB(32ビット)を生成する処理を行う。この鍵データ加算部20の処理を、単純にテーブル変換に置き換えるとすると、入力データAを入力、中間データBを出力とする変換テーブルとなる。このとき、入力データAおよび中間データBは、ともに32ビットデータである。このため、生成される変換テーブルの容量は、32ビット×2^(32)=16ギガバイトにもなってしまう。そこで、以下のような原理に従い、比較的コンパクトなテーブルでの実現を行う。
T1[x]=((xの上位8ビット)+(xの下位1ビット)+k1)mod(2^9) (x=0、1、…、511) …(5b)
T2[x]=((xの上位8ビット)+(xの下位1ビット)+k2)mod(2^9) (x=0、1、…、511) …(5c)
T3[x]=(x+k3)mod(2^9) (x=0、1、…、255)
…(5d)
以上をまとめると、加算テーブル生成部11は、鍵データK1を元に上記4つの式に従って、加算テーブルT0、T1、T2、T3を生成する。また、上記と同様に、鍵データ加算部22についても、加算テーブルV0、V1、V2、V3を生成する。そして、生成した加算テーブルT0、T1、T2、T3、V0、V1、V2、V3をテーブル融合部13に転送する。
変換テーブル抽出部12は、プログラムPから、変換テーブルSの配列データ(8ビット×256個)を抽出して、テーブル融合部13に転送する(図7のS26)。
テーブル融合部13は、加算テーブルT0と変換テーブルS、加算テーブルT1と変換テーブルS、加算テーブルT2と変換テーブルS、加算テーブルT3と変換テーブルSを、それぞれ融合して融合テーブルU0、U1、U2、U3を生成する。同様に、テーブル融合部13は、加算テーブルV0と変換テーブルS、加算テーブルV1と変換テーブルS、加算テーブルV2と変換テーブルS、加算テーブルV3と変換テーブルSを、それぞれ融合して融合テーブルW0、W1、W2、W3を生成する(図7のS28)。以下では、融合テーブルU0、U1、U2、U3を生成する処理(図7のS28)について説明するが、融合テーブルW0、W1、W2、W3を生成する処理についても全く同様である。
U1[x]=(T1[x]の上位1ビット)‖S[T1[x]の下位8ビット] (x=0、1、…、511) …(6b)
U2[x]=(T2[x]の上位1ビット)‖S[T2[x]の下位8ビット] (x=0、1、…、511) …(6c)
U3[x]=(T3[x]の上位1ビット)‖S[T3[x]の下位8ビット] (x=0、1、…、255) …(6d)
以上をまとめると、テーブル融合部13は、加算テーブルT0、T1、T2、T3、変換テーブルSを元に、上記4つの式に従って、融合テーブルU0、U1、U2、U3を生成する。また、テーブル融合部13は、上記と同様に、加算テーブルV0、V1、V2、V3、変換テーブルSから、融合テーブルW0、W1、W2、W3を生成する。そして、テーブル融合部13は、生成した融合テーブルU0、U1、U2、U3、W0、W1、W2、W3をテーブルランダム化部15に転送する(図7のS28)。
乱数生成部14は、12個の乱数r1a(9ビット)、r1b(9ビット)、r1c(9ビット)、r1d(8ビット)、r2a(8ビット)、r2b(8ビット)、r2c(8ビット)、r2d(8ビット)、r3a(8ビット)、r3b(9ビット)、r3c(9ビット)、r3d(9ビット)をそれぞれ生成し、テーブルランダム化部15に転送する(図7のS30)。
テーブルランダム化部15は、乱数生成部14で生成した12個の乱数を元に、融合テーブルU0、U1、U2、U3、W0、W1、W2、W3をそれぞれランダム化し、ランダム化融合変換テーブルRU0、RU1、RU2、RU3、RW0、RW1、RW2、RW3を生成する(図7のS32)。以下では、ランダム化融合変換テーブルRU0、RU1、RU2、RU3を生成する処理(図7のS32)について説明するが、RW0、RW1、RW2、RW3についても全く同様である。
RU1[x]=U1[x(+)r1b](+){(r1aの下位1ビット)‖r2b} (x=0、1、…、511) …(7b)
RU2[x]=U2[x(+)r1c](+){(r1bの下位1ビット)‖r2c} (x=0、1、…、511) …(7c)
RU3[x]=U3[x(+)r1d](+){(r1cの下位1ビット)‖r2d} (x=0、1、…、255) …(7d)
RW1[x]=V1[x(+){r2b‖(r3cの上位1ビット)}(+)r3b (x=0、1、…、511) …(8b)
RW2[x]=V2[x(+){r2c‖(r3dの上位1ビット)}](+)r3c (x=0、1、…、511) …(8c)
RW3[x]=V3[x(+)r2d](+)r3d (x=0、1、…、255) …(8d)
以上をまとめると、テーブルランダム化部15は、融合テーブルU0、U1、U2、U3と乱数r1a、r1b、r1c、r1d、r2a、r2b、r2c、r2dを元に、式(7a)〜(7d)に従って、ランダム化融合変換テーブルRU0、RU1、RU2、RU3を生成する。また、テーブルランダム化部15は、同様に、融合テーブルW0、W1、W2、W3と乱数r2a、r2b、r2c、r2d、r3a、r3b、r3c、r3dを元に、式(8a)〜(8d)に従って、ランダム化融合変換テーブルRW0、RW1、RW2、RW3を生成する。そして、生成したランダム化融合変換テーブルRU0、RU1、RU2、RU3、RW0、RW1、RW2、RW3を変換プログラム生成部16に転送する(図7のS32)。
変換プログラム生成部16は、ランダム化融合変換テーブルRU0、RU1、RU2、RU3、RW0、RW1、RW2、RW3から、変換プログラムtPを生成する(図7のS34)。図14は、変換プログラムtPの各処理をブロックとして表現したブロック図であり、図15は、変換プログラムtPの処理の流れを説明するフローチャートである。変換プログラムtPには、上述した手順を経て生成されたランダム化融合変換テーブルRU0、RU1、RU2、RU3、RW0、RW1、RW2、RW3が内部に設定されている。また、次式(9a)および(9b)のように設定された乱数R1(32ビット)およびR3(32ビット)も内部に設定されている。
R3=(r3a)‖(r3bの下位8ビット)‖(r3cの下位8ビット)‖(r3dの下位8ビット) …(9b)
まず、プログラムtPに対して入力データA(32ビット)が入力される(S200)。
変換プログラムtPは、ランダム化入力データRAを、上位から8ビットずつ分割して、ra0、ra1、ra2、ra3とする(S202)。
rc3=(t3の下位8ビット) …(11b)
rca3=(t3の上位1ビット) …(11c)
t2=RU2[ra2‖rca3] …(11d)
rc2=(t2の下位8ビット) …(11e)
rca2=(t2の上位1ビット) …(11f)
t1=RU1[ra1‖rca2] …(11g)
rc1=(t1の下位8ビット) …(11h)
rca1=(t1の上位1ビット) …(11i)
rc0=RU0[ra1‖rca1] …(11j)
ランダム化融合テーブル変換部36a、36b、36c、36dは、ランダム化中間データrc0、rc1、rc2、rc3に対して、次式(12a)〜(12j)に従った計算を順に行い、ランダム化出力データre0、re1、re2、re3を求める(S204)。
re3=(t3の下位8ビット) …(12b)
rcb3=(t3の上位1ビット) …(12c)
t2=RW2[rc2‖rcb3] …(12d)
re2=(t2の下位8ビット) …(12e)
rcb2=(t2の上位1ビット) …(12f)
t1=RW1[rc1‖rcb2] …(12g)
re1=(t1の下位8ビット) …(12h)
rcb1=(t1の上位1ビット) …(12i)
re0=RW0[rc1‖rcb1] …(12j)
変換プログラムtPは、ランダム化出力データre0、re1、re2、re3を上位からこの順序で連結して32ビットのランダム化出力データREとする(S205)。
E=RE(+)R3 …(13)
変換プログラムtPは、出力データEを出力する(S207)。
ここで、変換プログラムtPによって実行される暗号処理が、プログラムPによって実行される暗号処理と等価であることを説明する。即ち、任意の入力データAに対して、プログラムPの処理によって得られる出力データEと、変換プログラムtPによって得られる出力データEとが同じであることを説明する。
RA=A(+)R1
である。ここで、Aを上位から8ビットずつ分割して、a0、a1、a2、a3とすると、式(9a)より、次式(14a)〜(14d)に示す関係が成立する。
ra0=a0(+)(r1aの上位8ビット) …(14a)
ra1=a1(+)(r1bの上位8ビット) …(14b)
ra2=a2(+)(r1cの上位8ビット) …(14c)
ra3=a3(+)r1d …(14d)
次に、式(11a)、式(7d)、式(14d)、式(6d)より、次式(15)が導かれる。
t3=RU3[ra3]
=U3[ra3(+)r1d](+){(r1cの下位1ビット‖r2d)
=U3[a3](+){(r1cの下位1ビット)‖r2d}
={(T3[a3]の上位1ビット)‖S[T3[a3]の下位8ビット]}(+){(r1cの下位1ビット)‖r2d} …(15)
よって、式(15)、式(11b)、式(5d)より、次式(16)が導かれる。
rc3=S[T3[a3]の下位8ビット](+)r2d
=S[(a3+k3)mod(2^8)](+)r2d …(16)
また、式(15)、式(11c)、式(5d)より、次式(17)が導かれる。
={((a3+k3)mod(2^9))の上位1ビット}(+)(r1cの下位1ビット) …(17)
ここで、{((a3+k3)mod(2^9))の上位1ビット}は、バイトデータの加算(a3+k3)における上位バイトへの繰り上がり(0または1)であるので、以降は、これを「carry3」とすると、式(17)は次式(18)のように表すことができる。
次に、式(11d)、式(14c)、式(18)、式(7c)、式(6c)より、次式(19)が導かれる。
t2=RU2[ra2‖rca3]
=RU2[{a2(+)(r1cの上位8ビット)}‖{carry3(+)(r1cの下位1ビット)}]
=RU2[(a2‖carry3)(+)r1c]
=U2[a2‖carry3](+){(r1bの下位1ビット)‖r2c}
=(T2[a2‖carry3]の上位1ビット)‖S[(T2[a2‖carry3]の下位8ビット)](+){(r1bの下位1ビット)‖r2c}…(19)
ここで、式(5c)より、次式(20)が導かれる。
T2[a2‖carry3]=(a2+carry3+k2)mod(2^9)
…(20)
式(20)、式(19)、式(11e)より、次式(21)が導かれる。
rc2=S[(T2[a2‖carry3]の下位8ビット)](+)r2c
=S[(a2+carry3+k2)mod(2^8)](+)r2c
…(21)
また、式(20)、式(19)、式(11f)より、次式(22)が導かれる。
rca2=(T2[a2‖carry3]の上位1ビット)(+)(r1bの下位1ビット)
={((a2+carry3+k2)mod(2^9))の上位1ビット}(+)(r1bの下位1ビット) …(22)
ここで、{((a3+k3)mod(2^9))の上位1ビット}は、バイトデータの加算(a3+k3)における上位バイトへの繰り上がり(0または1)であるので、以降は、これを「carry2」とすると、式(22)は次式(23)のように表すことができる。
以上から、次式(24)および(25)が得られる。
rc3=S[(a3+k3)mod(2^8)](+)r2d …(24)
rc2=S[(a2+carry3+k2)mod(2^8)](+)r2c
…(25)
上記と同様の式変形を繰り返すことにより、次式(26)および(27)が得られる。
rc1=S[(a1+carry2+k1)mod(2^8)](+)r2b
…(26)
rc0=S[(a0+carry1+k0)mod(2^8)](+)r2a
…(27)
ここで、carry2およびcarry1は、それぞれ、バイトデータの加算(a2+k2)および(a1+k1)における上位バイトへの繰り上がり(0または1)を表す。
RC=rc0‖rc1‖rc2‖rc3、
および
R2=r2a‖r2b‖r2c‖r2d
としたとき、図4の中間データCとの関係は、
RC=C(+)R2
となる。また、上記と同様の式変形を行うことによって、
RE=E(+)R3
であることが示される。ここで、
RE=re0‖re1‖re2‖re3
R3=r3a‖r3b‖r3c‖r3d
である。変換プログラムtPは、ランダム化出力データREに対して、図15のS206に示すように、RE(+)R3の演算を行うことにより、出力データEを導き出すことができる。即ち、プログラムtPの処理によって得られる出力データEは、プログラムPの処理によって得られる出力データEと等しくなることが示される。
なお、本実施の形態では、予めプログラム変換装置1によって生成した変換プログラムPを、暗号モジュール内のROMなどに予め記憶することを想定とした構成になっているが、この構成に限定されるものではない。例えば、図16に示すように、プログラム変換装置1と同じ処理を行うプログラム変換部41を暗号装置4の内部に具備し、暗号処理を行うたびに、暗号処理のプログラムPから変換プログラムtPを生成するような構成であってもよい。
10 鍵データ抽出部
11 加算テーブル生成部
12 変換テーブル抽出部
13 テーブル融合部
14 乱数生成部
15 テーブルランダム化部
16 変換プログラム生成部
20、22、30a〜30d 鍵データ加算部
21a〜21d、23a〜23d テーブル変換部
Claims (11)
- 暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラム変換装置であって、
前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、
前記鍵データKを、最上位ビットよりNiビットのn個の部分鍵データki(i=0〜n−1)に分割する鍵データ分割手段と、
前記被加算データXを、最上位ビットよりNiビットのn個の部分被加算データxi(i=0〜n−1)に分割する被加算データ分割手段と、
i=0〜n−1の各々について、前記部分鍵データkiと、前記部分被加算データxiと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyiおよび繰り上がりデータciのうちの少なくとも前記加算データyiを含むデータを要素とし、前記部分被加算データxiおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxiを含むデータをインデックスとする算術加算テーブルaddiを作成する算術加算テーブル作成手段と、
i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記算術加算テーブルaddiを乱数に基づいてランダム化し、ランダム化変換テーブルRTabiを生成するランダム化変換テーブル生成手段とを備える
ことを特徴とするプログラム変換装置。 - 前記算術加算テーブル作成手段は、
i=0〜n−1の各々について、
i=n−1の場合には、前記部分鍵データkn−1と前記部分被加算データxn−1との算術加算結果の下位Nn−1ビットのデータを加算データyn−1とし、前記算術加算結果のNn−1+1ビット目のデータを繰り上がりデータcn−1とした場合に、前記加算データyn−1および前記繰り上がりデータcn−1を要素とし、前記部分被加算データxn−1をインデックスとする算術加算テーブルaddn−1を作成し、
i≧1かつi<n−1の場合には、前記部分鍵データkiと前記部分被加算データxiと前記繰り上がりデータci+1との算術加算結果の下位Niビットのデータを加算データyiとし、前記算術加算結果のNi+1ビット目のデータを繰り上がりデータciとした場合に、前記加算データyiおよび前記繰り上がりデータciを要素とし、前記部分被加算データxiと前記繰り上がりデータci+1とをインデックスとする算術加算テーブルaddiを作成し、
i=0の場合には、前記部分鍵データk0と前記部分被加算データx0と前記繰り上がりデータc1との算術加算結果の下位N0ビットのデータを加算データy0とした場合に、前記加算データy0を要素とし、前記部分被加算データx0と前記繰り上がりデータc1とをインデックスとする算術加算テーブルadd0を作成する
ことを特徴とする請求項1に記載のプログラム変換装置。 - 前記暗号処理プログラムは、さらに、前記鍵加算データEを、最上位ビットよりNiビットごとにn個に分割した部分鍵加算データZiに対して所定の変換処理Siを施す加算データ変換処理を含み(i=0〜n−1)、
前記ランダム化変換テーブル作成手段は、
i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記算術加算テーブルaddiと前記所定の変換処理Siとを融合して、前記部分被加算データxiおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxiを含むデータをインデックスとする融合テーブルUiを作成する融合テーブル作成手段と、
i=0〜n−1の各々について、前記融合テーブル作成手段で作成された融合テーブルUiを前記乱数に基づいてランダム化し、ランダム化変換テーブルRTabiを生成する生成手段とを有する
ことを特徴とする請求項1に記載のプログラム変換装置。 - 平文を暗号化し、暗号文を生成する暗号処理装置であって、
暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラム変換手段と、
前記プログラム変換手段で生成された前記変換暗号処理プログラムに従って、平文を暗号化し、暗号文を生成する暗号文生成手段とを備え、
前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、
前記プログラム変換手段は、
前記鍵データKを、最上位ビットよりNiビットのn個の部分鍵データki(i=0〜n−1)に分割する鍵データ分割手段と、
前記被加算データXを、最上位ビットよりNiビットのn個の部分被加算データxi(i=0〜n−1)に分割する被加算データ分割手段と、
i=0〜n−1の各々について、前記部分鍵データkiと、前記部分被加算データxiと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyiおよび繰り上がりデータciのうちの少なくとも前記加算データyiを含むデータを要素とし、前記部分被加算データxiおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxiを含むデータをインデックスとする算術加算テーブルaddiを作成する算術加算テーブル作成手段と、
i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記加算テーブルaddiを乱数に基づいてランダム化し、ランダム化変換テーブルRTabiを生成するランダム化変換テーブル生成手段とを備える
ことを特徴とする暗号処理装置。 - N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を実行する暗号処理装置であって、
前記被加算データXを、最上位ビットよりNiビットのn個の部分被加算データxi(i=0〜n−1)に分割する被加算データ分割手段と、
i=0〜n−1の各々について、前記部分被加算データxiに乱数raiを作用させることにより得られるランダム化部分被加算データrxiを少なくともインデックスの一部としたときの、ランダム化変換テーブルRTabiの要素であるランダム化鍵加算データreiを取得するランダム化鍵加算データ取得手段とを備え、
前記ランダム化変換テーブルRTabiは、
前記鍵データKを、最上位ビットよりNiビットのn個の部分鍵データki(i=0〜n−1)に分割し、
i=0〜n−1の各々について、前記部分鍵データkiと、前記部分被加算データxiと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyiおよび繰り上がりデータciのうちの少なくとも前記加算データyiを含むデータを要素とし、前記部分被加算データxiおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxiを含むデータをインデックスとする算術加算テーブルaddiを作成し、
i=0〜n−1の各々について、前記算術加算テーブルaddiを乱数に基づいてランダム化することにより得られるテーブルである
ことを特徴とする暗号処理装置。 - 暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラム変換方法であって、
前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、
前記鍵データKを、最上位ビットよりNiビットのn個の部分鍵データki(i=0〜n−1)に分割する鍵データ分割ステップと、
前記被加算データXを、最上位ビットよりNiビットのn個の部分被加算データxi(i=0〜n−1)に分割する被加算データ分割ステップと、
i=0〜n−1の各々について、前記部分鍵データkiと、前記部分被加算データxiと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyiおよび繰り上がりデータciのうちの少なくとも前記加算データyiを含むデータを要素とし、前記部分被加算データxiおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxiを含むデータをインデックスとする算術加算テーブルaddiを作成する算術加算テーブル作成ステップと、
i=0〜n−1の各々について、前記算術加算テーブル作成ステップで作成された前記算術加算テーブルaddiを乱数に基づいてランダム化し、ランダム化変換テーブルRTabiを生成するランダム化変換テーブル生成ステップとを含む
ことを特徴とするプログラム変換方法。 - 暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラムであって、
前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、
前記鍵データKを、最上位ビットよりNiビットのn個の部分鍵データki(i=0〜n−1)に分割する鍵データ分割ステップと、
前記被加算データXを、最上位ビットよりNiビットのn個の部分被加算データxi(i=0〜n−1)に分割する被加算データ分割ステップと、
i=0〜n−1の各々について、前記部分鍵データkiと、前記部分被加算データxiと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyiおよび繰り上がりデータciのうちの少なくとも前記加算データyiを含むデータを要素とし、前記部分被加算データxiおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxiを含むデータをインデックスとする算術加算テーブルaddiを作成する算術加算テーブル作成ステップと、
i=0〜n−1の各々について、前記算術加算テーブル作成ステップで作成された前記算術加算テーブルaddiを乱数に基づいてランダム化し、ランダム化変換テーブルRTabiを生成するランダム化変換テーブル生成ステップとをコンピュータに実行させる
ことを特徴とするプログラム。 - 暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成する集積回路であって、
前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、
前記鍵データKを、最上位ビットよりNiビットのn個の部分鍵データki(i=0〜n−1)に分割する鍵データ分割手段と、
前記被加算データXを、最上位ビットよりNiビットのn個の部分被加算データxi(i=0〜n−1)に分割する被加算データ分割手段と、
i=0〜n−1の各々について、前記部分鍵データkiと、前記部分被加算データxiと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyiおよび繰り上がりデータciのうちの少なくとも前記加算データyiを含むデータを要素とし、前記部分被加算データxiおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxiを含むデータをインデックスとする算術加算テーブルaddiを作成する算術加算テーブル作成手段と、
i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記算術加算テーブルaddiを乱数に基づいてランダム化し、ランダム化変換テーブルRTabiを生成するランダム化変換テーブル生成手段とを備える
ことを特徴とする集積回路。 - N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を実行する暗号処理方法であって、
前記被加算データXを、最上位ビットよりNiビットのn個の部分被加算データxi(i=0〜n−1)に分割する被加算データ分割ステップと、
i=0〜n−1の各々について、前記部分被加算データxiに乱数raiを作用させることにより得られるランダム化部分被加算データrxiを少なくともインデックスの一部としたときの、ランダム化変換テーブルRTabiの要素であるランダム化鍵加算データreiを取得するランダム化鍵加算データ取得ステップとを含み、
前記ランダム化変換テーブルRTabiは、
前記鍵データKを、最上位ビットよりNiビットのn個の部分鍵データki(i=0〜n−1)に分割し、
i=0〜n−1の各々について、前記部分鍵データkiと、前記部分被加算データxiと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyiおよび繰り上がりデータciのうちの少なくとも前記加算データyiを含むデータを要素とし、前記部分被加算データxiおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxiを含むデータをインデックスとする算術加算テーブルaddiを作成し、
i=0〜n−1の各々について、前記算術加算テーブルaddiを乱数に基づいてランダム化することにより得られるテーブルである
ことを特徴とする暗号処理方法。 - N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を実行するプログラムであって、
前記被加算データXを、最上位ビットよりNiビットのn個の部分被加算データxi(i=0〜n−1)に分割する被加算データ分割ステップと、
i=0〜n−1の各々について、前記部分被加算データxiに乱数raiを作用させることにより得られるランダム化部分被加算データrxiを少なくともインデックスの一部としたときの、ランダム化変換テーブルRTabiの要素であるランダム化鍵加算データreiを取得するランダム化鍵加算データ取得ステップとをコンピュータに実行させ、
前記ランダム化変換テーブルRTabiは、
前記鍵データKを、最上位ビットよりNiビットのn個の部分鍵データki(i=0〜n−1)に分割し、
i=0〜n−1の各々について、前記部分鍵データkiと、前記部分被加算データxiと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyiおよび繰り上がりデータciのうちの少なくとも前記加算データyiを含むデータを要素とし、前記部分被加算データxiおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxiを含むデータをインデックスとする算術加算テーブルaddiを作成し、
i=0〜n−1の各々について、前記算術加算テーブルaddiを乱数に基づいてランダム化することにより得られるテーブルである
ことを特徴とするプログラム。 - N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を実行する集積回路であって、
前記被加算データXを、最上位ビットよりNiビットのn個の部分被加算データxi(i=0〜n−1)に分割する被加算データ分割手段と、
i=0〜n−1の各々について、前記部分被加算データxiに乱数raiを作用させることにより得られるランダム化部分被加算データrxiを少なくともインデックスの一部としたときの、ランダム化変換テーブルRTabiの要素であるランダム化鍵加算データreiを取得するランダム化鍵加算データ取得手段とを備え、
前記ランダム化変換テーブルRTabiは、
前記鍵データKを、最上位ビットよりNiビットのn個の部分鍵データki(i=0〜n−1)に分割し、
i=0〜n−1の各々について、前記部分鍵データkiと、前記部分被加算データxiと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyiおよび繰り上がりデータciのうちの少なくとも前記加算データyiを含むデータを要素とし、前記部分被加算データxiおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxiを含むデータをインデックスとする算術加算テーブルaddiを作成し、
i=0〜n−1の各々について、前記算術加算テーブルaddiを乱数に基づいてランダム化することにより得られるテーブルである
ことを特徴とする集積回路。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005131960 | 2005-04-28 | ||
JP2005131960 | 2005-04-28 | ||
PCT/JP2006/308582 WO2006118086A1 (ja) | 2005-04-28 | 2006-04-24 | プログラム変換装置、暗号処理装置、暗号処理方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008175081A Division JP4801699B2 (ja) | 2005-04-28 | 2008-07-03 | 暗号処理装置および暗号処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP4180094B2 JP4180094B2 (ja) | 2008-11-12 |
JPWO2006118086A1 true JPWO2006118086A1 (ja) | 2008-12-18 |
Family
ID=37307886
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006523469A Expired - Fee Related JP4180094B2 (ja) | 2005-04-28 | 2006-04-24 | プログラム変換装置、暗号処理装置、暗号処理方法 |
JP2008175081A Expired - Fee Related JP4801699B2 (ja) | 2005-04-28 | 2008-07-03 | 暗号処理装置および暗号処理方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008175081A Expired - Fee Related JP4801699B2 (ja) | 2005-04-28 | 2008-07-03 | 暗号処理装置および暗号処理方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7724897B2 (ja) |
EP (1) | EP1876577A1 (ja) |
JP (2) | JP4180094B2 (ja) |
CN (1) | CN101167114A (ja) |
WO (1) | WO2006118086A1 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8175265B2 (en) | 2008-09-02 | 2012-05-08 | Apple Inc. | Systems and methods for implementing block cipher algorithms on attacker-controlled systems |
KR101504338B1 (ko) * | 2009-03-04 | 2015-03-23 | 삼성전자주식회사 | 불휘발성 메모리 장치의 동작 방법 |
CN102447556A (zh) * | 2010-10-14 | 2012-05-09 | 上海华虹集成电路有限责任公司 | 一种基于随机偏移的抗差分功耗分析des加密方法 |
JP5755970B2 (ja) * | 2011-08-26 | 2015-07-29 | 株式会社東芝 | 演算装置 |
RU2620712C2 (ru) * | 2012-01-09 | 2017-05-29 | Конинклейке Филипс Н.В. | Устройство виртуальной машины, имеющее управляемую ключом обфускацию, и способ |
US10032219B2 (en) | 2013-09-24 | 2018-07-24 | Chicago Mercantile Exchange Inc. | Secure exchange feed market data embargo |
US9697569B2 (en) | 2013-12-09 | 2017-07-04 | Chicago Mercantile Exchange Inc. | Exchange feed for trade reporting having reduced redundancy |
WO2015088894A1 (en) * | 2013-12-09 | 2015-06-18 | Chicago Mercantile Exchange Inc. | Secure exchange feed market data embargo |
CN103825723B (zh) * | 2014-01-24 | 2019-05-03 | 深圳市太和物联信息技术有限公司 | 一种加密方法和装置 |
US10496372B2 (en) | 2014-09-30 | 2019-12-03 | Koninklijke Philips N.V. | Electronic calculating device for performing obfuscated arithmetic |
DE102014016548A1 (de) * | 2014-11-10 | 2016-05-12 | Giesecke & Devrient Gmbh | Verfahren zum Testen und zum Härten von Softwareapplikationen |
JP6368051B2 (ja) | 2014-12-12 | 2018-08-01 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | 電子生成装置 |
KR101623503B1 (ko) | 2015-02-04 | 2016-05-23 | 국민대학교산학협력단 | Lea 블록암호의 화이트박스 암호 구현 장치 및 방법 |
US11257153B2 (en) | 2015-05-06 | 2022-02-22 | Chicago Mercantile Exchange Inc. | Tokens, and the use thereof, for public distribution of messages having a private association with a subset of the message recipients |
US11411907B2 (en) | 2016-05-16 | 2022-08-09 | Chicago Mercantile Exchange Inc. | Systems and methods for consolidating multiple feed data |
US10268601B2 (en) | 2016-06-17 | 2019-04-23 | Massachusetts Institute Of Technology | Timely randomized memory protection |
US10310991B2 (en) * | 2016-08-11 | 2019-06-04 | Massachusetts Institute Of Technology | Timely address space randomization |
US10127160B2 (en) * | 2016-09-20 | 2018-11-13 | Alexander Gounares | Methods and systems for binary scrambling |
JP6834771B2 (ja) * | 2017-05-19 | 2021-02-24 | 富士通株式会社 | 通信装置および通信方法 |
CN107832076A (zh) * | 2017-10-24 | 2018-03-23 | 北京天地玛珂电液控制系统有限公司 | 一种工业控制器程序升级管理系统 |
WO2021025631A1 (en) * | 2019-08-05 | 2021-02-11 | Securify Bilisim Teknolojileri Ve Guvenligi Egt. Dan. San. Ve Tic. Ltd. Sti. | A method for generating digital signatures |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1050133B2 (en) | 1998-01-02 | 2009-05-27 | Cryptography Research Inc. | Leak-resistant cryptographic method and apparatus |
JP2002519722A (ja) * | 1998-06-03 | 2002-07-02 | クリプターグラフィー リサーチ インコーポレイテッド | スマートカードおよび他の暗号システム用の、漏洩を最小に抑える、改良desおよび他の暗号プロセス |
FR2789535B1 (fr) * | 1999-02-04 | 2001-09-28 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a cle secrete contre les attaques par analyse physique |
AU762650B2 (en) | 1999-09-29 | 2003-07-03 | Hitachi Limited | Device, program or system for processing secret information |
JP4596686B2 (ja) | 2001-06-13 | 2010-12-08 | 富士通株式会社 | Dpaに対して安全な暗号化 |
JP4034585B2 (ja) | 2002-01-28 | 2008-01-16 | 松下電器産業株式会社 | 楕円曲線演算装置及び楕円曲線演算方法 |
JP4203944B2 (ja) | 2002-01-28 | 2009-01-07 | パナソニック株式会社 | 楕円曲線演算装置及び楕円曲線演算方法 |
JP3998616B2 (ja) * | 2003-09-10 | 2007-10-31 | 株式会社東芝 | 暗号化/復号モジュール |
US7899190B2 (en) * | 2004-04-16 | 2011-03-01 | Research In Motion Limited | Security countermeasures for power analysis attacks |
-
2006
- 2006-04-24 EP EP06732292A patent/EP1876577A1/en not_active Withdrawn
- 2006-04-24 JP JP2006523469A patent/JP4180094B2/ja not_active Expired - Fee Related
- 2006-04-24 CN CNA2006800141499A patent/CN101167114A/zh active Pending
- 2006-04-24 WO PCT/JP2006/308582 patent/WO2006118086A1/ja active Application Filing
- 2006-04-26 US US11/912,489 patent/US7724897B2/en not_active Expired - Fee Related
-
2008
- 2008-07-03 JP JP2008175081A patent/JP4801699B2/ja not_active Expired - Fee Related
-
2010
- 2010-04-08 US US12/756,440 patent/US8184805B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP4801699B2 (ja) | 2011-10-26 |
US8184805B2 (en) | 2012-05-22 |
US20100195822A1 (en) | 2010-08-05 |
WO2006118086A1 (ja) | 2006-11-09 |
JP4180094B2 (ja) | 2008-11-12 |
EP1876577A1 (en) | 2008-01-09 |
US7724897B2 (en) | 2010-05-25 |
CN101167114A (zh) | 2008-04-23 |
US20090060176A1 (en) | 2009-03-05 |
JP2008233941A (ja) | 2008-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4180094B2 (ja) | プログラム変換装置、暗号処理装置、暗号処理方法 | |
JP5242560B2 (ja) | 暗号化装置、復号化装置、暗号化方法及び集積回路 | |
Mohd et al. | Modeling and optimization of the lightweight HIGHT block cipher design with FPGA implementation | |
US7720225B2 (en) | Table splitting for cryptographic processes | |
JP4840782B2 (ja) | プログラム変換装置、セキュア処理装置、コンピュータプログラム及び記録媒体 | |
JP2005215688A (ja) | S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法 | |
EP1833190A1 (en) | Table splitting for cryptographic processes | |
JP2003152702A (ja) | 情報処理装置 | |
JP2007195132A (ja) | 暗号処理装置 | |
Priyanka et al. | FPGA implementation of image encryption and decryption using AES 128-bit core | |
Shahmirzadi et al. | New first-order secure AES performance records | |
JP2004212828A (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
Dakate et al. | Performance comparison of symmetric data encryption techniques | |
JPWO2015156020A1 (ja) | 情報処理装置、プログラム及び記憶媒体 | |
WO2003090185A1 (en) | Key generation device, encoding/decoding device, and key generation method | |
Sohel Rana et al. | A survey paper of lightweight block ciphers based on their different design architectures and performance metrics | |
Rashidi | Efficient and high‐throughput application‐specific integrated circuit implementations of HIGHT and PRESENT block ciphers | |
CN106656500A (zh) | 加密装置及方法 | |
JP2005134478A (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
Pandey et al. | A unified architecture for AES/PRESENT ciphers and its usage in an SoC environment | |
JP2005031471A (ja) | 暗号処理装置、および暗号処理方法 | |
Andrzejczak et al. | SAT attacks on ARX ciphers with automated equations generation | |
JP2006054568A (ja) | 暗号化装置、復号化装置、および方法、並びにコンピュータ・プログラム | |
Aljazeera et al. | Design and characterization of LBlock cryptocore | |
Kotel et al. | Lightweight encryption algorithm based on modified XTEA for low-resource embedded devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20080729 |
|
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: 20080826 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4180094 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: 20110905 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110905 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120905 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130905 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |