JP2005020735A - Side channel attack prevention in data processor - Google Patents

Side channel attack prevention in data processor Download PDF

Info

Publication number
JP2005020735A
JP2005020735A JP2004181773A JP2004181773A JP2005020735A JP 2005020735 A JP2005020735 A JP 2005020735A JP 2004181773 A JP2004181773 A JP 2004181773A JP 2004181773 A JP2004181773 A JP 2004181773A JP 2005020735 A JP2005020735 A JP 2005020735A
Authority
JP
Japan
Prior art keywords
algorithm
iteration
multiples
data item
option
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.)
Pending
Application number
JP2004181773A
Other languages
Japanese (ja)
Inventor
Andrew Kay
ケイ アンドリュー
John Nonweiler
ノンウエラ ジョン
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.)
Sharp Corp
Original Assignee
Sharp Corp
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 Sharp Corp filed Critical Sharp Corp
Publication of JP2005020735A publication Critical patent/JP2005020735A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide a data processing method which calculates a multiple k of a data item P using a repetitive b<SP>w</SP>related window algorithm. <P>SOLUTION: A data processing method to calculate the multiple k of a data item P which uses a left-to-right "double and addition" type algorithm of a repetitive binary notation with a window size of 2 is provided. An option of the data item which includes at least one multiple of P is provided. In a specific repetition of the algorithm, the multiple of P required for the repetition to be used in a part of the "addition" of the algorithm is decided. Then, the multiple is selected from the option depending on a necessary multiple, and an adjustment indicator is set depending on a relation between a necessary multiple and the selected multiple. In a repetition followed, the necessary multiple is decided depending on the adjust indicator from a previous repetition. A multiplier used in a part of the "double" of the algorithm is 4. <P>COPYRIGHT: (C)2005,JPO&NCIPI

Description

本発明は、データ処理装置における、例えば、データを秘密にするため暗号アルゴリズムを用いたスマートカードにおけるサイドチャネル攻撃防止に関する。   The present invention relates to prevention of side channel attacks in a data processing apparatus, for example, a smart card using a cryptographic algorithm to keep data secret.

添付の図面の図1は、集積回路カード(ICC)として公知の代表的なスマートカードの主な部分を示すブロック図である。図1のスマートカード1は、メモリ部3、中央処理装置(CPU)5、入力/出力(I/O)部7、および処理装置9を含む。CPU5は、メモリ部3、I/O部7、および処理装置9と双方向通信を行う。これらの部分は、通常は、スマートカード1に埋め込まれた1つの集積回路内に含まれる。スマートカード1は接触式タイプであってもよいし、非接触式タイプであってもよい。   FIG. 1 of the accompanying drawings is a block diagram showing the main parts of a typical smart card known as an integrated circuit card (ICC). A smart card 1 in FIG. 1 includes a memory unit 3, a central processing unit (CPU) 5, an input / output (I / O) unit 7, and a processing unit 9. The CPU 5 performs bidirectional communication with the memory unit 3, the I / O unit 7, and the processing device 9. These parts are usually contained within one integrated circuit embedded in the smart card 1. The smart card 1 may be a contact type or a non-contact type.

スマートカード1は、POWER(電力)およびCLKチャネルを介して外部デバイスと通信して、必要な電力およびクロック信号CLKを受信することができ(内部電源またはクロック源を有するスマートカードもあるが)、I/Oチャネルを介して外部デバイスと通信して、データをスマートカード1に通信し、スマートカード1から通信することができる。このような通信は、接触式カードのコンタクトピンを介する電気信号、あるいは、非接触式カードの電磁誘導性、容量性または光結合のいずれかによって行われる。   The smart card 1 can communicate with external devices via the POWER and CLK channels to receive the necessary power and clock signal CLK (although some smart cards have an internal power supply or clock source) Data can be communicated to and from the smart card 1 by communicating with an external device via the I / O channel. Such communication is performed either by electrical signals through contact pins of the contact card or by electromagnetic inductive, capacitive or optical coupling of the non-contact card.

スマートカードは、カードに格納されたデータ、ならびに、カードに通信され、または、カードから通信されるデータのセキュリティおよびインテグリティが最も重要である場合に、多くの用途が見出される。例えば、スマートカードは、カード保持者の身元を証明するために用いられる身分証明書としての役割を果たし得る。スマートカードはまた、その人の病歴を全て格納した医療カードとしても用いられ得る。さらに、スマートカードは、オフライン取引ができるクレジット/デビットバンクカードとして用いられ得る。このような理由により、機密に関わるデータがI/Oチャネルを介してカードから出る前に暗号化されることができるように、スマートカードは暗号化/復号能力を有することが一般的である。   Smart cards find many uses when the security and integrity of the data stored on the card and the data communicated to or from the card is of paramount importance. For example, a smart card can serve as an identity card used to prove the identity of the cardholder. The smart card can also be used as a medical card that stores the entire medical history of the person. Furthermore, the smart card can be used as a credit / debit bank card that allows offline transactions. For this reason, smart cards typically have encryption / decryption capabilities so that sensitive data can be encrypted before leaving the card via the I / O channel.

図1に示すスマートカード1において、このような暗号化は、処理装置9によって行われる。例えば、メモリ部3に格納されたデータがI/Oチャネルを介して外部のリクエストデバイスと通信する必要がある場合、このデータは、CPU5によってメモリ部3からリクエストされ、入力データDINとして処理装置9に送信される。処理装置9は、入力データDINを暗号化して、暗号化された出力データDOUTを生成する。DOUTは、CPU5に返され、I/O部7に転送され、続いてI/Oチャネルで外部のリクエストデバイスに伝送される。   In the smart card 1 shown in FIG. 1, such encryption is performed by the processing device 9. For example, when the data stored in the memory unit 3 needs to communicate with an external request device via an I / O channel, this data is requested from the memory unit 3 by the CPU 5 and is processed as the input data DIN by the processing device 9. Sent to. The processing device 9 encrypts the input data DIN and generates encrypted output data DOUT. DOUT is returned to the CPU 5, transferred to the I / O unit 7, and then transmitted to an external request device via the I / O channel.

任意の適切な暗号化モデルが、暗号化を行うために処理装置9において用いられ得る。スマートカードにおいて用いられる暗号化アルゴリズムの例として、データ暗号化規格(DES)、トリプルDES、アドバンスト暗号化規格(AES)、高速データ暗号化アルゴリズム(FEAL)および国際データ暗号化アルゴリズム(IDEA)などの対称(または秘密)鍵暗号がある。あるいは、リベスト−シャミール−アドレマン(RSA)アルゴリズムおよびラビン暗号化方式などの非対称(または公開)鍵暗号化アルゴリズムの使用も可能である。   Any suitable encryption model can be used in the processor 9 to perform the encryption. Examples of encryption algorithms used in smart cards include data encryption standards (DES), triple DES, advanced encryption standards (AES), high-speed data encryption algorithms (FEAL), and international data encryption algorithms (IDEA). There is a symmetric (or secret) key cipher. Alternatively, the use of asymmetric (or public) key encryption algorithms such as the Rivest-Shamir-Addressman (RSA) algorithm and the Rabin encryption scheme is also possible.

添付の図面の図2は、公開鍵暗号システムおよび秘密鍵暗号システムの両方を表す、従来の暗号化モデルを図示するブロック図である。このモデルにおいて、2つの当事者、XおよびYは、暗号を用いて、公開チャネル13にわたる非公開通信を行おうと試みる。当事者Xは、暗号化ユニットEを用い、暗号化鍵K(非対称暗号化モデルにおいては公開鍵であり、対称暗号化モデルにおいては秘密鍵である)を用いて、平文Tを暗号化して、当事者Yへと公開チャネル13を介して通信される暗号文Cを生成する。当事者Yは、復号ユニットDおよび鍵Kに対応する秘密鍵Kを用いて、暗号文Cを復号して、元の平文Tを再生する。 FIG. 2 of the accompanying drawings is a block diagram illustrating a conventional encryption model that represents both public and private key cryptosystems. In this model, the two parties, X and Y, attempt to conduct a private communication over the public channel 13 using cryptography. Party X uses encryption unit E to encrypt plaintext T using encryption key K X (a public key in the asymmetric encryption model and a secret key in the symmetric encryption model), A ciphertext C to be communicated to the party Y via the public channel 13 is generated. Party Y by using the secret key K Y corresponding to the decoding unit D and the key K X, and decrypts the ciphertext C, and reproduce the original plaintext T.

しかし、第三者ZがXとYとの間の非公開なやりとりを、公開チャネル13をモニタリングすることによって盗聴している。第三者Zは、用いられた暗号アルゴリズムについての全ての詳細を、秘密鍵Kを除いて全て知り得、多くの暗号文のサンプルを持ち、いくつかの平文と暗号文との対を(他の何らかの手段によって当事者Xまたは当事者Yのいずれかから得られた平文とともに)有し得る。このように集められた情報は、その後、計算集約暗号解析にかけられて、用いられた暗号を復号して、暗号文を生成または復号するために用いられた秘密鍵を判定する。 However, a third party Z eavesdrops on a private exchange between X and Y by monitoring the public channel 13. Third party Z knows all the details about the cryptographic algorithm used, except for the secret key K X , has many ciphertext samples, and has several plaintext and ciphertext pairs ( As well as plaintext obtained from either party X or party Y by some other means). The information collected in this way is then subjected to computational aggregation cryptographic analysis to decrypt the used cipher and determine the secret key used to generate or decrypt the ciphertext.

しかし、現代の暗号化技術は、従来の方法で集められた情報の力任せの計算解析に基づく、このような従来の攻撃に対してより抵抗力があるように開発されている。従って、暗号化システムの物理的な実施に基づいてよりわかりにくい別の情報ソースの使用が最近注目されている。   However, modern encryption techniques have been developed to be more resistant to such conventional attacks based on computational analysis of the power collected by conventional methods. Therefore, the use of other information sources that are less obvious based on the physical implementation of the encryption system has recently attracted attention.

実際には、暗号システムは、その環境とインタラクトし、その環境によって影響される物理デバイスにおいてインプリメントされる。ポケットベルおよびスマートカードのような電子デバイスは、動作する間、電力を消費し、放射線を発し、また、温度変化および電磁場に反応する。これらの物理インタラクションが、Zのような第三者によって操作され、モニタリングされて、暗号解析において有用な情報をもたらし得る。図2に示す従来の暗号モデルは、現実の世界において暗号を用いることの物理的副作用について考慮しておらず、より現実的なモデルは、添付の図面の図3に示すように「サイドチャネル」の概念を用いて説明され得る。サイドチャネルは、物理的インプリメンテーションに固有の情報のソースであり、このような情報を用いた攻撃は、「サイドチャネル攻撃」と呼ばれる。   In practice, a cryptographic system is implemented in a physical device that interacts with and is affected by the environment. Electronic devices such as pagers and smart cards consume power, emit radiation, and react to temperature changes and electromagnetic fields while operating. These physical interactions can be manipulated and monitored by a third party such as Z to provide useful information in cryptographic analysis. The conventional encryption model shown in FIG. 2 does not consider the physical side effects of using encryption in the real world, and the more realistic model is a “side channel” as shown in FIG. 3 of the accompanying drawings. Can be explained using the concept of Side channels are a source of information specific to physical implementations, and attacks using such information are called “side channel attacks”.

例えば、暗号関数の計算にかかる時間量は、その関数が何をするかのみに依存するのではなく、どのような入力が通過するかにも依存する。暗号化されるべきメッセージに加えて、暗号化関数は、通常、入力として秘密鍵をとり、従って、秘密鍵の値は、公に観察できるタイミング特徴に影響を与え得る。タイミングサイドチャネル情報に基づくこのような攻撃は、非特許文献1という名前の記事において提案されている。この文献において、攻撃者がいくつかのRSA署名を計算するのにかかる時間の測定値を解析し、署名したエンティティの秘密鍵を推測することができる、暗号解析方法が概説されている。   For example, the amount of time it takes to calculate a cryptographic function depends not only on what the function does, but also on what input passes through. In addition to the message to be encrypted, the encryption function typically takes a secret key as input, so the value of the secret key can affect the timing characteristics that are publicly observable. Such an attack based on timing side channel information has been proposed in an article named Non-Patent Document 1. This document outlines a cryptographic analysis method that allows an attacker to analyze a measure of the time taken to calculate several RSA signatures and infer the secret key of the signed entity.

さらに、電子デバイスは、動作中、電源から電流を引く。電子デバイスが引く電流の量、すなわち、電力消費は、暗号化アルゴリズムの演算の間に論理ゲート(通常は、CMOS)が切り替わるにつれて、変動する。電力消費は、行われている計算と相関するので、敵にとって有用である。電力解析に基づくサイドチャネル攻撃の中で最も脅威的なタイプのうちの1つは、非特許文献2において提案されている差動電力解析(DPA)というタイプのものである。   In addition, the electronic device draws current from the power source during operation. The amount of current drawn by the electronic device, ie, power consumption, varies as the logic gate (usually CMOS) switches during the operation of the encryption algorithm. Power consumption is useful to the enemy because it correlates with the calculations being performed. One of the most threatening types of side channel attacks based on power analysis is a type called differential power analysis (DPA) proposed in Non-Patent Document 2.

サイドチャネル攻撃の他の形態として、暗号化システムに誤りを作為的に導入し、その誤りによって引き起こされた影響をその後モニタリングすることに基づくものがある。非特許文献3において、Boneh、DeMilloおよびLiptonは、インプリメントされた暗号化アルゴリズムについてのハードウェアデバイスリーク情報において誘発されるエラーの観察に基づく、誤りを利用したサイドチャネル攻撃を紹介している。暗号化デバイスをイオン化またはマイクロ波放射にさらすことによって、誤りは、RSA公開鍵暗号アルゴリズムの係数を因数分解するために用いられ得る、レジスタのうちの1つのランダムビット位置に導入され得る。BihimおよびShamirは、故障差分解析(DFA)と呼ばれる誤りに基づくチャネル攻撃を、非特許文献4において提案した。この攻撃は、DESなどの対称または秘密鍵暗号システムに対して有効である。DFAは、200未満の暗号文(平文はなし)を用いて、最後のDESラウンド鍵を見つけることができ、さらに、スマートカードにインプリメントされた未知の暗号システムの構造を明らかにすることすらできる。もっとも良好なDESに対する非サイドチャネル攻撃は、64テラバイトよりわずかに少ない平文および1つの鍵で暗号化された暗号文しか必要としない。   Another form of side channel attack is based on intentionally introducing errors into the encryption system and then monitoring the effects caused by the errors. In Non-Patent Document 3, Boneh, DeMillo and Lipton introduce an error-based side channel attack based on observation of errors induced in hardware device leak information for the implemented encryption algorithm. By exposing the encryption device to ionization or microwave radiation, an error can be introduced into a random bit position in one of the registers that can be used to factor out the coefficients of the RSA public key encryption algorithm. Bihim and Shamir proposed in Non-Patent Document 4 a channel attack based on an error called failure difference analysis (DFA). This attack is effective against symmetric or secret key cryptosystems such as DES. DFA can use less than 200 ciphertexts (no plaintext) to find the last DES round key, and even reveal the structure of an unknown cryptosystem implemented on a smart card. The best non-side channel attacks on DES require slightly less than 64 terabytes of plaintext and ciphertext encrypted with one key.

このようなサイドチャネル攻撃は、デバイスの物理的インプリメンテーションについての秘密情報を明らかにするために、幅広い種類のデータ処理デバイスに適用され得る。このようなサイドチャネル攻撃がさらに高度になってきたため、サイドチャネルに漏れる情報を可能な限り少なくし、誤りを導入することをより困難にし、試みられた攻撃を検出することによって、このような技術的課題に対処し、その攻撃からスマートカードのようなデータ処理デバイスを保護することが重要である。   Such side channel attacks can be applied to a wide variety of data processing devices to reveal confidential information about the physical implementation of the device. As such side-channel attacks have become more sophisticated, such techniques can be achieved by reducing the information leaked into the side channel as much as possible, making it more difficult to introduce errors and detecting attempted attacks. It is important to address common challenges and protect data processing devices such as smart cards from the attack.

当事者XがRSAアルゴリズムを用いてメッセージmを暗号化し、当事者Yが受け取って復号するとする。当事者Xは、まず、当事者Yの公開鍵(N、e)を取得し、これに基づいて、暗号化されるメッセージmを整数として間隔[0:N−1]で表す。その後、当事者Xは、メッセージmを暗号化して、以下のアルゴリズムを用いて、暗号文cを生成する。
c=m mod N
以下により詳細に説明される標準的な二乗および乗算技術を用いると、このアルゴリズムは、mにmをe回乗算し、解をモジュロNで表したものと等しい。
Assume that party X encrypts message m using the RSA algorithm, and party Y receives and decrypts it. The party X first obtains the public key (N, e) of the party Y, and based on this, the message m to be encrypted is expressed as an integer [0: N−1]. Thereafter, the party X encrypts the message m and generates a ciphertext c using the following algorithm.
c = m e mod N
Using standard square and multiplication techniques described in more detail below, this algorithm is equivalent to multiplying m by m times m and expressing the solution in modulo N.

cから平文mを復元するため、当事者Yは、自身の秘密鍵dを用いて、以下のアルゴリズムを行う。   In order to restore the plaintext m from c, the party Y performs the following algorithm using its private key d.

m=c mod N
従って、この復号演算は、暗号化演算と同じモジュラ累乗法形式を用いる。
m = c d mod N
Therefore, this decryption operation uses the same modular exponentiation format as the encryption operation.

公開鍵(N、e)を生成し、対応する秘密鍵dを生成するため、当事者Yによって用いられる方法は、以下の通りである。2つの大きな素数、pおよびqが選択され、その積N=pqが計算される。ただし、Nは公開鍵係数を形成する。公開鍵からの値eは、Nより小さく、(p−1)(q−1)と互いに素になるように選択される。これは、eと(p−1)(q−1)とは、1以外に公約数を持たないことを意味する。dの値は、(ed−1)が(p−1)(q−1)によって乗算できるようになるように見うけられる。因子pおよびqは、破棄されてもよいし、強化秘密鍵(d、p、q)と共に保持されてもよい。さらなる詳細を、例えば、非特許文献5に見出すことができる。   The method used by party Y to generate the public key (N, e) and the corresponding private key d is as follows. Two large prime numbers, p and q, are selected and the product N = pq is calculated. N forms a public key coefficient. The value e from the public key is selected to be smaller than N and relatively prime to (p−1) (q−1). This means that e and (p-1) (q-1) have no common divisor other than 1. The value of d is seen so that (ed-1) can be multiplied by (p-1) (q-1). Factors p and q may be discarded or kept with a strong secret key (d, p, q). Further details can be found, for example, in Non-Patent Document 5.

送信されたデータを秘密にし、その後、対応する秘密鍵dを以降の復号に用いる公開鍵(N、e)を用いることの代替例として、秘密鍵dは、署名の一形態として、メッセージmを暗号化するために、代替的に用いられ得、そのことによって、受け取り側の当事者は、メッセージmが本物であることと、改竄されていないこととの両方が保証され得る。このようにして、当事者Yは、s=m mod Nを用いることによって、自身の秘密鍵dを用いてデジタル署名sを作成し得る。その後、当事者Yは、mとsとの両方を当事者Yに送信し得る。署名を照合するため、当事者Xは、当事者Yの公開鍵(N、e)を用いてm=s mod Nを計算し、元のメッセージmが復元されたことをチェックする。 As an alternative to using the public key (N, e) for keeping the transmitted data secret and then using the corresponding private key d for subsequent decryption, the private key d is a message in the form of a message m. It can alternatively be used to encrypt, so that the receiving party can be assured that the message m is both genuine and not tampered with. In this way, party Y can create a digital signature s using his private key d by using s = m d mod N. Party Y may then send both m and s to party Y. To verify the signature, party X calculates m = s e mod N using party Y's public key (N, e) and checks that the original message m has been restored.

累乗法演算mは、以下の擬似コードに示すように、「二乗および乗算」方法を用いて、実行され得る。ただし、dは、dのi番目の二進数字である。 Exponentiation operation m d, as shown in the following pseudo code, using the "square and multiply" method, may be performed. Where d i is the i-th binary digit of d.

a=1
for i=n down to 0
a=a*a
if(d==1) then a=a*m
return a
効率化のため、このようなアルゴリズムにおいては、全体の結果のmod Nが全ての中間計算 mod Nを軽減させる場合、乗算演算が「a=(a*m)mod N」になり、二乗演算がa=(a*a) mod Nになるようにすることが一般的である。
a = 1
for i = n down to 0
a = a * a
if (d i == 1) then a = a * m
return a
In order to improve efficiency, in such an algorithm, when mod N of the overall result reduces all intermediate calculations mod N, the multiplication operation is “a = (a * m) mod N”, and the square operation is In general, a = (a * a) mod N.

従って、暗号化および認証は、秘密鍵を共有することなく行われる。それぞれが、他方の公開鍵または自身の秘密鍵のみを用いる。誰でも、暗号化されたメッセージを送信するか、または署名されたメッセージを照合することができるが、正確な秘密鍵を所有する者のみがメッセージを復号するか、または署名することができる。   Therefore, encryption and authentication are performed without sharing a secret key. Each uses only the other public key or its own private key. Anyone can send an encrypted message or verify a signed message, but only those who have the correct private key can decrypt or sign the message.

RSAの中国人剰余定理(CRT)バージョンは類似し、同じ結果をもたらす:
s=(m mod p+p*(p−1 mod q)*(m mod q−m mod p))mod p*q。
The Chinese Remainder Theorem (CRT) version of RSA is similar and yields the same results:
s = ( md mod p + p * (p −1 mod q) * ( md mod q− md mod p)) mod p * q.

このアルゴリズムの秘密鍵は、(d、p、q)である。ただし、(p*q)は、公開鍵係数Nと等しい。CRTバージョンにおいて、スピード効率(m mod p)は、(md mod p−1 mod q)として計算され、(m mod q)は(md mod q−1 mod q)として計算される。従って、2つの別個の累乗法演算が行われる。 The secret key of this algorithm is (d, p, q). However, (p * q) is equal to the public key coefficient N. In CRT version, speed efficiency (m d mod p) is calculated as (m d mod p-1 mod q), (m d mod q) is calculated as (m d mod q-1 mod q). Thus, two separate power arithmetic operations are performed.

RSAアルゴリズムに対してサイドチャネル攻撃を行うことをより困難にするため、可能な限り計算にランダムさを加えることが有用である。これは、低いレベルで、例えば、演算のタイミングをランダムにすること、ランダムな間隔にダミー演算を追加すること、または、場合によっては、中間のステップを計算する複数の異なる様式からランダムに選択することによって行われ得る。あるいは、入力および計算がランダムになるが、出力が正確であり続けるように、マスキングがRSAなどのアルゴリズムの入力に追加され得る。本出願人の同時係属出願中の英国特許出願第0307197.4号は、結果に影響しない様態で、ブラインディングされた性質の値を偽装する、底、べき指数、および係数のうちの1つの「ブラインディング」を開示している。本出願人の同時係属出願中の英国特許出願第0305596.9号においては、2つの同一であるが、並列でない計算の結果が比較され、挿入された誤りが検出されることを可能にする。   In order to make it more difficult to perform side channel attacks against the RSA algorithm, it is useful to add randomness to the calculation as much as possible. This is at a low level, for example, randomizing the timing of operations, adding dummy operations at random intervals, or possibly randomly selecting from multiple different ways of calculating intermediate steps Can be done. Alternatively, masking can be added to the input of an algorithm such as RSA so that the inputs and calculations are random, but the output remains accurate. Applicant's co-pending UK Patent Application No. 0307197.4 is one of the bases, exponents, and coefficients that impersonate the value of a blinded property in a manner that does not affect the results. Blinding "is disclosed. In the applicant's co-pending UK patent application 0305596.9, the results of two identical but not parallel calculations are compared to allow the inserted error to be detected.

公開鍵システムは、大きな有限群を用いた演算の性質を利用する。多くの方法、例えば、SPEKE、Diffie−Hellman、ElGamal、およびDSSなどにおいて、セキュリティは、2つの群演算、すなわち、累乗法および離散対数計算を行う相対的な困難さに直接依存する。累乗法演算は、その逆の演算である離散対数計算よりも計算が容易である。一般的に用いられる群において、整数のモジュラ乗算を用いると、離散対数計算のみが、係数が非常に大きい場合に困難である。このことは、累乗法を、効果的に「一方向」関数にする。しかし、大きな累乗法は高価であるので、効率的に動作する群を見出すことが重要である。   Public key systems use the nature of operations using large finite groups. In many methods, such as SPEKE, Diffie-Hellman, ElGamal, and DSS, security is directly dependent on the relative difficulty of performing two group operations: exponentiation and discrete logarithmic computation. The power method operation is easier to calculate than the discrete logarithm calculation which is the reverse operation. Using integer modular multiplication in a commonly used group, only discrete logarithmic calculations are difficult when the coefficients are very large. This effectively makes the power method a “one-way” function. However, since large power methods are expensive, it is important to find a group that operates efficiently.

