# US 10,375,112 B2 · Method and apparatus for decryption of encrypted SSL data from packet traces

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

- Number: US 10,375,112 B2
- Document ID: US10375112B2
- Status: Granted
- Kind: B2
- Application number: 14/547,792
- Filed: 2014-11-19
- Published: 2016-05-19
- Granted: 2019-08-06
- Earliest claimed: 2014-11-19
- Assignees: AT&T Intellectual Property I, L.P.
- Applicants: AT&T Intellectual Property I, L.P.
- Inventors: Feng Qian; Oliver Spatscheck; Subhabrata Sen
- Web page: https://patentgrep.com/patent/US10375112B2

## CPC

- H04L 63/166: {at the transport layer}
- H04L 63/0471: {applying encryption by an intermediary, e.g. receiving clear information at the intermediary and encrypting the received information at the intermediary before forwarding}
- H04L 63/1408: {by monitoring network traffic (monitoring network traffic per se H04L43/00)}
- H04L 63/1425: {Traffic logging, e.g. anomaly detection}
- H04L 63/168: {above the transport layer}
- H04L 63/0272: {Virtual private networks}
- H04L 63/0281: {Proxies}
- H04L 63/306: {intercepting packet switched data communications, e.g. Web, Internet or IMS communications}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system for decrypts encrypted Secure Sockets Layer (SSL) data from packet traces without using private keys or a proxy. Decryption of encrypted SSL data is accomplished by intercepting a session key associated with a communication session transmitted from a user device to a server during handshaking between the user device and the server. The session key is then used to decrypt packet level traces of the communication session. The decrypted packet level traces are then used to measure traffic.

## Claims

### Claim 1

A method comprising:
obtaining, by executing an instruction with a processor of a client during handshaking, session keys associated with respective ones of a plurality of communication sessions between the client and a server, the session keys obtained from information logged by a library, the library instrumented to output pairs of pre-master secret and master secret values corresponding to respective ones of the session keys for the respective ones of the communication sessions between the client and the server, a first session key to be generated based on a first master secret value included in a first one of the pairs of pre-master secret and master secret values corresponding to a first one of the communication sessions, the first session key being different from a second session key corresponding to a second one of the pairs of pre-master secret and master secret values corresponding to a second one of the plurality of communication sessions;
identifying, by executing an instruction with the processor of the client, packet level traces of the first one of the communication sessions, the packet level traces including encrypted data associated with the first one of the communication sessions and generated data strings that were exchanged previously during the handshaking between the client and the server to compute the first master secret value associated with the first session key;
evaluating, by executing an instruction with the processor of the client, a function with the generated data strings included in the packet level traces to identify the first master secret value and to determine the first session key corresponding to the first one of the communication sessions, the obtaining of the session keys, the identifying of the packet level traces and the evaluating of the function being performed by the client without use of a proxy server;
decrypting, by executing an instruction with the processor of the client, the packet level traces using the first session key to generate decrypted packet level traces; and
measuring traffic using the decrypted packet level traces.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first one of the communication sessions is one of a secure socket layer protocol session and a transport layer security protocol session.

### Claim 3 (depends on 1)

The method of claim 1, further including instrumenting the library to detect the session keys as the session keys are transmitted from the library.

### Claim 4 (depends on 1)

The method of claim 1, wherein the measuring of the traffic is based on decrypted packet level traces from a plurality of clients.

### Claim 5 (depends on 1)

The method of claim 1, further including:
recording the identified packet level traces of the first one of the communication sessions for decryption after the first one of the communication sessions has ended.

### Claim 6 (depends on 5)

The method of claim 5, wherein the recording of the identified packet level traces includes recording the traces in a packet capture format.

### Claim 7 (depends on 1)

The method of claim 1, wherein the evaluating of the function with the generated data strings includes evaluating the function, with the generated data strings, for respective ones of the pairs of pre-master secret and master secret values output from the library for the plurality of communication sessions to identify which one of the pairs of pre-master secret and master secret values corresponds to the first one of the pairs of pre-master secret and master secret values associated with the first one of the communication sessions.

### Claim 8

A client device comprising:
a processor; and
memory including computer program instructions, the computer program instructions, when executed on the processor, to cause the processor to perform operations including:
obtaining, during handshaking, session keys associated with respective ones of a plurality of communication sessions between the client device and a server, the session keys obtained from information logged by a library, the library instrumented to output pairs of pre-master secret and master secret values corresponding to respective ones of the session keys for the respective ones of the communication sessions between the client device and the server, a first session key to be generated based on a first master secret value included in a first one of the pairs of pre-master secret and master secret values corresponding to a first one of the communication sessions, the first session key being different from a second session key corresponding to a second one of the pairs of pre-master secret and master secret values corresponding to a second one of the plurality of communication sessions;
identifying packet level traces of the first one of the communication sessions, the packet level traces including encrypted data associated with the first one of the communication sessions and generated data strings that were exchanged previously during the handshaking between the client device and the server to compute the first master secret value associated with the first session key;
evaluating a function with the generated data strings included in the packet level traces to identify the first master secret value and to determine the first session key corresponding to the first one of the communication sessions, the obtaining of the session keys, the identifying of the packet level traces and the evaluating of the function being performed by the client device without use of a proxy server;
decrypting the packet level traces using the first session key to generate decrypted packet level traces; and
measuring traffic using the decrypted packet level traces.

### Claim 9 (depends on 8)

The client device of claim 8, wherein the first one of the communication sessions is one of a secure socket layer protocol session and a transport layer security protocol session.

### Claim 10 (depends on 8)

The client device of claim 8, wherein the library is to detect the session keys as the session keys are transmitted from the library.

### Claim 11 (depends on 8)

The client device of claim 8, wherein the processor is to measure the traffic based on decrypted packet level traces from a plurality of clients.

### Claim 12 (depends on 8)

The client device of claim 8, wherein the processor is to record the identified packet level traces of the first one of the communication sessions for decryption after the first one of the communication sessions has ended.

### Claim 13 (depends on 12)

The client device of claim 12, wherein the identified packet level traces are recorded in a packet capture format.

### Claim 14 (depends on 8)

The client device of claim 8, wherein the evaluating of the function with the generated data strings includes evaluating the function, with the generated data strings, for respective ones of the pairs of pre-master secret and master secret values output from the library for the plurality of communication sessions to identify which one of the pairs of pre-master secret and master secret values corresponds to the first one of the pairs of pre-master secret and master secret values associated with the first one of the communication sessions.

### Claim 15

A computer readable storage device comprising computer program instructions, which, when executed by a processor of a client, cause the processor to perform operations including:
obtaining, during handshaking, session keys associated with respective ones of a plurality of communication sessions between the client and a server, the session keys obtained from information logged by a library, the library instrumented to output pairs of pre-master secret and master secret values corresponding to respective ones of the session keys for the respective ones of the communication sessions between the client and the server, a first session key to be generated based on a first master secret value included in a first one of the pairs of pre-master secret and master secret values corresponding to a first one of the communication sessions, the first session key being different from a second session key corresponding to a second one of the pairs of pre-master secret and master secret values corresponding to a second one of the plurality of communication sessions;
identifying packet level traces of the first one of the communication sessions, the packet level traces including encrypted data associated with the first one of the communication sessions and generated data strings that were exchanged previously during the handshaking between the client and the server to compute the first master secret value associated with the first session key;
evaluating a function with the generated data strings included in the packet level traces to identify the first master secret value and to determine the first session key corresponding to the first one of the communication sessions, the obtaining of the session keys, the identifying of the packet level traces and the evaluating of the function being performed by the client without use of a proxy server;
decrypting the packet level traces using the first session key to generate decrypted packet level traces; and
measuring traffic using the decrypted packet level traces.

### Claim 16 (depends on 15)

The computer readable storage device of claim 15, wherein the first one of the communication sessions is one of a secure socket layer protocol session and a transport layer security protocol session.

### Claim 17 (depends on 15)

The computer readable storage device of claim 15, wherein the library is to detect the session keys as the session keys are transmitted.

### Claim 18 (depends on 15)

The computer readable storage device of claim 15, wherein the instructions cause the processor to measure the traffic based on decrypted packet level traces from a plurality of clients.

### Claim 19 (depends on 15)

The computer readable storage device of claim 15, wherein the instructions further cause the processor to record the identified packet level traces of the first one of the communication sessions for decryption after the first one of the communication sessions has ended.

### Claim 20 (depends on 15)

The computer readable storage device of claim 15, wherein the evaluating of the function with the generated data strings includes evaluating the function, with the generated data strings, for respective ones of the pairs of pre-master secret and master secret values output from the library for the plurality of communication sessions to identify which one of the pairs of pre-master secret and master secret values corresponds to the first one of the pairs of pre-master secret and master secret values associated with the first one of the communication sessions.
