IP Library Granted Patent US 8,745,406
Granted Patent B2
US 8,745,406 · App. 12/090,028 · Granted Jun 3, 2014

Program executable image encryption

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 8,745,406
App. No.
12/090,028
Granted
Jun 3, 2014
Kind
B2
Abstract

The invention provides for a method of encrypting and executing an executable image, comprising; flagging sections of the executable image to be encrypted using commands in source files and compiling said executable images so as to generate object files, linking one or more of said executable images using a linker to produce a final executable image, passing said linked executable images to a post-linker encryption engine to encrypt a relocation fix-up patch table and sections of executable images flagged for encryption, and at load time decrypting relocating and executing the executable images.

Claims (81)

1. A method comprising:

flagging sections of source files;

compiling both flagged sections and non-flagged sections of said source files to object files that include flagged sections and non-flagged sections;

linking the object files using a linker to produce a first executable image that includes flagged sections, non-flagged sections, and a relocation fix-up table; and

creating a second executable image that includes encrypted flagged sections, an encrypted relocation fix-up table, and non-encrypted non-flagged sections, wherein said creating includes encrypting the relocation fix-up table and flagged sections of the first executable image based on an encryption key;

loading the second executable image into memory at a base address;

decrypting the encrypted relocation fix-up table of the loaded second executable image based on a decryption key; and

updating memory references of the second executable image based on the decrypted relocation fix-up table and the base address to produce a run time image.

2. The method of claim 1 , wherein:

said flagging sections of source files comprises naming said sections at a source level stage; and

said creating a second executable image comprises encrypting flagged sections and the relocation fix-up table using a post-linker encryption engine and the encryption key.

3. The method of claim 1 , further comprising:

flagging a header section of the first executable image.

4. The method of claim 3 , wherein the flagged header section comprises the relocation fix-up table for the first executable image.

5. The method of claim 1 , wherein said encrypting the relocation fix-up table prevents the second executable image from being relocated in memory in a manner that permits execution of the second executable image without decrypting the encrypted relocation fix-up table based on the decryption key.

6. The method of claim 1 , wherein said encrypting comprises encrypting flagged sections of the first executable image based on commands in the source files.

7. The method of claim 1 , wherein said encrypting comprises encrypting one or more of an executable code section, a data section and a block storage segment section of the first executable image.

8. A method comprising:

flagging sections of source files;

compiling both flagged sections and non-flagged sections of said source files to object files that include flagged sections and non-flagged sections;

linking the object files using a linker to produce a first executable image that includes flagged sections, non-flagged sections, and a relocation fix-up table; and

creating a second executable image that includes encrypted flagged sections, an encrypted relocation fix-up table, and non-encrypted non-flagged sections, wherein said creating includes encrypting the relocation fix-up table and flagged sections of the first executable image based on an encryption key;

wherein said compiling and said linking results in the relocation fix-up table comprising a plurality of entries that permit operatively loading the first executable image to a relocatable address; and

wherein ones of the plurality of entries identify a location in the first executable image to adjust based on the relocatable address to which the first executable image is loaded.

9. The method of claim 8 , further comprising decrypting encrypted sections of the second executable image based on a decryption engine and a decryption key to produce a run time image.

10. The method of claim 9 , further comprising decrypting the encrypted relocation fix-up table of the second executable image based on a decryption key.

11. The method of claim 10 , further comprising:

loading, with a loader, the second executable image into memory at run time;

wherein said loading includes said decrypting encrypted sections and said decrypting the encrypted relocation fix-up table.

12. A system, comprising:

a computer-readable storage device including stored instructions for a compiler, a linker, and an encryption engine; and

a processor configured to execute the stored instructions for the compiler, the linker, and the encryption engine;

wherein the stored instructions for the compiler, in response to being executed, further configure the processor to flag sections of source files, and compile both flagged sections and non-flagged sections of the source files to object files that include flagged sections and non-flagged sections;

wherein the stored instructions for the linker, in response to being executed, further configure the processor to link said object files to produce a first executable image that includes flagged sections, non-flagged sections, and a relocation fix-up table;

wherein the stored instructions for the encryption engine, in response to being executed, further configure the processor to create a second executable image that includes encrypted flagged sections, an encrypted relocation fix-up table, and non-encrypted non-flagged sections by encrypting the relocation fix-up table and the flagged sections of the first executable image based on an encryption key;

wherein the computer-readable storage device further comprises stored instructions for a loader; and

wherein the stored instructions for the loader, in response to being executed, further configure the processor to decrypt the relocation fix-up table while updating memory references based on the relocation fix-up table.

13. The system of claim 12 , wherein:

the stored instructions for the compiler, in response to being executed, further configure the processor to flag sections by naming said flagged sections at a source level stage; and

the stored instructions for the encryption engine, in response to being executed, further configure the processor to encrypt the named sections.

14. The system of claim 12 , wherein, in response executing the stored instructions for the linker, the processor is configured to flag a header section of the first executable image.

15. The system of claim 14 , wherein the flagged header section comprises the fix-up table for the first executable image.

