IP Library Granted Patent US 10,909,532
Granted Patent B2
US 10,909,532 · App. 16/169,351 · Granted Feb 2, 2021

POS system with white box encryption key sharing

Inventor: Brian Jeremiah Murray (Mountain View, CA)
Assignee: Clover Network, Inc.
G06Q20/3829G06Q20/20G06Q20/207G06Q20/389H04L9/002H04L9/0866H04L9/14H04L9/30H04L9/3247H04L9/3263H04W76/10G06Q2220/00H04L2209/08H04L2209/16H04L2209/56
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,909,532
App. No.
16/169,351
Granted
Feb 2, 2021
Kind
B2
Abstract

Systems, and associated methods, involving both a trusted and an untrusted device where sensitive data or keys are shared between those devices are disclosed. A disclosed method includes storing a key in a secure memory on a first device, receiving sensitive data via a user interface on a second device, generating a set of white box encryption instructions based on the key using a white box encryption generator on the first device, generating a complete data representation of the set of white box encryption instructions using a secure processor on the first device, transmitting the complete data representation from the first device to the second device, and encrypting the sensitive data using the complete data representation on the second device. The complete data representation is not Turing complete and is not executable with respect to the second device.

Claims (120)

1. A method comprising:

storing, in a secure memory on a first device, a key;

receiving, via a user interface on a second device, sensitive data;

generating, using a white box encryption generator on the first device, a set of white box encryption instructions based on the key;

generating, using a secure processor on the first device, a complete data representation of the set of white box encryption instructions;

transmitting the complete data representation from the first device to the second device; and

encrypting, using a standard processor on the second device, the sensitive data using the complete data representation;

wherein the complete data representation is not executable.

2. The method of claim 1 , wherein:

the first device is a secure payment device housing the secure memory and the secure processor;

the second device is a touch display device; and

after the encrypting of the sensitive data, the sensitive data is an encrypted personal identification number.

3. The method of claim 2 , further comprising:

forming a secure wireless connection between the first device and the touch display device;

wherein the transmitting of the complete data representation from the first device to the touch display device is conducted using the secure wireless connection; and

wherein the first device is a secure card reader.

4. The method of claim 3 , further comprising:

deriving, using the secure processor on the secure card reader, the key using a random key generator and random configuration data on the first device;

transmitting, using the secure wireless connection, the encrypted personal identification number from the touch display device to the secure card reader;

re-encrypting, using the secure processor on the secure card reader the personal identification number using a secret key; and

transmitting the re-encrypted personal identification number to a payment processor;

wherein the user interface is a touch screen.

5. The method of claim 4 , further comprising:

receiving, using the secure card reader, a personal account number from a card;

encrypting, using the secure processor on the secure card reader, the personal account number using the secret key; and

transmitting the encrypted personal account number to the payment processor;

wherein the secret key is a derived unique key per transaction (DUKPT) key.

6. The method of claim 1 , wherein generating the complete data representation comprises:

generating a set of lookup tables using the key;

obfuscating, using an obfuscation module on the first device, the set of lookup tables with bijective mixing encodings to produce a set of obfuscated lookup tables; and

generating a directed graph and a set of primitive functions, wherein the set of primitive functions include data which fully describes the set of obfuscated lookup tables.

7. The method of claim 6 , further comprising:

instantiating, using the standard processor on the second device, a virtual machine;

parsing, using the standard processor on the second device, the directed graph and the set of primitive functions from the complete data representation;

applying, using the standard processor on the second device, the sensitive data to the set of primitive functions in accordance with the directed graph;

updating the obfuscation module on the first device to an updated obfuscation module;

generating, using the secure processor and the updated obfuscation module on the first device, a second complete data representation of a second set of white box encryption instructions;

re-instantiating, using the standard processor on the second device, the virtual machine; and

encrypting, using the virtual machine, a second set of sensitive data using the second complete data representation.

8. The method of claim 1 , further comprising:

generating, on the first device, the key;

receiving, via the user interface on the second device, additional sets of sensitive data; and

generating, on the first device, a set of new keys which uniquely correspond with the additional sets of sensitive data.

9. The method of claim 1 , further comprising:

parsing, using the standard processor on the second device, a directed graph and a set of primitive functions from the complete data representation; and

applying, using the standard processor on the second device, the sensitive data to the set of primitive functions in accordance with the directed graph.

10. The method of claim 9 , wherein a primitive function in the set of primitive functions includes:

a unique identifier;

an array of binary data representing a lookup table; and

a flag to indicate if the primitive function generates a final result in the directed graph.

11. The method of claim 9 , further comprising:

instantiating, using the standard processor on the second device, a virtual machine;

wherein the parsing and applying are conducted by the virtual machine; and

wherein the complete data representation is not Turing complete with respect to the standard processor.

12. A system comprising:

a secure device with a secure processor and a secure memory;

an unsecure device with a standard processor;

a secure communication channel between the secure device and the unsecure device;

a key stored in the secure memory;

a white box encryption instruction generator: (i) instantiated by the secure processor; and (ii) programmed to generate a set of white box encryption instructions using the key;

a data representation generator: (i) instantiated by the secure processor; and (ii) programmed to generate a complete data representation of the set of white box encryption instructions using the set of white box encryption instructions; and

a virtual machine: (i) instantiated by the standard processor; and (ii) programmed to encrypt sensitive data using the complete data representation.

13. The system of claim 12 , further comprising:

a touch screen on the unsecure device;

wherein the secure communication channel is a wireless communication channel;

wherein the secure device is a secure card reader device;

wherein the unsecure device is a touch display device; and

wherein the sensitive data is a personal identification number received via the touch screen.

14. The system of claim 12 , further comprising:

a secret key stored in the secure memory;

a secure server programmed to decrypt the sensitive data using the secret key;

wherein the secure device is programmed to: (i) decrypt the encrypted sensitive data from the unsecure device using the key; and (ii) re-encrypt the sensitive data using the secret key; and

wherein the secret key is a derived unique key per transaction (DUKPT) key.

15. The system of claim 12 , further comprising:

a touch screen on the unsecure device that is programmed to receive the sensitive data;

a card reader on the secure device that is programmed to receive a personal account number from a card;

a secure server;

wherein the sensitive data is a personal identification number; and

wherein the personal account number and the personal identification number are used by the secure server to authorize a payment.

16. The system of claim 15 , further comprising:

an operating system instantiated on the unsecure device by the processor;

wherein the complete data representation is not executable by the operating system; and

wherein the complete data representation is not Turing complete.

17. The system of claim 15 , wherein the data representation generator is programmed to

generate the complete data representation by:

generating a set of lookup tables using the key;

obfuscating, using an obfuscation module on the secure device, the set of lookup tables with bijective mixing encodings to produce a set of obfuscated lookup tables; and

generating a directed graph and a set of primitive functions, wherein the set of primitive functions include data which fully describes the set of obfuscated lookup tables.

18. The system of claim 15 , wherein the virtual machine is programmed to encrypt the sensitive data by:

parsing, using the standard processor on the unsecure device, a directed graph and a set of primitive functions from the complete data representation; and

applying, using the standard processor on the unsecure device, the sensitive data to the set of primitive functions in accordance with the directed graph.

19. A system comprising:

an untrusted device with a user interface to receive sensitive data;

a processor on the untrusted device;

an operating system instantiated on the untrusted device by the processor;

a secure card reader device;

a wireless communication channel between the untrusted device and the secure card reader device;

a key stored in the secure card reader device;

a memory on the secure card reader device storing instructions to:

generate a set of white box encryption instructions using the key; and

generate a complete data representation of the white box encryption instructions; and

an application: (i) instantiated on the untrusted device; and (ii) programmed to encrypt the sensitive data using the complete data representation;

wherein the complete data representation does not include executable code for the operating system.

20. The system of claim 19 , wherein:

the user interface is a touch screen;

the untrusted device is a touch display device; and

the sensitive data is a personal identification number received via the touch screen.

21. The system of claim 19 , further comprising:

a secret key stored in the secure memory;

a secure server programmed to decrypt the sensitive data using the secret key;

wherein the secure device is programmed to: (i) decrypt the encrypted sensitive data from the untrusted device using the key; and (ii) re-encrypt the sensitive data using the secret key; and

wherein the secret key is a derived unique key per transaction (DUKPT) key.

22. The system of claim 19 , wherein the secure card reader device is programmed to

generate the complete data representation by:

generating a set of lookup tables using the key;

obfuscating, using an obfuscation module on the secure card reader device, the set of lookup tables with bijective mixing encodings to produce a set of obfuscated lookup tables; and

generating a directed graph and a set of primitive functions, wherein the set of primitive functions include data which fully describes the set of obfuscated lookup tables.

23. The system of claim 19 , wherein the untrusted device is programmed to encrypt the sensitive data by:

parsing, using the processor on the untrusted device, a directed graph and a set of primitive functions from the complete data representation; and

applying, using the processor on the untrusted device, the sensitive data to the set of primitive functions in accordance with the directed graph.

Assignments (2)
CHANGE OF NAME Recorded Oct 7, 2021
From: CLOVER NETWORK, INC.
To: CLOVER NETWORK, LLC
Reel/Frame 057747/0462 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 25, 2018
From: MURRAY, BRIAN JEREMIAH
To: CLOVER NETWORK, INC.
Reel/Frame 047309/0197 →
Continuity (2)
Continuation 15843264 · Dec 15, 2017
Related Publication 20190188703A1 · Jun 20, 2019