IP Library Granted Patent US 10,462,138
Granted Patent B2
US 10,462,138 · App. 15/432,458 · Granted Oct 29, 2019

Application programming interface access controls

Inventors: Anant Deep Jhingran (San Jose, CA); Mukundha Madhavan Gnana Sekaran (Fremont, CA); Sridhar Rajagopalan (Liverpool, GB)
Assignee: Google LLC
H04L63/10G06F21/44G06F21/629H04L63/08H04L67/42
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,462,138
App. No.
15/432,458
Filed
Feb 14, 2017
Granted
Oct 29, 2019
Kind
B2
Art Unit
2495
USPC
726/4
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for controlling access to APIs. One of the methods includes receiving a request from a client for a computer authorization challenge to access an application programming interface; determining a computer authorization challenge with a difficulty of completion that satisfies a target computational cost for the application programming interface; and providing the computer authorization challenge to the client for access to the application programming interface.

Claims (77)

1. A method, comprising:

receiving a request from a client for a computer authorization challenge to access an application programming interface;

determining whether a previously received response to a previously provided computer authorization challenge to access the application programming interface was generated by a proof of work proxy server instead of generated by the client;

determining a target computational cost for the application programming interface based on the determination that the previously received response to the previously provided computer authorization challenge to access the application programming interface was generated by a proof of work proxy server instead of generated by the client;

determining a computer authorization challenge with a difficulty of completion that satisfies the target computational cost for the application programming interface; and

providing the computer authorization challenge to the client for access to the application programming interface.

2. The method of claim 1 , wherein:

determining, by a computer authorization challenge system that includes one or more computers, the computer authorization challenge with a difficulty of completion that satisfies the target computational cost for the application programming interface comprises determining the computer authorization challenge with a computer resource expenditure difficulty of completion that satisfies the target computational cost of computer resources for an iterative search of a response to the computer authorization challenge for the application programming interface, the method further comprising:

generating, by the computer authorization challenge system, a plurality of computer authorization challenges and a plurality of responses corresponding to respective ones of the plurality of computer authorization challenges, wherein each of the plurality of computer authorization challenges corresponds to one or more target computational costs that each comprise a cost associated with an expenditure of computer resources;

storing, by the computer authorization challenge system in a database, the plurality of computer authorization challenges and the plurality of responses corresponding respective ones of the plurality of computer authorization challenges; and

sending, by the computer authorization challenge system to the proof of work proxy server, the plurality of computer authorization challenges and the plurality of responses corresponding respective ones of the plurality of computer authorization challenges.

3. The method of claim 2 , wherein determining a target computational cost for the application programming interface based on the determination that the previously received response to the previously provided computer authorization challenge to access the application programming interface was generated by a proof of work proxy server instead of generated by the client comprises:

in response to determining that the previously received response to the previously provided computer authorization challenge to access the application programming interface was generated by the client instead of generated by the proof of work proxy server, updating a counter value associated with a number of responses that were not generated by the proof of work proxy server for the application programming interface;

determining that the counter value satisfies a threshold value; and

in response to the determination that the counter value satisfies the threshold value, adjusting a generation of subsequent challenges associated with the application programming interface.

4. The method of claim 1 , wherein determining whether a previously received response to a previously provided computer authorization challenge to access the application programming interface was generated by a proof of work proxy server instead of generated by the client comprises:

receiving from the proof of work proxy server a plurality of indications associated with computer authorization challenges for which the proof of work proxy server generated responses; and

determining that the computer authorization challenge is not included in the plurality of indications.

5. The method of claim 4 , further comprising:

for two or more computer authorization challenges sent to respective clients:

receiving a response to the computer authorization challenge from the respective client; and

determining whether the received response matches a generated response for the computer authorization challenge;

for at least a first computer authorization challenge from the two or more computer authorization challenges:

determining that the received response matches the generated response; and

allowing the request to be serviced; and

for at least a second computer authorization challenge from the two or more computer authorization challenges that is different than the first computer authorization challenge:

determining that the received response does not match the generated response; and

preventing the request from being serviced.

6. The method of claim 1 , further comprising:

receiving an identifier of a cost boundary associated with the application programming interface; and

selecting a target computational cost based at least in part on the cost boundary.

7. The method of claim 6 , wherein receiving an identifier of a cost boundary associated with the application programming interface comprises receiving the identifier of the cost boundary via a user interface.

8. The method of claim 6 , wherein the target computational cost satisfies a cost boundary for the application programming interface.

9. The method of claim 1 , wherein the target computational cost comprises a cost associated with an expenditure of computer resources.

10. The method of claim 1 , wherein determining the computer authorization challenge with a difficulty of completion that satisfies the target computational cost for the application programming interface comprises:

given a function h and output value y, identifying a first portion of an argument x such that a predicted expenditure of computational resources needed to find a second portion of the argument x such that h(x)=y corresponds to the target computational cost, wherein the first portion and the second portion of the argument x together define an entire argument x and the first portion is a mutually exclusive portion of the argument x from the second portion; and

generating the computer authorization challenge that seeks a determination of the argument x given the function h, at least a portion of the output value y, and the first portion of argument x.

