[go: up one dir, main page]

JP2008224830A - Tamper resistant power calculation method - Google Patents

Tamper resistant power calculation method Download PDF

Info

Publication number
JP2008224830A
JP2008224830A JP2007059986A JP2007059986A JP2008224830A JP 2008224830 A JP2008224830 A JP 2008224830A JP 2007059986 A JP2007059986 A JP 2007059986A JP 2007059986 A JP2007059986 A JP 2007059986A JP 2008224830 A JP2008224830 A JP 2008224830A
Authority
JP
Japan
Prior art keywords
tbl
bits
tamper
order
present
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.)
Withdrawn
Application number
JP2007059986A
Other languages
Japanese (ja)
Inventor
Masanobu Koike
正修 小池
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.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions 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 Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2007059986A priority Critical patent/JP2008224830A/en
Publication of JP2008224830A publication Critical patent/JP2008224830A/en
Withdrawn legal-status Critical Current

Links

Abstract

<P>PROBLEM TO BE SOLVED: To provide a tamper-proof exponentiation operation method wherein an exponentiation operation method of Brickell etc. is provided with resistance to side channel analysis. <P>SOLUTION: An exponentiation operation method having resistance to side channel analysis is provided. The exponentiation operation often used in encryption algorithm frequently becomes a target of side channel analysis, and is required to have resistance to it. In this method, the exponent parts are rearranged prior to the operation so that the operation columns become constant when exponentiation operation is performed. Thus, the exponents as secret information can be prevented from being estimated from power consumption waveforms or processing time. <P>COPYRIGHT: (C)2008,JPO&INPIT

Description

本発明は、サイドチャネル解析による暗号プロセッサ内部における秘密情報の解析に耐性を有する耐タンパーベキ乗演算方法に関する。 The present invention relates to a tamper-resistant power calculation method having resistance to analysis of secret information inside a cryptographic processor by side channel analysis.

近年のコンピュータネットワークの発達に伴い、オンラインショッピング等、金銭授受を伴うサービスが拡大されてきている。その一方で、電子化された情報の盗聴や改竄によるいわゆるネットワーク犯罪の増加や、情報の流出などが大きな社会問題となっている。 With the development of computer networks in recent years, services involving money transfer, such as online shopping, have been expanded. On the other hand, an increase in so-called network crimes due to eavesdropping and falsification of computerized information and information leakage have become major social problems.

これらの問題に対して、その解決に暗号技術が大きな役割を果たしている。情報の暗号化やディジタル署名技術を利用した認証システムなどがその例としてあげられ、さまざまな場面に導入されている。このように暗号技術は今日のネットワーク社会に必要不可欠な技術となっている。 Cryptographic technology plays a major role in solving these problems. Examples include information encryption and an authentication system using digital signature technology, which have been introduced in various situations. In this way, encryption technology has become indispensable for today's network society.

しかしながら、暗号技術に対する攻撃(解読)手法も高度化してきている。その中でも、暗号の処理を実行するプロセッサ(以下、「暗号プロセッサ」ということもある)の処理時間や消費電力を測定し、それらの特徴から暗号プロセッサ内部の秘密情報を解析するというサイドチャネル解析が現実的な脅威となってきている。サイドチャネル解析として代表的なものは、タイミング解析、電力解析が知られている。 However, attack (decryption) techniques for cryptographic techniques are also becoming more sophisticated. Among them, there is a side channel analysis that measures the processing time and power consumption of a processor that executes cryptographic processing (hereinafter also referred to as “cryptographic processor”), and analyzes the secret information inside the cryptographic processor from these characteristics. It has become a real threat. As typical side channel analysis, timing analysis and power analysis are known.

RSA方式についてサイドチャネル解析の例を挙げる。RSA方式は、現在最も広く使われている公開鍵暗号方式である。RSA方式の暗号化、ディジタル署名検証処理は、ベキ乗剰余算ME mod N(MのE乗をNで割った余り)を計算する。ここでMは対象のメッセージ、E、Nは公開鍵である。また、RSA方式の復号、ディジタル署名生成処理は、同じくベキ乗剰余算CD mod Nを計算する。ここでCは対象のメッセージ、Nは公開鍵、Dは秘密鍵である。 Here is an example of side channel analysis for the RSA method. The RSA method is the most widely used public key encryption method. In RSA encryption and digital signature verification processing, the power-residue calculation M E mod N (the remainder of M divided by E) is calculated. Here, M is the target message, and E and N are public keys. In addition, in the RSA system decryption and digital signature generation processing, the power-residue calculation C D mod N is also calculated. Here, C is the target message, N is the public key, and D is the secret key.

ベキ乗剰余算をバイナリ法で実装する場合、秘密鍵Dを二進数で表現したときの各ビットの値が0であるか1であるかによって、ベキ乗剰余算全体の演算列が異なるという性質がある。このような演算列の違いをベキ乗剰余算の処理時間から判断しようとする手法が非特許文献1に紹介されている。 When implementing power-residue calculation using the binary method, the operation sequence of the power-residue as a whole differs depending on whether each bit value is 0 or 1 when the secret key D is expressed in binary. There is. Non-Patent Document 1 introduces a technique for determining such a difference in the operation sequence from the processing time of the power-residue calculation.

一方、消費電力から判断しようとする手法が非特許文献2にて紹介されている。演算列の違いを判別できれば、Dの各ビットが0であるか1であるか判別でき、したがって秘密鍵Dのすべてのビットを決定できる。   On the other hand, Non-Patent Document 2 introduces a method for determining from power consumption. If the difference between the operation sequences can be discriminated, it can be discriminated whether each bit of D is 0 or 1, and therefore all the bits of the secret key D can be determined.

また楕円曲線暗号の一種である、ECDSA方式についてのサイドチャネル解析についても例を挙げる。ECDSA方式は、楕円曲線上の点の演算および整数の演算から構成される。ECDSA方式のディジタル署名処理は、
kPのx座標をzで割った余りrを求め、
s = k - 1(M + xr) mod z
により、署名(r, s)を作成する。ここでPは楕円曲線上の点、zは楕円曲線上の点の位数、kはz未満の整数から選んだ乱数、Mは対象のメッセージ、xは署名者の秘密鍵である。攻撃者にとってxとk以外は既知情報であるため、もしkが分かれば秘密鍵xをsの式から求めることができる。
An example is given for side channel analysis of the ECDSA method, which is a kind of elliptic curve cryptosystem. The ECDSA method is composed of a point calculation on an elliptic curve and an integer calculation. ECDSA digital signature processing
Find the remainder r obtained by dividing the x coordinate of kP by z,
s = k -1 (M + xr) mod z
To create a signature (r, s). Where P is a point on the elliptic curve, z is the order of the point on the elliptic curve, k is a random number selected from integers less than z, M is the message of interest, and x is the signer's private key. Since the attacker knows information other than x and k, if k is known, the secret key x can be obtained from the expression s.

点Pをk回加える演算kPはベキ乗演算であり、通常スカラー倍算と呼ばれる。スカラー倍算をバイナリ法で実装する場合、RSA方式でのベキ乗剰余算と同様にkの値を推測することができる。 The operation kP for adding the point P k times is a power operation and is usually called scalar multiplication. When scalar multiplication is implemented by the binary method, the value of k can be estimated in the same way as the power-residue calculation in the RSA method.

これらの攻撃を防ぐ方法も様々な技術が考案されている。その根底にあるアイディアは、演算処理列を秘密情報によらず一定にすることと、入力データに乱数を作用させて、暗号プロセッサの暗号処理中のデータをランダム化することの2種類に大別できる。 Various techniques for preventing these attacks have been devised. The underlying idea is roughly divided into two types: making the processing sequence constant regardless of secret information, and randomizing the input data to randomize the data being processed by the cryptographic processor. it can.

前者により、例えばRSA方式に対する攻撃手法で述べた、秘密鍵Dの各ビットの値が0であっても1であっても同じ演算列となるため、Dの値を判別できなくなる。このような方法は非特許文献3にて紹介されている。 According to the former, for example, as described in the attack technique for the RSA method, the value of D cannot be discriminated because the same operation sequence is obtained even if the value of each bit of the secret key D is 0 or 1. Such a method is introduced in Non-Patent Document 3.

後者は暗号プロセッサの処理時間や消費電力の特徴と暗号プロセッサ内部の秘密情報を無関係にすることで、サイドチャネル解析を防ぐ手法である。効率のよいベキ乗演算方法として、非特許文献4が知られている。この手法は次のようなものである。   The latter is a technique for preventing side channel analysis by making the processing time and power consumption characteristics of the cryptographic processor irrelevant to the secret information inside the cryptographic processor. Non-Patent Document 4 is known as an efficient power calculation method. This technique is as follows.

