【文献】
Douglas R. Stinson 著/櫻井 幸一 監訳,暗号理論の基礎,日本,共立出版株式会社,1996年11月 1日,初版1刷,p.19−21
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
以下、本発明の実施形態を図面に基づいて、データ処理装置及びデータ処理方法の例を説明する。
【0013】
1.データ処理装置のハードウェア構成例
2.データ処理装置による全体処理例
3.暗号化等への適用例
4.データ処理装置の機能構成例
データ処理装置は、例えば、組み込みシステム(Embedded system)である。組み込みシステムは、産業機器又は家電製品等に内蔵され、特定の機能を実現するためのシステムである。なお、データ処理装置は、PC(Personal Computer)等の情報処理装置でもよい。以下、本発明の実施形態を図面に基づいて、データ処理装置が組み込みシステムである例で説明する。
【0014】
<<1.データ処理装置のハードウェア構成例>>
図1は、本発明の一実施形態に係る組み込みシステムのハードウェア構成の一例を説明するブロック図である。図示するように、組み込みシステム1は、演算装置HW1と、記憶装置HW2と、I/F(interface)HW3とを有する。
【0015】
演算装置HW1は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)等である。また、演算装置HW1は、組み込みシステム1が行う処理の全部又は一部を実現するための演算と、データの加工とを行う演算装置並びに組み込みシステム1が有するハードウェアを制御する制御装置である。さらに、演算装置HW1は、例えば、図示するように、RAM(Random Access Memory)HW10及びROM(Read−Only Memory)HW11等の記憶装置を内蔵し、これらの記憶装置によって記憶領域を実現する。
【0016】
RAMHW10は、演算装置HW1等が用いるプログラム、設定値又はデータ等を展開及び記憶するために用いられる記憶装置である。
【0017】
ROMHW11は、演算装置HW1等が用いるプログラム、設定値又はデータ等を記憶する記憶装置である。
【0018】
記憶装置HW2は、いわゆるメモリ(memory)等である。また、記憶装置HW2は、組み込みシステム1が用いるプログラム、設定値又はデータ等を記憶する主記憶装置である。なお、記憶装置HW2は、補助記憶装置等を有してもよい。
【0019】
I/FHW3は、組み込みシステム1にデータ等を入出力するインタフェースである。I/FHW3は、バス、コネクタ、ケーブル及びドライバ等で実現される。
【0020】
なお、組み込みシステム1のハードウェア構成は、図示する構成に限られない。例えば組み込みシステム1は、記憶装置HW2を有さなくともよい。また、組み込みシステム1は、更に演算装置等の補助装置を外部又は内部に有してもよい。
【0021】
<<2.データ処理装置による全体処理例>>
図2は、本発明の一実施形態に係る組み込みシステムによる全体処理の一例を説明するフローチャートである。例えば、組み込みシステムは、以下のような処理を行い、データ処理方法を実現する。
【0022】
<<対象データの入力例(ステップS101)>>
ステップS101では、組み込みシステムは、並べ替えの対象となるデータ(以下「対象データ」という。)を入力する。例えば、対象データは、以下のように、複数のデータから構成されるデータである。
【0023】
図3は、本発明の一実施形態に係る対象データの一例を説明する模式図である。例えば、図示するような対象データDTが並べ替え処理の対象であるとする。この例では、対象データDTは、「0」を示す0番目のデータ(以下「第0データDN0」という。)、「1」を示す1番目のデータ(以下「第1データDN1」という。)、「2」を示す2番目のデータ(以下「第2データDN2」という。)及び「3」を示す3番目のデータ(以下「第3データDN3」という。)の4つのデータで構成されるとする。また、図示するように、この例では、第0データDN0乃至第3データDN3は、昇順に並ぶデータ構成であるとする。以下、図において、順番は、左から右にカウントする。
【0024】
さらに、以下の説明では、対象データDTを構成する複数のデータの数を「N」で示す。例えば、図示する例では、「N=4」である。なお、データ数は、4つ(N=4)に限られず、他の数でもよい。なお、データの数は、あらかじめ設定される値である。
【0025】
例えば、図示する対象データDT、すなわち、「N=4」の対象データは、各データを並べ替えて、「N!(階乗)=4!=4×3×2×1=24通り」のいずれかのパターンに変換できる。以下の説明では、各データを並べ替える位置(以下「並べ替え先」という。)を「n
c」で示す。なお、「n
c」の添字である「c」は、各データの順番を示す値である。つまり、「c=0」は、0番目を示す。
【0026】
また、以下の説明では、各データは、0番目の並べ替え先「n
0」から順に並べ替え先が決定される。具体的には、まず、0番目の並べ替え先「n
0」が決定される。続いて、0番目の並べ替え先「n
0」の次に1番目の並べ替え先「n
1」が決定される。さらに、1番目の並べ替え先「n
1」の次に2番目の並べ替え先「n
2」が決定される。そして、3番目のデータは、0乃至2番目のそれぞれのデータの位置が決まると、残りの位置に決まるデータである。例えば、
図3に示す対象データDTにおいて、各データの並べ替え先「n
c」は、以下のように示せる。
【0027】
図4は、本発明の一実施形態に係る並べ替え先の一例を説明する模式図である。例えば、「n
0」のパターンは、
図4(A)で示すように、第0データDN0を移動させない場合(図では、「n
0=0」である。)を含めて、「n
0=0」乃至「n
0=3」の4通りとなる。具体的には、「n
0=0」は、移動しない、すなわち、第0データDN0から数えて0番目のデータ(図では、第0データDN0である。)と並べ替えるパターンを示す。また、「n
0=1」は、第0データDN0から数えて1番目のデータ(図では、第1データDN1である。)と並べ替えることを示す。同様に、「n
0=2」は、第0データDN0から数えて2番目のデータ(図では、第2データDN2である。)と並べ替えるパターンを示す。さらに、「n
0=3」は、第0データDN0から数えて3番目のデータ(図では、第3データDN3である。)と並べ替えるパターンを示す。
【0028】
そして、
図4(A)で示す「n
0=0」乃至「n
0=3」のうち、0番目の並べ替え先「n
0」がいずれかのパターンに決定すると、次に、組み込みシステムは、
図4(B)で示す「n
1=0」乃至「n
1=2」のうちから、1番目の並べ替え先「n
1」を決定する。なお、
図4(B)は、「n
0=0」のパターンの後に、1番目の並べ替え先「n
1」が決定される例である。
【0029】
「n
0=0」のパターンでは、第0データDN0は、0番目の位置と決定している。そのため、1番目より右側となる残りの3つの位置が、第1データDN1のパターンとなる。具体的には、
図4(B)で示すように、「n
1」のパターンは、第1データDN1を移動させない場合(図では、「n
1=0」である。)を含めて、「n
1=0」乃至「n
1=2」の3通りとなる。具体的には、「n
1=0」は、移動しない、すなわち、第1データDN1から数えて0番目のデータ(図では、第1データDN1である。)と並べ替えるパターンを示す。また、「n
1=1」は、第1データDN1から数えて1番目のデータ(図では、第2データDN2である。)と並べ替えるパターンを示す。同様に、「n
1=2」は、第1データDN1から数えて2番目のデータ(図では、第3データDN3である。)と並べ替えるパターンを示す。
【0030】
0番目の並べ替え先「n
0」及び1番目の並べ替え先「n
1」がそれぞれ決まると、続いて、組み込みシステムは、0番目の並べ替え先「n
0」及び1番目の並べ替え先「n
1」と同様に、2番目の並べ替え先「n
2」を決定する。具体的には、2番目の並べ替え先「n
2」は、第0データDN0及び第1データDN1の位置が決まっているため、残りの2つから決めることになる。したがって、2番目の並べ替え先「n
2」のパターンは、2通りとなる。例えば、「n
0=0」かつ「n
1=0」である場合には、2番目の並べ替え先「n
2」は、「n
2=0」又は「n
2=1」のどちらかとなる。
【0031】
同様に、0番目の並べ替え先「n
0」乃至2番目の並べ替え先「n
2」がそれぞれ決まると、続いて、組み込みシステムは、0番目の並べ替え先「n
0」乃至2番目の並べ替え先「n
2」と同様に、3番目の並べ替え先「n
3」を決定する。具体的には、3番目の並べ替え先「n
3」は、第0データDN0乃至第2データDN2の位置が決まっているため、残りの1つになる。したがって、3番目の並べ替え先「n
3」のパターンは、1通りとなる。例えば、「n
0=0」、「n
1=0」及び「n
2=0」である場合には、3番目の並べ替え先「n
3」は、「n
3=0」となる。このように、3番目の並べ替え先「n
3」は、「n
0」、「n
1」及び「n
2」が決まると、パターンが1通りであるため、残りの1つの位置に決まる。そのため、以下の説明では、0番目の並べ替え先「n
0」乃至2番目の並べ替え先「n
2」を決定する方法を記載し、3番目の並べ替え先「n
3」の決定は、省略する。
【0032】
このように、各並べ替え先が決まると、各データの位置が決まるため、並べ替えパターンが決定する。つまり、「N=4」の場合には、並べ替えパターンは、24通りのうちから1つに決定される。この並べ替えパターンを特定できる番号を以下の説明では「並替番号n」という。すなわち、並替番号nは、「N=4」の場合には、「0」乃至「23」のいずれかの番号となる。例えば、「N=4」の場合には、並替番号nは、下記(1)式で示す番号である。
【0033】
【数1】
上記(1)式に示すように、並替番号nは、以下のような構成のデータである。
【0034】
図5は、本発明の一実施形態に係る並替番号のデータ構成の一例を説明する模式図である。図示するように、「N=4」の場合には、並替番号nは、「n
0」、「n
1」及び「n
2」の3つの並べ替え先で構成される。
【0035】
上述の通り、「n
0」のパターンは、「n
0=0」乃至「n
0=3」の4通りとなる。ゆえに、4通りのパターンを表現するため、「n
0」は、「log
24=2ビット」のビット数である。同様に、「n
1」のパターンは、「n
1=0」乃至「n
1=2」の3通りとなる。ゆえに、3通りのパターンを表現するため、「n
1」は、「log
23=1.58496・・・≒1.585ビット」のビット数である。さらに、「n
2」のパターンは、「n
2=0」又は「n
2=1」の2通りとなる。ゆえに、2通りのパターンを表現するため、「n
2」は、「log
22=1ビット」のビット数である。したがって、「N=4」の場合には、並替番号nは、「2+1.585+1=4.585ビット」のビット数となる。なお、この値は、「log
24!=log
224=4.585ビット」である。すなわち、並替番号nは、「N=4」の場合には、並べ替えパターンを「4.585ビット」で表現することができるデータである。
【0036】
このように、並替番号nは、各データのそれぞれの並べ替え先で構成される。つまり、図示する例では、並替番号nは、「n
0」、「n
1」及び「n
2」を構成要素とし、構成要素の数は、「N−1」個である。図示するように、各並べ替え先のデータ容量は、各並べ替え先が各データのそれぞれの並べ替え先を示すため、各並べ替え先のパターン数を表現できるビット数となる。
【0037】
上記(1)式に示す並替番号nが入力されると、組み込みシステムは、例えば、以下のような処理によって、組み込みシステムは、並替番号nから各並べ替え先「n
0」乃至「n
3」をそれぞれ計算することができる。
【0038】
<<並替番号の入力例(ステップS102)>>
図2に戻り、ステップS102では、組み込みシステムは、並替番号nを入力する。例えば、並べ替えパターンをユーザが決定し、ユーザの操作等によって、並替番号nが組み込みシステムに入力される。
【0039】
<<並替番号に基づく並べ替え先の計算例(ステップS103)>>
ステップS103では、組み込みシステムは、並替番号nに基づいて並べ替え先を計算する。例えば、「N=4」の場合には、組み込みシステムは、下記(2)式乃至下記(4)式に基づいて、並替番号nから0番目の並べ替え先「n
0」乃至2番目の並べ替え先「n
2」をそれぞれ計算する。
【0040】
【数2】
上記(2)式で示すように、0番目の並べ替え先「n
0」は、並替番号nを「4」で除算した場合の余りである。
図5で示すように、0番目の並べ替え先「n
0」は、並替番号nのうち、「4通り」分の構成要素である。したがって、並替番号nのうち、「4通り」分となる構成要素を抽出、すなわち、並替番号nを「4」で除算した余りを求めると、0番目の並べ替え先「n
0」が計算される。次に、1番目の並べ替え先「n
1」は、下記(3)式によって計算される。
【0041】
【数3】
上記(3)式で示すように、まず、組み込みシステムは、並替番号nを「4」で除算する。
図5に示すように、並替番号nのうち、「4通り」分は、0番目の並べ替え先「n
0」を示すデータである。したがって、組み込みシステムは、除算によって、並替番号nから「4通り」分を消す。そして、1番目の並べ替え先「n
1」は、「3通り」であるため、除算結果を更に「3」で除算し、余りを求めると計算することができる。次に、2番目の並べ替え先「n
2」は、下記(4)式によって計算される。
【0042】
【数4】
上記(4)式で示すように、まず、組み込みシステムは、並替番号nを「4×3」で除算する。並替番号nのうち、0番目の並べ替え先「n
0」を示す「4通り」と、1番目の並べ替え先「n
1」を示す「3通り」とを乗算した「4×3=12」は、0番目の並べ替え先「n
0」及び1番目の並べ替え先「n
1」を示す構成要素である。したがって、組み込みシステムは、除算によって、並替番号nから「4×3=12通り」分の構成要素を消す。そして、2番目の並べ替え先「n
2」は、「2通り」であるため、除算結果を更に「2」で除算し、余りを求めると計算することができる。
【0043】
上記(2)式乃至上記(4)式に基づいて、組み込みシステムは、各並べ替え先、すなわち、「n
0」乃至「n
2」をそれぞれ繰り返し計算する。
【0044】
<<対象データの並べ替え例(ステップS104)>>
図2に戻り、ステップS104では、組み込みシステムは、対象データを並べ替える。すなわち、ステップS103を繰り返し計算すると求まる「n
0」乃至「n
2」に基づいて、組み込みシステムは、対象データを並べ替える。
【0045】
以上のような
図2に示す処理が行われると、例えば、対象データは、以下のように並べ替えられる。
【0046】
まず、
図2に示すステップS102において、並替番号nとして「18」が組み込みシステムに入力される。次に、
図2に示すステップS103によって、「n
0」乃至「n
2」がそれぞれ計算される。具体的には、「n
0」は、上記(2)式に基づいて、下記(5)式のように計算される。
【0047】
【数5】
上記(5)式に示すように、組み込みシステムによって、並替番号nの「18」を「4」で除算して「n
0=2」が計算される。
【0048】
次に、「n
1」は、上記(3)式に基づいて、下記(6)式のように計算される。
【0049】
【数6】
上記(6)式に示すように、組み込みシステムによって、まず、並替番号nの「18」を「4」で除算する計算が行われる。なお、除算結果は、「18÷4=4.5」の整数部分である「4」となる。そして、組み込みシステムが、除算結果「4」を更に「3」で除算すると、「n
1=1」が計算される。
【0050】
次に、「n
2」は、上記(4)式に基づいて、下記(7)式のように計算される。
【0051】
【数7】
上記(7)式に示すように、組み込みシステムによって、まず、並替番号nの「18」を「4×3」で除算する計算が行われる。なお、除算結果は、「18÷12=1.5」の整数部分である「1」となる。そして、組み込みシステムが、除算結果「1」を更に「2」で除算すると、「n
2=1」が計算される。
【0052】
このように、並替番号nが「18」である場合には、
図2に示すステップS103によって、「n
0=2」、「n
1=1」及び「n
2=1」がそれぞれ計算される。このような計算に基づいて計算された各並べ替え先に基づいて、
図2に示すステップS104では、以下のような並べ替えが行われる。
【0053】
図6は、本発明の一実施形態に係るデータ処理装置による全体処理の処理結果の一例を説明する図である。以下、
図3に示す対象データDTが入力され、かつ、並替番号nが「18」である例で説明する。
【0054】
まず、
図6(A)に示すような対象データDTに対して、「n
0=2」に基づいて、第0データDN0と、0番目のデータである第0データDN0から右に数えて「2番目」となる第2データDN2とが組み込みシステムによって並べ替えられる。つまり、
図6(A)に示す対象データDTは、まず、上記(5)式で計算された、0番目の並べ替え先「n
0=2」によって第0データDN0と、第2データDN2とが組み込みシステムによって並べ替えられて、
図6(B)に示す第2対象データDT2となる。
【0055】
図6(B)に示すように、第2対象データDT2は、
図6(A)に示す対象データDTと比較すると、第0データDN0及び第2データDN2のそれぞれの位置が異なる。
【0056】
次に、
図6(B)に示すような第2対象データDT2に対して、「n
1=1」に基づいて、第1データDN1と、1番目のデータである第1データDN1から右に数えて「1番目」となる第0データDN0とが組み込みシステムによって並べ替えられる。つまり、
図6(B)に示す第2対象データDT2は、上記(6)式で計算された、1番目の並べ替え先「n
1=1」によって第1データDN1と、第0データDN0とが組み込みシステムによって並べ替えられて、
図6(C)に示す第3対象データDT3となる。
【0057】
図6(C)に示すように、第3対象データDT3は、
図6(B)に示す第2対象データDT2と比較すると、第0データDN0及び第1データDN1のそれぞれの位置が異なる。
【0058】
次に、
図6(C)に示すような第3対象データDT3に対して、「n
2=1」に基づいて、第1データDN1と、2番目のデータである第1データDN1から右に数えて「1番目」となる第3データDN3とが組み込みシステムによって並べ替えられる。つまり、
図6(C)に示す第3対象データDT3は、上記(7)式で計算された、2番目の並べ替え先「n
2=1」によって第1データDN1と、第3データDN3とが組み込みシステムによって並べ替えられて、
図6(D)に示す第4対象データDT4となる。
【0059】
図6(D)に示すように、第4対象データDT4は、
図6(C)に示す第3対象データDT3と比較すると、第1データDN1及び第3データDN3のそれぞれの位置が異なる。
【0060】
このようにして、並替番号nが入力されると、組み込みシステムは、並替番号nに基づいて、
図6に示すように、並替番号nから計算されるそれぞれの並べ替え先n
cに基づいてデータを並べ替えることができる。具体的には、「N=4」、かつ、
図3に示す対象データDTが入力される場合には、並替番号、各並べ替え先及び並べ替えパターンは、以下のような関係になる。
【0061】
図7は、本発明の一実施形態に係る「N=4」の場合の並替番号、各並べ替え先及び並べ替えパターンの一例を説明する図である。図示するように、並替番号nが入力されると、組み込みシステムは、各並べ替え先n
cを上記(2)式乃至上記(4)式によって計算できる。そして、各並べ替え先n
cが決まると、
図6のように、組み込みシステムは、データを並べ替えることができる。
【0062】
また、
図7に示すように、並替番号nが定まると、図示するように、並べ替えパターンは、「24通り」のいずれかのパターンに決定する。すなわち、並替番号nが定まると、どのような並べ替えパターンにデータを変換するかを決定することができる。したがって、組み込みシステムは、並替番号nから対応する並べ替えパターンとなるようにデータを変換できるLUT等のテーブルを特定してもよい。この場合には、組み込みシステムは、並べ替え先n
cを計算する負荷を軽減できる。
【0063】
さらに、並べ替えの対象となるデータは、4つ、すなわち、「N=4」に限られない。「N=4」以外の場合を考慮する、すなわち、上記(2)式乃至上記(4)式を一般化すると、並替番号nから各並べ替え先「n
c」を計算する計算式は、下記(8)式のようになる。
【0064】
【数8】
つまり、上記(8)式において、「N=4」と設定されると、計算式は、上記(2)式乃至上記(4)式のような計算式となる。さらに、並替番号nに「18」が入力されると、上記(5)式乃至上記(7)式のように、計算ができる。このように、並替番号nが入力されると、組み込みシステムは、所定の並べ替えパターンとなるように、データを並べ替えることができる。そして、並替番号nを用いると、組み込みシステムは、LUT等のテーブルデータを用いる場合よりも並べ替えに必要なデータ容量を小さくすることができる。具体的には、データ容量は、以下のようになる。
【0065】
図8は、本発明の一実施形態に係るデータの並べ替えに必要なデータ容量の一例を説明する図である。図は、データ数「N」ごとの並替番号nを用いる場合のデータ容量を示す。
【0066】
例えば、「N=256」の場合には、並替番号nは、データ容量は、「211」である。一方で、テーブルを用いる場合には、テーブルは、256個のそれぞれのデータに対応して、1つデータを持つため、テーブルを用いると、データ容量は、「256」である。ゆえに、並替番号nを用いると、「N=256」、すなわち、8ビット入力かつ8ビット出力の場合には、組み込みシステムは、テーブルを用いる場合と比較すると、「256−211=45バイト」のデータ容量を削減することができる。
【0067】
<<並べ替えパターンから並替番号nを算出する処理例>>
また、組み込みシステムは、並べ替えパターンから並替番号nを例えば以下のような処理によって算出することができる。以下、
図3に示す対象データDTを例に説明する。すなわち、対象データDTのように昇順に並ぶ複数のデータを所定の並べ替えパターンに変換する場合の並替番号nを算出する例を以下に説明する。
【0068】
図9は、本発明の一実施形態に係る並べ替えパターンから並替番号を算出する例を説明する図である。以下、
図3に示す対象データDTが、
図9(A)に示す第4対象データDT4に変換される並べ替えパターンの並替番号nを計算する例で説明する。すなわち、
図6で説明したように、この例の並べ替えパターンは、並替番号nが「18」となる例である。計算では、組み込みシステムは、並べ替えパターンが有する各パターンに基づいて、各並べ替え先「n
c」をそれぞれ計算する。なお、計算順序は、図において左から順とする。
【0069】
まず、
図9(A)に示す第4対象データDT4の並べ替えパターンにおいて、最も左のパターンに位置する第2データDN2について計算する。この計算は、例えば、
図9(B)に示すように行われる。具体的には、第2データDN2は、対象データDTを検索すると、第2番目の位置で検出されるデータである。第2データDN2が検索される位置は、第0番目の位置、すなわち、第0データDN0が位置する最も左側の位置から数えると、2つ分右側の位置である。このように、第2データDN2が検索される位置と、第0番目の位置との距離が0番目の並べ替え先「n
0」と計算される。すなわち、この例では、
図9(B)に示すように、組み込みシステムは、「n
0=2」と計算する。
【0070】
次に、
図9(C)に示すように、組み込みシステムは、第0データDN0と、第2データDN2とを並べ替える。
図9(C)に示す並べ替えが行われると、データは、
図9(D)に示すように、第2対象データDT2となる。
【0071】
続いて、
図9(A)に示す第4対象データDT4の並べ替えパターンにおいて、左から2つ目のパターンに位置する第0データDN0について計算する。この計算は、例えば、
図9(E)に示すように行われる。具体的には、第0データDN0は、第2対象データDT2を検索すると、第3番目の位置で検出されるデータである。第0データDN0が検索される位置は、第1番目の位置、すなわち、第2対象データDT2において左側から2つ目の位置から数えると、1つ分右側の位置である。このように、第0データDN0が検索される位置と、第1番目の位置との距離が1番目の並べ替え先「n
1」と計算される。すなわち、この例では、
図9(E)に示すように、組み込みシステムは、「n
1=1」と計算する。
【0072】
次に、
図9(F)に示すように、組み込みシステムは、第1データDN1と、第0データDN0とを並べ替える。
図9(F)に示す並べ替えが行われると、データは、
図9(G)に示すように、第3対象データDT3となる。
【0073】
そして、
図9(A)に示す第4対象データDT4の並べ替えパターンにおいて、左から3つ目のパターンに位置する第3データDN3について計算する。この計算は、例えば、
図9(H)に示すように行われる。具体的には、第3データDN3は、第3対象データDT3を検索すると、第4番目の位置で検出されるデータである。第3データDN3が検索される位置は、第2番目の位置、すなわち、第3対象データDT3において左側から3つ目の位置から数えると、1つ分右側の位置である。このように、第3データDN3が検索される位置と、第2番目の位置との距離が2番目の並べ替え先「n
2」と計算される。すなわち、この例では、
図9(H)に示すように、組み込みシステムは、「n
2=1」と計算する。
【0074】
次に、
図9(I)に示すように、組み込みシステムは、第1データDN1と、第3データDN3とを並べ替える。
図9(I)に示す並べ替えが行われると、データは、
図9(A)に示すように、第4対象データDT4となる。
【0075】
図9(B)、
図9(E)及び
図9(H)に示すように計算すると、組み込みシステムは、各並べ替え先「n
c」を計算することができる。この例では、組み込みシステムは、「n
0=2」、「n
1=1」及び「n
2=1」と計算することができる。次に、計算された並べ替え先「n
c」を上記(1)式に代入すると、組み込みシステムは、並替番号nをすることができる。具体的には、「n
0=2」、「n
1=1」及び「n
2=1」を上記(1)式に代入して計算すると、計算は、下記(9)式のようになる。
【数9】
上記(9)式のように、組み込みシステムは、並替番号nを「18」と計算することができる。上記(9)式等の並べ替えパターンから並替番号nを計算する計算式を一般化すると、計算式は、下記(10)式のようになる。
【0076】
【数10】
上記(10)式を用いると、「N=4」以外の場合でも、組み込みシステムは、並べ替えパターンから並替番号nを計算することができる。
【0077】
<<別の全体処理例>>
例えば、
図3に示すデータが入力されるとする。なお、以下の説明では、各データが入力される順番を「0」からカウントして「c」で示す。例えば、以下のようにして、並替番号nに基づいてデータが選択される。
【0078】
図10は、本発明の一実施形態に係る組み込みシステムによる別の全体処理の一例を説明するフローチャートである。
【0079】
<<並替番号nの入力例(ステップS201)>>
ステップS201では、組み込みシステムは、並替番号nを入力する。例えば、
図2に示すステップS102と同様の方法等で、組み込みシステムは、並替番号nを入力する。
【0080】
<<並べ替え先の計算例(ステップS202)>>
ステップS202では、組み込みシステムは、各並べ替え先「n
c」を計算する。具体的には、ステップS201で入力される並替番号nに基づいて、組み込みシステムは、各並べ替え先「n
c」をそれぞれ計算する。すなわち、各並べ替え先「n
c」は、「n
0」乃至「n
データ数−1」がそれぞれ計算される。例えば、上記(8)式に基づいて、組み込みシステムは、並替番号nから各並べ替え先「n
c」をそれぞれ計算する。以下、並替番号nに基づいて、「n
0=2」、「n
1=1」、「n
2=3」及び「n
3=2」である例で説明する。
【0081】
<<第0番目のデータ(c=0)の処理例>>
<<各データの入力例(ステップS203)>>
ステップS203では、組み込みシステムは、各データを入力する。この例では、最初(c=0である。)、組み込みシステムは、第0番目のデータを入力する。なお、この例では、第0番目のデータは、入力値が「0」であるとする。
【0082】
<<入力値の代入及び候補値の計算例(ステップS204)>>
ステップS204では、組み込みシステムは、入力値を代入及び候補値を計算する。まず、ステップS204では、組み込みシステムは、入力値を第1変数「data」に代入する。第0番目のデータである場合(c=0である。)には、入力値が「0」であるため、「data=0」となる。
【0083】
次に、ステップS204では、組み込みシステムは、候補値を計算する。候補値は、「ca
n=data+n
data」と計算される。具体的には、第0番目のデータである場合には、「data=0」であって、「n
data=n
0」である。また、「n
0」は、ステップS202より、「n
0=2」である。したがって、第0番目のデータである場合には、組み込みシステムは、「ca
n=0+2=2」と計算する。
【0084】
<<探索例(ステップS205)>>
ステップS205では、組み込みシステムは、第2変数「temp」を探索する。具体的には、ステップS205では、組み込みシステムは、「temp+n
temp=ca
n」、かつ、「temp<data」となる第2変数「temp」が存在するか否かを探索する。もし、上記条件を満たす第2変数「temp」が存在する場合には、該当する値を第3変数「ser」とする。なお、該当する値が複数存在する場合には、最大値が第3変数「ser」となる。
【0085】
<<第3変数が存在するか否かの判断例(ステップS206)>>
ステップS206では、組み込みシステムは、第3変数が存在するか否かを判断する。すなわち、ステップS205において、上記条件を満たす第2変数「temp」が存在し、第3変数「ser」が存在する場合(ステップS206でYES)には、組み込みシステムは、ステップS207に進む。一方で、ステップS205において、上記条件を満たす第2変数「temp」が存在せず、第3変数「ser」が存在しない場合(ステップS206でNO)には、組み込みシステムは、ステップS203(ループによる繰り返しの場合)又はステップS208(ループが終了の場合)に進む。
【0086】
第0番目のデータである場合(c=0である。)には、候補値「ca
n=2」(ステップS204)、第1変数「data=0」(ステップS204)及び「n
data=n
0=2」(ステップS202)である。そのため、「temp+n
temp=ca
n」、かつ、「temp<data」の条件を満たす第2変数「temp」は、存在しない場合となる(ステップS206でNO)。この場合には、次に、組み込みシステムは、ループに基づいて、第1番目のデータ(c=1)の処理(ステップS203)に進む。
【0087】
したがって、第0番目のデータ(c=0)において、候補値「ca
n=2」が解となる。
【0088】
<<第1番目のデータ(c=1)の処理例>>
第1番目のデータ(c=1)である場合には、組み込みシステムは、ステップS203乃至ステップS207によって以下のような処理を行う。この例では、第1番目のデータは、入力値が「1」であるとする。
【0089】
したがって、組み込みシステムは、「data=1」とする(ステップS204)。さらに、組み込みシステムは、「ca
n=data+n
data=1+n
1=1+1=2」と計算する(ステップS204)。
【0090】
次に、「temp+n
temp=ca
n」、かつ、「temp<data」となる第2変数「temp」が存在するか否かを探索すると(ステップS205)、組み込みシステムは、「temp=0」と検索する(ステップS206でYES)。
【0091】
そこで、ステップS207では、組み込みシステムは、「data=ser=0」とし、さらに、「ca
n=ser=0」とする。そして、「data=0」、かつ、「ca
n=0」の条件下で、「temp+n
temp=ca
n」、かつ、「temp<data」となる第2変数「temp」が存在するか否かを探索すると(ステップS205)、条件を満たす第2変数「temp」は、存在しない場合となる(ステップS206でNO)。この場合には、組み込みシステムは、ループに基づいて、次に、第2番目のデータ(c=2)の処理(ステップS203)に進む。
【0092】
したがって、第1番目のデータ(c=1)において、候補値「ca
n=0」が解となる。
【0093】
<<第2番目のデータ(c=2)の処理例>>
第2番目のデータ(c=2)である場合には、組み込みシステムは、ステップS203乃至ステップS207によって以下のような処理を行う。この例では、第2番目のデータは、入力値が「2」であるとする。
【0094】
したがって、組み込みシステムは、「data=2」とする(ステップS204)。さらに、組み込みシステムは、「ca
n=data+n
data=2+n
2=2+3=5」と計算する(ステップS204)。
【0095】
次に、「temp+n
temp=ca
n」、かつ、「temp<data」となる第2変数「temp」が存在するか否かを探索すると(ステップS205)、条件を満たす第2変数「temp」は、存在しない場合となる(ステップS206でNO)。この場合には、組み込みシステムは、ループに基づいて、次に、第3番目のデータ(c=3)の処理(ステップS203)に進む。
【0096】
したがって、第2番目のデータ(c=2)において、候補値「ca
n=5」が解となる。
【0097】
<<第3番目のデータ(c=3)の処理例>>
第3番目のデータ(c=3)である場合には、組み込みシステムは、ステップS203乃至ステップS207によって以下のような処理を行う。この例では、第2番目のデータは、入力値が「3」であるとする。
【0098】
したがって、組み込みシステムは、「data=3」とする(ステップS204)。さらに、組み込みシステムは、「ca
n=data+n
data=3+n
3=3+2=5」と計算する(ステップS204)。
【0099】
次に、「temp+n
temp=ca
n」、かつ、「temp<data」となる第2変数「temp」が存在するか否かを探索すると(ステップS205)、組み込みシステムは、「temp=2」と検索する(ステップS206でYES)。
【0100】
そこで、ステップS207では、組み込みシステムは、「data=ser=2」とし、さらに、「ca
n=ser=2」とする。そして、「data=2」、かつ、「ca
n=2」の条件下で、「temp+n
temp=ca
n」、かつ、「temp<data」となる第2変数「temp」が存在するか否かを探索すると(ステップS205)、組み込みシステムは、「temp=1」と検索する(ステップS206でYES)。
【0101】
そして、ステップS207では、組み込みシステムは、「data=ser=1」とし、さらに、「ca
n=ser=1」とする。そして、「data=1」、かつ、「ca
n=1」の条件下で、「temp+n
temp=ca
n」、かつ、「temp<data」となる第2変数「temp」が存在するか否かを探索すると(ステップS205)、条件を満たす第2変数「temp」は、存在しない場合となる(ステップS206でNO)。この場合には、組み込みシステムは、ステップS208に進む。
【0102】
したがって、第3番目のデータ(c=3)において、候補値「ca
n=1」が解となる。
【0103】
<<データの選択例(ステップS208)>>
ステップS208では、組み込みシステムは、候補値「ca
n」に基づいてデータを選択する。処理結果は、例えば、以下のようになる。
【0104】
図11は、本発明の一実施形態に係る組み込みシステムによる別の全体処理の処理結果例を説明する模式図である。図示するように、組み込みシステムは、入力されるデータをな並替番号nに基づいてルックアップすることができる。すなわち、並替番号nに基づいて各データを選択することによって、ルックアップテーブルを生成せず、組み込みシステムは、図示するようなテーブルを生成することができる。
【0105】
<<3.暗号化等への適用例>>
図2等に示す処理は、例えば、AES(Advanced Encryption Standard)方式の暗号化等に適用可能である。具体的には、
図2等に示す処理は、例えば、以下のようなAESにおけるホワイトボックスクリプトグラフィ(White−Box Cryptography)の処理等に適用できる。
【0106】
図12は、本発明の一実施形態に係る並べ替えを暗号化の1ラウンド当たりの処理に適用する例を説明する模式図である。図示する処理は、入力データD_INのうち、4つの1バイトのデータに対して処理が行われ、出力データD_OUTのうち、4つの1バイトのデータが生成される1サブラウンド当たりの処理の一例を示す。また、図示する処理、すなわち、1ラウンド当たりの処理では、4サブラウンドの処理が繰り返し行われる。以下、1サブラウンド当たりの処理を中心に説明する。
【0107】
ステップS301では、4つの1バイトのデータが選ばれる。また、FIPS197で定められている「ShiftRows」関数を実行した処理結果と、ステップS301を行った処理結果とは、同様の結果となる。
【0108】
ステップS302では、ステップS301で選ばれる1バイトのデータが、いわゆるT−Box等によって変換され、変換されたデータが出力される。
【0109】
ステップS303では、ステップS302で出力されるデータに対して、いわゆるXOR−Tables等のテーブルによって変換が行われ、図示するように、排他的論理和の計算が行われた場合と同様の処理結果が出力される。
【0110】
図示するように、FIPS197で定められている「AddRoundKey」関数、「SubBytes」関数及び「MixColumns」関数をそれぞれ実行した処理結果と、ステップS302及びステップS303をそれぞれ行った処理結果とは、同様の結果となる。
【0111】
図示する処理のうち、組み込みシステムは、「T
1」の一部の処理等に、
図2等に示す処理を適用することができる。具体的には、「T
1」の一部の処理では、並べ替え処理が行われる。そこで、まず、組み込みシステムは、並替番号nをあらかじめRAMHW10(
図1参照)等に記憶する。そして、並べ替えでは、組み込みシステムは、
図2等に示すように、並替番号nに基づいて全体処理を行うと並べ替えを実現することができる。また、組み込みシステムは、暗号化においても、並替番号nからテーブルを特定して並べ替えを行ってもよい。なお、逆関数を用いる復号化においても、組み込みシステムは、同様に並べ替えを行ってもよい。他にも、暗号化は、以下のような処理でもよい。
【0112】
図13は、本発明の一実施形態に係る並べ替えを暗号化の1ラウンド当たりの処理に適用する別の例を説明する模式図である。具体的には、1ラウンド当たりの処理は、特願2015−165174に開示される暗号化に適用されてもよい。より具体的には、
図13に示す「0」乃至「15」の1バイトのデータが16個入力された入力データD_INに対する処理である。さらに、1ラウンド当たりの処理は、16バイトのうち、選択される4バイトのデータを処理単位、すなわち、1サブラウンド単位で処理が繰り返し行われる。つまり、1ラウンド当たりの処理では、4サブラウンドの処理が繰り返し行われる。以下、1サブラウンド当たりの処理を中心に説明する。
【0113】
<<サブラウンドデータの選択例(ステップS401)>>
ステップS401では、組み込みシステムは、サブラウンドデータを選択する。すなわち、組み込みシステムは、入力データD_INのうち、1サブラウンド当たりの処理対象となる1サブラウンドデータを選択する。また、FIPS197で定められている「ShiftRows」関数を実行した処理結果と、ステップS401を行った処理結果とは、同様の結果となる。
【0114】
以下、
図13に示すように、ステップS401で、入力データD_INのうち、「0」、「5」、「10」及び「15」の1バイトのそれぞれのデータがサブラウンドデータとして選択される例で説明する。そのうち、選択されるサブラウンドデータのうち、「0」の1バイトのデータに対する処理を例に説明する。
【0115】
<<テーブルに基づく置換例(ステップS402)>>
ステップS402では、組み込みシステムは、テーブルに基づいて置換を行う。すなわち、図示するように、組み込みシステムは、入力される「0」の1バイトのデータをテーブルに基づいて置換する。そして、テーブルに基づいて置換が行われると、置換データが生成される。また、テーブルに基づく置換には、第1変換「g」と、第2逆変換「f
−1」とが含まれる。
【0116】
<<テーブルに基づくビットの並べ替え例(ステップS403)>>
ステップS403では、組み込みシステムは、テーブルに基づいてビットを並べ替える。図では、並べ替えは、「h」で示す。なお、「i」は、乱数の排他的論理和による加算等を示す。
【0117】
<<排他的論理和(XOR、exclusive or)の計算例(ステップS404)>>
ステップS404では、組み込みシステムは、排他的論理和を計算する。
【0118】
また、テーブルに基づく置換及び排他的論理和が計算には、第2変換「f」が含まれる。
【0119】
「0」の1バイトのデータと同様に、入力データD_INのうち、「5」、「10」及び「15」の1バイトのデータに対してステップS401乃至ステップS404がそれぞれ行われると、出力データD_OUTのうち、「0」乃至「3」のデータがそれぞれ生成され、1サブラウンドの処理が完了する。
【0120】
例えば、
図2等に示す処理は、図示する暗号化では、「T2」の処理に適用することができる。なお、「T2」による1バイト入力に対する4バイト出力のうち、1バイト当たりの処理では、1バイトの変換には、256バイトのテーブルを要する場合が多い。そこで、
図2等に示す処理を適用し、テーブルに代えて、211バイトの並替番号とする。このような構成とすると、1テーブル当たり、256バイトから211バイトにデータ容量を減らすことができる。したがって、1サブラウンド当たりでは、組み込みシステムは、「256バイト×4個のテーブル=1キロバイト」となるデータ容量を「211バイト×4つの並替番号=844バイト」にすることができる。
【0121】
<<4.データ処理装置の機能構成例>>
図14は、本発明の一実施形態に係る組み込みシステムの機能構成の一例を示す機能ブロック図である。例えば、組み込みシステム1は、入力部FN1と、計算部FN2と、並べ替え部FN3とを含む構成である。
【0122】
入力部FN1は、入力データD_INの並べ替えパターンを特定できる並替番号nを入力する。例えば、入力部FN1は、I/FHW3(
図1参照)等によって実現される。
【0123】
計算部FN2は、並替番号nに基づいて、入力データD_INに含まれるそれぞれのデータの並べ替え先n
cを計算する。例えば、計算部FN2は、演算装置HW1(
図1参照)等によって実現される。
【0124】
並べ替え部FN3は、並べ替え先n
cに基づいて入力データD_INを並べ替える。例えば、並べ替え部FN3は、演算装置HW1(
図1参照)等によって実現される。
【0125】
なお、計算部FN2は、
図7等に示すように、並替番号nに対応する並べ替えパターンとなるように入力データD_INを変換できるテーブルを特定する特定部でもよい。例えば、特定部は、演算装置HW1(
図1参照)等によって実現される。
【0126】
また、並べ替え部FN3は、
図10及び
図11に示すように、並替番号nに基づいて計算される各並べ替え先n
cから入力データD_INに含まれるデータからデータを選択していく選択する選択部でもよい。例えば、選択部は、演算装置HW1(
図1参照)等によって実現される。
【0127】
他にも、組み込みシステム1は、
図9に示すように、並べ替えパターンが入力され、並べ替えパターンとなる並替番号nを算出する算出部が含まれる構成でもよい。例えば、算出部は、演算装置HW1(
図1参照)等によって実現される。
【0128】
このように、組み込みシステム1は、並替番号nを利用すると、所定の並べ替えパターンとなるような各並べ替え先n
cを計算したり、テーブルを特定したりすることができる。そして、並替番号nは、テーブルより容量の小さいデータである。そのため、組み込みシステム1は、並べ替えに必要なデータ容量を小さくすることができる。
【0129】
なお、組み込みシステムは、1つの情報処理装置によって実現される構成に限られない。すなわち、本発明に係る実施形態は、1つ以上の情報処理装置を有する組み込みシステムによって実現されてもよい。なお、組み込みシステムでは、各処理の一部又は全部が分散、冗長、並列又はこれらを組み合わせるように、処理が行われてもよい。
【0130】
さらに、本発明に係る実施形態は、組み込みシステム等のコンピュータにデータ処理方法を実行させるためのプログラムによって実現されてもよい。すなわち、プログラムは、本発明に係るデータ処理方法をコンピュータに実行させるためのプログラムであって、プログラミング言語等によって記述されるコンピュータプログラムである。
【0131】
また、プログラムは、ブルーレイ(登録商標)等の光ディスク、フラッシュメモリ、磁気ディスク又は光磁気ディスク等の記録媒体に記憶され、頒布されてもよい。さらに、プログラムは、電気通信回線等を介して、頒布されてもよい。
【0132】
以上、本発明の好ましい実施例について詳述したが、本発明は、係る特定の実施形態に限定されるものではない。すなわち、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形又は変更が可能である。
【解決手段】入力される複数のデータを並べ替えるデータ処理装置が、前記データの並べ替えパターンを特定できる並替番号を入力し、前記並替番号に基づいて、前記データのそれぞれの並べ替え先を計算し、前記並べ替え先に基づいて前記データを並べ替えることで上記課題を解決する。