【手続補正書】
【提出日】平成15年9月30日(2003.9.30)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】発明の名称
【補正方法】変更
【補正の内容】
【発明の名称】データ変換装置及びそのプログラム記録媒体


【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１命令でＸd ←Ｘs mod２8 ，Ｘd ←（Ｘs ／２8 ）mod２8 を演算することができるプロセッサを備え、それぞれが４バイトのデータＸ1 ，Ｘ2 ，Ｘ3 ，Ｘ4 が入力され、入力されたＸ1 ，Ｘ2 について段関数演算
【数１５】
2002023621.tif 000001
を（ｘ1 ，ｘ2 ，ｘ3 ，ｘ4 はデータＸ1 ，Ｘ2 中の各上位から１バイトごとのデータをそれぞれ表わす）、
各ｘについてあらかじめ計算して表として記憶された
【数１６】
2002023621.tif 000002
を参照して求め、その演算結果を入力されたＸ3 ，Ｘ4 とのバイトごとの線形演算を行ない、その演算結果を次段へＸ1 ，Ｘ2 として出力し、かつ上記入力されたＸ1 ，Ｘ2 を次段へＸ3 ，Ｘ4 として出力することを複数段繰返すデータ変換装置であって、
上記各ｘについて計算された各ＳＰj（ｘ）が通常表ＳＰnoj（ｘ）として記憶され、上記各ＳＰnoj（ｘ）の上位２バイトＰ1jｓj（ｘ），Ｐ2jｓj（ｘ）が下位２バイトと、下位２バイトＰ3jｓj（ｘ），Ｐ4jｓj（ｘ）が上位２バイトとそれぞれされたものが入替表ＳＰinj （ｘ ）として記憶されている記憶部と、
上記各段に入力されたＸ1 ，Ｘ2 の各下位２バイトによる表の参照と、Ｘ1 ，Ｘ2 をそれぞれ上位２バイトと下位２バイトとを入れ替えて、その各新たな下位バイトによる表の参照を行い、その入れ替えられたＸ1 ，Ｘ2 を次段へＸ3 ，Ｘ4 として出力する手段と、
第ｎ段の上記段関数演算を、ｎmod４＝１及びｎmod４＝０では上記通常表ＳＰnoj（ｘ）を参照し、ｎmod４＝２及びｎmod４＝３では上記入替表ＳＰinj（ｘ）を参照して求める手段と、
最終段において、全段数をｒとすると、ｒmod４＝０でなにもせず、ｒmod４＝１でＸ3 ，Ｘ4 の各上位２バイトと下位２バイトを入れ替え、ｒmod４＝２でＸ1
，Ｘ2 ，Ｘ3 ，Ｘ4 の各上位２バイトと下位２バイトをそれぞれ入れ替え、ｒmod４＝３でＸ1 ，Ｘ2 の上位２バイトと下位２バイトを入れ替える手段と、
を備えることを特徴とするデータ変換装置。
【請求項２】
入力データｘ1 ，ｘ2 ，…，ｘ8 に対し、
【数１】
2002023621.tif 000003
を演算する装置であって、
【数２】
2002023621.tif 000004
ｘのとり得る値の全てについて上記ＳＰ5 （ｘ），ＳＰ6 （ｘ），ＳＰ7 （ｘ），ＳＰ8 （ｘ）をそれぞれ演算した結果がそれぞれ表として格納され、ｘにより参照されて対応する演算結果を出力する４つの表メモリと、
ｘ8 とｘ1 により上記ＳＰ5 （ｘ）の表メモリを参照してＳＰ5 （ｘ8）とＳＰ5 （ｘ1）を出力し、ｘ5 とｘ2 により上記ＳＰ6 （ｘ）の表メモリを参照してＳＰ6 （ｘ5）とＳＰ6 （ｘ2）を出力し、上記ｘ6 とｘ3 により上記ＳＰ7 （ｘ）の表メモリを参照してＳＰ7 （ｘ6）とＳＰ7 （ｘ3）を出力し、上記ｘ7 とｘ4 により上記ＳＰ8 （ｘ）の表メモリを参照してＳＰ8 （ｘ7）とＳＰ8 （ｘ4）を出力する表参照手段と、
上記ＳＰ5 （ｘ8），ＳＰ6 （ｘ5），ＳＰ7 （ｘ6），ＳＰ8 （ｘ7）のそれぞれについて下位４バイトを上位４バイトにコピーしてそれぞれＳＰ1 （ｘ8），ＳＰ2 （ｘ5），ＳＰ3 （ｘ6），ＳＰ4 （ｘ7）を求めるコピー手段と、
上記ＳＰ1 （ｘ8）とＳＰ2 （ｘ5）とＳＰ3 （ｘ6）とＳＰ4 （ｘ7）と上記ＳＰ5 （ｘ1）とＳＰ6 （ｘ2）とＳＰ7 （ｘ3）とＳＰ8 （ｘ4）とを和演算して、出力する和演算手段と
を具備するデータ変換装置。
【請求項３】
入力データｘ1 ，ｘ2 ，…，ｘ8 に対し、
【数３】
2002023621.tif 000005
を演算する装置であって、
【数４】
2002023621.tif 000006
ｘのとり得る値の全てについて上記ＳＰ5 （ｘ），ＳＰ6 （ｘ），ＳＰ7 （ｘ），ＳＰ8 （ｘ）をそれぞれ演算した結果がそれぞれ表として格納され、ｘにより参照されて対応する演算結果を出力する４つの表メモリと、
ｘ8 とｘ1 により上記ＳＰ5 （ｘ）の表メモリを参照してＳＰ5 （ｘ8）とＳＰ5 （ｘ1）を出力し、ｘ5 とｘ2 により上記ＳＰ6 （ｘ）の表メモリを参照してＳＰ6 （ｘ5）とＳＰ6 （ｘ2）を出力し、上記ｘ6 とｘ3 により上記ＳＰ7 （ｘ）の表メモリを参照してＳＰ7 （ｘ6）とＳＰ7 （ｘ3）を出力し、上記ｘ7 とｘ4 により上記ＳＰ8 （ｘ）の表メモリを参照してＳＰ8 （ｘ7）とＳＰ8 （ｘ4）を出力する表参照手段と、
上記ＳＰ5 （ｘ8）とＳＰ6 （ｘ5）とＳＰ7 （ｘ6）とＳＰ8 （ｘ7）との和演算を行う第１和演算手段と、
その第１和演算手段の演算結果について下位４バイトを上位４バイトにコピーするコピー手段と、
上記コピー手段のコピー結果と上記ＳＰ5 （ｘ1）とＳＰ6 （ｘ2）とＳＰ7 （ｘ3）とＳＰ8 （ｘ4）とを和演算して、出力する第２和演算手段と
を具備するデータ変換装置。
【請求項４】
請求項１〜３の何れかに記載のデータ変換装置としてコンピュータを実行させるためのプログラムを記録したコンピュータ読取り可能な記録媒体。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
【発明の属する技術分野】
この発明は、主に暗号技術で用いられる共通鍵ブロック暗号に適用されるデータ変換装置及びそのプログラム記録媒体に関するものである。


