US20170244551A1 - Method of protecting a circuit against a side-channel analysis - Google Patents

Method of protecting a circuit against a side-channel analysis Download PDF

Info

Publication number
US20170244551A1
US20170244551A1 US15/439,553 US201715439553A US2017244551A1 US 20170244551 A1 US20170244551 A1 US 20170244551A1 US 201715439553 A US201715439553 A US 201715439553A US 2017244551 A1 US2017244551 A1 US 2017244551A1
Authority
US
United States
Prior art keywords
data
function
index
value
values
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.)
Abandoned
Application number
US15/439,553
Inventor
Hugues Thiebeauld De La Crouee
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.)
EshardSAS
Original Assignee
EshardSAS
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
Priority claimed from FR1651444A external-priority patent/FR3048096A1/en
Priority claimed from FR1651443A external-priority patent/FR3048086B1/en
Priority claimed from FR1651445A external-priority patent/FR3048097A1/en
Application filed by EshardSAS filed Critical EshardSAS
Assigned to ESHARD reassignment ESHARD ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CROUEE, HUGUES THIEBEAULD DE LA
Publication of US20170244551A1 publication Critical patent/US20170244551A1/en
Assigned to ESHARD reassignment ESHARD CORRECTIVE ASSIGNMENT TO CORRECT THE INVENTORS NAME PREVIOUSLY RECORDED ON REEL 042132 FRAME 0802. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF ASSIGNOR'S INTEREST. Assignors: THIEBEAULD DE LA CROUEE, HUGUES
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2215Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test error correction or detection circuits
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/2851Testing of integrated circuits [IC]
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31719Security aspects, e.g. preventing unauthorised access during test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • 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/72Protecting 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 in cryptographic circuits
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Definitions

  • the present disclosure relates to methods for protecting a circuit against a side channel analysis aiming to discover the value of a secret datum handled by the circuit, and in particular a secret key used by an encryption algorithm to transform a message.
  • the present disclosure also relates to devices implementing cryptographic algorithms, such as secure devices (smart card integrated circuits, secure elements, secured memory cards), mobile devices (mobile phones, smartphones, Internet of Things), home automation and automotive devices, and to hardware cryptographic components integrated onto mother boards of computers and other electronic and IT equipment (USB drives, TV decoders, game consoles, etc.), or the like.
  • secure devices smart card integrated circuits, secure elements, secured memory cards
  • mobile devices mobile phones, smartphones, Internet of Things
  • home automation and automotive devices and to hardware cryptographic components integrated onto mother boards of computers and other electronic and IT equipment (USB drives, TV decoders, game consoles, etc.), or the like.
  • the present disclosure also relates to software including an encryption operation, provided for being executed in a secure or non-secured environment.
  • the present disclosure also relates to circuits implementing a cryptographic algorithm such as a ciphering algorithm like DES (Data Encryption Standard) or Triple DES, AES (Advanced Encryption Standard), RSA (Rivest, Shamir and Adleman), DSA (Digital Signature Algorithm), or ECDSA (Elliptic Curve Digital Signature Algorithm).
  • a cryptographic algorithm such as DES (Data Encryption Standard) or Triple DES, AES (Advanced Encryption Standard), RSA (Rivest, Shamir and Adleman), DSA (Digital Signature Algorithm), or ECDSA (Elliptic Curve Digital Signature Algorithm).
  • a hashing function such as HMAC (Keyed-Hash Message Authentication Code).
  • Microcircuits implementing a cryptographic algorithm are equipped with a central processing unit (CPU). Some are equipped with circuits dedicated to cryptographic computing, for example a cryptographic coprocessor. These microcircuits include thousands of logic gates that switch differently according to the operations executed. These switches create short variations in current consumption, for example of a few nanoseconds that can be measured.
  • CMOS-type integrated circuits include logic gates that only consume current when they switch, i.e. when a logic node changes to 1 or to 0. Therefore, the current consumption depends on the data handled by the central unit and on its various peripherals: memory, data flowing on the data or address bus, cryptographic coprocessor, etc.
  • certain software programs may integrate a secret data in such a way that it is very difficult to determine it by reverse engineering.
  • Certain software programs may also receive a secret data from outside through a secure communication channel.
  • Such microcircuits may be subjected to so-called side channel analysis attacks based on observing their current consumption, or their magnetic or electromagnetic radiation, or any other information that can be observed while a cryptographic algorithm is executed. Such attacks aim to discover the secret data they use, in particular their encryption keys.
  • SPA Single Power Analysis
  • DPA Different Power Analysis
  • CPA Correlation Power Analysis
  • EMA Electronic Magnemetic Analysis
  • SPA analysis normally only requires the acquisition of a single current consumption trace. It aims to obtain information about the activity of the integrated circuit by observing the part of the consumption trace corresponding to a cryptographic computation, since the current trace varies according to the operations executed and the data handled.
  • Software may also undergo such side channel attacks during their execution by a circuit.
  • DPA and CPA analyses enable the key of an encryption algorithm to be found by acquiring numerous data or measurement traces and by statistically analyzing these traces to find the information searched for. They are based on the premise that the consumption of a CMOS-type integrated circuit varies when a bit changes from 0 to 1 in a register or on a bus, and does not vary when a bit remains equal to 0, remains equal to 1 or changes from 1 to 0 (discharge of the stray capacitance of the MOS transistor). Alternatively, it can be considered that the consumption of a CMOS-type integrated circuit varies when a bit changes from 0 to 1 or changes from 1 to 0 and does not vary when a bit remains equal to 0 or remains equal to 1.
  • CPA analysis is based on a linear current consumption model and involves computing a correlation coefficient between, firstly, the consumption points measured that form the captured consumption traces and, secondly, an estimated consumption value, computed from the linear consumption model and a hypothesis on the variable to be discovered that is handled by the microcircuit and on the value of the encryption key.
  • Electromagnetic analysis is based on the principle that a microcircuit may leak information in the form of near or far field electromagnetic radiation. Given that transistors emit electromagnetic signals when their state changes, these signals can be treated like the current consumption variation signals by an analysis such as one or other of the SPA, DPA and CPA analyses.
  • counter-measures are generally provided.
  • One widespread type of counter-measure aims to avoid such a time alignment.
  • these type of counter-measures introduce variations in the clock frequency supplied to the calculation circuits, or introduce dummy clock cycles or dummy operations.
  • Another type of counter-measure involves adapting a given algorithm to be protected to render the data handled by the circuit independent of their actual values.
  • Certain counter-measures of this type that can be referred to as “masking-type counter-measures”—use a random mask (binary number) that is combined with another data to be protected such as the key and/or the message during the execution of the ciphering method.
  • This type of counter-measure is effective but requires the algorithm to be modified, and thus requires a coprocessor specially provided for its implementation in the case of execution by a coprocessor, or a more complex program in the case of execution by the central processing unit of the microcircuit or a programmed coprocessor.
  • a counter-measure by multiple executions can be implemented with a conventional coprocessor not comprising any counter-measure means. It merely involves executing the ciphering method several times by means of false keys or false messages.
  • a counter-measure program is provided for example that controls the ciphering program or the coprocessor, and makes it execute the ciphering method several times with the false keys, in a random order, such that the execution of the ciphering method with the right key (i.e. the authentic key) is “hidden” in a set of dummy executions.
  • This counter-measure, by multiple executions offers the advantage that it can be implemented with a conventional coprocessor not including any counter-measure means.
  • qualification and/or certification tests are planned before the circuit is marketed, where these tests can include tests of the robustness of the integrated circuit to side channel analyses aiming to discover the secret data handled by the integrated circuit. There are also tests enabling the resistance of a software program to side channel attacks to be assessed.
  • Some embodiments relate to a method for executing by a circuit an operation receiving an input data and providing an output data, the method comprising: selecting a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and providing the first data set as an intermediate result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
  • the respective transformed data resulting from the application of the surjective function to each data set forming one of the substitution elements in the substitution table can include a same number of occurrences of all the possible data susceptible of being provided by the surjective function.
  • the surjective function can be chosen according to a data leakage model of the circuit.
  • the surjective function can be one of the following functions: an identity function, an affine function providing a resultant value that could be reduced to a value corresponding to a Hamming weight, and a function providing the Hamming weight of the value to which the function is applied.
  • the operation applied to the secret data and to the input data can include at least one of the following operations: a symmetrical or asymmetrical encryption or decryption operation, a signature operation, a modular or non-modular multiplication by the secret data, a logic Exclusive OR operation with a secret data, a modular exponentiation operation using a secret data as an exponent, and a modular reduction operation using a secret data as a modulus.
  • Some embodiments may also relate to a circuit configured to implement the methods described above, and can include a processor.
  • the circuit can include a coprocessor.
  • Some embodiments may also relate to a device including a circuit like the one described above, arranged on a medium.
  • Some embodiments may also relate to a computer program product directly loadable into an internal memory of a computer and including code portions which, when executed by a computer, can cause the computer to carry out the steps of the methods described above.
  • FIG. 1 schematically illustrates a conventional architecture of a secure circuit
  • FIG. 2 schematically illustrates an example of an integrated circuit testing system
  • FIG. 3 illustrates traces of a signal acquired during the execution of an encryption operation by a secure circuit
  • FIG. 4 illustrates steps of a method for testing a secure circuit, according to one embodiment
  • FIG. 5 illustrates, in graph form, an example of a surjective function
  • FIG. 6 schematically illustrates a table built according to one embodiment, to perform statistical processing
  • FIG. 7 illustrates a method for testing a secure circuit, according to another embodiment
  • FIGS. 8 and 9 illustrate a method for statistically analyzing a value set obtained by a test method, according to various embodiments.
  • FIGS. 10 and 11 illustrate, in the form of curves, result tables provided by the analysis methods of FIGS. 8 and 9 ,
  • FIGS. 12 and 13 illustrate an encryption operation, including counter-measure steps, according to various embodiments.
  • FIG. 14 illustrates a substitution table, transformed according to a counter-measure method, according to one embodiment
  • FIG. 15 illustrates a secure circuit, according to one embodiment.
  • FIG. 1 illustrates, as an example, a secure integrated circuit CT, for example arranged on a portable medium HD such as a plastic card or any other medium, or in a terminal such as a mobile terminal, a smartphone, an IoT device or the like.
  • the integrated circuit of this example includes a microprocessor PRC, an input/output circuit 10 C, memories M 1 , M 2 , M 3 coupled to the microprocessor by a data and address bus and, optionally, a cryptographic computation coprocessor CP 1 or arithmetic accelerator, and a random number generator RGN.
  • the memory M 1 is a RAM-type (“Random Access Memory”) memory containing volatile application data.
  • the memory M 2 is a non-volatile memory, for example an EEPROM or Flash memory, containing non-volatile data and application programs.
  • the memory M 3 is a read-only memory (or ROM memory) containing the operating system of the microprocessor.
  • the communication interface circuit 10 C may be of contact type, for example according to the ISO/IEC 7816 standard, of contactless type with inductive coupling, for example according to the ISO/IEC 14443A/B or ISO/IEC 13693 standard, of contactless type by electrical coupling (UHF interface circuit), or of both contact and contactless type.
  • the interface circuit 10 C may also be coupled through a specific interface, to another circuit such as an NFC (Near-Field Communications) controller, or a main circuit of a terminal such as a mobile terminal or a connected object.
  • NFC Near-Field Communications
  • the integrated circuit CT may be configured to execute operations of ciphering, deciphering or signing of messages that are sent to it, by means of an encryption function.
  • This encryption function may be executed by the processor PRC of the circuit CT or partially or totally carried out by the processor PRC to the coprocessor CP 1 .
  • FIG. 2 illustrates an example of an integrated circuit testing system provided to implement the test method, according to one embodiment. It will be assumed, as an example, that the testing system is configured to test the integrated circuit CT in FIG. 1 .
  • the testing system of FIG. 2 includes a measuring probe PB coupled to a measuring device MD such as a digital oscilloscope, to acquire traces relating to the activity of the circuit, such as traces of current consumption or of electromagnetic signal variation, and a computing device, such as a personal computer PC.
  • the computer PC is coupled to the measuring device and implements a test program.
  • This test program includes a communication interface and a program for communicating with the integrated circuit and for sending it messages, a signal processing program and a program for implementing computation steps of a method, such as the methods described herein. Steps, as used herein, can refer to operations, functions, processes, etc.
  • the communication interface may include a contactless card reader.
  • the probe PB may be a current probe (for example, a resistor placed on the supply terminal Vcc of the integrated circuit), or an electromagnetic probe coupled to the measuring device by a signal amplifier AMP. Alternatively, a current probe may be combined with an electromagnetic probe.
  • a current probe may be combined with an electromagnetic probe.
  • the current probe can be replaced with an inductive probe that measures the absorption, by the integrated circuit, of the magnetic field emitted by the reader.
  • an inductive probe for example an antenna coil, can itself be combined with an electromagnetic field probe placed near the circuit zones to be studied.
  • the phrase “current consumption”, used for the sake of simplifying the language, can refer to any measurable physical quantity of which the variations over time are representative of the switches of binary data inside the integrated circuit or inside the studied part of the integrated circuit, the physical quantity being able to be measured at the terminals of the integrated circuit or near the studied part of the integrated circuit.
  • the physical quantity is sampled with a sampling frequency sufficiently high to collect several points per data period of interest, which, in practice can result in traces containing from 10 to a few hundred thousand points per trace, but it may be considered to collect up to several million values, or even more per trace.
  • the present disclosure also relates to a method for testing a software program or an application.
  • the software program may be executed directly by the testing system or by an emulation program executed by the testing system.
  • the analyzed traces may thus, for example, be a series of values transmitted to a memory when accessing a memory or data handled in registers of the circuit, or can be data transmitted to a communication interface of the circuit, where these transmissions can be controlled by the tested software program.
  • test method can be based on a detailed review of traces of variation over time of signals or digital values, representative of the operation of the circuit to be tested while it executes an operation applied to a data to be discovered, called in the following “secret data”.
  • FIG. 3 illustrates traces C0, C1, . . . Cix of values over time that can be acquired by a testing system. Each of these traces can be obtained by causing an operation to be executed by the circuit or the software program to be tested.
  • the operations corresponding to the traces C0, C1, . . . Cix are generally all different. These operations are different for example because they involve applying a same function to distinct known input data, for example messages to be ciphered, deciphered or signed or a signature to be checked, or a HMAC (keyed-Hash Message Authentication Code) to be computed.
  • the known data may be output data of the function, or a part of the input and output data of this function, rather than input data thereof.
  • the function may be any function applied to a same secret data SD, and to an input data M, such as a symmetrical or asymmetrical ciphering or deciphering operation, or even a signature operation, or merely a modular or non-modular multiplication, by the secret data (M ⁇ SD), a logic XOR function (Exclusive OR) with the secret data (M XOR SD), a modular exponentiation function, the secret data being used as exponent (MSD mod n, n being known), or a modular reduction function, the secret data being used as the modulus (M mod SD).
  • Another example of a function involves processing the result of an XOR operation with a substitution table (SBOX[M XOR SD], SBOX being the substitution table), as in the case of the DES and AES cryptographic algorithms. More generally, this function must enable a part of the value resulting from the operation to be computed based on a part of the secret data and an input data.
  • the traces C0, C1, Ci, Cix respectively correspond to the input (or output) data M[0], M[1], . . . M[i], . . . M[ix].
  • Each of the traces Ci can be formed of samples acquired from a same signal measured on a same circuit under test, or can include samples from different signals, captured when the circuit under test manipulates the data M[i].
  • FIG. 4 illustrates steps S 1 to S 19 (operations, functions, processes, etc.) of processing the values collected by a testing system during the execution of an encryption operation OPRK assumed to be known, applied to a secret data to be discovered, and to input data M[0] . . . M[ix] also known.
  • the aim of this test is to determine whether the value of the secret data leaks into (e.g., can be determined from) the collected values forming the traces of FIG. 3 , for example.
  • the processing unit PC first executes steps S 1 to S 8 .
  • step S 1 the processing unit PC of the testing system sets an index i of a loop on the input data M[0] . . . M[ix] to 0, as well as a table CH.
  • step S 2 the processing unit PC activates the execution of an operation OPRK by the circuit MCT or the software program to be tested, this operation receiving the data M[i], the secret data being provided to the operation by the circuit MCT or the software program.
  • step S 3 the processing unit PC collects the values constituting the trace Ci.
  • step S 4 a part ECi of the values of the trace Ci is selected, with only this part being processed in the following processing steps ( FIG. 3 ). In the example in FIG.
  • this part is delimited by the values of the trace Ci corresponding to the indices k and kx, for the sake of simplicity.
  • the indices k and kx may vary from one trace Ci to the next.
  • the values thus selected in each trace are not necessarily consecutive, and the number of values in each part ECi, may be different from one trace Ci to the next, in contrast with prior side-channel analyses. Hence, it may be decided, for example, to extract only maximum or minimum local values from each trace.
  • the extracted part ECi may be the entire trace Ci. In the following processing, the data thus extracted are assumed to contain a piece of information concerning the secret data that is being searched for.
  • step S 5 the processing unit PC sets a loop index j, as well as a table HT to 0.
  • step S 6 the processing unit PC applies a surjective function F1 to the value ECi[j] of index j of the selected trace part ECi and increments by one (1) a value in the table HT, designated by an index equal to the result provided by the function F1.
  • step S 7 the index j is incremented by one (1).
  • step S 8 the index j is compared with its maximum value to determine whether all the values of the set ECi have been processed. Once all the values of the set ECi have been processed, the processing unit PC executes the steps S 9 to S 14 , otherwise it executes the steps S 6 to S 8 again.
  • the values of the set ECi loaded in the table HT have the form of a histogram specifying the occurrence number of each possible value returned by the function F1, such that the time feature related to the values of the set ECi is not included in the table HT: the content of the table HT does not enable the order in which the values of the set have been collected to be determined.
  • FIG. 5 represents an example of a table HT in the form of a graph occurrence numbers (in the y axis) of values (in the x axis) computed using the function F1.
  • the function F1 returns the Hamming weight computed from 8-bit encoded values.
  • step S 9 the processing unit PC sets index g to 0.
  • step S 10 the processing unit PC applies an operation OPR to the data M[i] and to a part of the secret data SD to be determined, set to be equal to the index g.
  • the result provided by the operation OPR is processed by a surjective function F2 that supplies a value VL.
  • step S 11 the processing unit PC sets index I to 0.
  • step S 12 the processing unit PC increments a value stored in the 3-dimensional table CH, at a location designated by the indices g, VL and I, by the value HT[I] at the index I in the table HT corresponding to the data M[i].
  • FIG. 6 represents an example of a table CH in which each location CH[g,VL] designated by the indices g and VL contains a table obtained by combining several tables HT according to the value VL obtained in step S 11 .
  • step S 13 the index I is incremented by one (1).
  • step S 14 the index I is compared with its maximum value Ix considering the number of possible distinct values provided by the function F1. If the index I is lower than or equal to its maximum value Ix, steps S 12 to S 14 are executed again, otherwise steps S 15 and S 16 are executed.
  • step S 15 the processing unit PC increments the index g by one (1).
  • step S 16 the processing unit PC compares the index g with its maximum value gx, considering the number of possible distinct values for the considered part of the secret data. If the index g is lower than or equal to the maximum value gx, a new iteration from S 10 to S 16 is executed, otherwise steps S 17 and S 18 are executed.
  • step S 17 the processing unit PC increments the index i by one (1) to process another trace Ci.
  • step S 18 the processing unit PC compares the index i with its maximum value ix corresponding to the number of traces Ci generated.
  • step S 19 each table of cumulative totals contained in the table CH at the location [g,VL] contains the following values:
  • step S 19 the processing unit PC performs a statistical analysis of the table CH to determine whether a value of the index g corresponds to the part of the secret data being searched for. For this purpose, it is considered that the information resulting from a leakage of the secret data have been accumulated in the locations of a row g of the table CH, whereas the information independent from the secret data is distributed randomly or uniformly in the table CH. As a result, if a row of index g of the table CH contains higher values than in the rest of this table, the value of the index g at this row of the table CH corresponds to the value of the part of the secret data SD searched for. In this case, it can be considered that the secret data SD has leaked into the collected data forming the traces Ci.
  • the functions F1 and F2 can be chosen so as to correspond to the leakage pattern of the circuit or the software program to be tested. Therefore, the functions F1 and F2 may be the same or different from each other, and may be chosen to maximize (increase, etc.) the probability of discovering a secret data manipulated by the circuit.
  • the functions F1 and F2 may be one of the following functions:
  • the part of the secret data being searched for by executing steps S 1 to S 19 may, for example, be defined on 8 or 16 bits.
  • the part of the secret data being searched for may also be defined on wider words such as on 16, 32 or 64 bits.
  • Another part of the secret data SD may be determined by executing steps S 9 to S 19 using the values of the previously determined parts of the secret data, and by forcing another part of the secret data to the different possible values of the index g.
  • the same parts ECi of the traces Ci or other parts of these traces can be extracted in step S 4 .
  • the value sets forming the traces Ci may have been collected (steps S 2 and S 3 ) before executing the other steps in FIG. 4 .
  • a table HT may have been constituted for each of the traces Ci, before executing steps S 9 to S 19 .
  • the operation OPR/OPRK applied to the secret data SD and to the input data M[i] may be one or a combination of the following operations:
  • this operation must enable a part of the final value of the operation to be computed based solely on a part of the secret data and an input data.
  • step S 20 which is carried out before step S 9 , index i, a one-dimensional table MHT and a two-dimensional table CPT are set to 0.
  • step S 9 a two-dimensional table HT[0 . . . ix,I] has been previously filled in to contain all the tables generated in step S 6 for all the traces Ci.
  • Step S 21 is inserted into the loop (between steps S 12 and S 14 ) controlled by the index I whereby it is possible to select one of the values provided by the function F1, for example after step S 12 .
  • the processing unit PC accumulates each value HT[i,I] in a table of cumulative totals MHT at a location designated by the index I. In this way, at the end of the processing, the table MHT will contain the sum of all the values HT[i,I] of index i obtained for each of the traces Ci.
  • Step S 22 is executed once upon each iteration of the loop controlled by the index i, where it is possible to select one of the traces Ci, for example after step S 14 .
  • Step S 22 enables the number of tables HT[i,I] accumulated in each location CH[g,VL] of the table CH to be counted. The result of this counting is stored in a table CPT.
  • FIG. 8 illustrates steps (operations, functions, processes, etc.) S 31 to S 43 of an example of statistical processing of the table CH to attempt to determine the value of the part of the secret data SD searched for.
  • Steps S 31 to S 37 are successively executed.
  • the index VL is set to 0 and all the locations of a table TT are set to 1.
  • the index g and all the locations of a table IT are set to 0.
  • the index I is set to 0.
  • a variable T receives the value CH[g,VL,I] contained in the table CH, selected by the indices g, VL, and I, this value being divided by the counting value located at the location CPT[g,VL] in the table CPT.
  • the value IT[g] at the location g in the table IT is incremented by the squared result of the division by the total number ix of traces Ci, of the difference between the value of the variable T and the value MHT[I] stored in the table MHT, designated by index I.
  • the index I is incremented by one (1).
  • step S 37 the index I is compared with its maximum value Ix. If the index I has reached its maximum value Ix, steps S 38 to S 40 are executed, otherwise a new iteration from step S 34 is executed.
  • step S 38 the value TT[g] designated by the index g in the table TT is updated by being multiplied by the value IT[g] computed in steps S 35 to S 37 , executed Ix times.
  • step S 39 the index g is incremented by one (1).
  • step S 40 the index g is compared with its maximum value gx. If the index g is greater than its maximum value gx, steps S 41 and S 42 are executed, otherwise a new iteration is executed from step S 33 .
  • step S 41 the index VL is incremented by one (1).
  • step S 42 the index VL is compared with its maximum value VLx. If the index VL is greater than its maximum value VLx, step S 43 is executed, otherwise a new iteration from step S 32 is executed.
  • step S 43 the table TT is returned as result of the statistical analysis.
  • the tables IT and TT contain the following values:
  • the values of the table IT can be added rather than being multiplied in step S 38 corresponding to the equation (3).
  • the implementation of a multiplication operation merely enables the differences between the values of the table TT to be increased, and thus the highest value corresponding to the part of the secret data being searched for to be better highlighted. It is also possible to consider applying the logarithm function to the values of the table IT and performing an additive accumulation of the logarithm values obtained, in the table TT. When the values of the tables IT are added, they can be weighted as follows:
  • FIG. 9 illustrates steps (operations, functions, processes, etc.) S 51 to S 67 of another example of statistical processing of the table CH to attempt to determine the value of a part of the secret data SD being searched for. This processing is based on the Shannon entropy function.
  • Steps S 51 to S 56 are successively executed.
  • the index g is set to 0 and all the locations of the table TT are set to 0.
  • the index VL is set to 0.
  • the index I and a variable SXY are set to 0.
  • the variable SXY is incremented by the value CH[g,VL,I] selected in the table CH, by the indices g, VL, and I.
  • step S 55 the index I is incremented by one (1).
  • step S 56 the index I is compared with its maximum value Ix. If the index I has reached its maximum value Ix, steps S 57 to S 61 are executed, otherwise a new iteration from step S 54 to step S 56 is executed.
  • step S 57 the index I and a variable PXY are set to 0.
  • step S 58 a variable VXY receives the value CH[g,VL,I] selected in the table CH by the indices g, VL, and I, this value being divided by the variable SYX computed by iterations from step S 54 to S 56 .
  • step S 59 the variable PXY is incremented by the product of the variable VXY by the logarithm (for example in base 2) of the variable VXY.
  • step S 60 the index I is incremented by one (1).
  • step S 61 the index I is compared with its maximum value Ix. If the index I has reached its maximum value Ix, steps S 62 to S 64 are executed, otherwise a new iteration from step S 58 to step S 61 is executed.
  • step S 62 the value TT[g] designated by the index g in the table TT is updated by subtracting from it the product of the value CPT[g,VL] divided by the number ix of traces Ci, by the variable PXY, the value CPT[g,VL] being designated by the indices g and VL in the table CPT filled in in step S 22 .
  • step S 63 the index VL is incremented by one (1).
  • step S 64 the index VL is compared with its maximum value VLx. If the index VL is greater than its maximum value VLx, steps S 65 and S 66 are executed, otherwise a new iteration from step S 53 is executed.
  • step S 65 the index g is incremented by one (1).
  • step S 66 the index g is compared with its maximum value gx. If the index g is greater than its maximum value gx, step S 67 is executed, otherwise a new iteration from step S 52 is executed. In step S 67 , the table TT is returned as result of the statistical analysis.
  • the table TT contains the following values:
  • each value of the index g represents a possible value of the part of the key searched for. If the secret data SD leaked when processing the operation OPRK, a location of the table TT contains a much higher value than the other values stored in this table. The result is that the part of the secret data SD searched for is equal to the index g of the highest value in the table TT.
  • FIGS. 10 and 11 illustrate, in the form of curves CC 1 , CC 2 , an example of content of the table TT as a function of the index g.
  • the curve CC 1 was obtained by executing the steps in FIG. 8
  • the curve CC 2 was obtained by executing the steps in FIG. 9 .
  • the index g has a length of one byte (thus varying from 0 to 255), and curves CC 1 and CC 2 have been obtained from a number of traces Ci of the order of 500,000.
  • the value of the peak in the curve CC 1 is greater than about thirty times the other values of the table TT.
  • the value of the peak is greater than three times the other values of the table TT.
  • circuits such as integrated circuits, as described herein can successfully pass known qualification or certification procedures
  • designers of these circuits provide counter-measures the most conventional of which involve introducing a time variable.
  • This arrangement can be made by causing the duration of the clock cycle supplied to the circuit to vary randomly, or by introducing dummy processing cycles or operations at times chosen randomly.
  • the calculation of the values in the tables HT enables the time aspect to be removed from the analyzed values, and avoids having to synchronize the different traces of the analyzed values.
  • the test method previously described may enable all or part of the secret data to be determined.
  • Some embodiments can implement counter-measures that enable a circuit to be considered capable of being used during a qualification or certification test including the test method previously described.
  • a counter-measure involves executing the operation to be protected for all the data of a set of input data including, only once. all the possible data susceptible of being processed by the operation and including the data to be processed by the operation.
  • Another counter-measure involves providing as result of the operation a set of output data comprising only once all the possible data susceptible of being provided by the operation.
  • the set of output data can be reduced to a subset of data whereof the transformed data resulting from the application of a chosen surjective function include, only once, all the data susceptible of being obtained by this function, including the output data expected from the operation, corresponding to the input data.
  • the chosen surjective function may correspond to the leakage pattern of the circuit or the software program to be protected.
  • FIG. 12 illustrates steps (operations, functions, processes, etc.) S 71 to S 77 of a method for computing an encryption operation, which involves a secret data SD, according to one embodiment.
  • This method is configured to successfully pass the test described above.
  • Steps S 71 to S 76 are executed successively.
  • a variable RN receives a random value between 0 and a maximum value nx determined according to the number of bits used to encode this variable in binary code. Therefore, if the variable RN is encoded on 8 bits, nx is equal to 255.
  • an index n is set to 0.
  • a variable IRN is computed by combining the index n with the variable RN by an Exclusive OR operation.
  • step S 74 an output data RS[n] designated by the index n in a result table RS is computed by applying the encryption operation OPR as defined above, to an input data M, and to the secret data SD.
  • the secret data SD is here combined for example by an XOR operation (Exclusive OR) with the variable IRN:
  • variable IRN may be combined with the input data M:
  • step S 75 the index n is incremented by one (1).
  • step S 76 the index n is compared with the maximum value nx, and if it is lower than or equal to the value maximum nx, a new iteration of the calculation from step S 73 to S 76 is executed.
  • step S 77 is executed.
  • step S 77 the output data being searched for, contained in the table RS at an index n1 is returned, this index n1 having the value of the index n of the iteration where the variable IRN was on 0, if the combination operation with the value IRN in step S 74 is a XOR operation.
  • the result of the Exclusive OR operation applied to a data D and 0 does not transform the data D.
  • the output data being searched for in the table RS can be extracted, in step S 77 , after other operations. In this case, all the data stored in the table RS is processed by such other operations. Therefore, in the case of the AES algorithm, for example, the operation OPR is, for example, the XOR operation combining an input data with a first key used in a first round of the algorithm.
  • the following (subsequent, etc.) operations of the AES algorithm can be executed on all the data stored in the table RS, and the successive results of these operations stored in the table RS. Therefore, the operations of shifting rows and mixing columns can be applied to each element of the table RS.
  • the output data being searched for can be extracted from the result table RS at a subsequent step in the processing considered less sensitive to attacks.
  • the input data M and the secret data SD are encoded by binary words having a same number of bits. Each value given to the variable IRN must also have the same number of bits as the data M and SD. If the data M and SD are encoded by 8-bit words, the variable IRN is also encoded on 8 bits. The number of iterations nx that must be executed between steps S 73 to S 76 is equal to 2x, x being the size in number of bits of the data M and SD. If the data M and SD are encoded by words of 16, 32 or 64 bits, it may be desirable to limit this number of iterations.
  • variable IRN may be encoded on 8 bits, and the operations of combining the secret data SD or the input data with the variable IRN can be performed by concatenating the variable IRN with itself several times to form a word of the size of the secret data SD or of the input data M. Therefore, in the event that the data M and SD are encoded on 16 bits, the variable IRN on 8 bits is concatenated with itself to obtain a data on 16 bits.
  • the operation executed in step S 73 then becomes:
  • step S 73 the operation executed in step S 73 then becomes:
  • the values of the variable IRN can be chosen in such a way that their transformed values resulting from the application of a chosen surjective function F3 include, only once, all the possible values susceptible of being obtained by this function.
  • the function F3 may be the identity function, as is the case in the method of FIG. 12 , or a function of which the image set is smaller, as in the method of FIG. 13 .
  • FIG. 13 illustrates steps (operations, functions, processes, etc.) S 80 to S 92 of a method for computing an encryption operation, which involves a secret data SD, according to another embodiment. This method is configured to successfully pass the tests previously described.
  • Steps S 80 to S 54 are executed successively.
  • Step S 80 is identical to step S 71 .
  • step S 81 an index n is set to 1 and an index m is set to 0.
  • step S 82 the value at the index 0 of a table RS1 receives the result of the operation OPR applied to the input data M and to the secret data SD, this result being combined with the random data RN by the Exclusive OR operation.
  • Step S 83 is identical to step S 73 .
  • Step S 84 is identical to step S 74 except that the result of the computation performed in this step is stored by a variable RES.
  • the data IRN computed in step S 83 is combined by an Exclusive OR operation with the result provided by the operation OPR.
  • step S 85 the transformed value of the variable RES resulting from the application of the function F3 is compared with the transformed values by the function F3 of the other data stored in the table RS at the locations designated by indices lower than or equal to the index m. If the transformed value F3(RES) of variable RES is different from such other data, the index m is incremented by one (1) and the variable RES is stored in the table RS1 at the location designated by the index m, in steps S 86 and S 87 .
  • index n2 such that transformed value F3(RES) of variable RES equals to the transformed value F3(RS1[n2]) of the value RS1[n2] in the table RS at index n2.
  • step S 90 where the index n is incremented by one (1), is performed after steps S 87 , S 89 and S 88 (when the index n does not correspond to index n1).
  • step S 91 the index n is compared with the value nx, and if it is lower than or equal to the value nx, a new iteration of the computation from step S 83 to S 91 is executed. Otherwise, step S 92 is executed.
  • Step S 92 is identical to step S 77 , except that it is applied to the table RS1.
  • the function F3 may be chosen so as to correspond to the leakage pattern of the circuit or of the software program to be protected. Therefore, the function F3 may, for example, be the Hamming function.
  • Another counter-measure can be implemented when the operation to be protected includes an operation of reading a lookup table, at an index corresponding to the input data of the operation and to the secret data to be protected or to a data from which the secret data can be determined.
  • the entire lookup table is read and for example loaded into a set of resulting data, such as the table RS.
  • the set of data stored in the table RS can be applied as an input of a next operation, each data of the table being transformed by this operation.
  • the circuit can extract the output data at any time.
  • the lookup table is transformed into a new table in which each location contains all the possible values susceptible of being contained in the lookup table. Therefore, FIG. 14 represents a lookup table T1, from which it is possible to determine the result of an encryption operation according to input values varying from 0 to p.
  • all the values T2[i,k] when k varies from 0 to r, include all the possible values of the values susceptible of being stored in the table T1.
  • the maximum value r of the index k is equal to 255 and all the values T2[i,k], when the index i is secured, and the index k varies from 0 to r, are different. Therefore, all the tables T2[i,j] designated by the index i contain the same values, but are ordered differently.
  • the data in the table may be defined in the following manner:
  • the execution of the operation to be protected thus involves loading in a result table (the table RS for example), all the values of the table T2 designated by the index i defined from the input data (and possibly the secret data):
  • step S 77 or S 90 can then be executed to obtain the output data being searched for in the result table RS.
  • the column T2[0 . . . p,k0] may contain table T1.
  • the table element T2[0,k0] may be equal to the element T1[0]
  • the element T2[1,k0+1] may be equal to the element T1[1]
  • the shift pitch from one row to the next of the table T2 is one, it can be set to any other value between 1 and r ⁇ 2.
  • each table element T2[i] selected by the index i may contain only values including the expected output data, such that their transformed values resulting from the application of the chosen surjective function F3 are all different and include all the possible values susceptible of being obtained by this function.
  • This arrangement enables the size of the table T2 to be reduced, without reducing the robustness of the method, if the function F3 reproduces the leakage pattern of the secret data.
  • table T1 has two dimensions
  • table T2 has three dimensions, each element of the table T1 being replaced with a one-dimensional table containing all the possible values of the elements of table T1.
  • FIG. 15 illustrates an integrated circuit CT 1 arranged on a portable medium HD such as a plastic card, and equipped with a counter-measure according to one embodiment.
  • the integrated circuit includes the same units as the integrated circuit CT described above in connection with FIG. 1 , and differs from the latter in that the coprocessor CP 1 is replaced with a coprocessor CP 2 implementing at least one of the counter-measures described above. Therefore, according to one embodiment, the coprocessor CP 2 is configured to provide a table of resulting values, rather than a single result of an encryption operation, including only values such that their respective transformed values resulting from the application of a chosen surjective function are all different and include all the possible values susceptible of being obtained by the surjective function, including the expected result of the encryption operation.
  • the processor PRC is matched with the coprocessor CP 2 so as to know the location of the result of the encryption operation in the table of resulting values provided by the coprocessor CP 2 .
  • the coprocessor CP 2 may also be configured to execute a part of the encryption operation.
  • the processor PRC is configured to produce the table of resulting values comprising only values such that their respective transformed values resulting from the application of a chosen surjective function are all different and include all the possible values susceptible of being obtained by the surjective function, including the result of the encryption operation.
  • a method for execution, by a circuit, an operation receiving an input data and providing an output data can include: selecting a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and providing the first data set as an intermediary result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
  • Implementations can include one or more of the following features.
  • the respective transformed data transformed by the surjective function of the data of each data set forming one of the substitution elements in the substitution table can include a same number of occurrences of all possible data that can be provided by the surjective function.
  • the surjective function can be chosen as a function of a data leakage model of the circuit.
  • the surjective function can be one of the following functions: an identity function, a function providing a resultant value which is then reduced to a value corresponding to a Hamming weight, and a function providing a Hamming weight of the value to which the function is applied.
  • the operation can include at least one of: a symmetrical or asymmetrical encryption or decryption operation, a signature operation, a modular or non-modular multiplication by a secret data, a logical operation Exclusive OR with a secret data, a modular exponentiation operation using a secret data as an exponent, and a modular reduction operation, using a secret data as a modulus.
  • a circuit can include a processor and/or a coprocessor that is/are configured to perform an operation receiving an input data and providing an output data, and to: select a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and provide the first data set as an intermediary result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
  • Implementations can include one or more of the following features.
  • the respective transformed data transformed by the surjective function of the data of each data set forming one of the substitution elements in the substitution table can include a same number of occurrences of all possible data that can be provided by the surjective function.
  • the surjective function can be chosen as a function of a data leakage model of the circuit.
  • the surjective function can be one of the following functions: an identity function, a function providing a resultant value which is then reduced to a value corresponding to a Hamming weight, and a function providing a Hamming weight of the value to which the function is applied.
  • the operation can include at least one of: a symmetrical or asymmetrical encryption or decryption operation, a signature operation, a modular or non-modular multiplication by a secret data, a logical operation Exclusive OR with a secret data, a modular exponentiation operation using a secret data as an exponent, and a modular reduction operation, using a secret data as a modulus.
  • a device can include a circuit arranged on a support, the circuit can be configured to perform an operation receiving an input data and providing an output data, and to: select a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and provide the first data set as an intermediary result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
  • Implementations can include one or more of the following features.
  • the respective transformed data transformed by the surjective function of the data of each data set forming one of the substitution elements in the substitution table can include a same number of occurrences of all possible data that can be provided by the surjective function.
  • the surjective function can be chosen as a function of a data leakage model of the circuit.
  • the surjective function can be one of the following functions: an identity function, a function providing a resultant value which is then reduced to a value corresponding to a Hamming weight, and a function providing a Hamming weight of the value to which the function is applied.
  • the operation can include at least one of: a symmetrical or asymmetrical encryption or decryption operation, a signature operation, a modular or non-modular multiplication by a secret data, a logical operation Exclusive OR with a secret data, a modular exponentiation operation using a secret data as an exponent, and a modular reduction operation, using a secret data as a modulus.
  • a non-transitory computer-readable medium can carry (include, have stored thereon, etc.) one or more sequences of instructions, which, when executed by one or more processors, cause the one or more processors to: perform an operation receiving an input data and providing an output data, and to: select a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and provide the first data set as an intermediary result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
  • Implementations can include one or more of the following features.
  • the respective transformed data transformed by the surjective function of the data of each data set forming one of the substitution elements in the substitution table can include a same number of occurrences of all possible data that can be provided by the surjective function.
  • the surjective function can be chosen as a function of a data leakage model of the circuit.
  • the surjective function can be one of the following functions: an identity function, a function providing a resultant value which is then reduced to a value corresponding to a Hamming weight, and a function providing a Hamming weight of the value to which the function is applied.
  • the operation can include at least one of: a symmetrical or asymmetrical encryption or decryption operation, a signature operation, a modular or non-modular multiplication by a secret data, a logical operation Exclusive OR with a secret data, a modular exponentiation operation using a secret data as an exponent, and a modular reduction operation, using a secret data as a modulus.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Storage Device Security (AREA)

