IP Library Granted Patent US 12,206,789
Granted Patent B2
US 12,206,789 · App. 17/217,703 · Granted Jan 21, 2025

Using a zero-knowledge proof to prove knowledge that a website visitor is a legitimate human user

Inventors: Watson Bernard Ladd (Berkeley, CA); Alexander Andrew Davidson (Lisbon, PT); Marwan Fayed (St Andrews, GB); Armando Faz Hernández (San Francisco, CA); Sai Krishna Deepak Maram (New York, NY); Nicholas Thomas Sullivan (San Francisco, CA)
Assignee: CLOUDFLARE, INC.
H04L9/3247G06F21/32H04L9/14
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 12,206,789
App. No.
17/217,703
Granted
Jan 21, 2025
Kind
B2
Abstract

A client device receives a challenge request from a server to prove that internet traffic was initiated by a human user through verifying a physical interaction between a human user and a hardware component. The client device causes a prompt to be displayed to perform the physical interaction with the hardware component. A cryptographic attestation is received that includes an attestation signature that is generated after confirmation that the physical interaction was performed with the hardware component. A zero-knowledge proof of the attestation signature is generated and transmitted to the server for verification. The client device receives the requested content responsive to the server verifying the validity of the zero-knowledge proof.

Claims (88)

1. A method, comprising:

transmitting, from a client network application of a client device, a first request for a first network resource to a server;

receiving, from the server, a second request to challenge that the first request was initiated by a human user through verifying a first physical interaction between the human user and a hardware component, the second request being received prior to the first network resource being received at the client network application;

causing a first prompt to be displayed to perform the first physical interaction with the hardware component;

receiving a first cryptographic attestation that includes a first attestation signature that is generated after confirmation that the first physical interaction was performed with the hardware component;

generating a first zero-knowledge proof of the first attestation signature at the client device;

transmitting, from the client network application to the server, the first zero-knowledge proof of the first attestation signature for verification;

receiving the first network resource responsive to the server verifying the validity of the first zero-knowledge proof of the first attestation signature;

transmitting, from the client network application of the client device, a third request for a second network resource to the server;

receiving, from the server, a fourth request to challenge that the third request was initiated by a human user through verifying a second physical interaction between the human user and the hardware component, the third request being received prior to the second network resource being received at the client network application;

causing a second prompt to be displayed to perform the second physical interaction with the hardware component;

receiving a second cryptographic attestation that includes a second attestation signature that is generated after confirmation that the second physical interaction was performed with the hardware component;

generating a second zero-knowledge proof of the second attestation signature at the client device;

transmitting, from the client network application to the server, the second zero-knowledge proof of the second attestation signature for verification;

receiving a request for the human user to participate in a CAPTCHA challenge responsive to the server determining that the second zero-knowledge proof cannot be verified as valid;

presenting the CAPTCHA challenge;

transmitting, from the client network application to the server, a response to the CAPTCHA challenge; and

receiving the second network resource responsive to the server verifying the response to the CAPTCHA challenge.

2. The method of claim 1 , wherein the first cryptographic attestation is generated by an attestation system that is coupled with the client device.

3. The method of claim 2 , wherein the first cryptographic attestation is implemented by a hardware security key that is adapted to receive a capacitive touch as the first physical interaction.

4. The method of claim 2 , wherein the first attestation signature is generated using an internal secret key of the attestation system.

5. The method of claim 1 , wherein generating the first zero-knowledge proof proves that the client device has knowledge of the first attestation signature for a public key that is on a server-provided list of a plurality of public keys without revealing which one of the plurality of public keys is the public key.

6. The method of claim 5 , wherein the server-provided list of the plurality of public keys is maintained in a least-recently used (LRU) order.

7. A method, comprising:

receiving, from a first client network application, a first request for a network resource;

determining that verification that the first request is initiated by a first human user is to be performed;

transmitting to the first client network application a second request to challenge that the first human user initiated the first request, the second request being transmitted prior to fulfilling the first request;

