IP Library Granted Patent US 10,116,693
Granted Patent B1
US 10,116,693 · App. 15/194,679 · Granted Oct 30, 2018

Server using proof-of-work technique for hardening against denial of service attacks

Inventors: Peter Alan Robinson (Enoggera Reservoir, AU); Eric Young (Annerley, AU)
Assignee: EMC IP Holding Company LLC
H04L63/1458G06F9/45558G06F17/3033G06F17/30575H04L9/0643H04L67/42G06F2009/4557
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,116,693
App. No.
15/194,679
Granted
Oct 30, 2018
Kind
B1
Abstract

A computerized device and a process protect against denial-of-service (DoS) attacks by using a memory-time hard problem that a client (e.g., IoT device or mobile app) solves as part of a request such as an initial registration process. The process may use parameters obtained from a public source of randomness. The problem is designed such that all memory allocated for the algorithm is used in a random manner, making it difficult for attackers to use FPGA/ASIC approaches. The client provides a proof-of-work (PoW) value to a server, which performs a more directed version of the calculation done by the client to confirm that the PoW value is correct. When confirmation is not obtained, the server can refrain from further processing of the client request, thwarting DoS attacks.

Claims (55)

1. A method of operating a server device in connection with a human interaction service provided to client devices, comprising:

generating, by the server device, an array of hash values by iterating first cryptographic hashing operations, each operation generating a respective hash value of the array and taking as input a respective preceding hash value of the array generated by a respective preceding operation;

receiving, by the server device, a client request containing a proof-of-work value, the proof-of-work value reflecting a count of multiple searches of the same array of hash values at the client device until encountering a predetermined stop value in the array;

performing, by the server device, one search of the array beginning with the last-generated hash value, the one search including iterated second cryptographic hashing operations each taking as inputs (1) the proof-of-work value received from the client device, and (2) a respective intermediate value generated in a respective preceding operation;

comparing, by the server device, a last-generated intermediate value of the one search to the predetermined stop value to generate a verification result; and

when the verification result is positive, then performing further processing of the client request by the server device to provide the human interaction service to a client device that provided the client request, and when the verification result is negative, then refraining from the further processing of the client request;

wherein each of the second cryptographic hashing operations includes generating a respective index to be used to select a hash value of the array in a next succeeding operation, the index being generated by masking a predetermined number of bits of a respective hash value retrieved by the operation, the predetermined number corresponding to an address length for the array.

2. The method of claim 1 , wherein the intermediate value is generated for each second cryptographic hashing operation by masking a predetermined number of bits of a respective hash value retrieved by the operation.

3. The method of claim 2 , wherein the predetermined number is determined by an explicit work factor parameter provided to the server and the client devices.

4. The method of claim 1 , wherein the service is provided based on prior authentication of registered client devices authorized to use the service, and wherein the client request is a registration request seeking registration of a non-authenticated client to use the service.

5. The method of claim 1 , wherein the server is part of a cluster of closely coupled servers sharing environment data and access to records or databases, and wherein the servers employ auto-synchronization between virtual machines (VMs) in a cluster to reduce a load on the records or databases.

6. The method of claim 1 , wherein the first and second cryptographic hashing operations are respective first and second message digest operations, and wherein an initial one of the first message digest operations operates on a predetermined seed value to generate a first hash value of the array.

7. The method of claim 1 , wherein each of the searches is a predetermined number of the iterated second hashing operations, the predetermined number established by an explicit search parameter provided to the server and to the client devices.

8. The method of claim 1 , wherein the verification result is positive; and

wherein the performing further processing of the client request includes:

in response to the verification result that is positive, delivering the human interaction service from the server device to the client device through a network the human interaction service including at least one of a registration service, an authentication service, and a user-level service.

9. A method of operating a server device in connection with a human interaction service provided to client devices, comprising:

generating, by the server device, an array of hash values by iterating first cryptographic hashing operations, each operation generating a respective hash value of the array and taking as input a respective preceding hash value of the array generated by a respective preceding operation;

receiving, by the server device, a client request containing a proof-of-work value, the proof-of-work value reflecting a count of multiple searches of the same array of hash values at the client device until encountering a predetermined stop value in the array;

performing, by the server device, one search of the array beginning with the last-generated hash value, the one search including iterated second cryptographic hashing operations each taking as inputs (1) the proof-of-work value received from the client device, and (2) a respective intermediate value generated in a respective preceding operation;

comparing, by the server device, a last-generated intermediate value of the one search to the predetermined stop value to generate a verification result; and

when the verification result is positive, then performing further processing of the client request by the server device to provide the human interaction service to a client device that provided the client request, and when the verification result is negative, then refraining from the further processing of the client request;

wherein the first and second cryptographic hashing operations are respective first and second message digest operations, and wherein an initial one of the first message digest operations operates on a predetermined seed value to generate a first hash value of the array; and

wherein the second message digest operations takes as an additional input a server random value, the server random value being one of a stream of server random values generated uniquely for the server at respective server times identified by respective server time values.

10. The method of claim 9 , further including receiving the server time value with the client request and using the server time value to identify the server random value to be used in the second message digest operations.

11. The method of claim 9 , further including obtaining the server random value from a trusted public source of randomness.

12. A method of operating a client device in connection with a human interaction service provided by a server device, comprising:

generating, by the client device, an array of hash values by iterating first cryptographic hashing operations, each operation generating a respective hash value of the array and taking as input a respective hash value of the array generated by a respective preceding operation;

performing, by the client device, searches of the array until a stop condition is reached, each search beginning with a last-generated hash value of the array and including iterated second cryptographic hashing operations, each operation taking as inputs (1) a search count value and (2) a respective intermediate value generated in a respective preceding operation, the search count value being incremented to count the number of searches performed, the stop condition being that a last-generated intermediate value of a final search is equal to a predetermined stop value; and

