# US 10,313,133 B2 · Secure communications providing forward secrecy

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,313,133 B2
- Document ID: US10313133B2
- Status: Granted
- Kind: B2
- Application number: 15/629,689
- Filed: 2017-06-21
- Published: 2018-12-27
- Granted: 2019-06-04
- Earliest claimed: 2017-06-21
- Assignees: Visa International Service Association
- Applicants: Visa International Service Association
- Inventors: Eric Le Saint; Payman Mohassel
- Web page: https://patentgrep.com/patent/US10313133B2

## CPC

- H04L 9/3247: {involving digital signatures}
- H04L 9/0662: {with particular pseudorandom sequence generator}
- H04L 9/0841: {involving Diffie-Hellman or related key agreement protocols}
- H04L 9/088: {Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms (network architectures or network communication protocols for using time-dependent keys in a packet data network H04L63/068)}
- H04L 9/3066: {involving algebraic varieties, e.g. elliptic or hyper-elliptic curves}
- H04L 9/3257: {using blind signatures}
- H04L 9/3265: {using certificate chains, trees or paths; Hierarchical trust model}
- H04L 9/3268: {using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]}
- H04L 9/3273: {for mutual authentication (network architectures or network communication protocols for achieving mutual authentication in a packet data network H04L63/0869)}
- H04L 63/0435: {wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption (cryptographic mechanisms or cryptographic arrangements for symmetric key encryption H04L9/06)}
- H04L 63/0442: {wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption (cryptographic mechanisms or cryptographic arrangements for public-key encryption H04L9/30)}
- H04L 63/061: {for key exchange, e.g. in peer-to-peer networks (cryptographic mechanisms or cryptographic arrangements for key agreement H04L9/0838)}
- H04L 63/0823: {using certificates (cryptographic mechanisms or cryptographic arrangements for entity authentication involving certificates H04L9/3263)}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Embodiments of the invention can establish secure communications using a single non-traceable request message from a first computer and a single non-traceable response message from a second computer. Non-traceability may be provided through the use of blinding factors. The request and response messages can also include signatures that provide for non-repudiation. In addition, the encryption of the request and response message is not based on the static keys pairs, which are used for validation of the signatures. As such, perfect forward secrecy is maintained.

## Claims

### Claim 1

A computer-implemented method for performing communications between a first computer and a second computer, the method comprising:
storing, by the first computer, a first static private key of the first computer, a first static public key of the first computer corresponding to the first static private key, and a second static public key of the second computer;
generating, by the first computer, a first blinding factor;
determining, by the first computer, a first blinded public key using the first blinding factor;
determining, by the first computer, a first shared secret using the first blinding factor and the second static public key;
generating, by the first computer using a left signature algorithm, a first-computer left signature and a first-computer random signature-value;
encrypting, by the first computer using the first shared secret, first-computer data including the first static public key and the first-computer left signature to obtain encrypted first-computer data;
generating, by the first computer, a first-computer right-signature by signing the encrypted first-computer data and the first-computer random signature-value with the first static private key using a right signature algorithm; and
sending, by the first computer to the second computer, a first message including the first blinded public key, the first-computer right-signature, and the encrypted first-computer data.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first blinding factor is generated using a pseudo-random number generator, wherein the first blinded public key is determined from the first blinding factor using an elliptic curve public key algorithm, and wherein the first-computer data further includes a first-computer certificate, the first-computer certificate including the first static public key.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
receiving, by the first computer, a second message from the second computer including a second blinded public key of the second computer and encrypted second-computer data;
determining, by the first computer, a second shared secret using the first blinding factor and the second blinded public key; and
decrypting, by the first computer, the encrypted second-computer data using the second shared secret.

### Claim 4 (depends on 3)

