IP Library Granted Patent US 8,341,426
Granted Patent B2
US 8,341,426 · App. 12/653,224 · Granted Dec 25, 2012

Methods and devices for instruction level software 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,341,426
App. No.
12/653,224
Granted
Dec 25, 2012
Kind
B2
Abstract

A method of encrypting compiled computer code instructions to be decrypted instruction by instruction during execution. The computer code instructions are encrypted using a chaining mode so that an encrypted instruction depends on the values of the instruction, the value of the preceding instruction and a pseudo-random number. As it may happen that the instruction can be arrived at from more than one preceding instruction, at least one of the preceding instructions is associated with a random number compensator for use during decryption of the encrypted instruction, so that the decryption of the encrypted instruction yields the same result regardless of which the preceding instruction was. Also provided are an encryption device, a decryption device and method, and a digital support medium storing encrypted compiled computer code instructions.

Claims (24)

1. A method of encrypting a set of compiled computer code instructions so as to obtain an encrypted set of compiled computer code instructions intended to be decrypted instruction by instruction during execution, the set of compiled computer code instructions comprising a plurality of branch instructions and a label instruction, wherein execution of the set of compiled computer code instructions may continue from each of the plurality of branch instructions directly to the label instruction, the method comprising the steps at a device of:

encrypting the label instruction using a chained encryption function so that the encrypted label instruction depends on at least the values of the label instruction and the value of a chosen one of the plurality of branch instructions; and

associating each of the at least one branch instruction other than the chosen one of the plurality of branch instructions with a compensator value to be used to adjust decryption of the encrypted label instruction so that it yields the same result during execution regardless of which of the plurality of branch instructions is executed immediately before the label instruction.

2. The method of claim 1 , wherein the encryption of the label instruction is further dependent on a pseudo-random random number associated with the label instruction.

3. The method of claim 2 , further comprising the step of generating the pseudo-random number as a function of a code key and an offset of the instruction for which the pseudo-random number is generated.

4. The method of claim 1 , wherein the values of the label instruction and of the chosen one of the plurality of branch instructions are the values of the respective opcode parts.

5. The method of claim 1 , wherein the encryption is performed by XOR-ing the values of the label instruction and the value of a chosen one of the plurality of branch instructions.

6. A method of decrypting a set of compiled computer code instructions encrypted using a chained encryption function, the method comprising, during execution of the compiled computer code instructions, the steps at a device of:

obtaining a compensator value for an executed function;

obtaining a subsequent encrypted function, the subsequent encrypted function following the executed function during the execution of the compiled computer code instructions;

obtaining a pseudo-random number for the subsequent encrypted function; and

decrypting the subsequent encrypted instruction using a decryption function corresponding to the chained encryption function, the decryption function generating a subsequent function from at least the subsequent encrypted instruction, the executed function, the pseudo-random number, and the compensator value.

7. The method of claim 6 , further comprising the step of generating the pseudo-random number as a function of a code key and an offset of the subsequent encrypted function.

8. The method of claim 6 , wherein an encrypted function comprises an encrypted opcode and unencrypted parameters, if any, and wherein only the opcode parts of the executed function and the subsequent encrypted function are used for the decryption.

9. The method of claim 6 , wherein the decryption is performed by XOR-ing the values of the subsequent encrypted instruction, the executed function, the pseudo-random number, and the compensator value.

10. A non-transitory digital support medium comprising computer code instructions that, when executed on a computer, perform the method according to claim 6 .

11. A device for encryption of a set of compiled computer code instructions so as to obtain an encrypted set of compiled computer code instructions intended to be decrypted instruction by instruction during execution, the set of compiled computer code instructions comprising a plurality of branch instructions and a label instruction, wherein execution of the set of compiled computer code instructions may continue from each of the plurality of branch instructions directly to the label instruction, the device comprising a processor adapted to:

encrypt the label instruction using a chained encryption function so that the encrypted label instruction depends on at least the values of the label instruction and the value of a chosen one of the plurality of branch instructions; and

associate each of the at least one branch instruction other than the chosen one of the plurality of branch instructions with a compensator value to be used to adjust decryption of the encrypted label instruction so that it yields the same result during execution regardless of which of the plurality of branch instructions is executed immediately before the label instruction.

12. A device for decryption of a set of compiled computer code instructions encrypted using a chained encryption function, the device comprising a processor adapted, during execution of the compiled computer code instructions to:

obtain a compensator value for an executed function;

obtain a subsequent encrypted function, the subsequent encrypted function following the executed function during the execution of the compiled computer code instructions;

obtain a pseudo-random number for the subsequent encrypted function; and

decrypt the subsequent encrypted instruction using a decryption function corresponding to the chained encryption function, the decryption function generating a subsequent function from at least the subsequent encrypted instruction, the executed function, the pseudo-random number, and the compensator value.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2020
From: THOMSON LICENSING S.A.S.
To: MAGNOLIA LICENSING LLC
Reel/Frame 053570/0237 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2009
From: ONNO, STEPHANE; KARROUMI, MOHAMED; MONSIFROT, ANTOINE
To: THOMSON LICENSING
Reel/Frame 023702/0964 →