楕円曲線上の点Pのスカラー倍算kPを考える。ここではkは160ビットとし、それを4ビットずつ40個のブロックに分けたものをMSB側から順にk39, k38, …, k1, k0とする。またi = 0, 1, 2, …, 39に対してTBL[i] = 216×iPを計算した40点の事前計算テーブルを保持しているものとする。
J. F. Dhem et al., A Practical Implementation of the Timing Attack(Proceedings of CARDIS ’98, Lecture Notes in Computer Science 1820, pp.167-182, Springer-Verlag, 1998) T. S. Messerges et al., Investigation of Power Analysis Attacks on Smartcards(Proceedings of USENIX Workshop on Smartcard Technology ‘99) J. S. Coron,Resistance Against Differential Power Analysis for Elliptic Curve Cryptosystems (Proceedings of Cryptographic Hardware and Embedded Systems ’99, Lecture Notes in Computer Science 1717, pp.292-302, Springer-Verlat, 1999) E. F. Brickell et al., Fast Exponentiation with Precomputation (Proceedings of EUROCRYPT ’92, Lecture Notes in Computer Science 658, pp.200-207, Springer-Verlag, 1993)
Consider a scalar multiplication kP of a point P on an elliptic curve. Here, k is 160 bits, and 40 blocks divided by 4 bits are k 39 , k 38 ,..., K 1 , k 0 in order from the MSB side. Assume that a 40-point pre-calculation table for calculating TBL [i] = 2 16 × i P for i = 0, 1, 2,.
JF Dhem et al., A Practical Implementation of the Timing Attack (Proceedings of CARDIS '98, Lecture Notes in Computer Science 1820, pp.167-182, Springer-Verlag, 1998) TS Messerges et al., Investigation of Power Analysis Attacks on Smartcards (Proceedings of USENIX Workshop on Smartcard Technology '99) JS Coron, Resistance Against Differential Power Analysis for Elliptic Curve Cryptosystems (Proceedings of Cryptographic Hardware and Embedded Systems '99, Lecture Notes in Computer Science 1717, pp.292-302, Springer-Verlat, 1999) EF Brickell et al., Fast Exponentiation with Precomputation (Proceedings of EUROCRYPT '92, Lecture Notes in Computer Science 658, pp.200-207, Springer-Verlag, 1993)

このようなアイディアに基づく防御手法は、ベキ乗演算の様々なアルゴリズムに対してそれぞれ提案されている。しかし防御手法を施すことで、処理時間が増加したり、必要なメモリが増加したりすることを避けることはできないのが現状である。このことがサイドチャネル解析への防御手法全般の問題点となっている。 Such defensive techniques based on ideas have been proposed for various algorithms for power operations. However, the current situation is that it is not possible to avoid an increase in processing time and an increase in necessary memory by applying a defense technique. This is a problem of the overall defense method against side channel analysis.

そこでなるべく効率のよいベキ乗演算方法について、そのサイドチャネル解析への防御手法を考案すれば、処理時間が増加してもその暗号プロセッサを利用する上で定められる許容時間内に処理できることが期待される。 Therefore, if a defensive technique for side-channel analysis is devised for the power calculation method that is as efficient as possible, it is expected that it can be processed within the allowable time set for using the cryptographic processor even if the processing time increases. The

上記非特許文献4で示したBrickellらのスカラー倍算方法を図9にフローチャートとして示す。まずステップ901、902で、途中結果を格納する領域A, Bをそれぞれ楕円曲線上の無限遠点と呼ばれる仮想的な点Oと初期化する。ステップ903から909はdを15から1まで1ずつ減じるループ処理である。ステップ904から907はiを39から0まで1ずつ減じるループ処理である。ステップ905でki = dかどうかの検査を行う。成立するときはBとTBL[i]を加算してBに格納する楕円曲線上の点の加算処理を行う(ステップ906)。成立しないときは何もしない、すなわちステップ906は行わずにステップ907に進む。ステップ907でiループが終了したとき、ステップ908に進む。ステップ908ではAとBを加算してAに格納する。ステップ909が終了したとき、A = kPとなってスカラー倍算が計算される。この計算では最大55回の楕円曲線上の点の加算でスカラー倍算を実行できる。 The scalar multiplication method of Brickell et al. Shown in Non-Patent Document 4 is shown as a flowchart in FIG. First, in steps 901 and 902, areas A and B for storing intermediate results are initialized as virtual points O called infinity points on the elliptic curve, respectively. Steps 903 to 909 are a loop process in which d is decreased by 1 from 15 to 1. Steps 904 to 907 are a loop process in which i is decreased by 1 from 39 to 0. In step 905, it is checked whether k i = d. If it is established, B and TBL [i] are added and a point on the elliptic curve stored in B is added (step 906). If it is not established, nothing is done, that is, step 906 is not performed and the routine proceeds to step 907. When the i loop is completed in step 907, the process proceeds to step 908. In step 908, A and B are added and stored in A. When step 909 is finished, A = kP and scalar multiplication is calculated. In this calculation, scalar multiplication can be executed by adding up to 55 points on the elliptic curve.

しかしこの手法はサイドチャネル解析に対して脆弱であるという問題がある。なぜならB ← B + TBL[i]の演算の前にki = dであるかの検査のループ回数はkに依存して決まり、それは暗号プロセッサの処理列の違いを発生する。したがって該ループ回数をサイドチャネル解析により判別できれば、各kiの値を決定できるため、kの値が露呈するからである。 However, this method has a problem that it is vulnerable to side channel analysis. This is because the number of loops for checking whether k i = d before the operation B ← B + TBL [i] is determined depending on k, which causes a difference in the processing sequence of the cryptographic processor. Therefore, if the number of loops can be determined by side channel analysis, the value of each k i can be determined, and thus the value of k is exposed.

本発明は、上記Brickellらのベキ乗演算方法にサイドチャネル解析への耐性を持たせた耐タンパーベキ乗演算方法を提供することを目的とする。 It is an object of the present invention to provide a tamper-resistant power calculation method in which the power calculation method of Brickell et al. Has resistance to side channel analysis.

請求項1に対応する発明は、情報処理装置を利用して暗号処理中に出現するベキ乗剰余算c = mk mod Nを計算する方法であって、前記nビットの整数データkをLSB(Least Significant Bit、最下位ビット)から順にwビットずつのs個のブロック(sはn/w以上の最小の整数)に分ける手段と、前記データkのMSB(Most Significant Bit、最上位ビット)を含むブロックがwビットに満たない場合にMSB側に0をパディングして前記ブロックをwビットにする手段と、前記ブロックに分けられたデータkをks-1, ks-2, …, k1, k0としたとき、各ブロックをwビットの整数と見て大きい順に並び替えた場合に、対応する添え字をその順序で格納する手段と、前記添え字を格納する際に、前記kをwビットのブロックで大きい順に並び替えたときに大きさが変わる箇所に相当する添え字に印を付加する手段と、i = 1, 2, …, sに対しs個のデータTBL[i] = mw i mod Nからなる事前計算テーブルTBLを保持する手段と、2つの中間変数A, Bを1に初期化する手段と、ループカウンタdをs-1に初期化する手段と、前記格納された添え字を順番に参照し、添え字に印がない場合はB×TBL[d] mod Nを計算してBに格納し、添え字に印がある場合はB×A mod Nを計算してAに格納してdから1減じる手段と、を有することを特徴とする耐タンパーベキ乗演算方法である。 An invention corresponding to claim 1 is a method of calculating a power-residue c = m k mod N that appears during cryptographic processing using an information processing device, wherein the n-bit integer data k is converted to LSB ( Least Significant Bit (Least Significant Bit) is divided into s blocks (s is the smallest integer greater than or equal to n / w) in order from w bits, and the MSB (Most Significant Bit, most significant bit) of the data k When the block to be included is less than w bits, the MSB side is padded with 0 to make the block w bits, and the data k divided into the blocks is expressed as k s−1 , k s−2 ,. 1 , k 0 , when each block is viewed as a w-bit integer and rearranged in descending order, means for storing the corresponding subscripts in that order, and when storing the subscripts, the k To the subscript corresponding to the place where the size changes when the are sorted in descending order in w-bit blocks And means for adding, i = 1, 2, ... , means for holding the pre-calculated table TBL consisting s pieces of data TBL [i] = m wi mod N to s, 2 two intermediate variables A, B Means for initializing to 1, means for initializing the loop counter d to s-1, and referring to the stored subscripts in order, and if the subscript is not marked, B × TBL [d] mod N Calculating and storing in B, and when there is a mark on the subscript, means for calculating B × A mod N and storing in A and subtracting 1 from d. It is.

請求項2に対応する発明は、前記2つの中間変数A, BをそれぞれTBL[s], TBL[s+1]またはTBL[s+1], TBL[s]とすることを特徴とする請求項1記載の耐タンパーベキ乗演算方法である。 The invention corresponding to claim 2 is characterized in that the two intermediate variables A and B are TBL [s], TBL [s + 1] or TBL [s + 1], TBL [s], respectively. Item 2. The tamper-resistant power calculation method according to Item 1.

請求項3に対応する発明は、情報処理装置を利用して暗号処理中に出現する楕円曲線上の点のスカラー倍算Q = kPを計算する方法であって、前記nビットの整数データkをLSB(Least Significant Bit、最下位ビット)から順にwビットずつのs個のブロック(sはn/w以上の最小の整数)に分ける手段と、前記データkのMSB(Most Significant Bit、最上位ビット)を含むブロックがwビットに満たない場合にMSB側に0をパディングして前記ブロックをwビットにする手段と、前記ブロックに分けられたデータkをks-1, ks-2, …, k1, k0としたとき、各ブロックをwビットの整数と見て大きい順に並び替えた場合に、対応する添え字をその順序で格納する手段と、前記添え字を格納する際に、前記kをwビットのブロックで大きい順に並び替えたときに大きさが変わる箇所に相当する添え字に印を付加する手段と、i = 1, 2, …, sに対しs個のデータTBL[i] = wi Pからなる事前計算テーブルTBLを保持する手段と、2つの中間変数A, Bを1に初期化する手段と、ループカウンタdをs-1に初期化する手段と、前記格納された添え字を順番に参照し、添え字に印がない場合はB×TBL[d] mod Nを計算してBに格納し、添え字に印がある場合はB×A mod Nを計算してAに格納してdから1減じる手段と、を有することを特徴とする耐タンパーベキ乗演算方法である。 The invention corresponding to claim 3 is a method of calculating scalar multiplication Q = kP of a point on an elliptic curve appearing during encryption processing using an information processing device, wherein the n-bit integer data k is A means for dividing the LSB (Least Significant Bit, least significant bit) sequentially into s blocks of w bits (where s is the smallest integer greater than or equal to n / w), and the MSB (Most Significant Bit, most significant bit) of the data k ) Includes a means for padding 0 to the MSB side to make the block w bits when the block including w is less than w bits, and the data k divided into the blocks is k s-1 , k s-2 ,. , k 1 , k 0 , when each block is viewed as a w-bit integer and rearranged in descending order, means for storing the corresponding subscripts in that order, and when storing the subscripts, Corresponds to the place where the size changes when k is rearranged in the order of w bits. A means for adding a mark to a subscript, means for holding a precalculation table TBL consisting of s pieces of data TBL [i] = w i P for i = 1, 2, ..., s, and two intermediate variables A means for initializing A and B to 1, a means for initializing the loop counter d to s-1, and referring to the stored subscripts in order, and if the subscript is not marked, B × TBL [ d] means to calculate mod N and store it in B, and if there is a mark on the subscript, B × A mod N is calculated and stored in A and subtracts 1 from d. This is a tamper-power calculation method.