The method of claim 3, wherein the second computer determines the first shared secret using the first blinded public key and a second static private key of the second computer corresponding to the second static public key, decrypts the encrypted first-computer data using the first shared secret, validates the first-computer left signature and the first-computer right-signature using the first static public key, and sends a second message to the first computer including a second blinded public key of the second computer and encrypted second-computer data.

### Claim 5 (depends on 3)

The method of claim 3, wherein the encrypted second-computer data includes a second-computer signature, the method further comprising:
validating, by the first computer, a second-computer signature of the second computer using the second static public key.

### Claim 6 (depends on 3)

The method of claim 3, further comprising validating the second blinded public key using the second static public key and a second computer blinding factor, wherein the encrypted second-computer data includes the second computer blinding factor.

### Claim 7

A computer-implemented method for performing communications between a first computer and second computer, the method comprising:
storing, by the second computer, a second static private key of the second computer, and a second static public key of the second computer corresponding to the second static private key;
receiving, from the first computer by the second computer, a first message including a first blinded public key of the first computer, a first-computer right-signature, and encrypted first-computer data, wherein the first-computer right-signature is generated by the first computer by signing the encrypted first-computer data and a first-computer random signature-value with a first static private key of the first computer using a right signature algorithm, wherein the first-computer random signature-value is generated by the first computer using a left signature algorithm;
determining, by the second computer, a first shared secret using the first blinded public key and the second static private key, wherein the first computer generates a first blinding factor, determines the first blinded public key using the first blinding factor, determines the first shared secret using the first blinding factor and the second static public key, and encrypts first-computer data using the first shared secret;
decrypting, by the second computer using the first shared secret, the encrypted first-computer data to obtain the first-computer data, the first-computer data including a first static public key of the first computer corresponding to the first static private key and a first-computer left-signature, wherein the first-computer left-signature is generated by the first computer using the left signature algorithm; and
validating, by the second computer, the first-computer left-signature and the first-computer right-signature using the first static public key and the encrypted first-computer data.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
generating, by the second computer, a second blinding factor;
determining, by the second computer, a second blinded public key of the second computer using the second blinding factor and the second static public key;
determining, by the second computer, a second shared secret using the first blinded public key, the second blinding factor, and the second static private key;
generating, by the second computer using a left signature algorithm, a second computer left-signature and a second computer random signature-value;
encrypting, by the second computer using the second shared secret, second computer data including the second static public key and the second computer left-signature to obtain encrypted second-computer data;
generating, by the second computer, a second computer right-signature by signing the encrypted second-computer data and the first-computer random signature-value with the first static private key using a right signature algorithm; and
sending, by the second computer to the first computer, a second message including the second blinded public key, the second computer right-signature, and the encrypted second computer data.

### Claim 9 (depends on 8)

The method of claim 8, wherein the first computer determines the second shared secret using the second blinded public key, decrypts the encrypted second computer data using the second shared secret to obtain the second computer left-signature, and verifies the second computer right-signature and the second computer left-signature using the second static public key.

### Claim 10

A first computer comprising:
a memory that stores computer-executable instructions; and one or more hardware processors configured to access the memory and execute the computer-executable instructions to:
store a first static private key of the first computer, a first static public key of the first computer corresponding to the first static private key, and a second static public key of a second computer;
generate a first blinding factor;
determine a first blinded public key using the first blinding factor;
determine a first shared secret using the first blinding factor and the second static public key;
generate, using a left signature algorithm, a first-computer left signature and a first-computer random signature-value;
encrypt, using the first shared secret, first-computer data including the first static public key and the first-computer left signature to obtain encrypted first-computer data;
generate a first-computer right-signature by signing the encrypted first-computer data and the first-computer random signature-value with the first static private key using a right signature algorithm; and
send, to the second computer, a first message including the first blinded public key, the first-computer right-signature, and the encrypted first-computer data.

### Claim 11 (depends on 10)

