JP3926532B2 - 情報処理装置、情報処理方法、及びカード部材 - Google Patents
情報処理装置、情報処理方法、及びカード部材 Download PDFInfo
- Publication number
- JP3926532B2 JP3926532B2 JP2000079305A JP2000079305A JP3926532B2 JP 3926532 B2 JP3926532 B2 JP 3926532B2 JP 2000079305 A JP2000079305 A JP 2000079305A JP 2000079305 A JP2000079305 A JP 2000079305A JP 3926532 B2 JP3926532 B2 JP 3926532B2
- Authority
- JP
- Japan
- Prior art keywords
- calculation
- mod
- signal
- processing
- value
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record 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/067—Record 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/07—Record 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
- H04L9/3073—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7252—Randomisation as countermeasure against side channel attacks of operation order, e.g. starting to treat the exponent at a random place, or in a randomly chosen direction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/723—Modular exponentiation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/127—Trusted platform modules [TPM]
Description
【発明の属する技術分野】
本願発明は、高いセキュリティを持つ耐タンパ−情報処理装置に関するものである。 本願発明は、わけてもICカ−ドなどカード部材に適用して極めて効果的である。
【0002】
【従来の技術】
ICカ−ドは、勝手に書き換えることが許されないような個人情報の保持や、秘密情報である暗号鍵を用いたデ−タの暗号化や、或いは暗号文の復号化を行う装置である。ICカ−ド自体は電源を持っておらず、ICカ−ド用のリ−ダライタに差し込まれると、電源の供給を受け、動作可能となる。ICカードは動作可能になると、リ−ダライタから送信されるコマンドを受信し、そのコマンドに従って、デ−タの転送等の処理を行う。
【0003】
ICカ−ドの基本概念は、図1に示すように、カ−ド101の上に、ICカ−ド用チップ102を搭載したものである。図に示すように、一般にICカ−ドは、所定位置に、供給電圧端子Vcc、グランド端子GND、リセット端子RST、入出力端子I/O、クロック端子CLK及び、を有する。この端子の位置は、ISO7816の規格に定められている。これらの諸端子を通して、リ−ダ−ライタから電源の供給やリ−ダライタとのデ−タの通信を行う。こうしたICカ−ドを用いた通信に関しては、例えばW.Rankl And Effing : SMARTCARD HANDBOOK、 John Wiley & Sonss、 1997、PP.41などに見られる。
【0004】
ICカ−ドに搭載される半導体チップの構成は、基本的には通常のマイクロコンピュ−タと同じ構成である。図2はICカ−ドに搭載される半導体チップの基本的構成を示すブロック図である。図2に見られるように、カード部材用の半導体チップは、中央処理装置(CPU)201、記憶装置204、入出力(I/O)ポ−ト207、コ・プロセッサ202を有する。システムによってはコ・プロセッサはない場合もある。CPU201は、論理演算や算術演算などを行う装置であり、記憶装置204は、プログラムやデ−タを格納する装置である。入出力ポ−トは、リ−ダライタと通信を行う装置である。コ・プロセッサは、暗号処理そのもの、または、暗号処理に必要な演算を高速に行う装置である。これには、例えば、RSA暗号の剰余演算を行う為の特別な演算装置や、DES暗号のラウンド処理を行う暗号装置などがある。ICカ−ド用プロセッサの中には、コ・プロセッサを持たないものも多くある。デ−タバス203は、各装置を接続するバスである。
【0005】
記憶装置204は、ROM(Read Only Memory)やRAM(Randum Access Memory)、EEPROM(Electric Erasable Programable Read Only Memory)などを有する。ROMは、記憶情報を変更できないメモリであり、主にプログラムを格納するメモリである。RAMは自由に書き換えができるメモリであるが、電源の供給が中断されると、記憶している内容は消滅する。ICカ−ドがリ−ダライタから抜かれると電源の供給が中断されるため、RAMの内容は、保持されなくなる。EEPROMは、電源の供給が中断されてもその内容を保持することができるメモリである。このEEPROMは記憶情報を書き換える必要があり、ICカ−ドがリ−ダライタから抜かれても、保持が可能なデ−タを格納するために使われる。例えば、プリペイドカ−ドでのプリペイドの度数などは、使用するたびに書き換えられ、かつリ−ダライタか抜かれてもデ−タを保持する必要があるため、EEPROMに保持される。
【0006】
【発明が解決しようとしている課題】
本願発明は、高いセキュリティを持つカ−ド部材などの耐タンパ−情報処理装置を提供するものである。
【0007】
本願発明の技術的な課題は、カ−ド部材、例えばICカ−ド用チップでのデ−タ処理と消費電流との関連性を減らすことである。消費電流とチップの処理との関連性が減れば、観測した消費電流の波形からICカ−ド用チップ内での処理や暗号鍵を推測することが困難になる。即ち、本願発明は、カード部材等に高いセキュリティを持たせんとするものである。
【0008】
ICカ−ドは、プログラムや重要な情報がICカ−ド用チップの中に密閉されているため、重要な情報を格納したり、カ−ドの中で暗号処理を行うために用いられる。従来、ICカ−ドでの暗号を解読する難しさは、暗号アルゴリズムの解読の困難さと同じと考えられていた。しかし、ICカ−ドが暗号処理を行っている時の消費電流を観測し、解析することにより、暗号アルゴリズムの解読より容易に暗号処理の内容や暗号鍵が推定される可能性が示唆されている。消費電流は、リ−ダライタから供給されている電流を測定することにより観測することができ、この攻撃法の詳細は、例えば、John Wiley & Sons社、W. Rankle & W. Fffing著 「SMART CARD HANDBOOK」の8.5.1.1 Passive Protective Mechanisms(263ペ−ジ)にこのような危険性が記載されている。それは次のような理由による。 ICカ−ド用チップを構成しているCMOSは、出力状態が1から0あるいは0から1に変わった時に電流を消費する。特に、デ−タバス203においては、バスドライバ−の電流や、配線及び、配線に接続されているトランジスタの静電容量のため、バスの値が1から0あるいは0から1に変わると、大きな電流が流れる。そのため、消費電流を観測すれば、ICカ−ド用チップの中で、何が動作しているか分かる可能性がある。
【0009】
図3は、ICカ−ド用チップの1サイクルでの消費電流の波形を示したものである。処理しているデ−タに依存して、電流波形が301や302のように異なる。このような差は、バス203を流れるデ−タや中央演算装置201で処理しているデ−タに依存して生じる。
【0010】
コ・プロセッサ202は、CPUと並列に、例えば、512ビットの剰余演算を行うことができる。そのため、CPUの消費電流とは異なった消費電流波形の長時間の観測が可能である。その特徴的な波形を観測することにより、コ・プロセッサの動作回数を容易に測定することができる。コ・プロセッサの動作回数が暗号鍵と何らかの関係があるならば、コ・プロセッサの動作回数から暗号鍵を推定できる可能性がある。
【0011】
また、コ・プロセッサでの演算内容が、暗号鍵に依存した偏りがあると、その偏りが消費電流から求められ、暗号鍵が推定される可能性がある。
【0012】
CPUでも同様の事情が存在する。暗号鍵のビット値は決まっている。この為、処理するデ−タを変更して、消費電流を観測することにより、暗号鍵のビット値の影響が観測できる可能性がある。これらの消費電流の波形を統計的に処理することにより、暗号鍵を推定できる可能性がある。
【0013】
【課題を解決するための手段】
本願発明の着眼点は、ICカ−ド用チップでの処理手順をアタッカ−に推定されないように分割することや、ダミ−処理を挿入することである。こうした方法によって、消費電流の波形から、処理や暗号鍵の推測を困難にするものである。
【0014】
ICカ−ドチップに代表される耐タンパ−装置は、プログラムを格納するプログラム格納部、デ−タを保存するデ−タ格納部を持つ記憶装置と、プログラムに従って所定の処理を実行しデ−タ処理を行う中央演算装置(CPU)を有し、プログラムは、CPUに実行の指示を与える処理命令から構成される一つ以上のデ−タ処理手段からなる情報処理装置として捉えることができる。
【0015】
本願発明において、処理しているデ−タとICカ−ド用チップの消費電流の関連性を撹乱する一つの方法は、本来の演算処理に用いるデ−タを直接用いずに、これを分割し、最終的に正しい値が求まるような新たな演算処理を行うことにより、本来の処理がどこで行われているかが一定でなくなる方法である。
【0016】
具体的には、まず、撹乱用のデ−タR1、R2、…、Rnを作成し、該撹乱デ−タを用いて、デ−タD1を分割し、諸デ−タD1[1]、 D1[2]、…、 D1[n]を作成する。
【0017】
撹乱デ−タR1、R2等による分割の方法は、例えば、(1)論理積演算、(2)x[1]=0、x[2]=x―vとなす方法、(3)x[1]=x And R、x[1]=x And ~R(但し、~RはRの反転値である)なす方法などをあげることが出来る。
【0018】
即ち、R1とR2を用いて、D1を、D2[1]= D1[1] And R1、 D2[2]= D1[2] And R2、 … 、 D2[n]= D1[n] And Rn と分割する。但し、nは整数である。この際、D2[1]+D2[2]+…+D2[n]=D1が成り立つ。この他に、通常の和や差などを用いることもできる。これらの値に対して、それぞれ、環上の積を計算し、最後に環上の和をとることによって、正しい値を求める。本来は、分割を行わずに直接D1を用いて処理を行うのであるが、ランダムに分割されたデ−タD2[1]、D2[2]、…、D2[n]を用いているため、観測される電流波形に現れる部分情報からだけでは元のデ−タD1を特定することが困難である。統計処理を行う場合は、ランダムな波形を平均化するのと同じことになり、波形の特徴は消滅するため、さらに効果は顕著である。尚、ここで、前記ランダムな分割は疑似乱数を用いた分割でも良い。
【0019】
デ−タ処理と消費電流の関連性を減らす別の方法は、処理するデ−タの値を、最終的に同一の結果を与える別の処理を与えるように変形することにより、処理途中の消費電流が、デ−タの値が正しい場合のものと異なるようにする方法である。
【0020】
具体的には、まず、撹乱用のランダムなスカラ−デ−タRを作成し、演算結果を不変に保つ特殊な元Vを用いて、本来の元 x を、x + R*V(ここでの演算は通常の和演算と積演算、以下同様)のように変形し、これを指数や、スカラ−として用いることにより、消費電流波形デ−タの観測値の統計処理を撹乱することができる。尚、前記元Vは、積においては1、和においては、0と同じ働きをする元である。例えばRSA暗号では、公開鍵のモジュラスがN=pqの場合、(p−1)(q−1)の倍数、楕円曲線上のベ−スポイントのスカラ−倍においては、ベ−スポイントの位数の倍数が、この元Vである。
【0021】
また、分割後の処理をランダムな順序で行えば、デ−タ処理と消費電流の関連性を見定めることは、より一層困難になる。
【0022】
また、これらを組み合わせることは、さらに、デ−タ処理と消費電流の関連性を減らすために有効である。
【0023】
本発明は、特に、RSA暗号での、乗算剰余演算や、べき乗剰余演算及び、楕円曲線暗号での、定義体上での乗算や、除算、ベ−スポイントのスカラ−倍などの情報隠蔽に利用することができる。乗算剰余演算においては、上述した論理積演算をデ−タ分割に用い、分配法則を用いて最終的に正しい答を得ること、べき乗剰余演算やベ−スポイントのスカラ−倍においては、通常の差を利用して、指数を分割し、分割した指数に対してべき乗剰余演算を行い、最終的にこれらの積をとることによって正しい答を得ることは、有効な処理方法の一つである。尚、前記乗算剰余演算とは素体上での乗算を含むものである。
【0024】
【発明の実施の形態】
本願は多岐にわたる発明の諸形態が考慮されるので、具体的な実施の形態を説明するに先立って、先ず、本願の多岐にわたる発明思想の理解を容易となす為、代表的なRAS暗号化方式を例にとって、本願発明の発明思想の骨子を略述する。次いで、本願発明の主な諸形態の概要を列挙する。これら諸形態の更に詳細な説明は後述される。
【0025】
伝送するデータ(平文)の暗号化の基本は、一般的なRAS暗号化である。
【0026】
即ち、y=Re mod N、ここで、yは暗号文、Rは平文、eは公開鍵(public exponent)、Nは公開鍵(public modulus)である。eに対しては、ex mod Ф(N)=1、であり、Φ(N)=(p−1)(q−1)、オイラー関数である。
【0027】
そして、この暗号文の受け取り側は、次のように復号化する。
【0028】
即ち、R=yx mod N、ここで、yは暗号文、xは秘密鍵(secret exponent)、Nは公開鍵(public modulus)である。ここで、前記秘密鍵はカード部材の内部、即ち、カード部材に搭載されたICチップ内に保持されている。
【0029】
本願発明の基本思想は、情報の送信側が前記平文R、あるいは指数e、あるいはその両者を、一旦分割し、攪乱の計算を行った後、元の平文にもどして、送信用の暗号文yを作成するものである。本願発明はこの平文Rあるいは指数eなる諸データの分割、および攪乱の諸方法を提示するものである。こうして送信された暗号文yは、受信側では送信側で行った演算を同様の演算を行ってもとの平文Rを得ることが出来る。
【0030】
本願発明の骨子をより具体的に例示すれば、大別して、次ぎのように分類することが出来る。
【0031】
次に本願発明の諸形態の概要を列挙する。
【0032】
本願の第1の形態は、信号を入力する手段と、プログラムを格納する格納部と、プログラムに従い所定のデータ処理を行う演算部と、信号を出力する手段と、を少なくとも有し、前記格納部に格納されたプログラムは演算部に実行の指示を与える一つ以上のデ−タ処理命令を有し、前記データを入力する手段より入力された信号をデータ処理するに際し、前記データ処理命令の少なくとも一つが、信号Aとデータ処理における所望計算に用いる信号Bとをもって行うA○B (但し、○は所望の演算を示す。以下同様)の計算を、AをA = A[1] + A[2]+ … +A[n] (但し、nは1以上の整数)を満たすA[1]、 A[2]、…、A[n]と任意に分割し、前記A[1]、A[2]、…、A[n]と前記データ処理における所望計算に用いる信号Bとを用いてB[1]= A[1]○B、 B[2] = A[2]○B、…、B[n] = A[n]○Bをそれぞれ個別に計算した後、この各個別計算結果を用いての和演算、B[1]+B[2]+… +B[n] (但し、nは1以上の整数)として、計算結果を求めるステップを有することを特徴とする情報処理装置である。
【0033】
本願の第2の形態は、信号を入力する手段と、プログラムを格納する格納部と、所定の計算結果を格納する格納手段と、プログラムに従い所定のデータ処理を行う演算部と、信号を出力する手段と、を少なくとも有し、前記格納部に格納されたプログラムは演算部に実行の指示を与える一つ以上のデ−タ処理命令を有し、前記データを入力する手段より入力された信号をデータ処理するに際し、前記データ処理命令の少なくとも一つが、信号Aとデータ処理における所望計算に用いる信号Bとをもって行うA○B (但し、○は所望の演算を示す。以下同様)の計算を、BをB=B[1]+B[2]+…+B[n] (但し、nは整数)を満たすB[1]、B[2]、… B[n]と任意に分割し、前記信号Aと前記B[1]、B[2]、…、B[n]とを用いてA[1] = A○B[1]、 A[2] = A○B[2] 、…、A[n] = A○B[n]をそれぞれ個別に計算した後、この各個別計算結果を用いての和演算、A[1]+A[2]+…+A[n] (但し、nは整数)として、計算結果を求めるステップを有することを特徴とする情報処理装置である。
【0034】
更に、本願発明の別な第3の形態では、前記第1および第2の基本思想を合わせ用いることが出来る。即ち、信号Aと信号BとをもってA○Bの計算を行うに際し、AおよびBの両者を分割、所望の演算を行う。
【0035】
即ち、A○B=(A[1]+A[2]+…+A[m])○(B[1]+B[2]+…+B[n])として計算するものである。この演算は次のようになる。
【0036】
(A[1]+A[2]+…+A[m])○(B[1]+B[2]+…+B[n])
=A[1]○(B[1]+B[2]+…+B[n])
+A[2]○(B[1]+B[2]+…+B[n])
・・・・・・
+A[m]○(B[1]+B[2]+…+B[n])
=A[1]○B[1]+A[1]○B[2]+・・・A[1]○B[n]
+A[2]○B[1]+A[2]○B[2]+・・・A[2]○B[n]
・・・・・・
+A[m]○B[1]+A[m]○B[2]+・・・A[m]○B[n]
従って、この演算は、ΣA[i]○B[j](但し、i=1・・・m、j=1・・・n)の結果となる。この方法は、nあるいはmの値を比較的小さな値とした場合、有利な方法である。それは、信号A及び信号Bを共に分割する為、その演算工程が長くなることが考慮されるからである。勿論、このことはnあるいはm等の具体的値の選択によることは言うまでもない。尚、AあるいはBの双方を分割する場合、i≠1、j≠1の条件となることは言うまでもない。
【0037】
前記第1、第2の形態および第3の形態等において、カード部材を用いた通信では、信号Aは伝達情報、いわゆる平文、信号Bは鍵情報の相当する。以下の諸形態でも特にことわりのない場合、信号A及び信号Bは、各々カード部材における平文、および鍵情報に相当する。
【0038】
前記第1、第2の形態および第3の形態等において、和演算+および積演算○は、代数学の教える所によれば、可換環Sにおける演算が極めて実際的なものである。可換環Sには二つの演算があり、これらが和演算+および積演算○である。更には、前記演算は整数演算が実際的なものである。
【0039】
以下、本例によらず、本願明細書において種々の演算に言及した個所は、数学、なかんずく代数学において用いられている概念、用語を指している。 次には、鍵情報の分割の諸形態である。
【0040】
本願の第4の形態は、信号を入力する手段と、プログラムを格納する格納部と、所定の計算結果を格納する格納手段と、プログラムに従い所定のデータ処理を行う演算部と、信号を出力する手段と、を少なくとも有し、前記格納部に格納されたプログラムは演算部に実行の指示を与える一つ以上のデ−タ処理命令を有し、前記データを入力する手段より入力された信号をデータ処理するに際し、前記データ処理命令の少なくとも一つが、信号Aとデータ処理における所望計算に用いる信号kとをもって行うA^k( 但し、ここで^k =A○A○…○A(k個)とし、○は演算を示す、以下同様)を計算する際に、kをk = k[1] + k[2] + k[3] + … +k[n] を満たすk[1] 、k[2] 、k[3] 、… 、k[n] (但し、nは整数)と任意に分割し、前記信号Aと前記k[1] 、k[2] 、k[3] 、… 、k[n]とを用いてh[1] = A^k[1]、h[2] = A^k[2] 、…、h[n] = A^k[n]をそれぞれ個別に計算した後、この各個別計算の結果を用いての演算、A^k = h[1] ○h[2] ○…○h[n] として計算結果を求めるステップを有することを特徴とする情報処理装置である。
【0041】
本形態における、前記演算○は、代数学の教える所によれば、半群Sにおける演算が実際的なものである。半群では演算は一つである。更には、前記演算は整数演算が実際的なものである。以下、本願明細書において、本例と類似の演算に言及した個所は、代数学的には同様に考察することが出来る。 本願の第5の形態は、信号を入力する手段と、プログラムを格納する格納部と、所定の計算結果を格納する格納手段と、プログラムに従い所定のデータ処理を行う演算部と、信号を出力する手段と、を少なくとも有し、前記格納部に格納されたプログラムは演算部に実行の指示を与える一つ以上のデ−タ処理命令を有し、前記データを入力する手段より入力された信号をデータ処理するに際し、前記データ処理命令の少なくとも一つが、信号Aとデータ処理における所望計算に用いる信号xとをもって行うA^x( 但し、ここでA^x =A○A○…○A(x個)とし、○は演算を示す)を計算する際に、演算A^x に代えて、A^T = eを満たすTを用いて、A^(x+T)を計算するステップを有すること特徴とする情報処理装置である。
【0042】
本形態における、前記演算○は、代数学の教える所によれば、モノイドSにおける演算が実際的なものである。モノイドは単位元eを持つ半群である。更には、前記演算は整数演算が実際的なものである。以下、本願明細書において、本例と類似の演算に言及した個所は、代数学的には同様に考察することが出来る。
【0043】
次に、本願に係わる情報処理方法について言及する。
【0044】
本願の第6の形態は、情報信号を入力する入力手段と、所定演算のプログラムを記憶する記憶手段と、計算結果の出力部とを少なくとも有し、前記入力手段から入力された情報信号Aと、信号Bとをもって行うA○B(但し、○は積演算である)の計算を、前記記憶手段に記憶されたステップに従って、前記情報信号AをA= A[1]+A[2]+ … +A[n] を満たすA[1]、A[2]、…A[n](但し、nは整数)と任意に分割し、前記A[1]、A[2]、… A[n]の各々と前記信号Bとを用いてB[1] = A[1]○B、B[2] =A[2] ○B、…、B[n] = A[n] ○B(但し、nは1以上の整数)をそれぞれ個別に計算した後、A○B = B[1]+B[2]+…+B[n](但し、+は和演算)として、A○Bを求めるステップを有することを特徴とする情報処理方法である。
【0045】
尚、上記信号Bは情報信号Aの変形計算に用いる信号である。
【0046】
本願の第7の形態は、伝達される信号を入力する入力手段と、所定演算のプログラムを記憶する記憶手段と、計算結果の出力部とを少なくとも有し、前記入力手段から入力された情報信号Aと、信号Bとをもって行うA○B (但し、○は積演算である)の計算を、前記記憶手段に記憶されたステップに従って、前記変形計算に用いる信号BをB= B[1] + B[2]+ … +B[n] を満たすB[1]、B[2]、…B[n](但し、nは整数)と任意に分割し、前記情報信号Aと前記B[1]、B[2]、…、B[n]とを用いて
A[1] = A○B[1]、 A[2] = A○B[2]、…、A[n] = A○B[n] (但し、nは整数)をそれぞれ個別に計算した後、A○B = A[1]+A[2]+…+A[n](但し、○は積演算であり、+は和演算)として、A○Bを求めるステップを有することを特徴とする情報処理方法である。
【0047】
本願発明の第8の形態では、前記第6および第7の基本思想を合わせ用いることが出来る。即ち、信号Aと信号BとをもってA○Bの計算を行うに際し、AおよびBの両者を分割、所望の演算を行う。
【0048】
即ち、A○B=(A[1]+A[2]+…+A[n])○(B[1]+B[2]+…+B[n])として計算するものである。この演算は次のようになる。
【0049】
(A[1]+A[2]+…+A[m])○(B[1]+B[2]+…+B[n])
=A[1]○(B[1]+B[2]+…+B[n])
+A[2]○(B[1]+B[2]+…+B[n])
・・・・・・
+A[m]○(B[1]+B[2]+…+B[n])
=A[1]○B[1]+A[1]○B[2]+・・・A[1]○B[n]
+A[2]○B[1]+A[2]○B[2]+・・・A[2]○B[n]
・・・・・・
+A[m]○B[1]+A[m]○B[2]+・・・A[m]○B[n]
従って、この演算は、ΣA[i]○B[j](但し、i=1・・・n、j=1・
・・m)の結果となる。従って、i=1あるいはj=1の場合は、AあるいはBのいずれか一方のみを分割した例に相当することとなる。
【0050】
この方法は、nあるいはmの値を比較的小さな値とした場合、有利な方法である。それは、信号A及び信号Bを共に分割する為、その演算工程が長くなることが考慮されるからである。勿論、このことはnあるいはm等の具体的値の選択によることは言うまでもない。
【0051】
本願の第9の形態は、情報伝達する送信側の情報および信号kを、各々当該情報処理方法にて採用される半群S’におけるの元Aおよびkとなし、このAとkとのA^k( 但し、ここでA^k =A△A△…△A(k個)とし、△は半群S’における演算である) を計算する際に、kをk = k[1] + k[2] + k[3] + … … + k[n] を満たすk[1] 、k[2] 、k[3] 、…、 k[n] (但し、nは1以上の整数)と任意に分割し、前記平文Aと前記k[1] 、k[2] 、k[3] 、… … 、 k[n]とを用いてh[1] = A^k[1]、 h[2] = A^k[2] 、…、 h[n] = A^k[n]をそれぞれ個別に計算した後、A^k = h[1] △h[2] △…△h[n] ( 但し、△は半群S’における演算である)としてA^kを求めるステップを有することを特徴とする情報処理方法である。
【0052】
本願の第10の形態は、情報伝達する送信側の情報および信号kを、各々当該情報処理方法にて採用されるモノイドS″(単位元eを持つ半群)におけるの元Aおよびxとなし、このAとxとのA^x(但し、ここでA^x =A◇A◇…◇A(x個)とし、◇はモノイドS″における演算である) を計算する際に、演算A^x に代えて、A^T = eを満たすTを用いて、A^(x+T)を計算するステップを有すること特徴とする情報処理方法である。
【0053】
本願の第11の形態は、前記S、 S’、あるいはS″が法N(正の整数)に関する剰余類のなす可換環(半群でもある)であり、和演算+が法Nにおける和であり、上記積演算○、演算△、あるいは演算◇(本項で以下、代表して演算○と記す)が、法Nによる乗算剰余演算、A+B = (A + B ) mod N、 A○B = A*B mod Nであることを特徴とする前項1、2、3、および4のいずれかに記載の情報処理方法である。
【0054】
本願の第12の形態は、前記S、 S’、あるいはS″が標数p(素数)の有限体Fq(但し、q=p^n)上の楕円曲線Eに対するモ−デル・ヴェイユ群G(E/Fq)であり、前記演算△あるいは演算◇がG(E/Fq)における加法であることを特徴とする前記形態6あるいは7のいずれかに記載の情報処理方法である。
【0055】
以下に、上述した信号Aないし信号Bの分割の方法の具体的な形態の例に言及する。尚、以下の列挙に際しては、その特徴に対して、情報処理方法および情報処理装置の両者を合わせて示すこととする。それは明細書の記述の簡略化の為である。
【0056】
本願の第13の形態は、前記実施の形態11において、整数 R とそのビット反転値 ~Rを用いて、乗算剰余演算A*B mod N
の際のBの分割を、B[1] = B AND R、 B[2] = B AND ~R、 B[3] = 0、… 、B[n] = 0
と分割することを特徴とする情報処理方法およびこうした特徴を有する情報処理装置である。
【0057】
本願の第14の形態は、前記実施の形態11において、B以下の整数Vを用いて、乗算剰余演算A*B mod Nの際のBの分割を、
B[1] = V、B[2] = B − V、B[3] = 0、… 、B[n] = 0(但し、nは整数)と分割することを特徴とする情報処理方法およびこうした特徴を有する情報処理装置である。
【0058】
本願の第15の形態は、前記実施の形態11において、整数 R とそのビット反転置 ~Rを用いて、乗算剰余演算A^x mod N
の際のxの分割を、x[1] = x AND R、 x[2] = x AND~R、 x[3] = 0、…、x[n] = 0(但し、nは整数)と分割することを特徴とする情報処理方法およびこうした特徴を有する情報処理装置である。
【0059】
本願の第16の形態は、前記実施の形態11において、A^x mod Nの際のxの分割を、x以下の乱数Vを用いて、x[1] = V、x[2] = x −V、 x[3] = 0、…、x[n] = 0(但し、nは整数)と分割することを特徴とする情報処理方法およびこうした特徴を有する情報処理装置である。
【0060】
本願の第17の形態は、前記実施の形態13、14、15、及び16において、整数RまたはVを、処理の度に毎回変化させることを特徴とする情報処理方法および情報処理装置である。即ち、条件判断の後、計算を分岐させて行うに際し、この分岐後の計算に用いる整数RまたはVを毎回変化させるのである。こうして、よりセキュリティを増すことが出来る。
【0061】
本願の第18の形態は、前記実施の形態5において、Sとして、法N(正の整数)に関する剰余類のなす群をとり、演算○として、法Nによる乗算剰余演算としたもの、すなわち、A○B=A*B mod Nと定め、Tとして、オイラ−関数f(N)(1、2、3、…、NのうちNと互いに素となるものの個数を表す関数)の非負整数Sの倍数Sf(N)をとることを特徴とする情報処理方法およびこうした特徴を有する情報処理装置である。
【0062】
本願の第19の形態は、前記実施の形態18において、非負整数Sの値を処理の度に毎回変化させることを特徴とする情報処理方法およびこうした特徴を有する情報処理装置である。即ち、条件判断の後、計算を分岐させて行うに際し、この分岐後の計算に用いる非負整数Sの値を毎回変化させるのである。こうして、よりセキュリティを増すことが出来る。
【0063】
次は、楕円曲線を用いる諸例である。
【0064】
本願の第20の形態は、前記実施の形態12において、整数 R とそのビット反転値 ~Rを用いて、楕円曲線E上の点Pに対し、整数kによるスカラ−倍kPを計算する際の、kを、k = k[1]+k[2]+k[3]+…+k[n]、そしてk[1] = k AND R、 k[2] = k AND ~R、 k[3] = k[4] =…= k[n] = 0と分割することを特徴とする情報処理方法およびこうした特徴を有する情報処理装置である。但し、nは整数である。
【0065】
本願の第21の形態は、前記実施の形態12において、k以下の整数Vを用いて、楕円曲線E上の点Pに対し、整数kによるスカラ−倍kPを計算する際の、kを、
k = k[1]+k[2]+k[3]+…+k[n]、そしてk[1] = V、 k[2] = k−V、k[3]=k[4] =…= k[n]=0(但し、nは1以上の整数)と分割することを特徴とする情報処理方法およびこうした特徴を有する情報処理装置である。
【0066】
本願の第22の形態は、前記実施の形態12において、Sとして、標数p(素数)の有限体Fq(q=p^n)上の楕円曲線Eに対するモ−デル・ヴェイユ群G(E/Fq)をとり、演算○として、G(E/Fq)における加法と定め、E上の点Pの整数k倍点 kP を計算する際に、点Pの位数R(RP=0となる点(0は無限遠点))の整数S倍の値SRPを用いて、kP=(k+SR)Pと計算するとを特徴とする情報処理方法および情報処理装置である。
【0067】
更に、本願発明においては、変形計算の為の諸情報を、この計算の或る条件分岐に従ってなされる各計算処理工程毎に変化させるのが、更に、好ましい形態である。そして、この変化は、各一つの計算処理工程毎、毎回変化させるのが、代表的な形態である。勿論、或処理のみ変化させることも可能である。変形計算の為の諸情報の変化のさせ方は、情報自体を変化させること、あるいは計算の順序を変化させるなどの方法はが考えられる。以下、この形態を示す。
【0068】
本願の第23の形態は、前記形態20、21において、整数RまたはVの値を処理で変化させることを特徴とする情報処理方法およびこうした特徴を有する情報処理装置である。
【0069】
本願の第24の形態は、前記形態23において、整数Sの値を処理で変えることを特徴とする情報処理方法および情報処理装置である。
【0070】
本願の第25の形態は、前記実施の形態1、2、及び3において、Bを分離したB[1]、B[2]、B[3]、…、B[n]の各々の各計算処理工程において、この工程内の諸計算を行う順序を前記各計算処理工程で変えることを特徴とする情報処理方法および情報処理装置である。
【0071】
本願の第26の形態は、前記実施の形態4において、kを分離した k[1].k[2]、k[3]、…、k[n]の処理を行う順序を、各処理毎、即ち、計算工程中の諸計算をその計算工程毎に変えることを特徴とする情報処理方法および情報処理装置である。
【0072】
本願の第27の形態は、前記実施の形態25において、Sとして、法N(正の整数)に関する剰余類のなす可換環(半群でもある)をとり、和演算+を法Nにおける和とし、演算○として、法Nによる乗算剰余演算としたもの、すなわち、A+B = (A + B ) mod N、
A○B = A*B mod Nとすることを特徴とする情報処理方法および情報処理装置である。
【0073】
本願の第27の形態は、前記実施の形態26において、Sとして、法N(正の整数)に関する剰余類のなす可換環(半群でもある)をとり、和演算+を法Nにおける和とし、演算○として、法Nによる乗算剰余演算としたもの、すなわち、A+B = (A + B ) mod N、
A○B = A*B mod Nとする
ことを特徴とする情報処理方法および情報処理装置である。
【0074】
本願の第28の形態は、前記実施の形態26において、Sとして、標数P(素数)の有限体Fq(q=P^n)上の楕円曲線Eに対するモ−デル・ヴェイユ群G(E/Fq)をとり、演算○として、G(E/Fq)における加法を用いることを特徴とする情報処理方法および情報処理装置である。
【0075】
本願の情報処理装置及び情報処理方法の代表的な適用はICカードに代表されるカード部材である。上記の諸形態を適用することが出来る。
【0076】
以上、本願の主な諸形態の概要を説明したが、次に、カード部材の具体的な適用方法の例について概説する。
【0077】
上述した情報処理装置を内臓する半導体集積回路装置を、カード部材に適用して、高セキュリティのカード部材を提供することが出来る。カード部材としては接触型と非接触型があるが、本願発明は、勿論いずれの方式にも当然適用することが出来る。
【0078】
そして、前記チップはこれらの信号を外部から、即ち、例えば端末機から、供給されることによって稼動する。
【0079】
尚、前記端末機自体は基本的に通例のカード・システムのものを用いて十分である。以下、簡単にカード・システムの動作を例示する。図21はこのカード・システムの概念を例示する。
【0080】
ICカード52の中にはチップ51があって、リーダライタ53とデータのやりとりを行う例を示している。リーダライタのなかには、コントロールプロセッサ54およびデータベースとなる磁気ディスク55などが存在する。まず、リーダライタ53からICカード52に対して、IDの問い合わせが行われる。まず、リーダライタ53からICカード52に対して、ID(IDENTIFICATION)、例えば、当該カードの管理責任者を特定する為の氏名コードまたは認識コードの問い合わせが行われる。図21にはこの状態を(1)として示した。この氏名コードまたは認識コードはICチップの中にある所定のエリアに格納されている。 ICカードは氏名コードをリーダライタに返答する。図21にはこの状態を(2)として示した。リーダライタはデータベース53にある氏名コードを検索して、データベース上の鍵コードを獲得する。
【0081】
リーダライタは乱数をICカードに送る。この乱数は、例えばリーダライタ内のMPUで回路的に発生される。LAN等でサーバ側から乱数を供給することも出来る。ICカードは、乱数を受け取った時点で、コマンドによってリーダライタから指示を受け、乱数を鍵コード発生部に従って発生した鍵コードによって暗号化した乱数を作成する。
【0082】
一方、リーダライタはICカードと同様にデータベースから得た鍵コードを使用して、ICカードへ送ったのと同じ乱数を暗号化する。これによって得られた暗号化された乱数の結果と先のICカードからの暗号化された乱数を照合して、一致がとれれば、ICカードとリーダライタの相互認識が完了して、ICカードの正当性が認められる。
【0083】
このようにして、本システムでは、この鍵コードがリーダライタに伝えられるとリーダライタは磁気ディスクの中のIDを検索して、正しく登録された鍵コードによるIDであると認識する。
【0084】
生成されたICカードの鍵コード(IDコード)は、氏名コードまたは認識コードとともにデータベースに格納される。
【0085】
生成された鍵コードは電子マネーとしてICカードが使用される時の本人認証や偽造チェックやICカードとリーダライタの相互認証に使用することが出来る。
【0086】
上記システムは、例えば、一般商店での支払や、チケットの購入、定期券での改札、免許証のチェック、テレフォンカードによる電話等々多くの分野に応用することが出来る。
【0087】
以上のようなカード部材ならびにカード・システムは、以下に述べる発明の諸形態を用いて実施可能なことは言うまでもない。
【0088】
次に、本願発明の実施の諸形態を具体的に説明する。
【0089】
本実施例では、公開鍵暗号(非対称鍵暗号)の代表例である、RSA暗号、楕円曲線暗号を例にとる。これは、他の暗号にも用いることができる。
【0090】
尚、RSA暗号一般については、岡本栄司著「暗号理論入門」(共立出版)や、A.J.Menezes、 P.C. Van Oorschot、S. A. Vanstone著、HandBook of Applied Cryptography、(CRC−PRESS)などに詳しく記載されている。楕円曲線暗号一般については、考案者の一人が書いたN.コブリツ著(櫻井幸一訳)「数論アルゴリズムと楕円暗号理論入門」(シュプリンガ−フェアラ−ク東京)、楕円曲線上の演算については、I.H.シルバ−マン・J.テイト著「楕円曲線論入門」(シュプリンガ−フェアラ−ク東京)、又、群、環、体等の代数系一般については、松坂和夫著「代数系入門」(岩波書店)に詳しい説明がある。
【0091】
一般に公開鍵暗号(非対称鍵暗号)においては、秘密鍵情報が、公開鍵の中に含まれているが、公開鍵から秘密鍵情報を取り出すことが、計算時間の点で著しく現実性を欠くということ(計算量的安全性)を根拠にして暗号が構成されている。計算量的安全性を持つ問題の代表的なものとして、素因数分解と、群上の離散対数問題が挙げられる。前者を利用したものがRSA暗号であり、後者を楕円曲線上の群に適用して利用しているものが、楕円曲線暗号である。
【0092】
<RAS暗号への適用例>
先ず、簡単に基本となる通例のRSA暗号を説明する。
【0093】
RSA暗号では、大きな素数、例えば512ビットの2つの素数p、qの積 n = pq と nと互いに素な数eをとり、これを公開鍵として公開鍵簿に登録する。ICカ−ドでは、nと互いに素な前述の数 eは、3や、65537が用いられることが多い。
【0094】
デ−タ(平文)の暗号化は次の通りに行われる。
【0095】
前記公開鍵の持ち主Aに、送信者Bは、1以上N−1以下の数で表現されたデ−タ(平文) y を、
R = y^e mod n
として暗号化して、この暗号文R送信する。ここで、y^eはyのe乗を表す記号とする。
【0096】
この暗号文Rを受け取ったAは、xe mod (p−1)(q−1) = 1となる秘密鍵 x を用いて
R^x mod n
を計算する。尚、秘密鍵 xは、一般には、カード部材、即ち、カード部材に搭載された半導体チップに記憶、内蔵されている。
【0097】
ここで、(p−1)(q−1)は、Nのオイラ−関数の値f(N)である。これは、Nと互いに素な自然数の個数に等しい。オイラ−の定理によれば、
R^((p−1)(q−1)) mod n = 1
が成りたつ。一方で、xe = 1 + k(p−1)(q−1)(kは整数)と書くことができるので、
が成り立つ。
【0098】
従って、R^x mod nを計算することで、公開鍵の持ち主Aは、送信者Bの平文yを復号することができる。
【0099】
この際、秘密鍵xを計算するのに、nの素因数p、qが用いられており、現在のところ、素因数分解を介さないで、xを計算する方法は知られていない。従って、大きな素数の積を因数分解することは、現実的でない時間が必要である。この因数分解は事実上不可能といって良い。この為、前述の二つの素数の積nが公開されても、公開鍵の持ち主Aの秘密鍵は安全である。
【0100】
RSA暗号の計算で用いられている演算は、nを法とする整数の剰余環Zn上の演算とみなすことができる。
【0101】
RSA暗号の暗号化/復号化操作で用いられる演算は、べき乗剰余計算と呼ばれる。図4に、このべき乗剰余計算の計算機上で、通常、実装されるアルゴリズムの例を示す。図4はべき乗剰余計算のフロ−チャ−トである。このy^x mod nの計算手順の骨子は次ぎの通りである。尚、以下、フロ−チャ−トでの各手順を< >で囲まれた符号にて示す。
【0102】
本例の暗号化の計算がスタートされる。<0401>
(1)秘密鍵 x のビットを、所望ビット毎、例えば2ビット毎に区切り、上位から読んでいき、それが、00、01、10、11のいずれであるかに応じて、A[0] = 1、 A[1] = y、 A[2] = y^2 mod n、 A[3] = y^3 mod n を対応させる。
【0103】
(2)これらの乗算剰余計算を行う。
【0104】
前述のように秘密鍵 x のビットを2ビット毎に区切ることは説明の便宜のための一例である。実際には秘密鍵 x のビットを1ビット、3ビット、4ビットをまとめて計算することもある。その際も計算手法の基本的な考え方は全く同じである。xはjビット毎に区切る場合は、2^j乗の計算を行うこととなる。このxをjビット毎に区切ることをwindowの幅を通称されている。
【0105】
以下に示す本願発明の諸実施形態においても、特にことわりはしないが、この計算方法についての考え方は変わらない。
【0106】
この計算の際、四乗の計算<0402>は、xのビットと無関係に行われる。一方、その次に行われる乗算剰余計算においては、xのビット(この例では、2ビット分を指す)値に応じて、条件分岐<0403>、<0404>、<0405>、<0406>が行われる。そして、それぞれのビットに応じて、<0407>、<0408>、<0409>、<0410>の乗算剰余計算が行われる。この乗算剰余計算の際、各ビットによって異なるのは、テ−ブル<0401>の値、即ち、A[0]、A[1]、A[2]、A[3]である。
【0107】
一般に乗算剰余計算は処理が重く、その際、発生する電流は非常に大きい。特に、多桁計算の際に、A[0]、A[1]、A[2]、A[3]のうち、どれが処理されているかがわかることがある。簡単のため、16ビットの計算を考える。例えば、y = 58981、 n = 59989(=239*251)として、A[0]、A[1]、A[2]、A[3]を2進数表現すると、以下のようなビット列となる。
【0108】
A[0] = 0000000000000001
A[1] = 0011001010011000
A[2] = 1011001011001110
A[3] = 1001111110010101
この為、当該ICカ−ドの消費電流を測定すると、各ビット列の違いに対応して、異なる電流波形が生ずる。このような電流波形の違いから、例えば、電流波形パタ−ンが4種類に分類できれば、秘密鍵のビットパタ−ンを見つけることができる。即ち、4種類の電流波形に基づき、その4つの順列のパタ−ン数 4!=24通りを試せば良い。法nのビット数が増えた場合も、事情は同様である。
【0109】
尚、実装面からは、この乗算剰余計算は処理が重いので、多くのICカ−ドでは、内蔵されるCPUではなく、乗算剰余処理専用のコ・プロセッサが用いられることが多い。
【0110】
この攻撃方法は、特にnのビット数が増加したときに、著しい効果を発揮する。例えば、nが2048ビットの場合、現在のところ、事実上因数分解を行うのは不可能である。しかし、オシロスコ−プを用いてICチップの消費電流を見ることができれば、秘密鍵のビットパタ−ンを見つけることができる。例えば、x(2000ビット程度)の値を知るには、次のような手順がある。先ず、2000ビット程度の消費電流の波形の塊(2ビット毎に区切っていれば、約1000個の塊)を4通りに分類する。分類された4通りそれぞれについて、別の計算機を用いて、べき乗剰余計算を実行する。そして、この各べき乗剰余計算の結果をICチップから出力される結果と比較して、その両者が一致しているものを探し出せばよい。この検証は高々24通りにすぎない。従って、デ−タ(平文) y を、R = y^e mod nと暗号化し、且つ秘密鍵 xを用いる方法のみでは、十分、デ−タの解読される可能性を有している。
【0111】
こうした攻撃から秘密鍵を守る為に、本願発明がなされたことは前述した通りである。
【0112】
入力の分割
本願発明の係る入力の分割による方法の第1の例を説明する。
【0113】
第1の例は、次ぎのような入力の分割による方法である。
【0114】
尚、以下に計算のアルゴリズムと共に主要な実装について例示する。実装についてはここに例示した以外の方策があるものもある。本願明細書において、以下に示す諸実施の形態においても、本例に準じて実装の形態を考えれば十分である。
【0115】
秘密鍵を用いた暗号文の交換は、通例の方法による。即ち、暗号を送ってもらうBが、所定の暗号法で鍵を2つ作成する。一つは自分自身Bが保存し、暗号の解読に使用する解読専用の鍵、「秘密鍵」、2つ目は暗号を送ってもらう送信者Aに送る「公開鍵」である。Bは送信者Aに公開鍵を送るか、事前に公開しておく。Bは前記秘密鍵で、送信された暗号の解読を行う。この暗号文の交換法は後述する本願発明の各形態においても同様である。 本例では、例えば、この秘密鍵xは、半導体チップの記憶手段、例えば、記憶部のEEPROMに記憶されている。
【0116】
図5に本例の暗号化、復号化に関するフローチャートを示す。
【0117】
前述の一般的説明で述べたように、送信者Aはデ−タyを、y^e mod n(=R)と暗号化して、受信者Bに送信する。
【0118】
この暗号文Rを受け取った受信者Bは、秘密鍵xを用いてR^x mod n(=y)を計算する。尚、この例での秘密鍵xは、例えばx^e mod (p−1)(q−1)=1を満足するxを採用する。ここで、暗号化と復号化の計算方法は、同様の計算手法によることが理解される。図5にはデータyの暗号化の演算のフローチャートを示す。一方、復号化に当っても、全く同様の手法によって、送信された暗号データRを復号化する。
【0119】
本例の暗号化の計算をスタートする。<0500>
(1)予め知られている秘密鍵xのビットを所望ビット数に応じて区切る。ビット毎区切られた秘密鍵xのビットを、所定の乗算剰余演算によってテ−ブルを作成する。この乗算剰余演算は、例えば、A[0] = 1、 A[1] = y、 A[2]= y^2 mod n、 A[3] = y^3 mod nである。この例は前述したものと同様である。:<0501>
上記の各演算は、ICの中央演算装置(CPU)あるいはコ・プロセッサ等で行われる。この演算結果は、記憶手段、通例、例えばデ−タ格納部のRAMに格納される。これらの格納された諸データは必要に応じて取り出され、諸計算に供される。
【0120】
(2)演算結果Sを1として、計算を初期化(initialization)する。:<0514>
(3)撹乱用の乱数Rを発生する。この場合、乱数は疑似乱数でも良い。尚、このRはnと同程度のビット数を持つようにする。:<0503>
この乱数Rは一般にCPUで作成される。ICの他の特別の領域で作成されるようになされていることもある。この作成された乱数は一般にデ−タ格納部に格納される。作成された乱数を直接当該演算に用いる場合もある。乱数の発生および計算への採用は、こうした演算方式は暗号化において通例用いている方法によって十分である。
【0121】
(4)Sの4乗演算を実施する。即ち、この演算はS=S^4 mod nである。ここでは、秘密鍵xのビットの値には依存せずに行われる。:<0502>(5)ビット毎区切られた秘密鍵xのビットが分岐の条件のいずれでであるかの判断を行う。即ち、xのビット値が00、01、10、あるいは11のいずれであるのかを判断する。:<0504>、<0505>、<0506>、<0507>
(6)撹乱用の乱数Rを用いて、テ−ブル値の変形計算を行う。
【0122】
前述の分岐の条件に応じて、テ−ブル値、A[0]、A[1]、A[2] 、およびA[3]を、各々B[0]、B[1]への変形計算を行う。
【0123】
即ち、
xのビット値が00の場合、その変形計算は、B[0]=A[0] and R、およびB[1]=A[0] and ~Rである。:<0509>
xのビット値が01の場合、その変形計算は、B[0]=A[1] and R、およびB[1]=A[0] and ~Rである。:<0510>
xのビット値が10の場合、その変形計算は、B[0]=A[2] and R、およびB[1]=A[2] and ~Rである。:<0511>
xのビット値が11の場合、その変形計算は、B[0]=A[3] and R、およびB[1]=A[3] and ~Rである。:<0512>
上記の各演算は、ICの中央演算装置(CPU)あるいはコ・プロセッサ等で行われる。この演算結果は、記憶手段、通例、例えばデ−タ格納部のRAMに格納される。これらの格納された諸データは必要に応じて取り出され、諸計算に供される。
【0124】
図5に示した各変形計算<0509>、<0510>、<0511>、<0512>により、元の処理デ−タA[j](j=0、1、2、3、4)は、ランダムに分割される。このランダムな分割は疑似乱数によるランダムな分割をも用いることが出来る。
【0125】
先の例と同じく、例えば、y = 58981、 n = 59989(=239*251)とすると、各テ−ブル値は2進数表現で次のようになる。
【0126】
A[0] = 0000000000000001
A[1] = 0011001010011000
A[2] = 1011001011001110
A[3] = 1001111110010101
これに対して、R=1001100110010101とするとき、xのビットが、10(2進数)であったとすると、A[2]が選択され、その変形計算値は次の通りとなる。
【0127】
B[0]=1001000010000100
B[1]=0110011001101010
A[0]に対しては、撹乱の効果が薄いので、1の代わりに 1+nを用いることもある。
【0128】
(7)こうして得られたB[0]、B[1]を用いて、<0508>の処理:
S1 = S*B[0] mod n
S2 = S*B[1] mod n
を行う。
【0129】
この計算過程では消費電流が大きいことが多いので、電流観測者は、この値を手掛かりに秘密鍵を読もうとするが、ランダムに分割されているため、本来の波形とは異なる波形を見ることになり、混乱する。特に、統計的に処理して波形をより正確に見ようとした場合、乱数が毎回変化するため、さらに効果的である。
【0130】
(8)送信されたデ−タの最終的な解読
これまで述べてきた各処理を行っても、B[0]+B[1]=A[2]である。従って、最終的に、図5に例示した<0513>の処理
S1+S2 mod n = S*(B[0]+B[1]) mod n = S*A[2] mod nが行われる。
【0131】
(9)前記の分岐条件の各ビットが最後までなされたことを判断し<0515>、この演算を終了<0516>する。こうして、この計算結果は、正しい結果を与えた送信用のデータとなる。
【0132】
こうして得られた暗号化された送信用のデータは、通例、一旦、例えば、RAMに格納される。そして、必要に応じて、このデータは入出力ポートより出力される。カードに対する入出力に関するカード・システムの概要については、図21を用いて先に説明したところである。
【0133】
尚、受信者が復号化するに当っては、前述の通り全く同様の手法によって、送信された暗号データRが、R^x mod n(=y)として復号化される。
【0134】
尚、上述の入力データの分割方法では信号Aのみを分割した例を例示したが、信号A及び信号Bの双方を分割して演算を行うことも可能である。即ち、ΣA[i]○B[j](但し、i=1・・・m、j=1・・・n)の計算を行うものである。
【0135】
次に、入力データのランダムな分割の別な方法を例示する。
【0136】
入力の分割による方法の第2の例を説明する。図6A及び図6Bは入力の分割による別の方式を示すフロチャ−ト図である。尚、図6A及び図6Bは一連のッフローチャートを示し、図中の(A)及び(B)で繋がっている。この方法は乱数Rの値の範囲を制限する操作を用いるものである。尚、前述の第1の例と異なる手順の部分を主に説明する。
【0137】
この例でも、送信者Aはデ−タyを、R=y^e mod nと暗号化して、受信者Bに送信する。この暗号文Rを受け取った受信者Bは、秘密鍵xを用いてR^x mod nを計算する。尚、この例での秘密鍵xは、例えばxe mod
(p−1)(q−1)=1を満足するxを採用する。
【0138】
図6A及び図6Bに例示した処理は、計算のスタート<0600>と共に、図5の例と同様に、(1)テ−ブル<0601>を用意し、(2)計算の初期化<0618>、(3)撹乱用の乱数R(nと同程度のビット数を持つ)を発生する。:<0603>、(4)四乗の処理S=S^4 mod n <0602>を行う。ここまでは、秘密鍵xのビットの値には依存せずに行われる。
【0139】
(5)xのビットの値に応じて、条件分岐の判断を行う。即ち、xのビット値が00、01、10、あるいは11のいずれであるのかを判断する。:<0604>、<0605>、<0606>、<0607>
次いで、撹乱用の乱数Rを用いて、テ−ブル値の変形計算を行う。即ち、この第2の例の場合は、この変形計算は、次のような操作である。
【0140】
(6)分岐の条件に応じて、乱数Rの値の範囲を制限する操作を行う。
【0141】
xのビットの値が00の場合は、乱数RをA[0]以下に制限した値T、xのビットの値が01の場合は、乱数RをA[1]以下に制限した値T、xのビットの値が10の場合は、乱数RをA[2]以下に制限した値T、xのビットの値が11の場合は、乱数RをA[3]以下に制限した値T、を各々求める。:<0609>、<0610>、<0611>、<0612>
(7)次に、前述の分岐の条件に応じて、次の操作がなされる。
【0142】
制限された値をTとした時、このTを用いて、A[j](j=0、1、2、3)の値をランダム分割する処理、B[0] = A[j] − T、B[1] = T
を行う。:<0614>、<0615>、<0616>、<0617>
(8)こうして得られたB[0]、B[1]を用いて、<0608>の処理:
S1 = S*B[0] mod n
S2 = S*B[1] mod n を行う。
【0143】
この際の電流が大きいことが多いので、電流観測者は、この値を手掛かりに秘密鍵を読もうとするが、ランダム(疑似乱数によるランダムを含む)に分割されている。従って、本来の消費電流の波形とは異なる波形を見ることになり、混乱する。特に、統計的に処理して消費電流の波形をより正確に見ようとした場合、乱数が毎回変化するため、混乱の度合いはさらに効果的である。
【0144】
(9)最終的な<0613>の処理、S1+S2 mod n = S*(B[0]+B[1]) mod n = S*A[j] mod nを行う。 このような処理を行っても、B[0]+B[1]=A[j]であるので、計算結果は、最終的に、正しい結果を与えた送信用のデータを与えている。
【0145】
尚、復号化に当っては、前述の通り全く同様の手法によって、送信された暗号データRを、R^x mod n(=y)として復号化すれば良い。
【0146】
秘密鍵の分割
次に、入力の分割ではなく、秘密鍵を分割する方式の例を説明する。秘密鍵を分割する方式では、直接観測する方式、即ち、単独の消費電流波形を観測する方式には効果がないが、たくさんの波形を集めて統計処理する場合に情報の隠蔽効果があるものである。
【0147】
まず、最初に、基本的にRSA暗号の場合を説明する。先に見たようにRSA暗号の暗号化/復号化の操作は、図4のように行われる。
【0148】
本願発明では、統計処理を行って秘密鍵を読む場合、秘密鍵xのビットの値は常に同一でなければならないことに注目して、これをランダム(疑似乱数によるランダムを含む)に分割する。この処理のフロ−チャ−トを図7Aおよび図7Bに示す。尚、図7A及び図7Bは一連のフローチャートを示し、図中の(A)で繋がっている。
【0149】
図7A及び図7Bの処理においては、
(1)前述の処理(図4)と同様に、計算をスタートする<0700>と、先ず、秘密鍵を2ビット毎に区切って処理するためのテ−ブルを用意する。:<0701>
(2)その後、初期化を行う。即ち、S1=1およびS2=1とする。その各々S1およびS2が、2つに分割された秘密鍵の計算結果に対応する。:<0714>
(3)撹乱用の乱数Rを用意する。この場合、乱数は疑似乱数でも良い。:<0702>
(4)撹乱用の乱数Rを用いて、次のように、秘密鍵xを二つに分割する。<0703>
t[0] = x And R
t[1] = x And ~R ここで、~RはRのビット反転値である。
【0150】
この2つの分割された秘密鍵を用いて、それぞれにべき乗剰余計算を行う。このべき乗剰余計算の過程は、通常の処理と同様である。
【0151】
(5)まず、四乗の処理、S1=S1^4 mod n、 S2=S2^4 modnが行われる。<0704>、<0705>
(6)前記t[0]およびt[1]の上位のビットから2ビット毎、順々に、00、01、10、および11のいずれかを条件として分岐する。<0706>、<0707>、<0708>、<0709>、<0710>、<0711>、<0712>、<0713>
(7)前記S1およびS2とテ−ブル0701の値との乗算剰余計算を行う。それらは、S1=S1*A[j] mod n、但し、j=0、1、2、3、および S2=S2*A[j] mod n、但し、j=0、1、2、3である。<0714>、<0715>、<0716>、<0717>、<0718>、<0719>、<0720>、<0721>
(8)これが最後のビットまで行われれば、計算を処理を終了し、S1、S2を得る。<0723>、<0724>
(9)最後に、S1*S2 mod nを計算し、終了する。<7025>、<7026>
T[0]+T[1]=xであるので、S1*S2 mod n = y^x mod nに等しくなり、送信デ−タの正しい答となっている。
【0152】
電流波形の統計処理においては、秘密鍵の各ビットの値は、何回処理を行っても同一であるということが必要である。最も簡単な統計処理の例は、波形に乗っているノイズ成分の除去の為に行う平均化である。これは広く利用されているノイズ除去手法である。実際、多くのデジタルオシロスコ−プでは、波形の平均化機能が装備されている。図4に例示した通常の処理では、同一の入力を繰り返し行うことにより、ノイズ成分以外は全て全く同一の電流値が出力される。従って、これを多数収集して、平均をとれば、ノイズが除去される。これは、独立かつ同一の分布に従う確率変数の多数の標本に対する標本平均は、各標本に対する理論的平均値に近いという、いわゆる「大数の法則」に基づくものである。実際、オシロスコ−プで測定した電流値は、本来の電流値に平均0の電流ノイズが加わっていると考えることができる。平均が0であると仮定できる理由は、もしも、ノイズ成分の平均値が0でないとすると、本来の電流値以外に直流成分が含まれていることになるからである。
【0153】
一方、図7A及び図7Bに示した対策を行ったという事実を電流観測者が知っていた場合、S1、S2の系列に対してT[0]、T[1]を求め、最後にその和をとれば、正しい鍵を求めることができる。しかし、一般には電流ノイズをハ−ドウエアによって完全に除去することは困難であり、単一の電流波形の観測だけでは、鍵T[0]、T[1]を完全に特定することは困難である。従って、確実性を向上させるためには、複数の波形の採取が必要である。ところが、図7A及び図7Bに示した処理においては、測定するたびに、乱数Rの値が変化し、それによりT[0]、T[1]の値が変化してしまうので、平均化操作を行うと、各ビットの値が平均化されてしまい、本来のビット値00、01、10、11が、得られず、これらの平均電流となり、差が見えなくなる。
【0154】
更に本願における指数を分割する別な方法を説明する。
【0155】
この処理のフロ−チャ−トを図8A及び図8Bに示す。両図は(A)でが繋がっており、一つのフロー・チャートとなる。
【0156】
図8A及び図8Bに示す処理においては、計算がスタートする<0800>と次の工程を経て、計算される。
【0157】
(1)前述の処理(図4)と同様に、秘密鍵を2ビット毎に区切って処理するためのテ−ブルを用意する。:<0801>
(2)その後、初期化を行う。即ち、S1=1およびS2=1とする。その各々S1及びS2が2つに分割された指数、即ち、分割された秘密鍵情報に対応する。:<0823>
(3)撹乱用の乱数Rを用意する。この場合、乱数は疑似乱数でも良い。:<0802>
(4)指数xを二つに分割する。<0803>
t[0]=V
t[1]=x−V
(5)この2つの分割された秘密鍵を用いて、それぞれにべき乗剰余計算を行う。この過程は、通常の処理と同様である。
【0158】
まず、t(0)、t(1)の各々に対して、四乗の処理、S1=S1^4 mod n、 S2=S2^4 mod nが行われる。<0804>、<0805>
(6)前記t[0]およびt[1]の上位のビットから2ビット毎、順々に、00、01、10、および11のいずれかを条件として分岐する。<0806>、<0807>、<0808>、<0809>、<0810>、<0811>、<0812>、<0813>
(7)前記S1およびS2とテ−ブル<0801>の値との乗算剰余計算を行う。それらは、S1=S1*A[j] mod n、但し、j=0、1、2、3、および S2=S2*A[j] mod n、但し、j=0、1、2、3である。<0814>、<0815>、<0816>、<0817>、<0818>、<0819>、<0820>、<0821>
(8)これが最後のビットまで行われれば、計算を処理を終了し、S1、S2を得る。<0824>、<0825>
(9) 最後に、S1*S2 mod nを計算する。
【0159】
t[0]+t[1]=xであるので、S1*S2 mod n = y^x mod nに等しくなっている。送信デ−タの正しい答が得られる。<0826>
消費電流波形の統計処理においては、秘密鍵の各ビットの値は、何回処理を行っても同一であるということが必要である。最も簡単な統計処理の例は、波形に乗っているノイズ成分の除去の為に行う平均化である。これは広く利用されているノイズ除去手法であり、実際、多くのデジタルオシロスコ−プでは、波形の平均化機能が装備されている。通常の処理(図4)では、同一の入力を繰り返し行うことにより、ノイズ成分以外は全て全く同一の電流値が出力される。従って、これを多数収集して、平均をとれば、ノイズが除去される。
【0160】
一方、図8A、図8Bに示した対策を行ったという事実を電流観測者が知っていた場合、S1、S2の系列に対してT[0]、T[1]を求め、最後にその和をとれば、正しい鍵を求めることができる。
【0161】
しかし、一般には電流ノイズをハ−ドウエアによって完全に除去することは困難である。従って、単一の電流波形の観測だけでは、鍵T[0]、T[1]を完全に特定することは困難である。この為、確実性を向上させるためには、複数の波形の採取が必要である。ところが、図8A、図8Bに示した処理においては、測定するたびに、乱数Rの値が変化し、それによりT[0]、T[1]の値が変化してしまうので、平均化操作を行うと、各ビットの値が平均化されてしまい、本来のビット値00、01、10、11が、得られず、これらの平均電流となり、差が見えなくなる。
【0162】
秘密鍵の撹乱の別な方法の例を説明する。
【0163】
鍵の撹乱の別な方法として、オイラ−関数 f(n)=(p−1)(q−1) を用いる方法を挙げることができる。
【0164】
べき乗剰余演算を用いた場合、yとnとが互いに素な自然数であえば、オイラ−の定理により、
y^f(n) mod n =1
となることが知られている。この事実を利用すると、
y^x mod n = y^(x+Sf(N)) mod n
という関係が成り立つ。
【0165】
この場合の処理の流れを図9に示す。これは、図4に示した通常のべき乗剰余処理とほぼ同じ構成をとっている。
【0166】
(1)まず、入力値を2ビット毎に処理するためにテ−ブル0901を作成する。このテーブルは図5の例と同様である。<0901>
(2)演算結果の初期化を行う。<0904>
(3)撹乱用の乱数Rを生成する。この場合、前記乱数は疑似乱数でも良い。<0902>
(4)指数xを u = x + Rf(n)に交換する。<0903>
この後の処理は、通常のべき乗剰余演算と同様にである。
【0167】
(5)前記uのビットパタ−ンを頭から読んでいき、四乗剰余演算、S=S^4
mod nを行う。<0904>
(6)そのuのビット値が、00、 01、 10、 11のいずれかの判断を行い処理を分岐する。<0905>、<0906>、<0907>、<0908>
(7)前記のビット値の従った分岐に応じて、S=S*A[j] mod n、但し、j=0、1、2、3の乗算剰余演算を行う。ここで、A[0]=1、 A[1]=y、 A[2]=y^2 mod n、 A[3]=y^3 mod nである。<0909>、<0910>、 <0911>、<0912>
(8)これを指数のビット長まで繰り返して処理を終わる。<0914>、<0915>
例えば、N = 187(=11*17)のとき、f(N)=(11−1)*(17−1)=160である。従って、指数が、x = 38 = (100110)(2進数表現)であれば、
x+f(N)= 38 + 160 = 198 = (11000110) (2進数表現)
x+2f(N)=38 + 320 = 358 = (101100110) (2進数表現)
等のように異なるビットパタ−ンを生ずる。
【0168】
このように、元のxとは異なる条件分岐を行い、該当する波形が撹乱される。
【0169】
しかし、x+Sf(N)は、xとは異なるビットパタ−ンを持つが、上に見たように、法Nの剰余類においては、xと同等のものである。従って、一回の電流観測によってx+Sf(N)のビットパタ−ンを知ることができれば、秘密鍵 x を盗み出したのと同じことになる。一方、電流の観測においては、電流ノイズが避けられず、波形の平均化をしなければならないことが多い。その際、図9の例のように、Sの値をべき乗剰余演算毎に変化、特にランダムにさせれば、波形を多く観測しても、指数該当部の波形が平均化されてしまい、ビットの特徴を撹乱される。尚、前記ランダムにさせることは、乱数の外に疑似乱数をも用いることが出来る。
【0170】
次に、上記の考え方を楕円曲線暗号に対して適用することを考察する。
【0171】
まず、楕円曲線暗号自体について、簡単に説明する。
【0172】
楕円曲線とは、体Kの上で定義された、3次多項式の零点集合である。
【0173】
Kの標数が2でない場合は、
y^2 = x^3 + Ax^2 + Bx +c
という標準形を持つ。標数が2の体の上では、
y^2 + cy = x^3 + Ax + B 又は、
y^2 + xy = x^3 + Ax + B
という標準形を持つ曲線である。いずれの場合も、後に説明する無限遠点0を含めて考える。図10に楕円曲線の形状の例を示す。横軸はX軸、縦軸はY軸で、各々任意単位である。図10における曲線100および101が楕円曲線の例である。本発明において、標数が2であるか否かは、本質的ではないので、以下、簡単のため、標数が2でない場合について説明する。又、暗号で必要なのは、有限体の場合のみであるので、その場合に限って説明する。有限個の元からなる体を有限体又はガロア体といい、その構造はよく知られている。その最も単純な構成法は以下の通りである。
【0174】
まず、素数pを法とする整数環の剰余環 Zpを考える。Zpにおいては、0以外の元は逆を持つので、体の構造を持っている。これを素体といい、Fpと書く。これが最も原始的な有限体の例である。
【0175】
次に、Fpの元を係数に持つ多項式f(X)を考え、その零点のうち、FPに含まれないものをFpに添加することによって、新しい体を構成することができる。これを、Fpの有限次代数拡大体という。FPの有限次代数拡大体の元の個数は、pのべきになっていることが知られている。その元の個数をqと書くとき、有限次代数拡大体をFqなどと表示することがある。
【0176】
楕円曲線上の点の間には、演算を定めることができる。前述の図10を用いて楕円曲線上の加法の考え方を示す。楕円曲線上の二つの点、P、Qがあるとき、この二点を通る直線を引き、この直線が再び楕円曲線と交わる点Sをx軸に関して対称に折り返した点は、曲線の対称性から、再び楕円曲線上の点となる。この点をP+Qと書き、PとQの「和」と定義する。尚、P=Qの場合、前記二点を通る直線は、この点での接線を用いる。交わる点がない場合は、架空の点として無限遠点というものを考え、この架空の点で交わっているものとみなす。無限遠点を0と書く。また、楕円曲線上の点Pとx軸に関して対称な位置にある点をPの逆元といい、−Pで表す。G(E/Fq)における一点Pをk個加えたものを、kP、−Pをk個加えたものを−kPと書いて、Pのスカラ−倍という。これらの座標は、P、Qの座標の有理式で表すことができ、従って、一般の体の上でこの演算を考えることができる。この「加法」は、通常の加法と同様に、結合法則、交換法則が成立し、この加法に関して、無限遠点0は、通常の数での演算と同様にゼロの役割を果たす。−Pは、Pと加えると、0になる。これは楕円曲線上の加法演算が、可換群(ア−ベル群)の構造を持つことを示している。これをモ−デル・ヴェイユ群ということがある。楕円曲線E、定義体Fqを固定したときのモ−デル・ヴェイユ群を、 G(E/Fq) と書くことがある。 G(E/Fq) の構造は非常に単純で、巡回群か、または二つの巡回群の直積と同型になることが知られている。
【0177】
一般に、kP=Qの値がわかっても、逆にkの値を知るのは計算量が膨大になるため、容易でない。これを楕円曲線上の離散対数問題という。楕円曲線暗号では、楕円曲線上の離散対数問題が困難であることを利用している。
【0178】
次に、本願の係わる楕円曲線を利用した暗号方式を説明する。楕円曲線を利用した暗号方式には種々のものがある。これらを例示すれば、楕円ElGamal方式、楕円ESA(Electric Signature Algorithm)などである。ここでは、特に、楕円ElGamal方式を説明する。本方法は楕円曲線上で点のスカラー倍を用いる暗号方式については全く同様に適用することが出来る。
【0179】
楕円曲線Eとその上の一点Pが公開されているものとする。この点Pは、一般に大きな位数を持つ点であり、これをベ−スポイントと呼ぶ。
【0180】
A氏が、B氏に秘密情報Mを送信することを考える。秘密情報Mは、楕円曲線上の点で表現される。尚、平文(暗号文)の楕円曲線上の埋め込みについては、N.コブリッツ、櫻井幸一訳「数論アルゴリズムと楕円暗号入門」シュプリンガ−フェアラ−ク P.253に説明されている。
【0181】
<STEP 1>受信者B氏は、正整数 x[B] を選び、これを秘密鍵として保持し、Y[B] = x[B]Pを公開鍵簿に登録する。
【0182】
<STEP 2>送信者 A氏は、乱数 R を用いて、C1 = RPおよびC2 = M+ RY[B]をB氏に送信する。
【0183】
<STEP 3> 受信者B氏は、C1、C2を受け取り、自分の秘密鍵x[B]を用いて、C2 − x[B]C1 = MとしてMを復元する。
【0184】
楕円ElGamal暗号に限らず、楕円曲線暗号においては、楕円曲線上の点のスカラ−倍を計算する必要がある。
【0185】
楕円曲線上の点のスカラ−倍を求めるアルゴリズムは、べき乗剰余計算のアルゴリズムに類似している。図11は、Pのスカラー倍、kP(但し、kは正整数)を計算する標準的なアルゴリズムをべき乗剰余計算と同様に2ビットづつまとめて処理する例のフローチャートである。
【0186】
(1)まず、2ビットの処理を一度に行う為に、ベ−スポイントPのテ−ブルを作る。べき乗剰余演算においては、mod nでの0乗、1乗、2乗、3乗に対応して、O(無限遠点)、P、2P、3Pを用意する。即ち、P[0]=0、P[1]=P、P[2]=2P、P[3]=3Pである。<1200>、<1201>
べき乗剰余演算とは異なり、このテ−ブルは毎回書き換える必要はなく、あらかじめ用意しておくことができる。
【0187】
(2)計算用の点の値を初期化する。<1202>
(3)前記の点の四倍、S=4Sを計算する。<1203>
(4)2ビット毎にkのビットの値を見て、その各々が00、01、10、11の何れの条件であるか判断する。<1204>、<1205>、<1206>、<1207>ここで、秘密鍵kはICチップ内、例えば、そのEEPROM内に納められている。
【0188】
(5)前記の条件に応じて、計算を分岐して、これらに対応して、各々に点P[0]、P[1]、P[2]、P[3]を加える。即ち、S=S+P[j](但し、j=0、1、2、3)である。<1208>、<1209>、<1210>、<1211>
(6)この処理をkのビットが尽きるまで続けることにより、kPを計算することができる。そして、計算を終了する。<1213>、<1214>
この計算はkの上位から2ビットづつ区切って見て計算する方式である。べき乗剰余計算と、数学的には同一の構造をしていることがわかる。後に再び説明するが、RSAにおけるべき乗剰余演算、楕円曲線上の加法演算は、それぞれ、Zn、G(E/Fq)という代数系の上で行われる演算と考えることができ、これらを、より一般の代数系に拡張することが出来る。その際の計算機演算の方法も、基本的には、ここで述べたアルゴリズムにより処理される。
【0189】
一方で、マイクロコンピュ−タが内部のプログラムを実行する際、動作時の内部消費電力が漏洩する可能性があるため、このプロセスをマイクロコンピュータで実現する場合、秘密鍵の処理が漏洩し、危険に曝されることになる。例えば、kのビットの違いにより、分岐が行われるので、もしも、その処理が消費電流の差として現れれば、電流波形からkのビットを特定することができる可能性がある。この例ではkは2ビット毎の違いである。
【0190】
先に見たように楕円曲線暗号の暗号化/復号化の操作は、前記の図11のフローチャートに示した手順で行われる。
【0191】
統計処理を行って秘密鍵を読む場合、秘密鍵kのビットの値は常に同一でなければならないことに注目して、これをランダムに分割する。
【0192】
即ち、この方法はスカラー倍におけるスカラーを分割する方式である。尚、この場合、前記ランダムなる分割は、疑似乱数によるランダムを含んで良い。この処理のフローチャートを図12A及び図12Bに示す。両図は(A)でが繋がっており、一つのフロー・チャートとなる。
【0193】
(1)図12A、図12Bの処理例では、秘密鍵kを2ビット毎に区切って処理するためのテ−ブルを用意する。この処理は図11に示される処理と同様である。<1300>、<1301>
(2)計算用の点の値を初期化する。即ち、S1=0、S2=0となす。<1323>
(3)撹乱用の乱数Rを用意する。<1302>
(4)撹乱用の乱数Rを用いて、次のように、秘密鍵kを二つに分割する。<1303>
t[0] = k and R
t[1] = k and ~R
ここで、~RはRのビット反転値である。
【0194】
この2つに分割された秘密鍵を用いて、それぞれにべき乗剰余計算を行う。この過程は、通常の処理と同様である。
【0195】
(5)まず、4倍の処理、S1=4S1およびS2=4S2の処理を行う。<1304>、<1305>
(6)t[0]、t[1]の各々について、上位のビットから2ビットづつ順々に00、01、10、11のいずれかの判断を行う。<1306>、<1307>、<1308>、<1309>、<1310>、<1311>、<1312>、<1313>
(7)前記の分岐条件に従って、テ−ブル1301の値との乗算剰余計算、S1=S1+A[j](但し、j=0、1、2、3)、S2=S2+A[j](但し、j=0、1、2、3)を行う。<1314>、<1315>、<1316>、<1317>、<1318>、<1319>、<1320>、<1321>
(8)これが最後のビットまで行われれば、処理を終了し、S1、S2を得る。<1325>、<1324>
(9)最後に、S1+S2、即ち楕円曲線上の和を計算する。t[0]+t[1]=kであるので、S1+S2=kPに等しくなり、正しい答となっている。<1322>、<1326>
尚、上記の例では、鍵情報kを2ビット毎区切る例である。しかし、この鍵情報の区切りは、他のビット数、例えば、3ビットあるいは4ビットをまとめて計算を行うことが出来る。この場合、kをjビット毎区切る場合、2^j倍の計算を行うこととなる。これは先に説明した剰算剰余計算の場合と類似する考え方である。
【0196】
電流波形の統計処理においては、秘密鍵の各ビットの値は、何回処理を行っても同一であるということが必要である。最も簡単な統計処理の例は、波形に乗っているノイズ成分の除去の為に行う平均化である。これは広く利用されているノイズ除去手法であり、実際、多くのデジタルオシロスコ−プでは、波形の平均化機能が装備されている。通常の処理(図11)では、同一の入力を繰り返し行うことにより、ノイズ成分以外は全て全く同一の電流値が出力される。従って、これを多数収集して、平均をとれば、ノイズが除去される。
【0197】
一方、図12A及び図12Bに例示した対策を行ったという事実を電流観測者が知っていた場合、S1、S2の系列に対してt[0]、t[1]を求め、最後にその和をとれば、正しい鍵を求めることができる。しかし、一般には電流ノイズをハ−ドウエアによって完全に除去することは困難であり、単一の電流波形の観測だけでは、鍵t[0]、t[1]を完全に特定することは困難である。従って、確実性を向上させるためには、複数の波形の採取が必要である。
【0198】
ところが、図12A及び図12Bの処理においては、電流波形を測定するたびに、乱数Rの値が変化し、それによりt[0]、t[1]の値が変化してしまうので、平均化操作を行うと、各ビットの値が平均化されてしまう。従って、本来のビット値00、01、10、11が、得られない。この為、平均化操作を行った電流波形は、各単一電流波形の平均電流となり、差が見えなくなる。
【0199】
RSA暗号におけるべき乗剰余演算の場合と類似の方法を用いて、秘密鍵の別の分割方法を考えることができる。この例を図13Aおよび図13Bに例示する。両図は図中の(A)において繋がって、一つのフロー・チャートを形成する。
【0200】
図13Aおよび図13Bに例示する処理においては、図11に示す通常の処理と同様に、計算をスタートする<1400>と、(1)秘密鍵kを2ビット毎に区切って処理するためのテ−ブル<1401>を用意する。即ち、P[0]=0、P[1]=P、 P[2]=2P、 P[3]=3Pである。
【0201】
(2)その後、計算結果の初期化を行い<1423>、(3)撹乱用の乱数Rを用意する。この場合、乱数Rは疑似乱数でも良い。<1402>
(4)k以下の値しかとらない撹乱用の乱数Vを用いて、次のように、秘密鍵kを二つに分割する<1403>。
【0202】
t[0] = V
t[1] = k − V
(5)この2つの分割された秘密鍵を用いて、それぞれにべき乗剰余計算を行う。この過程は、通常の処理と同様である。まず、各値、S1およびS2の4倍の処理が行われる。<1404>、<1205>
(6)t[0]、およびt[1]の上位のビットから2ビットづつ順々に00、01、10、11のいずれかの条件であるか判断する。<1406>、<1407>、<1408>、<1409>、<1410>、<1411>、<1412>、<1413>、
(7)前記条件に応じて、計算を分岐して、テーブルの値との乗算剰余計算を行う。<1414>、<1415>、<1416>、<1417>、<1418>、<1419>、<1420>、<1421>
(8)この計算が最後のビットまで行われれば、処理を終了し、S1、S2を得る。<1424>、<1425>
(9)最後に、S1+S2を計算する。<1422>、<1426>
t[0]+t[1]=kであるので、S1+S2 = kPに等しくなり、正しい答となっている。<1420>
電流波形の統計処理においては、秘密鍵の各ビットの値は、何回処理を行っても同一であるということが必要である。最も簡単な統計処理の例は、波形に乗っているノイズ成分の除去の為に行う平均化である。これは広く利用されているノイズ除去手法であり、実際、多くのデジタルオシロスコ−プでは、波形の平均化機能が装備されている。通常の処理(図11)では、同一の入力を繰り返し行うことにより、ノイズ成分以外は全て全く同一の電流値が出力される。従って、これを多数収集して、平均をとれば、ノイズが除去される。
【0203】
一方、図13Aおよび図13Bに例示した対策を行ったという事実を電流観測者が知っていた場合、S1、S2の系列に対してt[0]、t[1]を求め、最後にその和をとれば、正しい鍵を求めることができる。しかし、一般には電流ノイズをハ−ドウエアによって完全に除去することは困難である。この為、単一の電流波形の観測だけでは、鍵t[0]、t[1]を完全に特定することは困難である。従って、確実性を向上させるためには、複数の波形の採取が必要である。
【0204】
ところが、図13Aおよび図13Bに例示した処理においては、電流波形を測定するたびに、乱数Rの値が変化し、それによりt[0]、t[1]の値が変化してしまうので、平均化操作を行うと、各ビットの値が平均化されてしまう。従って、本来のビット値00、01、10、11が、得られない。この為、平均化操作を行った電流波形は、各単一電流波形の平均電流となり、差が見えなくなる。
【0205】
次に楕円曲線の場合と類似の方法を用いた場合の例を例示する。
【0206】
G(E/Fq)においては、全ての元(それは、楕円曲線上の点に相当する)Pに対して、mP=0となるような正の整数mが存在する。このうち最小のものをPの位数(order)といい、ord(P)などと書く。
【0207】
定義より、ord(P)P = 0が成り立つ。従って、任意の整数 S に対して、
( k + S*ord(P))P = kPが成り立つ。これは、べき乗剰余計算において、y^(x+Sf(n)) mod n = y^x mod n
が成り立つことの楕円曲線における類似である。
【0208】
この性質を用いれば、kとはビットパタ−ンの異なる鍵 k + S*ord(P) が得られる。これを利用して統計処理による電流解析を撹乱するアルゴリズムを、図14に示す。
【0209】
まず、計算を開始する<1500>と、(1)入力値を2ビット毎に処理するためにテ−ブル<1501>を作成する。即ち、P[0]=0、P[1]=P、P[2]=2P、P[3]=3Pである。
【0210】
(2)次に、計算結果を初期化、S=0とした後<1510>、(3)撹乱用の乱数Rを生成し<1502>する。この場合、乱数Rは疑似乱数でも良い。
【0211】
次いで、スカラ−を、kから u=k+R*ord(P)に交換する<1503>。
【0212】
この後の処理は、通常のべき乗剰余演算と同様に、(4)uのビットパタ−ンを頭から読んでいき、4倍計算、S=4S、<1504>を行う。
【0213】
(5)そのuの値が、00、 01、 10、 11のいずれかの条件であるか判断する。<1505>、<1506>、<1507>、<1508>
(6)前記条件に応じて、計算を分岐して楕円曲線上での加算を行う。、P[0]=O(無限遠点)、 P[1]=P、 P[2]=2P、 P[3]=3Pと、Sとの楕円曲線上での加算を行う。<1509>
(7)これをスカラ−kのビット長まで繰り返して処理を終わる。<1511>、<1512>
べき乗剰余演算の場合と同様に、kとk+R*ord(P)は異なるビットパタ−ンを生ずる。従って、元のxとは異なる条件分岐を行い、該当する波形が撹乱される。
【0214】
しかし、k+S*ord(P)は、kとは異なるビットパタ−ンを持つが、上に見たように、楕円曲線Eにおいては、kと同等のものである。従って、一回の電流観測によってk+S*ord(P)のビットパタ−ンを知ることができれば、秘密鍵 k を盗み出したのと同じことになる。一方、電流の観測においては、電流ノイズが避けられず、波形の平均化をしなければならないことが多い。その際、図14のように、Sの値をべき楕円曲線上の点のスカラ−倍演算毎に変化、特にランダム(疑似乱数を含む)させれば、波形を多く観測しても、指数該当部の波形が平均化されてしまう。従って、ビットの特徴を撹乱される。尚、前記ランダムの変形に際しては疑似ランダムなる分割を用いても良い。
【0215】
次に、以上の電流撹乱処理をさらに効果的にする方法を提案する。それは、入力信号ないしは指数の分割を行った後、次のステップの演算を更に計算の順序等を変化させるのである。この手法は、これまで述べてきた諸実施の形態においても適用できるものである。
【0216】
まず、べき乗剰余計算y^x mod nにおいて、入力の分割を行って処理する際に、分割後の計算の順序を毎回変化させる方法を図15Aおよび図15Bに示す。両図は図中の(A)及び(B)で繋がって、一つのフローチャートを形成する。この例は、例えば、前述の図5の例の更なる変形計算と見ることが出来る。
【0217】
まず、計算を開始すると<1600>、(1)2ビットづつ処理するためのテ−ブルを作成する。即ち、A[0]=1、 A[1]=y、 A[2]=y^2 mod n、 A[3]=y^3 mod n である。<1601>
(2)次いで、計算結果を初期化、即ちS=1を行う。<1624>
(3)次に、入力撹乱用の乱数R及び、ランダム分岐を行うための乱数 v(0又は1) を生成する。この場合、前記乱数およびランダム分岐は、疑似乱数あるいは疑似ランダムなる変形でも良い。<1603>
(4)xのビット列の終わりまで行っているかどうかを判定し<1604>、xのビット列が、00、01、10、11のいずれであるかの判断を行う。<1605>、<1606>、<1607>、<1608>。そして、前記判断のぞれぞれに応じて、A[0]、A[1]、A[2]、A[3]のいずれを分解するかを決定する。
【0218】
(5)さらに、 v の値が1か否かに応じて、その後の復元処理の順序を反転するか否かを決定する。<1609>、<1610>、<1611>、<1612>
(6)前述の各ビットの条件分岐の判断、およびvの値の判断に応じて、復元処理、即ち、B[0]=A[j] and R、 B[1]=A[j] and ~R、(但し、j=0、1、2、3)を行う。<1613>、<1614>、<1615>、<1616>、<1617>、<1618>、<1619>、<1620>
(7)そして、演算結果S=S*B[0] mod n<1621>、及びS=S*B[1] mod n<1622>、更に、その和演算、S=S1+S2 mod n<1623>を得る。
【0219】
(8)xの最後のビットまで実行したことを確認し<1604>、計算を終了する。<1624>
この処理により、消費電流を見て内部処理を推定するために必要な情報が増加し、推定がより困難になる。
【0220】
指数もまた分離後に処理順序をランダム化することによって、電流撹乱の効果を高めることができる。図16Aおよび図16Bにその一例を示す。両図は図中の(A)、(B)、(C)で繋がり一つのフローチャートの構成する。順序を変更する方法には種々のものがあるので、後に他の方法も示す。
【0221】
図16Aおよび図16Bの処理では次の計算がなされる。この例は、例えば、図7A及び図7Bに示した例の更なる変形計算と見られる。
【0222】
(1)計算が開始されると<1700>、2ビット処理のテ−ブル作成する。<1701>
(2)初期化、S[0]=1、 S[1]=1、<1712>される。これまでの計算は、既に説明した処理である。
【0223】
(3)指数xを分割するための撹乱要の乱数R(疑似乱数でもよい)を発生する。<1702>
(4)指数xを、t[0] = x And R、 t[1] = x And ~Rに分離する<1703>。尚、 ~RはRの反転値である。又、この部分は、すでに示したように、T[0]をx以下の乱数としてt[1]=x−t[0]と求めることによっても行うことができることは言うまでもない。
【0224】
(5)xの全ての処理が終了したかどうかを判定する。<1704>
(6)もし、 xの全ての処理が終了していなければ、分岐用の乱数v(v=0又は1)を発生する<1702>。
【0225】
(7)この分岐用の乱数vの値が0か、1かを判断し<1706>する。
【0226】
(8)このvの値によって、次に行われる処理の順序を入れ替える。<1707>、<1709>
即ち、 v=0の場合、t[0]の処理が先に行われ<1707>、次にT[1]の処理が行われる<1708>。逆に、v=1の場合、t[1]が先に処理され<1709>、次にT[0]が先に処理される<1710>。
【0227】
(9)いずれの場合も、最後のビットまで処理された後のS[0]、S[1]の乗算剰余、即ち、S[0]*S[1] mod nを求める。<1711>
(10)この計算結果は暗号化データの正しい答えとなっている。<1713>
尚、図16Bにおける2ビット毎の乗算剰余処理ル−チンを図17に示す。
【0228】
信号が入力される<1800>、S[j]= S[j]^4 mod nの計算を行うが、次の条件によって、分岐して計算がなされる。
【0229】
即ち、入力t(j)の2ビットが、00であるか、01であるか、10であるか、11であるかに応じて、それぞれ、A[0]、A[1]、A[2]、A[3]とS[j](j=0 or 1)との乗算剰余演算、S[j]=S1*A[j] mod n(但し、j=0、1、2、3)が行われる。そして、この計算結果S(j)が出力される。この処理によって、消費電流波形の順序の予測ができなくなる為、電流からxのビット列を推定することが困難になる。
【0230】
分離後の指数の処理順序を撹乱する別の方法を図18に示す。この方法は図16A,図16Bの例とは別な例である。
【0231】
図18の処理は次のようになされる。
【0232】
(1)計算が開始されると<1900>、2ビット処理の為のテ−ブル作成される。<1901>
(2)計算結果が初期化される。<1902>
これまでのステップは既に説明した処理である。
【0233】
(3)指数xを分割するためのx以下の乱数Rを発生し<1903>する。ここで、乱数Rは疑似乱数でも良い。
【0234】
(4)指数xをt[0] = R 、t[1] = x − Rに分離する<1904>。
この部分は、すでに示したように、Rを乱数としたときに指数xをt[0] = xAnd R、 t[1] = x And ~Rのように分解することによっても行うことができることは言うまでもない。
【0235】
(5)xの全ての処理が終了したかどうかを判定する。<1905>
(6)もし終了していなければ、さらに、t[0]の処理が終了したか、t[1]の処理が終了したかどうかを判定する。一方、t[0]の処理が終了していれば、t[1]の処理を行い、t[1]の処理が終了していれば、t[0]の処理を行い、いずれも終了していなければランダム分岐処理に進む。<1906>
(7)分岐用の乱数v(=0又は1)を発生し<1907>、この値が0か1かを判定する<1908>。
【0236】
(8)もしも、0ならば、t[0]を処理し<1909>、1ならば、t[1]を処理する<1910>。
【0237】
(9)いずれの場合も、最後のビットまで処理された後のS[0]、S[1]の乗算剰余、即ち、S[0]*S[1] mod nを求める。<1911>
(10)この計算結果は暗号化データの正しい答えとなっている。<1912>
先に示した順序のランダム化においては、t[0]の処理とt[1]の処理はvの値によらず隣り合っていたが、本実施例においては、そのようなせ制限はないという点が大きな違いである。
【0238】
尚、図18における2ビット毎の乗算剰余処理ル−チンは、先と同様に図17と同様である。
【0239】
この処理によって、消費電流波形順序の予測ができないため、電流からxのビット列を推定することが困難になる。
【0240】
次に楕円曲線上の点Pのスカラ−倍kPについて、上述したべき乗剰余演算の処理の類似を考える。図19に、図18のアルゴリズムの類似を示す。しかし、本例は図16で示した実施例の類似を構成することも全く同様に行うことができることは言うまでもない。
【0241】
図19の処理においては、(1)2ビット処理の為のテ−ブル作成<2001>、(2)初期化<2002>までは、既に説明した処理である。
【0242】
(3)指数xを分割するためのk以下の乱数Rを発生する。ここで、 Rは疑似乱数でもよい。<2003>
(4)スカラ−kをt[0] = R 、t[1] =k−Rに分離する<2004>。
尚、この部分は、すでに示したように、Rを乱数としたときにスカラ−kをt[0] = k And R、 t[1] = k And ~Rのように分解することによっても行うことができることは言うまでもない。ここで、~RはRの反転値である。
【0243】
(5)kの全ての処理が終了したかどうかを判定する。<2005>
(6)今、もし、 kの全ての処理が終了していなければ、さらに、t[0]の処理が終了したか、t[1]の処理が終了したかどうかを判定する。<2006>
(7)t[0]の処理が終了していれば、t[1]の処理を行う。一方、t[1]の処理が終了していれば、t[0]の処理を行い、いずれも終了していなければランダム分岐処理に進む。<2006>
(8)分岐用の乱数v(=0又は1)を発生し<2007>、(9)この値が0か1かを判定する<2008>。
【0244】
(10)もしも、乱数vの値が0ならば、t[0]を処理し<2009>、乱数vの値が1ならば、t[1]を処理する<2010>。
【0245】
(11)いずれの場合も、最後のビットまで処理された後のS[0]、S[1]の乗算剰余を求める。<2011>
(12)この計算結果は暗号化データの正しい答えとなっている。<2012>
図19に示された2ビット毎のスカラ−倍処理ル−チンを図20に示す。
【0246】
即ち、入力t[j]の2ビットが、00であるか、01であるか、10であるか、11であるかに応じて、それぞれ、P[0]、P[1]、P[2]、P[3]とS[j](j=0 or 1)との楕円曲線上の加法演算が行われる。そして、この計算結果S(j)が出力される。
【0247】
この処理によって、消費電流波形順序の予測ができないため、電流からkのビット列を推定することが困難になる。
【0248】
以上に示したように、本発明請求項19の本質は、指数やスカラ−のビット列の処理を分割することによってビット列順序を入れ替えることを可能にし、結果的に電流観測を行った場合にビット列がランダムであるように見えるということである。
【0249】
処理順序の入換えの方法は、ここに述べた方法の他にもある。例えば、実施例では、指数やスカラ−を2つにしか分離していないが、これを3通り、4通り等に分離することや、乱数として、準周期数列やカオス的数列を用いることもできる。又、これまで何回か述べてきた疑似乱数は、大きな周期を持つ周期列とみなすことができることが多いが、周期の短いものも利用することができる。
【0250】
以上に見たように、べき乗剰余演算、楕円曲線上の加算に対する本発明の思想は抽象レベルでは全く同一のものであって、これらを、実際のインプリメントを超えて抽象化することは自然なことである。
【0251】
請求項1、2、3についても、これまで示してきた法nにおけるべき乗剰余演算や、楕円曲線上の加算における実施例において、積又は和の演算を○と書けば全く同様のフロ−チャ−トが構成できる。これらは、上記のべき乗剰余演算及び、楕円曲線上の点のスカラ−倍を含み、さらに同様の代数構造を持つ処理に対しても有効である。
【0252】
以上詳細に説明したように、本発明によれば、ICカ−ドチップにおいて、デ−タを分割して処理し、最後に分割処理された結果を統合して正しい結果を求めたり、結果に影響を与えない鍵の変形を行うことにより、消費電流の波形から、処理や暗号鍵の推測を行うことが困難になる。
【0253】
【発明の効果】
本願発明は、高いセキュリティを持つICカ−ドなどの耐タンパ−情報処理装置を提供することが出来る。
【図面の簡単な説明】
【図1】図1はICカ−ドの概観及び端子の例を示す平面図である。
【図2】 図2はマイクロコンピュ−タの基本構成を示すブロック図である。
【図3】 図3はICカードにおける消費電流の波形の例を示す図である。
【図4】 図4はべき乗剰余計算の例を示すフローチャートである。
【図5】 図5は入力の分割による電流対策を行う例を示すフローチャートである。
【図6A】 図6Aは入力の分割による電流対策を行う別な例を示すフローチャートの一部である。
【図6B】 図6Bは入力の分割による電流対策を行う別な例を示すフローチャートの残部である。
【図7A】 図7Aは鍵の分割による電流対策を行う例を示すフローチャートに一部である。
【図7B】 図7Bは鍵の分割による電流対策を行う例を示すフローチャートに残部である。
【図8A】 図8Aは鍵の分割による電流対策を行う別な例を示すフローチャートの一部である。
【図8B】 図8Bは鍵の分割による電流対策を行う別な例を示すフローチャートの残部である。
【図9】 図9はビットパタ−ンの異なる指数を利用した電流撹乱法の例を示すフローチャートである。
【図10】 図10は楕円曲線上での加法を説明する図である。
【図11】 図11は楕円曲線上の点Pのスカラ−倍の計算の例を示すフローチャートである。
【図12A】 図12Aは楕円曲線上の点のスカラ−倍に関するスカラ−分割方式の例を示すフローチャートの一部である。
【図12B】 図12Bは楕円曲線上の点のスカラ−倍に関するスカラ−分割方式の例を示すフローチャートの残部である。
【図13A】 図13Aは楕円曲線上の点のスカラ−倍に関するスカラ−分割方式の別な例を示すフローチャートの一部である。
【図13B】 図13Bは楕円曲線上の点のスカラ−倍に関するスカラ−分割方式の別な例を示すフローチャートの残部である。
【図14】 図14はビットパタ−ンの異なるスカラ−を利用した電流撹乱法の例を示すフローチャートである。
【図15A】 図15Aは入力の分割の処理順序のランダム化の例を示すフローチャートの一部である。
【図15B】 図15Bは入力の分割の処理順序のランダム化の例を示すフローチャートの残部である。
【図16A】 図16Aは指数分割後の処理順序のランダム化の例を示すフローチャートの一部である。
【図16B】 図16Bは指数分割後の処理順序のランダム化の例を示すフローチャートの残部である。
【図17】 図17は2ビット毎の乗算剰余処理ル−チンの例を示すフローチャートである。
【図18】 図18は指数分割後の処理順序のランダム化の別な例を示すフローチャートである。
【図19】 図19はスカラ−分割後の処理順序のランダム化の例を示すフローチャートである。
【図20】 図20は2ビット毎のスカラ−倍処理ル−チンを示すフローチャートである。
【図21】図21はカード・システムの概要を示す構成図である。
【符号の説明】
0500:開始、0501:4乗処理の為のテーブル作成工程、0514:初期化工程、0515:処理を最後まで行ったかの判断工程、0502:4乗処理工程、0503:乱数あるいは疑似乱数の発生工程、0504、0505、0506、0507:ビットの値による分岐条件の判断工程、0509、0510、0511、0512:変形処理工程、0508:乗算剰余計算、0513:各分岐条件に応じた最終の乗算剰余計算
Claims (4)
- 信号を入力する手段と、プログラムを格納する格納部と、所定の計算結果を格納する格納手段と、プログラムに従い所定のデータ処理を行う演算部と、信号を出力する手段と、を少なくとも有し、前記格納部に格納されたプログラムは演算部に実行の指示を与える一つ以上のデ−タ処理命令を有し、前記データを入力する手段より入力された信号をデータ処理するに際し、前記データ処理命令の少なくとも一つが、伝達情報たる信号Aと鍵情報たる信号kとをもって行うA^k(但し、ここでA^k=A○A○…○A(k個)とし、○は演算を示す、以下同様)を計算する際に、kをk=k[1]+k[2]+k[3]+…+k[n]を満たすk[1]、k[2]、k[3]、…、k[n](但し、nは整数)と任意に分割し、前記信号Aと前記k[1]、k[2]、k[3]、…、k[n]とを用いてh[1]=A^k[1]、h[2]=A^k[2]、…、h[n]=A^k[n]をそれぞれ個別に計算した後、この各個別計算結果を用いての演算、A^k=h[1] ○h[2] ○…○h[n](但し、nは1以上の整数)として計算結果を求めるステップを有することを特徴とする情報処理装置。
- 情報伝達する送信側の平文および当該情報の受信側における鍵情報を、各々当該情報処理方法にて採用される半群S’におけるの元Aおよびkとなし、このAとkとのA^k(但し、ここでA^k =A△A△…△A(k個)とし、△は半群S’における演算である) を計算する際に、kをk = k[1] +k[2] + k[3] +…+ k[n] を満たすk[1] 、k[2] 、k[3] 、… … 、 k[n] (但し、nは整数)と任意に分割し、前記平文Aと前記k[1] 、k[2] 、k[3] 、…、k[n]とを用いて、h[1] = A^k[1]、 h[2] = A^k[2] 、…、h[n] = A^k[n]をそれぞれ個別に計算した後、A^k = h[1] △h[2] △…△h[n] ( 但し、△は半群S’における演算であり、nは1以上の整数である)としてA^kを求めるステップを有することを特徴とする情報処理方法。
- 前記S、S’、あるいはS”が法N(正の整数)に関する剰余類のなす可換環(半群でもある)であり、和演算+が法Nにおける和であり、上記積演算○、演算△、あるいは演算◇が、法Nによる乗算剰余演算、A+B = (A+ B ) mod N、 A○B = A*B mod N、あるいはA+B = (A+ B ) mod N、A△B = A*B mod N、あるいはA+B = (A + B ) mod N、A◇B = A*B mod Nのいずれかであることを特徴とする請求項2に記載の情報処理方法。
- 信号を入力する手段と、プログラムを格納する格納部と、所定の計算結果を格納する格納手段と、プログラムに従い所定のデータ処理を行う演算部と、信号を出力する手段と、を少なくとも有し、前記格納部に格納されたプログラムは演算部に実行の指示を与える一つ以上のデ−タ処理命令を有し、前記データを入力する手段より入力された信号をデータ処理するに際し、前記データ処理命令の少なくとも一つが、伝達情報たる信号Aと鍵情報たる信号kとをもって行うA^k(但し、ここでA^k=A○A○…○A(k個)とし、○は演算を示す、以下同様)を計算する際に、kをk=k[1]+k[2]+k[3]+…+k[n]を満たすk[1]、k[2]、k[3]、…、k[n](但し、nは整数)と任意に分割し、前記信号Aと前記k[1]、k[2]、k[3]、…、k[n]とを用いてh[1]=A^k[1]、h[2]=A^k[2]、…、h[n]=A^k[n]をそれぞれ個別に計算した後、この各個別計算結果を用いての演算、A^k=h[1] ○h[2] ○…○h[n](但し、nは1以上の整数)として計算結果を求めるステップを有することを特徴とするカード部材。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000079305A JP3926532B2 (ja) | 2000-03-16 | 2000-03-16 | 情報処理装置、情報処理方法、及びカード部材 |
KR1020010012144A KR100805286B1 (ko) | 2000-03-16 | 2001-03-09 | 정보처리장치 정보처리방법 및 카드부재 |
TW090105795A TW569103B (en) | 2000-03-16 | 2001-03-13 | Information processing device, information processing method and smart card |
EP01106331A EP1134653B1 (en) | 2000-03-16 | 2001-03-15 | Information processing device, information processing method and smartcard |
DE60136988T DE60136988D1 (de) | 2000-03-16 | 2001-03-15 | Informationsverarbeitungsvorrichtung und Verfahren sowie Chipkarte |
AU28019/01A AU782868B2 (en) | 2000-03-16 | 2001-03-15 | Information processing device, information processing method and smartcard |
US09/809,214 US6666381B1 (en) | 2000-03-16 | 2001-03-16 | Information processing device, information processing method and smartcard |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000079305A JP3926532B2 (ja) | 2000-03-16 | 2000-03-16 | 情報処理装置、情報処理方法、及びカード部材 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001268072A JP2001268072A (ja) | 2001-09-28 |
JP3926532B2 true JP3926532B2 (ja) | 2007-06-06 |
Family
ID=18596571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000079305A Expired - Fee Related JP3926532B2 (ja) | 2000-03-16 | 2000-03-16 | 情報処理装置、情報処理方法、及びカード部材 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6666381B1 (ja) |
EP (1) | EP1134653B1 (ja) |
JP (1) | JP3926532B2 (ja) |
KR (1) | KR100805286B1 (ja) |
AU (1) | AU782868B2 (ja) |
DE (1) | DE60136988D1 (ja) |
TW (1) | TW569103B (ja) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3926532B2 (ja) * | 2000-03-16 | 2007-06-06 | 株式会社日立製作所 | 情報処理装置、情報処理方法、及びカード部材 |
JP3950638B2 (ja) | 2001-03-05 | 2007-08-01 | 株式会社日立製作所 | 耐タンパーモジュラ演算処理方法 |
US7136484B1 (en) * | 2001-10-01 | 2006-11-14 | Silicon Image, Inc. | Cryptosystems using commuting pairs in a monoid |
JP4034585B2 (ja) * | 2002-01-28 | 2008-01-16 | 松下電器産業株式会社 | 楕円曲線演算装置及び楕円曲線演算方法 |
FR2844896A1 (fr) * | 2002-09-19 | 2004-03-26 | St Microelectronics Sa | Alimentation d'un circuit de traitement asynchrone de donnees |
KR100720726B1 (ko) * | 2003-10-09 | 2007-05-22 | 삼성전자주식회사 | Rsa 알고리즘을 이용한 보안유지시스템 및 그 방법 |
WO2005114802A2 (en) * | 2004-05-11 | 2005-12-01 | North Dakota State University | Optimal signed-digit recoding for elliptic curve cryptography |
DE602006013138D1 (de) * | 2005-07-13 | 2010-05-06 | Nippon Telegraph & Telephone | Authentifizierungssystem, authentifizierungsverfahren, bestätigungsvorrichtung, verifizierungsvorrichtung, programme dafür und aufzeichnungsmedium |
KR20080035004A (ko) * | 2005-08-19 | 2008-04-22 | 엔엑스피 비 브이 | 회로 구조체, 마이크로컨트롤러, 데이터 처리 장치, 암호화 계산 수행 방법 및 프로그램을 구비하는 컴퓨터 판독가능한 매체 |
EP1920324A1 (en) * | 2005-08-19 | 2008-05-14 | Nxp B.V. | Circuit arrangement for and method of performing an inversion operation in a cryptographic calculation |
EP1775880A1 (en) * | 2005-10-11 | 2007-04-18 | STMicroelectronics S.r.l. | Method of processing information to be confidentially transmitted |
US8229109B2 (en) * | 2006-06-27 | 2012-07-24 | Intel Corporation | Modular reduction using folding |
US7925011B2 (en) * | 2006-12-14 | 2011-04-12 | Intel Corporation | Method for simultaneous modular exponentiations |
EP2122899B1 (en) * | 2007-03-06 | 2011-10-05 | Research In Motion Limited | Integer division in a manner that counters a power analysis attack |
US8160245B2 (en) | 2007-03-07 | 2012-04-17 | Research In Motion Limited | Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting |
US8042025B2 (en) * | 2007-12-18 | 2011-10-18 | Intel Corporation | Determining a message residue |
EP2365659B1 (fr) | 2010-03-01 | 2017-04-12 | Inside Secure | Procédé de test de la résistance d'un circuit intégré à une analyse par canal auxiliaire |
US8457919B2 (en) | 2010-03-31 | 2013-06-04 | Inside Secure | Process for testing the resistance of an integrated circuit to a side channel analysis |
FR2956932B1 (fr) * | 2010-03-01 | 2012-08-17 | Inside Contactless | Procede de test de la resistance d'un circuit integre a une analyse par canal auxiliaire |
US10148285B1 (en) | 2012-07-25 | 2018-12-04 | Erich Schmitt | Abstraction and de-abstraction of a digital data stream |
US10795858B1 (en) | 2014-02-18 | 2020-10-06 | Erich Schmitt | Universal abstraction and de-abstraction of a digital data stream |
WO2017163434A1 (ja) * | 2016-03-25 | 2017-09-28 | 中国電力株式会社 | 情報処理方法及び情報処理システム |
FR3069671A1 (fr) | 2017-07-25 | 2019-02-01 | Stmicroelectronics (Rousset) Sas | Protection d'un calcul iteratif contre des attaques horizontales |
EP3579492A1 (fr) | 2018-06-08 | 2019-12-11 | STMicroelectronics (Rousset) SAS | Protection d'un calcul itératif |
EP3579493A1 (fr) | 2018-06-08 | 2019-12-11 | STMicroelectronics (Rousset) SAS | Protection d'un calcul itératif |
FR3094522B1 (fr) * | 2019-03-29 | 2021-11-19 | St Microelectronics Rousset | Protection d’un calcul itératif |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08315099A (ja) * | 1995-05-17 | 1996-11-29 | Toppan Printing Co Ltd | 情報記録媒体 |
US6089460A (en) * | 1996-09-13 | 2000-07-18 | Nippon Steel Corporation | Semiconductor device with security protection function, ciphering and deciphering method thereof, and storage medium for storing software therefor |
AU2557399A (en) * | 1998-01-02 | 1999-07-26 | Cryptography Research, Inc. | Leak-resistant cryptographic method and apparatus |
DE19811175A1 (de) * | 1998-03-14 | 1999-09-16 | Philips Patentverwaltung | Verfahren und Anordnung zur Abwehr kryptoanalytischer Untersuchungen |
JPH11338982A (ja) * | 1998-05-25 | 1999-12-10 | Mitsubishi Electric Corp | Icメモリカードシステム装置及びそのicメモリカード |
JP2000036015A (ja) * | 1998-07-17 | 2000-02-02 | Toshiba Corp | Icカード処理装置とicカードとicカード処理システムとicカード処理方法 |
CA2259089C (en) * | 1999-01-15 | 2013-03-12 | Robert J. Lambert | Method and apparatus for masking cryptographic operations |
FR2789535B1 (fr) * | 1999-02-04 | 2001-09-28 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a cle secrete contre les attaques par analyse physique |
FR2800478B1 (fr) * | 1999-10-28 | 2001-11-30 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a base d'exponentiation modulaire contre les attaques par analyse physique |
JP3926532B2 (ja) * | 2000-03-16 | 2007-06-06 | 株式会社日立製作所 | 情報処理装置、情報処理方法、及びカード部材 |
-
2000
- 2000-03-16 JP JP2000079305A patent/JP3926532B2/ja not_active Expired - Fee Related
-
2001
- 2001-03-09 KR KR1020010012144A patent/KR100805286B1/ko not_active IP Right Cessation
- 2001-03-13 TW TW090105795A patent/TW569103B/zh not_active IP Right Cessation
- 2001-03-15 DE DE60136988T patent/DE60136988D1/de not_active Expired - Lifetime
- 2001-03-15 EP EP01106331A patent/EP1134653B1/en not_active Expired - Lifetime
- 2001-03-15 AU AU28019/01A patent/AU782868B2/en not_active Ceased
- 2001-03-16 US US09/809,214 patent/US6666381B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1134653B1 (en) | 2008-12-17 |
KR20010091939A (ko) | 2001-10-23 |
KR100805286B1 (ko) | 2008-02-20 |
JP2001268072A (ja) | 2001-09-28 |
AU2801901A (en) | 2001-09-20 |
EP1134653A2 (en) | 2001-09-19 |
US6666381B1 (en) | 2003-12-23 |
AU782868B2 (en) | 2005-09-01 |
TW569103B (en) | 2004-01-01 |
EP1134653A3 (en) | 2006-07-19 |
DE60136988D1 (de) | 2009-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3926532B2 (ja) | 情報処理装置、情報処理方法、及びカード部材 | |
JP4188571B2 (ja) | 情報処理装置の演算方法および耐タンパ演算攪乱実装方式 | |
KR100674550B1 (ko) | 정보 처리 장치 | |
KR100373669B1 (ko) | 비밀 정보의 처리 장치, 비밀 정보의 처리 프로그램을 기록한 기록 매체 및 처리 시스템 | |
KR100693239B1 (ko) | 정보 처리 장치, ic 카드 | |
US6968354B2 (en) | Tamper-resistant modular multiplication method | |
CN102638341B (zh) | 用于计算标量乘法的结果的设备和方法 | |
JP4199937B2 (ja) | 耐タンパー暗号処理方法 | |
Tunstall | Smart card security | |
GB2399904A (en) | Side channel attack prevention in data processing by adding a random multiple of the modulus to the plaintext before encryption. | |
US20020124179A1 (en) | Fault detection method | |
AU2005203004B2 (en) | Information processing device, information processing method and smartcard | |
JP4381987B2 (ja) | 耐タンパー情報処理装置並びにそれを用いたicカード及びsimモジュール |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041119 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051104 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051115 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060116 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060116 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060314 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060413 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060602 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070220 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070228 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110309 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110309 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120309 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130309 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130309 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140309 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |