IP Library Granted Patent US 10,503,913
Granted Patent B2
US 10,503,913 · App. 15/068,189 · Granted Dec 10, 2019

Mutual authentication of software layers

Inventors: Rasta Mansour (Cupertino, CA); Soumendra Bhattacharya (Union City, CA); Robert Youdale (Burlingame, CA)
Assignee: Visa International Service Association
G06F21/602G06F21/12G06F21/445H04L9/0861H04L9/0877H04L9/0897H04L9/3234H04L9/3271H04L9/3273G06F21/14G06F2211/003H04L2209/127
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,503,913
App. No.
15/068,189
Granted
Dec 10, 2019
Kind
B2
Abstract

Techniques for establishing mutual authentication of software layers of an application are described. During initialization of the application, the software layers execute a binding algorithm to exchange secrets to bind the software layers to one another. During subsequent runtime of the software application, the software layers execute a runtime key derivation algorithm to combine the secrets shared during initialization with dynamic time information to generate a data encryption key. The software layers can then securely transfer data with each other by encrypting and decrypting data exchanged between the software layers using the dynamically generated data encryption key.

Claims (72)

1. A method for establishing mutual authentication between a first software layer and a second software layer of an application using a data encryption key derived based on a first nonce generated by the first software layer and a second nonce generated by the second software layer during initialization of the application, the method comprising:

retrieving, by the first software layer of the application executing on a computing device, binding information stored by the first software layer during the initialization of the application;

decrypting, by the first software layer, the binding information to obtain the second nonce and initialization time information;

receiving, by the first software layer, an encrypted first nonce from the second software layer of the application;

decrypting, by the first software layer, the encrypted first nonce to obtain the first nonce;

determining, by the first software layer, dynamic time information based on the initialization time information;

deriving, by the first software layer, a data encryption key based on the first nonce that was generated by the first software layer, the second nonce that was generated by the second software layer, and the dynamic time information determined based on the initialization time information, wherein the data encryption key is derived by hashing a result of combining the first nonce, the second nonce, and the dynamic time information; and

encrypting, by the first software layer, data being sent from the first software layer to the second software layer using the data encryption key.

2. The method of claim 1 , wherein the data encryption key is derived by:

combining the first nonce and the second nonce to generate a combined nonce;

concatenating the combined nonce with the dynamic time information; and

hashing a result of the concatenating.

3. The method of claim 1 , further comprising:

prior to retrieving the binding information:

receiving, from the second software layer, an encrypted second nonce and encrypted initialization time information;

decrypting, by the first software layer, the encrypted second nonce and the encrypted initialization time information to obtain the second nonce and the initialization time information;

re-encrypting, by the first software layer, the second nonce and the initialization time information to generate a re-encrypted second nonce and re-encrypted initialization time information; and

storing the re-encrypted second nonce and the re-encrypted initialization time information as the binding information.

4. The method of claim 1 , further comprising:

prior to retrieving the binding information:

generating, by the first software layer, the first nonce;

encrypting, by the first software layer, the first nonce; and

sending, by the first software layer, the encrypted first nonce to the second software layer.

5. The method of claim 3 , wherein the first nonce is encrypted using a binding key derived from at least a computing device identifier associated with the computing device.

6. The method of claim 3 , wherein the first nonce is encrypted using a binding key derived from at least an issuer identifier associated with an issuer of the application.

7. A method for establishing mutual authentication between a first software layer and a second software layer of an application using a data encryption key derived based on a first nonce generated by the first software layer and a second nonce generated by the second software layer during initialization of the application, the method comprising:

retrieving, by the second software layer executing on a computing device, binding information stored by the second software layer during the initialization of the application;

decrypting, by the second software layer, the binding information to obtain the first nonce and initialization time information;

receiving, by the second software layer, an encrypted second nonce from the first software layer;

decrypting, by the second software layer, the encrypted second nonce to obtain the second nonce;

determining, by the second software layer, dynamic time information based on the initialization time information;

deriving, by the second software layer, the data encryption key based on the first nonce that was generated by the first software layer, the second nonce that was generated by the second software layer, and the dynamic time information determined based on the initialization time information, wherein the data encryption key is derived by hashing a result of combining the first nonce, the second nonce, and the dynamic time information; and

encrypting, by the second software layer, data being sent from the second software layer to the first software layer using the data encryption key.

8. The method of claim 7 , wherein the data encryption key is derived by:

combining the first nonce and the second nonce to generate a combined nonce;

concatenating the combined nonce with the dynamic time information; and

hashing a result of the concatenating.

9. The method of claim 7 , further comprising:

prior to retrieving the binding information:

receiving, from the first software layer, an encrypted first nonce;

decrypting, by the second software layer, the encrypted first nonce to obtain the first nonce;

re-encrypting, by the second software layer, the first nonce to generate a re-encrypted first nonce;

encrypting the initialization time information to generate encrypted initialization time information; and

storing the re-encrypted first nonce and the encrypted initialization time information as the binding information.

10. The method of claim 7 , further comprising:

prior to retrieving the binding information:

generating, by the second software layer, the second nonce;

encrypting, by the second software layer, the second nonce;

encrypting, by the second software layer, the initialization time information; and

sending the encrypted second nonce and the encrypted initialization time information to the first software layer.

11. The method of claim 10 , wherein the second nonce and the initialization time information are encrypted using a binding key derived from at least a computing device identifier associated with the computing device.

12. The method of claim 10 , wherein the first nonce is encrypted using a binding key derived from at least the first nonce generated by the first software layer.

13. A computing device comprising:

a processor; and

a memory coupled to the processor and storing computer readable code for implementing an application having a first software layer and a second software layer;

wherein the computer readable code, when executed by the processor, causes the first software layer to:

receive an encrypted first nonce from the second software layer;

decrypt the encrypted first nonce to obtain the first nonce;

retrieve first binding information stored by the first software layer during initialization of the application;

decrypt the first binding information to obtain a second nonce; and

derive a data encryption key based on the first nonce, the second nonce, and dynamic time information representing an elapsed time since the initialization of the application, wherein the data encryption key is derived by hashing a result of combining the first nonce, the second nonce, and the dynamic time information;

wherein the code, when executed by the processor, causes the second software layer to:

retrieve second binding information stored by the second software layer during the initialization of the application;

decrypt the second binding information to obtain the first nonce;

receive an encrypted second nonce from the first software layer;

decrypt the encrypted second nonce to obtain the second nonce;

deriving the data encryption key based on the first nonce that was generated by the first software layer, the second nonce that was generated by the second software layer, and the dynamic time information, wherein the data encryption key is derived by hashing a result of combining the first nonce, the second nonce, and the dynamic time information; and

wherein data being transferred between the first and second software layers are encrypted using the data encryption key.

14. The computing device of claim 13 , wherein the initialization time information representing an initialization time of the application is generated by the second software layer during the initialization of the application, and provided to the first software layer by the second software layer.

15. The computing device of claim 14 , wherein the initialization time information is encrypted prior to being provided to the first software layer.

16. The computing device of claim 15 , wherein the initialization time information is encrypted using a binding key derived from at least the first nonce.

17. The computing device of claim 15 , wherein the binding key is derived from at least a computing device identifier associated with the computing device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2016
From: MANSOUR, RASTA; BHATTACHARYA, SOUMENDRA; YOUDALE, ROBERT
To: VISA INTERNATIONAL SERVICE ASSOCIATION
Reel/Frame 038590/0010 →
Continuity (2)
Provisional Application 62132289 · Mar 12, 2015
Related Publication 20160267280A1 · Sep 15, 2016