IP Library Granted Patent US 9,385,864
Granted Patent B2
US 9,385,864 · App. 14/630,585 · Granted Jul 5, 2016

Secure session capability using public-key cryptography without access to the private key

Inventors: Sébastien Andreas Henry Pahl (San Francisco, CA); Matthieu Philippe François Tourne (San Francisco, CA); Piotr Sikora (San Francisco, CA); Ray Raymond Bejjani (San Francisco, CA); Dane Orion Knecht (San Francisco, CA); Matthew Browning Prince (San Francisco, CA); John Graham-Cumming (London, GB); Lee Hahn Holloway (Santa Cruz, CA); Nicholas Thomas Sullivan (San Francisco, CA); Albertus Strasheim (San Francisco, CA)
Assignee: CLOUDFLARE, INC.
H04L9/0844H04L9/321H04L9/3268H04L63/061
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 9,385,864
App. No.
14/630,585
Granted
Jul 5, 2016
Kind
B2
Abstract

A server establishes a secure session with a client device where a private key used in the handshake when establishing the secure session is stored in a different server. During the handshake procedure, the server proxies messages to/from the different server including a set of signed cryptographic parameters signed using the private key on the different server. The different server generates the master secret, and generates and transmits the session keys to the server that are to be used in the secure session for encrypting and decrypting communication between the client device and the server.

Claims (97)

1. A method in a first server for establishing a secure session with a client device, the method comprising:

receiving a Client Hello message from the client device and transmitting the Client Hello message to a second server;

receiving, from the second server, a Server Hello message in response to the Client Hello message and transmitting the Server Hello message to the client device;

receiving, from the second server, a Certificate message that includes a digital certificate and transmitting the Certificate message to the client device;

receiving, from the second server, a Server Key Exchange message that includes a set of cryptographic parameters that is signed using a private key stored on the second server and not available on the first server and transmitting the Server Key Exchange message to the client device, wherein the set of cryptographic parameters are to be used by the client device when generating a premaster secret and include a Diffie-Hellman public value selected by the second server;

receiving, from the second server, a Server Hello Done message and transmitting the Server Hello Done message to the client device;

receiving, from the client device, a Client Key Exchange message that includes a Diffie-Hellman public value selected by the client device and transmitting the Client Key Exchange message to the second server;

receiving, from the second server, a set of one or more session keys to be used in the secure session for encrypting and decrypting communication between the client device and the first server that were generated at least using a master secret that is generated using a premaster secret that is generated using the Diffie-Hellman public value selected by the client device and the Diffie-Hellman public value selected by the second server;

receiving, from the client device, a first Change Cipher Spec message that indicates that future messages sent from the client device will be encrypted;

receiving, from the client device, a first Finished message that is encrypted according to the session keys;

transmitting, to the client device, a second Change Cipher Spec message that indicates that future messages sent to the client device will be encrypted; and

transmitting, to the client device, a second Finished message that is encrypted according to the session keys.

2. The method of claim 1 , wherein the first server and the second server are owned or operated by different entities.

3. The method of claim 1 , wherein at least the Server Key Exchange message and the set of one or more session keys are received from the second server over a secure session between the first server and the second server.

4. The method of claim 1 , further comprising:

after transmitting the second Finished message to the client device, receiving from the client device a request for a resource over the secure session, wherein the request is encrypted;

decrypting, using the set of session keys, the request for the resource;

transmitting the request for the resource to a third server;

receiving the resource from the third server in response to the request;

generating an encrypted response that includes the received resource, wherein the encrypted response is encrypted with the set of session keys; and

transmitting the encrypted response to the client device.

5. The method of claim 4 , wherein the second server and the third server are the same server.

6. The method of claim 1 , further comprising:

receiving, from the second server, the master secret;

verifying information in the first Finished message including,

calculating a first value using a function that takes as input at least the master secret and a hash of the Client Hello message, Server Hello message, Certificate message, Server Key Exchange message, Server Hello Done message, Client Key Exchange message, and first Change Cipher Spec message, and

comparing the calculated first value with a second value included in the first Finished message, wherein a same first value and second value indicates a successful key exchange;

calculating a third value using a function that takes as input at least the master secret and a hash of the Client Hello message, Server Hello message, Certificate message, Server Key Exchange message, Server Hello Done message, Client Key Exchange message, first Change Cipher Spec message, first Finished message, and second Change Cipher Spec message; and

