JP4317607B2 - 情報処理装置、耐タンパ処理装置 - Google Patents

情報処理装置、耐タンパ処理装置 Download PDF

Info

Publication number
JP4317607B2
JP4317607B2 JP35415698A JP35415698A JP4317607B2 JP 4317607 B2 JP4317607 B2 JP 4317607B2 JP 35415698 A JP35415698 A JP 35415698A JP 35415698 A JP35415698 A JP 35415698A JP 4317607 B2 JP4317607 B2 JP 4317607B2
Authority
JP
Japan
Prior art keywords
data
processing
disturbance
input
processed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP35415698A
Other languages
English (en)
Other versions
JP2000182012A5 (ja
JP2000182012A (ja
Inventor
優 大木
寧子 福澤
進 奥原
正博 神永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP35415698A priority Critical patent/JP4317607B2/ja
Priority to US09/458,018 priority patent/US6631471B1/en
Priority to KR1019990057028A priority patent/KR100726903B1/ko
Priority to TW088121816A priority patent/TW517189B/zh
Priority to EP99124934A priority patent/EP1011081B1/en
Priority to DE69906022T priority patent/DE69906022T2/de
Priority to CNB991267079A priority patent/CN1200392C/zh
Priority to US09/528,995 priority patent/US6615354B1/en
Publication of JP2000182012A publication Critical patent/JP2000182012A/ja
Publication of JP2000182012A5 publication Critical patent/JP2000182012A5/ja
Priority to KR1020060076642A priority patent/KR100674550B1/ko
Application granted granted Critical
Publication of JP4317607B2 publication Critical patent/JP4317607B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K13/00Conveying record carriers from one station to another, e.g. from stack to punching mechanism
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • G06K19/07309Means for preventing undesired reading or writing from or onto record carriers
    • G06K19/07363Means for preventing undesired reading or writing from or onto record carriers by preventing analysis of the circuit, e.g. dynamic or static power analysis or current analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/0806Details of the card
    • G07F7/0813Specific details related to card security
    • G07F7/082Features insuring the integrity of the data on or in the card

Description

【0001】
【発明の属する技術分野】
本発明は、機密性の高いICカードなどの耐タンパ装置に関するものである。
【0002】
【従来の技術】
ICカードは、主に、勝手に書き換えられない情報の保持や秘密情報である暗号鍵を使ったデータの暗号化や暗号文の復号化を行うために使われる装置である。ICカードは、電源を持っていないため、リーダライタに差し込まれると、電源の供給を受け、動作可能となる。動作可能になると、リーダライタからコマンドを受けて、コマンドに従い、データの転送を行う。ICカードの一般的な解説は、オーム社出版電子情報通信学会編水沢順一著「ICカード」などにある。
【0003】
ICカードの構成は、図1に示すように、カード101の上に、ICカード用チップ102を搭載したものである。一般にICカードは、接点を持ち、接点を通して、リーダーライタから電源の供給やリーダライタとのデータの通信を行う。
【0004】
ICカード用チップの構成は、基本的にマイクロコンピュータと同じような構成である。その構成は、図2に示すように、中央演算装置201、記憶装置204、入出力ポート207、コ・プロセッサ202からなる。中央処理装置201は、論理演算や算術演算などを行う装置であり、記憶装置204は、プログラムやデータを格納する装置である。入出力ポートは、リーダライタと通信を行う装置である。コ・プロセッサは、剰余演算を行うための特別な演算装置であり、非対称暗号であるRSAの演算などに用いられる装置である。ICカード用プロセッサの中には、コ・プロセッサを持たないものも多くある。データバス203は、各装置を接続するバスである。
【0005】
記憶装置204は、ROM(Read Only Memory)やRAM(Random Access Memory)、EEPROM(Electrical Erasable Programmable Read Only Memory)などからなる。ROMは、変更できないメモリであり、主にプログラムを格納するメモリである。RAMは自由に書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容が消えてなくなる。ICカードがリーダライタから抜かれると電源の供給が中断されるため、RAMの内容は、保持できなくなる。EEPROMは、電源の供給が中断されてもその内容を保持することができるメモリである。書き換える必要があり、ICカードがリーダライタから抜かれても、保持するデータを格納するために使われる。例えば、プリペイドカードでのプリペイドの度数などは、使用するたびに書き換えられ、かつリーダライタか抜かれてもデータを保持する必要があるため、EEPROMで保持される。
【0006】
ICカードは、プログラムや重要な情報がICカード用チップの中に密閉されているため、重要な情報を格納したり、カードの中で暗号処理を行うために、使われている。ICカードでの暗号処理の解読の難しさは、暗号アルゴリズムの解読の困難さと同じと考えられていた。しかし、ICカードが暗号処理を行っている時の消費電流を観測し、解析することにより、暗号アルゴリズムの解読より容易に暗号処理の内容や暗号鍵が推定される可能性が示唆されている。消費電流は、リーダライタから供給されている電流を測定することにより観測することができる。このような危険性は、John Wiley & sons社 W.Rankl & W.Effing著 「Smart Card Handbook」の8.5.1.1 Passive protective mechanisms(263ページ)に記載されている。
【0007】
ICカード用チップを構成しているCMOSは、出力状態が1から0あるいは0から1に変わった時に電流を消費する。特に、データバス203のバスは、大きな電気容量を持つため、バスの値が1から0あるいは0から1に変わると、大きな電流を消費する。そのため、消費電流を観測すれば、ICカード用チップの中で、何が動作しているか分かる可能性を示唆している。
【0008】
図3は、ICカード用チップの1サイクルでの消費電流の波形を示したものである。処理しているデータの依存して、電流波形が301や302のように異なる。このような差は、バス203を流れるデータや中央演算装置201で処理しているデータに依存して生じる。
【0009】
16ビットのプリチャージバスにデータを転送する場合を考える。プリチャージバスは、データ転送の前にすべてのバスの値を“0”にそろえるバスである。このバスに、値は違うが“1”のビットの数が同じデータ、例えば、“1”のビットの数が2である16進数で“88”と“11”、を転送した場合、電流波形はほぼ同じ波形になる。この理由は、“0”から“1”へ変化したビットの数が同じであるため、同じように電流をし消費し、同じ電流波形になったからである。もし、“1”のビットの数が1つ異なるデータ、例えば、“1”のビットの数が3である“89”や“19”を転送した場合、“1”のビットの数が2のデータとは消費電流が異なる。これは、3ビット分バスの値が“0”から“1”に変わったため、その分の電流が消費される。そのため、先の2ビットが変化したデータに比べて消費電流が1ビット分大きくなる。一般に、“1”のビットの数が多いほど電流波形は高くなるという規則性がある。この規則性から、転送されているデータを推定することができる。
【0010】
図3の電流波形は、バスだけではなく、ICカード用チップを構成している構成要素の消費している電流の総和である。しかし、ICカード用チップのようなマイコンでは、主にバスにデータが転送されているフェーズ、主にCPUが演算をしているフェーズ、レジスタにデータを書き込んでいるフェーズなどに分かれている。そのため、フェーズに注目すれば、主にどの部分での消費電流の違いが分かり、その部分でのデータ操作を推定することができる。
【0011】
具体的な命令でどのように差が出るかを、次のような左シフト命令を例にして説明する。
【0012】
shiftl R1 (式1)
この命令は、レジスタ1の内容を左シフトし、レジスタのビット列が左にシフトし、最上位ビットの値がキャリアとしてコンディションコードレジスタに入る命令である。レジスタR1の最上位ビットがデータバスを経由して、コンディションコードレジスタに転送されるため、電流波形の大きさを比較すれば、最上位のビットが“0”か“1”かが識別できる可能性がある。もしR1に重要なデータが入っていれば、そのデータの1ビットであるが、“0”か“1”かが分かる可能性がある。特に、DESのような暗号処理では、暗号鍵をシフトする操作が頻発する。このシフト操作のときに暗号鍵のデータを推定できる電流波形が生じ、暗号鍵を推定される危険性がある。
【0013】
これは、コ・プロセッサ202の演算でも同じである。演算内容が、暗号鍵に依存した偏りがあると、その偏りが消費電流から求められ、暗号鍵が推定される可能性がある。
【0014】
【発明が解決しようとする課題】
本発明の課題は、ICカード用チップでのデータ処理と消費電流との関連性を減らすことである。消費電流とチップの処理との関連性が減れば、観測した消費電流の波形からICカードチップ内での処理や暗号鍵の推測が困難になる。本発明の着眼点は、ICカードチップでの処理するデータを変形して処理することにより、消費電流の波形から、処理や暗号鍵の推測を困難にするものである。
【0015】
【課題を解決するための手段】
ICカード用チップに代表される耐タンパ装置は、プログラムを格納するプログラム格納部と、データを保存するデータ格納部を持つ記憶装置と、プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置を持ち、プログラムは、中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなる、情報処理装置として考えることができる。本発明は、処理しているデータとICカード用チップの消費電流の関連性を減らすための方法として、処理するデータを撹乱用データで変形し、データの処理を変形したデータで処理し、処理後、撹乱用データを使って逆変形し、正しい処理結果を求めるものである。データ処理の後に使用する撹乱データは、必要があれば、データ処理と同じ処理を行った処理済の撹乱用データを使用する。また、撹乱用データは、データ処理ごとにランダムに設定する。このようにすることにより、データ処理において、本来のデータを使わず、毎回異なった変形したデータを使うことができる。そのため、電流波形からデータを推定することが困難にする。
【0016】
具体的には、まず、撹乱用データXiを作成し、データD1を変形し、変形データH1を作成する。変形の方法には、排他的論理和や加算、乗算などがある。データ処理では、変形データH1を使い、データ処理を行い、処理済み変形データH2を生成する。本来は、データD1を使用するのであるが、ここでは、変形データH1を使用しているため、変形データH1を処理する電流波形からデータD1のデータを推定することは困難である。変形データH1は、処理ごとに異なる撹乱用データXiにて、変形されているため、毎回、異なるデータとなっている。そのため、変形データH1を処理する電流波形も、毎回、異なった波形となり、その波形から変形データH1を推定しても意味がないことになる。
【0017】
撹乱用データXiもデータD1と同じようにデータ処理をする必要がある場合は、撹乱用データXiを入力とし、データ処理を行い、 処理済み撹乱用データXoを作成する。そして、処理済み撹乱用データXoを使って処理済み変形データH2を処理し、入力データD1を入力データ処理手段で処理した結果である処理済みデータD2を得る。
【0018】
データ変形の方法が異なったものを使用する必要がある場合などでは、データ変形を連結して、実行する必要がある場合がある。その場合は、データ変形、変形データ処理、撹乱用データ処理、データ逆変形処理を入れ子にしたり、組み合わせることにより、本来のデータをデータ処理しないようにデータ変形を連続させる。
【0019】
本発明は、暗号アルゴリズムでの、データを入れ替える転置や換字、あるいは、テーブルのアクセスなどの情報隠蔽に使うことができる。データの入れ替えの場合は、排他的論理和をデータ変形に使い、データ処理において、変形したデータと撹乱用データを同じように処理し、常に、変形したデータと撹乱用データを排他的論理和を実行すると、本来のデータを得ることができるように変形処理を行うことが、有効な方法の一つである。
【0020】
【発明の実施の形態】
以下、本発明の実施例について図面を参照しながら説明する。
【0021】
図1はICカードの外観を示したものである。ICカード101は、ISO7816の規格により大きさや、ICカードのチップ102の位置や接点の数および割り当てなどが規定されている。
【0022】
図2は、ICカード用チップ102の内部構成である。構成については、従来技術の説明で既に述べたとおりである。本発明は、プログラム205で処理するデータに撹乱を加えることにより、処理中に生じるICカード用チップのハードウェアが消費する電流波形から、本物のデータの推定を困難にさせるものである。
【0023】
基本的な考えを次の簡単な命令列を例にして説明する。
【0024】
logica_shiftl R1 (式2)
xor R1 R2 (式3)
式2は、レジスタR1の値を左に論理的にループさせる命令である。最上位ビットが最下位ビットに移動する。その結果はレジスタR1に格納される。その結果とレジスタR2の内容を排他的論理和し、その結果がレジスタR2に格納される命令列である。このような命令は、DESのような暗号アルゴリズムでは、頻繁に出現する。式2と式3では、処理するデータをそのまま扱っているのでデータの内容によって電流波形の大きさを変える。そのため、電流波形を観測することによりデータを推定できる可能性がある。
【0025】
式2と式3の命令で処理するデータを直接扱わないように、以下のような命令列に変更する。
【0026】
xor X1 R1 (式4)
xor X2 R2 (式5)
logica_shiftl R1 (式6)
xor R1 R2 (式7)
logica_shiftl X1 (式8)
xor X1 X2 (式9)
xor X2 R2 (式10)
ここで、X1とX2は勝手に選んだ乱数であり、撹乱用データである。式4と式5では、レジスタR1とR2に乱数X1とX2を排他的論理和を行い、撹乱用データを使い、本物のデータの変形を行う変形処理である。式6と式7は式2と式3と同じデータ処理であるが、変形処理を行ったため、R1とR2の値は、本物のデータの値とは異なったデータとなっている。式8と式9は、撹乱用データ自体をデータ処理を行っているものである。式10で、撹乱用データの処理結果と式7の処理結果を排他的論理和することにより、本物のデータにもどす逆変形処理である
【0027】
これを具体的な数値で値の変化を示すと以下のようになる。R1とR2を以下の値とする。
【0028】
R1:11001010 (式11)
R2:01010111 (式12)
式2の結果のR1の値は以下のようになる。
【0029】
R1:10010101 (式13)
そして、式3の処理結果は、以下のようになる。
【0030】
R2:11000010 (式14)
次に、本発明の変形を行った場合について示す。まず、撹乱用データを以下のようにする。レジスタR1とR2の値は同じものとする。
【0031】
X1:10010111 (式15)
X2:00111010 (式16)
式4と式5を処理した結果、レジスタR1とR2の値は以下のようになる。
【0032】
R1:01011101 (式17)
R2:01101101 (式18)
式6と式7を処理した結果のレジスタR1とR2の値は以下のようになる。
【0033】
R1:10111010 (式19)
R2:11010111 (式20)
式8と式9で撹乱用データX1、X2も同じようにデータ処理した結果は、以下のようになる。
【0034】
X1:00101111 (式21)
X2:00010101 (式22)
そして式10の逆変形処理した結果、本物のデータをそのまま扱った処理結果式14と同じ結果が得られる。
【0035】
R2:11000010 (式23)
この例で示したように、変形処理を行い、変形したデータも撹乱用データも同じデータ処理を行い、その結果を使って逆変形することにより、元の値を求めることができる。そして、データ処理では、本物のデータは使われていないため、その電流波形を見ても処理している変形データは推定できるが、本物のデータを推定することは困難である。
【0036】
上で具体的な数値で示した例をより一般的な形式で示す。実際の処理を以下の通りとする。
【0037】
Output(j) = f(Input(i)) (式24)
これは、i個の入力Inputを入力し、処理fを行い、j個の出力Outputを出力する処理である。式2と3の例では、R1とR2の二つの入力であり、出力は一つで、R2に格納されていた例である。式24の処理中の電流波形から処理されるデータを推定することを困難にするために、以下のように行う。
【0038】
InputX(i) = h(Input(i)、X(i)) (式25)
OutputX(j) = f(inputX(i)) (式26)
Xoutput(j) = f(X(i)) (式27)
Output(j) = g(OutputX(i)、Xoutput(i)) (式28)
式25は、撹乱用データX(i)を使って、入力データInput(i)を変形し、変形した入力データInputX(i)を作成する変形処理である。hは変形操作である。式26は、変形した入力データを使いデータ処理を行うデータ処理である。式27は撹乱用データを入力データと同じように処理する撹乱用データ処理である、式28は、変形した入力データのデータ処理結果OutputX(j)と撹乱用データの処理結果Xoutput(j)を変形の逆変換を行う逆変形処理である。gは逆変形操作である。
【0039】
先の例では、式4と5が式25の処理に対応し、変形操作hは排他的論理和である。式6と式7は式26の変形された入力データのデータ処理に対応する。式8と式9は、式27の撹乱用データのデータ処理である。式10は、式28の逆変形処理である。変形操作gは排他的論理和である。
変形操作hと逆変形操作gを何に選ぶかはデータ処理fの特性で決まる。式2と3の処理では、排他的論理和が、変形操作hであり、逆変形操作gでもある。これは、シフト操作やXOR操作などは、排他的論理和を変形操作hとして選ぶことにより、逆変形操作gも排他的論理和を選ぶことができる。排他的論理和は、同じデータを排他的論理和を取ったならば、論理的ゼロになり、排他的論論理和を取った操作が消えるからである。
【0040】
データ処理fが加減算であれば、変形操作hに加算、あるいは減算をえらび、逆変形操作に減算、あるいは加算を選ぶことができる。例えば、
Output = Input(1) + Input(2) - Input(3) (式29)
のような操作は、以下のような変形処理を行い、
InputX(1) = Input(1) + X(1) (式30)
InputX(2) = Input(2) + X(2) (式31)
InputX(3) = Input(3) + X(3) (式32)
変形した入力データを処理することにより変形した入力データの処理結果を得ることができる。
【0041】
OutputX = InputX(1) + InputX(2) - InputX(3) (式33)
撹乱用データの同じようにデータ処理を行う。
【0042】
Xoutput = X(1) + X(2) - X(3) (式34)
そして逆変形処理を行う。
【0043】
Output = g(Xoutput) = OutputX - Xoutput
= InputX(1) + InputX(2) - InputX(3) - (X(1) + X(2) - X(3))
= Input(1) + Input(2) - Input(3) (式35)
正しい出力データを求めることができる。これは、加減算の演算では、ある値を加算して演算し、最期の結果に加算した値を減算すれば、正しい結果が求まることからである
【0044】
データ処理fが乗除算であれば、変形操作hに乗算、あるいは除算をえらび、逆変形操作に除算、あるいは乗算を選ぶことにより、変形処理と逆変形処理を実現することができる。この理由は、加減算と同じであり、乗除算の演算では、ある値を乗算(除算)して演算し、最期の結果に乗算(除算)した値を除算(乗算)すれば、正しい結果が求まることからである
【0045】
データ処理fが剰余演算の加減算であれば、変形操作hに法Nの整数倍の加減算を選ぶことができる。例えば、以下のような加減剰余演算を考える。
【0046】
Output = Input(1) + Input(2) - Input(3) mod N (式36)
入力Input(i)を以下のように変形する。
【0047】
InputX(i) = Input(i) + k(i) * N (式37)
そして、変形した入力データを使い、加減剰余演算を行う。
【0048】
OutputX = InputX(1) + InputX(2) - InputX(3) mod N (式38)
この式は、式37を使うことにより
OutputX = (Input(1) + k(1)*N) + (Input(2) + k(2)*N) - (Input(3) + k(3)*N) mod N

= (Input(1) + Input(2) - Input(3)) + (k(1)*N + k(2)*N - k(3)*N)
mod N (式39)
と変形できる。そして、剰余演算の特徴である
0 = k * N mod N (式40)
を使うことにより、式39の2番目の括弧内の値は0となり、式39は、
OutputX = (Input(1) + Input(2) - Input(3)) mod N (式41)
となる。すなわち、変形した入力データの演算結果は、本来の演算結果と同じである。これは、剰余演算の特徴を使うことにより、撹乱用データのデータ処理と逆変形処理が不要である例である。これは、撹乱データのデータ処理の結果が
Xoutput(i) = k(1) * N + k(2) * N - k(3) * N mod N (式42)
が、そもそも0になるため、撹乱用データのデータ処理と逆変形処理が不要であるためである
【0049】
データ処理fが剰余演算の乗算であれば、変形操作hに法Nの整数倍に1を加えたものを使うことができる。例えば、以下のような乗算剰余演算を考える。
【0050】
Output = Input(1) * Input(2) * Input(3) mod N (式43)
入力Input(i)を以下のように変形する。
【0051】
InputX(i) = Input(i) * (k(i) * N + 1) (式44)
そして、変形した入力データを使い、乗算剰余演算を行う。
【0052】
OutputX = InputX(1) * InputX(2) * InputX(3) mod N (式45)
この式は、式44を使うことにより
OutputX = (Input(1) * (k(1)*N + 1)) * (Input(2) * (k(2)*N + 1) * (Input(3)*(k(3)*N+1)) mod N
= (Input(1) * Input(2) * Input(3)) *
((k(1)*N + 1) * (k(2)*N + 1) * (k(3)*N + 1)) mod N (式46)
と変形できる。そして、剰余演算の特徴である
0 = k * N mod N (式47)
を使うことにより、式46は、
OutputX = (Input(1) * Input(2) * Input(3)) * (1 * 1 * 1) mod N
= Input(1) * Input(2) * Input(3) mod N (式48)
となる。すなわち、変形した入力データの演算結果は、本物の演算結果と同じである。これも、剰余演算の特徴を使うことにより撹乱データのデータ処理と逆変形処理が不要である例である。
【0053】
また、データ処理fが剰余演算の乗算であれば、変形操作hにある数Xと法Nに対して逆数であるYを使うこともできる。
【0054】
1 = X * Y mod N (式49)
このような数の簡単なものとして、Xが2で、Yが(N+1)/2であるものがある。これは、変形操作としてXを掛けておき、逆変形でXを掛けた回数だけYを掛けることにより、本物の処理結果を求めるものである。例えば、以下のような加減剰余演算を考える。
【0055】
Output = Input(1) * Input(2) * Input(3) mod N (式50)
入力Input(i)を以下のように変形する。
【0056】
InputX(i) = Input(i) * X (式51)
そして、変形した入力データを使い、加減剰余演算を行う。
【0057】
OutputX = InputX(1) * InputX(2) * InputX(3) mod N (式52)
そして、逆変形処理gとして、Xを掛けた回数だけYを掛けたものを選ぶと、OutputXに逆変形処理gを操作することにより、正しい結果をえることができる。
【0058】
Output = OutputX * Y * Y * Y mod N
= InputX(1) * InputX(2) * InputX(3) * Y * Y * Y mod N
= Input(1) * X * Input(2) * X * Input(3) * X * Y * Y * Y mod N
= Input(1) * Input(2) * Input(3) * X * X * X* Y * Y * Y mod N
= Input(1) * Input(2) * Input(3) * X * Y * X * Y * X * Y mod N
= Input(1) * Input(2) * Input(3) mod N (式53)
式53では、式49の性質を使った。この例では、撹乱用データのデータ処理は不要であるが、撹乱用データを掛けた回数だけ、法Nでその逆数を逆変形処理で掛ければ、正しい結果を得ることができる
【0059】
これまでは、データ処理fがデータ操作である例であったが、テーブルからのデータ取り出し操作を撹乱することも電流波形からデータを推定させないために必要である。テーブルのデータの撹乱とテーブルのアドレスの撹乱に関する実施例について、図33のテーブルからデータを取り出す例を用いて説明する。
【0060】
図33のテーブルのデータを撹乱用データX1で排他的論理和をとる。ここで撹乱用データとして“9”を選び、テーブルの値と9との排他的論理和を実行する。その結果が図34のテーブルである。次に、テーブルのアドレスを撹乱するために、行番号と撹乱用データX2として選んだ“3”との排他的論理和を実行し、列番号と撹乱用データX3として選んだ“2”との排他的論理和を実行し、テーブルを並び替える。その結果が図35である。元のテーブルである図33のテーブルの1行2列目のデータ3301である“0”は、撹乱用データX1と排他的論理和を実行した結果、図34のテーブルでは“9”(3401)となる。そして、行番号と列番号を撹乱用データX2と撹乱用データX3とそれぞれ排他的論理和を実行した結果、3401は、3501の場所に移る。テーブルからのデータ取り出し操作を撹乱するために、このようなテーブルを作成しておく。
【0061】
アドレス計算までに、すでに、撹乱用データY1とY2でそれぞれ、行番号変数Gyouと列番号変数Retsuが排他的論理和で変形されているとする。すなわち、正しい行番号Gyouと列番号RetsuはY1とY2をGyouとRetsuに排他的論理和を実行しないと得られないとする。それは、以下のような関係である。
【0062】
Gyou = GyouY1 xor Y1 (式54)
Retsu = RetsuY2 xor Y2 (式55)
しかし、この逆変形処理を行って図33のテーブルを使うことは、真のアドレスデータを使うため、電流波形からアドレスデータを推定される可能性がある。そこで、まず、図35のテーブルを作った時に、行番号と列番号を撹乱するために使用した撹乱用データX2と撹乱用データX3を用いる。
【0063】
GyouY1X2 = GyouY1 xor X2 (式56)
RetsuY1X3 = RetsuY2 xor X3 (式57)
そして、今まで使ってきた撹乱用データの逆変形処理を行う。
【0064】
GyouX2 = GyouY1X2 xor Y1 (式58)
RetsuX3 = RetsuY2X3 xor Y2 (式59)
こうすることにより、真の行番号や列番号が使われていないため、電流波形からその値を推定することは困難である。GyouX2とRetsuX3を使って、図35のテーブルTableX1X2X3を参照しDataX1を取る出す。
【0065】
DataX1 = TableX1X2X3(GyouX2、RetsuX3) (式60)
図35のテーブルはすでに撹乱用データX1で変形されているため、これ以降は、撹乱用データをX1として処理を行う。式56から式60までの処理で真のデータを使用していない
【0066】
一定の処理ごとに、テーブルのデータの撹乱用データX1や行番号の撹乱用データX2、列番号の撹乱用データX3をランダムに生成し、テーブルを変形しておく。こうすることにより、処理ごとにテーブルが変形されるため、電流波形からデータを推定することは困難である。
【0067】
以上撹乱用データの種類とデータの変形の方法について説明してきた。次に、その処理手順を示す。図4に基本的な撹乱用データを使った情報隠蔽手順の実施例について示す。
【0068】
図4は、基本的な手順である。撹乱用データ生成手段で撹乱用データXiを生成する(401)。この一般的な方法としては、乱数発生器や擬似乱数を使って必要な長さの乱数を生成する方法がある。次に、データ変形処理手段(406)で、入力データD1を撹乱用データXi(405)で変形し、変形データH1(407)を生成する。変形方法は、先に述べたように、排他的論理和や、加減算、乗除算などがある。そして変形データH1を使ってデータ処理を変形データ処理手段(408)で行い、処理済み変形データH2を生成する。一方、撹乱用データXiは入力データと同じデータ処理を撹乱用データ処理手段(403)で行い、処理済みの撹乱用データXo(404)を作成する。そして、撹乱用データXoと処理済み変形データH2を使い、データ逆変形処理手段(410)で真の処理済みデータD2(411)を求める。データ変形処理手段(406)やデータ逆変形処理手段(410)の方法には、すでに説明した、排他的論理和や加減算、乗除算、剰余演算などがある
【0069】
図5の実施例は、撹乱用データを二つ使った例であり、第1の撹乱用データを使った情報隠蔽処理の中に第2の撹乱用データを使った情報隠蔽処理が含まれている場合である。主な流れは、図4の実施例と同じである。第1の撹乱用データで変形された変形データH1(507)をデータ処理し、その処理結果である処理済み変形データH2(509)に第2の撹乱用データX2iを使って第2データ変形処理手段(510)で変形を行い、処理済み変形データH3(511)を作成する。そのデータを第2変形データ処理手段(512)でデータ処理を行い、処理済み変形データH4を生成し、第2の撹乱用データの逆変換を第2データ逆変形処理手段(520)でおこない、処理済み変形データH5(521)を生成する。そして、第1の撹乱用データの逆変換を第1データ逆変形処理手段(514)で行い、真の処理済みデータD2(515)を求める。変形に排他的論理和を使った例は、以下の通りである。
【0070】
H1 = D1 xor X1i
H2 = f1(H1)
X1o = f1(X1i)
H31 = H2 xor X2i
H32 = D2 xor X2i (式61)
H4 = f2(H31、H32)
X2o = f2(X2i、X2i)
H5 = H4 xor X2o
D2 = H5 xor X1o
ここでf1とf2はデータ処理操作である。この例のように、第2のデータ処理f2で、別のデータD2を使う場合で、そのデータD2を第2の撹乱用データで変形して使用する場合に、本実施例の処理手順を使うと有効である
【0071】
図6の実施例も、撹乱用データを二つ使った例である。図5の実施例との大きな違いは、第1の撹乱用データを使った情報隠蔽処理と第2の撹乱用データを使った情報隠蔽処理がつながっている場合である。そして、第1の撹乱用データによる変換を戻す逆変形処理の前に、第2の撹乱用データで変形しておき、真のデータを使った処理を隠蔽するための手順である。第1の撹乱用データで変形された変形データH1(609)は、第1変形データ処理手段(610)でデータ処理を行い、その処理済み変形データH2(611)を第2変形データ作成手段(612)で第2の撹乱用データを使って変形し、処理済み変形データH3(613)を生成する。そして、第1撹乱用データの逆変換を第1データ逆変形処理手段(605)で行う。その処理結果である処理済み変形データH4(606)を使って第2変形データ処理手段(614)を行い、処理済み変形データH5(615)を生成する。そして、第2データ逆変形処理手段(616)で、逆変換を行い、真の処理済みデータD2(617)を生成する。変形に排他的論理和を使った例は、以下の通りである。
【0072】
H1 = D1 xor X1o
H2 = f1(H1)
X1o = f1(X1i)
H3 = H2 xor X2i (式62)
H4 = H3 xor X1o
H5 = f2(H4)
X2o = f2(X2i)
D2 = H5 xor X2i
これは、処理操作が複数あり、撹乱用データを複数使う必要な場合に有効である
【0073】
図7の実施例は、撹乱用データの面からは、データ処理をあらかじめ計算しておき、処理を効率化するものである。あらかじめ、撹乱用データ処理手段で処理済み撹乱用データXoを生成し(703)、処理済み撹乱用データ記録手段(706)で、記録しておく。処理の中では、データ逆変形処理手段(713)では、記録しておいた処理済み撹乱用データ(714)を読みだし、使用する。これは、同じようなデータ処理を何回も実行する場合には効率の面で有効である。しかし、撹乱用データが何回も使われるため、情報の隠蔽性にとって、図4の実施例のように撹乱用データを毎回変更する方が、有効である。これは、処理速度と情報の隠蔽性のトレードオフから決まる
【0074】
図8の実施例は、第1と第2の撹乱用データの逆変形を統合して行い、その後その結果を使って、データの逆変形を行うものである。第1と第2の撹乱用データは、それぞれ、第1撹乱用データ処理手段(803)と第2撹乱用データ処理手段(807)で処理済み撹乱用データX1oとX2oが作られる。それらのデータをデータ逆変形統合手段で統合し、統合処理済み撹乱用データXoを生成する。そのデータを使い、第1変形データ処理(814)及び第2変形データ処理(818)を処理した結果である処理済み変形データH4(819)の逆変形処理手段(820)を行い、真の処理済みデータD2を生成する。これは、個別に逆変形する場合よりも、処理済み撹乱用データを統合し、そのあと、まとめて変形処理を行う方法である。逆変形処理に処理時間がかかる場合に有効である
【0075】
次に、対称暗号DES(data encryption standard)を例にした実施例について説明する。本発明は、他の暗号にも使うことができる。暗号については、共立出版株式会社岡本栄司著「暗号理論入門」などに、記載されている。
【0076】
DESは、64ビットのデータ(平文か暗号文)を56ビットの暗号鍵で、暗号化と復号化を行う。暗号化と復号化で同じ暗号鍵を使用するため、対称暗号と呼ばれている。DESは、トランプをきって、ランダムにするように、平分(暗号化される文)のビットをランダムに入れ替え暗号化する。データの入れ替えは、暗号鍵にしたがって行う。復号化する時は、暗号鍵に従い入れ替えた順と逆に入れ替えを行い、データを元に戻す。DESの処理での入れ替えは、ビット単位と複数ビットまとまった単位での二つの入れ替え方法がある。前者は、転置と呼び、後者は、換字と呼ぶ。
【0077】
図9を用いて、DESの暗号化の方法を説明する。変形処理a(901)と変形処理b(904)、逆変形処理(916)は、本発明に関するものであり、DESの本来の暗号処理には関係がない。暗号文は、まず、初期転置(IP:Initisal Permutation)902で転置させられる。これは、初期転置テーブルに従い、ビット単位で、暗号文の64ビットのデータを入れ替える。これ以降、初期転置の逆転置(IP-1)916まで、一組の操作を16段行う。
【0078】
各1段の処理は、前段の結果の前半か後半の32ビットのデータと暗号鍵を入力としてf関数903と呼ばれる処理を行い、その出力を前段の残りの半分のビットを使って排他的論理和909を取る操作を行う。暗号鍵も、入れ替えが行われる。暗号鍵に対して、まず、PC−1というテーブルを使った選択転置PC-1(905)が行われる。その後、PC−2というテーブルを使った選択転置PC−2 (908)を行い、暗号鍵の入れ替えを行う。次の段では、28ビットづつをLSテーブルにしたがって巡回させて使用する。
【0079】
本実施例では、IP処理の前に、平文を変形するための変形処理a(901)と暗号鍵を変形するための変形処理b(904)、そして、最期に逆変形する処理(916)を追加する。変形処理a(901)は、平文を変形し、IP処理(902)やf関数(903)の処理で、平文そのものを処理するのではなく、変形した平文を処理することにより、その処理の電流波形から平文のデータを推定できないようにするものである。変形処理b(904)は、PC-1処理(905)やLS処理(907)、PC−2処理(908)、f関数(903)で暗号鍵そのものを処理するのではなく変形した暗号鍵を処理することにより、その処理の電流波形から暗号鍵の推定を困難にするものである。
【0080】
f関数303の処理を、図10に示す。まず、f関数への入力文を選択的転置行列Eに基づいて、選択的転置を行う(1002)。次に、選択的転置を行った入力データと暗号鍵との排他的論理和をとり(1003)、Sボックスの処理を行い(1004)、P転置処理を行う(1005)。Sボックスの処理は、1003の排他的論理和の処理結果である48ビットから6ビットづつ取り出し、8つのSボックステーブルの行番号と列番号を求め、4ビットのデータを生成する処理である。各Sボックステーブルは、6ビットごとで示されているデータの位置により異なる。P転置処理は、P転置テーブルに従い、32ビットのビット位置を入れ替える操作である。
【0081】
変形処理a(901)と変形処理b(902)は基本的に同じ処理である。図11を用いて変形処理aの平文の変形データの作成処理について説明する。撹乱用データX1をランダムに生成する。これは、DESの暗号化(あるいは復号化)処理ごとに乱数発生器か擬似乱数を使って生成する(1102)。毎回、異なった撹乱用データを使用する。次に撹乱用データX1と平文PをXOR(排他的論理和)を実行し、変形平文(変形した平文)PX1を生成する(1103)。DESの場合は、平文は64ビットであるが、生成する乱数は、64ビットでも8ビットでも構わない。しかし、64ビット以下ならば、拡張するようなことを行い、64ビットの撹乱用データX1を生成する必要がある。生成した乱数が8ビットであれば、それを8回繰りかえして64ビットの撹乱用データX1を生成してもよい。ここで、排他的論理和(XOR)を使って変形したため、撹乱用データX1と変形平文PX1をXORすると、平文Pが生成される
【0082】
変形処理b(904)の暗号鍵の変形データの作成手順を図36に示す通りである。平文と撹乱用データX1の代わりに暗号鍵Kと撹乱用データX2を用いている点が、図11の実施例と異なるだけである。DESでは、暗号鍵は平文と同じ64ビットである。処理で変形された暗号鍵KX2が生成される。
【0083】
次に、IP処理(902)について説明する。IP処理は、図37に示すテーブルにしたがって平文64ビットの並びを入れ替えるものである。テーブルに従い、出力の第1ビットは入力の第58ビット、出力の第2ビットは入力の第50ビット、出力の第64ビットは入力の第7ビットと入れ替える。本実施例でのIP処理を、図12を用いて説明する。まず、変形平文PX1をIP処理し、IP処理済み変形平文PX1IPを生成する(1202)。ビットの入れ替えは、図37のテーブルに従う。次に、撹乱用データX1も同じようにIP処理し、IP処理済み撹乱用データX1IPを生成する(1203)。IP処理済み変形平文PX1IPとIP処理済み撹乱用データX1IPとは排他的論理和を取ると、平文をIP処理した結果を生成することができる。これは、IP処理がビットの移動であるため、撹乱用データも変形平文PX1と同じように移動したため、ビットごとに排他的論理和を実行すると真のデータが求まるという関係が維持されているためである。IP処理の下位32ビットが第1段のf関数(903)と第2段の排他的論理和に使われ、上位32ビットは、排他的論理和(909)の入力となる
【0084】
IP処理では、変形平文PX1のビットの値は、元の平文のビットの値と異なるため、IP処理の電流波形を見ても、平文のデータを推定することは困難である。“1”のビットの数によって、消費電流は大きくなるが、変形平文での“1”のビットの数は、平文の“1”のビットの数と何ら関係はない。そのため、電流波形の大きさから、平文のデータを推定することは困難である。このように、平文を撹乱用データで変形することにより、処理中の電流波形を観測しても元のデータを推定することが困難にすることができる。
【0085】
PC-1処理は、IP処理とほとんど同じである。図38のPC-1用の変換テーブルを使い、64ビットの暗号鍵をパリティビットの8ビットを取り除き、56ビットにし、かつビットの順序を入れ替えるものである。図38のテーブルの見方は図37のテーブルの見かたと同じである。PC−1処理済みの変形暗号鍵KX2PC1とPC-1処理済みの撹乱用データX2PC1は、排他的論理和を実行すると、正しいPC-1処理済みの暗号鍵が求まる。
【0086】
LS処理は、PC-1処理で生成された58ビットの鍵を右と左に28ビットずつに分け、それぞれLSテーブルにしたがって左に1ビットあるいは2ビットシフトするものである。実施例を図15を用いて説明する。まず、1502で、PC-1処理処理済み変形暗号鍵KX2PC1した結果をLS処理し、PC-1及びLS処理済み変形暗号鍵KX2PC1LSを生成し、1503で、PC-1処理処理済み撹乱用データX2PC1した結果をLS処理し、PC-1及びLS処理済み撹乱用データX2PC1LSを生成する。LS処理もビット位置の入れ替えであるため、PC-1及びLS処理済み変形暗号鍵KX2PC1LSとPC-1及びLS処理済み撹乱用データX2PC1LSの排他的論理和を実行すると、真のLSを処理した暗号鍵の結果が得られる。LS処理でも、撹乱用データを使ったため、実際に操作されているデータは、真の暗号鍵とは違うため、電流波形を観測しても、暗号鍵の推定は困難である。
【0087】
PC-2処理は、LSの処理結果の56ビットをPC-2テーブルにしたがって、48ビットに縮約型転置する。1402で、PC-1及びLS処理済み変形暗号鍵KX2PC1LSをPC-2処理し、PC-1及びLS、PC-2処理済み変形暗号鍵KX2PC1LSPC2を生成する。1403で、PC-1及びLS処理済み撹乱用データX2PC1LSをPC-2処理し、PC-1及びLS、PC-2処理済み撹乱用データX2PC1LSPC2を生成する。基本的には、テーブルを使った転置であるため、PC-1処理と基本的に同じである。
【0088】
次に、f関数903の処理について説明する。f関数は、図10に示すように、選択的転置E処理(1002)、暗号鍵と選択的転置の実行結果の排他的論理和(1003)、Sボックス処理(1004)、P転置処理(1005)からなる。
【0089】
選択的転置E処理について図16を用いて説明する。選択的転置Eは、IP処理と同じように図28の転置テーブルを使って、ビットの並びを変更するものである。1602で、IP処理済み変形平文PXIPを選択的転置E処理し、IP処理及びE転置処理済み変形平文PXIPEを生成する。そして、1603でIP処理済み撹乱用データXIPを選択的転置E処理し、IP処理及びE転置処理済み撹乱用データXIPEを生成する。IP処理やPC-1処理と同じように、IP処理及びE転置処理済み変形平文PXIPEとIP処理及びE転置処理済み撹乱用データXIPEを排他的論理和をとれば、正しいIP処理及びE転置処理済み平文が求まる。また、転置Eテーブルを使ってビットに入れかを行う際も、ビットの値は、変形されているビットの値であるので、その処理の電流波形を見ても真のデータを推定することは困難である。
【0090】
次に、f関数での2番目の処理である暗号鍵と選択的転置の実行結果の排他的論理和の処理を行う。この処理について、図17を用いて説明する。1702では、平文から生成したIP処理及びE転置処理済み変形平文PXIPEと、暗号鍵から生成したPC-1及びLS、PC-2処理済み変形暗号鍵KX2PC1LSPC2とをXORし、Sボックス処理の入力となる48ビットのSボックス入力データSinputXを作成する。次に1703では、平文用の撹乱用データから生成したIP処理及びE転置処理済み撹乱用データXIPEと、暗号鍵用の撹乱用データから生成したPC-1及びLS、PC-2処理済み撹乱用データX2PC1LSPC2とをXORし、Sボックス入力データSinputX用の撹乱データであるSボックス入力データ撹乱用データXSinputを生成する。排他的論理和の性質から、Sボックス入力データ撹乱用データXSinputは、二つの撹乱用データ(PC-1及びLS、PC-2処理済み撹乱用データX2PC1LSPC2と、PC-1及びLS、PC-2処理済み撹乱用データX2PC1LSPC2)をXORすることにより生成できる。これを簡単な例で示す。ここ、平文をPと鍵をK、その変形平をPX1、変形鍵をKX2とする。それらの関係は、式63と式64である。X1とX2は、平文と鍵の撹乱用データである。
【0091】
PX1 = P xor X1 (式63)
KX2 = K xor X2 (式64)
そうすると、PとKの排他的論理和を実行した結果をZとすると、PX1とPX2の排他的論理和を実行した結果Z1とZの関係は、以下のようになる。
【0092】
Z = P xor K (式65)
Z1 = PX1 xor KX2
= (P xor X1) xor (K xor X2)
= P xor X1 xor K xro X2
= (P xor K) xor (X1 xor X2)
= Z xor (X1 xor X2) (式66)
すなわち、Z1を真のデータに戻すための撹乱用データとしてPとKの撹乱用データを排他的論理和を使えばよいことが分かる。暗号鍵と選択的転置の実行結果の排他的論理和の処理では、Sボックス入力データSinputXの撹乱用データとして、平文用の撹乱用データから生成したIP処理及びE転置処理済み撹乱用データXIPEと、暗号鍵用の撹乱用データから生成したPC-1及びLS、PC-2処理済み撹乱用データX2PC1LSPC2とをXORして生成したSボックス入力データ撹乱用データXSinputを使えばよいことが分かる
【0093】
次に、Sボックスの処理について図18を用いて説明する。Sボックス入力データSinputXから6ビットずつ取り出し、8つのSボックスについて処理を行う。DESで使われている1番目のSボックスを、図25で示す。8つのSボックスは形式は同じであるが、それぞれフィールドのデータが異なる。それぞれのSボックスの処理では、まず、Sボックス入力データSinputの上位i番目の6ビットのサブデータSubSinputX(i)を取り出す(1805)。前もって作成しておいたSボックスを変形した変形Sボックステーブルのアドレス撹乱用データXsa(i)とSubSinputX(i)をXORし、SubSinputXXsa(i)を生成する(1806)。そのSubSinputXsa(i)をSボックス入力データ撹乱用データXSinputの上位i番目の6ビットとXORし、SubSinputXsa(i)を生成する(1807)。SubSinputXsa(i)は、i番目のSボックスを取り出すための本物のアドレスデータに対して、アドレス撹乱用データXsa(i)が排他的論理和された値である。SubSinputX(i)とXSinput(i)を排他的論理和(XOR)すると、それは、真のデータに戻るのであるので、XSinput(i)と排他的論理和する前に、SubSinputX(i)とXsa(i)の排他的論理和を行い、その後で、XSinput(i)を排他的論理和(XOR)を実行する。こうすることにより、本物のデータの処理を行う必要がなくなり、その電流波形からデータを推定することが困難になっている。次に、SubSinputXsa(i)を使って、変形Sボックステーブルのアドレスを計算する(1808)。本来のSボックスのテーブルを参照するためのアドレスが変形されているため、テーブルをあらかじめ変形しておく必要がある。計算したアドレスを元に、変形SボックステーブルS(i)からSボックス出力データSoutputX3(i)を取り出す(1809)。そして、同時にSボックスの出力データSoutputX3(i)用の撹乱用データX3(i)を取り出す(1810)。8つのSボックスを処理し、 SoutputX3(i)とX3(i)をiを1から8までのデータをそれぞれ連結することによって、SoutputX3とX3を生成する。これ以降は、処理データは、SoutputX3となり、撹乱用データはX3となる
【0094】
次に、変形Sボックステーブルの生成方法について図23と図24を用いて説明する。ここのSボックスで、S(i)ボックス用のアドレス撹乱用データXsa(i)とデータ撹乱用データX3(i)を作成する(2306)。Xsa(i)は6ビットであり、X3(i)は4ビットである。撹乱用データX3は4ビットずつ作成したX3(i)を8個集めた32ビットのデータである。次に、変形S(i)ボックステーブル作成ルーチンを呼びだす(2307)。i番目の変形Sボックステーブル作成ルーチンの処理を図24で説明する。kは行番を指定し、lは列番号を指定する。k行l列の処理は2408から2413である。1番目のSボックスのテーブルは、図25に示す通りである。まず、i番目のオリジナルのSボックスの行番号k列番号lのデータdを取り出す(2408)。そして、そのデータdと撹乱用データX3(i)を排他的論理和を取り、それをd2とする(2409)。これは、撹乱用データを“7”とすると、元のSボックスのデータ2504に対して、その結果は2604になる。これをすべてのフィールドに行うと、図26のようになる。図26のテーブルは、図25の1番目のSボックスのデータに対して、撹乱用データを“7”として排他的論理和を取ったものである。
【0095】
次に、アドレスの撹乱を行う。まず、Xsa1をXsa(i)の上位1ビットと下位1ビットから作った2ビットとし、Xsa2を Xsa(i)の上位2ビットから5ビットから作った4ビットのデータとする。これは、Sボックスのアドレスの計算方法に由来している。そして、図26の行番号と列番号をそれぞれkとlとすると、それぞれにXsa1とXsa2を排他的論理和を行う(2412)。新しくできた行番号と列番号をk2とl2とすると、i番目の変形SボックステーブルS(i)のk2行l2列にデータd2を格納する(2413)。この処理の例を図27に示す。図27は、図26の行と列に対して撹乱用データとして“2”と“9”を選んで作成したものである。わかりやすいように、行と列のデータの位置はそのままにして行と列の番号だけを変更している。図25で、3行1列のデータ12(2504)は、図27では、1行8列に移り、値が11に変形されている。この例では、データの撹乱用データは“7”であり、アドレス用の撹乱データは行が“2”であり、列が“9”である。このようにして8つのSボックスを変形する。本実施例では、この処理は、DESの最初に行っておく。変形したSボックステーブルは、DESの16段で使用する
【0096】
Sボックスの処理が終了すると、処理データは、32ビットのSoutputX3となり、撹乱用データは32ビットのX3となる。これが、f関数の最後の処理である転置P処理(1005)の入力となる。転置P処理を図19を用いて説明する。Sボックスの出力であるSinputX3を転置Pし、SinputX3Pを生成する(1902)。SinputX3の撹乱用データX3を転置Pし、X3Pを生成する(1903)。転地Pに使用するテーブルは図29の通りである。このテーブルの使い方もIP処理のテーブルと同じである。
【0097】
f関数の処理が終わると、転置P処理と前段の結果のXORを行う(909とか914)である。これは、まず、Sボックスの結果を転置PしたSinputX3Pと前段の結果をXORする(2002)。そして、X3Pと前段の撹乱用データXをXORする(2003)。このXORの処理は、選択的転置E処理結果と暗号鍵のXOR処理(1701)と同じである。
【0098】
DESでは、最後にIP-1処理(915)を行う。この処理を図21に示す。IP-1処理は、IP処理と似たようなビットの並びの入れ替え処理であり、IPテーブルの代わりにIP-1テーブルを使用する(2102)。これまでの処理結果をIP-1処理し、同様に撹乱用データXをIP-1処理する(2103)。
【0099】
最後に、正しい処理結果に戻すために、逆変形処理を行う(916)。逆変形処理を図22に示す。IP-1処理結果をIP-1処理した撹乱用データXでXORすることにより、正しい結果を求める。ここで、初めて、変形されていない正しい処理結果が得られる。
【0100】
これまで処理されるデータの隠蔽について述べてきたが、撹乱用データも隠蔽する必要がある場合がある。基本的考え方は、撹乱用データを撹乱用の撹乱用データXRと排他的論理和を取り、変形することである。ただし、XRは、固定にしておき、あらかじめ、ビット位置の入れ替えなどを計算し逆変形のためのXRoを求めておく。そして、撹乱用データが必要になったときに、XRoを使って、元の撹乱用データを求めることにより、撹乱用データの変形と逆変形の実施と効率化を図る。まず、暗号鍵用の撹乱用データを例にして説明する。図30の処理は、暗号鍵用の撹乱用データを撹乱用の撹乱用データXRで排他的論理和をとる変形操作である。変形処理b(3601)で撹乱用データX2を生成した後に、図30の撹乱用データの変形処理を行う。暗号鍵用の撹乱用データX2はPC―1処理やLS処理、PC-2処理を受ける。これらは、あらかじめ、決まったビットの位置の入れ替えであるので、前もって決まっている値XRに対して、PC-2処理まで実行したときの撹乱用データXRoを求めておき記録しておく(3102から3105)。PC-2処理した後に、1403で生成したPC-1及びLS、PC-2処理済み撹乱用データX2PC1LSPC2に記録しておいた撹乱用データXRoをXORして(3202)、本来のPC-1及びLS、PC-2処理済み撹乱用データX2PC1LSPC2を求めることができる。このようにすることにより、撹乱用データも隠蔽することができる。ここで、撹乱用の撹乱用データXRとその処理済撹乱h尿データXRoは、同じデータを使ってもよい。
【0101】
DESでの実施例は、暗号化であるが、DESのアルゴリズムは、復号化でもほとんど同じであるため、本実施例はほとんど変更しないで適用できる。また、DES以外の暗号アルゴリズムも、転置処理や換字処理、剰余演算を多く使っているため、本発明を適用し、データを変形し、電流波形から本来のデータを推定することを困難にすることができる。
【0102】
【発明の効果】
本発明によれば、ICカードチップでの処理データを変形することにより、消費電流の波形から、処理や暗号鍵の推測を困難になる。
【図面の簡単な説明】
【図1】 ICカードのハードウェア構成。
【図2】 ICカード用チップ内のハードウェア構成。
【図3】消費電流の波形。
【図4】一つの撹乱用データを使ったデータ変形の手順。
【図5】入れ子で二つの撹乱用データを使ったデータ変形の手順。
【図6】連続で二つの撹乱用データを使ったデータ変形の手順。
【図7】撹乱用データのデータ処理をあらかじめ計算しておくデータ変形の手順。
【図8】二つの撹乱用データの逆変形を統合したデータ変形の手順。
【図9】 DESの全体処理の流れ。
【図10】 DESのf関数の処理の流れ。
【図11】変形処理a。
【図12】 IP処理。
【図13】 PC-1処理。
【図14】 PC-2処理。
【図15】LS処理。
【図16】選択的転置E処理。
【図17】選択的転置E処理結果と暗号鍵のXOR処理。
【図18】Sボックス処理。
【図19】転置P処理。
【図20】転置P処理と前段の結果のXOR処理。
【図21】 IP-1処理。
【図22】逆変形処理。
【図23】変形Sボックスのテーブルの作成。
【図24】 i番目の変形Sボックステーブル作成ルーチン。
【図25】1番目のSボックステーブル。
【図26】1番目のSボックステーブルのデータを変形したテーブル。
【図27】1番目のSボックステーブルの配置を変形したテーブル。
【図28】選択的転置Eテーブル。
【図29】転置Pテーブル。
【図30】撹乱用データの暗号化処理。
【図31】撹乱用データの暗号化用データの変形計算処理。
【図32】撹乱用データの復号化処理
【図33】オリジナルテーブルの例。
【図34】図33の内容を変形したテーブル。
【図35】図34のテーブルの配置を変形したテーブル。
【図36】変形処理b。
【図37】 IP転置テーブル。
【図38】 PC-1選択的転置テーブル。

Claims (2)

  1. データを演算する演算装置と、
    データ及びプログラムを記憶する記憶装置と、
    上記演算装置が上記記憶装置にアクセスするためのデータバスとを有し、
    上記演算装置が、上記プログラムを実行することにより、
    Nの整数倍の値である攪乱用データを生成する攪乱用データ生成処理と、
    入力データと上記攪乱用データとの加減算の結果を変形データとして出力するデータ変形処理と、
    上記変形データに法Nの加減剰余演算を行い、処理結果である処理済データを出力するデータ逆変形処理と、
    を行うことを特徴とする情報処理装置。
  2. データを演算する演算装置と、
    データ及びプログラムを記憶する記憶装置と、
    上記演算装置が上記記憶装置にアクセスするためのデータバスとを有し、
    上記演算装置が、上記プログラムを実行することにより、
    Nの整数倍へ1を加算した値である攪乱用データを生成する攪乱用データ生成処理と、
    入力データと上記攪乱用データとの乗算の結果を変形データとして出力するデータ変形処理と、
    上記変形データに法Nの乗算剰余演算を行い、処理結果である処理済データを出力するデータ逆変形処理と、
    を行うことを特徴とする情報処理装置。
JP35415698A 1998-12-14 1998-12-14 情報処理装置、耐タンパ処理装置 Expired - Fee Related JP4317607B2 (ja)

Priority Applications (9)

Application Number Priority Date Filing Date Title
JP35415698A JP4317607B2 (ja) 1998-12-14 1998-12-14 情報処理装置、耐タンパ処理装置
US09/458,018 US6631471B1 (en) 1998-12-14 1999-12-10 Information processing equipment
TW088121816A TW517189B (en) 1998-12-14 1999-12-13 Information management device
KR1019990057028A KR100726903B1 (ko) 1998-12-14 1999-12-13 정보 처리 장치
DE69906022T DE69906022T2 (de) 1998-12-14 1999-12-14 Datenverarbeitungsanlage
CNB991267079A CN1200392C (zh) 1998-12-14 1999-12-14 信息处理方法
EP99124934A EP1011081B1 (en) 1998-12-14 1999-12-14 Information processing equipment
US09/528,995 US6615354B1 (en) 1998-12-14 2000-03-20 Information processing equipment
KR1020060076642A KR100674550B1 (ko) 1998-12-14 2006-08-14 정보 처리 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP35415698A JP4317607B2 (ja) 1998-12-14 1998-12-14 情報処理装置、耐タンパ処理装置

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2003320599A Division JP4003723B2 (ja) 2003-09-12 2003-09-12 情報処理装置、耐タンパ処理装置
JP2003320601A Division JP2004078976A (ja) 2003-09-12 2003-09-12 情報処理装置、耐タンパ処理装置

Publications (3)

Publication Number Publication Date
JP2000182012A JP2000182012A (ja) 2000-06-30
JP2000182012A5 JP2000182012A5 (ja) 2004-09-30
JP4317607B2 true JP4317607B2 (ja) 2009-08-19

Family

ID=18435672

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35415698A Expired - Fee Related JP4317607B2 (ja) 1998-12-14 1998-12-14 情報処理装置、耐タンパ処理装置

Country Status (7)

Country Link
US (2) US6631471B1 (ja)
EP (1) EP1011081B1 (ja)
JP (1) JP4317607B2 (ja)
KR (2) KR100726903B1 (ja)
CN (1) CN1200392C (ja)
DE (1) DE69906022T2 (ja)
TW (1) TW517189B (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1174347C (zh) * 1998-05-18 2004-11-03 德国捷德有限公司 保护存取的数据载体
FR2789776B1 (fr) * 1999-02-17 2001-04-06 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete
FR2799851B1 (fr) * 1999-10-14 2002-01-25 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa
DE19963407A1 (de) * 1999-12-28 2001-07-12 Giesecke & Devrient Gmbh Tragbarer Datenträger mit Zugriffsschutz durch Nachrichtenverfremdung
DE19963408A1 (de) * 1999-12-28 2001-08-30 Giesecke & Devrient Gmbh Tragbarer Datenträger mit Zugriffsschutz durch Schlüsselteilung
FR2808360B1 (fr) * 2000-04-28 2002-06-28 Gemplus Card Int Procede de contre mesure dans un microcircuit mettant en oeuvre le procede et carte a puce comportant ledit microcircuit
ATE294414T1 (de) * 2000-05-22 2005-05-15 Infineon Technologies Ag Sicherheits-datenverarbeitungseinheit sowie dazugehöriges verfahren
FR2810480B1 (fr) * 2000-06-20 2002-11-15 Gemplus Card Int Traitement de donnees avec une cle
US20020021801A1 (en) * 2000-07-13 2002-02-21 Takeshi Shimoyama Computing apparatus using an SPN structure in an F function and a computation method thereof
JP2002247025A (ja) * 2001-02-22 2002-08-30 Hitachi Ltd 情報処理装置
US7376235B2 (en) * 2002-04-30 2008-05-20 Microsoft Corporation Methods and systems for frustrating statistical attacks by injecting pseudo data into a data system
US7555122B2 (en) * 2002-12-04 2009-06-30 Wired Communications LLC Method for elliptic curve point multiplication
JP4626148B2 (ja) * 2004-01-07 2011-02-02 株式会社日立製作所 復号または署名作成におけるべき乗剰余算の計算方法
KR20060081847A (ko) * 2005-01-10 2006-07-13 삼성전자주식회사 비밀키를 보호하는 스마트 카드 및 그것의 방법
TWI290426B (en) * 2005-02-03 2007-11-21 Sanyo Electric Co Encryption processing circuit
EP1840732A1 (en) * 2006-03-31 2007-10-03 Axalto SA Protection against side channel attacks
JP4960044B2 (ja) * 2006-09-01 2012-06-27 株式会社東芝 暗号処理回路及びicカード
JP5050454B2 (ja) * 2006-09-01 2012-10-17 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US7607351B2 (en) * 2007-06-26 2009-10-27 General Electric Company Acoustic impact detection and monitoring system
US9742555B2 (en) * 2008-09-25 2017-08-22 Nokia Technologies Oy Encryption/identification using array of resonators at transmitter and receiver
EP2406916A1 (en) 2009-03-10 2012-01-18 Irdeto Corporate B.V. White-box cryptographic system with input dependent encodings
JP5198526B2 (ja) 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置
US8334705B1 (en) 2011-10-27 2012-12-18 Certicom Corp. Analog circuitry to conceal activity of logic circuitry
US8635467B2 (en) 2011-10-27 2014-01-21 Certicom Corp. Integrated circuit with logic circuitry and multiple concealing circuits
KR101589038B1 (ko) * 2014-03-14 2016-01-27 국방과학연구소 시계열 데이터베이스의 프라이버시 보호에서 상관 관계 보존을 위한 노이즈 생성 방법 및 장치
TWI591533B (zh) 2016-11-25 2017-07-11 慧榮科技股份有限公司 可用於資料儲存裝置之資料儲存方法與資料回復程序、以及採用這些方法的資料儲存裝置
CN112597071B (zh) * 2020-12-09 2024-03-26 北京地平线机器人技术研发有限公司 数据存储方法、获取方法、装置、电子设备以及介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3798360A (en) * 1971-06-30 1974-03-19 Ibm Step code ciphering system
FR2590284B1 (fr) * 1985-11-20 1996-07-12 Guilhem Christian Procede de plissage d'une piece souple, application a l'habillage d'objets, moyens de mise en oeuvre et produits obtenus
DE3621241C1 (de) * 1986-06-25 1987-06-25 Freudenberg Carl Fa Verfahren zur Herstellung eines Dichtringes mit einer Dichtlippe
US5341423A (en) * 1987-02-06 1994-08-23 General Electric Company Masked data transmission system
FR2638869B1 (fr) * 1988-11-10 1990-12-21 Sgs Thomson Microelectronics Dispositif de securite contre la detection non autorisee de donnees protegees
CA2037857C (en) 1990-03-20 2001-01-16 Roy Allen Griffin, Iii Prevention of determination of time of execution of predetermined data processing routine in relation to occurrence of prior observable external event
JPH0433020A (ja) * 1990-05-24 1992-02-04 Nec Corp 機密保持機能を備えた半導体集積回路
FR2728980B1 (fr) 1994-12-30 1997-01-31 Thomson Csf Dispositif de securisation de systemes d'information organises autour de microprocesseurs
DE19505097C1 (de) * 1995-02-15 1996-06-05 Siemens Ag Verschlüsselungsvorrichtung
US5727062A (en) * 1995-07-06 1998-03-10 Ritter; Terry F. Variable size block ciphers
US5724428A (en) * 1995-11-01 1998-03-03 Rsa Data Security, Inc. Block encryption algorithm with data-dependent rotations
FR2745924B1 (fr) 1996-03-07 1998-12-11 Bull Cp8 Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre
US5745577A (en) * 1996-07-25 1998-04-28 Northern Telecom Limited Symmetric cryptographic system for data encryption
US7587044B2 (en) * 1998-01-02 2009-09-08 Cryptography Research, Inc. Differential power analysis method and apparatus
ATE429748T1 (de) * 1998-01-02 2009-05-15 Cryptography Res Inc Leckresistentes kryptographisches verfahren und vorrichtung
US6185304B1 (en) * 1998-02-23 2001-02-06 International Business Machines Corporation Method and apparatus for a symmetric block cipher using multiple stages
JP2002519722A (ja) * 1998-06-03 2002-07-02 クリプターグラフィー リサーチ インコーポレイテッド スマートカードおよび他の暗号システム用の、漏洩を最小に抑える、改良desおよび他の暗号プロセス
JP3600454B2 (ja) * 1998-08-20 2004-12-15 株式会社東芝 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
JP2003524916A (ja) * 1998-09-30 2003-08-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 暗号処理を実行するための符号化方法
US6408075B1 (en) * 1998-11-30 2002-06-18 Hitachi, Ltd. Information processing equipment and IC card
JP2001024414A (ja) * 1999-07-09 2001-01-26 Asahi Glass Co Ltd 自動車用ガラスアンテナ
JP2001244414A (ja) * 2000-02-29 2001-09-07 Nippon Telegr & Teleph Corp <Ntt> 半導体集積回路

Also Published As

Publication number Publication date
KR100726903B1 (ko) 2007-06-11
KR100674550B1 (ko) 2007-01-29
DE69906022D1 (de) 2003-04-24
US6615354B1 (en) 2003-09-02
CN1200392C (zh) 2005-05-04
EP1011081B1 (en) 2003-03-19
KR20060105691A (ko) 2006-10-11
KR20000052458A (ko) 2000-08-25
US6631471B1 (en) 2003-10-07
CN1258057A (zh) 2000-06-28
JP2000182012A (ja) 2000-06-30
TW517189B (en) 2003-01-11
DE69906022T2 (de) 2004-01-08
EP1011081A1 (en) 2000-06-21

Similar Documents

Publication Publication Date Title
JP4317607B2 (ja) 情報処理装置、耐タンパ処理装置
KR100693239B1 (ko) 정보 처리 장치, ic 카드
US6408075B1 (en) Information processing equipment and IC card
JP3904432B2 (ja) 情報処理装置
CN101006677B (zh) 用于实施加密运算的方法和装置
JP4199937B2 (ja) 耐タンパー暗号処理方法
JP2001268072A (ja) 情報処理装置、情報処理方法、及びカード部材
CN106487497A (zh) 对rijndael算法的dpa保护
JP2008233683A (ja) 暗号処理装置及びプログラム
US8321691B2 (en) EMA protection of a calculation by an electronic circuit
Fan et al. Lightweight implementation of Hummingbird cryptographic algorithm on 4-bit microcontrollers
JP3733027B2 (ja) 秘密鍵式暗号化アルゴリズムを用いる電子構成部品内の対抗措置方法
EP1244077B1 (en) Tamper resistant device
CN100393029C (zh) 在使用密钥密码学算法的电子元件中的防范方法
JP4153665B2 (ja) 同一の秘密鍵の暗号アルゴリズムを使用して1つまたは複数の電子装置を保護する方法、当該方法の使用および当該電子装置
JP2004126841A (ja) プログラム実装方法
JP4003723B2 (ja) 情報処理装置、耐タンパ処理装置
KR101203474B1 (ko) 암호화 프로세서를 갖는 단위 전자장치의 보안화 방법
JP2004078976A (ja) 情報処理装置、耐タンパ処理装置
JP3945497B2 (ja) 情報処理装置、icカード
JP4634788B2 (ja) 暗号演算回路と、該暗号演算回路を有する情報処理装置及びicカード
JP2006136032A (ja) 情報処理装置
JP2003005635A (ja) 暗号化装置および方法、ならびに復号化装置および方法

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060718

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061010

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20061013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070514

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20070720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090410

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090525

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120529

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120529

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130529

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130529

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees