【手続補正書】
【提出日】平成15年9月12日(2003.9.12)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】発明の名称
【補正方法】変更
【補正の内容】
【発明の名称】情報処理装置、耐タンパ処理装置


【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを演算する演算装置と、
データおよびプログラムを記憶する記憶装置と、
上記演算装置が上記記憶装置にアクセスするためのデータバスとを有し、
上記演算装置が、
攪乱用データを生成する攪乱用データ生成処理と、
入力データを上記攪乱用データを用いて暗号化した変形データを出力するデータ変形処理と、
上記変形データに所定の処理を行い、処理結果である処理済み変形データを出力する変形データ処理と、
上記攪乱用データに上記所定の処理を行い、処理結果である処理済み撹乱用データを出力する攪乱用データ処理と、
上記処理済み攪乱用データを用いて、上記処理済み変形データを復号化した処理済データを出力するデータ逆変形処理と、
を行うことを特徴とする情報処理装置。
【請求項２】
データを演算する演算装置と、
データおよびプログラムを記憶する記憶装置と、
上記演算装置が上記記憶装置にアクセスするためのデータバスとを有し、
上記演算装置が、
攪乱用データを生成する攪乱用データ生成処理と、
上記攪乱用データを用いて、入力データを変形データに暗号化するデータ変形処理と、
上記変形データに所定の処理を行い、処理結果である処理済み変形データを出力する変形データ処理と、
上記攪乱用データに上記所定の処理を行い、処理結果である処理済み撹乱用データを上記記憶装置に記憶する処理済み撹乱用データ記録処理と、
上記記憶装置より読み出した上記処理済み攪乱用データを用いて、上記処理済み変形データを処理済データに復号化をデータ逆変形処理と、
を行うことを特徴とする情報処理装置。
【請求項３】
請求項１、２のいずれかに記載の情報処理装置において、
上記攪乱用データ生成処理において、上記撹乱用データとして乱数を使用することを特徴とする情報処理装置。
【請求項４】
請求項１、２のいずれかに記載の情報処理装置において、
上記データ変形処理は、入力データと攪乱用データとの排他的論理和演算の結果を上記変形データとして出力する処理であり、
上記データ逆変形処理は、上記処理済み変形データと上記処理済み攪乱用データとの排他的論理和演算の結果を上記処理済データとして出力する処理であることを特徴とする情報処理装置。
【請求項５】
請求項１、２にいずれかに記載の情報処理装置において、
上記データ変形処理は、上記入力データと攪乱用データとの加減算の結果を上記変形データとして出力する処理であり、
上記データ逆変形処理は、上記処理済み変形データと上記処理済み攪乱用データとの加減算を上記処理済データとして出力する処理であることを特徴とする情報処理装置。
【請求項６】
請求項１、２にいずれかの記載の情報処理装置において、
上記データ変形処理は、上記入力データと攪乱用データとの乗除演算の結果を上記変形データとして出力する処理であり、
上記データ逆変形処理は、上記処理済み変形データと上記処理済み攪乱用データとの乗除演算の結果を上記処理済データとして出力する処理であることを特徴とする情報処理装置。
【請求項７】
請求項１、２にいずれかの記載の情報処理装置において、
上記データ変形処理は、上記入力データと攪乱用データとの排他的論理和演算の結果を上記変形データとして出力する処理であり、
上記所定の処理は、転置処理もしくは換字処理であり、
上記データ逆変形処理は、上記処理済み変形データと上記処理済み攪乱用データとの排他的論理和演算の結果を上記処理済データとして出力する処理であることを特徴とする情報処理装置。
【請求項８】
請求項７に記載の情報処理装置において、
上記転置処理もしくは換字処理は、テーブルに従って行われることを特徴する情報処理装置。
【請求項９】
データを演算する演算装置と、
データおよびプログラムを記憶する記憶装置と、
上記演算装置が上記記憶装置にアクセスするためのデータバスとを有し、
上記演算装置が、
入力データに剰余演算の法Ｎの任意の倍数を加算し、変形データとして出力するデータ変形処理と、
上記記変形データに上記剰余演算の加減算を行い、処理結果である処理済み変形データを出力する変形データ処理と、
を行うことを特徴とする情報処理装置。
【請求項１０】
データを演算する演算装置と、
データおよびプログラムを記憶する記憶装置と、
上記演算装置が上記記憶装置にアクセスするためのデータバスとを有し、
上記演算装置が、
入力データと剰余演算の法Ｎの任意の倍数の乗算結果と１との加算を行い、変形データとして出力するデータ変形処理と、
上記記変形データに上記剰余演算の乗算を行い、処理結果である処理済み変形データを出力する変形データ処理と、
を行うことを特徴とする情報処理装置。
【請求項１１】
データを演算する演算装置と、
データおよびプログラムを記憶する記憶装置と、
上記演算装置が上記記憶装置にアクセスするためのデータバスとを有し、
上記演算装置が、
ある数Ｘを生成する攪乱用データ生成処理と、
入力データに上記Ｘを所定回数乗算もしく上記撹乱用データの倍数を乗算し、乗算結果を変形データとして出力するデータ変形処理と、
上記変形データに所定の処理を行い、処理結果である処理済み変形データを出力する変形データ処理と、
上記処理済み変形データに上記ある数Ｙを上記所定回数乗算もしく上記ある数Ｙの倍数を乗算し、乗算結果を処理済データとして出力するデータ逆変形処理と、を行い
上記ある数Ｘとある数Ｙは、Ｎをある整数として
１＝Ｘ×ＹmodＮ
を満たすことを特徴とする情報処理装置。
【請求項１２】
請求項１１に記載の情報処理装置において、
上記攪乱用データと上記撹乱用データの逆数は、いずれか一方が２であり、他方が（Ｎ+１）／２であることを特徴とする情報処理装置。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
xor X1 R1                       (式４)
xor X2 R2                       (式５)
logica_shiftl R1                (式６)
xor R1 R2                       (式７)
logica_shiftl X1                (式８)
xor X1 X2                       (式９)
xor X2 R2                       (式１０)
ここで、Ｘ１とＸ２は勝手に選んだ乱数であり、撹乱用データである。式４と式５では、レジスタＲ１とＲ２に乱数Ｘ１とＸ２を排他的論理和を行い、撹乱用データを使い、本物のデータの変形を行う変形処理である。式６と式７は式２と式３と同じデータ処理であるが、変形処理を行ったため、Ｒ１とＲ２の値は、本物のデータの値とは異なったデータとなっている。式８と式９は、撹乱用データ自体をデータ処理を行っているものである。式１０で、撹乱用データの処理結果と式７の処理結果を排他的論理和することにより、本物のデータにもどす逆変形処理である。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
2000182012.tif 000001
正しい出力データを求めることができる。これは、加減算の演算では、ある値を加算して演算し、最期の結果に加算した値を減算すれば、正しい結果が求まることからである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】変更
【補正の内容】
【００４４】
データ処理ｆが乗除算であれば、変形操作ｈに乗算、あるいは除算をえらび、逆変形操作に除算、あるいは乗算を選ぶことにより、変形処理と逆変形処理を実現することができる。この理由は、加減算と同じであり、乗除算の演算では、ある値を乗算（除算）して演算し、最期の結果に乗算（除算）した値を除算（乗算）すれば、正しい結果が求まることからである。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
OutputX = InputX(1) + InputX(2) - InputX(3) mod N             (式３８)
この式は、式３７を使うことにより
2000182012.tif 000002
と変形できる。そして、剰余演算の特徴である
0 = k * N mod N                                               (式４０)
を使うことにより、式３９の２番目の括弧内の値は０となり、式３９は、
OutputX = (Input(1) + Input(2) - Input(3)) mod N              (式４１)
となる。すなわち、変形した入力データの演算結果は、本来の演算結果と同じである。これは、剰余演算の特徴を使うことにより、撹乱用データのデータ処理と逆変形処理が不要である例である。これは、撹乱データのデータ処理の結果が
Xoutput(i) = k(1) * N + k(2) * N - k(3) * N mod N             (式４２)
が、そもそも０になるため、撹乱用データのデータ処理と逆変形処理が不要であるためである。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
InputX（i） = Input(i) * (k(i) * N + 1)                         (式４４)
そして、変形した入力データを使い、乗算剰余演算を行う。