請求項4に対応する発明は、前記2つの中間変数A, BをそれぞれTBL[s], TBL[s+1]またはTBL[s+1], TBL[s]とすることを特徴とする請求項3記載の耐タンパーベキ乗演算方法である。 The invention corresponding to claim 4 is characterized in that the two intermediate variables A and B are TBL [s], TBL [s + 1] or TBL [s + 1], TBL [s], respectively. Item 4. The tamper-resistant power calculation method according to Item 3.

(作用)
請求項1に対応する発明は、以上のような手段を講じたことにより、Brickellらの方法でベキ乗剰余算を行う際に、kのブロックの値を先に整列しておくことで、剰余乗算を行う演算列を一定にすることができる。したがって演算の消費電力波形または処理時間からkの解析を困難にすることができる。
(Function)
In the invention corresponding to claim 1, by taking the above-described means, when performing the power-residue calculation by the method of Brickell et al. An operation sequence for performing multiplication can be made constant. Therefore, the analysis of k can be made difficult from the power consumption waveform of the calculation or the processing time.

請求項2に対応する発明は、請求項1に対応する発明において、中間変数A, Bの格納位置を事前計算テーブルと同じ位置にすることにより、B ← B + TBL[i]およびA ← A + Bの演算を、入出力ともにTBLとできるため、より消費電力波形または処理時間からkの解析を困難にすることができる。 In the invention corresponding to claim 2, in the invention corresponding to claim 1, B ← B + TBL [i] and A ← A by making the storage position of the intermediate variables A and B the same position as the pre-calculation table Since the calculation of + B can be TBL for both input and output, analysis of k can be made more difficult from the power consumption waveform or processing time.

請求項3に対応する発明は、以上のような手段を講じたことにより、Brickellらの方法で楕円曲線上の点のスカラー倍算を行う際に、kのブロックの値を先に整列しておくことで、楕円曲線上の点の加算を行う演算列を一定にすることができる。したがって演算の消費電力波形または処理時間からkの解析を困難にすることができる。  In the invention corresponding to claim 3, by performing the above-described means, when performing the scalar multiplication of the points on the elliptic curve by the method of Brickell et al., The values of k blocks are aligned first. This makes it possible to make the calculation sequence for adding points on the elliptic curve constant. Therefore, the analysis of k can be made difficult from the power consumption waveform of the calculation or the processing time.

請求項4に対応する発明は、請求項3に対応する発明において、中間変数A, Bの格納位置を事前計算テーブルと同じ位置にすることにより、B ← B + TBL[i]およびA ← A + Bの演算を、入出力ともにTBLとできるため、より消費電力波形または処理時間からkの解析を困難にすることができる。 The invention corresponding to claim 4 is the invention corresponding to claim 3, wherein B ← B + TBL [i] and A ← A by making the storage positions of the intermediate variables A and B the same as the pre-calculation table Since the calculation of + B can be TBL for both input and output, analysis of k can be made more difficult from the power consumption waveform or processing time.

以上説明したように本発明によれば、Brickellらの方法でベキ乗演算を行うときに、そのベキ指数を、電力解析またはタイミング解析による解析から困難にする耐タンパーベキ乗演算方法を提供できる。 As described above, according to the present invention, it is possible to provide a tamper resistant power calculation method that makes the power index difficult from the analysis by the power analysis or the timing analysis when the power calculation is performed by the method of Brickell et al.

以下、本発明の各実施形態について図面を参照しながら説明する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings.

(第1の実施形態)
図1は本発明の第1の実施形態に係わる耐タンパーベキ乗剰余算方法を実施する装置の構成を示す模式図である。この耐タンパーベキ乗剰余算装置101は、ICカードなどの計算機のベキ乗剰余算演算部として構成されていて、ハードウェアまたはソフトウェアによってベキ乗剰余算を行うものである。具体的には制御部102、ROM(リードオンリーメモリ)103、RAM(ランダムアクセスメモリ)104、事前計算テーブル105、剰余乗算ユニット106からなる。
(First embodiment)
FIG. 1 is a schematic diagram showing the configuration of an apparatus that implements a tamper-resistant modular multiplication method according to the first embodiment of the present invention. This tamper-proof modular exponentiation apparatus 101 is configured as a power modular multiplication operation unit of a computer such as an IC card, and performs power modular multiplication using hardware or software. Specifically, it comprises a control unit 102, a ROM (read only memory) 103, a RAM (random access memory) 104, a pre-calculation table 105, and a remainder multiplication unit 106.

ROM103はベキ乗剰余算を行う際に必要なパラメータを格納している。例えばm, Nが固定値であるときは、m, Nである。またソフトウェアで実現されるときは、Brickellらの方法でベキ乗剰余算を行うプログラムを格納していることもある。RAM104はベキ乗剰余算の途中結果などの一時的なデータを格納する。事前計算テーブル105は、TBL[i] = mw i mod NからなるTBL[]を格納している。事前計算テーブル105はROM102に含まれていてもよい。剰余乗算ユニット106は、ROM103またはRAM104または事前計算テーブル105から制御部102の制御のもとに入力値x, yを受け、剰余乗算z = a×b mod Nを行って結果zをRAM104に返す。 The ROM 103 stores parameters necessary for performing the power-residue calculation. For example, when m and N are fixed values, they are m and N. When implemented in software, it may also store programs that perform power-residue calculations using the method of Brickell et al. The RAM 104 stores temporary data such as intermediate results of power-residue calculations. The pre-calculation table 105 stores TBL [] consisting of TBL [i] = m wi mod N. The pre-calculation table 105 may be included in the ROM 102. The modular multiplication unit 106 receives the input values x and y from the ROM 103 or RAM 104 or the pre-calculation table 105 under the control of the control unit 102, performs modular multiplication z = a × b mod N, and returns the result z to the RAM 104. .

図2、図3は本発明の第1の実施形態に関わる耐タンパーベキ乗剰余算方法を実現するフローチャートである。このフローチャートは図1に示す耐タンパーベキ乗剰余算装置で実行されるものとしてここでは説明するが、それに限定されるものではない。 FIG. 2 and FIG. 3 are flowcharts for realizing the tamper-resistant modular multiplication method according to the first embodiment of the present invention. Although this flowchart will be described here as being executed by the tamper-resistant modular exponentiation apparatus shown in FIG. 1, it is not limited thereto.

