Patent ID: 7503068
Filing Date: 2009-03-10
Classification: H04L

Abstract:
1. In a local server that receives data from one or more remote clients over a data transport protocol, a method of generating an initial sequence number (ISN) for use by a remote client when assigning sequence numbers to one or more data packets to be sent to the local server, the initial sequence number generated in a manner that prevents the local server from being attacked while maintaining reliable data transfer, the method comprising: generating a random input key using a secret maintained by the local server; receiving a connection identifier key that includes connection information for at least the remote client; securely initializing a hash function with at least a portion of the random input key and at least a portion of the connection identifier key; calculating an intermediate value using the initialized hash function; creating a monotonically increasing counter for ensuring that a same connection identifier does not have data collisions from competing sequence numbers within a predetermined period of time, and for ensuring randomness of the initial sequence number on a per connection basis for preventing attacks on the local server, the counter taking both timer information and connection rate information as input; incrementing the counter a fixed value based on a passage of a predetermined time period; detecting a connection rate for the local server, the connection rate being determined by detecting each connection to the local server and a connection rate evaluator determining the number of connections per unit time; determining a variable amount based upon the connection rate, the variable amount being determined by at least comparing the connection rate to a threshold value and by choosing a random number between a minimum ISN increase per connection and a maximum ISN increase per connection; incrementing the counter by the variable amount; combining the fixed value and the variable amount to create a random value; and combining the intermediate value and the random value using a monotonically increasing mathematical function to generate the initial sequence number.