This invention relates to cryptographic systems and in particular to a method and apparatus for minimizing successful power analysis attacks on processors.
Cryptographic systems generally owe their security to the fact that a particular piece of information is kept secret, without which it is almost impossible to break the scheme. This secret information must generally be stored within a secure boundary, making it difficult for an attacker to get at it directly however, various schemes or attacks have been attempted in order to obtain the secret information. Of particular risk are portable cryptographic tokens, including smart cards and the like. Of the more recent attacks performed on these particularly vulnerable devices are simple power analysis, differential power analysis, higher order differential power analysis and other related techniques. These technically sophisticated and extremely powerful analysis tools can be used by an attacker to extract secret keys from cryptographic devices. It has been shown that these attacks can be mounted quickly and can be implemented using readily available hardware. The amount of time required for these attacks depends on the type of attack and varies somewhat by device. For example it has been shown that a simple power attack (SPA) typically take a few seconds per card, while the differential power attacks (DPA) can take several hours.
Encryption operations are performed in a processor operating in a sequential manner by performing a sequence of fundamental operations, each of which generates a distinct timing pattern. Laborious but careful analysis of end-to-end power waveforms can decompose the order of these fundamental operations performed on each bit of a secret key and thus be, analyzed to find the entire secret key, compromising the system.
In the simple power analysis (SPA) attacks on smart cards and other secure tokens, an attacker directly measures the token's power consumption changes over time. The amount of power consumed varies depending on the executed microprocessor instructions. A large calculation such as elliptic curve (EC) additions in a loop and DES rounds, etc, may be identified, since the operations performed with a microprocessor vary significantly during different parts of these operations. By sampling the current and voltage at a higher rate, i.e. higher resolution, individual instructions can be differentiated.
The differential power analysis attack (DPA) is a more powerful attack than the SPA and is much more difficult to prevent. Primarily, the DPA uses statistical analysis and error correction techniques to extract information which may be correlated to secret keys, while the SPA attacks use primarily visual inspection to identify relevant power fluctuations. The DPA attack is performed in two steps. The first step is recording data that reflects the change in power consumed by the card during execution of cryptographic routines. In the second step, the collected data is statistically analyzed to extract information correlated to secret keys. A detailed analysis of these attacks is described in the paper entitled “Introduction to Differential Power Analysis and Related Attacks” by Paul Kocher et al.
Various techniques for addressing these power attacks have been attempted to date. These include hardware solutions such as providing well-filtered power supplies and physical shielding of processor elements. However, in the case of smart cards and other secure tokens, this is unfeasible. The DPA vulnerabilities result from transistor and circuit electrical behaviors that propagate to expose logic gates, microprocessor operation and ultimately the software implementations.
In software implementation of cryptographic routines, particularly on smart cards, branches in program flow are particularly vulnerable to power analysis measurements. Generally, where the program flow reaches a branch, then based on some distinguishing value V, one of two branches of the program is executed. To distinguish between the two possible cases, V is compared with a threshold value and a jump to one of two locations is executed as a result of the comparison. This is illustrated by referring to
As outlined earlier by utilizing a simple power analysis technique, it is possible for an observer to distinguish whether the “IF” branches or the “ELSE” branch is being executed. This however, does assume that the statements1 and statements2 consist of two identical sets of instructions that serve different purposes. Power or current consumption measurements on some smart cards can reveal which branch was taken. In some cases, some status flags on the chip may be set or reset. These flags may also be used for SPA.
Accordingly, there is a need for a system for reducing the risk of a successful power analysis attacks and which is particularly applicable to current hardware environments.
It is an object of this invention is to provide a method for minimizing power analysis attacks on processors.
In accordance with this invention there is provided a method of masking a conditional jump operation in a processor, wherein program execution jumps to one of two branches dependent on a first or second condition of a distinguishing value V relative to a reference value and wherein the reference is bounded by an upper limit Vmax and a lower limit Vmin, the method comprising the steps of:
determining the location of a conditional jump; and
inserting code thereat for executing instructions to change program execution to a respective one of the two branches by using said distinguishing value and a base address to compute a target address, wherein for each evaluation of said condition a different number of instructions are executed, thereby minimizing the effectiveness of a differential power attack.
In a further embodiment the distinguishing value is combined with a random value, thereby adding a random number of instructions on every condition evaluation.
These and other features of the preferred embodiments of the invention will become more apparent in the following detailed description in which reference is made to the appended drawings wherein:
Referring to
As may be seen in
As may be seen in block a the distinguishing value V is preserved while calling the subroutine, which in turn does not contain any conditional jumps. In this subroutine we change the return address of the subroutine (which resides on the stack) depending on whether V is below or above TH in such a way that, after returning from the subroutine, the program will continue execution in the desired branch.
An addressing mode known as extended addressing is used to determine the target address. With extended addressing the address at which the execution of the program has to continue is computed as the sum of the content of two registers. For example JMP @A+DPTR in the assembly language of the Intel 8051 family means that the address at which the program execution has to continue is computed by adding the content of the accumulator A and the data pointer DPTR. Other processors may support similar mechanisms for addressing. The code fragments shown in
The operation of the code fragments shown in
As mentioned earlier the THRESHOLD value is a random value within the known range of Vmin and Vmax. At line a1 the distinguishing value V is stored in the accumulator of the processor and the subroutine IRRITATE_1 is called at line a2. The return address from this subroutine will be line a3, which is automatically stored on the stack by the processor.
The KNOWN_DISPLACEMENT in line b1 is a constant value that specifies the beginning location of the second section 58 and indicates the address of line c9. Thus KNOWN_DISPLACEMENT-Vmax is the address of line c1, the beginning location of the first section 56.
In Block b the value of KNOWN_DISPLACEMENT is stored in a register at line b1. Next at line b2 the register is updated with the difference of KNOWN_DISPLACEMENT and THRESHOLD. This difference is moved to in DPTR at line b3. Thus, DPTR contains the address of one of the lines c1 through c8 in block c. For example for THRESHOLD=3 DPTR would point to line c6. Assume next V and thus the contents of the accumulator can vary from 0 (Vmin) to 7 (Vmax). Then since DPTR may vary from the address of c1 to c8, the address @A+DPTR computed at line b4 can vary from the address of line c6 through c12 as V varies from 0 to 7. Therefore, for V<3 the JMP L1 instructions in the first section will be executed and for V>=3 the JMP L2 instructions in the second section will be executed.
The labels L1 and L2 point to addresses located at lines c17 and c21 respectively. In lines c17 through c19 the return address of the subroutine IRRITATE_1 is retrieved and changed such that the program counter will point to line a3 after returning from the subroutine. In lines c21 through c23 the return address of the subroutine IRRITATE_1 is also retrieved and changed such that the program counter will point to line a4 after returning from the subroutine. The simple jump instructions at lines a3 and a4
It may be noted that the actual distinction between the two branches to be taken is decided at lines c18 and c22 where the retrieved subroutine return address is changed to the appropriate line in block a. In the present embodiment values of 0 and 1 have been chosen since the redirection jump instructions were located immediately after the call instruction to the subroutine IRRITATE_1, at lines a3 and a4 respectively. In other implementations different values with equal number of is in their binary presentation may be used so that the difference in the add operations at lines c18 and c22 is indistinguishable to an attacker. In this case an appropriate number of NOP's would be added to code block a in order to adjust the return addresses.
Furthermore, the jump instructions in lines a3 and a4, which redirect program flow to statements1 and statements2 respectively, should be placed at addresses with the same number of 1's in their binary representation. This would result in homogenous power consumption on the address bus while addressing these two different locations. The same precaution applies to the lines d1 and c1, the beginning location of statements1 and statements2 respectively. In addition, in line b2 special attention should be paid to the choice of values of THRESHOLD and KNOWN_DISPLACEMENT to avoid changes in flags in the processors status word while the SUB instruction is being executed.
Referring to
As may be seen in
The target destination address is comprised of two components, namely the distinguishing value V or a value derived from V and a random number MASKED_RANDOM, that are added at line g1. The beginning address of the first and second sections are chosen such that this target address is either in the range of lines h1 through h8 or h12 through h19. Since, the second component of the target address is a random number, a random number of dummy operations will be executed before the return address of the subroutine IRRITATE_2 is computed at lines h8 to h10 (or h19 to h21).
As in the previous embodiment the ADD values at lines h9 and h20 may be chosen to have the same hamming weight (number of 1's), with appropriate number of NOP instructions added to block f. In addition the jump instructions at lines f4 and f5 may be placed at addresses with the same number of one's. Additional JMP instructions may also be inserted between the lines h1 and h8 with a destination in the same segment.
This embodiment thus uses unconditional jumps instead of conditional jumps and adds a random number of dummy operations to the code. The former property is a countermeasure against SPA and the latter makes DPA attacks more difficult. In particular this embodiment adds a random mask or noise to the program execution path since the jump to a random address within a segment causes program execution of a random number of operations before one of the branches is executed. Therefore each time one of the branches is executed, the number of operations performed by the processor varies randomly making DPA attacks more difficult.
In the above embodiments, a subroutine is used to redirect program flow, however in
Referring to
For illustrative purposes, we will in the following discussion assume an elliptic curve (EC) scheme, where P is a point on the elliptic carve. The secret key d is normally combined with the point P to derive dP, the public key. However, the private key may also be used more frequently in various other cryptographic operations as described above. The cryptographic processor is generally initialized at manufacture time with the public key or secret value d. Initially, the value d may be divided into a number of parts, e.g. d=b10+b20.
In a first step the bi's are initialized to b1=b10 and b2=b20 such that d=b10+20. These initial values of b1 and b2 are stored instead of d. Alternatively the d value may also be stored if so desired, however in the case of a smart card where memory is limited this may not be desirable.
Typically when a computation using the value d is required, at a next step, a random number π is generated and values b1 and b2 are updated as follows:
b1=b1+πmod n
b2=b2−πmod n.
The updated values b1 and b2 are stored. Computation is then performed on the point P using the components b1 and b2 as follows:
dP mod n=b1P+b2P mod n
where, P is a point on the curve which is a predefined parameter of the system.
Thus assuming the value π is randomly generated for each session, then an attacker is unlikely to observe a predictable power signature.
In a typical application of the present invention a signature component s has the form:
s=æ+k(mod n)
where:
The sender sends to the recipient a message including m, s and r and the signature is verified by the computing the value R=(sP−eQ) which should correspond to R. If the computed values correspond then the signature is verified. Both the secret keys in the above example may be masked using the method of the present invention.
Specifically referring back to the above example, calculation of the product w may reveal some information on some platforms in some environments. To minimize this, the present invention is applied. The product æ is computed as æ=(b0+b1)e for (b0+b1)=a; where b0, b1 sum to a. The components b0, b1 are updated periodically as described above. This updating of the components can be made on every new signature operation.
In the above embodiments the secret value was divided into two components b0, b1 however this may be generalized to a plurality of components b0 . . . bn-1. Furthermore the above signature scheme is used for illustrative purposes and other schemes and operations may equally well be applied using the present invention.
Although the invention has been described with reference to certain specific embodiments, various modifications thereof will be apparent to those skilled in the art without departing from the spirit and scope of the invention as outlined in the claims appended hereto.
Number | Date | Country | Kind |
---|---|---|---|
2258338 | Jan 1999 | CA | national |
2259089 | Jan 1999 | CA | national |
This application is a continuation of U.S. patent application Ser. No. 11/483,553 filed on Jul. 11, 2006 which is a continuation of U.S. patent application Ser. No. 09/900,959 filed on Jul. 10, 2001, and now issued as U.S. Pat. No. 7,092,523, which is a continuation-in-part of PCT Application No. PCT/CA00/00021 filed on Jan. 11, 2000, which claims priority from Canadian Patent Application No. 2,258,338 filed on Jan. 11, 1999 and is also a continuation-in-part of PCT Application No. PCT/CA00/00030 filed on Jan. 14, 2000, which claims priority from Canadian Patent Application No. 2,259,089 filed on Jan. 15, 1999 all of which are hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
4519036 | Green | May 1985 | A |
5201000 | Matyas et al. | Apr 1993 | A |
5202995 | O'Brien | Apr 1993 | A |
5511198 | Hotta | Apr 1996 | A |
5524222 | Hervin | Jun 1996 | A |
5581616 | Crandall | Dec 1996 | A |
5627893 | Demytko | May 1997 | A |
5650948 | Gafter | Jul 1997 | A |
5675645 | Schwartz et al. | Oct 1997 | A |
5757918 | Hopkins | May 1998 | A |
5764772 | Kaufman et al. | Jun 1998 | A |
5768389 | Ishii | Jun 1998 | A |
5778069 | Thomlinson et al. | Jul 1998 | A |
5825880 | Sudia et al. | Oct 1998 | A |
5892899 | Aucsmith et al. | Apr 1999 | A |
5937066 | Gennaro et al. | Aug 1999 | A |
6233339 | Kawano et al. | May 2001 | B1 |
6279110 | Johnson et al. | Aug 2001 | B1 |
6298135 | Messerges et al. | Oct 2001 | B1 |
6304658 | Kocher et al. | Oct 2001 | B1 |
6334189 | Granger et al. | Dec 2001 | B1 |
6411715 | Liskov et al. | Jun 2002 | B1 |
6419159 | Odinak | Jul 2002 | B1 |
6446207 | Vanstone et al. | Sep 2002 | B1 |
6496929 | Lenstra | Dec 2002 | B2 |
6724894 | Singer | Apr 2004 | B1 |
6873706 | Miyazaki et al. | Mar 2005 | B1 |
7421074 | Jin et al. | Sep 2008 | B2 |
20010053220 | Kocher et al. | Dec 2001 | A1 |
20020166058 | Fueki | Nov 2002 | A1 |
20030044003 | Chari et al. | Mar 2003 | A1 |
20030048903 | Ito et al. | Mar 2003 | A1 |
20030061498 | Drexler et al. | Mar 2003 | A1 |
20080140995 | Fukazawa | Jun 2008 | A1 |
Number | Date | Country |
---|---|---|
2129203 | Jan 1996 | CA |
2316227 | Jul 1999 | CA |
383985 | Aug 1990 | EP |
2672402 | Aug 1992 | FR |
9-62596 | Jul 1997 | JP |
10-091531 | Apr 1998 | JP |
10-187546 | Jul 1998 | JP |
10-200520 | Jul 1998 | JP |
2008-146384 | Jun 2008 | JP |
9800771 | Jan 1998 | WO |
9852319 | Nov 1998 | WO |
9935782 | Jul 1999 | WO |
0042733 | Jul 2000 | WO |
0077973 | Dec 2000 | WO |
Entry |
---|
Office Action issued in Japanese Application No. 2012-134710 on Mar. 22, 2013; 5 pages. |
Certicom Corp. Response to Opponent's Third Writ of Jan. 24, 2012 re EP Application No. 03 018 048.3; dated Jun. 27, 2012; 8 pages. |
Office Action issued in Japanese Application No. 2010-5363 on Jun. 8, 2012; 9 pages. |
Anderson, John C.; “Response to NIST's Proposal”; Communications of the ACM; vol. 35, No. 7; Jul. 1992; pp. 41-54. |
Chae Hoon Lim et al., “A Key Recovery Attack on Discrete Log-Based Schemes Using a Prime Order Subgroup”; Lecture Notes in Computer Science, Springer-Varlag, Aug. 1997, vol. 1294, p. 249-263. |
Deitel, Harvey et al.; “C++ How to Program”; 1994; pp. 58-62. |
Huhnlein, Detlef; “Vergleichende Implementierung eines auf Elliptischen Kurven basierenden Signaaturverfahrens in affiner und projektiver Arithmetik”; Dissertation, eingereicht bei der Fachhochschule Wurzburg-Schweinfurt-Aschaffenburg; Nov. 14, 1995; abridged version; 18 pages. |
Ikeno Shinichi et al., “Gendai Angou-ron (Modern Cryptology)”, Syadan-hojin Denshi-Tsushin Gakkai, Sep. 1, 1986, 1st Ed., p. 105-108. |
Johnson, Don et al.; The Elliptic Curve Digital Signature Algorithm (ECDSA); Certicom Corporation White Paper; 2001; pp. 25-26. |
Kelsey, John et al.; “Side Channel Cryptanalysis of Produce Ciphers”; Journal of Computer Security; vol. 8, No. 2-3; 2000; pp. 141-158. |
Kocher et al.; “Differential Power Analysis”; Advances in Cryptology—CRYPTO '99; 19th International Annual Cryptology Conference; Aug. 1999; 10 pages. |
Kocher, Paul et al.; “Introduction to Differential Power Analysis and Related Attacks”; 1998; 5 pages. <http://www.cryptography.com/dpa/technical/index.html>. |
Kocher, Paul; “Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS and Other Systems”; downloaded Nov. 11, 1998; 11 pages. <http://www.cryptography.com/timing attack/paper.html>. |
Kocher, Paul C.; “Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS and Other Systems”; Lecture Notes in Computer Science; Advances in Cryptology—CRYPTO '96; Aug. 1996; vol. 1109; pp. 104-113. |
Koeune, Francis et al. “A Timing Attack Against Rijndael”; UCL Crypto Group Technical Report Series; CG-1999/1; Jun. 10, 1999. <http://eref.uqu.edu/sa/files/Others/Timing%20Attacks/A%20timing%20attack%against%20Rijndael. pdf>. |
Menezes A., et al.; “Elliptic Curve Cryptosystems and Their Implementation”; Journal of Cryptography; vol. 6, No. 4; 1993; pp. 209-224. |
Menezes, Alfred J. et al.; “Handbook of Applied Cryptography”; 1996; pp. 63-77, 451-454, 515-520. |
Schnorr, C.P.; “Efficient Signature Generation by Smart Cards”; Journal of Cryptology, 4; 1991; pp. 161-174. |
Wharton, John; “An Introduction to the IntelR MCS-s1 TM Single-Chip Microcomputer Family”; Intel Application Note AP-69; May 1980; 30 pages. |
Office Action issued in U.S. Appl. No. 09/900,959 on Jul. 28, 2005; 8 pages. |
Office Action issued in U.S. Appl. No. 09/900,959 on Dec. 20, 2005; 7 pages. |
Notice of Allowance issued in U.S. Appl. No. 09/900,959 on Mar. 27, 2006; 3 pages. |
Office Action issued in U.S. Appl. No. 11/483,553 on May 27, 2009; 7 pages. |
Notice of Allowance issued in U.S. Appl. No. 11/483,553 on Dec. 1, 2009; 4 pages. |
Notice of Allowance issued in U.S. Appl. No. 11/483,553 on Mar. 11, 2010; 4 pages. |
Notice of Allowance issued in U.S. Appl. No. 11/483,553 on Oct. 27, 2010; 4 pages. |
Notice of Allowance issued in U.S. Appl. No. 11/483,553 on May 12, 2011; 6 pages. |
Office Action issued in U.S. Appl. No. 11/483,553 on Aug. 17, 2011; 5 pages. |
Office Action issued in U.S. Appl. No. 11/483,553 on Dec. 16, 2011; 6 pages. |
Office Action issued in U.S. Appl. No. 11/483,553 on Feb. 15, 2012; 7 pages. |
Office Action issued in U.S. Appl. No. 11/483,553 on May 24, 2012; 6 pages. |
Advisory Action issued in U.S. Appl. No. 11/483,553 on Aug. 30, 2012; 3 pages. |
Office Action issued in U.S. Appl. No. 12/837,268 on Dec. 16, 2011; 5 pages. |
Office Action issued in U.S. Appl. No. 12/837,268 on Feb. 23, 2012; 6 pages. |
Office Action issued in U.S. Appl. No. 12/837,268 on May 16, 2012; 6 pages. |
Advisory Action issued in U.S. Appl. No. 12/837,268 on Aug. 23, 2012; 3 pages. |
Communication Pursuant to Article 96(2) EPC issued in European Application No. 00900195.9 on Jan. 24, 2002; 3 pages. |
Communication under Rule 51(4) EPC issued in European Application No. 00900195.9 on Feb. 12, 2003; 23 pages. |
European Search Report issued in European Application No. 03018048.3 on Feb. 17, 2006; 3 pages. |
Communication Pursuant to Article 96(2) EPC issued in European Application No. 03018048.3 on Dec. 28, 2006; 5 pages. |
Communication under Rule 71(3) EPC issued in European Application No. 03018048.3 on Jul. 18, 2008; 26 pages. |
Communication of Notices of Opposition issued in European Patent No. 1365308 on Nov. 6, 2009 (1 page) and Opposition filed in European Patent No. 1365308 by Christoph Mueller on Sep. 29, 2009 (49 pages); English translation of Notice of Opposition (27 pages). |
Reply to Opposition filed in European Patent No. 1365308 on May 17, 2010; 48 pages. |
Opponent Reply filed in European Patent No. 1365308 on Dec. 9, 2010; 28 pages; English translation of Opponent Reply filed in European Patent No. 1365308 on Dec. 9, 2010; 27 pages. |
Proprietor Reply filed in European Patent No. 1365308 on Jul. 8, 2011; 16 pages. |
Office Action issued in Japanese Application No. 2000-594019 on Apr. 16, 2010; 15 pages. |
Office Action issued in Japanese Application No. 2000-594019 on Sep. 29, 2010; 14 pages. |
Office Action issued in Japanese Application No. 2000-594019 on Aug. 30, 2011; 8 pages. |
Office Action issued in Japanese Application No. 2000-594019 on Feb. 15, 2012; 17 pages. |
International Search Report issued in International Application No. PCT/CA00/00021 on May 11, 2000; 2 pages. |
Written Opinion issued in International Application No. PCT/CA00/00021 on Nov. 6, 2000; 6 pages. |
International Preliminary Examination Report issued in International Application No. PCT/CA00/00021 on Apr. 19, 2001; 7 pages. |
Response to Written Submissions in EP Application No. 03 018 048.3 on Jan. 24, 2012; 32 pages. |
Summons to Attend Oral Proceedings and Preliminary Opinion issued in European Application No. 03018048.3 dated Nov. 2, 2012; 20 pages. |
Opponent's Opposition Submission filed in European Application No. 03018048.3 on Mar. 10, 2013; 1 page; English translation of Opponent's Opposition Submission; 1 page. |
Certicom Corp. Written Submission filed in European Application No. 03018048.3 on Mar. 15, 2013; 151 pages. |
Koji, Kusuda; “Current Condition and Problem Relating to Safety Estimation of Disclosed Key Secret Code Method”; Financial Research Center of Bank of Japan Discussion/Paper/Series (1997); Financial Research Center Bank of Japan [online]; Apr. 1, 1998; pp. 94-95 (cited in the Office Action issued in related Japanese Application No. 2012-134710 on Aug. 14, 2013). |
Office Action issued in Japanese Application No. 2012-134710 on Aug. 14, 2013; 10 pages. |
Number | Date | Country | |
---|---|---|---|
20130101112 A1 | Apr 2013 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11483553 | Jul 2006 | US |
Child | 13621021 | US | |
Parent | 09900959 | Jul 2001 | US |
Child | 11483553 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/CA00/00021 | Jan 2000 | US |
Child | 09900959 | US | |
Parent | PCT/CA00/00030 | Jan 2000 | US |
Child | PCT/CA00/00021 | US |