図2、図3では、今日のベキ乗剰余算を利用した暗号方式の法は一般に1024ビットが使われていることから、nを1024ビット、wを8ビット、sをs = n/w = 128とした場合を示しているが、もちろん一般化することも容易である。 In Fig. 2 and Fig. 3, since 1024 bits are generally used in today's power-modulo method, n is 1024 bits, w is 8 bits, s is s = n / w = Although the case of 128 is shown, it is of course easy to generalize.

図2、図3を用いて、本発明の第1の実施形態を説明する。 The first embodiment of the present invention will be described with reference to FIGS.

まずkは8ビットずつ128ブロックに分けられているものとし、それをMSB側からk127, k126, …, k1, k0とする。これは図2には図示されていないが、ステップ201より前もしくはステップ201で行われるステップである。またnが1024ビットの場合を考えているので、MSBを含むブロックに0をパディングする必要がないが、必要に応じてここでkのMSB側に0をパディングしてブロックをwビットにしておく。 First, k is assumed to be divided into 128 blocks of 8 bits each, and these are k 127 , k 126 ,..., K 1 , k 0 from the MSB side. Although not shown in FIG. 2, this is a step performed before or at step 201. Since n is 1024 bits, there is no need to pad the block containing the MSB with 0. However, if necessary, 0 is padded to the MSB side of the k to make the block w bits. .

ステップ201では、k127, …, k0を大きい順に並べ替え、それに対応する添え字を領域Fに格納する。ステップ201を詳細に記述したフローチャートが図3である。ここでステップ201に対応する図3を説明する。 In step 201, k 127 ,..., K 0 are rearranged in descending order, and the subscripts corresponding thereto are stored in area F. FIG. 3 is a flowchart describing step 201 in detail. Here, FIG. 3 corresponding to step 201 will be described.

ステップ301において、添え字を格納する領域Fを0に初期化する。ステップ302から309はdを255(= 2w - 1)からd = 0まで1ずつ減じていくループ処理である。ステップ303から306はiを127(= s - 1)からi = 0まで1ずつ減じていくループ処理である。なおここはiを0から127まで1ずつ増加させていってもよい。ステップ304において、ki = dであるかを検査する。成立するときは添え字を格納する領域Fに1バイトのデータとしてiを連結する(ステップ305)。成立しないときは何もしない、すなわちステップ305を飛ばしてステップ306に進む。ステップ306のiループが終了したのちはステップ307に進み、i > 0か検査する。成立するときは領域Fに、dの値が変化する印をつける。ここでは0x80(10進数では128)という1バイトをその印としている(ステップ308)。成立しないときは何もしない、すなわちステップ308を飛ばしてステップ309に進む。ステップ309のdループが終了したとき、このフローチャートは終了する。 In step 301, an area F for storing subscripts is initialized to zero. Steps 302 to 309 are loop processes in which d is decreased by 1 from 255 (= 2 w −1) to d = 0. Steps 303 to 306 are loop processes in which i is decreased by 1 from 127 (= s−1) to i = 0. Here, i may be increased by 1 from 0 to 127. In step 304, it is checked whether k i = d. When it is established, i is concatenated as 1-byte data to the area F in which the subscript is stored (step 305). If it does not hold, do nothing, that is, skip step 305 and proceed to step 306. After the i loop of step 306 is completed, the process proceeds to step 307 and checks whether i> 0. When established, the area F is marked to change the value of d. Here, one byte of 0x80 (128 in decimal) is used as the mark (step 308). If it does not hold, do nothing, that is, skip step 308 and go to step 309. When the d loop of step 309 is finished, this flowchart is finished.

そこで図2のフローチャートに戻る。ステップ202、203で中間結果A、Bをそれぞれ1と設定する。ステップ204から208はiを0から382(= (2w - 1) + s - 1)まで1ずつ増加させていくループ処理である。ステップ205においてFのi番目の要素F[i]が0x80であるか検査する。成立する場合はB×A mod Nを実行してAに格納し(ステップ206)、ステップ208に進む。成立しない場合はB×TBL[F[i]] mod Nを実行してBに格納する(ステップ207)。ステップ208で終了したときに、Aにmk mod Nが格納されている。なぜならば、本実施例では、Brickellらの方法において、ki = dかの判定を処理の先頭で行っているのみで、剰余乗算の実行順序はBrickellらの方法と同じだからである。また、Brickellらの方法ではdのループはd = 0で行っていないが、本実施例(図3)ではd = 0の場合も行っている。しかしステップ307でi = 0の場合はFに0x80を連結していないため、d = 0に対応する図2での演算は、ステップ207が行われるのみで、ステップ206は行われない。したがってd = 0に対応する演算は、最終結果Aに影響を与えないため、Brickellらの方法と同じ最終結果を得ることができる。 Therefore, the flowchart returns to FIG. In steps 202 and 203, the intermediate results A and B are set to 1. Steps 204 to 208 are loop processes in which i is increased by 1 from 0 to 382 (= (2 w -1) + s-1). In step 205, it is checked whether the i-th element F [i] of F is 0x80. If true, B × A mod N is executed and stored in A (step 206), and the process proceeds to step 208. If not, B × TBL [F [i]] mod N is executed and stored in B (step 207). When finished in step 208, A stores m k mod N. This is because, in the present embodiment, in the method of Brickell et al., Only k i = d is determined at the beginning of the process, and the execution order of the remainder multiplication is the same as the method of Brickell et al. Further, in the method of Brickell et al., The loop of d is not performed at d = 0, but in this embodiment (FIG. 3), the case of d = 0 is also performed. However, when i = 0 in step 307, 0x80 is not connected to F, and therefore the calculation in FIG. 2 corresponding to d = 0 is performed only in step 207 and not in step 206. Therefore, since the operation corresponding to d = 0 does not affect the final result A, the same final result as the method of Brickell et al. Can be obtained.

このように本発明によれば、ステップ204から208までのループ内で、各ループごとに1回の剰余乗算のみが実行されるため、消費電力波形や処理時間からkの値を推測されるのを困難にすることができる。 As described above, according to the present invention, only one modular multiplication is executed for each loop in the loop from step 204 to 208, so that the value of k can be estimated from the power consumption waveform and the processing time. Can be difficult.

また、ステップ201とステップ202は連続して実行される必要はなく、ステップ201を実行してFを格納したのち、別の処理をしてからステップ202以下を実行するようにすることもできる。このようにすると、ステップ201(図3)の処理とステップ202以下の処理の関連をさらに解析しにくくできる。 Further, step 201 and step 202 need not be executed in succession, and after executing step 201 and storing F, it is also possible to execute step 202 and subsequent steps after performing another process. This makes it difficult to analyze the relationship between the process in step 201 (FIG. 3) and the process in step 202 and subsequent steps.

(第2の実施形態)
第2の実施形態は、第1の実施形態において、途中結果を格納するA, Bを事前計算テーブルTBLと同じ配列に格納することで、より解析を困難にするものである。
(Second embodiment)
The second embodiment makes analysis more difficult by storing A and B storing intermediate results in the same array as the pre-calculation table TBL in the first embodiment.

図4は本発明の第2の実施形態に関わる耐タンパーベキ乗剰余算方法を実現するフローチャートである。このフローチャートは図1に示す耐タンパーベキ乗剰余算装置で実行されるものとしてここでは説明するが、それに限定されるものではない。 FIG. 4 is a flowchart for realizing the tamper-resistant modular multiplication method according to the second embodiment of the present invention. Although this flowchart is described here as being executed by the tamper-resistant modular exponentiation apparatus shown in FIG. 1, it is not limited thereto.

また第2の実施形態では、事前計算テーブル105は書き込みができる必要がある。そのため、計算に先立ってRAM104に格納されているものとする。 In the second embodiment, the precalculation table 105 needs to be writable. Therefore, it is assumed that the data is stored in the RAM 104 prior to the calculation.

図4では、今日のベキ乗剰余算を利用した暗号方式の法は一般に1024ビットが使われていることから、nを1024ビット、wを8ビット、sをs = n/w = 128とした場合を示しているが、もちろん一般化することも容易である。 In Fig. 4, 1024 bits are generally used in today's method of power-based cryptography, so n is 1024 bits, w is 8 bits, and s is s = n / w = 128 Although cases are shown, it is of course easy to generalize.

図4、図2を用いて、本発明の第2の実施形態を説明する。 A second embodiment of the present invention will be described with reference to FIGS.