【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
【発明が解決しようとする課題】
この発明の目的はデータ変換を計算するために必要な表（テーブル）を引く（参照する）ための鍵（インデックス）の生成コスト、つまり所要の命令数を低減することができるデータ変換装置及びそのプログラム記録媒体を提供することにある。
この発明の他の目的はデータ変換を計算するために必要な表（テーブル）を格納するメモリ量を少なくし、通常のＣＰＵの一次キャッシュサイズに納まるようにしたデータ変換装置及びそのプログラム記録媒体を提供することにある。


【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
この点について少し説明する。いま簡単にするため、換字置換関数が図３Ａで示される時、ｘの２8 個の値について図３Ｂに示す４つの通常表ＳＰno1 （ｘ），ＳＰno2 （ｘ），ＳＰno3 （ｘ），ＳＰno4 （ｘ）を用意し、また図３Ｃに示すように４つの入替表ＳＰin1 （ｘ），ＳＰin2 （ｘ），ＳＰin3 （ｘ），ＳＰin4 （ｘ）を用意しておく。Ｘ1 ＝（ａ，ｂ，ｃ，ｄ）で通常表を引く場合は、ｄを鍵としてＳＰno４ （ｘ）を引きＳＰno4 （ｄ）を得、次にｃを鍵としてＳＰno3 （ｘ）を引きＳＰno3 （ｃ）を得、次にａ，ｂを下位に移動してｂを鍵としてＳＰno2 （ｘ）を引きＳＰno2 （ｂ）を得、次にａを鍵としてＳＰno1 （ｘ）を引きＳＰno1 （ａ）を得、これらの和を求める。つまり図５Ａに示す式の和演算を行う。この場合は通常表をＳＰno4 （ｘ），ＳＰno3 （ｘ），ＳＰno2 （ｘ），ＳＰno1 （ｘ）の順に引くことになる。


【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４０
【補正方法】変更
【補正の内容】
【００４０】
により換字置換を行うことができる。つまり図８中に破線で示すように、ステップＳ２で表の読み出しを行って記憶部２２に記憶した後、ＳＰ5（ｘ8）とＳＰ8（ｘ7）とＳＰ7（ｘ6）とＳＰ6（ｘ5）との和演算を行い（Ｓ6）、その和演算の結果の下位４バイトを上位４バイトにコピーし（Ｓ７）、そのコピー結果と、ＳＰ8（ｘ4）と、ＳＰ7（ｘ3）とＳＰ6（ｘ2）とＳＰ5（ｘ1）との和演算を行い（Ｓ８）、その結果を出力する（Ｓ５）。このようにすることにより、punpckldqを一段毎に１回用いるだけで表のためのメモリを、従来の半分、つまり８キロバイトで済む。この程度の表記憶容量であれば、多くのＣＰＵの一次キャッシュサイズに納まる。