JPWO2006118086A1 - プログラム変換装置、暗号処理装置、暗号処理方法 - Google Patents

プログラム変換装置、暗号処理装置、暗号処理方法 Download PDF

Info

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
Application number
JP2006523469A
Other languages
English (en)
Other versions
JP4180094B2 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Application granted granted Critical
Publication of JP4180094B2 publication Critical patent/JP4180094B2/ja
Publication of JPWO2006118086A1 publication Critical patent/JPWO2006118086A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details 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

算術加算処理を実行して暗号処理を行うプログラム(P)を変換して、プログラム(P)と等価な処理を行う変換プログラム(tP)を生成するプログラム変換装置(1)であって、プログラム(P)から鍵データを抽出する鍵データ抽出部(10)と、抽出された鍵データから加算テーブルを生成する加算テーブル生成部(11)と、プログラム(P)から変換テーブルを抽出する変換テーブルデータ抽出部(12)と、生成された加算テーブルと抽出された変換テーブルとを融合して融合テーブルを生成するテーブル融合部(13)と、乱数を生成する乱数生成部(14)と、生成された乱数を元に、融合テーブルをランダム化することにより、ランダム化融合テーブルを作成するテーブルランダム化部(15)と、作成されたランダム化融合テーブルを元に、変換プログラム(tP)を生成する変換プログラム生成部(16)とを備える。

Description

