IP Library › Granted Patent US 10,235,303
Granted Patent B2
US 10,235,303 · App. 15/232,723 · Granted Mar 19, 2019

Secure entry and exit for software modules protected by controlled encryption key management

Inventors: David Hartley (Berlin, DE); Roberto Avanzi (Munich, DE); Rosario Cammarota (San Diego, CA)
Assignee: QUALCOMM Incorporated
G06F12/1408G06F21/121G06F21/125G06F21/14G06F21/62G06F21/74H04L63/145G06F2212/1052G06F2221/0755
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 10,235,303
App. No.
15/232,723
Granted
Mar 19, 2019
Kind
B2
Abstract

Techniques for protecting software in a computing device are provided. A method according to these techniques includes receiving a request from a non-secure software module to execute an instruction of a secure software module comprising encrypted program code, determining whether the instruction comprises an instruction associated with a controlled point of entry to the secure software module accessible outside of the secure software module, executing one or more instructions of the secure software module responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module, and controlling exit from the secure software module to return execution to the non-secure software module.

Claims (116)

1. A method for protecting software in a computing device, the method comprising:

receiving a request from a non-secure software module to execute an instruction of a secure software module comprising encrypted program code;

determining whether the instruction comprises an instruction associated with a controlled point of entry to the secure software module accessible outside of the secure software module;

determining whether the secure software module is in a free state in which no instance of the secure software module is being executed responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module, wherein determining whether the secure software module is in the free state comprises

accessing encrypted context information stored in a secure memory location associated with the controlled point of entry into the secure software module, and

decrypting the encrypted context information to determine a state of the secure software module;

blocking execution of the secure software module until the secure software module returns to the free state;

executing one or more instructions of the secure software module responsive to the secure software module being in the free state; and

controlling exit from the secure software module to return execution to the non-secure software module.

2. The method of claim 1 , wherein the instruction comprises a call instruction, and wherein determining whether the instruction comprises the instruction associated with the controlled point of entry to the secure software module accessible outside of the secure software module further comprises:

accessing an instruction of the secure software module at an address specified in the call instruction executed by the non-secure software module;

decrypting the instruction found at the address specified in the call instruction using a decryption key specific to the secure software module; and

determining whether the instruction found at the address specified in the call instruction is a configuration instruction associated with the secure software module that represents the controlled point of entry into the secure software module.

3. The method of claim 2 , further comprising:

prohibiting access to the secure software module responsive to the instruction found at the address specified in the call instruction not being the configuration instruction; and

performing an action in response to the address specified in the call instruction not being the configuration instruction.

4. The method of claim 1 , wherein executing the one or more instructions of the secure software module responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module further comprises:

initializing an instance of the secure software module.

5. The method of claim 4 , wherein initializing the instance of the secure software module comprises:

accessing the encrypted context information representing the state of the instance of the secure software module.

6. The method of claim 4 , wherein controlling the exit from the secure software module to return execution to the non-secure software module further comprises:

storing encrypted context information representing the state of the instance the secure software module in the secure memory; and

stopping decryption of instructions of the secure software module.

7. The method of claim 4 , wherein controlling the exit from the secure software module to return execution to the non-secure software module further comprises:

overriding exception handling while executing instructions of the secure software module;

storing encrypted context information representing the state of the instance the secure software module in the secure memory; and

stopping decryption of instructions of the secure software module responsive to an exception occurring.

8. The method of claim 1 , wherein executing the one or more instructions of the secure software module responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module further comprises:

decrypting each of the one or more instructions of the secure software module associated with an instance of the secure software module being executed just prior to executing the one or more instructions.

9. The method of claim 8 , wherein decrypting each of the one or more instructions of the secure software module associated with the instance of the secure software module being executed just prior to executing the one or more instructions further comprises:

decrypting each of the one or more instructions using an encryption key that is associated with the secure software module.

10. An apparatus comprising:

a memory;

a processor communicably coupled to the memory, wherein the processor comprises:

means for receiving a request from a non-secure software module to execute an instruction of a secure software module comprising encrypted program code;

