Patents by Inventor Pierre Betouin
Pierre Betouin 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: 9639673Abstract: The fake cryptographic layer obfuscation technique can be used to lure an attacker into expending reverse engineering efforts on sections of code the attacker would normally ignore. To do this the obfuscation technique can identify sections of code that are likely to be of lesser interest to the attacker and disguise them as higher value sections. This can be achieved by transforming a lower value section of code to include code patterns, constants, or other characteristics known to exist in sections of code of higher value, such as cryptographic routines. To transform a code section, the obfuscation technique can use one or more program modifications including control flow modifications, constant value adjustments to simulate well-known cryptographic scalars, buffer extensions, fake characteristic table insertion, debug-like information insertion, derivation function-code generation linking, and/or cryptographic algorithm specific instruction insertion.Type: GrantFiled: June 17, 2014Date of Patent: May 2, 2017Assignee: Apple Inc.Inventors: Pierre Betouin, Augustin J. Farrugia, Benoit Chevallier-Mames, Bruno Kindarji, Cédric Tessier, Jean-Baptiste Aviat, Mathieu Ciet, Thomas Icart
-
Patent number: 9274976Abstract: In the field of computer software (code) security, it is known to include verification data such as hash values in or associated with the code to allow subsequent detection of tampering by a attacker with the code. This verification technique is used here in a “White Box” cryptographic process by tying the verification data to the content of functional table lookups present in the object (compiled) code, where values in the table lookups are selectively masked (prior to the source code being compiled into the subject code) by being subject to permutation operations.Type: GrantFiled: November 5, 2010Date of Patent: March 1, 2016Assignee: APPLE INC.Inventors: Augustin J. Farrugia, Mathieu Ciet, Pierre Betouin
-
Publication number: 20150363580Abstract: The fake cryptographic layer obfuscation technique can be used to lure an attacker into expending reverse engineering efforts on sections of code the attacker would normally ignore. To do this the obfuscation technique can identify sections of code that are likely to be of lesser interest to the attacker and disguise them as higher value sections. This can be achieved by transforming a lower value section of code to include code patterns, constants, or other characteristics known to exist in sections of code of higher value, such as cryptographic routines. To transform a code section, the obfuscation technique can use one or more program modifications including control flow modifications, constant value adjustments to simulate well-known cryptographic scalars, buffer extensions, fake characteristic table insertion, debug-like information insertion, derivation function-code generation linking, and/or cryptographic algorithm specific instruction insertion.Type: ApplicationFiled: June 17, 2014Publication date: December 17, 2015Inventors: Pierre Betouin, Augustin J. Farrugia, Benoit Chevallier-Mames, Bruno Kindarji, Cédric Tessier, Jean-Baptiste Aviat, Mathieu Ciet, Thomas Icart
-
Patent number: 9128722Abstract: Disclosed herein are systems, computer-implemented methods, and non-transitory computer-readable storage media for obfuscating code, such as instructions and data structures. Also disclosed are non-transitory computer-readable media containing obfuscated code. In one aspect, a preprocessing tool (i.e. before compilation) identifies in a source program code a routine for replacement. The tool can be a software program running on a computer or an embedded device. The tool then selects a function equivalent to the identified routine from a pool of functions to replace the identified routine. A compiler can then compile computer instructions based on the source program code utilizing the selected function in place of the identified routine. In another aspect, the tool replaces data structures with fertilized data structures. These approaches can be applied to various portions of source program code based on various factors. A software developer can flexibly configure how and where to fertilize the source code.Type: GrantFiled: March 27, 2013Date of Patent: September 8, 2015Assignee: Apple Inc.Inventors: Pierre Betouin, Mathieu Ciet, Augustin J. Farrugia
-
Patent number: 9047448Abstract: A branch auditing system can be automatically injected into a computer program, in one embodiment, in response to a programming call provided in source code by a programmer who has selected a particular branch, in a set of possible branches, for auditing. The branch auditing system can record, in an obfuscated data structure, a path taken at the particular branch and the parameters associated with the branch and later an auditor can determine whether the path taken was valid, and if the path taken was invalid, operations can be performed to protect the program, system and/or user.Type: GrantFiled: January 14, 2013Date of Patent: June 2, 2015Assignee: Apple Inc.Inventors: Cedric Tessier, Daniel Reynaud, Jean-Baptiste Aviat, Jonathan Gregory McLachlan, Julien Lerouge, Pierre Betouin
-
Patent number: 8874928Abstract: Disclosed herein are systems, computer-implemented methods, and tangible computer-readable media for obfuscating constants in a binary. The method includes generating a table of constants, allocating an array in source code, compiling the source code to a binary, transforming the table of constants to match Pcode entries in an indirection table so that each constant in the table of constants can be fetched by an entry in the indirection table. A Pcode is a data representation of a set of instructions populating the indirection table with offsets toward the table of constants storing the indirection table in the allocated array in the compiled binary. The method further includes populating the indirection table with offsets equivalent to the table of constants, and storing the indirection table in the allocated array in the compiled binary. Constants can be of any data type. Constants can be one byte each or more than one byte each.Type: GrantFiled: October 31, 2008Date of Patent: October 28, 2014Assignee: Apple Inc.Inventors: Pierre Betouin, Mathieu Ciet, Augustin J. Farrugia
-
Publication number: 20140201720Abstract: A branch auditing system can be automatically injected into a computer program, in one embodiment, in response to a programming call provided in source code by a programmer who has selected a particular branch, in a set of possible branches, for auditing. The branch auditing system can record, in an obfuscated data structure, a path taken at the particular branch and the parameters associated with the branch and later an auditor can determine whether the path taken was valid, and if the path taken was invalid, operations can be performed to protect the program, system and/or user.Type: ApplicationFiled: January 14, 2013Publication date: July 17, 2014Applicant: Apple Inc.Inventors: Cedric Tessier, Daniel Reynaud, Jean-Baptise Aviat, Jonathan Gregory McLachlan, Julien Lerouge, Pierre Betouin
-
Patent number: 8775826Abstract: Method and apparatus for obfuscating computer software code, to protect against reverse-engineering of the code. The obfuscation here is on the part of the code that accesses buffers (memory locations). Further, the obfuscation process copies or replaces parts of the buffer contents with local variables. This obfuscation is typically carried out by suitably annotating (modifying) the original source code.Type: GrantFiled: February 9, 2011Date of Patent: July 8, 2014Assignee: Apple Inc.Inventors: Augustin J. Farrugia, Mathieu Ciet, Pierre Betouin
-
Patent number: 8769675Abstract: Method and apparatus to detect clock roll-forward attacks in a computing device or similar system. This protects against hackers who tamper with the system clock of, for instance, a digital media playback device in order to access a content item which has been rented for a limited time. By detecting clock roll-forward tampering, the present method and system prevent such hackers from accessing the content item outside its authorized rental time period.Type: GrantFiled: May 13, 2008Date of Patent: July 1, 2014Assignee: Apple Inc.Inventors: Pierre Betouin, Augustin J. Farrugia, Nicholas Sullivan
-
Patent number: 8756434Abstract: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for executing encrypted computer code. A system configured to practice the method receives a request to execute encrypted computer code. In response to the request, the system identifies a portion of the encrypted computer code for execution and decrypts the portion to yield decrypted computer code. Then the system stores the decrypted computer code in a pool of memory and executes the decrypted computer code from the pool of memory. The system can store the decrypted computer code in the pool of memory based on a randomization algorithm so that identical executions of the encrypted computer code result in selections of different available memory locations within the pool of memory. Related portions can be stored non-consecutively in the pool of memory. The pool of memory can store different portions of decrypted computer code over time.Type: GrantFiled: April 8, 2011Date of Patent: June 17, 2014Assignee: Apple Inc.Inventors: Ganna Zaks, Pierre Betouin, Augustin J. Farrugia, Julien Lerouge, Jon McLachlan, Gideon M. Myles, Cédric Tessier
-
Patent number: 8755521Abstract: A Digital Rights Management (DRM) system for distribution of digital content such as audio or video uses a method to enhance security of the content from unauthorized access and use, including access by unauthorized players. The method does not necessarily require a token exchange and thereby minimizes storage demands on the server which distributes the digital content. The system generates and distributes keys for decryption of the digital content whereby the keys are unique to a specific player and user account.Type: GrantFiled: May 9, 2008Date of Patent: June 17, 2014Assignee: Apple Inc.Inventors: Augustin J. Farrugia, Mathieu Ciet, Pierre Betouin
-
Publication number: 20140101458Abstract: In the field of computer software (code) security, it is known to include verification data such as hash values in or associated with the code to allow subsequent detection of tampering by a attacker with the code. This verification technique is used here in a “White Box” cryptographic process by tying the verification data to the content of functional table lookups present in the object (compiled) code, where values in the table lookups are selectively masked (prior to the source code being compiled into the subject code) by being subject to permutation operations.Type: ApplicationFiled: November 5, 2010Publication date: April 10, 2014Applicant: Apple Inc.Inventors: Augustin J. FARRUGIA, Mathieu Ciet, Pierre Betouin
-
Patent number: 8645930Abstract: Disclosed herein are systems, methods, and computer-readable storage media for obfuscating by a common function. A system configured to practice the method identifies a set of functions in source code, generates a transformed set of functions by transforming each function of the set of functions to accept a uniform set of arguments and return a uniform type, and merges the transformed set of functions into a single recursive function. The single recursive function can allocate memory in the heap. The stack can contain a pointer to the allocated memory in the heap. The single recursive function can include instructions for creating and explicitly managing a virtual stack in the heap. The virtual stack can emulate what would happen to the real stack if one of the set of functions was called. The system can further compile the source code including the single recursive function.Type: GrantFiled: January 4, 2010Date of Patent: February 4, 2014Assignee: Apple Inc.Inventors: Christopher Arthur Lattner, Tanya Michelle Lattner, Julien Lerouge, Ginger M. Myles, Augustin J. Farrugia, Pierre Betouin
-
Patent number: 8615735Abstract: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for obfuscating a computer program. A system configured to practice the method identifies a set of executable instructions at a first location in an instruction section of the computer program and identifies a second location in a data section of the computer program. Then the system moves the set of executable instructions to the second location and patches references in the computer program to the set of executable instructions to point to the second location. The instruction section of the computer program can be labeled as _TEXT,_text and the data section of the computer program is labeled as _DATA,_data. The set of executable instructions can include one or more non-branching instructions optionally followed by a branching instruction. The placement of the first and second locations can be based on features of a target computing architecture, such as cache size.Type: GrantFiled: May 3, 2011Date of Patent: December 24, 2013Assignee: Apple Inc.Inventors: Jon McLachlan, Ganna Zaks, Julien Lerouge, Pierre Betouin, Augustin J. Farrugia, Gideon M. Myles, Cédric Tessier
-
Publication number: 20130232468Abstract: Disclosed herein are systems, computer-implemented methods, and non-transitory computer-readable storage media for obfuscating code, such as instructions and data structures. Also disclosed are non-transitory computer-readable media containing obfuscated code. In one aspect, a preprocessing tool (i.e. before compilation) identifies in a source program code a routine for replacement. The tool can be a software program running on a computer or an embedded device. The tool then selects a function equivalent to the identified routine from a pool of functions to replace the identified routine. A compiler can then compile computer instructions based on the source program code utilizing the selected function in place of the identified routine. In another aspect, the tool replaces data structures with fertilized data structures. These approaches can be applied to various portions of source program code based on various factors. A software developer can flexibly configure how and where to fertilize the source code.Type: ApplicationFiled: March 27, 2013Publication date: September 5, 2013Applicant: Apple Inc.Inventors: Pierre Betouin, Mathieu Ciet, Augustin J. Farrugia
-
Patent number: 8434059Abstract: Disclosed herein are systems, computer-implemented methods, and non-transitory computer-readable storage media for obfuscating code, such as instructions and data structures. Also disclosed are non-transitory computer-readable media containing obfuscated code. In one aspect, a preprocessing tool (i.e. before compilation) identifies in a source program code a routine for replacement. The tool can be a software program running on a computer or an embedded device. The tool then selects a function equivalent to the identified routine from a pool of functions to replace the identified routine. A compiler can then compile computer instructions based on the source program code utilizing the selected function in place of the identified routine. In another aspect, the tool replaces data structures with fertilized data structures. These approaches can be applied to various portions of source program code based on various factors. A software developer can flexibly configure how and where to fertilize the source code.Type: GrantFiled: May 1, 2009Date of Patent: April 30, 2013Assignee: Apple Inc.Inventors: Pierre Betouin, Mathieu Ciet, Augustin J. Farrugia
-
Patent number: 8407248Abstract: Disclosed herein are systems, computer-implemented methods, and computer-readable media for authentication using a shared table. The method receives an authentication challenge from a first entity including an accumulator with an initial value, lists of elements in a shared table, and a list of sorting algorithms, each sorting algorithm is associated with one of the lists of elements and modified to include embedded instructions operating on the accumulator. The method then generates a temporary table for each list of elements in the shared table by copying elements from the shared table as indicated in each respective list of elements, each temporary table being associated with one sorting algorithm in the list of sorting algorithms. The method sorts each generated temporary table with the associated sorting algorithm, thereby updating the accumulator with the embedded instructions. Finally, the method transmits the updated accumulator to the first entity for verification.Type: GrantFiled: September 23, 2011Date of Patent: March 26, 2013Assignee: Apple Inc.Inventors: Pierre Betouin, Mathieu Ciet, Augustin J. Farrugia
-
Publication number: 20130014267Abstract: In the field of computer science, communications protocols (such as computer network protocols) are hardened (secured) against reverse engineering attacks by hackers using a software tool which is applied to a high level definition of the protocol. The tool converts the definition to executable form, such as computer source code, and also applies reverse-engineering countermeasures to the protocol definition as now expressed in source code, to prevent hackers from recovering useful details of the protocol. This conversion process also allows preservation of backwards version compatibility of the protocol definition.Type: ApplicationFiled: July 7, 2011Publication date: January 10, 2013Inventors: Augustin J. FARRUGIA, Mathieu CIET, Pierre BETOUIN
-
Publication number: 20120284688Abstract: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for obfuscating a computer program. A system configured to practice the method identifies a set of executable instructions at a first location in an instruction section of the computer program and identifies a second location in a data section of the computer program. Then the system moves the set of executable instructions to the second location and patches references in the computer program to the set of executable instructions to point to the second location. The instruction section of the computer program can be labeled as _TEXT,_text and the data section of the computer program is labeled as _DATA,_data. The set of executable instructions can include one or more non-branching instructions optionally followed by a branching instruction. The placement of the first and second locations can be based on features of a target computing architecture, such as cache size.Type: ApplicationFiled: May 3, 2011Publication date: November 8, 2012Applicant: Apple Inc.Inventors: Jon McLachlan, Ganna Zaks, Julien Lerouge, Pierre Betouin, Augustin J. Farrugia, Gideon M. Myles, Cédric Tessier
-
Publication number: 20120260102Abstract: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for executing encrypted computer code. A system configured to practice the method receives a request to execute encrypted computer code. In response to the request, the system identifies a portion of the encrypted computer code for execution and decrypts the portion to yield decrypted computer code. Then the system stores the decrypted computer code in a pool of memory and executes the decrypted computer code from the pool of memory. The system can store the decrypted computer code in the pool of memory based on a randomization algorithm so that identical executions of the encrypted computer code result in selections of different available memory locations within the pool of memory. Related portions can be stored non-consecutively in the pool of memory. The pool of memory can store different portions of decrypted computer code over time.Type: ApplicationFiled: April 8, 2011Publication date: October 11, 2012Applicant: Apple Inc.Inventors: Ganna Zaks, Pierre Betouin, Augustin J. Farrugia, Julien Lerouge, Jon McLachlan, Gideon M. Myles, Cédric Tessier