# US 10,374,802 B2 · Multi-factor simple password exponential key exchange (SPEKE) authentication

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

- Number: US 10,374,802 B2
- Document ID: US10374802B2
- Status: Granted
- Kind: B2
- Application number: 14/950,726
- Filed: 2015-11-24
- Published: 2017-03-09
- Granted: 2019-08-06
- Earliest claimed: 2015-04-24
- Assignees: Red Hat, Inc.
- Applicants: Red Hat, Inc.
- Inventors: Nathaniel McCallum
- Web page: https://patentgrep.com/patent/US10374802B2

## CPC

- H04L 9/3226: {using a predetermined code, e.g. password, passphrase or PIN (network architectures or network communication protocols for supporting authentication of entities using passwords in a packet data network H04L63/083)}
- H04L 9/3228: {One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key}
- H04L 9/3231: {Biological data, e.g. fingerprint, voice or retina (network architectures or network communication protocols for supporting authentication of entities using biometrical features in a packet data network H04L63/0861)}
- H04L 9/3236: {using cryptographic hash functions}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method relates to receiving, by a processing device of an authentication server over a public network, an authentication request from a client device, the authentication request comprising a user identifier associated with first factor data, in which the first factor data comprises a password stored in a storage associated with the authentication server, calculating a generator value in view of the first factor data and a second factor data associated with the user identifier, and generating a session key in view of the generator value and a first public key received from the client device.

## Claims

### Claim 1

A method comprising:
receiving, by a processing device of an authentication server over a public network, an authentication request and a first public key from a client device, wherein the first public key generated by the client device, and wherein the authentication request comprising:
a user identifier;
first factor data associated with the user identifier, wherein the first factor data comprises a password, and wherein the password is stored in a storage associated with the authentication server prior to receiving the authentication request; and
second factor data associated with the user identifier, wherein the second factor data comprises one of:
a one-time password, wherein the one-time password is different than the password; or
biometric data; and
generating a session key that is a function of a combination of the first factor data, the second factor data, and the first public key received from the client device, wherein the combination comprises determining a generator value by:
combining the first factor data with the second factor data to generate a combined value, wherein combining comprises one of concatenating the first factor data with the second factor data or calculating an exclusive-OR of the first factor data and the second factor data; and
calculating a hash value of the combined value.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving a first twice-hashed value from the client device;
generating a derived session key in view of the session key;
calculating a second hash value of the derived session key; and validating the second hash value in view of the first twice-hashed value received from the client device.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
in response to successfully validating the second hash value with the first twice-hashed value, issuing a proof of authentication token to the client device.

### Claim 4 (depends on 3)

The method of claim 3, wherein the proof of authentication token is issued without requiring using a security certificate.

### Claim 5 (depends on 2)

The method of claim 2, further comprising:
in response to failing to validate the second hash value with the first hash value, issuing a denial-of-authentication token to the client device.

### Claim 6 (depends on 1)

The method of claim 1, wherein the one-time password is valid for one of a pre-determined period of time or a pre-determined count according to a counter.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
generating a random number;
generating a second public key in view of the generator value and the random number; and
transmitting the second public key to the client device.

### Claim 8 (depends on 1)

The method of claim 1, wherein a processing device of the client device is to:
calculate a second generator value in view of a combination of the first factor data and the second factor data;
generate a second random number;
generate the first public key in view of the second generator value and the second random number; and
transmit the first public key to the authentication server.

### Claim 9

A non-transitory machine-readable storage medium storing instructions which, when executed, cause a processing device to:
receive, by the processing device of an authentication server over a public network, an authentication request and a first public key from a client device, wherein the first public key generated by the client device, and wherein the authentication request comprising:
a user identifier;
first factor data associated with the user identifier, wherein the first factor data comprises a password, and wherein the password is stored in a storage associated with the authentication server prior to receiving the authentication request; and
second factor data associated with the user identifier, wherein the second factor data comprises one of:
a one-time password, wherein the one-time password is different than the password; or
biometric data; and
generate a session key that is a function of a combination of the first factor data, the second factor data, and the first public key received from the client device, wherein the combination comprises determining a generator value by:
combine, by the processing device of an authentication server over a public network, the first factor data with the second factor data to generate a combined value, wherein combining comprises one of concatenating the first factor data with the second factor data or calculating an exclusive-OR of the first factor data and the second factor data; and
calculate a hash value of the combined value.

### Claim 10 (depends on 9)

The non-transitory machine-readable storage medium of claim 9, wherein the processing device is further to:
receive a first twice-hashed value from the client device;
generate a derived session key in view of the session key;
calculate a second hash value of the derived session key; and
validate the second hash value in view of the first twice-hashed value received from the client device.

### Claim 11 (depends on 10)

The non-transitory machine-readable storage medium of claim 10, wherein the processing device is further to:
in response to successfully validating the second hash value with the first twice-hashed value, issue a proof of authentication token to the client device.

### Claim 12 (depends on 9)

The non-transitory machine-readable storage medium of claim 9, wherein the one-time password is valid for one of a pre-determined period of time or a pre-determined count according to a counter.

### Claim 13

A server, comprising:
a memory to store a first factor data and a second factor data; and
a processing device, operatively coupled to the memory, the processing device to:
receive, over a public network, an authentication request and a first public key from a client device, wherein the first public key generated by the client device, and wherein the authentication request comprising:
a user identifier;
first factor data associated with the user identifier, wherein the first factor data comprises a password, and wherein the password is stored in the memory prior to receiving the authentication request; and
second factor data associated with the user identifier, wherein the second factor data comprises one of:
a one-time password, wherein the one-time password is different than the password; or
biometric data; and
generate a session key that is a function of a combination of the first factor data, the second factor data, and the first public key received from the client device, wherein the combination comprises determining a generator value by:
combine, by the processing device of an authentication server over a public network, the first factor data with the second factor data to generate a combined value, wherein combining comprises one of concatenating the first factor data with the second factor data or calculating an exclusive-OR of the first factor data and the second factor data; and
calculate a hash value of the combined value.

### Claim 14 (depends on 13)

The server of claim 13, wherein the processing device is further to:
receive a first twice-hashed value from the client device,
generate a derived session key in view of the session key,
calculate a second hash value of the derived session key, and
validate the second hash value in view of the first twice-hashed value received from the client device.

### Claim 15 (depends on 14)

The server of claim 14, wherein the processing device is further to:
in response to successfully validating the second hash value with the first twice hashed value, issue a proof of authentication token to the client device.

### Claim 16 (depends on 14)

The server of claim 14, wherein the processing device is further to:
in response to failing to validate the second hash value with the first hash value, issue a denial-of-authentication token to the client device.

### Claim 17 (depends on 13)

The server of claim 13, wherein the one-time password is valid for one of a pre-determined period of time or a pre-determined count according to a counter.