means for determining whether the instruction comprises an instruction associated with a controlled point of entry to the secure software module accessible outside of the secure software module;

means for determining whether the secure software module is in a free state in which no instance of the secure software module is being executed responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module, wherein the means for determining whether the secure software module is in the free state comprises

means for accessing encrypted context information stored in a secure memory location associated with the controlled point of entry into the secure software module, and

means for decrypting the encrypted context information to determine a state of the secure software module;

means for blocking execution of the secure software module until the secure software module returns to the free state;

means for executing one or more instructions of the secure software module responsive to the secure software module being in the free state; and

means for controlling exit from the secure software module to return execution to the non-secure software module.

11. The apparatus of claim 10 , wherein the instruction comprises a call instruction, and wherein the means for determining whether the instruction comprises the instruction associated with the controlled point of entry to the secure software module accessible outside of the secure software module further comprises:

means for accessing an instruction of the secure software module at an address specified in the call instruction executed by the non-secure software module;

means for decrypting the instruction found at the address specified in the call instruction using a decryption key specific to the secure software module; and

means for determining whether the instruction found at the address specified in the call instruction is a configuration instruction associated with the secure software module that represents the controlled point of entry into the secure software module.

12. The apparatus of claim 11 , further comprising:

means for prohibiting access to the secure software module responsive to the instruction found at the address specified in the call instruction not being the configuration instruction; and

means for performing an action in response to the address specified in the call instruction not being the configuration instruction.

13. The apparatus of claim 10 , wherein the means for executing the one or more instructions of the secure software module responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module further comprises:

means for initializing an instance of the secure software module.

14. The apparatus of claim 13 , wherein the means for initializing the instance of the secure software module comprises:

means for accessing the encrypted context information representing the state of the instance of the secure software module.

15. The apparatus of claim 13 , wherein the means for controlling the exit from the secure software module to return execution to the non-secure software module further comprises:

means for storing encrypted context information representing the state of the instance the secure software module in the secure memory; and

means for stopping decryption of instructions of the secure software module.

16. The apparatus of claim 13 , wherein the means for controlling the exit from the secure software module to return execution to the non-secure software module further comprises:

means for overriding exception handling while executing instructions of the secure software module;

means for storing encrypted context information representing the state of the instance the secure software module in the secure memory; and

means for stopping decryption of instructions of the secure software module responsive to an exception occurring.

17. An apparatus comprising:

a memory; and

a processor coupled to the memory, the processor configured to:

receive a request from a non-secure software module to execute an instruction of a secure software module comprising encrypted program code;

determine whether the instruction comprises an instruction associated with a controlled point of entry to the secure software module accessible outside of the secure software module;

determine whether the secure software module is in a free state in which no instance of the secure software module is being executed responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module, wherein the processor is configured to

access encrypted context information stored in a secure memory location associated with the controlled point of entry into the secure software module, and

decrypt the encrypted context information to determine a state of the secure software module;

block execution of the secure software module until the secure software module returns to the free state;

execute one or more instructions of the secure software module responsive to the secure software module being in the free state; and

control exit from the secure software module to return execution to the non-secure software module.

18. The apparatus of claim 17 , wherein the instruction comprises a call instruction, and wherein the processor being configured to determine whether the instruction comprises the instruction associated with the controlled point of entry to the secure software module accessible outside of the secure software module is further configured to:

access an instruction of the secure software module at an address specified in the call instruction executed by the non-secure software module;

decrypt the instruction found at the address specified in the call instruction using a decryption key specific to the secure software module; and

determine whether the instruction found at the address specified in the call instruction is a configuration instruction associated with the secure software module that represents the controlled point of entry into the secure software module.

19. The apparatus of claim 18 , wherein the processor is further configured to:

prohibit access to the secure software module responsive to the instruction found at the address specified in the call instruction not being the configuration instruction; and

perform an action in response to the address specified in the call instruction not being the configuration instruction.

20. The apparatus of claim 17 , wherein the processor being configured to execute the one or more instructions of the secure software module responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module is further configured to:

initialize an instance of the secure software module.

21. The apparatus of claim 20 , wherein the processor being configured to initialize the instance of the secure software module is further configured to:

