IP Library Granted Patent US 11,216,570
Granted Patent B2
US 11,216,570 · App. 16/608,757 · Granted Jan 4, 2022

Reducing compromise of sensitive data in virtual machine

Inventors: Bartlomiej Prokop (Belfast, GB); James Donaldson (Moira, GB); Peter Lennon (Belfast, GB)
Assignee: Visa International Service Association
G06F21/6209G06F21/602G06F21/6218H04L9/0822H04L63/0428G06F2221/2107
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 11,216,570
App. No.
16/608,757
Granted
Jan 4, 2022
Kind
B2
Abstract

Techniques for reducing compromise of sensitive data in a virtual machine are described. During initiation of a secure string instance of a program module in memory allocated to the virtual machine, the program module can receive sensitive data in plaintext and retrieves parameters sourced from outside the allocated memory. During the execution of the program module, the sensitive data can be encrypted using a key based on the parameters to obtain encrypted data. The program module can overwrite the sensitive data with the encrypted data. The program module can receive a trigger to send a message that is generated using the sensitive data. The encrypted data can be decrypted using the key based on the parameters to obtain the sensitive data. After encryption and decryption, the program module can generate the message using the sensitive data and overwrite the sensitive data and the parameters used to encrypt the sensitive data.

Claims (73)

1. A method comprising performing, by a computing device:

initiating a secure string instance of a program module,

wherein the secure string instance is an immutable managed object residing in an allocated memory used for execution of the program module;

receiving sensitive data at the secure string instance of the program module, the sensitive data being in plaintext;

retrieving one or more parameters that are sourced from outside of the allocated memory;

encrypting the sensitive data using the one or more parameters to obtain encrypted data;

storing the encrypted data;

receiving a trigger to send a message that is to be generated using the sensitive data;

retrieving the one or more parameters that are sourced from outside the allocated memory;

decrypting the encrypted data using the one or more parameters to obtain the sensitive data;

overwriting the one or more parameters in the allocated memory;

using the sensitive data to generate the message; and

overwriting the sensitive data in the allocated memory so as to delete the sensitive data.

2. The method of claim 1 , wherein the one or more parameters that are sourced from outside of the allocated memory are associated with the program module.

3. The method of claim 1 , further comprising overwriting the one or more parameters in the allocated memory immediately after encrypting the sensitive data.

4. The method of claim 1 , wherein the one or more parameters comprises at least one or more of a start time of the program module, a space associated with a physical memory, a process ID, and a network stack property.

5. The method of claim 1 , wherein retrieving the one or more parameters comprises:

retrieving a first parameter from a first hardware module and a second parameter from a second hardware module, wherein the first hardware module and the second hardware module are separate from the allocated memory.

6. The method of claim 1 , wherein encrypting the sensitive data further comprises:

generating a key using the one or more parameters;

overwriting the one or more parameters in the allocated memory;

encrypting the sensitive data using the key to obtain the encrypted data; and

overwriting the key in the allocated memory.

7. The method of claim 6 wherein decrypting the sensitive data further comprises:

generating the key using the one or more parameters;

overwriting the one or more parameters in the allocated memory;

decrypting the sensitive data using the key to obtain the sensitive data; and

overwriting the key in the allocated memory.

8. The method of claim 1 , wherein the trigger is initiated by a device requesting access to a resource associated with the sensitive data.

9. The method of claim 1 , wherein using the sensitive data to generate the message further comprises:

accessing an encryption key associated with the trigger;

encrypting the sensitive data using the encryption key to obtain encrypted sensitive data; and

generating the message using the encrypted sensitive data.

10. The method of claim 1 further comprising transmitting the message to a second secure string instance of the program module.

11. The method of claim 1 , wherein the message is a request to access services over a network.

12. The method of claim 1 , wherein the trigger is associated with an authorization process associated with the sensitive data.

13. The method of claim 1 , further comprising:

storing the sensitive data in a mutable object; and

overwriting the sensitive data in the mutable object with the encrypted data.

14. A computing device comprising:

a processor; and

one or more non-transitory computer readable media storing instructions that, when executed by the processor, cause the computing device to perform:

initiating a secure string instance of a program module,

wherein the secure string instance is an immutable managed object residing in an allocated memory used for execution of the program module;

receiving sensitive data at the secure string instance of the program module, the sensitive data being in plaintext;

retrieving one or more parameters that are sourced from outside of the allocated memory;

encrypting the sensitive data using the one or more parameters to obtain encrypted data;

storing the encrypted data;

receiving a trigger to send a message that is to be generated using the sensitive data;

retrieving the one or more parameters that are sourced from outside the allocated memory;

decrypting the encrypted data using the one or more parameters to obtain the sensitive data;

overwriting the one or more parameters in the allocated memory;

using the sensitive data to generate the message; and

overwriting the sensitive data in the allocated memory so as to delete the sensitive data.

15. The computing device of claim 14 , wherein the one or more parameters comprises at least one or more of a start time of the program module, a space associated with a physical memory, a process ID, and a network stack property.

16. The computing device of claim 14 , wherein retrieving the one or more parameters comprises:

retrieving a first parameter from a first hardware module and a second parameter from a second hardware module, wherein the first hardware module and the second hardware module are separate from the allocated memory.

17. The computing device of claim 14 , wherein encrypting the sensitive data further comprises:

generating a key using the one or more parameters;

overwriting the one or more parameters in the allocated memory;

encrypting the sensitive data using the key to obtain the encrypted data; and

overwriting the key in the allocated memory.

18. The computing device of claim 17 , wherein decrypting the sensitive data further comprises:

generating the key using the one or more parameters;

overwriting the one or more parameters in the allocated memory;

decrypting the sensitive data using the key to obtain the sensitive data; and

overwriting the key in the allocated memory.

19. The computing device of claim 14 , wherein using the sensitive data to generate the message further comprises:

accessing an encryption key associated with the trigger;

encrypting the sensitive data using the encryption key to obtain encrypted sensitive data; and

generating the message using the encrypted sensitive data.

20. The computing device of claim 14 , wherein the instructions, when executed by the processor, cause the computing device to further perform:

transmitting the message to a second secure string instance of the program module.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 25, 2019
From: PROKOP, BARTLOMIEJ; DONALDSON, JAMES; LENNON, PETER
To: VISA INTERNATIONAL SERVICE ASSOCIATION
Reel/Frame 050833/0847 →
Continuity (2)
Provisional Application 62508320 · May 18, 2017
Related Publication 20200050779A1 · Feb 13, 2020
Cited By (2)
US 12,561,075 US 12,563,020