Method of program obfuscation and processing device for executing obfuscated programs
AssigneeNXP B.V.
InventorMarc Vauclair
Life of this patent
Estimating the term…
Loading patent…
AssigneeNXP B.V.
InventorMarc Vauclair
Estimating the term…
A program is obfuscated by reordering its instructions. Original instruction addresses are mapped to target addresses. A cache efficient obfuscated program is realized by restricting target addresses of a sequence of instructions to a limited set of the disjoint ranges (33a-d) of target addresses, which are at lease half filled with instructions. Mapped address steps (34) are provided between the target addresses to which successive ones of the original instruction addresses are mapped. The address steps (34) include first address steps within at least a first one of the mutually disjoint ranges (33a-d). Between said first address steps, second address steps within at least a second one of the mutually disjoint ranges (33a-d). Thus, a deviation from successive addresses for logically successive instructions is realized. In an embodiment the mapping of original instruction addresses to target addresses may be visualized by means of a path (36) along points in an n-dimensional array, where n is greater than one. Successive original instruction addresses are mapped to successive locations in the path, and locations along respective rows of the array are mapped to respective ones of the mutually disjoint ranges (33a-d). Because an n-dimensional path is used a form of locality is preserved that provides for cache efficiency, whereas the multi-dimensional nature of the path makes it possible to combine this locality with pseudo-random steps.
A method of converting a program of instructions for a programmable processor, the method comprising reordering a sequence of the instructions, whereby original instruction addresses are mapped to respective target addresses, the sequence comprising successive sub-sequences, the method comprising:
A data processing device, comprising a programmable processor, the programmable processor comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
Protecting executable software: against software analysis or reverse engineering, e.g. by obfuscation
Computing and data processing
About 4 years 3 months of term left · ends 26 Jan 2031 (estimated)
The invention relates to a data processing device comprising a programmable processor and to a method of converting a program of instructions for a programmable processor.
Code obfuscation is a general name for techniques for converting a program of instructions for a computer in a way that obscures its content. Code obfuscation may be applied to make it more difficult to identify the relevant part of the program needed to execute a program on an unlicensed type of computer or without protection measures.
U.S. Pat. No. 6,779,114 describes a code obfuscation technique that involves obscuring control flow of a program. Branch instructions are added to lumps of instructions in a way that obscures the intended execution order of the lumps. U.S. Pat. No. 5,559,884 describes pseudo-random reordering of basic blocks of a program to create a signature that can be used to identify a source through which the program has been distributed.
These and other objects and advantageous aspects will become apparent from a description of exemplary embodiments, using the following Figures.
FIG. 1 shows a data processing device
FIGS. 1a-d show a program flow control unit
Basic Data Processing Device
FIG. 1 shows a data processing device, for example an integrated circuit. Except for its program flow control unit 16, the processing device may have a conventional
architecture, comprising a memory 10, an instruction issue circuit 12 and a plurality of functional units 14, along with the program flow control unit 16. Instruction issue circuit 12 has an address output and an instruction input coupled and address input and a data output of memory 10, respectively. Instruction issue circuit 12 has an instruction output coupled to functional units 14 and the program flow control unit 16. Program flow control unit 16 has an address output coupled to instruction issue circuit 12.