まずkは8ビットずつ128ブロックに分けられているものとし、それをMSB側からk127, k126, …, k1, k0とする。これは図4には図示されていないが、ステップ401より前もしくはステップ401で行われるステップである。またnが1024ビットの場合を考えているので、MSBを含むブロックに0をパディングする必要がないが、必要に応じてここでkのMSB側に0をパディングしてブロックをwビットにしておく。 First, k is assumed to be divided into 128 blocks of 8 bits each, and these are k 127 , k 126 ,..., K 1 , k 0 from the MSB side. Although not shown in FIG. 4, this is a step performed before or at step 401. Also, since n is considered to be 1024 bits, there is no need to pad the block containing the MSB with 0. However, if necessary, 0 is padded to the MSB side of k to make the block w bits. .

ステップ401では、k127, …, k0を大きい順に並べ替え、それに対応する添え字を領域Fに格納する。ステップ401を詳細に記述したフローチャートは第1の実施例同様に図3であり、その流れは第1の実施例で説明した通りである。ステップ402、403で中間結果を格納する領域として事前計算テーブルからTBL[128], TBL[129]を選び、それぞれを1と設定する。ステップ404から406はiを0から382(= (2w - 1) + s - 1)まで1ずつ増加させていくループ処理である。ステップ405においてTBL[129-(F[i]>>7)] ← TBL[129]×TBL[F[i]] mod Nを実行する。この演算では、F[i] = 0x80の場合はTBL[128] ← TBL[129]×TBL[128] mod Nであり、A = TBL[128], B = TBL[129]とした場合の図2におけるステップ206に対応する。F[i]が0x80未満の場合はTBL[129] ← TBL[129]×TBL[F[i]] mod Nであり、B = TBL[129]とした場合の図2におけるステップ207に対応する。したがって図4のフローチャートは図2と同じ演算の流れとなっており、終了したときには、TBL[128]にmk mod Nが格納されている。 In step 401, k 127 ,..., K 0 are rearranged in descending order, and the subscripts corresponding thereto are stored in area F. The flowchart describing the step 401 in detail is FIG. 3 as in the first embodiment, and the flow is as described in the first embodiment. In steps 402 and 403, TBL [128] and TBL [129] are selected from the pre-calculation table as areas for storing intermediate results, and each is set to 1. Steps 404 to 406 are loop processes in which i is increased by 1 from 0 to 382 (= (2 w -1) + s-1). In step 405, TBL [129- (F [i] >> 7)] <-TBL [129] × TBL [F [i]] mod N is executed. In this calculation, when F [i] = 0x80, TBL [128] ← TBL [129] x TBL [128] mod N, and A = TBL [128], B = TBL [129] This corresponds to step 206 in FIG. When F [i] is less than 0x80, TBL [129] ← TBL [129] × TBL [F [i]] mod N, corresponding to step 207 in FIG. 2 when B = TBL [129] . Therefore, the flowchart of FIG. 4 has the same calculation flow as that of FIG. 2, and when finished, m k mod N is stored in TBL [128].

このように本発明によれば、ステップ404から406までのループ内で、分岐することなく一定の演算列でベキ乗剰余算が計算されていくため、消費電力波形や処理時間からkの値を推測されるのを困難にすることができる。 As described above, according to the present invention, the power-residue calculation is calculated in a constant calculation sequence without branching in the loop from step 404 to step 406. Therefore, the value k is calculated from the power consumption waveform and the processing time. It can be difficult to guess.

また、ステップ401とステップ402は連続して実行される必要はなく、ステップ401を実行してFを格納したのち、別の処理をしてからステップ402以下を実行することで、ステップ401(図3)の処理とステップ402以下の処理の関連をさらに解析しにくくできることは、第1の実施例と同様である。 Also, step 401 and step 402 do not need to be executed in succession. After step 401 is executed and F is stored, another process is performed and then step 402 and the subsequent steps are executed. Similar to the first embodiment, it is more difficult to analyze the relationship between the process 3) and the processes after step 402.

(第3の実施形態)
図5は本発明の第3の実施形態に係わる耐タンパーベキ乗剰余算方法を実施する装置の構成を示す模式図である。この耐タンパーベキ乗剰余算装置501は、ICカードなどの計算機のベキ乗剰余算演算部として構成されていて、ハードウェアまたはソフトウェアによってベキ乗剰余算を行うものである。具体的には制御部502、ROM(リードオンリーメモリ)503、RAM(ランダムアクセスメモリ)504、事前計算テーブル505、楕円曲線上の点の加算ユニット506からなる。
(Third embodiment)
FIG. 5 is a schematic diagram showing a configuration of an apparatus for carrying out a tamper-resistant modular multiplication method according to the third embodiment of the present invention. The tamper-resistant modular multiplication unit 501 is configured as a power modular calculation unit of a computer such as an IC card, and performs power modular multiplication using hardware or software. Specifically, it comprises a control unit 502, a ROM (read only memory) 503, a RAM (random access memory) 504, a pre-calculation table 505, and an addition unit 506 for points on an elliptic curve.

ROM503はベキ乗剰余算を行う際に必要なパラメータを格納している。例えば楕円曲線のパラメータである。またソフトウェアで実現されるときは、Brickellらの方法で楕円曲線上の点のスカラー倍算を行うプログラムを格納していることもある。RAM504はベキ乗剰余算の途中結果などの一時的なデータを格納する。事前計算テーブル505は、TBL[i] = wiPからなるTBL[]を格納している。事前計算テーブル505はROM502に含まれていてもよい。楕円曲線上の点の加算ユニット506は、ROM503またはRAM504または事前計算テーブル505から制御部502の制御のもとに入力値x, yを受け、楕円曲線上の点の加算z = a + b を行って結果zをRAM504に返す。 The ROM 503 stores parameters necessary for performing the power-residue calculation. For example, it is an elliptic curve parameter. When implemented in software, it may store programs that perform scalar multiplication of points on elliptic curves using the method of Brickell et al. The RAM 504 stores temporary data such as intermediate results of power-residue calculations. Pre-calculation table 505 stores the TBL [] consisting TBL [i] = w i P . The pre-calculation table 505 may be included in the ROM 502. The point addition unit 506 on the elliptic curve receives the input values x and y from the ROM 503 or RAM 504 or the pre-calculation table 505 under the control of the control unit 502, and adds the points on the elliptic curve z = a + b And return the result z to the RAM 504.

図6、図7は本発明の第3の実施形態に関わる耐タンパーベキ乗演算(楕円曲線上のスカラー倍算)方法を実現するフローチャートである。このフローチャートは図5に示す耐タンパーベキ乗剰余算装置で実行されるものとしてここでは説明するが、それに限定されるものではない。 FIG. 6 and FIG. 7 are flowcharts for realizing a tamper-resistant power calculation (scalar multiplication on an elliptic curve) method according to the third embodiment of the present invention. Although this flowchart is described here as being executed by the tamper-resistant modular exponentiation apparatus shown in FIG. 5, it is not limited thereto.

図6、図7では、今日の楕円曲線暗号方式の鍵長は一般に160ビットが使われていることから、nを160ビット、wを4ビット、sをs = n/w = 40とした場合を示しているが、もちろん一般化することも容易である。 In Fig. 6 and Fig. 7, the key length of today's elliptic curve cryptosystem is generally 160 bits, so n is 160 bits, w is 4 bits, and s is s = n / w = 40 Of course, it is easy to generalize.

図6、図7を用いて、本発明の第1の実施形態を説明する。 The first embodiment of the present invention will be described with reference to FIGS.

まずkは4ビットずつ40ブロックに分けられているものとし、それをMSB側からk39, k38, …, k1, k0とする。これは図6には図示されていないが、ステップ601より前もしくはステップ601で行われるステップである。またnが160ビットの場合を考えているので、MSBを含むブロックに0をパディングする必要がないが、必要に応じてここでkのMSB側に0をパディングしてブロックをwビットにしておく。 First, k is assumed to be divided into 40 blocks of 4 bits, and these are k 39 , k 38 ,..., K 1 , k 0 from the MSB side. Although not shown in FIG. 6, this is a step performed before or at step 601. In addition, since n is considered to be 160 bits, it is not necessary to pad the block including the MSB with 0, but if necessary, 0 is padded to the MSB side of k to make the block w bits. .

ステップ601では、k39, …, k0を大きい順に並べ替え、それに対応する添え字を領域Fに格納する。ステップ601を詳細に記述したフローチャートが図7である。ここでステップ601に対応する図7を説明する。 In step 601, k 39 ,..., K 0 are rearranged in descending order, and the subscripts corresponding thereto are stored in the region F. FIG. 7 is a flowchart describing step 601 in detail. Here, FIG. 7 corresponding to step 601 will be described.