access the encrypted context information representing the state of the instance of the secure software module.

22. The apparatus of claim 20 , wherein the processor being configured to control the exit from the secure software module to return execution to the non-secure software module is further configured to:

store encrypted context information representing the state of the instance the secure software module in the secure portion of the memory; and

stop decryption of instructions of the secure software module.

23. The apparatus of claim 20 , wherein the processor being configured to control the exit from the secure software module to return execution to the non-secure software module is further configured to:

override exception handling while executing instructions of the secure software module;

store encrypted context information representing the state of the instance the secure software module in the secure portion of the memory; and

stop decryption of instructions of the secure software module responsive to an exception occurring.

24. A non-transitory, computer-readable medium, having stored thereon computer-readable instructions for protecting software in a computing device, comprising instructions configured to cause the computing device to:

receive a request from a non-secure software module to execute an instruction of a secure software module comprising encrypted program code;

determine whether the instruction comprises an instruction associated with a controlled point of entry to the secure software module accessible outside of the secure software module;

determine whether the secure software module is in a free state in which no instance of the secure software module is being executed responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module, wherein the instructions to cause the computing device to determine whether the secure software module is in the free state comprise instructions configured to cause the computing device to

access encrypted context information stored in a secure memory location associated with the controlled point of entry into the secure software module, and

decrypt the encrypted context information to determine a state of the secure software module;

block execution of the secure software module until the secure software module returns to the free state;

execute one or more instructions of the secure software module responsive to the secure software module being in the free state; and

control exit from the secure software module to return execution to the non-secure software module.

25. The non-transitory, computer-readable medium of claim 24 , wherein the instruction comprises a call instruction, and wherein the instructions configured to cause the computing device to determine whether the instruction comprises the instruction associated with the controlled point of entry to the secure software module accessible outside of the secure software module further comprise instructions configured to cause the computing device to:

access an instruction of the secure software module at an address specified in the call instruction executed by the non-secure software module;

decrypt the instruction found at the address specified in the call instruction using a decryption key specific to the secure software module; and

determine whether the instruction found at the address specified in the call instruction is a configuration instruction associated with the secure software module that represents the controlled point of entry into the secure software module.

26. The non-transitory, computer-readable medium of claim 25 , further comprising instructions configured to cause the computing device to:

prohibit access to the secure software module responsive to the instruction found at the address specified in the call instruction not being the configuration instruction; and

perform an action in response to the address specified in the call instruction not being the configuration instruction.

27. The non-transitory, computer-readable medium of claim 24 , wherein the instructions configured to cause the computing device to execute the one or more instructions of the secure software module responsive to the instruction comprising an instruction associated with the controlled point of entry to the secure software module further comprise instructions configured to cause the computing device to:

initialize an instance of the secure software module.

28. The non-transitory, computer-readable medium of claim 27 , wherein the instructions configured to cause the computing device to initialize the instance of the secure software module further comprise instructions configured to cause the computing device to:

access the encrypted context information representing the state of the instance of the secure software module.

29. The non-transitory, computer-readable medium of claim 27 , wherein the instructions configured to cause the computing device to control the exit from the secure software module to return execution to the non-secure software module is further configured further comprise instructions configured to cause the computing device to:

store encrypted context information representing the state of the instance the secure software module in the secure memory; and

stop decryption of instructions of the secure software module.

30. The non-transitory, computer-readable medium of claim 27 , wherein the instructions configured to cause the computing device to control the exit from the secure software module to return execution to the non-secure software module further comprise instructions configured to cause the computing device to:

override exception handling while executing instructions of the secure software module;

store encrypted context information representing the state of the instance the secure software module in the secure memory; and

stop decryption of instructions of the secure software module responsive to an exception occurring.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2016
From: HARTLEY, DAVID; AVANZI, ROBERTO; CAMMAROTA, ROSARIO
To: QUALCOMM INCORPORATED
Reel/Frame 040281/0080 →
Continuity (2)
Provisional Application 62216986 · Sep 10, 2015
Related Publication 20170075820A1 · Mar 16, 2017