Patents by Inventor Daniel F. Reynaud

Daniel F. Reynaud 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: 9721120
    Abstract: An obfuscated program can be configured to resist attacks in which an attacker directly calls a non-entry function by verifying that an execution path to the function is an authorized execution path. To detect an unauthorized execution order, a secret value is embedded in each function along an authorized execution path. At runtime, the secrets are combined to generate a runtime representation of the execution path, and the runtime representation is verified against an expected value. To perform the verification, a verification polynomial is evaluated using the runtime representation as input. A verification value result of zero means the execution path is an authorized execution path.
    Type: Grant
    Filed: May 14, 2013
    Date of Patent: August 1, 2017
    Assignee: Apple Inc.
    Inventors: Jon McLachlan, Julien Lerouge, Daniel F. Reynaud, Eric D. Laspe
  • Patent number: 9424049
    Abstract: Methods, media and systems that use an encoded opaque pointer in an API between a client process and a library process. An encoded opaque pointer, in one embodiment, can be received by the library process from the client process, and the library process can decode the opaque pointer to obtain an address in memory containing a data structure pointed to by the opaque pointer. The library process can operate on the data structure to create a revised or processed data structure, stored in the same or different address in heap memory or stack memory, and the library process can encode and return a new opaque pointer, for the processed data structure, to the client process.
    Type: Grant
    Filed: September 14, 2012
    Date of Patent: August 23, 2016
    Assignee: Apple Inc.
    Inventors: Augustin J. Farrugia, Daniel F. Reynaud, Gianpaolo Fasoli, Jonathan Gregory McLachlan, Julien Lerouge
  • Patent number: 9336370
    Abstract: A method and an apparatus that provide rewriting code to dynamically mask program data statically embedded in a first code are described. The program data can be used in multiple instructions in the first code. A code location (e.g. an optimal code location) in the first code can be determined for injecting the rewriting code. The code location may be included in two or more execution paths of first code. Each execution path can have at least one of the instructions using the program data. A second code may be generated based on the first code inserted with the rewriting code at the optimal code location. The second code can include instructions using the program data dynamically masked by the rewriting code. When executed by a processor, the first code and the second code can generate identical results.
    Type: Grant
    Filed: December 6, 2012
    Date of Patent: May 10, 2016
    Assignee: Apple Inc.
    Inventors: Benoit Chevallier-Mames, Daniel F. Reynaud, Jonathan G. McLachlan, Julien Lerouge, Mathieu Ciet, Thomas Icart
  • Patent number: 9268677
    Abstract: Techniques, methods, systems, and computer-readable media for allocating and managing dynamically obfuscated heap memory allocations are described. In one embodiment a memory manager in a data processing system contains an addressor, to determine a first address of a program object in a first memory address space, and one or more encoders, to abstract memory access to the program object using the first address such that layout of the object data in the first address space differs from the layout of the object in a second address space. In one embodiment, a runtime system modifies object code of an executable file to include encoder routines to abstract memory accesses to data in an obfuscated heap. In one embodiment, a compiler system using an intermediate representation of a high level program generates an intermediate representation of a high level program capable of performing memory writes and memory reads using obfuscation encoder routines.
    Type: Grant
    Filed: October 24, 2012
    Date of Patent: February 23, 2016
    Assignee: Apple Inc.
    Inventors: Jonathan G. McLachlan, Julien Lerouge, Daniel F. Reynaud
  • Publication number: 20140344924
    Abstract: An obfuscated program can be configured to resist attacks in which an attacker directly calls a non-entry function by verifying that an execution path to the function is an authorized execution path. To detect an unauthorized execution order, a secret value is embedded in each function along an authorized execution path. At runtime, the secrets are combined to generate a runtime representation of the execution path, and the runtime representation is verified against an expected value. To perform the verification, a verification polynomial is evaluated using the runtime representation as input. A verification value result of zero means the execution path is an authorized execution path.
    Type: Application
    Filed: May 14, 2013
    Publication date: November 20, 2014
    Applicant: Apple Inc.
    Inventors: Jon McLachlan, Julien Lerouge, Daniel F. Reynaud, Eric D. Laspe
  • Patent number: 8756435
    Abstract: Methods, media and systems that obfuscate control flow in software programs. The obfuscation can impede or prevent static flow analysis of a software program's control flow. In one embodiment, a method, performed by a data processing system, identifies each branch point in a set of branch points in a first version of software and replaces, in each branch point in the set, a representation of a target of the branch point with a computed value that depends upon at least one prior computed value in a stream of instructions in the first version of software. Other embodiments are also described.
    Type: Grant
    Filed: October 19, 2012
    Date of Patent: June 17, 2014
    Assignee: Apple Inc.
    Inventors: Julien Lerouge, Jonathan G. McLachlan, Daniel F. Reynaud
  • Publication number: 20140165208
    Abstract: A method and an apparatus that provide rewriting code to dynamically mask program data statically embedded in a first code are described. The program data can be used in multiple instructions in the first code. A code location (e.g. an optimal code location) in the first code can be determined for injecting the rewriting code. The code location may be included in two or more execution paths of first code. Each execution path can have at least one of the instructions using the program data. A second code may be generated based on the first code inserted with the rewriting code at the optimal code location. The second code can include instructions using the program data dynamically masked by the rewriting code. When executed by a processor, the first code and the second code can generate identical results.
    Type: Application
    Filed: December 6, 2012
    Publication date: June 12, 2014
    Applicant: APPLE INC.
    Inventors: Benoit Chevallier-Mames, Daniel F. Reynaud, Jonathan G. McLachlan, Julien Lerouge, Mathieu Ciet, Thomas Icart
  • Publication number: 20140115292
    Abstract: Techniques, methods, systems, and computer-readable media for allocating and managing dynamically obfuscated heap memory allocations are described. In one embodiment a memory manager in a data processing system contains an addressor, to determine a first address of a program object in a first memory address space, and one or more encoders, to abstract memory access to the program object using the first address such that layout of the object data in the first address space differs from the layout of the object in a second address space. In one embodiment, a runtime system modifies object code of an executable file to include encoder routines to abstract memory accesses to data in an obfuscated heap. In one embodiment, a compiler system using an intermediate representation of a high level program generates an intermediate representation of a high level program capable of performing memory writes and memory reads using obfuscation encoder routines.
    Type: Application
    Filed: October 24, 2012
    Publication date: April 24, 2014
    Applicant: Apple Inc.
    Inventors: JONATHAN G. MCLACHLAN, Julien Lerouge, Daniel F. Reynaud
  • Publication number: 20130232507
    Abstract: Methods, media and systems that use an encoded opaque pointer in an API between a client process and a library process. An encoded opaque pointer, in one embodiment, can be received by the library process from the client process, and the library process can decode the opaque pointer to obtain an address in memory containing a data structure pointed to by the opaque pointer. The library process can operate on the data structure to create a revised or processed data structure, stored in the same or different address in heap memory or stack memory, and the library process can encode and return a new opaque pointer, for the processed data structure, to the client process.
    Type: Application
    Filed: September 14, 2012
    Publication date: September 5, 2013
    Inventors: Augustin J. Farrugia, Daniel F. Reynaud, Gianpaolo Fasoli, Jonathan Gregory McLachlan, Julien Lerouge
  • Publication number: 20130232323
    Abstract: Methods, media and systems that obfuscate control flow in software programs. The obfuscation can impede or prevent static flow analysis of a software program's control flow. In one embodiment, a method, performed by a data processing system, identifies each branch point in a set of branch points in a first version of software and replaces, in each branch point in the set, a representation of a target of the branch point with a computed value that depends upon at least one prior computed value in a stream of instructions in the first version of software. Other embodiments are also described.
    Type: Application
    Filed: October 19, 2012
    Publication date: September 5, 2013
    Applicant: APPLE INC
    Inventors: Julien Lerouge, Jonathan Gregory McLachlan, Daniel F. Reynaud