11. The method of claim 10 , wherein generating the computer authorization challenge that seeks a determination of the argument x given the function h, at least a portion of the output value y, and the first portion of argument x comprises generating the computer authorization challenge that seeks a determination of the argument x given the function h, an entire output value y, and the first portion of argument x.

12. The method of claim 1 , wherein the difficulty of completion for the computer authorization challenge comprises a degree of expenditure of computer resources for an iterative search of a response to the computer authorization challenge.

13. The method of claim 1 , further comprising:

generating a plurality of computer authorization challenges and a plurality of responses corresponding to respective ones of the plurality of computer authorization challenges, wherein the plurality of computer authorization challenges corresponds to one or more target computational costs;

storing the plurality of computer authorization challenges and the plurality of responses corresponding respective ones of the plurality of computer authorization challenges; and

sending the plurality of computer authorization challenges and the plurality of responses corresponding respective ones of the plurality of computer authorization challenges to a proof of work proxy server.

14. The method of claim 1 , further comprising:

for two or more computer authorization challenges sent to respective clients:

receiving a response to the computer authorization challenge from the respective client; and

determining whether the received response matches a generated response for the computer authorization challenge;

for at least a first computer authorization challenge from the two or more computer authorization challenges:

determining that the received response matches the generated response; and

allowing the request to be serviced; and

for at least a second computer authorization challenge from the two or more computer authorization challenges that is different than the first computer authorization challenge:

determining that the received response does not match the generated response; and

preventing the request from being serviced.

15. The method of claim 1 , comprising:

determining the target computational cost for the application programming interface based on a frequency that malicious requests to access the application programming interface are received.

16. A system comprising:

one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

receiving a request from a client for a computer authorization challenge to access an application programming interface;

determining whether a previously received response to a previously provided computer authorization challenge to access the application programming interface was generated by a proof of work proxy server instead of generated by the client;

determining a target computational cost for the application programming interface based on the determination that the previously received response to the previously provided computer authorization challenge to access the application programming interface was generated by a proof of work proxy server instead of generated by the client;

determining a computer authorization challenge with a difficulty of completion that satisfies the target computational cost for the application programming interface; and

providing the computer authorization challenge to the client for access to the application programming interface.

17. The system of claim 16 , wherein:

determining, by a computer authorization challenge system that includes one or more computers, the computer authorization challenge with a difficulty of completion that satisfies the target computational cost for the application programming interface comprises determining the computer authorization challenge with a computer resource expenditure difficulty of completion that satisfies the target computational cost of computer resources for an iterative search of a response to the computer authorization challenge for the application programming interface, the operations further comprising:

generating, by the computer authorization challenge system, a plurality of computer authorization challenges and a plurality of responses corresponding to respective ones of the plurality of computer authorization challenges, wherein each of the plurality of computer authorization challenges corresponds to one or more target computational costs that each comprise a cost associated with an expenditure of computer resources;

storing, by the computer authorization challenge system in a database, the plurality of computer authorization challenges and the plurality of responses corresponding respective ones of the plurality of computer authorization challenges; and

sending, by the computer authorization challenge system to the proof of work proxy server, the plurality of computer authorization challenges and the plurality of responses corresponding respective ones of the plurality of computer authorization challenges.

18. A non-transitory computer-readable medium storing software comprising instructions executable by one or more computers which, upon such execution, cause the one or more computers to perform operations comprising:

receiving a request from a client for a computer authorization challenge to access an application programming interface;

determining whether a previously received response to a previously provided computer authorization challenge to access the application programming interface was generated by a proof of work proxy server instead of generated by the client;

determining a target computational cost for the application programming interface based on the determination that the previously received response to the previously provided computer authorization challenge to access the application programming interface was generated by a proof of work proxy server instead of generated by the client;

determining a computer authorization challenge with a difficulty of completion that satisfies the target computational cost for the application programming interface; and

providing the computer authorization challenge to the client for access to the application programming interface.

19. The method of claim 1 , wherein determining a target computational cost for the application programming interface based on the determination that the previously received response to the previously provided computer authorization challenge to access the application programming interface was generated by a proof of work proxy server instead of generated by the client comprises:

in response to determining that the previously received response to the previously provided computer authorization challenge to access the application programming interface was generated by the client instead of generated by the proof of work proxy server, increasing the target computational cost from a prior target computational cost used to determine the previously provided computer authorization challenge.

20. The method of claim 1 , wherein determining a target computational cost for the application programming interface based on the determination that the previously received response to the previously provided computer authorization challenge to access the application programming interface was generated by a proof of work proxy server instead of generated by the client comprises:

in response to determining that the previously received response to the previously provided computer authorization challenge to access the application programming interface was generated by the proof of work proxy server instead of generated by the client, maintaining the target computational cost from a prior target computational cost used to determine the previously provided computer authorization challenge.

Assignments (2)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044129/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2017
From: JHINGRAN, ANANT DEEP; SEKARAN, MUKUNDHA MADHAVAN; RAJAGOPALAN, SRIDHAR
To: GOOGLE INC.
Reel/Frame 042654/0420 →
Continuity (3)
Provisional Application 62297608 · Feb 19, 2016
Provisional Application 62297596 · Feb 19, 2016
Related Publication 20170244709A1 · Aug 24, 2017
Cited By (1)
US 12,495,042