【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
OutputX = InputX(1) * InputX(2) * InputX(3) mod N              (式４５)
この式は、式４４を使うことにより
2000182012.tif 000003
と変形できる。そして、剰余演算の特徴である
0 = k * N mod N                                                (式４７)
を使うことにより、式４６は、
2000182012.tif 000004
となる。すなわち、変形した入力データの演算結果は、本物の演算結果と同じである。これも、剰余演算の特徴を使うことにより撹乱データのデータ処理と逆変形処理が不要である例である。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００５８
【補正方法】変更
【補正の内容】
【００５８】
2000182012.tif 000005
式５３では、式４９の性質を使った。この例では、撹乱用データのデータ処理は不要であるが、撹乱用データを掛けた回数だけ、法Ｎでその逆数を逆変形処理で掛ければ、正しい結果を得ることができる。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
DataX1 = TableX1X2X3(GyouX2、RetsuX3)                         (式６０)
図３５のテーブルはすでに撹乱用データX1で変形されているため、これ以降は、撹乱用データをX1として処理を行う。式５６から式６０までの処理で真のデータを使用していない。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００６８
【補正方法】変更
【補正の内容】
【００６８】
図４は、基本的な手順である。撹乱用データ生成手段で撹乱用データXiを生成する（４０１）。この一般的な方法としては、乱数発生器や擬似乱数を使って必要な長さの乱数を生成する方法がある。次に、データ変形処理手段（４０６）で、入力データD1を撹乱用データXi（４０５）で変形し、変形データH1（４０７）を生成する。変形方法は、先に述べたように、排他的論理和や、加減算、乗除算などがある。そして変形データＨ１を使ってデータ処理を変形データ処理手段（４０８）で行い、処理済み変形データＨ２を生成する。一方、撹乱用データＸｉは入力データと同じデータ処理を撹乱用データ処理手段(４０３)で行い、処理済みの撹乱用データXo（４０４）を作成する。そして、撹乱用データXoと処理済み変形データＨ２を使い、データ逆変形処理手段（４１０）で真の処理済みデータD2（４１１）を求める。データ変形処理手段（４０６）やデータ逆変形処理手段（４１０）の方法には、すでに説明した、排他的論理和や加減算、乗除算、剰余演算などがある。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００７０
【補正方法】変更
【補正の内容】
【００７０】
H1 = D1 xor X1i
H2 = f1(H1)
X1o = f1(X1i)
H31 = H2 xor X2i
H32 = D2 xor X2i                   (式６１)
H4 = f2(H31、H32)
X2o = f2(X2i、X2i)
H5 = H4 xor X2o
D2 = H5 xor X1o
ここでｆ１とｆ２はデータ処理操作である。この例のように、第２のデータ処理ｆ２で、別のデータＤ２を使う場合で、そのデータＤ２を第２の撹乱用データで変形して使用する場合に、本実施例の処理手順を使うと有効である。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００７２
【補正方法】変更
【補正の内容】
【００７２】
H1 = D1 xor X1o
H2 = f1(H1)
X1o = f1(X1i)
H3 = H2 xor X2i                    (式６２)
H4 = H3 xor X1o
H5 = f2(H4)
X2o = f2(X2i)
D2 = H5 xor X2i
これは、処理操作が複数あり、撹乱用データを複数使う必要な場合に有効である。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００７３
【補正方法】変更
【補正の内容】
【００７３】
図７の実施例は、撹乱用データの面からは、データ処理をあらかじめ計算しておき、処理を効率化するものである。あらかじめ、撹乱用データ処理手段で処理済み撹乱用データXoを生成し（７０３）、処理済み撹乱用データ記録手段（７０６）で、記録しておく。処理の中では、データ逆変形処理手段（７１３）では、記録しておいた処理済み撹乱用データ（７１４）を読みだし、使用する。これは
、同じようなデータ処理を何回も実行する場合には効率の面で有効である。しかし、撹乱用データが何回も使われるため、情報の隠蔽性にとって、図４の実施例のように撹乱用データを毎回変更する方が、有効である。これは、処理速度と情報の隠蔽性のトレードオフから決まる。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
図８の実施例は、第１と第２の撹乱用データの逆変形を統合して行い、その後その結果を使って、データの逆変形を行うものである。第１と第２の撹乱用データは、それぞれ、第１撹乱用データ処理手段（８０３）と第２撹乱用データ処理手段（８０７）で処理済み撹乱用データX1oとX2oが作られる。それらのデータをデータ逆変形統合手段で統合し、統合処理済み撹乱用データXoを生成する。そのデータを使い、第１変形データ処理(８１４)及び第２変形データ処理(８１８)を処理した結果である処理済み変形データＨ４(８１９)の逆変形処理手段（８２０）を行い、真の処理済みデータＤ２を生成する。これは、個別に逆変形する場合よりも、処理済み撹乱用データを統合し、そのあと、まとめて変形処理を行う方法である。逆変形処理に処理時間がかかる場合に有効である。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
変形処理ａ（９０１）と変形処理ｂ（９０２）は基本的に同じ処理である。図１１を用いて変形処理ａの平文の変形データの作成処理について説明する。撹乱用データＸ１をランダムに生成する。これは、DESの暗号化（あるいは復号化）処理ごとに乱数発生器か擬似乱数を使って生成する（１１０２）。毎回、異なった撹乱用データを使用する。次に撹乱用データＸ１と平文PをXOR(排他的論理和)を実行し、変形平文（変形した平文)PX1を生成する（１１０３）。DESの場合は、平文は６４ビットであるが、生成する乱数は、６４ビットでも８ビットでも構わない。しかし、６４ビット以下ならば、拡張するようなことを行い、６４ビットの撹乱用データＸ１を生成する必要がある。生成した乱数が８ビットであれば、それを８回繰りかえして６４ビットの撹乱用データＸ１を生成してもよい。ここで、排他的論理和（XOR）を使って変形したため、撹乱用データＸ１と変形平文PX1をXORすると、平文Pが生成される。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
次に、IP処理（９０２）について説明する。IP処理は、図３７に示すテーブルにしたがって平文６４ビットの並びを入れ替えるものである。テーブルに従い、出力の第１ビットは入力の第５８ビット、出力の第２ビットは入力の第５０ビット、出力の第６４ビットは入力の第７ビットと入れ替える。本実施例でのIP処理を、図１２を用いて説明する。まず、変形平文PX1をIP処理し、IP処理済み変形平文PX1IPを生成する（１２０２）。ビットの入れ替えは、図３７のテーブルに従う。次に、撹乱用データＸ１も同じようにIP処理し、IP処理済み撹乱用データX1IPを生成する（１２０３）。IP処理済み変形平文PX1IPとIP処理済み撹乱用データX1IPとは排他的論理和を取ると、平文をIP処理した結果を生成することができる。これは、IP処理がビットの移動であるため、撹乱用データも変形平文ＰＸ１と同じように移動したため、ビットごとに排他的論理和を実行すると真のデータが求まるという関係が維持されているためである。IP処理の下位３２ビットが第１段のｆ関数（９０３）と第２段の排他的論理和に使われ、上位３２ビットは、排他的論理和（９０９）の入力となる。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】００９２
【補正方法】変更
【補正の内容】
【００９２】
2000182012.tif 000006
すなわち、Ｚ１を真のデータに戻すための撹乱用データとしてＰとＫの撹乱用データを排他的論理和を使えばよいことが分かる。暗号鍵と選択的転置の実行結果の排他的論理和の処理では、Ｓボックス入力データSinputXの撹乱用データとして、平文用の撹乱用データから生成したIP処理及びE転置処理済み撹乱用データXIPEと、暗号鍵用の撹乱用データから生成したPC-1及びLS、PC-2処理済み撹乱用データX2PC1LSPC2とをXORして生成したＳボックス入力データ撹乱用データXSinputを使えばよいことが分かる。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】００９３
【補正方法】変更
【補正の内容】
【００９３】
次に、Ｓボックスの処理について図１８を用いて説明する。Ｓボックス入力データSinputXから６ビットずつ取り出し、８つのＳボックスについて処理を行う。DESで使われている１番目のＳボックスを、図２５で示す。８つのＳボックスは形式は同じであるが、それぞれフィールドのデータが異なる。それぞれのＳボックスの処理では、まず、Ｓボックス入力データSinputの上位i番目の６ビットのサブデータSubSinputX(i)を取り出す（１８０５）。前もって作成しておいたＳボックスを変形した変形Ｓボックステーブルのアドレス撹乱用データXsa(i)とSubSinputX(i)をXORし、SubSinputXXsa(i)を生成する（１８０６）。そのSubSinputXsa(i)をＳボックス入力データ撹乱用データXSinputの上位i番目の６ビットとXORし、SubSinputXsa(i)を生成する（１８０７）。SubSinputXsa(i)は、i番目のＳボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)が排他的論理和された値である。SubSinputX(i)とXSinput(i)を排他的論理和（XOR）すると、それは、真のデータに戻るのであるので、XSinput(i)と排他的論理和する前に、SubSinputX(i)とXsa(i)の排他的論理和を行い、その後で、XSinput(i)を排他的論理和（XOR）を実行する。こうすることにより、本物のデータの処理を行う必要がなくなり、その電流波形からデータを推定することが困難になっている。次に、SubSinputXsa(i)を使って、変形Ｓボックステーブルのアドレスを計算する（１８０８）。本来のＳボックスのテーブルを参照するためのアドレスが変形されているため、テーブルをあらかじめ変形しておく必要がある。計算したアドレスを元に、変形ＳボックステーブルＳ（ｉ）からＳボックス出力データSoutputX3(i)を取り出す（１８０９）。そして、同時にＳボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出す（１８１０）。８つのＳボックスを処理し、 SoutputX3(i)とX3(i)をiを１から８までのデータをそれぞれ連結することによって、SoutputX3とX3を生成する。これ以降は、処理データは、SoutputX3となり、撹乱用データはX3となる。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】００９５
【補正方法】変更
【補正の内容】
【００９５】
次に、アドレスの撹乱を行う。まず、Xsa1をXsa(i)の上位１ビットと下位１ビットから作った２ビットとし、Xsa2を Xsa(i)の上位２ビットから５ビットから作った４ビットのデータとする。これは、Ｓボックスのアドレスの計算方法に由来している。そして、図２６の行番号と列番号をそれぞれｋとｌとすると、それぞれにXsa1とXsa2を排他的論理和を行う（２４１２）。新しくできた行番号と列番号をｋ２とｌ２とすると、i番目の変形ＳボックステーブルＳ（ｉ）のk2行l2列にデータd2を格納する（２４１３）。この処理の例を図２７に示す。図２７は、図２６の行と列に対して撹乱用データとして“２”と“９”を選んで作成したものである。わかりやすいように、行と列のデータの位置はそのままにして行と列の番号だけを変更している。図２５で、３行１列のデータ１２（２５０４）は、図２７では、１行８列に移り、値が１１に変形されている。この例では、データの撹乱用データは“７”であり、アドレス用の撹乱データは行が“２”であり、列が“９”である。このようにして８つのＳボックスを変形する。本実施例では、この処理は、DESの最初に行っておく。変形したＳボックステーブルは、DESの１６段で使用する。