本発明の実施形態を、図を用いて説明する。各図の説明に用いている記号「XOR」は、ビットごとの排他的論理和(exclusive or)を示す。
本実施形態のランダム変換システムは、所定のプリミティブを実行する変換装置への入力および出力を切り替えるスイッチと、そのスイッチを切り替えるスケジュール表を備える。スケジュール表に従って、入出力を切り替えることにより、各種の従来のプリミティブを実現する。
図1は、本実施形態のランダム変換システム500のシステム構成図である。
本図に示すように、本実施形態のランダム変換システム500は、鍵保持部501と、定数保持部502と、ランダム変換装置503と、処理スケジュール制御部504と、処理スケジュール表507と、入力セレクタ508と、XOR入力セレクタ509と、XOR出力セレクタ510と、排他的論理和回路511と、入力データバッファ505と、出力データバッファ506とを備える。
入力セレクタ508と、XOR入力セレクタ509と、XOR出力セレクタ510とは、処理スケジュール制御部504の指示に従って、それぞれ作動する。
入力セレクタ508は、ランダム変換装置503への入力を、入力データバッファ505、鍵保持部501、定数保持部502、出力データバッファ506の4つから、いずれか1つを選択し、通過させる。XOR入力セレクタ509は、入力データバッファ505に保持されているデータを、排他的論理和回路511に通過させるか否かを選択する。XOR出力セレクタ510は、排他的論理和回路511からの出力を、出力データバッファ506へ通過させるか否かを選択する。
ランダム変換装置503は、入力されたデータを所定の規則に従って変換し、出力する。ランダム変換装置503の詳細は後述する。
排他的論理和回路511は、ランダム変換装置503からの出力とセレクタを介しての入力データバッファ505からの出力との排他的論理和をとり、その演算結果を出力データバッファ506へ出力する。なお、XOR入力セレクタ509が入力データバッファ505に保持されているデータを通過させない状態(切断)の場合、ランダム変換装置503からの出力と0との排他的論理和演算を行う。すなわち、ランダム変換装置503からの出力をそのまま通過させる。
処理スケジュール制御部504は、処理スケジュール表507に格納された定義に従って、各セレクタ508〜510を制御するとともに、ランダム変換装置503の処理を制御する。詳細は後述する。
処理スケジュール表507は、実現したいプリミティブに応じた処理のスケジュールが格納されているテーブルである。具体的には、時刻ごとの、入力セレクタ508と、XOR入力セレクタ509、XOR出力セレクタ510の状態が定義されている。図6に処理スケジュール表507の一例を示す。
本図に示すように、処理スケジュール表507は、時刻格納欄507aと、入力セレクタ状態格納欄507bと、XOR入力セレクタ状態格納欄507cと、XOR出力セレクタ状態格納欄507dとを備え、処理開始からの時刻(クロック)ごとに、入力セレクタ508、XOR入力セレクタ509、XOR出力セレクタ510の状態を、それぞれ保持する。これらの状態は、予め設定される。
入力データバッファ505は、ランダム変換システム500において変換するために入力されるメッセージなどのデータを一時的に保持する。入力データバッファ505は、64ビットの記憶領域を備える。これは、ランダム変換システム500に入力される、任意のビット長の入力データを、一定長のデータごとに区切る役割を果たす。任意の入力データ長のメッセージは、入力データバッファ505を介することで、ランダム変換装置503へ、64ビットを1ブロックとするブロック単位で入力される。なお、ブロックの長さは64ビットに限られない。
出力データバッファ506は、出力データを一時的に保持し、所定のデータ長で出力するとともに、セレクタ508の入力となる。セレクタ508は、変換処理において直前に生成した値が必要な場合、出力データバッファ506の値を通過させる。ランダム変換装置503は、必要なデータ長が出力データバッファ506に保持されるまで更新処理を繰り返す。
本実施形態のランダム変換システム500は、入力データバッファ505と出力データバッファ506とにより、入力データ長および出力データ長ともに任意にとることができる。
鍵保持部501は、ランダム変換装置503への入力となる鍵データが保持され、定数保持部502は、ランダム変換装置503への入力となる定数データが保持される。なお、鍵データおよび定数データは、利用者により設定される。また、鍵データおよび定数データはいずれもそのデータ長は64ビット(1ブロック)である。
次に、ランダム変換装置503について説明する。図2は、ランダム変換装置503の構成を例示するものである。
ランダム変換装置503は、第1記憶装置102と、第2記憶装置104と、第2の記憶装置の更新関数である線形変換部103と、第1の記憶装置の更新関数である非線形変換部105と、を備える。ランダム変換装置503は、処理の開始の指示を受け取ると、第1記憶装置102と第2記憶装置104とに保持されているデータを、上記の更新関数を用いてお互い作用させ更新させる。そして、その更新結果を出力することにより、目的の処理を実現する。
ランダム変換装置503への入力は、上述の入力データバッファ505、鍵保持部501、定数保持部502の3つから、目的の処理に応じて選択される。本図においては、これらのいずれかからの入力を、ランダム変換装置503への入力101とする。また、ランダム変換装置503からの出力106は、上述のXOR出力セレクタ510の状態に応じて、出力データバッファ506に出力される。
本実施形態のランダム変換装置503は、安全性と処理効率とを両立するため、上記各構成部が、下記の構造を有する。
本実施形態では、第1記憶装置102は、16ブロック(1024ビット)の記憶領域を備え、第2記憶装置104は、3ブロック(192ビット)の記憶領域を備える。
第1の記憶装置102は、後述するように、1ブロック(64ビット)の記憶領域を有する16のバッファ1〜16を備える。また、第2の記憶装置104は、1ブロック(64ビット)の記憶領域を有するの3のレジスタ1〜3を備える。なお、初期状態では、これらのバッファ1〜16、レジスタ1〜3には、全て0が格納される。
線形変換部103は、第1記憶装置の更新関数である。第1記憶装置102、入力101、第2記憶装置104に保持されているデータを入力とし、第1記憶装置102に変換結果を出力する。第1記憶装置が1024ビットであるため、これに伴い、線形変換部103も同様のサイズ(数千ビット程度)のデータ長のデータを扱い、簡単な関数で、第1記憶装置に保持されているデータを更新する。
図3は、線形変換部103を用いて、第1記憶装置102に保持されているデータを変換する際の処理を説明するための図である。
本実施形態のランダム変換装置503では、第1の記憶装置102に保持されているデータを線形変換部103で変換する場合、線形変換部103で変換を施す前のデータを保持する第1の記憶装置102(現第1記憶装置102)と、変換処理後のデータを保持する第1記憶装置102(新第1記憶装置102)との2領域を用意し、下記記載の変換処理終了後、新第1記憶装置102が保持するデータで、現第1記憶装置102を上書きする。
本図では、現第1記憶装置102を左側に、新第1記憶装置102を右側に記載する。
本図に示すように、線形変換部103は、3つの排他的論理和回路を備える。線形変換部103は、これらの排他的論理和回路を用い、下記1)〜6)の処理を行うことで、現第1記憶装置102に保持されているデータを変換する。
1)現第1の記憶装置102の1番目のバッファであるバッファ1(201)に格納されているブロックを、新第1の記憶装置102の2番目のバッファであるバッファ2(209)に出力する。
2)現第1の記憶装置102の4番目のバッファであるバッファ4(202)に格納されているブロックと8番目のバッファであるバッファ8(203)に格納されているブロックとを排他的論理和した演算結果を新第1記憶装置102の5番目のバッファであるバッファ5(210)に出力する。
3)現第1の記憶装置102の10番目のバッファであるバッファ10(204)に格納されているブロックと14番目のバッファであるバッファ14(205)に格納されているブロックとを排他的論理和した演算結果を新第1記憶装置102の11番目のバッファであるバッファ11(211)に出力する。
4)現第1の記憶装置102の16番目のバッファであるバッファ16(206)に格納されているブロックと、入力101または第2の記憶装置104からの出力のいずれかである別入力207からの入力とを排他的論理和した演算結果を新第1の記憶装置の第1番目のバッファであるバッファ1(208)に出力する。なお、入力101または第2の記憶装置104のいずれの出力が別入力207として入力されるかは、後述する処理モードにより定義される。
次に、非線形変換部105について説明する。非線形変換部105は、第2の記憶装置の更新関数である。第1記憶装置102、入力データバッファ505、第2記憶装置104に保持されているデータを入力とし、第1記憶装置102と出力データバッファ506とに変換結果を出力する。第2の記憶装置は192ビットであるため、これに伴い、非線形変換部105も同様のサイズ(数百ビット程度)のデータ長のデータを扱い、非線形で攪拌効果の高い関数を利用して効率的に更新を行う。
図4は、非線形変換部105を用いて、第2の記憶装置104に保持されているデータを変換する際の処理を説明するための図である。
本実施形態のランダム変換装置503では、第2の記憶装置104に保持されているデータを非線形変換部105で変換する場合、非線形変換部で変換を施す前のデータを保持する第2記憶装置104(現第2記憶装置104)と、変換処理後のデータを保持する第2記憶装置104(新第2記憶装置104)との2領域を用意し、下記記載の変換処理終了後、新第2記憶装置102が保持するデータで、現第2記憶装置104を上書きする。
本図では、現第2記憶装置104を上方に、新第2記憶装置104を下方に記載する。
本図に示すように、非線形変換部105は5つの排他的論理和回路と、2つの攪拌関数305と定数1(310)と、定数2(306)とを備える。攪拌関数305の詳細は後述する。また、定数1(310)、定数2(306)は16進数表記で、それぞれ、BB67AE8584CAA73B、3C6EF372FE94F82Bとなる64ビットの値である。また、変換処理には、別入力1(304)と別入力2(308)とを用いる。これらは、それぞれ、第1記憶装置102のバッファ4(202)、バッファ10(204)である。
以下、非線形変換部105により行われる変換処理を説明する。
1)現第2記憶装置104の2番目のレジスタであるレジスタ2(302)に格納されているブロックと別入力1(304)との排他的論理和の演算結果を攪拌関数305の入力とする。そして、攪拌関数305の出力と現第2記憶装置104の1番目のレジスタであるレジスタ1(301)に格納されているブロックとの排他的論理和の演算結果と、定数2(306)との排他的論理和の演算結果を、新第2記憶装置104の3番目のレジスタであるレジスタ3(307)に出力する。
2)現第2記憶装置104の2番目のレジスタであるレジスタ2(302)に格納されているブロックと別入力2(308)との排他的論理和の演算結果を攪拌関数305の入力とする。そして、攪拌関数305の出力と現第2記憶装置104の3番目のレジスタであるレジスタ3(303)に格納されているブロックとの排他的論理和の演算結果と、定数1(310)との排他的論理和の演算結果を、新第2記憶装置104の2番目のレジスタであるレジスタ2(311)に出力する。
3)現第2記憶装置104の2番目のレジスタであるレジスタ2(302)に格納されているブロックを、新第2記憶装置104の1番目のレジスタであるレジスタ1(312)に出力する。なお、新第2記憶装置104の1番目のレジスタであるレジスタ1(312)に格納されているブロックは、上述のXOR出力セレクタ510が通過状態の場合、出力106となり、出力データバッファ506に出力される。
次に、非線形変換部105内の攪拌関数305の処理について説明する。
図5は、攪拌関数305の構成の一例である。本図に示すように、攪拌関数305は、それぞれ32ビットのワード1(401)とワード2(402)とを入力とし、それぞれ8ビット(1バイト)毎に区切って非線形変換を施し、64ビットの出力ダブルワード414として出力する。
まず、ワード1(401)を8ビット単位に分割し、それぞれのバイトを、後述する置換表S403、404、405、406を用いて変換を行う。さらに、置換表S403〜406による出力結果に、後述するMDS変換を行い、その出力を中間ワード413として保持する。
また、ワード2(402)も同様に8ビット単位に分割し、それぞれのバイトを、置換表S408、409、410、411により変換を行い、その出力結果にMDS変換を施し、その出力を中間ワード414として保持する。
そして、中間ワード413の上位16ビットと中間ワード414の上位16ビットとを交換し、出力ダブルワード415を生成する。
ここで、上述の置換表S403〜411およびMDS変換を説明する。
本実施形態では、置換表S403〜414は全て同一のものであり、256個の要素からなる変換表である。置換表Sによる変換は、高い非線形性と攪拌性とを伴った変換で表参照で行えるうえ、簡単な構成による実現が可能であることから、暗号の実装に多く用いられる。例えば、文献A)J. Daemen, V. Rijmen, "AES Proposal: Rijndael," The first AES Candidate Conference, available at http://www.esat.kuleuven.ac.be/~rijmen/rijndael/rijndaeldocV2.zip.のRijndaelで定義されている以下の変換表を使うことが可能である。
s[256]={
99、124、119、123、242、107、111、197、
48、 1、103、 43、254、215、171、118、
202、130、201、125、250、 89、 71、240、
173、212、162、175、156、164、114、192、
183、253、147、 38、 54、 63、247、204、
52、165、229、241、113、216、 49、 21、
4、199、 35、195、 24、150、 5、154、
7、 18、128、226、235、 39、178、117、
9、131、 44、 26、 27、110、 90、160、
82、 59、214、179、 41、227、 47、132、
83、209、 0、237、 32、252、177、 91、
106、203、190、 57、 74、 76、 88、207、
208、239、170、251、 67、 77、 51、133、
69、249、 2、127、 80、 60、159、168、
81、163、 64、143、146、157、 56、245、
188、182、218、 33、 16、255、243、210、
205、 12、 19、236、 95、151、 68、 23、
196、167、126、 61、100、 93、 25、115、
96、129、 79、220、 34、 42、144、136、
70、238、184、 20、222、 94、 11、219、
224、 50、 58、 10、 73、 6、 36、 92、
194、211、172、 98、145、149、228、121、
231、200、 55、109、141、213、 78、169、
108、 86、244、234、101、122、174、 8、
186、120、 37、 46、 28、166、180、198、
232、221、116、 31、 75、189、139、138、
112、 62、181、102、 72、 3、246、 14、
97、 53、 87、185、134、193、 29、158、
225、248、152、 17、105、217、142、148、
155、 30、135、233、206、 85、 40、223、
140、161、137、 13、191、230、 66、104、
65、153、 45、 15、176、 84、187、 22};
また、上述のMDS変換は、入力32ビットをバイト毎にそれぞれ8ビット情報として扱い、それを有限体F256の要素に割り当てて、F256上の線形変換で定義されるものである。例えば、上記の文献A)で定義されている以下のF256上の行列への積をMDS変換とすることが可能である。
MDS={
(2、3、1、1)、
(1、2、3、1)、
(1、1、2、3)、
(3、1、1、2)};
ここで、例えば、32ビットの値Xを上記のMDS変換した場合、Xの上位バイトからX1、X2,X3,X4とし、変換後の出力Yも同じく上位バイトからY1、Y2、Y3、Y4とすると、出力Yの最上位バイトY1は、
Y1=2×X1+3×X2+1×X3+1×X4
となる。
なお、線形変換部103、非線形変換部105として説明したこれらの更新関数は、上述のものに限られない。入力をどのように制御しても出力列が入力とは無相関であり、かつ出力列に擬似乱数性を持つよう設計され、入力と出力との間に顕著な差分特性や線形特性がないよう設計されたものであればよい。なお、更新関数がこのような特性を満たすか否かは、従来のブロック暗号生成アルゴリズム、ストリーム暗号生成アルゴリズム、ハッシュ関数の安全性評価の手法により評価可能である。
以上のように本実施形態のランダム変換装置503は、入力101に応じて、上記の処理を行い、出力106を得る。入力101は、前述のように、セレクタ508により、鍵保持部501、定数保持部502、入力データバッファ505、出力データバッファ506から選択される。セレクタ508の制御は、処理スケジュール制御部504が、処理スケジュール表507に従って行う。
本実施形態のランダム変換システム500は、ランダム変換装置503への入力101を適宜選択することにより、暗号処理、復号処理、ハッシュ処理、メッセージ認証符号生成処理、乱数生成処理、そして、公開鍵暗号プリミティブの前計算の各機能を、1つの装置にて実現する。すなわち、本実施形態のランダム変換システム500は、処理スケジュールに従って各機能を発揮する
以下、それぞれの機能を実現するための処理スケジュール表507と、その処理スケジュール表507により実現する処理手順について説明する。以下の説明において、Mは、入力されるメッセージのブロック数で、hは、ハッシュ値のブロック数で、Lは、必要な乱数のブロック数である。また、各機能を実現する際、鍵保持部501および定数保持部502に保持されているデータを用いない場合は、当該保持部に、予め0を入力しておく。また、時刻は、ランダム変換システムの内部処理クロックの単位であり、時刻0は、処理の開始時である。1ブロックは1クロックで処理される。
<暗号化処理>
暗号化処理では、時刻0で鍵データをランダム変換装置503に取り込み、続いて48回、定数を入力しながら鍵データを攪拌した後、ランダム変換装置503の出力である攪拌後の鍵データと、入力データバッファ505のメッセージとを排他的論理和し、その結果を出力データバッファ506に保存する。これを、メッセージのバッファブロック数(M)分繰り返し、暗号文を生成する。また、生成された暗号文を復号化する際は、暗号文と鍵データとをランダム変換装置503への入力データとし、同様の処理を行う。
入力されたメッセージデータを暗号化する処理を、図6の処理スケジュール表507を用いて説明する。
本実施形態のランダム変換システム500で暗号化処理を行う場合、鍵保持部501には、暗号化に用いる鍵データが格納され、入力データバッファ505には暗号化の対象となるメッセージデータが入力され、定数保持部502には予め定められた値(定数)が保持される。
また、処理スケジュール表507は、図6に示すように定義される。具体的には、時刻格納欄507aに0が設定された行には、入力セレクタ状態格納欄507bに「鍵」、XORセレクタ状態格納欄507cおよびXOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aに1〜48が設定された行には、入力セレクタ状態格納欄507bに「定数」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aに49〜(48+M)が設定された行には、入力セレクタ状態格納欄507bに「定数」、XOR入力セレクタ状態格納欄507cおよびXOR出力セレクタ状態格納欄507dに「透過」が設定される。
処理スケジュール制御部504は、この処理スケジュール表507に従い、時刻0では、鍵保持部501の秘密鍵データがランダム変換装置503への入力となるよう入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。
また、時刻1〜48の間は、定数保持部502に格納されている定数がランダム変換装置503の入力となるようランダム関数入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。
さらに、時刻49〜(48+M)の間は、定数保持部502に格納されている定数がランダム変換装置503の入力となるよう入力セレクタ508を制御し、データを通過させるようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。
以上の暗号化処理のための処理スケジュール表507に従って、処理スケジュール制御部504が各セレクタを制御すると、本実施形態のランダム変換システム500は、時刻0で、ランダム変換装置503に秘密鍵データを取り込み、続いて、48回、「定数」を入力として攪拌処理を行う。その後、メッセージデータのブロック数であるM回、ランダム変換装置503の出力と入力データバッファ505に保持されているメッセージとの排他的論理和の結果を、出力データバッファ506に保持することを繰り返す。
以上の処理により、ランダム変換システム500において、入力されたメッセージデータの暗号化処理が実現される。なお、本暗号化処理は、ストリーム暗号であるため、入力データバッファ505からの入力を本処理後の暗号文とすれば、同様の手順で復号を行うことができる。
なお、本実施形態のランダム変換システム500が、暗号化処理を実現するための処理スケジュール表507に従って制御される場合、暗号化処理モードと呼ぶ。
<ハッシュ値計算>
次にメッセージデータのハッシュ値を計算する例を説明する。この場合は、メッセージデータをブロック単位で逐次ランダム変換装置503に入力し、その出力結果をハッシュ値とする。なお、ハッシュ値のデータ長は、所望の安全性レベルに応じて適宜決定される。
本実施形態のランダム変換システム500でハッシュ値を算出する場合、入力データバッファ505にはハッシュ値生成の対象となるメッセージデータが入力され、定数保持部502には、予め定められた値(定数)が保持され、鍵保持部501には0が保持される。
図7は、ハッシュ値を計算する場合の処理スケジュール表507の一例である。
本図に示すように、時刻格納欄507aに0が設定された行には、入力セレクタ状態格納欄507bに「データバッファ」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aにM〜(M+32)が設定された行には、入力セレクタ状態格納欄507bに「定数」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aに(M+33)〜(M+h+32)が設定された行には、入力セレクタ状態格納欄507bに「定数」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「透過」が設定される。
処理スケジュール制御部504は、この処理スケジュール表507に従い、時刻0では、入力データバッファ505に保持されているデータがランダム変換装置503への入力となるよう入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。
また、時刻M〜(M+32)の間は、定数保持部502に保持されているデータがランダム変換装置503の入力となるよう入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。
そして、時刻(M+33)〜(M+h+32)の間は、定数保持部502に保持されているデータがランダム変換装置503の入力となるようランダム関数入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509を制御し、データを通過させるようXOR出力セレクタ510を制御する。
以上のハッシュ値計算のための処理スケジュール表507に従って、処理スケジュール制御部504が各セレクタを制御すると、本実施形態のランダム変換システム500は、時刻0から(M−1)の間、入力データバッファ505の値をランダム変換装置503に取り込む。すなわち、メッセージデータのブロック数はMであるため、全てのメッセージデータをランダム変換装置に取り込むこととなる。続いて、時刻Mから(M+32)まで、すなわち、32回、入力を定数として攪拌処理を行う。最後に、時刻(M+33)から(M+h+32)まで、すなわち、h回、ランダム変換装置503からの出力を、出力データバッファ506に出力する。出力データバッファ506は、最終的にhブロックのデータを保持することとなる。以上の処理により、本実施形態のランダム変換システム500によって、hブロックのハッシュ値を得る。
なお、本実施形態のランダム変換システム500が、ハッシュ値を計算するための処理スケジュール表507に従って制御される場合、ハッシュ値計算モードと呼ぶ。
<メッセージ認証符号計算>
次に、メッセージデータのメッセージ認証符号を計算する例を説明する。メッセージ認証符号は、鍵データとメッセージデータとをランダム変換装置503に入力し、出力結果をメッセージ認証符号とする。なお、メッセージ認証符号のデータ長は、所望の安全性のレベルに応じて決定する。以下においては、1ブロックのデータ長のメッセージ認証符号を計算する場合を例に挙げて説明する。
本実施形態のランダム変換システム500でメッセージ認証符号を算出する場合、入力データバッファ505には、メッセージ認証符号の生成対象であるメッセージデータが入力され、定数保持部502には、予め定められた値(定数)が保持され、鍵保持部501には予め定められた鍵データが保持される。
ランダム変換システム500は、まず、鍵保持部501から秘密鍵データを取り込み、取り込んだ鍵を用いて、上記ハッシュ値計算処理の時刻0から(M+32)間の処理と同様の処理を行い、処理結果を1ブロック分出力する。この出力がメッセージ認証符号である。
図8は、メッセージ認証符号を計算する場合の処理スケジュール表507の一例である。
本図に示すように、時刻格納欄507aに0が設定された行には、入力セレクタ状態格納欄507bに「鍵」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aに1からMが設定された行には、入力セレクタ状態格納欄507bに「データバッファ」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aに(M+1)〜(M+33)が設定された行には、入力セレクタ状態格納欄507bに「定数」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aに(M+34)が設定された行には、入力セレクタ状態格納欄507bに「定数」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「透過」が設定される。
処理スケジュール制御部504は、この処理スケジュール表507に従い、時刻0では、鍵保持部501に保持されているデータがランダム変換装置503への入力となるよう入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。
時刻1〜Mの間は、入力データバッファ505に保持されているデータがランダム変換装置503への入力となるよう入力セレクタ508を制御し、データを通過させないようセレクタ509およびセレクタ510を制御する。
また、時刻(M+1)〜(M+33)の間は、定数保持部502に格納されているデータがランダム変換装置503の入力となるよう入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。
そして、時刻M+34の時は、定数保持部502に保持されているデータがランダム変換装置503の入力となるよう入力セレクタ508を制御し、データを通過させないようセレクタ509を制御し、データを通過させるようセレクタ510を制御する。
以上のメッセージ認証符号計算のための処理スケジュール表507に従って、処理スケジュール制御部504が各セレクタを制御すると、本実施形態のランダム変換システム500は、時刻0において、ランダム変換装置503に鍵データを取り込み、続いて、M回、入力データバッファ505の値を取り込む。さらに続いて、時刻(M+1)から(M+33)まで32回、入力を定数として攪拌処理を行う。最後に、時刻(M+34)において、1回、ランダム変換装置503から出力させ、それをメッセージ認証符号として出力データバッファ506に保持する。
以上の処理により、本実施形態のランダム変換システム500において、入力されたメッセージデータから1ブロックのメッセージ認証符号を得ることを実現する。1ブロック以上のデータ長を有するメッセー時認証符号を得たい場合は、所望のデータ長が得られる回数、ランダム変換装置503からの出力する。
なお、本実施形態のランダム変換システム500が、メッセージ認証符号を計算するための処理スケジュール表507に従って制御される場合、メッセージ認証符号計算モードと呼ぶ。
<乱数生成処理>
次に、乱数を生成する例を説明する。乱数は、乱数シードから生成される。この乱数シードは、鍵保持部501に保持される。なお、入力データバッファ505には、定数0が入力される。
図9は、乱数を生成する場合の処理スケジュール表507の一例である。
本図に示すように、時刻格納欄507aに0が設定された行には、入力セレクタ状態格納欄507bに「鍵」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aに1〜48が設定された行には、入力セレクタ状態格納欄507bに「定数」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aに49以降と設定された行には、入力セレクタ状態格納欄507bに「定数」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「透過」が設定される。
処理スケジュール制御部504は、この処理スケジュール表507に従い、時刻0の時は、鍵保持部501に保持されているデータがランダム変換装置503への入力となるよう入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。
また、時刻1〜48の間は、定数保持部502に格納されているデータがランダム変換装置503の入力となるようランダム関数入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。
そして、それ以降は、定数保持部502に保持されているデータがランダム変換装置503の入力となるよう入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509は制御し、データを通過させるようXOR出力セレクタ510を制御する。
以上の乱数生成処理のための処理スケジュール表507に従って、処理スケジュール制御部504が各セレクタを制御すると、本実施形態のランダム変換システム500は、時刻0において、乱数シードをランダム変換装置503に取り込み、続いて、48回、定数を入力として攪拌処理を行う。ここでは、定数保持部502には0が保持されているため、入力なしで攪拌処理が行われる。その後、同様に攪拌処理を続けながら、乱数として必要な長さの分、ランダム変換装置503からの出力を繰り返し、それを出力データバッファ506に保持する。以上の処理により、本実施形態のランダム変換システム500によって、乱数を生成する。
なお、本実施形態のランダム変換システム500が、乱数を生成するための処理スケジュール表507に従って制御される場合、乱数生成モードと呼ぶ。
<認証付き暗号生成処理>
次に、認証付き暗号を生成する例を説明する。認証付き暗号生成処理では、時刻0で鍵データをランダム変換装置503に取り込み、続いて48回、定数を入力しながら、鍵データを攪拌した後、暗号文を生成し、チェックサムをはき出す。
また、生成された暗号文を復号化する際は、暗号文と鍵データとをランダム変換装置503への入力データとし、同様の処理を行う。このときの出力結果を中間データとし、この中間データが、事前に共有した冗長情報と同一であるか否かを判別し、同一ならば、この中間データからメッセージを抽出し、同一でなければ、メッセージを破棄する。
図16は、認証付き暗号を生成する場合の処理スケジュール表507の一例である。
本図に示すように、時刻格納欄507aに0が設定された行には、入力セレクタ状態格納欄507bに「鍵」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aに1から48が設定された行には、入力セレクタ状態格納欄507bに「定数」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「切断」が設定され、時刻格納欄507aに49〜(48+M)が設定された行には、入力セレクタ状態格納欄507bに「出力バッファ」、XOR入力セレクタ状態格納欄507cに「透過」、XOR出力セレクタ状態格納欄507dに「透過」が設定され、時刻格納欄507aの時刻に(48+M)〜(52+M)が設定された行には、入力セレクタ状態格納欄507bに「出力バッファ」、XOR入力セレクタ状態格納欄507cに「切断」、XOR出力セレクタ状態格納欄507dに「透過」が設定される。
処理スケジュール制御部504は、この処理スケジュール表507に従い、時刻0では、鍵保持部501に保持されているデータがランダム変換装置503への入力となるよう入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。
また、時刻1〜48の間は、定数保持部502に保持されているデータがランダム変換装置503への入力となるよう入力セレクタ508を制御し、データを通過させないようセレクタ509およびセレクタ510を制御する。
時刻49〜(48+M)の間は、出力データバッファ506に保持されているデータがランダム変換装置503の入力となるよう入力セレクタ508を制御し、データを通過させるようXOR入力セレクタ509およびXOR出力セレクタ510を制御する。出力データは、暗号文の一部として、逐次的に生成される。
そして、時刻(48+M)〜(52+M)の間は、出力データバッファ506に保持されているデータがランダム変換装置503の入力となるよう入力セレクタ508を制御し、データを通過させないようXOR入力セレクタ509を制御し、データを通過させるようXOR出力セレクタ510を制御する。出力データは、暗号文の一部として、逐次的に生成される。
以上の認証付き暗号生成時の処理スケジュール表507に従って、処理スケジュール制御部504が各セレクタを制御すると、本実施形態のランダム変換システム500は、時刻0で、ランダム変換装置503に鍵データを取り込み、続いて48回、「定数」を入力として攪拌処理を行う。
その後、メッセージデータのブロック数であるM回、ランダム変換装置503の出力と、入力データバッファに保持されているメッセージとの排他的論理和の結果を、出力データバッファ506に保持することを繰り返しながら、暗号文ブロックを逐次的に生成する。
そして、(49+M)〜(52+M)まで、すなわち4回、ランダム変換装置503からの出力を、出力データバッファ506に出力する。出力データバッファ506は、さらに追加で4ブロックのデータを保持することとなる。以上の処理により、本実施形態のランダム変換システム500によって、(M+4)ブロックの認証付き暗号を生成する。
なお、復号時は、同様に生成した出力と暗号文とから中間データを回復し、中間データが事前に共有した冗長情報と同一であるか否かを判別し、同一であれば、中間データからメッセージを出力する。
なお、本実施形態のランダム変換システム500が、認証付き暗号を生成するための処理スケジュール表507によって制御される場合、認証付き暗号生成モードと呼ぶ。
<公開鍵暗号プリミティブの前計算および復号時の処理>
次に、本実施形態のランダム変換システム500を用いて公開鍵暗号プリミティブのための前計算を行う手順(アルゴリズム)を説明する。本計算を行う場合、ランダム変換システム500は、ハッシュ値計算モードで制御される。
落とし戸付き一方向性関数を使った公開鍵暗号処理を行う場合には、まず、メッセージデータに定数パディングを添付したものを2つに分割し、それぞれ第1メッセージ、第2メッセージとする。そして、第1メッセージをランダム変換システム500に入力し、その出力結果を第1出力とする。また、第2メッセージと第1出力とから第1中間値を生成し、この第1中間値をランダム変換システム500に入力し、その出力結果を第2出力とする。次に、第2出力と第1メッセージとから第2中間値を生成する。第1中間値および第2中間値の両方を落とし戸付き一方向性関数の入力とする。
復号時は、暗号文と落とし戸情報とから落とし戸付き一方向性関数の逆算をし、得られた結果を分割して、第1中間値、第2中間値として暗号化の逆算を行う。その他の入力に相当する部分が事前に共有されたデータと同一であれば、メッセージに相当する部分を出力する。
図10は、公開鍵暗号プリミティブの前計算を、本実施形態のランダム変換システム500を用いて行う場合の処理手順を説明するための図である。公開鍵暗号プリミティブの前計算とは、公開鍵で暗号化する前にメッセージに施す前処理であり、選択暗号攻撃に対する耐性を向上させるために行うものである。
まず、前処理前の平文であるメッセージ1001に、冗長符号0からなる定数パディング1002を付加し、全体で1024ビットのデータ1001pを生成する(ステップS001)。そして、データ1001pを上位の512ビットと下位の512ビットとに分割し、それぞれ、変形メッセージ1(1003)、変形メッセージ2(1004)として保持する(ステップS002)。
変形メッセージ1(1003)を、入力データバッファ505に入力されるメッセージデータとして、ランダム変換システム500に入力する(ステップS003)。ここで、ランダム変換システム500は、ハッシュ値計算モードで動作する。そして、ランダム変換システム500からの出力と変形メッセージ2(1004)とを排他的論理和した演算結果を中間データ1006として保持する(ステップS004)。
その後、中間データ1006を入力データバッファ505に入力されるメッセージデータとして再度ハッシュ値計算モードでランダム変換システム500を動作させ(ステップS005)、その出力結果と変形メッセージ1(1003)とを排他的論理和した演算結果を得(ステップS006)、その演算結果と中間データ1006とを前処理平分1008として出力する(ステップS007)。
次に、上記の前処理を施された後公開鍵で暗号化されて送られてきた暗号文を秘密鍵で復号することにより得られた仮復号データに対し、後処理を行う手順(アルゴリズム)を説明する。
図11は、公開鍵暗号プリミティブの復号時の後処理を、本実施形態のランダム変換システム500を用いて行う場合の処理手順を説明するための図である。
秘密鍵で復号後の1024ビットの仮復号データ1301を、上位の512ビットと下位512ビットとに分割し、それぞれ、変形データ1(1302)、変形データ2(1303)として保持する(ステップS011)。
変形データ2(1303)を、入力データバッファ505に入力されるメッセージデータとして、ランダム変換システム500に入力する(ステップS012)。ここで、ランダム変換システム500は、ハッシュ値計算モードで動作する。そして、ランダム変換システム500からの出力と変形データ1(1302)とを排他的論理和した演算結果を中間データ1304としてメモリに保持する(ステップS013)。
次に、中間データ1304を入力データバッファ505に入力されるメッセージデータとして、ハッシュ値生成モードでランダム変換システム500を動作させ(ステップS014)、その出力結果と変形データ2(1303)とを排他的論理和した演算結果と、中間データ1304とを結合し、データ1305pとして出力する(ステップS015)。そして、そのデータ1305pから、事前に定められたビット数に従いメッセージ1305を抽出し、残りを付加した定数パディング1306と決定する(ステップS016)。
なお、ここで、定数パディング1306が0でなかった場合、改ざんがなされたものと考えられる。このため、本手順を実現するために、本実施形態のランダム変換システム500を実装した実際のシステム(データ変換装置)では、定数パディングが0であった場合のみメッセージ1305を出力し、そうでなければ、メッセージデータ1305を消去し、無効を意味する信号φを出力するよう構成してもよい。
このデータ変換装置は、CPU、メモリを備え、メモリに格納されたプログラムをCPUが実行することにより、上記処理手順を行う演算処理部を実現する。
なお、演算処理部を実現するプログラムは、メモリではなく、CPUが読み取り可能な記録媒体(フレキシブルディスク、CD−ROM、DVD−ROM、半導体メモリ)に格納されていても良い。また、LAN等の伝送媒体等を経てCPUが取得してもよい。さらに、演算処理部の機能をハードウェア構成(LSI(Large Scale Integration)等の半導体集積回路等)で実現しても良い。
なお、本実施形態のランダム変換システム500は、上記の公開鍵暗号プリミティブの前計算および復号データの後処理を行う装置(データ変換装置)に、ハードウェア(LSI)およびソフトウェアのいずれによる実装も可能である。
以上のように、本実施形態のランダム変換システム500は、入力長、出力長ともに任意にとることもでき、処理スケジュール表507を変更するだけで、各種のセキュリティメカニズムを単一の暗号化プリミティブにより、実現することができる。従って、複数のセキュリティメカニズムを必要とするシステムにおいても、従来のように複数の暗号プリミティブの実装が不要となる。
また、LSIやソフトウェアとして実装が可能であり、単一のプリミティブで複数のセキュリティメカニズムを実現できることより、処理速度、ゲート数、RAM使用量などの実装コストの観点から効率的である。
本実施形態では、1つの処理スケジュール表507を備える場合を例にあげ、それぞれ実現可能な処理を説明したが、本実施形態のランダム変換システム500はこれに限られない。例えば、暗号化を行った後にハッシュ値計算を行うなど、複数の処理を連続して実行させることも可能である。この場合は、それぞれのモードの実行順に、それぞれのモードを実現する処理スケジュール表507を結合させたものを処理スケジュール表507として保持すればよい。
あるいは、各モードを実行可能な処理スケジュール表507をそれぞれ別個に保持し、処理スケジュール制御部504が、必要に応じて適宜処理スケジュール表507を選択してランダム変換システム500の動作を制御するよう構成してもよい。
<応用例1>
次に、本実施形態のランダム変換システム500を用いたサーバとクライアントとの間のパスワード認証システムを説明する。例えば、クライアントがサーバにIDとパスワードとを送信し、認証を受けた後、サーバからのサービスを受けるといった場合に用いられる。
このパスワード認証システムでは、サーバとクライアントとに、本実施形態のランダム変換システム500を備える。また、サーバとクライアントとの間で、予め鍵データ(共有鍵)を秘密裏に共有しておく。これらの情報の共有には、例えば、公開鍵暗号技術を用いた鍵配送方法を用いることができる。
クライアントは、予めクライアントのランダム変換システム500、あるいは、サーバのランダム変換システム500を用いて、自身のIDとパスワードとのハッシュ値を生成し、IDと関連づけてサーバに登録しておく。認証時は、クライアントから暗号化されて送信されたIDとパスワードとをサーバで復号し、そのハッシュ値を生成し、該当するIDと対応付けて登録されているハッシュ値との合致を判断する。
図12は、パスワード認証システムに用いるサーバ1101の構成の一例である。
本図に示すように、パスワード認証システムに用いられるサーバ1101は、セキュアモジュール1102、CPU1108、磁気ディスク1109、サーバ1101をネットワーク1111に接続するためのネットワークインタフェース1110とを備える。
セキュアモジュール1102は、上記のパスワード認証を行うモジュールであり、個人パスワードプロファイル1103と、ランダム変換システム500と、鍵データ(共有鍵)1112とを備える。そして、個人パスワードプロファイル1103は、ID1104と、ハッシュ値1105と、塩1106とを備える。
図13は、パスワード認証システムにおいて、サーバ1101と組み合わせて用いられるクライアントPC1201の構成の一例である。
本図に示すように、クライアントPC1201は、CPU1209と、メモリ1210と、磁気記憶装置1211と、キーボード1205やマウス1206などの入力装置を接続するマザーボード1202と、モニタ1207などの出力装置を接続するグラフィックインタフェースカード1203と、ネットワーク1111に接続するためのネットワークインタフェース1204とを備える。
クライアントPC1201では、磁気記憶装置1211に、CPU1209が実行することにより本実施形態のランダム変換システム500の暗号化処理モードを実現するランダム変換プログラム1212と、鍵データ(共有鍵)1112とが保持される。
このサーバ1101とクライアントPC1201とを用いてパスワードの認証を行う処理を以下に説明する。
クライアントPC1201において、IDおよびパスワードの入力を受け付けると、CPU1209は、共有鍵1112を、鍵保持部501の鍵データとし、受け付けたIDおよびパスワードを、入力データバッファ505を介して入力されるメッセージデータとして、ランダム変換プログラム1212を実行し、受け付けたIDおよびパスワードを暗号化する。そして、CPU1209は、出力結果をネットワークインタフェース1204を介してネットワーク1111へ送出する。なお、IDおよびパスワードは、キーボード1205およびマウス1206を介して、モニタ1207に表示された画面上の所定位置への入力を検知するなどの方法で、受け付ける。
サーバ1101では、ネットワークインタフェース1110を介して暗号化されたIDとパスワードとの組を受け取ると、セキュアモジュール1102にて処理する。
すなわち、CPU1108は、IDとパスワードとの組を入力データバッファ505を介して入力するメッセージデータとし、共有鍵1112を鍵保持部501の鍵データとし、ランダム変換システム500を復号化モードで動作させ、復号化する。ここで、復号化したIDとパスワードとの組からIDを抽出する。
さらに、CPU1108は、個人パスワードプロファイル1103から塩1106を取得し、復号化したIDと塩1106とパスワードとの三つのデータを、この順に直結し、ひとつにまとめたストリングデータとする。このストリングデータを入力データバッファ505を介して入力されるメッセージデータとし、ランダム変換システム500をハッシュ値計算モードで動作させ、IDとパスワードとの組のハッシュ値を計算する。
そして、CPU1108は、計算したハッシュ値と、抽出したIDに関連づけて個人パスワードプロファイル1103に予め保持されているハッシュ値1105とを比較し、合致するか否か判断する。合致した場合、CPU1108は、磁気ディスク1109に格納されているサービスの提供を開始する。
なお、ハッシュ値が合致しなければ、CPU1108は、認証失敗を意味する信号を生成し、ネットワークインタフェース1110から、ネットワーク1111を介して、IDとパスワードとの組の送信元のクライアントPC1201に送出する。
<応用例2>
次に、本実施形態のランダム変換システム500を用いたネットワークテレビシステムを説明する。ネットワークテレビシステムは、ネットワークを介してコンテンツを契約者にのみ配信するシステムである。このようなシステムにおいては、配信時に受信者が契約者であることを認証するとともに、認証後、暗号化して配信するデータを、契約者以外が復号して再生できないよう保護する必要がある。それらのセキュリティ処理に本実施形態のランダム変換システム500を用いる。
本応用例は、同じ処理スケジュール表507によって、暗号化とその暗号化されたデータの復号化ができるという本実施形態のランダム変換システム500の特性を利用したものである。
本実施形態のランダム変換システム500を用いたネットワークテレビシステムでは、ユーザの認証に成功すると、その後配信するコンテンツを復号するための処理スケジュール表507をそのユーザに暗号化して送信し、ユーザは、その処理スケジュール表507を用いて配信されるコンテンツを復号して再生する。以下にこのネットワークテレビシステムの、認証成功後の配信時の処理について説明する。
なお、配信前のユーザの認証は、上記の応用例1に示すパスワード認証システムを用いることができる。
ネットワークテレビシステムは、コンテンツを提供するコンテンツサーバ1501と、提供されたコンテンツを受信して再生するネットワークテレビ1401と備える。
図14は、契約者が保有するコンテンツ受信側のネットワークテレビ1401の構成の一例を示す図である。
本図に示すように、ネットワークテレビ1401は、RAM1402と、CPU1406と、ディスプレイエンジン1407と、ROM1408と、ネットワークテレビ1401をネットワーク1410に接続するネットワークインタフェース1409とを備える。
また、RAM1402には、処理テーブル保存用領域1403と、乱数シード1404と、コンテンツサーバ1501から予め提供されている公開鍵1405とが格納される。そして、ROM1408には、CPU1406が実行することによりランダム変換システム500を各種モードで実現するランダム変換プログラム1411が格納されている。
図15は、コンテンツ送信側のコンテンツサーバ1501の構成の一例を示す図である。
コンテンツサーバ1501は、ハードディスク1502と、CPU1507と、コンテンツサーバ1501をネットワーク1410と接続するためのネットワークインタフェース1508とを備える。
ハードディスク1502は、メディアセキュリティプロファイル1503と、メディアデータ1504と、ランダム変換システム500を実現するランダム変換プログラム1505と、秘密鍵1506とを備える。
コンテンツサーバ1501からコンテンツを受信してネットワークテレビ1401で再生する場合の処理は以下のように行われる。
ネットワークテレビ1401側で、CPU1406は、ランダム変換プログラム1411により実現されるランダム変換システム500を、乱数シード1404を鍵持部501に保持される鍵として、乱数生成モードで動作させ、乱数を生成して出力する。出力された乱数を公開鍵1405を用いて暗号化し、ネットワークインタフェース1409を介してネットワーク1410に送出する。生成した乱数は、ネットワークテレビ1401側でも、セッション鍵として保持しておく。
なお、上記のパスワード認証システムにより認証を行う場合、IDとパスワードとを送信する際に、同時に暗号化した乱数を送信し、受け取ったコンテンツサーバ1501側で、認証に成功した際に以降の処理を行う。あるいは、前もって認証成功後、生成した乱数を送信するように構成してもよい。
暗号化された乱数を受信すると、コンテンツサーバ1501のCPU1507は、予め保有している秘密鍵1506でこれを復号化し、得られた乱数をセッション鍵とする。
コンテンツサーバ1501のCPU1507は、対象となるコンテンツに関するセキュリティ関連のパラメータを与えるメディアセキュリティプロファイル1503を参照して暗号化方式を決定し、その暗号化方式を定める処理スケジュール表507を生成する。そして、生成した処理スケジュール表507を復号化方式を定義する情報としてネットワークインタフェース1508からネットワーク1410を介して、セッション鍵の送信元のネットワークテレビ1401に送信する。
復号化方式を定義する情報として処理スケジュール表507を受信したネットワークテレビ1401のCPU1406は、処理テーブル保存用領域1403にそれを格納する。
また、コンテンツサーバ1501のCPU1507は、処理スケジュール表507を送信すると、続いて、処理スケジュール表507に定められたスケジュールに従って、ランダム変換システム500を実現するランダム変換プログラム1505を動作させ、コンテンツを暗号化し、逐次的にネットワークインタフェースを介してネットワーク1410に送出する。このとき、受信したセッション鍵を鍵保持部501に保持される鍵データとして用いる。
暗号化されたコンテンツを受信したネットワークテレビ1401では、CPU1406が、処理テーブル保存用領域1403に保持している処理スケジュール表507に従って、ランダム変換システム500を実現するランダム変換プログラム1411を実行することにより、受信した暗号化されたコンテンツを復号し、ディスプレイエンジン1407を介してディスプレイに再生する。このとき、予め生成したセッション鍵を鍵保持部501に保持する鍵データとして用いる。
以上説明したように、本実施形態のランダム変換システム500を適用したネットワークテレビシステムでは、1つのランダム変換システム500を備えるだけで、暗号化されて配信されたコンテンツを認証された契約者が復号し、再生することができる。暗号化にセッション鍵を用いるだけのシステムに比べ、簡易なシステムで、配信されるコンテンツをより強固に保護することができる。
上記のいずれの応用例においても、情報セキュリティ機能を実現するために、乱数生成や暗号処理、メッセージ認証、ハッシュ関数など複数のセキュリティメカニズムが必要とされる。本実施形態のランダム変換システム500を用いることにより、これらをひとつの暗号プリミティブにより実現することができ、製品の製造コスト、開発コストを削減することができる。
具体的には、現在SHA−1やAESを実用的な処理速度が得られるようにLSI実装すると、各々20KGate程度必要であり、40KGate程度の回路の必要性がある。本実施形態のランダム変換システム500を用いる場合、多くとも25KGate程度で実装できる上に、1つのプリミティブを実装するだけであるため、従来のように2つのプリミティブを設計するのに比較して、開発コストは半分程度となる。
以上説明したように、本発明の上記実施形態によれば、効率を落とすことなく複数のセキュリティメカニズムを実現するプリミティブを提供することができる。これにより、セキュリティシステムの開発コスト、製造コストを低減することができる。
500:ランダム変換システム、501:鍵保持部、502:定数保持部、503:ランダム変換装置、504:処理スケジュール制御部、505:入力データバッファ、506:出力データバッファ、507:処理スケジュール表、508:入力セレクタ、509:XOR入力セレクタ、510:XOR出力セレクタ、511:排他的論理和回路、101:入力、102:第1記憶装置、103:線形変換部、104:第2記憶装置、105:非線形変換部、106:出力