IP Library Granted Patent US 11,606,348
Granted Patent B2
US 11,606,348 · App. 17/221,340 · Granted Mar 14, 2023

User authentication using multi-party computation and public key cryptography

Inventors: Prasad Peddada (Alameda, CA); Taher Elgamal (Atherton, CA)
Assignee: salesforce.com, inc.
H04L63/08H04L9/30H04L9/3271H04L63/166
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,606,348
App. No.
17/221,340
Granted
Mar 14, 2023
Kind
B2
Abstract

Techniques are disclosed relating to user authentication using multi-party computation and public key cryptography. In some embodiments, a server may receive, from a client, a request to authenticate a user to a service. The server may access key-pair information that includes, for a server key-pair, a first component of a server private key and, for a client key-pair, a client public key and a first component of a client private key. The server may generate a partial signature value that is based on the first component, but not the entirety, of the server private key. The server may send, to the client, an authentication challenge that includes challenge information and the partial signature value. The server may then determine whether to authenticate the user based on an authentication response from the client.

Claims (60)

1. A method, comprising:

receiving, by a server system from a client system, a request to authenticate a user to a service;

accessing, by the server system, key-pair information associated with the user, wherein the key-pair information includes, for a server key-pair, a first component of a server private key, and, for a client key-pair, a client public key and a first component of a client private key;

in response to the request, generating, by the server system, challenge information to be sent to the client system;

generating, by the server system, a partial signature value based on the first component, but not an entirety, of the server private key;

sending, by the server system to the client system, an authentication challenge that includes the challenge information and the partial signature value;

receiving, by the server system, an authentication response from the client system; and

determining, by the server system, whether to authenticate the user to the service based on the authentication response.

2. The method of claim 1 , wherein the generating the partial signature value includes:

generating a digest value based on an initial input value; and

calculating the partial signature value based on the digest value and the first component of the server private key.

3. The method of claim 1 , wherein the client system stores a second component of the server private key, and wherein the client system is operable to generate a final signature value using the second component of the server private key and the partial signature value.

4. The method of claim 1 , wherein the generating the challenge information includes:

encrypting an original challenge value using the client public key to generate an encrypted challenge value; and

creating a partially decrypted challenge value based on the encrypted challenge value and the first component of the client private key;

wherein the encrypted challenge value and the partially decrypted challenge value are included in the challenge information sent to the client system.

5. The method of claim 4 , wherein the authentication response indicates a decrypted challenge value generated, by the client system, based on a second component of the client private key.

6. The method of claim 5 , wherein the determining whether to authenticate the user to the service includes comparing the decrypted challenge value to the original challenge value.

7. The method of claim 1 , wherein the server system and the client system are communicating over a secured network connection using the Transport Layer Security (TLS) protocol.

8. A non-transitory, computer-readable medium having instructions stored thereon that are capable of execution by a server system to perform operations comprising:

receiving, from a client system, a request to authenticate a user to a service;

accessing key-pair information associated with the user, wherein the key-pair information includes, for a server key-pair, a first component of a server private key, and, for a client key-pair, a client public key and a first component of a client private key;

in response to the request, generating challenge information to be sent to the client system;

generating a partial signature value based on the first component, but not an entirety, of the server private key;

sending, to the client system, an authentication challenge that includes the challenge information and the partial signature value;

receiving an authentication response from the client system; and

determining whether to authenticate the user to the service based on the authentication response.

9. The non-transitory, computer-readable medium of claim 8 , wherein the generating the partial signature value includes:

generating a digest value based on an initial input value; and

calculating the partial signature value based on the digest value and the first component of the server private key.

10. The non-transitory, computer-readable medium of claim 9 , wherein the initial input value corresponds to a current time at which the digest value is generated.

11. The non-transitory, computer-readable medium of claim 8 , wherein the generating the challenge information includes:

encrypting an original challenge value using the client public key to generate an encrypted challenge value; and

creating a partially decrypted challenge value based on the encrypted challenge value and the first component of the client private key;

wherein the encrypted challenge value and the partially decrypted challenge value are included in the challenge information sent to the client system.

12. The non-transitory, computer-readable medium of claim 11 , wherein the authentication response indicates a decrypted challenge value generated, by the client system, based on a second component of the client private key.

13. The non-transitory, computer-readable medium of claim 12 , wherein the determining whether to authenticate the user to the service includes comparing the decrypted challenge value to the original challenge value.

14. The non-transitory, computer-readable medium of claim 12 , wherein the authentication response includes a first hash value generated, by the client system, based on the decrypted challenge value; and wherein the determining whether to authenticate the user to the service includes:

generating a second hash value based on the original challenge value; and

comparing the first and second hash values.

15. A system, comprising:

at least one processor; and

a non-transitory, computer-readable medium having instructions stored thereon that are capable of execution by the at least one processor to perform operations comprising:

receiving, from a client system, a request to authenticate a user to a service;

accessing key-pair information associated with the user, wherein the key-pair information includes, for a server key-pair, a first component of a server private key, and, for a client key-pair, a client public key and a first component of a client private key;

in response to the request, generating challenge information to be sent to the client system;

generating a partial signature value based on the first component, but not an entirety, of the server private key;

sending, to the client system, an authentication challenge that includes the challenge information and the partial signature value;

receiving an authentication response from the client system; and

determining whether to authenticate the user to the service based on the authentication response.

16. The system of claim 15 , wherein the generating the partial signature value includes:

generating a digest value based on an initial input value; and

calculating the partial signature value based on the digest value and the first component of the server private key.

17. The system of claim 16 , wherein the initial input value is an encrypted challenge value generated based on the client public key.

18. The system of claim 15 , wherein the generating the challenge information includes:

encrypting an original challenge value using the client public key to generate an encrypted challenge value; and

creating a partially decrypted challenge value based on the encrypted challenge value and the first component of the client private key;

wherein the encrypted challenge value and the partially decrypted challenge value are included in the challenge information sent to the client system.

19. The system of claim 18 , wherein the authentication response indicates a decrypted challenge value generated, by the client system, based on a second component of the client private key.

20. The system of claim 19 , wherein the determining whether to authenticate the user to the service includes comparing the decrypted challenge value to the original challenge value.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0512 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2021
From: PEDDADA, PRASAD; ELGAMAL, TAHER
To: SALESFORCE.COM, INC.
Reel/Frame 055809/0852 →
Continuity (2)
Division 16263871 · Jan 31, 2019
Related Publication 20210226938A1 · Jul 22, 2021