including the third value in the second Finished message.

7. The method of claim 1 , further comprising:

transmitting, to the second server, the first Change Cipher Spec message and the first Finished message; and

receiving, from the second server, the second Change Cipher Spec message and the second Finished message.

8. A non-transitory computer-readable medium storing instructions, which when executed by a set of one or more processors of a first server, cause the set of processors to perform operations comprising:

receiving a Client Hello message from a client device and transmitting the Client Hello message to a second server;

receiving, from the second server, a Server Hello message in response to the Client Hello message and transmitting the Server Hello message to the client device;

receiving, from the second server, a Certificate message that includes a digital certificate and transmitting the Certificate message to the client device;

receiving, from the second server, a Server Key Exchange message that includes a set of cryptographic parameters that is signed using a private key stored on the second server and not available on the first server and transmitting the Server Key Exchange message to the client device, wherein the set of cryptographic parameters are to be used by the client device when generating a premaster secret and include a Diffie-Hellman public value selected by the second server;

receiving, from the second server, a Server Hello Done message and transmitting the Server Hello Done message to the client device;

receiving, from the client device, a Client Key Exchange message that includes a Diffie-Hellman public value selected by the client device and transmitting the Client Key Exchange message to the second server;

receiving, from the second server, a set of one or more session keys to be used in a secure session for encrypting and decrypting communication between the client device and the first server that were generated at least using a master secret that is generated using a premaster secret that is generated using the Diffie-Hellman public value selected by the client device and the Diffie-Hellman public value selected by the second server;

receiving, from the client device, a first Change Cipher Spec message that indicates that future messages sent from the client device will be encrypted;

receiving, from the client device, a first Finished message that is encrypted according to the session keys;

transmitting, to the client device, a second Change Cipher Spec message that indicates that future messages sent to the client device will be encrypted; and

transmitting, to the client device, a second Finished message that is encrypted according to the session keys.

9. The non-transitory computer-readable medium of claim 8 , wherein the first server and the second server are owned or operated by different entities.

10. The non-transitory computer-readable medium of claim 8 , wherein at least the Server Key Exchange message and the set of one or more session keys are received from the second server over a secure session between the first server and the second server.

11. The non-transitory computer-readable medium of claim 8 , further storing instructions that, when executed by the set of processors, cause the set of processors to perform the following operations:

after transmitting the second Finished message to the client device, receiving from the client device a request for a resource over the secure session, wherein the request is encrypted;

decrypting, using the set of session keys, the request for the resource;

transmitting the request for the resource to a third server;

receiving the resource from the third server in response to the request;

generating an encrypted response that includes the received resource, wherein the encrypted response is encrypted with the set of session keys; and

transmitting the encrypted response to the client device.

12. The non-transitory computer-readable medium of claim 11 , wherein the second server and the third server are the same server.

13. The non-transitory computer-readable medium of claim 8 , further storing instructions that, when executed by the set of processors, cause the set of processors to perform the following operations:

receiving, from the second server, the master secret;

verifying information in the first Finished message including,

calculating a first value using a function that takes as input at least the master secret and a hash of the Client Hello message, Server Hello message, Certificate message, Server Key Exchange message, Server Hello Done message, Client Key Exchange message, and first Change Cipher Spec message, and

comparing the calculated first value with a second value included in the first Finished message, wherein a same first value and second value indicates a successful key exchange;

calculating a third value using a function that takes as input at least the master secret and a hash of the Client Hello message, Server Hello message, Certificate message, Server Key Exchange message, Server Hello Done message, Client Key Exchange message, first Change Cipher Spec message, first Finished message, and second Change Cipher Spec message; and

including the third value in the second Finished message.

14. The non-transitory computer-readable medium of claim 8 , further storing instructions that, when executed by the set of processors, cause the set of processors to perform the following operations:

transmitting, to the second server, the first Change Cipher Spec message and the first Finished message; and

receiving, from the second server, the second Change Cipher Spec message and the second Finished message.

15. An apparatus comprising:

a first server including a set of one or more processors and a set of one or more non-transitory computer-readable storage mediums storing instructions, that when executed by the set of processors, cause the set of processors to perform the following operations:

receive a Client Hello message from a client device and transmit the Client Hello message to a second server;

receive, from the second server, a Server Hello message in response to the Client Hello message and transmit the Server Hello message to the client device;

receive, from the second server, a Certificate message that includes a digital certificate and transmit the Certificate message to the client device;

receive, from the second server, a Server Key Exchange message that includes a set of cryptographic parameters that is signed using a private key stored on the second server and not available on the first server and transmit the Server Key Exchange message to the client device, wherein the set of cryptographic parameters are to be used by the client device when generating a premaster secret and include a Diffie-Hellman public value selected by the second server;

receive, from the second server, a Server Hello Done message and transmit the Server Hello Done message to the client device;

receive, from the client device, a Client Key Exchange message that includes a Diffie-Hellman public value selected by the client device and transmit the Client Key Exchange message to the second server;

receive, from the second server, a set of one or more session keys to be used in a secure session for encrypting and decrypting communication between the client device and the first server that were generated at least using a master secret that is generated using a premaster secret that is generated using the Diffie-Hellman public value selected by the client device and the Diffie-Hellman public value selected by the second server;

receive, from the client device, a first Change Cipher Spec message that indicates that future messages sent from the client device will be encrypted;

receive, from the client device, a first Finished message that is encrypted according to the session keys;

transmit, to the client device, a second Change Cipher Spec message that indicates that future messages sent to the client device will be encrypted; and

transmit, to the client device, a second Finished message that is encrypted according to the session keys.

16. The apparatus of claim 15 , wherein the first server and the second server are owned or operated by different entities.

17. The apparatus of claim 15 , wherein at least the Server Key Exchange message and the set of one or more session keys are to be received from the second server over a secure session between the first server and the second server.

18. The apparatus of claim 15 , wherein the set of non-transitory computer-readable storage mediums further stores instructions, that when executed by the set of processors, cause the set of processors to perform the following operations:

after transmission of the second Finished message to the client device, receive from the client device a request for a resource over the secure session, wherein the request is encrypted;

decrypt, using the set of session keys, the request for the resource;

transmit the request for the resource to a third server;

receive the resource from the third server in response to the request;

generate an encrypted response that includes the received resource, wherein the encrypted response is encrypted with the set of session keys; and

transmit the encrypted response to the client device.

19. The apparatus of claim 18 , wherein the second server and the third server are the same server.

20. The apparatus of claim 15 , wherein the set of non-transitory computer-readable storage mediums further stores instructions, that when executed by the set of processors, cause the set of processors to perform the following operations:

receive, from the second server, the master secret;

verify information in the first Finished message including,

calculate a first value using a function that takes as input at least the master secret and a hash of the Client Hello message, Server Hello message, Certificate message, Server Key Exchange message, Server Hello Done message, Client Key Exchange message, and first Change Cipher Spec message, and

compare the calculated first value with a second value included in the first Finished message, wherein a same first value and second value indicates a successful key exchange;

calculate a third value using a function that takes as input at least the master secret and a hash of the Client Hello message, Server Hello message, Certificate message, Server Key Exchange message, Server Hello Done message, Client Key Exchange message, first Change Cipher Spec message, first Finished message, and second Change Cipher Spec message; and

include the third value in the second Finished message.

21. The apparatus of claim 15 , wherein the set of non-transitory computer-readable storage mediums further stores instructions, that when executed by the set of processors, cause the set of processors to perform the following operations:

transmit, to the second server, the first Change Cipher Spec message and the first Finished message; and

receive, from the second server, the second Change Cipher Spec message and the second Finished message.

Assignments (2)
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2015
From: PAHL, SÉBASTIEN ANDREAS HENRY; TOURNE, MATTHIEU PHILIPPE FRANÇOIS; SIKORA, PIOTR; BEJJANI, RAY RAYMOND; KNECHT, DANE ORION; PRINCE, MATTHEW BROWNING; GRAHAM-CUMMING, JOHN; HOLLOWAY, LEE HAHN; SULLIVAN, NICHOLAS THOMAS; STRASHEIM, ALBERTUS
To: CLOUDFLARE, INC.
Reel/Frame 035042/0268 →
Continuity (2)
Continuation 14248256 · Apr 8, 2014
Related Publication 20160013935A1 · Jan 14, 2016