ステップ701において、添え字を格納する領域Fを0に初期化する。ステップ702から709はdを15(= 2w - 1)からd = 0まで1ずつ減じていくループ処理である。ステップ703から706はiを39(= s - 1)からi = 0まで1ずつ減じていくループ処理である。なおここはiを0から39まで1ずつ増加させていってもよい。ステップ704において、ki = dであるかを検査する。成立するときは添え字を格納する領域Fに1バイトのデータとしてiを連結する(ステップ705)。成立しないときは何もしない、すなわちステップ705を飛ばしてステップ706に進む。ステップ706のiループが終了したのちはステップ707に進み、i > 0か検査する。成立するときは領域Fに、dの値が変化する印をつける。ここでは0x80(10進数では128)という1バイトをその印としている(ステップ708)。成立しないときは何もしない、すなわちステップ708を飛ばしてステップ709に進む。ステップ709のdループが終了したとき、このフローチャートは終了する。 In step 701, an area F for storing subscripts is initialized to zero. Steps 702 to 709 are a loop process in which d is reduced by 1 from 15 (= 2 w −1) to d = 0. Steps 703 to 706 are loop processing in which i is decreased by 1 from 39 (= s−1) to i = 0. Here, i may be increased by 1 from 0 to 39. In step 704, it is checked whether k i = d. When it is established, i is concatenated as 1-byte data to the area F storing the subscript (step 705). If it does not hold, do nothing, that is, skip step 705 and proceed to step 706. After the i loop in step 706 is completed, the process proceeds to step 707, where it is checked whether i> 0. When established, the area F is marked to change the value of d. Here, one byte of 0x80 (128 in decimal) is used as the mark (step 708). If it does not hold, do nothing, that is, skip step 708 and go to step 709. When the d loop of step 709 is finished, this flowchart is finished.

そこで図6のフローチャートに戻る。ステップ602、603で中間結果A、Bをそれぞれ楕円曲線上の無限遠点Oと設定する。ステップ604から608はiを0から54(= (2w - 1) + s - 1)まで1ずつ増加させていくループ処理である。ステップ605においてFのi番目の要素F[i]が0x80であるか検査する。成立する場合はB + Aを実行してAに格納し(ステップ606)、ステップ608に進む。成立しない場合はB + TBL[F[i]]を実行してBに格納する(ステップ607)。ステップ608で終了したときに、AにkPが格納されている。なぜならば、本実施例では、Brickellらの方法において、ki = dかの判定を処理の先頭で行っているのみで、剰余乗算の実行順序はBrickellらの方法と同じだからである。また、Brickellらの方法ではdのループはd = 0で行っていないが、本実施例(図7)ではd = 0の場合も行っている。しかしステップ707でi = 0の場合はFに0x80を連結していないため、d = 0に対応する図6での演算は、ステップ607が行われるのみで、ステップ606は行われない。したがってd = 0に対応する演算は、最終結果Aに影響を与えないため、Brickellらの方法と同じ最終結果を得ることができる。 Therefore, the flow returns to the flowchart of FIG. In steps 602 and 603, the intermediate results A and B are set as the infinity point O on the elliptic curve, respectively. Steps 604 to 608 are loop processes in which i is increased by 1 from 0 to 54 (= (2 w -1) + s-1). In step 605, it is checked whether the i-th element F [i] of F is 0x80. If true, B + A is executed and stored in A (step 606), and the process proceeds to step 608. If not, B + TBL [F [i]] is executed and stored in B (step 607). When finished in step 608, kP is stored in A. This is because, in the present embodiment, in the method of Brickell et al., Whether k i = d is only determined at the beginning of the processing, and the execution order of the remainder multiplication is the same as the method of Brickell et al. Further, in the method of Brickell et al., The loop of d is not performed at d = 0, but in this embodiment (FIG. 7), the case of d = 0 is also performed. However, when i = 0 in step 707, 0x80 is not connected to F, and therefore the calculation in FIG. 6 corresponding to d = 0 is performed only in step 607 and not in step 606. Therefore, since the operation corresponding to d = 0 does not affect the final result A, the same final result as the method of Brickell et al. Can be obtained.

このように本発明によれば、ステップ604から608までのループ内で、各ループごとに1回の楕円曲線上の点の加算のみが実行されるため、消費電力波形や処理時間からkの値を推測されるのを困難にすることができる。 As described above, according to the present invention, only the addition of the points on the elliptic curve is executed once for each loop in the loop from step 604 to 608, so that the value of k is calculated from the power consumption waveform and the processing time. Can be difficult to guess.

また、ステップ601とステップ602は連続して実行される必要はなく、ステップ601を実行してFを格納したのち、別の処理をしてからステップ602以下を実行するようにすることもできる。このようにすると、ステップ601(図7)の処理とステップ602以下の処理の関連をさらに解析しにくくできる。 Further, step 601 and step 602 do not need to be executed in succession. After executing step 601 and storing F, it is also possible to execute step 602 and subsequent steps after performing another process. This makes it difficult to analyze the relationship between the processing in step 601 (FIG. 7) and the processing in step 602 and subsequent steps.

(第4の実施形態)
第4の実施形態は、第3の実施形態において、途中結果を格納するA, Bを事前計算テーブルTBLと同じ配列に格納することで、より解析を困難にするものである。
(Fourth embodiment)
In the fourth embodiment, in the third embodiment, A and B storing intermediate results are stored in the same array as the pre-calculation table TBL, thereby making analysis more difficult.

図8は本発明の第3の実施形態に関わる耐タンパーベキ乗剰余算方法を実現するフローチャートである。このフローチャートは図5に示す耐タンパーベキ乗剰余算装置で実行されるものとしてここでは説明するが、それに限定されるものではない。 FIG. 8 is a flowchart for realizing the tamper-resistant modular multiplication method according to the third embodiment of the present invention. Although this flowchart will be described here as being executed by the tamper-resistant modular exponentiation apparatus shown in FIG. 5, it is not limited thereto.

また第4の実施形態では、事前計算テーブル505は書き込みができる必要がある。そのため、計算に先立ってRAM504に格納されているものとする。 In the fourth embodiment, the precalculation table 505 needs to be writable. Therefore, it is assumed that the data is stored in the RAM 504 prior to calculation.

図8では、今日の楕円曲線暗号方式の鍵長は一般に160ビットが使われていることから、nを160ビット、wを4ビット、sをs = n/w = 40とした場合を示しているが、もちろん一般化することも容易である。 Figure 8 shows that the key length of today's elliptic curve cryptosystem is generally 160 bits, so n is 160 bits, w is 4 bits, and s is s = n / w = 40. Of course, it is easy to generalize.

図8、図6を用いて、本発明の第4の実施形態を説明する。 A fourth embodiment of the present invention will be described with reference to FIGS.

まずkは4ビットずつ40ブロックに分けられているものとし、それをMSB側からk39, k38, …, k1, k0とする。これは図8には図示されていないが、ステップ801より前もしくはステップ801で行われるステップである。またnが160ビットの場合を考えているので、MSBを含むブロックに0をパディングする必要がないが、必要に応じてここでkのMSB側に0をパディングしてブロックをwビットにしておく。 First, k is assumed to be divided into 40 blocks of 4 bits, and these are k 39 , k 38 ,..., K 1 , k 0 from the MSB side. Although not shown in FIG. 8, this is a step performed before or at step 801. In addition, since n is considered to be 160 bits, it is not necessary to pad the block including the MSB with 0, but if necessary, 0 is padded to the MSB side of k to make the block w bits. .

ステップ801では、k39, …, k0を大きい順に並べ替え、それに対応する添え字を領域Fに格納する。ステップ801を詳細に記述したフローチャートは第3の実施例同様に図7であり、その流れは第3の実施例で説明した通りである。ステップ802、803で中間結果を格納する領域として事前計算テーブルからTBL[40], TBL[41]を選び、それぞれを楕円曲線上の無限遠点Oと設定する。ステップ804から806はiを0から54(= (2w - 1) + s - 1)まで1ずつ増加させていくループ処理である。ステップ805においてTBL[41-(F[i]>>7)] ← TBL[41] + TBL[F[i]]を実行する。この演算では、F[i] = 0x80の場合はTBL[41] ← TBL[41] + TBL[40]であり、A = TBL[40], B = TBL[41]とした場合の図6におけるステップ606に対応する。F[i]が0x80未満の場合はTBL[41] ← TBL[41] + TBL[F[i]]であり、B = TBL[41]とした場合の図6におけるステップ607に対応する。したがって図8のフローチャートは図6と同じ演算の流れとなっており、終了したときには、TBL[40]にkPが格納されている。 In step 801, k 39 ,..., K 0 are rearranged in descending order, and the subscripts corresponding thereto are stored in area F. The flowchart describing the details of step 801 is FIG. 7 as in the third embodiment, and the flow is as described in the third embodiment. In steps 802 and 803, TBL [40] and TBL [41] are selected from the pre-calculation table as areas for storing intermediate results, and each is set as an infinite point O on the elliptic curve. Steps 804 to 806 are loop processes in which i is increased by 1 from 0 to 54 (= (2 w -1) + s-1). In step 805, TBL [41- (F [i] >> 7)] <-TBL [41] + TBL [F [i]] is executed. In this calculation, TBL [41] ← TBL [41] + TBL [40] when F [i] = 0x80, and in Fig. 6 when A = TBL [40] and B = TBL [41] Corresponds to step 606. When F [i] is less than 0x80, TBL [41] ← TBL [41] + TBL [F [i]], which corresponds to step 607 in FIG. 6 when B = TBL [41]. Therefore, the flowchart of FIG. 8 has the same calculation flow as that of FIG. 6, and kP is stored in TBL [40] when the calculation is completed.