receiving, from the first client network application in response to the second request to challenge, a first zero-knowledge proof of a first attestation signature to attest that the first human user has performed a first physical interaction;

verifying validity of the first zero-knowledge proof;

fulfilling the first request responsive to verifying validity of the first zero-knowledge proof;

receiving from a second client network application, a third request for the network resource;

determining that verification that the third request is initiated by a second human user is to be performed;

transmitting to the second client network application a fourth request to challenge that the second human user initiated the third request;

receiving, from the second client network application in response to the fourth request to challenge, a second zero-knowledge proof of a second attestation signature to attest that the second human user has performed a second physical interaction;

determining that the second zero-knowledge proof cannot be verified as valid; and

responsive to determining that the second zero-knowledge proof cannot be verified as valid, transmitting to the second client network application a fifth request for the second human user to participate in a CAPTCHA challenge before fulfilling the third request.

8. The method of claim 7 , wherein determining that verification that the first request is initiated by the first human user includes determining that a domain of first network resource is subject to a denial-of-service attack.

9. The method of claim 7 , wherein determining that verification that the first request is initiated by the first human user includes determining that a verification configuration setting is enabled and applicable for the network resource.

10. The method of claim 7 , wherein the determining that verification that the first request is initiated by the first human user includes determining a threat score associated with the first client network application indicates it is likely the first request is from a bot.

11. The method of claim 7 , further comprising performing a rate limiting based on IP addresses included in messages including zero-knowledge proofs.

12. The method of claim 7 , wherein verifying the validity of the first zero-knowledge proof proves that the first client network application has knowledge of the first attestation signature for a public key that is on a server-provided list of a plurality of public keys without revealing which one of the plurality of public keys is the public key.

13. The method of claim 12 , wherein the server-provided list of the plurality of public keys is maintained in a least-recently used (LRU) order.

14. A client device, comprising:

a processor; and

a non-transitory machine-readable storage medium that provides instructions that, when executed by the processor, will cause the client device to perform operations comprising:

transmitting, from a client network application of the client device, a first request for a first network resource to a server;

receiving, from the server, a second request to challenge that the first request was initiated by a human user through verifying a first physical interaction between the human user and a hardware component, the second request being received prior to the first network resource being received at the client network application;

causing a first prompt to be displayed to perform the first physical interaction with the hardware component;

receiving a first cryptographic attestation that includes a first attestation signature that is generated after confirmation that the first physical interaction was performed with the hardware component;

generating a first zero-knowledge proof of the first attestation signature at the client device;

transmitting, from the client network application to the server, the first zero-knowledge proof of the first attestation signature for verification; and

receiving the first network resource responsive to the server verifying the validity of the first zero-knowledge proof of the first attestation signature;

transmitting, from the client network application of the client device, a third request for a second network resource to the server;

receiving, from the server, a fourth request to challenge that the third request was initiated by a human user through verifying a second physical interaction between the human user and the hardware component, the third request being received prior to the second network resource being received at the client network application;

causing a second prompt to be displayed to perform the second physical interaction with the hardware component;

receiving a second cryptographic attestation that includes a second attestation signature that is generated after confirmation that the second physical interaction was performed with the hardware component;

generating a second zero-knowledge proof of the second attestation signature at the client device;

transmitting, from the client network application to the server, the second zero-knowledge proof of the second attestation signature for verification;

receiving a request for the human user to participate in a CAPTCHA challenge responsive to the server determining that the second zero-knowledge proof cannot be verified as valid;

presenting the CAPTCHA challenge;

transmitting, from the client network application to the server, a response to the CAPTCHA challenge; and

receiving the second network resource responsive to the server verifying the response to the CAPTCHA challenge.

15. The client device of claim 14 , wherein the client device receives the first cryptographic attestation from an attestation system coupled with the client device.

16. The client device of claim 15 , wherein the first cryptographic attestation is implemented by a hardware security key that is adapted to receive a capacitive touch as the first physical interaction.

