Secure communications providing forward secrecy
AssigneeVisa International Service Association
InventorsEric Le Saint, Payman Mohassel
Life of this patent
Estimating the term…
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.
Claims18
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.
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.
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.
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.
Dependencies are inferred from the claim text.