このように本発明によれば、ステップ804から806までのループ内で、分岐することなく一定の演算列で楕円曲線上の点の加算が計算されていくため、消費電力波形や処理時間からkの値を推測されるのを困難にすることができる。 As described above, according to the present invention, since the addition of points on the elliptic curve is calculated in a constant calculation sequence without branching in the loop from step 804 to 806, k is calculated from the power consumption waveform and the processing time. Can be difficult to guess.

また、ステップ801とステップ802は連続して実行される必要はなく、ステップ801を実行してFを格納したのち、別の処理をしてからステップ802以下を実行することで、ステップ801(図7)の処理とステップ802以下の処理の関連をさらに解析しにくくできることは、第3の実施例と同様である。 Further, step 801 and step 802 do not need to be executed in succession. After step 801 is executed and F is stored, another process is performed, and then step 802 and the subsequent steps are executed. Similar to the third embodiment, it is more difficult to analyze the relationship between the process 7) and the processes in and after step 802.

本発明の第1、第2の実施形態に係る耐タンパーベキ乗剰余算装置Tamper-resistant modular multiplication device according to first and second embodiments of the present invention 本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法Tamper-resistant modular multiplication method according to the first embodiment of the present invention 本発明の第1、第2の実施形態に係るkの符号化方法K encoding method according to first and second embodiments of the present invention 本発明の第2の実施形態に係る耐タンパーベキ乗剰余算方法Tamper-resistant modular multiplication method according to the second embodiment of the present invention 本発明の第3、第4の実施形態に係る耐タンパースカラー倍算装置Tamper resistant color multiplication apparatus according to third and fourth embodiments of the present invention 本発明の第3の実施形態に係る耐タンパースカラー倍算方法Tamper resistant scalar multiplication method according to the third embodiment of the present invention 本発明の第3、第4の実施形態に係るkの符号化方法K encoding method according to third and fourth embodiments of the present invention 本発明の第3の実施形態に係る耐タンパースカラー倍算方法Tamper resistant scalar multiplication method according to the third embodiment of the present invention Brickellらによるベキ乗演算方法Power calculation method by Brickell et al.

符号の説明Explanation of symbols

101…耐タンパーベキ乗剰余算装置
102…制御部
103…ROM
104…ランダムアクセスメモリ
105…事前計算テーブル
106…剰余乗算ユニット
201…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第1ステップ
202…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第2ステップ
203…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第3ステップ
204…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第4ステップ
205…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第5ステップ
206…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第6ステップ
207…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第7ステップ
208…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第8ステップ
301…本発明の第1、2の実施形態に係るkの符号化方法の第1ステップ
302…本発明の第1、2の実施形態に係るkの符号化方法の第2ステップ
303…本発明の第1、2の実施形態に係るkの符号化方法の第3ステップ
304…本発明の第1、2の実施形態に係るkの符号化方法の第4ステップ
305…本発明の第1、2の実施形態に係るkの符号化方法の第5ステップ
306…本発明の第1、2の実施形態に係るkの符号化方法の第6ステップ
307…本発明の第1、2の実施形態に係るkの符号化方法の第7ステップ
308…本発明の第1、2の実施形態に係るkの符号化方法の第8ステップ
309…本発明の第1、2の実施形態に係るkの符号化方法の第9ステップ
401…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第1ステップ
402…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第2ステップ
403…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第3ステップ
404…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第4ステップ
405…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第5ステップ
406…本発明の第1の実施形態に係る耐タンパーベキ乗剰余算方法の第6ステップ
501…耐タンパースカラー倍算装置
502…制御部
503…ROM
504…ランダムアクセスメモリ
505…事前計算テーブル
506…楕円曲線上の点の加算ユニット
601…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第1ステップ
602…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第2ステップ
603…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第3ステップ
604…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第4ステップ
605…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第5ステップ
606…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第6ステップ
607…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第7ステップ
608…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第8ステップ
701…本発明の第3、4の実施形態に係るkの符号化方法の第1ステップ
702…本発明の第3、4の実施形態に係るkの符号化方法の第2ステップ
703…本発明の第3、4の実施形態に係るkの符号化方法の第3ステップ
704…本発明の第3、4の実施形態に係るkの符号化方法の第4ステップ
705…本発明の第3、4の実施形態に係るkの符号化方法の第5ステップ
706…本発明の第3、4の実施形態に係るkの符号化方法の第6ステップ
707…本発明の第3、4の実施形態に係るkの符号化方法の第7ステップ
708…本発明の第3、4の実施形態に係るkの符号化方法の第8ステップ
709…本発明の第3、4の実施形態に係るkの符号化方法の第9ステップ
801…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第1ステップ
802…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第2ステップ
803…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第3ステップ
804…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第4ステップ
805…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第5ステップ
806…本発明の第3の実施形態に係る耐タンパーベキ乗剰余算方法の第6ステップ
901…Brickellらによるベキ乗演算方法の第1ステップ
902…Brickellらによるベキ乗演算方法の第2ステップ
903…Brickellらによるベキ乗演算方法の第3ステップ
904…Brickellらによるベキ乗演算方法の第4ステップ
905…Brickellらによるベキ乗演算方法の第5ステップ
906…Brickellらによるベキ乗演算方法の第6ステップ
907…Brickellらによるベキ乗演算方法の第7ステップ
908…Brickellらによるベキ乗演算方法の第8ステップ
909…Brickellらによるベキ乗演算方法の第9ステップ
101 ... Tamper-resistant modular multiplication device
102 ... Control unit
103 ... ROM
104 ... Random access memory
105 ... Pre-calculation table
106: Remainder multiplication unit
201 ... First step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
202 ... Second step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
203 ... Third step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
204 ... Fourth step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
205 ... Fifth step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
206 ... Sixth step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
207 ... Seventh step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
208: Eighth step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
301. First step of k encoding method according to first and second embodiments of the present invention
302 ... Second step of k encoding method according to first and second embodiments of the present invention
303 ... the third step of the encoding method of k according to the first and second embodiments of the present invention
304 ... Fourth step of k encoding method according to first and second embodiments of the present invention
305 ... Fifth step of k encoding method according to first and second embodiments of the present invention
306: Sixth step of k encoding method according to first and second embodiments of the present invention
307: Seventh step of k encoding method according to first and second embodiments of the present invention
308: Eighth step of the encoding method of k according to the first and second embodiments of the present invention
309 ... Ninth step of k encoding method according to first and second embodiments of the present invention
401: First step of tamper-resistant modular multiplication method according to first embodiment of the present invention
402 ... Second step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
403 ... Third step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
404 ... Fourth step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention.
405 ... Fifth step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
406 ... Sixth step of the tamper-resistant modular multiplication method according to the first embodiment of the present invention
501 ... Tamper resistant color multiplication device
502 ... Control unit
503 ... ROM
504… Random access memory
505 ... Pre-calculation table
506 ... Point addition unit on elliptic curve
601... First step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
602 ... Second step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
603 ... Third step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
604 ... Fourth step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
605: Fifth step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
606 ... Sixth step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
607 ... Seventh step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
608 ... Eighth step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
701: First step of k encoding method according to third and fourth embodiments of the present invention
702 ... Second step of k encoding method according to third and fourth embodiments of the present invention
703 ... Third step of k encoding method according to third and fourth embodiments of the present invention
704 ... Fourth step of k encoding method according to third and fourth embodiments of the present invention
705 ... Fifth step of k encoding method according to third and fourth embodiments of the present invention
706 ... Sixth step of k encoding method according to third and fourth embodiments of the present invention
707 ... Seventh step of k encoding method according to third and fourth embodiments of the present invention
708: Eighth step of the k encoding method according to the third and fourth embodiments of the present invention.
709 ... Ninth step of k encoding method according to third and fourth embodiments of the present invention
801 ... First step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
802: Second step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
803 ... Third step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
804 ... Fourth step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
805 ... Fifth step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
806: Sixth step of the tamper-resistant modular multiplication method according to the third embodiment of the present invention
901 ... First step of power calculation method by Brickell et al.
902… The second step of the power calculation method by Brickell et al.
903… The third step of the power calculation method by Brickell et al.
904… The fourth step of the power calculation method by Brickell et al.
905 ... Fifth step of power calculation method by Brickell et al.
906… Brickell et al. 6th step
907 ... Seventh step of power calculation method by Brickell et al.
908… Eighth step of power calculation method by Brickell et al.
909 ... Ninth step of power calculation method by Brickell et al.

