IP Library Granted Patent US 9,465,926
Granted Patent B2
US 9,465,926 · App. 12/869,622 · Granted Oct 11, 2016

Method of obfuscating a code

Inventors: Philippe Teuwen (Ixelles, BE); Ventzislav Nikov (Haasrode, BE)
Assignee: NXP B.V.
G06F21/121G06F12/1408G06F21/14
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,465,926
App. No.
12/869,622
Granted
Oct 11, 2016
Kind
B2
Abstract

A method of obfuscating a code is provided, wherein the method comprises performing a first level obfuscating technique on a code to generate a first obfuscated code, and performing a second level obfuscating technique on the first obfuscated code. In particular, the code may be a software code or a software module. Furthermore, the first level obfuscating technique and the second obfuscating may be different. In particular, the second level obfuscating technique may perform a deobfuscation.

Claims (52)

1. A method of obfuscating a code, the method comprising:

performing, with an address translation hardware device, a first level obfuscating technique on a code to generate a first obfuscated code while conserving at least part of a locality in a cache line;

performing a second level obfuscating technique on the first obfuscated code to produce a second obfuscated code, wherein the first level obfuscating technique preserves locality while the second level obfuscating technique emphasizes efficiency; and

hardcoding one secret per wafer into the address translation hardware device.

2. The method according to claim 1 , further comprising:

mapping between an address space of an execution path and an obfuscated address space.

3. The method according to claim 2 , wherein the mapping is based on a space filling curve.

4. The method according to claim 1 , wherein the mapping is based upon a parametric mapping function using a secret as a parameter of the mapping function.

5. The method according to claim 1 , wherein the second obfuscated code of the second level obfuscating technique is used as an additional input for the obfuscation of the first level obfuscating technique.

6. The method of claim 1 , wherein the address translation hardware device comprises a linear feedback shift register (LFSR).

7. The method of claim 1 , wherein the first level obfuscating technique and the second level obfuscating technique are performed independently.

8. The method of claim 1 , further comprising:

preventing reverse engineering of software code with the secret hardcoded in the address translation hardware device.

9. The method of claim 1 , further comprising:

hardcoding one secret per processor.

10. The method of claim 1 , further comprising:

hardcoding one secret per customer.

11. The method of claim 1 , further comprising:

hardcoding one secret per application.

12. A processing system comprising:

a processor with a cache,

an external memory, and the address translation hardware device, wherein the address translation hardware device is arranged between the cache and the external memory and configured to perform a first level obfuscating technique on a code to generate a first obfuscated code while conserving at least part of a locality in a cache line, perform a second level obfuscating technique on the first obfuscated code to produce a second obfuscated code, wherein the first level obfuscating technique preserves locality while the second level obfuscating technique emphasizes efficiency and one secret per wafer is hardcoded into the address translation hardware device.

13. A non-transitory medium, in which a computer program is stored which, when being executed by a processor, is configured to control a plurality of instructions, the non-transitory medium comprising:

instructions for performing, with an address translation hardware device, a first level obfuscating technique on a code to generate a first obfuscated code while conserving at least part of a locality in a cache line;

instructions for performing a second level obfuscating technique on the first obfuscated code to produce a second obfuscated code, wherein the first level obfuscating technique preserves locality while the second level obfuscating technique emphasizes efficiency; and

instructions for hardcoding one secret per wafer into the address translation hardware device.

14. A method of obfuscating a code, the method comprising:

performing, with an address translation hardware device, a first level obfuscating technique on a code to generate a first obfuscated code while conserving at least part of a locality in a cache line;

performing a second level obfuscating technique on the first obfuscated code to produce a second obfuscated code, wherein the first level obfuscating technique preserves locality while the second level obfuscating technique emphasizes efficiency; and

hardcoding one secret per batch of chips into the address translation hardware device.

15. The method according to claim 14 , further comprising:

mapping between an address space of an execution path and an obfuscated address space.

16. The method according to claim 15 , wherein the mapping is based on a space filling curve.

17. The method according to claim 14 , wherein the mapping is based upon a parametric mapping function using a secret as a parameter of the mapping function.

18. The method according to claim 14 , wherein the second obfuscated code of the second level obfuscating technique is used as an additional input for the obfuscation of the first level obfuscating technique.

19. The method of claim 14 , wherein the address translation hardware device comprises a linear feedback shift register (LFSR).

20. The method of claim 14 , wherein the first level obfuscating technique and the second level obfuscating technique are performed independently.

21. The method of claim 14 , further comprising:

preventing reverse engineering of software code with the secret hardcoded in the address translation hardware device.

22. The method of claim 14 , further comprising:

hardcoding one secret per processor.

23. The method of claim 14 , further comprising:

hardcoding one secret per customer.

24. The method of claim 14 , further comprising:

hardcoding one secret per application.

25. A processing system comprising:

a processor with a cache,

an external memory, and the address translation hardware device, wherein the address translation hardware device is arranged between the cache and the external memory and configured to perform a first level obfuscating technique on a code to generate a first obfuscated code while conserving at least part of a locality in a cache line, perform a second level obfuscating technique on the first obfuscated code to produce a second obfuscated code, wherein the first level obfuscating technique preserves locality while the second level obfuscating technique emphasizes efficiency, and one secret per batch of chips is hardcoded into the address translation hardware device.

26. A non-transitory medium, in which a computer program is stored which, when being executed by a processor, is configured to control a plurality of instructions, the non-transitory medium comprising:

instructions for performing, with an address translation hardware device, a first level obfuscating technique on a code to generate a first obfuscated code while conserving at least part of a locality in a cache line;

instructions for performing a second level obfuscating technique on the first obfuscated code to produce a second obfuscated code, wherein the first level obfuscating technique preserves locality while the second level obfuscating technique emphasizes efficiency; and

instructions for hardcoding one secret per batch of chips into the address translation hardware device.

Assignments (10)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2012
From: TEUWEN, PHILIPPE; NIKOV, VENTZISLAV
To: NXP B.V.
Reel/Frame 029106/0236 →
Priority Claims (1)
EP 09168753 · Aug 26, 2009 · regional
Continuity (1)
Related Publication 20110055592A1 · Mar 3, 2011