本発明は、プログラム変換装置に関し、特に、暗号処理を行うプログラムを変換するプログラム変換装置に関する。
近年、ソフトウェアまたはハードウェアで実装された暗号モジュールに対して、暗号処理を行う際の中間データを何らかの手法を用いて解析し、その中間データをもとにして、暗号鍵データを解読する解読法が各種考案されている。例えば、ソフトウェアで実装された暗号モジュールの場合には、デバッガなどの開発用ツールを使用することにより、レジスタに一時記憶される暗号処理の中間データを直接入手することが可能となる。このため、この中間データをもとにした暗号鍵データの解析が可能である。また、暗号処理中に消費される電力量を測定することによって、暗号処理の中間データを推定して、暗号鍵データの解析を行うSimple Power Analysis、やDifferential Power Analysisといった解読法が提案されている。この解読法は、ソフトウェアおよびハードウェアの両方の暗号モジュールに対して適用可能である。
上記のような解読法に対して安全な暗号実装技術として、非特許文献1にWhite−Box Cryptography技術が開示されている。図1は、White−Box Cryptography技術の一例を示す図である。本技術では、最初に、鍵データを固定としたときの暗号処理をテーブル化する。「処理のテーブル化」というのは、暗号処理時の各変換処理の入力および出力の対応関係を変換テーブルの形式で表すことである。すなわち、入力をインデックスとし、出力を要素とする変換テーブルを作成する。以下、本明細書中では、テーブルを作成する際には、入力をインデックスとし、出力を要素とする。例えば、8ビットの入力データXに対して、8ビットの鍵データKとの排他的論理和演算を行い、8ビットの演算結果を出力データYとするような暗号処理の場合(S2)、鍵データが固定値であれば、8ビット入力8ビット出力の固定的な変換と見ることができる。このようにして、暗号処理の各変換処理を全てテーブル化する(S4)。次に、得られた変換テーブルをそれぞれランダムに発生させた乱数によってランダム化する。具体的には、例えば、Y=Tab[X]で表されるテーブル変換(Xは入力、Yは出力、Tab[ ]は変換テーブルの配列)に対しては、乱数r1、r2を用いて、rY=Tab[X(+)r1](+)r2として与えられる変換にランダム化する(ここで(+)は、ビット毎の排他的論理和演算を表す)(S6)。こうして得られた、ランダム化変換を改めてテーブル化して、ランダム化テーブルrTab[ ]を得る(S8)。このランダム化処理を全てのテーブル変換に対して行い、得られるランダム化テーブルによるテーブル変換処理からなるランダム化暗号処理を、暗号モジュールとして実装する。
上記のように、乱数によって、各テーブル変換の入出力データは、ランダム化されて実際の暗号処理の中間値とは異なる値となる。これにより、暗号処理実行途中のレジスタの値を観測しても、上記ランダム化された中間値しか得ることができず、解読者は、暗号鍵データの解析が困難になる。非特許文献1では、米国次世代標準暗号AES(Advanced Encryption Standard)に対して、上記White−Box Cryptography技術を適用した場合の具体的な方法について詳細に開示されている。White−Box Cryptography技術では、暗号処理の各処理をいかにテーブル化するかが、重要なポイントである。特に、いかに容量の小さな変換テーブルにするかが重要である。
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刊
しかしながら、上記従来技術は、算術加算のような容量の小さな変換テーブルにテーブル化することが難しい演算を使用している暗号処理には適用が困難であるという課題がある。例えば、32ビットの鍵データKと32ビットの入力データXとの算術加算演算を行ってその結果Yを出力とするような処理Y=X+Kを、テーブル化する場合、上位桁への繰り上がりが存在するために、単純には、32ビット入出力のテーブル変換Y=Tab[X]とするしかない。このとき、変換テーブルTab[ ]の容量は、32ビット×2^(32)=16ギガバイトにもなり、現実的に実装可能なテーブル容量とならない(ここでα^βは、αのβ乗を表す)。
一方、上記の算術加算の代わりに排他的論理和演算Y=X(+)Kを使用している場合のテーブル化について説明する。図2は、排他的論理和演算のテーブル化について説明するための図である。
排他的論理和演算Y=X(+)Kは(S12)、各々32ビットの入力データXおよび鍵データKを、4つの8ビットのデータx0、x1、x2、x3およびk0、k1、k2、k3に分割することにより、
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キロバイト)の変換テーブルで排他的論理和演算を表すことができる。
上記AES暗号や、DES(Data Encryption Standard)暗号の場合には、鍵データとの排他的論理和演算が暗号処理に使用されているため、上記のようにして小さな容量の変換テーブルによるテーブル化が可能である。しかし、算術加算演算を用いた暗号については、上述のように、演算時に上位桁への繰り上がりが存在するため、現実的に実装可能な容量の変換テーブルでのテーブル化が困難であるという問題がある。
本発明は、上述の課題を解決するためのものであり、算術加算演算を用いた暗号処理に対しても、暗号処理の中間値を解析することによって暗号鍵データを特定するような解読方法に対して安全に暗号化を行なうことができ、かつ、現実的なコストでの実装が可能なプログラム変換装置および暗号処理装置を提供することを目的とする。
上記目的を達成するために、本発明のある局面に係るプログラム変換装置は、暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラム変換装置であって、前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割する鍵データ分割手段と、前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割手段と、i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成する算術加算テーブル作成手段と、i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記算術加算テーブルaddを乱数に基づいてランダム化し、ランダム化変換テーブルRTabを生成するランダム化変換テーブル生成手段とを備える。
この構成によると、下位桁からの上位桁への繰り上がりを考慮して、Nビットのデータ同士の算術加算演算をn個の算術加算テーブルで表現した変換暗号処理プログラムを生成している。このため、1つの算術加算テーブルで算術加算演算を実装する場合に比べ、算術加算テーブルの容量を小さくすることができる。このため、算術加算演算を含む変換暗号処理プログラムを現実的なコストで実装することができる。しかも、算術加算テーブルをランダム化することにより、ランダム化変換テーブルを生成している。このため、各種の解読方法により暗号化処理を行う際の中間値を取得することができたとしても、当該中間値から鍵データKを解読することが困難となり、安全に暗号化処理を行うことができる変換暗号処理プログラムを提供することができる。
好ましくは、前記暗号処理プログラムは、さらに、前記鍵加算データEを、最上位ビットよりNビットごとにn個に分割した部分鍵加算データZに対して所定の変換処理Sを施す加算データ変換処理を含み(i=0〜n−1)、前記ランダム化変換テーブル作成手段は、i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記算術加算テーブルaddと前記所定の変換処理Sとを融合して、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする融合テーブルUを作成する融合テーブル作成手段と、i=0〜n−1の各々について、前記融合テーブル作成手段で作成された融合テーブルUを前記乱数に基づいてランダム化し、ランダム化変換テーブルRTabを生成する生成手段とを有する。
算術加算テーブルと所定の変換処理とを融合して、融合テーブルを作成している。このため、テーブルの容量を小さくすることができ、現実的なコストで実装することができる変換暗号処理プログラムを生成することができる。
本発明の他の局面に係る暗号処理装置は、平文を暗号化し、暗号文を生成する暗号処理装置であって、暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラム変換手段と、前記プログラム変換手段で生成された前記変換暗号処理プログラムに従って、平文を暗号化し、暗号文を生成する暗号文生成手段とを備え、前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、前記プログラム変換手段は、前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割する鍵データ分割手段と、前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割手段と、i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成する算術加算テーブル作成手段と、i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記算術加算テーブルaddを乱数に基づいてランダム化し、ランダム化変換テーブルRTabを生成するランダム化変換テーブル生成手段とを備える。
この構成によると、暗号処理を行うたびに、上述したランダム化変換テーブルを作成することができる。このため、平文を暗号化するごとにランダム化変換テーブルが異なることになる。よって、中間値から鍵データを解読することがより困難となり、安全に暗号化処理を行うことができる。
本発明のさらに他の局面に係る暗号処理装置は、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を実行する暗号処理装置であって、前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割手段と、i=0〜n−1の各々について、前記部分被加算データxに乱数raを作用させることにより得られるランダム化部分被加算データrxを少なくともインデックスの一部としたときの、ランダム化変換テーブルRTabの要素であるランダム化鍵加算データreを取得するランダム化鍵加算データ取得手段とを備え、前記ランダム化変換テーブルRTabは、前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割し、i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成し、i=0〜n−1の各々について、前記算術加算テーブルaddを乱数に基づいてランダム化することにより得られるテーブルである。
この構成によると、下位桁からの上位桁への繰り上がりを考慮して、Nビットのデータ同士の算術加算演算をn個のランダム化変換テーブルで表現している。このため、算術加算演算を含む暗号処理装置を現実的なコストで実装できる。しかも、ランダム化変換テーブルを用いているため、各種の解読方法により暗号化処理を行う際の中間値を取得することができたとしても、当該中間値から鍵データKを解読することが困難となり、安全に暗号化処理を行うことができる。
なお、本発明は、このような特徴的な手段を備えるプログラム変換装置や暗号処理装置として実現することができるだけでなく、プログラム変換装置や暗号処理装置に含まれる特徴的な手段をステップとするプログラム変換方法や暗号処理方法として実現したり、プログラム変換方法や暗号処理方法に含まれる特徴的なステップをコンピュータに実行させるためのプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM(Compact Disc−Read Only Memory)等の記録媒体やインターネット等の通信ネットワークを介して流通させることができるのは言うまでもない。
本発明のプログラム変換装置によれば、算術加算を、データ幅の小さな複数のキャリー付き算術加算に分割した上で、それらを算術加算テーブルにテーブル化する。さらに、算術加算テーブルの各々を乱数を元にランダム化して、ランダム化変換テーブルを作成する。これにより、実装する変換テーブルのテーブル容量を従来よりも削減しつつ、暗号処理実行中のレジスタデータを観測することによって暗号鍵データを解析する解読法や、暗号処理中の消費電力量から暗号鍵データを解析するような解読法に対しても、安全に暗号処理を実行することができる。
図1は、White−Box Cryptography技術の一例を示す図である。 図2は、排他的論理和演算のテーブル化について説明するための図である。 図3は、本発明の実施の形態に係るプログラム変換装置を用いてプログラムPを変換する場合の構成を示すブロック図である。 図4は、本発明の実施の形態に係るプログラムPが行う暗号処理の構成を示すブロック図である。 図5は、本発明の実施の形態に係るプログラムPが行う暗号処理手順を示すフローチャートである。 図6は、本発明の実施の形態に係るプログラム変換装置の構成を示すブロック図である。 図7は、本発明の実施の形態に係るプログラム変換装置が実行する処理のフローチャートである。 図8は、本発明の実施の形態に係る鍵データ加算部の他の構成を示すブロック図である。 図9は、本発明の実施の形態に係る鍵データ加算部の変換テーブルを用いた他の構成を示すブロック図である。 図10は、本発明の実施の形態に係る鍵データ加算部の変換テーブルと、テーブル変換部とからなる構成を示すブロック図である。 図11は、図10に示す構成と等価な別構成を示すブロック図である。 図12は、図11に示す融合テーブル変換部をランダム化した場合の構成を示すブロック図である。 図13は、本発明の実施の形態に係る融合変換テーブルをランダム化した場合の構成を示すブロック図である。 図14は、本発明の実施の形態に係る変換プログラムtPの各処理をブロックとして表現したブロック図である。 図15は、本発明の実施の形態に係る変換プログラムtPの各処理を示すフローチャートである。 図16は、本発明の実施の形態に係る暗号処理装置の構成を示すブロック図である。
符号の説明
1 プログラム変換装置
10 鍵データ抽出部
11 加算テーブル生成部
12 変換テーブル抽出部
13 テーブル融合部
14 乱数生成部
15 テーブルランダム化部
16 変換プログラム生成部
20、22、30a〜30d 鍵データ加算部
21a〜21d、23a〜23d テーブル変換部
以下、本発明の実施の形態について、図面を参照しながら説明する。
<全体構成>
図3は、本発明の実施の形態に係るプログラム変換装置を用いて、暗号処理プログラムを変換する際の一構成例を示したブロック図である。プログラム変換装置1は、暗号処理のプログラムPに対して変換を行い、変換プログラムtPを出力する。ここで、プログラムPは、上述したような観測した暗号処理の中間値から暗号鍵データを解析する解読法に対する対策を、何ら行っていないプログラムである。変換プログラムtPは、上記解読法に対して対策を行ったプログラムである。実際に暗号化処理を行なう機器には、変換プログラムtPが実装される。
<プログラムPの処理>
以下、前記プログラムPの一具体例を説明する。図4は、プログラムPの処理内容について、1つの処理を1つのブロックで表したブロック図である。また、図5は、プログラムPの処理内容を示したフローチャートである。図4および図5を用いて、プログラムPの処理について詳細に説明する。
プログラムPは、入力データA(32ビット)に対して、鍵データK1およびK2(各32ビット)を用いて暗号処理を行い、出力データE(32ビット)を出力する。ここで、K1およびK2は、プログラムP内に設定された秘密の固定値である。また、プログラムPは、予め8ビット×256個の固定値要素からなる配列S[ ]を内部に保持している。以下、プログラムPの処理手順について順を追って説明する。
まず、入力データAが鍵データ加算部20に入力される(S100)。
鍵データ加算部20は、入力データAと鍵データK1との算術加算を次式(1)に従って行い、中間データBを求める(S101)。ただし、(X mod α)は、Xをαで割り算したときの余りを表す。そして、中間データBを、上位から8ビットずつのデータに分割し、それぞれb0、b1、b2、b3とする(S102)。
B=(A+K1)mod(2^(32)) …(1)
テーブル変換部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)。
c0=S[b0] …(2a)
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)。
D=(C+K2)mod(2^(32)) …(3)
テーブル変換部23a、23b、23c、23dは、それぞれ、d0、d1、d2、d3に対して、次式(4a)〜(4d)で示されるテーブル変換処理を行い、e0、e1、e2、e3を求める(S107)。プログラムPは、これらを上位からe0、e1、e2、e3の順に連結して、32ビットのデータEとする(S108)。
e0=S[d0] …(4a)
e1=S[d1] …(4b)
e2=S[d2] …(4c)
e3=S[d3] …(4d)
プログラムPは、32ビットのデータEを、出力データEとして出力する(S109)。
<プログラム変換装置1の構成>
次に、プログラム変換装置1の構成について説明する。図6は、プログラム変換装置1の内部構成の一例を示したブロック図である。
プログラム変換装置1は、暗号処理のプログラムPを、耐タンパ性を有し、かつ処理のテーブル化を現実的に実装可能な容量のテーブルで実現する変換プログラムtPに変換する装置であり、鍵データ抽出部10と、加算テーブル生成部11と、変換テーブル抽出部12と、テーブル融合部13と、乱数生成部14と、テーブルランダム化部15と、変換プログラム生成部16とを備えている。
鍵データ抽出部10は、入力されたプログラムPから鍵データを抽出する処理部である。
加算テーブル生成部11は、鍵データ抽出部10で抽出された鍵データから加算テーブルを生成する処理部である。
変換テーブル抽出部12は、プログラムPから変換テーブルを抽出する処理部である。
テーブル融合部13は、加算テーブル生成部11で生成された加算テーブルと変換テーブル抽出部12で抽出された変換テーブルとを融合して融合テーブルを生成する処理部である。
乱数生成部14は、乱数を生成する処理部である。
テーブルランダム化部15は、乱数生成部14で生成された乱数を元に、テーブル融合部13で生成された融合テーブルをランダム化することにより、ランダム化融合テーブルを作成する処理部である。
変換プログラム生成部16は、テーブルランダム化部15で作成されたランダム化融合テーブルを元に、変換プログラムtPを生成する処理部である。
以下、プログラム変換装置1の実行する処理について説明する。図7は、プログラム変換装置が実行する処理のフローチャートである。
まず、鍵データ抽出部10は、入力されたプログラムPから、鍵データK1およびK2を抽出し、加算テーブル生成部11に転送する(S22)。
加算テーブル生成部11は、鍵データK1を元に加算テーブルT0〜T3を、鍵データK2を元に加算テーブルV0〜V3を、それぞれ生成する(S24)。以下、加算テーブルの生成方法について詳細に説明する。ここでは、鍵データK1を元に加算テーブルT0〜T3を生成する場合について説明するが、鍵データK2を元に加算テーブルV0〜V3を生成する場合についても、これと同様である。
<加算テーブル生成部11の処理(図7のS24)>
図4に示すプログラムPの鍵データ加算部20は、入力データA(32ビット)と固定値である鍵データK1(32ビット)との算術加算(A+K1)mod(2^(32))を行い、演算結果である中間データB(32ビット)を生成する処理を行う。この鍵データ加算部20の処理を、単純にテーブル変換に置き換えるとすると、入力データAを入力、中間データBを出力とする変換テーブルとなる。このとき、入力データAおよび中間データBは、ともに32ビットデータである。このため、生成される変換テーブルの容量は、32ビット×2^(32)=16ギガバイトにもなってしまう。そこで、以下のような原理に従い、比較的コンパクトなテーブルでの実現を行う。
まず、加算テーブル生成部11は、鍵データ加算部20を、等価的に図8に示すような構成に変換する。図8に示す構成は、32ビット算術加算である鍵データ加算部20を、上位桁への繰り上がりを考慮した上で、4個の8ビット算術加算に分割したものである。加算テーブル生成部11は、図8において、入力データA(32ビット)を上位から8ビットずつに分割したものを、a0、a1、a2、a3(各8ビット)とする。同様に、加算テーブル生成部11は、鍵データK1(32ビット)を上位から8ビットずつに分割したものを、k0、k1、k2、k3とする。鍵データ加算部30dは、a3とk3との算術加算を行い、その結果の下位8ビットをb3、上位1ビットをca3とする処理部である。鍵データ加算部30cは、a2とk2とca3の算術加算を行い、その結果の下位8ビットをb2、上位1ビットをca2とする処理部である。鍵データ加算部30bは、a1とk1とca2との算術加算を行ない、その結果の下位8ビットをb1、上位1ビットをca1とする処理部である。鍵データ加算部30aは、a0とk0とca1の算術加算を行い、下位8ビットをb0とする処理である。
次に、加算テーブル生成部11は、図8の鍵データ加算部30a、30b、30c、30dをテーブル化し、図9に示すような、加算テーブルT0、T1、T2、T3にそれぞれ置き換える。ここで、加算テーブルT0、T1、T2、T3は、それぞれ8ビット×512個、9ビット×512個、9ビット×512個、9ビット×256個の配列要素からなるテーブルであり、各配列要素は、次式(5a)、(5b)、(5c)、(5d)のようにして決定される。これにより、鍵データ加算部20は、総容量が8ビット×2^9+9ビット×2^9+9ビット×2^9+9ビット×2^8=約1.9キロバイトのコンパクトな4個の加算テーブル(変換テーブル)で表すことが可能となる。
T0[x]=((xの上位8ビット)+(xの下位1ビット)+k0)mod(2^8)(x=0、1、…、511) …(5a)
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の処理>
変換テーブル抽出部12は、プログラムPから、変換テーブルSの配列データ(8ビット×256個)を抽出して、テーブル融合部13に転送する(図7のS26)。
<テーブル融合部13の処理>
テーブル融合部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を生成する処理についても全く同様である。
図10は、図4に示したプログラムPが行う暗号処理の構成のうち、鍵データ加算部20とテーブル変換部21a、21b、21c、21dとを抜き出して、鍵データ加算部20については、上述したテーブル化処理(図7のS24)によって、加算テーブルT0、T1、T2、T3に置き換えた時のブロック図である。ここで、テーブル変換部33a、33b、33c、33dは、図4のテーブル変換部21a、21b、21c、21dと同一である。このとき、テーブル融合部13は、テーブル変換部32a(T0)とテーブル変換部33a(S)、テーブル変換部32b(T1)とテーブル変換部33b(S)、テーブル変換部32c(T2)とテーブル変換部33c(S)、テーブル変換部32d(T3)とテーブル変換部33d(S)をそれぞれ融合して、融合テーブル変換部34a(U0)、34b(U1)、34c(U2)、34d(U3)に置き換える。
図11は、置き換え後の構成を示すブロック図である。ここで、融合テーブルU0、U1、U2、U3の各々の配列要素は、次式(6a)、(6b)、(6c)、(6d)のようにして定められる。ただし、(X‖Y)は、データXとデータYを、データXを上位、データYを下位として連結したデータを表す。
U0[x]=S[TO[x]](x=0、1、…、511) …(6a)
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の処理>
乱数生成部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の処理>
テーブルランダム化部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についても全く同様である。
図12は、図11に示す融合テーブル変換部34a、34b、34c、34dの融合テーブルU0、U1、U2、U3を、乱数r1a(9ビット)、r1b(9ビット)、r1c(9ビット)、r1d(8ビット)、r2a(8ビット)、r2b(8ビット)、r2c(8ビット)、r2d(8ビット)を用いてランダム化することによりランダム化融合変換テーブルRU0、RU1、RU2、RU3に置き換えた場合の構成を示すブロック図である。図12において、ランダム化融合テーブル変換部35a、35b、35c、35dは、それぞれランダム化融合変換テーブルRU0、RU1、RU2、RU3を用いたテーブル変換処理である。このとき、ランダム化融合変換テーブルRU0、RU1、RU2、RU3の配列要素は、次式(7a)、(7b)、(7c)、(7d)に従って、それぞれ算出される。
RU0[x]=U0[x(+)r1a](+)r2a(x=0、1、…、511)
…(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)
図13は、融合テーブルW0、W1、W2、W3を、乱数r2a(8ビット)、r2b(8ビット)、r2c(8ビット)、r2d(8ビット)、r3a(8ビット)、r3b(9ビット)、r3c(9ビット)、r3d(9ビット)を用いてランダム化することによりランダム化融合変換テーブルRW0、RW1、RW2、RW3に置き換えた場合の構成を示すブロック図である。図13において、ランダム化融合テーブル変換部36a、36b、36c、36dは、それぞれランダム化融合変換テーブルRW0、RW1、RW2、RW3を用いたテーブル変換処理である。このとき、ランダム化融合変換テーブルRW0、RW1、RW2、RW3の配列要素は、次式(8a)、(8b)、(8c)、(8d)に従って、それぞれ算出される。
RW0[x]=V0[x(+){r2a‖(r3bの上位1ビット)}(+)r3a(x=0、1、…、511) …(8a)
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の処理>
変換プログラム生成部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ビット)も内部に設定されている。
R1=(r1aの上位8ビット)‖(r1bの上位8ビット)‖(r1cの上位8ビット)‖(r1d)
…(9a)
R3=(r3a)‖(r3bの下位8ビット)‖(r3cの下位8ビット)‖(r3dの下位8ビット)
…(9b)
以下、図14と図15を用いて、tPの処理内容について説明する。
まず、プログラムtPに対して入力データA(32ビット)が入力される(S200)。
入力データランダム化部40は、入力データAと乱数R1との排他的論理和演算を行い、ランダム化入力データRAを求める(S201)。即ち、次式(10)に従った計算を行う。
RA=A(+)R1 …(10)
変換プログラムtPは、ランダム化入力データRAを、上位から8ビットずつ分割して、ra0、ra1、ra2、ra3とする(S202)。
ランダム化融合テーブル変換部35a、35b、35c、35dは、それぞれ、ra0、ra1、ra2、ra3に対して、次式(11a)〜(11j)に従った計算を順に行い、ランダム化中間データrc0、rc1、rc2、rc3を求める。求められたランダム化中間データrc0、rc1、rc2、rc3は、ランダム化融合テーブル変換部36a、36b、36c、36dにそれぞれ転送される(S203)。
t3=RU3[ra3] …(11a)
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)。
t3=RW3[rc3] …(12a)
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)。
排他的論理和部42は、次式(13)に従い、ランダム化出力データREと、乱数R3との排他的論理和演算を行い、出力データEを求める(S206)。
E=RE(+)R3 …(13)
変換プログラムtPは、出力データEを出力する(S207)。
<プログラムtPの処理とプログラムPの処理の関係>
ここで、変換プログラムtPによって実行される暗号処理が、プログラムPによって実行される暗号処理と等価であることを説明する。即ち、任意の入力データAに対して、プログラムPの処理によって得られる出力データEと、変換プログラムtPによって得られる出力データEとが同じであることを説明する。
まず、式(10)より、
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)が導かれる。
rca3=(T3[a3]の上位1ビット)(+)(r1cの下位1ビット)
={((a3+k3)mod(2^9))の上位1ビット}(+)(r1cの下位1ビット) …(17)
ここで、{((a3+k3)mod(2^9))の上位1ビット}は、バイトデータの加算(a3+k3)における上位バイトへの繰り上がり(0または1)であるので、以降は、これを「carry3」とすると、式(17)は次式(18)のように表すことができる。
rca3=carry3(+)(r1cの下位1ビット) …(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)のように表すことができる。
rca2=carry2(+)(r1bの下位1ビット) …(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)を表す。
式(24)、式(25)、式(26)、式(27)から、以下のことがわかる。即ち、
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と等しくなることが示される。
以上説明したように、本実施の形態によると、プログラム変換装置は、算術加算を含むプログラムPを、プログラムPと等価な変換プログラムtPに変換することができる。また、その変換プログラムtPは、9ビット入力8ビット出力の変換テーブル2個と、9ビット入出力の変換テーブル4個と、8ビット入力9ビット出力の変換テーブル2個を使用し、そのテーブル容量の合計は、3904バイトである。よって、変換プログラムtPは、十分にコンパクトなサイズのテーブルを用いて、現実的なコストでの実装が可能である。
また、変換プログラムtPで使用される変換テーブルは乱数を元にランダム化されている。このため、暗号処理の中間値を解析することによって暗号鍵データを特定するような解読方法に対して安全に暗号化を行なうことができる。
<変形例>
なお、本実施の形態では、予めプログラム変換装置1によって生成した変換プログラムPを、暗号モジュール内のROMなどに予め記憶することを想定とした構成になっているが、この構成に限定されるものではない。例えば、図16に示すように、プログラム変換装置1と同じ処理を行うプログラム変換部41を暗号装置4の内部に具備し、暗号処理を行うたびに、暗号処理のプログラムPから変換プログラムtPを生成するような構成であってもよい。
図16において、暗号装置4は、プログラム記憶部45と、プログラム変換部41と、変換プログラム一時記憶部47と、プログラム実行部43とからなる。
プログラム記憶部45は、暗号処理を行うプログラムPを記憶する記憶部である。
プログラム変換部41は、プログラム記憶部45に記憶されているプログラムPを変換プログラムtPに変換する処理部である。
変換プログラム一時記憶部47は、プログラム変換部41で生成された変換プログラムtPを一時記憶する記憶部である。
プログラム実行部43は、変換プログラム一時記憶部47に記憶されている変換プログラムtPを実行する処理部である。
暗号装置4が、暗号処理を行うときの動作は以下の通りである。まず、プログラム記憶部45は、例えば上述の実施の形態で説明したプログラムPを記憶しているものとする。プログラム変換部41は、プログラム記憶部45に記憶されているプログラムPを読み出して、上述の実施の形態と同様の処理を行い、変換プログラムtPを生成し、tPを変換プログラム一時記憶部47に記憶する。そして、プログラム実行部43は、変換プログラム一時記憶部47に記憶されている変換プログラムtPに従って、入力される平文に対して暗号化処理を行い、その結果を暗号文として出力する。この構成の場合、変換プログラムtPの生成処理は、暗号処理を行うたびに行われる。即ち、毎回異なる乱数を用いて変換プログラムtPが生成されるので、暗号処理の中間データは、毎回異なる乱数によってランダム化されることになり、暗号鍵データの解析はより困難になる。
また、変換対象のプログラムとしては、本実施の形態に示した例に限定されるものではなく、算術加算を用いる暗号処理であれば何でもよい。
さらに、変換対象のプログラムとしては、算術減算を用いる暗号処理であってもよい。このような暗号処理であっても、算術減算を、算術加算の場合と同様にテーブル化し、作成されたテーブルをランダム化することにより、暗号鍵データの解析を困難にすることができる。具体的には、被減算データと上位桁からの繰り下がりデータとをインデックスとし、その桁についての減算結果(被減算データと部分鍵データと上位桁からの繰り下がりデータとの演算結果)と下位桁への繰り下がりデータとを要素とする算術減算テーブルを作成し、作成された算術減算テーブルをランダム化すればよい。
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。上記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。上記マイクロプロセッサが、上記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(2)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。上記RAMには、コンピュータプログラムが記憶されている。上記マイクロプロセッサが、上記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていてもよいし、一部またはすべてを含むように1チップ化されていてもよい。
また、ここでは、システムLSIと呼称したが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限られるものではなく、専用回路または汎用プロセッサで実現してもよい。また、LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて構成要素の集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
(3)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。上記ICカードまたは上記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。上記ICカードまたは上記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、上記ICカードまたは上記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(4)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、上記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、上記コンピュータプログラムまたは上記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている上記デジタル信号であるとしてもよい。
また、本発明は、上記コンピュータプログラムまたは上記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、上記メモリは、上記コンピュータプログラムを記憶しており、上記マイクロプロセッサは、上記コンピュータプログラムにしたがって動作するとしてもよい。
また、上記プログラムまたは上記デジタル信号を上記記録媒体に記録して移送することにより、または上記プログラムまたは上記デジタル信号を上記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(5)上記実施の形態および上記変形例をそれぞれ組み合わせるとしてもよい。
本発明に係るプログラム変換装置は、実装する変換テーブルのテーブル容量を従来よりも削減しつつ、暗号処理実行中のレジスタデータを観測することによって暗号鍵データを解析する解読法や、暗号処理中の消費電力量から暗号鍵データを解析するような解読法に対して安全に暗号化を行うことができるという特徴を有するので、低コストでの実現が求められる暗号モジュール等の実現に有用である。
本発明は、プログラム変換装置に関し、特に、暗号処理を行うプログラムを変換するプログラム変換装置に関する。
近年、ソフトウェアまたはハードウェアで実装された暗号モジュールに対して、暗号処理を行う際の中間データを何らかの手法を用いて解析し、その中間データをもとにして、暗号鍵データを解読する解読法が各種考案されている。例えば、ソフトウェアで実装された暗号モジュールの場合には、デバッガなどの開発用ツールを使用することにより、レジスタに一時記憶される暗号処理の中間データを直接入手することが可能となる。このため、この中間データをもとにした暗号鍵データの解析が可能である。また、暗号処理中に消費される電力量を測定することによって、暗号処理の中間データを推定して、暗号鍵データの解析を行うSimple Power Analysis、やDifferential Power Analysisといった解読法が提案されている。この解読法は、ソフトウェアおよびハードウェアの両方の暗号モジュールに対して適用可能である。
上記のような解読法に対して安全な暗号実装技術として、非特許文献1にWhite−Box Cryptography技術が開示されている。図1は、White−Box Cryptography技術の一例を示す図である。本技術では、最初に、鍵データを固定としたときの暗号処理をテーブル化する。「処理のテーブル化」というのは、暗号処理時の各変換処理の入力および出力の対応関係を変換テーブルの形式で表すことである。すなわち、入力をインデックスとし、出力を要素とする変換テーブルを作成する。以下、本明細書中では、テーブルを作成する際には、入力をインデックスとし、出力を要素とする。例えば、8ビットの入力データXに対して、8ビットの鍵データKとの排他的論理和演算を行い、8ビットの演算結果を出力データYとするような暗号処理の場合(S2)、鍵データが固定値であれば、8ビット入力8ビット出力の固定的な変換と見ることができる。このようにして、暗号処理の各変換処理を全てテーブル化する(S4)。次に、得られた変換テーブルをそれぞれランダムに発生させた乱数によってランダム化する。具体的には、例えば、Y=Tab[X]で表されるテーブル変換(Xは入力、Yは出力、Tab[ ]は変換テーブルの配列)に対しては、乱数r1、r2を用いて、rY=Tab[X(+)r1](+)r2として与えられる変換にランダム化する(ここで(+)は、ビット毎の排他的論理和演算を表す)(S6)。こうして得られた、ランダム化変換を改めてテーブル化して、ランダム化テーブルrTab[ ]を得る(S8)。このランダム化処理を全てのテーブル変換に対して行い、得られるランダム化テーブルによるテーブル変換処理からなるランダム化暗号処理を、暗号モジュールとして実装する。
上記のように、乱数によって、各テーブル変換の入出力データは、ランダム化されて実際の暗号処理の中間値とは異なる値となる。これにより、暗号処理実行途中のレジスタの値を観測しても、上記ランダム化された中間値しか得ることができず、解読者は、暗号鍵データの解析が困難になる。非特許文献1では、米国次世代標準暗号AES(Advanced Encryption Standard)に対して、上記White−Box Cryptography技術を適用した場合の具体的な方法について詳細に開示されている。White−Box Cryptography技術では、暗号処理の各処理をいかにテーブル化するかが、重要なポイントである。特に、いかに容量の小さな変換テーブルにするかが重要である。
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刊
しかしながら、上記従来技術は、算術加算のような容量の小さな変換テーブルにテーブル化することが難しい演算を使用している暗号処理には適用が困難であるという課題がある。例えば、32ビットの鍵データKと32ビットの入力データXとの算術加算演算を行ってその結果Yを出力とするような処理Y=X+Kを、テーブル化する場合、上位桁への繰り上がりが存在するために、単純には、32ビット入出力のテーブル変換Y=Tab[X]とするしかない。このとき、変換テーブルTab[ ]の容量は、32ビット×2^(32)=16ギガバイトにもなり、現実的に実装可能なテーブル容量とならない(ここでα^βは、αのβ乗を表す)。
一方、上記の算術加算の代わりに排他的論理和演算Y=X(+)Kを使用している場合のテーブル化について説明する。図2は、排他的論理和演算のテーブル化について説明するための図である。
排他的論理和演算Y=X(+)Kは(S12)、各々32ビットの入力データXおよび鍵データKを、4つの8ビットのデータx0、x1、x2、x3およびk0、k1、k2、k3に分割することにより、
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キロバイト)の変換テーブルで排他的論理和演算を表すことができる。
上記AES暗号や、DES(Data Encryption Standard)暗号の場合には、鍵データとの排他的論理和演算が暗号処理に使用されているため、上記のようにして小さな容量の変換テーブルによるテーブル化が可能である。しかし、算術加算演算を用いた暗号については、上述のように、演算時に上位桁への繰り上がりが存在するため、現実的に実装可能な容量の変換テーブルでのテーブル化が困難であるという問題がある。
本発明は、上述の課題を解決するためのものであり、算術加算演算を用いた暗号処理に対しても、暗号処理の中間値を解析することによって暗号鍵データを特定するような解読方法に対して安全に暗号化を行なうことができ、かつ、現実的なコストでの実装が可能なプログラム変換装置および暗号処理装置を提供することを目的とする。
上記目的を達成するために、本発明のある局面に係るプログラム変換装置は、暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラム変換装置であって、前記暗号処理プログラムは、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個の算術加算テーブルで表現した変換暗号処理プログラムを生成している。このため、1つの算術加算テーブルで算術加算演算を実装する場合に比べ、算術加算テーブルの容量を小さくすることができる。このため、算術加算演算を含む変換暗号処理プログラムを現実的なコストで実装することができる。しかも、算術加算テーブルをランダム化することにより、ランダム化変換テーブルを生成している。このため、各種の解読方法により暗号化処理を行う際の中間値を取得することができたとしても、当該中間値から鍵データKを解読することが困難となり、安全に暗号化処理を行うことができる変換暗号処理プログラムを提供することができる。
好ましくは、前記暗号処理プログラムは、さらに、前記鍵加算データ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を生成する生成手段とを有する。
算術加算テーブルと所定の変換処理とを融合して、融合テーブルを作成している。このため、テーブルの容量を小さくすることができ、現実的なコストで実装することができる変換暗号処理プログラムを生成することができる。
本発明の他の局面に係る暗号処理装置は、平文を暗号化し、暗号文を生成する暗号処理装置であって、暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラム変換手段と、前記プログラム変換手段で生成された前記変換暗号処理プログラムに従って、平文を暗号化し、暗号文を生成する暗号文生成手段とを備え、前記暗号処理プログラムは、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個のランダム化変換テーブルで表現している。このため、算術加算演算を含む暗号処理装置を現実的なコストで実装できる。しかも、ランダム化変換テーブルを用いているため、各種の解読方法により暗号化処理を行う際の中間値を取得することができたとしても、当該中間値から鍵データKを解読することが困難となり、安全に暗号化処理を行うことができる。
なお、本発明は、このような特徴的な手段を備えるプログラム変換装置や暗号処理装置として実現することができるだけでなく、プログラム変換装置や暗号処理装置に含まれる特徴的な手段をステップとするプログラム変換方法や暗号処理方法として実現したり、プログラム変換方法や暗号処理方法に含まれる特徴的なステップをコンピュータに実行させるためのプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM(Compact Disc-Read Only Memory)等の記録媒体やインターネット等の通信ネットワークを介して流通させることができるのは言うまでもない。
本発明のプログラム変換装置によれば、算術加算を、データ幅の小さな複数のキャリー付き算術加算に分割した上で、それらを算術加算テーブルにテーブル化する。さらに、算術加算テーブルの各々を乱数を元にランダム化して、ランダム化変換テーブルを作成する。これにより、実装する変換テーブルのテーブル容量を従来よりも削減しつつ、暗号処理実行中のレジスタデータを観測することによって暗号鍵データを解析する解読法や、暗号処理中の消費電力量から暗号鍵データを解析するような解読法に対しても、安全に暗号処理を実行することができる。
以下、本発明の実施の形態について、図面を参照しながら説明する。
<全体構成>
図3は、本発明の実施の形態に係るプログラム変換装置を用いて、暗号処理プログラムを変換する際の一構成例を示したブロック図である。プログラム変換装置1は、暗号処理のプログラムPに対して変換を行い、変換プログラムtPを出力する。ここで、プログラムPは、上述したような観測した暗号処理の中間値から暗号鍵データを解析する解読法に対する対策を、何ら行っていないプログラムである。変換プログラムtPは、上記解読法に対して対策を行ったプログラムである。実際に暗号化処理を行なう機器には、変換プログラムtPが実装される。
<プログラムPの処理>
以下、前記プログラムPの一具体例を説明する。図4は、プログラムPの処理内容について、1つの処理を1つのブロックで表したブロック図である。また、図5は、プログラムPの処理内容を示したフローチャートである。図4および図5を用いて、プログラムPの処理について詳細に説明する。
プログラムPは、入力データA(32ビット)に対して、鍵データK1およびK2(各32ビット)を用いて暗号処理を行い、出力データE(32ビット)を出力する。ここで、K1およびK2は、プログラムP内に設定された秘密の固定値である。また、プログラムPは、予め8ビット×256個の固定値要素からなる配列S[ ]を内部に保持している。以下、プログラムPの処理手順について順を追って説明する。
まず、入力データAが鍵データ加算部20に入力される(S100)。
鍵データ加算部20は、入力データAと鍵データK1との算術加算を次式(1)に従って行い、中間データBを求める(S101)。ただし、(X mod α)は、Xをαで割り算したときの余りを表す。そして、中間データBを、上位から8ビットずつのデータに分割し、それぞれb0、b1、b2、b3とする(S102)。
B=(A+K1)mod(2^(32)) …(1)
テーブル変換部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)。
c0=S[b0] …(2a)
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)。
D=(C+K2)mod(2^(32)) …(3)
テーブル変換部23a、23b、23c、23dは、それぞれ、d0、d1、d2、d3に対して、次式(4a)〜(4d)で示されるテーブル変換処理を行い、e0、e1、e2、e3を求める(S107)。プログラムPは、これらを上位からe0、e1、e2、e3の順に連結して、32ビットのデータEとする(S108)。
e0=S[d0] …(4a)
e1=S[d1] …(4b)
e2=S[d2] …(4c)
e3=S[d3] …(4d)
プログラムPは、32ビットのデータEを、出力データEとして出力する(S109)。
<プログラム変換装置1の構成>
次に、プログラム変換装置1の構成について説明する。図6は、プログラム変換装置1の内部構成の一例を示したブロック図である。
プログラム変換装置1は、暗号処理のプログラムPを、耐タンパ性を有し、かつ処理のテーブル化を現実的に実装可能な容量のテーブルで実現する変換プログラムtPに変換する装置であり、鍵データ抽出部10と、加算テーブル生成部11と、変換テーブル抽出部12と、テーブル融合部13と、乱数生成部14と、テーブルランダム化部15と、変換プログラム生成部16とを備えている。
鍵データ抽出部10は、入力されたプログラムPから鍵データを抽出する処理部である。
加算テーブル生成部11は、鍵データ抽出部10で抽出された鍵データから加算テーブルを生成する処理部である。
変換テーブル抽出部12は、プログラムPから変換テーブルを抽出する処理部である。
テーブル融合部13は、加算テーブル生成部11で生成された加算テーブルと変換テーブル抽出部12で抽出された変換テーブルとを融合して融合テーブルを生成する処理部である。
乱数生成部14は、乱数を生成する処理部である。
テーブルランダム化部15は、乱数生成部14で生成された乱数を元に、テーブル融合部13で生成された融合テーブルをランダム化することにより、ランダム化融合テーブルを作成する処理部である。
変換プログラム生成部16は、テーブルランダム化部15で作成されたランダム化融合テーブルを元に、変換プログラムtPを生成する処理部である。
以下、プログラム変換装置1の実行する処理について説明する。図7は、プログラム変換装置が実行する処理のフローチャートである。
まず、鍵データ抽出部10は、入力されたプログラムPから、鍵データK1およびK2を抽出し、加算テーブル生成部11に転送する(S22)。
加算テーブル生成部11は、鍵データK1を元に加算テーブルT0〜T3を、鍵データK2を元に加算テーブルV0〜V3を、それぞれ生成する(S24)。以下、加算テーブルの生成方法について詳細に説明する。ここでは、鍵データK1を元に加算テーブルT0〜T3を生成する場合について説明するが、鍵データK2を元に加算テーブルV0〜V3を生成する場合についても、これと同様である。
<加算テーブル生成部11の処理(図7のS24)>
図4に示すプログラムPの鍵データ加算部20は、入力データA(32ビット)と固定値である鍵データK1(32ビット)との算術加算(A+K1)mod(2^(32))を行い、演算結果である中間データB(32ビット)を生成する処理を行う。この鍵データ加算部20の処理を、単純にテーブル変換に置き換えるとすると、入力データAを入力、中間データBを出力とする変換テーブルとなる。このとき、入力データAおよび中間データBは、ともに32ビットデータである。このため、生成される変換テーブルの容量は、32ビット×2^(32)=16ギガバイトにもなってしまう。そこで、以下のような原理に従い、比較的コンパクトなテーブルでの実現を行う。
まず、加算テーブル生成部11は、鍵データ加算部20を、等価的に図8に示すような構成に変換する。図8に示す構成は、32ビット算術加算である鍵データ加算部20を、上位桁への繰り上がりを考慮した上で、4個の8ビット算術加算に分割したものである。加算テーブル生成部11は、図8において、入力データA(32ビット)を上位から8ビットずつに分割したものを、a0、a1、a2、a3(各8ビット)とする。同様に、加算テーブル生成部11は、鍵データK1(32ビット)を上位から8ビットずつに分割したものを、k0、k1、k2、k3とする。鍵データ加算部30dは、a3とk3との算術加算を行い、その結果の下位8ビットをb3、上位1ビットをca3とする処理部である。鍵データ加算部30cは、a2とk2とca3の算術加算を行い、その結果の下位8ビットをb2、上位1ビットをca2とする処理部である。鍵データ加算部30bは、a1とk1とca2との算術加算を行ない、その結果の下位8ビットをb1、上位1ビットをca1とする処理部である。鍵データ加算部30aは、a0とk0とca1の算術加算を行い、下位8ビットをb0とする処理である。
次に、加算テーブル生成部11は、図8の鍵データ加算部30a、30b、30c、30dをテーブル化し、図9に示すような、加算テーブルT0、T1、T2、T3にそれぞれ置き換える。ここで、加算テーブルT0、T1、T2、T3は、それぞれ8ビット×512個、9ビット×512個、9ビット×512個、9ビット×256個の配列要素からなるテーブルであり、各配列要素は、次式(5a)、(5b)、(5c)、(5d)のようにして決定される。これにより、鍵データ加算部20は、総容量が8ビット×2^9+9ビット×2^9+9ビット×2^9+9ビット×2^8=約1.9キロバイトのコンパクトな4個の加算テーブル(変換テーブル)で表すことが可能となる。
T0[x]=((xの上位8ビット)+(xの下位1ビット)+k0)mod(2^8) (x=0、1、…、511) …(5a)
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の処理>
変換テーブル抽出部12は、プログラムPから、変換テーブルSの配列データ(8ビット×256個)を抽出して、テーブル融合部13に転送する(図7のS26)。
<テーブル融合部13の処理>
テーブル融合部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を生成する処理についても全く同様である。
図10は、図4に示したプログラムPが行う暗号処理の構成のうち、鍵データ加算部20とテーブル変換部21a、21b、21c、21dとを抜き出して、鍵データ加算部20については、上述したテーブル化処理(図7のS24)によって、加算テーブルT0、T1、T2、T3に置き換えた時のブロック図である。ここで、テーブル変換部33a、33b、33c、33dは、図4のテーブル変換部21a、21b、21c、21dと同一である。このとき、テーブル融合部13は、テーブル変換部32a(T0)とテーブル変換部33a(S)、テーブル変換部32b(T1)とテーブル変換部33b(S)、テーブル変換部32c(T2)とテーブル変換部33c(S)、テーブル変換部32d(T3)とテーブル変換部33d(S)をそれぞれ融合して、融合テーブル変換部34a(U0)、34b(U1)、34c(U2)、34d(U3)に置き換える。
図11は、置き換え後の構成を示すブロック図である。ここで、融合テーブルU0、U1、U2、U3の各々の配列要素は、次式(6a)、(6b)、(6c)、(6d)のようにして定められる。ただし、(X‖Y)は、データXとデータYを、データXを上位、データYを下位として連結したデータを表す。
U0[x]=S[T0[x]] (x=0、1、…、511) …(6a)
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の処理>
乱数生成部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の処理>
テーブルランダム化部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についても全く同様である。
図12は、図11に示す融合テーブル変換部34a、34b、34c、34dの融合テーブルU0、U1、U2、U3を、乱数r1a(9ビット)、r1b(9ビット)、r1c(9ビット)、r1d(8ビット)、r2a(8ビット)、r2b(8ビット)、r2c(8ビット)、r2d(8ビット)を用いてランダム化することによりランダム化融合変換テーブルRU0、RU1、RU2、RU3に置き換えた場合の構成を示すブロック図である。図12において、ランダム化融合テーブル変換部35a、35b、35c、35dは、それぞれランダム化融合変換テーブルRU0、RU1、RU2、RU3を用いたテーブル変換処理である。このとき、ランダム化融合変換テーブルRU0、RU1、RU2、RU3の配列要素は、次式(7a)、(7b)、(7c)、(7d)に従って、それぞれ算出される。
RU0[x]=U0[x(+)r1a](+)r2a (x=0、1、…、511) …(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)
図13は、融合テーブルW0、W1、W2、W3を、乱数r2a(8ビット)、r2b(8ビット)、r2c(8ビット)、r2d(8ビット)、r3a(8ビット)、r3b(9ビット)、r3c(9ビット)、r3d(9ビット)を用いてランダム化することによりランダム化融合変換テーブルRW0、RW1、RW2、RW3に置き換えた場合の構成を示すブロック図である。図13において、ランダム化融合テーブル変換部36a、36b、36c、36dは、それぞれランダム化融合変換テーブルRW0、RW1、RW2、RW3を用いたテーブル変換処理である。このとき、ランダム化融合変換テーブルRW0、RW1、RW2、RW3の配列要素は、次式(8a)、(8b)、(8c)、(8d)に従って、それぞれ算出される。
RW0[x]=V0[x(+){r2a‖(r3bの上位1ビット)}(+)r3a (x=0、1、…、511) …(8a)
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の処理>
変換プログラム生成部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ビット)も内部に設定されている。
R1=(r1aの上位8ビット)‖(r1bの上位8ビット)‖(r1cの上位8ビット)‖(r1d) …(9a)
R3=(r3a)‖(r3bの下位8ビット)‖(r3cの下位8ビット)‖(r3dの下位8ビット) …(9b)
以下、図14と図15を用いて、tPの処理内容について説明する。
まず、プログラムtPに対して入力データA(32ビット)が入力される(S200)。
入力データランダム化部40は、入力データAと乱数R1との排他的論理和演算を行い、ランダム化入力データRAを求める(S201)。即ち、次式(10)に従った計算を行う。
RA=A(+)R1 …(10)
変換プログラムtPは、ランダム化入力データRAを、上位から8ビットずつ分割して、ra0、ra1、ra2、ra3とする(S202)。
ランダム化融合テーブル変換部35a、35b、35c、35dは、それぞれ、ra0、ra1、ra2、ra3に対して、次式(11a)〜(11j)に従った計算を順に行い、ランダム化中間データrc0、rc1、rc2、rc3を求める。求められたランダム化中間データrc0、rc1、rc2、rc3は、ランダム化融合テーブル変換部36a、36b、36c、36dにそれぞれ転送される(S203)。
t3=RU3[ra3] …(11a)
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)。
t3=RW3[rc3] …(12a)
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)。
排他的論理和部42は、次式(13)に従い、ランダム化出力データREと、乱数R3との排他的論理和演算を行い、出力データEを求める(S206)。
E=RE(+)R3 …(13)
変換プログラムtPは、出力データEを出力する(S207)。
<プログラムtPの処理とプログラムPの処理の関係>
ここで、変換プログラムtPによって実行される暗号処理が、プログラムPによって実行される暗号処理と等価であることを説明する。即ち、任意の入力データAに対して、プログラムPの処理によって得られる出力データEと、変換プログラムtPによって得られる出力データEとが同じであることを説明する。
まず、式(10)より、
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)が導かれる。
rca3=(T3[a3]の上位1ビット)(+)(r1cの下位1ビット)
={((a3+k3)mod(2^9))の上位1ビット}(+)(r1cの下位1ビット) …(17)
ここで、{((a3+k3)mod(2^9))の上位1ビット}は、バイトデータの加算(a3+k3)における上位バイトへの繰り上がり(0または1)であるので、以降は、これを「carry3」とすると、式(17)は次式(18)のように表すことができる。
rca3=carry3(+)(r1cの下位1ビット) …(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)のように表すことができる。
rca2=carry2(+)(r1bの下位1ビット) …(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)を表す。
式(24)、式(25)、式(26)、式(27)から、以下のことがわかる。即ち、
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と等しくなることが示される。
以上説明したように、本実施の形態によると、プログラム変換装置は、算術加算を含むプログラムPを、プログラムPと等価な変換プログラムtPに変換することができる。また、その変換プログラムtPは、9ビット入力8ビット出力の変換テーブル2個と、9ビット入出力の変換テーブル4個と、8ビット入力9ビット出力の変換テーブル2個を使用し、そのテーブル容量の合計は、3904バイトである。よって、変換プログラムtPは、十分にコンパクトなサイズのテーブルを用いて、現実的なコストでの実装が可能である。
また、変換プログラムtPで使用される変換テーブルは乱数を元にランダム化されている。このため、暗号処理の中間値を解析することによって暗号鍵データを特定するような解読方法に対して安全に暗号化を行なうことができる。
<変形例>
なお、本実施の形態では、予めプログラム変換装置1によって生成した変換プログラムPを、暗号モジュール内のROMなどに予め記憶することを想定とした構成になっているが、この構成に限定されるものではない。例えば、図16に示すように、プログラム変換装置1と同じ処理を行うプログラム変換部41を暗号装置4の内部に具備し、暗号処理を行うたびに、暗号処理のプログラムPから変換プログラムtPを生成するような構成であってもよい。
図16において、暗号装置4は、プログラム記憶部45と、プログラム変換部41と、変換プログラム一時記憶部47と、プログラム実行部43とからなる。
プログラム記憶部45は、暗号処理を行うプログラムPを記憶する記憶部である。
プログラム変換部41は、プログラム記憶部45に記憶されているプログラムPを変換プログラムtPに変換する処理部である。
変換プログラム一時記憶部47は、プログラム変換部41で生成された変換プログラムtPを一時記憶する記憶部である。
プログラム実行部43は、変換プログラム一時記憶部47に記憶されている変換プログラムtPを実行する処理部である。
暗号装置4が、暗号処理を行うときの動作は以下の通りである。まず、プログラム記憶部45は、例えば上述の実施の形態で説明したプログラムPを記憶しているものとする。プログラム変換部41は、プログラム記憶部45に記憶されているプログラムPを読み出して、上述の実施の形態と同様の処理を行い、変換プログラムtPを生成し、tPを変換プログラム一時記憶部47に記憶する。そして、プログラム実行部43は、変換プログラム一時記憶部47に記憶されている変換プログラムtPに従って、入力される平文に対して暗号化処理を行い、その結果を暗号文として出力する。この構成の場合、変換プログラムtPの生成処理は、暗号処理を行うたびに行われる。即ち、毎回異なる乱数を用いて変換プログラムtPが生成されるので、暗号処理の中間データは、毎回異なる乱数によってランダム化されることになり、暗号鍵データの解析はより困難になる。
また、変換対象のプログラムとしては、本実施の形態に示した例に限定されるものではなく、算術加算を用いる暗号処理であれば何でもよい。
さらに、変換対象のプログラムとしては、算術減算を用いる暗号処理であってもよい。このような暗号処理であっても、算術減算を、算術加算の場合と同様にテーブル化し、作成されたテーブルをランダム化することにより、暗号鍵データの解析を困難にすることができる。具体的には、被減算データと上位桁からの繰り下がりデータとをインデックスとし、その桁についての減算結果(被減算データと部分鍵データと上位桁からの繰り下がりデータとの演算結果)と下位桁への繰り下がりデータとを要素とする算術減算テーブルを作成し、作成された算術減算テーブルをランダム化すればよい。
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。上記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。上記マイクロプロセッサが、上記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(2)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。上記RAMには、コンピュータプログラムが記憶されている。上記マイクロプロセッサが、上記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていてもよいし、一部またはすべてを含むように1チップ化されていてもよい。
また、ここでは、システムLSIと呼称したが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限られるものではなく、専用回路または汎用プロセッサで実現してもよい。また、LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて構成要素の集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
(3)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。上記ICカードまたは上記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。上記ICカードまたは上記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、上記ICカードまたは上記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(4)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、上記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、上記コンピュータプログラムまたは上記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている上記デジタル信号であるとしてもよい。
また、本発明は、上記コンピュータプログラムまたは上記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、上記メモリは、上記コンピュータプログラムを記憶しており、上記マイクロプロセッサは、上記コンピュータプログラムにしたがって動作するとしてもよい。
また、上記プログラムまたは上記デジタル信号を上記記録媒体に記録して移送することにより、または上記プログラムまたは上記デジタル信号を上記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(5)上記実施の形態および上記変形例をそれぞれ組み合わせるとしてもよい。
本発明に係るプログラム変換装置は、実装する変換テーブルのテーブル容量を従来よりも削減しつつ、暗号処理実行中のレジスタデータを観測することによって暗号鍵データを解析する解読法や、暗号処理中の消費電力量から暗号鍵データを解析するような解読法に対して安全に暗号化を行うことができるという特徴を有するので、低コストでの実現が求められる暗号モジュール等の実現に有用である。
図1は、White−Box Cryptography技術の一例を示す図である。 図2は、排他的論理和演算のテーブル化について説明するための図である。 図3は、本発明の実施の形態に係るプログラム変換装置を用いてプログラムPを変換する場合の構成を示すブロック図である。 図4は、本発明の実施の形態に係るプログラムPが行う暗号処理の構成を示すブロック図である。 図5は、本発明の実施の形態に係るプログラムPが行う暗号処理手順を示すフローチャートである。 図6は、本発明の実施の形態に係るプログラム変換装置の構成を示すブロック図である。 図7は、本発明の実施の形態に係るプログラム変換装置が実行する処理のフローチャートである。 図8は、本発明の実施の形態に係る鍵データ加算部の他の構成を示すブロック図である。 図9は、本発明の実施の形態に係る鍵データ加算部の変換テーブルを用いた他の構成を示すブロック図である。 図10は、本発明の実施の形態に係る鍵データ加算部の変換テーブルと、テーブル変換部とからなる構成を示すブロック図である。 図11は、図10に示す構成と等価な別構成を示すブロック図である。 図12は、図11に示す融合テーブル変換部をランダム化した場合の構成を示すブロック図である。 図13は、本発明の実施の形態に係る融合変換テーブルをランダム化した場合の構成を示すブロック図である。 図14は、本発明の実施の形態に係る変換プログラムtPの各処理をブロックとして表現したブロック図である。 図15は、本発明の実施の形態に係る変換プログラムtPの各処理を示すフローチャートである。 図16は、本発明の実施の形態に係る暗号処理装置の構成を示すブロック図である。
符号の説明
1 プログラム変換装置
10 鍵データ抽出部
11 加算テーブル生成部
12 変換テーブル抽出部
13 テーブル融合部
14 乱数生成部
15 テーブルランダム化部
16 変換プログラム生成部
20、22、30a〜30d 鍵データ加算部
21a〜21d、23a〜23d テーブル変換部

Claims (11)

  1. 暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラム変換装置であって、
    前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、
    前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割する鍵データ分割手段と、
    前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割手段と、
    i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成する算術加算テーブル作成手段と、
    i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記算術加算テーブルaddを乱数に基づいてランダム化し、ランダム化変換テーブルRTabを生成するランダム化変換テーブル生成手段とを備える
    ことを特徴とするプログラム変換装置。
  2. 前記算術加算テーブル作成手段は、
    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の場合には、前記部分鍵データkと前記部分被加算データxと前記繰り上がりデータci+1との算術加算結果の下位Nビットのデータを加算データyとし、前記算術加算結果のNi+1ビット目のデータを繰り上がりデータcとした場合に、前記加算データyおよび前記繰り上がりデータcを要素とし、前記部分被加算データxと前記繰り上がりデータci+1とをインデックスとする算術加算テーブルaddを作成し、
    i=0の場合には、前記部分鍵データkと前記部分被加算データxと前記繰り上がりデータcとの算術加算結果の下位Nビットのデータを加算データyとした場合に、前記加算データyを要素とし、前記部分被加算データxと前記繰り上がりデータcとをインデックスとする算術加算テーブルaddを作成する
    ことを特徴とする請求項1に記載のプログラム変換装置。
  3. 前記暗号処理プログラムは、さらに、前記鍵加算データEを、最上位ビットよりNビットごとにn個に分割した部分鍵加算データZに対して所定の変換処理Sを施す加算データ変換処理を含み(i=0〜n−1)、
    前記ランダム化変換テーブル作成手段は、
    i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記算術加算テーブルaddと前記所定の変換処理Sとを融合して、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする融合テーブルUを作成する融合テーブル作成手段と、
    i=0〜n−1の各々について、前記融合テーブル作成手段で作成された融合テーブルUを前記乱数に基づいてランダム化し、ランダム化変換テーブルRTabを生成する生成手段とを有する
    ことを特徴とする請求項1に記載のプログラム変換装置。
  4. 平文を暗号化し、暗号文を生成する暗号処理装置であって、
    暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラム変換手段と、
    前記プログラム変換手段で生成された前記変換暗号処理プログラムに従って、平文を暗号化し、暗号文を生成する暗号文生成手段とを備え、
    前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、
    前記プログラム変換手段は、
    前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割する鍵データ分割手段と、
    前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割手段と、
    i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成する算術加算テーブル作成手段と、
    i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記加算テーブルaddを乱数に基づいてランダム化し、ランダム化変換テーブルRTabを生成するランダム化変換テーブル生成手段とを備える
    ことを特徴とする暗号処理装置。
  5. N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を実行する暗号処理装置であって、
    前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割手段と、
    i=0〜n−1の各々について、前記部分被加算データxに乱数raを作用させることにより得られるランダム化部分被加算データrxを少なくともインデックスの一部としたときの、ランダム化変換テーブルRTabの要素であるランダム化鍵加算データreを取得するランダム化鍵加算データ取得手段とを備え、
    前記ランダム化変換テーブルRTabは、
    前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割し、
    i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成し、
    i=0〜n−1の各々について、前記算術加算テーブルaddを乱数に基づいてランダム化することにより得られるテーブルである
    ことを特徴とする暗号処理装置。
  6. 暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラム変換方法であって、
    前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、
    前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割する鍵データ分割ステップと、
    前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割ステップと、
    i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成する算術加算テーブル作成ステップと、
    i=0〜n−1の各々について、前記算術加算テーブル作成ステップで作成された前記算術加算テーブルaddを乱数に基づいてランダム化し、ランダム化変換テーブルRTabを生成するランダム化変換テーブル生成ステップとを含む
    ことを特徴とするプログラム変換方法。
  7. 暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成するプログラムであって、
    前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、
    前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割する鍵データ分割ステップと、
    前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割ステップと、
    i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成する算術加算テーブル作成ステップと、
    i=0〜n−1の各々について、前記算術加算テーブル作成ステップで作成された前記算術加算テーブルaddを乱数に基づいてランダム化し、ランダム化変換テーブルRTabを生成するランダム化変換テーブル生成ステップとをコンピュータに実行させる
    ことを特徴とするプログラム。
  8. 暗号処理を行う暗号処理プログラムを変換して、前記暗号処理プログラムと等価な処理を行う変換暗号処理プログラムを生成する集積回路であって、
    前記暗号処理プログラムは、N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を含み、
    前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割する鍵データ分割手段と、
    前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割手段と、
    i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成する算術加算テーブル作成手段と、
    i=0〜n−1の各々について、前記算術加算テーブル作成手段で作成された前記算術加算テーブルaddを乱数に基づいてランダム化し、ランダム化変換テーブルRTabを生成するランダム化変換テーブル生成手段とを備える
    ことを特徴とする集積回路。
  9. N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を実行する暗号処理方法であって、
    前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割ステップと、
    i=0〜n−1の各々について、前記部分被加算データxに乱数raを作用させることにより得られるランダム化部分被加算データrxを少なくともインデックスの一部としたときの、ランダム化変換テーブルRTabの要素であるランダム化鍵加算データreを取得するランダム化鍵加算データ取得ステップとを含み、
    前記ランダム化変換テーブルRTabは、
    前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割し、
    i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成し、
    i=0〜n−1の各々について、前記算術加算テーブルaddを乱数に基づいてランダム化することにより得られるテーブルである
    ことを特徴とする暗号処理方法。
  10. N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を実行するプログラムであって、
    前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割ステップと、
    i=0〜n−1の各々について、前記部分被加算データxに乱数raを作用させることにより得られるランダム化部分被加算データrxを少なくともインデックスの一部としたときの、ランダム化変換テーブルRTabの要素であるランダム化鍵加算データreを取得するランダム化鍵加算データ取得ステップとをコンピュータに実行させ、
    前記ランダム化変換テーブルRTabは、
    前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割し、
    i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成し、
    i=0〜n−1の各々について、前記算術加算テーブルaddを乱数に基づいてランダム化することにより得られるテーブルである
    ことを特徴とするプログラム。
  11. N(Nは2以上の整数)ビットの被加算データXとNビットの鍵データKとの算術加算を行うことにより、算術加算結果である鍵加算データEを算出する算術加算処理を実行する集積回路であって、
    前記被加算データXを、最上位ビットよりNビットのn個の部分被加算データx(i=0〜n−1)に分割する被加算データ分割手段と、
    i=0〜n−1の各々について、前記部分被加算データxに乱数raを作用させることにより得られるランダム化部分被加算データrxを少なくともインデックスの一部としたときの、ランダム化変換テーブルRTabの要素であるランダム化鍵加算データreを取得するランダム化鍵加算データ取得手段とを備え、
    前記ランダム化変換テーブルRTabは、
    前記鍵データKを、最上位ビットよりNビットのn個の部分鍵データk(i=0〜n−1)に分割し、
    i=0〜n−1の各々について、前記部分鍵データkと、前記部分被加算データxと、前記部分鍵データki+1および前記部分被加算データxi+1の算術加算時の繰り上がりデータci+1との算術加算の結果である、加算データyおよび繰り上がりデータcのうちの少なくとも前記加算データyを含むデータを要素とし、前記部分被加算データxおよび繰り上がりデータci+1のうちの少なくとも前記部分被加算データxを含むデータをインデックスとする算術加算テーブルaddを作成し、
    i=0〜n−1の各々について、前記算術加算テーブルaddを乱数に基づいてランダム化することにより得られるテーブルである
    ことを特徴とする集積回路。
JP2006523469A 2005-04-28 2006-04-24 プログラム変換装置、暗号処理装置、暗号処理方法 Expired - Fee Related JP4180094B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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