in connection with a client request to the server device, sending, by the client device, the search count value of the final search as a proof-of-work value to the server device to indicate that the client device has performed the method and obtain the human interaction service from the server device;

wherein each of the second cryptographic hashing operations includes generating a respective index to be used to select a hash value of the array in a next succeeding operation, the index being generated by masking a predetermined number of bits of a respective hash value retrieved by the operation, the predetermined number corresponding to an address length for the array.

13. The method of claim 12 , wherein the intermediate value is generated for each second cryptographic hashing operation by masking a predetermined number of bits of a respective hash value retrieved by the operation.

14. The method of claim 12 , wherein the service is provided based on prior authentication of registered client devices authorized to use the service, and wherein the client request is a registration request seeking registration of a non-authenticated client to use the service.

15. The method of claim 12 , wherein the first and second cryptographic hashing operations are respective first and second message digest operations, and wherein an initial one of the first message digest operations operates on a predetermined seed value to generate a first hash value of the array.

16. The method of claim 12 , wherein each of the searches is a predetermined number of the iterated second hashing operations, the predetermined number established by an explicit search parameter provided to the server and to the client devices.

17. A method of operating a client device in connection with a human interaction service provided by a server device, comprising:

generating, by the client device, an array of hash values by iterating first cryptographic hashing operations, each operation generating a respective hash value of the array and taking as input a respective hash value of the array generated by a respective preceding operation;

performing, by the client device, searches of the array until a stop condition is reached, each search beginning with a last-generated hash value of the array and including iterated second cryptographic hashing operations, each operation taking as inputs (1) a search count value and (2) a respective intermediate value generated in a respective preceding operation, the search count value being incremented to count the number of searches performed, the stop condition being that a last-generated intermediate value of a final search is equal to a predetermined stop value; and

in connection with a client request to the server device, sending, by the client device, the search count value of the final search as a proof-of-work value to the server device to indicate that the client device has performed the method and obtain the human interaction service from the server device;

wherein the first and second cryptographic hashing operations are respective first and second message digest operations, and wherein an initial one of the first message digest operations operates on a predetermined seed value to generate a first hash value of the array; and

wherein the second message digest operations takes as an additional input a server random value, the server random value being one of a stream of server random values generated uniquely for the server at respective server times identified by respective server time values.

18. The method of claim 17 , further including obtaining the server time value and server random value from a trusted public source of randomness.

19. A method operating a client device and a server device in connection with a human interaction service provided by the server device, comprising:

A) at a client device:

generating an array of hash values by iterating first cryptographic hashing operations, each operation generating a respective hash value of the array and taking as input a respective hash value of the array generated by a respective preceding operation;

performing searches of the array until a stop condition is reached, each search beginning with a last-generated hash value of the array and including iterated second cryptographic hashing operations, each operation taking as inputs (1) a search count value and (2) a respective intermediate value generated in a respective preceding operation, the search count value being incremented to count the number of searches performed, the stop condition being that a last-generated intermediate value of a final search is equal to a predetermined stop value; and

in connection with a client request to a server device, sending the search count value of the final search as a proof-of-work value to the server device to obtain the human interaction service from the server device;

and

B) at the server device:

gene rating the array of hash values by iterating the first cryptographic hashing operations;

receiving the client request containing the proof-of-work value;

performing one search of the array beginning with the last-generated hash value of the array and including iterated third cryptographic hashing operations, each operation taking as inputs (1) the proof-of-work value received from the client device, and (2) a respective intermediate value generated in a respective preceding operation;

comparing a last-generated intermediate value of the one search to the predetermined stop value to generate a verification result; and

when the verification result is positive, then performing further processing of the client request to provide the human interaction service to the client device, and when the verification result is negative, then refraining from the further processing of the client request;

wherein each of the second cryptographic hashing operations includes generating a respective index to be used to select a hash value of the array in a next succeeding operation, the index being generated by masking a predetermined number of bits of a respective hash value retrieved by the operation, the predetermined number corresponding to an address length for the array.

Assignments (17)
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 56098/0534 Recorded Mar 5, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: RSA SECURITY LLC
Reel/Frame 075041/0175 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 56096/0525 Recorded Mar 5, 2026
From: JPMORGAN CHASE BANK, N.A.
To: RSA SECURITY LLC; RSA SECURITY USA LLC
Reel/Frame 075030/0744 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2024
From: RSA SECURITY LLC
To: RSA SECURITY LLC
Reel/Frame 069762/0401 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2024
From: RSA SECURITY LLC
To: RSA SECURITY USA, LLC
Reel/Frame 069762/0529 →
TERMINATION AND RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT REEL 054155, FRAME 0815 Recorded Apr 29, 2021
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: RSA SECURITY LLC
Reel/Frame 056104/0841 →
TERMINATION AND RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT REEL 053666, FRAME 0767 Recorded Apr 29, 2021
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: RSA SECURITY LLC
Reel/Frame 056095/0574 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 29, 2021
From: RSA SECURITY LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 056096/0525 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 29, 2021
From: RSA SECURITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 056098/0534 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2020
From: EMC IP HOLDING COMPANY LLC
To: RSA SECURITY LLC
Reel/Frame 053717/0020 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Sep 3, 2020
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS AGENT
To: DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 054191/0287 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (049452/0223) Recorded Sep 3, 2020
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS AGENT
To: DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 054250/0372 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Sep 1, 2020
From: RSA SECURITY LLC
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 054155/0815 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Sep 1, 2020
From: RSA SECURITY LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 053666/0767 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2016
From: ROBINSON, PETER ALAN; YOUNG, ERIC
To: EMC CORPORATION
Reel/Frame 039928/0065 →
Cited By (1)
US 12,500,898