Patents by Inventor Damien Courousse

Damien Courousse has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 11704128
    Abstract: An execution method includes supplying of a machine code, the machine code being formed by a succession of base blocks and each base block being associated with a signature and comprising instructions to be protected. Each instruction to be protected is immediately preceded or followed by an instruction for constructing the value of the signature associated with the base block. Each construction instruction is coded on strictly less than N bits, and each word of the machine code which comprises at least one portion of one of said instructions to be protected also comprises one of the construction instructions so that A is not possible to load an instruction to be protected into an execution file, without at the same time loading a construction instruction which modifies the value of the signature associated with the base block when it is executed.
    Type: Grant
    Filed: March 20, 2018
    Date of Patent: July 18, 2023
    Assignees: COMMISSARIAT A L'ENERGIE ATOMIQUE ET AUX ENERGIES ALTERNATIVES, SORBONNE UNIVERSITE, CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE
    Inventors: Damien Courousse, Karine Heydemann, Thierno Barry
  • Patent number: 11442738
    Abstract: An execution method comprises the following operations: —every time an instruction to be protected of a preceding basic block is loaded, constructing a new value of a signature of this preceding basic block from the value of this instruction to be protected and the preceding value of the signature. The method further includes loading an initialization vector contained in a subsequent basic block and calculating, from said loaded initialization vector, a value reached for signing the preceding basic block. The method also includes comparing the constructed value of the signature with the expected value of this signature, and—only if these values do not match, triggering the signaling of a fault during the execution of the machine code.
    Type: Grant
    Filed: September 14, 2018
    Date of Patent: September 13, 2022
    Assignee: COMMISSARIAT A L'ENERGIE ATOMIQUE ET AUX ENERGIES ALTERNATIVES
    Inventor: Damien Courousse
  • Patent number: 11157659
    Abstract: A method for executing a polymorphic machine code, wherein: for each branching address at which a base block of a flow of generated instructions starts, the microprocessor automatically adds, in the generated flow of instructions, a renewal instruction suitable, when it is executed, for triggering the renewal of an initialization vector of a module for decryption by flow with a specific value associated with this branching address, then a flow encryption module encrypts the flow of instructions as it is generated and, during this encryption, each base block is encrypted using a specific value associated with the branching address at which it starts. Only the instruction flow encrypted in this way is recorded in the main memory. During execution of the encrypted instruction flow, the added renewal instructions are executed as they are encountered.
    Type: Grant
    Filed: December 14, 2017
    Date of Patent: October 26, 2021
    Assignee: COMMISSARIAT A L'ENERGIE ATOMIQUE ET AUX ENERGIES ALTERNATIVES
    Inventors: Damien Courousse, Thomas Hiscock, Olivier Savry
  • Patent number: 10903978
    Abstract: A method of encrypting messages in clear with the aid of a secret key, the method of encryption implementing at least one substitution layer using a substitution table and a diffusion layer using a diffusion matrix, the substitution layer and/or the diffusion layer being configured in a dynamic manner by a control parameter obtained by combining the secret key with the output word from a counter and by performing a non-invertible transformation on the combination. The counter is incremented at least once between two successive plaintext messages. The configuration of the substitution layer is manifested by an identical permutation of bits of each element of the substitution table and the configuration of the diffusion layer is manifested by a permutation of the elements of the diffusion matrix.
    Type: Grant
    Filed: December 2, 2015
    Date of Patent: January 26, 2021
    Assignee: COMMISSARIAT A L'ENERGIE ATOMIQUE ET AUX ENERGIES ALTERNATIVES
    Inventors: Hassan Noura, Damien Courousse
  • Patent number: 10146565
    Abstract: A method for executing a program includes: storing, in a table associated with each address of a specialized code of a parameterized function, a value of each of specialized parameters for generating the specialized code, and each time the address of a specialized code must be modified, deleted from, or added to the table, a microprocessor generates and records in a memory a search routine written in machine language of the microprocessor, this search routine containing, coded as constants, each address and each specialized parameter value stored in the table, such that the search routine does not include any reading operation of the value of a specialized parameter or of the address of a specialized code outside the continuous address range in which this search routine is recorded, and the microprocessor runs this recorded search routine directly.
    Type: Grant
    Filed: June 28, 2016
    Date of Patent: December 4, 2018
    Assignee: COMMISSARIAT À L'ÉNERGIE ATOMIQUE ET AUX ÉNERGIES ALTERNATIVES
    Inventors: Caroline Queva, Damien Courousse, Yves Lhuillier
  • Patent number: 10140135
    Abstract: A method for executing a program including updating a value of a first counter each time a parameterized function is implemented with a first specific value of a parameter; checking whether the value of the first counter exceeds a first precalculated threshold, and in response, generating a specialized code for this function; and executing the preceding operations replacing the first specific value, the first counter, and the first precalculated threshold by a second specific value, a second counter and a second precalculated threshold, respectively; the first precalculated threshold being calculated on the basis of an execution outlay when the first specific value is used, the second precalculated threshold being calculated on the basis of an execution overlay when the second specific value is used.
    Type: Grant
    Filed: June 28, 2016
    Date of Patent: November 27, 2018
    Assignee: COMMISSARIAT A L'ENERGIE ATOMIQUE ET AUX ENERGIES ALTERNATIVES
    Inventors: Caroline Queva, Damien Courousse, Yves Lhuillier
  • Patent number: 9489315
    Abstract: Executing polymorphic binary code of a predetermined function includes acquiring polymorphic binary code of the function, the code having instruction blocks and control instructions. One block acquires a random number; the other defines a specific generator that generates target instructions to execute the function. The control instructions place the target instructions in memory. Each instruction has an opcode that codes a nature of an operation to be executed, and operands that define parameters of the operation. The generator incorporates coding variants of the function and selection instructions. Each variant generates instructions that perform the function. These instructions differ from each other and enable choosing a variant, based on the random number, to generate the target instructions. The choice is made only between different coding variants of the predetermined function.
    Type: Grant
    Filed: October 1, 2014
    Date of Patent: November 8, 2016
    Assignee: Commissariat à l'énergie atomique et aux énergies alternatives
    Inventor: Damien Courousse
  • Publication number: 20150095659
    Abstract: Executing polymorphic binary code of a predetermined function includes acquiring polymorphic binary code of the function, the code having instruction blocks and control instructions. One block acquires a random number; the other defines a specific generator that generates target instructions to execute the function. The control instructions place the target instructions in memory. Each instruction has an opcode that codes a nature of an operation to be executed, and operands that define parameters of the operation. The generator incorporates coding variants of the function and selection instructions. Each variant generates instructions that perform the function. These instructions differ from each other and enable choosing a variant, based on the random number, to generate the target instructions. The choice is made only between different coding variants of the predetermined function.
    Type: Application
    Filed: October 1, 2014
    Publication date: April 2, 2015
    Inventor: Damien Courousse