楕円曲線暗号化の技術は、より速く、より小さい鍵を用いて、同等レベルのセキュリティを提供する場合もあるバージョンの公開鍵方法を提供し得る。楕円曲線を用いることの利点は、公開鍵演算の異なる種類の数学的群を用いることから得られる。楕円曲線離散対数問題は、通常の群における離散対数演算とは異なり、ある程度難しい。インプリメンテーションは、この違いを利用して、あるレベルのセキュリティについて、速くなったスピードと、小さくなった鍵サイズとの両方を提供することができる。SPEKE、Diffie−Hellman、および多くの他の公開鍵方法は、利用可能なインプリメンテーションのうち、最も良好なものを利用するように、楕円曲線、または任意の適切な群を用いて動作するように調節され得る。   Elliptic curve encryption techniques may provide a version of a public key method that may provide a comparable level of security with a faster, smaller key. The advantage of using an elliptic curve is derived from using different kinds of mathematical groups for public key operations. The elliptic curve discrete logarithm problem is difficult to some extent, unlike the discrete logarithm calculation in a normal group. An implementation can take advantage of this difference to provide both a faster speed and a reduced key size for a certain level of security. SPEKE, Diffie-Hellman, and many other public key methods will work with elliptic curves, or any suitable group, to utilize the best of the available implementations. Can be adjusted to.

次に、楕円曲線の簡単な概略を以下に説明するが、楕円曲線暗号化についてのさらなる情報は、非特許文献6、非特許文献7にも見受けられ得る。   Next, a brief outline of the elliptic curve will be described below, but further information on elliptic curve encryption can also be found in Non-Patent Document 6 and Non-Patent Document 7.

添付の図面の図4は、式y+y=x−xによって定められる、簡単な楕円曲線を示す。水平および垂直方向の点線のグリッド線は、それぞれ、X座標およびY座標の整数値を表すので、グリッド線のそれぞれの交点は、一対の整数の(x,y)座標である。楕円は、ある有限数の(x,y)交点を交差し、これらの点は、図4において点で印がつけられている。 FIG. 4 of the accompanying drawings shows a simple elliptic curve defined by the equation y 2 + y = x 3 −x 2 . Since the dotted grid lines in the horizontal and vertical directions represent integer values of the X coordinate and the Y coordinate, respectively, the intersections of the grid lines are a pair of integer (x, y) coordinates. The ellipse intersects a finite number of (x, y) intersections, which are marked with dots in FIG.

「加算」演算子は、3番目の位置を特定するために、任意の2点を結合するために定義され、これらの点についてのこの「加算」演算子は、数学的有限群を形成する。図4の楕円曲線は、5つの点の群を定義する。これは、暗号化の目的にとっては実用的でないが、点演算が楕円曲線とともにどのように働くのかを示すために有用である。   An “addition” operator is defined to join any two points to specify the third position, and this “addition” operator for these points forms a mathematical finite group. The elliptic curve in FIG. 4 defines a group of five points. This is not practical for encryption purposes, but is useful for showing how point operations work with elliptic curves.

この曲線を通る全ての直線が正確に3点でこの曲線と交差するという事実を用いて、2点uおよびvを加算する規則は、以下の通りである。(i)uおよびvを通る直線を引き、第3の交点wを見つける。その後、(ii)wを通る垂線を引いて他の交点zを見つける。和u+v=zである。   Using the fact that all straight lines passing through this curve intersect this curve at exactly three points, the rule for adding two points u and v is as follows: (I) Draw a straight line through u and v to find the third intersection point w. Then, (ii) Draw a perpendicular line through w to find another intersection point z. The sum u + v = z.

この規則が成立するためには、余分な想像上の点O(原点と呼ばれる)、すなわち、無限遠点が定義される必要がある。Oは、無限に高い「トップ」、全ての垂線が収束するとされるところに位置すると考えられ得る。点Oはまた、特定の(x,y)座標は持たないが、曲線上にあると定義される。従って、図4に示す曲線は、(0,0)(1,−1)、(1,0)(0,−1)、および、O、すなわち、{a,b,c,d,O}を通る。   In order for this rule to hold, an extra imaginary point O (called the origin), that is, a point at infinity needs to be defined. O can be thought of as an infinitely high “top”, where all the normals are supposed to converge. Point O is also defined as being on a curve, although it does not have a specific (x, y) coordinate. Therefore, the curves shown in FIG. 4 are (0,0) (1, -1), (1,0) (0, -1), and O, that is, {a, b, c, d, O}. Pass through.

さらに、一点で接する接線は、その点を2回交差すると言われる(接線は、曲線上の2点が互いに近づいたときの極限である)。従って、図4に示す曲線において、aおよびbを通る線は、「第3の点」bを通り、この線は、[a,b,b]で表される。   Furthermore, a tangent that touches at a point is said to intersect that point twice (a tangent is the limit when two points on the curve approach each other). Therefore, in the curve shown in FIG. 4, the line passing through a and b passes through the “third point” b, and this line is represented by [a, b, b].

上記で定義したようなさらなる規則を用いて、a+bの和は、まず、点aおよびbを通る接線[a,b,b]を引いて、bが第3の交点であることを見出して、その後、bを通る垂線[O,c,b]を引き、他の交点、すなわちcを見つけることによって、決定される。従って、a+b=cである。   Using further rules as defined above, the sum of a + b first finds that b is the third intersection point by subtracting tangents [a, b, b] through points a and b, It is then determined by drawing a normal [O, c, b] through b and finding another intersection, c. Therefore, a + b = c.

同様に、a+a=bである。これは、[a,a,c](点aでの曲線の接線)によってcが得られ、[O,c,b]によってbが得られるからである。空想上の垂線[O,O,O]を使うことによって、その鏡像と加算された全ての点について、a+d=O、c+b=Oなどである場合もある。a+d=Oおよびc+b=Oであるので、当然、a=−dおよびc=−bになる。   Similarly, a + a = b. This is because c is obtained by [a, a, c] (tangent to the curve at point a) and b is obtained by [O, c, b]. By using an imaginary perpendicular [O, O, O], there may be a + d = O, c + b = O, etc. for all points added to the mirror image. Since a + d = O and c + b = O, naturally, a = −d and c = −b.

ある点のスカラー乗算は、その点自体を単に繰り返し加算することである。a+a=b、およびa+b=cであることから、当然、3a=cになる。点Oは、群識別要素である。これは、任意のvについて、v+O=vだからである。点Oを加算することは、乗算mod pのもとで通常の整数群において、1を乗算することと類似する。   A scalar multiplication at a point is simply a repeated addition of the point itself. Since a + a = b and a + b = c, naturally, 3a = c. Point O is a group identification element. This is because for any v, v + O = v. Adding the point O is similar to multiplying 1 in a normal integer group under the multiplication mod p.

図21は、楕円曲線の点の加算および倍加のさらなる例ならびに負の楕円曲線の点の概念を提供する、楕円曲線の他の例を示す図である。上記と同じ規則を用いて、図21は、R=P+Q;U=−R(U+R=O);T=P+P=2.P;およびS=−T(S+T=O)であることを示す。   FIG. 21 is a diagram showing another example of an elliptic curve providing a further example of addition and doubling of elliptic curve points and the concept of negative elliptic curve points. Using the same rules as above, FIG. 21 shows that R = P + Q; U = −R (U + R = O); T = P + P = 2. P; and S = −T (S + T═O).

楕円曲線における加算演算は、共通公開鍵暗号化システムにおけるモジュラ乗算に相当するものであり、倍数加算は、モジュラ累乗法に相当するものである。   The addition operation in the elliptic curve corresponds to modular multiplication in the common public key encryption system, and the multiple addition corresponds to the modular power method.

従って、楕円曲線は、ある特定の代数的性質を有する点の特別な集合であると考えられ得る。これには、曲線の1点(または複数の点)を入力として取り、ある曲線の1点を返す、例えば、上記の加算演算のような特定の「点演算」の計算可能な定義が含まれる。点は、座標の順序が付けられたタプルとして表され得る。座標は、基礎をなす数学的フィールドの要素(例えば、点P=<x,y>またはP=<x,y,z>)である。フィールドは、大きな素数を法とする整数の演算であってもよいし、または、固定された多項式を法とする多項式の係数と見なされる小さい整数のベクトルについての演算であってもよいし、あるいは、CPUまたはコプロセッサで計算可能な任意の他の表現であってもよい。点演算は、点座標についてのフィールド演算として定義される。   Thus, an elliptic curve can be thought of as a special set of points with certain algebraic properties. This includes a computable definition of a specific “point operation”, such as the above addition operation, which takes as input one (or more) points of a curve and returns one point of a curve. . Points can be represented as tuples with coordinate ordering. Coordinates are elements of the underlying mathematical field (eg, point P = <x, y> or P = <x, y, z>). The field may be an integer operation modulo a large prime number, or an operation on a vector of small integers that is considered a coefficient of a polynomial modulo a fixed polynomial, or Any other representation that can be computed by the CPU or coprocessor. Point operations are defined as field operations on point coordinates.

P、QおよびRが固定された楕円曲線上の任意の点である場合、上述したように点は加算され得(表記:P+Q)、この加算演算は、曲線点の集合をアーベル群に変換する。「曲線群のオーダー」は、単に曲線における点の数である。Oと書かれる曲線上の特別な点は、加算演算においてゼロとして作用する。すなわち、P+O=O+P=Pである。ゼロ点は、通常のタプル空間の外側にあるので、通常、特別な表現を有する。加算は、結合可能(P+(Q+R)=(P+Q)+R)であり、交換可能(P+Q=Q+P)である。減算は、通常の方法で定義される。P+Q=Rの場合、P−R=Qである。記号−Qは、O−Qの簡略的表記である。点−Qは、通常、自明の計算であり、P−Qは、通常、P+(−Q)として計算される。   If P, Q and R are arbitrary points on a fixed elliptic curve, the points can be added as described above (notation: P + Q), and this addition operation converts the set of curve points into an abelian group. . The “curve group order” is simply the number of points in the curve. A special point on the curve written O acts as zero in the addition operation. That is, P + O = O + P = P. Since the zero point is outside the normal tuple space, it usually has a special representation. The addition is combinable (P + (Q + R) = (P + Q) + R) and can be exchanged (P + Q = Q + P). Subtraction is defined in the usual way. When P + Q = R, P−R = Q. The symbol -Q is a simplified notation for OQ. The point -Q is usually a trivial calculation, and P-Q is usually calculated as P + (-Q).

点P+Pは、2.Pと書かれ得、これは、点の倍加と呼ばれる。これは、「点乗算」と一般化され得、従って、整数kについて、k.Pは、点Pのk個のコピーの和に等しい(かつ、(−k).P=k.(−P)である)。通常、kが曲線上の点の数より少ないことを保証する。O.P=Oであり、k.P+m.P=(k+m).Pであることに留意されたい。   The point P + P is 2. Can be written P, and this is called point doubling. This can be generalized as “point multiplication”, so for integer k, k. P is equal to the sum of k copies of the point P (and (−k) .P = k. (− P)). Usually it is guaranteed that k is less than the number of points on the curve. O. P = O, k. P + m. P = (k + m). Note that P.

点をそれ自体に加算すること、すなわち、点の倍加は、等しくない点の一般的な加算(または減算)とは、(フィールド演算において)非常に異なる計算を有し得る。すなわち、等しい点に対する通常の加算のためのアルゴリズムは、失敗する。同様に、点をそれ自体から減算すること(Oを生成すること)は、非常に異なるアルゴリズムを有し、O点を用いる演算は、異なるアルゴリズムを有する。   Adding a point to itself, i.e., doubling a point, may have a very different calculation (in a field operation) than a general addition (or subtraction) of unequal points. That is, the algorithm for normal addition to equal points fails. Similarly, subtracting a point from itself (generating O) has a very different algorithm, and operations using O points have a different algorithm.

楕円曲線暗号化(ECC)において、曲線上の点Pは、秘密の整数kで「乗算」され、新たな点k.Pが得られる。点k.Pは、kの二進数表現に依存するシーケンスにおいて、点を倍加(D)させることおよび加算(A)することによって計算され得る。整数kは、代表的には、約200ビットの長さであり、従って、乗算の効率的なインプリメンテーションを用いることが重要である。   In elliptic curve encryption (ECC), a point P on the curve is “multiplied” by a secret integer k to produce a new point k. P is obtained. Point k. P can be calculated by doubling (D) and adding (A) the points in a sequence that depends on the binary representation of k. The integer k is typically about 200 bits long, so it is important to use an efficient implementation of multiplication.

左から右への(left−to−right)アルゴリズムの1つにおいて、Oは、アキュムレータRに格納され、kのビットが、高いものから(左から右とは、高いビットから低いビットという意味である)一度に1つずつ取り出される。0ビットに達するとき、D(倍加)演算、すなわち、R:=2.Rを行う。そうでない場合は、1ビットに達し、DおよびA(加算)演算、すなわち、R:=(2.R)+Pを行う。その後、全てのビットに達するまで、次のビットを用いて繰り返される。その時点で、Rは、k.Pを含む。このアルゴリズムは、累乗法演算に関連して上述した「二乗および乗算」技術に密接に関連するが、「二乗および乗算」法ではなく、「倍加および加算」法である。これは、楕円曲線における加算演算とモジュラ乗算との対応、および、楕円曲線における倍数加算とモジュラ累乗法との関連のためである。   In one of the left-to-right algorithms, O is stored in the accumulator R, and k bits from high to low (left to right means high to low bits. Yes, one at a time. When the 0 bit is reached, a D (double) operation, ie R: = 2. Perform R. Otherwise, it reaches 1 bit and performs D and A (addition) operations, ie R: = (2.R) + P. It is then repeated with the next bit until all bits are reached. At that point, R is k. P is included. This algorithm is closely related to the “square and multiply” technique described above in connection with the power operation, but is not a “square and multiply” method but a “double and add” method. This is because of the correspondence between the addition operation in the elliptic curve and the modular multiplication, and the relation between the multiple addition in the elliptic curve and the modular power method.

例えば、kが二進法で100011(すなわち、十進法の35)であるとする。演算のシーケンスは以下の通りである:
ビット識別子: 6 5 4 3 2 1
kのビット: 1 0 0 0 1 1
演算: DA D D D DA DA
基本的な「倍加および加算」法は、添付の図面の図5に示されている。図5は、整数kおよび点pを入力として取り、積k.Pを返す、関数「pointmult」の擬似コードを示す。
For example, suppose k is binary 1000011 (ie, decimal 35). The sequence of operations is as follows:
Bit identifier: 6 5 4 3 2 1
k bits: 1 0 0 0 1 1
Arithmetic: DA D D D DA DA
The basic “double and add” method is shown in FIG. 5 of the accompanying drawings. FIG. 5 takes an integer k and a point p as inputs and takes the product k. The pseudo code of the function “pointmulti” that returns P is shown.

図5、ならびに、以下の記載および図面において、以下の表記が用いられる。xおよびyが整数の場合、x^yは、xのy乗を表す。xが二進法の数とする。xにおけるビットの数は、xの長さであり、│x│で表される。xのi番目のビットは、x_i(xに下付のi)と示される。最下位ビットはx_0であり、最上位ビットはx_{n−1}である。ただし、n=│x│である。   In FIG. 5 and the following description and drawings, the following notation is used. When x and y are integers, x ^ y represents x to the power of y. Let x be a binary number. The number of bits in x is the length of x and is represented by | x |. The i-th bit of x is denoted x_i (subscript i to x). The least significant bit is x_0, and the most significant bit is x_ {n-1}. However, n = | x |.

便宜上、関数「B」は、二進数の数から連続するサブシーケンスを取り出し、符号なし整数に変換すると定義される。関数B(x,s,t)(n>s>=t>=0)は、(x_i*2^(i−t))の整数値の和(i=sからtまで)を表す。   For convenience, the function “B” is defined to take a continuous subsequence from a binary number and convert it to an unsigned integer. The function B (x, s, t) (n> s> = t> = 0) represents the sum of integer values (from i = s to t) of (x_i * 2 ^ (it)).

例えば、xが二進数の数100011(十進数で35)である場合、│x│=6;x_5=1;x_4=x_3=x_2=0;x_1=x_0=1である。B(x,3,1)=1であり、これは、サブシーケンス「001」の符号なし二進数値である。B(x,5,4)=2であり、これは、サブシーケンス「10」の符号なし二進数値である。   For example, when x is a binary number 100011 (35 in decimal), | x | = 6; x_5 = 1; x_4 = x_3 = x_2 = 0; x_1 = x_0 = 1. B (x, 3,1) = 1, which is an unsigned binary value of subsequence “001”. B (x, 5,4) = 2, which is the unsigned binary value of subsequence “10”.

添付の図面の図6は、k=35(二進数で100011)の場合の図5のアルゴリズムのウォークスルーを示す。点レジスタRは、初期的には、値O、すなわち、ゼロ点に設定され、変数iは│k│に設定される。ダミー加算を以下に説明する。   FIG. 6 of the accompanying drawings shows a walk-through of the algorithm of FIG. 5 for k = 35 (binary 100011). The point register R is initially set to the value O, ie the zero point, and the variable i is set to | k |. The dummy addition will be described below.

kがnビットを有する(従って、k<2^nである)場合、基本的な「倍加および加算」アルゴリズムは、n倍加(D)演算および平均(n/2)加算(A)演算、3n/2演算の総計、ならびに2点(PおよびR)の記憶を必要とする。   If k has n bits (thus k <2 ^ n), the basic “double and add” algorithm is an n double (D) operation and an average (n / 2) addition (A) operation, 3n Requires a total of / 2 operations and storage of 2 points (P and R).

値kは、攻撃者が時間とお金とを使って得ようとする秘密の量であり得る(例えば、非特許文献8を参照のこと)。例えばスマートカードにおける安全なインプリメンテーションにおいて、kは、カード上で生成され、カードの外に出されることはない。kがランダムに生成され、各暗号化演算につき1回しか用いられない場合もある(例えば、ECDSA署名生成)。攻撃者が、1回ごとにkのうちの数ビットでも取得することができれば、それは、カードをクラッキングし、そのアイデンティティ、すなわち、秘密鍵を盗むために十分な情報となり得る(非特許文献9、非特許文献10、ならびに非特許文献11、非特許文献12を参照されたい)。   The value k may be a secret amount that an attacker wants to obtain using time and money (see Non-Patent Document 8, for example). For example, in a secure implementation in a smart card, k is generated on the card and never goes out of the card. In some cases, k is randomly generated and used only once for each encryption operation (eg, ECDSA signature generation). If an attacker can get even a few bits of k at a time, it can be enough information to crack the card and steal its identity, ie the secret key (Non-Patent Document 9, Non-Patent Document 9, (See Patent Literature 10, Non-Patent Literature 11, and Non-Patent Literature 12).

上述したように、ECC乗算を実行するデバイスは、乗数kについての情報を探そうとしている攻撃者によって、いくつかの方法、例えば、計算の時間を正確に計ること、デバイスの電力供給をモニタリングすること、または、電磁放射を観察することによって、観察され得る。これらの方法および他の方法(あるいは、これらの組合せ)は、「サイドチャネル攻撃」と呼ばれる。このようなことが起こるのは、殆どのプラットフォームにおいて、デバイスによって用いられる実際の電力が、デバイスが行っている演算、およびデバイスが演算を行っている値に依存するからである。全ての演算が同じ電力を用いるようにすることは、特に、スマートカードのような小型の低電力デバイスにおいて高価であり、他の方法が演算を隠すために見つけられる必要がある。   As described above, a device performing ECC multiplication can be monitored in several ways, for example by accurately timing the computation, monitoring the power supply of the device, by an attacker seeking information about the multiplier k. Or by observing electromagnetic radiation. These and other methods (or combinations thereof) are referred to as “side channel attacks”. This happens because, on most platforms, the actual power used by the device depends on the operation that the device is performing and the value that the device is performing. Making all operations use the same power is expensive, especially in small low power devices such as smart cards, and other methods need to be found to hide the operations.

点倍加(D)の電力または放射トレースが、点加算(A)の電力トレースと異なる場合、攻撃者は、DおよびAのシーケンスをトレースして、kの値を読む。これは、SPA(シンプル電力解析)と呼ばれる。アルゴリズムを隠すために何の手段もとられない場合、そのアルゴリズムは恐らく安全でない。攻撃者が点減算と点加算とを区別することを難しくすることは、フィールド演算が数学的に類似するので簡単である。しかし、攻撃者がDとAとを区別することは(フィールド演算がかなり異なるので)容易である。また、曲線のゼロ点(O)の加算または倍加は、一般的な点を加算することとは非常に異なる。ECCのインプリメンテーションにおいて、A演算は、点の倍加を行うために用いられることができない。演算が異なり、A演算の2つのオペランドは異なる必要がある。   If the point doubling (D) power or radiation trace is different from the point addition (A) power trace, the attacker traces the D and A sequence and reads the value of k. This is called SPA (simple power analysis). If no measures are taken to hide the algorithm, the algorithm is probably not secure. Making it difficult for an attacker to distinguish between point subtraction and point addition is easy because the field operations are mathematically similar. However, it is easy for an attacker to distinguish between D and A (since field operations are quite different). Also, adding or doubling the zero point (O) of the curve is very different from adding a general point. In ECC implementations, the A operation cannot be used to perform point doubling. The operations are different and the two operands of the A operation need to be different.

基本的な「倍加および加算」法の変形は、各ビットにおいて、DおよびA演算の両方を行うことである。ビットが0である場合、Aは、さらなる加算が実際に必要とされないので、ダミー演算に過ぎない。可能性の1つとして、Pをいくつかの他の点Qにダミー加算し、結果を無視することがある。これによって、ダミー演算を適切に隠すこと、すなわち、電力トレースの観点からは実際の演算のように見せかけることができるならば、SPAの問題が低減される。これに伴う主な問題は、以上のことが必要とされる、3つの点(P,Q,R)の格納、および2.│k│演算により各ビットにおいて2つの演算が必要とされるので、遅いということである。これらのダミー演算は、図6に示される。図6においては、ビット5、4および3のためのステップがダミー加算を必要とする。
Paul Kocherら著、「Timing Attacks on Implementation of Diffie−Hellman,RSA,DSS and Other Systems」、CRYPTO‘96 Kocherら著、「Differential Power Analysis」、CRYPTO‘99 Boneh、DeMilloおよびLipton著、「On the Importance of Checking Cryptographic Protocols for Faults」、1997年 BihimおよびShamir著、「Differential Fault Analysis of Secret Key Cryptosystems」、CRYPTO’97、 Menezes著、「Handbook of Applied Cryptography」 A.Menezes著、「Elliptic Curve public Key Cryptosystems」 Kluwer Academic Publishers 1993年 Ian Blake、Gadiel Seroussi、Nigel Smart著、「Elliptic Curves in Cryptography」、London Mathematical Society Lecture Note Series LMS 256 Cambridge University Press、1999年 「Public Key Cryptography for the financial services industry: Elliptic Curve Digital Signature Algorithm(ECDSA)」、American National Standards Institute ANSI X9.62−1998、1998年 N.P.SmartおよびN.Howgrave著、「Lattice attacks on digital signature schemes」 Graham、Designs,Codes and Cryptography、23(3):283−290、2001年8月 http://www.cs.bris.ac.uk/Tools/Reports/Abstracts/2001−smart.html P.NguyenおよびI.E.Shparlinski著、「The insecruty of the elliptic curve Digital Signature Algorithm with partially known nonces」、Preprint、2000、1−20、2000年 http://citeseer.nj.nec.com/article/nguyen00insecurity.html
A variation of the basic “double and add” method is to perform both D and A operations on each bit. If the bit is 0, A is only a dummy operation because no further addition is actually required. One possibility is to dummy add P to some other point Q and ignore the result. This reduces the SPA problem if the dummy operation can be properly hidden, i.e., can appear to be an actual operation from a power trace perspective. The main problems with this are the storage of the three points (P, Q, R) where the above is required, and 2. This is slow because the | k | operation requires two operations at each bit. These dummy operations are shown in FIG. In FIG. 6, the steps for bits 5, 4 and 3 require a dummy addition.
Paul Kocher et al., “Timing Attacks on Implementation of Diffie-Hellman, RSA, DSS and Other Systems”, CRYPTO '96. Kocher et al., “Differential Power Analysis”, CRYPTO'99 By Boneh, DeMillo and Lipton, "The the Importance of Checking Cryptographic Protocols for Faults", 1997 Bihim and Shamir, “Differential Fault Analysis of Secret Key Cryptosystems”, CRYPTO '97, By Menezes, "Handbook of Applied Cryptography" A. By Menezes, "Elliptic Curve public Key Cryptosystems" Kluwer Academic Publishers 1993 Ian Blake, Gadiel Seroussi, Nigel Smart, "Elliptic Curves in Cryptography", London Mathematic Society Lecturer, Notes, Notes, LMS, 256, CMS “Public Key Cryptography for the final services industry: Elliptic Curve Digital Signature Algorithm (ECDSA), 19” N. P. Smart and N.M. Howgrave, “Lattice attacks on digital signature schemes” Graham, Designs, Codes and Cryptography, 23 (3): 283-290, August 2001. http: // www. cs. bris. ac. uk / Tools / Reports / Abstracts / 2001-smart. html P. Nguyen and I. E. Shparlinski, "The insult of the elliptical curve, Digital Signature Algorithm with partial knowledge," Preprint, 2000, 1-20, 2000. http: // siteser. nj. nec. com / article / nguyen00insurity. html

本発明は、反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理方法を提供することを目的とする。ここで、bは、倍数kの底であり、wはウィンドウサイズである。本発明はまた、楕円曲線暗号に用いる、効果的であり、かつ、セキュアな点演算を提供することを目的とする。 It is an object of the present invention to provide a data processing method for calculating a multiple k of a data item P using an iterative bw related window algorithm. Here, b is the base of multiple k and w is the window size. Another object of the present invention is to provide an effective and secure point calculation used for elliptic curve cryptography.

本発明の第1の局面によると、反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理方法であって、ここで、bは、倍数kの底であり、wはウィンドウサイズであり、該方法は、少なくとも1つのPの倍数を含むデータアイテムの選択肢を提供するステップと、該アルゴリズムの特定の反復について、その反復に必要なPの倍数を決定し、該必要な倍数に依存して該選択肢から選択した倍数を用い、該必要な倍数と該選択された倍数との関係に依存して調節インジケータを設定するステップと、後に続く反復において、前回の反復からの該調節インジケータに依存して該必要な倍数を決定するステップとを包含する、方法が提供される。 According to a first aspect of the present invention, there is provided a data processing method for calculating a multiple k of a data item P using an iterative b w related window algorithm, wherein b is a base of the multiple k, w is the window size and the method provides a choice of data items containing at least one multiple of P, and for a particular iteration of the algorithm, determines the multiple of P required for that iteration; Using a multiple selected from the option depending on the required multiple, setting an adjustment indicator depending on the relationship between the required multiple and the selected multiple, and in subsequent iterations from the previous iteration. Determining the required multiple as a function of the adjustment indicator.

前記方法は、前記選択された倍数を、利用可能である場合、倍数の記憶場所から取り出し、そうでない場合、該選択された倍数を計算するステップを包含し得る。後に続く取り出しのため、前記倍数の記憶場所に新たに計算された倍数が格納され得る。前記選択肢内の少なくとも1つの倍数が事前計算され、該少なくとも1つの事前計算された倍数が、後に続く取り出しのため、前記倍数の記憶場所に格納され得る。前記選択肢内の全ての前記倍数は前記倍数の記憶場所から利用可能であり、反復の間に倍数の計算が必要とされないことが好ましい。従って、計算を必要とする任意の倍数が、事前計算されることが好ましく、前記選択肢内の全ての倍数は反復の間の取り出しのために格納されることが好ましい。前記倍数の記憶場所は、前記データアイテムPのための別個の領域を含み得る。例えば、データアイテムPは、引数をデータ処理方法に渡すために用いられるレジスタに一時的に格納され、他の倍数は、記憶場所の別個の領域、例えば、データアイテムアレイに格納され得る。   The method may include retrieving the selected multiple from a multiple storage location if it is available, and calculating the selected multiple otherwise. The newly calculated multiple can be stored in the multiple storage location for subsequent retrieval. At least one multiple within the option may be precomputed and the at least one precomputed multiple may be stored in the multiple storage location for subsequent retrieval. Preferably, all the multiples in the option are available from the multiple storage locations and no multiple calculations are required between iterations. Thus, any multiple that requires computation is preferably precomputed, and all multiples in the option are preferably stored for retrieval during the iteration. The multiple storage locations may include a separate area for the data item P. For example, data item P may be temporarily stored in a register used to pass arguments to the data processing method, and other multiples may be stored in a separate area of storage location, for example, a data item array.

前記選択肢は、反復において必要であると決定され得る倍数を全ては含まないことが好ましい。例えば、前記選択肢が含む倍数は、b個よりも少なくてもよい。前記選択肢が含む倍数は、0.75*b個よりも少なくてもよい。前記選択肢は、少なくとも0.5*b個の倍数を含むことが好ましい。前記選択肢は、最も近い整数の倍数に切り上げられた、0.5*b個の倍数を含み得る。 The options preferably do not include all the multiples that can be determined to be necessary in the iteration. For example, multiples of said choices include may be less than b w pieces. Multiples the choices include the, 0.75 * b w pieces may be less than. The choice preferably contains at least 0.5 * b w pieces of multiples. The option may include 0.5 * b w multiples rounded up to the nearest integer multiple.

前記選択肢は、交互の倍数、例えば、奇数の倍数のみを含んでもよい。前記選択肢は、ゼロ倍数を含まないことが好ましい。   The options may include alternating multiples, for example only odd multiples. The option preferably does not include a zero multiple.

前記調節インジケータは、前記必要な倍数と前記選択された倍数との間の関係の有限集合のうちの1つを示すように設定可能であってもよく、必要な倍数が前記選択肢から利用可能でない場合、該集合内の利用可能な関係インジケータに依存して前記選択肢から他の倍数が選択されることが好ましい。前記選択肢内の前記倍数および前記関係インジケータの集合が、Pの任意の倍数kの正常な計算を可能にするために十分な個数であることが好ましい。   The adjustment indicator may be configurable to indicate one of a finite set of relationships between the required multiple and the selected multiple, and the required multiple is not available from the option In other cases, other multiples are preferably selected from the options depending on the available relationship indicators in the set. Preferably, the multiple of the multiples in the option and the set of relational indicators are sufficient to allow a normal calculation of any multiple k of P.

必要な倍数が前記選択肢から利用可能でない場合、該選択肢から利用可能な最も近い倍数が選択され得る。1つより多い倍数が同等に近い場合、より高い倍数が選択され得る。あるいは、必要な倍数が前記選択肢から利用可能でない場合、該選択肢から利用可能な次の最も高い倍数が選択され得る。   If the required multiple is not available from the option, the closest available multiple from the option can be selected. If more than one multiple is close to equal, a higher multiple may be selected. Alternatively, if the required multiple is not available from the option, the next highest multiple available from the option can be selected.

前記調節インジケータは、前記必要な倍数から前記選択された倍数を引いたものに等しい補正倍数を示すように設定され得る。前記後に続く反復における前記必要な倍数は、前記補正倍数をbでスケーリングして、その反復において考慮されるウィンドウ内の倍数kの値に加算することによって、決定され得る。 The adjustment indicator may be set to indicate a correction multiple equal to the required multiple minus the selected multiple. The required multiple in the subsequent iteration may be determined by scaling the correction multiple by b w and adding to the value of the multiple k in the window considered in that iteration.

前記選択肢は、正の倍数のみを含み得るが、概念的には、対応する負の倍数を含むことも考えられ得る。前記必要な倍数が負であるか、または、前記選択肢における最も小さい正の倍数よりも小さいことが決定される場合、該選択肢の概念上の負の倍数を考えることによって、該選択肢から倍数が選択され得る。前記選択肢から選択された前記倍数が、前記概念上の負の倍数のうちの1つである場合、前記負の倍数を用いて加算演算を行うのではなく、前記選択肢からの対応する正の倍数を用いて減算演算が行われ得る。   The options may include only positive multiples, but conceptually it may also be considered to include corresponding negative multiples. If it is determined that the required multiple is negative or less than the smallest positive multiple in the option, a multiple is selected from the option by considering the notional negative multiple of the option Can be done. If the multiple selected from the option is one of the conceptual negative multiples, the corresponding positive multiple from the option is used instead of performing an addition operation using the negative multiple. Can be used to perform a subtraction operation.

最終反復において設定される調節インジケータに基づいて、最終調節を適用するステップを含み得る。1つ以上のデータアイテム倍数に関わる演算は、3種類の演算、すなわち、(a)ゼロでないデータアイテム倍数の倍加、(b)ゼロでなく、等しくなく、逆数でないデータアイテム倍数の加算または減算、および(c)ゼロデータアイテム倍数0.Pに関わる任意の演算のうちの1つに分類され得、最終ステップにおける演算分類のシーケンスは、前記最終反復において設定される前記調節インジケータから独立していることが好ましい。   Applying final adjustments based on adjustment indicators set in the final iteration may be included. The operations involving one or more data item multiples are of three types: (a) doubling a non-zero data item multiple, (b) adding or subtracting non-zero, not equal and non-reciprocal data item multiples, And (c) a multiple of zero data items. It can be classified into one of any operations involving P, and the sequence of operation classification in the final step is preferably independent of the adjustment indicator set in the final iteration.

前記反復的b関連ウィンドウアルゴリズムは、左から右への「bを乗算し、加算する」タイプのアルゴリズムであり得、該アルゴリズムの該「bを乗算」する部分において用いられる乗数は、bであり、必要な倍数は、該アルゴリズムの「加算」部分において用いられる倍数である。底bが2である場合、前記反復的b関連ウィンドウアルゴリズムが、「倍加および加算」タイプアルゴリズムであり、該アルゴリズムの「倍加」部分において用いられる乗数が2である。 The iterative b w related window algorithm may be a left-to-right “multiply and add b” type algorithm, where the multiplier used in the “multiply b” portion of the algorithm is b w And the required multiple is the multiple used in the “add” portion of the algorithm. If the base b is 2, then the iterative b w related window algorithm is a “double and add” type algorithm, and the multiplier used in the “double” portion of the algorithm is 2 w .

倍数kは符号付きの二進数値であり得、第1の反復において、kの先頭ビットは、必要な倍数を決定する場合、負の重みが付けられる。あるいは、前記kの先頭ビットは、切り捨てられ得、補償するために、前記第1の反復において調節インジケータが設定され得る。   The multiple k can be a signed binary value, and in the first iteration, the first bit of k is negatively weighted when determining the required multiple. Alternatively, the first bit of k may be truncated and an adjustment indicator may be set in the first iteration to compensate.

1つ以上のデータアイテム倍数に関わる演算は、3種類の演算、すなわち、(a)ゼロでないデータアイテム倍数の倍加、(b)ゼロでなく、等しくなく、逆数でないデータアイテム倍数の加算または減算、および(c)ゼロデータアイテム倍数0.Pに関わる任意の演算のうちの1つに分類され得、演算分類のシーケンスは、前記kの値から独立していることが好ましい。例えば、反復がw回の倍加演算および1回の加算/減算演算を含み得、それぞれが、前記kの値とは無関係に生成される結果に寄与する。この場合、ダミー演算は必要とされない。前記ゼロ倍数データアイテム、すなわち、0.Pを用いるか、0.Pが得られる演算が行われないことが好ましい。倍加演算に等しい加算演算が行われないことも好ましい。   The operations involving one or more data item multiples are of three types: (a) doubling a non-zero data item multiple, (b) adding or subtracting non-zero, not equal and non-reciprocal data item multiples, And (c) a multiple of zero data items. It can be classified into one of arbitrary operations related to P, and the sequence of operation classification is preferably independent of the value of k. For example, an iteration may include w doubling operations and one adding / subtracting operation, each contributing to a result generated independent of the value of k. In this case, no dummy operation is required. The zero multiple data item, i.e. P is used, or 0. It is preferable that the calculation for obtaining P is not performed. It is also preferred that no addition operation equal to the doubling operation is performed.

さらなるデータアイテムQの倍数mも、前記反復アルゴリズムの間計算され得、2つの別個の調節インジケータを、進行中の乗算に対して1つずつ用いることによって、結果(k.P+m.Q)を生成する。   Further multiples of data item Q, m, can also be calculated during the iterative algorithm, using two separate adjustment indicators, one for each ongoing multiplication, yielding the result (kP + mQ) To do.

調節インジケータは、前記インジケータが設定された反復の直後の反復において適用されることが好ましい。   The adjustment indicator is preferably applied in the iteration immediately after the iteration in which the indicator is set.

データアイテムPの一例は、楕円曲線点である。本発明の第1の局面の方法は、データを暗号化または復号する、暗号化データ処理方法におけるステップを形成する。   An example of the data item P is an elliptic curve point. The method of the first aspect of the present invention forms a step in an encrypted data processing method that encrypts or decrypts data.

第1の局面の方法は、k.Pの計算の一部のみの処理に用いられ、k.Pの計算の他の部分の処理には他のアルゴリズムが用いられることが可能である。例えば、ある数のウィンドウまたは反復が本発明のある実施形態に従って行われ、後のウィンドウまたは反復が従来の方法に従って行われてもよい。あるいは、第1の局面による方法は、反復のたびに用いられもよい。また、異なる反復において、異なるウィンドウサイズを用いることも可能である。反復において行われる計算のシーケンスはまた、反復毎に異なっていてもよい。当業者にとって明らかなこれらの手段および他の手段は、攻撃を成功させることをより困難にすることにさらに役立ち得る。   The method of the first aspect comprises k. Used for processing only part of the calculation of P, k. Other algorithms can be used to process other parts of the calculation of P. For example, a certain number of windows or iterations may be performed according to an embodiment of the present invention, and later windows or iterations may be performed according to conventional methods. Alternatively, the method according to the first aspect may be used at each iteration. It is also possible to use different window sizes in different iterations. The sequence of calculations performed in the iterations may also be different for each iteration. These and other means apparent to those skilled in the art can further help make the attack more difficult to succeed.

本発明の第2の局面によると、反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理装置であって、ここで、bは、倍数kの底であり、wはウィンドウサイズであり、該装置は、少なくとも1つのPの倍数を含むデータアイテムの選択肢を提供するデータアイテム提供手段と、該アルゴリズムの特定の反復について、その反復に必要なPの倍数を決定する、決定手段と、該必要な倍数に依存して該選択肢から倍数を選択する選択手段と、該必要な倍数と該選択された倍数との間の関係に依存して調節インジケータを設定する設定手段とを備え、該決定手段が、後に続く反復において、前回の反復からの該調節インジケータに依存して該必要な倍数を決定するように動作可能である、装置が提供される。 According to a second aspect of the present invention, there is provided a data processing apparatus for calculating a multiple k of a data item P using an iterative b w related window algorithm, wherein b is a base of the multiple k, w is the window size, and the apparatus determines a data item providing means for providing a choice of data items including at least one multiple of P, and, for a particular iteration of the algorithm, a multiple of P required for that iteration Determining means, selecting means for selecting a multiple from the choice depending on the required multiple, and setting for setting an adjustment indicator depending on the relationship between the required multiple and the selected multiple And an apparatus is provided, wherein the determining means is operable in subsequent iterations to determine the required multiple depending on the adjustment indicator from a previous iteration. It is.

本発明の第3の局面によると、反復的b関連ウィンドウアルゴリズムを用いてデータアイテムMのべき指数dを計算するデータ処理方法であって、ここで、bはべき指数dの底であり、wはウィンドウサイズであり、該方法は、少なくとも1つのMのべき指数を含むデータアイテムの選択肢を提供するステップと、該アルゴリズムの特定の反復について、その反復に必要なべき指数Mを決定し、該必要なべき指数に依存して該選択肢からべき指数を用い、該必要なべき指数と該選択されたべき指数との間の関係に依存して、調節インジケータを設定するステップと、後に続く反復において、前回の反復からの該調節インジケータに依存して該必要なべき指数を決定するステップとを包含する、方法が提供される。 According to a third aspect of the present invention, there is provided a data processing method for calculating a power index d of a data item M using an iterative b w related window algorithm, where b is a base of the power index d, w is the window size, and the method provides a choice of data items containing at least one exponent of M, and for a particular iteration of the algorithm, determines the exponent M to be required for that iteration; Using a power index from the option depending on the power index required, setting an adjustment indicator depending on the relationship between the power index required and the power index selected, and subsequent iterations And determining the required exponent depending on the adjustment indicator from a previous iteration.

前記反復的b関連ウィンドウアルゴリズムは、左から右への「b乗して、乗算する」タイプのアルゴリズムであり得、該アルゴリズムの「b乗」する部分において用いられるべき指数は、bであり、必要なべき指数は、該アルゴリズムの「乗算」部分において用いられるべき指数である。bが2に等しい場合、前記反復的b関連ウィンドウアルゴリズムは、「二乗および乗算」タイプアルゴリズムであり、該アルゴリズムの「二乗」部分で用いられるべき指数は、2である。 The iterative b w related window algorithm may be a left-to-right “b raised to multiply” type algorithm, and the exponent to be used in the “b raised” portion of the algorithm is b w Yes, the exponent to be needed is the exponent to be used in the “multiplication” part of the algorithm. If b is equal to 2, the iterative b w- related window algorithm is a “square and multiply” type algorithm, and the exponent to be used in the “square” part of the algorithm is 2 w .

本発明の第4の局面によると、反復的b関連ウィンドウアルゴリズムを用いてデータアイテムMのべき指数dを計算するデータ処理装置であって、ここで、bはべき指数dの底であり、wはウィンドウサイズであり、該装置は、少なくとも1つのMのべき指数を含むデータアイテムの選択肢を提供するデータアイテム提供手段と、該アルゴリズムの特定の反復について、その反復に必要なべき指数Mを決定する決定手段と、該必要なべき指数に依存して該選択肢からべき指数を選択する選択手段と、該必要なべき指数と該選択されたべき指数との間の関係に依存して、調節インジケータを設定する設定手段とを備え、該決定手段は、後に続く反復において、前回の反復からの該調節インジケータに依存して該必要なべき指数を決定するように動作可能である、装置が提供される。 According to a fourth aspect of the present invention, there is provided a data processing apparatus for calculating a power index d of a data item M using an iterative b w related window algorithm, where b is a base of the power index d, w is the window size, and the apparatus provides a data item providing means for providing a choice of data items including at least one exponent of M, and, for a particular iteration of the algorithm, the exponent M to be required for that iteration. A determination means for determining, a selection means for selecting a power index from the options depending on the power index to be needed, and an adjustment depending on the relationship between the power index to be selected and the power index to be selected Setting means for setting an indicator, wherein the determining means determines, in subsequent iterations, the index to be required depending on the adjustment indicator from the previous iteration. An apparatus is provided that is operable.

本発明の第5の局面によると、反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理装置に対する電力サイドチャネル攻撃に対する抵抗力を高める方法であって、bは、該倍数kの底であり、wはウィンドウサイズであり、本発明の第1の局面によるステップを含む、方法が提供される。 According to a fifth aspect of the present invention, there is provided a method for increasing resistance to a power side channel attack against a data processing device that calculates a multiple k of a data item P using an iterative b w related window algorithm, wherein b is , The base of the multiple k, w is the window size, and includes a step according to the first aspect of the invention.

本発明の第6の局面によると、反復的b関連ウィンドウアルゴリズムを用いて、データアイテムMのべき指数dを計算するデータ処理装置に対する電力サイドチャネル攻撃に対する抵抗力を高める方法であって、bは、該べき指数dの底であり、wはウィンドウサイズであり、本発明の第3の局面によるステップを含む、方法が提供される。 According to a sixth aspect of the present invention, there is provided a method for increasing resistance to a power side channel attack against a data processing device that calculates an exponent d of a data item M using an iterative b w related window algorithm, comprising: b Is the base of the exponent d, w is the window size, and a method is provided comprising the step according to the third aspect of the invention.

本発明の第7の局面によると、本発明の第2の局面または第4の局面によるデータ処理装置を含むスマートカードが提供される。   According to a seventh aspect of the present invention, there is provided a smart card including the data processing device according to the second aspect or the fourth aspect of the present invention.

本発明の第8の局面によると、データ処理デバイスにロードされる場合、該デバイスを、本発明の第2の局面または第4の局面による装置、あるいは、本発明の第7の局面によるスマートカードにする、オペレーティングプログラムが提供される。   According to an eighth aspect of the present invention, when loaded into a data processing device, the device is an apparatus according to the second or fourth aspect of the present invention or a smart card according to the seventh aspect of the present invention. An operating program is provided.

本発明の第9の局面によると、データ処理デバイス上で実行され、該デバイスに、本発明の第1の局面、第3の局面、第5の局面、または第6の局面による方法を実行させる、オペレーティングプログラムが提供される。   According to a ninth aspect of the present invention, which is executed on a data processing device, causing the device to perform a method according to the first, third, fifth or sixth aspects of the present invention. An operating program is provided.

前記オペレーティングプログラムは、キャリア媒体上に保持され得、該キャリア媒体は、伝送媒体、または格納媒体であり得る。   The operating program may be held on a carrier medium, which may be a transmission medium or a storage medium.

本発明により、反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理方法であって、ここで、bは、倍数kの底であり、wはウィンドウサイズであり、該方法は、少なくとも1つのPの倍数を含むデータアイテムの選択肢を提供するステップと、該アルゴリズムの特定の反復について、その反復に必要なPの倍数を決定し、該必要な倍数に依存して該選択肢から選択した倍数を用い、該必要な倍数と該選択された倍数との関係に依存して調節インジケータを設定するステップと、後に続く反復において、前回の反復からの該調節インジケータに依存して該必要な倍数を決定するステップとを包含する、方法が提供され、これにより上記目的が達成される。 In accordance with the present invention, a data processing method for calculating a multiple k of a data item P using an iterative b w related window algorithm, where b is the base of the multiple k and w is the window size The method provides a choice of data items comprising at least one multiple of P and, for a particular iteration of the algorithm, determines the multiple of P required for that iteration and depends on the required multiple Using a multiple selected from the options and setting an adjustment indicator depending on the relationship between the required multiple and the selected multiple, and in subsequent iterations depending on the adjustment indicator from the previous iteration And determining the required multiple, thereby achieving the above objective.

前記選択された倍数を、利用可能である場合、倍数の記憶場所から取り出し、そうでない場合、該選択された倍数を計算するステップをさらに包含してもよい。   The selected multiple may be further retrieved from a multiple storage location if available, and if not, calculating the selected multiple.

後に続く取り出しのため、前記倍数の記憶場所に新たに計算された倍数を格納するステップをさらに包含してもよい。   The method may further include storing the newly calculated multiple in the multiple storage location for subsequent retrieval.

前記選択肢内の少なくとも1つの倍数を事前計算するステップと、該少なくとも1つの事前計算された倍数を、後に続く取り出しのため、前記倍数の記憶場所に格納するステップをさらに包含してもよい。   Precomputing at least one multiple in the option may be further included and storing the at least one precomputed multiple in the multiple storage location for subsequent retrieval.

前記選択肢内の全ての前記倍数は、前記倍数の記憶場所から利用可能であってもよい。   All the multiples in the option may be available from the multiple storage locations.

前記倍数の記憶場所は、前記データアイテムPを保持する別個の領域を含んでもよい。   The multiple storage locations may include a separate area holding the data item P.

前記選択肢は、反復において必要であると決定され得る倍数を全ては含んでもよい。   The options may include all multiples that can be determined to be necessary in the iteration.

前記選択肢が含む倍数は、b個よりも少なくてもよい。 Multiples the choices include may be less than b w pieces.

前記選択肢が含む倍数は、0.75*b個よりも少なくてもよい。 Multiples the choices include the, 0.75 * b w pieces may be less than.

前記選択肢は、少なくとも0.5*b個の倍数を含んでもよい。 The choices may include at least 0.5 * b w pieces of multiples.

前記選択肢は、最も近い整数個の倍数に切り上げられた、0.5*b個の倍数を含んでもよい。 The choices are rounded up to the nearest integer number of multiples may contain 0.5 * b w pieces of multiples.

前記選択肢は、交互の倍数を含んでもよい。   The options may include alternating multiples.

前記選択肢は、奇数の倍数のみを含んでもよい。   The options may include only odd multiples.

前記選択肢は、ゼロ倍数を含まなくてもよい。   The option may not include a multiple of zero.

前記調節インジケータは、前記必要な倍数と前記選択された倍数との間の関係の有限集合のうちの1つを示すように設定可能であり、必要な倍数が前記選択肢から利用可能でない場合、該集合内の利用可能な関係インジケータに依存して前記選択肢から他の倍数が選択されてもよい。   The adjustment indicator can be set to indicate one of a finite set of relationships between the required multiple and the selected multiple, and if the required multiple is not available from the option, the Other multiples may be selected from the options depending on the available relationship indicators in the set.

前記選択肢内の前記倍数および前記関係インジケータの集合が、Pの任意の倍数kの正常な計算を可能にするために十分な個数であってもよい。   The multiple of the multiples in the option and the set of relationship indicators may be sufficient to allow normal computation of any multiple k of P.

必要な倍数が前記選択肢から利用可能でない場合、該選択肢から利用可能な最も近い倍数が選択されるか、または、1つより多い倍数が同等に近い場合、最も近い倍数のうちより高い倍数が選択されてもよい。   If the required multiple is not available from the option, the nearest multiple available from the option is selected, or if more than one multiple is close to equal, the higher of the closest multiples is selected May be.

必要な倍数が前記選択肢から利用可能でない場合、該選択肢から利用可能な次の最も高い倍数が選択されてもよい。   If the required multiple is not available from the option, the next highest multiple available from the option may be selected.

前記調節インジケータは、前記必要な倍数から前記選択された倍数を引いたものに等しい補正倍数を示すように設定されてもよい。   The adjustment indicator may be set to indicate a correction multiple equal to the required multiple minus the selected multiple.

前記後に続く反復における前記必要な倍数は、前記補正倍数をbでスケーリングして、その反復において考慮されるウィンドウ内の倍数kの値に加算することによって、決定されてもよい。 The required multiple in the subsequent iteration may be determined by scaling the correction multiple by b w and adding to the value of the multiple k in the window considered in that iteration.

前記選択肢は、正の倍数のみを含むが、概念的には、対応する負の倍数を含むことも考えられてもよい。   The options include only positive multiples, but conceptually it may also be considered to include corresponding negative multiples.

前記必要な倍数が負であるか、または、前記選択肢における最も小さい正の倍数よりも小さいことが決定される場合、該選択肢の概念上の負の倍数を考えることによって、該選択肢から倍数が選択されてもよい。   If it is determined that the required multiple is negative or less than the smallest positive multiple in the option, a multiple is selected from the option by considering the notional negative multiple of the option May be.

前記選択肢から選択された前記倍数が、前記概念上の負の倍数のうちの1つである場合、前記選択肢からの対応する正の倍数を用いて減算演算が行われてもよい。   If the multiple selected from the option is one of the conceptual negative multiples, a subtraction operation may be performed using the corresponding positive multiple from the option.

最終反復において設定される調節インジケータに基づいて、最終調節を適用するステップをさらに包含してもよい。   The method may further include applying a final adjustment based on the adjustment indicator set in the final iteration.

1つ以上のデータアイテム倍数に関わる演算は、3種類の演算、すなわち、(a)ゼロでないデータアイテム倍数の倍加、(b)ゼロでなく、等しくないデータ、逆数でないアイテム倍数の加算または減算、および(c)ゼロデータアイテム倍数0.Pに関わる任意の演算のうちの1つに分類され得、最終ステップにおける演算分類のシーケンスは、前記最終反復において設定される前記調節インジケータから独立していてもよい。   There are three types of operations involving one or more data item multiples: (a) doubling a non-zero data item multiple, (b) adding or subtracting non-zero and unequal data, non-reciprocal item multiples, And (c) a multiple of zero data items. It can be classified into one of any operations involving P, and the sequence of operation classification in the final step may be independent of the adjustment indicator set in the final iteration.

前記反復的b関連ウィンドウアルゴリズムは、左から右への(left−to−right)「bを乗算し、加算する」タイプのアルゴリズムであり、該アルゴリズムの該「bを乗算」する部分において用いられる乗数は、bであり、前記必要な倍数は、該アルゴリズムの「加算」部分において用いられる倍数であってもよい。 The iterative b w related window algorithm is a left-to-right “multiply and add b” type algorithm, used in the “multiply b” portion of the algorithm The multiplier to be used is b w and the required multiple may be the multiple used in the “addition” part of the algorithm.

bが2に等しく、前記反復的b関連ウィンドウアルゴリズムが、「倍加および加算」タイプのアルゴリズムであり、該アルゴリズムの「倍加」部分において用いられる乗数が2であってもよい。 b may be equal to 2, and the iterative b w related window algorithm may be a “double and add” type algorithm, and the multiplier used in the “double” portion of the algorithm may be 2 w .

kは符号付きの二進数値であり、前記第1の反復において、kの先頭ビットは、前記必要な倍数を決定する場合、負の重みが付けられてもよい。   k is a signed binary value, and in the first iteration, the first bit of k may be negatively weighted when determining the required multiple.

kは符号付きの二進数値であり、kの先頭ビットを切り捨て、補償するために、前記第1の反復において調節インジケータを設定するステップをさらに包含してもよい。   k is a signed binary value, and may further include the step of setting an adjustment indicator in the first iteration to truncate and compensate for the first bit of k.

1つ以上のデータアイテム倍数に関わる演算は、3種類の演算、すなわち、(a)ゼロでないデータアイテム倍数の倍加、(b)ゼロでなく、等しくなく、逆数でないデータアイテム倍数の加算または減算、および(c)ゼロデータアイテム倍数0.Pに関わる任意の演算のうちの1つに分類され得、演算分類のシーケンスは、前記kの値から独立していてもよい。   The operations involving one or more data item multiples are of three types: (a) doubling a non-zero data item multiple, (b) adding or subtracting non-zero, not equal and non-reciprocal data item multiples, And (c) a multiple of zero data items. It may be classified into one of arbitrary operations related to P, and the sequence of operation classification may be independent of the value of k.

1つ以上のデータアイテム倍数に関わる演算は、3種類の演算、すなわち、(a)ゼロでないデータアイテム倍数の倍加、(b)ゼロでなく、等しくなく、逆数でないデータアイテム倍数の加算または減算、および(c)ゼロデータアイテム倍数0.Pに関わる任意の演算のうちの1つに分類され得、演算分類のシーケンスは、前記kの値から独立しており、反復が、w回の倍加演算および1回の加算/減算演算を含み、それぞれが、前記kの値とは無関係に生成される結果に寄与してもよい。   The operations involving one or more data item multiples are of three types: (a) doubling a non-zero data item multiple, (b) adding or subtracting non-zero, not equal and non-reciprocal data item multiples, And (c) a multiple of zero data items. Can be classified into one of any operations involving P, the sequence of operation classification is independent of the value of k, and the iteration includes w doubling operations and 1 adding / subtracting operation , Each of which may contribute to a result generated independent of the value of k.

前記ゼロ倍数データアイテム、すなわち、0.Pを用いるか、または0.Pが得られる演算が行われなくてもよい。   The zero multiple data item, i.e. P is used, or 0. The calculation for obtaining P may not be performed.

倍加演算に等しい加算演算が行われなくてもよい。   An addition operation equal to the doubling operation may not be performed.

さらなるデータアイテムQの倍数mも、前記反復アルゴリズムの間計算されて、2つの別個の調節インジケータを、進行中の乗算に対して1つずつ用いることによって、結果(k.P+m.Q)を生成してもよい。   A further multiple m of the data item Q is also calculated during the iterative algorithm to produce a result (kP + mQ) by using two separate adjustment indicators, one for each ongoing multiplication. May be.

調節インジケータは、該インジケータが設定された反復の直後の反復において適用されてもよい。   The adjustment indicator may be applied in the iteration immediately after the iteration in which the indicator is set.

前記データアイテムPは、楕円曲線点であってもよい。   The data item P may be an elliptic curve point.

データを暗号化または復号する、暗号化データ処理方法におけるステップであってもよい。   It may be a step in an encrypted data processing method for encrypting or decrypting data.

本発明により、反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理装置であって、ここで、bは、倍数kの底であり、wはウィンドウサイズであり、該装置は、少なくとも1つのPの倍数を含むデータアイテムの選択肢を提供するデータアイテム提供手段と、該アルゴリズムの特定の反復について、その反復に必要なPの倍数を決定する、決定手段と、該必要な倍数に依存して該選択肢から倍数を選択する選択手段と、該必要な倍数と該選択された倍数との間の関係に依存して調節インジケータを設定する設定手段とを備え、該決定手段が、後に続く反復において、前回の反復からの該調節インジケータに依存して該必要な倍数を決定するように動作可能である、装置が提供され、これにより上記目的が達成される。 In accordance with the present invention, a data processing apparatus that calculates a multiple k of a data item P using an iterative b w related window algorithm, where b is the base of the multiple k and w is the window size The apparatus provides a data item providing means for providing a choice of data items including at least one multiple of P; and a determining means for determining, for a particular iteration of the algorithm, a multiple of P required for that iteration; Selecting means for selecting a multiple from the options depending on the required multiple; and setting means for setting an adjustment indicator depending on the relationship between the required multiple and the selected multiple; An apparatus is provided, wherein the determining means is operable in subsequent iterations to determine the required multiple depending on the adjustment indicator from the previous iteration, whereby The above objective is achieved.

本発明により、反復的b関連ウィンドウアルゴリズムを用いてデータアイテムMのべき指数dを計算するデータ処理方法であって、ここで、bはべき指数dの底であり、wはウィンドウサイズであり、該方法は、少なくとも1つのMのべき指数を含むデータアイテムの選択肢を提供するステップと、該アルゴリズムの特定の反復について、その反復に必要なべき指数Mを決定し、該必要なべき指数に依存して該選択肢から選択されるべき指数を用い、該必要なべき指数と該選択されたべき指数との間の関係に依存して、調節インジケータを設定するステップと、後に続く反復において、以前の反復からの該調節インジケータに依存して該必要なべき指数を決定するステップとを包含する、方法が提供され、これにより上記目的が達成される。 In accordance with the present invention, a data processing method for calculating a power index d of a data item M using an iterative b w related window algorithm, where b is the base of the power index d and w is the window size The method provides a choice of data items comprising at least one power exponent of M, and for a particular iteration of the algorithm, determines the exponent M to be required for that iteration, and Depending on the index to be selected from the options and setting the adjustment indicator depending on the relationship between the required index and the selected index, and in subsequent iterations, And determining the required power depending on the adjustment indicator from the iteration of the method, thereby achieving the above objective .

前記反復的b関連ウィンドウアルゴリズムは、左から右への「b乗して、乗算する」タイプのアルゴリズムであり、該アルゴリズムの「b乗」する部分において用いられるべき指数は、bであり、必要なべき指数は、該アルゴリズムの「乗算」部分において用いられるべき指数であってもよい。 The iterative b w- related window algorithm is an algorithm of the type “b raised and multiplied” from left to right, and the exponent to be used in the “b raised” part of the algorithm is b w The exponent to be required may be the exponent to be used in the “multiplication” part of the algorithm.

bが2に等しく、前記反復的b関連ウィンドウアルゴリズムは、「二乗および乗算」タイプアルゴリズムであり、該アルゴリズムの「二乗」部分で用いられるべき指数は、2であってもよい。 b is equal to 2, and the iterative b w related window algorithm may be a “square and multiply” type algorithm, and the exponent to be used in the “square” portion of the algorithm may be 2 w .

本発明により、反復的b関連ウィンドウアルゴリズムを用いてデータアイテムMのべき指数dを計算するデータ処理装置であって、ここで、bはべき指数dの底であり、wはウィンドウサイズであり、該装置は、少なくとも1つのMのべき指数を含むデータアイテムの選択肢を提供するデータアイテム提供手段と、該アルゴリズムの特定の反復について、その反復に必要なべき指数Mを決定する決定手段と、該必要なべき指数に依存して該選択肢からべき指数を選択する選択手段と、該必要なべき指数と該選択されたべき指数との間の関係に依存して、調節インジケータを設定する設定手段とを備え、該決定手段は、後に続く反復において、前回の反復からの該調節インジケータに依存して該必要なべき指数を決定するように動作可能である、装置が提供され、これにより上記目的が達成される。 In accordance with the present invention, a data processing apparatus that computes a power index d of a data item M using an iterative b w related window algorithm, where b is the base of the power index d and w is the window size The apparatus provides a data item providing means for providing a choice of data items comprising at least one power exponent of M, and for a particular iteration of the algorithm, a determining means for determining the exponent M to be required for that iteration; Selection means for selecting a power index from the options depending on the power index required, and setting means for setting an adjustment indicator depending on the relationship between the power index required and the power index selected And the determining means is operable to determine the required exponent in subsequent iterations depending on the adjustment indicator from the previous iteration. An apparatus is provided to achieve the above objective.

反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理装置に対する電力サイドチャネル攻撃に対する抵抗力を高める方法であって、bは、該倍数kの底であり、wはウィンドウサイズであってもよい。 A method of increasing resistance to power side channel attacks against a data processing device that calculates a multiple k of a data item P using an iterative b w related window algorithm, where b is the base of the multiple k and w May be the window size.

反復的b関連ウィンドウアルゴリズムを用いて、データアイテムMのべき指数dを計算するデータ処理装置に対する電力サイドチャネル攻撃に対する抵抗力を高める方法であって、bは、該べき指数dの底であり、wはウィンドウサイズであり、請求項39〜41のいずれか1つに記載のステップをさらに包含してもよい。 A method of increasing resistance to power side channel attacks against a data processing device that calculates a power index d of a data item M using an iterative b w- related window algorithm, where b is the base of the power index d , W is the window size, and may further include the steps of any one of claims 39-41.

本発明により、実質的に、図9〜20を参照しながら説明したようなデータ処理装置に対する電力サイドチャネル攻撃に対する抵抗力を高める方法が提供され、それにより、上記目的が達成される。。   The present invention provides a method for increasing the resistance to power side channel attacks on a data processing device substantially as described with reference to FIGS. 9-20, thereby achieving the above objective. .

本発明により、適切な前記処理装置を含むスマートカードが提供され、それにより、上記目的が達成される。   According to the present invention, a smart card including a suitable processing device is provided, whereby the above object is achieved.

本発明により、データ処理デバイスにロードされる場合、該デバイスを、適切な前記装置のいずれか1つの装置、あるいは、適切な前記スマートカードにする、オペレーティングプログラムが提供され、それにより、上記目的が達成される。   According to the present invention, there is provided an operating program which, when loaded into a data processing device, makes the device any one of the suitable devices or the suitable smart card, whereby the above object is achieved. Achieved.

本発明により、データ処理デバイス上で実行される場合、該デバイスに、適切な前期方法のいずれか1つの方法を実行させる、オペレーティングプログラムが提供され、それにより、上記目的が達成される。   The present invention provides an operating program that, when executed on a data processing device, causes the device to perform any one of the appropriate prior methods, thereby achieving the above objectives.

キャリア媒体上に保持されてもよい。   It may be held on a carrier medium.

前記キャリア媒体は伝送媒体であってもよい。   The carrier medium may be a transmission medium.

前記キャリア媒体は格納媒体であってもよい。   The carrier medium may be a storage medium.

以上により、本発明によれば、反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理方法が提供される。ここで、bは、倍数kの底であり、wはウィンドウサイズである。これにより、楕円曲線暗号に用いる、効果的であり、かつ、セキュアな点演算が提供される。 Thus, according to the present invention, there is provided a data processing method for calculating a multiple k of a data item P using an iterative bw related window algorithm. Here, b is the base of multiple k and w is the window size. This provides an effective and secure point calculation used for elliptic curve cryptography.

例示のため、添付の図面が参照される。   For illustration, reference is made to the accompanying drawings.

本発明の実施形態の詳細な説明の前に、上述した、楕円曲線点乗算アルゴリズムの効率およびセキュリティに関連する問題を軽減する、以前に考えられたいくつかの方法を説明する。以下の説明は、三種類の演算の考慮に限定されている。   Prior to a detailed description of embodiments of the present invention, a number of previously conceived methods that alleviate the problems associated with the efficiency and security of the elliptic curve point multiplication algorithm described above will be described. The following description is limited to considering three types of operations.

「D」:ゼロでない点の倍加、2.Pと書かれる、
「A」:ゼロでなく、等しくなく、逆数でない点の加算または減算、P+QまたはP−Qと書かれる、
「Z」:ゼロを含む任意の演算、例えば、P+O、O+P、O−P、P−O、P−P、P+(−P)または2.O。
“D”: doubling a non-zero point; Written P,
“A”: addition or subtraction of points that are not zero, not equal, and not reciprocal, written as P + Q or P−Q,
“Z”: any operation including zero, for example, P + O, O + P, OP, P−O, PP, P + (− P) or 2. O.

任意の2つのD演算を攻撃者が区別することはできないとする。同様に、任意の2つのA演算を攻撃者が区別することはできないとする。   Assume that an attacker cannot distinguish between any two D operations. Similarly, it is assumed that an attacker cannot distinguish any two A operations.

しかし、何の注意も払われない場合、Aステップのように見えるステップ、例えば、「R:=P+Q」は、実際に、P=Qの場合、Dステップに、PおよびQのいずれかまたは両方がゼロあるいはQ=(−P)である場合、Z演算に変わり得る。   However, if no attention is paid, a step that looks like an A step, eg, “R: = P + Q”, is actually a D step, either or both of P and Q, if P = Q. Is zero or Q = (− P), it can be changed to a Z operation.

各ステップにおいて、デバイスがどのように次の演算を選択するのかを考えることにも関連する。決定プロセスが、kに依存する時間量または電力量を用いる場合、攻撃者は、曲線演算間のギャップを観察することによって情報を取得し得る。実際には、この問題は、当業者であれば達成できるように、(ソフトウェアまたはハードウェアのステートマシンのいずれかにおける)注意深いコーディングによって対処され得る。   In each step, it is also relevant to consider how the device selects the next operation. If the decision process uses an amount of time or power that depends on k, an attacker may obtain information by observing the gap between curve operations. In practice, this problem can be addressed by careful coding (in either software or hardware state machines), as can be achieved by one skilled in the art.

SPA攻撃が成功する機会を低減する他の方式を用いることが可能である。例えば、ランダム電力ノイズが追加されてもよいし、プロセッサ命令がランダムに遅延されてもよいし、各種の平衡回路を製造することによって電力消費が同じにされてもよい(WO99/67766「Balanced cytographic computational method and apparatus for leak minimization in smartcards and other cryptosystems」を参照されたい)。しかし、これらの方法は、概して、小さい低電力デバイス上に完全にインプリメントすると、性能を低減させるか、回路サイズを大きくするか、または利用される平均消費電力を増大させるため、高くつく。実際には、組み合わせた方法が用いられる。いくつかの試みが、電力を同じにし、実行をランダムにし、本明細書に記載の発明のように注意深くバランスが取られたアルゴリズムを提供するために行われる。本発明の実施形態は、以下に説明されるが、これらの他の方法とともに用いられ得る。   Other schemes that reduce the chances of a successful SPA attack can be used. For example, random power noise may be added, processor instructions may be randomly delayed, or power consumption may be made the same by manufacturing various balanced circuits (WO 99/67766 “Balanced cytographic”). See "computational methods and apparatus for leak minimization in smartcards and other cryptosystems"). However, these methods are generally expensive when implemented completely on a small, low-power device because they reduce performance, increase circuit size, or increase the average power consumed. In practice, a combined method is used. Several attempts are made to equalize power, randomize execution, and provide a carefully balanced algorithm such as the invention described herein. Embodiments of the invention are described below, but can be used with these other methods.

より進んだ攻撃、例えばDPA(電力差分攻撃)もある。この攻撃は、いくつかの電力トレースを捕らえて、統計学的に解析することによって働く(「Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems」Jean−Sebastien Coron、http://citeseer.nj.nec.com/393443.htmlを参照されたい)。このような攻撃は、通常、ランダムな要素を計算に加えて、2つとして同じアルゴリズムの実行がないようにすることによって防御される(US−A−2002029346「Method and apparatus for minimizing differential power attacks on processors」を参照されたい)。例えば、k.P(ここで、kは秘密)を計算するため、まず乱数rが生成され、次に(k−r)P.+r.Pが計算され、同じ答えが返されるが、2つの本質的にランダムな乗数が用いられる。ランダム性はまた、点の表現、および点演算にも組み込まれ得る。本発明の実施形態は、以下に説明するように、これらの方法からは独立しており、これらの方法とともに用いられてもよい。   There are also more advanced attacks, such as DPA (Power Differential Attack). This attack works by capturing and statistically analyzing several power traces ("Resistance aginist Differential Power for Elliptic Curve Cryptosystems", Jean-Sebastian Coron / http. /393443.html). Such attacks are usually defended by adding a random factor to the computation, so that no two perform the same algorithm (US-A-2002029346 “Method and apparel for minimizing differential power attacks on. See "Processors"). For example, k. In order to calculate P (where k is a secret), a random number r is first generated, and then (k−r) P. + R. P is calculated and the same answer is returned, but two essentially random multipliers are used. Randomness can also be incorporated into point representations and point operations. Embodiments of the present invention are independent of these methods and may be used with these methods, as described below.

基本的な楕円曲線点乗算方法をより効率的にする方法の1つとして、1度にkのwビットを処理する、「wビットウィンドウ法」を用いる方法がある。このようなアルゴリズムは、関数「window_pointmult」として図7に示される。「window_pointmult」は、図5を参照しながら上述した、基本的な「pointmult」関数と同様に、整数kおよび楕円曲線点Pを入力として取り、k.Pを出力として返す。この基本的なウィンドウ法は、Pの倍数を0〜(2^w)−1まで、事前計算し、テーブルTに格納する。すなわち、T[i]=i.Pである。例えば、kのj−1〜j−wのウィンドウのwビットを処理するため、ビットは、w−ビット整数として処理される。すなわち、v=B(k,j−1,j−w)である。各ループにおいて、倍加演算R:=2.Rは、w回行われて、元のRの(2^w)倍が得られ、R:=R+T[v]である。これは、(2^w)−2+(1+(1/w))│k│点演算を必要とする(事前計算2.P、3.Pなどは(2^w)−2演算を取り、各ループボディは、w回のD演算および1回のA演算からなり、│k│/w反復がある)が、1+(2^w)点を(2^w点をテーブルTに、1をレジスタRに)格納する必要があり、空間の面で高くつく。OをRに加算して(v=0の場合)、情報をうっかり漏らしてしまうことを防止するため、基本的な加算R+T[v]は、v=0の場合、何らかの種類のダミー演算(例えば、結果が用いられない加算を行うこと)と置き換えられる。この場合、点OをテーブルTに格納することは必要ない。   One method for making the basic elliptic curve point multiplication method more efficient is to use the “w bit window method” in which k w bits of k are processed at a time. Such an algorithm is shown in FIG. 7 as the function “window_pointmulti”. “Window_pointmulti” takes an integer k and an elliptic curve point P as inputs, as in the basic “pointmulti” function described above with reference to FIG. Returns P as output. In this basic window method, a multiple of P is pre-calculated from 0 to (2 ^ w) -1 and stored in the table T. That is, T [i] = i. P. For example, to process the w bits of the k j-1 to jw windows, the bits are processed as w-bit integers. That is, v = B (k, j−1, j−w). In each loop, the doubling operation R: = 2. R is performed w times to obtain (2 ^ w) times the original R, and R: = R + T [v]. This requires (2 ^ w) -2+ (1+ (1 / w)) | k | point operations (pre-calculation 2.P, 3.P etc. take (2 ^ w) -2 operations, Each loop body is composed of w D operations and one A operation, and there is | k | / w iteration), 1+ (2 ^ w) points (2 ^ w points in table T and 1 Register R), which is expensive in terms of space. In order to prevent O from being added to R (when v = 0) and information is inadvertently leaked, the basic addition R + T [v] can be any kind of dummy operation when v = 0 (for example, , Performing an addition where the result is not used). In this case, it is not necessary to store the point O in the table T.

図8は、図7のウィンドウ法の実行の一例を、k=35(二進数で100011)である場合について示す。点レジスタRは、初期的に値O、すなわちゼロ点に設定され、変数iは、│k│/w=3(kの二進数値が除算されて得られるウィンドウの数)に設定され、0〜(2^w)−1までの事前に計算されたPの倍数はテーブルTに格納される。ダミー演算は、2ビットの真ん中のウィンドウを処理する場合に必要とされる。   FIG. 8 shows an example of the execution of the window method of FIG. 7 for the case where k = 35 (binary number 100011). The point register R is initially set to the value O, ie the zero point, and the variable i is set to | k | / w = 3 (the number of windows obtained by dividing the binary value of k) and 0 Multiples of P calculated in advance up to (2 ^ w) -1 are stored in the table T. A dummy operation is required when processing a 2-bit middle window.

図7および8を参照しながら上述されたウィンドウ法は、反復的b関連ウィンドウアルゴリズムの一例である。ここで、bは、倍数kの底であり、wはウィンドウサイズである。具体的には、図7の方法は、反復的な左から右への二進数「倍加および加算」ウィンドウアルゴリズムである。これは、例えば、「A survey of fast exponentiation methods」(D.M.Gordon、Journal of Algorithms 27、pp.129−146)に記載されている。図7および8の例において、底bは2(二進法)であり、アルゴリズムは、反復二進数ウィンドウアルゴリズム、または左から右への倍加および加算アルゴリズムである。 The window method described above with reference to FIGS. 7 and 8 is an example of an iterative bw- related window algorithm. Here, b is the base of multiple k and w is the window size. Specifically, the method of FIG. 7 is an iterative left-to-right binary “double and add” window algorithm. This is described, for example, in “A survey of fast expansion methods” (DM Gordon, Journal of Algorithms 27, pp. 129-146). 7 and 8, the base b is 2 (binary) and the algorithm is an iterative binary window algorithm, or a left-to-right doubling and adding algorithm.

他の方法の群は、kのビットを記録することを含む。例えば、Boothのアルゴリズムは、kを二乗で再表現するが、係数を+1、0および−1とすることを可能にする(通常、二進数は−1を用いない)。Boothのアルゴリズム(および類似の同系統のアルゴリズム)は、1の稠密ストリングを、殆ど0のストリングと、それから、1つの−1および1つの+1と置き換える。0がD演算にのみ対応するので(1がDおよび加算に対応し、−1がDおよび減算に対応する)、これは、より効率的であり(2の格納、および4.│k│/3演算)、これは、このタイプの最もあり得る方式であることが示され得る。しかし、これは、依然として電力消費を漏らし、0ビットは、再符号化されたシーケンスにおける+1および−1ビットから区別され得る。これは、攻撃者にとって、かなりの量の情報であり、ダミー演算が必要とされ、効率は、基本的なアルゴリズムと同じ程度まで落ちる。   Another group of methods includes recording k bits. For example, Boot's algorithm re-expresses k as a square, but allows the coefficients to be +1, 0, and -1 (typically, binary numbers do not use -1). Booth's algorithm (and similar similar algorithms) replaces one dense string with an almost zero string and then one -1 and one +1. Since 0 corresponds only to D operations (1 corresponds to D and addition, -1 corresponds to D and subtraction), this is more efficient (2 storage and 4. | k | / 3 operations), this can be shown to be the most likely scheme of this type. However, this still leaks power consumption and the 0 bits can be distinguished from the +1 and -1 bits in the re-encoded sequence. This is a significant amount of information for the attacker, requires dummy operations, and the efficiency drops to the same extent as the basic algorithm.

他の種類の解決策は、いわゆる「Montgomery Ladder」(WO00/25204「Power signature attack resistant cryptography」を参照されたい)に基づく。この方法は、各ステップにおいて、差が公知である2点の加算を単純化することよって、その速度を増す。kの隣接しない形態にも同様に用いられ得る(「An overview of Elliptic Curve Cryptography」(LopezおよびDahabら、http://citeseer.nj.nec.com/333066.html)を参照されたい)。   Another type of solution is based on the so-called “Montgomery Ladder” (see WO 00/25204 “Power signature attach resistant cryptography”). This method increases its speed by simplifying the addition of two points where the difference is known at each step. It can be used for the non-adjacent form of k as well (see “An overview of Elliptic Curve Cryptography” (Lopez and Dahab et al., http://sitesee.nj.nec.com/333366.html)).

ランダム化された加算を用いる他の変形例が、「Randomized signed−scalar multiplication of ECC to resist power attacks」(Jae Cheol Ha、Sang Jae Moon、CHES2002 proceedings、pp551〜563、LNCS2523、Springer−Verlag 2002)に開示されている。開示されているアルゴリズムは、乱数の良好なソースを必要とする。   Other variations using randomized addition are described in “Randomized signed-scalar multiplication of ECC to resist power attacks” (Jae Cheol Ha, Sang Jae Mon 25, SES Je It is disclosed. The disclosed algorithm requires a good source of random numbers.

点k.P+m.Qを計算することが必要となる場合がある。ここで、kおよびmは整数であり、PおよびQは点である。同時にkとmとの両方に沿って反復することによって、「クロス乗積」ウィンドウ法が適用され得る。Rを2^wでスケーリングすることは、両方の1つの倍数(k.Pおよびm.Q)に共通であり、反復される必要はない。各反復において、おおよそ2^(w+1)の格納を用いて、事前計算される必要がある、Pのいくつかの倍数およびQのいくつかの倍数が加算される必要がある。この速度は、おおよそ、2^(w+1)(事前計算)に│k│.(1+2/w)演算を加算した速度である。   Point k. P + m. It may be necessary to calculate Q. Here, k and m are integers, and P and Q are points. By iterating along both k and m at the same time, a “cross product” window method can be applied. Scaling R by 2w is common to both single multiples (kP and mQ) and does not need to be repeated. In each iteration, several multiples of P and several multiples of Q need to be added, which need to be precomputed with approximately 2 ^ (w + 1) stores. This speed is approximately 2 ^ (w + 1) (pre-calculation). This is the speed obtained by adding (1 + 2 / w) calculation.

さらなる効率のため、全ての和(i.P+j.Q)が、0〜(2^w)−1の範囲の全てのiおよびjについて事前計算され(格納コストが約2^(2w)点である)、これらのうちの1つを反復のたびに加算する。速度は、大体、2^(2w)(事前計算)に│k│.(1+1/w)演算を加算した速度である。   For further efficiency, all sums (i.P + j.Q) are precomputed for all i and j in the range 0 to (2 ^ w) -1 (with a storage cost of about 2 ^ (2w) points. Yes, one of these is added at each iteration. The speed is roughly 2 ^ (2w) (pre-calculation). (1 + 1 / w) The speed obtained by adding the calculation.

この方式は、任意の数の項に拡張され得る。すなわち、k1.P1+k2.P2+...+kn.Pnである。   This scheme can be extended to any number of terms. That is, k1. P1 + k2. P2 +. . . + Kn. Pn.

図9は、本発明の実施形態によるデータ処理装置を示す。この装置は、初期化部20と、事前調節倍数計算部22と、調節計算部24と、倍数事前計算部26と、必要な倍数計算部28と、倍数格納部30と、倍数選択部32と、計算部34と、ディクリメント部36とを含む。   FIG. 9 shows a data processing apparatus according to an embodiment of the present invention. This apparatus includes an initialization unit 20, a prior adjustment multiple calculation unit 22, an adjustment calculation unit 24, a multiple prior calculation unit 26, a necessary multiple calculation unit 28, a multiple storage unit 30, and a multiple selection unit 32. The calculation unit 34 and the decrement unit 36 are included.

以下に、データ処理装置の動作を図10および12を参照しながら説明する。図11は、図10と同じであるが、方法がフローチャートの形式で示されている。図5および7を参照しながら説明した方法と同様に、図10のデータ処理装置は、点Pの倍数kを計算する。この実施形態において、図7を参照しながら上述した、左から右へのウィンドウの倍加および加算アルゴリズムに密接に関連する、アルゴリズムが用いられる。この実施形態において、ウィンドウサイズwは2であり、具体的な例示は、十進法でk=35、または二進法で100011である場合について、図12に示されている。   Hereinafter, the operation of the data processing apparatus will be described with reference to FIGS. FIG. 11 is the same as FIG. 10, but the method is shown in flowchart form. Similar to the method described with reference to FIGS. 5 and 7, the data processing apparatus of FIG. 10 calculates a multiple k of the point P. In this embodiment, an algorithm is used that is closely related to the left-to-right window doubling and adding algorithm described above with reference to FIG. In this embodiment, the window size w is 2, and a specific example is shown in FIG. 12 for the case where k = 35 in decimal or 100011 in binary.

メインループ、または反復の実行の前に、初期化部20は、ローカル格納を宣言し、特定の変数を初期化する。アキュムレータレジスタRは、ゼロ点Oを格納するように初期化され、調節インジケータ「繰り越し」は0に初期化され、ループカウンタiは│k│/2に初期化される。ここで、│k│は、k(の長さ)におけるビット数である。倍数kは、この実施形態において、符号なしであるとされ、偶数のビットであるとされる。kが奇数のビットを有する場合、先頭のゼロでパディングされて、│k│が2で割ることができるようにされる必要がある。倍数事前計算部26は、倍数3Pを事前計算し、事前計算された倍数3Pおよび点Pの両方を倍数格納部30に格納する。これらの初期化ステップは、図10において、参照符号S1で示される。図12に示す例においては、k=100011で、iは3に初期化される。   Prior to execution of the main loop or iteration, the initialization unit 20 declares local storage and initializes certain variables. The accumulator register R is initialized to store the zero point O, the adjustment indicator “carry forward” is initialized to 0, and the loop counter i is initialized to | k | / 2. Here, | k | is the number of bits in k (length). The multiple k is assumed to be unsigned and an even number of bits in this embodiment. If k has an odd number of bits, it needs to be padded with leading zeros so that | k | can be divided by two. The multiple pre-calculation unit 26 pre-calculates the multiple 3P, and stores both the pre-calculated multiple 3P and the point P in the multiple storage unit 30. These initialization steps are denoted by reference numeral S1 in FIG. In the example shown in FIG. 12, k = 1000011 and i is initialized to 3.

その後、処理演算は、ループ段階に入り、以下のステップが行われる。事前調節倍数計算部22は、ループiの基本的な倍数を計算し、これらは、ただ、B(k,2i−1,2i−2)、または、(2k_{2i−1}−k_{2i−2})の値である。これは、図7を参照しながら説明された基本的なウィンドウ法において用いられる倍数と同じである。図12に示す例において、i=3の第1のループにおいて、基本的な倍数は、2であると決定される。   Thereafter, the processing operation enters a loop stage and the following steps are performed. The pre-adjustment multiple calculator 22 calculates a basic multiple of the loop i, which is just B (k, 2i-1, 2i-2) or (2k_ {2i-1} -k_ {2i -2}). This is the same multiple used in the basic window method described with reference to FIG. In the example shown in FIG. 12, the basic multiple is determined to be 2 in the first loop with i = 3.

基本的なウィンドウ法とは異なり、調節計算部24は、基本的な倍数に対して行われる調節を、(ある場合には)以前の反復から「繰り越された」値に基づいて決定する。ウィンドウ幅が2である場合、調節は、4*繰り越しとして計算される。これは、1回目の反復においてはゼロである。その後、必要な倍数計算部28は、事前調節倍数計算部22からの基本的な倍数を調節計算部24からの調節に加算することによって、反復に必要な倍数を決定し、従って、この実施形態において、必要な倍数は、4*繰り越し+(2k_{2i−1}−k_{2i−2})であると決定される。これは、図10に、ステップS2−2の一行目で示されている。図12の例において、第1のループに必要な倍数は、2Pである。   Unlike the basic windowing method, the adjustment calculator 24 determines the adjustments made to the basic multiples based on the “carry forward” values from previous iterations (if any). If the window width is 2, the adjustment is calculated as 4 * carryover. This is zero for the first iteration. Thereafter, the required multiple calculator 28 determines the multiple required for the iteration by adding the basic multiple from the pre-adjustment multiple calculator 22 to the adjustment from the adjustment calculator 24, and thus this embodiment. The required multiple is determined to be 4 * carryover + (2k_ {2i-1} -k_ {2i-2}). This is shown in the first line of step S2-2 in FIG. In the example of FIG. 12, the multiple required for the first loop is 2P.

その後、倍数選択部32は、必要な倍数が倍数格納部26から利用可能であるか否かを決定する。この例において、倍数2Pは利用可能でなく、次に大きい利用可能な倍数3Pが、用いられるために倍数格納部26から選択される。調節インジケータ「繰り越し」は、必要な倍数と選択された倍数(−P)との差を示すために−1に設定され、選択された倍数MULは計算部34に送られる。信号OPRも、選択された倍数が正であるので(調節計算部24によって行われる調節に起因して、以下に説明するように、A(加算)演算は実際には減算演算であってもよい)、加算演算が必要であることを示すために計算部34に送られる。その後、計算部34は、アキュムレータRの値を用いて、基本的なウィンドウ法として同じ方法で、しかし、必要な倍数ではなく選択された倍数MULを用いて、D(倍加)演算およびA(加算)演算を行う。これらの図10に示すステップは、参照符号S2−1、および、参照符号S2−2の様々な場合(図12の第1の反復のためのケース「2」)によって示される。図12の例において、アキュムレータRは、第1の反復後の値3Pを有し、調節インジケータ「繰り越し」は、−1である。その後、ディクリメント部36は、ループカウンタiをディクリメントし、処理は次の反復に続く。   Thereafter, the multiple selection unit 32 determines whether a necessary multiple is available from the multiple storage unit 26. In this example, the multiple 2P is not available and the next largest available multiple 3P is selected from the multiple store 26 for use. The adjustment indicator “carry forward” is set to −1 to indicate the difference between the required multiple and the selected multiple (−P), and the selected multiple MUL is sent to the calculator 34. Since the selected multiple of the signal OPR is also positive (due to the adjustment performed by the adjustment calculation unit 24, the A (addition) operation may actually be a subtraction operation, as will be described below. ), Sent to the calculation unit 34 to indicate that an addition operation is necessary. Thereafter, the calculation unit 34 uses the value of the accumulator R in the same manner as the basic window method, but using the selected multiple MUL instead of the required multiple, and performs a D (double) operation and an A (addition). ) Calculate. These steps shown in FIG. 10 are indicated by reference symbol S2-1 and various cases of reference symbol S2-2 (case “2” for the first iteration in FIG. 12). In the example of FIG. 12, the accumulator R has a value 3P after the first iteration, and the adjustment indicator “carry forward” is −1. Thereafter, the decrement unit 36 decrements the loop counter i, and the process continues to the next iteration.

次の反復において、必要な倍数は、図12の例を参照しながら以下に説明されるように、以前の反復からの調節インジケータ「繰り越し」に基づいて決定される。第2のループにおいて、事前調節倍数計算部22からの基本的な倍数は、0(2K_3+k_2)であり、調節計算部24からの倍数は、−4(4*繰り越し)であり、従って、必要な倍数は、必要な倍数決定部28によって、−4Pであると決定される。倍数格納部30における倍数の群は、正の倍数Pおよび3Pのみを含むが、対応する負の倍数、−Pおよび−3Pを含むことも考えられ得る。第1の反復におけるルールと同じルールを用いて、格納部における次に大きい倍数は−3Pであり、−3P、または、正の倍数3Pは、倍数選択部32によって選択され、信号MULとして、計算部34に送られる。このとき、OPR信号が(必要な倍数が負なので)減算演算が必要とされることを示すように設定されている。調節インジケータ「繰り越し」はまた、−Pの必要な倍数と選択された倍数との間の差を示すように、−1に設定される。A(加算)ステップにおいて負の倍数−3Pを加算する代わりに、正の倍数3Pは、OPR信号によって示されるように、減算される。これは、図10において、場合「−4」によって示される。減算演算の前の以前の反復から、2つのD(倍加演算)がアキュムレータR上で動作する状態で、アキュムレータRは、「繰り越し」が−1に設定された状態で、第2の反復の終わりにおいて値9Pを保持する。   In the next iteration, the required multiple is determined based on the adjustment indicator “carry forward” from the previous iteration, as described below with reference to the example of FIG. In the second loop, the basic multiple from the pre-adjustment multiple calculator 22 is 0 (2K — 3 + k — 2), and the multiple from the adjustment calculator 24 is −4 (4 * carry forward), so the necessary The multiple is determined to be −4P by the required multiple determination unit 28. The group of multiples in the multiple storage unit 30 includes only positive multiples P and 3P, but may also include corresponding negative multiples, -P and -3P. Using the same rule as in the first iteration, the next largest multiple in the storage is −3P, and −3P or the positive multiple 3P is selected by the multiple selection unit 32 and calculated as the signal MUL. Sent to the unit 34. At this time, the OPR signal is set to indicate that a subtraction operation is required (since the required multiple is negative). The adjustment indicator “carry forward” is also set to −1 to indicate the difference between the required multiple of −P and the selected multiple. Instead of adding the negative multiple -3P in the A (addition) step, the positive multiple 3P is subtracted as indicated by the OPR signal. This is indicated in FIG. 10 by the case “−4”. From the previous iteration before the subtraction operation, with two Ds (doubling operations) operating on the accumulator R, the accumulator R has the end of the second iteration with "carry forward" set to -1. Holds the value 9P.

最終的な反復において、必要な倍数が、第2の反復からの隣接するインジケータ「繰り越し」に依存して計算される。第3のループにおいて、事前調節倍数計算部22からの基本的な倍数は3であり、調節計算部24からの倍数は−4であり、必要な倍数は、必要な倍数決定部によって−Pであると決定される。上述したように、倍数事前計算部26における値の群は、正の倍数Pおよび3P、ならびに対応する負の倍数、−Pおよび−3Pを含むと考えられ得る。従って、必要な倍数−Pは、格納部30から利用可能であり、−P、または、正の倍数Pは、倍数選択部32によって選択され、減算演算が必要とされることをOPR信号が示すように設定された状態で、信号MULと共に、計算部34に送られる。調節インジケータ「繰り越し」は、必要な倍数と選択された倍数との間に差がないことを示すように、0に設定される。A(加算)ステップにおいて負の倍数−Pを加算するのではなく、OPR信号によって示されるように、正の倍数Pが減算される。これは、図10に場合「−1」として示されている。2つのD(倍加演算)が、減算演算の前の以前の反復からのアキュムレータR上で動作する状態で、アキュムレータRは、「繰り越し」が0に設定された状態で、第2の反復の終わりに値35Pを保持する。   In the final iteration, the required multiple is calculated depending on the adjacent indicator “carry forward” from the second iteration. In the third loop, the basic multiple from the pre-adjustment multiple calculator 22 is 3, the multiple from the adjustment calculator 24 is -4, and the required multiple is -P by the required multiple determiner. Determined to be. As described above, the group of values in the multiple pre-calculator 26 can be considered to include positive multiples P and 3P, and corresponding negative multiples, -P and -3P. Thus, the required multiple -P is available from the storage 30 and -P or the positive multiple P is selected by the multiple selection 32 and the OPR signal indicates that a subtraction operation is required. In the state set as described above, the signal MUL is sent to the calculation unit 34. The adjustment indicator “carry forward” is set to 0 to indicate that there is no difference between the required multiple and the selected multiple. Rather than adding the negative multiple -P in the A (addition) step, the positive multiple P is subtracted as indicated by the OPR signal. This is shown as “−1” in FIG. With two Ds (doubling operations) operating on the accumulator R from the previous iteration before the subtraction operation, the accumulator R has the end of the second iteration with “carry forward” set to zero. Holds the value 35P.

第3の反復後、「繰り越し」が0であるので、さらなる調節は必要なく、アキュムレータRは、正確な最終値35Pを保持し、35Pは、リターンステップS4において、返され得る。しかし、kの他の値について、調節されるべき「繰り越し」のゼロでない値があり得、これは、図10の最終的なステップS3によって行われる。最終的なステップは、繰り越しが−1である場合、R:=R−Pを効率的に行うが、このような演算を実行するかまたは実行しないかは、kについての情報をうっかり漏らすことになり得る。従って、最終的な通常の反復後に「繰り越し」の値が何であるかに関わらず、倍加および2つの「加算が」行われるので、SPAに対して抵抗力がある、図10に示す最終的なステップを含むことが好ましい。新たな点2Pは、最終ステップにおいて計算されるが、古い3Pの格納がもはや必要とされていないので用いることができる。従って、最終ステップ(i=0の場合)は、「繰り越し」がゼロでない場合、RからPを減算するように意図される。SPAに対して安全にこれを行う方法は多い。図10の方法は、3Pを格納するために用いられる空間を再利用し、代わりに2Pを格納する。あるいは、最終的なループ反復(i=1の場合)が、この調節を行うために変更されてもよい。   After the third iteration, since the “carry forward” is zero, no further adjustment is necessary and the accumulator R holds the correct final value 35P, which can be returned in return step S4. However, for other values of k, there can be non-zero values of “carry forward” to be adjusted, which is done by the final step S3 of FIG. The final step is to efficiently perform R: = R−P when carryover is −1, but whether or not to perform such an operation is to inadvertently leak information about k. Can be. Thus, regardless of what the “carry-over” value is after the final normal iteration, doubling and two “additions” are performed, so that the final resistance shown in FIG. Preferably a step is included. A new point 2P is calculated in the final step, but can be used because storage of the old 3P is no longer needed. Thus, the final step (if i = 0) is intended to subtract P from R if “carry forward” is not zero. There are many ways to do this safely against SPA. The method of FIG. 10 reuses the space used to store 3P and stores 2P instead. Alternatively, the final loop iteration (if i = 1) may be changed to make this adjustment.

格納部内の全ての倍数が、上記の実施形態においては事前計算されていたが、選択するために利用可能な群にどの倍数があるべきなのかを決定するが、これらの倍数を事前計算しないことも可能である。代わりに、その群のなかの倍数が格納部30にないことが倍数選択部32によって決定される場合、事前計算部26に対して、後で用いられるための、格納部30に格納され得る倍数を計算させるリクエストがされる。この可能性は、図9において、倍数選択部32と事前計算部26との間の点線で示されている。   All the multiples in the storage were precomputed in the above embodiment, but determine which multiples should be in the group available for selection, but do not precompute these multiples Is also possible. Instead, if the multiple selection unit 32 determines that there are no multiples in the group in the storage unit 30, the multiples that can be stored in the storage unit 30 for later use by the pre-calculation unit 26 A request is made to calculate. This possibility is indicated by a dotted line between the multiple selection unit 32 and the pre-calculation unit 26 in FIG.

上述の実施形態の動作中、1つのループ反復のプロフィールは、プロフィールがZZAである場合の第1のループ以外の全ての場合において、倍加演算が第1回目のあたりで最適化されない限り、(以前に決定された演算分類を用いて)DDAである。これにより問題は起きない。なぜなら、kおよびPから独立しており、全てのトレースが、2つのこのようなZ演算を示し、明らかにされる情報がないからである。   During the operation of the above-described embodiment, the profile of one loop iteration is (in the past, unless the doubling operation is optimized around the first round in all cases except the first loop when the profile is ZZA. DDA) (using determined operational classification). This will not cause any problems. Because it is independent of k and P, all traces show two such Z operations and no information is revealed.

図13は、ウィンドウサイズがw>=2の一般的な場合、本発明を具現化する方法を示す。図14は、図13の方法をフローチャートの形式で示す。開始される前、kのサイズ(ビットの数)は、0ビットを事前にペンディングしておくことによって、wビットの倍数に切り上げられる。この実施形態において、格納部としてアレイ「T」が用いられ、T:P、3.P、5.P、7.P、...((2^w)−1).Pのウィンドウサイズまで、Pの奇数の倍数のみが格納される。従って必要な格納部は、基本的なwビットウィンドウ法に必要な格納部の約半分である。Tの第1の要素は、インデックス0を有し、T[j]は、jが0〜2^(w−1)−1の範囲内について、(2j+1).Pに等しい。初期的にループカウンタiは、(│k│/w)に設定される。上述したようにwが│k│を除算すると仮定されるので、これは全体の数を与える。レジスタRは、「R:=2.R」をw回行うことによって、各ループの始まりにおいて2^wでスケーリングされる。繰り越しインジケータは、Rに格納されているPの倍数が、任意のステップ後に、「大きすぎる」ようになることを可能にする。各反復における繰り越しインジケータは、1度にwビットが考えられるので、(2^w)の重みを有する。当然、1つの繰り越しビットが用いられてもよく、ビット値1は−1の繰り越しを表し、ビット値0は繰り越しがないことを表す。   FIG. 13 illustrates a method for embodying the present invention in the general case where the window size is w> = 2. FIG. 14 shows the method of FIG. 13 in the form of a flowchart. Before it is started, the size of k (number of bits) is rounded up to a multiple of w bits by pre-pending 0 bits. In this embodiment, an array “T” is used as the storage, and T: P, 3. P, 5. P, 7. P,. . . ((2 ^ w) -1). Only odd multiples of P are stored up to the window size of P. Thus, the required storage is about half that required for the basic w-bit window method. The first element of T has index 0, and T [j] is (2j + 1) .j for j in the range 0-2 ^ (w-1) -1. Equal to P. Initially, the loop counter i is set to (| k | / w). Since w is assumed to divide | k | as described above, this gives the total number. Register R is scaled by 2 ^ w at the beginning of each loop by performing "R: = 2.R" w times. The carry forward indicator allows a multiple of P stored in R to become “too large” after any step. The carry-over indicator in each iteration has a weight of (2 ^ w) since w bits are considered at a time. Of course, one carry bit may be used, with a bit value of 1 representing a carry of -1 and a bit value of 0 representing no carry.

従って、ケースステートメントは、値「v」で切り替わり、(2^w)*繰り越し+B(k,w*i−1,w*i−w)として定義される。vの値に依存して、(2^w+1)の場合がある。vが奇数である場合、「R:=R+v.P;繰り越し=0」が行われる。vが偶数である場合、「R:=R+(v+1).P;繰り越し=1」が行われる。いずれの場合においても、必要なPの倍数は奇数であり、その倍数、またはその負の倍数が、テーブルTのどこかに格納される。mが負である場合にR:=R+m.Pを行うため、これは、R:=R−(−m).Pと置き換えられる。   Thus, the case statement switches with the value “v” and is defined as (2 ^ w) * carryover + B (k, w * i−1, w * i−w). Depending on the value of v, there may be (2 ^ w + 1). When v is an odd number, “R: = R + v.P; carry-over = 0” is performed. When v is an even number, “R: = R + (v + 1) .P; carryover = 1” is performed. In any case, the required multiple of P is an odd number, and that multiple or its negative multiple is stored somewhere in the table T. When m is negative, R: = R + m. To do P, this is R: = R-(-m). Replaced with P.

従って、本発明を具現化するデータ処理方法が点(より一般的にはデータアイテム)Pの倍数kを、反復的m関連ウィンドウアルゴリズムを用いて計算することが分かる。ここで、mは、倍数kの底である。データアイテムの群は、Pの少なくとも1つの倍数を含み、例えば、図9に示す格納部30に格納する。アルゴリズムの特定の反復について、その反復に必要なPの倍数が決定され、倍数が、その反復において用いられるために、必要な倍数に依存してその群から選択される。調節インジケータは、必要な倍数と選択された倍数との間の関係に依存して設定される。あとに続く反復において、必要な倍数は、以前の反復からの調節インジケータに依存して決定される。   Thus, it can be seen that the data processing method embodying the present invention calculates a multiple k of the points (more generally data items) P using an iterative m-related window algorithm. Here, m is the base of multiple k. The group of data items includes at least one multiple of P and is stored in, for example, the storage unit 30 illustrated in FIG. For a particular iteration of the algorithm, the multiple of P required for that iteration is determined and the multiple is selected from the group depending on the required multiple to be used in that iteration. The adjustment indicator is set depending on the relationship between the required multiple and the selected multiple. In subsequent iterations, the required multiple is determined depending on the adjustment indicator from the previous iteration.

場合の選択は、各ステップにおいてどの分岐が選択されるのか攻撃者が判定できないような方法で行われる必要があり、この選択を隠すために、他の防御が必要である可能性がある。これは、一般的な問題であり、解決策は当業者にとって明白である。代表的には、ハードウェアインプリメンテーションにおいて達成することが、ソフトウェアインプリメンテーションよりも簡単である。これは、制御ステートマシンが、計算と並列して実行し、その放射が自然に隠されるからである。この選択は、数ビット(kの数ビットおよびいくつかの繰り越しビット)に依存するだけである。1つのサイクルにおいて、全ての分岐のためのテストを並列に(ハードウェアにおいて)計算し、デマルチプレクサを用いてテストに通った(一意的な)分岐を実行することも可能である。このインプリメンテーションの対称性および速度は、電力トレースから選択自体についての何らかの情報を得ることを非常に困難にする。   The case selection needs to be made in such a way that the attacker cannot determine which branch is selected at each step, and other defenses may be needed to hide this selection. This is a general problem and the solution is obvious to those skilled in the art. Typically, it is easier to achieve in hardware implementation than in software implementation. This is because the control state machine runs in parallel with the computation and its radiation is hidden naturally. This selection only depends on a few bits (several bits of k and several carryover bits). It is also possible in one cycle to calculate the tests for all branches in parallel (in hardware) and use the demultiplexer to execute the (unique) branches that passed the test. The symmetry and speed of this implementation makes it very difficult to get some information about the selection itself from the power trace.

ソフトウェアにおいて、インプリメンテーションは、CPU命令セットの詳細およびプラットフォームのアーキテクチャに依存する。技術の1つは、中間の値を用いない、条件付き演算がない計算を行うことである。計算の結果は、必要な分岐数に関連させ、1つの分岐命令においてテーブルルックアップ内で用いられ得る。例えば、xの奇数および偶数の場合を、SPAに対して抵抗力がある状態で区別する。   In software, implementation depends on CPU instruction set details and platform architecture. One technique is to perform calculations without conditional operations that do not use intermediate values. The result of the calculation is related to the number of branches required and can be used in a table lookup in one branch instruction. For example, the case where x is an odd number and an even number are distinguished in a state in which they are resistant to SPA.

target[2]:=[Even, Odd];
int y:=x&1;/yは、xが偶数の場合、0、xが奇数の場合、1
goto(target[y]);
Even: .../xが偶数の場合はここに
Odd: .../xが奇数の場合ここに
本発明の実施形態の動作のさらなる例示が、w=3の場合について、図15に示されている。最大値7(3の二進数ビットのウィンドウの場合)までのPの奇数の倍数のみが、群、すなわち、P、3P、5P、7Pに含まれ、これは、図15において、これらの倍数を囲む実線での輪郭で示されている。この群はまた、上述したように、概念的に、対応する負の倍数−P、−3P、−5Pおよび−7Pを含むと考えられ、これらは、これらの倍数を囲む破線の輪郭で示されている。OPを含む、欠けている偶数の倍数は、破線の輪郭で囲まれた何も書いていない四角によって示されている。必要な倍数が−6、すなわち、群において利用可能でない数であると決定される場合、次に大きい倍数−5が、繰り越しインジケータ−1とともに、群から選択される。これは、選択された倍数が1大きく、次の反復において補正される必要があるからである。倍加(D)演算が、次の反復の始まりにおいて2回行われ、この繰り越しは、次の反復における−8P(−2^3*P)調節に変換される。5Pの正の倍数が、この群から選択され、アキュムレータ値から減算される。同様に、必要な倍数が、この群において利用可能でないOPであると決定される場合、次に大きい倍数1が、繰り越しインジケータ−1とともにこの群から選択される。これは、選択された倍数が1大きく、次の反復において補正される必要があるからである。必要な倍数が、この群において利用可能な5Pであると決定される場合、倍数は、次の反復において調節が必要ないので、繰り越しインジケータ0とともにこの群から選択される。
target [2]: = [Even, Odd];
int y: = x &1; / * y is 0 if x is even, 1 * / if x is odd
goto (target [y]);
Even:. . . / * If x is an even number * /
Odd:. . . / * If x is an odd number, * /
A further illustration of the operation of an embodiment of the present invention is shown in FIG. 15 for the case where w = 3. Only odd multiples of P up to a maximum value of 7 (in the case of a binary bit window of 3) are included in the group, ie, P, 3P, 5P, 7P, which in FIG. It is shown by the outline with the surrounding solid line. This group is also considered conceptually to include the corresponding negative multiples -P, -3P, -5P and -7P, as indicated above, which are indicated by the dashed outline surrounding these multiples. ing. Missing even multiples including OP are indicated by a blank square surrounded by a dashed outline. If the required multiple is determined to be -6, i.e., a number that is not available in the group, then the next largest multiple -5 is selected from the group along with the carry forward indicator-1. This is because the selected multiple is one larger and needs to be corrected in the next iteration. A doubling (D) operation is performed twice at the beginning of the next iteration, and this carryover is converted to a -8P (-2 ^ 3 * P) adjustment in the next iteration. A positive multiple of 5P is selected from this group and subtracted from the accumulator value. Similarly, if the required multiple is determined to be an OP that is not available in this group, the next largest multiple 1 is selected from this group along with the carry forward indicator-1. This is because the selected multiple is one larger and needs to be corrected in the next iteration. If the required multiple is determined to be 5P available in this group, the multiple is selected from this group with carry forward indicator 0 because no adjustment is required in the next iteration.

図15に示す方式は、w=3の場合に可能な唯一の方式ではない。図16に、この群に適切な倍数のさらなる例を示す。図16においては、奇数の倍数P、3P、5Pおよび7Pではなく、倍数2P、6P、10Pおよび14Pがこの群に含まれるように事前選択されている。倍数はさらに広がっているので、繰り越しインジケータは、より柔軟な調節を可能にする必要がある。従って、図16に示す方式は、繰り越しが{−1,0}から選択されるのではなく、{−2,−1,0,1}から選択されることを必要とする。これらの繰り越し値は、次の反復に、{−16P,−8P,0P,+8P}として繰り越される。0P...7Pの基本的な倍数と共に、これによって、次の反復において、可能な、必要な倍数−16P...+15Pが得られる。その範囲内の必要な倍数に基づいて、群{−14P,−10P,−6P,−2P,2P,6P,10Pおよび14P}において利用可能な倍数から選択することによって、前と同じ、集合{−2,−1,0,1}内の可能な繰り越しインジケータが得られる。従って、後に続く反復において、必要な倍数が利用可能でない場合、集合{−2,−1,0,1}内の他の可能な繰り越しを用いて、完全な調節がまた行われ得る。空間面でのコストは、図15の例と同じ(4つの事前計算された値)であるが、完成ステップは、ここでは、完成および統一する異なる繰り越し状態が4つあるので、わずかに複雑である(しかし、当業者にとっては依然として容易に決定可能である)。   The scheme shown in FIG. 15 is not the only scheme that is possible when w = 3. FIG. 16 shows a further example of multiples appropriate for this group. In FIG. 16, multiples 2P, 6P, 10P and 14P are preselected to be included in this group, rather than odd multiples P, 3P, 5P and 7P. As the multiple is further expanded, the carry-over indicator needs to allow for more flexible adjustments. Therefore, the scheme shown in FIG. 16 requires that the carry-over is not selected from {-1, 0} but from {-2, -1, 0, 1}. These carry values are carried over to the next iteration as {−16P, −8P, 0P, + 8P}. 0P. . . Along with the basic multiple of 7P, this allows the required multiple of -16P. . . + 15P is obtained. Based on the required multiple within that range, select from the available multiples in the group {-14P, -10P, -6P, -2P, 2P, 6P, 10P, and 14P}, the same set { Possible carryover indicators in -2, -1, 0, 1} are obtained. Thus, in the subsequent iterations, if the required multiple is not available, a full adjustment can also be made using other possible carry forwards in the set {-2, -1, 0, 1}. The cost in space is the same as in the example of FIG. 15 (four precomputed values), but the completion step is slightly more complicated here because there are four different carryover states to complete and unify. Yes (but is still readily determinable for those skilled in the art).

図15に示す例のように、奇数の倍数を事前計算し、格納することではなく、偶数の倍数2P、4P、6P、8Pを事前計算し、格納することも可能である。奇数の倍数が必要である場合、次に大きい偶数の倍数が選択され、次の反復において、繰り越しインジケータ−1を用いて前と同じように補正される。ゼロ倍数0Pが必要とされる場合、ダミー加算が、基本的なウィンドウ法の場合と同じように行われ得る。1つ小さい倍数を選んで上方向に調節するのではなく、1つ大きい倍数を選択し、後に続く反復において負の調節を行う理由は、以下の通りである。通常、w=3について、範囲0P...7Pにおける基本的な倍数が必要とされ得る。0Pまたは−8Pのいずれかの繰り越しを考慮すると、これは、−8P...+7Pの範囲があり得る。従って、事前計算された倍数0P...7P、およびその負の数−7P...0Pが用いられ得るが、−8Pも得るために−Pの繰り越しを後回しにする可能性もある。繰り越しが0Pまたは+8Pである場合、カバーされる必要がある範囲は、0P...15Pである。事前計算された値の負の値を用いることは、この範囲を効率的に2倍にする。いくつかの状況においては、適切な調節ステップが取られるならば、基本的なウィンドウ法において用いられる倍数の数の半分よりも少ない倍数を用いることが可能である。   As in the example shown in FIG. 15, it is also possible to pre-calculate and store even multiples 2P, 4P, 6P, and 8P instead of pre-computing and storing odd multiples. If an odd multiple is required, the next higher even multiple is selected and corrected in the next iteration as before with the carry-in indicator-1. If a zero multiple 0P is required, a dummy addition can be performed as in the basic window method. The reason for selecting a larger multiple and making a negative adjustment in subsequent iterations, rather than selecting one smaller multiple and adjusting upwards, is as follows. Usually, for w = 3, the range 0P. . . A basic multiple in 7P may be required. Considering carry-over of either 0P or -8P, this is -8P. . . There can be a range of + 7P. Therefore, the precomputed multiple 0P. . . 7P, and its negative number -7P. . . Although 0P can be used, there is a possibility that the carry-over of -P may be delayed to obtain -8P. If the carryover is 0P or + 8P, the range that needs to be covered is 0P. . . 15P. Using a negative value of the precomputed value effectively doubles this range. In some situations, it is possible to use a multiple that is less than half the number of multiples used in the basic window method, if appropriate adjustment steps are taken.

まとめると、kの二進数インプリメンテーションを用いる本発明の実施形態は、基本的なウィンドウ法に必要とされ得る倍数の数の約半分の倍数を事前計算および格納することを可能にし得る。ある実施形態において、加算および減算は、ウィンドウ(2^wの場合)を処理するために十分な別の動作を提供するために用いられ、余分な「繰り越し」表現は、次のウィンドウにおいて必要な調節を示すために用いられる。ある実施形態において、(2^w)−1までのPの奇数の倍数のみが格納される。wビットのウィンドウのそれぞれにおいて、Rは、まず、(w回のD演算を行うことによって)2^wでスケーリングされ、奇数の倍数のうちの1つの加算または減算のいずれかが行われる(2^wの起こり得る動作が得られ、全てSPA区別不能A演算である)。奇数の倍数(例えば、v.P)が必要とされる場合、v.Pは(事前計算されており)、vが(それぞれ)正であるか負であるかに依存して、単に加算または減算される。Pの偶数の倍数(例えば、v.P)が必要とされる場合、(v+1).Pが代わりに加算され(v+1が負である場合において減算演算につながり得)、これが(スケーリング後に余分な(2^w).Pを減算することによって)次のウィンドウにおいて補正される必要があることを示すために、「繰り越しフラグ」を−1に設定する。そうでない場合、繰り越しフラグは、0である。従って、任意のウィンドウにおいてRに加算される倍数v.Pは、v=(2^w)*繰り越し+「通常のウィンドウ法が加算したであろう値」として計算される。   In summary, embodiments of the present invention that use a binary implementation of k may allow pre-computation and storage of multiples of approximately half of the multiples that may be required for basic windowing. In some embodiments, additions and subtractions are used to provide another operation that is sufficient to handle a window (in the case of 2 ^ w), and an extra “carry forward” representation is needed in the next window. Used to indicate regulation. In some embodiments, only odd multiples of P up to (2 ^ w) -1 are stored. In each of the w-bit windows, R is first scaled by 2 ^ w (by performing w D operations) and either adding or subtracting one of the odd multiples (2 ^ W possible actions are obtained, all of which are SPA indistinguishable A operations). If an odd multiple (eg, v.P) is required, then v. P (pre-computed) is simply added or subtracted depending on whether v is positive or negative (respectively). If an even multiple of P (eg, v.P) is required, (v + 1). P is added instead (may lead to a subtraction operation if v + 1 is negative) and this needs to be corrected in the next window (by subtracting the extra (2 ^ w) .P after scaling) In order to indicate this, the “carry forward flag” is set to −1. Otherwise, the carry forward flag is zero. Therefore, the multiple v. Added to R in any window. P is calculated as v = (2 ^ w) * carry-over + “value that the normal window method would add”.

ウィンドウ幅がwの一般的な場合において、図13に示す実施形態の格納要件は、2^(w−1)点(二進法のkの場合)であり、2^wのオーダーの点の格納を必要とする、相当する基本的なウィンドウ法の要件の約半分である。   In the general case where the window width is w, the storage requirement of the embodiment shown in FIG. 13 is 2 ^ (w−1) points (in the case of binary k) and stores points of the order of 2 ^ w. Approximately half of the corresponding basic windowing requirements.

この実施形態は、(2^(w−1)+(1+(1/w))│k│+2点演算を必要とする(3.P、5.P...の事前計算は、2^(w−1)−1点演算を取り、各ループボディは、w回のD演算および1つA演算からなり、│k│/wの反復があり、示唆される最終ステップは3点演算を必要とする)。従って、本発明のこの実施形態は、Pの倍数の事前計算がより少ないので、((2^w)−2+(1+(1/w))│k│点演算を必要とする)基本的なウィンドウ法よりも速い。   This embodiment requires (2 ^ (w-1) + (1+ (1 / w)) | k | +2 point arithmetic (3.P, 5.P ... pre-computation is 2 ^ (W-1) Take a -1 point operation, each loop body consists of w D operations and one A operation, there are | k | / w iterations, the suggested final step is a 3 point operation Therefore, this embodiment of the present invention requires ((2 ^ w) −2+ (1+ (1 / w)) | k | point operations because there is less precomputation of multiples of P. Faster) than the basic window method.

本発明の実施形態における点演算分類(すなわち、「A」、「D」、または「Z」)のシーケンスは、kから完全に独立するようにされ得、任意のダミー演算(結果が計算されるが格納されない)の必要をなくすこともできる。これは、本発明の実施形態を、SPAに対する抵抗力があるインプリメンテーションに特に適するようにする。   The sequence of point operation classifications (ie, “A”, “D”, or “Z”) in embodiments of the present invention can be made completely independent of k, and any dummy operation (result is calculated). Can be eliminated). This makes embodiments of the present invention particularly suitable for implementations that are resistant to SPA.

最初の反復において、w「倍加」演算は、(RがOなので)分類Zに含まれるが、これらの演算は、効率のために省かれ得る。省かれない場合でも、いずれにせよ、全てのkに対して同じように起きるので、kについての情報をうっかり漏らすことはない。   In the first iteration, w “doubling” operations are included in classification Z (since R is O), but these operations can be omitted for efficiency. Even if it is not omitted, in any case, since it occurs in the same way for all k, information about k is not inadvertently leaked.

最初の反復の後、Rは、Oになることはない(kが曲線群のオーダーを法とする0とほぼ等しい、数少ないデジェネレートの場合を除く。Rが計算の後の段階でOになり得る場合、実際にはこれは起こらず、いずれにせよ、この計算を行う前にkが「適切」であることがチェックされ得る)。これは、Z演算にデジェネレートされるDまたはA演算がないことを意味する。これによって、本発明の実施形態は、SPA防止に特に適するようになる。   After the first iteration, R will never be O (except for the few degenerate cases where k is approximately equal to 0 modulo the order of the curve group. R may be O at a later stage of computation. In practice, this does not happen, and in any case k can be checked to be “appropriate” before making this calculation). This means that there is no D or A operation degenerated in the Z operation. This makes embodiments of the present invention particularly suitable for SPA prevention.

同様に、Rは、第1の反復(R=Oの場合)においても、「R:=(2^w).R」ステップに従うPの奇数の倍数になることはない。従って、奇数の倍数のみを事前選択された群に用いると、(例えば、Rがこの点においてPまたは−Pに等しい場合のように)DまたはZ演算にデジェネレートするA演算はない。これによって、本発明の実施形態は、SPA防止に特に適するようになる。   Similarly, R will not be an odd multiple of P following the “R: = (2 ^ w) .R” step in the first iteration (if R = O). Thus, when only odd multiples are used for a preselected group, there is no A operation that degenerates to a D or Z operation (eg, when R is equal to P or -P at this point). This makes embodiments of the present invention particularly suitable for SPA prevention.

ある実施形態において、全ての条件付き格納は同じ位置で行われる(すなわち、全てレジスタRに)。従って、格納を観察するための、電力情報がアドレスバス上にない。しかし、(可能性は非常に低いが)繰り越しフラグ、またはオペランド(P,3P,5P...)のソースアドレスを観察することによって漏れるデータがあり得る。この起こり得る漏れは、他の(ハードウェア)保護手段がとられる場合、SPAにとって見えなくなる。   In some embodiments, all conditional storage occurs at the same location (ie, all in register R). Therefore, there is no power information on the address bus to observe storage. However, there may be data leaked by observing the carry-over flag or the source address of the operands (P, 3P, 5P ...) (though very unlikely). This possible leak is invisible to the SPA if other (hardware) protection measures are taken.

この対抗手段は、決定論的であるので、これをインプリメントするために、乱数は必要とされない。従って、乱数発生器をディセーブルまたはバイアシングしようと試みる攻撃に対しても抵抗力がある。   Since this countermeasure is deterministic, no random number is required to implement it. Therefore, it is also resistant to attacks that attempt to disable or bias the random number generator.

w=2の場合、3.Pを事前計算し、格納することのみが必要であり、他の倍数(P自体以外)は必要ない。アキュムレータは、この結果について、いずれにせよ必要であり、そのPは入力パラメータから変えられていないので、オーバーヘッドは、1点に過ぎないと考えられ得る。従って、3PまたはP自体は、Rから任意の時間で、加算または減算され得、4つの演算は、SPAにおいて区別不可能である。   2. When w = 2 It is only necessary to precalculate and store P, and no other multiples (other than P itself) are required. An accumulator is needed for this result anyway, and its P is not changed from the input parameters, so the overhead can be considered as only one point. Thus, 3P or P itself can be added or subtracted from R at any time, and the four operations are indistinguishable in SPA.

w=2の場合、本発明を具現化する方法は、2+3│k│/2+3点演算のみを用いる。(3Pの事前計算は、2つの演算を必要とする。各ループボディは、2つのD演算および1つのA演算からなり、│k│/2の反復がある。示唆されている最終ステップは、3つの演算wを取る。)
事前計算は、ループ反復と比較して、それほど時間がかからない(例えば、kは160ビットを有し得る)。このケースステートメントは、点演算と比較して、無視できるものである。従って、本発明の実施形態の主な利点は、順番に、(1)SPA防止(2)空間および(3)速度であると見られ得る。SPA防止の利点の一部は、実際に倍数を事前計算および格納することないが、必要に応じて計算を行って、達成され得る。従って、SPA防止の利点は、空間および速度面の利点からは独立している。本発明の実施形態は、スマートカードに適用される場合、特に利点を有する。これは、スマートカードは安全である必要があるが、同時に、これを達成するためのリソースが限定されているので、改良されたSPA防止および低減されたスペース要件が組み合わせられた利点が特に有益だからである。
When w = 2, the method embodying the present invention uses only 2 + 3 | k | / 2 + 3 point arithmetic. (The 3P pre-computation requires two operations. Each loop body consists of two D operations and one A operation, and there are | k | / 2 iterations. The suggested final step is 3 operations are taken.)
Pre-computation takes less time compared to loop iterations (eg, k may have 160 bits). This case statement is negligible compared to point operations. Thus, the main advantages of embodiments of the present invention can be seen in turn as (1) SPA prevention (2) space and (3) speed. Some of the benefits of SPA prevention can be achieved by performing calculations as needed, without actually precalculating and storing multiples. Thus, the benefits of SPA prevention are independent of space and speed benefits. Embodiments of the present invention have particular advantages when applied to smart cards. This is because smart cards need to be secure, but at the same time the benefits of combining improved SPA prevention and reduced space requirements are particularly beneficial as resources to achieve this are limited. It is.

本発明の実施形態は、例えば、安全なデバイス上の楕円曲線暗号法の分野に提供される。この文脈における安全なデバイスは、通常の計算システムに取りつけられたハードウェアモジュール、スマートカードチップのような安全なチップ、敵対的な環境における暗号化関数を行う独立型デバイス、セットトップボックスの一部、またはデジタル権管理装置の一部であり得る。リソース(メモリおよび電力)が限定されており、サイドチャネル攻撃に対するセキュリティが極めて重要なデバイスに特に適する。   Embodiments of the present invention are provided, for example, in the field of elliptic curve cryptography on secure devices. Secure devices in this context include hardware modules attached to normal computing systems, secure chips such as smart card chips, stand-alone devices that perform cryptographic functions in hostile environments, and parts of set-top boxes Or part of a digital rights management device. Particularly suitable for devices where resources (memory and power) are limited and security against side channel attacks is extremely important.

本発明の実施形態によって達成される空間面の利点は、基本ウィンドウ法において必要な倍数の数の半分よりも多い倍数が、事前計算され、格納される場合でも達成される。例えば、w=3の場合、P、2P、3P、5P、6P、7P(すなわち、0Pおよび4P以外全て)の値は、事前計算され、格納され得る。各ループにおいて、必要な倍数が事前格納されているか否かを調べるために単純なチェックがあり得、事前格納されていない場合(Oおよび4Pの場合)、次に大きい(Pおよび5P)が選択され、繰り越しインジケータは、差(両方の場合において−1)が設定される。   The spatial advantage achieved by embodiments of the present invention is achieved even when multiples greater than half the number of multiples required in the basic window method are precomputed and stored. For example, if w = 3, the values of P, 2P, 3P, 5P, 6P, 7P (ie all except 0P and 4P) may be precomputed and stored. In each loop, there can be a simple check to see if the required multiple is pre-stored, if it is not pre-stored (for O and 4P), the next largest (P and 5P) is selected And the carry-over indicator is set to the difference (-1 in both cases).

本発明の実施形態はまた、2以外の底にも適用される。例えば、十進法でk=7135であり、ウィンドウがw=2である場合、k=(71)(35)である。例えば、71P以外の全てのPの倍数が事前格納されている場合、2回の反復が以下のように行われる。反復1:R=0*10*10+72P=72P、繰り越しは−1(71Pは利用可能でない)反復2:R=72P*10*10+(35+[−1*10*10])P=7200P−65P=7135P、繰り越しは0(65Pは利用可能である)
本発明の実施形態はまた、(k.P+m.Q)の決定に拡張され得る。2つの別の繰り越しインジケータが、進行中の各乗算につき1つずつ、保持される。Rのスケーリング後、本発明の実施形態の有用なAステップが2回、kのウィンドウについて1回(k繰り越しを用いる、+/−P,+/−3P,...)、mのウィンドウについて1回(m繰り越しを用いる、+/−Q,+/−3Q,...)適用される。これは、合計で約2^wの格納(基本的なウィンドウ法の半分)と、ほぼ、2^w+│k│.(1+2/w)演算(事前計算が少ないので基本的なウィンドウ法よりも少ない)とを有する。
Embodiments of the invention also apply to bottoms other than two. For example, if k = 7135 in decimal notation and the window is w = 2, k = (71) (35). For example, if all P multiples other than 71P are pre-stored, two iterations are performed as follows. Iteration 1: R = 0 * 10 * 10 + 72P = 72P, carryover is -1 (71P is not available) Iteration 2: R = 72P * 10 * 10 + (35 + [-1 * 10 * 10]) P = 7200P-65P = 7135P, carry over is 0 (65P is available)
Embodiments of the present invention can also be extended to the determination of (kP + mQ). Two separate carry-over indicators are maintained, one for each multiplication in progress. After scaling R, the useful A-step of the embodiment of the present invention is twice, once for k windows (using k carry over, +/− P, +/− 3P,...) For m windows. Applied once (using m rollover, +/− Q, +/− 3Q,...). This is a total of about 2 ^ w storage (half of the basic window method) and almost 2 ^ w + | k |. (1 + 2 / w) operations (less than the basic window method because there are few prior calculations).

これは、(基本的なウィンドウ法において用いられ得る方法と同じ方法で)必要とされ得る倍数の各種の組合せを事前計算し、格納することによって、最適化され得る。w=2の場合、これは、単に、P+Q、P−Q、3P+Q、3P−Q、P+3Q、P−3Q、3P+3Q、3P−3Qである。−P−QまたはQ−Pは、P+QまたはP−Qをそれぞれ減算することによって得られ、格納される必要がないことに留意されたい。必要とされる格納は、2^(2w−1)、すなわち、基本的なウィンドウ法の格納の半分だけである。速度は、ほぼ、2^(2w−1)(事前計算)に│k│.(1+1/w)演算を加えたものである。   This can be optimized by precomputing and storing the various combinations of multiples that may be needed (in the same way that can be used in the basic window method). If w = 2, this is simply P + Q, P-Q, 3P + Q, 3P-Q, P + 3Q, P-3Q, 3P + 3Q, 3P-3Q. Note that -P-Q or QP is obtained by subtracting P + Q or P-Q, respectively, and need not be stored. The only storage required is 2 ^ (2w-1), ie half of the basic windowing storage. The speed is approximately 2 ^ (2w-1) (pre-calculation). (1 + 1 / w) operation is added.

これは、十分な記憶装置が利用可能であれば、任意の数の項に一般化され得る。   This can be generalized to any number of terms if sufficient storage is available.

Pに符号付きの二進数値kを乗算することができれば有用である。この場合、kの最上位ビットは、明示的な負の符号を有するとみなされる。これは、符号付きの二進数値を表す標準的な方法である。この変化は、先頭ビットに負の重みを提供するために第1のループ反復において「v」の計算を変更することによって、本発明のある実施形態に組み込まれ得、「繰り越し」は、最初の反復において常に0であるので、ウィンドウを符号付きの数として処理することは、vを、−(2^w)〜(2^w)−1までの範囲から出すことがないので、アルゴリズムは前と同じように機能する。   It would be useful if P could be multiplied by a signed binary value k. In this case, the most significant bit of k is considered to have an explicit negative sign. This is a standard way of representing signed binary values. This change can be incorporated into an embodiment of the present invention by changing the calculation of “v” in the first loop iteration to provide a negative weight for the first bit, Since it is always 0 in the iteration, treating the window as a signed number does not take v out of the range from-(2 ^ w) to (2 ^ w) -1, so the algorithm Works the same as

あるいは、パディング前のkのサイズn=│k│が、wの倍数よりも1大きい場合、繰り越しフラグは、初期的に、ゼロではなく、−k_{n−1}に設定され得、kの先頭ビットを捨てた後の(符号なし)バージョンに続く。   Alternatively, if the size n = | k | of padding before padding is one greater than a multiple of w, the carry-over flag may initially be set to −k_ {n−1} instead of zero, Following the (unsigned) version after discarding the first bit.

本発明のある実施形態は、ハードウェアまたはソフトウェア、あるいはこれらの組合せにおいてインプリメントされ得、上記で概説した技術的な利点は、このような場合の全てにおいて提供される。図17は、少なくとも入力/出力、CPU、ならびにいくつかのプログラム格納およびワークスペースのためのメモリを有する、スマートカード、または他の安全なプラットフォームにおけるハードウェアとソフトウェアとの間の処理の特定の部分の責任の、4つの異なった割り当て方を示す。暗号コプロセッサがあってもよいし、算術コプロセッサがあってもよいし、コプロセッサがなくてもよい。(a)に示すある実施形態において、コプロセッサは、本発明を具現化する方法全体を実行する。(b)に示す他の実施形態において、コプロセッサは、点の倍加および点の加算(おそらくは、点の減算)を実行することができ、CPUが、外側ループ(kのビット)に対処し、本発明を具現化する方法に従って、シーケンスにおいて演算を実行するようにコプロセッサにリクエストする。(c)に示す他の実施形態において、コプロセッサは、フィールド算術演算のみを実行する。CPUは、本発明を具現化する方法に従って、外側ループを行い、点演算によって必要とされる特定のフィールド演算を実行するようにコプロセッサにリクエストする。(d)に示す他の実施形態においては、コプロセッサがなく、CPUが、本発明の方法を具現化する方法に従って、全ての関数を実行する。   Certain embodiments of the present invention may be implemented in hardware or software, or combinations thereof, and the technical advantages outlined above are provided in all such cases. FIG. 17 illustrates certain parts of the processing between hardware and software in a smart card or other secure platform that has memory for at least input / output, CPU, and some program storage and workspace. Shows four different ways of assigning responsibilities. There may be a cryptographic coprocessor, an arithmetic coprocessor, or no coprocessor. In one embodiment, shown in (a), the coprocessor performs the entire method embodying the present invention. In another embodiment shown in (b), the coprocessor can perform point doubling and point addition (possibly point subtraction), and the CPU handles the outer loop (bit k); According to a method embodying the present invention, a request is made to the coprocessor to perform operations in the sequence. In another embodiment, shown in (c), the coprocessor performs only field arithmetic operations. The CPU performs an outer loop according to the method embodying the present invention and requests the coprocessor to perform the specific field operations required by the point operations. In another embodiment shown in (d), there is no coprocessor and the CPU executes all functions according to a method embodying the method of the present invention.

本発明を具現化するオペレーティングプログラムは、コンピュータ読み出し可能媒体に格納され得るが、例えば、インターネットウェブサイトから提供されるダウンロード可能なデータ信号のような信号において実現されてもよい。添付の特許請求の範囲は、コンピュータプログラム自体、媒体上の記録としてのコンピュータプログラム、または信号としてのコンピュータプログラム、あるいは任意の他の形態のコンピュータプログラムを含むと解釈される。   An operating program embodying the present invention may be stored on a computer readable medium, but may be implemented in a signal such as a downloadable data signal provided by an internet website, for example. The appended claims are construed to include the computer program itself, the computer program as a record on a medium, or the computer program as a signal, or any other form of computer program.

以下は、乗数(k)が秘密であるECC点乗算を用いるアルゴリズムの例である。ElGamal暗号法(演算を秘密に保つ必要があるので、SPA防止が重要である)は、復号のために点乗算を用いる。ElGamalデジタル署名(演算を秘密に保つ必要があるので、SPA防止が重要である)は、メッセージの署名のために点乗算を用いる。ECCDSAも同様である。楕円曲線Diffie−Hellman鍵交換は、対称鍵に一致させるためにECC点乗算を用いる(ここでもSPA防止が重要である)。   The following is an example of an algorithm using ECC point multiplication where the multiplier (k) is secret. ElGamal cryptography (SPA prevention is important because operations need to be kept secret) uses point multiplication for decryption. ElGamal digital signatures (SPA prevention is important because operations need to be kept secret) use point multiplication for message signatures. The same applies to ECCDSA. Elliptic curve Diffie-Hellman key exchange uses ECC point multiplication to match the symmetric key (again, SPA prevention is important).

楕円曲線において点乗算は、整数のモジュラ累乗法に類似する。ただし、点倍加および点加算は、それぞれ、モジュラ二乗およびモジュラ乗算に対応する。従って、上記の本発明を具現化する方法および装置は、モジュラ累乗法用に(例えば、公開鍵暗号法システムRSAにおいて用いられるように)容易に変更され得る。   Point multiplication in an elliptic curve is similar to an integer modular power method. However, point doubling and point addition correspond to modular square and modular multiplication, respectively. Thus, the methods and apparatus embodying the invention described above can be easily modified for modular power (eg, as used in public key cryptosystem RSA).

図18は本発明のさらなる実施形態を示すブロック図である。図9における部材に厳密に対応する図18の部材は、類似の参照符号(例えば、20および20’)が付けられ、図9の実施形態についての教示内容を図18の実施形態にどのように適用するかは、当業者にとって明らかである。例えば、(M^d mod N)を計算する場合、用いられる方法は、同等であり、図9に関連する上記の記載が適用されるが、PがMと置き換えられ、kがdと置き換えられ、A+BがA*B mod Nと置き換えられ、A−BがA*(1/B mod N)と置き換えられ、Rが1と初期化される。従って、図18の詳細な説明は省かれる。   FIG. 18 is a block diagram showing a further embodiment of the present invention. The members of FIG. 18 that exactly correspond to the members in FIG. 9 are labeled with similar reference numbers (eg, 20 and 20 ′) and how the teachings of the embodiment of FIG. It will be clear to those skilled in the art which to apply. For example, when calculating (M ^ d mod N), the method used is equivalent and the above description relating to FIG. 9 applies, but P is replaced with M and k is replaced with d. , A + B is replaced with A * B mod N, A−B is replaced with A * (1 / B mod N), and R is initialized to 1. Therefore, the detailed description of FIG. 18 is omitted.

図19は、ウィンドウ幅が2である場合の図18の実施形態の動作を示すフローチャートである。図20は、d=35の例について、図19の方法の動作を示す図である。これらの2つの図に関する記載は、それぞれ、図10および12に関する記載に相当し、従って、これらの図の詳細な説明は省かれる。本発明の実施形態は、(M^d)の計算、すなわち、累乗法のみに同等適用可能であり、モジュラ累乗には適用されない。この場合、図19および20において行われているように、全てのmodステートメントが無視され得る。   FIG. 19 is a flowchart showing the operation of the embodiment of FIG. 18 when the window width is 2. FIG. 20 is a diagram illustrating the operation of the method of FIG. 19 for an example where d = 35. The description with respect to these two figures corresponds to the description with respect to FIGS. 10 and 12, respectively, and therefore a detailed description of these figures is omitted. Embodiments of the present invention are equally applicable only to the calculation of (M ^ d), i.e., the power method, and not to modular power. In this case, all mod statements can be ignored, as is done in FIGS.

除算は、乗算ほど効率的でないので、様々な逆数が、事前計算され得、必要な場合、除数ではなく乗数が用いられる。従って、(1/M mod N)、(1/Mmod N)、...(1/(M(2^w)−1)mod N)が事前計算され、格納される。このような逆数の事前計算を用いて、この方法は、通常のウィンドウ法とほぼ同じくらい効率的である。しかし、ダミー乗算演算の必要はなくなる。楕円曲線実施形態において、減算は、加算とおなじくらい効率的であり、負の倍数を事前計算する必要はない。 Since division is not as efficient as multiplication, various reciprocals can be precomputed, and multipliers are used instead of divisors when necessary. Therefore, (1 / M mod N), (1 / M 3 mod N),. . . (1 / (M (2 ^ w) -1 ) mod N) is precalculated and stored. With such reciprocal precomputation, this method is almost as efficient as the normal window method. However, there is no need for dummy multiplication operations. In the elliptic curve embodiment, subtraction is as efficient as addition and there is no need to pre-compute negative multiples.

最終ステップの一部は、除算が遅いため、この適用例において有効でない。従って、「R:=R−2P」を実行する必要がある1/2P mod Nを計算することは避けたい。このステートメントを、2つのモジュラ乗算に相当する「R:=R−P;R:=R−P」で置き換えることができる(逆数1/Pが事前計算され、2つの乗算演算が得られる)。1/2P mod Nの計算は、2Pが偶数であり、標準的な方法は失敗するので、困難である。   Some of the final steps are not valid in this application because of the slow division. Therefore, we do not want to calculate ½P mod N which needs to execute “R: = R−2P”. This statement can be replaced by “R: = R−P; R: = R−P”, which corresponds to two modular multiplications (the reciprocal 1 / P is pre-calculated to give two multiplication operations). Calculation of 1 / 2P mod N is difficult because 2P is an even number and the standard method fails.

モジュラ乗算は、しばしば、Montgomery空間を変換し、通常のモジュラ乗算ではなくMontgomery乗算を用いて、インプリメントされる。これも、本発明の実施形態を用いることによって可能である。   Modular multiplication is often implemented using Montgomery multiplication rather than regular modular multiplication, transforming the Montgomery space. This is also possible by using embodiments of the present invention.

楕円曲線上の点は、座標の順序付けられたタプルとして表現され得ることを上述した。これらの座標は、基礎を為す数学的フィールドの要素であり、大きな素数を法とする整数の演算であってもよいし、固定された多項式を法とする多項式の係数と見なされる小さい整数のベクトルの演算であってもよいし、CPUまたはコプロセッサで計算可能な任意の他の表現であってもよい。本発明の実施形態の有効性は、フィールドの選択または、そのフィールドにおいて定義される曲線の選択とは無関係である。   It has been mentioned above that points on an elliptic curve can be represented as an ordered tuple of coordinates. These coordinates are elements of the underlying mathematical field, may be integer operations modulo large prime numbers, or vectors of small integers that are considered as coefficients of polynomials modulo fixed polynomials Or any other expression that can be calculated by the CPU or coprocessor. The effectiveness of embodiments of the present invention is independent of the choice of field or the curve defined in that field.

以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
(要旨)
本発明では、ウィンドウサイズが2である、反復的二進法の左から右への「倍加および加算」タイプアルゴリズムを用いる、データアイテムPの倍数kを計算する、データ処理方法が提供される。少なくとも1つのPの倍数を含む、データアイテムの選択肢が提供される(S1)。アルゴリズムの特定の反復において、アルゴリズムの「加算」部分において用いられるための、その反復に必要なPの倍数が決定される(S2−2)。その後、必要な倍数に依存して倍数が選択肢から選択され、必要な倍数と選択された倍数との関係に依存して、調節インジケータが設定される(S2−2)。後に続く反復において、必要な倍数は、以前の反復からの調節インジケータに依存して、決定される(S2−2)。アルゴリズムの「倍加」部分において用いられる乗数(S2−1)は、4である。この方法は、kの他の底および他のウィンドウサイズに適用可能である。
As mentioned above, although this invention has been illustrated using preferable embodiment of this invention, this invention should not be limited and limited to this embodiment. It is understood that the scope of the present invention should be construed only by the claims. It is understood that those skilled in the art can implement an equivalent range based on the description of the present invention and the common general technical knowledge from the description of specific preferred embodiments of the present invention. Patents, patent applications, and documents cited herein should be incorporated by reference in their entirety, as if the contents themselves were specifically described herein. Understood.
(Summary)
The present invention provides a data processing method for calculating a multiple k of a data item P using an iterative binary left-to-right “double and add” type algorithm with a window size of two. A choice of data items is provided that includes at least one multiple of P (S1). In a particular iteration of the algorithm, the multiple of P required for that iteration to be used in the “addition” part of the algorithm is determined (S2-2). Thereafter, a multiple is selected from the choices depending on the required multiple, and an adjustment indicator is set depending on the relationship between the required multiple and the selected multiple (S2-2). In subsequent iterations, the required multiple is determined depending on the adjustment indicator from the previous iteration (S2-2). The multiplier (S2-1) used in the “doubling” part of the algorithm is 4. This method is applicable to other bases of k and other window sizes.

図1は、代表的なスマートカードの主要な部分を示すブロック図である。FIG. 1 is a block diagram showing the main parts of a typical smart card. 図2は、従来の暗号化モデルを説明するために用いられる例示的なブロック図である。FIG. 2 is an exemplary block diagram used to describe a conventional encryption model. 図3は、サイドチャネルを含む暗号化モデルを説明するために用いられる例示的なブロック図である。FIG. 3 is an exemplary block diagram used to describe an encryption model including a side channel. 図4は、楕円曲線の概念を例示するために用いられる、単純な楕円曲線を示す図である。FIG. 4 is a diagram illustrating a simple elliptic curve used to illustrate the concept of an elliptic curve. 図5は、楕円曲線点乗算の基本的な「倍加および加算」アルゴリズムを示す図である。FIG. 5 is a diagram illustrating a basic “double and add” algorithm for elliptic curve point multiplication. 図6は、図5に示すアルゴリズムの演算の一例を示す図である。FIG. 6 is a diagram showing an example of the calculation of the algorithm shown in FIG. 図7は、楕円曲線点乗算を行う基本的なウィンドウ法を、ウィンドウサイズ>=2の場合について示す図である。FIG. 7 is a diagram showing a basic window method for performing elliptic curve point multiplication when window size> = 2. 図8は、図7に示す方法の演算の一例を示す図である。FIG. 8 is a diagram illustrating an example of the calculation of the method illustrated in FIG. 図9は、本発明のある実施形態によるデータ処理装置を示すブロック図である。FIG. 9 is a block diagram illustrating a data processing apparatus according to an embodiment of the present invention. 図10は、本発明のある実施形態による楕円曲線点乗算を行う方法を、ウィンドウサイズが2の場合について示す図である。FIG. 10 is a diagram illustrating a method of performing elliptic curve point multiplication according to an embodiment of the present invention when the window size is 2. FIG. 図11は、図10の方法をフローチャートの形式で示す図である。FIG. 11 shows the method of FIG. 10 in the form of a flowchart. 図12は、図10および11に示す方法の演算の一例を示す図である。FIG. 12 is a diagram illustrating an example of the calculation of the method illustrated in FIGS. 10 and 11. 図13は、本発明のある実施形態による楕円曲線点乗算を行う方法を、ウィンドウサイズ>=2の場合について示す図である。FIG. 13 is a diagram illustrating a method for performing elliptic curve point multiplication according to an embodiment of the present invention when window size> = 2. 図14は、図13の方法をフローチャートの形式で示す図である。FIG. 14 shows the method of FIG. 13 in the form of a flowchart. 図15は、本発明のある実施形態における、倍数の選択および繰り越しインジケータの使用の一例を示す例示的な図である。FIG. 15 is an exemplary diagram illustrating an example of multiple selection and use of a carry forward indicator in an embodiment of the present invention. 図16は、本発明のある実施形態における、倍数の選択および繰り越しインジケータの使用の他の例を示す例示的な図である。FIG. 16 is an exemplary diagram illustrating another example of multiple selection and use of a carry forward indicator in an embodiment of the present invention. 図17は、本発明の異なる実施形態における、処理の割り当てを例示するために用いられるブロック図である。FIG. 17 is a block diagram used to illustrate process assignments in different embodiments of the invention. 図18は、本発明の他の実施形態によるデータ処理装置を示すブロック図である。FIG. 18 is a block diagram showing a data processing apparatus according to another embodiment of the present invention. 図19は、本発明のある実施形態による、累乗法を行う方法を、ウィンドウサイズ>=2の場合について示す図である。FIG. 19 is a diagram illustrating a method of performing a power method according to an embodiment of the present invention when window size> = 2. 図20は、図19に示す方法の演算の一例を示す図である。FIG. 20 is a diagram illustrating an example of the calculation of the method illustrated in FIG. 図21は、楕円曲線点加算および倍加、ならびに負の楕円曲線点を説明するために用いられる楕円曲線の他の例を示す図である。FIG. 21 is a diagram showing another example of an elliptic curve used for explaining elliptic curve point addition and doubling, and a negative elliptic curve point.

符号の説明Explanation of symbols

1 スマートカード
20 初期化部
22 事前調節倍数計算部
24 調節計算部
26 倍数事前計算部
28 必要な倍数決定部
30 倍数格納部
32 倍数選択部
34 計算部
36 ディクリメント部
DESCRIPTION OF SYMBOLS 1 Smart card 20 Initialization part 22 Prior adjustment multiple calculation part 24 Adjustment calculation part 26 Multiple prior calculation part 28 Required multiple determination part 30 Multiple storage part 32 Multiple selection part 34 Calculation part 36 Decrement part

Claims (53)

反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理方法であって、ここで、bは、倍数kの底であり、wはウィンドウサイズであり、該方法は、
少なくとも1つのPの倍数を含むデータアイテムの選択肢を提供するステップと、
該アルゴリズムの特定の反復について、その反復に必要なPの倍数を決定し、該必要な倍数に依存して該選択肢から選択した倍数を用い、該必要な倍数と該選択された倍数との関係に依存して調節インジケータを設定するステップと、
後に続く反復において、前回の反復からの該調節インジケータに依存して該必要な倍数を決定するステップと
を包含する、方法。
A data processing method for calculating a multiple k of a data item P using an iterative b w related window algorithm, where b is a base of the multiple k, w is a window size, and the method is ,
Providing a choice of data items including at least one multiple of P;
For a particular iteration of the algorithm, determine the multiple of P required for that iteration, use a multiple selected from the options depending on the required multiple, and the relationship between the required multiple and the selected multiple Depending on the setting of the adjustment indicator;
Determining in a subsequent iteration the required multiple depending on the adjustment indicator from the previous iteration.
前記選択された倍数を、利用可能である場合、倍数の記憶場所から取り出し、そうでない場合、該選択された倍数を計算するステップをさらに包含する、請求項1に記載の方法。   The method of claim 1, further comprising retrieving the selected multiple from a multiple storage location if available, and otherwise calculating the selected multiple. 後に続く取り出しのため、前記倍数の記憶場所に新たに計算された倍数を格納するステップをさらに包含する、請求項2に記載の方法。   3. The method of claim 2, further comprising storing a newly calculated multiple in the multiple storage location for subsequent retrieval. 前記選択肢内の少なくとも1つの倍数を事前計算するステップと、該少なくとも1つの事前計算された倍数を、後に続く取り出しのため、前記倍数の記憶場所に格納するステップをさらに包含する、請求項2または3に記載の方法。   3. The method further comprising: precomputing at least one multiple in the option; and storing the at least one precomputed multiple in the multiple storage location for subsequent retrieval. 3. The method according to 3. 前記選択肢内の全ての前記倍数は、前記倍数の記憶場所から利用可能である、請求項2、3または4に記載の方法。   The method according to claim 2, 3 or 4, wherein all the multiples in the option are available from the multiple storage locations. 前記倍数の記憶場所は、前記データアイテムPを保持する別個の領域を含む、請求項2〜5のいずれか1つに記載の方法。   The method according to any one of claims 2 to 5, wherein the multiple storage locations include a separate area holding the data item P. 前記選択肢は、反復において必要であると決定され得る倍数を全ては含まない、請求項1〜6のいずれか1つに記載の方法。   7. A method according to any one of the preceding claims, wherein the options do not include all of the multiples that can be determined to be necessary in the iterations. 前記選択肢が含む倍数は、b個よりも少ない、請求項7に記載の方法。 The method of claim 7, wherein the option contains less than b w multiples. 前記選択肢が含む倍数は、0.75*b個よりも少ない、請求項8に記載の方法。 Multiples the choices include is less than 0.75 * b w pieces, The method of claim 8. 前記選択肢は、少なくとも0.5*b個の倍数を含む、請求項9に記載の方法。 The options include at least 0.5 * b w pieces of multiple The method of claim 9. 前記選択肢は、最も近い整数個の倍数に切り上げられた、0.5*b個の倍数を含む、請求項10に記載の方法。 The choices are rounded up to the nearest integer number of multiples, including 0.5 * b w pieces of multiple The method of claim 10. 前記選択肢は、交互の倍数を含む、請求項6〜11のいずれか1つに記載の方法。   12. A method according to any one of claims 6 to 11, wherein the options include alternating multiples. 前記選択肢は、奇数の倍数のみを含む、請求項6〜12のいずれか1つに記載の方法。   13. A method according to any one of claims 6 to 12, wherein the options include only odd multiples. 前記選択肢は、ゼロ倍数を含まない、請求項6〜13のいずれか1つに記載の方法。   14. A method according to any one of claims 6 to 13, wherein the option does not include a multiple of zero. 前記調節インジケータは、前記必要な倍数と前記選択された倍数との間の関係の有限集合のうちの1つを示すように設定可能であり、必要な倍数が前記選択肢から利用可能でない場合、該集合内の利用可能な関係インジケータに依存して前記選択肢から他の倍数が選択される、請求項6〜14のいずれか1つに記載の方法。   The adjustment indicator can be set to indicate one of a finite set of relationships between the required multiple and the selected multiple, and if the required multiple is not available from the option, the 15. A method as claimed in any one of claims 6 to 14, wherein other multiples are selected from the choices depending on the available relationship indicators in the set. 前記選択肢内の前記倍数および前記関係インジケータの集合が、Pの任意の倍数kの正常な計算を可能にするために十分な個数である、請求項15に記載の方法。   The method of claim 15, wherein the multiples in the option and the set of relationship indicators are a sufficient number to allow a normal calculation of any multiple k of P. 必要な倍数が前記選択肢から利用可能でない場合、該選択肢から利用可能な最も近い倍数が選択されるか、または、1つより多い倍数が同等に近い場合、最も近い倍数のうちより高い倍数が選択される、請求項6〜16のいずれか1つに記載の方法。   If the required multiple is not available from the option, the nearest multiple available from the option is selected, or if more than one multiple is close to equal, the higher of the closest multiples is selected The method according to any one of claims 6 to 16, wherein: 必要な倍数が前記選択肢から利用可能でない場合、該選択肢から利用可能な次の最も高い倍数が選択される、請求項6〜16のいずれか1つに記載の方法。   17. A method according to any one of claims 6 to 16, wherein if the required multiple is not available from the option, the next highest multiple available from the option is selected. 前記調節インジケータは、前記必要な倍数から前記選択された倍数を引いたものに等しい補正倍数を示すように設定される、請求項1〜18のいずれか1つに記載の方法。   19. A method according to any one of the preceding claims, wherein the adjustment indicator is set to indicate a correction multiple equal to the required multiple minus the selected multiple. 前記後に続く反復における前記必要な倍数は、前記補正倍数をbでスケーリングして、その反復において考慮されるウィンドウ内の倍数kの値に加算することによって、決定される、請求項19に記載の方法。 The required multiple in the subsequent iteration is determined by scaling the correction multiple by b w and adding to the value of the multiple k in the window considered in that iteration. the method of. 前記選択肢は、正の倍数のみを含むが、概念的には、対応する負の倍数を含むことも考えられる、請求項1〜20のいずれか1つに記載の方法。   21. A method as claimed in any one of the preceding claims, wherein the options include only positive multiples, but conceptually also include corresponding negative multiples. 前記必要な倍数が負であるか、または、前記選択肢における最も小さい正の倍数よりも小さいことが決定される場合、該選択肢の概念上の負の倍数を考えることによって、該選択肢から倍数が選択される、請求項21に記載の方法。   If it is determined that the required multiple is negative or less than the smallest positive multiple in the option, a multiple is selected from the option by considering the notional negative multiple of the option 24. The method of claim 21, wherein: 前記選択肢から選択された前記倍数が、前記概念上の負の倍数のうちの1つである場合、前記選択肢からの対応する正の倍数を用いて減算演算が行われる、請求項21または22に記載の方法。   23. A subtraction operation is performed using a corresponding positive multiple from the option if the multiple selected from the option is one of the conceptual negative multiples. The method described. 最終反復において設定される調節インジケータに基づいて、最終調節を適用するステップをさらに包含する、請求項1〜23に記載の方法。   24. The method of claim 1-23, further comprising applying a final adjustment based on an adjustment indicator set in the final iteration. 1つ以上のデータアイテム倍数に関わる演算は、3種類の演算、すなわち、(a)ゼロでないデータアイテム倍数の倍加、(b)ゼロでなく、等しくないデータ、逆数でないアイテム倍数の加算または減算、および(c)ゼロデータアイテム倍数0.Pに関わる任意の演算のうちの1つに分類され得、最終ステップにおける演算分類のシーケンスは、前記最終反復において設定される前記調節インジケータから独立している、請求項24に記載の方法。   There are three types of operations involving one or more data item multiples: (a) doubling a non-zero data item multiple, (b) adding or subtracting non-zero and unequal data, non-reciprocal item multiples, And (c) a multiple of zero data items. 25. The method of claim 24, wherein the method can be classified into one of any operations involving P, and the sequence of operation classification in the final step is independent of the adjustment indicator set in the final iteration. 前記反復的b関連ウィンドウアルゴリズムは、左から右への(left−to−right)「bを乗算し、加算する」タイプのアルゴリズムであり、該アルゴリズムの該「bを乗算」する部分において用いられる乗数は、bであり、前記必要な倍数は、該アルゴリズムの「加算」部分において用いられる倍数である、請求項1〜25のいずれか1つに記載の方法。 The iterative b w related window algorithm is a left-to-right “multiply and add b” type algorithm, used in the “multiply b” portion of the algorithm multiplier is b w, the required multiple is a multiple to be used in the "add" part of the algorithm, the method according to any one of claims 1 to 25 for. bが2に等しく、前記反復的b関連ウィンドウアルゴリズムが、「倍加および加算」タイプのアルゴリズムであり、該アルゴリズムの「倍加」部分において用いられる乗数が2である、請求項26に記載の方法。 27. The method of claim 26, wherein b is equal to 2, and the iterative b w- related window algorithm is a “double and add” type algorithm, and the multiplier used in the “double” portion of the algorithm is 2 w . Method. kは符号付きの二進数値であり、前記第1の反復において、kの先頭ビットは、前記必要な倍数を決定する場合、負の重みが付けられる、請求項27に記載の方法。   28. The method of claim 27, wherein k is a signed binary value, and in the first iteration, the first bit of k is negatively weighted when determining the required multiple. kは符号付きの二進数値であり、kの先頭ビットを切り捨て、補償するために、前記第1の反復において調節インジケータを設定するステップをさらに包含する、請求項27に記載の方法。   28. The method of claim 27, wherein k is a signed binary value and further comprises setting an adjustment indicator in the first iteration to truncate and compensate for the first bit of k. 1つ以上のデータアイテム倍数に関わる演算は、3種類の演算、すなわち、(a)ゼロでないデータアイテム倍数の倍加、(b)ゼロでなく、等しくなく、逆数でないデータアイテム倍数の加算または減算、および(c)ゼロデータアイテム倍数0.Pに関わる任意の演算のうちの1つに分類され得、演算分類のシーケンスは、前記kの値から独立している、請求項1〜29のいずれか1つに記載の方法。   The operations involving one or more data item multiples are of three types: (a) doubling a non-zero data item multiple, (b) adding or subtracting non-zero, not equal and non-reciprocal data item multiples, And (c) a multiple of zero data items. 30. A method as claimed in any one of claims 1 to 29, which can be classified into one of any operations involving P, the sequence of operation classification being independent of the value of k. 1つ以上のデータアイテム倍数に関わる演算は、3種類の演算、すなわち、(a)ゼロでないデータアイテム倍数の倍加、(b)ゼロでなく、等しくなく、逆数でないデータアイテム倍数の加算または減算、および(c)ゼロデータアイテム倍数0.Pに関わる任意の演算のうちの1つに分類され得、演算分類のシーケンスは、前記kの値から独立しており、反復が、w回の倍加演算および1回の加算/減算演算を含み、それぞれが、前記kの値とは無関係に生成される結果に寄与する、請求項29に記載の方法。   The operations involving one or more data item multiples are of three types: (a) doubling a non-zero data item multiple, (b) adding or subtracting non-zero, not equal and non-reciprocal data item multiples, And (c) a multiple of zero data items. Can be classified into one of any operations involving P, the sequence of operation classification is independent of the value of k, and the iteration includes w doubling operations and 1 adding / subtracting operation 30, each contributing to a result generated independently of the value of k. 前記ゼロ倍数データアイテム、すなわち、0.Pを用いるか、または0.Pが得られる演算が行われない、請求項1〜31のいずれか1つに記載の方法。   The zero multiple data item, i.e. P is used, or 0. 32. A method according to any one of claims 1 to 31, wherein the operation to obtain P is not performed. 倍加演算に等しい加算演算が行われない、請求項1〜32のいずれか1つに記載の方法。   The method according to claim 1, wherein an addition operation equal to a doubling operation is not performed. さらなるデータアイテムQの倍数mも、前記反復アルゴリズムの間計算されて、2つの別個の調節インジケータを、進行中の乗算に対して1つずつ用いることによって、結果(k.P+m.Q)を生成する、請求項1〜33のいずれか1つに記載の方法。   A further multiple m of the data item Q is also calculated during the iterative algorithm to produce a result (kP + mQ) by using two separate adjustment indicators, one for each ongoing multiplication. The method according to any one of claims 1 to 33. 調節インジケータは、該インジケータが設定された反復の直後の反復において適用される、請求項1〜34のいずれか1つに記載の方法。   35. A method according to any one of claims 1 to 34, wherein the adjustment indicator is applied in the iteration immediately following the iteration in which the indicator is set. 前記データアイテムPは、楕円曲線点である、請求項1〜35のいずれか1つに記載の方法。   36. A method according to any one of claims 1 to 35, wherein the data item P is an elliptic curve point. データを暗号化または復号する、暗号化データ処理方法におけるステップである、請求項1〜36のいずれか1つに記載の方法。   37. A method according to any one of the preceding claims, wherein the method is a step in an encrypted data processing method for encrypting or decrypting data. 反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理装置であって、ここで、bは、倍数kの底であり、wはウィンドウサイズであり、該装置は、
少なくとも1つのPの倍数を含むデータアイテムの選択肢を提供するデータアイテム提供手段と、
該アルゴリズムの特定の反復について、その反復に必要なPの倍数を決定する、決定手段と、
該必要な倍数に依存して該選択肢から倍数を選択する選択手段と、
該必要な倍数と該選択された倍数との間の関係に依存して調節インジケータを設定する設定手段と
を備え、
該決定手段が、後に続く反復において、前回の反復からの該調節インジケータに依存して該必要な倍数を決定するように動作可能である、装置。
A data processing device that calculates a multiple k of a data item P using an iterative b w- related window algorithm, where b is the base of the multiple k, w is the window size, and the device ,
Data item providing means for providing a choice of data items including at least one multiple of P;
Determining means for determining, for a particular iteration of the algorithm, a multiple of P required for that iteration;
A selection means for selecting a multiple from the options depending on the required multiple;
Setting means for setting an adjustment indicator depending on the relationship between the required multiple and the selected multiple;
The apparatus, wherein the determining means is operable in subsequent iterations to determine the required multiple depending on the adjustment indicator from a previous iteration.
反復的b関連ウィンドウアルゴリズムを用いてデータアイテムMのべき指数dを計算するデータ処理方法であって、ここで、bはべき指数dの底であり、wはウィンドウサイズであり、該方法は、
少なくとも1つのMのべき指数を含むデータアイテムの選択肢を提供するステップと、
該アルゴリズムの特定の反復について、その反復に必要なべき指数Mを決定し、該必要なべき指数に依存して該選択肢から選択されるべき指数を用い、該必要なべき指数と該選択されたべき指数との間の関係に依存して、調節インジケータを設定するステップと、
後に続く反復において、以前の反復からの該調節インジケータに依存して該必要なべき指数を決定するステップと
を包含する、方法。
A data processing method for calculating an exponent d of a data item M using an iterative b w- related window algorithm, where b is the base of the exponent d and w is the window size, ,
Providing a choice of data items comprising at least one power exponent of M;
For a particular iteration of the algorithm, determine the exponent M to be required for that iteration, use the exponent to be selected from the options depending on the exponent to be required, and select the required exponent and the selected Depending on the relationship between the exponent and setting the adjustment indicator;
Determining in a subsequent iteration the exponent that is required depending on the adjustment indicator from a previous iteration.
前記反復的b関連ウィンドウアルゴリズムは、左から右への「b乗して、乗算する」タイプのアルゴリズムであり、該アルゴリズムの「b乗」する部分において用いられるべき指数は、bであり、必要なべき指数は、該アルゴリズムの「乗算」部分において用いられるべき指数である、請求項39に記載の方法。 The iterative b w- related window algorithm is an algorithm of the type “b raised and multiplied” from left to right, and the exponent to be used in the “b raised” part of the algorithm is b w 40. The method of claim 39, wherein the exponent to be needed is an exponent to be used in the "multiplication" portion of the algorithm. bが2に等しく、前記反復的b関連ウィンドウアルゴリズムは、「二乗および乗算」タイプアルゴリズムであり、該アルゴリズムの「二乗」部分で用いられるべき指数は、2である、請求項40に記載の方法。 41. The method of claim 40, wherein b is equal to 2, and the iterative b w- related window algorithm is a “square and multiply” type algorithm, and the exponent to be used in the “square” portion of the algorithm is 2 w. the method of. 反復的b関連ウィンドウアルゴリズムを用いてデータアイテムMのべき指数dを計算するデータ処理装置であって、ここで、bはべき指数dの底であり、wはウィンドウサイズであり、該装置は、
少なくとも1つのMのべき指数を含むデータアイテムの選択肢を提供するデータアイテム提供手段と、
該アルゴリズムの特定の反復について、その反復に必要なべき指数Mを決定する決定手段と、
該必要なべき指数に依存して該選択肢からべき指数を選択する選択手段と、
該必要なべき指数と該選択されたべき指数との間の関係に依存して、調節インジケータを設定する設定手段と
を備え、該決定手段は、後に続く反復において、前回の反復からの該調節インジケータに依存して該必要なべき指数を決定するように動作可能である、装置。
A data processing device that computes the power index d of a data item M using an iterative b w- related window algorithm, where b is the base of the power index d, w is the window size, and the device ,
Data item providing means for providing a choice of data items including at least one exponent of M;
For a particular iteration of the algorithm, a determining means for determining the exponent M to be required for that iteration;
A selection means for selecting a power index from the options depending on the power index required;
A setting means for setting an adjustment indicator depending on the relationship between the required power index and the selected power index, the determination means in the subsequent iteration the adjustment from the previous iteration. An apparatus operable to determine the required exponent depending on an indicator.
反復的b関連ウィンドウアルゴリズムを用いて、データアイテムPの倍数kを計算するデータ処理装置に対する電力サイドチャネル攻撃に対する抵抗力を高める方法であって、bは、該倍数kの底であり、wはウィンドウサイズであり、請求項1〜37のいずれか1つに記載のステップを含む、方法。 A method of increasing resistance to power side channel attacks against a data processing device that calculates a multiple k of a data item P using an iterative b w related window algorithm, where b is the base of the multiple k and w A window size, comprising the steps of any one of claims 1-37. 反復的b関連ウィンドウアルゴリズムを用いて、データアイテムMのべき指数dを計算するデータ処理装置に対する電力サイドチャネル攻撃に対する抵抗力を高める方法であって、bは、該べき指数dの底であり、wはウィンドウサイズであり、請求項39〜41のいずれか1つに記載のステップをさらに包含する、方法。 A method of increasing resistance to power side channel attacks against a data processing device that calculates a power index d of a data item M using an iterative b w- related window algorithm, where b is the base of the power index d , W is a window size, further comprising the step of any one of claims 39-41. 実質的に、図9〜20を参照しながら説明したようなデータ処理装置。   A data processing apparatus substantially as described with reference to FIGS. 実質的に、図9〜20を参照しながら説明したようなデータ処理方法。   A data processing method substantially as described with reference to FIGS. 実質的に、図9〜20を参照しながら説明したようなデータ処理装置に対する電力サイドチャネル攻撃に対する抵抗力を高める方法。   A method of substantially increasing the resistance to a power side channel attack on a data processing device as described with reference to FIGS. 請求項38、42および45のいずれか1つに記載のデータ処理装置を含むスマートカード。   46. A smart card comprising the data processing device according to any one of claims 38, 42 and 45. データ処理デバイスにロードされる場合、該デバイスを、請求項38、42、および45のいずれか1つに記載の装置、あるいは、請求項48に記載のスマートカードにする、オペレーティングプログラム。   49. An operating program that, when loaded into a data processing device, makes the device an apparatus according to any one of claims 38, 42 and 45 or a smart card according to claim 48. データ処理デバイス上で実行される場合、該デバイスに、請求項1〜37、39〜41、43、44、46および47のいずれか1つに記載の方法を実行させる、オペレーティングプログラム。   48. An operating program that, when executed on a data processing device, causes the device to perform the method of any one of claims 1-37, 39-41, 43, 44, 46 and 47. キャリア媒体上に保持される、請求項49または50に記載のオペレーティングプログラム。   51. An operating program according to claim 49 or 50, held on a carrier medium. 前記キャリア媒体は伝送媒体である、請求項51に記載のオペレーティングプログラム。   52. The operating program of claim 51, wherein the carrier medium is a transmission medium. 前記キャリア媒体は格納媒体である、請求項51に記載のオペレーティングプログラム。   52. The operating program of claim 51, wherein the carrier medium is a storage medium.
JP2004181773A 2003-06-26 2004-06-18 Side channel attack prevention in data processor Pending JP2005020735A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0314927A GB2403308B (en) 2003-06-26 2003-06-26 Side channel attack prevention in data processing apparatus

Publications (1)

Publication Number Publication Date
JP2005020735A true JP2005020735A (en) 2005-01-20

Family

ID=27637403

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004181773A Pending JP2005020735A (en) 2003-06-26 2004-06-18 Side channel attack prevention in data processor

Country Status (2)

Country Link
JP (1) JP2005020735A (en)
GB (1) GB2403308B (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006118092A1 (en) * 2005-04-27 2006-11-09 Matsushita Electric Industrial Co., Ltd. Information security device and elliptic curve operating device
WO2008053626A1 (en) * 2006-10-30 2008-05-08 Sharp Kabushiki Kaisha Encrypting apparatus
JP2010072644A (en) * 2008-09-22 2010-04-02 Thomson Licensing Method, apparatus and computer program for regular recoding of positive integer
JP5327380B2 (en) * 2010-03-31 2013-10-30 富士通株式会社 Cryptographic processing apparatus and cryptographic processing method
CN103679008A (en) * 2012-09-03 2014-03-26 江苏东大集成电路系统工程技术有限公司 Efficient secure chip power consumption attack test method
JP2018514809A (en) * 2015-05-06 2018-06-07 クアルコム,インコーポレイテッド Method and device for fixed execution flow multiplier recoding and scalar multiplication
US10666422B2 (en) * 2017-12-29 2020-05-26 Shenzhen China Star Optoelectronics Technology Co., Ltd. Data processing method

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008529184A (en) * 2005-02-04 2008-07-31 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Method, apparatus, system and token for creating an authorization domain
US11522669B2 (en) 2018-03-28 2022-12-06 Cryptography Research, Inc. Using cryptographic blinding for efficient use of Montgomery multiplication
CN113158181B (en) * 2021-04-15 2022-04-05 上海交通大学 Method for carrying out end-to-end attack on original side channel data by using neural network
DE102022129606A1 (en) 2022-11-09 2024-05-16 Infineon Technologies Ag CIRCUIT FOR COMBINED KEY-VALUE DEPENDENT EXCHANGE AND MULTIPLICATE RANDOMIZATION OF TWO VALUES

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004070681A2 (en) * 2003-02-06 2004-08-19 Hitachi Ltd Elliptic curve scalar multiple calculation method and device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004070681A2 (en) * 2003-02-06 2004-08-19 Hitachi Ltd Elliptic curve scalar multiple calculation method and device

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006118092A1 (en) * 2005-04-27 2006-11-09 Matsushita Electric Industrial Co., Ltd. Information security device and elliptic curve operating device
US7940927B2 (en) 2005-04-27 2011-05-10 Panasonic Corporation Information security device and elliptic curve operating device
JP4825199B2 (en) * 2005-04-27 2011-11-30 パナソニック株式会社 Information security device and elliptic curve calculation device
WO2008053626A1 (en) * 2006-10-30 2008-05-08 Sharp Kabushiki Kaisha Encrypting apparatus
JP2008113130A (en) * 2006-10-30 2008-05-15 Sharp Corp Encryption device
JP2010072644A (en) * 2008-09-22 2010-04-02 Thomson Licensing Method, apparatus and computer program for regular recoding of positive integer
JP5327380B2 (en) * 2010-03-31 2013-10-30 富士通株式会社 Cryptographic processing apparatus and cryptographic processing method
CN103679008A (en) * 2012-09-03 2014-03-26 江苏东大集成电路系统工程技术有限公司 Efficient secure chip power consumption attack test method
JP2018514809A (en) * 2015-05-06 2018-06-07 クアルコム,インコーポレイテッド Method and device for fixed execution flow multiplier recoding and scalar multiplication
US10666422B2 (en) * 2017-12-29 2020-05-26 Shenzhen China Star Optoelectronics Technology Co., Ltd. Data processing method

Also Published As

Publication number Publication date
GB2403308A (en) 2004-12-29
GB0314927D0 (en) 2003-07-30
GB2403308B (en) 2006-06-21

Similar Documents

Publication Publication Date Title
CN107040362B (en) Modular multiplication apparatus and method
US7864951B2 (en) Scalar multiplication method with inherent countermeasures
US6876745B1 (en) Method and apparatus for elliptic curve cryptography and recording medium therefore
KR102136911B1 (en) Cryptography method comprising an operation of multiplication by a scalar or an exponentiation
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
US7379546B2 (en) Method for XZ-elliptic curve cryptography
US7483533B2 (en) Elliptic polynomial cryptography with multi x-coordinates embedding
JP2008252299A (en) Encryption processing system and encryption processing method
US20060029221A1 (en) Elliptic polynomial cryptography with multi y-coordinates embedding
US11824986B2 (en) Device and method for protecting execution of a cryptographic operation
JP2004304800A (en) Protection of side channel for prevention of attack in data processing device
JP2003098962A (en) Method and device for calculating elliptic curve scalar multiple, and recording medium
JP2005020735A (en) Side channel attack prevention in data processor
US20060274894A1 (en) Method and apparatus for cryptography
Jauvart et al. Improving side-channel attacks against pairing-based cryptography
JP2003255831A (en) Method and device for calculating elliptic curve scalar multiple
Sakai et al. Simple power analysis on fast modular reduction with generalized mersenne prime for elliptic curve cryptosystems
Dąbrowski et al. Generation and Implementation of Cryptographically Strong Elliptic Curves
US20070121935A1 (en) Method for countermeasuring in an electronic component
Pontie et al. Design of a secure architecture for scalar multiplication on elliptic curves
Kim et al. Power analysis attacks and countermeasures on ηT pairing over binary fields
Koziel Low-Resource and Fast Elliptic Curve Implementations over Binary Edwards Curves
Sakai et al. Simple power analysis on fast modular reduction with NIST recommended elliptic curves
Okeya et al. SCA-resistant and fast elliptic scalar multiplication based on wNAF
Khan et al. Investigating the blinding approach to resist power analysis attacks on modular exponentiation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100315

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100407