The first computer of claim 10, wherein the first blinding factor is generated using a pseudo-random number generator, wherein the first blinded public key is determined from the first blinding factor using an elliptic curve public key algorithm, and wherein the first-computer data further includes a first-computer certificate, the first-computer certificate including the first static public key.

### Claim 12 (depends on 10)

The first computer of claim 10, wherein the one or more hardware processors are further configured to access the memory and execute the computer-executable instructions to:
receive a second message from the second computer including a second blinded public key of the second computer and encrypted second-computer data;
determine a second shared secret using the first blinding factor and the second blinded public key; and
decrypt the encrypted second-computer data using the second shared secret.

### Claim 13 (depends on 12)

The first computer of claim 12, wherein the second computer determines the first shared secret using the first blinded public key and a second static private key of the second computer corresponding to the second static public key, decrypts the encrypted first-computer data using the first shared secret, validates the first-computer left signature and the first-computer right-signature using the first static public key, and sends a second message to the first computer including a second blinded public key of the second computer and encrypted second-computer data, and
wherein the one or more hardware processors are further configured to access the memory and execute the computer-executable instructions to:
receive the second message from the second computer.

### Claim 14 (depends on 12)

The first computer of claim 12, wherein the encrypted second-computer data includes a second-computer signature, and wherein the one or more hardware processors are further configured to access the memory and execute the computer-executable instructions to:
validate a second-computer signature of the second computer using the second static public key.

### Claim 15 (depends on 12)

The first computer of claim 12, wherein the one or more hardware processors are further configured to access the memory and execute the computer-executable instructions to:
validate the second blinded public key using the second static public key and a second computer blinding factor, wherein the encrypted second-computer data includes the second computer blinding factor.

### Claim 16

A second computer comprising:
a memory that stores computer-executable instructions; and
one or more hardware processors configured to access the memory and execute the computer-executable instructions to:
store a second static private key of the second computer and a second static public key of the second computer corresponding to the second static private key;
receive, from a first computer, a first message including a first blinded public key of the first computer, a first-computer right-signature, and encrypted first-computer data, wherein the first-computer right-signature is generated by the first computer by signing the encrypted first-computer data and a first-computer random signature-value with a first static private key of the first computer using a right signature algorithm, wherein the first-computer random signature-value is generated by the first computer using a left signature algorithm;
determine a first shared secret using the first blinded public key and the second static private key, wherein the first computer generates a first blinding factor, determines the first blinded public key using the first blinding factor, determines the first shared secret using the first blinding factor and the second static public key, and encrypts first-computer data using the first shared secret;
decrypt, using the first shared secret, the encrypted first-computer data to obtain the first-computer data, the first-computer data including a first static public key of the first computer corresponding to the first static private key and a first-computer left-signature, wherein the first-computer left-signature is generated by the first computer using the left signature algorithm; and
validate the first-computer left-signature and the first-computer right-signature using the first static public key and the encrypted first-computer data.

### Claim 17 (depends on 16)

The second computer of claim 16, wherein the one or more hardware processors are further configured to access the memory and execute the computer-executable instructions to:
generate a second blinding factor;
determine a second blinded public key of the second computer using the second blinding factor and the second static public key;
determine a second shared secret using the first blinded public key, the second blinding factor, and the second static private key;
generate, using a left signature algorithm, a second computer left-signature and a second computer random signature-value;
encrypt, using the second shared secret, second computer data including the second static public key and the second computer left-signature to obtain encrypted second-computer data;
generate a second computer right-signature by signing the encrypted second-computer data and the first-computer random signature-value with the first static private key using a right signature algorithm; and
send, to the first computer, a second message including the second blinded public key, the second computer right-signature, and the encrypted second computer data.

### Claim 18 (depends on 17)

The second computer of claim 17, wherein the first computer determines the second shared secret using the second blinded public key, decrypts the encrypted second computer data using the second shared secret to obtain the second computer left-signature, and verifies the second computer right-signature and the second computer left-signature using the second static public key.
