IP Library › Granted Patent US 9,654,279
Granted Patent B2
US 9,654,279 · App. 14/220,321 · Granted May 16, 2017

Security module for secure function execution on untrusted platform

Inventors: Wil Michiels (Reusel, NL); Jan Hoogerbrugge (Helmond, NL)
Assignee: NXP B.V.
H04L9/002H04L63/1466H04L2209/16H04L2209/24
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,654,279
App. No.
14/220,321
Filed
Mar 20, 2014
Granted
May 16, 2017
Kind
B2
Examiner
AN, WAYNE
Art Unit
2498
USPC
380/28
Abstract

A method of performing a secure function on data inputs by a security module, including: receiving an encrypted data value by the security module; decrypting the encrypted data value using a white-box decryption block cipher and encoding the decrypted data value, wherein the data value is invisible to an attacker; performing a function on the encoded data value and producing an encoded result of the function, wherein the data value and the result are invisible to the attacker; decoding the encoded result of the programmed function and then encrypting the result using a white-box encryption block cipher, wherein the result is invisible to the attacker.

Claims (68)

1. A method of performing a secure function on an encrypted data value by a security module, comprising:

receiving, from an external source, the encrypted data value by the security module, wherein the encrypted data value represents a data value that has been encrypted;

using a white-box decryption block cipher to decrypt the encrypted data value and encoding the decrypted data value, wherein the data value in the encoded data value is invisible to an attacker;

storing the encoded data value in a memory;

using a secure program function module to perform the secure function on the encoded data value in the memory and producing an encoded result of the secure function by:

decoding the encoded data value;

performing the secure function on the data value to produce a result; and

encoding the result, wherein the data value in the encoded data value and the result in the encoded result are invisible to the attacker;

storing the encoded result of the secure function in the memory;

using a white-box encryption block cipher to decode the encoded result in the memory and then encrypt the result, wherein the result in the encrypted result is invisible to the attacker; and

sending the encrypted result to the external source.

2. The method of claim 1 , wherein the encrypted data value is received from the memory in the security module, and further comprising storing the encrypted result in the memory.

3. The method of claim 1 , wherein the white-box encryption block cipher and the white-box decryption block cipher use Advance Encryption Standard cryptography.

4. The method of claim 1 , wherein the white-box encryption block cipher and the white-box decryption block cipher use Data Encryption Standard cryptography.

5. The method of claim 1 , wherein the white-box encryption block cipher and the white-box decryption block cipher comprise a plurality of lookup tables.

6. The method of claim 5 , wherein the lookup tables are hardware lookup tables.

7. The method of claim 5 , wherein the lookup tables are software lookup tables stored in a memory and the white-box encryption block cipher and the white-box decryption block cipher are implemented on a processor.

8. The method of claim 1 , wherein the white-box encryption block cipher and the white-box decryption block cipher comprise a plurality of finite state machines.

9. A security module for performing a secure function, comprising:

a white-box decryption module configured to:

receive, from an external source, an encrypted data value, wherein the encrypted data value represents a data value that has been encrypted;

decrypt the encrypted data; and

encode the decrypted data value, resulting in encoded data,

wherein the data value in the encoded data value is invisible to an attacker;

a memory configured to the store encoded data;

a secure program function module configured to:

perform a secure function on the encoded data value and produce an encoded result of the secure function by:

decoding the encoded data value;

performing the secure function on the data value to produce a result; and

encoding the result, wherein the data value in the encoded data value and the result in the encoded result are invisible to the attacker;

storing the encoded result of the secure function in the memory;

a white-box encryption module configured to:

decode the encoded result of the secure function; and

encrypt the result, wherein the result in the encrypted result is invisible to the attacker; and;

sending the encrypted result to the external source.

10. The security module of claim 9 , wherein the encrypted data value is received from the memory and wherein the white-box encryption module is further configured to store the encrypted result in the memory.

11. The security module of claim 9 , wherein the white-box encryption module and the white-box decryption module use Advance Encryption Standard cryptography.

12. The security module of claim 9 , wherein the white-box encryption module and the white-box decryption module use Data Encryption Standard cryptography.

13. The security module of claim 9 , wherein the white-box encryption module and the white-box decryption module comprise a plurality of lookup tables.

14. The security module of claim 9 , wherein the white-box encryption module and the white-box decryption module comprise a plurality of finite state machines.

15. The security module of claim 9 , wherein the encrypted data value is received from an external source, and further comprising sending the encrypted result to the external source.

16. The security module of claim 9 , wherein the encrypted data value is received from the memory in the security module, and further comprising storing the encrypted result in the memory.

17. A non-transitory machine-readable storage medium encoded with instructions for execution by a security module for performing a secure function on an encrypted data value, the non-transitory machine-readable storage medium, comprising:

instructions for receiving, from an external source, the encrypted data value by the security module, wherein the encrypted data value represents a data value that has been encrypted;

instructions for decrypting the encrypted data value using a white-box decryption block cipher and encoding the decrypted data value, wherein the data value in the encoded data value is invisible to an attacker;

instructions for storing the encoded data value in a memory;

instructions for performing the secure function on the encoded data value in the memory and producing an encoded result of the secure function by:

decoding the encoded data value;

performing the secure function on the data value to produce a result; and

encoding the result, wherein the data value in the encoded data value and the result in the encoded result are invisible to the attacker;

instructions for storing the encoded result of the secure function in the memory;

instructions for decoding the encoded result in the memory and then encrypting the result using a white-box encryption block cipher, wherein the result in the encrypted result is invisible to the attacker; and

instructions for sending the encrypted result to the external source.

18. A method of producing an implementation of a cryptographic operation for performing a secure function on an encrypted data value by a security module, comprising:

producing a white-box implementation of a decryption operation that receives the encrypted data value, from an external source, that decrypts the encrypted data value, that encodes the decrypted data value, and that stores the encoded data value in a memory, wherein the encrypted data value represents a data value that has been encrypted and wherein the data value in the encoded data value is invisible to an attacker;

implementing a secure function on the encoded data value in the memory that produces an encoded result of the secure function by:

decoding the encoded data value;

performing the secure function on the data value to produce a result; and

encoding the result, wherein the data value in the encoded data value and the result in the encoded result are invisible to the attacker;

storing the encoded result of the secure function in the memory;

producing a white-box implementation of an encryption operation that receives the encoded result, that decodes the encoded result, that encrypts the result, and that sends the encrypted result to the external source, wherein the result in the encrypted result is invisible to an attacker.

19. The method of claim 18 , wherein the encrypted data value is received from the memory in the security module and wherein the white-box implementation of the encryption operation is configured to store the encrypted result in the memory.

20. The method of claim 18 , wherein the white-box encryption implementation and the white-box decryption implementation use Advanced Encryption Standard cryptography.

21. The method of claim 18 , wherein the white-box encryption implementation and the white-box decryption implementation operation use Data Encryption Standard cryptography.

22. The method of claim 18 , wherein the white-box encryption implementation and the white-box decryption implementation comprise a plurality of lookup tables.

23. The method of claim 22 , wherein the lookup tables are hardware lookup tables.

24. The method of claim 22 , wherein the lookup tables are software lookup tables stored in a memory and the white-box encryption implementation and the white-box decryption implementation are implemented on a processor.

25. The method of claim 18 , wherein the white-box encryption implementation and the white-box decryption implementation comprise a plurality of finite state machines.

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 Mar 20, 2014
From: MICHIELS, WIL; HOOGERBRUGGE, JAN
To: NXP B.V.
Reel/Frame 032483/0253 →
Continuity (1)
Related Publication 20150270951A1 · Sep 24, 2015