IP Library Granted Patent US 10,033,529
Granted Patent B2
US 10,033,529 · App. 15/202,371 · Granted Jul 24, 2018

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/14H04L9/30H04L9/321H04L9/3263H04L9/3268H04L63/061H04L63/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 10,033,529
App. No.
15/202,371
Granted
Jul 24, 2018
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 (64)

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

transmitting a plurality of messages between the client device and a second server that has access to a private key used in establishing the secure session, wherein the private key is not available on the first server, and wherein the plurality of messages transmitted between the client device and the second server includes a Client Hello message received from the client device, a Server Hello message received from the second server, a Certificate message received from the second server, a Server Key Exchange message received from the second server, a Server Hello Done message received from the second server, and a Client Key Exchange message received from the client device;

receiving, from the second server, a master secret that was generated using a premaster secret that was generated using a Diffie-Hellman public value selected by the client device and a Diffie-Hellman public value selected by the second server;

receiving, from the client device, a first Change Cipher Spec message and a first Finished message;

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;

transmitting a second Change Cipher Spec message to the client device;

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 the master secret;

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

transmitting a second Finished message to the client device that includes the third value;

receiving, from the client device over the secure session, an encrypted request for a resource;

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

retrieving the requested resource;

generating a response that includes the retrieved resource;

encrypting the generated response using the set of session keys; and

transmitting, to the client device over the secure session, the encrypted response.

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 the set of 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 , wherein retrieving the requested resource includes transmitting the request for the resource to a third server and receiving the resource from the third server in response to the request, and wherein the second server and the third server are the same server.

5. The method of claim 1 , wherein retrieving the requested resource includes retrieving the requested resource locally on the first server.

6. A non-transitory computer-readable storage 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:

transmitting a plurality of messages between the client device and a second server that has access to a private key used in establishing a secure session between the client device and the first server, wherein the private key is not available on the first server, and wherein the plurality of messages transmitted between the client device and the second server includes a Client Hello message received from the client device, a Server Hello message received from the second server, a Certificate message received from the second server, a Server Key Exchange message received from the second server, a Server Hello Done message received from the second server, and a Client Key Exchange message received from the client device;

receiving, from the second server, a master secret that was generated using a premaster secret that was generated using a Diffie-Hellman public value selected by the client device and a Diffie-Hellman public value selected by the second server;

receiving, from the client device, a first Change Cipher Spec message and a first Finished message;

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;

transmitting a second Change Cipher Spec message to the client device;

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 the master secret;

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

transmitting a second Finished message to the client device that includes the third value;

receiving, from the client device over the secure session, an encrypted request for a resource;

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

retrieving the requested resource;

generating a response that includes the retrieved resource;

encrypting the generated response using the set of session keys; and

transmitting, to the client device over the secure session, the encrypted response.

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

8. The non-transitory computer-readable storage medium of claim 6 , wherein the set of session keys are received from the second server over a secure session between the first server and the second server.

9. The non-transitory computer-readable storage medium of claim 6 , wherein retrieving the requested resource includes transmitting the request for the resource to a third server and receiving the resource from the third server in response to the request, and wherein the second server and the third server are the same server.

10. The non-transitory computer-readable storage medium of claim 6 , wherein retrieving the requested resource includes retrieving the requested resource locally on the first server.

11. 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:

transmit a plurality of messages between the client device and a second server that has access to a private key used in establishing a secure session between the client device and the first server, wherein the private key is not available on the first server, wherein the plurality of messages to be transmitted between the client device and the second server includes a Client Hello message received from the client device, a Server Hello message received from the second server, a Certificate message received from the second server, a Server Key Exchange message received from the second server, a Server Hello Done message received from the second server, and a Client Key Exchange message received from the client device;

receive, from the second server, a master secret that was generated using a premaster secret that was generated using a Diffie-Hellman public value selected by the client device and a Diffie-Hellman public value selected by the second server;

receive, from the client device, a first Change Cipher Spec message and a first Finished message;

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;

transmit a second Change Cipher Spec message to the client device;

receive, 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 the master secret;

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

transmit a second Finished message to the client device that includes the third value;

receive, from the client device over the secure session, an encrypted request for a resource;

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

retrieve the requested resource;

generate a response that includes the retrieved resource;

encrypt the generated response using the set of session keys; and

transmit, to the client device over the secure session, the encrypted response.

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

13. The apparatus of claim 11 , wherein the set of session keys are to be received from the second server over a secure session between the first server and the second server.

14. The apparatus of claim 11 , wherein retrieval of the requested resource includes transmission of the request for the resource to a third server and receipt of the resource from the third server in response to the request, wherein the second server and the third server are the same server.

15. The apparatus of claim 11 , wherein retrieval of the requested resource includes local retrieval of the requested resource on the first server.

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 Jul 5, 2016
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 039077/0402 →
Continuity (3)
Continuation 14630585 · Feb 24, 2015
Continuation 14248256 · Apr 8, 2014
Related Publication 20160315767A1 · Oct 27, 2016
Cited By (1)
US 12,368,703