16. The system of claim 12 , wherein the stored instructions for the encryption engine further configure the processor to encrypt the flagged sections of the first executable image based on commands in the source files or based on linker flags at a link stage.

17. The system of claim 12 , wherein the stored instructions for the encryption engine, in response to being executed, further configure the processor to encrypt one or more of an executable code section, a data section, and a block storage segment section of the first executable image.

18. The system of claim 12 , wherein the stored instructions for the linker, in response to being executed, further configure the processor to flag sections of the first executable image based on commands in the source files.

19. The system of claim 12 , wherein:

the computer-readable storage device further comprises stored instructions for an encryption engine; and

the stored instructions for the encryption engine, in response to being executed, further configure the processor to decrypt encrypted sections of the second executable image based on a decryption key to produce a run time image.

20. The system of claim 19 , wherein the stored instructions for the encryption engine, in response to being executed, further configure the processor to decrypt the encrypted fix-up table of the second executable image based on the decryption engine and the decryption key.

21. The system of claim 12 , wherein the stored instructions for the loader, in response to being executed, further configure the processor to load the second executable image into memory, and to decrypt encrypted sections and the encrypted relocation fix-up table based on a decryption key to produce a run time image.

22. The system of claim 12 , wherein said flagged sections of the first executable image include an executable program code section, a data section, and a block storage segment section.

23. The system of claim 12 , wherein the encrypted relocation fix-up table of the second executable image is configured to prevent the second executable image from being relocated in memory in a manner that permits execution of the second executable image without decrypting the encrypted fix-up table based on the decryption key.

24. The system of claim 12 , wherein the encryption engine is a post-linker encryption engine.

25. The method of claim 1 , wherein said flagging sections of source files comprises flagging sections based on commands in the source files or based on linker flags at a link stage.

26. A method comprising:

flagging sections of source files;

compiling both flagged sections and non-flagged sections of said source files to object files that include flagged sections and non-flagged sections;

linking the object files using a linker to produce a first executable image that includes flagged sections, non-flagged sections, and a relocation fix-up table; and

creating a second executable image that includes encrypted flagged sections, an encrypted relocation fix-up table, and non-encrypted non-flagged sections, wherein said creating includes encrypting the relocation fix-up table and flagged sections of the first executable image based on an encryption key;

wherein said compiling and said linking results in the relocation fix-up table comprising a plurality of entries that permit operatively loading the first executable image to a relocatable address; and

wherein ones of the plurality of entries identify an operand address of a program instruction in the first executable image to adjust based on the relocatable address to which the first executable image is loaded.

27. A method comprising:

flagging sections of source files;

compiling both flagged sections and non-flagged sections of said source files to object files that include flagged sections and non-flagged sections;

linking the object files using a linker to produce a first executable image that includes flagged sections, non-flagged sections, and a relocation fix-up table; and

creating a second executable image that includes encrypted flagged sections, an encrypted relocation fix-up table, and non-encrypted non-flagged sections, wherein said creating includes encrypting the relocation fix-up table and flagged sections of the first executable image based on an encryption key;

wherein said compiling and said linking results in the relocation fix-up table comprising a plurality of entries that permit operatively loading the first executable image to a relocatable address; and

wherein ones of the plurality of entries identify a data structure pointer to adjust based on the relocatable address to which the first executable image is loaded.

28. A method comprising:

flagging sections of source files;

compiling both flagged sections and non-flagged sections of said source files to object files that include flagged sections and non-flagged sections;

linking the object files using a linker to produce a first executable image that includes flagged sections, non-flagged sections, and a relocation fix-up table; and

creating a second executable image that includes encrypted flagged sections, an encrypted relocation fix-up table, and non-encrypted non-flagged sections, wherein said creating includes encrypting the relocation fix-up table and flagged sections of the first executable image based on an encryption key;

wherein said compiling and said linking results in the relocation fix-up table comprising a plurality of entries that permit operatively loading the first executable image to a relocatable address; and

wherein ones of the plurality of entries identify a function pointer to adjust based on the relocatable address to which the first executable image is loaded.

29. The method of claim 26 , wherein:

said flagging sections of source files comprises naming said sections at a source level stage; and

said creating a second executable image comprises encrypting flagged sections and the relocation fix-up table using a post-linker encryption engine and the encryption key.

30. The method of claim 27 , wherein:

said flagging sections of source files comprises naming said sections at a source level stage; and

said creating a second executable image comprises encrypting flagged sections and the relocation fix-up table using a post-linker encryption engine and the encryption key.

Assignments (13)
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 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 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 →
PATENT RELEASE Recorded Aug 17, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 039707/0471 →
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 Jul 22, 2011
From: NXP B.V.
To: NYTELL SOFTWARE LLC
Reel/Frame 026634/0532 →
CONFIRMATORY ASSIGNMENT Recorded Jun 1, 2011
From: KING, COLIN
To: NXP B.V.
Reel/Frame 026372/0547 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2011
From: KING, COLIN
To: NXP B.V.
Reel/Frame 026116/0855 →