17. The client device of claim 15 , wherein the first attestation signature is generated using an internal secret key of the attestation system.

18. The client device of claim 14 , wherein generating the first zero-knowledge proof proves that the client device has knowledge of the first attestation signature for a public key that is on a server-provided list of a plurality of public keys without revealing which one of the plurality of public keys is the public key.

19. The client device of claim 18 , wherein the server-provided list of the plurality of public keys is maintained in a least-recently used (LRU) order.

20. A server, comprising:

a processor; and

a non-transitory machine-readable storage medium that provides instructions that, when executed by the processor, will cause the server to perform operations comprising:

receiving, from a first client network application, a first request for a network resource;

determining that verification that the first request is initiated by a first human user is to be performed;

transmitting to the first client network application a second request to challenge that the first human user initiated the first request, the second request being transmitted prior to fulfilling the first request;

receiving, from the first client network application in response to the second request to challenge, a first zero-knowledge proof of a first attestation signature to attest that a human user has performed a first physical interaction;

verifying validity of the first zero-knowledge proof;

fulfilling the first request responsive to verifying validity of the first zero-knowledge proof;

receiving from a second client network application, a third request for the network resource;

determining that verification that the third request is initiated by a second human user is to be performed;

transmitting to the second client network application a fourth request to challenge that the second human user initiated the third request;

receiving, from the second client network application in response to the fourth request to challenge, a second zero-knowledge proof of a second attestation signature to attest that the second human user has performed a second physical interaction;

determining that the second zero-knowledge proof cannot be verified as valid; and

responsive to determining that the second zero-knowledge proof cannot be verified as valid, transmitting to the second client network application a fifth request for the second human user to participate in a CAPTCHA challenge before fulfilling the third request.

21. The server of claim 20 , wherein determining that verification that the first request is initiated by the first human user includes determining that a domain of the network resource is subject to a denial-of-service attack.

22. The server of claim 20 , wherein determining that verification that the first request is initiated by the first human user includes determining that a verification configuration setting is enabled and applicable for the network resource.

23. The server of claim 20 , wherein the determining that verification that the first request is initiated by the first human user includes determining a threat score associated with the first client network application indicates it is likely the first request is from a bot.

24. The server of claim 20 , further comprising performing a rate limiting based on IP addresses included in messages including zero-knowledge proofs.

25. The server of claim 20 , wherein verifying the validity of the first zero-knowledge proof proves that the first client network application has knowledge of the first attestation signature for a public key that is on a server-provided list of a plurality of public keys without revealing which one of the plurality of public keys is the public key.