Claims (4)

情報処理装置を利用して暗号処理中に出現するベキ乗剰余算c = mk mod Nを計算する方法であって、
nビットの整数データkをLSB(Least Significant Bit、最下位ビット)から順にwビットずつのs個のブロック(sはn/w以上の最小の整数)に分ける手段と、
前記データkのMSB(Most Significant Bit、最上位ビット)を含むブロックがwビットに満たない場合にMSB側に0をパディングして前記ブロックをwビットにする手段と、
前記ブロックに分けられたデータkをks-1, ks-2, …, k1, k0としたとき、各ブロックをwビットの整数と見て大きい順に並び替えた場合に、対応する添え字をその順序で格納する手段と、
前記添え字を格納する際に、前記kをwビットのブロックで大きい順に並び替えたときに大きさが変わる箇所に相当する添え字に印を付加する手段と、
i = 1, 2, …, sに対しs個のデータTBL[i] = mw i mod Nからなる事前計算テーブルTBLを保持する手段と、
2つの中間変数A, Bを1に初期化する手段と、
ループカウンタdをs-1に初期化する手段と、
前記格納された添え字を順番に参照し、添え字に印がない場合はB×TBL[d] mod Nを計算してBに格納し、添え字に印がある場合はB×A mod Nを計算してAに格納してdから1減じる手段と
を有することを特徴とする耐タンパーベキ乗演算方法。
A method of calculating a power-residue c = m k mod N that appears during cryptographic processing using an information processing device,
means for dividing n-bit integer data k into L blocks (L is the smallest integer of n / w or more) in order of w bits from LSB (Least Significant Bit),
Means for padding the MSB side with 0 when the block containing the MSB (Most Significant Bit) of the data k is less than w bits to make the block w bits;
When the data k divided into the blocks is k s−1 , k s−2 ,..., K 1 , k 0 , this corresponds to the case where each block is rearranged in the descending order as an integer of w bits. Means for storing the subscripts in that order;
Means for adding a mark to a subscript corresponding to a portion that changes in size when the k is rearranged in a large order in a w-bit block when storing the subscript;
means for holding a precomputed table TBL consisting of s data TBL [i] = m wi mod N for i = 1, 2, ..., s;
Means to initialize two intermediate variables A and B to 1,
Means for initializing the loop counter d to s-1;
The stored subscripts are referred to in order. If the subscript is not marked, B × TBL [d] mod N is calculated and stored in B. If the subscript is marked, B × A mod N Means for calculating and storing in A and subtracting 1 from d.
前記2つの中間変数A, BをそれぞれTBL[s], TBL[s+1]またはTBL[s+1], TBL[s]とすることを特徴とする請求項1記載の耐タンパーベキ乗演算方法。 2. The tamper-resistant power calculation method according to claim 1, wherein the two intermediate variables A and B are TBL [s], TBL [s + 1] or TBL [s + 1], TBL [s], respectively. . 情報処理装置を利用して暗号処理中に出現する楕円曲線上の点のスカラー倍算Q = kPを計算する方法であって、
前記nビットの整数データkをLSB(Least Significant Bit、最下位ビット)から順にwビットずつのs個のブロック(sはn/w以上の最小の整数)に分ける手段と、
前記データkのMSB(Most Significant Bit、最上位ビット)を含むブロックがwビットに満たない場合にMSB側に0をパディングして前記ブロックをwビットにする手段と、
前記ブロックに分けられたデータkをks-1, ks-2, …, k1, k0としたとき、各ブロックをwビットの整数と見て大きい順に並び替えた場合に、対応する添え字をその順序で格納する手段と、
前記添え字を格納する際に、前記kをwビットのブロックで大きい順に並び替えたときに大きさが変わる箇所に相当する添え字に印を付加する手段と、
i = 1, 2, …, sに対しs個のデータTBL[i] = wi Pからなる事前計算テーブルTBLを保持する手段と、
2つの中間変数A, Bを1に初期化する手段と、
ループカウンタdをs-1に初期化する手段と、
前記格納された添え字を順番に参照し、添え字に印がない場合はB×TBL[d] mod Nを計算してBに格納し、添え字に印がある場合はB×A mod Nを計算してAに格納してdから1減じる手段と
を有することを特徴とする耐タンパーベキ乗演算方法。
A method of calculating a scalar multiplication Q = kP of points on an elliptic curve appearing during cryptographic processing using an information processing device,
Means for dividing the n-bit integer data k into L blocks (L is the smallest integer of n / w or more) in order of w bits in order from LSB (Least Significant Bit, least significant bit);
Means for padding the MSB side with 0 when the block containing the MSB (Most Significant Bit) of the data k is less than w bits to make the block w bits;
When the data k divided into the blocks is k s−1 , k s−2 ,..., K 1 , k 0 , this corresponds to the case where each block is rearranged in the descending order as an integer of w bits. Means for storing the subscripts in that order;
Means for adding a mark to a subscript corresponding to a portion that changes in size when the k is rearranged in a large order in a w-bit block when storing the subscript;
means for holding a pre-calculation table TBL composed of s pieces of data TBL [i] = w i P for i = 1, 2, ..., s;
Means to initialize two intermediate variables A and B to 1,
Means for initializing the loop counter d to s-1;
The stored subscripts are referred to in order. If the subscript is not marked, B × TBL [d] mod N is calculated and stored in B. If the subscript is marked, B × A mod N Means for calculating and storing in A, and subtracting 1 from d.
前記2つの中間変数A, BをそれぞれTBL[s], TBL[s+1]またはTBL[s+1], TBL[s]とすることを特徴とする請求項3記載の耐タンパーベキ乗演算方法。 4. The tamper-resistant power calculation method according to claim 3, wherein the two intermediate variables A and B are TBL [s], TBL [s + 1] or TBL [s + 1], TBL [s], respectively. .
JP2007059986A 2007-03-09 2007-03-09 Tamper resistant power calculation method Withdrawn JP2008224830A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007059986A JP2008224830A (en) 2007-03-09 2007-03-09 Tamper resistant power calculation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007059986A JP2008224830A (en) 2007-03-09 2007-03-09 Tamper resistant power calculation method

Publications (1)

Publication Number Publication Date
JP2008224830A true JP2008224830A (en) 2008-09-25

Family

ID=39843562

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007059986A Withdrawn JP2008224830A (en) 2007-03-09 2007-03-09 Tamper resistant power calculation method

Country Status (1)

Country Link
JP (1) JP2008224830A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010210940A (en) * 2009-03-10 2010-09-24 Toshiba Corp Calculation device and program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010210940A (en) * 2009-03-10 2010-09-24 Toshiba Corp Calculation device and program

Similar Documents

Publication Publication Date Title
JP4671571B2 (en) Secret information processing device and memory for storing secret information processing program
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
CN107040362B (en) Modular multiplication apparatus and method
US7162033B1 (en) Countermeasure procedures in an electronic component implementing an elliptical curve type public key encryption algorithm
US7961873B2 (en) Password protocols using XZ-elliptic curve cryptography
US7864951B2 (en) Scalar multiplication method with inherent countermeasures
US8391477B2 (en) Cryptographic device having tamper resistance to power analysis attack
US20090092245A1 (en) Protection Against Side Channel Attacks
US20070177721A1 (en) Tamper-proof elliptic encryption with private key
KR100891323B1 (en) Encryption method and apparatus for increasing complexity of power decryption using random point representation in binary field ECC
JP2008252299A (en) Cryptographic processing system and cryptographic processing method
JP7123959B2 (en) Elliptic curve point multiplication device and method
US20010048742A1 (en) Countermeasure method in an electronic component using a public key cryptography algorithm on an elliptic curve
JP2001337599A (en) Scalar multiplication method and device in elliptic curve cryptography, and storage medium
US7286666B1 (en) Countermeasure method in an electric component implementing an elliptical curve type public key cryptography algorithm
JP2010164904A (en) Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method
JP2004304800A (en) Prevention of side channel attacks in data processing equipment
TW586086B (en) Method and apparatus for protecting public key schemes from timing, power and fault attacks
JP2003098962A (en) Elliptic curve scalar multiplication calculation method and apparatus, and recording medium
Steffen et al. In-depth analysis of side-channel countermeasures for crystals-kyber message encoding on arm cortex-m4
US7123717B1 (en) Countermeasure method in an electronic component which uses an RSA-type public key cryptographic algorithm
CN108039947B (en) An SM2 Signature Method Using Coprocessor to Resist Attacks
KR100564599B1 (en) Inverse calculation circuit, inverse calculation method, and storage medium encoded with computer-readable computer program code
WO2024105133A1 (en) Security measures protecting digital security devices when performing cryptographic operations
Ming et al. Revealing the weakness of addition chain based masked SBox implementations

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100511