Abstract

In a general aspect, a method for executing, by a circuit, an operation receiving an input data and providing an output data includes: selecting a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table being selectable as a function of an input substitution data being a data set, and providing the first data set as an intermediary or final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from a surjective function applied to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application claims priority to French Application Numbers FR1651443, FR1651444 and FR1651445, filed Feb. 22, 2016, the disclosures of which are incorporated herein by reference.
  • TECHNICAL FIELD
  • The present disclosure relates to methods for protecting a circuit against a side channel analysis aiming to discover the value of a secret datum handled by the circuit, and in particular a secret key used by an encryption algorithm to transform a message.
  • The present disclosure also relates to devices implementing cryptographic algorithms, such as secure devices (smart card integrated circuits, secure elements, secured memory cards), mobile devices (mobile phones, smartphones, Internet of Things), home automation and automotive devices, and to hardware cryptographic components integrated onto mother boards of computers and other electronic and IT equipment (USB drives, TV decoders, game consoles, etc.), or the like. The present disclosure also relates to software including an encryption operation, provided for being executed in a secure or non-secured environment.
  • The present disclosure also relates to circuits implementing a cryptographic algorithm such as a ciphering algorithm like DES (Data Encryption Standard) or Triple DES, AES (Advanced Encryption Standard), RSA (Rivest, Shamir and Adleman), DSA (Digital Signature Algorithm), or ECDSA (Elliptic Curve Digital Signature Algorithm). The present disclosure also relates to circuits implementing a hashing function such as HMAC (Keyed-Hash Message Authentication Code).
  • BACKGROUND
  • Microcircuits implementing a cryptographic algorithm are equipped with a central processing unit (CPU). Some are equipped with circuits dedicated to cryptographic computing, for example a cryptographic coprocessor. These microcircuits include thousands of logic gates that switch differently according to the operations executed. These switches create short variations in current consumption, for example of a few nanoseconds that can be measured. In particular, CMOS-type integrated circuits include logic gates that only consume current when they switch, i.e. when a logic node changes to 1 or to 0. Therefore, the current consumption depends on the data handled by the central unit and on its various peripherals: memory, data flowing on the data or address bus, cryptographic coprocessor, etc.
  • Furthermore, certain software programs, produced in particular using encryption or obfuscation techniques, such as the “Whitebox Cryptography” technique, may integrate a secret data in such a way that it is very difficult to determine it by reverse engineering. Certain software programs may also receive a secret data from outside through a secure communication channel. Such microcircuits may be subjected to so-called side channel analysis attacks based on observing their current consumption, or their magnetic or electromagnetic radiation, or any other information that can be observed while a cryptographic algorithm is executed. Such attacks aim to discover the secret data they use, in particular their encryption keys. Frequent side channel attacks implement statistical analysis methods such as SPA (“Single Power Analysis”), DPA (“Differential Power Analysis”), CPA (“Correlation Power Analysis”) or EMA (“ElectroMagnetic Analysis”). SPA analysis normally only requires the acquisition of a single current consumption trace. It aims to obtain information about the activity of the integrated circuit by observing the part of the consumption trace corresponding to a cryptographic computation, since the current trace varies according to the operations executed and the data handled.
  • Software may also undergo such side channel attacks during their execution by a circuit.
  • DPA and CPA analyses enable the key of an encryption algorithm to be found by acquiring numerous data or measurement traces and by statistically analyzing these traces to find the information searched for. They are based on the premise that the consumption of a CMOS-type integrated circuit varies when a bit changes from 0 to 1 in a register or on a bus, and does not vary when a bit remains equal to 0, remains equal to 1 or changes from 1 to 0 (discharge of the stray capacitance of the MOS transistor). Alternatively, it can be considered that the consumption of a CMOS-type integrated circuit varies when a bit changes from 0 to 1 or changes from 1 to 0 and does not vary when a bit remains equal to 0 or remains equal to 1. This second hypothesis enables the conventional “Hamming distance” or “Hamming weight” functions to be used to develop a consumption model that does not require the structure of the integrated circuit to be known to be applicable. DPA analysis involves amplifying this consumption difference using statistical processing on numerous consumption traces, aiming to highlight a measurement difference between two families of consumption traces distinguished according to formulated hypotheses.
  • CPA analysis is based on a linear current consumption model and involves computing a correlation coefficient between, firstly, the consumption points measured that form the captured consumption traces and, secondly, an estimated consumption value, computed from the linear consumption model and a hypothesis on the variable to be discovered that is handled by the microcircuit and on the value of the encryption key.
  • Electromagnetic analysis (EMA) is based on the principle that a microcircuit may leak information in the form of near or far field electromagnetic radiation. Given that transistors emit electromagnetic signals when their state changes, these signals can be treated like the current consumption variation signals by an analysis such as one or other of the SPA, DPA and CPA analyses.
  • Other side channel attacks exist, such as “Template attacks” and “Mutual Information Analysis” (MIA). All of the above-mentioned attacks are based on a time alignment of all the analyzed traces. In other words, all the measurements performed at a given time, for example from the time the execution of a command is activated by the circuit, must correspond to the same value handled by the algorithm.
  • To protect such circuits and the cryptographic algorithms they execute against such side channel attacks, counter-measures are generally provided. One widespread type of counter-measure aims to avoid such a time alignment. For this purpose, these type of counter-measures introduce variations in the clock frequency supplied to the calculation circuits, or introduce dummy clock cycles or dummy operations. Another type of counter-measure involves adapting a given algorithm to be protected to render the data handled by the circuit independent of their actual values. Certain counter-measures of this type—that can be referred to as “masking-type counter-measures”—use a random mask (binary number) that is combined with another data to be protected such as the key and/or the message during the execution of the ciphering method. This type of counter-measure is effective but requires the algorithm to be modified, and thus requires a coprocessor specially provided for its implementation in the case of execution by a coprocessor, or a more complex program in the case of execution by the central processing unit of the microcircuit or a programmed coprocessor.
  • A counter-measure by multiple executions can be implemented with a conventional coprocessor not comprising any counter-measure means. It merely involves executing the ciphering method several times by means of false keys or false messages. For this purpose, a counter-measure program is provided for example that controls the ciphering program or the coprocessor, and makes it execute the ciphering method several times with the false keys, in a random order, such that the execution of the ciphering method with the right key (i.e. the authentic key) is “hidden” in a set of dummy executions. This counter-measure, by multiple executions, offers the advantage that it can be implemented with a conventional coprocessor not including any counter-measure means.
  • It is sometimes possible to restore this time alignment, by means of specific expertise and many attempts, in particular using a high number of traces to be realigned or applying some signal processing. Despite the foregoing, cases remain where it is not possible to restore this time alignment, such that the side channel tests fail even though there is a secret data leakage present in the traces.
  • To check the level of security offered by a secure integrated circuit intended to be marketed, qualification and/or certification tests are planned before the circuit is marketed, where these tests can include tests of the robustness of the integrated circuit to side channel analyses aiming to discover the secret data handled by the integrated circuit. There are also tests enabling the resistance of a software program to side channel attacks to be assessed.
  • SUMMARY
  • Some embodiments relate to a method for executing by a circuit an operation receiving an input data and providing an output data, the method comprising: selecting a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and providing the first data set as an intermediate result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
  • According to one embodiment, the respective transformed data resulting from the application of the surjective function to each data set forming one of the substitution elements in the substitution table can include a same number of occurrences of all the possible data susceptible of being provided by the surjective function.
  • According to one embodiment, the surjective function can be chosen according to a data leakage model of the circuit.
  • According to one embodiment, the surjective function can be one of the following functions: an identity function, an affine function providing a resultant value that could be reduced to a value corresponding to a Hamming weight, and a function providing the Hamming weight of the value to which the function is applied.
  • According to one embodiment, the operation applied to the secret data and to the input data can include at least one of the following operations: a symmetrical or asymmetrical encryption or decryption operation, a signature operation, a modular or non-modular multiplication by the secret data, a logic Exclusive OR operation with a secret data, a modular exponentiation operation using a secret data as an exponent, and a modular reduction operation using a secret data as a modulus.
  • Some embodiments may also relate to a circuit configured to implement the methods described above, and can include a processor.
  • According to one embodiment, the circuit can include a coprocessor.
  • Some embodiments may also relate to a device including a circuit like the one described above, arranged on a medium.
  • Some embodiments may also relate to a computer program product directly loadable into an internal memory of a computer and including code portions which, when executed by a computer, can cause the computer to carry out the steps of the methods described above.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Examples of embodiments are provided herein for illustration purposes, and are described below in relation with, but not limited to, the accompanying figures, in which:
  • FIG. 1 schematically illustrates a conventional architecture of a secure circuit,
  • FIG. 2 schematically illustrates an example of an integrated circuit testing system,
  • FIG. 3 illustrates traces of a signal acquired during the execution of an encryption operation by a secure circuit,
  • FIG. 4 illustrates steps of a method for testing a secure circuit, according to one embodiment,
  • FIG. 5 illustrates, in graph form, an example of a surjective function,
  • FIG. 6 schematically illustrates a table built according to one embodiment, to perform statistical processing,
  • FIG. 7 illustrates a method for testing a secure circuit, according to another embodiment,
  • FIGS. 8 and 9 illustrate a method for statistically analyzing a value set obtained by a test method, according to various embodiments,
  • FIGS. 10 and 11 illustrate, in the form of curves, result tables provided by the analysis methods of FIGS. 8 and 9,
  • FIGS. 12 and 13 illustrate an encryption operation, including counter-measure steps, according to various embodiments,
  • FIG. 14 illustrates a substitution table, transformed according to a counter-measure method, according to one embodiment,
  • FIG. 15 illustrates a secure circuit, according to one embodiment.
  • DETAILED DESCRIPTION
  • In view of the drawbacks and considerations noted above, it may be desirable to have a counter-measure approach that enables an integrated circuit or a software program to be considered capable of being used in a product, after a qualification and/or certification process including a test method such as those described herein.
  • FIG. 1 illustrates, as an example, a secure integrated circuit CT, for example arranged on a portable medium HD such as a plastic card or any other medium, or in a terminal such as a mobile terminal, a smartphone, an IoT device or the like. The integrated circuit of this example includes a microprocessor PRC, an input/output circuit 10C, memories M1, M2, M3 coupled to the microprocessor by a data and address bus and, optionally, a cryptographic computation coprocessor CP1 or arithmetic accelerator, and a random number generator RGN. The memory M1 is a RAM-type (“Random Access Memory”) memory containing volatile application data. The memory M2 is a non-volatile memory, for example an EEPROM or Flash memory, containing non-volatile data and application programs. The memory M3 is a read-only memory (or ROM memory) containing the operating system of the microprocessor.
  • The communication interface circuit 10C may be of contact type, for example according to the ISO/IEC 7816 standard, of contactless type with inductive coupling, for example according to the ISO/IEC 14443A/B or ISO/IEC 13693 standard, of contactless type by electrical coupling (UHF interface circuit), or of both contact and contactless type. The interface circuit 10C may also be coupled through a specific interface, to another circuit such as an NFC (Near-Field Communications) controller, or a main circuit of a terminal such as a mobile terminal or a connected object.
  • In some embodiments, the integrated circuit CT may be configured to execute operations of ciphering, deciphering or signing of messages that are sent to it, by means of an encryption function. This encryption function may be executed by the processor PRC of the circuit CT or partially or totally carried out by the processor PRC to the coprocessor CP1.
  • FIG. 2 illustrates an example of an integrated circuit testing system provided to implement the test method, according to one embodiment. It will be assumed, as an example, that the testing system is configured to test the integrated circuit CT in FIG. 1.
  • The testing system of FIG. 2 includes a measuring probe PB coupled to a measuring device MD such as a digital oscilloscope, to acquire traces relating to the activity of the circuit, such as traces of current consumption or of electromagnetic signal variation, and a computing device, such as a personal computer PC. The computer PC is coupled to the measuring device and implements a test program. This test program includes a communication interface and a program for communicating with the integrated circuit and for sending it messages, a signal processing program and a program for implementing computation steps of a method, such as the methods described herein. Steps, as used herein, can refer to operations, functions, processes, etc. In the event that the integrated circuit is a contactless circuit, the communication interface may include a contactless card reader.
  • The probe PB may be a current probe (for example, a resistor placed on the supply terminal Vcc of the integrated circuit), or an electromagnetic probe coupled to the measuring device by a signal amplifier AMP. Alternatively, a current probe may be combined with an electromagnetic probe. The study of electromagnetic radiation indeed shows that an electromagnetic field emitted by a circuit in operation gives information about bit switches in the integrated circuit, just like the measurement of the consumed current. The advantage of an electromagnetic probe is that it may be placed near the part of the circuit whose operation needs to be analyzed (for example near the core of the microprocessor PRC or of the cryptographic computation coprocessor CP1).
  • Furthermore, in the case of a contactless integrated circuit, the current probe can be replaced with an inductive probe that measures the absorption, by the integrated circuit, of the magnetic field emitted by the reader. Such an inductive probe, for example an antenna coil, can itself be combined with an electromagnetic field probe placed near the circuit zones to be studied.
  • Therefore, in the present application, the phrase “current consumption”, used for the sake of simplifying the language, can refer to any measurable physical quantity of which the variations over time are representative of the switches of binary data inside the integrated circuit or inside the studied part of the integrated circuit, the physical quantity being able to be measured at the terminals of the integrated circuit or near the studied part of the integrated circuit. Furthermore, the physical quantity is sampled with a sampling frequency sufficiently high to collect several points per data period of interest, which, in practice can result in traces containing from 10 to a few hundred thousand points per trace, but it may be considered to collect up to several million values, or even more per trace.
  • The present disclosure also relates to a method for testing a software program or an application. In this case, the software program may be executed directly by the testing system or by an emulation program executed by the testing system. The analyzed traces may thus, for example, be a series of values transmitted to a memory when accessing a memory or data handled in registers of the circuit, or can be data transmitted to a communication interface of the circuit, where these transmissions can be controlled by the tested software program.
  • Test Method
  • Some embodiments of a test method can be based on a detailed review of traces of variation over time of signals or digital values, representative of the operation of the circuit to be tested while it executes an operation applied to a data to be discovered, called in the following “secret data”.
  • FIG. 3 illustrates traces C0, C1, . . . Cix of values over time that can be acquired by a testing system. Each of these traces can be obtained by causing an operation to be executed by the circuit or the software program to be tested. The operations corresponding to the traces C0, C1, . . . Cix are generally all different. These operations are different for example because they involve applying a same function to distinct known input data, for example messages to be ciphered, deciphered or signed or a signature to be checked, or a HMAC (keyed-Hash Message Authentication Code) to be computed. Alternatively, the known data may be output data of the function, or a part of the input and output data of this function, rather than input data thereof.
  • The function may be any function applied to a same secret data SD, and to an input data M, such as a symmetrical or asymmetrical ciphering or deciphering operation, or even a signature operation, or merely a modular or non-modular multiplication, by the secret data (M×SD), a logic XOR function (Exclusive OR) with the secret data (M XOR SD), a modular exponentiation function, the secret data being used as exponent (MSD mod n, n being known), or a modular reduction function, the secret data being used as the modulus (M mod SD). Another example of a function involves processing the result of an XOR operation with a substitution table (SBOX[M XOR SD], SBOX being the substitution table), as in the case of the DES and AES cryptographic algorithms. More generally, this function must enable a part of the value resulting from the operation to be computed based on a part of the secret data and an input data.
  • In the example of FIG. 3, the traces C0, C1, Ci, Cix respectively correspond to the input (or output) data M[0], M[1], . . . M[i], . . . M[ix]. Each of the traces Ci can be formed of samples acquired from a same signal measured on a same circuit under test, or can include samples from different signals, captured when the circuit under test manipulates the data M[i].
  • FIG. 4 illustrates steps S1 to S19 (operations, functions, processes, etc.) of processing the values collected by a testing system during the execution of an encryption operation OPRK assumed to be known, applied to a secret data to be discovered, and to input data M[0] . . . M[ix] also known. According to one embodiment, the aim of this test is to determine whether the value of the secret data leaks into (e.g., can be determined from) the collected values forming the traces of FIG. 3, for example. The processing unit PC first executes steps S1 to S8.
  • In step S1, the processing unit PC of the testing system sets an index i of a loop on the input data M[0] . . . M[ix] to 0, as well as a table CH. In step S2, the processing unit PC activates the execution of an operation OPRK by the circuit MCT or the software program to be tested, this operation receiving the data M[i], the secret data being provided to the operation by the circuit MCT or the software program. In step S3, the processing unit PC collects the values constituting the trace Ci. In step S4, a part ECi of the values of the trace Ci is selected, with only this part being processed in the following processing steps (FIG. 3). In the example in FIG. 4, this part is delimited by the values of the trace Ci corresponding to the indices k and kx, for the sake of simplicity. In reality, the indices k and kx may vary from one trace Ci to the next. In addition, the values thus selected in each trace are not necessarily consecutive, and the number of values in each part ECi, may be different from one trace Ci to the next, in contrast with prior side-channel analyses. Hence, it may be decided, for example, to extract only maximum or minimum local values from each trace. It is noted that the extracted part ECi may be the entire trace Ci. In the following processing, the data thus extracted are assumed to contain a piece of information concerning the secret data that is being searched for.
  • In step S5, the processing unit PC sets a loop index j, as well as a table HT to 0. In step S6, the processing unit PC applies a surjective function F1 to the value ECi[j] of index j of the selected trace part ECi and increments by one (1) a value in the table HT, designated by an index equal to the result provided by the function F1. In step S7, the index j is incremented by one (1). In step S8, the index j is compared with its maximum value to determine whether all the values of the set ECi have been processed. Once all the values of the set ECi have been processed, the processing unit PC executes the steps S9 to S14, otherwise it executes the steps S6 to S8 again. In this way, the values of the set ECi loaded in the table HT have the form of a histogram specifying the occurrence number of each possible value returned by the function F1, such that the time feature related to the values of the set ECi is not included in the table HT: the content of the table HT does not enable the order in which the values of the set have been collected to be determined. FIG. 5 represents an example of a table HT in the form of a graph occurrence numbers (in the y axis) of values (in the x axis) computed using the function F1. In the example of FIG. 5, the function F1 returns the Hamming weight computed from 8-bit encoded values.
  • In step S9, the processing unit PC sets index g to 0. In step S10, the processing unit PC applies an operation OPR to the data M[i] and to a part of the secret data SD to be determined, set to be equal to the index g. The operation OPR(M, g) may provide a part of the result of the operation OPRK(M) (=OPR(M, SD)) executed in step S2. The result provided by the operation OPR is processed by a surjective function F2 that supplies a value VL. In step S11, the processing unit PC sets index I to 0. In step S12, the processing unit PC increments a value stored in the 3-dimensional table CH, at a location designated by the indices g, VL and I, by the value HT[I] at the index I in the table HT corresponding to the data M[i]. FIG. 6 represents an example of a table CH in which each location CH[g,VL] designated by the indices g and VL contains a table obtained by combining several tables HT according to the value VL obtained in step S11. In step S13, the index I is incremented by one (1). In step S14, the index I is compared with its maximum value Ix considering the number of possible distinct values provided by the function F1. If the index I is lower than or equal to its maximum value Ix, steps S12 to S14 are executed again, otherwise steps S15 and S16 are executed.
  • In step S15, the processing unit PC increments the index g by one (1). In step S16, the processing unit PC compares the index g with its maximum value gx, considering the number of possible distinct values for the considered part of the secret data. If the index g is lower than or equal to the maximum value gx, a new iteration from S10 to S16 is executed, otherwise steps S17 and S18 are executed. In step S17, the processing unit PC increments the index i by one (1) to process another trace Ci. In step S18, the processing unit PC compares the index i with its maximum value ix corresponding to the number of traces Ci generated. If the index i is lower than or equal to the maximum value ix, steps S2 to S18 are executed again, otherwise step S19 is executed. In step S19, each table of cumulative totals contained in the table CH at the location [g,VL] contains the following values:
  • CH [ g , VL , 0 Ix ] = M [ i ] HT M [ i ] [ 0 Ix ] ( 1 )
  • the data M[i] to be taken into account in the above sum being such that F2(OPR(M[i],g))=VL.
  • In step S19, the processing unit PC performs a statistical analysis of the table CH to determine whether a value of the index g corresponds to the part of the secret data being searched for. For this purpose, it is considered that the information resulting from a leakage of the secret data have been accumulated in the locations of a row g of the table CH, whereas the information independent from the secret data is distributed randomly or uniformly in the table CH. As a result, if a row of index g of the table CH contains higher values than in the rest of this table, the value of the index g at this row of the table CH corresponds to the value of the part of the secret data SD searched for. In this case, it can be considered that the secret data SD has leaked into the collected data forming the traces Ci.
  • The functions F1 and F2 can be chosen so as to correspond to the leakage pattern of the circuit or the software program to be tested. Therefore, the functions F1 and F2 may be the same or different from each other, and may be chosen to maximize (increase, etc.) the probability of discovering a secret data manipulated by the circuit. For example, the functions F1 and F2 may be one of the following functions:
      • the identity function,
      • a function (e.g. in the form F(x)=a·x+b), with a resultant value that could be reduced to a value corresponding to a Hamming weight, for example between values 0 and 8 when x is encoded on 8 bits,
      • a function that computes a Hamming weight of a value provided at input of the function, for example the number of bits at 1 of the binary coded value, or
      • a function that computes a Hamming distance with another value, for example the difference between the numbers of bits at 1 of these two values.
  • It is noted that the choice of the functions F1 and F2 may impact both the complexity of the statistical processing of the table CH to be performed to determine the considered part of the secret data, and the success of the statistical processing to determine the value of the part of the secret data being searched for.
  • The part of the secret data being searched for by executing steps S1 to S19 may, for example, be defined on 8 or 16 bits. In the case of 8 bits, the index g is successively allocated to all the values between 0 and 255 (or 1 and 256=28). It is noted that the order in which the values of g are tested is not significant for the result of the test. The part of the secret data being searched for may also be defined on wider words such as on 16, 32 or 64 bits.
  • Another part of the secret data SD may be determined by executing steps S9 to S19 using the values of the previously determined parts of the secret data, and by forcing another part of the secret data to the different possible values of the index g. For this purpose, the same parts ECi of the traces Ci or other parts of these traces can be extracted in step S4.
  • It is noted that the value sets forming the traces Ci may have been collected (steps S2 and S3) before executing the other steps in FIG. 4. In addition, a table HT may have been constituted for each of the traces Ci, before executing steps S9 to S19.
  • The operation OPR/OPRK applied to the secret data SD and to the input data M[i] may be one or a combination of the following operations:
      • a symmetrical or asymmetrical ciphering or deciphering operation, the secret data SD being the encryption or decryption key,
      • a signature operation using the secret data SD,
      • a modular or non-modular multiplication by the secret data (M[i]×SD),
      • an XOR logic operation (Exclusive OR) with the secret data (M[i] XOR SD),
      • a modular exponentiation operation, the secret data SD being used as exponent (M[i]SD mod n, n being known),
      • a modular reduction operation, the secret data SD being used as modulus (M[i] mod SD),
      • a substitution operation by a value selected in a substitution table using the input data (SBOX[M[i]], SBOX being the substitution table), and
      • an operation combining an XOR logic operation applied to the secret data and the substitution operation replacing the result of the logic operation with a value selected in a substitution table using the result of the XOR operation (SBOX[M[i] XOR SD]).
  • More generally, this operation must enable a part of the final value of the operation to be computed based solely on a part of the secret data and an input data.
  • To highlight the accumulated values corresponding to the information about the secret data, the contents of all the tables HT can be added to each other to obtain a table of cumulative occurrence numbers for each possible value returned by the function F1. The values of this table of cumulative totals are subtracted from all the tables accumulated in the locations of the table CH[g,VL]. Therefore, the sequence of steps in FIG. 4 may be modified in accordance with the sequence illustrated in FIG. 7. The steps (operations, functions, processes, etc.) shown in FIG. 7 include the steps S9 to S19 described above, and additional steps S20, S21 and S22. In step S20, which is carried out before step S9, index i, a one-dimensional table MHT and a two-dimensional table CPT are set to 0. In step S9, a two-dimensional table HT[0 . . . ix,I] has been previously filled in to contain all the tables generated in step S6 for all the traces Ci. Step S21 is inserted into the loop (between steps S12 and S14) controlled by the index I whereby it is possible to select one of the values provided by the function F1, for example after step S12. In step S21, the processing unit PC accumulates each value HT[i,I] in a table of cumulative totals MHT at a location designated by the index I. In this way, at the end of the processing, the table MHT will contain the sum of all the values HT[i,I] of index i obtained for each of the traces Ci. Step S22 is executed once upon each iteration of the loop controlled by the index i, where it is possible to select one of the traces Ci, for example after step S14. Step S22 enables the number of tables HT[i,I] accumulated in each location CH[g,VL] of the table CH to be counted. The result of this counting is stored in a table CPT.
  • FIG. 8 illustrates steps (operations, functions, processes, etc.) S31 to S43 of an example of statistical processing of the table CH to attempt to determine the value of the part of the secret data SD searched for. Steps S31 to S37 are successively executed. In step S31, the index VL is set to 0 and all the locations of a table TT are set to 1. In step S32, the index g and all the locations of a table IT are set to 0. In step S33, the index I is set to 0. In step S34, a variable T receives the value CH[g,VL,I] contained in the table CH, selected by the indices g, VL, and I, this value being divided by the counting value located at the location CPT[g,VL] in the table CPT. In step S35, the value IT[g] at the location g in the table IT is incremented by the squared result of the division by the total number ix of traces Ci, of the difference between the value of the variable T and the value MHT[I] stored in the table MHT, designated by index I. In step S36, the index I is incremented by one (1). In step S37, the index I is compared with its maximum value Ix. If the index I has reached its maximum value Ix, steps S38 to S40 are executed, otherwise a new iteration from step S34 is executed.
  • In step S38, the value TT[g] designated by the index g in the table TT is updated by being multiplied by the value IT[g] computed in steps S35 to S37, executed Ix times. In step S39, the index g is incremented by one (1). In step S40, the index g is compared with its maximum value gx. If the index g is greater than its maximum value gx, steps S41 and S42 are executed, otherwise a new iteration is executed from step S33. In step S41, the index VL is incremented by one (1). In step S42, the index VL is compared with its maximum value VLx. If the index VL is greater than its maximum value VLx, step S43 is executed, otherwise a new iteration from step S32 is executed. In step S43, the table TT is returned as result of the statistical analysis.
  • Therefore, upon the last iteration of the processing loop including steps S32 to S42, the tables IT and TT contain the following values:
  • IT [ g , VL ] = I = 0 Ix [ CH [ g , VL , I ] CPT [ g , VL ] - MHT [ I ] ix ] 2 ( 2 ) TT [ g ] = VL = 0 VLx IT [ g , VL ] with CPT [ g , VL ] = i = 0 ix ( F 2 ( OPR ( M [ i ] , g ) ) == VL ) , and MHT [ I ] = g = 0 gx [ VL = 0 VLx CH [ g , VL , I ] ] , ( 3 )
  • where the operator “==” represents the equality test (equal to 1 when the equality is true, and to 0 when the equality is false), the table IT being set to 0 in step S32 and loaded in step S35 for each new value of the index VL.
  • Therefore, CPT[g,VL] represents the number of times the condition (F2(OPR(M[i],g))==VL) is true. If the secret data SD leaked when executing the operation OPRK, a location of the table TT contains a much higher value than the other values stored in this table. The result is that the part of the secret data SD searched for is equal to the index g of the highest value in the table TT.
  • It is noted that the values of the table IT can be added rather than being multiplied in step S38 corresponding to the equation (3). The implementation of a multiplication operation merely enables the differences between the values of the table TT to be increased, and thus the highest value corresponding to the part of the secret data being searched for to be better highlighted. It is also possible to consider applying the logarithm function to the values of the table IT and performing an additive accumulation of the logarithm values obtained, in the table TT. When the values of the tables IT are added, they can be weighted as follows:
  • TT [ g ] = 1 ix VL = 0 VLx CPT [ g , VL ] · IT [ g , VL ] ( 4 )
  • FIG. 9 illustrates steps (operations, functions, processes, etc.) S51 to S67 of another example of statistical processing of the table CH to attempt to determine the value of a part of the secret data SD being searched for. This processing is based on the Shannon entropy function. Steps S51 to S56 are successively executed. In step S51, the index g is set to 0 and all the locations of the table TT are set to 0. In step S52, the index VL is set to 0. In step S53, the index I and a variable SXY are set to 0. In step S54, the variable SXY is incremented by the value CH[g,VL,I] selected in the table CH, by the indices g, VL, and I. In step S55, the index I is incremented by one (1). In step S56, the index I is compared with its maximum value Ix. If the index I has reached its maximum value Ix, steps S57 to S61 are executed, otherwise a new iteration from step S54 to step S56 is executed. In step S57, the index I and a variable PXY are set to 0. In step S58, a variable VXY receives the value CH[g,VL,I] selected in the table CH by the indices g, VL, and I, this value being divided by the variable SYX computed by iterations from step S54 to S56. In step S59, the variable PXY is incremented by the product of the variable VXY by the logarithm (for example in base 2) of the variable VXY. In step S60, the index I is incremented by one (1). In step S61, the index I is compared with its maximum value Ix. If the index I has reached its maximum value Ix, steps S62 to S64 are executed, otherwise a new iteration from step S58 to step S61 is executed.
  • In step S62, the value TT[g] designated by the index g in the table TT is updated by subtracting from it the product of the value CPT[g,VL] divided by the number ix of traces Ci, by the variable PXY, the value CPT[g,VL] being designated by the indices g and VL in the table CPT filled in in step S22. In step S63, the index VL is incremented by one (1). In step S64, the index VL is compared with its maximum value VLx. If the index VL is greater than its maximum value VLx, steps S65 and S66 are executed, otherwise a new iteration from step S53 is executed. In step S65, the index g is incremented by one (1). In step S66, the index g is compared with its maximum value gx. If the index g is greater than its maximum value gx, step S67 is executed, otherwise a new iteration from step S52 is executed. In step S67, the table TT is returned as result of the statistical analysis.
  • Therefore, upon the last iteration, after step S66, the table TT contains the following values:
  • TT [ g ] = - VL = 0 VLx [ CPT [ g , VL ] ix · I = 0 Ix CH [ g , VL , I ] SXY · log ( CH [ g , VL , I ] SXY ) ] ( 5 )
  • where
  • SXY = I = 0 Ix CH [ g , VL , I ]
  • is computed for each of the values of the indices g and VL, and each value of the index g represents a possible value of the part of the key searched for. If the secret data SD leaked when processing the operation OPRK, a location of the table TT contains a much higher value than the other values stored in this table. The result is that the part of the secret data SD searched for is equal to the index g of the highest value in the table TT.
  • FIGS. 10 and 11 illustrate, in the form of curves CC1, CC2, an example of content of the table TT as a function of the index g. The curve CC1 was obtained by executing the steps in FIG. 8, and the curve CC2 was obtained by executing the steps in FIG. 9. In the example of FIGS. 10 and 11, the index g has a length of one byte (thus varying from 0 to 255), and curves CC1 and CC2 have been obtained from a number of traces Ci of the order of 500,000. Curves CC1 and CC2 have a clear peak at the value g=168 compared to the other values contained in the table TT. The value of the peak in the curve CC1 is greater than about thirty times the other values of the table TT. In the curve CC2, the value of the peak is greater than three times the other values of the table TT. Depending on the statistical processing of the table CH, it may be considered that the part of the secret data being searched for leaks when a peak is obtained that remains at a value greater than 0.9 times the closest value, by increasing the number of analyzed traces Ci.
  • Effectiveness of Conventional Counter-Measures in Relation to Disclosed Test Methods
  • So that circuits, such as integrated circuits, as described herein can successfully pass known qualification or certification procedures, the designers of these circuits provide counter-measures the most conventional of which involve introducing a time variable. This arrangement can be made by causing the duration of the clock cycle supplied to the circuit to vary randomly, or by introducing dummy processing cycles or operations at times chosen randomly. The calculation of the values in the tables HT enables the time aspect to be removed from the analyzed values, and avoids having to synchronize the different traces of the analyzed values. Provided that information concerning the secret data being searched for is in the analyzed data, the test method previously described may enable all or part of the secret data to be determined.
  • Appropriate Counter-Measures
  • Some embodiments can implement counter-measures that enable a circuit to be considered capable of being used during a qualification or certification test including the test method previously described.
  • Approached described herein can protect an encryption operation against an analysis implemented by the test methods previously described. In this context, the operation receives an input data, and provides an output data according to the value of the input data. A counter-measure according to one embodiment involves executing the operation to be protected for all the data of a set of input data including, only once. all the possible data susceptible of being processed by the operation and including the data to be processed by the operation. Another counter-measure involves providing as result of the operation a set of output data comprising only once all the possible data susceptible of being provided by the operation. The set of output data can be reduced to a subset of data whereof the transformed data resulting from the application of a chosen surjective function include, only once, all the data susceptible of being obtained by this function, including the output data expected from the operation, corresponding to the input data. The chosen surjective function may correspond to the leakage pattern of the circuit or the software program to be protected.
  • Unlike previous counter-measures involving “hiding” (“drowning”, etc.) the operation to be protected in a flood of identical operations concerning random data and thus uncorrelated from the input data of the operation to be protected, the idea here is to have the operation executed on other data not be chosen randomly. Indeed, such other data can be correlated to the input data insofar as the set formed of such other data and of the data to be processed includes all the data susceptible of being processed by the operation.
  • FIG. 12 illustrates steps (operations, functions, processes, etc.) S71 to S77 of a method for computing an encryption operation, which involves a secret data SD, according to one embodiment. This method is configured to successfully pass the test described above. Steps S71 to S76 are executed successively. In step S71, a variable RN receives a random value between 0 and a maximum value nx determined according to the number of bits used to encode this variable in binary code. Therefore, if the variable RN is encoded on 8 bits, nx is equal to 255. In step S72, an index n is set to 0. In step S73, a variable IRN is computed by combining the index n with the variable RN by an Exclusive OR operation. In step S74, an output data RS[n] designated by the index n in a result table RS is computed by applying the encryption operation OPR as defined above, to an input data M, and to the secret data SD. According to one embodiment, the secret data SD is here combined for example by an XOR operation (Exclusive OR) with the variable IRN:

  • RS[n]=OPR(M,SD⊕IRN),  (6)
  • “⊕” representing the Exclusive OR operator.
    Alternatively, the variable IRN may be combined with the input data M:

  • RS[n]=OPR(M⊕IRN,SD),  (7)
  • or with the result of the operation:

  • RS[n]=OPR(M,SD)⊕IRN,  (8)
  • In step S75, the index n is incremented by one (1). In step S76, the index n is compared with the maximum value nx, and if it is lower than or equal to the value maximum nx, a new iteration of the calculation from step S73 to S76 is executed. In the opposite case, step S77 is executed. In step S77, the output data being searched for, contained in the table RS at an index n1 is returned, this index n1 having the value of the index n of the iteration where the variable IRN was on 0, if the combination operation with the value IRN in step S74 is a XOR operation. Indeed, the result of the Exclusive OR operation applied to a data D and 0 does not transform the data D. It is noted that the output data being searched for in the table RS can be extracted, in step S77, after other operations. In this case, all the data stored in the table RS is processed by such other operations. Therefore, in the case of the AES algorithm, for example, the operation OPR is, for example, the XOR operation combining an input data with a first key used in a first round of the algorithm. The following (subsequent, etc.) operations of the AES algorithm can be executed on all the data stored in the table RS, and the successive results of these operations stored in the table RS. Therefore, the operations of shifting rows and mixing columns can be applied to each element of the table RS. The output data being searched for can be extracted from the result table RS at a subsequent step in the processing considered less sensitive to attacks. These arrangements are also applicable to the DES and/or the Triple DES algorithm.
  • Furthermore, the input data M and the secret data SD are encoded by binary words having a same number of bits. Each value given to the variable IRN must also have the same number of bits as the data M and SD. If the data M and SD are encoded by 8-bit words, the variable IRN is also encoded on 8 bits. The number of iterations nx that must be executed between steps S73 to S76 is equal to 2x, x being the size in number of bits of the data M and SD. If the data M and SD are encoded by words of 16, 32 or 64 bits, it may be desirable to limit this number of iterations. For this purpose, the variable IRN may be encoded on 8 bits, and the operations of combining the secret data SD or the input data with the variable IRN can be performed by concatenating the variable IRN with itself several times to form a word of the size of the secret data SD or of the input data M. Therefore, in the event that the data M and SD are encoded on 16 bits, the variable IRN on 8 bits is concatenated with itself to obtain a data on 16 bits. The operation executed in step S73 then becomes:

  • RS[n]=OPR(M,SD⊕IRN//IRN),  (9)
  • “//” representing the concatenation operator of binary words. In the event that the data M and SD are encoded on 32 bits, each value of the variable IRN on 8 bits is concatenated with itself 3 times to obtain a value on 32 bits. The operation executed in step S73 then becomes:

  • RS[n]=OPR(M,SD⊕IRN//IRN//IRN//IRN).  (10)
  • More generally, when the variable IRN is combined upon each iteration with the output data of the operation OPR, the values of the variable IRN can be chosen in such a way that their transformed values resulting from the application of a chosen surjective function F3 include, only once, all the possible values susceptible of being obtained by this function. The function F3 may be the identity function, as is the case in the method of FIG. 12, or a function of which the image set is smaller, as in the method of FIG. 13.
  • FIG. 13 illustrates steps (operations, functions, processes, etc.) S80 to S92 of a method for computing an encryption operation, which involves a secret data SD, according to another embodiment. This method is configured to successfully pass the tests previously described. Steps S80 to S54 are executed successively. Step S80 is identical to step S71. In step S81, an index n is set to 1 and an index m is set to 0. In step S82, the value at the index 0 of a table RS1 receives the result of the operation OPR applied to the input data M and to the secret data SD, this result being combined with the random data RN by the Exclusive OR operation. Step S83 is identical to step S73. Step S84 is identical to step S74 except that the result of the computation performed in this step is stored by a variable RES. In addition, the data IRN computed in step S83 is combined by an Exclusive OR operation with the result provided by the operation OPR. In step S85, the transformed value of the variable RES resulting from the application of the function F3 is compared with the transformed values by the function F3 of the other data stored in the table RS at the locations designated by indices lower than or equal to the index m. If the transformed value F3(RES) of variable RES is different from such other data, the index m is incremented by one (1) and the variable RES is stored in the table RS1 at the location designated by the index m, in steps S86 and S87. Otherwise there exists an index n2 such that transformed value F3(RES) of variable RES equals to the transformed value F3(RS1[n2]) of the value RS1[n2] in the table RS at index n2. In such a case, the index n is compared at step S88 with an index value n1 where the unmasked result of the operation OPR is stored in the table RS (n1RN=0). If the index n equals the index value n1, the result RES is the true result of the operation OPR and it is stored in the table RS1 at index n2 at step S89. The step S90, where the index n is incremented by one (1), is performed after steps S87, S89 and S88 (when the index n does not correspond to index n1). In the next step S91, the index n is compared with the value nx, and if it is lower than or equal to the value nx, a new iteration of the computation from step S83 to S91 is executed. Otherwise, step S92 is executed. Step S92 is identical to step S77, except that it is applied to the table RS1.
  • The function F3 may be chosen so as to correspond to the leakage pattern of the circuit or of the software program to be protected. Therefore, the function F3 may, for example, be the Hamming function.
  • Another counter-measure can be implemented when the operation to be protected includes an operation of reading a lookup table, at an index corresponding to the input data of the operation and to the secret data to be protected or to a data from which the secret data can be determined. According to one embodiment, the entire lookup table is read and for example loaded into a set of resulting data, such as the table RS. As above, the set of data stored in the table RS can be applied as an input of a next operation, each data of the table being transformed by this operation. As the location of the output data in the table RS is known, the circuit can extract the output data at any time.
  • According to one embodiment, the lookup table is transformed into a new table in which each location contains all the possible values susceptible of being contained in the lookup table. Therefore, FIG. 14 represents a lookup table T1, from which it is possible to determine the result of an encryption operation according to input values varying from 0 to p. According to one embodiment, the table T1 is replaced with a new table T2, having an additional dimension such that T2[i,k0]=T1 [i], for all the possible values of the index i between 0 and p. Furthermore, all the values T2[i,k], when k varies from 0 to r, include all the possible values of the values susceptible of being stored in the table T1. Therefore, if these values are encoded on one byte, the maximum value r of the index k is equal to 255 and all the values T2[i,k], when the index i is secured, and the index k varies from 0 to r, are different. Therefore, all the tables T2[i,j] designated by the index i contain the same values, but are ordered differently. For example, the data in the table may be defined in the following manner:

  • T2[i,k]=T1[i]⊕(k+k0)mod(r+1).  (11)
  • for all the values k from 0 to r.
  • The execution of the operation to be protected thus involves loading in a result table (the table RS for example), all the values of the table T2 designated by the index i defined from the input data (and possibly the secret data):

  • RS[0 . . . r]=T2[i,0 . . . r]
  • As above, step S77 or S90 can then be executed to obtain the output data being searched for in the result table RS.
  • The value of the index k0 such that T2[i,k0]=Ti[i], e.g., containing the output data of the operation, may be fixed for the entire table T2 or vary on each row of the table. For example, the column T2[0 . . . p,k0] may contain table T1. In another example, the table element T2[0,k0] may be equal to the element T1[0], the element T2[1,k0+1] may be equal to the element T1[1], and so on and so forth up to the element T2[p, (k0+p) mod(r+1)] equal to the element T1[p]. If in this example, the shift pitch from one row to the next of the table T2 is one, it can be set to any other value between 1 and r−2.
  • Instead of containing all the values between 0 and r, each table element T2[i] selected by the index i, may contain only values including the expected output data, such that their transformed values resulting from the application of the chosen surjective function F3 are all different and include all the possible values susceptible of being obtained by this function. This arrangement enables the size of the table T2 to be reduced, without reducing the robustness of the method, if the function F3 reproduces the leakage pattern of the secret data.
  • It will be understood that, while table T1 has two dimensions, table T2 has three dimensions, each element of the table T1 being replaced with a one-dimensional table containing all the possible values of the elements of table T1.
  • FIG. 15 illustrates an integrated circuit CT1 arranged on a portable medium HD such as a plastic card, and equipped with a counter-measure according to one embodiment. The integrated circuit includes the same units as the integrated circuit CT described above in connection with FIG. 1, and differs from the latter in that the coprocessor CP1 is replaced with a coprocessor CP2 implementing at least one of the counter-measures described above. Therefore, according to one embodiment, the coprocessor CP2 is configured to provide a table of resulting values, rather than a single result of an encryption operation, including only values such that their respective transformed values resulting from the application of a chosen surjective function are all different and include all the possible values susceptible of being obtained by the surjective function, including the expected result of the encryption operation. The processor PRC is matched with the coprocessor CP2 so as to know the location of the result of the encryption operation in the table of resulting values provided by the coprocessor CP2.
  • The coprocessor CP2 may also be configured to execute a part of the encryption operation. In this case, the processor PRC is configured to produce the table of resulting values comprising only values such that their respective transformed values resulting from the application of a chosen surjective function are all different and include all the possible values susceptible of being obtained by the surjective function, including the result of the encryption operation.
  • In a general aspect, a method for execution, by a circuit, an operation receiving an input data and providing an output data, can include: selecting a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and providing the first data set as an intermediary result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
  • Implementations can include one or more of the following features. For example, the respective transformed data transformed by the surjective function of the data of each data set forming one of the substitution elements in the substitution table can include a same number of occurrences of all possible data that can be provided by the surjective function. The surjective function can be chosen as a function of a data leakage model of the circuit. The surjective function can be one of the following functions: an identity function, a function providing a resultant value which is then reduced to a value corresponding to a Hamming weight, and a function providing a Hamming weight of the value to which the function is applied.
  • The operation can include at least one of: a symmetrical or asymmetrical encryption or decryption operation, a signature operation, a modular or non-modular multiplication by a secret data, a logical operation Exclusive OR with a secret data, a modular exponentiation operation using a secret data as an exponent, and a modular reduction operation, using a secret data as a modulus.
  • In another general aspect, a circuit can include a processor and/or a coprocessor that is/are configured to perform an operation receiving an input data and providing an output data, and to: select a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and provide the first data set as an intermediary result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
  • Implementations can include one or more of the following features. For example, the respective transformed data transformed by the surjective function of the data of each data set forming one of the substitution elements in the substitution table can include a same number of occurrences of all possible data that can be provided by the surjective function. The surjective function can be chosen as a function of a data leakage model of the circuit. The surjective function can be one of the following functions: an identity function, a function providing a resultant value which is then reduced to a value corresponding to a Hamming weight, and a function providing a Hamming weight of the value to which the function is applied.
  • The operation can include at least one of: a symmetrical or asymmetrical encryption or decryption operation, a signature operation, a modular or non-modular multiplication by a secret data, a logical operation Exclusive OR with a secret data, a modular exponentiation operation using a secret data as an exponent, and a modular reduction operation, using a secret data as a modulus.
  • In another general aspect, a device can include a circuit arranged on a support, the circuit can be configured to perform an operation receiving an input data and providing an output data, and to: select a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and provide the first data set as an intermediary result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
  • Implementations can include one or more of the following features. For example, the respective transformed data transformed by the surjective function of the data of each data set forming one of the substitution elements in the substitution table can include a same number of occurrences of all possible data that can be provided by the surjective function. The surjective function can be chosen as a function of a data leakage model of the circuit. The surjective function can be one of the following functions: an identity function, a function providing a resultant value which is then reduced to a value corresponding to a Hamming weight, and a function providing a Hamming weight of the value to which the function is applied.
  • The operation can include at least one of: a symmetrical or asymmetrical encryption or decryption operation, a signature operation, a modular or non-modular multiplication by a secret data, a logical operation Exclusive OR with a secret data, a modular exponentiation operation using a secret data as an exponent, and a modular reduction operation, using a secret data as a modulus.
  • In another general aspect a non-transitory computer-readable medium can carry (include, have stored thereon, etc.) one or more sequences of instructions, which, when executed by one or more processors, cause the one or more processors to: perform an operation receiving an input data and providing an output data, and to: select a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and provide the first data set as an intermediary result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
  • Implementations can include one or more of the following features. For example, the respective transformed data transformed by the surjective function of the data of each data set forming one of the substitution elements in the substitution table can include a same number of occurrences of all possible data that can be provided by the surjective function. The surjective function can be chosen as a function of a data leakage model of the circuit. The surjective function can be one of the following functions: an identity function, a function providing a resultant value which is then reduced to a value corresponding to a Hamming weight, and a function providing a Hamming weight of the value to which the function is applied.
  • The operation can include at least one of: a symmetrical or asymmetrical encryption or decryption operation, a signature operation, a modular or non-modular multiplication by a secret data, a logical operation Exclusive OR with a secret data, a modular exponentiation operation using a secret data as an exponent, and a modular reduction operation, using a secret data as a modulus.

Claims (1)

1. A method for executing by a circuit an operation receiving an input data and providing an output data, the method comprising:
selecting a substitution element in a substitution table as a function of the input data or an intermediary data, the substitution element being a first data set, each substitution element in the substitution table that can be selected as a function of an input substitution data being a data set, and
providing the first data set as an intermediary result or a final result of the operation, the first data set including the output data, and being such that in a set of transformed data resulting from the application of a chosen surjective function to the first data set, the transformed output data occurs with a probability equal to the probability of occurrence of each transformed data resulting from the application of the surjective function to the other data in the first data set, the output data having a position in the first data set which is known by the circuit.
US15/439,553 2016-02-22 2017-02-22 Method of protecting a circuit against a side-channel analysis Abandoned US20170244551A1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
FR1651444A FR3048096A1 (en) 2016-02-22 2016-02-22 METHOD FOR PROTECTING A CIRCUIT AGAINST AUXILIARY CHANNEL ANALYSIS
FR1651443A FR3048086B1 (en) 2016-02-22 2016-02-22 METHOD FOR TESTING THE RESISTANCE OF A CIRCUIT TO AUXILIARY CHANNEL ANALYSIS
FR1651443 2016-02-22
FR1651445A FR3048097A1 (en) 2016-02-22 2016-02-22 METHOD FOR PROTECTING A CIRCUIT AGAINST AUXILIARY CHANNEL ANALYSIS
FR1651444 2016-02-22
FR1651445 2016-02-22

Publications (1)

Publication Number Publication Date
US20170244551A1 true US20170244551A1 (en) 2017-08-24

Family

ID=57995161

Family Applications (6)

Application Number Title Priority Date Filing Date
US15/439,562 Active 2037-08-20 US10505711B2 (en) 2016-02-22 2017-02-22 Method of protecting a circuit against a side-channel analysis
US15/439,530 Active US10243729B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis
US15/439,553 Abandoned US20170244551A1 (en) 2016-02-22 2017-02-22 Method of protecting a circuit against a side-channel analysis
US15/439,581 Expired - Fee Related US10230521B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis
US15/439,578 Active 2037-10-30 US10419206B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis of second order or more
US15/439,571 Active 2037-07-21 US10320555B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis of second order or more

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US15/439,562 Active 2037-08-20 US10505711B2 (en) 2016-02-22 2017-02-22 Method of protecting a circuit against a side-channel analysis
US15/439,530 Active US10243729B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis

Family Applications After (3)

Application Number Title Priority Date Filing Date
US15/439,581 Expired - Fee Related US10230521B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis
US15/439,578 Active 2037-10-30 US10419206B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis of second order or more
US15/439,571 Active 2037-07-21 US10320555B2 (en) 2016-02-22 2017-02-22 Method of testing the resistance of a circuit to a side channel analysis of second order or more

Country Status (4)

Country Link
US (6) US10505711B2 (en)
EP (6) EP3220306B1 (en)
KR (6) KR20170098730A (en)
CN (6) CN107103246A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10419206B2 (en) * 2016-02-22 2019-09-17 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
US11218291B2 (en) * 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
US11258579B2 (en) * 2018-02-26 2022-02-22 Stmicroelectronics (Rousset) Sas Method and circuit for implementing a substitution table
US11265145B2 (en) * 2018-02-26 2022-03-01 Stmicroelectronics (Rousset) Sas Method and device for performing substitution table operations

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL2015745B1 (en) * 2015-11-09 2017-05-26 Koninklijke Philips Nv A cryptographic device arranged to compute a target block cipher.
EP3264311B1 (en) 2016-06-28 2021-01-13 Eshard A protection method and device against a side-channel analysis
CN107547193A (en) 2016-06-28 2018-01-05 埃沙尔公司 Make replacement operation from the method for side Multiple Channel Analysis
DE102017002153A1 (en) * 2017-03-06 2018-09-06 Giesecke+Devrient Mobile Security Gmbh Transition from Boolean masking to arithmetic masking
FR3072211B1 (en) * 2017-10-11 2021-12-10 St Microelectronics Rousset METHOD OF DETECTION OF AN INJECTION OF FAULTS AND THINNING OF THE SUBSTRATE IN AN INTEGRATED CIRCUIT, AND ASSOCIATED INTEGRATED CIRCUIT
EP3502903A1 (en) 2017-12-20 2019-06-26 Eshard Method of testing resistance of a software program to a side-channel analysis
EP3557813A1 (en) * 2018-04-17 2019-10-23 Gemalto Sa Method secured against side-channel attacks performing an arithmetic operation of a cryptographic algorithm mixing boolean and arithmetic operations
CN108646072B (en) * 2018-05-16 2019-12-27 电子科技大学 Trigger generating device based on Hamming distance
DE102018130177A1 (en) 2018-11-28 2020-05-28 Infineon Technologies Ag Execution of cryptographic operations in a control unit of a vehicle
US11764940B2 (en) 2019-01-10 2023-09-19 Duality Technologies, Inc. Secure search of secret data in a semi-trusted environment using homomorphic encryption
CN109921892A (en) * 2019-01-15 2019-06-21 中国科学院信息工程研究所 A kind of various dimensions side channel leakage appraisal procedure and system based on test vector
DE102020102796A1 (en) 2020-02-04 2021-08-05 Infineon Technologies Ag DATA PROCESSING DEVICE AND METHOD FOR PROCESSING SECRET DATA
CN111767584B (en) * 2020-06-09 2022-01-25 北京智芯微电子科技有限公司 Safety microprocessor with built-in random number generator and safety chip
CN111984476B (en) * 2020-06-29 2023-08-01 百度在线网络技术(北京)有限公司 Test method and device
FR3119252B1 (en) * 2021-01-26 2023-01-06 Commissariat A L’Energie Atomique Et Aux Energies Alternatives Device for protection and supervision of an electronic system comprising at least one electronic component. Associated method of protecting and monitoring the integrity of the electronic system and the device, and jamming attacks.

Citations (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797922A (en) * 1984-11-02 1989-01-10 Borer Electronics Ag Method of, and apparatus for, transforming a digital data sequence into an encoded form
US5003596A (en) * 1989-08-17 1991-03-26 Cryptech, Inc. Method of cryptographically transforming electronic digital data from one form to another
US20010002486A1 (en) * 1998-01-02 2001-05-31 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
US6298442B1 (en) * 1998-06-03 2001-10-02 Cryptography Research, Inc. Secure modular exponentiation with leak minimization for smartcards and other cryptosystems
US20020124178A1 (en) * 1998-01-02 2002-09-05 Kocher Paul C. Differential power analysis method and apparatus
US20020154767A1 (en) * 2001-02-22 2002-10-24 Takashi Endo Tamper resistance device
US20030044003A1 (en) * 2001-08-14 2003-03-06 International Business Machines Corporation Space-efficient, side-channel attack resistant table lookups
US20030048903A1 (en) * 2001-06-13 2003-03-13 Fujitsu Limited Encryption secured against DPA
US6539092B1 (en) * 1998-07-02 2003-03-25 Cryptography Research, Inc. Leak-resistant cryptographic indexed key update
US6668325B1 (en) * 1997-06-09 2003-12-23 Intertrust Technologies Obfuscation techniques for enhancing software security
US20040025032A1 (en) * 2000-02-18 2004-02-05 Chow Stanley T Method and system for resistance to statiscal power analysis
US6914986B2 (en) * 2000-06-02 2005-07-05 Gemplus Countermeasure method in an electronic component using a public key cryptography algorithm on an elliptic curve
US20050152539A1 (en) * 2004-01-12 2005-07-14 Brickell Ernie F. Method of protecting cryptographic operations from side channel attacks
US7065788B2 (en) * 2002-01-15 2006-06-20 Fujitsu Limited Encryption operating apparatus and method having side-channel attack resistance
US20060236123A1 (en) * 2005-04-15 2006-10-19 Lsi Logic Corporation Security application using silicon fingerprint identification
US7162033B1 (en) * 1999-03-26 2007-01-09 Gemplus Countermeasure procedures in an electronic component implementing an elliptical curve type public key encryption algorithm
US7286666B1 (en) * 1999-03-26 2007-10-23 Gemplus Countermeasure method in an electric component implementing an elliptical curve type public key cryptography algorithm
US20080019503A1 (en) * 2005-11-21 2008-01-24 Vincent Dupaquis Encryption protection method
US20090041229A1 (en) * 2007-08-07 2009-02-12 Atmel Corporation Elliptic Curve Point Transformations
US20090074181A1 (en) * 2004-07-22 2009-03-19 Herve Pelletier Method and device for executing crytographic calculation
US20090083521A1 (en) * 2005-04-21 2009-03-26 Taichi Sato Program illegiblizing device and method
US20090092245A1 (en) * 2006-03-31 2009-04-09 Axalto Sa Protection Against Side Channel Attacks
US20090279688A1 (en) * 2008-05-06 2009-11-12 Harris Corporation Closed galois field cryptographic system
US20100008498A1 (en) * 2006-09-01 2010-01-14 Taizo Shirai Encryption processing apparatus, encryption method, and computer program
US20100306525A1 (en) * 2009-05-28 2010-12-02 Microsoft Corporation Efficient distribution of computation in key agreement
US20110161670A1 (en) * 2009-12-30 2011-06-30 Microsoft Corporation Reducing Leakage of Information from Cryptographic Systems
US20110261958A1 (en) * 2010-04-27 2011-10-27 Research In Motion Limited Table splitting for cryptographic processes
US20120106732A1 (en) * 2010-11-02 2012-05-03 Stmicroelectronics (Rousset) Sas Cryptographic countermeasure method by deriving a secret data
US20120134493A1 (en) * 2009-06-30 2012-05-31 Morpho Cryptography by parameterizing on elliptic curve
US20120263377A1 (en) * 2009-08-20 2012-10-18 Graham Finlayson Image reconstruction method and system
US8386800B2 (en) * 2009-12-04 2013-02-26 Cryptography Research, Inc. Verifiable, leak-resistant encryption and decryption
US20130067212A1 (en) * 2011-09-14 2013-03-14 Augustin J. Farrugia Securing implementation of cryptographic algorithms using additional rounds
US20130101046A1 (en) * 2011-10-24 2013-04-25 Research In Motion Limited Significance map encoding and decoding using partition selection
US8543835B2 (en) * 2006-07-12 2013-09-24 Irdeto B.V. Tamper resistance of a digital data processing unit
US20130300591A1 (en) * 2011-01-14 2013-11-14 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Entropy encoding and decoding scheme
US8627272B1 (en) * 2001-10-25 2014-01-07 The Mathworks, Inc. Traceability in a modeling environment
US8689087B2 (en) * 2008-01-11 2014-04-01 Orange Method and entity for probabilistic symmetrical encryption
US20140245455A1 (en) * 2013-02-04 2014-08-28 Mirko Randic Privacy Preserving Interaction process for Collective Outcome
US20150236853A1 (en) * 2014-02-17 2015-08-20 Infineon Technologies Ag Method for permuting data elements and permuting apparatus
US20150270949A1 (en) * 2014-03-19 2015-09-24 Nxp B.V. Protecting a white-box implementation against attacks
US20150280906A1 (en) * 2014-03-27 2015-10-01 Samsung Israel Research Corporation Algebraic manipulation detection codes from algebraic curves
US20160063516A1 (en) * 2014-08-29 2016-03-03 The Nielsen Company (Us), Llc Methods and apparatus to estimate commercial characteristics based on geospatial data
US20160140340A1 (en) * 2014-11-19 2016-05-19 The Mitre Corporation Side-channel leakage evaluator and analysis kit
US20160239647A1 (en) * 2007-02-23 2016-08-18 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
US20160277179A1 (en) * 2015-03-20 2016-09-22 Cryptography Research, Inc. Multiplicative blinding for cryptographic operations
US20170033921A1 (en) * 2015-07-30 2017-02-02 Nxp, B.V. Encoding Values by Pseudo-Random Mask
US20170126398A1 (en) * 2014-03-31 2017-05-04 Irdeto B.V. Obfuscated performance of a predetermined function
EP3166013A1 (en) * 2015-11-04 2017-05-10 Nxp B.V. Modular exponentiation using randomized addition chains
US20170187519A1 (en) * 2015-12-29 2017-06-29 Secure-Ic Sas Method and system for protecting a cryptographic operation
US9704243B2 (en) * 2012-10-26 2017-07-11 Brainlab Ag Matching patient images and images of an anatomical atlas
US9838198B2 (en) * 2014-03-19 2017-12-05 Nxp B.V. Splitting S-boxes in a white-box implementation to resist attacks
US20180189550A1 (en) * 2015-03-21 2018-07-05 Mine One Gmbh Facial signature methods, systems and software
US20180365195A1 (en) * 2015-12-11 2018-12-20 Institut Mines-Telecom Methods and devices for estimating secret values

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6116768A (en) * 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
FR2793571B1 (en) * 1999-05-11 2003-10-31 Gemplus Card Int COUNTER-MEASUREMENT METHOD IN AN ELECTRONIC COMPONENT USING A SECRET AND DYNAMIC KEY CRYPTOGRAPHY ALGORITHM
US6760440B1 (en) * 1999-12-11 2004-07-06 Honeywell International Inc. One's complement cryptographic combiner
JP2002236152A (en) * 2001-02-08 2002-08-23 Mitsubishi Electric Corp Testing device and test method of semiconductor integrated circuit
DE10201449C1 (en) * 2002-01-16 2003-08-14 Infineon Technologies Ag Arithmetic unit, method for performing an operation with an encrypted operand, carry select adder and cryptography processor
US6825785B1 (en) * 2002-02-28 2004-11-30 Silicon Laboratories, Inc. Digital expander apparatus and method for generating multiple analog control signals particularly useful for controlling a sub-varactor array of a voltage controlled oscillator
CA2486713A1 (en) * 2002-05-23 2003-12-04 Atmel Corporation Advanced encryption standard (aes) hardware cryptographic engine
US20040086117A1 (en) * 2002-06-06 2004-05-06 Petersen Mette Vesterager Methods for improving unpredictability of output of pseudo-random number generators
US8102997B2 (en) * 2004-03-29 2012-01-24 Stmicroelectronics S.A. Processor for executing an AES-type algorithm
EP1768040A4 (en) * 2004-07-07 2008-05-21 Mitsubishi Electric Corp Electric power calculating apparatus, electric power calculating method, tamper resistance evaluating apparatus, and tamper resistance evaluating method
JP4824319B2 (en) * 2005-01-21 2011-11-30 ルネサスエレクトロニクス株式会社 Failure detection apparatus and method, and signal extraction circuit
JP4815141B2 (en) * 2005-03-29 2011-11-16 富士通株式会社 Circuit abnormal operation detection system
JP5384781B2 (en) * 2005-08-18 2014-01-08 日本電気株式会社 Secret communication system and method for generating shared secret information
JP4241765B2 (en) * 2006-03-01 2009-03-18 株式会社日立国際電気 Transmitter and carrier leak detection method
US8190299B2 (en) * 2006-07-19 2012-05-29 Rovnyak Steven M Integrated and optimized distributed generation and interconnect system controller
US20080091975A1 (en) * 2006-10-17 2008-04-17 Konstantin Kladko Method and system for side-channel testing a computing device and for improving resistance of a computing device to side-channel attacks
US8160245B2 (en) * 2007-03-07 2012-04-17 Research In Motion Limited Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting
JP2008252299A (en) * 2007-03-29 2008-10-16 Hitachi Ltd Encryption processing system and encryption processing method
US20100246808A1 (en) * 2007-12-05 2010-09-30 Nec Corporation Side channel attack tolerance evaluation apparatus, method and program
US8848903B2 (en) * 2008-02-06 2014-09-30 Nec Corporation Device for evaluating side-channel attack resistance, method for evaluating side-channel attack resistance, and program for evaluating side-channel attack
US20100086171A1 (en) * 2008-10-02 2010-04-08 Silverbrook Research Pty Ltd Method of imaging coding pattern having merged data symbols
US8316338B2 (en) * 2009-02-09 2012-11-20 The United States Of America, As Represented By The Secretary Of Commerce, The National Institute Of Standards & Technology Method of optimizing combinational circuits
CN101562522A (en) * 2009-05-06 2009-10-21 深圳先进技术研究院 Realization method of elliptic curve cryptosystem for preventing side-channel attack
JP2010288233A (en) * 2009-06-15 2010-12-24 Toshiba Corp Encryption processing apparatus
US8572406B2 (en) * 2010-03-31 2013-10-29 Inside Contactless Integrated circuit protected against horizontal side channel analysis
EP2365659B1 (en) * 2010-03-01 2017-04-12 Inside Secure Method to test the resistance of an integrated circuit to a side channel attack
US8457919B2 (en) * 2010-03-31 2013-06-04 Inside Secure Process for testing the resistance of an integrated circuit to a side channel analysis
CN103370716B (en) * 2010-11-03 2016-10-19 维吉尼亚技术知识产权公司 Electric power fingerprint is used to monitor the method and system of integrity based on computer system
FR2972064B1 (en) * 2011-02-25 2013-03-15 Inside Secure CRYPTOGRAPHY METHOD COMPRISING AN EXPONENTIATION OPERATION
US20130086328A1 (en) * 2011-06-13 2013-04-04 Paneve, Llc General Purpose Digital Data Processor, Systems and Methods
JP5848106B2 (en) * 2011-11-28 2016-01-27 ルネサスエレクトロニクス株式会社 Semiconductor device and IC card
US9906360B2 (en) * 2012-03-30 2018-02-27 Irdeto B.V. Securing accessible systems using variable dependent coding
KR20130111721A (en) * 2012-04-02 2013-10-11 삼성전자주식회사 Method of generating booth code, computer system and computer readable medium, and digital signal processor
US9773111B2 (en) * 2012-08-14 2017-09-26 Empire Technology Development Llc Software-based side-channel attack prevention
US9015500B2 (en) * 2013-01-16 2015-04-21 Qualcomm Incorporated Method and apparatus for using dynamic voltage and frequency scaling with circuit-delay based integrated circuit identification
US20140249799A1 (en) * 2013-03-04 2014-09-04 Microsoft Corporation Relational similarity measurement
US20140281208A1 (en) * 2013-03-13 2014-09-18 Silicon Graphics International Corp. Associative Look-up Instruction for a Processor Instruction Set Architecture
EP2972877B1 (en) * 2013-03-15 2021-06-16 Power Fingerprinting Inc. Systems, methods, and apparatus to enhance the integrity assessment when using power fingerprinting systems for computer-based systems
CN105229612B (en) * 2013-03-18 2018-06-26 纽约市哥伦比亚大学理事会 The detection performed using the abnormal program of hardware based microarchitecture data
US9524399B1 (en) * 2013-04-01 2016-12-20 Secturion Systems, Inc. Multi-level independent security architecture
US9237015B2 (en) * 2013-07-24 2016-01-12 Cisco Technology, Inc. Compact and efficient communication security through combining anti-replay with encryption
US9087192B2 (en) * 2013-09-10 2015-07-21 Infineon Technologies Ag Electronic circuit and method for monitoring a data processing
CN103647638A (en) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 DES masking method for resisting side-channel attack
CN103647639A (en) * 2013-12-03 2014-03-19 北京中电华大电子设计有限责任公司 Method for symmetric cryptographic algorithm to resist side-channel analysis
US10055587B2 (en) * 2013-12-23 2018-08-21 The Trustees Of Columbia University In The City Of New York Implementations to facilitate hardware trust and security
US20150222421A1 (en) * 2014-02-03 2015-08-06 Qualcomm Incorporated Countermeasures against side-channel attacks on cryptographic algorithms
DE102014207296A1 (en) * 2014-04-16 2015-10-22 Robert Bosch Gmbh Apparatus and method for processing data
US9418231B2 (en) * 2014-06-03 2016-08-16 Empire Technology Development Llc Perturbation of field programmable gate array code to prevent side channel attack
CN104202145B (en) * 2014-09-04 2018-07-03 成都信息工程学院 For the method for the selection plaintext or cipher text side channel energy analytical attack of SM4 cryptographic algorithms round function output
US9740863B2 (en) * 2014-11-25 2017-08-22 Intel Corporation Protecting a secure boot process against side channel attacks
WO2016083864A1 (en) * 2014-11-25 2016-06-02 Institut Mines-Telecom Methods for recovering secret data of a cryptographic device and for evaluating the security of such a device
US10333696B2 (en) * 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
CN104717054B (en) * 2015-02-12 2017-11-14 中国科学院信息工程研究所 A kind of password realizes side channel safety quick determination method
CN105262726B (en) * 2015-09-10 2018-10-19 中国人民解放军信息工程大学 A kind of APT attack detection methods based on the analysis of big data behavior sequence
US10204532B2 (en) * 2015-09-25 2019-02-12 Intel Corporation Multiple input cryptographic engine
US9794062B2 (en) * 2015-10-08 2017-10-17 The Boeing Company Scrambled tweak mode of blockciphers for differential power analysis resistant encryption
CN105553638A (en) * 2015-12-07 2016-05-04 成都芯安尤里卡信息科技有限公司 Second-order frequency domain power analysis attack method for SM4 first-order mask algorithm
EP3220306B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis
EP3226460A1 (en) * 2016-04-01 2017-10-04 Institut Mines-Telecom Secret key estimation methods and devices
CN107547193A (en) * 2016-06-28 2018-01-05 埃沙尔公司 Make replacement operation from the method for side Multiple Channel Analysis
US10256973B2 (en) * 2016-09-30 2019-04-09 Intel Corporation Linear masking circuits for side-channel immunization of advanced encryption standard hardware
US10121011B2 (en) * 2016-11-16 2018-11-06 The United States Of America As Represented By The Secretary Of The Air Force Apparatus, method and article of manufacture for partially resisting hardware trojan induced data leakage in sequential logics

Patent Citations (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797922A (en) * 1984-11-02 1989-01-10 Borer Electronics Ag Method of, and apparatus for, transforming a digital data sequence into an encoded form
US5003596A (en) * 1989-08-17 1991-03-26 Cryptech, Inc. Method of cryptographically transforming electronic digital data from one form to another
US6668325B1 (en) * 1997-06-09 2003-12-23 Intertrust Technologies Obfuscation techniques for enhancing software security
US20010002486A1 (en) * 1998-01-02 2001-05-31 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
US6304658B1 (en) * 1998-01-02 2001-10-16 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
US20020124178A1 (en) * 1998-01-02 2002-09-05 Kocher Paul C. Differential power analysis method and apparatus
US6298442B1 (en) * 1998-06-03 2001-10-02 Cryptography Research, Inc. Secure modular exponentiation with leak minimization for smartcards and other cryptosystems
US6539092B1 (en) * 1998-07-02 2003-03-25 Cryptography Research, Inc. Leak-resistant cryptographic indexed key update
US7162033B1 (en) * 1999-03-26 2007-01-09 Gemplus Countermeasure procedures in an electronic component implementing an elliptical curve type public key encryption algorithm
US7286666B1 (en) * 1999-03-26 2007-10-23 Gemplus Countermeasure method in an electric component implementing an elliptical curve type public key cryptography algorithm
US20040025032A1 (en) * 2000-02-18 2004-02-05 Chow Stanley T Method and system for resistance to statiscal power analysis
US6914986B2 (en) * 2000-06-02 2005-07-05 Gemplus Countermeasure method in an electronic component using a public key cryptography algorithm on an elliptic curve
US20020154767A1 (en) * 2001-02-22 2002-10-24 Takashi Endo Tamper resistance device
US20030048903A1 (en) * 2001-06-13 2003-03-13 Fujitsu Limited Encryption secured against DPA
US20030044003A1 (en) * 2001-08-14 2003-03-06 International Business Machines Corporation Space-efficient, side-channel attack resistant table lookups
US8627272B1 (en) * 2001-10-25 2014-01-07 The Mathworks, Inc. Traceability in a modeling environment
US7065788B2 (en) * 2002-01-15 2006-06-20 Fujitsu Limited Encryption operating apparatus and method having side-channel attack resistance
US20050152539A1 (en) * 2004-01-12 2005-07-14 Brickell Ernie F. Method of protecting cryptographic operations from side channel attacks
US20090074181A1 (en) * 2004-07-22 2009-03-19 Herve Pelletier Method and device for executing crytographic calculation
US20060236123A1 (en) * 2005-04-15 2006-10-19 Lsi Logic Corporation Security application using silicon fingerprint identification
US20090083521A1 (en) * 2005-04-21 2009-03-26 Taichi Sato Program illegiblizing device and method
US20080019503A1 (en) * 2005-11-21 2008-01-24 Vincent Dupaquis Encryption protection method
US20090092245A1 (en) * 2006-03-31 2009-04-09 Axalto Sa Protection Against Side Channel Attacks
US8543835B2 (en) * 2006-07-12 2013-09-24 Irdeto B.V. Tamper resistance of a digital data processing unit
US20100008498A1 (en) * 2006-09-01 2010-01-14 Taizo Shirai Encryption processing apparatus, encryption method, and computer program
US20160239647A1 (en) * 2007-02-23 2016-08-18 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
US20090041229A1 (en) * 2007-08-07 2009-02-12 Atmel Corporation Elliptic Curve Point Transformations
US8689087B2 (en) * 2008-01-11 2014-04-01 Orange Method and entity for probabilistic symmetrical encryption
US20090279688A1 (en) * 2008-05-06 2009-11-12 Harris Corporation Closed galois field cryptographic system
US20100306525A1 (en) * 2009-05-28 2010-12-02 Microsoft Corporation Efficient distribution of computation in key agreement
US20120134493A1 (en) * 2009-06-30 2012-05-31 Morpho Cryptography by parameterizing on elliptic curve
US8824670B2 (en) * 2009-06-30 2014-09-02 Morpho Cryptography by parameterizing on elliptic curve
US20120263377A1 (en) * 2009-08-20 2012-10-18 Graham Finlayson Image reconstruction method and system
US9424231B2 (en) * 2009-08-20 2016-08-23 Graham Finlayson Image reconstruction method and system
US8386800B2 (en) * 2009-12-04 2013-02-26 Cryptography Research, Inc. Verifiable, leak-resistant encryption and decryption
US20110161670A1 (en) * 2009-12-30 2011-06-30 Microsoft Corporation Reducing Leakage of Information from Cryptographic Systems
US20110261958A1 (en) * 2010-04-27 2011-10-27 Research In Motion Limited Table splitting for cryptographic processes
US20140079214A1 (en) * 2010-11-02 2014-03-20 Stmicroelectronics (Rousset) Sas Cryptographic countermeasure method by deriving a secret data
US20120106732A1 (en) * 2010-11-02 2012-05-03 Stmicroelectronics (Rousset) Sas Cryptographic countermeasure method by deriving a secret data
US20130300591A1 (en) * 2011-01-14 2013-11-14 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Entropy encoding and decoding scheme
US20130067212A1 (en) * 2011-09-14 2013-03-14 Augustin J. Farrugia Securing implementation of cryptographic algorithms using additional rounds
US20130101046A1 (en) * 2011-10-24 2013-04-25 Research In Motion Limited Significance map encoding and decoding using partition selection
US9704243B2 (en) * 2012-10-26 2017-07-11 Brainlab Ag Matching patient images and images of an anatomical atlas
US20140245455A1 (en) * 2013-02-04 2014-08-28 Mirko Randic Privacy Preserving Interaction process for Collective Outcome
US20150236853A1 (en) * 2014-02-17 2015-08-20 Infineon Technologies Ag Method for permuting data elements and permuting apparatus
US20150270949A1 (en) * 2014-03-19 2015-09-24 Nxp B.V. Protecting a white-box implementation against attacks
US9838198B2 (en) * 2014-03-19 2017-12-05 Nxp B.V. Splitting S-boxes in a white-box implementation to resist attacks
US20150280906A1 (en) * 2014-03-27 2015-10-01 Samsung Israel Research Corporation Algebraic manipulation detection codes from algebraic curves
US20170126398A1 (en) * 2014-03-31 2017-05-04 Irdeto B.V. Obfuscated performance of a predetermined function
US20160063516A1 (en) * 2014-08-29 2016-03-03 The Nielsen Company (Us), Llc Methods and apparatus to estimate commercial characteristics based on geospatial data
US20160140340A1 (en) * 2014-11-19 2016-05-19 The Mitre Corporation Side-channel leakage evaluator and analysis kit
US20160277179A1 (en) * 2015-03-20 2016-09-22 Cryptography Research, Inc. Multiplicative blinding for cryptographic operations
US20180189550A1 (en) * 2015-03-21 2018-07-05 Mine One Gmbh Facial signature methods, systems and software
US20170033921A1 (en) * 2015-07-30 2017-02-02 Nxp, B.V. Encoding Values by Pseudo-Random Mask
EP3166013A1 (en) * 2015-11-04 2017-05-10 Nxp B.V. Modular exponentiation using randomized addition chains
US20180365195A1 (en) * 2015-12-11 2018-12-20 Institut Mines-Telecom Methods and devices for estimating secret values
US20170187519A1 (en) * 2015-12-29 2017-06-29 Secure-Ic Sas Method and system for protecting a cryptographic operation

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10419206B2 (en) * 2016-02-22 2019-09-17 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
US11218291B2 (en) * 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
US11258579B2 (en) * 2018-02-26 2022-02-22 Stmicroelectronics (Rousset) Sas Method and circuit for implementing a substitution table
US11265145B2 (en) * 2018-02-26 2022-03-01 Stmicroelectronics (Rousset) Sas Method and device for performing substitution table operations
US20220085974A1 (en) * 2018-02-26 2022-03-17 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
US11824969B2 (en) * 2018-02-26 2023-11-21 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation

Also Published As

Publication number Publication date
EP3220305B1 (en) 2018-10-31
CN107102919A (en) 2017-08-29
EP3220304B1 (en) 2018-11-07
US10505711B2 (en) 2019-12-10
KR20170098730A (en) 2017-08-30
US20170244550A1 (en) 2017-08-24
US20170244548A1 (en) 2017-08-24
EP3208789B1 (en) 2020-08-05
CN107104784A (en) 2017-08-29
US10230521B2 (en) 2019-03-12
US10320555B2 (en) 2019-06-11
US10419206B2 (en) 2019-09-17
US20170244547A1 (en) 2017-08-24
CN107104785A (en) 2017-08-29
CN107103229A (en) 2017-08-29
US20170244552A1 (en) 2017-08-24
KR20170098733A (en) 2017-08-30
EP3220305A1 (en) 2017-09-20
US10243729B2 (en) 2019-03-26
EP3220306B1 (en) 2018-11-07
EP3220304A1 (en) 2017-09-20
KR20170098734A (en) 2017-08-30
US20170244549A1 (en) 2017-08-24
EP3208789A1 (en) 2017-08-23
CN107104783A (en) 2017-08-29
KR20170098732A (en) 2017-08-30
KR20170098731A (en) 2017-08-30
EP3208788B1 (en) 2020-06-03
EP3217307B1 (en) 2018-11-07
EP3208788A1 (en) 2017-08-23
EP3220306A1 (en) 2017-09-20
EP3217307A1 (en) 2017-09-13
KR20170098729A (en) 2017-08-30
CN107103246A (en) 2017-08-29

Similar Documents

Publication Publication Date Title
US10243729B2 (en) Method of testing the resistance of a circuit to a side channel analysis
US10644873B2 (en) Method for protecting substitution operation against side-channel analysis
US11036891B2 (en) Testing resistance of a circuit to a side channel analysis
Tunstall Smart card security
US11070359B2 (en) Protection method and device against a side-channel analysis
EP3264667A1 (en) A method for protecting a substitution operation against a side-channel analysis

Legal Events

Date Code Title Description
AS Assignment

Owner name: ESHARD, FRANCE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CROUEE, HUGUES THIEBEAULD DE LA;REEL/FRAME:042132/0802

Effective date: 20170327

AS Assignment

Owner name: ESHARD, FRANCE

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE INVENTORS NAME PREVIOUSLY RECORDED ON REEL 042132 FRAME 0802. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF ASSIGNOR'S INTEREST;ASSIGNOR:THIEBEAULD DE LA CROUEE, HUGUES;REEL/FRAME:045373/0492

Effective date: 20170327

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STCV Information on status: appeal procedure

Free format text: NOTICE OF APPEAL FILED

STCV Information on status: appeal procedure

Free format text: APPEAL BRIEF (OR SUPPLEMENTAL BRIEF) ENTERED AND FORWARDED TO EXAMINER

STCV Information on status: appeal procedure

Free format text: EXAMINER'S ANSWER TO APPEAL BRIEF MAILED

STCV Information on status: appeal procedure

Free format text: EXAMINER'S ANSWER TO APPEAL BRIEF MAILED

STCV Information on status: appeal procedure

Free format text: ON APPEAL -- AWAITING DECISION BY THE BOARD OF APPEALS

STCV Information on status: appeal procedure

Free format text: BOARD OF APPEALS DECISION RENDERED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION