(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-13
(45)【発行日】2023-11-21
(54)【発明の名称】情報処理装置、情報処理方法及びプログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20231114BHJP
G06F 21/62 20130101ALI20231114BHJP
H04L 9/06 20060101ALI20231114BHJP
【FI】
G09C1/00 610Z
G06F21/62 309
H04L9/06 Z
(21)【出願番号】P 2019197634
(22)【出願日】2019-10-30
【審査請求日】2022-09-13
(73)【特許権者】
【識別番号】000005234
【氏名又は名称】富士電機株式会社
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】高務 健二
【審査官】青木 重徳
(56)【参考文献】
【文献】特表2017-501445(JP,A)
【文献】特表2018-508044(JP,A)
【文献】特許第6222285(JP,B1)
【文献】堀田 智彦 ほか,ホワイトボックスAES実装の改良,情報処理学会研究報告 コンピュータセキュリティ(CSEC),日本,情報処理学会 [online],2017年02月23日,Vol.2017-CSEC-76 No.3,p.1-8
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/62
H04L 9/06
(57)【特許請求の範囲】
【請求項1】
ビットの並べ替えと乱数の排他的論理和演算とガロア体上の積算とが含まれる難読化変換を含む
White-Box AESの演算処理をデータに対して行った演算結果が格納されたルックアップテーブルを参照して、入力されたデータに対する演算結果を取得する取得手段、を有することを特徴とする情報処理装置。
【請求項2】
前記演算処理には、互いに異なる複数の前記難読化変換が含まれる、ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記演算処理には、AddRoundKey処理とSubBytes処理と排他的論理和演算を除くMixColumns処理とが含まれ、
前記取得手段は、入力されたデータのうち、ShiftRows処理によって選択されたデータに対する演算結果をそれぞれ取得する、ことを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
r+1(ただし、r≧1)ラウンド目における前記演算処理には、rラウンド目における前記難読化変換の逆変換が含まれる、ことを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記取得手段により取得された演算結果に対して排他的論理和演算を行って、次のラウンドに入力されるデータを作成する演算手段を更に有することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
ビットの並べ替えと乱数の排他的論理和演算とガロア体上の積算とが含まれる難読化変換を含む
White-Box AESの演算処理をデータに対して行った演算結果が格納されたルックアップテーブルを参照して、入力されたデータに対する演算結果を取得する取得手順、をコンピュータが実行することを特徴とする情報処理方法。
【請求項7】
ビットの並べ替えと乱数の排他的論理和演算とガロア体上の積算とが含まれる難読化変換を含む
White-Box AESの演算処理をデータに対して行った演算結果が格納されたルックアップテーブルを参照して、入力されたデータに対する演算結果を取得する取得手順、をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
つながる時代の新技術に代表されるIoT(Internet of Things)では、種々様々なデバイスが通信ネットワークに接続される。これらのデバイスの多くは低コストで実現される機器でありながら、マイクロプロセッサ等を搭載してアプリケーションを実装していると共に、セキュリティ対策として各種暗号機能も実装している。
【0003】
AES(Advanced Encryption Standard)等の共通鍵暗号方式では、共通鍵(以下、「暗号鍵」又は単に「鍵」とも表す。)の漏洩や解読を防止することがセキュリティ要件の1つである。暗号鍵の漏洩や解読を防止するための手法の1つとして、ホワイトボックス実装(White-Box Cryptography)が知られている(例えば、特許文献1)。
【0004】
なお、関連技術として、ホワイトボックス実装に用いられるルックアップテーブルのデータサイズを小さくしたり、ホワイトボックス実装により暗号鍵を難読化したりする技術が知られている(例えば、特許文献2~4)。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2014-180061号公報
【文献】特開2017-44757号公報
【文献】特開2017-167390号公報
【文献】特開2017-216619号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、汎用コンピュータ等の演算性能は日々向上しており、従来のホワイトボックス実装における暗号鍵の解読リスクも日々高まっている。
【0007】
開示の技術は、上記の点に鑑みてなされたもので、ホワイトボックス実装の暗号鍵解読に対するセキュリティを向上させることを目的とする。
【課題を解決するための手段】
【0008】
一態様における情報処理装置は、ビットの並べ替えと乱数の排他的論理和演算とガロア体上の積算とが含まれる難読化変換を含む演算処理をデータに対して行った演算結果が格納されたルックアップテーブルを参照して、入力されたデータに対する演算結果を取得する取得手段、を有することを特徴とする。
【発明の効果】
【0009】
ホワイトボックス実装の暗号鍵解読に対するセキュリティを向上させることができる。
【図面の簡単な説明】
【0010】
【
図1】暗号化の1ラウンド目における1サブラウンド目の処理の一例を示す図である。
【
図2】暗号化の2ラウンド目以降のラウンドにおける1サブラウンド目の処理の一例を示す図である。
【
図3】本実施形態に係る暗号システムの機能構成の一例を示す図である。
【
図4】本実施形態に係る暗号システムのハードウェア構成の一例を示す図である。
【
図5】本実施形態に係る暗号化の1サブラウンドあたりの処理の流れを示す図である。
【
図6】r+1ラウンド目の難読化変換の変形例を示す図である。
【
図7】r+1ラウンド目の難読化変換の逆変換の変形例を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について説明する。本実施形態では、ホワイトボックス実装(White-Box Cryptography)による暗号化において、ルックアップテーブル化される演算処理に難読化成分を追加することで、暗号鍵解読に対するセキュリティを向上させることができる暗号システム10について説明する。ここで、本実施形態に係る暗号システム10は、一般的なマイクロプロセッサ等が搭載された組み込みシステム(Embedded System)であるものとする。組み込みシステムは、例えば、産業用機器や家電製品等に内蔵され、特定の機能を実現するシステムである。具体的には、例えば、HEMS(Home Energy Management System)に利用されるスマートメーター等に対して、本実施形態に係る暗号システム10を組み込むことが可能である。
【0012】
ただし、本実施形態に係る暗号システム10は、組み込みシステムに限られず、例えば、PC(Personal Computer)やスマートフォン、タブレット端末等の各種端末又は装置であってもよい。
【0013】
<理論的構成>
まず、本実施形態に係る暗号化の理論的構成について説明する。本実施形態では、一例として、暗号方式としてAES(Advanced Encryption Standard)を採用する。ただし、本実施形態は、AES以外であっても、ホワイトボックス実装される任意の共通鍵暗号方式に適用可能である。
【0014】
AESをホワイトボックス実装したWhite-Box AESでは、各ラウンドで、鍵(暗号鍵)を用いた演算処理と、この演算処理の前後に追加した逆変換処理及び変換処理(ただし、1ラウンド目の場合は演算処理の後に変換処理のみが追加される。)との処理結果をルックアップテーブルで実現している。この変換処理を追加することにより鍵が難読化され、ルックアップテーブルから鍵が解読されることを防止している。
【0015】
また、White-Box AESでは、各ラウンドでのルックアップテーブルの参照処理と、このラウンドの次のラウンドでのルックアップテーブルの参照処理との間に排他的論理和の演算処理がある。このため、上記の変換処理及び逆変換処理は、排他的論理和の演算前後でも変換・逆変換の関係が成り立つ必要がある。なお、排他的論理和の演算前後でも変換・逆変換の関係が成り立つ変換処理及び逆変換処理として、例えば、上記の特許文献2~4には、乱数を用いたビットの並び替えや乱数の排他的論理和が記載されている。
【0016】
本実施形態では、変換処理及び逆変換処理として、乱数を用いたビットの並び替え及び乱数の排他的論理和に加えて、ガロア体(Galois field)上の積算(乗算)を追加する。これにより、本実施形態では、鍵をより高い強度で難読化することができるため、ホワイトボックス実装のセキュリティを向上させることが可能となる。
【0017】
なお、AESでは、16バイトのデータに対する処理を1つのラウンドとして、鍵のビット長に応じた回数のラウンドを繰り返し実行することで、データを暗号化する。また、1つのラウンドでは、4バイトに対する処理を1つのサブラウンドとして、4回のサブラウンドを実行する。以降では、ラウンドを表すインデックスをr(ただし、r≧0)、サブラウンドを表すインデックスをs(ただし、s≧0)とする。
【0018】
(1ラウンド目)
まず、本実施形態に係るWhite-Box AESによる暗号化の1ラウンド目(つまり、r=0である場合)の処理について説明する。暗号化の1ラウンド目では、16バイトの平文を入力として、16バイトの1ラウンド目の中間値を出力する。なお、16バイトのデータ(平文や中間値等)のdバイト目の1バイトデータを「d-1」で表す。
【0019】
以降では、一例として、暗号化の1ラウンド目の1サブラウンド目(つまり、s=0である場合)の処理について、
図1を参照しながら説明する。
図1は、暗号化の1ラウンド目における1サブラウンド目の処理の一例を示す図である。
【0020】
図1に示すように、1ラウンド目の1サブラウンド目では、例えば、16バイトの平文のうち、「0」、「5」、「10」及び「15」のデータが選択され、これらの選択されたデータ(つまり、4バイトのデータ)に対して処理が行われる。この4バイトのデータを選択する処理は、ShiftRows処理と呼ばれる。なお、ShiftRows処理では、2サブラウンド目で1サブラウンド目とは異なる4バイトのデータが選択され、3サブラウンド目で1~2サブラウンド目とは異なる4バイトのデータが選択され、4サブラウンド目で1~3サブラウンド目とは異なる4バイトのデータが選択される。具体的には、例えば、2サブラウンド目では「4」、「9」、「14」及び「3」のデータが選択され、3サブラウンドでは「8」、「13」、「2」及び「7」のデータが選択され、4サブラウンドでは「12」、「1」、「6」及び「11」のデータが選択される。以降では、ShiftRows処理で選択された4バイトのデータのうちの1バイトのデータを「選択データ」とも表す。
【0021】
このとき、本実施形態に係るWhite-Box AESの1ラウンド目では、選択データ(
図1に示す例では、「0」、「5」、「10」及び「15」のデータ)のそれぞれに対するAddRoundKey処理と、SubBytes処理と、排他的論理和演算を除くMixColumns処理と、1ラウンド目の難読化変換とをルックアップテーブル(LUT:Lookup Table)により実現する。なお、MixColumns処理は、SubBytes処理の出力結果に対してガロア体上の積算(
図1中では、ガロア体上の積算は「×」で表されている。)を4回行って4バイトのデータを出力する処理と、難読化変換の処理結果に対して排他的論理和演算を行って4バイトのデータを出力する処理とで構成される。
【0022】
【0023】
T:j=0,1,2,3に対して添字をs,j,rとして、r+1ラウンド目のs+1サブラウンド目におけるj番目の選択データに対するルックアップテーブル
k:添字をt(ただし、t=16r+4s+5j)として、平文のd(ただし、dは、tを16で割った余り)バイト目の選択データに対する鍵成分
SBox(・):SubBytes処理を実行する関数。なお、図中では、「SBox()」と表記している。
【0024】
Sort(・,h):8ビットのデータとパラメータhとを入力として、このデータの各ビット値を並べ替えて8ビットのデータを出力する関数。なお、図中では、「Sort(h)」と表記している。
【0025】
h:8ビットのデータを8ビットのデータに並べ替える際の組み合わせを表すパラメータ。また、添字は、MixColumns処理に含まれる積算のインデックスm=0,1,2,3に対して添字をs,m,rとして、r+1ラウンド目のs+1サブラウンド目におけるMixColumns処理のm番目の積算に対応するパラメータであることを表す。なお、8ビットのデータを並べ替える際の組み合わせ数は8!であるため、hは16(≒Log2(8!))ビットデータで表される。したがって、Sort(・,h)のセキュリティ強度は16ビット強度である。
【0026】
i:Sort(・,h)の処理結果に対して排他的論理和で演算される乱数。また、添字は、s,m,j,rとして、r+1ラウンド目のs+1サブラウンド目におけるj番目の選択データに対するMixColumns処理のm番目の積算に対応する乱数であることを表す。なお、iは8ビットデータである。したがって、iのセキュリティ強度は8ビット強度である。
【0027】
u:iを排他的論理和で演算した結果に対して積算される値(ただし、u≠0、かつ、逆元u-1が存在する値)。なお、uは8ビットデータである。ここで、ガロア体上の積算は既約多項式上での乗算に相当し、既約多項式上での乗算では、その演算過程で常数(つまり、既約多項式の定数部分)を用いるため、常数に応じた結果が得られる。他方で、逆元u-1が存在するためには既約多項式の常数は特定の値である必要があり、利用可能な常数の種類は30種類(≒25)である。このため、uのセキュリティ強度は8+5=13ビット強度である。
【0028】
以上により、難読化した鍵(つまり、MixColumns処理の排他的論理和演算の対象となるデータ)のセキュリティ強度は、16+8+13=37ビット強度となる。上述したように、本実施形態に係るWhite-Box AESの1ラウンド目では、選択データに対するAddRoundKey処理と、SubBytes処理と、排他的論理和演算を除くMixColumns処理と、難読化変換とをルックアップテーブルにより実現する。
【0029】
したがって、8ビットの任意のデータをaとした場合、ルックアップテーブルTs,j,0には、以下の式(1)によって演算された演算結果(つまり、データaに対して、AddRoundKey処理と、SubBytes処理と、排他的論理和演算を除くMixColumns処理と、1ラウンド目の難読化変換とを行った演算結果)が格納されている。
【0030】
【数1】
ここで、
(c
0,0,c
1,0,c
2,0,c
3,0)=(2,1,1,3),
(c
0,1,c
1,1,c
2,1,c
3,1)=(3,2,1,1),
(c
0,2,c
1,2,c
2,2,c
3,2)=(1,3,2,1),
(c
0,3,c
1,3,c
2,3,c
3,3)=(1,1,3,2)
である。以降では、ルックアップテーブルTに格納されている演算結果を「演算値」とも表す。なお、この演算値は8ビットデータである。
【0031】
(r+1ラウンド目)
次に、本実施形態に係るWhite-Box AESによる暗号化の2ラウンド目以降のラウンド(つまり、r≧1である場合)の処理について説明する。暗号化の2ラウンド目以降のラウンドでは、1つ前のラウンドで出力された中間値を入力として、16バイトの中間値を出力する。
【0032】
以降では、一例として、暗号化のr+1ラウンド目の1サブラウンド目(つまり、s=0である場合)の処理について、
図2を参照しながら説明する。
図2は、暗号化の2ラウンド目以降のラウンドにおける1サブラウンド目の処理の一例を示す図である。
【0033】
図2に示すように、r+1ラウンド目の1サブラウンド目では、例えば、rラウンド目の中間値のうち、「0」、「5」、「10」及び「15」のデータのそれぞれがShiftRows処理により選択データとして選択され、これらの選択データに対して処理が行われる。
【0034】
このとき、本実施形態に係るWhite-Box AESでは、選択データ(
図2に示す例では、「0」、「5」、「10」及び「15」のデータ)のそれぞれに対する逆変換と、AddRoundKey処理と、SubBytes処理と、排他的論理和演算を除くMixColumns処理と、r+1ラウンド目の難読化変換とをルックアップテーブルにより実現する。なお、逆変換は、rラウンド目の難読化変換の逆変換である。
【0035】
ここで、
図2における各記号は以下を意味する。なお、T、k、SBox(・)、Sort(・,h)、h、i及びuは、
図1と同様である。ただし、rラウンド目の難読化変換の逆変換におけるiは、rラウンド目の難読化変換におけるiから決定される。具体的には、rラウンド目の難読化変換の逆変換におけるi
s,j,4,r-1は、rラウンド目の難読化変換におけるi
s,j,0,r-1とi
s,j,1,r-1とi
s,j,2,r-1とi
s,j,3,r-1との排他的論理和である。
【0036】
u-1:同一添字のuの逆元。
【0037】
Rvrs(・,h):同一添字のhをパラメータとしたSort(・,h)の逆変換。なお、図中では、「Rvrs(h)」と表記している。
【0038】
以上により、1ラウンド目と同様に、難読化した鍵(つまり、MixColumns処理の排他的論理和演算の対象となるデータ)のセキュリティ強度は、rラウンド目の難読化変換に対する逆変換のセキュリティ強度(37ビット強度)と、r+1ラウンド目の難読化変換のセキュリティ強度(37ビット強度)とを合計して74ビット強度となる。上述したように、本実施形態に係るWhite-Box AESのr+1ラウンド目(ただし、r≧1)では、rラウンド目の難読化変換の逆変換と、AddRoundKey処理と、SubBytes処理と、排他的論理和演算を除くMixColumns処理と、r+1ラウンド目の難読化変換とをルックアップテーブルにより実現する。
【0039】
したがって、8ビットの任意のデータをaとした場合、ルックアップテーブルTs,j,rには、以下の式(2)で計算されるa´を用いて以下の式(3)によって演算された演算結果(つまり、データaに対して、rラウンド目の難読化変換の逆変換と、AddRoundKey処理と、SubBytes処理と、排他的論理和演算を除くMixColumns処理と、r+1ラウンド目の難読化変換とを行った演算結果)が演算値として格納されている。
【0040】
【0041】
【数3】
また、上述したように、i
s,j,4,r-1は、以下の式(4)によって決定される。
【0042】
【数4】
なお、
(c
0,0,c
1,0,c
2,0,c
3,0)=(2,1,1,3),
(c
0,1,c
1,1,c
2,1,c
3,1)=(3,2,1,1),
(c
0,2,c
1,2,c
2,2,c
3,2)=(1,3,2,1),
(c
0,3,c
1,3,c
2,3,c
3,3)=(1,1,3,2)
である。
【0043】
なお、上記の
図2はr+1ラウンド目が最終ラウンドでない場合(つまり、r+1ラウンド目が中間ラウンドである場合)の処理を示している。最終ラウンドでは、
図2のMixColumns処理と難読化変換とは実行されない。すなわち、最終ラウンドでは、最終ラウンドの1つ前のラウンドでの難読化変換の逆変換と、AddRoundKey処理と、SubBytes処理とが実行される。そして、最終ラウンドで出力される中間値が暗号文となる。したがって、本実施形態に係るWhite-Box AESの最終ラウンドでは、最終ラウンドの1つ前のラウンドでの難読化変換の逆変換とAddRoundKey処理とSubBytes処理とがルックアップテーブルにより実現される。なお、最終ラウンドでは、最初のラウンド(r=0のラウンド)と同様に、セキュリティ強度は37ビット強度である。
【0044】
<機能構成>
次に、本実施形態に係る暗号システム10の機能構成について、
図3を参照しながら説明する。
図3は、本実施形態に係る暗号システム10の機能構成の一例を示す図である。
【0045】
図3に示すように、本実施形態に係る暗号システム10は、選択部101と、テーブル参照部102と、排他的論理和演算部103と、記憶部104とを有する。
【0046】
記憶部104には、ルックアップテーブルTs,j,rが記憶されている。なお、記憶部104には、暗号化に用いる種々のデータ(例えば、平文、中間値、暗号文等)が記憶されてもよい。
【0047】
選択部101は、r=0の場合は、サブラウンド毎に平文から選択データを選択する。また、選択部101は、r≧1の場合は、サブラウンド毎にrラウンド目の中間値から選択データを選択する。
【0048】
テーブル参照部102は、記憶部104に記憶されているルックアップテーブルTs,j,rを参照して、選択データに対応する演算値を取得する。ここで、上記の式(1)及び式(2)に示すように、1つの選択データ(つまり、1バイトのデータ)から4つの演算値が取得される。すなわち、MixColumns処理に含まれる積算のインデックスm=0,1,2,3の各々に対応する演算値が取得される。
【0049】
排他的論理和演算部103は、r+1(ただし、r≧0)ラウンドにおけるサブラウンド毎に、互いに対応する演算値の排他的論理和を演算する。
【0050】
具体的には、排他的論理和演算部103は、r+1ラウンドにおけるs+1サブラウンドにおいて、j=0番目の選択データのm=0に対応する演算値と、j=1番目の選択データのm=0に対応する演算値と、j=2番目の選択データのm=0に対応する演算値と、j=3番目の選択データのm=0に対応する演算値との排他的論理和を演算して、r+1ラウンド目の中間値の4s+1バイト目のデータとする。同様に、排他的論理和演算部103は、r+1ラウンドにおけるs+1サブラウンドにおいて、j=0番目の選択データのm=1に対応する演算値と、j=1番目の選択データのm=1に対応する演算値と、j=2番目の選択データのm=1に対応する演算値と、j=3番目の選択データのm=1に対応する演算値との排他的論理和を演算して、r+1ラウンド目の中間値の4s+2バイト目のデータとする。以降も同様に、排他的論理和演算部103は、r+1ラウンドにおけるs+1サブラウンドにおいて、j=0番目の選択データのm=2に対応する演算値と、j=1番目の選択データのm=2に対応する演算値と、j=2番目の選択データのm=2に対応する演算値と、j=3番目の選択データのm=2に対応する演算値との排他的論理和を演算して、r+1ラウンド目の中間値の4s+3バイト目のデータとする。同様に、排他的論理和演算部103は、r+1ラウンドにおけるs+1サブラウンドにおいて、j=0番目の選択データのm=3に対応する演算値と、j=1番目の選択データのm=3に対応する演算値と、j=2番目の選択データのm=3に対応する演算値と、j=3番目の選択データのm=3に対応する演算値との排他的論理和を演算して、r+1ラウンド目の中間値の4s+4バイト目のデータとする。これにより、r+1(ただし、r≧0)ラウンド目の中間値が得られる。
【0051】
<ハードウェア構成>
次に、本実施形態に係る暗号システム10のハードウェア構成について、
図4を参照しながら説明する。
図4は、本実施形態に係る暗号システム10のハードウェア構成の一例を示す図である。
【0052】
図4に示すように、本実施形態に係る暗号システム10は、プロセッサ201と、メモリ装置202と、I/F203とを有する。これら各ハードウェアは、それぞれがバス204を介して通信可能に接続されている。
【0053】
プロセッサ201は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の各種演算装置である。本実施形態に係る暗号システム10が有する各機能部(選択部101、テーブル参照部102及び排他的論理和演算部103)は、メモリ装置202に格納された1以上のプログラムがプロセッサ201に実行させる処理により実現される。
【0054】
メモリ装置202は、例えば、RAM(Random Access Memory)やROM(Read Only Memory)、フラッシュメモリ等の各種記憶装置である。本実施形態に係る暗号システム10が有する記憶部104は、例えば、メモリ装置202を用いて実現可能である。
【0055】
I/F203は、暗号システム10にデータを入力したり、暗号システム10からデータを出力したりするためのインタフェースである。
【0056】
本実施形態に係る暗号システム10は、
図4に示すハードウェア構成を有することにより、各種処理を実現することができる。なお、
図4に示すハードウェア構成は一例であって、本実施形態に係る暗号システム10は、複数のプロセッサ201を有していてもよいし、複数のメモリ装置202を有していてもよい。
【0057】
<処理の流れ>
次に、本実施形態に係る暗号化の処理の流れについて説明する。上述したように、本実施形態に係るWhite-Box AESは、鍵のビット長に応じた回数のラウンドを繰り返し実行することで、データ(平文)を暗号化する。また、1つのラウンドは、4つのサブラウンドで構成されている。そこで、以降では、暗号化のr+1(ただし、r≧0)ラウンド目のs+1(ただし、s≧0)サブラウンド目の処理の流れについて、
図5を参照しながら説明する。
図5は、本実施形態に係る暗号化の1サブラウンドあたりの処理の流れを示す図である。
【0058】
まず、選択部101は、r+1ラウンド目のs+1ラウンド目における選択データを選択する(ステップS101)。ここで、選択部101は、r=0である場合は16バイトの平文から4つの選択データを選択し、r≧1である場合は16バイトのrラウンド目の中間値から4つの選択データを選択する。なお、上述したように、選択データは1バイトのデータである。
【0059】
次に、テーブル参照部102は、上記のステップS101で選択された選択データ毎に、記憶部104に記憶されているルックアップテーブルTs,j,rを参照して、当該選択データに対応する演算値を取得する(ステップS102)。
【0060】
そして、排他的論理和演算部103は、上記のステップS102でルックアップテーブルTs,j,rから取得された演算値を用いて、排他的論理和を演算する(ステップS103)。これにより、r+1ラウンド目の中間値が得られる。
【0061】
以上により、本実施形態に係る暗号システム10は、r+1(ただし、r≧0)ラウンド目のs+1(ただし、s≧0)サブラウンド目の処理を実行することができる。したがって、各ラウンドにおいて、サブラウンド毎に、上記のステップS101~ステップS103が繰り返し実行されることで、平文が暗号文に暗号化される。しかも、本実施形態に係る暗号システム10では、上述したように、最初のラウンド及び最終ラウンドでは37ビットのセキュリティ強度、中間ラウンドでは74ビット強度で鍵を難読化することができる。
【0062】
なお、本実施形態では、平文を暗号化する場合について説明したが、暗号文を復号する場合については、暗号化の逆変換となるように各ラウンドを構成することで実現することができる。具体的には、ShiftRows処理の代わりにInvShiftRows処理、SubBytes処理の代わりにInvSubBytes処理、MixColumns処理の代わりにInvMixColumns処理を用いる。また、復号の1ラウンド目のAddRoundKey処理の前に暗号化の最終ラウンドにおける難読化変換の逆変換を行うようにすると共に、復号の最終ラウンドではInvMixColumns処理の排他的論理和演算の前に難読化変換を行わないようにする。これにより、暗号文を復号することが可能になる。
【0063】
<変形例>
最後に、本実施形態に係るWhite-Box AESの変形例について説明する。上記で説明したWhite-Box AESは37ビットのセキュリティ強度で鍵を難読化することができるが、変形例では、複数の難読化変換を合成してルックアップテーブル化することで、更に高いセキュリティ強度で鍵を難読化する場合について説明する。
【0064】
ここで、ガロア体上の積算とビットの並べ替えとで構成される式は等価な式に変形することができない。このため、
図1及び
図2で説明した難読化変換をN(Nは2以上の任意の整数)回合成してルックアップテーブル化することで、37<L≦37×N、かつ、37<L≦256!として、Lビット強度のセキュリティ強度を実現することが可能である。
【0065】
具体的には、
図6に示すように、
図1及び
図2で説明した難読化変換をN回合成することで、r+1(ただし、r≧0)ラウンド目の難読化変換とする。また、r+1(ただし、r≧1)ラウンド目の逆変換については、r+1ラウンド目の難読化変換の逆変換となるように、
図2で説明した難読化変換の逆変換をN回合成する。なお、n=1,・・・,Nとして、i等には各nでそれぞれ異なる乱数が用いられる(ただし、一部のiが互いに同一値であってもよい。)。
【0066】
これにより、Lビット強度のセキュリティ強度を実現することが可能となる。特に、N≧4とすることで、NICT(National Institute of Information and Communications Technology)等で2031年以降に求められているセキュリティ強度(128ビット)を満たすことが可能となる。
【0067】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更、他の技術との組み合わせ等が可能である。
【符号の説明】
【0068】
10 暗号システム
101 選択部
102 テーブル参照部
103 排他的論理和演算部
104 記憶部
201 プロセッサ
202 メモリ装置
203 I/F
204 バス