26. The server of claim 25 , wherein the server-provided list of the plurality of public keys is maintained in a least-recently used (LRU) order.

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 Mar 30, 2021
From: LADD, WATSON BERNARD; DAVIDSON, ALEXANDER ANDREW; FAYED, MARWAN; HERNANDEZ, ARMANDO FAZ; MARAM, SAI KRISHNA DEEPAK; SULLIVAN, NICHOLAS THOMAS
To: CLOUDFLARE, INC.
Reel/Frame 055773/0389 →
Continuity (1)
Related Publication 20220321354A1 · Oct 6, 2022
References Cited (28)
US 3723005A · Smith · 1973 [cited by examiner]
US 8656486B2 · Hicks et al. · 2014 [cited by applicant]
US 9723005B1 · McInerny · 2017 [cited by examiner]
US 9877193B2 · Yang et al. · 2018 [cited by applicant]
US 11368307B1 · Ozarkar · 2022 [cited by examiner]
US 20090138711A1 · Heimbigner · 2009 [cited by examiner]
US 20150213251A1 · Turgeman · 2015 [cited by examiner]
US 20220021537A1 · Wagner · 2022 [cited by examiner]
US 20220263861A1 · Marozas · 2022 [cited by examiner]
US 20230073437A1 · Wang · 2023 [cited by examiner]
Yampolskiy, R.V., 2012. AI-Complete CAPTCHAs as Zero Knowledge Proofs of Access to an Artificially Intelligent System. International Scholarly Research Notices, 2012(1), p. 271878. (Year: 2012). [cited by examiner]
Nayeem, M.T., Akand, M.M.R., Sakib, N. and Kabir, M.W.U., 2014, August. Design of a Human Interaction Proof (HIP) using human cognition in contextual natural conversation. In 2014 IEEE 13th International Conference on C… [cited by examiner]
Agrawal et al., Non-Interactive Zero-Knowledge Proofs for Composite Statements, Advances in Cryptology—CRYPTO 2018, Springer International Publishing, Jun. 3, 2018, pp. 643-673. [cited by applicant]
Balfanz et al., FIDO UAF Protocol Specification v1.0., FIDO Alliance Proposed Standard, Dec. 8, 2014, 45 pages. [cited by applicant]
Benarroch et al., Zero-Knowledge Proofs for Set Membership: Efficient, Succinct, Modular, Financial Cryptography and Data Security, Oct. 27, 2019, 68 pages. [cited by applicant]
Making authentication even easier with FIDO2-based local user verification for Google Accounts, Google Security Blog, Aug. 12, 2019, 5 pages, downloaded at: https://security.googleblog.com/2019/08/making-authentication-… [cited by applicant]
Broker et al., Constructing Elliptic Curves of Prescribed Order, PhD thesis, Leiden, 2006, 175 pages. [cited by applicant]
Camenisch, et al., Proving in zero-knowledge that a number is the product of two safe primes, In International Conference on the Theory and Applications of Cryptographic Techniques, Springer, 1999, pp. 107-122. [cited by applicant]
Ciolino et al., Of two minds about two-factor: Understanding everyday FIDO U2F usability through device comparison and experience sampling, In Fifteenth Symposium on Usable Privacy and Security (SOUPS 2019), Aug. 2019, … [cited by applicant]
Groth et al., One-out-of-many proofs: Or how to leak a secret and spend a coin, Advances in Cryptology—EUROCRYPT 2015—34th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Sofi… [cited by applicant]
Hollier et al., Inaccessibility of Captcha. W3C note, W3C, Dec. 9, 2019, 26 pages, downloaded at: https://www.w3.org/TR/2019/NOTE-turingtest-20191209/. [cited by applicant]
Jones et al., Web authentication: an API for accessing public key credentials level 2, W3C working draft, W3C, Jul. 30, 2020, 167 pages, downloaded at: https://www.w3.org/TR/2020/WD-webauthn-2-20200730/. [cited by applicant]
Krol, et al., I don't like putting my face on the Internet !: An acceptance study of face biometrics as a CAPTCHA replacement, In 2016 IEEE International Conference on Identity, Security and Behavior Analysis (ISBA), IE… [cited by applicant]
Krol, et al., Better the devil you know: A user study of two CAPTCHAS and a possible replacement technology, In NDSS Workshop on Usable Security (USEC), vol. 10, 2016, 10 pages. [cited by applicant]
Langley, Zero-knowledge attestation, ImperialViolet, Jan. 1, 2019, 7 pages, downloaded at: https://www.imperialviolet.org/2019/01/01/zkattestation.html. [cited by applicant]
Lindemann et al, Web Authentication: An API for accessing Public Key Credentials—Level 2. Candidate recommendation, W3C, Dec. 22, 2020, 177 pages. [cited by applicant]
Shi et al., Text CAPTCHA is dead? A large scale deployment and empirical study, In The 27th ACM Conference on Computer and Communications Security, 2020, 6 pages. [cited by applicant]
Tan, Meet Face ID and Touch ID for the Web, Oct. 19, 2020, 16 pages, downloaded at: https://webkit.org/blog/11312/meet-face-id-and-touch-id-for-the-web/. [cited by applicant]
Cited By (1)
US 12,321,428