Patent ID: 8171562

Claim:
A method of protecting against denial of service attacks comprising the steps of: utilizing a network layer of a multiple computer network such that all steps of the method are performed at the network layer, wherein the multiple computer network includes a client and a server; generating a first packet by the client; caching the first packet by the client forming a cached first packet; attaching a client cookie to the first packet, wherein the client cookie includes a client nonce and a client timestamp; transferring the first packet from the client to the server; determining by the server whether to require the client to solve a server puzzle; calculating by the server a server puzzle and a server puzzle answer when the server requires the client to solve the server puzzle, wherein the server puzzle answer is randomly generated and the server puzzle is a cryptographic hash of the server puzzle answer; selecting by the server a difficulty level for the client, wherein the difficultly level is proportional to the amount of work the server desires the client to perform before sending one or more data packets; computing by the server a hint, wherein the hint equals the server puzzle answer minus a random number selected between zero and the difficulty level; generating by the server a server cookie that is the cryptographic hash of the server puzzle answer, a secret server nonce, and flow information of the first packet so that the server does not have to store the server puzzle answer; sending the server puzzle, the server cookie, the hint, the client cookie and the flow information of the first packet from the server to the client; deleting the first packet by the server; validating the client cookie by the client to ensure it was previously sent; solving by the client the server puzzle to obtain a client answer, wherein the client answer is obtained by performing a brute-force search to find the cryptographic hash that equals the server puzzle; creating by the client a retransmission packet including the client answer, the cached first packet, and the server cookie; forwarding the retransmission packet from the client to the server; verifying by the server the client answer of the retransmission packet by calculating the cryptographic hash of the client answer, the secret server nonce, and the flow information of the first packet; comparing the client answer to the server cookie; and sending the one or more data packets from the server to the client if the client answer is correct.