【文献】
Yoni De Mulder, et al.,Cryptanalysis of a Perturbated White-Box AES Implementation,LNCS, Progress in Cryptology - INDOCRYPT 2010,Springer,2010年12月,Vol.6498,pp.292-310
【文献】
Chung Hun Baek, et al.,Analytic Toolbox for White-Box Implementations: Limitation and Perspective,Cryptology ePrint Archive: Report 2014/688,[オンライン],2014年 9月 4日,Version: 20140904:060921,[検索日 平成29年1月21日]、インターネット,URL,<https://eprint.iacr.org/eprint-bin/getfile.pl?ently=2014/688&version=20140904:0609218&file=688.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
前記テーブルに基づく変換及び前記排他的論理和の計算が行われると、AddRoundKey関数、SubBytes関数及びMixColumns関数をそれぞれ実行した処理結果と同様の処理結果が含まれる請求項1に記載の情報処理装置。
【発明を実施するための形態】
【0012】
情報処理装置は、例えば、組み込みシステム(Embedded system)である。組み込みシステムは、産業機器又は家電製品等に内蔵され、特定の機能を実現するためのシステムである。なお、情報処理装置は、PC(Personal Computer)等でもよい。以下、本発明の実施形態を図面に基づいて、情報処理装置が組み込みシステムである例で説明する。
【0013】
1.組み込みシステムのハードウェア構成例
2.組み込みシステムによる全体処理例
3.組み込みシステムの機能構成例
<<1.組み込みシステムのハードウェア構成例>>
図1は、本発明の一実施形態に係る組み込みシステムのハードウェア構成の一例を説明するブロック図である。図示するように、組み込みシステム1は、演算装置HW1と、記憶装置HW2と、I/F(interface)HW3とを有する。
【0014】
演算装置HW1は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)等である。また、演算装置HW1は、組み込みシステム1が行う処理の全部又は一部を実現するための演算と、データの加工とを行う演算装置並びに組み込みシステム1が有するハードウェアを制御する制御装置である。さらに、演算装置HW1は、例えば、図示するように、RAM(Random Access Memory)HW10及びROM(Read−Only Memory)HW11等の記憶装置を内蔵し、これらの記憶装置によって記憶領域を実現する。
【0015】
RAMHW10は、演算装置HW1等が用いるプログラム、設定値又はデータ等を展開及び記憶するために用いられる記憶装置である。
【0016】
ROMHW11は、演算装置HW1等が用いるプログラム、設定値又はデータ等を記憶する記憶装置である。
【0017】
記憶装置HW2は、いわゆるメモリ(memory)等である。また、記憶装置HW2は、組み込みシステム1が用いるプログラム、設定値又はデータ等を記憶する主記憶装置である。なお、記憶装置HW2は、補助記憶装置等を有してもよい。
【0018】
I/FHW3は、組み込みシステム1にデータ等を入出力するインタフェースである。I/FHW3は、バス、コネクタ、ケーブル及びドライバ等で実現される。
【0019】
なお、組み込みシステム1のハードウェア構成は、図示する構成に限られない。例えば組み込みシステム1は、記憶装置HW2を有さなくともよい。また、組み込みシステム1は、更に演算装置等の補助装置を外部又は内部に有してもよい。
【0020】
<<2.組み込みシステムによる全体処理例>>
本発明の実施形態に係る組み込みシステムは、データを暗号化又は復号化する。以下、組み込みシステムがデータを暗号化する場合を例に説明する。
【0021】
図2は、本発明の一実施形態に係る暗号化の1ラウンド当たりの処理の一例を説明するフローチャートである。以下、AES方式において、処理の単位となる16バイト(byte)の入力データに対する処理単位(以下「1ラウンド(round)」という。)について説明する。なお、1ラウンド当たりの処理は、AES方式に用いられる鍵のビット(bit)長等に合わせて、繰り返し行われる。
【0022】
また、以下の説明では、1ラウンド当たりの処理は、16バイトのうち、選択される4バイトのデータを処理単位(以下「1サブラウンド(sub−round)」という。)にする1サブラウンド当たりの処理が繰り返し行われる。つまり、1ラウンド当たりの処理では、4サブラウンドの処理が繰り返し行われる(4バイト(1サブラウンド)×4サブラウンド=16バイト、1ラウンド)。そして、1ラウンド当たりの処理は、図示する処理又は図示する処理と等価の処理である。
【0023】
<<サブラウンドデータの選択例(ステップS0101)>>
ステップS0101では、組み込みシステムは、サブラウンドデータを選択する。すなわち、ステップS0101によって、入力される16バイトの入力データのうち、4バイトのデータ(以下「サブラウンドデータ」という。)が選択される。なお、ステップS0101は、いわゆる「ShiftRows」に相当する処理である。以下、ステップS0101で選択される4バイトのデータのうち、1バイトのデータごとに行われる処理を説明する。すなわち、それぞれの1バイトのデータに対して、4回同様の処理が行われると、1サブラウンド当たりの処理となる。
【0024】
<<テーブルに基づく変換例(ステップS0102)>>
ステップS0102では、組み込みシステムは、テーブルに基づいて変換を行う。なお、テーブルは、いわゆるLUT(Look Up Table)等である。テーブルについての詳細は、後述する。以下、ステップS0102による変換によって、生成されるデータを「変換データ」という。なお、変換データは、1バイトの入力に対して、1バイトを4つ、すなわち、4バイトとなる。
【0025】
<<排他的論理和(XOR、exclusive or)の計算例(ステップS0103)>>
ステップS0103では、組み込みシステムは、変換データの排他的論理和を計算する。なお、ステップS0102及びステップS0103は、いわゆる「AddRoundKey」、「SubBytes」及び「MixColumns」に相当する処理である。
【0026】
例えば、組み込みシステムは、
図2に示す処理を以下のようなテーブルを用いて行う。
【0027】
なお、以下の説明では、ラウンド数を「r」で示し、「r=1」(初期値)から順に「r=R」まで、1ラウンド当たりの処理が繰り返し行われる例を説明する。すなわち、最初に行われるラウンド(以下「最初のラウンド」という。)は、「r=1」とする。そして、最後に行われるラウンド(以下「最後のラウンド」という。)は、「r=R」とする。さらに、最初のラウンド及び最後のラウンド以外のラウンド(以下「中間のラウンド」という。)は、「r=2」乃至「r=R−1」とする。なお、鍵長によって、中間のラウンドの数が変化する。
【0028】
最初のラウンドは、前に行われるラウンドがないラウンドである。一方で、最後のラウンドは、次に行われるラウンドがないラウンドである。これに対して、中間のラウンドは、前後に行われるラウンドがあるラウンドである。これらの点に対応するため、最初のラウンド、中間のラウンド及び最後のラウンドで行われるそれぞれの処理は、処理内容が異なる。そのため、以下の説明では、最初のラウンドと、中間のラウンドと、最後のラウンドとで行われるそれぞれの処理を分けて模式図を用いて説明する。
【0029】
<<最初のラウンドの処理例>>
図3は、本発明の一実施形態に係る最初のラウンドの処理の一例を説明する模式図である。図示する処理では、最初のラウンドにおいて、まず、1ラウンド当たりの処理対象となる16バイトのデータ(以下「入力データD_IN」という。)から、組み込みシステムは、4つの1バイトのデータを選択する。そして、図は、組み込みシステムが、サブラウンドデータが有する1バイトのデータにそれぞれ行う処理の例を示す。具体的には、図示する例では、「0」乃至「15」の1バイトのデータから構成される入力データD_INから、第0番目データD_1B0、第5番目データD_1B5、第10番目データD_1B10及び第15番目データD_1B15の1バイトのデータが、それぞれ選択される例である。以下の説明では、サブラウンドデータのうち、第0番目データD_1B0の1バイトのデータに対する処理を例に説明する。
【0030】
なお、入力データD_INから4つの1バイトのデータを選択する処理は、「ShiftRows」の処理に相当し、
図2に示すステップS0101の処理に相当する。
【0031】
次に、組み込みシステムは、第0番目データD_1B0を、あらかじめ記憶されるテーブルTBに基づいて、変換する。そして、テーブルTBによる変換によって、1バイトの変換データが、4つ生成される。次に、組み込みシステムは、第0番目データD_1B0、第5番目データD_1B5、第10番目データD_1B10及び第15番目データD_1B15のそれぞれの変換データの1バイトずつの排他的論理和PXを計算する。このように計算すると、組み込みシステムは、出力データD_OUTのうち、第0番目出力データDOUT0を出力できる。
【0032】
同様に、図示するように、第0番目データD_1B0、第5番目データD_1B5、第10番目データD_1B10及び第15番目データD_1B15のそれぞれの変換データの1バイトずつの排他的論理和PXを計算すると、組み込みシステムは、出力データD_OUTのうち、第1番目出力データDOUT1、第2番目出力データDOUT2及び第3番目出力データDOUT3をそれぞれ出力できる。
【0033】
図3では、「S」は、S−BOXによる変換、すなわち、「SubBytes」関数の実行と同様の成分を示す。また、「・03」、「・02」及び「・01」は、AES既約多項式に基づくかけ算を示す。すなわち、例えば、「・03」は、AES既約多項式に基づくかけ算で「3倍」を示す。さらに、「p」は、次のラウンドで用いられる鍵データの一部又は全部を含む鍵データを示す。また、「k」及び「i」については、後述の中間のラウンド(
図6参照)で説明する。以下、同様に記載する。
【0034】
なお、テーブルTBによる変換は、
図2に示すステップS0102に相当する。また、排他的論理和PXによる計算は、
図2に示すステップS0103に相当する。さらに、テーブルTBには、最初のラウンドとは異なるラウンドで用いられる鍵データD_Kが含まれる。例えば、第1ラウンドを「r=1」のラウンドとすると、第2ラウンドは、第1ラウンドの次に行われるラウンドであり、「r=2」のラウンド等である。これを図示すると、以下のように示せる。
【0035】
図4は、本発明の一実施形態に係るテーブルに含まれる鍵データの一例を説明する模式図である。図は、第1ラウンドと、第2ラウンドとで行われるそれぞれの1サブラウンド当たりの処理において行われるテーブルTBによる変換の処理例を示す。なお、第1ラウンドは、例えば、
図3に示すような最初のラウンド等である。一方で、第2ラウンドは、「r=2」等のラウンドである。
【0036】
図示するように、第1ラウンドで用いられるテーブルTBには、第2ラウンドで用いられる鍵データが含まれる。例えば、第1ラウンドで用いられるテーブルTBには、あらかじめ、第2ラウンドで用いられる鍵データが含まれるように、生成される。このように、異なるラウンドの鍵データの全部又は一部をテーブルTBに含ませると、組み込みシステムは、第1ラウンドにおいて、第1ラウンド用のテーブルTBを解析しても、第1ラウンド用の鍵データを推定するのを難しくできる。すなわち、鍵データは、他のラウンドから入ってくる部分があると、組み込みシステムは、鍵データを推定するために行われる鍵データが有する1バイト当たりのデータを探索する処理量を多くすることができる。
【0037】
図示する例では、第2ラウンドで用いられる4つの鍵データは、第0番目データに係る処理で用いられるテーブルTBにすべて入力される。例えば、このように、他のラウンドの鍵データD_Kが含まれた鍵データが使用された場合と同様となるように、テーブルTBは、あらかじめ生成される。
【0038】
ただし、本発明に係る実施形態は、これに限られない。例えば、組み込みシステムは、他のラウンドの鍵データをビット単位で、テーブルTBに分散させて入力させてもよい。このようにすると、鍵データを推定する場合において、他のラウンドから、鍵データの行き先は、「入力しない」と、4つ(1バイト×4通り)のテーブルとを合わせた5通りとされる。そして、他のラウンドの鍵データがビット単位で分散されて含まれるので、8ビットの場合には、他のラウンドの鍵データの行き先は、「5
8」の組み合わせとなる。これが1ラウンド当たりの処理では、組み込みシステムは、4つの1バイトのデータにそれぞれ当てはまるので、「5
8×4=5
32」の組み合わせとすることができる。
【0039】
このようにすると、暗号化処理における入力と出力の関係を解析し、データ等を解読しようとする方法に対して、組み込みシステムは、データを難読化させることができる。例えば、入力と、出力との関係から解析し、データを解読しようとする方法は、いわゆるBGEアタック(「入出力対応攻撃」等という場合もある。)等である。より具体的には、BGEアタックは、例えば、「"Cryptanalysis of a White Box AES Implementation." Olivier Billet, Henri Gilbert, Charaf Ech−Chatbi,Selected Areas in Cryptography: 11th International Workshop, SAC 2004.」に記載されている方法等である。
【0040】
図3に示す例では、BGEアタックがされると、入力の例である第0番目データD_1B0と、出力の例である1バイトの出力データDOUT0との関係から、入力と出力の間でどのような処理が行われているか等が解析される。すなわち、入力と出力の間で行われる処理を入力されたデータがどのような出力となるかに基づいて、鍵データ又は行われる処理内容を推測する方法がある。
【0041】
これに対して、本発明に係る実施形態では、
図4に示すように、組み込みシステムは、第1ラウンドに係る処理に、第2ラウンドで用いられる鍵データを含むテーブルTBを用いて、変換する処理を行う。すなわち、組み込みシステムは、あらかじめ生成されるテーブルTBに基づいて、変換を行う。そのため、BGEアタック等によって、テーブルTB等が解析されても、組み込みシステムは、第1ラウンド用の鍵データが推測されるのを難しくできる。すなわち、
図4に示すように、第1ラウンドに係る処理に、第2ラウンドで用いられる鍵データを含ませて処理を行うと、組み込みシステムは、BGEアタック等に対しても、鍵データを難読化することができる。このようにして、組み込みシステムは、AES方式において、データを難読化することができる。なお、乱数成分RPは、例えば、乱数を生成する関数等を実行して生成される。
【0042】
さらに、
図2に示すように、ステップS0101及びステップS0103以外の処理は、1回のテーブルに基づく変換で行うようにすると、組み込みシステムは、行う処理の数を少なくできる。すなわち、1テーブル当たりに含まれる処理が多いと、セキュリティを破る目的等で、鍵データ又は行われている処理の解析の難易度を向上させることができる。このようにして、組み込みシステムは、セキュリティを向上させることができる。また、処理の数は、少ない方が処理負荷が軽くできる場合が多い。
【0043】
なお、
図4及び
図5では、「P」は、前のラウンド(当ラウンドが最初のラウンドでないとする。)で行われた出力の際の変換(
図3の例では、出力結果を出力データD_OUTにおいて第0番目、第1番目、第2番目及び第3番目とする処理)(後述する
図12に示す比較例では、「Q」に相当する処理)に対応する、当ラウンドで行う逆変換を示す。すなわち、前のラウンドで行われた「出力の際の変換」を「変換」とすると、「P」は、前のラウンドで「出力の際の変換」の「逆変換」を示す。
【0044】
また、「f」は、
図3に示す「i」及び「h」を合わせた成分に相当する。なお、
図4に示すように、「f」、すなわち、「i」及び「h」は、1バイトを分割して、4ビットごとに変換されてもよい。
【0045】
さらにまた、
図3に示すように、テーブルTBには、乱数成分RPが含まれるのが望ましい。このように、乱数成分RPが含まれると、組み込みシステムは、AES方式において、データをより難読化することができる。これを図示すると、以下のように示せる。
【0046】
図5は、本発明の一実施形態に係るテーブルに含まれる乱数成分の一例を説明する模式図である。図は、
図4と同様に、第1ラウンドと、第2ラウンドとで行われるそれぞれの1サブラウンド当たりの処理において用いられるテーブルTBの例を示す。図示するように、第1ラウンドでは、組み込みシステムは、テーブルTBに乱数成分RPが含まれるようにする。例えば、テーブルTBは、あらかじめ、乱数成分RPを含むように、生成される。すなわち、例えば、乱数成分RPを含むテーブルTBを生成するには、テーブルTBを示すデータを生成する際に、まず、乱数を発生させるランダム関数等を情報処理装置が実行して、乱数を発生させる。次に、情報処理装置は、発生した乱数が打ち消されるような成分(以下「打消成分CP」という。)を生成する。なお、
図5では、「R」は、打消成分CPを示す。
【0047】
そして、図示するように、第1ラウンド用のテーブルTBに、乱数成分RPが含まれるように、情報処理装置は、第1ラウンド用のテーブルTBを生成する。そのため、第1ラウンドで、乱数成分RPが含まれるテーブルによる変換が行われた場合には、第1ラウンドで生成される変換データは、乱数成分RPを有する。そこで、情報処理装置は、第1ラウンド用のテーブルTBに含まれた乱数成分RPを打ち消す打消成分CPが含まれるように、第2ラウンド用のテーブルを生成する。このようにすると、第1ラウンドの変換で含まれた乱数成分RPは、第2ラウンドの変換が行われると、打ち消される。
【0048】
また、このように、乱数成分RPが含まれるようにすると、データを解析するのに乱数成分RPを解析する処理が必要となるため、組み込みシステムは、AES方式において、データをより難読化することができる。なお、図示する例では、乱数成分RPは、「2
8×4=2
32」の組み合わせがある成分である。
【0049】
なお、打消成分CPは、第2ラウンド用のテーブルに入力されるに限られない。例えば、1ラウンド中に、サブラウンドデータに対して行われる4つの1バイトに対する変換のうち、3つの変換で、乱数成分RPが含まれるテーブルが用いられ、残りの1つの処理で用いられるテーブルに打消成分CPが含まれてもよい。このようにしても、組み込みシステムは、テーブルに乱数成分RPが含まれるようにすることができ、AES方式において、データをより難読化することができる。
【0050】
次に、
図3に示すように、組み込みシステムは、各変換データのうち、それぞれの1バイトデータを1つずつ集め、計4つの1バイトデータに対して、排他的論理和PXを計算して、出力データDOUTのうち、1バイトを生成する。図示するように、組み込みシステムが、1つのサブラウンドデータに対して、排他的論理和PXまで行うと、組み込みシステムは、「DOUT0」、「DOUT1」、「DOUT2」及び「DOUT3」の1バイトデータを4つ生成することができる。
【0051】
なお、テーブルTBに基づく変換及び排他的論理和PXの計算は、「AddRoundKey」、「SubBytes」及び「MixColumns」の処理に相当する。また、テーブルTBに基づく変換は、
図2に示すステップS0102の処理に相当する。さらに、各変換データの排他的論理和PXを計算する処理は、
図2に示すステップS0103の処理に相当する。
【0052】
なお、最初のラウンドの処理における鍵1バイトに対するテーブルの組み合わせは、図示するように、約「2
167.50」通りとなる。
【0053】
<<中間のラウンドの処理例>>
図6は、本発明の一実施形態に係る中間のラウンドの処理の一例を説明する模式図(その1)である。なお、図示する処理は、
図3に示す処理の次のラウンドである例とする。以下、
図3に示す処理と異なる点を中心に説明する。
【0054】
図示する処理は、
図3に示す処理と比較すると、入力の際に、「h
r,0−1」、「h
r,5−1」、「h
r,10−1」及び「h
r,15−1」が含まれる点が異なる。この「h
r,0−1」、「h
r,5−1」、「h
r,10−1」及び「h
r,15−1」は、
図3に示すテーブルTBによる変換による「h」の逆変換となる成分の例である。なお、図では、「h」は、ビットの並び替えを示し、排他的論理和に影響のない成分を示す。具体的には、「h」によるビットの並び替えがされると、データ内のビットが並び替えられる。なお、8ビットの場合には、「h」による並び替えは、「8!(階乗)」通りの組み合わせがある。これに対して、「h
−1」は、「h」による並び替えを元に戻す並び替え(「h」によって並び替えられる前に戻す)をすることを示す。そのため、「h」及び「h
−1」の両方の成分があると、「h」による並び替えがない場合と、同様の結果が得られる。
【0055】
また、図示する処理は、
図3に示す処理と比較すると、入力の際に、「i
r,0」、「i
r,5」、「i
r,10」及び「i
r,15」が含まれる点が異なる。この「i
r,0」、「i
r,5」、「i
r,10」及び「i
r,15」は、
図5に示すように、第1ラウンドでテーブルTB(
図5)に含まれる乱数成分RPを打ち消す打消成分CPの例である。例えば、「i」は、乱数の排他的論理和による加算を示す。
【0056】
また、
図6では、「q」は、当ラウンドの鍵データの成分を示す。詳しくは、鍵データの成分のうち、一部の成分は、前のラウンドに入力される場合がある。その場合において、「q」は、前のラウンドに入力されず、残った成分を示す。なお、前のラウンドに、当ラウンドの鍵データの成分を入力しない場合には、当ラウンドの鍵データの全成分が残ることになる。一方で、
図3、すなわち、最初のラウンドでは、前のラウンドがないため、「k」で示す。さらに、「h
−1」、「i」及び「q」は、添え字で対応するラウンド及び入力データを示す。具体的には、「h
r,0−1」の場合には、「r」は、第1ラウンド、すなわち、前のラウンドを示し、「r+1」は、第2ラウンド、すなわち、当ラウンドを示す。「0」は、図示するように、入力データの0番目に対応することを示す。
【0057】
さらに、図示する処理は、最初のラウンドの処理(
図3参照)と同様に、「p
r+1,0,0」等のように、異なるラウンドで用いられる鍵データがテーブルに含まれる。第2ラウンドの場合には、異なるラウンドは、例えば、第3ラウンドのことである。このようにして、組み込みシステムは、異なるラウンドで用いられる鍵データを含ませて処理を行うと、最初のラウンドの処理と同様に、BGEアタック等に対してもデータを難読化することができる。
【0058】
なお、中間のラウンドの処理における鍵1バイトに対するテーブルの組み合わせは、図示するように、約「2
209.37」通りとなる。
【0059】
また、
図6の次のサブラウンドでは、例えば、以下のように処理が行われる。
【0060】
図7は、本発明の一実施形態に係る中間のラウンドの処理の一例を説明する模式図(その2)である。
図7に示す処理は、
図6と同様のラウンドにおいて、
図6に示す処理の次のサブラウンドで行われる処理の例である。図示する例は、
図6と比較すると、入力データから選択されるサブラウンドデータが異なる。
図6と同様に、各サブラウンドデータが処理されるため、組み込みシステムは、最初のラウンドの処理及び
図6に示す中間のラウンドの処理と同様に、BGEアタック等に対してもデータを難読化することができる。
【0061】
<<最後のラウンドの処理例>>
図8は、本発明の一実施形態に係る最終のラウンドの処理の一例を説明する模式図である。なお、図示する処理は、
図6及び
図7に示す処理と比較すると、テーブルによる、「MixColumns」に相当する処理がない点が異なる。また、図示する処理では、「AddRoundKey」に相当する処理が2回行われる点が異なる。
【0062】
最後のラウンドは、次のラウンドがないラウンドである。そのため、最後のラウンドの処理では、
図3、
図6及び
図7に示す処理のように、後段のラウンドから鍵データが入力されない。ゆえに、最後のラウンドの処理は、前のラウンド(中間のラウンド等)に鍵データを入力し、一方で、後段のラウンドからの鍵データをテーブルに含ませて行う「MixColumns」に相当する処理を行わない。
【0063】
図9は、ホワイトボックスクリプトグラフィの一例の原理を示す概念図である。図示するように、暗号化処理は、入力データ(平文の状態のデータである。)に対して、「拡大鍵」等の鍵データを用いて暗号化し、出力データ(暗号文の状態のデータである。)を生成する処理である。そして、暗号化処理において、まず、鍵に対してアクセスを難しくするためのブラックボックス(Black−Box)的アプローチがある。一方で、暗号化処理において、鍵に対してアクセスされても、鍵と認識されるのを難しくするためのホワイトボックス(White−Box)的アプローチがある。ホワイトボックスクリプトグラフィは、ホワイトボックス的アプローチの方法である。
【0064】
図示するように、ホワイトボックスクリプトグラフィでは、暗号化における各処理と鍵データ(拡大鍵)とを合成して、演算をLUTによる変換とする。特に、本発明に係る実施形態のように、複数の演算を1つのLUTで行うと、複数の演算を行う場合よりも、処理負荷が小さくできる。そのため、LUT等のテーブルによる変換を用いるのは、より組み込みシステム等には望ましい。そして、ホワイトボックスクリプトグラフィでは、図示するように、各処理の間(図では「処理A」と「処理B」の間)に変換と、逆変換が挿入される。このように、ホワイトボックスクリプトグラフィは、変換と逆変換をLUTに追加合成することにより、データを難読化する方法である。すなわち、図示する例では、テーブルは、「変換」と、「逆変換」と、「処理」とを1回の変換で行うように生成される。これを模式図で示すと、例えば、以下のように示せる。
【0065】
図10は、ホワイトボックスクリプトグラフィにおけるラウンド処理の一例を示す模式図である。図示するようなラウンド処理が、鍵長に合わせて繰り返し行われる。図示するように、1ラウンド当たりの処理では、サブラウンドデータに対して、「ShiftRows」、「AddRoundKey」、「SubBytes」及び「MixColumns」の処理が行われる。
図2に示す全体処理が行われると、図示する処理が行われた場合と、等価の処理結果となる。
【0066】
<<比較例>>
図11は、比較例に係る暗号化の1ラウンド当たりの処理の一例を説明する模式図(その1)である。
図11は、入力データD_INのうち、4つの1バイトのデータに対して処理が行われ、出力データD_OUTのうち、4つの1バイトのデータが生成される1サブラウンド当たりの処理の一例を示す。また、
図11に示す処理、すなわち、1ラウンド当たりの処理では、4サブラウンドの処理が繰り返し行われる。以下、1サブラウンド当たりの処理を中心に説明する。
【0067】
ステップS0201では、4つの1バイトのデータが選ばれる。また、FIPS197で定められている「ShiftRows」関数を実行した処理結果と、ステップS0201を行った処理結果とは、同様の結果となる。
【0068】
ステップS0202では、ステップS0201で選ばれる1バイトのデータが、いわゆるT−Box等によって変換され、変換されたデータが出力される。
【0069】
ステップS0203では、ステップS0202で出力されるデータに対して、いわゆるXOR−Tables等のテーブルによって変換が行われ、図示するように、排他的論理和の計算が行われた場合と同様の処理結果が出力される。
【0070】
図示するように、FIPS197で定められている「AddRoundKey」関数、「SubBytes」関数及び「MixColumns」関数をそれぞれ実行した処理結果と、ステップS0202及びステップS0203をそれぞれ行った処理結果とは、同様の結果となる。
【0071】
図示するように、1サブラウンド当たりの処理が行われると、ステップS0203の出力である4つの1バイトのデータが、出力データD_OUTのうちの「0」乃至「3」のデータとして、生成される。
【0072】
また、比較例の処理は、以下のように示せる。
【0073】
図12は、比較例に係る暗号化の1ラウンド当たりの処理の一例を説明する模式図(その2)である。サブラウンド処理におけるLUTの入力及び出力の関係は、図示するように示せる。また、この比較例に用いるLUTのデータ容量は、以下のようになる。
【0074】
図13は、比較例に係るLUTのデータ容量の一例を示す表である。図示するように、データ容量は、鍵長、すなわち、行われるラウンド数に応じて異なる。
【0075】
この比較例のように、1つのラウンドにおける処理に用いられるデータが、他のラウンドのデータを用いないと、入力と出力の関係を解析されると、1ラウンド中で複雑な処理をしても、データが解読される場合がある。
【0076】
<<3.組み込みシステムの機能構成例>>
図14は、本発明の一実施形態に係る組み込みシステムの機能構成の一例を示す機能ブロック図である。図示するように、組み込みシステム1は、選択部FN1と、変換部FN2と、排他的論理和計算部FN3とを含む。
【0077】
選択部FN1は、入力データD_INのうち、4バイトのサブラウンドデータD_SRを選択する。なお、入力データD_INは、
図3に示すように、16バイトの1ラウンドデータである。また、選択部FN1によって、サブラウンドデータD_SRが選択されると、FIPS197で定められている「ShiftRows」関数を実行した処理結果と同様の処理結果が得られる。さらに、選択部FN1は、例えば、演算装置HW1(
図1)等によって実現される。
【0078】
変換部FN2は、サブラウンドデータD_SRを1バイトのデータごとに、異なるラウンドで用いられる鍵データの成分を含むテーブルに基づいて変換して、それぞれ、4バイトの変換データを生成する。なお、テーブルを示すテーブルデータDTは、十分な記憶領域が確保できる情報処理装置によって、あらかじめ生成されるのが望ましい。テーブルデータDTの生成には、RAM又はスタックメモリといった記憶領域等が多く必要となる場合が多い。そこで、組み込みシステム1等の装置より、十分な記憶領域が確保できるPC等によって、テーブルデータDTは、あらかじめ生成されるのが望ましい。すなわち、テーブルデータDTは、生成されるラウンドとは、他のラウンドの鍵データD_Kを用いてあらかじめ生成され、組み込みシステム1にあらかじめ入力される。なお、変換部FN2は、例えば、演算装置HW1等によって実現される。
【0079】
排他的論理和計算部FN3は、それぞれの変換データD_CHの排他的論理和を計算する。なお、排他的論理和計算部FN3は、例えば、演算装置HW1等によって実現される。
【0080】
変換部FN2によるテーブルに基づく変換及び排他的論理和計算部FN3による排他的論理和の計算がそれぞれ行われると、出力は、FIPS197で定められている「AddRoundKey」、「SubBytes」及び「MixColumns」の関数を実行した処理結果と同様の処理結果となる。
【0081】
また、あるラウンドの処理(第1ラウンド)で用いられるテーブルには、他のラウンド(第2ラウンド)の鍵データD_Kが含まれる。そのため、BGEアタック等によって、第1ラウンド当たりの入出力の関係が解析されても、テーブル及び鍵データを解析するのが難しくなるため、暗号化されたデータを解読するのが難しくなり、組み込みシステムは、データを難読化することができる。
【0082】
また、本発明に係る実施形態では、128ビットの鍵長の場合には、組み込みシステムは、最初のラウンド及び中間のラウンドで、1ラウンドにつき、16キロバイトのLUTを用いる。また、組み込みシステムは、最後のラウンドで、4キロバイトのLUTを用いる。したがって、組み込みシステムは、「16×9ラウンド+4=148キロバイト」のデータ容量でAES方式によって暗号化を行うことができる。なお、192ビットの鍵長の場合には、11ラウンド行われるので、組み込みシステムは、「16×11ラウンド+4=180キロバイト」のデータ容量でAES方式によって暗号化を行うことができる。さらに、256ビットの鍵長の場合には、13ラウンド行われるので、組み込みシステムは、「16×13ラウンド+4=212キロバイト」のデータ容量でAES方式によって暗号化を行うことができる。このようにして、組み込みシステムは、少ないデータ容量でAES方式によって暗号化を行うことができる。
【0083】
また、本発明は、使用できる記憶容量等に係る制約が多い組み込みシステムに適用される形態が望ましい。さらに、組み込みシステムは、プログラム及びデータの解読を難しくするため、
図1に示すように、演算装置にメモリが内蔵されるハードウェア構成であるのが望ましい。
【0084】
組み込みシステムは、例えば、いわゆるスマートメータ(Smart Meter)等に用いられる。そして、スマートメータ等は、外部装置等とデータを送受信する場合が多い。この場合には、スマートメータ等は、組み込みシステムによって、AES方式で暗号化してデータを送受信できる。これによって、送受信されるデータは、暗号化されているため、スマートメータは、データの送受信においてセキュリティを向上させることができる。
【0085】
<<変形例>>
組み込みシステムは、AES方式によって、暗号化を行うに限られない。例えば、組み込みシステムは、各処理の逆関数に相当する処理を用いて、復号化を行ってもよい。なお、例えば、「ShiftRows」関数の逆関数は、「InvShiftRows」関数等である。他にも、「SubBytes」関数の逆関数は、「InvSubBytes」関数であり、「MixColumns」関数の逆関数は、「InvMixColumns」関数である。
【0086】
組み込みシステムは、スマートメータに限られない。例えば、組み込みシステムは、組込機器全般、クラウド等によって他の装置と通信を行う装置、IoT(Internet of Things)に用いられる各装置又はこれらを組み合わせた1以上の情報処理装置を有する情報処理システム等であってもよい。
【0087】
また、組み込みシステムは、1つの情報処理装置によって実現される構成に限られない。即ち、組み込みシステムは、2つ以上の情報処理装置を有する情報処理システムによって実現されてもよい。なお、情報処理システムでは、各処理の一部又は全部が分散、冗長、並列又はこれらを組み合わせるように、処理が行われてもよい。
【0088】
さらに、本発明に係る実施形態は、情報処理装置又は情報処理システム等のコンピュータに情報処理方法を実行させるためのプログラムによって実現されてもよい。すなわち、プログラムは、本発明に係る情報処理方法をコンピュータに実行させるためのプログラムであって、プログラミング言語等によって記述されるコンピュータプログラムである。
【0089】
また、プログラムは、DVD若しくはブルーレイ(登録商標)等の光ディスク、フラッシュメモリ、磁気ディスク又は光磁気ディスク等の記録媒体に記憶され、頒布されてもよい。さらに、プログラムは、電気通信回線等を介して、頒布されてもよい。
【0090】
以上、本発明の好ましい実施例について詳述したが、本発明は、係る特定の実施形態に限定されるものではない。すなわち、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形又は変更が可能である。
【解決手段】入力データをAES方式で暗号化又は復号化する情報処理装置が、第1ラウンドの処理対象となる前記入力データのうち、4バイトのサブラウンドデータを選択し、前記サブラウンドデータを1バイトのデータごとに、前記第1ラウンドの次のラウンドである第2ラウンドで用いられる鍵データの成分を含むテーブルに基づいて変換して、それぞれ、4バイトの変換データを生成し、それぞれの前記変換データの排他的論理和を計算することで上記課題を解決する。